<?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>235958</bug_id>
          
          <creation_ts>2022-02-01 09:01:00 -0800</creation_ts>
          <short_desc>Add support for sharing Shared Workers (including across WebProcesses)</short_desc>
          <delta_ts>2022-02-22 15:00:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=236263</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>235978</dependson>
    
    <dependson>235983</dependson>
    
    <dependson>235987</dependson>
    
    <dependson>235988</dependson>
    
    <dependson>236016</dependson>
    
    <dependson>236017</dependson>
    
    <dependson>236026</dependson>
    
    <dependson>236028</dependson>
    
    <dependson>236038</dependson>
    
    <dependson>236052</dependson>
    
    <dependson>236085</dependson>
    
    <dependson>236088</dependson>
    
    <dependson>236089</dependson>
    
    <dependson>236101</dependson>
          <blocked>230382</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jbedard</cc>
    
    <cc>jsbell</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mkwst</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1835997</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-01 09:01:00 -0800</bug_when>
    <thetext>Add support for sharing Shared Workers (including across WebProcesses).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835998</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-01 09:01:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/88330666&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835999</commentid>
    <comment_count>2</comment_count>
      <attachid>450537</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-01 09:03:23 -0800</bug_when>
    <thetext>Created attachment 450537
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836058</commentid>
    <comment_count>3</comment_count>
      <attachid>450548</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-01 11:00:48 -0800</bug_when>
    <thetext>Created attachment 450548
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836089</commentid>
    <comment_count>4</comment_count>
      <attachid>450554</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-01 11:35:34 -0800</bug_when>
    <thetext>Created attachment 450554
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836121</commentid>
    <comment_count>5</comment_count>
      <attachid>450561</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-01 13:18:35 -0800</bug_when>
    <thetext>Created attachment 450561
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836139</commentid>
    <comment_count>6</comment_count>
      <attachid>450565</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-01 14:05:07 -0800</bug_when>
    <thetext>Created attachment 450565
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836186</commentid>
    <comment_count>7</comment_count>
      <attachid>450581</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-01 15:25:12 -0800</bug_when>
    <thetext>Created attachment 450581
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836233</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-01 16:43:57 -0800</bug_when>
    <thetext>The patch is huge so I&apos;ll try and split parts of it out to facilitate review a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836299</commentid>
    <comment_count>9</comment_count>
      <attachid>450602</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-01 19:04:54 -0800</bug_when>
    <thetext>Created attachment 450602
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836333</commentid>
    <comment_count>10</comment_count>
      <attachid>450610</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-01 22:09:56 -0800</bug_when>
    <thetext>Created attachment 450610
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836489</commentid>
    <comment_count>11</comment_count>
      <attachid>450662</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-02 09:53:53 -0800</bug_when>
    <thetext>Created attachment 450662
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836559</commentid>
    <comment_count>12</comment_count>
      <attachid>450683</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-02 11:48:53 -0800</bug_when>
    <thetext>Created attachment 450683
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836566</commentid>
    <comment_count>13</comment_count>
      <attachid>450684</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-02 11:53:11 -0800</bug_when>
    <thetext>Created attachment 450684
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836593</commentid>
    <comment_count>14</comment_count>
      <attachid>450691</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-02 12:47:11 -0800</bug_when>
    <thetext>Created attachment 450691
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836614</commentid>
    <comment_count>15</comment_count>
      <attachid>450694</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-02 13:31:43 -0800</bug_when>
    <thetext>Created attachment 450694
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836680</commentid>
    <comment_count>16</comment_count>
      <attachid>450710</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-02 16:09:30 -0800</bug_when>
    <thetext>Created attachment 450710
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836743</commentid>
    <comment_count>17</comment_count>
      <attachid>450727</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-02 18:55:22 -0800</bug_when>
    <thetext>Created attachment 450727
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836963</commentid>
    <comment_count>18</comment_count>
      <attachid>450777</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-03 09:13:25 -0800</bug_when>
    <thetext>Created attachment 450777
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837000</commentid>
    <comment_count>19</comment_count>
      <attachid>450791</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-03 10:39:15 -0800</bug_when>
    <thetext>Created attachment 450791
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837030</commentid>
    <comment_count>20</comment_count>
      <attachid>450801</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-03 11:43:21 -0800</bug_when>
    <thetext>Created attachment 450801
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837051</commentid>
    <comment_count>21</comment_count>
      <attachid>450803</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-03 12:22:50 -0800</bug_when>
    <thetext>Created attachment 450803
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837065</commentid>
    <comment_count>22</comment_count>
      <attachid>450806</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-03 13:05:50 -0800</bug_when>
    <thetext>Created attachment 450806
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837138</commentid>
    <comment_count>23</comment_count>
      <attachid>450829</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-03 15:17:57 -0800</bug_when>
    <thetext>Created attachment 450829
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837180</commentid>
    <comment_count>24</comment_count>
      <attachid>450840</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-03 17:11:31 -0800</bug_when>
    <thetext>Created attachment 450840
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837463</commentid>
    <comment_count>25</comment_count>
      <attachid>450906</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-04 09:34:45 -0800</bug_when>
    <thetext>Created attachment 450906
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837521</commentid>
    <comment_count>26</comment_count>
      <attachid>450921</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-04 11:28:23 -0800</bug_when>
    <thetext>Created attachment 450921
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837544</commentid>
    <comment_count>27</comment_count>
      <attachid>450928</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-04 12:05:31 -0800</bug_when>
    <thetext>Created attachment 450928
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837572</commentid>
    <comment_count>28</comment_count>
      <attachid>450934</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-04 13:28:44 -0800</bug_when>
    <thetext>Created attachment 450934
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837615</commentid>
    <comment_count>29</comment_count>
      <attachid>450943</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-04 15:24:11 -0800</bug_when>
    <thetext>Created attachment 450943
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837661</commentid>
    <comment_count>30</comment_count>
      <attachid>450954</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-04 17:02:16 -0800</bug_when>
    <thetext>Created attachment 450954
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837851</commentid>
    <comment_count>31</comment_count>
      <attachid>450954</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-05 22:42:48 -0800</bug_when>
    <thetext>Comment on attachment 450954
Patch

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

Looks good, I didn’t spot any mistakes.

&gt; Source/WebCore/workers/shared/SharedWorkerKey.h:52
&gt; +    Hasher hasher;
&gt; +    add(hasher, origin.hash());
&gt; +    add(hasher, url);
&gt; +    add(hasher, name);
&gt; +    return hasher.hash();

Instead, we should write:

    return computeHash(origin.hash(), url, name);

That does the same thing. But also, it’s not good to hash a hash. Instead, we should write these functions:

    inline add(Hasher&amp; hasher, const SharedWorkerKey&amp; key)
    {
        hasher.add(key.origin, key.url, key.name);
    }
    inline add(Hasher&amp; hasher, const ClientOrigin&amp; origin)
    {
        add(hasher, origin.topOrigin, origin.clientOrigin);
    }
    inline add(Hasher&amp; hasher, const SecurityOriginData&amp; data)
    {
        add(hasher, data.protocol, data.host, data.port);
    }

These don’t have to be inlined, and of course they should go in the appropriate headers. Once those functions are all defined, we can call computeHash on any of these types, without any hashing of a hash getting involved. If we want, we can still define SharedWorkerKey::hash, but it should just call computeHash:

    unsigned hash() const { return computeHash(*this); }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837852</commentid>
    <comment_count>32</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-05 22:43:37 -0800</bug_when>
    <thetext>Forgot the &quot;void&quot; above:

    inline void add ...

But otherwise the code should work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838169</commentid>
    <comment_count>33</comment_count>
      <attachid>451107</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-07 08:21:54 -0800</bug_when>
    <thetext>Created attachment 451107
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838242</commentid>
    <comment_count>34</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-07 10:36:32 -0800</bug_when>
    <thetext>Hmm, http/tests/cache-storage/cache-origins.https.html appears to be failing on EWS. I&apos;ll have to investigate. It is not involving Shared Workers but maybe I messed up the new hash functions somehow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838253</commentid>
    <comment_count>35</comment_count>
      <attachid>451107</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-07 11:06:01 -0800</bug_when>
    <thetext>Comment on attachment 451107
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseIdentifier.h:32
&gt; +#include &lt;wtf/Hasher.h&gt;
&gt;  #include &lt;wtf/text/StringHash.h&gt;
&gt;  #include &lt;wtf/text/WTFString.h&gt;

We don’t need any of these includes. ClientOrigin.h already pulls them in (I’m not sure about StringHash, but if it’s needed it’s pulled in).

&gt; Source/WebCore/page/SecurityOriginData.h:103
&gt; +    add(hasher, data.protocol, data.host, data.port);

If we wanted to more closely match the old hash function, this would need to be data.port.value_or(0) unless we want &quot;no port&quot; to hash differently than a port number. We probably do want them distinct just the way this is written, but I noticed it is a difference.

&gt; Source/WebCore/workers/shared/SharedWorkerKey.h:31
&gt; +#include &lt;wtf/Hasher.h&gt;
&gt; +#include &lt;wtf/URL.h&gt;
&gt; +#include &lt;wtf/text/WTFString.h&gt;

Don’t need this any of these. They are all included by ClientOrigin.h already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838289</commentid>
    <comment_count>36</comment_count>
      <attachid>451136</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-07 12:11:12 -0800</bug_when>
    <thetext>Created attachment 451136
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838290</commentid>
    <comment_count>37</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-07 12:11:52 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #35)
&gt; Comment on attachment 451107 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=451107&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBDatabaseIdentifier.h:32
&gt; &gt; +#include &lt;wtf/Hasher.h&gt;
&gt; &gt;  #include &lt;wtf/text/StringHash.h&gt;
&gt; &gt;  #include &lt;wtf/text/WTFString.h&gt;
&gt; 
&gt; We don’t need any of these includes. ClientOrigin.h already pulls them in
&gt; (I’m not sure about StringHash, but if it’s needed it’s pulled in).
&gt; 
&gt; &gt; Source/WebCore/page/SecurityOriginData.h:103
&gt; &gt; +    add(hasher, data.protocol, data.host, data.port);
&gt; 
&gt; If we wanted to more closely match the old hash function, this would need to
&gt; be data.port.value_or(0) unless we want &quot;no port&quot; to hash differently than a
&gt; port number. We probably do want them distinct just the way this is written,
&gt; but I noticed it is a difference.

It appears this was the cause of the regression, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838293</commentid>
    <comment_count>38</comment_count>
      <attachid>451107</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-07 12:16:23 -0800</bug_when>
    <thetext>Comment on attachment 451107
Patch

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

&gt;&gt; Source/WebCore/page/SecurityOriginData.h:103
&gt;&gt; +    add(hasher, data.protocol, data.host, data.port);
&gt; 
&gt; If we wanted to more closely match the old hash function, this would need to be data.port.value_or(0) unless we want &quot;no port&quot; to hash differently than a port number. We probably do want them distinct just the way this is written, but I noticed it is a difference.

You said this caused the regression. That is very mysterious! Because the == operator does not treat std::nullopt as equal to 0, so it should not matter whether the hash function does or not!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838302</commentid>
    <comment_count>39</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-07 12:29:35 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #38)
&gt; Comment on attachment 451107 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=451107&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/page/SecurityOriginData.h:103
&gt; &gt;&gt; +    add(hasher, data.protocol, data.host, data.port);
&gt; &gt; 
&gt; &gt; If we wanted to more closely match the old hash function, this would need to be data.port.value_or(0) unless we want &quot;no port&quot; to hash differently than a port number. We probably do want them distinct just the way this is written, but I noticed it is a difference.
&gt; 
&gt; You said this caused the regression. That is very mysterious! Because the ==
&gt; operator does not treat std::nullopt as equal to 0, so it should not matter
&gt; whether the hash function does or not!

My bet is that this has to do with conversion of SecurityOriginData to and from String. In particular, the databaseIdentifier() / fromDatabaseIdentifier() implementation seem to treat a port that is 0 the same way has not having a port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838308</commentid>
    <comment_count>40</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-07 12:45:07 -0800</bug_when>
    <thetext>Still kind of mysterious, because in any context where we are converting to a string, then we should be hashing the string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838312</commentid>
    <comment_count>41</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-07 12:57:40 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #40)
&gt; Still kind of mysterious, because in any context where we are converting to
&gt; a string, then we should be hashing the string.

What I meant was:
1. Add a SecurityOriginData S1 &quot;http://foo:0&quot; to a HashMap H
2. Convert the SecurityOriginData S1 to a database identifier and save in database
3. Read identifier from database and convert back to a SecurityOriginData S2 &quot;http://foo&quot; (because fromDatabaseIdentifier() strips the port).
4. Check if S2 is present in HashMap H -&gt; Says false (should probably say true?)

That said, because operator==(S1, S2) would say false before and after my change, then it should say S2 is not in the map, even if the hashes for S1 and S2 were to match...

I am perplexed too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838354</commentid>
    <comment_count>42</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-07 14:16:01 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #41)
&gt; (In reply to Darin Adler from comment #40)
&gt; &gt; Still kind of mysterious, because in any context where we are converting to
&gt; &gt; a string, then we should be hashing the string.
&gt; 
&gt; What I meant was:
&gt; 1. Add a SecurityOriginData S1 &quot;http://foo:0&quot; to a HashMap H
&gt; 2. Convert the SecurityOriginData S1 to a database identifier and save in
&gt; database
&gt; 3. Read identifier from database and convert back to a SecurityOriginData S2
&gt; &quot;http://foo&quot; (because fromDatabaseIdentifier() strips the port).
&gt; 4. Check if S2 is present in HashMap H -&gt; Says false (should probably say
&gt; true?)
&gt; 
&gt; That said, because operator==(S1, S2) would say false before and after my
&gt; change, then it should say S2 is not in the map, even if the hashes for S1
&gt; and S2 were to match...
&gt; 
&gt; I am perplexed too.

I added some logging and we never hash a SecurityOriginData that has a port that is 0. All security origins getting hashed have a valid port, except for &quot;file://&quot; which has no port. Haven&apos;t had any success figuring out yet why the value_or(0) is needed but it is definitely what fixes the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838374</commentid>
    <comment_count>43</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-07 14:53:33 -0800</bug_when>
    <thetext>Oh, I think I got it. The hashing is actually correct either way. What changes is the order of keys in the map (map of ClientOrigin keys). http/tests/cache-storage/cache-origins.https.html seems to rely on a specific ordering and needs to be fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838382</commentid>
    <comment_count>44</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-07 15:06:43 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #43)
&gt; http/tests/cache-storage/cache-origins.https.html seems to rely on a
&gt; specific ordering and needs to be fixed.

Yes, WebKit::CacheStorage::Engine::representation needs to add things to the string in an order not based on hash table ordering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838383</commentid>
    <comment_count>45</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-07 15:07:10 -0800</bug_when>
    <thetext>Move the data into an array, sort the array, then build the string, I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838384</commentid>
    <comment_count>46</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-07 15:07:45 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #45)
&gt; Move the data into an array, sort the array, then build the string, I think.

I uploaded a proposal at https://bugs.webkit.org/show_bug.cgi?id=236263. Just fixing the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838416</commentid>
    <comment_count>47</comment_count>
      <attachid>451136</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-07 16:19:09 -0800</bug_when>
    <thetext>Comment on attachment 451136
Patch

Clearing flags on attachment: 451136

Committed r289247 (246931@trunk): &lt;https://commits.webkit.org/246931@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838417</commentid>
    <comment_count>48</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-07 16:19:14 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844891</commentid>
    <comment_count>49</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2022-02-22 15:00:02 -0800</bug_when>
    <thetext>https://results.webkit.org/?suite=layout-tests&amp;test=imported%2Fw3c%2Fweb-platform-tests%2Fworkers%2Fsemantics%2Fmultiple-workers%2F004.html indicates that 246931@main caused imported/w3c/web-platform-tests/workers/semantics/multiple-workers/004.html to start flakily failing.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450537</attachid>
            <date>2022-02-01 09:03:23 -0800</date>
            <delta_ts>2022-02-01 11:00:48 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>235958_SharedWorker_multiProcess_wip.patch</filename>
            <type>text/plain</type>
            <size>288641</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IGU0N2ZkZDI2NDVmZS4uMDU3N2VhYzY3MWViIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTQ2Myw3ICs0NjMsNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYi1sb2Nrcy9zdGVhbC50ZW50YXRpdmUuaHR0cHMuYW55Lmh0bWwgWyBEdW1wSgog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3Ro
ZS1hbmFseXNlcm5vZGUtaW50ZXJmYWNlL3Rlc3QtYW5hbHlzZXItbWluaW11bS5odG1sIFsgRHVt
cEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUt
ZGlzY29ubmVjdC1hdWRpb3BhcmFtLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NhbWUtb3JpZ2luLWNoZWNr
LnN1Yi5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMuaHRt
bCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCiBmYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWJh
Y2stZm9yd2FyZC1jYWNoZS5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGZhc3Qv
aGlzdG9yeS9wYWdlLWNhY2hlLWNyZWF0ZUltYWdlQml0bWFwLmh0bWwgWyBEdW1wSlNDb25zb2xl
TG9nSW5TdGRFcnIgXQogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLWluLWxv
YWRpbmctaWZyYW1lLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQpAQCAtNTE1OCw2
ICs1MTU3LDEwIEBAIHdlYmtpdC5vcmcvYi8xODM5OTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3Nzb20vY3NzLXN0eWxlLWF0dHItZGVjCiAjIFRlc3QgaXMgY3Jhc2hpbmcg
aW4gRGVidWcgYnVpbGRzIHNpbmNlIGltcG9ydC4KIHdlYmtpdC5vcmcvYi8yMzQ5NzcgWyBEZWJ1
ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9mb2N1cy1ldmVu
dC1kb2N1bWVudC1tb3ZlLmh0bWwgWyBTa2lwIF0KIAorIyBUZXN0IGlzIGZsYWt5IGJlY2F1c2Ug
TWVzc2FnZVBvcnQgbWVzc2FnZXMgbWF5IGdldCByZWNlaXZlZCBpbiBhIGRpZmZlcmVudCBvcmRl
ciB3aGVuIHNldmVyYWwgTWVzc2FnZVBvcnRzIGFyZSBpbnZvbHZlZCwKKyMgZHVlIHRvIGhvdyBN
ZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpIGlzIGltcGxlbWVudGVkLgoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0
aW9ucy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIEZhaWx1cmUgUGFzcyBdCisKICMg
UGx1Z2lucwogIyBGSVhNRTogUmVtb3ZlIHRoZXNlIHRlc3RzLgogcGx1Z2lucy8gWyBTa2lwIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9TaGFyZWRXb3JrZXJfZGF0YVVybC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyX2RhdGFV
cmwtZXhwZWN0ZWQudHh0CmluZGV4IDk5NWEwNjAxOWI4NC4uOWI1ODIwYWFlOGNiIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
U2hhcmVkV29ya2VyX2RhdGFVcmwtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJfZGF0YVVybC1l
eHBlY3RlZC50eHQKQEAgLTEsMTMgKzEsNSBAQAotQ09OU09MRSBNRVNTQUdFOiBFcnJvcjogYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290IDEKIAogCi1IYXJuZXNzIEVycm9yIChGQUlM
KSwgbWVzc2FnZSA9IEVycm9yOiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3QgMQot
Ci1QQVNTIERhdGEgVVJMIG5vdCBzaGFyZWQgYnkgY3Jvc3Mtb3JpZ2luIFNoYXJlZFdvcmtlcnMK
LVRJTUVPVVQgRGF0YSBVUkxzIHNoYXJlZCBieSBzYW1lLW9yaWdpbiBTaGFyZWRXb3JrZXJzIFRl
c3QgdGltZWQgb3V0Ci0KLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gRXJyb3I6IGFz
c2VydF9lcXVhbHM6IGV4cGVjdGVkIDIgYnV0IGdvdCAxCi0KIFBBU1MgRGF0YSBVUkwgbm90IHNo
YXJlZCBieSBjcm9zcy1vcmlnaW4gU2hhcmVkV29ya2VycwotVElNRU9VVCBEYXRhIFVSTHMgc2hh
cmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtlcnMgVGVzdCB0aW1lZCBvdXQKK1BBU1MgRGF0
YSBVUkxzIHNoYXJlZCBieSBzYW1lLW9yaWdpbiBTaGFyZWRXb3JrZXJzCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1
bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxl
cy9zaGFyZWQtd29ya2VyLWltcG9ydC1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0CmluZGV4
IDU3NmU2ZDJiN2VkMi4uNGEyNmJlOTI5YThkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2Vy
LWltcG9ydC1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3Jr
ZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1C
bG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQz
L3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LW9uLWxvYWQtc2NyaXB0LnB5CiAKIFBB
U1MgU3RhdGljIGltcG9ydC4KIEZBSUwgU3RhdGljIGltcG9ydCAoY3Jvc3Mtb3JpZ2luKS4gcHJv
bWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6ICJJbXBvcnRpbmcgYSBt
b2R1bGUgc2NyaXB0IGZhaWxlZC4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9y
dC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1p
bXBvcnQtZGF0YS11cmwtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dAppbmRleCA0Zjg2NDFlNTE0
ODAuLjI5OTdmN2UxZjMwOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0
YS11cmwtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWlt
cG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAot
Q09OU09MRSBNRVNTQUdFOiBPcmlnaW4gbnVsbCBpcyBub3QgYWxsb3dlZCBieSBBY2Nlc3MtQ29u
dHJvbC1BbGxvdy1PcmlnaW4uIFN0YXR1cyBjb2RlOiAyMDAKIAogSGFybmVzcyBFcnJvciAoVElN
RU9VVCksIG1lc3NhZ2UgPSBudWxsCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9y
dC1kYXRhLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0CmluZGV4IGVhYzdmOTVkZTZmMi4uY2JjMDQy
OWUwYzcxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC53aW5k
b3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLndp
bmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0byBleHRl
cm5hbCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQzL3dvcmtlcnMvbW9kdWxlcy9yZXNv
dXJjZXMvZXhwb3J0LW9uLWxvYWQtc2NyaXB0LnB5CiAKIEhhcm5lc3MgRXJyb3IgKFRJTUVPVVQp
LCBtZXNzYWdlID0gbnVsbAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53
aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4cGVj
dGVkLnR4dAppbmRleCA1NzZlNmQyYjdlZDIuLjRhMjZiZTkyOWE4ZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMv
c2hhcmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQt
d29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tl
ZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3MS5sb2NhbGhvc3Q6OTQ0My93b3Jr
ZXJzL21vZHVsZXMvcmVzb3VyY2VzL2V4cG9ydC1vbi1sb2FkLXNjcmlwdC5weQogCiBQQVNTIFN0
YXRpYyBpbXBvcnQuCiBGQUlMIFN0YXRpYyBpbXBvcnQgKGNyb3NzLW9yaWdpbikuIHByb21pc2Vf
dGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiAiSW1wb3J0aW5nIGEgbW9kdWxl
IHNjcmlwdCBmYWlsZWQuIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNy
ZWRlbnRpYWxzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1jcmVkZW50
aWFscy1leHBlY3RlZC50eHQKaW5kZXggZTFiZWRmNTQzMGVmLi5hNzBmMDVhZjU0ZjQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1jcmVkZW50aWFscy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dApA
QCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwOi8vd3d3
MS5sb2NhbGhvc3Q6ODgwMC93b3JrZXJzL21vZHVsZXMvcmVzb3VyY2VzL2V4cG9ydC1jcmVkZW50
aWFscy5weQogCiBIYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwNC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211
bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVkLnR4dAppbmRleCAwMThkYjYwNDU2OWQuLmNmZTQ2
NTU2NzVjZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwNC1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwNC1leHBlY3RlZC50eHQKQEAgLTEsNSAr
MSwzIEBACiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1OT1RS
VU4gc2hhcmVkIHdvcmtlciB3aXRoIG11bHRpcGxlIGRvY3VtZW50cworUEFTUyBzaGFyZWQgd29y
a2VyIHdpdGggbXVsdGlwbGUgZG9jdW1lbnRzCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUt
d29ya2Vycy8wMDgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBl
Y3RlZC50eHQKaW5kZXggOTdhNGU3YTczYTYzLi4wOWY2NzJkMWM2MjEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRp
Y3MvbXVsdGlwbGUtd29ya2Vycy8wMDgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUt
d29ya2Vycy8wMDgtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsMyBAQAogCi1IYXJuZXNzIEVycm9y
IChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKLQotVElNRU9VVCBtZXNzYWdlY2hhbm5lbCBpbiBz
aGFyZWQgd29ya2VyIFRlc3QgdGltZWQgb3V0CitQQVNTIG1lc3NhZ2VjaGFubmVsIGluIHNoYXJl
ZCB3b3JrZXIKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItZnJvbS1ibG9iLXVybC53aW5kb3ctZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL3NoYXJlZC13b3JrZXItZnJvbS1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0Cmlu
ZGV4IGEwODljMjI0ODllMi4uZDM5YTU1MDg0ZGMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9t
LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItZnJvbS1ibG9iLXVy
bC53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNyBAQAogCiBIYXJuZXNzIEVycm9yIChU
SU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIAotRkFJTCBDcmVhdGluZyBhIHNoYXJlZCB3b3JrZXIg
ZnJvbSBhIGJsb2IgVVJMIHdvcmtzLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAid29ya2VyX09L
XzIiIGJ1dCBnb3QgIndvcmtlcl9PS18xIgotUEFTUyBDcmVhdGluZyBhIHNoYXJlZCB3b3JrZXIg
ZnJvbSBhIGJsb2IgVVJMIHdvcmtzIGltbWVkaWF0ZWx5IGJlZm9yZSByZXZva2luZy4KLVRJTUVP
VVQgQ29ubmVjdGluZyB0byBhIHNoYXJlZCB3b3JrZXIgb24gYSByZXZva2VkIGJsb2IgVVJMIHdv
cmtzLiBUZXN0IHRpbWVkIG91dAorUEFTUyBDcmVhdGluZyBhIHNoYXJlZCB3b3JrZXIgZnJvbSBh
IGJsb2IgVVJMIHdvcmtzLgorVElNRU9VVCBDcmVhdGluZyBhIHNoYXJlZCB3b3JrZXIgZnJvbSBh
IGJsb2IgVVJMIHdvcmtzIGltbWVkaWF0ZWx5IGJlZm9yZSByZXZva2luZy4gVGVzdCB0aW1lZCBv
dXQKK05PVFJVTiBDb25uZWN0aW5nIHRvIGEgc2hhcmVkIHdvcmtlciBvbiBhIHJldm9rZWQgYmxv
YiBVUkwgd29ya3MuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQKaW5kZXgg
NmZmZWUyNzM5MGQ5Li5hZTQ1YjRkMjczOTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlh
LW9wdGlvbnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMtZXhw
ZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIFRlc3QgdGhlIG5hbWUgcHJvcGVydHkg
b2Ygc2hhcmVkIHdvcmtlcnMgbWl4aW5nIGNvbnN0cnVjdG9yIG9wdGlvbnMgYW5kIGNvbnN0cnVj
dG9yIHN0cmluZ3MgRXJyb3I6IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDIgYnV0IGdvdCAxCitQ
QVNTIFRlc3QgdGhlIG5hbWUgcHJvcGVydHkgb2Ygc2hhcmVkIHdvcmtlcnMgbWl4aW5nIGNvbnN0
cnVjdG9yIG9wdGlvbnMgYW5kIGNvbnN0cnVjdG9yIHN0cmluZ3MKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCA3OTJhMDBmOWVhMWEuLjQ1N2M0YWE5YjFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
QEAgLTE3OSw2ICsxNzksNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0lOQ0xVREVfRElSRUNUT1JJ
RVMKICAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQiCiAgICAgIiR7
V0VCQ09SRV9ESVJ9L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIiCiAgICAgIiR7V0VCQ09SRV9ESVJ9
L3dvcmtlcnMvc2hhcmVkIgorICAgICIke1dFQkNPUkVfRElSfS93b3JrZXJzL3NoYXJlZC9jb250
ZXh0IgogICAgICIke1dFQkNPUkVfRElSfS93b3JrbGV0cyIKICAgICAiJHtXRUJDT1JFX0RJUn0v
eG1sIgogICAgICIke1dFQkNPUkVfRElSfS94bWwvcGFyc2VyIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBm
NjZjY2Y4ZjA2YTUuLjlhYjg2MDRjOWQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTI3ODYsMTAgKzI3
ODYsMTIgQEAgd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAogd29ya2Vy
cy9zaGFyZWQvU2hhcmVkV29ya2VyLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xv
YmFsU2NvcGUuY3BwCi13b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcAotd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJveHkuY3BwCit3b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcAord29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJv
dmlkZXIuY3BwCiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwCiB3
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJUaHJlYWQuY3BwCit3b3JrZXJzL3NoYXJlZC9jb250
ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcAord29ya2Vycy9zaGFyZWQvY29udGV4
dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAKIHdvcmtsZXRzL1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlLmNwcAogd29ya2xldHMvV29ya2xldC5jcHAKIHdvcmtsZXRzL1dvcmtsZXRHbG9iYWxT
Y29wZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA5Y2JmODc2ZTI1OGYuLmQxZDA1M2QwMjhiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTAzLDcgKzkw
Myw3IEBACiAJCTJFNDM0NjRCMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZVBy
b3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQz
NDYzOTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oICovOyB9Owog
CQkyRTQzNDY0RDBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyTG9jYXRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjNCMEY1NDZBODIwMEIw
RjFCQSAvKiBXb3JrZXJMb2NhdGlvbi5oICovOyB9OwogCQkyRTQzNDY1MDBGNTQ2QTgyMDBCMEYx
QkEgLyogV29ya2VyTWVzc2FnaW5nUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjNFMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJNZXNz
YWdpbmdQcm94eS5oICovOyB9OwotCQkyRTQzNDY1MTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
T2JqZWN0UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJFNDM0NjNGMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94eS5oICovOyB9
OworCQkyRTQzNDY1MTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyT2JqZWN0UHJveHkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjNGMEY1NDZB
ODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFNDM0NjUzMEY1NDZBODIwMEIwRjFCQSAvKiBX
b3JrZXJSdW5Mb29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRTQzNDY0MTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyUnVuTG9vcC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFNDM0NjU1MEY1NDZB
ODIwMEIwRjFCQSAvKiBXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjQzMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJUaHJl
YWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQky
RTc1ODQxRTEyNzc5QURBMDA2MjYyOEIgLyogRmlsZVJlYWRlckxvYWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU3NTg0MUIxMjc3OUFEQTAwNjI2
MjhCIC8qIEZpbGVSZWFkZXJMb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMTEyNSw3ICsxMTI1LDcgQEAKIAkJNDE2QTA2QTEyM0NDQUQw
MzAwMzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZBMDY5NjIzQ0NBQTlGMDAzNDcx
MDkgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZENzVBMjIwQzY1MUE1MDBEMDJEMkMg
LyogTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDE2RDc1OUYyMEM2NDQxMzAwRDAyRDJDIC8qIE5ldHdvcmtMb2Fk
SW5mb3JtYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0MTZFMEIzQTIwOUJDM0NCMDA0QTk1RDkgLyogRmV0Y2hJZGVudGlmaWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFMEIzNzIwOUJD
M0MyMDA0QTk1RDkgLyogRmV0Y2hJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDE2RTI5QTYxMDJGQTk2MjAwN0ZDMTRFIC8qIFdv
cmtlclJlcG9ydGluZ1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTZFMjlBNTEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJv
eHkuaCAqLzsgfTsKKwkJNDE2RTI5QTYxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGlu
Z1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTZFMjlBNTEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFODFCQkQx
MkRGMDAwQTNGNjQgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAw
Qjc2NEQ5IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFODFCQkQxMkRGMDAw
QTNGNjUgLyogSlNET01CaW5kaW5nSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjREQSAv
KiBKU0RPTUJpbmRpbmdJbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU4MUJCRDEyREYwMDBBM0Y3NCAvKiBU
cmFuc2Zvcm1TdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEVBIC8qIFRyYW5z
Zm9ybVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzMjAsNiArMTMyMCw4IEBACiAJCTQ2MEUzMDc3MjIy
RjRGMDMwMDlBMDYwNiAvKiBEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjVFREQ5
RjIyMkY0RUMzMDBCNDZFMTYgLyogRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25T
dGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQ2MjE4QUNCMUY3MkQ2NEUwMDU3NEZCRSAvKiBET01IaWdoUmVzVGltZVN0YW1wLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkUwMTZBRDFGNzJENjFF
MDAyODJCMkMgLyogRE9NSGlnaFJlc1RpbWVTdGFtcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2MjczQ0FGMjYwRTU5RUYwMDZGQUE5MSAvKiBT
V1NjcmlwdFN0b3JhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2MjczQ0FDMjYwRTU5REYwMDZGQUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NjI3RkY1OTI3
OUI4MjQ5MDBBQTM5MTYgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MjdGRjU4Mjc5QjgyNDYwMEFBMzkx
NiAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2MjdGRjVCMjc5Qjg3QUYwMEFBMzkxNiAvKiBTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NjI3RkY1QTI3OUI4N0EyMDBBQTM5MTYgLyogU2hhcmVkV29ya2VySWRlbnRp
Zmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQ2MkM3RjQxMjc1NkRCRTQwMEQwODNDOCAvKiBXZWJMb2NrSWRlbnRpZmllci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3ODAyQjIyNzQ3MTE4NTAw
REE5RkI2IC8qIFdlYkxvY2tJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYyRTRDNTAyNjE2QTgxMTAwM0EyQzY3IC8qIFNjcmlw
dEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDYyRTRDNEQyNjE2QTgwMTAwM0EyQzY3IC8qIFNjcmlwdEJ1ZmZlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2MzRDNzJDMjc1N0RBQjIwMDI2
QTgxNSAvKiBXZWJMb2NrTWFuYWdlclNuYXBzaG90LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njc4MDJCMDI3NDcxMTdCMDBEQTlGQjYgLyogV2ViTG9j
a01hbmFnZXJTbmFwc2hvdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0xMzQxLDE1ICsxMzQzLDE4IEBACiAJCTQ2NzMwMjAyMUM0RUZFNzgwMEJD
QjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzMwMjAxMUM0RUZFNjYw
MEJDQjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXIuaCAqLzsg
fTsKIAkJNDY3QTY4RDcyNzVFQTk5MTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3QTY4RDQyNzVF
QTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5oICovOyB9OwogCQk0NjdBNjhEODI3
NUVBOTk1MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdBNjhENTI3NUVBOThDMDA5QjMx
QzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmggKi87IH07Ci0JCTQ2N0E2OEQ5Mjc1RUE5
OTgwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3QTY4RDYyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJl
ZFdvcmtlclByb3h5LmggKi87IH07Ci0JCTQ2N0E2OERBMjc1RUE5OUMwMDlCMzFDNSAvKiBTaGFy
ZWRXb3JrZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjdBNjhEMjI3NUVBOThBMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5o
ICovOyB9OwogCQk0NjgyRDIwMDFGNzk3ODMwMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
ODJEMUZGMUY3OTc4MjMwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODM0NEUwMUVE
REZBQUEwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MzQ0REUxRURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RM
aXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NDY4M0RGNDAyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODNERjNF
Mjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmggKi87IH07
CiAJCTQ2ODNERjQxMjc2N0U5MUEwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzREYzQjI3
NjdERjI2MDA3RDAwQzggLyogU2hhZG93UmVhbG1HbG9iYWxTY29wZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODhFRTNDMjZERDI2MTAwMDJB
RjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2ODhFRTNBMjZERDI2MEMwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1v
ZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0
Njk0M0RDODI3NjNGODEyMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5NDNEQzUy
NzYzRjgwRDAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0Njk0M0RDOTI3NjNG
ODE3MDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5NDNEQzcyNzYzRjgwRTAwNEI2
MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0Njk0M0RDQTI3NjNGODFDMDA0QjYxMEUg
LyogU2hhcmVkV29ya2VyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2OTQzREM0Mjc2M0Y4MEQwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJQ
cm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTQ2OTg1RjIzMjdBNEE2QUQwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTg1RjIyMjdBNEE2ODYw
MDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjlDQ0NGRTI2OUQwMjFDMDA2RTAzMTQgLyogQnJvYWRj
YXN0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY5Q0NDRkMyNjlEMDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjlENzdCODI3MDE2
MjUxMDAxNDJGQTYgLyogTmF2aWdhdGlvblJlcXVlc3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5RDc3QjYyNzAxNjI1MDAwMTQyRkE2IC8qIE5h
dmlnYXRpb25SZXF1ZXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk0NkE3OEIzNDI3OTlCRDcxMDAxMTU0RkUgLyogV29ya2VyT3B0aW9ucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxQjFEMjYy
NkYxOEE0QjAwODgyREEyIC8qIFdvcmtlck9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkFBQUEzRDI1RDM2MzIwMDBCQUY0MkYgLyog
QXVkaW9GaWxlUmVhZGVyQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2QUFBQTNBMjVEMzYzMTQwMEJBRjQyRiAvKiBBdWRpb0ZpbGVSZWFkZXJD
b2NvYS5oICovOyB9OwogCQk0NkI2M0Y2QzFDNkU4RDE5MDAyRTkxNEIgLyogSlNFdmVudFRhcmdl
dEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDZCNjNGNkIxQzZFOENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI2NTBERDIyOTYy
NjI3MDBGRDhBQTQgLyogUGFnZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjY1MERCMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRl
bnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0xMzY2LDYgKzEzNzEsNyBAQAogCQk0NkJEMDVDNjI1QkI2RTZDMDAyMjVGMzAgLyogRXZl
bnRMaXN0ZW5lck9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2QkQwNUMzMjVCQjZFNEUwMDIyNUYzMCAvKiBFdmVudExpc3RlbmVyT3B0aW9u
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2
QzA5NjIxMjNENzhERDYwMDY1N0MwOSAvKiBIVFRQQ29va2llQWNjZXB0UG9saWN5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkMwOTYyMDIzRDc4REQ2
MDA2NTdDMDkgLyogSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QzM3NjYyMjA4NTE3N0QwMEM3MzgyOSAv
KiBKU1JlbW90ZURPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDZDMzc2NjEyMDg1MTc2RDAwQzczODI5IC8qIEpTUmVtb3RlRE9NV2luZG93
LmggKi87IH07CisJCTQ2QzQxNjlCMjc5QTA0QzcwMDI1MkMzQiAvKiBTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDYyNkI0NzUyNzlBMDNEMjAwQUVGMEIyIC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZD
Njk2Q0IxRTcyMDVGNzAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5NkM5MUU3MjA1RTQwMDU5NzkzNyAvKiBD
UFVNb25pdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDZDNjk2Q0MxRTcyMDVGQzAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNjk2Q0ExRTcyMDVFNDAw
NTk3OTM3IC8qIENQVU1vbml0b3IuY3BwICovOyB9OwogCQk0NkM4M0VGRTFBOUJCRTI5MDBBNzlB
NDEgLyogR2VvTm90aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2QzgzRUZDMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05MTgwLDkgKzkx
ODYsMTMgQEAKIAkJNDYwQ0JGMzMxRDRCQ0NGRTAwOTJFODhFIC8qIEpTRE9NV2luZG93UHJvcGVy
dGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVdpbmRv
d1Byb3BlcnRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBDQkYzNDFE
NEJDQ0ZFMDA5MkU4OEUgLyogSlNET01XaW5kb3dQcm9wZXJ0aWVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NV2luZG93UHJvcGVydGllcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NjBEMTk0NDFGQ0UyMUREMDBDM0RCODUgLyogSlNTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0NjI2QjQ3NTI3OUEwM0QyMDBBRUYwQjIgLyogU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYyNzNDMjEyN0ExQ0JDNzAwNkEx
NUI5IC8qIEpTQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDYyNzNDQUMyNjBFNTlERjAwNkZBQTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTV1NjcmlwdFN0b3JhZ2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYyNzNDQUUyNjBFNTlERjAwNkZBQTkxIC8qIFNX
U2NyaXB0U3RvcmFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
V1NjcmlwdFN0b3JhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjI3RkY1
NzI3OUI4MjQ1MDBBQTM5MTYgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjI3RkY1ODI3OUI4MjQ2MDBBQTM5MTYg
LyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDYyN0ZGNUEyNzlCODdBMjAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlcklkZW50aWZpZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VySWRlbnRpZmll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjJFNEM0RDI2MTZBODAxMDAzQTJD
NjcgLyogU2NyaXB0QnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNj
cmlwdEJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjJFNEM0RjI2MTZB
ODAxMDAzQTJDNjcgLyogU2NyaXB0QnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNjcmlwdEJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcxQyAvKiBQb3dlck9ic2VydmVyTWFjLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvd2VyT2JzZXJ2ZXJNYWMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTIyOSwxNCArOTIzOSwxMCBAQAogCQk0Njcz
MDIwMTFDNEVGRTY2MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3Jl
bWVudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElnbm9yZU9wZW5zRHVy
aW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0Njc4MDJCMDI3NDcxMTdCMDBEQTlGQjYgLyogV2ViTG9ja01hbmFnZXJTbmFwc2hvdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJMb2NrTWFuYWdlclNuYXBzaG90Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NzgwMkIyMjc0NzExODUwMERBOUZCNiAv
KiBXZWJMb2NrSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJMb2NrSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NjdBNjhD
RjI3NUVBOTg5MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyUHJveHkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2hhcmVkV29ya2VyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjdBNjhEMDI3NUVBOTg5MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlclRocmVhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2N0E2OEQxMjc1RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDY3QTY4RDIyNzVFQTk4QTAwOUIz
MUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2Vy
TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NjdBNjhEMzI3NUVBOThC
MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
aGFyZWRXb3JrZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3
QTY4RDQyNzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTaGFyZWRXb3JrZXJUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDY3QTY4RDUyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNDY3QTY4RDYyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclBy
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2ODJEMUZGMUY3OTc4MjMwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50
aWFsc1BvbGljeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgzNDREQzFF
RERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTVJlY3RMaXN0LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzQ0REQxRURERkE1RjAwQjc3OTVCIC8q
IERPTVJlY3RMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVJlY3RMaXN0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkyNDksNiArOTI1NSwxMiBAQAogCQk0NjgzREYz
RTI3NjdERjk4MDA3RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODhFRTNBMjZERDI2MEMwMDJBRjVD
NCAvKiBDcm9zc09yaWdpbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NPcmlnaW5Nb2RlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OEI4QkRFMjVDQzg0OTMwMEY2NzgyMiAv
KiBKU0Jhc2VBdWRpb0NvbnRleHRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCYXNl
QXVkaW9Db250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5
NDNEQzIyNzYzRjgwQzAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlclByb3ZpZGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDY5NDNEQzQyNzYzRjgwRDAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlclByb3Zp
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb3ZpZGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzREM1Mjc2M0Y4MEQwMDRCNjEwRSAvKiBTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQzYyNzYzRjgw
RTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ2OTQzREM3Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5ODVGMjIyN0E0QTY4NjAw
OTdBMzJCIC8qIFNoYXJlZFdvcmtlcktleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTaGFyZWRXb3JrZXJLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5
Q0NDRkEyNjlEMDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQnJvYWRjYXN0Q2hhbm5lbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2OUNDQ0ZDMjY5RDAyMDIwMDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEJyb2FkY2FzdENoYW5uZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDY5Q0NDRkQyNjlEMDIwMzAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IEJyb2FkY2FzdENoYW5uZWwuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTI4
Myw2ICs5Mjk1LDcgQEAKIAkJNDZDMzc2NUYyMDg1MTc2QzAwQzczODI5IC8qIEpTUmVtb3RlRE9N
V2luZG93LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUmVtb3Rl
RE9NV2luZG93LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDMzc2NjEyMDg1
MTc2RDAwQzczODI5IC8qIEpTUmVtb3RlRE9NV2luZG93LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTUmVtb3RlRE9NV2luZG93Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2QzNBOEQzMjU0OEQ0QjcwMEM4QzUzQSAvKiBKU0F1ZGlvQnVmZmVyQ3VzdG9tLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXVkaW9CdWZmZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0NkM0MTY5RDI3OUEwNEQyMDAyNTJDM0IgLyogU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NkM2OTZDOTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDUFVNb25pdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2QzY5NkNBMUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENQVU1vbml0b3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkM4M0VGQjFBOUJCRTI5MDBBNzlBNDEgLyogR2Vv
Tm90aWZpZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VvTm90
aWZpZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE1MTYsNiArMjE1Mjks
MTcgQEAKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9Owor
CQk0NjI2QjQ3MzI3OUEwM0IxMDBBRUYwQjIgLyogY29udGV4dCAqLyA9IHsKKwkJCWlzYSA9IFBC
WEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNDYyN0ZGNTcyNzlCODI0NTAwQUEzOTE2IC8q
IFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcCAqLywKKwkJCQk0NjI3RkY1ODI3OUI4MjQ2MDBB
QTM5MTYgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCAqLywKKwkJCQk0NkM0MTY5RDI3OUEw
NEQyMDAyNTJDM0IgLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwICovLAorCQkJCTQ2
MjZCNDc1Mjc5QTAzRDIwMEFFRjBCMiAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oICov
LAorCQkJKTsKKwkJCXBhdGggPSBjb250ZXh0OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKIAkJNDY0MjQwNDQyMEVBRjBCRDAwQjI5RkQyIC8qIGNvY29hICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTIxNTUwLDE2ICsyMTU3NCwyMCBAQAog
CQk0NjY5NENERTI3NTk0NDZEMDBFMzE1MEUgLyogc2hhcmVkICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0NjI2QjQ3MzI3OUEwM0IxMDBBRUYwQjIgLyog
Y29udGV4dCAqLywKIAkJCQk0NjY5NENFMzI3NTk0NDhEMDBFMzE1MEUgLyogU2hhcmVkV29ya2Vy
LmNwcCAqLywKIAkJCQk0NjY5NENFMjI3NTk0NDhEMDBFMzE1MEUgLyogU2hhcmVkV29ya2VyLmgg
Ki8sCiAJCQkJNDY2OTRDRTUyNzU5NDQ4RTAwRTMxNTBFIC8qIFNoYXJlZFdvcmtlci5pZGwgKi8s
CiAJCQkJNDY2OTRDRTQyNzU5NDQ4RTAwRTMxNTBFIC8qIFNoYXJlZFdvcmtlckdsb2JhbFNjb3Bl
LmNwcCAqLywKIAkJCQk0NjY5NENFMTI3NTk0NDhDMDBFMzE1MEUgLyogU2hhcmVkV29ya2VyR2xv
YmFsU2NvcGUuaCAqLywKIAkJCQk0NjY5NENFMDI3NTk0NDhDMDBFMzE1MEUgLyogU2hhcmVkV29y
a2VyR2xvYmFsU2NvcGUuaWRsICovLAotCQkJCTQ2N0E2OEQzMjc1RUE5OEIwMDlCMzFDNSAvKiBT
aGFyZWRXb3JrZXJNYW5hZ2VyLmNwcCAqLywKLQkJCQk0NjdBNjhEMjI3NUVBOThBMDA5QjMxQzUg
LyogU2hhcmVkV29ya2VyTWFuYWdlci5oICovLAotCQkJCTQ2N0E2OENGMjc1RUE5ODkwMDlCMzFD
NSAvKiBTaGFyZWRXb3JrZXJQcm94eS5jcHAgKi8sCi0JCQkJNDY3QTY4RDYyNzVFQTk4QzAwOUIz
MUM1IC8qIFNoYXJlZFdvcmtlclByb3h5LmggKi8sCisJCQkJNDYyN0ZGNUEyNzlCODdBMjAwQUEz
OTE2IC8qIFNoYXJlZFdvcmtlcklkZW50aWZpZXIuaCAqLywKKwkJCQk0Njk4NUYyMjI3QTRBNjg2
MDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggKi8sCisJCQkJNDY5NDNEQzYyNzYzRjgwRTAw
NEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwICovLAorCQkJCTQ2OTQz
REM1Mjc2M0Y4MEQwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggKi8s
CisJCQkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIuaCAqLywKKwkJCQk0Njk0M0RDMjI3NjNGODBDMDA0QjYxMEUgLyogU2hhcmVkV29ya2Vy
UHJvdmlkZXIuY3BwICovLAorCQkJCTQ2OTQzREM0Mjc2M0Y4MEQwMDRCNjEwRSAvKiBTaGFyZWRX
b3JrZXJQcm92aWRlci5oICovLAogCQkJCTQ2N0E2OEQxMjc1RUE5OEEwMDlCMzFDNSAvKiBTaGFy
ZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwICovLAogCQkJCTQ2N0E2OEQ1Mjc1RUE5OEMwMDlCMzFD
NSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCAqLywKIAkJCQk0NjdBNjhEMDI3NUVBOTg5
MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmNwcCAqLywKQEAgLTMzODY2LDYgKzMzODk0
LDcgQEAKIAkJCQkyRDQ4MUYwMjE0NkI1QzU1MDBBQTc4MzQgLyogQ3Jvc3NmYWRlR2VuZXJhdGVk
SW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQzQxNjEyMEY2NTYyRkQwMDkyRDJGQiAvKiBD
cm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2NzJBQTk4MjZC
MDk0MzMwMEU2RUMzOCAvKiBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LmggaW4gSGVhZGVycyAq
LywKKwkJCQk0NkE3OEIzNDI3OTlCRDcxMDAxMTU0RkUgLyogV29ya2VyT3B0aW9ucy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDY4OEVFM0MyNkREMjYxMDAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9k
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY3MkFBOTkyNkIwOTQzRjAwRTZFQzM4IC8qIENyb3Nz
T3JpZ2luT3BlbmVyUG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUFCRTY3QjFEMDU4MERC
MDA2RDg2MkQgLyogQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmggaW4gSGVhZGVycyAqLywK
QEAgLTMzOTA0LDYgKzMzOTMzLDcgQEAKIAkJCQk1N0ZFREQzRjFEQjZENTkyMDBFQjk2RjUgLyog
Q3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzA2
QTY5NjFEREU1Qzk1MDBBMDNCMTQgLyogQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTcyMUE5OEIxRUNFNTcwNDAwODEyOTVBIC8qIENyeXB0b0FsZ29y
aXRobVJzYVBzc1BhcmFtcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDYyN0ZGNTkyNzlCODI0OTAw
QUEzOTE2IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlF
MUJEMzMxQTE4MkQ4REREMDBDMDVEOUYgLyogQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3Yx
XzUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMjVGODJDMTgyMkNGRUMwMEQ4NENEOSAvKiBDcnlw
dG9BbGdvcml0aG1TSEExLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTlBQzNFRjE4MjREQzc5MDAz
NDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmggaW4gSGVhZGVycyAqLywKQEAgLTM0ODkw
LDYgKzM0OTIwLDcgQEAKIAkJCQlDRDNFMjFERDIxODM0NDRBMDBFNjZGNTUgLyogSW1hZ2VCdWZm
ZXJVdGlsaXRpZXNDRy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDRFRUExMDAyNzQ3NTdGMTAwNTk0
QTgzIC8qIEltYWdlQ29udHJvbHNNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Nzk3OTFBMEQ2
QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2QzQxNjlC
Mjc5QTA0QzcwMDI1MkMzQiAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkNBMDg4RjUyNjRFMUMwODAwM0UyQTZDIC8qIEltYWdlRGF0YVNldHRpbmdz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDE5RkVBODFGNTczOTcyMDAwQzQyRkIgLyogSW1hZ2VE
ZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDE5RkVBRTFGNTc0QjZEMDAwQzQyRkIgLyog
SW1hZ2VEZWNvZGVyQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNTUxOCw2ICszNTU0OSw3
IEBACiAJCQkJMUE3NTBEOEUwQTkwRTUyMTAwMEZGMjE1IC8qIEpTTm9kZUl0ZXJhdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQ0Q5QzJDMzBDMTdCNjlFMDA1QzkwQTIgLyogSlNOb2RlTGlzdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyMEIxOEQxOEU5RDIzNzAwNUE4MDgzIC8qIEpTTm9kZUxp
c3RDdXN0b20uaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2OTQzREM5Mjc2M0Y4MTcwMDRCNjEwRSAv
KiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzUw
M0NBNDEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxMEUyRjMzMjc2QkY2ODUwMDgwOTMzMyAvKiBKU05vdGlmaWNhdGlvbkRpcmVjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwRTJGMkIyNzZCQ0ZFODAwODA5MzMzIC8qIEpTTm90aWZp
Y2F0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzY2NjksNiArMzY3MDEsNyBAQAogCQkJ
CTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA0MyAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MTI5QzlBOTFGNTlDNTZCMDA5RDc0MDMgLyogUmVhZGFibGVTdHJl
YW1EZWZhdWx0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2RTZGRTgxQkJEMTJE
RjAwMEEzRjY0IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTQ2OTQzREM4Mjc2M0Y4MTIwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTI5QzlBRjFGNTlDRjVCMDA5RDc0MDMg
LyogUmVhZGFibGVTdHJlYW1TaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTI5QzlBQjFGNTlD
NTczMDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1Tb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZEMzE2MDNDMTJCMDI2NzYwMEMxQTM1OSAvKiBSZWFsdGltZUFuYWx5c2VyLmggaW4gSGVhZGVy
cyAqLywKQEAgLTM3MDQ2LDYgKzM3MDc5LDcgQEAKIAkJCQkwRjYwNUFFRDE1Rjk0ODQ4MDA0REYw
QzAgLyogU2Nyb2xsaW5nQ29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRjYyRUU4
MTREQTIyQTcwMDQxNTU2QyAvKiBTY3JvbGxpbmdDb29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTM5MUE5OTExNjI3NDZDQjAwMjk3MzMwIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFj
LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjI3RkY1QjI3OUI4N0FGMDBBQTM5MTYgLyogU2hhcmVk
V29ya2VySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzEyREJBNDkyMUY4QUQ4MzAw
OEYzNkIyIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9yVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVCNDY2NTYzMjVEMTRDMEEwMDBDRkUxNCAvKiBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5OTA1OUEyNkY2QkU4NTAwNTRGQkUwIC8qIFNjcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNzE3Miw4ICszNzIwNiw2
IEBACiAJCQkJQ0QzNkMxNkIyNjBBNjVDQzAwQzhDNTI5IC8qIFNoYXJlZFJvdXRpbmdBcmJpdHJh
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzRERkFEMDFGN0RBRTVEMDBDMjcyNUIgLyogU2hh
cmVkU3RyaW5nSGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFQTMwOTlFQjc4QzAwNTZF
NTgxIC8qIFNoYXJlZFRpbWVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0NjdBNjhEQTI3NUVBOTlD
MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDY3
QTY4RDkyNzVFQTk5ODAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclByb3h5LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0NjdBNjhEODI3NUVBOTk1MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjdBNjhENzI3NUVBOTkxMDA5QjMxQzUgLyogU2hh
cmVkV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzREQjAyNjI3MzM5RkUwMDA3
QjBBRDEgLyogU2hvdWxkTG9jYWxpemVBeGlzTmFtZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMzc0
MDcsNiArMzc0MzksNyBAQAogCQkJCUIyMjI3OUMwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdFbGxp
cHNlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5QzgwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR0ZFQmxlbmRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlDQjBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTQ2OTg1RjIzMjdBNEE2QUQwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUIyMjI3OUNFMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNvbXBvbmVudFRy
YW5zZmVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5RDEwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR0ZFQ29tcG9zaXRlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTkyMTMy
NzUxMUMwRTZCQjAwNDU2MjM4IC8qIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKQEAgLTM4MDUzLDYgKzM4MDg2LDcgQEAKIAkJCQk4M0FDRDAxMzI1MjI5RTEwMDAw
RDEyNEUgLyogV29ya2xldE9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNEE2QTNBMjUy
Njg0NEEwMDc0N0Y1RCAvKiBXb3JrbGV0UGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODMzQkQ4MTcyNTI0RDRGMjAwNkU3MkIzIC8qIFdvcmtsZXRQZW5kaW5nVGFza3MuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQ2OTQzRENBMjc2M0Y4MUMwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJQcm92
aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMjQwOTlFNjQ5MjAwNTZFNTgxIC8qIFdy
YXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2RTZG
RTgxQkJEMTJERjAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBp
biBIZWFkZXJzICovLAogCQkJCTlCQUYzQjI0MTJDMUEzOTgwMDAxNEJGMSAvKiBXcml0aW5nRGly
ZWN0aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCBk
YzBmNTA5OGI4N2YuLmZhN2QyMzAyZWMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaApA
QCAtMTA5LDYgKzEwOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBNKFNlbGVjdGlvbikg
XAogICAgIE0oU2VydmljZXMpIFwKICAgICBNKFNlcnZpY2VXb3JrZXIpIFwKKyAgICBNKFNoYXJl
ZFdvcmtlcikgXAogICAgIE0oU3BlbGxpbmdBbmRHcmFtbWFyKSBcCiAgICAgTShTUUxEYXRhYmFz
ZSkgXAogICAgIE0oU3RvcmFnZSkgXApAQCAtMTI2LDYgKzEyNyw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBNKFdlYkdMKSBcCiAgICAgTShXZWJSVEMpIFwKICAgICBNKFdlYlJUQ1N0YXRz
KSBcCisgICAgTShXb3JrZXIpIFwKICAgICBNKFhSKSBcCiAgICAgTShXaGVlbEV2ZW50VGVzdE1v
bml0b3IpIFwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcHRp
b25zLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9wdGlvbnMuaAppbmRleCBmYmRh
ZWFiZThhYjcuLjc3MzM5NWI3OWExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcHRp
b25zLmgKQEAgLTM0LDYgKzM0LDM2IEBAIHN0cnVjdCBXb3JrZXJPcHRpb25zIHsKICAgICBXb3Jr
ZXJUeXBlIHR5cGUgeyBXb3JrZXJUeXBlOjpDbGFzc2ljIH07CiAgICAgRmV0Y2hSZXF1ZXN0Q3Jl
ZGVudGlhbHMgY3JlZGVudGlhbHMgeyBGZXRjaFJlcXVlc3RDcmVkZW50aWFsczo6U2FtZU9yaWdp
biB9OwogICAgIFN0cmluZyBuYW1lOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFdvcmtlck9wdGlvbnM+IGRlY29kZShEZWNvZGVyJik7CiB9Owog
Cit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBXb3JrZXJPcHRpb25zOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHR5cGUgPDwgY3JlZGVudGlh
bHMgPDwgbmFtZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8
V29ya2VyT3B0aW9ucz4gV29ya2VyT3B0aW9uczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7
CisgICAgc3RkOjpvcHRpb25hbDxXb3JrZXJUeXBlPiB3b3JrZXJUeXBlOworICAgIGRlY29kZXIg
Pj4gd29ya2VyVHlwZTsKKyAgICBpZiAoIXdvcmtlclR5cGUpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPEZldGNoUmVxdWVzdENyZWRlbnRpYWxzPiBj
cmVkZW50aWFsczsKKyAgICBkZWNvZGVyID4+IGNyZWRlbnRpYWxzOworICAgIGlmICghY3JlZGVu
dGlhbHMpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gbmFtZTsKKyAgICBkZWNvZGVyID4+IG5hbWU7CisgICAgaWYgKCFuYW1lKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyAqd29ya2VyVHlwZSwg
KmNyZWRlbnRpYWxzLCBXVEZNb3ZlKCpuYW1lKSB9IH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCA0MDY3MTcz
YTg5YTUuLjU3YjE5YzAyZjAwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFk
LmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogCiAjaW5j
bHVkZSAiSURCQ29ubmVjdGlvblByb3h5LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2lu
Y2x1ZGUgIlNvY2tldFByb3ZpZGVyLmgiCkBAIC0xNjMsNiArMTY0LDExIEBAIHZvaWQgV29ya2Vy
VGhyZWFkOjpldmFsdWF0ZVNjcmlwdElmTmVjZXNzYXJ5KFN0cmluZyYgZXhjZXB0aW9uTWVzc2Fn
ZSkKICAgICBpZiAoc291cmNlUHJvdmlkZXIpCiAgICAgICAgIGdsb2JhbFNjb3BlKCktPnNldE1h
aW5TY3JpcHRTb3VyY2VQcm92aWRlcigqc291cmNlUHJvdmlkZXIpOwogCisgICAgaWYgKGV4Y2Vw
dGlvbk1lc3NhZ2UuaXNFbXB0eSgpKQorICAgICAgICBSRUxFQVNFX0xPRyhXb3JrZXIsICJXb3Jr
ZXJUaHJlYWQ6OmV2YWx1YXRlU2NyaXB0SWZOZWNlc3NhcnkoKSBTVUNDRVNTIik7CisgICAgZWxz
ZQorICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXb3JrZXIsICJXb3JrZXJUaHJlYWQ6OmV2YWx1
YXRlU2NyaXB0SWZOZWNlc3NhcnkoKSBGQUlMVVJFICgle3B1YmxpY31zKSIsIGV4Y2VwdGlvbk1l
c3NhZ2UudXRmOCgpLmRhdGEoKSk7CisKICAgICAvLyBGcmVlIHRoZSBzdGFydHVwIGRhdGEgdG8g
Y2F1c2UgaXRzIG1lbWJlciB2YXJpYWJsZSBkZXJlZidzIGhhcHBlbiBvbiB0aGUgd29ya2VyJ3Mg
dGhyZWFkIChzaW5jZQogICAgIC8vIGFsbCByZWYvZGVyZWZzIG9mIHRoZXNlIG9iamVjdHMgYXJl
IGhhcHBlbmluZyBvbiB0aGUgdGhyZWFkIGF0IHRoaXMgcG9pbnQpLiBOb3RlIHRoYXQKICAgICAv
LyBXb3JrZXJUaHJlYWQ6On5Xb3JrZXJUaHJlYWQgaGFwcGVucyBvbiBhIGRpZmZlcmVudCB0aHJl
YWQgd2hlcmUgaXQgd2FzIGNyZWF0ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyLmNwcAppbmRleCA2YTU5YjJlZmU5YTEuLjUxNzBhOWRmZDY3NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCkBAIC0y
NiwxMyArMjYsMTYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFyZWRXb3Jr
ZXIuaCIKIAorI2luY2x1ZGUgIkNsaWVudE9yaWdpbi5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1
cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VDaGFubmVsLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQu
aCIKKyNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29y
a2VyUHJveHkuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiU2hhcmVkV29ya2VyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXb3JrZXJPcHRpb25z
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllcnNGYWN0b3J5Lmg+CiAjaW5j
bHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTQxLDYgKzQ0LDIzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFNoYXJlZFdvcmtlcik7
CiAKK3N0YXRpYyBIYXNoTWFwPFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFNoYXJlZFdv
cmtlcio+JiBhbGxTaGFyZWRXb3JrZXJzKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIsIFNoYXJlZFdvcmtlcio+PiBhbGxTaGFyZWRXb3JrZXJzOworICAgIHJldHVybiBh
bGxTaGFyZWRXb3JrZXJzOworfQorCitTaGFyZWRXb3JrZXIqIFNoYXJlZFdvcmtlcjo6ZnJvbUlk
ZW50aWZpZXIoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAg
IHJldHVybiBhbGxTaGFyZWRXb3JrZXJzKCkuZ2V0KGlkZW50aWZpZXIpOworfQorCitzdGF0aWMg
aW5saW5lIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24mIG1haW5UaHJlYWRDb25uZWN0aW9u
KCkKK3sKKyAgICByZXR1cm4gU2hhcmVkV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNoYXJl
ZFdvcmtlckNvbm5lY3Rpb24oKTsKK30KKwogRXhjZXB0aW9uT3I8UmVmPFNoYXJlZFdvcmtlcj4+
IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgSlNDOjpSdW50aW1lRmxh
Z3MgcnVudGltZUZsYWdzLCBTdHJpbmcmJiBzY3JpcHRVUkxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8
c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYgbWF5YmVPcHRpb25zKQogewog
ICAgIGlmICghZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3NTaGFyZWRXb3JrZXJz
KGRvY3VtZW50LnRvcE9yaWdpbigpKSkKQEAgLTcwLDIzICs5MCwyNyBAQCBFeGNlcHRpb25PcjxS
ZWY8U2hhcmVkV29ya2VyPj4gU2hhcmVkV29ya2VyOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50
LCBKU0M6OlJ1bgogICAgIGF1dG8gc2hhcmVkV29ya2VyID0gYWRvcHRSZWYoKm5ldyBTaGFyZWRX
b3JrZXIoZG9jdW1lbnQsIGNoYW5uZWwtPnBvcnQxKCksIHJ1bnRpbWVGbGFncykpOwogICAgIHNo
YXJlZFdvcmtlci0+c3VzcGVuZElmTmVlZGVkKCk7CiAKLSAgICBTaGFyZWRXb3JrZXJNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5jb25uZWN0KHVybCwgc2hhcmVkV29ya2VyLmdldCgpLCBXVEZNb3ZlKHRy
YW5zZmVycmVkUG9ydCksIFdURk1vdmUob3B0aW9ucykpOworICAgIENsaWVudE9yaWdpbiBjbGll
bnRPcmlnaW4geyBkb2N1bWVudC50b3BEb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgp
LCBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSB9OworICAgIG1haW5UaHJlYWRDb25u
ZWN0aW9uKCkucmVxdWVzdFNoYXJlZFdvcmtlcihjbGllbnRPcmlnaW4sIHNoYXJlZFdvcmtlci0+
aWRlbnRpZmllcigpLCB1cmwsIFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwgb3B0aW9ucyk7CiAg
ICAgcmV0dXJuIHNoYXJlZFdvcmtlcjsKIH0KIAogU2hhcmVkV29ya2VyOjpTaGFyZWRXb3JrZXIo
RG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8TWVzc2FnZVBvcnQ+JiYgcG9ydCwgSlNDOjpSdW50aW1l
RmxhZ3MgcnVudGltZUZsYWdzKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZkb2N1bWVudCkKKyAg
ICAsIG1faWRlbnRpZmllcihTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
KQogICAgICwgbV9wb3J0KFdURk1vdmUocG9ydCkpCiAgICAgLCBtX2lkZW50aWZpZXJGb3JJbnNw
ZWN0b3IoIlNoYXJlZFdvcmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNy
ZWF0ZUlkZW50aWZpZXIoKSkKICAgICAsIG1fcnVudGltZUZsYWdzKHJ1bnRpbWVGbGFncykKICAg
ICAsIG1fY3JlYXRpb25UaW1lKE1vbm90b25pY1RpbWU6Om5vdygpKQotICAgICwgbV9wcm94eShT
aGFyZWRXb3JrZXJQcm94eTo6Y3JlYXRlKCp0aGlzKSkKIHsKKyAgICBhbGxTaGFyZWRXb3JrZXJz
KCkuYWRkKG1faWRlbnRpZmllciwgdGhpcyk7CiB9CiAKIFNoYXJlZFdvcmtlcjo6flNoYXJlZFdv
cmtlcigpCiB7Ci0gICAgbV9wcm94eS53b3JrZXJPYmplY3REZXN0cm95ZWQoKTsKKyAgICBBU1NF
UlQoYWxsU2hhcmVkV29ya2VycygpLmdldChtX2lkZW50aWZpZXIpID09IHRoaXMpOworICAgIGFs
bFNoYXJlZFdvcmtlcnMoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKKyAgICBBU1NFUlQoIW1faXNB
Y3RpdmUpOwogfQogCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBTaGFyZWRXb3JrZXI6OnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdApAQCAtMTA0LDE5ICsxMjgsMjEgQEAgRXZlbnRUYXJn
ZXRJbnRlcmZhY2UgU2hhcmVkV29ya2VyOjpldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIFNoYXJlZFdvcmtlckV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsKIH0KIAotdm9p
ZCBTaGFyZWRXb3JrZXI6OnN0b3AoKQordm9pZCBTaGFyZWRXb3JrZXI6OmRpc3BhdGNoRXJyb3JF
dmVudCgpCiB7Ci0gICAgdGVybWluYXRlKCk7CisgICAgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50
KCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmVycm9yRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxh
YmxlOjpZZXMpKTsKKyAgICBtX2lzQWN0aXZlID0gZmFsc2U7CiB9CiAKIGJvb2wgU2hhcmVkV29y
a2VyOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9w
cm94eS5oYXNQZW5kaW5nQWN0aXZpdHkoKSB8fCBtX2lzTG9hZGluZzsKKyAgICByZXR1cm4gbV9p
c0FjdGl2ZTsKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXI6OnRlcm1pbmF0ZSgpCit2b2lkIFNoYXJl
ZFdvcmtlcjo6c3RvcCgpCiB7Ci0gICAgbV9wcm94eS50ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29w
ZSgpOworICAgIG1faXNBY3RpdmUgPSBmYWxzZTsKKyAgICBtYWluVGhyZWFkQ29ubmVjdGlvbigp
LnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KG1faWRlbnRpZmllcik7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyLmgKaW5kZXggNTMyNmVlNTQyYzg4Li43NDc5N2UxOGQwYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5oCkBAIC0yNywxMyArMjcsMTQgQEAK
IAogI2luY2x1ZGUgIkFic3RyYWN0V29ya2VyLmgiCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0
LmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1J1bnRpbWVGbGFncy5oPgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNU
aW1lLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVzc2FnZVBvcnQ7Ci1jbGFz
cyBTaGFyZWRXb3JrZXJQcm94eTsKK2NsYXNzIFJlc291cmNlRXJyb3I7CiAKIHN0cnVjdCBXb3Jr
ZXJPcHRpb25zOwogCkBAIC00MywxNSArNDQsMTUgQEAgcHVibGljOgogICAgIHN0YXRpYyBFeGNl
cHRpb25PcjxSZWY8U2hhcmVkV29ya2VyPj4gY3JlYXRlKERvY3VtZW50JiwgSlNDOjpSdW50aW1l
RmxhZ3MsIFN0cmluZyYmIHNjcmlwdFVSTCwgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8U3Ry
aW5nLCBXb3JrZXJPcHRpb25zPj4mJik7CiAgICAgflNoYXJlZFdvcmtlcigpOwogCisgICAgc3Rh
dGljIFNoYXJlZFdvcmtlciogZnJvbUlkZW50aWZpZXIoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllcik7CisgICAgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgTWVzc2FnZVBvcnQmIHBvcnQoKSBjb25z
dCB7IHJldHVybiBtX3BvcnQuZ2V0KCk7IH0KICAgICBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1l
RmxhZ3MoKSB7IHJldHVybiBtX3J1bnRpbWVGbGFnczsgfQogCiAgICAgY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyRm9ySW5zcGVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyRm9ySW5z
cGVjdG9yOyB9CiAgICAgTW9ub3RvbmljVGltZSBjcmVhdGlvblRpbWUoKSBjb25zdCB7IHJldHVy
biBtX2NyZWF0aW9uVGltZTsgfQogCi0gICAgU2hhcmVkV29ya2VyUHJveHkmIHByb3h5KCkgeyBy
ZXR1cm4gbV9wcm94eTsgfQotCi0gICAgdm9pZCBzZXRJc0xvYWRpbmcoYm9vbCBpc0xvYWRpbmcp
IHsgbV9pc0xvYWRpbmcgPSBpc0xvYWRpbmc7IH0KKyAgICB2b2lkIGRpc3BhdGNoRXJyb3JFdmVu
dCgpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQuCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsOwpAQCAtNTksOCArNjAsNiBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIFNoYXJlZFdvcmtlcihEb2N1bWVudCYsIFJlZjxNZXNzYWdl
UG9ydD4mJiwgSlNDOjpSdW50aW1lRmxhZ3MpOwogCi0gICAgdm9pZCB0ZXJtaW5hdGUoKTsKLQog
ICAgIC8vIEV2ZW50VGFyZ2V0LgogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0
SW50ZXJmYWNlKCkgY29uc3QgZmluYWw7CiAKQEAgLTcwLDEyICs2OSwxMiBAQCBwcml2YXRlOgog
ICAgIGJvb2wgdmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwogCiAKKyAg
ICBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBSZWY8TWVz
c2FnZVBvcnQ+IG1fcG9ydDsKICAgICBTdHJpbmcgbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yOwog
ICAgIEpTQzo6UnVudGltZUZsYWdzIG1fcnVudGltZUZsYWdzOwogICAgIE1vbm90b25pY1RpbWUg
bV9jcmVhdGlvblRpbWU7Ci0gICAgU2hhcmVkV29ya2VyUHJveHkmIG1fcHJveHk7IC8vIFRoZSBw
cm94eSBvdXRsaXZlcyB0aGUgd29ya2VyIHRvIHBlcmZvcm0gdGhyZWFkIHNodXRkb3duLgotICAg
IGJvb2wgbV9pc0xvYWRpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0FjdGl2ZSB7IHRydWUg
fTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA0
MTIxZWI1OGMyMDUuLmQ5ODYxN2VlNTc3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMjYsNiAr
MjYsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJHbG9i
YWxTY29wZS5oIgogCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKKyNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0
VmFsdWUuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIgorI2luY2x1
ZGUgIlNoYXJlZFdvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTM3LDEzICs0MywzNiBAQCBTaGFy
ZWRXb3JrZXJHbG9iYWxTY29wZTo6U2hhcmVkV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBXb3JrZQogICAgIDogV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyVGhyZWFk
VHlwZTo6U2hhcmVkV29ya2VyLCBwYXJhbXMsIFdURk1vdmUob3JpZ2luKSwgdGhyZWFkLCBXVEZN
b3ZlKHRvcE9yaWdpbiksIGNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIpCiAgICAgLCBt
X25hbWUobmFtZSkKIHsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFNoYXJl
ZFdvcmtlckdsb2JhbFNjb3BlOjpTaGFyZWRXb3JrZXJHbG9iYWxTY29wZToiLCB0aGlzKTsKICAg
ICByZWxheEFkb3B0aW9uUmVxdWlyZW1lbnQoKTsKICAgICBhcHBseUNvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVycyhwYXJhbXMuY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VI
ZWFkZXJzKTsKIH0KIAorU2hhcmVkV29ya2VyVGhyZWFkJiBTaGFyZWRXb3JrZXJHbG9iYWxTY29w
ZTo6dGhyZWFkKCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U2hhcmVkV29ya2VyVGhyZWFk
Jj4oV29ya2VyR2xvYmFsU2NvcGU6OnRocmVhZCgpKTsKK30KKwogdm9pZCBTaGFyZWRXb3JrZXJH
bG9iYWxTY29wZTo6Y2xvc2UoKQogeworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVw
IC0gU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OmNsb3NlOiIsIHRoaXMpOwogICAgIHRocmVhZCgp
LnN0b3AobnVsbHB0cik7CiB9CiAKKy8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVs
dGlwYWdlL3dvcmtlcnMuaHRtbCNkb20tc2hhcmVkd29ya2VyIHN0ZXAgMTEuNQordm9pZCBTaGFy
ZWRXb3JrZXJHbG9iYWxTY29wZTo6cG9zdENvbm5lY3RFdmVudChUcmFuc2ZlcnJlZE1lc3NhZ2VQ
b3J0JiYgdHJhbnNmZXJyZWRQb3J0LCBTdHJpbmcmJiBzb3VyY2VPcmlnaW4pCit7CisgICAgUkVM
RUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTo6cG9z
dENvbm5lY3RFdmVudDoiLCB0aGlzKTsKKyAgICBhdXRvIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA9
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCIiKTsKKyAgICBBU1NFUlQoc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKTsKKyAgICBhdXRvIHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9y
dHMoKnRoaXMsIHsgV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpIH0pOworICAgIEFTU0VSVChwb3J0
cy5zaXplKCkgPT0gMSk7CisgICAgYXV0byBwb3J0ID0gcG9ydHNbMF07CisgICAgQVNTRVJUKHBv
cnQpOworICAgIGF1dG8gZXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRz
KSwgc2VyaWFsaXplZFNjcmlwdFZhbHVlLnJlbGVhc2VOb25OdWxsKCksIHNvdXJjZU9yaWdpbiwg
eyB9LCBwb3J0KTsKKyAgICBldmVudC0+aW5pdEV2ZW50KGV2ZW50TmFtZXMoKS5jb25uZWN0RXZl
bnQsIGZhbHNlLCBmYWxzZSk7CisKKyAgICBkaXNwYXRjaEV2ZW50KFdURk1vdmUoZXZlbnQpKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXggZjM3NzliODRk
MTUwLi4yNzY0NjFkZTM4YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtMjUsMTEgKzI1LDEzIEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaCIKICNp
bmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWQ7CiBzdHJ1
Y3QgV29ya2VyUGFyYW1ldGVyczsKIAogY2xhc3MgU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUgZmlu
YWwgOiBwdWJsaWMgV29ya2VyR2xvYmFsU2NvcGUgewpAQCAtMzksNyArNDEsMTEgQEAgcHVibGlj
OgogCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gVHlwZTo6U2hhcmVkV29y
a2VyOyB9CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9
CisgICAgU2hhcmVkV29ya2VyVGhyZWFkJiB0aHJlYWQoKTsKKworICAgIHZvaWQgcG9zdENvbm5l
Y3RFdmVudChUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFN0cmluZyYmIHNvdXJjZU9yaWdpbik7
CiAgICAgdm9pZCBjbG9zZSgpOworCiBwcml2YXRlOgogICAgIFNoYXJlZFdvcmtlckdsb2JhbFNj
b3BlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIFJlZjxTZWN1
cml0eU9yaWdpbj4mJiwgV29ya2VyVGhyZWFkJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9y
aWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciopOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44N2E5
NzIxMDQ4NzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIFNoYXJlZFdvcmtlcklkZW50aWZpZXJUeXBlIHsgfTsK
K3VzaW5nIFNoYXJlZFdvcmtlcklkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFNoYXJlZFdv
cmtlcklkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyS2V5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjVmOWU2ZGM5MGJhOQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlcktleS5oCkBAIC0w
LDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNsaWVu
dE9yaWdpbi5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kworc3RydWN0IFNoYXJlZFdvcmtlcktleSB7CisgICAgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9y
aWdpbjsKKyAgICBVUkwgdXJsOworICAgIFN0cmluZyBuYW1lOworCisgICAgdW5zaWduZWQgaGFz
aCgpIGNvbnN0OworfTsKKworaW5saW5lIHVuc2lnbmVkIFNoYXJlZFdvcmtlcktleTo6aGFzaCgp
IGNvbnN0Cit7CisgICAgSGFzaGVyIGhhc2hlcjsKKyAgICBhZGQoaGFzaGVyLCBvcmlnaW4uaGFz
aCgpKTsKKyAgICBhZGQoaGFzaGVyLCB1cmwpOworICAgIGFkZChoYXNoZXIsIG5hbWUpOworICAg
IHJldHVybiBoYXNoZXIuaGFzaCgpOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFNoYXJlZFdvcmtlcktleSYgYSwgY29uc3QgU2hhcmVkV29ya2VyS2V5JiBiKQoreworICAgIHJl
dHVybiBhLm9yaWdpbiA9PSBiLm9yaWdpbiAmJiBhLnVybCA9PSBiLnVybCAmJiBhLm5hbWUgPT0g
Yi5uYW1lOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgewor
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk+
IHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJL
ZXkmIGtleSkKKyAgICB7CisgICAgICAgIHJldHVybiBrZXkuaGFzaCgpOworICAgIH0KKworICAg
IHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgYSwgY29u
c3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGEg
PT0gYjsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0
eU9yRGVsZXRlZCA9IGZhbHNlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk+IDogR2VuZXJpY0hhc2hUcmFpdHM8V2ViQ29yZTo6U2hh
cmVkV29ya2VyS2V5PiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGVtcHR5VmFsdWVJc1pl
cm8gPSBmYWxzZTsKKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV2ViQ29y
ZTo6U2hhcmVkV29ya2VyS2V5JiBzbG90KSB7IG5ldyAoTm90TnVsbCwgJnNsb3QudXJsKSBVUkwo
V1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpOyB9CisgICAgc3RhdGljIGJvb2wgaXNEZWxldGVk
VmFsdWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBzbG90KSB7IHJldHVybiBzbG90
LnVybC5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
VEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
ck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
TWFuYWdlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxMjZiYzRmZWQ4Ny4u
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlck1hbmFnZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTIyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyTWFuYWdlci5o
IgotCi0jaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCi0jaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgotI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCi0jaW5jbHVkZSAiTWVzc2FnZUV2
ZW50LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCi0jaW5jbHVkZSAiU2hhcmVk
V29ya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRl
ICJTaGFyZWRXb3JrZXJQcm94eS5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlclNjcmlwdExvYWRl
ci5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlclRocmVhZC5oIgotI2luY2x1ZGUgIldvcmtlclJ1
bkxvb3AuaCIKLSNpbmNsdWRlICJXb3JrZXJTY3JpcHRMb2FkZXIuaCIKLSNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLVNoYXJlZFdvcmtlck1hbmFnZXImIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNp
bmdsZXRvbigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYXJlZFdvcmtlck1hbmFn
ZXI+IGluc3RhbmNlOwotICAgIHJldHVybiBpbnN0YW5jZS5nZXQoKTsKLX0KLQotdm9pZCBTaGFy
ZWRXb3JrZXJNYW5hZ2VyOjpjb25uZWN0KGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRXb3JrZXImIHdv
cmtlciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIG1lc3NhZ2VQb3J0LCBXb3JrZXJPcHRpb25z
JiYgb3B0aW9ucykKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIC8vIEZJ
WE1FOiBIYW5kbGUgd29ya2VycyBmcm9tIG90aGVyIHByb2Nlc3Nlcywgd2hpY2ggd2lsbCBwcm9i
YWJseSByZXF1aXJlIG1vdmluZyBjb25uZWN0IHRvIHRoZSBGcmFtZUxvYWRlckNsaWVudCBvciBz
b21ldGhpbmcuCi0gICAgLy8gTWF5YmUgc29tZXRoaW5nIG1vcmUgbGlrZSB3aGF0IFNlcnZpY2VX
b3JrZXJzIGRvZXMuCi0KLSAgICAvLyBGSVhNRTogQ2hlY2sgaWYgd2UgYWxyZWFkeSBtYWRlIGEg
dGhyZWFkLgotICAgIC8vIEZJWE1FOiBDaGVjayBpZiB0aGVyZSdzIGFscmVhZHkgYSBzaGFyZWQg
d29ya2VyIGFuZCB1c2UgdGhhdCBpZiB0aGVyZSBpcy4KLQotICAgIGF1dG8gbG9hZGVyID0gbWFr
ZVVuaXF1ZVJlZjxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+KHVybCwgd29ya2VyLCBXVEZNb3Zl
KG1lc3NhZ2VQb3J0KSwgV1RGTW92ZShvcHRpb25zKSk7Ci0gICAgYXV0byBpZGVudGlmaWVyID0g
bG9hZGVyLT5pZGVudGlmaWVyKCk7Ci0gICAgbV9sb2FkZXJzLmFkZChpZGVudGlmaWVyLCBXVEZN
b3ZlKGxvYWRlcikpOwotfQotCi12b2lkIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNjcmlwdExvYWRG
YWlsZWQoU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJiBsb2FkZXIpCi17Ci0gICAgQWN0aXZlRE9N
T2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQobG9hZGVyLndvcmtlcigpLCBUYXNrU291
cmNlOjpET01NYW5pcHVsYXRpb24sIEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZl
bnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKLSAg
ICBtX2xvYWRlcnMucmVtb3ZlKGxvYWRlci5pZGVudGlmaWVyKCkpOwotfQotCi12b2lkIFNoYXJl
ZFdvcmtlck1hbmFnZXI6OnNjcmlwdExvYWRlZFN1Y2Nlc3NmdWxseShTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXImIGxvYWRlciwgY29uc3QgU2NyaXB0QnVmZmVyJiBzY3JpcHRCdWZmZXIsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFNoYXJlZFdvcmtlciYg
c2hhcmVkV29ya2VyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgdHJhbnNmZXJyZWRQb3J0KQot
ewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgYXV0byYgd29ya2VyID0gbG9h
ZGVyLndvcmtlcigpOwotICAgIGF1dG8mIG9wdGlvbnMgPSBsb2FkZXIub3B0aW9ucygpOwotCi0g
ICAgYXV0byYgcHJveHkgPSBzaGFyZWRXb3JrZXIucHJveHkoKTsKLQotICAgIHByb3h5LnN0YXJ0
V29ya2VyR2xvYmFsU2NvcGUoCi0gICAgICAgIGxvYWRlci51cmwoKSwKLSAgICAgICAgb3B0aW9u
cy5uYW1lLAotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LnVzZXJBZ2VudChsb2FkZXIu
dXJsKCkpLAotICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+
aXNPbkxpbmUoKSwKLSAgICAgICAgc2NyaXB0QnVmZmVyLAotICAgICAgICBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5yZXNwb25zZUhlYWRlcnMoKSwKLSAg
ICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50
U2VjdXJpdHlQb2xpY3koKSwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcm9zc09y
aWdpbkVtYmVkZGVyUG9saWN5KCksCi0gICAgICAgIHdvcmtlci5jcmVhdGlvblRpbWUoKSwKLSAg
ICAgICAgUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nLAotICAgICAgICBvcHRpb25zLnR5cGUs
Ci0gICAgICAgIG9wdGlvbnMuY3JlZGVudGlhbHMsCi0gICAgICAgIHdvcmtlci5ydW50aW1lRmxh
Z3MoKQotICAgICk7Ci0gICAgaWYgKCFwcm94eS50aHJlYWQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxEb2N1bWVu
dD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwotICAgIGF1dG8gc291cmNlT3JpZ2luID0gZG93
bmNhc3Q8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnNlY3VyaXR5T3JpZ2luKCku
dG9TdHJpbmcoKTsKLQotICAgIHByb3h5LnRocmVhZCgpLT5ydW5Mb29wKCkucG9zdFRhc2soW3Ry
YW5zZmVycmVkUG9ydCA9IFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwgc291cmNlT3JpZ2luID0g
V1RGTW92ZShzb3VyY2VPcmlnaW4pLmlzb2xhdGVkQ29weSgpXSAoYXV0byYgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwotCi0gICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dv
cmtlcnMuaHRtbCNkb20tc2hhcmVkd29ya2VyIHN0ZXAgMTEuNQotICAgICAgICBhdXRvIHNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCIiKTsKLSAg
ICAgICAgQVNTRVJUKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7Ci0gICAgICAgIGF1dG8gcG9ydHMg
PSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB7IFdU
Rk1vdmUodHJhbnNmZXJyZWRQb3J0KSB9KTsKLSAgICAgICAgQVNTRVJUKHBvcnRzLnNpemUoKSA9
PSAxKTsKLSAgICAgICAgYXV0byBwb3J0ID0gcG9ydHNbMF07Ci0gICAgICAgIEFTU0VSVChwb3J0
KTsKLSAgICAgICAgYXV0byBldmVudCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUocG9y
dHMpLCBzZXJpYWxpemVkU2NyaXB0VmFsdWUucmVsZWFzZU5vbk51bGwoKSwgc291cmNlT3JpZ2lu
LCB7IH0sIHBvcnQpOwotICAgICAgICBldmVudC0+aW5pdEV2ZW50KGV2ZW50TmFtZXMoKS5jb25u
ZWN0RXZlbnQsIGZhbHNlLCBmYWxzZSk7Ci0KLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTihpczxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkpOwotICAgICAgICBhdXRvJiB3b3JrZXJHbG9iYWxTY29wZSA9IGRvd25j
YXN0PFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAg
ICAgICAgd29ya2VyR2xvYmFsU2NvcGUuZGlzcGF0Y2hFdmVudChXVEZNb3ZlKGV2ZW50KSk7Ci0g
ICAgfSk7Ci0KLSAgICBtX2xvYWRlcnMucmVtb3ZlKGxvYWRlci5pZGVudGlmaWVyKCkpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmE3MDViYzg0MzYyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgiCisK
KyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJFcnJvckV2ZW50LmgiCisj
aW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNjcmlwdEJ1ZmZlci5oIgorI2luY2x1ZGUg
IlNoYXJlZFdvcmtlci5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyB1aW50NjRfdCBsb2FkZXJJZGVudGlmaWVy
U2VlZCA9IDA7CisKK1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CisKK1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b246On5TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCkgPSBkZWZhdWx0OworCit2b2lkIFNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OmZldGNoU2NyaXB0SW5DbGllbnQoVVJMJiYgdXJs
LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIsIFdvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFNjcmlwdEJ1ZmZlcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGF1dG8qIHdvcmtlck9iamVjdCA9IFNoYXJlZFdv
cmtlcjo6ZnJvbUlkZW50aWZpZXIoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAg
UkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6
ZmV0Y2hTY3JpcHRJbkNsaWVudDogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0lcywgd29y
a2VyPSVwIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5k
YXRhKCksIHdvcmtlck9iamVjdCk7CisgICAgaWYgKCF3b3JrZXJPYmplY3QpCisgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworCisgICAgYXV0byBsb2FkZXJJZGVudGlmaWVy
ID0gKytsb2FkZXJJZGVudGlmaWVyU2VlZDsKKyAgICBhdXRvIGxvYWRlciA9IG1ha2VVbmlxdWVS
ZWY8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPihXVEZNb3ZlKHVybCksICp3b3JrZXJPYmplY3Qs
IFdURk1vdmUod29ya2VyT3B0aW9ucykpOworICAgIGF1dG8gbG9hZGVyUHRyID0gbG9hZGVyLnB0
cigpOworICAgIG1fbG9hZGVycy5hZGQobG9hZGVySWRlbnRpZmllciwgV1RGTW92ZShsb2FkZXIp
KTsKKworICAgIGxvYWRlclB0ci0+bG9hZChbdGhpcywgbG9hZGVySWRlbnRpZmllciwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2NyaXB0QnVmZmVyIHNj
cmlwdEJ1ZmZlcikgbXV0YWJsZSB7CisgICAgICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwg
IlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OmZldGNoU2NyaXB0SW5DbGllbnQ6IGZpbmlz
aGVkIHNjcmlwdCBsb2FkLCBzdWNjZXNzPSVkIiwgISFzY3JpcHRCdWZmZXIpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihzY3JpcHRCdWZmZXIpOworICAgICAgICBtX2xvYWRlcnMucmVtb3Zl
KGxvYWRlcklkZW50aWZpZXIpOworICAgIH0pOworfQorCit2b2lkIFNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb246OmRpc3BhdGNoRXJyb3JFdmVudE9uV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8qIHdvcmtlck9iamVjdCA9
IFNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
cik7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbjo6ZGlzcGF0Y2hFcnJvckV2ZW50T25Xb3JrZXJPYmplY3Q6IHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXI9JXMsIHdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB3b3JrZXJPYmplY3QpOworICAgIGlmICh3b3Jr
ZXJPYmplY3QpCisgICAgICAgIHdvcmtlck9iamVjdC0+ZGlzcGF0Y2hFcnJvckV2ZW50KCk7Cit9
CisKK3ZvaWQgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29y
a2VyT2JqZWN0KFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8qIHdvcmtlck9iamVjdCA9IFNoYXJlZFdvcmtlcjo6
ZnJvbUlkZW50aWZpZXIoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgUkVMRUFT
RV9MT0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6cG9zdEV4
Y2VwdGlvblRvV29ya2VyT2JqZWN0OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSVzLCB3
b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgd29ya2VyT2JqZWN0KTsKKyAgICBpZiAod29ya2VyT2JqZWN0KQorICAgICAgICBB
Y3RpdmVET01PYmplY3Q6OnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqd29ya2VyT2JqZWN0LCBU
YXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIEVycm9yRXZlbnQ6OmNyZWF0ZShlcnJvck1lc3Nh
Z2UsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB7IH0pKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uM2Q0YjNjZDhmYWQxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbi5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIk1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIE1lc3NhZ2VQb3J0OworY2xhc3MgU2NyaXB0QnVmZmVyOworY2xh
c3MgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOworCitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworc3Ry
dWN0IFdvcmtlck9wdGlvbnM7CisKK2NsYXNzIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24g
OiBwdWJsaWMgUmVmQ291bnRlZDxTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uPiB7CitwdWJs
aWM6CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbigpOworCisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoY29uc3QgQ2xp
ZW50T3JpZ2luJiwgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgVVJMJiwgVHJh
bnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBjb25zdCBXb3JrZXJPcHRpb25zJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICAvLyBJUEMgbWVzc2FnZXMuCisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmZXRjaFNjcmlwdEluQ2xpZW50KFVSTCYmLCBXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXb3JrZXJPcHRpb25zJiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU2NyaXB0QnVmZmVyKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkaXNwYXRjaEVycm9yRXZlbnRPbldvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RFeGNlcHRpb25U
b1dvcmtlck9iamVjdChTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24oKTsKKworcHJpdmF0ZToKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBVbmlxdWVS
ZWY8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPj4gbV9sb2FkZXJzOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uZWJjZDRhN2FlODdhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5o
CkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IlByb2Nlc3NRdWFsaWZpZWQuaCIKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
clR5cGUgeyB9OwordXNpbmcgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA9IFByb2Nlc3NR
dWFsaWZpZWQ8T2JqZWN0SWRlbnRpZmllcjxTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyVHlw
ZT4+OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42MDg0N2JlNmVhYjIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5jcHAK
QEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJTaGFyZWRXb3JrZXJQcm92aWRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0
YXRpYyBTaGFyZWRXb3JrZXJQcm92aWRlciogc2hhcmVkUHJvdmlkZXI7CisKK1NoYXJlZFdvcmtl
clByb3ZpZGVyOjp+U2hhcmVkV29ya2VyUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CisKK1NoYXJlZFdv
cmtlclByb3ZpZGVyJiBTaGFyZWRXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBS
RUxFQVNFX0FTU0VSVChzaGFyZWRQcm92aWRlcik7CisgICAgcmV0dXJuICpzaGFyZWRQcm92aWRl
cjsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJQcm92aWRlcjo6c2V0U2hhcmVkUHJvdmlkZXIoU2hh
cmVkV29ya2VyUHJvdmlkZXImIG5ld1Byb3ZpZGVyKQoreworICAgIHNoYXJlZFByb3ZpZGVyID0g
Jm5ld1Byb3ZpZGVyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5oCnNpbWlsYXJp
dHkgaW5kZXggNjQlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1No
YXJlZFdvcmtlck1hbmFnZXIuaApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyUHJvdmlkZXIuaAppbmRleCBhZWY4Mjc5MDM1ODQuLjViNmY4YjQyZWE5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
clByb3ZpZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI1LDI2ICsyNSwxOSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIk1lc3Nh
Z2VQb3J0SWRlbnRpZmllci5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5o
IgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZFdvcmtlcjsKLWNsYXNzIFNj
cmlwdEJ1ZmZlcjsKLXN0cnVjdCBXb3JrZXJPcHRpb25zOwotdXNpbmcgVHJhbnNmZXJyZWRNZXNz
YWdlUG9ydCA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIsIFdlYkNv
cmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllcj47CitjbGFzcyBTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uOwogCi1jbGFzcyBTaGFyZWRXb3JrZXJNYW5hZ2VyIHsKK2NsYXNzIFdFQkNPUkVfRVhQ
T1JUIFNoYXJlZFdvcmtlclByb3ZpZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgU2hhcmVkV29y
a2VyTWFuYWdlciYgc2luZ2xldG9uKCk7Ci0gICAgdm9pZCBjb25uZWN0KGNvbnN0IFVSTCYsIFNo
YXJlZFdvcmtlciYsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgV29ya2VyT3B0aW9ucyYmKTsK
KyAgICBzdGF0aWMgU2hhcmVkV29ya2VyUHJvdmlkZXImIHNpbmdsZXRvbigpOworICAgIHN0YXRp
YyB2b2lkIHNldFNoYXJlZFByb3ZpZGVyKFNoYXJlZFdvcmtlclByb3ZpZGVyJik7CiAKLSAgICB2
b2lkIHNjcmlwdExvYWRGYWlsZWQoU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJik7Ci0gICAgdm9p
ZCBzY3JpcHRMb2FkZWRTdWNjZXNzZnVsbHkoU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJiwgY29u
c3QgU2NyaXB0QnVmZmVyJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFNoYXJlZFdvcmtlciYs
IFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJik7CisgICAgdmlydHVhbCBTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uJiBzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCkgPSAwOwogCi1wcml2YXRlOgot
ICAgIEhhc2hNYXA8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmllciwgVW5pcXVlUmVm
PFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj4+IG1fbG9hZGVyczsKK3Byb3RlY3RlZDoKKyAgICB2
aXJ0dWFsIH5TaGFyZWRXb3JrZXJQcm92aWRlcigpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
UHJveHkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYmUwNzUzZjg5MWQuLjAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJQcm94eS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzMgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJQcm94eS5oIgotCi0j
aW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKLSNpbmNsdWRlICJFcnJvckV2ZW50Lmgi
Ci0jaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgi
Ci0jaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCi0jaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKLSNp
bmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29u
bmVjdGlvbi5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgotI2luY2x1ZGUgIlNoYXJlZFdv
cmtlckdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkLmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotU2hhcmVkV29ya2VyUHJveHk6OlNoYXJlZFdvcmtlclByb3h5
KFNoYXJlZFdvcmtlciYgc2hhcmVkV29ya2VyKQotICAgIDogbV9zaGFyZWRXb3JrZXIoc2hhcmVk
V29ya2VyKQotICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KHNoYXJlZFdvcmtlci5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgLCBtX2lkZW50aWZpZXJGb3JJbnNwZWN0b3Ioc2hh
cmVkV29ya2VyLmlkZW50aWZpZXJGb3JJbnNwZWN0b3IoKSkKLXsKLX0KLQotdm9pZCBTaGFyZWRX
b3JrZXJQcm94eTo6c3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGlu
ZSwgY29uc3QgU2NyaXB0QnVmZmVyJiBzY3JpcHRCdWZmZXIsIGNvbnN0IENvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgY29u
c3QgQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSYgY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwg
TW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSwg
V29ya2VyVHlwZSB3b3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RDcmVkZW50aWFscyBjcmVkZW50aWFs
cywgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKQotewotICAgIGlmIChtX2Fza2VkVG9U
ZXJtaW5hdGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gcGFyYW1ldGVycyA9IFdvcmtl
clBhcmFtZXRlcnMgewotICAgICAgICBzY3JpcHRVUkwsCi0gICAgICAgIG5hbWUsCi0gICAgICAg
IG1faWRlbnRpZmllckZvckluc3BlY3RvciwKLSAgICAgICAgdXNlckFnZW50LAotICAgICAgICBp
c09ubGluZSwKLSAgICAgICAgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLAot
ICAgICAgICBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksCi0gICAg
ICAgIGNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ksCi0gICAgICAgIHRpbWVPcmlnaW4sCi0gICAg
ICAgIHJlZmVycmVyUG9saWN5LAotICAgICAgICB3b3JrZXJUeXBlLAotICAgICAgICBjcmVkZW50
aWFscywKLSAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZXR0aW5nc1ZhbHVlcygp
Ci0gICAgfTsKLQotICAgIGlmICghbV93b3JrZXJUaHJlYWQpIHsKLSAgICAgICAgbV93b3JrZXJU
aHJlYWQgPSBTaGFyZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBzY3JpcHRCdWZm
ZXIsICp0aGlzLCAqdGhpcywgKnRoaXMsIFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnRvcE9yaWdpbigpLCBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPmlkYkNvbm5lY3Rpb25Qcm94eSgpLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNv
Y2tldFByb3ZpZGVyKCksIHJ1bnRpbWVGbGFncyk7Ci0gICAgICAgIG1fd29ya2VyVGhyZWFkLT5z
dGFydCgpOwotICAgIH0KLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6dGVybWluYXRlV29y
a2VyR2xvYmFsU2NvcGUoKQotewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCi0gICAgICAg
IHJldHVybjsKLQotICAgIG1fYXNrZWRUb1Rlcm1pbmF0ZSA9IHRydWU7Ci0gICAgaWYgKG1fd29y
a2VyVGhyZWFkKQotICAgICAgICBtX3dvcmtlclRocmVhZC0+c3RvcChudWxscHRyKTsKLX0KLQot
dm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1l
c3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSkKLXsKLSAgICAvLyBGSVhNRTogU2hhcmVk
V29ya2VyIGRvZXNuJ3QgaGF2ZSBwb3N0TWVzc2FnZSwgc28gdGhpcyBtaWdodCBub3QgYmUgbmVj
ZXNzYXJ5LgotICAgIHBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShbbWVzc2FnZSA9IFdURk1v
dmUobWVzc2FnZSldKGF1dG8mIHNjcmlwdENvbnRleHQpIG11dGFibGUgewotICAgICAgICBhdXRv
JiBjb250ZXh0ID0gZG93bmNhc3Q8U2hhcmVkV29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdENvbnRl
eHQpOwotICAgICAgICBhdXRvIHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoc2Ny
aXB0Q29udGV4dCwgV1RGTW92ZShtZXNzYWdlLnRyYW5zZmVycmVkUG9ydHMpKTsKLSAgICAgICAg
Y29udGV4dC5kaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUocG9ydHMp
LCBtZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSkpOwotICAgIH0pOwotfQotCi12b2lk
IFNoYXJlZFdvcmtlclByb3h5Ojpwb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUoRnVuY3Rpb248
dm9pZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+JiYgdGFzaykKLXsKLSAgICBpZiAobV9hc2tl
ZFRvVGVybWluYXRlKQotICAgICAgICByZXR1cm47Ci0gICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxv
b3AoKS5wb3N0VGFzayhXVEZNb3ZlKHRhc2spKTsKLX0KLQotYm9vbCBTaGFyZWRXb3JrZXJQcm94
eTo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9oYXNQZW5kaW5n
QWN0aXZpdHkgJiYgIW1fYXNrZWRUb1Rlcm1pbmF0ZTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQ
cm94eTo6d29ya2VyT2JqZWN0RGVzdHJveWVkKCkKLXsKLSAgICBtX3NoYXJlZFdvcmtlciA9IG51
bGxwdHI7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpc10gKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0gICAgICAgIG1fbWF5QmVEZXN0cm95ZWQgPSB0cnVl
OwotICAgICAgICBpZiAobV93b3JrZXJUaHJlYWQpCi0gICAgICAgICAgICB0ZXJtaW5hdGVXb3Jr
ZXJHbG9iYWxTY29wZSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB3b3JrZXJHbG9iYWxT
Y29wZURlc3Ryb3llZEludGVybmFsKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2Vy
UHJveHk6Om5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25saW5lKQotewotICAgIGlm
IChtX2Fza2VkVG9UZXJtaW5hdGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghbV93b3Jr
ZXJUaHJlYWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29w
KCkucG9zdFRhc2soW2lzT25saW5lXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
ewotICAgICAgICBhdXRvJiBnbG9iYWxTY29wZSA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3Bl
Pihjb250ZXh0KTsKLSAgICAgICAgZ2xvYmFsU2NvcGUuc2V0SXNPbmxpbmUoaXNPbmxpbmUpOwot
ICAgICAgICBnbG9iYWxTY29wZS5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoaXNPbmxpbmUg
PyBldmVudE5hbWVzKCkub25saW5lRXZlbnQgOiBldmVudE5hbWVzKCkub2ZmbGluZUV2ZW50LCBF
dmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKLSAgICB9KTsK
LX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6c3VzcGVuZEZvckJhY2tGb3J3YXJkQ2FjaGUo
KQotewotCi19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnJlc3VtZUZvckJhY2tGb3J3YXJk
Q2FjaGUoKQotewotCi19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnBvc3RFeGNlcHRpb25U
b1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQotewotICAgIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXMsIGVycm9yTWVzc2FnZSA9IGVycm9y
TWVzc2FnZS5pc29sYXRlZENvcHkoKSwgc291cmNlVVJMID0gc291cmNlVVJMLmlzb2xhdGVkQ29w
eSgpLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXJdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikg
ewotICAgICAgICBpZiAoIW1fc2hhcmVkV29ya2VyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIC8vIFdlIGRvbid0IGJvdGhlciBjaGVja2luZyB0aGUgYXNrZWRUb1Rlcm1pbmF0ZSgp
IGZsYWcgaGVyZSwgYmVjYXVzZSBleGNlcHRpb25zIHNob3VsZCAqYWx3YXlzKiBiZSByZXBvcnRl
ZCBldmVuIGlmIHRoZSB0aHJlYWQgaXMgdGVybWluYXRlZC4KLSAgICAgICAgLy8gVGhpcyBpcyBp
bnRlbnRpb25hbGx5IGRpZmZlcmVudCB0aGFuIHRoZSBiZWhhdmlvciBpbiBNZXNzYWdlV29ya2Vy
VGFzaywgYmVjYXVzZSB0ZXJtaW5hdGVkIHdvcmtlcnMgbm8gbG9uZ2VyIGRlbGl2ZXIgbWVzc2Fn
ZXMgKHNlY3Rpb24gNC42IG9mIHRoZSBXZWJXb3JrZXIgc3BlYyksIGJ1dCB0aGV5IGRvIHJlcG9y
dCBleGNlcHRpb25zLgotICAgICAgICBBY3RpdmVET01PYmplY3Q6OnF1ZXVlVGFza1RvRGlzcGF0
Y2hFdmVudCgqbV9zaGFyZWRXb3JrZXIsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgRXJy
b3JFdmVudDo6Y3JlYXRlKGVycm9yTWVzc2FnZSwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIHsgfSkpOwotICAgIH0pOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5Ojp3
b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgpCi17Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5wb3N0VGFzayhbdGhpc10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0gICAgICAg
IHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwoKTsKLSAgICB9KTsKLX0KLQotdm9p
ZCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyYmKQotewotCi19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6OmNvbmZp
cm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sKQotewotfQotCi12b2lkIFNoYXJlZFdvcmtl
clByb3h5OjpyZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpCi17
Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpcywgaGFzUGVuZGlu
Z0FjdGl2aXR5XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKLSAgICAgICAgbV9oYXNQZW5k
aW5nQWN0aXZpdHkgPSBoYXNQZW5kaW5nQWN0aXZpdHk7Ci0gICAgfSk7Ci19Ci0KLVJlZlB0cjxD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBTaGFyZWRXb3JrZXJQcm94eTo6Y3JlYXRlQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbigpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRv
JiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
KTsKLSAgICByZXR1cm4gZG9jdW1lbnQucGFnZSgpLT5jYWNoZVN0b3JhZ2VQcm92aWRlcigpLmNy
ZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKTsKLX0KLQotUmVmUHRyPFJUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlckNvbm5lY3Rpb24+IFNoYXJlZFdvcmtlclByb3h5OjpjcmVhdGVSVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIGlmICghZG9jdW1lbnQucGFnZSgpKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gZG9jdW1lbnQucGFnZSgpLT5saWJXZWJSVENQcm92
aWRlcigpLmNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24oKTsKLX0K
LQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdFRhc2tUb0xvYWRlcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrJiYgdGFzaykKLXsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PnBvc3RUYXNrKFdURk1vdmUodGFzaykpOwotfQotCi1ib29sIFNoYXJlZFdvcmtlclByb3h5Ojpw
b3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2smJiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCi17Ci0gICAgaWYgKG1f
YXNrZWRUb1Rlcm1pbmF0ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgbV93b3JrZXJU
aHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoV1RGTW92ZSh0YXNrKSwgbW9kZSk7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnBvc3RNZXNzYWdl
VG9EZWJ1Z2dlcihjb25zdCBTdHJpbmcmKQotewotCi19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJv
eHk6OnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNwZWN0b3IoYm9vbCkKLXsKLQot
fQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5Ojp3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZElu
dGVybmFsKCkKLXsKLSAgICAvLyBUaGlzIGlzIGFsd2F5cyB0aGUgbGFzdCB0YXNrIHRvIGJlIHBl
cmZvcm1lZCwgc28gdGhlIHByb3h5IGlzIG5vdCBuZWVkZWQgZm9yIGNvbW11bmljYXRpb24KLSAg
ICAvLyBpbiBlaXRoZXIgc2lkZSBhbnkgbW9yZS4gSG93ZXZlciwgdGhlIFdvcmtlciBvYmplY3Qg
bWF5IHN0aWxsIGV4aXN0LCBhbmQgaXQgYXNzdW1lcyB0aGF0IHRoZSBwcm94eSBleGlzdHMsIHRv
by4KLSAgICBtX2Fza2VkVG9UZXJtaW5hdGUgPSB0cnVlOwotICAgIG1fd29ya2VyVGhyZWFkID0g
bnVsbHB0cjsKLQotICAgIC8vIFRoaXMgYmFsYW5jZXMgdGhlIG9yaWdpbmFsIHJlZiBpbiBjb25z
dHJ1Y3Rpb24uCi0gICAgaWYgKG1fbWF5QmVEZXN0cm95ZWQpCi0gICAgICAgIGRlcmVmKCk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IDMxMWVi
ZDYwNzhiYy4uODkxZTgwZmQ3MTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTI5LDIzICsy
OSwyNSBAQAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKLSNpbmNsdWRlICJTaGFy
ZWRXb3JrZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV29ya2VyUnVuTG9vcC5oIgogI2luY2x1ZGUg
IldvcmtlclNjcmlwdExvYWRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZFdv
cmtlclNjcmlwdExvYWRlcjo6U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyKGNvbnN0IFVSTCYgdXJs
LCBTaGFyZWRXb3JrZXImIHdvcmtlciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBvcnQsIFdv
cmtlck9wdGlvbnMmJiBvcHRpb25zKQotICAgIDogbV9pZGVudGlmaWVyKFNoYXJlZFdvcmtlclNj
cmlwdExvYWRlcklkZW50aWZpZXI6OmdlbmVyYXRlKCkpCi0gICAgLCBtX29wdGlvbnMoV1RGTW92
ZShvcHRpb25zKSkKK1NoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hhcmVkV29ya2VyU2NyaXB0
TG9hZGVyKFVSTCYmIHVybCwgU2hhcmVkV29ya2VyJiB3b3JrZXIsIFdvcmtlck9wdGlvbnMmJiBv
cHRpb25zKQorICAgIDogbV9vcHRpb25zKFdURk1vdmUob3B0aW9ucykpCiAgICAgLCBtX3dvcmtl
cih3b3JrZXIpCi0gICAgLCBtX3BvcnQoV1RGTW92ZShwb3J0KSkKICAgICAsIG1fbG9hZGVyKFdv
cmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlKCkpCi0gICAgLCBtX3BlbmRpbmdBY3Rpdml0eSh3b3Jr
ZXIubWFrZVBlbmRpbmdBY3Rpdml0eSh3b3JrZXIpKQotICAgICwgbV91cmwodXJsKQorICAgICwg
bV91cmwoV1RGTW92ZSh1cmwpKQogewotICAgIG1fd29ya2VyLT5zZXRJc0xvYWRpbmcodHJ1ZSk7
Ci0gICAgbV9sb2FkZXItPmxvYWRBc3luY2hyb25vdXNseSgqd29ya2VyLnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgUmVzb3VyY2VSZXF1ZXN0KHVybCksIHdvcmtlci53b3JrZXJGZXRjaE9wdGlv
bnMob3B0aW9ucywgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2hhcmVkd29ya2VyKSwgQ29u
dGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQ6OkVuZm9yY2VXb3JrZXJTcmNEaXJlY3RpdmUs
IFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsLCAqdGhpcywgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1v
ZGUoKSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU2NyaXB0QnVmZmVyKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBBU1NFUlQoIW1fY29tcGxldGlvbkhhbmRsZXIpOworICAgIG1fY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIG1fbG9hZGVyLT5sb2FkQXN5bmNo
cm9ub3VzbHkoKm1fd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFJlc291cmNlUmVx
dWVzdChtX3VybCksIG1fd29ya2VyLT53b3JrZXJGZXRjaE9wdGlvbnMobV9vcHRpb25zLCBGZXRj
aE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpTaGFyZWR3b3JrZXIpLCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lFbmZvcmNlbWVudDo6RW5mb3JjZVdvcmtlclNyY0RpcmVjdGl2ZSwgU2VydmljZVdvcmtlcnNN
b2RlOjpBbGwsICp0aGlzLCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKIH0KIAogdm9p
ZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCkBAIC01
NSwxNiArNTcsMTIgQEAgdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnQKIAogdm9pZCBTaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKCkKIHsKLSAgICBtX3dvcmtlci0+c2V0SXNM
b2FkaW5nKGZhbHNlKTsKKyAgICBpZiAobV9sb2FkZXItPmZhaWxlZCgpKQorICAgICAgICByZXR1
cm4gbV9jb21wbGV0aW9uSGFuZGxlcih7IH0pOwogCi0gICAgYXV0byogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCA9IG1fd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKG1f
bG9hZGVyLT5mYWlsZWQoKSB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgewotICAgICAgICBt
X3dvcmtlci0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2
ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7Ci0g
ICAgICAgIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNpbmdsZXRvbigpLnNjcmlwdExvYWRGYWlsZWQo
KnRoaXMpOyAvLyBkZWxldGVzIHRoaXMuCi0gICAgfSBlbHNlIHsKKyAgICBpZiAoYXV0byogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCA9IG1fd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
CiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQoKnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIG1fbG9hZGVyLT5pZGVudGlmaWVyKCksIG1fbG9hZGVyLT5zY3Jp
cHQoKS50b1N0cmluZygpKTsKLSAgICAgICAgU2hhcmVkV29ya2VyTWFuYWdlcjo6c2luZ2xldG9u
KCkuc2NyaXB0TG9hZGVkU3VjY2Vzc2Z1bGx5KCp0aGlzLCBtX2xvYWRlci0+c2NyaXB0KCksICpt
X3dvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX3dvcmtlci5nZXQoKSwgc3RkOjpl
eGNoYW5nZShtX3BvcnQsIHsgfSkpOyAvLyBkZWxldGVzIHRoaXMuCi0gICAgfQorICAgIG1fY29t
cGxldGlvbkhhbmRsZXIobV9sb2FkZXItPnNjcmlwdCgpKTsgLy8gZGVsZXRlcyB0aGlzLgogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oCmluZGV4IGJmMWQ0YWVmM2Ew
OS4uMDU0NTlhNTZlOGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaApAQCAtMjUsNyArMjUsNiBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VQb3J0SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVySWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKQEAgLTM2LDM1ICszNSwzMCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNjcmlwdEJ1ZmZlcjsKIGNsYXNzIFNoYXJl
ZFdvcmtlcjsKIGNsYXNzIFdvcmtlclNjcmlwdExvYWRlcjsKIAotY2xhc3MgU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyOwotdXNpbmcgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmllciA9
IE9iamVjdElkZW50aWZpZXI8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPjsKLQotdXNpbmcgVHJh
bnNmZXJyZWRNZXNzYWdlUG9ydCA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50
aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllcj47Ci0KIGNsYXNzIFNoYXJlZFdv
cmtlclNjcmlwdExvYWRlciA6IHByaXZhdGUgV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50IHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXIoY29uc3QgVVJMJiwgU2hhcmVkV29ya2VyJiwgVHJhbnNmZXJyZWRNZXNzYWdlUG9y
dCYmLCBXb3JrZXJPcHRpb25zJiYpOworICAgIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcihVUkwm
JiwgU2hhcmVkV29ya2VyJiwgV29ya2VyT3B0aW9ucyYmKTsKKworICAgIHZvaWQgbG9hZChDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFNjcmlwdEJ1ZmZlcik+JiYpOwogCi0gICAgU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVu
dGlmaWVyOyB9CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQog
ICAgIFNoYXJlZFdvcmtlciYgd29ya2VyKCkgeyByZXR1cm4gbV93b3JrZXIuZ2V0KCk7IH0KLSAg
ICBjb25zdCBXb3JrZXJPcHRpb25zJiBvcHRpb25zKCkgeyByZXR1cm4gbV9vcHRpb25zOyB9Cisg
ICAgY29uc3QgV29ya2VyT3B0aW9ucyYgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9u
czsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQg
bm90aWZ5RmluaXNoZWQoKSBmaW5hbDsKIAotICAgIGNvbnN0IFNoYXJlZFdvcmtlclNjcmlwdExv
YWRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIGNvbnN0IFdvcmtlck9wdGlvbnMgbV9v
cHRpb25zOwogICAgIGNvbnN0IFJlZjxTaGFyZWRXb3JrZXI+IG1fd29ya2VyOwotICAgIFRyYW5z
ZmVycmVkTWVzc2FnZVBvcnQgbV9wb3J0OwogICAgIGNvbnN0IFJlZjxXb3JrZXJTY3JpcHRMb2Fk
ZXI+IG1fbG9hZGVyOwotICAgIGNvbnN0IFJlZjxBY3RpdmVET01PYmplY3Q6OlBlbmRpbmdBY3Rp
dml0eTxTaGFyZWRXb3JrZXI+PiBtX3BlbmRpbmdBY3Rpdml0eTsKICAgICBjb25zdCBVUkwgbV91
cmw7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTY3JpcHRCdWZmZXIpPiBtX2NvbXBsZXRp
b25IYW5kbGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclRocmVhZC5jcHAKaW5kZXggOWVk
NTU4OGZiZDc5Li5lZmUwNWUyN2MxNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyVGhyZWFkLmNwcApAQCAtMzEsMTQgKzMxLDE3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkV29ya2VyVGhyZWFkOjpTaGFyZWRXb3JrZXJU
aHJlYWQoY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgU2NyaXB0QnVm
ZmVyJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFdvcmtlckRl
YnVnZ2VyUHJveHkmIGRlYnVnZ2VyUHJveHksIFdvcmtlck9iamVjdFByb3h5JiBvYmplY3RQcm94
eSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4m
IHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94
eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFncyBydW50
aW1lRmxhZ3MpCitTaGFyZWRXb3JrZXJUaHJlYWQ6OlNoYXJlZFdvcmtlclRocmVhZChTaGFyZWRX
b3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkm
IGxvYWRlclByb3h5LCBXb3JrZXJEZWJ1Z2dlclByb3h5JiBkZWJ1Z2dlclByb3h5LCBXb3JrZXJP
YmplY3RQcm94eSYgb2JqZWN0UHJveHksIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUs
IGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlv
blByb3h5KiBjb25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlciwg
SlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKQogICAgIDogV29ya2VyVGhyZWFkKHBhcmFt
ZXRlcnMsIHNvdXJjZUNvZGUsIGxvYWRlclByb3h5LCBkZWJ1Z2dlclByb3h5LCBvYmplY3RQcm94
eSwgc3RhcnRNb2RlLCB0b3BPcmlnaW4sIGNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIs
IHJ1bnRpbWVGbGFncykKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV9u
YW1lKHBhcmFtZXRlcnMubmFtZS5pc29sYXRlZENvcHkoKSkKIHsKKyAgICBSRUxFQVNFX0xPRyhT
aGFyZWRXb3JrZXIsICIlcCAtIFNoYXJlZFdvcmtlclRocmVhZDo6U2hhcmVkV29ya2VyVGhyZWFk
OiIsIHRoaXMpOwogfQogCiBSZWY8V29ya2VyR2xvYmFsU2NvcGU+IFNoYXJlZFdvcmtlclRocmVh
ZDo6Y3JlYXRlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1l
dGVycywgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYm
IHRvcE9yaWdpbikKIHsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFNoYXJl
ZFdvcmtlclRocmVhZDo6Y3JlYXRlV29ya2VyR2xvYmFsU2NvcGU6IiwgdGhpcyk7CiAgICAgcmV0
dXJuIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUoc3RkOjpleGNoYW5nZShtX25hbWUs
IHsgfSksIHBhcmFtZXRlcnMsIFdURk1vdmUob3JpZ2luKSwgKnRoaXMsIFdURk1vdmUodG9wT3Jp
Z2luKSwgaWRiQ29ubmVjdGlvblByb3h5KCksIHNvY2tldFByb3ZpZGVyKCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJUaHJlYWQu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclRocmVhZC5oCmlu
ZGV4IDJmMDU2ZjlkNTliYi4uOWVhMjQ4NDdkMzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJUaHJlYWQuaApAQCAtMjUsMjEgKzI1LDI3IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiU2hhcmVkV29ya2VySWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFdvcmtlck9iamVjdFByb3h5OwogCisvLyBGSVhNRTogTW92ZSB0byB3b3JrZXJzL3NoYXJlZC9j
b250ZXh0LgogY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkIDogcHVibGljIFdvcmtlclRocmVhZCB7
CiBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxTaGFy
ZWRXb3JrZXJUaHJlYWQ+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRXb3JrZXJUaHJlYWQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7IH0K
KworICAgIFNoYXJlZFdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1faWRlbnRpZmllcjsgfQorCiBwcml2YXRlOgotICAgIFNoYXJlZFdvcmtlclRocmVhZChjb25z
dCBXb3JrZXJQYXJhbWV0ZXJzJiwgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VDb2RlLCBXb3Jr
ZXJMb2FkZXJQcm94eSYsIFdvcmtlckRlYnVnZ2VyUHJveHkmLCBXb3JrZXJPYmplY3RQcm94eSYs
IFdvcmtlclRocmVhZFN0YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwg
SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciosIEpTQzo6UnVu
dGltZUZsYWdzKTsKKyAgICBTaGFyZWRXb3JrZXJUaHJlYWQoU2hhcmVkV29ya2VySWRlbnRpZmll
ciwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc291cmNlQ29k
ZSwgV29ya2VyTG9hZGVyUHJveHkmLCBXb3JrZXJEZWJ1Z2dlclByb3h5JiwgV29ya2VyT2JqZWN0
UHJveHkmLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BP
cmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqLCBK
U0M6OlJ1bnRpbWVGbGFncyk7CiAKICAgICBSZWY8V29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZVdv
cmtlckdsb2JhbFNjb3BlKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBSZWY8U2VjdXJpdHlPcmln
aW4+JiYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4pIGZpbmFsOwogICAgIEFTQ0lJ
TGl0ZXJhbCB0aHJlYWROYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIldlYkNvcmU6IFNoYXJl
ZFdvcmtlciJfczsgfQogCisgICAgU2hhcmVkV29ya2VySWRlbnRpZmllciBtX2lkZW50aWZpZXI7
CiAgICAgU3RyaW5nIG1fbmFtZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wN2E5MGQ5
ODA1MTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9j
b250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDExNCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlci5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNoYXJl
ZFdvcmtlclRocmVhZFByb3h5LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXImIFNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcj4gc2hhcmVkTWFuYWdlcjsKKyAgICBy
ZXR1cm4gc2hhcmVkTWFuYWdlcjsKK30KKworU2hhcmVkV29ya2VyVGhyZWFkUHJveHkqIFNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmll
ciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyKSBjb25zdAoreworICAgIHJldHVybiBtX3dvcmtlck1h
cC5nZXQoc2hhcmVkV29ya2VySWRlbnRpZmllcik7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXI6OnN0b3BTaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFy
ZWRXb3JrZXJJZGVudGlmaWVyKQoreworICAgIGF1dG8gd29ya2VyID0gbV93b3JrZXJNYXAudGFr
ZShzaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIs
ICJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c3RvcFNoYXJlZFdvcmtlcjogc2hhcmVkV29y
a2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgd29ya2VyPSVwIiwgc2hhcmVkV29ya2VySWRlbnRp
Zmllci50b1VJbnQ2NCgpLCB3b3JrZXIuZ2V0KCkpOworICAgIGlmICghd29ya2VyKQorICAgICAg
ICByZXR1cm47CisKKyAgICB3b3JrZXItPnNldEFzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKTsK
KworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBkZWFsIHdpdGggdGhlIHRocmVh
ZCBiZWluZyB1bnJlc3BvbnNpdmUgaGVyZS4KKworICAgIGF1dG8mIHRocmVhZCA9IHdvcmtlci0+
dGhyZWFkKCk7CisgICAgdGhyZWFkLnN0b3AoW3dvcmtlciA9IFdURk1vdmUod29ya2VyKV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgLy8gU3BpbiB0aGUgcnVubG9vcCBiZWZvcmUgcmVsZWFzaW5nIHRo
ZSBzaGFyZWQgd29ya2VyIHRocmVhZCBwcm94eSwgYXMgdGhlcmUgd291bGQgb3RoZXJ3aXNlIGJl
CisgICAgICAgIC8vIGEgcmFjZSB0b3dhcmRzIGl0cyBkZXN0cnVjdGlvbi4KKyAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbd29ya2VyID0gV1RGTW92ZSh3b3JrZXIpXSB7IH0pOworICAgIH0pOwor
fQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzdG9wQWxsU2hhcmVkV29ya2Vy
cygpCit7CisgICAgd2hpbGUgKCFtX3dvcmtlck1hcC5pc0VtcHR5KCkpCisgICAgICAgIHN0b3BT
aGFyZWRXb3JrZXIobV93b3JrZXJNYXAuYmVnaW4oKS0+a2V5KTsKK30KKwordm9pZCBTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlcjo6c2V0Q29ubmVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVj
dGlvbj4mJiBjb25uZWN0aW9uKQoreworICAgIEFTU0VSVCghbV9jb25uZWN0aW9uIHx8IG1fY29u
bmVjdGlvbi0+aXNDbG9zZWQoKSk7CisgICAgbV9jb25uZWN0aW9uID0gV1RGTW92ZShjb25uZWN0
aW9uKTsKK30KKworYXV0byBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Y29ubmVjdGlvbigp
IGNvbnN0IC0+IENvbm5lY3Rpb24qCit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsK
K30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6cmVnaXN0ZXJTaGFyZWRXb3Jr
ZXJUaHJlYWQoUmVmPFNoYXJlZFdvcmtlclRocmVhZFByb3h5PiYmIHByb3h5KQoreworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnJlZ2lzdGVyU2hhcmVkV29ya2VyVGhyZWFkOiBzaGFy
ZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgcHJveHktPmlkZW50aWZpZXIoKS50b1VJbnQ2
NCgpKTsKKworICAgIGF1dG8gcmVzdWx0ID0gbV93b3JrZXJNYXAuYWRkKHByb3h5LT5pZGVudGlm
aWVyKCksIHByb3h5LmNvcHlSZWYoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dC5pc05ld0VudHJ5KTsKKworICAgIHByb3h5LT50aHJlYWQoKS5zdGFydChbXShjb25zdCBTdHJp
bmcmIC8qZXhjZXB0aW9uTWVzc2FnZSovKSB7IH0pOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uOjpwb3N0Q29ubmVjdEV2ZW50KFNoYXJlZFdvcmtlcklk
ZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYm
IHRyYW5zZmVycmVkUG9ydCwgU3RyaW5nJiYgc291cmNlT3JpZ2luKQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgYXV0byogcHJveHkgPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlcjo6c2luZ2xldG9uKCkuc2hhcmVkV29ya2VyKHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOwor
ICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
OjpDb25uZWN0aW9uOjpwb3N0Q29ubmVjdEV2ZW50OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUi
IFBSSXU2NCAiLCBwcm94eT0lcCIsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSwg
cHJveHkpOworICAgIGlmICghcHJveHkpCisgICAgICAgIHJldHVybjsKKworICAgIHByb3h5LT50
aHJlYWQoKS5ydW5Mb29wKCkucG9zdFRhc2soW3RyYW5zZmVycmVkUG9ydCA9IFdURk1vdmUodHJh
bnNmZXJyZWRQb3J0KSwgc291cmNlT3JpZ2luID0gV1RGTW92ZShzb3VyY2VPcmlnaW4pLmlzb2xh
dGVkQ29weSgpXSAoYXV0byYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgbXV0YWJsZSB7CisgICAg
ICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgICAgICBkb3duY2FzdDxTaGFyZWRXb3Jr
ZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkucG9zdENvbm5lY3RFdmVudChX
VEZNb3ZlKHRyYW5zZmVycmVkUG9ydCksIFdURk1vdmUoc291cmNlT3JpZ2luKSk7CisgICAgfSk7
Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb246OnRlcm1p
bmF0ZVNoYXJlZFdvcmtlcihTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50
aWZpZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBSRUxFQVNFX0xPRyhT
aGFyZWRXb3JrZXIsICJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6dGVy
bWluYXRlU2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hh
cmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlcjo6c2luZ2xldG9uKCkuc3RvcFNoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXJJZGVudGlm
aWVyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDQ3
OTM3YzkxZTZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oCkBAIC0wLDAgKzEsNzcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VySWRlbnRpZmllci5oIgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkV29y
a2VyVGhyZWFkUHJveHk7CisKK2NsYXNzIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyIHsKK3B1
YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXImIHNpbmdsZXRvbigpOworCisgICAgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkqIHNoYXJlZFdv
cmtlcihTaGFyZWRXb3JrZXJJZGVudGlmaWVyKSBjb25zdDsKKyAgICB2b2lkIHN0b3BTaGFyZWRX
b3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
dG9wQWxsU2hhcmVkV29ya2VycygpOworCisgICAgY2xhc3MgQ29ubmVjdGlvbiB7CisgICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+
Q29ubmVjdGlvbigpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlv
bihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lk
IHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSA9IDA7CisgICAgICAgIGJvb2wgaXNDbG9zZWQoKSBj
b25zdCB7IHJldHVybiBtX2lzQ2xvc2VkOyB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZv
aWQgc2V0QXNDbG9zZWQoKSB7IG1faXNDbG9zZWQgPSB0cnVlOyB9CisKKyAgICAgICAgLy8gSVBD
IG1lc3NhZ2UgaGFuZGxlcnMuCisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdENvbm5l
Y3RFdmVudChTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYs
IFN0cmluZyYmIHNvdXJjZU9yaWdpbik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdGVy
bWluYXRlU2hhcmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworCisgICAgcHJpdmF0
ZToKKyAgICAgICAgYm9vbCBtX2lzQ2xvc2VkIHsgZmFsc2UgfTsKKyAgICB9OworCisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9u
PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb25uZWN0aW9uKiBjb25uZWN0aW9uKCkgY29uc3Q7
CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZ2lzdGVyU2hhcmVkV29ya2VyVGhyZWFkKFJl
ZjxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4mJik7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNs
YXNzIE5ldmVyRGVzdHJveWVkPFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyPjsKKworICAgIFNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyKCkgPSBkZWZhdWx0OworCisgICAgc3RkOjp1bmlxdWVf
cHRyPENvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBIYXNoTWFwPFNoYXJlZFdvcmtlcklk
ZW50aWZpZXIsIFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4+IG1fd29ya2VyTWFwOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg4NzJlYTJmYjAzZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQv
U2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3BwCkBAIC0wLDAgKzEsMjAxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlclRocmVhZFByb3h5
LmgiCisKKyNpbmNsdWRlICJDYWNoZVN0b3JhZ2VQcm92aWRlci5oIgorI2luY2x1ZGUgIkVycm9y
RXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgi
CisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgorI2luY2x1ZGUg
IkxpYldlYlJUQ1Byb3ZpZGVyLmgiCisjaW5jbHVkZSAiTG9hZGVyU3RyYXRlZ3kuaCIKKyNpbmNs
dWRlICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUg
IlBhZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKKyNpbmNsdWRlICJSVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiU2hhcmVkV29y
a2VyLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCIKKyNpbmNsdWRl
ICJTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlclRocmVh
ZC5oIgorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0lkZW50aWZpZXJzRmFjdG9yeS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEZJWE1F
OiBBdm9pZCBkdXBsaWNhdGlvbiB3aXRoIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAuCitz
dGF0aWMgVVJMIHRvcE9yaWdpblVSTChjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQorewor
ICAgIHJldHVybiBVUkwgeyBVUkwgeyB9LCBvcmlnaW4udG9SYXdTdHJpbmcoKSB9OworfQorCitz
dGF0aWMgSGFzaFNldDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSo+JiBhbGxTaGFyZWRXb3JrZXJU
aHJlYWRQcm94aWVzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eSo+PiBzZXQ7CisgICAgcmV0dXJuIHNldDsKK30KKworc3RhdGlj
IFdvcmtlclBhcmFtZXRlcnMgZ2VuZXJhdGVXb3JrZXJQYXJhbWV0ZXJzKGNvbnN0IFVSTCYgc2Ny
aXB0VVJMLCBXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucywgY29uc3QgU3RyaW5nJiB1c2Vy
QWdlbnQsIERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICByZXR1cm4gV29ya2VyUGFyYW1ldGVy
cyB7CisgICAgICAgIHNjcmlwdFVSTCwKKyAgICAgICAgd29ya2VyT3B0aW9ucy5uYW1lLAorICAg
ICAgICAic2hhcmVkd29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3Jl
YXRlSWRlbnRpZmllcigpLAorICAgICAgICB1c2VyQWdlbnQsCisgICAgICAgIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5pc09uTGluZSgpLAorICAgICAgICB7IH0sIC8v
IEZJWE1FOiBjb250ZW50U2VjdXJpdHlQb2xpY3kKKyAgICAgICAgZmFsc2UsCisgICAgICAgIHsg
fSwgLy8gRklYTUU6IGNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kKKyAgICAgICAgTW9ub3Rvbmlj
VGltZTo6bm93KCksCisgICAgICAgIHsgfSwKKyAgICAgICAgd29ya2VyT3B0aW9ucy50eXBlLAor
ICAgICAgICB3b3JrZXJPcHRpb25zLmNyZWRlbnRpYWxzLAorICAgICAgICBkb2N1bWVudC5zZXR0
aW5nc1ZhbHVlcygpCisgICAgfTsKK30KKworU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OlNoYXJl
ZFdvcmtlclRocmVhZFByb3h5KFVuaXF1ZVJlZjxQYWdlPiYmIHBhZ2UsIFNoYXJlZFdvcmtlcklk
ZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgQ2xpZW50T3JpZ2luJiBjbGll
bnRPcmlnaW4sIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBTY3JpcHRCdWZmZXImJiBzY3JpcHRCdWZm
ZXIsIFdvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImIGNhY2hlU3RvcmFnZVByb3ZpZGVyKQorICAgIDogbV9w
YWdlKFdURk1vdmUocGFnZSkpCisgICAgLCBtX2RvY3VtZW50KCptX3BhZ2UtPm1haW5GcmFtZSgp
LmRvY3VtZW50KCkpCisgICAgLCBtX3dvcmtlclRocmVhZChTaGFyZWRXb3JrZXJUaHJlYWQ6OmNy
ZWF0ZShzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMoc2Ny
aXB0VVJMLCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMpLCB1c2VyQWdlbnQsIG1fZG9jdW1lbnQpLCBX
VEZNb3ZlKHNjcmlwdEJ1ZmZlciksICp0aGlzLCAqdGhpcywgKnRoaXMsIFdvcmtlclRocmVhZFN0
YXJ0TW9kZTo6Tm9ybWFsLCBjbGllbnRPcmlnaW4udG9wT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCks
IG1fZG9jdW1lbnQtPmlkYkNvbm5lY3Rpb25Qcm94eSgpLCBtX2RvY3VtZW50LT5zb2NrZXRQcm92
aWRlcigpLCBKU0M6OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpKSkKKyAgICAsIG1f
Y2FjaGVTdG9yYWdlUHJvdmlkZXIoY2FjaGVTdG9yYWdlUHJvdmlkZXIpCit7CisgICAgQVNTRVJU
KCFhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkuY29udGFpbnModGhpcykpOworICAgIGFs
bFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKS5hZGQodGhpcyk7CisKKyAgICBzdGF0aWMgYm9v
bCBhZGRlZExpc3RlbmVyOworICAgIGlmICghYWRkZWRMaXN0ZW5lcikgeworICAgICAgICBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+YWRkT25saW5lU3RhdGVDaGFuZ2VM
aXN0ZW5lcigmbmV0d29ya1N0YXRlQ2hhbmdlZCk7CisgICAgICAgIGFkZGVkTGlzdGVuZXIgPSB0
cnVlOworICAgIH0KK30KKworU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6On5TaGFyZWRXb3JrZXJU
aHJlYWRQcm94eSgpCit7CisgICAgQVNTRVJUKGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMo
KS5jb250YWlucyh0aGlzKSk7CisgICAgYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGllcygpLnJl
bW92ZSh0aGlzKTsKK30KKworU2hhcmVkV29ya2VySWRlbnRpZmllciBTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eTo6aWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd29ya2VyVGhyZWFk
LT5pZGVudGlmaWVyKCk7Cit9CisKK1JlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBTaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpCit7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAoIW1fY2FjaGVTdG9yYWdlQ29ubmVj
dGlvbikKKyAgICAgICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uID0gbV9jYWNoZVN0b3JhZ2VQ
cm92aWRlci5jcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCk7CisgICAgcmV0dXJuIG1fY2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjsKK30KKworUmVmUHRyPFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFu
ZGxlckNvbm5lY3Rpb24+IFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpjcmVhdGVSVENEYXRhQ2hh
bm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgIHJldHVybiBtX3BhZ2UtPmxpYldlYlJUQ1Byb3ZpZGVyKCkuY3JlYXRlUlRDRGF0
YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpOworfQorCit2b2lkIFNoYXJlZFdvcmtl
clRocmVhZFByb3h5Ojpwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2smJiB0YXNrKQoreworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Rhc2sgPSBXVEZNb3ZlKHRhc2sp
LCB0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgbXV0YWJsZSB7CisgICAg
ICAgIHRhc2sucGVyZm9ybVRhc2sobV9kb2N1bWVudC5nZXQoKSk7CisgICAgfSk7Cit9CisKK2Jv
b2wgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2ssIGNvbnN0
IFN0cmluZyYgbW9kZSkKK3sKKyAgICBpZiAobV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBv
c3RUYXNrRm9yTW9kZShXVEZNb3ZlKHRhc2spLCBtb2RlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kwordm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdE1lc3NhZ2VUb0RlYnVnZ2VyKGNv
bnN0IFN0cmluZyYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4KK30KKwordm9pZCBTaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3Bl
Y3Rvcihib29sKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCit9CisKK3ZvaWQgU2hhcmVk
V29ya2VyVGhyZWFkUHJveHk6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoYm9vbCBpc09uTGluZSkKK3sK
KyAgICBmb3IgKGF1dG8qIHByb3h5IDogYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGllcygpKQor
ICAgICAgICBwcm94eS0+bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGlzT25MaW5lKTsKK30KKwor
dm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJv
b2wgaXNPbmxpbmUpCit7CisgICAgaWYgKG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZShbaXNPbmxpbmVdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Cisg
ICAgICAgIGF1dG8mIGdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNv
bnRleHQpOworICAgICAgICBnbG9iYWxTY29wZS5zZXRJc09ubGluZShpc09ubGluZSk7CisgICAg
ICAgIGdsb2JhbFNjb3BlLmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5p
cHVsYXRpb24sIFtnbG9iYWxTY29wZSA9IFJlZiB7IGdsb2JhbFNjb3BlIH0sIGlzT25saW5lXSB7
CisgICAgICAgICAgICBnbG9iYWxTY29wZS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGlz
T25saW5lID8gZXZlbnROYW1lcygpLm9ubGluZUV2ZW50IDogZXZlbnROYW1lcygpLm9mZmxpbmVF
dmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7Cisg
ICAgICAgIH0pOworICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOworfQorCisv
LyBGSVhNRTogVHJ5IGFuZCBzaGFyZSBjb2RlIHdpdGggU2VydmljZVdvcmtlclRocmVhZFByb3h5
LmNwcC4KK3ZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnNldHVwUGFnZUZvclNoYXJlZFdv
cmtlcihQYWdlJiBwYWdlLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgQ2xpZW50T3JpZ2lu
JiBjbGllbnRPcmlnaW4pCit7CisgICAgYXV0byYgbWFpbkZyYW1lID0gcGFnZS5tYWluRnJhbWUo
KTsKKyAgICBtYWluRnJhbWUubG9hZGVyKCkuaW5pdEZvclN5bnRoZXNpemVkRG9jdW1lbnQoeyB9
KTsKKyAgICBhdXRvIGRvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZU5vblJlbmRlcmVkUGxhY2Vo
b2xkZXIobWFpbkZyYW1lLCBzY3JpcHRVUkwpOworICAgIGRvY3VtZW50LT5jcmVhdGVET01XaW5k
b3coKTsKKworICAgIGRvY3VtZW50LT5zdG9yYWdlQmxvY2tpbmdTdGF0ZURpZENoYW5nZSgpOwor
CisgICAgYXV0byBvcmlnaW4gPSBjbGllbnRPcmlnaW4udG9wT3JpZ2luLnNlY3VyaXR5T3JpZ2lu
KCk7CisgICAgb3JpZ2luLT5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3kocGFnZS5zZXR0aW5ncygp
LnN0b3JhZ2VCbG9ja2luZ1BvbGljeSgpKTsKKworICAgIGRvY3VtZW50LT5zZXRTaXRlRm9yQ29v
a2llcyh0b3BPcmlnaW5VUkwob3JpZ2luKSk7CisgICAgZG9jdW1lbnQtPnNldEZpcnN0UGFydHlG
b3JDb29raWVzKHRvcE9yaWdpblVSTChvcmlnaW4pKTsKKyAgICBkb2N1bWVudC0+c2V0RG9tYWlu
Rm9yQ2FjaGVQYXJ0aXRpb24ob3JpZ2luLT5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpKTsKKwor
ICAgIC8vIEZJWE1FOiBTaG91bGQgaGFuZGxlIHJlZmVycmVyIHBvbGljeS4KKyAgICAvKmlmIChh
dXRvIHBvbGljeSA9IHBhcnNlUmVmZXJyZXJQb2xpY3koZGF0YS5yZWZlcnJlclBvbGljeSwgUmVm
ZXJyZXJQb2xpY3lTb3VyY2U6OkhUVFBIZWFkZXIpKQorICAgICAgICBkb2N1bWVudC0+c2V0UmVm
ZXJyZXJQb2xpY3koKnBvbGljeSk7Ki8KKworICAgIG1haW5GcmFtZS5zZXREb2N1bWVudChXVEZN
b3ZlKGRvY3VtZW50KSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RF
eGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQorewor
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3NoYXJlZFdvcmtlcklkZW50aWZpZXIgPSBtX3dvcmtlclRo
cmVhZC0+aWRlbnRpZmllcigpLCBlcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2UuaXNvbGF0ZWRD
b3B5KCksIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMID0gc291cmNlVVJMLmlz
b2xhdGVkQ29weSgpXSB7CisgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAgICAg
IGNvbm5lY3Rpb24tPnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJJZGVu
dGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJM
KTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJveHkuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaApz
aW1pbGFyaXR5IGluZGV4IDU1JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJQcm94eS5oCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmgKaW5kZXggZGI3Yjg1MDlk
ZjVhLi44NTU0ZmIxOGIzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlclByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oCkBAIC0yNSw4ICsyNSw4IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiU2hhcmVkV29ya2VySWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIldvcmtlckRlYnVnZ2VyUHJveHkuaCIKLSNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29w
ZVByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyTG9hZGVyUHJveHkuaCIKICNpbmNsdWRlICJXb3Jr
ZXJPYmplY3RQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlck9wdGlvbnMuaCIKQEAgLTM0LDI5ICsz
NCwyNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENhY2hlU3RvcmFnZVByb3Zp
ZGVyOworY2xhc3MgUGFnZTsKK2NsYXNzIFNjcmlwdEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZFdvcmtl
cjsKIGNsYXNzIFNoYXJlZFdvcmtlclRocmVhZDsKIAotY2xhc3MgU2hhcmVkV29ya2VyUHJveHkg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkV29ya2VyUHJveHk+LCBwdWJsaWMg
V29ya2VyR2xvYmFsU2NvcGVQcm94eSwgcHVibGljIFdvcmtlck9iamVjdFByb3h5LCBwdWJsaWMg
V29ya2VyTG9hZGVyUHJveHksIHB1YmxpYyBXb3JrZXJEZWJ1Z2dlclByb3h5IHsKK3N0cnVjdCBD
bGllbnRPcmlnaW47CisKK2NsYXNzIFNoYXJlZFdvcmtlclRocmVhZFByb3h5IDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZFdvcmtlclRocmVhZFByb3h5PiwgcHVibGljIFdvcmtl
ckxvYWRlclByb3h5LCBwdWJsaWMgV29ya2VyRGVidWdnZXJQcm94eSwgcHVibGljIFdvcmtlck9i
amVjdFByb3h5IHsKIHB1YmxpYzoKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0
aWMgU2hhcmVkV29ya2VyUHJveHkmIGNyZWF0ZShBcmdzJiYuLi4gYXJncykgeyByZXR1cm4gKm5l
dyBTaGFyZWRXb3JrZXJQcm94eShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOyB9CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0dXBQYWdlRm9yU2hhcmVkV29ya2VyKFBhZ2Um
LCBjb25zdCBVUkwmLCBjb25zdCBDbGllbnRPcmlnaW4mKTsKIAotICAgIFNoYXJlZFdvcmtlclRo
cmVhZCogdGhyZWFkKCkgeyByZXR1cm4gbV93b3JrZXJUaHJlYWQuZ2V0KCk7IH0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmPFNoYXJlZFdvcmtlclRocmVhZFByb3h5
PiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkV29y
a2VyVGhyZWFkUHJveHkoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7IH0KKyAgICB+U2hh
cmVkV29ya2VyVGhyZWFkUHJveHkoKTsKKworICAgIFNoYXJlZFdvcmtlcklkZW50aWZpZXIgaWRl
bnRpZmllcigpIGNvbnN0OworICAgIFNoYXJlZFdvcmtlclRocmVhZCYgdGhyZWFkKCkgeyByZXR1
cm4gbV93b3JrZXJUaHJlYWQuZ2V0KCk7IH0KKworICAgIGJvb2wgaXNUZXJtaW5hdGluZ09yVGVy
bWluYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZDsgfQor
ICAgIHZvaWQgc2V0QXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCgpIHsgbV9pc1Rlcm1pbmF0aW5n
T3JUZXJtaW5hdGVkID0gdHJ1ZTsgfQogCi0gICAgdm9pZCBzdGFydFdvcmtlckdsb2JhbFNjb3Bl
KGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
dXNlckFnZW50LCBib29sIGlzT25saW5lLCBjb25zdCBTY3JpcHRCdWZmZXImIHNvdXJjZUNvZGUs
IGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGJvb2wgc2hvdWxk
QnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBDcm9zc09yaWdpbkVt
YmVkZGVyUG9saWN5JiwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBSZWZlcnJlclBvbGljeSwg
V29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMsIEpTQzo6UnVudGltZUZsYWdzKSBm
aW5hbDsKLSAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCkgZmluYWw7Ci0gICAg
dm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9y
dHMmJikgZmluYWw7Ci0gICAgdm9pZCBwb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUoRnVuY3Rp
b248dm9pZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+JiYpIGZpbmFsOwotICAgIGJvb2wgaGFz
UGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCB3b3JrZXJPYmplY3REZXN0
cm95ZWQoKSBmaW5hbDsKLSAgICB2b2lkIG5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlz
T25saW5lKSBmaW5hbDsKLSAgICB2b2lkIHN1c3BlbmRGb3JCYWNrRm9yd2FyZENhY2hlKCkgZmlu
YWw7Ci0gICAgdm9pZCByZXN1bWVGb3JCYWNrRm9yd2FyZENhY2hlKCkgZmluYWw7Ci0gICAgdm9p
ZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2Us
IGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCkgZmluYWw7Ci0gICAgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgpIGZpbmFsOwot
ICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cyYmKSBmaW5hbDsKLSAgICB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29s
IGhhc1BlbmRpbmdBY3Rpdml0eSkgZmluYWw7Ci0gICAgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZp
dHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpIGZpbmFsOwogICAgIFJlZlB0cjxDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uPiBjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkgZmluYWw7CiAgICAg
UmVmUHRyPFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24+IGNyZWF0ZVJUQ0Rh
dGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24oKSBmaW5hbDsKICAgICB2b2lkIHBvc3RU
YXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmKSBmaW5hbDsKQEAgLTY0
LDE4ICs2MiwyNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvRGVidWdnZXIoY29u
c3QgU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEJ5
V2ViSW5zcGVjdG9yKGJvb2wpIGZpbmFsOwogCisgICAgLy8gV29ya2VyT2JqZWN0UHJveHkKKyAg
ICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMKSBmaW5hbDsKKyAgICB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkKCkgZmlu
YWwgeyB9CisgICAgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzJiYpIGZpbmFsIHsgfQorICAgIHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29ya2Vy
T2JqZWN0KGJvb2wpIGZpbmFsIHsgfQorICAgIHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJv
b2wpIGZpbmFsIHsgfQorCiBwcml2YXRlOgotICAgIFNoYXJlZFdvcmtlclByb3h5KFNoYXJlZFdv
cmtlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZFdvcmtlclRocmVhZFByb3h5KFVuaXF1
ZVJlZjxQYWdlPiYmLCBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4m
LCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgU2NyaXB0QnVmZmVyJiYsIFdvcmtlck9wdGlvbnMmJiwg
Y29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIENhY2hlU3RvcmFnZVByb3ZpZGVyJik7CiAKLSAgICB2
b2lkIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwoKTsKKyAgICBzdGF0aWMgdm9p
ZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKGJvb2wgaXNPbkxpbmUpOworICAgIHZvaWQgbm90aWZ5TmV0
d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpOwogCi0gICAgV2Vha1B0cjxTaGFyZWRXb3Jr
ZXI+IG1fc2hhcmVkV29ya2VyOwotICAgIFJlZlB0cjxTaGFyZWRXb3JrZXJUaHJlYWQ+IG1fd29y
a2VyVGhyZWFkOwotICAgIGNvbnN0IFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0gICAgY29uc3QgU3RyaW5nIG1faWRlbnRpZmllckZvcklu
c3BlY3RvcjsKLSAgICBib29sIG1fYXNrZWRUb1Rlcm1pbmF0ZSB7IGZhbHNlIH07Ci0gICAgYm9v
bCBtX2hhc1BlbmRpbmdBY3Rpdml0eSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX21heUJlRGVzdHJv
eWVkIHsgZmFsc2UgfTsKKyAgICBVbmlxdWVSZWY8UGFnZT4gbV9wYWdlOworICAgIFJlZjxEb2N1
bWVudD4gbV9kb2N1bWVudDsKKyAgICBSZWY8U2hhcmVkV29ya2VyVGhyZWFkPiBtX3dvcmtlclRo
cmVhZDsKKyAgICBDYWNoZVN0b3JhZ2VQcm92aWRlciYgbV9jYWNoZVN0b3JhZ2VQcm92aWRlcjsK
KyAgICBSZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gbV9jYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOworICAgIGJvb2wgbV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkIHsgZmFsc2UgfTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4IDc1NmRhODhi
NDVmNy4uMTQ5OGQ3YTFhOWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAgLTIwMiw2ICsyMDIsOCBA
QCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24KICAgICBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbgogCisgICAgTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlckNvbm5lY3Rpb24KKwogICAgIE5ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQKIAogICAgIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24KQEAgLTMwNSw2ICszMDcsOCBAQCBz
ZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAKICAgICBXZWJQcm9jZXNzL1NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyCiAKKyAgICBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uCisgICAgV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24KICAgICBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uCiAgICAgV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA0YzY2MjIwY2YxMjIuLjcyMjljMWI5
ODcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dApAQCAtOTEsNiArOTEsOCBAQCAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2subWVzc2FnZXMuaQogJChQUk9KRUNUX0RJ
UikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KKyQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9OZXR3
b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlTWFuYWdlclNldC5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29y
a1Byb2Nlc3Muc2IuaW4KQEAgLTIxNyw2ICsyMTksOCBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlBy
b2Nlc3MvU3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIu
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVu
dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJ
UikvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dl
YlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmlu
CiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBl
M2I1NTg0MGFlMWUuLmE4NjMyODE0N2I1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC02MDcsNiArNjA3LDE4IEBAICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVz
c2FnZXNSZXBsaWVzCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbk1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbk1lc3NhZ2Vz
UmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb25NZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uTWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQvV2ViU29ja2V0Q2hhbm5lbE1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU29ja2V0Q2hhbm5lbE1lc3NhZ2Vz
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU29ja2V0
Q2hhbm5lbE1lc3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXgg
N2FkNDllMzczNWY0Li5lYTY5OWZkYjJmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UK
QEAgLTEzMyw2ICsxMzMsOCBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2sgXAogCU5ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzayBcCiAJTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gXAorCU5ldHdv
cmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uIFwK
KyAgICAgICAgTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24gXAogCU5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJl
YW0gXAogCU5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzIFwKIAlOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIgXApAQCAtMjI1LDYgKzIyNyw4IEBAIE1FU1NBR0VfUkVDRUlW
RVJTID0gXAogCVdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFs
dGltZU1lZGlhU291cmNlTWFuYWdlciBcCisJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBcCisJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50
Q29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9XZWJQcm9jZXNzIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAKaW5kZXggZjViN2RiMTYwM2NhLi4xODJjMjk5NWIwZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCkBAIC02Niw2ICs2NiwxMSBAQAogI2luY2x1ZGUgIldlYlNXU2VydmVy
Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIKKyNpbmNsdWRlICJXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3Mu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBDb29raWVBY2NlcHRQb2xpY3kuaD4KQEAgLTEzMiw2
ICsxMzcsNyBAQCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmIG5ldAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKICAgICBlc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKTsKICNlbmRpZgorICAgIGVz
dGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oKTsKIH0KIAogTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6On5OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCkBAIC0x
NjYsNiArMTcyLDcgQEAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcygpCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHVu
cmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgorICAgIHVucmVnaXN0ZXJTaGFyZWRXb3Jr
ZXJDb25uZWN0aW9uKCk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
Omhhc1VwbG9hZFN0YXRlQ2hhbmdlZChib29sIGhhc1VwbG9hZCkKQEAgLTI3NSw2ICsyODIsMTcg
QEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW8KICAgICB9CiAjZW5kaWYKIAorICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGlmIChtX3No
YXJlZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAgICAgICBtX3NoYXJlZFdvcmtlckNvbm5lY3Rp
b24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNz
YWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGlmIChtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0
aW9uKQorICAgICAgICAgICAgbV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbi0+ZGlkUmVj
ZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKICAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpCiAgICAgICAgIHJldHVybiBwYXltZW50Q29vcmRpbmF0
b3IoKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKQEAgLTM5OCw5ICs0
MTYsOCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
ICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShjb25uZWN0aW9uKTsKICNlbmRpZgorICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb24gPSBudWxscHRyOwogCiAgICAgLy8gUHJvdGVjdCBvdXJzZWxmIGFzIHdlIG1pZ2h0IGJl
IG90aGVyd2lzZSBiZSBkZWxldGVkIGR1cmluZyB0aGlzIGZ1bmN0aW9uLgogICAgIFJlZjxOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gcHJvdGVjdG9yKCp0aGlzKTsKQEAgLTQ0MSw2ICs0
NTgsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgorICAgIHVucmVnaXN0ZXJTaGFyZWRX
b3JrZXJDb25uZWN0aW9uKCk7CiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKICAg
ICBtX3BheW1lbnRDb29yZGluYXRvciA9IG51bGxwdHI7CkBAIC0xMTgzLDYgKzEyMDEsNjEgQEAg
c2l6ZV90IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpmaW5kTmV0d29ya0FjdGl2aXR5
VHJhY2tlcihXZWJDb3JlOjpSZXNvdXIKICAgICAgICAgcmV0dXJuIGl0ZW0ucmVzb3VyY2VJRCA9
PSByZXNvdXJjZUlEOwogICAgIH0pOwogfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJv
eHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9t
YWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRX
b3JrZXJDb250ZXh0Q29ubmVjdGlvbjoiKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nl
c3Npb24oKTsKKyAgICBpZiAoYXV0byogc3dTZXJ2ZXIgPSBzZXNzaW9uID8gc2Vzc2lvbi0+c2hh
cmVkV29ya2VyU2VydmVyKCkgOiBudWxscHRyKQorICAgICAgICBtX3NoYXJlZFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uPigqdGhpcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksICpzd1NlcnZlcik7
CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpCit7Cisg
ICAgaWYgKG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAg
ICAgICByZXR1cm47CisKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwg
ImVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Iik7CisKKyAgICBhdXRvJiBz
ZXJ2ZXIgPSBzZXNzaW9uLT5lbnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKTsKKyAgICBhdXRvIGNv
bm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24+KG1f
bmV0d29ya1Byb2Nlc3MsIHNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBtX3dlYlByb2Nlc3NJ
ZGVudGlmaWVyKTsKKworICAgIG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbiA9ICpjb25uZWN0aW9u
OworICAgIHNlcnZlci5hZGRDb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpOworfQorCit2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbG9zZVNoYXJlZFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtl
ciwgImNsb3NlU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb246Iik7CisgICAgbV9zaGFyZWRX
b3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uKCkKK3sK
KyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgInVucmVnaXN0ZXJTaGFy
ZWRXb3JrZXJDb25uZWN0aW9uOiIpOworICAgIGlmIChtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24p
CisgICAgICAgIG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbi0+c2VydmVyKCkucmVtb3ZlQ29ubmVj
dGlvbihtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24tPndlYlByb2Nlc3NJZGVudGlmaWVyKCkpOwor
fQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpCit7CisgICAgQ09OTkVDVElP
Tl9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJzaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZDoiKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkIHsgd2ViUHJvY2Vz
c0lkZW50aWZpZXIoKSB9LCAwKTsKKworICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rp
b24gPSBudWxscHRyOworfQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uJiBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2hhcmVkV29ya2VyQ29ubmVjdGlvbigpCit7Cisg
ICAgaWYgKCFtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAgIGVzdGFibGlzaFNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oKTsKKyAgICByZXR1cm4gKm1fc2hhcmVkV29ya2VyQ29u
bmVjdGlvbjsKK30KICAgICAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCkKQEAgLTEy
MjAsMTAgKzEyOTMsMTAgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xv
c2VTV0NvbnRleHRDb25uZWN0aW9uKCkKICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBudWxs
cHRyOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6c2VydmljZVdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdl
ck5lZWRlZCgpCiB7Ci0gICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAi
c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkOiBXZWJQcm9jZXNzIG5vIGxv
bmdlciB1c2VmdWwgZm9yIHJ1bm5pbmcgc2VydmljZSB3b3JrZXJzIik7Ci0gICAgbV9uZXR3b3Jr
UHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCB7IHdl
YlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhT
ZXJ2aWNlV29ya2VyLCAic2VydmljZVdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xv
bmdlck5lZWRlZDogV2ViUHJvY2VzcyBubyBsb25nZXIgdXNlZnVsIGZvciBydW5uaW5nIHNlcnZp
Y2Ugd29ya2VycyIpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlNlcnZpY2VXb3JrZXJD
b250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkIHsgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9
LCAwKTsKIAogICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKaW5kZXggMGE2ZTY4NDAxMmYzLi5lNDdmZjkwNjNhMDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTkyLDYgKzkyLDggQEAgY2xhc3MgTmV0d29ya1NvY2tldFN0
cmVhbTsKIGNsYXNzIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s7CiBjbGFzcyBXZWJTV1NlcnZlckNv
bm5lY3Rpb247CiBjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CitjbGFzcyBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKIAogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiBzdHJ1
Y3QgRGF0YUtleTsKQEAgLTE4MSwxMCArMTgzLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNoZWNr
UHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRl
bnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5KT4mJik7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi0gICAgdm9pZCBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKTsK
KyAgICB2b2lkIHNlcnZpY2VXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJO
ZWVkZWQoKTsKICAgICBXZWJTV1NlcnZlckNvbm5lY3Rpb24mIHN3Q29ubmVjdGlvbigpOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBjcmVhdGVGZXRjaFRhc2so
TmV0d29ya1Jlc291cmNlTG9hZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7
CiAjZW5kaWYKKyAgICB2b2lkIHNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25J
c05vTG9uZ2VyTmVlZGVkKCk7CisKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
JiBzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiAKICAgICBOZXR3b3JrU2NoZW1lUmVnaXN0cnkm
IHNjaGVtZVJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9zY2hlbWVSZWdpc3RyeS5nZXQoKTsgfQogCkBA
IC0yNTMsNiArMjU4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZVNvY2tldENoYW5uZWwo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwg
V2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAgICAgdm9pZCB1cGRhdGVRdW90YUJhc2VkT25T
cGFjZVVzYWdlRm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKIAorICAg
IHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpOworICAgIHZvaWQg
dW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKKwogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigpOwogICAgIHZv
aWQgZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0yNjAsNiArMjY4LDkgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgogCisgICAgdm9p
ZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOworICAgIHZvaWQgY2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigp
OworCiAgICAgdm9pZCBjcmVhdGVSVENQcm92aWRlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIHZvaWQgY29ubmVjdFRvUlRDRGF0YUNoYW5u
ZWxSZW1vdGVTb3VyY2UoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwg
V2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGhhbmRsZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoc3RkOjpvcHRpb25hbDxib29sPik+JiYpOwpAQCAtNDA0LDYgKzQxNSw4IEBAIHBy
aXZhdGU6CiAgICAgV2Vha1B0cjxXZWJTV1NlcnZlckNvbm5lY3Rpb24+IG1fc3dDb25uZWN0aW9u
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+IG1f
c3dDb250ZXh0Q29ubmVjdGlvbjsKICNlbmRpZgorICAgIFdlYWtQdHI8V2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbj4gbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiBtX3NoYXJl
ZFdvcmtlckNvbnRleHRDb25uZWN0aW9uOwogCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgYm9v
bCBtX2lzUmVnaXN0ZXJlZFRvUlRDRGF0YUNoYW5uZWxQcm94eSB7IGZhbHNlIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAyNDI4MzUwNTBiMjQuLmI5
N2NhMzQ3OWI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CkBAIC04OCw2ICs4OCw5IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBDbG9zZVNXQ29udGV4dENvbm5lY3Rpb24oKQogI2Vu
ZGlmCiAKKyAgICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihXZWJLaXQ6
OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIGRvbWFpbikgLT4gKCkgQXN5bmMKKyAgICBDbG9zZVNoYXJlZFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uKCkKKwogICAgIENyZWF0ZVJUQ1Byb3ZpZGVyKCkgLT4gKCkgQXN5bmMKICNp
ZiBFTkFCTEUoV0VCX1JUQykKICAgICBDb25uZWN0VG9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJj
ZShzdHJ1Y3QgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgc3RydWN0
IFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBoYW5kbGVyKSAtPiAoc3RkOjpvcHRp
b25hbDxib29sPiByZXN1bHQpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDlhMzJlYTE4NjU0Yy4uZDc2MTYyODUwY2FkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApA
QCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2ViU1dPcmlnaW5TdG9yZS5oIgor
I2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlci5oIgogI2luY2x1ZGUgIldlYlNvY2tldFRh
c2suaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZUphci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VSZXF1ZXN0Lmg+CkBAIC02MjksNyArNjMwLDcgQEAgU1dTZXJ2ZXImIE5ldHdvcmtT
ZXNzaW9uOjplbnN1cmVTV1NlcnZlcigpCiAgICAgICAgICAgICBTZXJ2aWNlV29ya2VyU29mdFVw
ZGF0ZUxvYWRlcjo6c3RhcnQodGhpcywgV1RGTW92ZShqb2JEYXRhKSwgc2hvdWxkUmVmcmVzaENh
Y2hlLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAg
ICAgIH0sIFt0aGlzXShhdXRvJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVy
LCBhdXRvJiYgY29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgICAgIEFTU0VSVCghcmVnaXN0
cmFibGVEb21haW4uaXNFbXB0eSgpKTsKLSAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6RXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzIHsgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmll
ciwgbV9zZXNzaW9uSUQgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIDApOworICAgICAg
ICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hTZXJ2
aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcmVnaXN0cmFibGVE
b21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgbV9zZXNzaW9uSUQgfSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIDApOwogICAgICAgICB9LCBXVEZNb3ZlKGFwcEJvdW5kRG9t
YWluc0NhbGxiYWNrKSk7CiAgICAgfQogICAgIHJldHVybiAqbV9zd1NlcnZlcjsKQEAgLTY1Myw2
ICs2NTQsMTMgQEAgYm9vbCBOZXR3b3JrU2Vzc2lvbjo6aGFzU2VydmljZVdvcmtlckRhdGFiYXNl
UGF0aCgpIGNvbnN0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKK1dlYlNo
YXJlZFdvcmtlclNlcnZlciYgTmV0d29ya1Nlc3Npb246OmVuc3VyZVNoYXJlZFdvcmtlclNlcnZl
cigpCit7CisgICAgaWYgKCFtX3NoYXJlZFdvcmtlclNlcnZlcikKKyAgICAgICAgbV9zaGFyZWRX
b3JrZXJTZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYlNoYXJlZFdvcmtlclNlcnZlcj4oKnRoaXMpOwor
ICAgIHJldHVybiAqbV9zaGFyZWRXb3JrZXJTZXJ2ZXI7Cit9CisKIFdlYklEQlNlcnZlciYgTmV0
d29ya1Nlc3Npb246OmVuc3VyZVdlYklEQlNlcnZlcigpCiB7CiAgICAgaWYgKCFtX3dlYklEQlNl
cnZlcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5o
CmluZGV4IDE5MzA3Y2Y0MGJlMy4uM2Y5ZDZjOTU1MGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC03OSw2ICs3OSw3IEBAIGNsYXNzIFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s7CiBjbGFzcyBXZWJJREJTZXJ2ZXI7CiBjbGFzcyBXZWJQYWdl
TmV0d29ya1BhcmFtZXRlcnM7CiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU7
CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI7CiBjbGFzcyBXZWJTb2NrZXRUYXNrOwogY2xh
c3MgV2ViU1dPcmlnaW5TdG9yZTsKIGNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKQEAgLTIx
MCw2ICsyMTEsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihi
b29sIHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgU3RyaW5nJiYgc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRpcmVjdG9yeSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7
CiAjZW5kaWYKIAorICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlciogc2hhcmVkV29ya2VyU2VydmVy
KCkgeyByZXR1cm4gbV9zaGFyZWRXb3JrZXJTZXJ2ZXIuZ2V0KCk7IH0KKyAgICBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXImIGVuc3VyZVNoYXJlZFdvcmtlclNlcnZlcigpOworCiAgICAgV2ViSURCU2Vy
dmVyKiB3ZWJJREJTZXJ2ZXIoKSB7IHJldHVybiBtX3dlYklEQlNlcnZlci5nZXQoKTsgfQogICAg
IFdlYklEQlNlcnZlciYgZW5zdXJlV2ViSURCU2VydmVyKCk7CiAgICAgdm9pZCBjbG9zZUlEQlNl
cnZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMzE4LDYgKzMyMiw3IEBAIHBy
b3RlY3RlZDoKICAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJJbmZvPiBtX3NlcnZpY2VX
b3JrZXJJbmZvOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTV1NlcnZlcj4gbV9zd1Nl
cnZlcjsKICNlbmRpZgorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI+
IG1fc2hhcmVkV29ya2VyU2VydmVyOwogCiAgICAgU3RyaW5nIG1faWRiRGF0YWJhc2VQYXRoOwog
ICAgIFJlZlB0cjxXZWJJREJTZXJ2ZXI+IG1fd2ViSURCU2VydmVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCA1YTg3MDNlZmQ2
ZDUuLjI3ZjZlOGRhNWY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTE2Miw3ICsxNjIsNyBAQCB2b2lkIFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6bWF0Y2hBbGxDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZQogCiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlv
bklzTm9Mb25nZXJOZWVkZWQoKQogewotICAgIG1fY29ubmVjdGlvbi5zZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKTsKKyAgICBtX2Nvbm5lY3Rpb24uc2VydmljZVdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCgpOwogfQogCiB2b2lkIFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2V0VGhyb3R0bGVTdGF0ZShib29sIGlzVGhy
b3R0bGVhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFy
ZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43ZjdkMWEwYjA5MWYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXIuY3BwCkBAIC0wLDAgKzEsMjg1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlci5oIgorCisjaW5j
bHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlNoYXJlZFdvcmtl
clNlcnZlcjo6V2ViU2hhcmVkV29ya2VyU2VydmVyKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uKQor
ICAgIDogbV9zZXNzaW9uKHNlc3Npb24pCit7Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlcjo6
fldlYlNoYXJlZFdvcmtlclNlcnZlcigpID0gZGVmYXVsdDsKKworUEFMOjpTZXNzaW9uSUQgV2Vi
U2hhcmVkV29ya2VyU2VydmVyOjpzZXNzaW9uSUQoKQoreworICAgIHJldHVybiBtX3Nlc3Npb24u
c2Vzc2lvbklEKCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZXF1ZXN0U2hh
cmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBVUkwm
JiB1cmwsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBXZWJDb3JlOjpX
b3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucykKK3sKKyAgICBXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJLZXkga2V5IHsgb3JpZ2luLCB1cmwsIHdvcmtlck9wdGlvbnMubmFtZSB9OworICAgIGF1dG8m
IHNoYXJlZFdvcmtlciA9IG1fc2hhcmVkV29ya2Vycy5lbnN1cmUoa2V5LCBbJl0geworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxTaGFyZWRXb3JrZXI+KG9yaWdpbiwgdXJsLCB3b3JrZXJPcHRp
b25zKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgc2hhcmVkV29ya2VyLT5zaGFyZWRX
b3JrZXJPYmplY3RzLmFkZChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBwb3J0KTsKKyAg
ICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVl
c3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwcml2YXRlfXMs
IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgc2hhcmVkV29ya2VyLT5pZGVudGlmaWVy
LnRvVUludDY0KCkpOworCisgICAgaWYgKHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0
cy5zaXplKCkgPiAxKSB7CisgICAgICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNo
YXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtlcjogQSBzaGFyZWQgd29ya2VyIHdp
dGggdGhpcyBVUkwgYWxyZWFkeSBleGlzdHMgKG5vdyBzaGFyZWQgYnkgJXUgc2hhcmVkIHdvcmtl
ciBvYmplY3RzKSIsIHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5zaXplKCkpOwor
ICAgICAgICBpZiAoc2hhcmVkV29ya2VyLT5pc1J1bm5pbmcpIHsKKyAgICAgICAgICAgIGF1dG8q
IGNvbnRleHRDb25uZWN0aW9uID0gbV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtl
ci0+cmVnaXN0cmFibGVEb21haW4oKSk7CisgICAgICAgICAgICBBU1NFUlQoY29udGV4dENvbm5l
Y3Rpb24pOworICAgICAgICAgICAgaWYgKGNvbnRleHRDb25uZWN0aW9uKQorICAgICAgICAgICAg
ICAgIHBvc3RDb25uZWN0RXZlbnQoKmNvbnRleHRDb25uZWN0aW9uLCBzaGFyZWRXb3JrZXItPmlk
ZW50aWZpZXIsIHBvcnQsIG9yaWdpbi5jbGllbnRPcmlnaW4udG9TdHJpbmcoKSk7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8qIHNlcnZlckNvbm5lY3Rpb24g
PSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJ
ZGVudGlmaWVyKCkpOworICAgIEFTU0VSVChzZXJ2ZXJDb25uZWN0aW9uKTsKKworICAgIFJFTEVB
U0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJl
ZFdvcmtlcjogRmV0Y2hpbmcgc2hhcmVkIHdvcmtlciBzY3JpcHQgaW4gY2xpZW50Iik7CisgICAg
c2VydmVyQ29ubmVjdGlvbi0+ZmV0Y2hTY3JpcHRJbkNsaWVudCh1cmwsIHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIsIHdvcmtlck9wdGlvbnMsIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhp
cyB9LCBzaGFyZWRXb3JrZXIgPSBXZWFrUHRyIHsgKnNoYXJlZFdvcmtlciB9XShXZWJDb3JlOjpT
Y3JpcHRCdWZmZXImJiBzY3JpcHRCdWZmZXIpIHsKKyAgICAgICAgaWYgKHdlYWtUaGlzICYmIHNo
YXJlZFdvcmtlcikKKyAgICAgICAgICAgIHdlYWtUaGlzLT5kaWRGaW5pc2hGZXRjaGluZ1NoYXJl
ZFdvcmtlclNjcmlwdCgqc2hhcmVkV29ya2VyLCBXVEZNb3ZlKHNjcmlwdEJ1ZmZlcikpOworICAg
IH0pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6bGF1bmNoU2hhcmVkV29ya2Vy
KFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0
aW9uLCBTaGFyZWRXb3JrZXImIHNoYXJlZFdvcmtlcikKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFy
ZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmxhdW5jaFNoYXJlZFdvcmtlcjogY29u
dGV4dENvbm5lY3Rpb249JXAsIHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCAmY29u
dGV4dENvbm5lY3Rpb24sIHNoYXJlZFdvcmtlci5pZGVudGlmaWVyLnRvVUludDY0KCkpOworICAg
IGNvbnRleHRDb25uZWN0aW9uLmxhdW5jaFNoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXIub3JpZ2lu
LCBzaGFyZWRXb3JrZXIuaWRlbnRpZmllciwgc2hhcmVkV29ya2VyLnVybCwgc2hhcmVkV29ya2Vy
Lndvcmtlck9wdGlvbnMsIHNoYXJlZFdvcmtlci5zY3JpcHRCdWZmZXIpOworICAgIHNoYXJlZFdv
cmtlci5pc1J1bm5pbmcgPSB0cnVlOworICAgIGF1dG8gc291cmNlT3JpZ2luID0gc2hhcmVkV29y
a2VyLm9yaWdpbi5jbGllbnRPcmlnaW4udG9TdHJpbmcoKTsKKyAgICBmb3IgKGF1dG8mIHBvcnQg
OiBzaGFyZWRXb3JrZXIuc2hhcmVkV29ya2VyT2JqZWN0cy52YWx1ZXMoKSkKKyAgICAgICAgcG9z
dENvbm5lY3RFdmVudChjb250ZXh0Q29ubmVjdGlvbiwgc2hhcmVkV29ya2VyLmlkZW50aWZpZXIs
IHBvcnQsIHNvdXJjZU9yaWdpbik7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpw
b3N0Q29ubmVjdEV2ZW50KFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24m
IGNvbnRleHRDb25uZWN0aW9uLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJl
ZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQm
IHNvdXJjZVBvcnQsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQoreworICAgIFJFTEVBU0Vf
TE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cG9zdENvbm5lY3RFdmVu
dDogY29udGV4dENvbm5lY3Rpb249JXAsIHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0
LCAmY29udGV4dENvbm5lY3Rpb24sIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7
CisgICAgY29udGV4dENvbm5lY3Rpb24ucG9zdENvbm5lY3RFdmVudChzaGFyZWRXb3JrZXJJZGVu
dGlmaWVyLCBzb3VyY2VQb3J0LCBzb3VyY2VPcmlnaW4pOworfQorCit2b2lkIFdlYlNoYXJlZFdv
cmtlclNlcnZlcjo6ZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRXb3JrZXJTY3JpcHQoU2hhcmVkV29y
a2VyJiB3b3JrZXIsIFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYmIHNjcmlwdEJ1ZmZlcikKK3sKKyAg
ICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZp
bmlzaEZldGNoaW5nU2hhcmVkV29ya2VyU2NyaXB0IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIg
UFJJdTY0ICIsIHdvcmtlcj0lcCwgc3VjY2Vzcz0lZCIsIHdvcmtlci5pZGVudGlmaWVyLnRvVUlu
dDY0KCksICZ3b3JrZXIsICEhc2NyaXB0QnVmZmVyKTsKKyAgICBpZiAoIXNjcmlwdEJ1ZmZlcikg
eworICAgICAgICAvLyBGZXRjaCBmYWlsZWQsIG5vdGlmeSB0aGUgU2hhcmVkV29ya2VyIG9iamVj
dHMuCisgICAgICAgIGZvciAoYXV0byBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIDogd29y
a2VyLnNoYXJlZFdvcmtlck9iamVjdHMua2V5cygpKSB7CisgICAgICAgICAgICBpZiAoYXV0byog
c2VydmVyQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSkpCisgICAgICAgICAgICAgICAgc2VydmVyQ29u
bmVjdGlvbi0+ZGlzcGF0Y2hFcnJvckV2ZW50T25Xb3JrZXJPYmplY3Qoc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllcik7CisgICAgICAgIH0KKyAgICAgICAgbV9zaGFyZWRXb3JrZXJzLnJlbW92
ZSh3b3JrZXIua2V5KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd29ya2VyLnNj
cmlwdEJ1ZmZlciA9IFdURk1vdmUoc2NyaXB0QnVmZmVyKTsKKworICAgIGF1dG8gcmVnaXN0cmFi
bGVEb21haW4gPSB3b3JrZXIucmVnaXN0cmFibGVEb21haW4oKTsKKyAgICBhdXRvKiBjb250ZXh0
Q29ubmVjdGlvbiA9IGNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0
cmFibGVEb21haW4pOworICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAgICAgY3Jl
YXRlQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4pOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgbGF1bmNoU2hhcmVkV29ya2VyKCpjb250ZXh0Q29ubmVjdGlvbiwgd29y
a2VyKTsKK30KKworYm9vbCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6Om5lZWRzQ29udGV4dENvbm5l
Y3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYgcmVnaXN0cmFibGVEb21haW4pIGNvbnN0Cit7CisgICAgZm9yIChhdXRvJiBzaGFyZWRXb3Jr
ZXIgOiBtX3NoYXJlZFdvcmtlcnMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHJlZ2lzdHJhYmxl
RG9tYWluLm1hdGNoZXMoc2hhcmVkV29ya2VyLT51cmwpKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXI6OmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKK3sKKyAgICBBU1NFUlQoIW1fY29udGV4dENvbm5l
Y3Rpb25zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSk7CisgICAgaWYgKG1fcGVuZGluZ0Nv
bnRleHRDb25uZWN0aW9uRG9tYWlucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpCisgICAg
ICAgIHJldHVybjsKKworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdv
cmtlclNlcnZlcjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24gd2lsbCBjcmVhdGUgYSBjb25uZWN0
aW9uIik7CisKKyAgICBtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnMuYWRkKHJlZ2lz
dHJhYmxlRG9tYWluKTsKKyAgICBtX3Nlc3Npb24ubmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OkVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcyB7IHJlZ2lzdHJhYmxlRG9tYWluLCBtX3Nlc3Npb24uc2Vzc2lvbklEKCkgfSwgW3Ro
aXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlZ2lzdHJhYmxlRG9tYWluXSB7Cisg
ICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgUkVM
RUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250
ZXh0Q29ubmVjdGlvbiBzaG91bGQgbm93IGhhdmUgY3JlYXRlZCBhIGNvbm5lY3Rpb24iKTsKKwor
ICAgICAgICBBU1NFUlQobV9wZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5zLmNvbnRhaW5z
KHJlZ2lzdHJhYmxlRG9tYWluKSk7CisgICAgICAgIG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9u
RG9tYWlucy5yZW1vdmUocmVnaXN0cmFibGVEb21haW4pOworCisgICAgICAgIGlmIChtX2NvbnRl
eHRDb25uZWN0aW9ucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgaWYgKG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJs
ZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgICAgICBjcmVhdGVDb250ZXh0Q29u
bmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbik7CisgICAgfSwgMCk7Cit9CisKK3ZvaWQgV2ViU2hh
cmVkV29ya2VyU2VydmVyOjphZGRDb250ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbikKK3sKKyAgICBSRUxFQVNF
X0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmFkZENvbnRleHRDb25u
ZWN0aW9uKCVwKSB3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQsICZjb250ZXh0Q29ubmVj
dGlvbiwgY29udGV4dENvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgp
KTsKKworICAgIEFTU0VSVCghbV9jb250ZXh0Q29ubmVjdGlvbnMuY29udGFpbnMoY29udGV4dENv
bm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSkpOworCisgICAgbV9jb250ZXh0Q29ubmVjdGlv
bnMuYWRkKGNvbnRleHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCksICZjb250ZXh0Q29u
bmVjdGlvbik7CisKKyAgICBjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoY29udGV4dENvbm5lY3Rp
b24pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5l
Y3Rpb24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENv
bm5lY3Rpb24pCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29y
a2VyU2VydmVyOjpyZW1vdmVDb250ZXh0Q29ubmVjdGlvbiglcCkgd2ViUHJvY2Vzc0lkZW50aWZp
ZXI9JSIgUFJJdTY0LCAmY29udGV4dENvbm5lY3Rpb24sIGNvbnRleHRDb25uZWN0aW9uLndlYlBy
b2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9t
YWluID0gY29udGV4dENvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKTsKKworICAgIEFTU0VS
VChtX2NvbnRleHRDb25uZWN0aW9ucy5nZXQocmVnaXN0cmFibGVEb21haW4pID09ICZjb250ZXh0
Q29ubmVjdGlvbik7CisKKyAgICBtX2NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUocmVnaXN0cmFi
bGVEb21haW4pOworCisgICAgaWYgKG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJs
ZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0
aW9uKHJlZ2lzdHJhYmxlRG9tYWluKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6
OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbikKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRX
b3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZCgl
cCkgd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCAmY29udGV4dENvbm5lY3Rpb24sIGNv
bnRleHRDb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAg
YXV0byYgcmVnaXN0cmFibGVEb21haW4gPSBjb250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURv
bWFpbigpOworICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9zaGFyZWRXb3JrZXJzLnZhbHVlcygp
KSB7CisgICAgICAgIGlmIChyZWdpc3RyYWJsZURvbWFpbi5tYXRjaGVzKHdvcmtlci0+dXJsKSkK
KyAgICAgICAgICAgIGxhdW5jaFNoYXJlZFdvcmtlcihjb250ZXh0Q29ubmVjdGlvbiwgKndvcmtl
cik7CisgICAgfQorfQorCithdXRvIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hhcmVkV29ya2Vy
QnlJZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2Vy
SWRlbnRpZmllcikgLT4gU2hhcmVkV29ya2VyKgoreworICAgIGZvciAoYXV0byYgd29ya2VyIDog
bV9zaGFyZWRXb3JrZXJzLnZhbHVlcygpKSB7CisgICAgICAgIGlmICh3b3JrZXItPmlkZW50aWZp
ZXIgPT0gc2hhcmVkV29ya2VySWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiB3b3JrZXIu
Z2V0KCk7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCithdXRvIFdlYlNoYXJlZFdv
cmtlclNlcnZlcjo6c2hhcmVkV29ya2VyQnlPYmplY3RJZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikgLT4g
U2hhcmVkV29ya2VyKgoreworICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9zaGFyZWRXb3JrZXJz
LnZhbHVlcygpKSB7CisgICAgICAgIGlmICh3b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMuY29u
dGFpbnMoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikpCisgICAgICAgICAgICByZXR1cm4g
d29ya2VyLmdldCgpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI6OnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KFdlYkNvcmU6
OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
cikKK3sKKyAgICBhdXRvKiB3b3JrZXIgPSBzaGFyZWRXb3JrZXJCeU9iamVjdElkZW50aWZpZXIo
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29y
a2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdh
eTogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zLCB3b3JrZXI9JXAiLCBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgd29y
a2VyKTsKKyAgICBpZiAoIXdvcmtlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgd29ya2VyLT5z
aGFyZWRXb3JrZXJPYmplY3RzLnJlbW92ZShzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsK
KyAgICBpZiAoIXdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIHNodXREb3duU2hhcmVkV29ya2VyKHdvcmtlci0+a2V5KCkpOworfQor
Cit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2h1dERvd25TaGFyZWRXb3JrZXIoY29uc3Qg
V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBrZXkpCit7CisgICAgYXV0byB3b3JrZXIgPSBtX3No
YXJlZFdvcmtlcnMudGFrZShrZXkpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldl
YlNoYXJlZFdvcmtlclNlcnZlcjo6c2h1dERvd25TaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklk
ZW50aWZpZXI9JSIgUFJJdTY0ICIsIHdvcmtlcj0lcCIsIHdvcmtlciA/IHdvcmtlci0+aWRlbnRp
Zmllci50b1VJbnQ2NCgpIDogMCwgd29ya2VyLmdldCgpKTsKKyAgICBpZiAoIXdvcmtlcikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYXV0byogY29udGV4dENvbm5lY3Rpb24gPSBjb250ZXh0Q29u
bmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHdvcmtlci0+cmVnaXN0cmFibGVEb21haW4oKSk7
CisgICAgaWYgKCFjb250ZXh0Q29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgY29u
dGV4dENvbm5lY3Rpb24tPnRlcm1pbmF0ZVNoYXJlZFdvcmtlcih3b3JrZXItPmlkZW50aWZpZXIp
OworCisgICAgaWYgKCFuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4o
d29ya2VyLT5yZWdpc3RyYWJsZURvbWFpbigpKSkKKyAgICAgICAgY29udGV4dENvbm5lY3Rpb24t
PmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2Vy
U2VydmVyOjphZGRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCit7CisgICAgYXV0byBwcm9jZXNzSWRlbnRpZmll
ciA9IGNvbm5lY3Rpb24tPndlYlByb2Nlc3NJZGVudGlmaWVyKCk7CisgICAgUkVMRUFTRV9MT0co
U2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjphZGRDb25uZWN0aW9uKCVwKTog
cHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCBjb25uZWN0aW9uLmdldCgpLCBwcm9jZXNzSWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbnMuY29udGFpbnMo
cHJvY2Vzc0lkZW50aWZpZXIpKTsKKyAgICBtX2Nvbm5lY3Rpb25zLmFkZChwcm9jZXNzSWRlbnRp
ZmllciwgV1RGTW92ZShjb25uZWN0aW9uKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyOjpyZW1vdmVDb25uZWN0aW9uKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJ
ZGVudGlmaWVyKQoreworICAgIGF1dG8gY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMudGFrZShw
cm9jZXNzSWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hh
cmVkV29ya2VyU2VydmVyOjpyZW1vdmVDb25uZWN0aW9uKCVwKTogcHJvY2Vzc0lkZW50aWZpZXI9
JSIgUFJJdTY0LCBjb25uZWN0aW9uLmdldCgpLCBwcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKKyAgICBBU1NFUlQoY29ubmVjdGlvbik7CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6U2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllcj4gc2hhcmVkV29ya2VyT2JqZWN0c0dvaW5nQXdheTsKKyAg
ICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAg
ICBmb3IgKGF1dG8mIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgOiB3b3JrZXItPnNoYXJl
ZFdvcmtlck9iamVjdHMua2V5cygpKSB7CisgICAgICAgICAgICBpZiAoc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IHByb2Nlc3NJZGVudGlmaWVyKQor
ICAgICAgICAgICAgICAgIHNoYXJlZFdvcmtlck9iamVjdHNHb2luZ0F3YXkuYXBwZW5kKHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgICAgICB9CisgICAgfQorICAgIGZvciAoYXV0
byBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIDogc2hhcmVkV29ya2VyT2JqZWN0c0dvaW5n
QXdheSkKKyAgICAgICAgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllcik7Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlcjo6U2hhcmVkV29y
a2VyOjpTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25z
KQorICAgIDogaWRlbnRpZmllcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyOjpnZW5l
cmF0ZSgpKQorICAgICwgb3JpZ2luKG9yaWdpbikKKyAgICAsIHVybCh1cmwpCisgICAgLCB3b3Jr
ZXJPcHRpb25zKHdvcmtlck9wdGlvbnMpCit7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRl
bnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMKQoreworICAgIGF1dG8qIHdvcmtlciA9IHNoYXJlZFdvcmtlckJ5SWRlbnRpZmllcihzaGFy
ZWRXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIs
ICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdDogc2hh
cmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgd29ya2VyPSVwIiwgc2hhcmVkV29ya2Vy
SWRlbnRpZmllci50b1VJbnQ2NCgpLCB3b3JrZXIpOworICAgIGlmICghd29ya2VyKQorICAgICAg
ICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA6
IHdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5rZXlzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8q
IHNlcnZlckNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkpKQorICAgICAgICAgICAgc2VydmVyQ29ubmVj
dGlvbi0+cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwp
OworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdv
cmtlclNlcnZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2Rk
ZmYyODY4YzhlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmgKQEAgLTAsMCArMSwxMDcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lk
ZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9TY3JpcHRCdWZmZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJLZXkuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1dvcmtlck9wdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworfQorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgTmV0d29ya1Nlc3Npb247CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyIDogcHVibGljIENhbk1ha2VX
ZWFrUHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlcj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYlNoYXJlZFdvcmtlclNlcnZlcihOZXR3b3Jr
U2Vzc2lvbiYpOworICAgIH5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIoKTsKKworICAgIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCgpOworCisgICAgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LCBVUkwmJiwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBXZWJDb3JlOjpXb3Jr
ZXJPcHRpb25zJiYpOworICAgIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisKKyAgICB2b2lkIGFkZENvbnRl
eHRDb25uZWN0aW9uKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsK
KyAgICB2b2lkIHJlbW92ZUNvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24mKTsKKworICAgIHZvaWQgYWRkQ29ubmVjdGlvbihzdGQ6OnVuaXF1
ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4mJik7CisgICAgdm9pZCByZW1v
dmVDb25uZWN0aW9uKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKKworICAgIFdlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIGNvbnRleHRDb25uZWN0aW9uRm9yUmVn
aXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikg
eyByZXR1cm4gbV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0KGRvbWFpbik7IH0KKworICAgIHZvaWQg
cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCitwcml2YXRlOgorICAgIHZvaWQg
Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
KTsKKworICAgIGJvb2wgbmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWlu
KGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CisgICAgdm9pZCBjb250
ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbiYpOworCisgICAgc3RydWN0IFNoYXJlZFdvcmtlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxTaGFyZWRXb3JrZXI+IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OworCisgICAgICAgIFNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBj
b25zdCBVUkwmLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJik7CisKKyAgICAgICAgV2Vi
Q29yZTo6U2hhcmVkV29ya2VyS2V5IGtleSgpIHsgcmV0dXJuIHsgb3JpZ2luLCB1cmwsIHdvcmtl
ck9wdGlvbnMubmFtZSB9OyB9CisgICAgICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJl
Z2lzdHJhYmxlRG9tYWluKCkgeyByZXR1cm4gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1
cmwgfTsgfQorICAgICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiB3b3Jr
ZXJPcHRpb25zLm5hbWU7IH0KKworICAgICAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlm
aWVyIGlkZW50aWZpZXI7CisgICAgICAgIFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW47Cisg
ICAgICAgIFVSTCB1cmw7CisgICAgICAgIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMgd29ya2VyT3B0
aW9uczsKKyAgICAgICAgSGFzaE1hcDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0PiBzaGFyZWRXb3JrZXJPYmplY3Rz
OworICAgICAgICBXZWJDb3JlOjpTY3JpcHRCdWZmZXIgc2NyaXB0QnVmZmVyOworICAgICAgICBi
b29sIGlzUnVubmluZyB7IGZhbHNlIH07CisgICAgfTsKKworICAgIFNoYXJlZFdvcmtlciogc2hh
cmVkV29ya2VyQnlJZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIpOwor
ICAgIFNoYXJlZFdvcmtlciogc2hhcmVkV29ya2VyQnlPYmplY3RJZGVudGlmaWVyKFdlYkNvcmU6
OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIHZvaWQgZGlkRmluaXNoRmV0Y2hp
bmdTaGFyZWRXb3JrZXJTY3JpcHQoU2hhcmVkV29ya2VyJiwgV2ViQ29yZTo6U2NyaXB0QnVmZmVy
JiYpOworICAgIHZvaWQgbGF1bmNoU2hhcmVkV29ya2VyKFdlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24mLCBTaGFyZWRXb3JrZXImKTsKKyAgICB2b2lkIHBvc3RDb25uZWN0
RXZlbnQoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYsIFdlYkNvcmU6
OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2Fn
ZVBvcnQmLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CisgICAgdm9pZCBzaHV0RG93blNo
YXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmKTsKKworICAgIE5ldHdv
cmtTZXNzaW9uJiBtX3Nlc3Npb247CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
Zmllciwgc3RkOjp1bmlxdWVfcHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24+PiBt
X2Nvbm5lY3Rpb25zOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qPiBtX2NvbnRleHRDb25uZWN0
aW9uczsKKyAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBtX3BlbmRpbmdD
b250ZXh0Q29ubmVjdGlvbkRvbWFpbnM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJLZXksIHN0ZDo6dW5pcXVlX3B0cjxTaGFyZWRXb3JrZXI+PiBtX3NoYXJlZFdvcmtlcnM7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi4xZmQ2NThlYzAwNGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uLmNwcApAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgiCisKKyNpbmNs
dWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb25NZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworI2Rl
ZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhTaGFyZWRX
b3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsIG1fd2ViUHJvY2Vzc0lkZW50aWZp
ZXIudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNF
X0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoU2hhcmVkV29ya2VyLCAiJXAg
LSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb246OiIgZm10LCB0aGlzLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0
KCksICMjX19WQV9BUkdTX18pCisKK1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Oldl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9j
ZXNzLCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlciwgSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllcikK
KyAgICA6IG1fY29udGVudENvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1fbmV0d29ya1By
b2Nlc3MobmV0d29ya1Byb2Nlc3MpCisgICAgLCBtX3NlcnZlcihzZXJ2ZXIpCisgICAgLCBtX3dl
YlByb2Nlc3NJZGVudGlmaWVyKHdlYlByb2Nlc3NJZGVudGlmaWVyKQoreworICAgIENPTk5FQ1RJ
T05fUkVMRUFTRV9MT0coIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Iik7Cit9CisK
K1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246On5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJ+V2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbjoiKTsKK30KKworSVBDOjpDb25uZWN0aW9uKiBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fY29udGVudENvbm5lY3Rpb24ucHRyKCk7Cit9CisKK1BBTDo6U2Vzc2lv
bklEIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OnNlc3Npb25JRCgpCit7CisgICAg
cmV0dXJuIHNlcnZlcigpLnNlc3Npb25JRCgpOworfQorCitOZXR3b3JrU2Vzc2lvbiogV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2Vzc2lvbigpCit7CisgICAgcmV0dXJuIG1fbmV0
d29ya1Byb2Nlc3MtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKTsKK30KKwordm9pZCBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpyZXF1ZXN0U2hhcmVkV29ya2VyKFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBVUkwmJiB1cmwsIFdlYkNvcmU6OlRy
YW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYgd29y
a2VyT3B0aW9ucykKK3sKKyAgICBBU1NFUlQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5w
cm9jZXNzSWRlbnRpZmllcigpID09IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOyAvLyBGSVhNRTog
U2hvdWxkIGJlIGEgTUVTU0FHRV9DSEVDSygpLgorICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0co
InJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJs
aWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHRoaXMtPnNlc3Npb24oKSkKKyAgICAgICAg
c2Vzc2lvbi0+ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCkucmVxdWVzdFNoYXJlZFdvcmtlcihX
VEZNb3ZlKG9yaWdpbiksIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdURk1vdmUodXJs
KSwgV1RGTW92ZShwb3J0KSwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSk7Cit9CisKK3ZvaWQgV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6ZmV0Y2hTY3JpcHRJbkNsaWVudChjb25zdCBV
UkwmIHVybCwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJP
cHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJmZXRj
aFNjcmlwdEluQ2xpZW50OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMi
LCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uOjpGZXRjaFNjcmlwdEluQ2xpZW50IHsgdXJsLCBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLCB3b3JrZXJPcHRpb25zIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
K30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpkaXNwYXRjaEVycm9y
RXZlbnRPbldvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNF
X0xPR19FUlJPUigiZGlzcGF0Y2hFcnJvckV2ZW50T25Xb3JrZXJPYmplY3Q6IHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpEaXNwYXRjaEVycm9yRXZlbnRPbldvcmtlck9iamVj
dCB7IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgfSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNv
cmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBDT05ORUNUSU9OX1JF
TEVBU0VfTE9HX0VSUk9SKCJwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Q6IHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpQb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QgeyBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgc291cmNlVVJMIH0pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb246OnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KFdlYkNvcmU6OlNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK3sK
KyAgICBBU1NFUlQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmll
cigpID09IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOyAvLyBGSVhNRTogU2hvdWxkIGJlIGEgTUVT
U0FHRV9DSEVDSygpLgorICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coInNoYXJlZFdvcmtlck9i
amVjdElzR29pbmdBd2F5OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMi
LCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSB0aGlzLT5zZXNzaW9uKCkpCisgICAgICAgIHNlc3Np
b24tPmVuc3VyZVNoYXJlZFdvcmtlclNlcnZlcigpLnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdB
d2F5KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworfQorCisjdW5kZWYgQ09OTkVDVElP
Tl9SRUxFQVNFX0xPRworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5h
OTBmZjRmNWUwZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTAs
MCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2NyaXB0QnVm
ZmVyOworc3RydWN0IFdvcmtlck9wdGlvbnM7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBOZXR3b3JrUHJvY2VzczsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlcjsKK2NsYXNz
IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CisKK2NsYXNzIFdlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24gOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBw
dWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworcHVibGljOgorICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oTmV0d29ya1By
b2Nlc3MmLCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImLCBJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllcik7CisgICAgfldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b24oKTsKKworICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlciYgc2VydmVyKCkgeyByZXR1cm4gbV9z
ZXJ2ZXI7IH0KKyAgICBjb25zdCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlcigpIGNvbnN0
IHsgcmV0dXJuIG1fc2VydmVyOyB9CisKKyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKTsK
KyAgICBOZXR3b3JrU2Vzc2lvbiogc2Vzc2lvbigpOworICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV93ZWJQcm9jZXNz
SWRlbnRpZmllcjsgfQorCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworICAgIHZvaWQgZmV0Y2hTY3JpcHRJbkNsaWVu
dChjb25zdCBVUkwmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpTY3JpcHRCdWZmZXImJik+JiYpOworICAgIHZvaWQgZGlzcGF0Y2hFcnJvckV2ZW50T25Xb3Jr
ZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgdm9p
ZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisKK3ByaXZhdGU6Cisg
ICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyLgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNl
bmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVy
RGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KKworICAgIC8vIElQQyBt
ZXNzYWdlcy4KKyAgICB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFVSTCYmLCBXZWJD
b3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJik7
CisgICAgdm9pZCBzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29u
dGVudENvbm5lY3Rpb247CisgICAgUmVmPE5ldHdvcmtQcm9jZXNzPiBtX25ldHdvcmtQcm9jZXNz
OworICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlciYgbV9zZXJ2ZXI7CisgICAgV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIgbV93ZWJQcm9jZXNzSWRlbnRpZmllcjsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFy
ZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNl
cnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5mYWU0YTA4MDM3NzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbiBOb3RSZWZDb3VudGVkIHsKKyAgICBSZXF1ZXN0U2hhcmVkV29ya2VyKHN0cnVjdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFVSTCB1cmwsIFdlYkNvcmU6OlRy
YW5zZmVycmVkTWVzc2FnZVBvcnQgcG9ydCwgc3RydWN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMg
d29ya2VyT3B0aW9ucykKKyAgICBTaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIpCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdv
cmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uNWQ3MDU5N2IwZjYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIu
aCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNkZWZpbmUgQ09OVEVYVF9DT05ORUNUSU9OX1JF
TEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQ
cm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50
NjQoKSwgIyNfX1ZBX0FSR1NfXykKKworV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNl
cnZlcikKKyAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQorICAgICwgbV9zZXJ2ZXIoc2Vy
dmVyKQorICAgICwgbV9yZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikKK3sKKyAg
ICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coIldlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246Iik7CisgICAgc2VydmVyLmFkZENvbnRleHRDb25uZWN0aW9uKCp0
aGlzKTsKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6fldl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQoreworICAgIENPTlRFWFRf
Q09OTkVDVElPTl9SRUxFQVNFX0xPRygifldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246Iik7CisgICAgaWYgKG1fc2VydmVyICYmIG1fc2VydmVyLT5jb250ZXh0Q29ubmVj
dGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKCkpID09IHRoaXMpCisg
ICAgICAgIG1fc2VydmVyLT5yZW1vdmVDb250ZXh0Q29ubmVjdGlvbigqdGhpcyk7Cit9CisKK1dl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246OndlYlByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9j
b25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCk7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiYg
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6aXBjQ29ubmVjdGlvbigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCk7Cit9CisKK0lQ
Qzo6Q29ubmVjdGlvbiogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiAmaXBjQ29ubmVj
dGlvbigpOworfQorCit1aW50NjRfdCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IDA7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
Y29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9S
RUxFQVNFX0xPRygiY29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQ6Iik7CisgICAgbV9jb25uZWN0
aW9uLnNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVk
KCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZp
ZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkK
K3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coInBvc3RFeGNlcHRpb25Ub1dv
cmtlck9iamVjdDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtl
cklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgaWYgKG1fc2VydmVyKQorICAgICAgICBtX3Nl
cnZlci0+cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KHNoYXJlZFdvcmtlcklkZW50aWZpZXIs
IGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwpOworfQor
Cit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmxhdW5jaFNo
YXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgV2ViQ29yZTo6
U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYgd29ya2VyT3B0aW9ucywgY29uc3Qg
V2ViQ29yZTo6U2NyaXB0QnVmZmVyJiBzY3JpcHRCdWZmZXIpCit7CisgICAgQ09OVEVYVF9DT05O
RUNUSU9OX1JFTEVBU0VfTE9HKCJsYXVuY2hTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50
aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
TGF1bmNoU2hhcmVkV29ya2VyIHsgb3JpZ2luLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCB1cmws
IHdvcmtlck9wdGlvbnMsIHNjcmlwdEJ1ZmZlciB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpwb3N0Q29ubmVjdEV2ZW50KFdlYkNvcmU6OlNo
YXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYgcG9ydCwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmln
aW4pCit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJwb3N0Q29ubmVjdEV2
ZW50OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VySWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OlBvc3RDb25uZWN0RXZlbnQgeyBzaGFyZWRXb3JrZXJJZGVu
dGlmaWVyLCBwb3J0LCBzb3VyY2VPcmlnaW4gfSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlU2hhcmVkV29ya2VyKFdlYkNvcmU6
OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBD
T05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coInRlcm1pbmF0ZVNoYXJlZFdvcmtlcjogc2hh
cmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9V
SW50NjQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpUZXJtaW5hdGVTaGFyZWRXb3JrZXIgeyBzaGFyZWRXb3JrZXJJZGVudGlm
aWVyIH0pOworfQorCisjdW5kZWYgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HCisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uN2FiMjdhZjdmYTY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3Nh
Z2VTZW5kZXIuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9NZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
UmVnaXN0cmFibGVEb21haW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50
aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVnaXN0cmFibGVEb21haW47
CitjbGFzcyBTY3JpcHRCdWZmZXI7CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworc3RydWN0IFdvcmtl
ck9wdGlvbnM7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzczsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlcjsKKworY2xhc3Mg
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2ViU2hhcmVkV29ya2VyU2VydmVyJik7Cisg
ICAgfldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKKworICAgIFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3Q7Cisg
ICAgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKCkg
Y29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQorICAgIElQQzo6Q29ubmVjdGlv
biYgaXBjQ29ubmVjdGlvbigpIGNvbnN0OworCisgICAgdm9pZCBsYXVuY2hTaGFyZWRXb3JrZXIo
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRp
ZmllciwgY29uc3QgVVJMJiwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYsIGNvbnN0IFdl
YkNvcmU6OlNjcmlwdEJ1ZmZlciYpOworICAgIHZvaWQgcG9zdENvbm5lY3RFdmVudChXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3Nh
Z2VQb3J0JiwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOworICAgIHZvaWQgdGVybWluYXRl
U2hhcmVkV29ya2VyKFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworCisgICAgdm9p
ZCBjb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworcHJpdmF0ZToK
KyAgICAvLyBJUEMgbWVzc2FnZXMuCisgICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmpl
Y3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCk7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCisgICAgSVBDOjpDb25uZWN0
aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90
IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CisKKyAgICBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9jb25uZWN0aW9uOworICAgIFdlYWtQdHI8V2ViU2hh
cmVkV29ya2VyU2VydmVyPiBtX3NlcnZlcjsKKyAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biBtX3JlZ2lzdHJhYmxlRG9tYWluOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLmFlNDdjMTIyY2JhYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNSBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgor
IyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgeworICAgIFBvc3RFeGNlcHRp
b25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdv
cmtlcklkZW50aWZpZXIsIFN0cmluZyBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBTdHJpbmcgc291cmNlVVJMKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcu
aAppbmRleCA0NGUwYTdhY2I3YjUuLjdiN2NjOWJhYzRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dn
aW5nLmgKQEAgLTk3LDYgKzk3LDcgQEAgZXh0ZXJuICJDIiB7CiAgICAgTShTZXJ2aWNlV29ya2Vy
KSBcCiAgICAgTShTZXNzaW9uU3RhdGUpIFwKICAgICBNKFNoYXJlZERpc3BsYXlMaXN0cykgXAor
ICAgIE0oU2hhcmVkV29ya2VyKSBcCiAgICAgTShTdG9yYWdlKSBcCiAgICAgTShTdG9yYWdlQVBJ
KSBcCiAgICAgTShUZXh0SW5wdXQpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CmluZGV4IDdlYmZhNTE2YjUwMy4uMWEyNjFlMGIxMGRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTMwMywxMCArMzAzLDEzIEBAIGRlZiB0eXBl
c190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNoYXJl
ZFN0cmluZ0hhc2gnLAorICAgICAgICAnV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllcics
CisgICAgICAgICdXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyJywKICAgICAg
ICAgJ1dlYkNvcmU6OlNsZWVwRGlzYWJsZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6
OlNvdXJjZUJ1ZmZlckFwcGVuZE1vZGUnLAogICAgICAgICAnV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTdG9y
YWdlVHlwZScsCisgICAgICAgICdXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JywKICAg
ICAgICAgJ1dlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3RJZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YkNvcmU6OldlYkxvY2tJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OldlYlNvY2tldElk
ZW50aWZpZXInLApAQCAtODUxLDYgKzg1NCw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUp
OgogICAgICAgICAnV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZSc6IFsnPFdlYkNvcmUvVGV4dENo
ZWNraW5nLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YSc6IFsnPFdl
YkNvcmUvVGV4dEluZGljYXRvci5oPiddLAogICAgICAgICAnV2ViQ29yZTo6VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZSc6IFsnPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+J10s
CisgICAgICAgICdXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JzogWyc8V2ViQ29yZS9N
ZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6VXNlZExlZ2Fj
eVRMUyc6IFsnPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZUJhc2UuaD4nXSwKICAgICAgICAgJ1dl
YkNvcmU6OlZpZGVvUHJlc2V0RGF0YSc6IFsnPFdlYkNvcmUvVmlkZW9QcmVzZXQuaD4nXSwKICAg
ICAgICAgJ1dlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyc6IFsnPFdlYkNvcmUvVmlld3BvcnRB
cmd1bWVudHMuaD4nXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGRmNDdjNzg2YzhkZS4uZTRjMDc4NzUyZjMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKQEAgLTE0MSw2ICsxNDEsMTAgQEAgTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV09yaWdpblN0b3JlLmNwcCBAbm8tdW5pZnkKIE5ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBAbm8tdW5pZnkKIE5ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBA
bm8tdW5pZnkKIAorTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNl
cnZlci5jcHAKK05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uLmNwcAorTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisKIE5ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9G
aWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5
c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS5jcHAKQEAgLTc4Miw2ICs3ODYsOSBAQCBXZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCiBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dPcmlnaW5UYWJsZS5jcHAKIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJQcm92aWRlci5jcHAKK1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCitXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKK1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRX
b3JrZXJQcm92aWRlci5jcHAKIAogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXIuY3BwCiAKQEAgLTg4NCwzICs4OTEsNyBAQCBSZW1vdGVXZWJMb2NrUmVnaXN0
cnlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrTWVzc2FnZVJl
Y2VpdmVyLmNwcAogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5TWVzc2FnZVJlY2VpdmVyLmNw
cAogV2ViTG9ja1JlZ2lzdHJ5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKK1dlYlNoYXJlZFdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRl
eCBkMWI0MzcxNzYzNWYuLjMzMDIwYmQ1YzNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC01MjksNyAr
NTI5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0ZXJtaW5hdGVXZWJQcm9jZXNzKFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2MKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6dGVybWluYXRlVW5yZXNwb25zaXZlU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcikKIHsKICAgICBpZiAoUmVmUHRyIHBy
b2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHByb2Nlc3NJZGVu
dGlmaWVyKSkgewotICAgICAgICBwcm9jZXNzLT5kaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAg
ICAgICAgcHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBl
OjpTZXJ2aWNlV29ya2VyKTsKICAgICAgICAgcHJvY2Vzcy0+cmVxdWVzdFRlcm1pbmF0aW9uKFBy
b2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6RXhjZWVkZWRDUFVMaW1pdCk7CiAgICAgfQogfQpAQCAt
MTQxNSwxNiArMTQxNSwyMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZERlc3Ryb3lX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eShXZWJVc2VyQ29udGVudAogfQogI2VuZGlmCiAK
K3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVn
aXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFdlYlByb2Nlc3NQb29sOjpl
c3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV1RG
TW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlc3Npb25JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworfQorCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5Ojplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MoUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlm
aWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNo
U2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWdpc3RyYWJs
ZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewotICAgIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoKnRoaXMsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4p
LCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHNlc3Npb25JRCwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUocmVnaXN0cmFibGVEb21h
aW4pLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHNlc3Npb25JRCwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OndvcmtlckNv
bnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIg
aWRlbnRpZmllcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2VydmljZVdvcmtlckNvbnRl
eHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRl
bnRpZmllcikKIHsKICAgICBpZiAoYXV0byogcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJv
Y2Vzc0ZvcklkZW50aWZpZXIoaWRlbnRpZmllcikpCi0gICAgICAgIHByb2Nlc3MtPmRpc2FibGVT
ZXJ2aWNlV29ya2VycygpOworICAgICAgICBwcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9j
ZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogfQogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikKQEAgLTE0NjAsNiArMTQ2
NSwxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3Jv
dW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSQogfQogI2VuZGlmCiAKK3ZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6c2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRl
ZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGlmIChhdXRv
KiBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihpZGVudGlm
aWVyKSkKKyAgICAgICAgcHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpX
b3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRf
dCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBxdW90YSk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgUkVMRUFTRV9MT0coU3RvcmFnZSwgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eTo6
cmVxdWVzdFN0b3JhZ2VTcGFjZSIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA4Y2JkN2QwOWI2NmYu
LjY4NDFhMzRmZTA5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTMyNywxMyArMzI3LDE1IEBAIHByaXZhdGU6
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB2b2lkIGVzdGFibGlz
aFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgd29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CisgICAg
dm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRp
ZmllciwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAg
dm9pZCBzZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllcik7CiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnRQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVy
LCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZp
ZXIpOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIHZvaWQg
c3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKICAgICB2b2lkIGVuZFNl
cnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogI2VuZGlmCisgICAgdm9pZCBzaGFy
ZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyKTsKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNl
c3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgdGVybWlu
YXRlV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbgppbmRleCBhOTk3NmIyMmU3M2YuLjE1NzU3ZWQ5YTI1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTMsMTMgKzUzLDE1IEBAIG1lc3NhZ2VzIC0+
IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIFRlcm1pbmF0ZVdlYlBy
b2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIpCiAK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lz
dHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKLSAgICBXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9u
Z2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgRXN0
YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBh
Z2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCisgICAg
U2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnRQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVy
LCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZp
ZXIpCiAgICAgVW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpCiAgICAgU3RhcnRTZXJ2aWNl
V29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2Vy
dmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQogICAgIEVuZFNlcnZpY2VXb3JrZXJCYWNrZ3Jv
dW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc0lkZW50aWZpZXIpCiAjZW5kaWYKKyAgICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVn
aXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKKyAg
ICBTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAKICAgICBTZXRXZWJQcm9jZXNzSGFzVXBsb2Fk
cyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSUQsIGJvb2wgaGFzVXBsb2FkKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjNDJlMWNiZDli
ZWEuLjk4ZTQwYjc2NzA1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCkBAIC0zNjkxLDExICszNjkxLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVzZXJBZ2Vu
dChTdHJpbmcmJiB1c2VyQWdlbnQpCiAgICAgICAgIHJldHVybjsKICAgICBtX3VzZXJBZ2VudCA9
IFdURk1vdmUodXNlckFnZW50KTsKIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICAv
LyBXZSB1cGRhdGUgdGhlIHNlcnZpY2Ugd29ya2VyIHRoZXJlIGF0IHRoZSBtb21lbnQgdG8gYmUg
c3VyZSB3ZSB1c2UgdmFsdWVzIHVzZWQgYnkgYWN0dWFsIHdlYiBwYWdlcy4KICAgICAvLyBGSVhN
RTogUmVmYWN0b3IgdGhpcyB3aGVuIHdlIGhhdmUgYSBiZXR0ZXIgVXNlci1BZ2VudCBzdG9yeS4K
LSAgICBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS51cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50
KG1fdXNlckFnZW50KTsKLSNlbmRpZgorICAgIHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnVwZGF0
ZVdvcmtlclVzZXJBZ2VudChtX3VzZXJBZ2VudCk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAppbmRleCA2NmQ0OWZhYzNlYTYuLjRiMTliMGQxZDNjMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNTI5LDcgKzUyOSw3IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OmdldFdlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vz
c1Byb3h5JiB3ZWJQcm9jZXNzUHJvCiBib29sIFdlYlByb2Nlc3NQb29sOjpzX3VzZVNlcGFyYXRl
U2VydmljZVdvcmtlclByb2Nlc3MgPSBmYWxzZTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiBwcm94eSwgUmVnaXN0cmFibGVE
b21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25D
b250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJs
ZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4g
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRv
KiB3ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVG
b3JTZXNzaW9uSUQoc2Vzc2lvbklEKTsKICAgICBpZiAoIXdlYnNpdGVEYXRhU3RvcmUpCkBAIC01
NDYsNyArNTQ2LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm8KICAgICBpZiAoc2VydmljZVdv
cmtlclBhZ2VJZGVudGlmaWVyKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgYSBzZXJ2aWNlIHdvcmtl
ciBmb3IgYSBzZXJ2aWNlIHdvcmtlciBwYWdlIHNvIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIHVz
ZSB1c2UgdGhlIHBhZ2UncyBXZWJQcm9jZXNzIGZvciB0aGUgc2VydmljZSB3b3JrZXIuCiAgICAg
ICAgIGlmICgoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6cHJv
Y2Vzc0ZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLT5wcm9jZXNzSWRl
bnRpZmllcigpKSkpIHsKLSAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVu
YWJsZVNlcnZpY2VXb3JrZXJzKHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKSk7CisgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5LT5lbmFibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2Vy
dmljZVdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJG
b3JXb3JrZXJzKCkpOwogICAgICAgICAgICAgaWYgKHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkt
PmlzSW5Qcm9jZXNzQ2FjaGUoKSkgewogICAgICAgICAgICAgICAgIHByb2Nlc3NQb29sLT53ZWJQ
cm9jZXNzQ2FjaGUoKS5yZW1vdmVQcm9jZXNzKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBX
ZWJQcm9jZXNzQ2FjaGU6OlNob3VsZFNodXREb3duUHJvY2Vzczo6Tm8pOwogICAgICAgICAgICAg
ICAgIEFTU0VSVCghc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgp
KTsKQEAgLTU2NCw0MiArNTY0LDkyIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHkgPSBwcm9jZXNzLnB0cigpOwotICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94
eS0+ZW5hYmxlU2VydmljZVdvcmtlcnMocHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXJGb3JTZXJ2aWNlV29ya2VycygpKTsKKyAgICAgICAgICAgIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHktPmVuYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBl
OjpTZXJ2aWNlV29ya2VyLCBwcm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
ZmllckZvcldvcmtlcnMoKSk7CiAKICAgICAgICAgICAgIGlmIChzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpIHsKICAgICAgICAgICAgICAgICBwcm9jZXNzUG9v
bC0+d2ViUHJvY2Vzc0NhY2hlKCkucmVtb3ZlUHJvY2Vzcygqc2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eSwgV2ViUHJvY2Vzc0NhY2hlOjpTaG91bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKICAgICAg
ICAgICAgICAgICBBU1NFUlQoIXNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNz
Q2FjaGUoKSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFdFQlBST0NFU1NQT09MX1JF
TEVBU0VfTE9HX1NUQVRJQyhTZXJ2aWNlV29ya2VyLCAiZXN0YWJsaXNoV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHJldXNpbmcgYW4gZXhpc3Rpbmcgd2ViIHByb2Nlc3Mg
KHByb2Nlc3M9JXAsIFBJRD0lZCkiLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBzZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIFdF
QlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhTZXJ2aWNlV29ya2VyLCAiZXN0YWJsaXNo
U2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyByZXVzaW5nIGFu
IGV4aXN0aW5nIHdlYiBwcm9jZXNzIChwcm9jZXNzPSVwLCBQSUQ9JWQpIiwgc2VydmljZVdvcmtl
clByb2Nlc3NQcm94eSwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmICgh
c2VydmljZVdvcmtlclByb2Nlc3NQcm94eSkgewotICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94
eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMoKnByb2Nlc3NQb29s
LCBSZWdpc3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFT
dG9yZSk7CisgICAgICAgIGF1dG8gbmV3UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5Ojpj
cmVhdGVGb3JXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtl
ciwgKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9
LCAqd2Vic2l0ZURhdGFTdG9yZSk7CiAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkg
PSBuZXdQcm9jZXNzUHJveHkucHRyKCk7CiAKLSAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFT
RV9MT0dfU1RBVElDKFNlcnZpY2VXb3JrZXIsICJlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MgY3JlYXRpbmcgYSBuZXcgc2VydmljZSB3b3JrZXIgcHJvY2Vz
cyAocHJvY2VzPSVwLCBQSUQ9JWQpIiwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgc2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAgIFdFQlBS
T0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhTZXJ2aWNlV29ya2VyLCAiZXN0YWJsaXNoU2Vy
dmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyBjcmVhdGluZyBhIG5l
dyBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzIChwcm9jZXM9JXAsIFBJRD0lZCkiLCBzZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5LCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRp
ZmllcigpKTsKIAogICAgICAgICBwcm9jZXNzUG9vbC0+aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3Mo
bmV3UHJvY2Vzc1Byb3h5LCB3ZWJzaXRlRGF0YVN0b3JlKTsKICAgICAgICAgcHJvY2Vzc1Bvb2wt
Pm1fcHJvY2Vzc2VzLmFwcGVuZChXVEZNb3ZlKG5ld1Byb2Nlc3NQcm94eSkpOwogICAgIH0KIAot
ICAgIEFTU0VSVCghc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmNvbnRhaW5zKCpzZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5KSk7Ci0gICAgc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eSk7CisgICAgd29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpzZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5KTsKIAotICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkt
PmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3Jr
ZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcy52
YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5z
dG9yZSgpLCByZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgaWYgKCFwcm9jZXNzUG9vbC0+bV9zZXJ2
aWNlV29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5LT5zZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VX
b3JrZXJVc2VyQWdlbnQpOworICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlz
aFNlcnZpY2VXb3JrZXJDb250ZXh0KHByb2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2VzID8g
cHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5t
X2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVEb21h
aW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQor
ICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRXb3JrZXJVc2VyQWdlbnQocHJv
Y2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFnZW50KTsKIH0KKyNlbmRpZgogCi12b2lkIFdlYlByb2Nl
c3NQb29sOjpyZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkm
IHByb2Nlc3MpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2Vz
KFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIHsKLSAgICBBU1NFUlQoc2VydmljZVdvcmtlclBy
b2Nlc3NlcygpLmNvbnRhaW5zKHByb2Nlc3MpKTsKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
KCkucmVtb3ZlKHByb2Nlc3MpOworICAgIEFTU0VSVCh3b3JrZXJQcm9jZXNzZXMoKS5jb250YWlu
cyhwcm9jZXNzKSk7CisgICAgd29ya2VyUHJvY2Vzc2VzKCkucmVtb3ZlKHByb2Nlc3MpOworfQor
Cit2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3Ry
YWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byogd2Vic2l0ZURhdGFTdG9y
ZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Np
b25JRCk7CisgICAgaWYgKCF3ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICB3ZWJzaXRlRGF0YVN0
b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOworICAgIGlm
ICghcHJvY2Vzc1Bvb2xzKCkuc2l6ZSgpKQorICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UmVmPFdlYlByb2Nlc3NQb29sPj4gc2hhcmVkV29ya2VyUHJvY2Vzc1Bvb2woV2ViUHJvY2Vzc1Bv
b2w6OmNyZWF0ZShBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCkuZ2V0KCkp
KTsKKworICAgIC8vIEFyYml0cmFyaWx5IGNob29zZSB0aGUgZmlyc3QgcHJvY2VzcyBwb29sIHRv
IGhvc3QgdGhlIHNoYXJlZCB3b3JrZXIgcHJvY2Vzcy4KKyAgICBhdXRvKiBwcm9jZXNzUG9vbCA9
IHByb2Nlc3NQb29scygpWzBdOworICAgIEFTU0VSVChwcm9jZXNzUG9vbCk7CisKKyAgICBXZWJQ
cm9jZXNzUHJveHkqIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSB7IG51bGxwdHIgfTsKKworICAg
IGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3NQb29sLT5tX3Byb2Nlc3NlcykgeworICAgICAg
ICBpZiAocHJvY2Vzcy5wdHIoKSA9PSBwcm9jZXNzUG9vbC0+bV9wcmV3YXJtZWRQcm9jZXNzLmdl
dCgpIHx8IHByb2Nlc3MtPmlzRHVtbXlQcm9jZXNzUHJveHkoKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBpZiAoJnByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRl
RGF0YVN0b3JlKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghcHJvY2Vzcy0+
aXNNYXRjaGluZ1JlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSA9IHByb2Nl
c3MucHRyKCk7CisgICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlV29ya2Vy
cyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgcHJvY2Vzc1Bvb2wt
PnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOworCisgICAgICAg
IGlmIChzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSkgeworICAg
ICAgICAgICAgcHJvY2Vzc1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nlc3MoKnNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0NhY2hlOjpTaG91bGRTaHV0RG93blBy
b2Nlc3M6Ok5vKTsKKyAgICAgICAgICAgIEFTU0VSVCghc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5
LT5pc0luUHJvY2Vzc0NhY2hlKCkpOworICAgICAgICB9CisKKyAgICAgICAgV0VCUFJPQ0VTU1BP
T0xfUkVMRUFTRV9MT0dfU1RBVElDKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyByZXVzaW5nIGFuIGV4aXN0aW5nIHdl
YiBwcm9jZXNzIChwcm9jZXNzPSVwLCBQSUQ9JWQpIiwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5
LCBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoIXNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSkgewor
ICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9y
V29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgKnByb2Nl
c3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0
ZURhdGFTdG9yZSk7CisgICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSA9IG5ld1Byb2Nl
c3NQcm94eS5wdHIoKTsKKworICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFU
SUMoU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzIGNyZWF0aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHBy
b2Nlc3M9JXAsIFBJRD0lZCkiLCBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHksIHNoYXJlZFdvcmtl
clByb2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisKKyAgICAgICAgcHJvY2Vzc1Bv
b2wtPmluaXRpYWxpemVOZXdXZWJQcm9jZXNzKG5ld1Byb2Nlc3NQcm94eSwgd2Vic2l0ZURhdGFT
dG9yZSk7CisgICAgICAgIHByb2Nlc3NQb29sLT5tX3Byb2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShu
ZXdQcm9jZXNzUHJveHkpKTsKKyAgICB9CisKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eSk7CisKKyAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkt
PmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVy
ZW5jZXMgPyBwcm9jZXNzUG9vbC0+bV93b3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vz
c1Bvb2wtPm1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3Ry
YWJsZURvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmICghcHJvY2Vz
c1Bvb2wtPm1fd29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQorICAgICAgICBzaGFyZWRXb3JrZXJQ
cm9jZXNzUHJveHktPnNldFdvcmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV93b3JrZXJVc2Vy
QWdlbnQpOwogfQotI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OndpbmRvd1NlcnZlckNv
bm5lY3Rpb25TdGF0ZUNoYW5nZWQoKQogewpAQCAtMTAwMywxMCArMTA1Myw4IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykK
IAogICAgIG1fYmFja0ZvcndhcmRDYWNoZS0+cmVtb3ZlRW50cmllc0ZvclByb2Nlc3MocHJvY2Vz
cyk7CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKHByb2Nlc3MuaXNSdW5u
aW5nU2VydmljZVdvcmtlcnMoKSkKLSAgICAgICAgcmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9j
ZXNzZXMocHJvY2Vzcyk7Ci0jZW5kaWYKKyAgICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdXb3JrZXJz
KCkpCisgICAgICAgIHJlbW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7CiAKICAgICBz
dGF0aWNfY2FzdDxXZWJDb250ZXh0U3VwcGxlbWVudCo+KHN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk+KCkpLT5wcm9jZXNzRGlkQ2xvc2UoJnByb2Nlc3MpOwogCkBAIC0xMDY3
LDEyICsxMTE1LDEyIEBAIFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9j
ZXNzRm9yUmVnaXN0cmFibGVEb21haW4oV2Vic2l0ZURhdGFTdG9yCiB9CiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCi1Vc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIFdlYlByb2Nl
c3NQb29sOjp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMo
KQorVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBXZWJQcm9jZXNzUG9vbDo6dXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKQogewotICAgIGlmICghbV91c2Vy
Q29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyKQotICAgICAgICBtX3VzZXJDb250ZW50
Q29udHJvbGxlckZvclNlcnZpY2VXb3JrZXIgPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6Y3JlYXRlKCk7CisgICAgaWYgKCFtX3VzZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtlcnMp
CisgICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2VycyA9IFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjpjcmVhdGUoKTsKIAotICAgIHJldHVybiBtX3VzZXJDb250ZW50
Q29udHJvbGxlckZvclNlcnZpY2VXb3JrZXItPmlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gbV91
c2VyQ29udGVudENvbnRyb2xsZXJGb3JXb3JrZXJzLT5pZGVudGlmaWVyKCk7CiB9CiAjZW5kaWYK
IApAQCAtMTExOSwxNSArMTE2NywxMyBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9v
bDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogCiAgICAg
YXV0byBwYWdlID0gcHJvY2Vzcy0+Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBXVEZNb3ZlKHBh
Z2VDb25maWd1cmF0aW9uKSk7CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYg
KCFtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcykgewotICAgICAgICBtX3NlcnZpY2VXb3JrZXJQ
cmVmZXJlbmNlcyA9IHBhZ2UtPnByZWZlcmVuY2VzU3RvcmUoKTsKLSAgICAgICAgZm9yIChhdXRv
JiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSkKLSAgICAg
ICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzLnVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNl
c1N0b3JlKCptX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyk7CisgICAgaWYgKCFtX3dvcmtlclBy
ZWZlcmVuY2VzKSB7CisgICAgICAgIG1fd29ya2VyUHJlZmVyZW5jZXMgPSBwYWdlLT5wcmVmZXJl
bmNlc1N0b3JlKCk7CisgICAgICAgIGZvciAoYXV0byYgd29ya2VyUHJvY2VzcyA6IHdvcmtlclBy
b2Nlc3NlcygpKQorICAgICAgICAgICAgd29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcmVmZXJl
bmNlc1N0b3JlKCptX3dvcmtlclByZWZlcmVuY2VzKTsKICAgICB9CiAgICAgaWYgKHVzZXJDb250
ZW50Q29udHJvbGxlcikKLSAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNl
V29ya2VyID0gdXNlckNvbnRlbnRDb250cm9sbGVyOwotI2VuZGlmCisgICAgICAgIG1fdXNlckNv
bnRlbnRDb250cm9sbGVyRm9yV29ya2VycyA9IHVzZXJDb250ZW50Q29udHJvbGxlcjsKIAogICAg
IGJvb2wgZW5hYmxlUHJvY2Vzc1N3YXBPbkNyb3NzU2l0ZU5hdmlnYXRpb24gPSBwYWdlLT5wcmVm
ZXJlbmNlcygpLnByb2Nlc3NTd2FwT25Dcm9zc1NpdGVOYXZpZ2F0aW9uRW5hYmxlZCgpOwogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0xMTUwLDE2ICsxMTk2LDE0IEBAIFJlZjxXZWJQYWdl
UHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGll
bnQsIFJlZjxBUEk6CiAgICAgcmV0dXJuIHBhZ2U7CiB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCi12b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50
KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlV29y
a2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQogewotICAgIGlmIChtX3NlcnZp
Y2VXb3JrZXJVc2VyQWdlbnQgPT0gdXNlckFnZW50KQorICAgIGlmIChtX3dvcmtlclVzZXJBZ2Vu
dCA9PSB1c2VyQWdlbnQpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3NlcnZpY2VXb3JrZXJVc2Vy
QWdlbnQgPSB1c2VyQWdlbnQ7Ci0gICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6
IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSkKLSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3Mu
c2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQpOworICAg
IG1fd29ya2VyVXNlckFnZW50ID0gdXNlckFnZW50OworICAgIGZvciAoYXV0byYgd29ya2VyUHJv
Y2VzcyA6IHdvcmtlclByb2Nlc3NlcygpKQorICAgICAgICB3b3JrZXJQcm9jZXNzLnNldFdvcmtl
clVzZXJBZ2VudChtX3dvcmtlclVzZXJBZ2VudCk7CiB9Ci0jZW5kaWYKIAogdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6cGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCiB7CkBAIC0xNTM4LDgg
KzE1ODIsMTMgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlU2VydmljZVdvcmtlcnMo
KQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7
ICp0aGlzIH07Ci0gICAgd2hpbGUgKHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb21wdXRlU2l6
ZSgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkuYmVnaW4oKS0+ZGlzYWJsZVNl
cnZpY2VXb3JrZXJzKCk7CisgICAgVmVjdG9yPFJlZjxXZWJQcm9jZXNzUHJveHk+PiBzZXJ2aWNl
V29ya2VyUHJvY2Vzc2VzOworICAgIHdvcmtlclByb2Nlc3NlcygpLmZvckVhY2goWyZdKGF1dG8m
IHByb2Nlc3MpIHsKKyAgICAgICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMo
KSkKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYXBwZW5kKHByb2Nlc3MpOwor
ICAgIH0pOworICAgIGZvciAoYXV0byYgc2VydmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzKQorICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+ZGlzYWJsZVdvcmtl
cnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgog
fQogCkBAIC0xNzY3LDEzICsxODE2LDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcG9ydFdl
YkNvbnRlbnRDUFVUaW1lKFNlY29uZHMgY3B1VGltZSwgdWludDY0X3QgYWN0aXZpdHlTCiAjZW5k
aWYKIH0KIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLVdlYWtIYXNoU2V0PFdlYlByb2Nl
c3NQcm94eT4mIFdlYlByb2Nlc3NQb29sOjpzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkKK1dlYWtI
YXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIFdlYlByb2Nlc3NQb29sOjp3b3JrZXJQcm9jZXNzZXMo
KQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJv
eHk+PiBwcm9jZXNzZXM7CiAgICAgcmV0dXJuIHByb2Nlc3NlczsKIH0KLSNlbmRpZgogCiB2b2lk
IFdlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpCiB7CkBAIC0xNzg1LDIw
ICsxODMyLDI1IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb25z
KCkKICAgICBpZiAoYXV0byogZ3B1UHJvY2VzcyA9IEdQVVByb2Nlc3NQcm94eTo6c2luZ2xldG9u
SWZDcmVhdGVkKCkpCiAgICAgICAgIGdwdVByb2Nlc3MtPnVwZGF0ZVByb2Nlc3NBc3NlcnRpb24o
KTsKICNlbmRpZgotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKwogICAgIC8vIENoZWNrIG9u
IG5leHQgcnVuIGxvb3Agc2luY2UgdGhlIHdlYiBwcm9jZXNzIHByb3h5IHRva2VucyBhcmUgcHJv
YmFibHkgYmVpbmcgdXBkYXRlZC4KICAgICBjYWxsT25NYWluUnVuTG9vcChbXSB7Ci0gICAgICAg
IGZvciAoYXV0byYgc2VydmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
KCkpCi0gICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy51cGRhdGVTZXJ2aWNlV29ya2Vy
UHJvY2Vzc0Fzc2VydGlvbigpOwotICAgIH0pOworICAgICAgICB3b3JrZXJQcm9jZXNzZXMoKS5m
b3JFYWNoKFtdKGF1dG8mIHdvcmtlclByb2Nlc3MpIHsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisgICAgICAgICAgICBpZiAod29ya2VyUHJvY2Vzcy5pc1J1bm5pbmdTZXJ2aWNlV29ya2Vy
cygpKQorICAgICAgICAgICAgICAgIHdvcmtlclByb2Nlc3MudXBkYXRlV29ya2VyUHJvY2Vzc0Fz
c2VydGlvbihXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogI2Vu
ZGlmCisgICAgICAgICAgICBpZiAod29ya2VyUHJvY2Vzcy5pc1J1bm5pbmdTaGFyZWRXb3JrZXJz
KCkpCisgICAgICAgICAgICAgICAgd29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcm9jZXNzQXNz
ZXJ0aW9uKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKTsKKyAgICAg
ICAgfSk7CisgICAgfSk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6OmlzU2VydmljZVdvcmtl
clBhZ2VJRChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgaW5lZmZpY2llbnQuCi0g
ICAgcmV0dXJuIFdURjo6YW55T2Yoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLCBbcGFnZUlEXShh
dXRvJiBwcm9jZXNzKSB7CisgICAgcmV0dXJuIFdURjo6YW55T2Yod29ya2VyUHJvY2Vzc2VzKCks
IFtwYWdlSURdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuIHByb2Nlc3MuaGFzU2Vy
dmljZVdvcmtlclBhZ2VQcm94eShwYWdlSUQpOwogICAgIH0pOwogI2VuZGlmCkBAIC0yMTI0LDE2
ICsyMTc2LDI2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFVzZVNlcGFyYXRlU2VydmljZVdv
cmtlclByb2Nlc3MoYm9vbCB1c2VTZXBhcmF0ZVNlcnZpY2VXCiB9CiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCitzaXplX3QgV2ViUHJvY2Vzc1Bvb2w6OnNlcnZpY2VXb3JrZXJQcm94aWVz
Q291bnQoKSBjb25zdAoreworICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKKyAgICB3b3JrZXJQcm9j
ZXNzZXMoKS5mb3JFYWNoKFsmXShhdXRvJiBwcm9jZXNzKSB7CisgICAgICAgIGlmIChwcm9jZXNz
LmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCisgICAgICAgICAgICArK2NvdW50OworICAgIH0p
OworICAgIHJldHVybiBjb3VudDsKK30KKwogYm9vbCBXZWJQcm9jZXNzUG9vbDo6aGFzU2Vydmlj
ZVdvcmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdAogewotICAgIHJldHVy
biBXVEY6OmFueU9mKHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2Vzcykg
eworICAgIHJldHVybiBXVEY6OmFueU9mKHdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9j
ZXNzKSB7CiAgICAgICAgIHJldHVybiBwcm9jZXNzLmhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5k
QWN0aXZpdHlGb3JUZXN0aW5nKCk7CiAgICAgfSk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6
Omhhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gV1RGOjphbnlPZihzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8m
IHByb2Nlc3MpIHsKKyAgICByZXR1cm4gV1RGOjphbnlPZih3b3JrZXJQcm9jZXNzZXMoKSwgW10o
YXV0byYgcHJvY2VzcykgewogICAgICAgICByZXR1cm4gcHJvY2Vzcy5oYXNTZXJ2aWNlV29ya2Vy
QmFja2dyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggNDMyYzY1ZWU5OTQ5Li5lNzBiNmY0Mjlm
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMzc0LDE3
ICszNzQsMjAgQEAgcHVibGljOgogICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NEaWRUZXJtaW5hdGUo
TmV0d29ya1Byb2Nlc3NQcm94eSYsIE5ldHdvcmtQcm9jZXNzUHJveHk6OlRlcm1pbmF0aW9uUmVh
c29uKTsKIAogICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyUGFnZUlEKFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIpIGNvbnN0OworICAgIHZvaWQgcmVtb3ZlRnJvbVdvcmtlclByb2Nlc3NlcyhXZWJQcm9j
ZXNzUHJveHkmKTsKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBzdGF0aWMgdm9p
ZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29y
a1Byb2Nlc3NQcm94eSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3Jr
ZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7Ci0gICAgdm9pZCByZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9j
ZXNzUHJveHkmKTsKLSAgICBzaXplX3Qgc2VydmljZVdvcmtlclByb3hpZXNDb3VudCgpIGNvbnN0
IHsgcmV0dXJuIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb21wdXRlU2l6ZSgpOyB9Ci0gICAg
dm9pZCB1cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50
KTsKLSAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVzZXJDb250ZW50Q29udHJv
bGxlcklkZW50aWZpZXJGb3JTZXJ2aWNlV29ya2VycygpOworICAgIHN0YXRpYyB2b2lkIGVzdGFi
bGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6
OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICBzaXplX3Qgc2Vy
dmljZVdvcmtlclByb3hpZXNDb3VudCgpIGNvbnN0OworICAgIFVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXIgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKTsK
ICAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkg
Y29uc3Q7CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9yVGVz
dGluZygpIGNvbnN0OwogI2VuZGlmCiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyUHJvY2Vzc0NyYXNo
ZWQoV2ViUHJvY2Vzc1Byb3h5Jik7CiAKKyAgICB2b2lkIHVwZGF0ZVdvcmtlclVzZXJBZ2VudChj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudCk7CisgICAgc3RhdGljIHZvaWQgZXN0YWJsaXNoU2hhcmVk
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OworCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25FbmFi
bGVkKCkgY29uc3Q7CiAjZW5kaWYKQEAgLTYxOCwxMyArNjIxLDExIEBAIHByaXZhdGU6CiAKICAg
ICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBXZWFrUHRyPFdlYlByb2Nlc3NQcm94eT4+IG1fZHVt
bXlQcm9jZXNzUHJveGllczsgLy8gTGlnaHR3ZWlnaHQgV2ViUHJvY2Vzc1Byb3h5IG9iamVjdHMg
d2l0aG91dCBiYWNraW5nIHByb2Nlc3MuCiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0g
ICAgc3RhdGljIFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzZXMoKTsKLSAgICBib29sIG1fd2FpdGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVj
dGlvbiB7IGZhbHNlIH07Ci0gICAgU3RyaW5nIG1fc2VydmljZVdvcmtlclVzZXJBZ2VudDsKLSAg
ICBzdGQ6Om9wdGlvbmFsPFdlYlByZWZlcmVuY2VzU3RvcmU+IG1fc2VydmljZVdvcmtlclByZWZl
cmVuY2VzOwotICAgIFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gbV91c2Vy
Q29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyOwotI2VuZGlmCisgICAgc3RhdGljIFdl
YWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIHdvcmtlclByb2Nlc3NlcygpOworCisgICAgc3Rk
OjpvcHRpb25hbDxXZWJQcmVmZXJlbmNlc1N0b3JlPiBtX3dvcmtlclByZWZlcmVuY2VzOworICAg
IFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gbV91c2VyQ29udGVudENvbnRy
b2xsZXJGb3JXb3JrZXJzOworICAgIFN0cmluZyBtX3dvcmtlclVzZXJBZ2VudDsKIAogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKICAgICBSZWZQdHI8R1BVUHJvY2Vzc1Byb3h5PiBtX2dwdVByb2Nl
c3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAz
YmJlMDNhN2RhZTIuLjE4YWYzNDZmZGIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Bvb2wuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEu
aCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCkBAIC0xODIsMTEgKzE4Mywx
MSBAQCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZShXZWJQcm9j
ZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYnNpdAogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JTZXJ2
aWNlV29ya2VycyhXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWlu
JiYgcmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUp
CitSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvcldvcmtlcnMo
V29ya2VyVHlwZSB3b3JrZXJUeXBlLCBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFJlZ2lz
dHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNp
dGVEYXRhU3RvcmUpCiB7CiAgICAgYXV0byBwcm94eSA9IGFkb3B0UmVmKCpuZXcgV2ViUHJvY2Vz
c1Byb3h5KHByb2Nlc3NQb29sLCAmd2Vic2l0ZURhdGFTdG9yZSwgSXNQcmV3YXJtZWQ6Ok5vLCBD
cm9zc09yaWdpbk1vZGU6OlNoYXJlZCwgQ2FwdGl2ZVBvcnRhbE1vZGU6OkRpc2FibGVkKSk7CiAg
ICAgcHJveHktPm1fcmVnaXN0cmFibGVEb21haW4gPSBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWlu
KTsKLSAgICBwcm94eS0+ZW5hYmxlU2VydmljZVdvcmtlcnMocHJvY2Vzc1Bvb2wudXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllckZvclNlcnZpY2VXb3JrZXJzKCkpOworICAgIHByb3h5LT5l
bmFibGVXb3JrZXJzKHdvcmtlclR5cGUsIHByb2Nlc3NQb29sLnVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOwogICAgIHByb3h5LT5jb25uZWN0KCk7CiAgICAgcmV0
dXJuIHByb3h5OwogfQpAQCAtOTk1LDEwICs5OTYsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmRpZEJlY29tZVVucmVzcG9uc2l2ZSgpCiAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGlzUmVz
cG9uc2l2ZUNhbGxiYWNrcykKICAgICAgICAgY2FsbGJhY2soaXNXZWJQcm9jZXNzUmVzcG9uc2l2
ZSk7CiAKLSAgICAvLyBJZiB0aGUgd2ViIHByb2Nlc3MgYmVjb21lcyB1bnJlc3BvbnNpdmUgYW5k
IG9ubHkgcnVucyBzZXJ2aWNlIHdvcmtlcnMsIGtpbGwgaXQgb3Vyc2VsdmVzIHNpbmNlIHRoZXJl
IGFyZSBubyBuYXRpdmUgY2xpZW50cyB0byBkbyBpdC4KLSAgICBpZiAoaXNSdW5uaW5nU2Vydmlj
ZVdvcmtlcnMoKSAmJiBtX3BhZ2VNYXAuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFdFQlBST0NFU1NQ
Uk9YWV9SRUxFQVNFX0xPR19FUlJPUihQZXJmb3JtYW5jZUxvZ2dpbmcsICJkaWRCZWNvbWVVbnJl
c3BvbnNpdmU6IFRlcm1pbmF0aW5nIHNlcnZpY2Ugd29ya2VyLW9ubHkgd2ViIHByb2Nlc3MgYmVj
YXVzZSBpdCBpcyB1bnJlc3BvbnNpdmUiKTsKLSAgICAgICAgZGlzYWJsZVNlcnZpY2VXb3JrZXJz
KCk7CisgICAgLy8gSWYgdGhlIHdlYiBwcm9jZXNzIGJlY29tZXMgdW5yZXNwb25zaXZlIGFuZCBv
bmx5IHJ1bnMgc2VydmljZS9zaGFyZWQgd29ya2Vycywga2lsbCBpdCBvdXJzZWx2ZXMgc2luY2Ug
dGhlcmUgYXJlIG5vIG5hdGl2ZSBjbGllbnRzIHRvIGRvIGl0LgorICAgIGlmIChpc1J1bm5pbmdX
b3JrZXJzKCkgJiYgbV9wYWdlTWFwLmlzRW1wdHkoKSkgeworICAgICAgICBXRUJQUk9DRVNTUFJP
WFlfUkVMRUFTRV9MT0dfRVJST1IoUGVyZm9ybWFuY2VMb2dnaW5nLCAiZGlkQmVjb21lVW5yZXNw
b25zaXZlOiBUZXJtaW5hdGluZyB3b3JrZXItb25seSB3ZWIgcHJvY2VzcyBiZWNhdXNlIGl0IGlz
IHVucmVzcG9uc2l2ZSIpOworICAgICAgICBkaXNhYmxlV29ya2Vycyh7IFdvcmtlclR5cGU6OlNl
cnZpY2VXb3JrZXIsIFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciB9KTsKICAgICAgICAgdGVybWlu
YXRlKCk7CiAgICAgfQogfQpAQCAtMTY5NCw4ICsxNjk1LDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKGNvbnN0IFVSTCYgdXJsKQog
ICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7
IHVybCB9OwogICAgIGlmIChtX3JlZ2lzdHJhYmxlRG9tYWluICYmICptX3JlZ2lzdHJhYmxlRG9t
YWluICE9IHJlZ2lzdHJhYmxlRG9tYWluKSB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQot
ICAgICAgICBkaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICAgICAgZGlzYWJsZVdvcmtlcnMo
V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiAjZW5kaWYKKwogICAgICAgICAvLyBOdWxsIG91
dCByZWdpc3RyYWJsZSBkb21haW4gc2luY2UgdGhpcyBwcm9jZXNzIGhhcyBub3cgYmVlbiB1c2Vk
IGZvciBzZXZlcmFsIGRvbWFpbnMuCiAgICAgICAgIG1fcmVnaXN0cmFibGVEb21haW4gPSBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IH07CiAgICAgICAgIHJldHVybjsKQEAgLTE4NjEsNjMg
KzE4NjMsODUgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuZEJhY2tncm91bmRBY3Rpdml0eUZv
ckZ1bGxzY3JlZW5JbnB1dCgpCiAKICNlbmRpZgogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KGNv
bnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
cmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxF
QVNFX0xPRyhMb2FkaW5nLCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQ6IFN0YXJ0ZWQi
KTsKLSAgICBtYXJrUHJvY2Vzc0FzUmVjZW50bHlVc2VkKCk7Ci0gICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRlZmF1bHRQYWdlR3JvdXAoKS5wYWdl
R3JvdXBJRCgpLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VQ
cm94eUlELCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VJRCwg
c3RvcmUsIHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIG1f
c2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5pbml0aWFsaXphdGlvbkRhdGEgfSwgW3RoaXMsIHdl
YWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICh3ZWFrVGhpcykKLSAg
ICAgICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZXN0YWJsaXNo
U2VydmljZVdvcmtlckNvbnRleHQ6IEZpbmlzaGVkIik7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7Ci0gICAgfSwgMCk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRTZXJ2aWNl
V29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQordm9pZCBXZWJQcm9jZXNz
UHJveHk6OnNldFdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKIHsKLSAg
ICBBU1NFUlQobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pOwotICAgIHNlbmQoTWVzc2FnZXM6
OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2VyQWdlbnQg
fSwgMCk7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIGlmIChtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbikKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OlNldFVzZXJBZ2VudCB7IHVzZXJBZ2VudCB9LCAwKTsKKyNlbmRpZgorICAg
IGlmIChtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlNldFVzZXJBZ2VudCB7IHVz
ZXJBZ2VudCB9LCAwKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVNlcnZpY2VX
b3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQor
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiB7Ci0gICAgQVNTRVJUKG1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDApOworI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpVcGRh
dGVQcmVmZXJlbmNlc1N0b3JlIHsgc3RvcmUgfSwgMCk7CisjZW5kaWYKKyAgICBpZiAobV9zaGFy
ZWRXb3JrZXJJbmZvcm1hdGlvbikKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpVcGRhdGVQcmVmZXJlbmNlc1N0b3JlIHsgc3Rv
cmUgfSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29ya2Vy
UHJvY2Vzc0Fzc2VydGlvbigpCisvLyBGSVhNRTogQ2xpZW50cyBkbyBub3QgcHJvcGVybHkgZ2V0
IHBvcHVsYXRlZCBpbiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uLgordm9pZCBXZWJQcm9jZXNz
UHJveHk6OnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZSB3b3JrZXJUeXBl
KQogewotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwg
InVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uOiIpOwotICAgIEFTU0VSVChtX3Nl
cnZpY2VXb3JrZXJJbmZvcm1hdGlvbik7Ci0gICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1h
dGlvbikKKyAgICBhdXRvJiB3b3JrZXJJbmZvcm1hdGlvbiA9IHdvcmtlclR5cGUgPT0gV29ya2Vy
VHlwZTo6U2hhcmVkV29ya2VyID8gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA6IG1fc2Vydmlj
ZVdvcmtlckluZm9ybWF0aW9uOworICAgIEFTU0VSVCh3b3JrZXJJbmZvcm1hdGlvbik7CisgICAg
aWYgKCF3b3JrZXJJbmZvcm1hdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBzaG91
bGRUYWtlRm9yZWdyb3VuZEFjdGl2aXR5ID0gV1RGOjphbnlPZihtX3NlcnZpY2VXb3JrZXJJbmZv
cm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2VzLCBbJl0oYXV0byYgcHJvY2VzcykgeworICAgIFdFQlBS
T0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVdvcmtlclBy
b2Nlc3NBc3NlcnRpb246IHdvcmtlclR5cGU9JXtwdWJsaWN9cyIsIHdvcmtlclR5cGUgPT0gV29y
a2VyVHlwZTo6U2hhcmVkV29ya2VyID8gInNoYXJlZCIgOiAic2VydmljZSIpOworCisgICAgYm9v
bCBzaG91bGRUYWtlRm9yZWdyb3VuZEFjdGl2aXR5ID0gV1RGOjphbnlPZih3b3JrZXJJbmZvcm1h
dGlvbi0+Y2xpZW50UHJvY2Vzc2VzLCBbJl0oYXV0byYgcHJvY2VzcykgewogICAgICAgICByZXR1
cm4gJnByb2Nlc3MgIT0gdGhpcyAmJiAhIXByb2Nlc3MubV9mb3JlZ3JvdW5kVG9rZW47CiAgICAg
fSk7CiAgICAgaWYgKHNob3VsZFRha2VGb3JlZ3JvdW5kQWN0aXZpdHkpIHsKLSAgICAgICAgaWYg
KCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkRm9yZWdyb3VuZEFjdGl2aXR5KG1fc2VydmljZVdv
cmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCi0gICAgICAgICAgICBtX3NlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5mb3JlZ3JvdW5kQWN0aXZpdHkoIlNl
cnZpY2UgV29ya2VyIGZvciBmb3JlZ3JvdW5kIHZpZXcocykiX3MpOworICAgICAgICBpZiAoIVBy
b2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRGb3JlZ3JvdW5kQWN0aXZpdHkod29ya2VySW5mb3JtYXRp
b24tPmFjdGl2aXR5KSkKKyAgICAgICAgICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9
IG1fdGhyb3R0bGVyLmZvcmVncm91bmRBY3Rpdml0eSgiV29ya2VyIGZvciBmb3JlZ3JvdW5kIHZp
ZXcocykiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYm9vbCBzaG91bGRUYWtl
QmFja2dyb3VuZEFjdGl2aXR5ID0gV1RGOjphbnlPZihtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlv
bi0+Y2xpZW50UHJvY2Vzc2VzLCBbJl0oYXV0byYgcHJvY2VzcykgeworICAgIGJvb2wgc2hvdWxk
VGFrZUJhY2tncm91bmRBY3Rpdml0eSA9IFdURjo6YW55T2Yod29ya2VySW5mb3JtYXRpb24tPmNs
aWVudFByb2Nlc3NlcywgWyZdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuICZwcm9j
ZXNzICE9IHRoaXMgJiYgISFwcm9jZXNzLm1fYmFja2dyb3VuZFRva2VuOwogICAgIH0pOwogICAg
IGlmIChzaG91bGRUYWtlQmFja2dyb3VuZEFjdGl2aXR5KSB7Ci0gICAgICAgIGlmICghUHJvY2Vz
c1Rocm90dGxlcjo6aXNWYWxpZEJhY2tncm91bmRBY3Rpdml0eShtX3NlcnZpY2VXb3JrZXJJbmZv
cm1hdGlvbi0+YWN0aXZpdHkpKQotICAgICAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdv
cmtlciBmb3IgYmFja2dyb3VuZCB2aWV3KHMpIl9zKTsKKyAgICAgICAgaWYgKCFQcm9jZXNzVGhy
b3R0bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0aW9uLT5hY3Rp
dml0eSkpCisgICAgICAgICAgICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90
dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIldvcmtlciBmb3IgYmFja2dyb3VuZCB2aWV3KHMpIl9z
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChtX2hhc1NlcnZpY2VXb3JrZXJC
YWNrZ3JvdW5kUHJvY2Vzc2luZykgeworICAgIGlmICh3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6
OlNlcnZpY2VXb3JrZXIgJiYgbV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3Npbmcp
IHsKICAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9u
LCAiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tncm91bmQgcHJvY2Vzc2luZyIpOwotICAgICAgICBp
ZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkobV9zZXJ2aWNl
V29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKLSAgICAgICAgICAgIG1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgi
U2VydmljZSBXb3JrZXIgZm9yIGJhY2tncm91bmQgcHJvY2Vzc2luZyJfcyk7CisgICAgICAgIGlm
ICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEJhY2tncm91bmRBY3Rpdml0eSh3b3JrZXJJbmZv
cm1hdGlvbi0+YWN0aXZpdHkpKQorICAgICAgICAgICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2
aXR5ID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3Ig
YmFja2dyb3VuZCBwcm9jZXNzaW5nIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG51bGxwdHI7CisgICAgd29y
a2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbnVsbHB0cjsKK30KKwordm9pZCBXZWJQcm9jZXNz
UHJveHk6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNT
dG9yZSYgc3RvcmUsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFdF
QlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRX
b3JrZXJDb250ZXh0OiBTdGFydGVkIik7CisgICAgbWFya1Byb2Nlc3NBc1JlY2VudGx5VXNlZCgp
OworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RXN0YWJsaXNo
U2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bv
b2woKS5kZWZhdWx0UGFnZUdyb3VwKCkucGFnZUdyb3VwSUQoKSwgbV9zaGFyZWRXb3JrZXJJbmZv
cm1hdGlvbi0+d29ya2VyUGFnZVByb3h5SUQsIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24tPndv
cmtlclBhZ2VJRCwgc3RvcmUsIHJlZ2lzdHJhYmxlRG9tYWluLCBtX3NoYXJlZFdvcmtlckluZm9y
bWF0aW9uLT5pbml0aWFsaXphdGlvbkRhdGEgfSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KCkgbXV0YWJsZSB7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgIFdFQlBST0NF
U1NQUk9YWV9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJD
b250ZXh0OiBGaW5pc2hlZCIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0s
IDApOworfQorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQordm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmIHN0b3JlLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIHN0
ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3Jr
ZXJQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZXN0
YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQ6IFN0YXJ0ZWQiKTsKKyAgICBtYXJrUHJvY2Vzc0Fz
UmVjZW50bHlVc2VkKCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzOjpFc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzIHsgcHJvY2Vzc1Bvb2woKS5kZWZhdWx0UGFnZUdyb3VwKCkucGFnZUdyb3VwSUQoKSwgbV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPndvcmtlclBhZ2VQcm94eUlELCBtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbi0+d29ya2VyUGFnZUlELCBzdG9yZSwgcmVnaXN0cmFibGVEb21haW4sIHNl
cnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmlu
aXRpYWxpemF0aW9uRGF0YSB9LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxl
IHsKKyAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JF
TEVBU0VfTE9HKExvYWRpbmcsICJlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dDogRmluaXNo
ZWQiKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9LCAwKTsKIH0KIAogdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2Vi
UHJvY2Vzc1Byb3h5JiBwcm94eSkKQEAgLTE5MjcsNyArMTk1MSw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94
eSYgcHJveHkpCiAKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtl
ciwgInJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3M6IGNsaWVudFByb2Nlc3M9JXAs
IGNsaWVudFBJRD0lZCIsICZwcm94eSwgcHJveHkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAg
bV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3Nlcy5hZGQocHJveHkpOwot
ICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBkYXRlV29y
a2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KIAogdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhX
ZWJQcm9jZXNzUHJveHkmIHByb3h5KQpAQCAtMTkzNyw3ICsxOTYxLDcgQEAgdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNz
UHJveHkmIHByb3gKIAogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29y
a2VyLCAidW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzOiBjbGllbnRQcm9jZXNz
PSVwLCBjbGllbnRQSUQ9JWQiLCAmcHJveHksIHByb3h5LnByb2Nlc3NJZGVudGlmaWVyKCkpOwog
ICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMucmVtb3ZlKHBy
b3h5KTsKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOworICAgIHVw
ZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9
CiAKIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2
aXR5Rm9yVGVzdGluZygpIGNvbnN0CkBAIC0xOTU3LDcgKzE5ODEsNyBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6c3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoKQogCiAgICAg
V0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAic3RhcnRTZXJ2
aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmciKTsKICAgICBtX2hhc1NlcnZpY2VXb3JrZXJC
YWNrZ3JvdW5kUHJvY2Vzc2luZyA9IHRydWU7Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nl
c3NBc3NlcnRpb24oKTsKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5
cGU6OlNlcnZpY2VXb3JrZXIpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5kU2Vydmlj
ZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKCkKQEAgLTE5NjcsMjMgKzE5OTEsMzkgQEAgdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZygp
CiAKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJl
bmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmciKTsKICAgICBtX2hhc1NlcnZpY2VX
b3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyA9IGZhbHNlOwotICAgIHVwZGF0ZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihX
b3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaXNhYmxlU2VydmljZVdvcmtlcnMoKQor
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpc2FibGVXb3JrZXJzKE9wdGlvblNldDxXb3JrZXJUeXBl
PiB3b3JrZXJUeXBlKQogewotICAgIGlmICghbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisg
ICAgQVNTRVJUKCF3b3JrZXJUeXBlLmlzRW1wdHkoKSk7CisKKyAgICBib29sIGRpZENoYW5nZSA9
IGZhbHNlOworICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNlcnZpY2VX
b3JrZXIpICYmIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKSB7CisgICAgICAgIG1fc2Vydmlj
ZVdvcmtlckluZm9ybWF0aW9uID0geyB9OworICAgICAgICBkaWRDaGFuZ2UgPSB0cnVlOworICAg
IH0KKyAgICBpZiAod29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIp
ICYmIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24pIHsKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJJ
bmZvcm1hdGlvbiA9IHsgfTsKKyAgICAgICAgZGlkQ2hhbmdlID0gdHJ1ZTsKKyAgICB9CisgICAg
aWYgKCFkaWRDaGFuZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdFQlBST0NFU1NQUk9YWV9S
RUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiZGlzYWJsZVNlcnZpY2VXb3JrZXJzOiIpOwotICAg
IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uID0geyB9OworICAgIFdFQlBST0NFU1NQUk9YWV9S
RUxFQVNFX0xPRyhQcm9jZXNzLCAiZGlzYWJsZVdvcmtlcnM6IERpc2FibGluZyB3b3JrZXJzIChT
aGFyZWRXb3JrZXJzPSVkLCBTZXJ2aWNlV29ya2Vycz0lZCkiLCB3b3JrZXJUeXBlLmNvbnRhaW5z
KFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciksIHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlw
ZTo6U2VydmljZVdvcmtlcikpOworCiAgICAgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNz
VGltZXIoKTsKIAorICAgIGlmICghaXNSdW5uaW5nV29ya2VycygpKQorICAgICAgICBwcm9jZXNz
UG9vbCgpLnJlbW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMoKnRoaXMpOworCiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQotICAgIHByb2Nlc3NQb29sKCkucmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMoKnRoaXMpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpDbG9zZSB7IH0sIDApOworICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdv
cmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q2xvc2UgeyB9LCAwKTsKICNlbmRpZgorICAgIGlmICh3
b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlcikpCisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q2xv
c2UgeyB9LCAwKTsKIAogICAgIG1heWJlU2h1dERvd24oKTsKIH0KQEAgLTIwMDQsMTEgKzIwNDQs
MTMgQEAgc3RhdGljIFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3RE
YXRhLCBVUkw+PiBjb250ZW50UnVsZUxpc3RzRnIKIH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nl
c3NQcm94eTo6ZW5hYmxlU2VydmljZVdvcmtlcnMoY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllciYgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKK3ZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjplbmFibGVXb3JrZXJzKFdvcmtlclR5cGUgd29ya2VyVHlwZSwgY29uc3QgVXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
ZmllcikKIHsKLSAgICBBU1NFUlQoIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsKLSAgICBX
RUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgImVuYWJsZVNlcnZpY2VX
b3JrZXJzOiIpOwotICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uID0gU2VydmljZVdvcmtl
ckluZm9ybWF0aW9uIHsKKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2VydmljZVdv
cmtlciwgImVuYWJsZVdvcmtlcnM6IHdvcmtlclR5cGU9JXUiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4od29ya2VyVHlwZSkpOworICAgIGF1dG8mIHdvcmtlckluZm9ybWF0aW9uID0gd29ya2VyVHlw
ZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9u
IDogbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247CisgICAgQVNTRVJUKCF3b3JrZXJJbmZvcm1h
dGlvbik7CisKKyAgICB3b3JrZXJJbmZvcm1hdGlvbiA9IFdvcmtlckluZm9ybWF0aW9uIHsKICAg
ICAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwKICAgICAgICAgUGFnZUlk
ZW50aWZpZXI6OmdlbmVyYXRlKCksCiAgICAgICAgIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlv
bkRhdGEgewpAQCAtMjAyMSw5ICsyMDYzLDggQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJs
ZVNlcnZpY2VXb3JrZXJzKGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIKICAg
ICAgICAgeyB9CiAgICAgfTsKICAgICB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1l
cigpOwotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2Vy
UHJvY2Vzc0Fzc2VydGlvbigpOwotI2VuZGlmCisKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNz
ZXJ0aW9uKHdvcmtlclR5cGUpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRl
U2xlZXBEaXNhYmxlcihTbGVlcERpc2FibGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIHJlYXNvbiwgYm9vbCBkaXNwbGF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaAppbmRleCBmNTE0Yjk5MTZhZDQuLjE5MmQ1ZDJiNmY5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTEzNiw5ICsxMzYsMTMgQEAg
cHVibGljOgogCiAgICAgZW51bSBjbGFzcyBTaG91bGRMYXVuY2hQcm9jZXNzIDogYm9vbCB7IE5v
LCBZZXMgfTsKICAgICBlbnVtIGNsYXNzIENhcHRpdmVQb3J0YWxNb2RlIDogYm9vbCB7IERpc2Fi
bGVkLCBFbmFibGVkIH07CisgICAgZW51bSBjbGFzcyBXb3JrZXJUeXBlIDogdWludDMyX3Qgewor
ICAgICAgICBTZXJ2aWNlV29ya2VyID0gMSA8PCAwLAorICAgICAgICBTaGFyZWRXb3JrZXIgPSAx
IDw8IDEKKyAgICB9OwogCiAgICAgc3RhdGljIFJlZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZShX
ZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRhU3RvcmUqLCBDYXB0aXZlUG9ydGFsTW9kZSwgSXNQ
cmV3YXJtZWQsIFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZSA9IFdlYkNvcmU6OkNyb3NzT3JpZ2lu
TW9kZTo6U2hhcmVkLCBTaG91bGRMYXVuY2hQcm9jZXNzID0gU2hvdWxkTGF1bmNoUHJvY2Vzczo6
WWVzKTsKLSAgICBzdGF0aWMgUmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlRm9yU2VydmljZVdv
cmtlcnMoV2ViUHJvY2Vzc1Bvb2wmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBXZWJz
aXRlRGF0YVN0b3JlJik7CisgICAgc3RhdGljIFJlZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZUZv
cldvcmtlcnMoV29ya2VyVHlwZSwgV2ViUHJvY2Vzc1Bvb2wmLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmLCBXZWJzaXRlRGF0YVN0b3JlJik7CiAKICAgICB+V2ViUHJvY2Vzc1Byb3h5KCk7
CiAKQEAgLTE2MSw4ICsxNjUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc0luUHJvY2Vzc0Nh
Y2hlKGJvb2wsIFdpbGxTaHV0RG93biA9IFdpbGxTaHV0RG93bjo6Tm8pOwogICAgIGJvb2wgaXNJ
blByb2Nlc3NDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblByb2Nlc3NDYWNoZTsgfQogCi0g
ICAgdm9pZCBlbmFibGVTZXJ2aWNlV29ya2Vycyhjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyJik7Ci0gICAgdm9pZCBkaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICB2b2lk
IGVuYWJsZVdvcmtlcnMoV29ya2VyVHlwZSwgY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllciYpOworICAgIHZvaWQgZGlzYWJsZVdvcmtlcnMoT3B0aW9uU2V0PFdvcmtlclR5cGU+
KTsKIAogICAgIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IEFT
U0VSVChtX3dlYnNpdGVEYXRhU3RvcmUpOyByZXR1cm4gKm1fd2Vic2l0ZURhdGFTdG9yZTsgfQog
ICAgIHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlJik7CkBAIC0xOTQs
NiArMTk4LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1J1bm5pbmdTZXJ2aWNlV29ya2Vycygp
IGNvbnN0IHsgcmV0dXJuICEhbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247IH0KICAgICBib29s
IGlzU3RhbmRhbG9uZVNlcnZpY2VXb3JrZXJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gaXNSdW5u
aW5nU2VydmljZVdvcmtlcnMoKSAmJiAhcGFnZUNvdW50KCk7IH0KKyAgICBib29sIGlzUnVubmlu
Z1NoYXJlZFdvcmtlcnMoKSBjb25zdCB7IHJldHVybiAhIW1fc2hhcmVkV29ya2VySW5mb3JtYXRp
b247IH0KKyAgICBib29sIGlzU3RhbmRhbG9uZVNoYXJlZFdvcmtlclByb2Nlc3MoKSBjb25zdCB7
IHJldHVybiBpc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkgJiYgIXBhZ2VDb3VudCgpOyB9CisgICAg
Ym9vbCBpc1J1bm5pbmdXb3JrZXJzKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRXb3JrZXJJbmZv
cm1hdGlvbiB8fCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsgfQogCiAgICAgYm9vbCBpc0R1
bW15UHJvY2Vzc1Byb3h5KCkgY29uc3Q7CiAKQEAgLTM1OSwxMiArMzY2LDEzIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgdXBkYXRlQXVkaWJsZU1lZGlhQXNzZXJ0aW9ucygpOwogCisgICAgdm9pZCBz
ZXRXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCB1cGRhdGVXb3JrZXJQ
cmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKKyAgICB2b2lkIGVz
dGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIGNv
bnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKKyAgICB2b2lkIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZSk7
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZXN0YWJsaXNoU2VydmljZVdv
cmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChj
b25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0
b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKLSAgICBib29sIGhhc1NlcnZpY2VXb3Jr
ZXJQYWdlUHJveHkoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCkgeyByZXR1cm4g
bV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gJiYgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24t
PnNlcnZpY2VXb3JrZXJQYWdlUHJveHlJRCA9PSBwYWdlUHJveHlJRDsgfQotICAgIHZvaWQgdXBk
YXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKKyAgICBib29sIGhhc1NlcnZpY2VX
b3JrZXJQYWdlUHJveHkoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCkgeyByZXR1
cm4gbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gJiYgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24tPndvcmtlclBhZ2VQcm94eUlEID09IHBhZ2VQcm94eUlEOyB9CiAgICAgdm9pZCByZWdpc3Rl
clNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYpOwogICAgIHZvaWQg
dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYpOwog
ICAgIGJvb2wgaGFzU2VydmljZVdvcmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBj
b25zdDsKQEAgLTY0OCwxNCArNjU2LDE1IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBSZWZQdHI8
TG9nZ2VyPiBtX2xvZ2dlcjsKIAotICAgIHN0cnVjdCBTZXJ2aWNlV29ya2VySW5mb3JtYXRpb24g
ewotICAgICAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQYWdlUHJveHlJ
RDsKLSAgICAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgc2VydmljZVdvcmtlclBhZ2VJRDsK
KyAgICBzdHJ1Y3QgV29ya2VySW5mb3JtYXRpb24geworICAgICAgICBXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHdvcmtlclBhZ2VQcm94eUlEOworICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciB3b3JrZXJQYWdlSUQ7CiAgICAgICAgIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEg
aW5pdGlhbGl6YXRpb25EYXRhOwogICAgICAgICBQcm9jZXNzVGhyb3R0bGVyOjpBY3Rpdml0eVZh
cmlhbnQgYWN0aXZpdHk7CiAgICAgICAgIFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4gY2xp
ZW50UHJvY2Vzc2VzOwogICAgIH07Ci0gICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySW5m
b3JtYXRpb24+IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8
V29ya2VySW5mb3JtYXRpb24+IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOworICAgIHN0ZDo6
b3B0aW9uYWw8V29ya2VySW5mb3JtYXRpb24+IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb247CiAg
ICAgYm9vbCBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyB7IGZhbHNlIH07
CiAKICAgICBIYXNoTWFwPFdlYkNvcmU6OlNsZWVwRGlzYWJsZXJJZGVudGlmaWVyLCBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6U2xlZXBEaXNhYmxlcj4+IG1fc2xlZXBEaXNhYmxlcnM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3Nzkx
MThiZDJmM2UuLmQzYWJiOGYwYTRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04ODEsNiArODgxLDcgQEAKIAkJNDYxNEYxMzIyNURF
RDg3NTAwNzAwNkU3IC8qIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZBQzUzMjQyNURFRDgxRTAw
M0I1N0VDIC8qIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5oICovOyB9OwogCQk0NjFD
Q0NBNTIzMTQ4NUE3MDBCNjU5QjkgLyogVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzMjM2ODUyMzE0ODMzRjAw
QTQ4RkE3IC8qIFVJUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAqLzsgfTsKIAkJNDYxQ0NDQTYyMzE0
ODVBQTAwQjY1OUI5IC8qIFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjMyMzY4MzIzMTQ4MUVGMDBBNDhGQTcg
LyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAqLzsgfTsKKwkJNDYxRTFCRjIyNzlBMDExNjAw
NkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYxRTFCRUYyNzlBMDEw
RjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICov
OyB9OwogCQk0NjNGRDQ4MDFFQjk0NTk2MDBBMjk4MkMgLyogV0tQcm9jZXNzVGVybWluYXRpb25S
ZWFzb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
M0ZENDdGMUVCOTQ1ODQwMEEyOTgyQyAvKiBXS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2M0ZENDgy
MUVCOTRFQzAwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0ZENDgxMUVCOTRFQUQwMEEy
OTgyQyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCAqLzsgfTsKIAkJNDY1OUYyNUYyNzVG
RjZCMjAwQkJCMzY5IC8qIENhcHRpdmVQb3J0YWxNb2RlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NTlGMjVFMjc1RkY2QjIwMEJCQjM2
OSAvKiBDYXB0aXZlUG9ydGFsTW9kZU9ic2VydmVyLmggKi87IH07CkBAIC04OTAsNiArODkxLDgg
QEAKIAkJNDY3MUZGMUYyMzIxN0VGRjAwMUI2NEM3IC8qIFdlYlJlc291cmNlTG9hZE9ic2VydmVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjcxRkYx
RDIzMjE3RUZGMDAxQjY0QzcgLyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCAqLzsgfTsKIAkJ
NDY3RTQzRTgyMjQzRkY3RDAwQjEzOTI0IC8qIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdFNDNF
NzIyNDNGRjZEMDBCMTM5MjQgLyogV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaCAqLzsg
fTsKIAkJNDY4MDlBN0MyM0Q5MjI1RTAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgwOUE3QTIzRDkyMjUz
MDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuaCAqLzsgfTsKKwkJNDY5NDNERDAyNzYzRjgzQTAw
NEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0M0RDRjI3NjNGODM1MDA0QjYxMEUgLyogV2Vi
U2hhcmVkV29ya2VyUHJvdmlkZXIuaCAqLzsgfTsKKwkJNDY5NDNERDEyNzYzRjgzRjAwNEI2MTBF
IC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTQzRENEMjc2M0Y4MzUwMDRCNjEwRSAvKiBX
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2QTJCNjA5MUU1Njc2
QTYwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QTJCNjA3MUU1Njc1
QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaCAqLzsg
fTsKIAkJNDZCMDUyNDcyMjY2OEQ4NTAwMjY1Qjk3IC8qIFdlYkRldmljZU9yaWVudGF0aW9uQW5k
TW90aW9uQWNjZXNzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDZCMDUyNDQyMjY2OEQyMzAwMjY1Qjk3IC8qIFdlYkRldmljZU9yaWVu
dGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlci5oICovOyB9OwogCQk0NkJFQjZENzIyRkI5
QkQ3MDAyNjk4NjcgLyogU3RvcmFnZUFyZWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkVCNkQ1MjJGQjlCRDYwMDI2OTg2NyAvKiBTdG9yYWdlQXJl
YS5oICovOyB9OwpAQCAtODk3LDEwICs5MDAsMTMgQEAKIAkJNDZCRUI2REYyMkZCQjE2QjAwMjY5
ODY3IC8qIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkJFQjZERDIyRkJCMTZCMDAyNjk4NjcgLyogU2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2UuaCAqLzsgfTsKIAkJNDZCRUI2RTMyMkZCQjIxQTAwMjY5ODY3IC8q
IFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRUI2RTEyMkZCQjIxQTAwMjY5ODY3IC8qIFRyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oICovOyB9OwogCQk0NkMzOTIyOTIzMTZFQzREMDA4
RUVEOUIgLyogV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDMzkyMjgyMzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIuaCAqLzsgfTsKKwkJNDZDOTE2QUEyNzk5RDBBMjAwMUE0RTdDIC8q
IFdlYlNoYXJlZFdvcmtlclNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDZDOTE2QTkyNzk5RDA5RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtl
clNlcnZlci5oICovOyB9OwogCQk0NkNFM0IxMTIzRDhDODQ5MDAxNkE5NkEgLyogV2ViQmFja0Zv
cndhcmRMaXN0Q291bnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkNFM0IxMDIzRDhDODNEMDAxNkE5NkEgLyogV2ViQmFja0ZvcndhcmRMaXN0Q291
bnRzLmggKi87IH07CisJCTQ2RDQ4RkNFMjc5OUQ3RTEwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NkQ0OEZDRDI3OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oICovOyB9OwogCQk0NkRGMDYzQzFGMzkw
NUY4MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRGMDYzQTFGMzkwNUU1MDAxOTgw
QkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggKi87IH07CiAJCTQ2RUUyODQ5MjY5
RTA0QUMwMERENDhBQiAvKiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUUyODQ4MjY5RTA0OUIwMERE
NDhBQiAvKiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCAqLzsgfTsKIAkJNDZFRTI4NEQy
NjlFMDUyNTAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUUyODRDMjY5RTA1
MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggKi87IH07CisJ
CTQ2RUUzRThCMjc2M0ZEMkYwMDYwQzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njgz
ODY2NzI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5o
ICovOyB9OwogCQk0NkYzOEU4QzI0MTZFNjczMDA1OTM3NUEgLyogUnVubmluZ0JvYXJkU2Vydmlj
ZXNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
RjM4RThCMjQxNkU2NkQwMDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oICovOyB9
OwogCQk0NkY5QjI2MzIzNTI2RUYzMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkY5QjI2
MjIzNTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggKi87IH07CiAJ
CTQ5MzEwMkJEMjY4M0YzRDAwMDJCQjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTMxMDJCQzI2ODNGM0E1MDAy
QkI4ODUgLyogQXBwUHJpdmFjeVJlcG9ydC5oICovOyB9OwpAQCAtMTI3NCw2ICsxMjgwLDcgQEAK
IAkJNkJFOTY5QzExRTU0RDQ1MjAwOEI3NDgzIC8qIGNvcmVQcmVkaWN0aW9uX21vZGVsIGluIFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkU5NjlDMDFFNTRE
NDUyMDA4Qjc0ODMgLyogY29yZVByZWRpY3Rpb25fbW9kZWwgKi87IH07CiAJCTZCRTk2OUNCMUU1
NEQ0Q0YwMDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkU5NjlDOTFF
NTRENENGMDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5o
ICovOyB9OwogCQk2QkU5NjlDRDFFNTRFMDU0MDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0NsYXNzaWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDZCRTk2OUNDMUU1NEUwNTQwMDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Q2xhc3NpZmllci5oICovOyB9OworCQk2Q0FFQ0I2NjI3NDY1QUU0MDBBQjc4RDAgLyogVW5pZmll
ZFNvdXJjZTExNi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2Q0FFQ0I1RTI3NDY1QUUzMDBBQjc4RDAgLyogVW5pZmllZFNvdXJjZTExNi5jcHAgKi87
IH07CiAJCTZFRTg0OUM4MTM2OEQ5MzkwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFRTg0OUM2
MTM2OEQ5MkQwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MTE3MjVBOTIyOEQ1NjQzMDAw
MTg1MTQgLyogV2Vic2l0ZUxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3kuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMTcyNUE4MjI4RDU2
M0EwMDAxODUxNCAvKiBXZWJzaXRlTGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaFBvbGljeS5o
ICovOyB9OwogCQk3MTM0QTNEQTI2MDNCOTI1MDA2MjRCRDMgLyogV0tNb2RlbEludGVyYWN0aW9u
R2VzdHVyZVJlY29nbml6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcxMzRBM0Q5MjYwM0I4MEUwMDYyNEJEMyAvKiBXS01vZGVsSW50ZXJhY3Rpb25H
ZXN0dXJlUmVjb2duaXplci5oICovOyB9OwpAQCAtMTM1MSw2ICsxMzU4LDcgQEAKIAkJN0M5RDE1
MzcxODQ1ODREQTAwOUQzOTE4IC8qIFdLQnJvd3NpbmdDb250ZXh0R3JvdXBJbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M5RDE1MzYxODQ1
ODREQTAwOUQzOTE4IC8qIFdLQnJvd3NpbmdDb250ZXh0R3JvdXBJbnRlcm5hbC5oICovOyB9Owog
CQk3Q0EyNTRFQjE4Mjk5M0NFMDBGQzhBNDEgLyogV0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxl
Z2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NB
MjU0RUExODI5OTNDRTAwRkM4QTQxIC8qIFdLQnJvd3NpbmdDb250ZXh0UG9saWN5RGVsZWdhdGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Q0Ez
NzkzRTFBQzM3OEIzMDA3OURDMzcgLyogX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVByaXZh
dGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQTM3
OTNEMUFDMzc4QjMwMDc5REMzNyAvKiBfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUHJpdmF0
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdD
QUVDQjY2Mjc0NjVBRTQwMEFCNzhEMCAvKiBVbmlmaWVkU291cmNlMTE3LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQUVDQjVFMjc0NjVBRTMwMEFC
NzhEMCAvKiBVbmlmaWVkU291cmNlMTE3LmNwcCAqLzsgfTsKIAkJN0NCMTAwRjExRkEzODU4QTAw
MTcyOUVFIC8qIFdlYlByZWZlcmVuY2VzS2V5cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0IxMDBFRTFGQTJENzRBMDAxNzI5RUUgLyogV2ViUHJl
ZmVyZW5jZXNLZXlzLmNwcCAqLzsgfTsKIAkJN0NCMTAwRjIxRkEzODU4RTAwMTcyOUVFIC8qIFdl
YlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDREU3M0EzMUY5REFCNjUwMDM5MDMxMiAvKiBXZWJQcmVmZXJlbmNl
c0RlZmluaXRpb25zLmggKi87IH07CiAJCTdDQjEwMEYzMUZBMzg1OEUwMDE3MjlFRSAvKiBXZWJQ
cmVmZXJlbmNlc0tleXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDQjEwMEVGMUZBMkQ3NEIwMDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNlc0tleXMuaCAq
LzsgfTsKQEAgLTQyMTEsNiArNDIxOSw5IEBACiAJCTQ2MDg4OUZGMjYxRkE4QTkwMEUyNTAwRCAv
KiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYwRjQ4OEQxRjk5NkY2QzAwQ0Y0Qjg3IC8qIFdlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2Fn
ZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CiAJCTQ2MEY0ODhFMUY5OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaDsgcGF0aCA9IERl
cml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2Vz
Lmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTQ2MUUxQkVDMjc5QTAx
MEUwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDYxRTFCRUYyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDYxRTFCRjAyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MjEwN0Q3MUYzOERCRDMwMERENzgxMCAvKiBQaW5nTG9h
ZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQaW5nTG9hZC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MzIzNjgzMjMxNDgxRUYwMEE0OEZBNyAv
KiBXZWJSZW1vdGVPYmplY3RSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZW1vdGVPYmpl
Y3RSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjMyMzY4NDIzMTQ4
MjVDMDBBNDhGQTcgLyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNDIzOCw4ICs0MjQ5LDE1IEBACiAJCTQ2ODA5QTdCMjNEOTIyNTMwMEMyOTdEMCAv
KiBXZWJDb29raWVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJDb29raWVDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM1
NjlBMjFFODFDQzcwMDZFMjdBMyAvKiBQcm92aXNpb25hbFBhZ2VQcm94eS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQcm92aXNpb25hbFBhZ2VQcm94eS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NjgzNTY5QjIxRTgxQ0M3MDA2RTI3QTMgLyogUHJvdmlzaW9u
YWxQYWdlUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJv
dmlzaW9uYWxQYWdlUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njgz
ODY2NzI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2ODM4NjY4Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0Njg5QjkwRjI3NTZEMTQzMDAwN0M2NTEgLyogUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0Njg5QjkxMDI3NTZEMTQzMDAwN0M2NTEgLyogUmVtb3RlV2ViTG9ja1Jl
Z2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzRENCMjc2M0Y4MzQwMDRCNjEwRSAv
KiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQ2OTQzRENDMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJQ
cm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzRENEMjc2M0Y4MzUwMDRCNjEw
RSAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDY5NDNEQ0UyNzYzRjgzNTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzRENGMjc2M0Y4
MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjlERTgwMjI3M0VDQzVEMDA5MzAyNzYgLyogUHJvY2Vzc0xhdW5jaGVyQ29jb2EubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcm9jZXNzTGF1bmNoZXJDb2NvYS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZBMkI2MDYxRTU2NzVBMjAwQzNERURB
IC8qIEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNz
VGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkEyQjYwNzFFNTY3NUEy
MDBDM0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5l
c3NUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI1NSw3ICs0MjczLDEx
IEBACiAJCTQ2QkVCNkUxMjJGQkIyMUEwMDI2OTg2NyAvKiBUcmFuc2llbnRMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QkVCNkUyMjJGQkIyMUEwMDI2OTg2
NyAvKiBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDZDMzkyMjgyMzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGFnZVByb3h5SWRlbnRpZmllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0NkM5MTZBODI3OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hh
cmVkV29ya2VyU2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNl
cnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2QzkxNkE5Mjc5OUQwOUQw
MDFBNEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hh
cmVkV29ya2VyU2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2Q0UzQjEw
MjNEOEM4M0QwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2RDQ4RkNDMjc5OUQ3REQwMDdEMjAxNCAvKiBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0NkQ0OEZDRDI3OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2REYwNjM5MUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0
d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQ09SU1ByZWZsaWdo
dENoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZFOTc2MEEyNzU3RjZD
OTAwQUNERDM3IC8qIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMu
aW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MjY1LDYgKzQyODcsNyBAQAogCQk0
NkVFMjg0QTI2OUUwNTE3MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3Ry
eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOZXR3b3JrQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NkVFMjg0QjI2OUUwNTE3MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3Ry
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrQnJvYWRj
YXN0Q2hhbm5lbFJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZF
RTI4NEMyNjlFMDUxNzAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0Jyb2FkY2FzdENoYW5u
ZWxSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkVFM0U4QTI3NjNG
RDJBMDA2MEM3MEYgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5p
biAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkYzOEU4QjI0MTZFNjZEMDA1OTM3NUEgLyogUnVu
bmluZ0JvYXJkU2VydmljZXNTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UnVubmluZ0JvYXJkU2VydmljZXNTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDZGOUIyNjIyMzUyNkVEMDAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDkzMTAyQkMyNjgzRjNBNTAwMkJCODg1
IC8qIEFwcFByaXZhY3lSZXBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBwUHJpdmFjeVJlcG9ydC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDk4Myw2ICs1MDA2LDcgQEAKIAkJNkJF
OTY5QzgxRTU0RDRDRjAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVy
Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTZCRTk2OUM5MUU1NEQ0Q0YwMDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Q2xhc3NpZmllckNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291
cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNkJFOTY5Q0MxRTU0RTA1NDAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NDbGFzc2lmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNl
TG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTZDQUVDQjVFMjc0NjVBRTMwMEFCNzhEMCAvKiBVbmlmaWVkU291cmNlMTE2LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UxMTYuY3BwOyBwYXRoID0gIkRlcml2ZWRTb3VyY2Vz
L1dlYktpdC91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTExNi5jcHAiOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk2RDhBOTFBNTExRjBFRkQxMDBERDAxRkUgLyog
Y29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gY29tLmFw
cGxlLldlYlByb2Nlc3Muc2IuaW47IHBhdGggPSBXZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9j
ZXNzLnNiLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RUU4NDlDNjEzNjhEOTJE
MDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2YXRlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFdLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oOyBwYXRoID0gbWFjL1dLSW5zcGVj
dG9yUHJpdmF0ZU1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTE3MjVBODIy
OEQ1NjNBMDAwMTg1MTQgLyogV2Vic2l0ZUxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xp
Y3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZUxlZ2FjeU92ZXJm
bG93U2Nyb2xsaW5nVG91Y2hQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTUxNDcsNiArNTE3MSw3IEBACiAJCTdDOUQxNTM2MTg0NTg0REEwMDlEMzkxOCAvKiBXS0Jyb3dz
aW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tCcm93c2luZ0NvbnRleHRHcm91cEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDQTI1NEVBMTgyOTkzQ0UwMEZDOEE0MSAvKiBXS0Jyb3dzaW5nQ29udGV4dFBv
bGljeURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnJvd3Np
bmdDb250ZXh0UG9saWN5RGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0NBMzc5M0QxQUMzNzhCMzAwNzlEQzM3IC8qIF9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVQ
cml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1VzZXJDb250ZW50
RXh0ZW5zaW9uU3RvcmVQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdD
QUVDQjVFMjc0NjVBRTMwMEFCNzhEMCAvKiBVbmlmaWVkU291cmNlMTE3LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UxMTcuY3BwOyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzL1dl
YktpdC91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTExNy5jcHAiOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk3Q0IxMDBFRTFGQTJENzRBMDAxNzI5RUUgLyogV2Vi
UHJlZmVyZW5jZXNLZXlzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlByZWZlcmVuY2VzS2V5
cy5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViUHJlZmVyZW5jZXNLZXlzLmNw
cDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJN0NCMTAwRUYxRkEyRDc0
QjAwMTcyOUVFIC8qIFdlYlByZWZlcmVuY2VzS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJQcmVm
ZXJlbmNlc0tleXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJQcmVmZXJlbmNl
c0tleXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJN0NCMTAwRjAx
RkEyRDc4NDAwMTcyOUVFIC8qIFdlYlByZWZlcmVuY2VzU3RvcmVEZWZhdWx0c01hcC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBXZWJQcmVmZXJlbmNlc1N0b3JlRGVmYXVsdHNNYXAuY3BwOyBwYXRo
ID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlByZWZlcmVuY2VzU3RvcmVEZWZhdWx0c01hcC5j
cHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC05MjYyLDYgKzkyODcs
MjAgQEAKIAkJCXBhdGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07
CisJCTQ2ODM4NjY1Mjc2M0ZBMUIwMENGOTE4MiAvKiBTaGFyZWRXb3JrZXIgKi8gPSB7CisJCQlp
c2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTQ2RDQ4RkNDMjc5OUQ3REQwMDdE
MjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCAqLywK
KwkJCQk0NkQ0OEZDRDI3OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oICovLAorCQkJCTQ2QzkxNkE4Mjc5OUQwOUQwMDFBNEU3QyAvKiBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwICovLAorCQkJCTQ2QzkxNkE5Mjc5OUQwOUQwMDFBNEU3
QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCAqLywKKwkJCQk0NkVFM0U4QTI3NjNGRDJBMDA2
MEM3MEYgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywK
KwkJCQk0NjgzODY2NzI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbi5oICovLAorCQkJCTQ2ODM4NjY4Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLywKKwkJCSk7CisJCQlwYXRoID0gU2hhcmVkV29y
a2VyOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNDY5REU4MDEyNzNFQ0M1
RDAwOTMwMjc2IC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKQEAgLTkzMTMsNiArOTM1Miw3IEBACiAJCTUxMENDN0RBMTYxMzhFMDEwMEQwM0VEMyAv
KiBOZXR3b3JrUHJvY2VzcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJNDY4Mzg2NjUyNzYzRkExQjAwQ0Y5MTgyIC8qIFNoYXJlZFdvcmtlciAqLywKIAkJ
CQlFNDg5RDI4MjFBMEEyQkU4MDA3OEMwNkEgLyogY2FjaGUgKi8sCiAJCQkJN0E4NDNBMUQyMUU0
MUZEOTAwREVGNjYzIC8qIENsYXNzaWZpZXIgKi8sCiAJCQkJN0VDNEYwRjgxOEU0QTkyMjAwODA1
NkFGIC8qIGNvY29hICovLApAQCAtOTQyMSw2ICs5NDYxLDE0IEBACiAJCTUxMThFOTk4MUYyOTUy
NTkwMDNFRjlGNSAvKiBTdG9yYWdlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQk0NjFFMUJFQzI3OUEwMTBFMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk0NjFFMUJFRjI3OUEwMTBGMDA2
QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggKi8sCisJ
CQkJNDYxRTFCRjAyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKKwkJCQk0Njk0M0RDRTI3NjNGODM1MDA0QjYx
MEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgKi8sCisJCQkJNDY5NDNE
Q0QyNzYzRjgzNTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAq
LywKKwkJCQk0Njk0M0RDQjI3NjNGODM0MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKKwkJCQk0Njk0M0RDQzI3NjNGODM1MDA0QjYxMEUg
LyogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwICovLAorCQkJCTQ2OTQzRENGMjc2M0Y4MzUw
MDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oICovLAogCQkJCTQxMzFGM0UwMUY5
ODcxMkMwMDU5OTk1QSAvKiBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCAqLywK
IAkJCQk0MTlBQ0Y5QjFGOTgxRDI2MDA5RjFBODMgLyogV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudC5oICovLAogCQkJCTUxQkVCNjI5MUYzQTVBQ0QwMDUwMjlCOSAvKiBXZWJTZXJ2aWNl
V29ya2VyUHJvdmlkZXIuY3BwICovLApAQCAtMTI3NDAsNiArMTI3ODgsNyBAQAogCQkJCTQ5RkJG
MDAwMjM5QjFGNzUwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlGQkYwMDkyMzlGMDhFMDAwQkQwMzJGIC8qIF9XS1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAog
CQkJCTM3NjMxMUZEMUEzRkI1RjcwMDVBMkU1MSAvKiBfV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
VHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDYxRTFCRjIyNzlBMDExNjAwNkFGNTNCIC8qIFdl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzc2MzExRkUxQTNGQjYwMDAwNUEyRTUxIC8qIF9XS1NhbWVEb2N1bWVudE5hdmlnYXRpb25U
eXBlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDAyRDQ0MTk2QjMzODkwMEI5QUQ0
NCAvKiBfV0tTZXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDAyRDQzMTk2QjMz
NzAwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xMjkwMiw2ICsxMjk1MSw3IEBACiAJCQkJRTE3MDg3NkMxNkQ2Q0E2OTAwRjk5MjI2IC8qIEJs
b2JSZWdpc3RyeVByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0RjYwMTQzMjE1NUM1QUEyMDAx
RkJERTAgLyogQmxvY2tpbmdSZXNwb25zZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NzA1
MTExQkU0MTBFNjAwODc0QUYxIC8qIEJsb2NrU1BJLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkM5
MTZBQTI3OTlEMEEyMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzMwNjVGQTEyNTkzNDRFMDBFNzEyNzggLyogQ2FjaGVNb2RlbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDE4OTdFRDgxRjQxNUQ4QTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVu
Z2luZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGQUJEMkExRjRERTAwMTAwNkE2Qzk3IC8qIENh
Y2hlU3RvcmFnZUVuZ2luZUNhY2hlLmggaW4gSGVhZGVycyAqLywKQEAgLTEzMzY1LDYgKzEzNDE1
LDcgQEAKIAkJCQkxQUMxMzM2ODE4NTY1QjU3MDBGM0VDMDUgLyogVXNlckRhdGEuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUNENDkxQjA4MUU3MEQwNUYwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJl
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q0OTFCMEUxRTczMkU0RDAwMDA5MDY2IC8q
IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2
RUUzRThCMjc2M0ZEMkYwMDYwQzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDQ5MUIxMzFFNzM0ODIxMDAwMDkwNjYgLyogVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q0OTFCMTgxRTcz
NTI1NTAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDcyOTdGOUYxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBl
cm1pc3Npb25DaGVja1Byb3h5LmggaW4gSGVhZGVycyAqLywKQEAgLTEzNDUxLDYgKzEzNTAyLDcg
QEAKIAkJCQkzMzA5MzQ0QTEzMTVCOTIyMDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlclByb3h5
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMUREN0IyMTE0REMzOTYwMDVBREFGMyAv
KiBXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkY1ODlCMTJB
ODgzODgwMDYyOTUzMCAvKiBXZWJDcmVkZW50aWFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk0Njk0
M0REMDI3NjNGODNBMDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBQTgzRjZEMUE1QjYzRkYwMDAyNkVDNiAvKiBXZWJEYXRhYmFzZVByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNTJDRjU1MjIwQTM1QzNBMDBEQURBMjcgLyogV2Vi
RGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNTY4QjkxRjIw
QTNBQjJGMDBFM0M4NTYgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duLmggaW4gSGVh
ZGVycyAqLywKQEAgLTEzNDg1LDYgKzEzNTM3LDcgQEAKIAkJCQlCQzAzMkQ3RjEwRjQzNzhEMDA1
OEMxNUEgLyogV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTFG
MkNCMTIxQjY3QUQwMEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQ0I5RjZBMDExMjNBODRCMDBBMTM3RTAgLyogV2ViRnJhbWVQb2xpY3lM
aXN0ZW5lclByb3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQk0Njk0M0REMTI3NjNGODNGMDA0QjYx
MEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM5QjM4QTExMEY1MzhCRTAwNDQzQTE1IC8qIFdlYkZyYW1lUHJveHkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxNUJFMUFCMUQ1NTVBQTAwMEREN0M2OCAvKiBXZWJHYW1lcGFkLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTVCRTE3OTFENTNGRThGMDBERDdDNjggLyogV2ViR2FtZXBhZFByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTEzNjExLDYgKzEzNjY0LDcgQEAKIAkJCQkxQTQ4MzJE
NzFBOUNERjk2MDA4QjRERkUgLyogV2Vic2l0ZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
NDgzMkQxMUE5QkRDMkYwMDhCNERGRSAvKiBXZWJzaXRlRGF0YVJlY29yZC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUE1M0MyQUExQTMyNTczMDAwNEU4QzcwIC8qIFdlYnNpdGVEYXRhU3RvcmUuaCBp
biBIZWFkZXJzICovLAorCQkJCTQ2RDQ4RkNFMjc5OUQ3RTEwMDdEMjAxNCAvKiBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTFG
N0Q0MTFFQjFCQ0Y1MDBFNDdCODMgLyogV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTcxMTcyNUE5MjI4RDU2NDMwMDAxODUxNCAvKiBXZWJzaXRlTGVnYWN5
T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaFBvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjRDQjA5
RTUyMjVENUEwOTAwODkxNDg3IC8qIFdlYnNpdGVNZWRpYVNvdXJjZVBvbGljeS5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA4ZDNiNTdiZDE4ZGMuLmJiMzU0
N2Y0NmFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC01Nyw2ICs1NywxMCBAQAog
I2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNlcnZp
Y2VXb3JrZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIKICNpbmNsdWRlICJXZWJTb2Nr
ZXRDaGFubmVsTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRTdHJlYW0uaCIKQEAgLTE3
Myw2ICsxNzcsMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVAKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICNlbmRpZgorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBN
ZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKSB7CisgICAgICAgIHNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKS5kaWRSZWNlaXZlTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Cisg
ICAgICAgIEFTU0VSVChTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29u
bmVjdGlvbigpKTsKKyAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiA9
IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCisg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24mPigqY29udGV4dE1hbmFnZXJDb25uZWN0aW9uKS5kaWRSZWNlaXZlTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogI2lmIEVOQUJMRShB
UFBMRV9QQVlfUkVNT1RFX1VJKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUo
KSA9PSBNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCkpIHsKQEAgLTMwNyw2ICszMjEsMTMgQEAgV2ViU1dDbGllbnRDb25uZWN0aW9uJiBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb246OnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCkKIH0KICNlbmRpZgog
CitXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uJiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b246OnNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKQoreworICAgIGlmICghbV9zaGFyZWRXb3JrZXJD
b25uZWN0aW9uKQorICAgICAgICBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24gPSBXZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uOjpjcmVhdGUoKTsKKyAgICByZXR1cm4gKm1fc2hhcmVkV29y
a2VyQ29ubmVjdGlvbjsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246Om1lc3Nh
Z2VzQXZhaWxhYmxlRm9yUG9ydChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIm
IG1lc3NhZ2VQb3J0SWRlbnRpZmllcikKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5t
ZXNzYWdlc0F2YWlsYWJsZUZvclBvcnQobWVzc2FnZVBvcnRJZGVudGlmaWVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmgKaW5kZXggZDYyZGZlNGRmNWFhLi41ZjA1MDQwOWFjNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5oCkBAIC00OCw2ICs0OCw3IEBAIGVudW0gY2xhc3MgSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSA6IHVpbnQ4X3Q7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViSURCQ29u
bmVjdGlvblRvU2VydmVyOworY2xhc3MgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjsK
IGNsYXNzIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjsKIAogY2xhc3MgTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uPiwgSVBD
OjpDb25uZWN0aW9uOjpDbGllbnQgewpAQCAtNzAsNiArNzEsNyBAQCBwdWJsaWM6CiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIFdlYlNXQ2xpZW50Q29ubmVjdGlvbiYgc2VydmljZVdv
cmtlckNvbm5lY3Rpb24oKTsKICNlbmRpZgorICAgIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24mIHNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKIAogI2lmIEhBVkUoQVVESVRfVE9LRU4p
CiAgICAgdm9pZCBzZXROZXR3b3JrUHJvY2Vzc0F1ZGl0VG9rZW4oc3RkOjpvcHRpb25hbDxhdWRp
dF90b2tlbl90PiBhdWRpdFRva2VuKSB7IG1fbmV0d29ya1Byb2Nlc3NBdWRpdFRva2VuID0gYXVk
aXRUb2tlbjsgfQpAQCAtMTIzLDYgKzEyNSw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogICAgIFJlZlB0cjxXZWJTV0NsaWVudENvbm5lY3Rpb24+IG1fc3dDb25uZWN0
aW9uOwogI2VuZGlmCisgICAgUmVmUHRyPFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24+
IG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbjsKICAgICBXZWJDb3JlOjpIVFRQQ29va2llQWNjZXB0
UG9saWN5IG1fY29va2llQWNjZXB0UG9saWN5OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi43YWFlYTlkYzQwZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTE3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oIgorCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVk
ZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9F
bXB0eUNsaWVudHMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29u
bmVjdGlvbj4mJiBjb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcywgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgUGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3Jv
dXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBwcmVmZXJlbmNl
c1N0b3JlLCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYgaW5pdGlhbGl6YXRpb25E
YXRhKQorICAgIDogbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXVEZNb3ZlKGNvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzKSkKKyAgICAsIG1fcmVnaXN0cmFibGVEb21haW4oV1RGTW92ZShy
ZWdpc3RyYWJsZURvbWFpbikpCisgICAgLCBtX3BhZ2VHcm91cElEKHBhZ2VHcm91cElEKQorICAg
ICwgbV93ZWJQYWdlUHJveHlJRCh3ZWJQYWdlUHJveHlJRCkKKyAgICAsIG1fcGFnZUlEKHBhZ2VJ
RCkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAsIG1fdXNlckFnZW50KHN0YW5kYXJkVXNlckFn
ZW50V2l0aEFwcGxpY2F0aW9uTmFtZSh7IH0pKQorI2Vsc2UKKyAgICAsIG1fdXNlckFnZW50KHN0
YW5kYXJkVXNlckFnZW50KCkpCisjZW5kaWYKKyAgICAsIG1fdXNlckNvbnRlbnRDb250cm9sbGVy
KFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6Z2V0T3JDcmVhdGUoaW5pdGlhbGl6YXRpb25EYXRh
LnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpKQoreworI2lmIEVOQUJMRShDT05URU5U
X0VYVEVOU0lPTlMpCisgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZENvbnRlbnRSdWxl
TGlzdHMoV1RGTW92ZShpbml0aWFsaXphdGlvbkRhdGEuY29udGVudFJ1bGVMaXN0cykpOworI2Vu
ZGlmCisKKyAgICB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKHByZWZlcmVuY2VzU3RvcmUpOworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmRpc2FibGVUZXJtaW5hdGlvbigpOworfQorCitXZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246On5XZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CisKK3ZvaWQgV2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjplc3RhYmxpc2hDb25uZWN0aW9uKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX2Nvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlv
biB7IG1fd2ViUGFnZVByb3h5SUQsIG1fcmVnaXN0cmFibGVEb21haW4gfSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIDApOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJl
ZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBl
cnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCkKK3sKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpQb3N0
RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QgeyBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBlcnJvck1l
c3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMIH0sIDApOworfQorCit2
b2lkIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6dXBkYXRlUHJlZmVy
ZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKK3sKKyAgICBXZWJQ
YWdlOjp1cGRhdGVQcmVmZXJlbmNlc0dlbmVyYXRlZChzdG9yZSk7CisgICAgbV9wcmVmZXJlbmNl
c1N0b3JlID0gc3RvcmU7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpsYXVuY2hTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3Jp
Z2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZp
ZXIsIFVSTCYmIHVybCwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMsIFdl
YkNvcmU6OlNjcmlwdEJ1ZmZlciYmIHNjcmlwdEJ1ZmZlcikKK3sKKyAgICBSRUxFQVNFX0xPRyhT
aGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Omxh
dW5jaFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJl
ZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgYXV0byBwYWdlQ29uZmlndXJhdGlv
biA9IHBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cyhXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5zZXNzaW9uSUQoKSk7CisKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5kYXRhYmFzZVByb3Zp
ZGVyID0gV2ViRGF0YWJhc2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUobV9wYWdlR3JvdXBJRCk7Cisg
ICAgcGFnZUNvbmZpZ3VyYXRpb24uc29ja2V0UHJvdmlkZXIgPSBXZWJTb2NrZXRQcm92aWRlcjo6
Y3JlYXRlKG1fd2ViUGFnZVByb3h5SUQpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLmJyb2FkY2Fz
dENoYW5uZWxSZWdpc3RyeSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmJyb2FkY2FzdENoYW5u
ZWxSZWdpc3RyeSgpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLndlYkxvY2tSZWdpc3RyeSA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvY2tSZWdpc3RyeSgpOworICAgIHBhZ2VDb25maWd1
cmF0aW9uLnVzZXJDb250ZW50UHJvdmlkZXIgPSBtX3VzZXJDb250ZW50Q29udHJvbGxlcjsKKyNp
ZiBFTkFCTEUoV0VCX1JUQykKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5saWJXZWJSVENQcm92aWRl
ciA9IG1ha2VVbmlxdWVSZWY8U2VydmljZVdvcmtlckxpYldlYlJUQ1Byb3ZpZGVyPigpOworI2Vu
ZGlmCisKKyAgICAvLyBGSVhNRTogU2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50IHNob3Vs
ZCBiZSByZW5hbWVkIGlmIHVzZWQgYnkgU2hhcmVkV29ya2Vycy4KKyAgICBwYWdlQ29uZmlndXJh
dGlvbi5sb2FkZXJDbGllbnRGb3JNYWluRnJhbWUgPSBtYWtlVW5pcXVlUmVmPFNlcnZpY2VXb3Jr
ZXJGcmFtZUxvYWRlckNsaWVudD4obV93ZWJQYWdlUHJveHlJRCwgbV9wYWdlSUQsIEZyYW1lSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKSwgbV91c2VyQWdlbnQpOworCisgICAgYXV0byBwYWdlID0gbWFr
ZVVuaXF1ZVJlZjxQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CisgICAgaWYgKG1f
cHJlZmVyZW5jZXNTdG9yZSkgeworICAgICAgICBXZWJQYWdlOjp1cGRhdGVTZXR0aW5nc0dlbmVy
YXRlZCgqbV9wcmVmZXJlbmNlc1N0b3JlLCBwYWdlLT5zZXR0aW5ncygpKTsKKyAgICAgICAgcGFn
ZS0+c2V0dGluZ3MoKS5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koc3RhdGljX2Nhc3Q8U3RvcmFn
ZUJsb2NraW5nUG9saWN5PihtX3ByZWZlcmVuY2VzU3RvcmUtPmdldFVJbnQzMlZhbHVlRm9yS2V5
KFdlYlByZWZlcmVuY2VzS2V5OjpzdG9yYWdlQmxvY2tpbmdQb2xpY3lLZXkoKSkpKTsKKyAgICB9
CisgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnNldHVwUGFnZUZvclNoYXJl
ZFdvcmtlcihwYWdlLmdldCgpLCB1cmwsIG9yaWdpbik7CisgICAgYXV0byBzaGFyZWRXb3JrZXJU
aHJlYWRQcm94eSA9IFdlYkNvcmU6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpjcmVhdGUoV1RG
TW92ZShwYWdlKSwgc2hhcmVkV29ya2VySWRlbnRpZmllciwgb3JpZ2luLCB1cmwsIFdURk1vdmUo
c2NyaXB0QnVmZmVyKSwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSwgbV91c2VyQWdlbnQsIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFnZVByb3ZpZGVyKCkpOworCisgICAgV2ViQ29y
ZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnJlZ2lzdGVyU2hhcmVk
V29ya2VyVGhyZWFkKFdURk1vdmUoc2hhcmVkV29ya2VyVGhyZWFkUHJveHkpKTsKK30KKwordm9p
ZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmNsb3NlKCkKK3sKKyAg
ICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OmNsb3NlOiBTaGFyZWQgd29ya2VyIHByb2Nlc3MgaXMgcmVxdWVzdGVkIHRv
IHN0b3AgYWxsIHNoYXJlZCB3b3JrZXJzIik7CisgICAgc2V0QXNDbG9zZWQoKTsKKworICAgIG1f
Y29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpDbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uIHsgfSwg
MCk7CisgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigp
LnN0b3BBbGxTaGFyZWRXb3JrZXJzKCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5h
YmxlVGVybWluYXRpb24oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjg0NmUyNjY4ZWI1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIklkZW50aWZpZXJUeXBl
cy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94
eUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50
aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVnaXN0cmFibGVEb21haW47
CitzdHJ1Y3QgV29ya2VyT3B0aW9uczsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjsKK3N0cnVjdCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6
YXRpb25EYXRhOworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNv
bm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAgV2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+
JiYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBhZ2VHcm91cElkZW50aWZpZXIsIFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJiwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmKTsKKyAg
ICB+V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKCk7CisKKyAgICB2b2lk
IGVzdGFibGlzaENvbm5lY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsK
KyAgICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSBmaW5hbDsKKworICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
ZmluYWw7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDIE1lc3NhZ2VzLgorICAgIHZvaWQgbGF1bmNo
U2hhcmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmLCBXZWJDb3JlOjpT
Y3JpcHRCdWZmZXImJik7CisgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmKTsKKyAgICB2b2lkIHNldFVzZXJBZ2VudChTdHJpbmcmJiB1c2Vy
QWdlbnQpIHsgbV91c2VyQWdlbnQgPSBXVEZNb3ZlKHVzZXJBZ2VudCk7IH0KKyAgICB2b2lkIGNs
b3NlKCk7CisKKyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzOworICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG1fcmVnaXN0cmFibGVEb21h
aW47CisgICAgUGFnZUdyb3VwSWRlbnRpZmllciBtX3BhZ2VHcm91cElEOworICAgIFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgbV93ZWJQYWdlUHJveHlJRDsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBtX3BhZ2VJRDsKKyAgICBTdHJpbmcgbV91c2VyQWdlbnQ7CisgICAgUmVmPFdlYlVzZXJD
b250ZW50Q29udHJvbGxlcj4gbV91c2VyQ29udGVudENvbnRyb2xsZXI7CisgICAgc3RkOjpvcHRp
b25hbDxXZWJQcmVmZXJlbmNlc1N0b3JlPiBtX3ByZWZlcmVuY2VzU3RvcmU7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLjM1OGYyNmY3NzUyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMwIEBACisjIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFdlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKKyAgICBMYXVuY2hTaGFyZWRXb3JrZXIo
c3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtl
cklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgVVJMIHVybCwgc3RydWN0IFdlYkNv
cmU6Oldvcmtlck9wdGlvbnMgd29ya2VyT3B0aW9ucywgV2ViQ29yZTo6U2NyaXB0QnVmZmVyIHNj
cmlwdEJ1ZmZlcikKKyAgICBQb3N0Q29ubmVjdEV2ZW50KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklk
ZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNz
YWdlUG9ydCBwb3J0LCBTdHJpbmcgc291cmNlT3JpZ2luKQorICAgIFRlcm1pbmF0ZVNoYXJlZFdv
cmtlcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZp
ZXIpCisgICAgVXBkYXRlUHJlZmVyZW5jZXNTdG9yZShzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJl
bmNlc1N0b3JlIHN0b3JlKQorICAgIFNldFVzZXJBZ2VudChTdHJpbmcgdXNlckFnZW50KQorICAg
IENsb3NlKCkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kN2Q5OTRkZTFmNzcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b24uaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9j
ZXNzSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyT3B0aW9ucy5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwg
Li4uKSBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmll
cj0lIiBQUkl1NjQgIl0gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6IiBmbXQsIHRo
aXMsIFdlYkNvcmU6OlByb2Nlc3M6OmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19fVkFfQVJH
U19fKQorCitXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOiIpOworfQorCitXZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uOjp+V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpCit7CisgICAgQ09O
TkVDVElPTl9SRUxFQVNFX0xPRygifldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Iik7
Cit9CisKK0lQQzo6Q29ubmVjdGlvbiogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6
bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiAmV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnJlcXVlc3RT
aGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFdlYkNvcmU6
OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciwgY29uc3QgVVJMJiB1cmwsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0
LCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25zKQoreworICAgIENP
Tk5FQ1RJT05fUkVMRUFTRV9MT0coInJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIu
dG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpSZXF1ZXN0U2hhcmVkV29ya2VyIHsgb3JpZ2luLCBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCB1cmwsIFdURk1vdmUocG9ydCksIHdvcmtlck9wdGlv
bnMgfSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6c2hhcmVk
V29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQoreworICAgIENPTk5FQ1RJT05fUkVM
RUFTRV9MT0coInNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5OiBzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyPSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRv
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbjo6U2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkgeyBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIH0pOworfQorCisjdW5kZWYgQ09OTkVDVElPTl9SRUxF
QVNFX0xPRworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmVjYmY0
MmY2NzYyYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDU0IEBACisK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIGZp
bmFsIDogcHVibGljIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24sIHByaXZh
dGUgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVi
bGljOgorICAgIHN0YXRpYyBSZWY8V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbj4gY3Jl
YXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uKTsgfQorICAgIH5XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCk7CisKKyAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZp
bmFsOworCitwcml2YXRlOgorICAgIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKTsK
KworICAgIC8vIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uCisgICAgdm9p
ZCByZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFdlYkNv
cmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OlRy
YW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYpIGZp
bmFsOworICAgIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikgZmluYWw7CisKKyAgICBJUEM6OkNvbm5lY3Rpb24q
IG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVz
c2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uZmE4MDE5YWE5NzNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5p
bgpAQCAtMCwwICsxLDI3IEBACisjIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK21lc3NhZ2VzIC0+IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24geworICAgIEZl
dGNoU2NyaXB0SW5DbGllbnQoVVJMIHVybCwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6V29y
a2VyT3B0aW9ucyB3b3JrZXJPcHRpb25zKSAtPiAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyIHNjcmlw
dEJ1ZmZlcikgQXN5bmMKKyAgICBEaXNwYXRjaEVycm9yRXZlbnRPbldvcmtlck9iamVjdChXZWJD
b3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIpCisgICAgUG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgU3RyaW5n
IGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFN0cmluZyBz
b3VyY2VVUkwpCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi4yODI2ZTg5MzkyMDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAK
QEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oIgorCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dl
YlNoYXJlZFdvcmtlclByb3ZpZGVyJiBXZWJTaGFyZWRXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9u
KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V2ViU2hhcmVkV29ya2VyUHJvdmlkZXI+
IHByb3ZpZGVyOworICAgIHJldHVybiBwcm92aWRlcjsKK30KKworV2ViU2hhcmVkV29ya2VyUHJv
dmlkZXI6OldlYlNoYXJlZFdvcmtlclByb3ZpZGVyKCkgPSBkZWZhdWx0OworCitXZWJDb3JlOjpT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uJiBXZWJTaGFyZWRXb3JrZXJQcm92aWRlcjo6c2hh
cmVkV29ya2VyQ29ubmVjdGlvbigpCit7CisgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLnNoYXJlZFdvcmtlckNvbm5lY3Rp
b24oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjMzYTk5MjE5NTBiZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdv
cmtlclByb3ZpZGVyLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJQcm92aWRlci5oPgorI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U2hhcmVk
V29ya2VyUHJvdmlkZXIgeworcHVibGljOgorICAgIHN0YXRpYyBXZWJTaGFyZWRXb3JrZXJQcm92
aWRlciYgc2luZ2xldG9uKCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVk
PFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyPjsKKyAgICBXZWJTaGFyZWRXb3JrZXJQcm92aWRlcigp
OworCisgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiYgc2hhcmVkV29y
a2VyQ29ubmVjdGlvbigpIGZpbmFsOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZWUxNDM0YmRhODdiLi40YTk5
NGY4YjZiOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTg0
LDYgKzg0LDkgQEAKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdv
cmtlclByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFtLmgiCiAjaW5jbHVkZSAi
V2Vic2l0ZURhdGEuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgpA
QCAtMTMzLDYgKzEzNiw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZXR0aW5ncy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAj
aW5jbHVkZSA8cGFsL0xvZ2dpbmcuaD4KICNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgpAQCAt
NTY5LDYgKzU3Myw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogICAgIFNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2V0U2hhcmVkUHJvdmlkZXIo
V2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKSk7CiAjZW5kaWYKKyAgICBTaGFy
ZWRXb3JrZXJQcm92aWRlcjo6c2V0U2hhcmVkUHJvdmlkZXIoV2ViU2hhcmVkV29ya2VyUHJvdmlk
ZXI6OnNpbmdsZXRvbigpKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBKU0M6Oldh
c206OmVuYWJsZUZhc3RNZW1vcnkoKTsKQEAgLTkwMiw3ICs5MDcsNiBAQCB2b2lkIFdlYlByb2Nl
c3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpE
ZWNvZGVyJiBkZQogICAgIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICAvLyBG
SVhNRTogUmVtb3ZlPwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBN
ZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSkgewogICAgICAgICBBU1NFUlQoU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29u
bmVjdGlvbigpKTsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiA9
IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKQEAgLTkxMSw2ICs5
MTUsMTMgQEAgdm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGUKICAgICB9CiAjZW5kaWYKIAorICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAg
ICAgICAgQVNTRVJUKFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25u
ZWN0aW9uKCkpOworICAgICAgICBpZiAoYXV0byogY29udGV4dE1hbmFnZXJDb25uZWN0aW9uID0g
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAg
ICAgICAgICAgIHN0YXRpY19jYXN0PFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbiY+KCpjb250ZXh0TWFuYWdlckNvbm5lY3Rpb24pLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgTE9HX0VSUk9S
KCJVbmhhbmRsZWQgd2ViIHByb2Nlc3MgbWVzc2FnZSAnJXMnIChkZXN0aW5hdGlvbjogJSIgUFJJ
dTY0ICIgcGlkOiAlZCkiLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpLCBkZWNv
ZGVyLmRlc3RpbmF0aW9uSUQoKSwgc3RhdGljX2Nhc3Q8aW50PihnZXRDdXJyZW50UHJvY2Vzc0lE
KCkpKTsKIH0KIApAQCAtMTkxNyw4ICsxOTI4LDE4IEBAIExpYldlYlJUQ05ldHdvcmsmIFdlYlBy
b2Nlc3M6OmxpYldlYlJUQ05ldHdvcmsoKQogICAgIHJldHVybiAqbV9saWJXZWJSVENOZXR3b3Jr
OwogfQogCit2b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJsZURvbWFpbiYm
IHJlZ2lzdHJhYmxlRG9tYWluLCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYgaW5p
dGlhbGl6YXRpb25EYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgLy8gV2UgYXJlIGluIHRoZSBTaGFyZWQgV29ya2VyIGNvbnRleHQgcHJv
Y2VzcyBhbmQgdGhlIGNhbGwgYmVsb3cgZXN0YWJsaXNoZXMgb3VyIGNvbm5lY3Rpb24gdG8gdGhl
IE5ldHdvcmsgUHJvY2VzcworICAgIC8vIGJ5IGNhbGxpbmcgZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlciBuZWVkcyB0byB1c2UgdGhlIHNh
bWUgdW5kZXJseWluZyBJUEM6OkNvbm5lY3Rpb24gYXMgdGhlCisgICAgLy8gTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uIGZvciBzeW5jaHJvbml6YXRpb24gcHVycG9zZXMuCisgICAgYXV0byYgaXBj
Q29ubmVjdGlvbiA9IGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KTsKKyAgICBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0Q29ubmVj
dGlvbihtYWtlVW5pcXVlPFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4o
aXBjQ29ubmVjdGlvbiwgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHBhZ2VHcm91cElELCB3
ZWJQYWdlUHJveHlJRCwgcGFnZUlELCBzdG9yZSwgV1RGTW92ZShpbml0aWFsaXphdGlvbkRhdGEp
KSk7CisgICAgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rp
b24oKS0+ZXN0YWJsaXNoQ29ubmVjdGlvbihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9
CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlz
aFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlm
aWVyIHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBS
ZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIs
IFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXphdGlvbkRhdGEsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUHJv
Y2Vzczo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWlu
LCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNl
V29ya2VyUGFnZUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBp
bml0aWFsaXphdGlvbkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICAvLyBXZSBhcmUgaW4gdGhlIFNlcnZpY2UgV29ya2VyIGNvbnRleHQg
cHJvY2VzcyBhbmQgdGhlIGNhbGwgYmVsb3cgZXN0YWJsaXNoZXMgb3VyIGNvbm5lY3Rpb24gdG8g
dGhlIE5ldHdvcmsgUHJvY2VzcwogICAgIC8vIGJ5IGNhbGxpbmcgZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLiBTV0NvbnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0aGUgc2FtZSB1bmRl
cmx5aW5nIElQQzo6Q29ubmVjdGlvbiBhcyB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCmluZGV4IGI4MDMyZmJlOGUyMC4uNjVmNzczMjAxYTczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTQ2OSw4ICs0NjksOSBAQCBwcml2YXRlOgogICAgIHZv
aWQgZ2FtZXBhZERpc2Nvbm5lY3RlZCh1bnNpZ25lZCBpbmRleCk7CiAjZW5kaWYKIAorICAgIHZv
aWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KFBhZ2VHcm91cElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB2
b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdl
R3JvdXBJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgU2VydmljZVdvcmtlckluaXRp
YWxpemF0aW9uRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQg
ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQ
YWdlR3JvdXBJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklu
aXRpYWxpemF0aW9uRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlm
CiAKICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vic2l0ZURhdGEmJik+JiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA0MmQ3NWEzOTRh
OWMuLmU1NTI5NmI5MDRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KQEAgLTEwMCw4ICsxMDAsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUHJv
Y2VzcyBMZWdhY3lSZWNlaXZlciBOb3RSZWZDb3VudGVkIHsKICAgICBHYW1lcGFkRGlzY29ubmVj
dGVkKHVuc2lnbmVkIGluZGV4KQogI2VuZGlmCiAKKyAgICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJZGVudGlm
aWVyIHBhZ2VHcm91cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVBy
b3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2Vi
UHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWlu
LCBzdHJ1Y3QgV2ViS2l0OjpTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhIGluaXRpYWxp
emF0aW9uRGF0YSkgLT4gKCkgQXN5bmMKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAg
ICBFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViS2l0
OjpQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
c3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gZG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHN0cnVjdCBX
ZWJLaXQ6OlNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRh
KSAtPiAoKSBBc3luYworICAgIEVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElE
LCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9y
ZSBzdG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2Vy
UGFnZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlv
bkRhdGEgaW5pdGlhbGl6YXRpb25EYXRhKSAtPiAoKSBBc3luYwogI2VuZGlmCiAKICAgICBTZXRI
YXNTdXNwZW5kZWRQYWdlUHJveHkoYm9vbCBoYXNTdXNwZW5kZWRQYWdlUHJveHkpOwo=
</data>
<flag name="commit-queue"
          id="476961"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450548</attachid>
            <date>2022-02-01 11:00:48 -0800</date>
            <delta_ts>2022-02-01 11:35:34 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>235958_SharedWorker_multiProcess_wip.patch</filename>
            <type>text/plain</type>
            <size>307676</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IGU0N2ZkZDI2NDVmZS4uMDU3N2VhYzY3MWViIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTQ2Myw3ICs0NjMsNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYi1sb2Nrcy9zdGVhbC50ZW50YXRpdmUuaHR0cHMuYW55Lmh0bWwgWyBEdW1wSgog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3Ro
ZS1hbmFseXNlcm5vZGUtaW50ZXJmYWNlL3Rlc3QtYW5hbHlzZXItbWluaW11bS5odG1sIFsgRHVt
cEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUt
ZGlzY29ubmVjdC1hdWRpb3BhcmFtLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NhbWUtb3JpZ2luLWNoZWNr
LnN1Yi5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMuaHRt
bCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCiBmYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWJh
Y2stZm9yd2FyZC1jYWNoZS5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGZhc3Qv
aGlzdG9yeS9wYWdlLWNhY2hlLWNyZWF0ZUltYWdlQml0bWFwLmh0bWwgWyBEdW1wSlNDb25zb2xl
TG9nSW5TdGRFcnIgXQogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLWluLWxv
YWRpbmctaWZyYW1lLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQpAQCAtNTE1OCw2
ICs1MTU3LDEwIEBAIHdlYmtpdC5vcmcvYi8xODM5OTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3Nzb20vY3NzLXN0eWxlLWF0dHItZGVjCiAjIFRlc3QgaXMgY3Jhc2hpbmcg
aW4gRGVidWcgYnVpbGRzIHNpbmNlIGltcG9ydC4KIHdlYmtpdC5vcmcvYi8yMzQ5NzcgWyBEZWJ1
ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9mb2N1cy1ldmVu
dC1kb2N1bWVudC1tb3ZlLmh0bWwgWyBTa2lwIF0KIAorIyBUZXN0IGlzIGZsYWt5IGJlY2F1c2Ug
TWVzc2FnZVBvcnQgbWVzc2FnZXMgbWF5IGdldCByZWNlaXZlZCBpbiBhIGRpZmZlcmVudCBvcmRl
ciB3aGVuIHNldmVyYWwgTWVzc2FnZVBvcnRzIGFyZSBpbnZvbHZlZCwKKyMgZHVlIHRvIGhvdyBN
ZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpIGlzIGltcGxlbWVudGVkLgoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0
aW9ucy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIEZhaWx1cmUgUGFzcyBdCisKICMg
UGx1Z2lucwogIyBGSVhNRTogUmVtb3ZlIHRoZXNlIHRlc3RzLgogcGx1Z2lucy8gWyBTa2lwIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0
LW9ubHkuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3
b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dAppbmRleCAwZTk5NzI0Yjg2NGIuLjY4
OThiNTRhYWI2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdv
cmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRl
LXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSw2
ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2Nh
bGhvc3Q6OTQ0NC9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zdXBwb3J0L3Jlc291cmNlLnB5P2Ny
b3NzLW9yaWdpbi1mZXRjaAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8v
d3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQvcmVzb3Vy
Y2UucHk/Y3Jvc3Mtb3JpZ2luLXhocgotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0
dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQv
cmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLWZldGNoCiAKIFBBU1MgU2FtZS1vcmlnaW4gJ2ZldGNo
KCknLgogUEFTUyBTYW1lLW9yaWdpbiBYSFIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lk
ZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWItZXhwZWN0ZWQu
dHh0CmluZGV4IDk3OTEwNjMwMzc4NS4uYmI2NDUyZjQ0YTBhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMu
c3ViLWV4cGVjdGVkLnR4dApAQCAtMiwxMCArMiw5IEBACiBIYXJuZXNzIEVycm9yIChUSU1FT1VU
KSwgbWVzc2FnZSA9IG51bGwKIAogVElNRU9VVCBzaGFyZWR3b3JrZXItc2NyaXB0LXNyYyBUZXN0
IHRpbWVkIG91dAotRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgbm90IGJsb2Nr
ZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgIEEgbmV0d29yayBlcnJvciBvY2N1cnJlZC4KLUZBSUwg
YGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AgUmVmdXNlZCB0byBldmFs
dWF0ZSBhIHN0cmluZyBhcyBKYXZhU2NyaXB0IGJlY2F1c2UgJ3Vuc2FmZS1ldmFsJyBpcyBub3Qg
YW4gYWxsb3dlZCBzb3VyY2Ugb2Ygc2NyaXB0IGluIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1
cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAic2NyaXB0LXNyYyAnc2VsZicgJ25vbmNlLWEnIGJsb2I6
IGZpbGVzeXN0ZW06Ii4KLQotRkFJTCBgc2V0VGltZW91dChbc3RyaW5nXSlgIG5vdCBibG9ja2Vk
IGluIGh0dHA6IHdpdGhvdXQgQ1NQIGFzc2VydF91bnJlYWNoZWQ6IGNhbGxiYWNrIG5vdCBjYWxs
ZWQuIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNj
cmlwdHMoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgTG9hZCBmYWlsZWQKK1BB
U1MgYGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AKK1BBU1MgYHNldFRp
bWVvdXQoW3N0cmluZ10pYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3V0IENTUAogVElNRU9V
VCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgYmxvY2tlZCBpbiBodHRwOiB3aXRoIHNj
cmlwdC1zcmMgJ3NlbGYnIFRlc3QgdGltZWQgb3V0CiBOT1RSVU4gYGV2YWwoKWAgYmxvY2tlZCBp
biBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCiBOT1RSVU4gYHNldFRpbWVvdXQoW3N0cmlu
Z10pYCBibG9ja2VkIGluIGh0dHA6IHdpdGggc2NyaXB0LXNyYyAnc2VsZicKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vy
cy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9i
cm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4
cGVjdGVkLnR4dAppbmRleCBjMTA3MTM2NTUyODAuLjZmODQ0ZGQ1ZDk0OSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJz
L29mZmxpbmUvYXBwY2FjaGUvd29ya2Vycy9hcHBjYWNoZS13b3JrZXIuaHR0cHMtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBz
LWV4cGVjdGVkLnR4dApAQCAtNSw3ICs1LDcgQEAgSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1l
c3NhZ2UgPSBudWxsCiBQQVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIGNhY2hlZCBzY3JpcHQK
IFBBU1MgRGVkaWNhdGVkIHdvcmtlciBvZiB0aGUgZmFsbGJhY2tlZCBzY3JpcHQKIFBBU1MgRGVk
aWNhdGVkIHdvcmtlciBvZiB0aGUgbm90LWluLWNhY2hlIHNjcmlwdAotUEFTUyBTaGFyZWQgd29y
a2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0Ci1QQVNTIFNoYXJlZCB3b3JrZXIgb2YgdGhlIGZhbGxi
YWNrZWQgc2NyaXB0CitGQUlMIFNoYXJlZCB3b3JrZXIgb2YgdGhlIGNhY2hlZCBzY3JpcHQgYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgIkRvbmU6IGNhY2hlZCIgYnV0IGdvdCAiRXJyb3I6IEltcG9y
dGluZyBhIG5vbi1jYWNoZWQgc2NyaXB0IG11c3QgZmFpbC4iCitGQUlMIFNoYXJlZCB3b3JrZXIg
b2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJEb25lOiBm
YWxsYmFja2VkIiBidXQgZ290ICJFcnJvcjogSW1wb3J0aW5nIGEgbm9uLWNhY2hlZCBzY3JpcHQg
bXVzdCBmYWlsLiIKIFRJTUVPVVQgU2hhcmVkIHdvcmtlciBvZiB0aGUgbm90LWluLWNhY2hlIHNj
cmlwdCBUZXN0IHRpbWVkIG91dAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9h
bm9ueW1vdXMtaWZyYW1lL3NoYXJlZHdvcmtlci1wYXJ0aXRpb25pbmcudGVudGF0aXZlLmh0dHBz
LndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9hbm9ueW1vdXMtaWZy
YW1lL3NoYXJlZHdvcmtlci1wYXJ0aXRpb25pbmcudGVudGF0aXZlLmh0dHBzLndpbmRvdy1leHBl
Y3RlZC50eHQKaW5kZXggNGVkODc0NzQ3NmM3Li5mMWViMGIyMTdmMzkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmln
aW4tZW1iZWRkZXItcG9saWN5L2Fub255bW91cy1pZnJhbWUvc2hhcmVkd29ya2VyLXBhcnRpdGlv
bmluZy50ZW50YXRpdmUuaHR0cHMud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVk
ZGVyLXBvbGljeS9hbm9ueW1vdXMtaWZyYW1lL3NoYXJlZHdvcmtlci1wYXJ0aXRpb25pbmcudGVu
dGF0aXZlLmh0dHBzLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwg
QW5vbnltb3VzIGlmcmFtZXMgZ2V0IHBhcnRpdGlvbmVkIHNoYXJlZCB3b3JrZXJzLiBhc3NlcnRf
dHJ1ZTogVGhlICJub3JtYWwiIGlmcmFtZSdzIHNoYXJlZHdvcmtlciBzaG91bGQgcmV0dXJuIHsi
bm9ybWFsIjogdHJ1ZSwgIm5vcm1hbF9jb250cm9sIjogdHJ1ZX0sIGJ1dCBpbnN0ZWFkIHJldHVy
bmVkIHsibm9ybWFsIjp0cnVlfSBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQorRkFJTCBBbm9ueW1v
dXMgaWZyYW1lcyBnZXQgcGFydGl0aW9uZWQgc2hhcmVkIHdvcmtlcnMuIGFzc2VydF90cnVlOiBU
aGUgIm5vcm1hbCIgaWZyYW1lJ3Mgc2hhcmVkd29ya2VyIHNob3VsZCByZXR1cm4geyJub3JtYWwi
OiB0cnVlLCAibm9ybWFsX2NvbnRyb2wiOiB0cnVlfSwgYnV0IGluc3RlYWQgcmV0dXJuZWQgeyJh
bm9ueW1vdXMiOnRydWUsIm5vcm1hbF9jb250cm9sIjp0cnVlLCJub3JtYWwiOnRydWUsImFub255
bW91c19jb250cm9sIjp0cnVlfSBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mt
b3JpZ2luLWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5o
dHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNv
bGF0ZWQtcGVybWlzc2lvbi5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggNjM1NWI2OGRlNzBiLi5j
OGJmNzVlN2VhODUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L2Nyb3NzLW9yaWdp
bi1pc29sYXRlZC1wZXJtaXNzaW9uLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVk
ZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5odHRwcy1leHBlY3Rl
ZC50eHQKQEAgLTIwLDcgKzIwLDcgQEAgUEFTUyBkZWRpY2F0ZWQgd29ya2VyOiBzY2hlbWUgPSBi
bG9iLCB2YWx1ZSA9ICoKIFBBU1MgZGVkaWNhdGVkIHdvcmtlcjogc2NoZW1lID0gYmxvYiwgdmFs
dWUgPSBzZWxmCiBGQUlMIGRlZGljYXRlZCB3b3JrZXI6IHNjaGVtZSA9IGJsb2IsIHZhbHVlID0g
KFwpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIGZhbHNlIGJ1dCBnb3QgdHJ1ZQogUEFTUyBzaGFy
ZWQgd29ya2VyOiB3aXRoQ29vcENvZXAgPSBmYWxzZQotUEFTUyBzaGFyZWQgd29ya2VyOiB3aXRo
Q29vcENvZXAgPSB0cnVlCitGQUlMIHNoYXJlZCB3b3JrZXI6IHdpdGhDb29wQ29lcCA9IHRydWUg
YXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCiBQQVNTIHNlcnZpY2Ug
d29ya2VyOiB3aXRoQ29vcENvZXAgPSBmYWxzZQogRkFJTCBzZXJ2aWNlIHdvcmtlcjogd2l0aENv
b3BDb2VwID0gdHJ1ZSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCB0cnVlIGJ1dCBnb3QgZmFsc2UK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVyaXRhbmNlLnN1
Yi5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS93b3JrZXItaW5oZXJp
dGFuY2Uuc3ViLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCA3NWIxZDMzZTUyNjAuLmIyYmYyZTNi
ZmYzZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVyaXRhbmNl
LnN1Yi5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2Vy
LWluaGVyaXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw2IEBACiBCbG9j
a2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29t
bW9uL2JsYW5rLmh0bWwKIEJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3
dy5sb2NhbGhvc3Q6OTQ0NC9jb21tb24vYmxhbmsuaHRtbAogQmxvY2tlZCBhY2Nlc3MgdG8gZXh0
ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbW1vbi9ibGFuay5odG1sCi1C
bG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQv
Y29tbW9uL2JsYW5rLmh0bWwKIAogUEFTUyBUZXN0IHRoYXQgbG9jYWwgc2NoZW1lIHdvcmtlcnMg
aW5oZXJpdCBDT0VQOiByZXF1aXJlLWNvcnAgZnJvbSB0aGUgY3JlYXRpbmcgZG9jdW1lbnQKIFBB
U1MgYmxvYiBVUkwgZGVkaWNhdGVkIHdvcmtlcjogU2FtZSBvcmlnaW4gc2hvdWxkIGJlIGFsbG93
ZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyX2RhdGFVcmwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9k
YXRhVXJsLWV4cGVjdGVkLnR4dAppbmRleCA5OTVhMDYwMTliODQuLjliNTgyMGFhZThjYiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyX2RhdGFV
cmwtZXhwZWN0ZWQudHh0CkBAIC0xLDEzICsxLDUgQEAKLUNPTlNPTEUgTUVTU0FHRTogRXJyb3I6
IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDIgYnV0IGdvdCAxCiAKIAotSGFybmVzcyBFcnJvciAo
RkFJTCksIG1lc3NhZ2UgPSBFcnJvcjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290
IDEKLQotUEFTUyBEYXRhIFVSTCBub3Qgc2hhcmVkIGJ5IGNyb3NzLW9yaWdpbiBTaGFyZWRXb3Jr
ZXJzCi1USU1FT1VUIERhdGEgVVJMcyBzaGFyZWQgYnkgc2FtZS1vcmlnaW4gU2hhcmVkV29ya2Vy
cyBUZXN0IHRpbWVkIG91dAotCi1IYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IEVycm9y
OiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3QgMQotCiBQQVNTIERhdGEgVVJMIG5v
dCBzaGFyZWQgYnkgY3Jvc3Mtb3JpZ2luIFNoYXJlZFdvcmtlcnMKLVRJTUVPVVQgRGF0YSBVUkxz
IHNoYXJlZCBieSBzYW1lLW9yaWdpbiBTaGFyZWRXb3JrZXJzIFRlc3QgdGltZWQgb3V0CitQQVNT
IERhdGEgVVJMcyBzaGFyZWQgYnkgc2FtZS1vcmlnaW4gU2hhcmVkV29ya2VycwogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
bW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21v
ZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dApp
bmRleCA1NzZlNmQyYjdlZDIuLjRhMjZiZTkyOWE4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdv
cmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQt
d29ya2VyLWltcG9ydC1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBA
QAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3MS5sb2NhbGhvc3Q6
OTQ0My93b3JrZXJzL21vZHVsZXMvcmVzb3VyY2VzL2V4cG9ydC1vbi1sb2FkLXNjcmlwdC5weQog
CiBQQVNTIFN0YXRpYyBpbXBvcnQuCiBGQUlMIFN0YXRpYyBpbXBvcnQgKGNyb3NzLW9yaWdpbiku
IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiAiSW1wb3J0aW5n
IGEgbW9kdWxlIHNjcmlwdCBmYWlsZWQuIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1p
bXBvcnQtZGF0YS11cmwtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3Jr
ZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKaW5kZXggNGY4NjQx
ZTUxNDgwLi4yOTk3ZjdlMWYzMDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0
LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtl
ci1pbXBvcnQtZGF0YS11cmwtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMg
QEAKLUNPTlNPTEUgTUVTU0FHRTogT3JpZ2luIG51bGwgaXMgbm90IGFsbG93ZWQgYnkgQWNjZXNz
LUNvbnRyb2wtQWxsb3ctT3JpZ2luLiBTdGF0dXMgY29kZTogMjAwCiAKIEhhcm5lc3MgRXJyb3Ig
KFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2Vy
LWltcG9ydC1kYXRhLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1p
bXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dAppbmRleCBlYWM3Zjk1ZGU2ZjIuLmNi
YzA0MjllMGM3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11cmwu
d2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVy
bC53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8g
ZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3MS5sb2NhbGhvc3Q6OTQ0My93b3JrZXJzL21vZHVsZXMv
cmVzb3VyY2VzL2V4cG9ydC1vbi1sb2FkLXNjcmlwdC5weQogCiBIYXJuZXNzIEVycm9yIChUSU1F
T1VUKSwgbWVzc2FnZSA9IG51bGwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBv
cnQud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1l
eHBlY3RlZC50eHQKaW5kZXggNTc2ZTZkMmI3ZWQyLi40YTI2YmU5MjlhOGQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1
bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hh
cmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJs
b2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMv
d29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkKIAogUEFT
UyBTdGF0aWMgaW1wb3J0LgogRkFJTCBTdGF0aWMgaW1wb3J0IChjcm9zcy1vcmlnaW4pLiBwcm9t
aXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogIkltcG9ydGluZyBhIG1v
ZHVsZSBzY3JpcHQgZmFpbGVkLiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9u
cy1jcmVkZW50aWFscy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3Jl
ZGVudGlhbHMtZXhwZWN0ZWQudHh0CmluZGV4IGUxYmVkZjU0MzBlZi4uYTcwZjA1YWY1NGY0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1jcmVkZW50aWFscy1leHBlY3RlZC50
eHQKQEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cDov
L3d3dzEubG9jYWxob3N0Ojg4MDAvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtY3Jl
ZGVudGlhbHMucHkKIAogSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGlj
cy9tdWx0aXBsZS13b3JrZXJzLzAwNC1leHBlY3RlZC50eHQKaW5kZXggMDE4ZGI2MDQ1NjlkLi5j
ZmU0NjU1Njc1Y2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhwZWN0ZWQudHh0CkBAIC0x
LDUgKzEsMyBAQAogCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKLQot
Tk9UUlVOIHNoYXJlZCB3b3JrZXIgd2l0aCBtdWx0aXBsZSBkb2N1bWVudHMKK1BBU1Mgc2hhcmVk
IHdvcmtlciB3aXRoIG11bHRpcGxlIGRvY3VtZW50cwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRp
cGxlLXdvcmtlcnMvMDA4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDgt
ZXhwZWN0ZWQudHh0CmluZGV4IDk3YTRlN2E3M2E2My4uMDlmNjcyZDFjNjIxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2Vt
YW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA4LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRp
cGxlLXdvcmtlcnMvMDA4LWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDMgQEAKIAotSGFybmVzcyBF
cnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0KLVRJTUVPVVQgbWVzc2FnZWNoYW5uZWwg
aW4gc2hhcmVkIHdvcmtlciBUZXN0IHRpbWVkIG91dAorUEFTUyBtZXNzYWdlY2hhbm5lbCBpbiBz
aGFyZWQgd29ya2VyCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4
dAppbmRleCBhMDg5YzIyNDg5ZTIuLmQzOWE1NTA4NGRjMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXIt
ZnJvbS1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxv
Yi11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDcgQEAKIAogSGFybmVzcyBFcnJv
ciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCiAKLUZBSUwgQ3JlYXRpbmcgYSBzaGFyZWQgd29y
a2VyIGZyb20gYSBibG9iIFVSTCB3b3Jrcy4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIndvcmtl
cl9PS18yIiBidXQgZ290ICJ3b3JrZXJfT0tfMSIKLVBBU1MgQ3JlYXRpbmcgYSBzaGFyZWQgd29y
a2VyIGZyb20gYSBibG9iIFVSTCB3b3JrcyBpbW1lZGlhdGVseSBiZWZvcmUgcmV2b2tpbmcuCi1U
SU1FT1VUIENvbm5lY3RpbmcgdG8gYSBzaGFyZWQgd29ya2VyIG9uIGEgcmV2b2tlZCBibG9iIFVS
TCB3b3Jrcy4gVGVzdCB0aW1lZCBvdXQKK1BBU1MgQ3JlYXRpbmcgYSBzaGFyZWQgd29ya2VyIGZy
b20gYSBibG9iIFVSTCB3b3Jrcy4KK1RJTUVPVVQgQ3JlYXRpbmcgYSBzaGFyZWQgd29ya2VyIGZy
b20gYSBibG9iIFVSTCB3b3JrcyBpbW1lZGlhdGVseSBiZWZvcmUgcmV2b2tpbmcuIFRlc3QgdGlt
ZWQgb3V0CitOT1RSVU4gQ29ubmVjdGluZyB0byBhIHNoYXJlZCB3b3JrZXIgb24gYSByZXZva2Vk
IGJsb2IgVVJMIHdvcmtzLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25z
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDZmZmVlMjczOTBkOS4uYWU0NWI0ZDI3Mzk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1l
LXZpYS1vcHRpb25zLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25z
LWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKIAotRkFJTCBUZXN0IHRoZSBuYW1lIHByb3Bl
cnR5IG9mIHNoYXJlZCB3b3JrZXJzIG1peGluZyBjb25zdHJ1Y3RvciBvcHRpb25zIGFuZCBjb25z
dHJ1Y3RvciBzdHJpbmdzIEVycm9yOiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3Qg
MQorUEFTUyBUZXN0IHRoZSBuYW1lIHByb3BlcnR5IG9mIHNoYXJlZCB3b3JrZXJzIG1peGluZyBj
b25zdHJ1Y3RvciBvcHRpb25zIGFuZCBjb25zdHJ1Y3RvciBzdHJpbmdzCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL29wZW4tdXJs
LXJlZGlyZWN0ZWQtc2hhcmVkd29ya2VyLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVk
LXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0CmluZGV4IDFlMmQzOTkyZjZkNS4uNTlj
YWNhNDg2ZjhkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMveGhyL29wZW4tdXJsLXJlZGlyZWN0ZWQtc2hhcmVkd29ya2VyLW9yaWdpbi1leHBlY3RlZC50
eHQKQEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cDov
L3d3dzIubG9jYWxob3N0Ojg4MDAveGhyL3Jlc291cmNlcy9pbnNwZWN0LWhlYWRlcnMucHk/Zmls
dGVyX25hbWU9b3JpZ2luJmNvcnMKIAogRkFJTCBSZWZlcmVyIGhlYWRlciBhc3NlcnRfZXF1YWxz
OiBleHBlY3RlZCAiUmVmZXJlcjogaHR0cDovL2xvY2FsaG9zdDo4ODAwL3hoci9yZXNvdXJjZXMv
d29ya2VyeGhyLW9yaWdpbi1yZWZlcnJlci5qc1xuIiBidXQgZ290ICJSZWZlcmVyOiBodHRwOi8v
bG9jYWxob3N0Ojg4MDAveGhyL3Jlc291cmNlcy9yZWRpcmVjdC5weT9sb2NhdGlvbj13b3JrZXJ4
aHItb3JpZ2luLXJlZmVycmVyLmpzXG4iCiBGQUlMIE9yaWdpbiBoZWFkZXIgYXNzZXJ0X2VxdWFs
czogZXhwZWN0ZWQgIk9yaWdpbjogaHR0cDovL2xvY2FsaG9zdDo4ODAwXG4iIGJ1dCBnb3QgIiIK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAz
YjJjNDlkNjUwMTYuLmZkYmQyOWJkZGFmMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNjYsNiArNjYsMzggQEAgaHR0cC90ZXN0cy9uYXZp
Z2F0aW9uL3BhZ2UtY2FjaGUtZ2V0VXNlck1lZGlhLXBlbmRpbmctcHJvbWlzZS5odG1sIFsgU2tp
cCBdCiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS1tZWRpYXN0cmVhbS5odG1sIFsg
U2tpcCBdCiBtZWRpYS9hdWRpby1zZXNzaW9uLWNhdGVnb3J5Lmh0bWwgWyBTa2lwIF0KIAorIyBT
aGFyZWQgd29ya2VycyBhcmUgb25seSBpbXBsZW1lbnRlZCBmb3IgV2ViS2l0Mi4KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5o
dHRwLXJwL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwLmh0bWwgWyBT
a2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvZ2VuL3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItY2xhc3Np
Yy5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nv
bnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXNlbGYvc2hh
cmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3Njcmlw
dC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cC5odG1sIFsgU2tpcCBdCitp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dl
bi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0
dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hh
cmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtl
ci1zcmMtc2VsZi9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3Rv
cC5odHRwLXJwL3dvcmtlci1zcmMtc2VsZi9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwcy5odG1s
IFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJp
dHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1v
ZHVsZS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtd2lsZGNh
cmQvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1y
cC93b3JrZXItc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBT
a2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItY2xhc3NpYy5o
dHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3Jr
ZXItY2xhc3NpYy5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXNl
bGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3Nj
cmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cC5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0
dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtc2VsZi9zaGFyZWR3b3Jr
ZXItY2xhc3NpYy5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtc2Vs
Zi9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93
b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lwIF0KK2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2Vu
L3RvcC5tZXRhL3dvcmtlci1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHBzLmh0bWwg
WyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0
eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWNs
YXNzaWMuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLXdpbGRjYXJk
L3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dv
cmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
Z2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRw
cy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLWNvbm5lY3Qtc3JjLnN1
Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXJlcG9ydC1vbmx5LnN1
Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3Vi
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvc2FuZGJveC9zaGFyZWQtd29ya2VyLXNhbmRib3guaHRtbCAgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvc2NyaXB0LXNyYy93b3JrZXItZGF0YS1zZXQtdGltZW91dC5zdWIuaHRtbCBbIFNraXAgXQor
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS93
b3JrZXItc3JjL3NoYXJlZC1jaGlsZC5zdWIuaHRtbCBbIFNraXAgXQorCiBodHRwL3dwdC9tZWRp
YXJlY29yZGVyIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlh
Y2FwdHVyZS1yZWNvcmQgWyBTa2lwIF0KIGZhc3QvaGlzdG9yeS9wYWdlLWNhY2hlLW1lZGlhLXJl
Y29yZGVyLmh0bWwgWyBTa2lwIF0KQEAgLTE1NzgsNCArMTYxMCw0IEBAIHdlYmtpdC5vcmcvYi8y
MzE5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9pbnRl
cmFjdGl2ZS1lCiAKIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWFsdGVybmF0ZS1pZnJh
bWUtYm9keS1kaXItYXR0ci1kb2VzLW5vdC11cGRhdGUtc2Nyb2xsYmFyLXBsYWNlbWVudC5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8yMzU3MzMgWyBCaWdTdXIrIGFy
bTY0IFJlbGVhc2UgXSBlZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1uZXdsaW5lLWluLXF1b3Rl
ZC1jb250ZW50LWNyYXNoLmh0bWwgWyBTa2lwIF0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
Cit3ZWJraXQub3JnL2IvMjM1NzMzIFsgQmlnU3VyKyBhcm02NCBSZWxlYXNlIF0gZWRpdGluZy9l
eGVjQ29tbWFuZC9pbnNlcnQtbmV3bGluZS1pbi1xdW90ZWQtY29udGVudC1jcmFzaC5odG1sIFsg
U2tpcCBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDc5MmEwMGY5ZWExYS4uNDU3YzRhYTliMWEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTc5LDYgKzE3OSw3IEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dCIKICAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ciIKICAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2Vycy9zaGFyZWQiCisgICAgIiR7V0VCQ09SRV9E
SVJ9L3dvcmtlcnMvc2hhcmVkL2NvbnRleHQiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3dvcmtsZXRz
IgogICAgICIke1dFQkNPUkVfRElSfS94bWwiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3htbC9wYXJz
ZXIiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA1YWNjMmQ5ZGZlMWUuLjFjOTg1NmQ0M2Q1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlCkBAIC0xOTU0LDkgKzE5NTQsMTIgQEAgc2V0KFdlYkNvcmVfUFJJVkFU
RV9GUkFNRVdPUktfSEVBREVSUwogICAgIHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgK
ICAgICB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKICAgICB3b3JrZXJzL1dvcmtlckxvYWRl
clByb3h5LmgKKyAgICB3b3JrZXJzL1dvcmtlck9iamVjdFByb3h5LmgKKyAgICB3b3JrZXJzL1dv
cmtlck9wdGlvbnMuaAogICAgIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaAog
ICAgIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCiAgICAgd29ya2Vy
cy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaAorICAgIHdvcmtlcnMvV29ya2VyUmVwb3J0aW5nUHJv
eHkuaAogICAgIHdvcmtlcnMvV29ya2VyUnVuTG9vcC5oCiAgICAgd29ya2Vycy9Xb3JrZXJTY3Jp
cHRMb2FkZXIuaAogICAgIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50LmgKQEAgLTIw
MDAsNiArMjAwMywxNSBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAg
ICAgd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAog
ICAgIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAogCisgICAgd29ya2Vy
cy9zaGFyZWQvU2hhcmVkV29ya2VySWRlbnRpZmllci5oCisgICAgd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyS2V5LmgKKyAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uLmgKKyAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LmgKKyAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5oCisKKyAgICB3b3Jr
ZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgKKyAgICB3b3Jr
ZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmgKKwogICAgIHhtbC9D
dXN0b21YUGF0aE5TUmVzb2x2ZXIuaAogICAgIHhtbC9YUGF0aEV4cHJlc3Npb24uaAogICAgIHht
bC9YUGF0aE5TUmVzb2x2ZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBmNjZjY2Y4ZjA2YTUuLjlhYjg2
MDRjOWQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTI3ODYsMTAgKzI3ODYsMTIgQEAgd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCiB3b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCi13b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcAotd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyUHJveHkuY3BwCit3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uLmNwcAord29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwCiB3b3JrZXJz
L3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwCiB3b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXJUaHJlYWQuY3BwCit3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyLmNwcAord29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJl
YWRQcm94eS5jcHAKIHdvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAogd29ya2xl
dHMvV29ya2xldC5jcHAKIHdvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5Y2Jm
ODc2ZTI1OGYuLmQxZDA1M2QwMjhiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTAzLDcgKzkwMyw3IEBACiAJCTJFNDM0NjRC
MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZVByb3h5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzOTBGNTQ2QTgyMDBCMEYx
QkEgLyogV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oICovOyB9OwogCQkyRTQzNDY0RDBGNTQ2QTgy
MDBCMEYxQkEgLyogV29ya2VyTG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjNCMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJMb2Nh
dGlvbi5oICovOyB9OwogCQkyRTQzNDY1MDBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyTWVzc2Fn
aW5nUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJFNDM0NjNFMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJNZXNzYWdpbmdQcm94eS5oICovOyB9
OwotCQkyRTQzNDY1MTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyT2JqZWN0UHJveHkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjNGMEY1NDZB
ODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94eS5oICovOyB9OworCQkyRTQzNDY1MTBGNTQ2
QTgyMDBCMEYxQkEgLyogV29ya2VyT2JqZWN0UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjNGMEY1NDZBODIwMEIwRjFCQSAvKiBXb3Jr
ZXJPYmplY3RQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTJFNDM0NjUzMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJSdW5Mb29wLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDY0MTBGNTQ2
QTgyMDBCMEYxQkEgLyogV29ya2VyUnVuTG9vcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFNDM0NjU1MEY1NDZBODIwMEIwRjFCQSAvKiBXb3Jr
ZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJFNDM0NjQzMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJUaHJlYWQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTc1ODQxRTEyNzc5QURBMDA2
MjYyOEIgLyogRmlsZVJlYWRlckxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkU3NTg0MUIxMjc3OUFEQTAwNjI2MjhCIC8qIEZpbGVSZWFkZXJM
b2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMTEyNSw3ICsxMTI1LDcgQEAKIAkJNDE2QTA2QTEyM0NDQUQwMzAwMzQ3MTA5IC8qIEF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTZBMDY5NjIzQ0NBQTlGMDAzNDcxMDkgLyogQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0MTZENzVBMjIwQzY1MUE1MDBEMDJEMkMgLyogTmV0d29ya0xvYWRJbmZv
cm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDE2RDc1OUYyMEM2NDQxMzAwRDAyRDJDIC8qIE5ldHdvcmtMb2FkSW5mb3JtYXRpb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFMEIzQTIw
OUJDM0NCMDA0QTk1RDkgLyogRmV0Y2hJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFMEIzNzIwOUJDM0MyMDA0QTk1RDkgLyogRmV0
Y2hJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJNDE2RTI5QTYxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFMjlB
NTEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCAqLzsgfTsKKwkJNDE2
RTI5QTYxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFMjlBNTEwMkZBOTYyMDA3
RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFODFCQkQxMkRGMDAwQTNGNjQgLyogUmVh
ZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEQ5IC8qIFJlYWRhYmxl
U3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFODFCQkQxMkRGMDAwQTNGNjUgLyogSlNET01CaW5k
aW5nSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjREQSAvKiBKU0RPTUJpbmRpbmdJbnRl
cm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQxNkU2RkU4MUJCRDEyREYwMDBBM0Y3NCAvKiBUcmFuc2Zvcm1TdHJlYW1JbnRl
cm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEVBIC8qIFRyYW5zZm9ybVN0cmVhbUludGVybmFs
c0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTEzMjAsNiArMTMyMCw4IEBACiAJCTQ2MEUzMDc3MjIyRjRGMDMwMDlBMDYwNiAvKiBE
ZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjVFREQ5RjIyMkY0RUMzMDBCNDZFMTYg
LyogRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2MjE4QUNCMUY3MkQ2NEUw
MDU3NEZCRSAvKiBET01IaWdoUmVzVGltZVN0YW1wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkUwMTZBRDFGNzJENjFFMDAyODJCMkMgLyogRE9NSGln
aFJlc1RpbWVTdGFtcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQ2MjczQ0FGMjYwRTU5RUYwMDZGQUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MjczQ0FDMjYw
RTU5REYwMDZGQUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NjI3RkY1OTI3OUI4MjQ5MDBBQTM5MTYgLyog
U2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2MjdGRjU4Mjc5QjgyNDYwMEFBMzkxNiAvKiBTaGFyZWRXb3JrZXJU
aHJlYWRQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTQ2MjdGRjVCMjc5Qjg3QUYwMEFBMzkxNiAvKiBTaGFyZWRXb3JrZXJJZGVudGlmaWVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjI3RkY1
QTI3OUI4N0EyMDBBQTM5MTYgLyogU2hhcmVkV29ya2VySWRlbnRpZmllci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2MkM3RjQxMjc1NkRCRTQw
MEQwODNDOCAvKiBXZWJMb2NrSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3ODAyQjIyNzQ3MTE4NTAwREE5RkI2IC8qIFdlYkxvY2tJ
ZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDYyRTRDNTAyNjE2QTgxMTAwM0EyQzY3IC8qIFNjcmlwdEJ1ZmZlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYyRTRDNEQyNjE2QTgwMTAw
M0EyQzY3IC8qIFNjcmlwdEJ1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTQ2MzRDNzJDMjc1N0RBQjIwMDI2QTgxNSAvKiBXZWJMb2NrTWFu
YWdlclNuYXBzaG90LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0Njc4MDJCMDI3NDcxMTdCMDBEQTlGQjYgLyogV2ViTG9ja01hbmFnZXJTbmFwc2hvdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzQx
LDE1ICsxMzQzLDE4IEBACiAJCTQ2NzMwMjAyMUM0RUZFNzgwMEJDQjM1NyAvKiBJZ25vcmVPcGVu
c0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzMwMjAxMUM0RUZFNjYwMEJDQjM1NyAvKiBJZ25vcmVP
cGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXIuaCAqLzsgfTsKIAkJNDY3QTY4RDcyNzVF
QTk5MTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3QTY4RDQyNzVFQTk4QjAwOUIzMUM1IC8qIFNo
YXJlZFdvcmtlclRocmVhZC5oICovOyB9OwogCQk0NjdBNjhEODI3NUVBOTk1MDA5QjMxQzUgLyog
U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NjdBNjhENTI3NUVBOThDMDA5QjMxQzUgLyogU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyLmggKi87IH07Ci0JCTQ2N0E2OEQ5Mjc1RUE5OTgwMDlCMzFDNSAvKiBTaGFy
ZWRXb3JrZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY3QTY4RDYyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclByb3h5LmggKi87
IH07Ci0JCTQ2N0E2OERBMjc1RUE5OUMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdBNjhEMjI3
NUVBOThBMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oICovOyB9OwogCQk0NjgyRDIw
MDFGNzk3ODMwMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODJEMUZGMUY3OTc4MjMwMEM4
NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODM0NEUwMUVEREZBQUEwMEI3Nzk1QiAvKiBE
T01SZWN0TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY4MzQ0REUxRURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4M0RGNDAyNzY3REY5ODAw
N0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODNERjNFMjc2N0RGOTgwMDdEMDBDOCAv
KiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmggKi87IH07CiAJCTQ2ODNERjQxMjc2N0U5
MUEwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzREYzQjI3NjdERjI2MDA3RDAwQzggLyog
U2hhZG93UmVhbG1HbG9iYWxTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTQ2ODhFRTNDMjZERDI2MTAwMDJBRjVDNCAvKiBDcm9zc09yaWdp
bk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
ODhFRTNBMjZERDI2MEMwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0Njk0M0RDODI3NjNGODEyMDA0
QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5NDNEQzUyNzYzRjgwRDAwNEI2MTBFIC8q
IFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0Njk0M0RDOTI3NjNGODE3MDA0QjYxMEUgLyogU2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk0Njk0M0RDQTI3NjNGODFDMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyUHJv
dmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
OTQzREM0Mjc2M0Y4MEQwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2OTg1RjIzMjdBNEE2
QUQwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTg1RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRX
b3JrZXJLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NjlDQ0NGRTI2OUQwMjFDMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5Q0NDRkMyNjlEMDIw
MjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjlENzdCODI3MDE2MjUxMDAxNDJGQTYgLyogTmF2
aWdhdGlvblJlcXVlc3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDY5RDc3QjYyNzAxNjI1MDAwMTQyRkE2IC8qIE5hdmlnYXRpb25SZXF1ZXN0ZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NkE3
OEIzNDI3OTlCRDcxMDAxMTU0RkUgLyogV29ya2VyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxQjFEMjYyNkYxOEE0QjAwODgyREEyIC8q
IFdvcmtlck9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0NkFBQUEzRDI1RDM2MzIwMDBCQUY0MkYgLyogQXVkaW9GaWxlUmVhZGVyQ29j
b2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QUFB
QTNBMjVEMzYzMTQwMEJBRjQyRiAvKiBBdWRpb0ZpbGVSZWFkZXJDb2NvYS5oICovOyB9OwogCQk0
NkI2M0Y2QzFDNkU4RDE5MDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjNGNkIxQzZFOENERjAw
MkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI2NTBERDIyOTYyNjI3MDBGRDhBQTQgLyogUGFn
ZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2QjY1MERCMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzY2LDYgKzEzNzEs
NyBAQAogCQk0NkJEMDVDNjI1QkI2RTZDMDAyMjVGMzAgLyogRXZlbnRMaXN0ZW5lck9wdGlvbnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkQwNUMz
MjVCQjZFNEUwMDIyNUYzMCAvKiBFdmVudExpc3RlbmVyT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QzA5NjIxMjNENzhERDYwMDY1
N0MwOSAvKiBIVFRQQ29va2llQWNjZXB0UG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkMwOTYyMDIzRDc4REQ2MDA2NTdDMDkgLyogSFRUUENv
b2tpZUFjY2VwdFBvbGljeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQ2QzM3NjYyMjA4NTE3N0QwMEM3MzgyOSAvKiBKU1JlbW90ZURPTVdpbmRv
dy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDMzc2
NjEyMDg1MTc2RDAwQzczODI5IC8qIEpTUmVtb3RlRE9NV2luZG93LmggKi87IH07CisJCTQ2QzQx
NjlCMjc5QTA0QzcwMDI1MkMzQiAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYyNkI0NzUyNzlBMDNE
MjAwQUVGMEIyIC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZDNjk2Q0IxRTcyMDVGNzAwNTk3
OTM3IC8qIENQVU1vbml0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2QzY5NkM5MUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZDNjk2Q0MxRTcy
MDVGQzAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNjk2Q0ExRTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0
b3IuY3BwICovOyB9OwogCQk0NkM4M0VGRTFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzgzRUZD
MUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05MTgwLDkgKzkxODYsMTMgQEAKIAkJNDYwQ0JG
MzMxRDRCQ0NGRTAwOTJFODhFIC8qIEpTRE9NV2luZG93UHJvcGVydGllcy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBDQkYzNDFENEJDQ0ZFMDA5MkU4OEUgLyog
SlNET01XaW5kb3dQcm9wZXJ0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTRE9NV2luZG93UHJvcGVydGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjBEMTk0NDFGQ0UyMUREMDBDM0RCODUgLyogSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDdXN0
b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
NjI2QjQ3NTI3OUEwM0QyMDBBRUYwQjIgLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDYyNzNDMjEyN0ExQ0JDNzAwNkExNUI5IC8qIEpTQXVkaW9Xb3Jr
bGV0UHJvY2Vzc29yQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXVkaW9Xb3JrbGV0
UHJvY2Vzc29yQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYyNzND
QUMyNjBFNTlERjAwNkZBQTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTV1NjcmlwdFN0b3JhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDYyNzNDQUUyNjBFNTlERjAwNkZBQTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTV1NjcmlwdFN0b3JhZ2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjI3RkY1NzI3OUI4MjQ1MDBBQTM5MTYg
LyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0NjI3RkY1ODI3OUI4MjQ2MDBBQTM5MTYgLyogU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYyN0ZGNUEyNzlC
ODdBMjAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlcklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VySWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NjJFNEM0RDI2MTZBODAxMDAzQTJDNjcgLyogU2NyaXB0QnVmZmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEJ1ZmZlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjJFNEM0RjI2MTZBODAxMDAzQTJDNjcgLyogU2Ny
aXB0QnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlw
dEJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MzQ1OTJCMUFDMjI3
MTAwMEVDQjcxQyAvKiBQb3dlck9ic2VydmVyTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFBvd2VyT2JzZXJ2ZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtOTIyOSwxNCArOTIzOSwxMCBAQAogCQk0NjczMDIwMTFDNEVGRTY2MDBCQ0Iz
NTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNy
ZW1lbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njc4MDJCMDI3NDcxMTdC
MDBEQTlGQjYgLyogV2ViTG9ja01hbmFnZXJTbmFwc2hvdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJMb2NrTWFuYWdlclNuYXBzaG90Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2NzgwMkIyMjc0NzExODUwMERBOUZCNiAvKiBXZWJMb2NrSWRlbnRpZmll
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJMb2NrSWRlbnRpZmllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NjdBNjhDRjI3NUVBOTg5MDA5QjMxQzUg
LyogU2hhcmVkV29ya2VyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2Vy
UHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdBNjhEMDI3NUVBOTg5
MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNo
YXJlZFdvcmtlclRocmVhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2N0E2
OEQxMjc1RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNDY3QTY4RDIyNzVFQTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtl
ck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyTWFuYWdlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk0NjdBNjhEMzI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVk
V29ya2VyTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJNYW5hZ2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3QTY4RDQyNzVFQTk4QjAwOUIz
MUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJU
aHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3QTY4RDUyNzVFQTk4QzAw
OUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFy
ZWRXb3JrZXJTY3JpcHRMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDY3
QTY4RDYyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclByb3h5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNoYXJlZFdvcmtlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
ODJEMUZGMUY3OTc4MjMwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgzNDREQzFFRERGQTVGMDBCNzc5NUIgLyog
RE9NUmVjdExpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTVJlY3RMaXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDY4MzQ0REQxRURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERPTVJlY3RMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTkyNDksNiArOTI1NSwxMiBAQAogCQk0NjgzREYzRTI3NjdERjk4MDA3RDAwQzgg
LyogSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2ODhFRTNBMjZERDI2MEMwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1v
ZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NPcmlnaW5Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2OEI4QkRFMjVDQzg0OTMwMEY2NzgyMiAvKiBKU0Jhc2VBdWRpb0NvbnRl
eHRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCYXNlQXVkaW9Db250ZXh0Q3VzdG9t
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQzIyNzYzRjgwQzAwNEI2
MTBFIC8qIFNoYXJlZFdvcmtlclByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJl
ZFdvcmtlclByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNE
QzQyNzYzRjgwRDAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlclByb3ZpZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNoYXJlZFdvcmtlclByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQ2OTQzREM1Mjc2M0Y4MEQwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQzYyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2
OTQzREM3Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5ODVGMjIyN0E0QTY4NjAwOTdBMzJCIC8qIFNoYXJlZFdv
cmtlcktleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJL
ZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5Q0NDRkEyNjlEMDIwMjAwNkUw
MzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnJvYWRjYXN0
Q2hhbm5lbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OUNDQ0ZDMjY5RDAy
MDIwMDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJyb2FkY2Fz
dENoYW5uZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5Q0NDRkQyNjlEMDIw
MzAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEJyb2FkY2FzdENoYW5uZWwu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTI4Myw2ICs5Mjk1LDcgQEAKIAkJ
NDZDMzc2NUYyMDg1MTc2QzAwQzczODI5IC8qIEpTUmVtb3RlRE9NV2luZG93LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUmVtb3RlRE9NV2luZG93LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDMzc2NjEyMDg1MTc2RDAwQzczODI5IC8qIEpT
UmVtb3RlRE9NV2luZG93LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUmVt
b3RlRE9NV2luZG93Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzNBOEQzMjU0
OEQ0QjcwMEM4QzUzQSAvKiBKU0F1ZGlvQnVmZmVyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTQXVkaW9CdWZmZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0NkM0MTY5RDI3OUEwNEQyMDAyNTJDM0IgLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkM2OTZDOTFF
NzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDUFVNb25pdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzY5
NkNBMUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENQVU1vbml0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NkM4M0VGQjFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VvTm90aWZpZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE1MTYsNiArMjE1MjksMTcgQEAKIAkJCXBhdGggPSBt
YWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk0NjI2QjQ3MzI3OUEwM0Ix
MDBBRUYwQjIgLyogY29udGV4dCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRy
ZW4gPSAoCisJCQkJNDYyN0ZGNTcyNzlCODI0NTAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlclRocmVh
ZFByb3h5LmNwcCAqLywKKwkJCQk0NjI3RkY1ODI3OUI4MjQ2MDBBQTM5MTYgLyogU2hhcmVkV29y
a2VyVGhyZWFkUHJveHkuaCAqLywKKwkJCQk0NkM0MTY5RDI3OUEwNEQyMDAyNTJDM0IgLyogU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwICovLAorCQkJCTQ2MjZCNDc1Mjc5QTAzRDIwMEFF
RjBCMiAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oICovLAorCQkJKTsKKwkJCXBhdGgg
PSBjb250ZXh0OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNDY0MjQwNDQy
MEVBRjBCRDAwQjI5RkQyIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKQEAgLTIxNTUwLDE2ICsyMTU3NCwyMCBAQAogCQk0NjY5NENERTI3NTk0NDZE
MDBFMzE1MEUgLyogc2hhcmVkICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQk0NjI2QjQ3MzI3OUEwM0IxMDBBRUYwQjIgLyogY29udGV4dCAqLywKIAkJCQk0
NjY5NENFMzI3NTk0NDhEMDBFMzE1MEUgLyogU2hhcmVkV29ya2VyLmNwcCAqLywKIAkJCQk0NjY5
NENFMjI3NTk0NDhEMDBFMzE1MEUgLyogU2hhcmVkV29ya2VyLmggKi8sCiAJCQkJNDY2OTRDRTUy
NzU5NDQ4RTAwRTMxNTBFIC8qIFNoYXJlZFdvcmtlci5pZGwgKi8sCiAJCQkJNDY2OTRDRTQyNzU5
NDQ4RTAwRTMxNTBFIC8qIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCAqLywKIAkJCQk0NjY5
NENFMTI3NTk0NDhDMDBFMzE1MEUgLyogU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaCAqLywKIAkJ
CQk0NjY5NENFMDI3NTk0NDhDMDBFMzE1MEUgLyogU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaWRs
ICovLAotCQkJCTQ2N0E2OEQzMjc1RUE5OEIwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2Vy
LmNwcCAqLywKLQkJCQk0NjdBNjhEMjI3NUVBOThBMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFu
YWdlci5oICovLAotCQkJCTQ2N0E2OENGMjc1RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJQ
cm94eS5jcHAgKi8sCi0JCQkJNDY3QTY4RDYyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtl
clByb3h5LmggKi8sCisJCQkJNDYyN0ZGNUEyNzlCODdBMjAwQUEzOTE2IC8qIFNoYXJlZFdvcmtl
cklkZW50aWZpZXIuaCAqLywKKwkJCQk0Njk4NUYyMjI3QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVk
V29ya2VyS2V5LmggKi8sCisJCQkJNDY5NDNEQzYyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uY3BwICovLAorCQkJCTQ2OTQzREM1Mjc2M0Y4MEQwMDRCNjEw
RSAvKiBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggKi8sCisJCQkJNDY5NDNEQzcyNzYz
RjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAqLywKKwkJCQk0
Njk0M0RDMjI3NjNGODBDMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwICovLAor
CQkJCTQ2OTQzREM0Mjc2M0Y4MEQwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5oICov
LAogCQkJCTQ2N0E2OEQxMjc1RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXIuY3BwICovLAogCQkJCTQ2N0E2OEQ1Mjc1RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJT
Y3JpcHRMb2FkZXIuaCAqLywKIAkJCQk0NjdBNjhEMDI3NUVBOTg5MDA5QjMxQzUgLyogU2hhcmVk
V29ya2VyVGhyZWFkLmNwcCAqLywKQEAgLTMzODY2LDYgKzMzODk0LDcgQEAKIAkJCQkyRDQ4MUYw
MjE0NkI1QzU1MDBBQTc4MzQgLyogQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUxQzQxNjEyMEY2NTYyRkQwMDkyRDJGQiAvKiBDcm9zc09yaWdpbkFjY2Vzc0Nv
bnRyb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2NzJBQTk4MjZCMDk0MzMwMEU2RUMzOCAvKiBD
cm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkE3OEIzNDI3
OTlCRDcxMDAxMTU0RkUgLyogV29ya2VyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY4
OEVFM0MyNkREMjYxMDAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDY3MkFBOTkyNkIwOTQzRjAwRTZFQzM4IC8qIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUFCRTY3QjFEMDU4MERCMDA2RDg2MkQgLyogQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRDaGVja2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTMzOTA0LDYgKzMzOTMz
LDcgQEAKIAkJCQk1N0ZFREQzRjFEQjZENTkyMDBFQjk2RjUgLyogQ3J5cHRvQWxnb3JpdGhtUnNh
S2V5R2VuUGFyYW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzA2QTY5NjFEREU1Qzk1MDBBMDNC
MTQgLyogQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTcyMUE5OEIxRUNFNTcwNDAwODEyOTVBIC8qIENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDYyN0ZGNTkyNzlCODI0OTAwQUEzOTE2IC8qIFNoYXJlZFdv
cmtlclRocmVhZFByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUJEMzMxQTE4MkQ4REREMDBD
MDVEOUYgLyogQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUxMjVGODJDMTgyMkNGRUMwMEQ4NENEOSAvKiBDcnlwdG9BbGdvcml0aG1TSEExLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMTlBQzNFRjE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxn
b3JpdGhtU0hBMjI0LmggaW4gSGVhZGVycyAqLywKQEAgLTM0ODkwLDYgKzM0OTIwLDcgQEAKIAkJ
CQlDRDNFMjFERDIxODM0NDRBMDBFNjZGNTUgLyogSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDRFRUExMDAyNzQ3NTdGMTAwNTk0QTgzIC8qIEltYWdlQ29udHJv
bHNNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Nzk3OTFBMEQ2QjlEMEMwMDM4NTFCOSAvKiBJ
bWFnZURhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2QzQxNjlCMjc5QTA0QzcwMDI1MkMzQiAv
KiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBMDg4
RjUyNjRFMUMwODAwM0UyQTZDIC8qIEltYWdlRGF0YVNldHRpbmdzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDRDE5RkVBODFGNTczOTcyMDAwQzQyRkIgLyogSW1hZ2VEZWNvZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDRDE5RkVBRTFGNTc0QjZEMDAwQzQyRkIgLyogSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNTUxOCw2ICszNTU0OSw3IEBACiAJCQkJMUE3NTBEOEUw
QTkwRTUyMTAwMEZGMjE1IC8qIEpTTm9kZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0Q5QzJDMzBDMTdCNjlFMDA1QzkwQTIgLyogSlNOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQUQyMEIxOEQxOEU5RDIzNzAwNUE4MDgzIC8qIEpTTm9kZUxpc3RDdXN0b20uaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQ2OTQzREM5Mjc2M0Y4MTcwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzUwM0NBNDEwMTc5QUQ3MDAzQjQ3
RTEgLyogSlNOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMEUyRjMzMjc2QkY2
ODUwMDgwOTMzMyAvKiBKU05vdGlmaWNhdGlvbkRpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTEwRTJGMkIyNzZCQ0ZFODAwODA5MzMzIC8qIEpTTm90aWZpY2F0aW9uRXZlbnQuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzY2NjksNiArMzY3MDEsNyBAQAogCQkJCTQxNkU2RkU5MUJCRDEyRTUw
MDBBNjA0MyAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTI5QzlBOTFGNTlDNTZCMDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2RTZGRTgxQkJEMTJERjAwMEEzRjY0IC8qIFJlYWRh
YmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2OTQzREM4
Mjc2M0Y4MTIwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTI5QzlBRjFGNTlDRjVCMDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1T
aW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTI5QzlBQjFGNTlDNTczMDA5RDc0MDMgLyogUmVh
ZGFibGVTdHJlYW1Tb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDNDMTJCMDI2NzYw
MEMxQTM1OSAvKiBSZWFsdGltZUFuYWx5c2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTM3MDQ2LDYg
KzM3MDc5LDcgQEAKIAkJCQkwRjYwNUFFRDE1Rjk0ODQ4MDA0REYwQzAgLyogU2Nyb2xsaW5nQ29u
c3RyYWludHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRjYyRUU4MTREQTIyQTcwMDQxNTU2QyAv
KiBTY3JvbGxpbmdDb29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5MUE5OTExNjI3
NDZDQjAwMjk3MzMwIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLmggaW4gSGVhZGVycyAqLywK
KwkJCQk0NjI3RkY1QjI3OUI4N0FGMDBBQTM5MTYgLyogU2hhcmVkV29ya2VySWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNzEyREJBNDkyMUY4QUQ4MzAwOEYzNkIyIC8qIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVCNDY2NTYzMjVEMTRDMEEw
MDBDRkUxNCAvKiBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY5OTA1OUEyNkY2QkU4NTAwNTRGQkUwIC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNzE3Miw4ICszNzIwNiw2IEBACiAJCQkJQ0QzNkMxNkIy
NjBBNjVDQzAwQzhDNTI5IC8qIFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4MzRERkFEMDFGN0RBRTVEMDBDMjcyNUIgLyogU2hhcmVkU3RyaW5nSGFzaC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFQTMwOTlFQjc4QzAwNTZFNTgxIC8qIFNoYXJlZFRpbWVy
LmggaW4gSGVhZGVycyAqLywKLQkJCQk0NjdBNjhEQTI3NUVBOTlDMDA5QjMxQzUgLyogU2hhcmVk
V29ya2VyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDY3QTY4RDkyNzVFQTk5ODAwOUIz
MUM1IC8qIFNoYXJlZFdvcmtlclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjdBNjhEODI3
NUVBOTk1MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0NjdBNjhENzI3NUVBOTkxMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQzREQjAyNjI3MzM5RkUwMDA3QjBBRDEgLyogU2hvdWxkTG9j
YWxpemVBeGlzTmFtZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMzc0MDcsNiArMzc0MzksNyBAQAog
CQkJCUIyMjI3OUMwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdFbGxpcHNlRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjIyMjc5QzgwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFQmxlbmRFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlDQjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
RkVDb2xvck1hdHJpeEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2OTg1RjIzMjdBNEE2
QUQwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3
OUNFMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5RDEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFQ29tcG9z
aXRlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTkyMTMyNzUxMUMwRTZCQjAwNDU2MjM4
IC8qIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTM4MDUz
LDYgKzM4MDg2LDcgQEAKIAkJCQk4M0FDRDAxMzI1MjI5RTEwMDAwRDEyNEUgLyogV29ya2xldE9w
dGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNEE2QTNBMjUyNjg0NEEwMDc0N0Y1RCAvKiBX
b3JrbGV0UGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMzQkQ4MTcyNTI0RDRGMjAw
NkU3MkIzIC8qIFdvcmtsZXRQZW5kaW5nVGFza3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2OTQz
RENBMjc2M0Y4MUMwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTMzMDlFMjQwOTlFNjQ5MjAwNTZFNTgxIC8qIFdyYXBDb250ZW50c0luRHVtbXlT
cGFuQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2RTZGRTgxQkJEMTJERjAwMEE2MDUz
IC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTlCQUYzQjI0MTJDMUEzOTgwMDAxNEJGMSAvKiBXcml0aW5nRGlyZWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggODQzMWY0YzUy
MTE2Li4wY2I0OWFmN2M1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3Bw
CkBAIC01NDYsNiArNTQ2LDExIEBAIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6dG9SYXdTdHJpbmco
KSBjb25zdAogICAgIHJldHVybiBtX2RhdGEudG9TdHJpbmcoKTsKIH0KIAorVVJMIFNlY3VyaXR5
T3JpZ2luOjp0b1VSTCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGF0YS50b1VSTCgpOworfQor
CiBzdGF0aWMgaW5saW5lIGJvb2wgYXJlT3JpZ2luc01hdGNoaW5nKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJiBvcmlnaW4xLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luMikKIHsKICAgICBBU1NF
UlQoJm9yaWdpbjEgIT0gJm9yaWdpbjIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eU9yaWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5o
CmluZGV4IDYzZDYzNDE1OWY2NC4uZTE1NWVjNmYyNGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbi5oCkBAIC0xOTAsNiArMTkwLDggQEAgcHVibGljOgogICAgIC8vIGNvdWxkIG1h
a2UgdGhlIHN0cmluZyByZXR1cm4gIm51bGwiLgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0
b1Jhd1N0cmluZygpIGNvbnN0OwogCisgICAgVVJMIHRvVVJMKCkgY29uc3Q7CisKICAgICAvLyBU
aGlzIG1ldGhvZCBjaGVja3MgZm9yIGVxdWFsaXR5IGJldHdlZW4gU2VjdXJpdHlPcmlnaW5zLCBu
b3Qgd2hldGhlcgogICAgIC8vIG9uZSBvcmlnaW4gY2FuIGFjY2VzcyBhbm90aGVyLiBJdCBpcyB1
c2VkIGZvciBoYXNoIHRhYmxlIGtleXMuCiAgICAgLy8gRm9yIGFjY2VzcyBjaGVja3MsIHVzZSBp
c1NhbWVPcmlnaW5Eb21haW4oKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlPcmlnaW5EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5E
YXRhLmNwcAppbmRleCBlNDljZGNkMzYyYWUuLjFhYjc3ZjZlZGYzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcApAQCAtNDksNiArNDksMTEgQEAgU3RyaW5n
IFNlY3VyaXR5T3JpZ2luRGF0YTo6dG9TdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBtYWtlU3Ry
aW5nKHByb3RvY29sLCAiOi8vIiwgaG9zdCwgJzonLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oKnBv
cnQpKTsKIH0KIAorVVJMIFNlY3VyaXR5T3JpZ2luRGF0YTo6dG9VUkwoKSBjb25zdAoreworICAg
IHJldHVybiBVUkwgeyBVUkwoKSwgdG9TdHJpbmcoKSB9OworfQorCiBTZWN1cml0eU9yaWdpbkRh
dGEgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoRnJhbWUqIGZyYW1lKQogewogICAgIGlm
ICghZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaAppbmRleCBm
ZGZjODY0M2VhZGYuLmFjMDgyODU2MTI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eU9yaWdpbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
T3JpZ2luRGF0YS5oCkBAIC04Niw2ICs4Niw3IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGEg
ewogICAgIH0KICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdG9TdHJpbmcoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBVUkwgdG9VUkwoKSBjb25zdDsKIAogI2lmICFMT0dfRElT
QUJMRUQKICAgICBTdHJpbmcgZGVidWdTdHJpbmcoKSBjb25zdCB7IHJldHVybiB0b1N0cmluZygp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKaW5kZXggZGMwZjUwOThiODdmLi5mYTdkMjMw
MmVjMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTEwOSw2ICsxMDksNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgTShTZWxlY3Rpb24pIFwKICAgICBNKFNlcnZpY2VzKSBc
CiAgICAgTShTZXJ2aWNlV29ya2VyKSBcCisgICAgTShTaGFyZWRXb3JrZXIpIFwKICAgICBNKFNw
ZWxsaW5nQW5kR3JhbW1hcikgXAogICAgIE0oU1FMRGF0YWJhc2UpIFwKICAgICBNKFN0b3JhZ2Up
IFwKQEAgLTEyNiw2ICsxMjcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgTShXZWJHTCkg
XAogICAgIE0oV2ViUlRDKSBcCiAgICAgTShXZWJSVENTdGF0cykgXAorICAgIE0oV29ya2VyKSBc
CiAgICAgTShYUikgXAogICAgIE0oV2hlZWxFdmVudFRlc3RNb25pdG9yKSBcCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3B0aW9ucy5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJPcHRpb25zLmgKaW5kZXggZmJkYWVhYmU4YWI3Li43NzMzOTViNzlh
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3B0aW9ucy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3B0aW9ucy5oCkBAIC0zNCw2ICszNCwz
NiBAQCBzdHJ1Y3QgV29ya2VyT3B0aW9ucyB7CiAgICAgV29ya2VyVHlwZSB0eXBlIHsgV29ya2Vy
VHlwZTo6Q2xhc3NpYyB9OwogICAgIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzIGNyZWRlbnRpYWxz
IHsgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHM6OlNhbWVPcmlnaW4gfTsKICAgICBTdHJpbmcgbmFt
ZTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxX
b3JrZXJPcHRpb25zPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KK3ZvaWQgV29ya2VyT3B0aW9uczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
Cit7CisgICAgZW5jb2RlciA8PCB0eXBlIDw8IGNyZWRlbnRpYWxzIDw8IG5hbWU7Cit9CisKK3Rl
bXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPFdvcmtlck9wdGlvbnM+IFdvcmtl
ck9wdGlvbnM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6b3B0aW9uYWw8
V29ya2VyVHlwZT4gd29ya2VyVHlwZTsKKyAgICBkZWNvZGVyID4+IHdvcmtlclR5cGU7CisgICAg
aWYgKCF3b3JrZXJUeXBlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3Rk
OjpvcHRpb25hbDxGZXRjaFJlcXVlc3RDcmVkZW50aWFscz4gY3JlZGVudGlhbHM7CisgICAgZGVj
b2RlciA+PiBjcmVkZW50aWFsczsKKyAgICBpZiAoIWNyZWRlbnRpYWxzKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG5hbWU7CisgICAg
ZGVjb2RlciA+PiBuYW1lOworICAgIGlmICghbmFtZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgIHJldHVybiB7IHsgKndvcmtlclR5cGUsICpjcmVkZW50aWFscywgV1RGTW92
ZSgqbmFtZSkgfSB9OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXggNDA2NzE3M2E4OWE1Li5iNzE4NWE1ZWRhODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKIAogI2luY2x1ZGUgIklEQkNvbm5lY3Rpb25Q
cm94eS5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2Rl
LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTb2NrZXRQcm92aWRl
ci5oIgpAQCAtMTYzLDYgKzE2NCwxMSBAQCB2b2lkIFdvcmtlclRocmVhZDo6ZXZhbHVhdGVTY3Jp
cHRJZk5lY2Vzc2FyeShTdHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UpCiAgICAgaWYgKHNvdXJjZVBy
b3ZpZGVyKQogICAgICAgICBnbG9iYWxTY29wZSgpLT5zZXRNYWluU2NyaXB0U291cmNlUHJvdmlk
ZXIoKnNvdXJjZVByb3ZpZGVyKTsKIAorICAgIGlmIChleGNlcHRpb25NZXNzYWdlLmlzRW1wdHko
KSkKKyAgICAgICAgUkVMRUFTRV9MT0coV29ya2VyLCAiV29ya2VyVGhyZWFkOjpldmFsdWF0ZVNj
cmlwdElmTmVjZXNzYXJ5KCkgU1VDQ0VTUyIpOworICAgIGVsc2UKKyAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoV29ya2VyLCAiV29ya2VyVGhyZWFkOjpldmFsdWF0ZVNjcmlwdElmTmVjZXNzYXJ5
KCkgRkFJTFVSRSAoJXtwcml2YXRlfXMpIiwgZXhjZXB0aW9uTWVzc2FnZS51dGY4KCkuZGF0YSgp
KTsKKwogICAgIC8vIEZyZWUgdGhlIHN0YXJ0dXAgZGF0YSB0byBjYXVzZSBpdHMgbWVtYmVyIHZh
cmlhYmxlIGRlcmVmJ3MgaGFwcGVuIG9uIHRoZSB3b3JrZXIncyB0aHJlYWQgKHNpbmNlCiAgICAg
Ly8gYWxsIHJlZi9kZXJlZnMgb2YgdGhlc2Ugb2JqZWN0cyBhcmUgaGFwcGVuaW5nIG9uIHRoZSB0
aHJlYWQgYXQgdGhpcyBwb2ludCkuIE5vdGUgdGhhdAogICAgIC8vIFdvcmtlclRocmVhZDo6fldv
cmtlclRocmVhZCBoYXBwZW5zIG9uIGEgZGlmZmVyZW50IHRocmVhZCB3aGVyZSBpdCB3YXMgY3Jl
YXRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCmluZGV4IGM2NjYxNGZh
MmM5Ni4uMmFjMDJhN2Q0YWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5j
cHAKQEAgLTUxLDExICs1MSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFVS
TCB0b3BPcmlnaW5VUkwoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKLXsKLSAgICByZXR1
cm4gVVJMIHsgVVJMIHsgfSwgb3JpZ2luLnRvUmF3U3RyaW5nKCkgfTsKLX0KLQogdm9pZCBTZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHk6OnNldHVwUGFnZUZvclNlcnZpY2VXb3JrZXIoUGFnZSYgcGFn
ZSwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhKQogewogICAgIGF1dG8mIG1h
aW5GcmFtZSA9IHBhZ2UubWFpbkZyYW1lKCk7CkBAIC02OCw4ICs2Myw5IEBAIHZvaWQgU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5OjpzZXR1cFBhZ2VGb3JTZXJ2aWNlV29ya2VyKFBhZ2UmIHBhZ2Us
IGNvbnN0IFNlcnZpCiAgICAgYXV0byBvcmlnaW4gPSBkYXRhLnJlZ2lzdHJhdGlvbi5rZXkudG9w
T3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4oKTsKICAgICBvcmlnaW4tPnNldFN0b3JhZ2VCbG9ja2lu
Z1BvbGljeShwYWdlLnNldHRpbmdzKCkuc3RvcmFnZUJsb2NraW5nUG9saWN5KCkpOwogCi0gICAg
ZG9jdW1lbnQtPnNldFNpdGVGb3JDb29raWVzKHRvcE9yaWdpblVSTChvcmlnaW4pKTsKLSAgICBk
b2N1bWVudC0+c2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXModG9wT3JpZ2luVVJMKG9yaWdpbikpOwor
ICAgIGF1dG8gb3JpZ2luQXNVUkwgPSBvcmlnaW4tPnRvVVJMKCk7CisgICAgZG9jdW1lbnQtPnNl
dFNpdGVGb3JDb29raWVzKG9yaWdpbkFzVVJMKTsKKyAgICBkb2N1bWVudC0+c2V0Rmlyc3RQYXJ0
eUZvckNvb2tpZXMob3JpZ2luQXNVUkwpOwogICAgIGRvY3VtZW50LT5zZXREb21haW5Gb3JDYWNo
ZVBhcnRpdGlvbihvcmlnaW4tPmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkpOwogCiAgICAgaWYg
KGF1dG8gcG9saWN5ID0gcGFyc2VSZWZlcnJlclBvbGljeShkYXRhLnJlZmVycmVyUG9saWN5LCBS
ZWZlcnJlclBvbGljeVNvdXJjZTo6SFRUUEhlYWRlcikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNwcAppbmRleCA2YTU5YjJlZmU5YTEuLmZlM2EwZjQ1
N2ExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIu
Y3BwCkBAIC0yNiwxMyArMjYsMTcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJT
aGFyZWRXb3JrZXIuaCIKIAorI2luY2x1ZGUgIkNsaWVudE9yaWdpbi5oIgogI2luY2x1ZGUgIkNv
bnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAi
RXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZXNzYWdlQ2hh
bm5lbC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VFcnJv
ci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2Vy
TWFuYWdlci5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb3h5LmgiCisjaW5jbHVkZSAiU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb3Zp
ZGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyT3B0aW9ucy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0lkZW50aWZpZXJzRmFjdG9yeS5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVz
Lmg+CkBAIC00MSw4ICs0NSwzMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChTaGFyZWRXb3JrZXIpOwogCisjZGVmaW5lIFNIQVJFRF9XT1JLRVJf
UkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gW2lk
ZW50aWZpZXI9JXtwdWJsaWN9c10gU2hhcmVkV29ya2VyOjoiIGZtdCwgdGhpcywgbV9pZGVudGlm
aWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgU0hB
UkVEX1dPUktFUl9SRUxFQVNFX0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1Io
U2hhcmVkV29ya2VyLCAiJXAgLSBbaWRlbnRpZmllcj0le3B1YmxpY31zXSBTaGFyZWRXb3JrZXI6
OiIgZm10LCB0aGlzLCBtX2lkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAjI19f
VkFfQVJHU19fKQorCitzdGF0aWMgSGFzaE1hcDxTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LCBTaGFyZWRXb3JrZXIqPiYgYWxsU2hhcmVkV29ya2VycygpCit7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLCBTaGFyZWRXb3JrZXIqPj4gYWxsU2hhcmVkV29ya2VyczsKKyAg
ICByZXR1cm4gYWxsU2hhcmVkV29ya2VyczsKK30KKworU2hhcmVkV29ya2VyKiBTaGFyZWRXb3Jr
ZXI6OmZyb21JZGVudGlmaWVyKFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgaWRlbnRpZmll
cikKK3sKKyAgICByZXR1cm4gYWxsU2hhcmVkV29ya2VycygpLmdldChpZGVudGlmaWVyKTsKK30K
Kworc3RhdGljIGlubGluZSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKiBtYWluVGhyZWFk
Q29ubmVjdGlvbigpCit7CisgICAgcmV0dXJuIFNoYXJlZFdvcmtlclByb3ZpZGVyOjpzaW5nbGV0
b24oKS5zaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7Cit9CisKIEV4Y2VwdGlvbk9yPFJlZjxTaGFy
ZWRXb3JrZXI+PiBTaGFyZWRXb3JrZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIEpTQzo6
UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncywgU3RyaW5nJiYgc2NyaXB0VVJMU3RyaW5nLCBzdGQ6
Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxTdHJpbmcsIFdvcmtlck9wdGlvbnM+PiYmIG1heWJlT3B0
aW9ucykKIHsKKyAgICBpZiAoIW1haW5UaHJlYWRDb25uZWN0aW9uKCkpCisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIlNoYXJlZCB3b3JrZXJzIGFyZSBub3Qg
c3VwcG9ydGVkIiB9OworCiAgICAgaWYgKCFkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmNhbkFj
Y2Vzc1NoYXJlZFdvcmtlcnMoZG9jdW1lbnQudG9wT3JpZ2luKCkpKQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIlRoaXMgaWZyYW1lIGRvZXNuJ3QgaGF2ZSBzdG9y
YWdlIGFjY2VzcyJfcyB9OwogCkBAIC03MCwyMyArOTcsMjggQEAgRXhjZXB0aW9uT3I8UmVmPFNo
YXJlZFdvcmtlcj4+IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgSlND
OjpSdW4KICAgICBhdXRvIHNoYXJlZFdvcmtlciA9IGFkb3B0UmVmKCpuZXcgU2hhcmVkV29ya2Vy
KGRvY3VtZW50LCBjaGFubmVsLT5wb3J0MSgpLCBydW50aW1lRmxhZ3MpKTsKICAgICBzaGFyZWRX
b3JrZXItPnN1c3BlbmRJZk5lZWRlZCgpOwogCi0gICAgU2hhcmVkV29ya2VyTWFuYWdlcjo6c2lu
Z2xldG9uKCkuY29ubmVjdCh1cmwsIHNoYXJlZFdvcmtlci5nZXQoKSwgV1RGTW92ZSh0cmFuc2Zl
cnJlZFBvcnQpLCBXVEZNb3ZlKG9wdGlvbnMpKTsKKyAgICBDbGllbnRPcmlnaW4gY2xpZW50T3Jp
Z2luIHsgZG9jdW1lbnQudG9wRG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSwgZG9j
dW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkgfTsKKyAgICBtYWluVGhyZWFkQ29ubmVjdGlv
bigpLT5yZXF1ZXN0U2hhcmVkV29ya2VyKGNsaWVudE9yaWdpbiwgc2hhcmVkV29ya2VyLT5pZGVu
dGlmaWVyKCksIHVybCwgV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBvcHRpb25zKTsKICAgICBy
ZXR1cm4gc2hhcmVkV29ya2VyOwogfQogCiBTaGFyZWRXb3JrZXI6OlNoYXJlZFdvcmtlcihEb2N1
bWVudCYgZG9jdW1lbnQsIFJlZjxNZXNzYWdlUG9ydD4mJiBwb3J0LCBKU0M6OlJ1bnRpbWVGbGFn
cyBydW50aW1lRmxhZ3MpCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmRvY3VtZW50KQorICAgICwg
bV9pZGVudGlmaWVyKFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI6OmdlbmVyYXRlKCkpCiAg
ICAgLCBtX3BvcnQoV1RGTW92ZShwb3J0KSkKICAgICAsIG1faWRlbnRpZmllckZvckluc3BlY3Rv
cigiU2hhcmVkV29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRl
SWRlbnRpZmllcigpKQogICAgICwgbV9ydW50aW1lRmxhZ3MocnVudGltZUZsYWdzKQotICAgICwg
bV9jcmVhdGlvblRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkpCi0gICAgLCBtX3Byb3h5KFNoYXJl
ZFdvcmtlclByb3h5OjpjcmVhdGUoKnRoaXMpKQogeworICAgIFNIQVJFRF9XT1JLRVJfUkVMRUFT
RV9MT0coIlNoYXJlZFdvcmtlcjoiKTsKKyAgICBhbGxTaGFyZWRXb3JrZXJzKCkuYWRkKG1faWRl
bnRpZmllciwgdGhpcyk7CiB9CiAKIFNoYXJlZFdvcmtlcjo6flNoYXJlZFdvcmtlcigpCiB7Ci0g
ICAgbV9wcm94eS53b3JrZXJPYmplY3REZXN0cm95ZWQoKTsKKyAgICBBU1NFUlQoYWxsU2hhcmVk
V29ya2VycygpLmdldChtX2lkZW50aWZpZXIpID09IHRoaXMpOworICAgIFNIQVJFRF9XT1JLRVJf
UkVMRUFTRV9MT0coIn5TaGFyZWRXb3JrZXI6Iik7CisgICAgYWxsU2hhcmVkV29ya2VycygpLnJl
bW92ZShtX2lkZW50aWZpZXIpOworICAgIEFTU0VSVCghbV9pc0FjdGl2ZSk7CiB9CiAKIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIFNoYXJlZFdvcmtlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0CkBAIC0xMDQsMTkgKzEzNiwyNiBAQCBFdmVudFRhcmdldEludGVyZmFjZSBTaGFyZWRX
b3JrZXI6OmV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QKICAgICByZXR1cm4gU2hhcmVkV29y
a2VyRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOwogfQogCi12b2lkIFNoYXJlZFdvcmtlcjo6c3Rv
cCgpCit2b2lkIFNoYXJlZFdvcmtlcjo6ZGlkRmFpbExvYWRpbmcoKQogewotICAgIHRlcm1pbmF0
ZSgpOworICAgIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0dfRVJST1IoIn5kaWRGYWlsTG9hZGlu
ZzoiKTsKKyAgICBxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6OkRP
TU1hbmlwdWxhdGlvbiwgRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZl
bnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOworICAgIG1faXNB
Y3RpdmUgPSBmYWxzZTsKIH0KIAogYm9vbCBTaGFyZWRXb3JrZXI6OnZpcnR1YWxIYXNQZW5kaW5n
QWN0aXZpdHkoKSBjb25zdAogewotICAgIHJldHVybiBtX3Byb3h5Lmhhc1BlbmRpbmdBY3Rpdml0
eSgpIHx8IG1faXNMb2FkaW5nOworICAgIHJldHVybiBtX2lzQWN0aXZlOwogfQogCi12b2lkIFNo
YXJlZFdvcmtlcjo6dGVybWluYXRlKCkKK3ZvaWQgU2hhcmVkV29ya2VyOjpzdG9wKCkKIHsKLSAg
ICBtX3Byb3h5LnRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCk7CisgICAgU0hBUkVEX1dPUktF
Ul9SRUxFQVNFX0xPRygic3RvcDoiKTsKKyAgICBtX2lzQWN0aXZlID0gZmFsc2U7CisgICAgbWFp
blRocmVhZENvbm5lY3Rpb24oKS0+c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkobV9pZGVu
dGlmaWVyKTsKIH0KIAorI3VuZGVmIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0cKKyN1bmRlZiBT
SEFSRURfV09SS0VSX1JFTEVBU0VfTE9HX0VSUk9SCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmgKaW5kZXggNTMy
NmVlNTQyYzg4Li41ZDBiNzlhYjM4ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlci5oCkBAIC0yNywxMyArMjcsMTQgQEAKIAogI2luY2x1ZGUgIkFic3Ry
YWN0V29ya2VyLmgiCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiU2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1
bnRpbWVGbGFncy5oPgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVzc2FnZVBvcnQ7Ci1jbGFzcyBTaGFyZWRXb3JrZXJQcm94
eTsKK2NsYXNzIFJlc291cmNlRXJyb3I7CiAKIHN0cnVjdCBXb3JrZXJPcHRpb25zOwogCkBAIC00
MywxNSArNDQsMTQgQEAgcHVibGljOgogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8U2hhcmVk
V29ya2VyPj4gY3JlYXRlKERvY3VtZW50JiwgSlNDOjpSdW50aW1lRmxhZ3MsIFN0cmluZyYmIHNj
cmlwdFVSTCwgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25z
Pj4mJik7CiAgICAgflNoYXJlZFdvcmtlcigpOwogCisgICAgc3RhdGljIFNoYXJlZFdvcmtlciog
ZnJvbUlkZW50aWZpZXIoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgU2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVu
dGlmaWVyOyB9CiAgICAgTWVzc2FnZVBvcnQmIHBvcnQoKSBjb25zdCB7IHJldHVybiBtX3BvcnQu
Z2V0KCk7IH0KICAgICBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MoKSB7IHJldHVybiBt
X3J1bnRpbWVGbGFnczsgfQogCiAgICAgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyRm9ySW5zcGVj
dG9yKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yOyB9Ci0gICAgTW9u
b3RvbmljVGltZSBjcmVhdGlvblRpbWUoKSBjb25zdCB7IHJldHVybiBtX2NyZWF0aW9uVGltZTsg
fQogCi0gICAgU2hhcmVkV29ya2VyUHJveHkmIHByb3h5KCkgeyByZXR1cm4gbV9wcm94eTsgfQot
Ci0gICAgdm9pZCBzZXRJc0xvYWRpbmcoYm9vbCBpc0xvYWRpbmcpIHsgbV9pc0xvYWRpbmcgPSBp
c0xvYWRpbmc7IH0KKyAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKCk7CiAKICAgICAvLyBFdmVudFRh
cmdldC4KICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3QgZmluYWw7CkBAIC01OSw4ICs1OSw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
U2hhcmVkV29ya2VyKERvY3VtZW50JiwgUmVmPE1lc3NhZ2VQb3J0PiYmLCBKU0M6OlJ1bnRpbWVG
bGFncyk7CiAKLSAgICB2b2lkIHRlcm1pbmF0ZSgpOwotCiAgICAgLy8gRXZlbnRUYXJnZXQuCiAg
ICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5h
bDsKIApAQCAtNzAsMTIgKzY4LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCB2aXJ0dWFsSGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAKIAorICAgIFNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFJlZjxNZXNzYWdlUG9ydD4gbV9wb3J0OwogICAg
IFN0cmluZyBtX2lkZW50aWZpZXJGb3JJbnNwZWN0b3I7CiAgICAgSlNDOjpSdW50aW1lRmxhZ3Mg
bV9ydW50aW1lRmxhZ3M7Ci0gICAgTW9ub3RvbmljVGltZSBtX2NyZWF0aW9uVGltZTsKLSAgICBT
aGFyZWRXb3JrZXJQcm94eSYgbV9wcm94eTsgLy8gVGhlIHByb3h5IG91dGxpdmVzIHRoZSB3b3Jr
ZXIgdG8gcGVyZm9ybSB0aHJlYWQgc2h1dGRvd24uCi0gICAgYm9vbCBtX2lzTG9hZGluZyB7IGZh
bHNlIH07CisgICAgYm9vbCBtX2lzQWN0aXZlIHsgdHJ1ZSB9OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDQxMjFlYjU4YzIwNS4uNDU0MDJhYjAw
NGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0yNiw2ICsyNiwxMiBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgiCiAKKyNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VF
dmVudC5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFk
LmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lu
bGluZXMuaD4KIApAQCAtMzMsMTcgKzM5LDQ0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlKTsKIAorI2Rl
ZmluZSBTQ09QRV9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2Vy
LCAiJXAgLSBbc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gU2hhcmVkV29ya2Vy
R2xvYmFsU2NvcGU6OiIgZm10LCB0aGlzLCB0aGlzLT50aHJlYWQoKS5pZGVudGlmaWVyKCkudG9V
SW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKKwogU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OlNoYXJl
ZFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV29ya2VyUGFyYW1l
dGVycyYgcGFyYW1zLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBXb3JrZXJUaHJlYWQm
IHRocmVhZCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJD
b25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFBy
b3ZpZGVyKQogICAgIDogV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyVGhyZWFkVHlwZTo6U2hhcmVk
V29ya2VyLCBwYXJhbXMsIFdURk1vdmUob3JpZ2luKSwgdGhyZWFkLCBXVEZNb3ZlKHRvcE9yaWdp
biksIGNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIpCiAgICAgLCBtX25hbWUobmFtZSkK
IHsKKyAgICBTQ09QRV9SRUxFQVNFX0xPRygiU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6Iik7CiAg
ICAgcmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCk7CiAgICAgYXBwbHlDb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnMocGFyYW1zLmNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNl
SGVhZGVycyk7CiB9CiAKK1NoYXJlZFdvcmtlclRocmVhZCYgU2hhcmVkV29ya2VyR2xvYmFsU2Nv
cGU6OnRocmVhZCgpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNoYXJlZFdvcmtlclRocmVh
ZCY+KFdvcmtlckdsb2JhbFNjb3BlOjp0aHJlYWQoKSk7Cit9CisKIHZvaWQgU2hhcmVkV29ya2Vy
R2xvYmFsU2NvcGU6OmNsb3NlKCkKIHsKKyAgICBTQ09QRV9SRUxFQVNFX0xPRygiY2xvc2U6Iik7
CiAgICAgdGhyZWFkKCkuc3RvcChudWxscHRyKTsKIH0KIAorLy8gaHR0cHM6Ly9odG1sLnNwZWMu
d2hhdHdnLm9yZy9tdWx0aXBhZ2Uvd29ya2Vycy5odG1sI2RvbS1zaGFyZWR3b3JrZXIgc3RlcCAx
MS41Cit2b2lkIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0Q29ubmVjdEV2ZW50KFRyYW5z
ZmVycmVkTWVzc2FnZVBvcnQmJiB0cmFuc2ZlcnJlZFBvcnQsIFN0cmluZyYmIHNvdXJjZU9yaWdp
bikKK3sKKyAgICBTQ09QRV9SRUxFQVNFX0xPRygicG9zdENvbm5lY3RFdmVudDoiKTsKKyAgICBh
dXRvIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
KCIiKTsKKyAgICBBU1NFUlQoc2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKKyAgICBhdXRvIHBvcnRz
ID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKnRoaXMsIHsgV1RGTW92ZSh0cmFuc2ZlcnJl
ZFBvcnQpIH0pOworICAgIEFTU0VSVChwb3J0cy5zaXplKCkgPT0gMSk7CisgICAgYXV0byBwb3J0
ID0gcG9ydHNbMF07CisgICAgQVNTRVJUKHBvcnQpOworICAgIGF1dG8gZXZlbnQgPSBNZXNzYWdl
RXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgc2VyaWFsaXplZFNjcmlwdFZhbHVlLnJlbGVh
c2VOb25OdWxsKCksIHNvdXJjZU9yaWdpbiwgeyB9LCBwb3J0KTsKKyAgICBldmVudC0+aW5pdEV2
ZW50KGV2ZW50TmFtZXMoKS5jb25uZWN0RXZlbnQsIGZhbHNlLCBmYWxzZSk7CisKKyAgICBkaXNw
YXRjaEV2ZW50KFdURk1vdmUoZXZlbnQpKTsKK30KKworI3VuZGVmIFNDT1BFX1JFTEVBU0VfTE9H
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IGYzNzc5Yjg0ZDE1
MC4uMjc2NDYxZGUzOGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTI1LDExICsyNSwxMyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIk1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmgiCiAjaW5j
bHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkOwogc3RydWN0
IFdvcmtlclBhcmFtZXRlcnM7CiAKIGNsYXNzIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlIGZpbmFs
IDogcHVibGljIFdvcmtlckdsb2JhbFNjb3BlIHsKQEAgLTM5LDcgKzQxLDExIEBAIHB1YmxpYzoK
IAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5cGU6OlNoYXJlZFdvcmtl
cjsgfQogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQor
ICAgIFNoYXJlZFdvcmtlclRocmVhZCYgdGhyZWFkKCk7CisKKyAgICB2b2lkIHBvc3RDb25uZWN0
RXZlbnQoVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBTdHJpbmcmJiBzb3VyY2VPcmlnaW4pOwog
ICAgIHZvaWQgY2xvc2UoKTsKKwogcHJpdmF0ZToKICAgICBTaGFyZWRXb3JrZXJHbG9iYWxTY29w
ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBSZWY8U2VjdXJp
dHlPcmlnaW4+JiYsIFdvcmtlclRocmVhZCYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmln
aW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VySWRl
bnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VySWRl
bnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODdhOTcy
MTA0ODc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VySWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworZW51bSBTaGFyZWRXb3JrZXJJZGVudGlmaWVyVHlwZSB7IH07Cit1
c2luZyBTaGFyZWRXb3JrZXJJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlcktleS5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyS2V5LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41ZjllNmRjOTBiYTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaApAQCAtMCww
ICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDbGllbnRP
cmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3N0cnVjdCBTaGFyZWRXb3JrZXJLZXkgeworICAgIFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmln
aW47CisgICAgVVJMIHVybDsKKyAgICBTdHJpbmcgbmFtZTsKKworICAgIHVuc2lnbmVkIGhhc2go
KSBjb25zdDsKK307CisKK2lubGluZSB1bnNpZ25lZCBTaGFyZWRXb3JrZXJLZXk6Omhhc2goKSBj
b25zdAoreworICAgIEhhc2hlciBoYXNoZXI7CisgICAgYWRkKGhhc2hlciwgb3JpZ2luLmhhc2go
KSk7CisgICAgYWRkKGhhc2hlciwgdXJsKTsKKyAgICBhZGQoaGFzaGVyLCBuYW1lKTsKKyAgICBy
ZXR1cm4gaGFzaGVyLmhhc2goKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
aGFyZWRXb3JrZXJLZXkmIGEsIGNvbnN0IFNoYXJlZFdvcmtlcktleSYgYikKK3sKKyAgICByZXR1
cm4gYS5vcmlnaW4gPT0gYi5vcmlnaW4gJiYgYS51cmwgPT0gYi51cmwgJiYgYS5uYW1lID09IGIu
bmFtZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5PiB7
CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5
JiBrZXkpCisgICAgeworICAgICAgICByZXR1cm4ga2V5Lmhhc2goKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIGEsIGNvbnN0
IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgYikKKyAgICB7CisgICAgICAgIHJldHVybiBhID09
IGI7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlP
ckRlbGV0ZWQgPSBmYWxzZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2Vi
Q29yZTo6U2hhcmVkV29ya2VyS2V5PiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYkNvcmU6OlNoYXJl
ZFdvcmtlcktleT4geworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBlbXB0eVZhbHVlSXNaZXJv
ID0gZmFsc2U7CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6
OlNoYXJlZFdvcmtlcktleSYgc2xvdCkgeyBuZXcgKE5vdE51bGwsICZzbG90LnVybCkgVVJMKFdU
Rjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZh
bHVlKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgc2xvdCkgeyByZXR1cm4gc2xvdC51
cmwuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RG
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1h
bmFnZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTI2YmM0ZmVkODcuLjAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJNYW5hZ2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlck1hbmFnZXIuaCIK
LQotI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgotI2luY2x1ZGUgIkV2ZW50TmFt
ZXMuaCIKLSNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgotI2luY2x1ZGUgIk1lc3NhZ2VFdmVu
dC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgotI2luY2x1ZGUgIlNoYXJlZFdv
cmtlci5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAi
U2hhcmVkV29ya2VyUHJveHkuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIu
aCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKLSNpbmNsdWRlICJXb3JrZXJSdW5M
b29wLmgiCi0jaW5jbHVkZSAiV29ya2VyU2NyaXB0TG9hZGVyLmgiCi0jaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1TaGFyZWRXb3JrZXJNYW5hZ2VyJiBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzaW5n
bGV0b24oKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFyZWRXb3JrZXJNYW5hZ2Vy
PiBpbnN0YW5jZTsKLSAgICByZXR1cm4gaW5zdGFuY2UuZ2V0KCk7Ci19Ci0KLXZvaWQgU2hhcmVk
V29ya2VyTWFuYWdlcjo6Y29ubmVjdChjb25zdCBVUkwmIHVybCwgU2hhcmVkV29ya2VyJiB3b3Jr
ZXIsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBtZXNzYWdlUG9ydCwgV29ya2VyT3B0aW9ucyYm
IG9wdGlvbnMpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAvLyBGSVhN
RTogSGFuZGxlIHdvcmtlcnMgZnJvbSBvdGhlciBwcm9jZXNzZXMsIHdoaWNoIHdpbGwgcHJvYmFi
bHkgcmVxdWlyZSBtb3ZpbmcgY29ubmVjdCB0byB0aGUgRnJhbWVMb2FkZXJDbGllbnQgb3Igc29t
ZXRoaW5nLgotICAgIC8vIE1heWJlIHNvbWV0aGluZyBtb3JlIGxpa2Ugd2hhdCBTZXJ2aWNlV29y
a2VycyBkb2VzLgotCi0gICAgLy8gRklYTUU6IENoZWNrIGlmIHdlIGFscmVhZHkgbWFkZSBhIHRo
cmVhZC4KLSAgICAvLyBGSVhNRTogQ2hlY2sgaWYgdGhlcmUncyBhbHJlYWR5IGEgc2hhcmVkIHdv
cmtlciBhbmQgdXNlIHRoYXQgaWYgdGhlcmUgaXMuCi0KLSAgICBhdXRvIGxvYWRlciA9IG1ha2VV
bmlxdWVSZWY8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPih1cmwsIHdvcmtlciwgV1RGTW92ZSht
ZXNzYWdlUG9ydCksIFdURk1vdmUob3B0aW9ucykpOwotICAgIGF1dG8gaWRlbnRpZmllciA9IGxv
YWRlci0+aWRlbnRpZmllcigpOwotICAgIG1fbG9hZGVycy5hZGQoaWRlbnRpZmllciwgV1RGTW92
ZShsb2FkZXIpKTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzY3JpcHRMb2FkRmFp
bGVkKFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYgbG9hZGVyKQotewotICAgIEFjdGl2ZURPTU9i
amVjdDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KGxvYWRlci53b3JrZXIoKSwgVGFza1NvdXJj
ZTo6RE9NTWFuaXB1bGF0aW9uLCBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50
LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7Ci0gICAg
bV9sb2FkZXJzLnJlbW92ZShsb2FkZXIuaWRlbnRpZmllcigpKTsKLX0KLQotdm9pZCBTaGFyZWRX
b3JrZXJNYW5hZ2VyOjpzY3JpcHRMb2FkZWRTdWNjZXNzZnVsbHkoU2hhcmVkV29ya2VyU2NyaXB0
TG9hZGVyJiBsb2FkZXIsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc2NyaXB0QnVmZmVyLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBTaGFyZWRXb3JrZXImIHNo
YXJlZFdvcmtlciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHRyYW5zZmVycmVkUG9ydCkKLXsK
LSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8mIHdvcmtlciA9IGxvYWRl
ci53b3JrZXIoKTsKLSAgICBhdXRvJiBvcHRpb25zID0gbG9hZGVyLm9wdGlvbnMoKTsKLQotICAg
IGF1dG8mIHByb3h5ID0gc2hhcmVkV29ya2VyLnByb3h5KCk7Ci0KLSAgICBwcm94eS5zdGFydFdv
cmtlckdsb2JhbFNjb3BlKAotICAgICAgICBsb2FkZXIudXJsKCksCi0gICAgICAgIG9wdGlvbnMu
bmFtZSwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC51c2VyQWdlbnQobG9hZGVyLnVy
bCgpKSwKLSAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmlz
T25MaW5lKCksCi0gICAgICAgIHNjcmlwdEJ1ZmZlciwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+cmVzcG9uc2VIZWFkZXJzKCksCi0gICAg
ICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNl
Y3VyaXR5UG9saWN5KCksCi0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3Jvc3NPcmln
aW5FbWJlZGRlclBvbGljeSgpLAotICAgICAgICB3b3JrZXIuY3JlYXRpb25UaW1lKCksCi0gICAg
ICAgIFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZywKLSAgICAgICAgb3B0aW9ucy50eXBlLAot
ICAgICAgICBvcHRpb25zLmNyZWRlbnRpYWxzLAotICAgICAgICB3b3JrZXIucnVudGltZUZsYWdz
KCkKLSAgICApOwotICAgIGlmICghcHJveHkudGhyZWFkKCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaXM8RG9jdW1lbnQ+
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsKLSAgICBhdXRvIHNvdXJjZU9yaWdpbiA9IGRvd25j
YXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5zZWN1cml0eU9yaWdpbigpLnRv
U3RyaW5nKCk7Ci0KLSAgICBwcm94eS50aHJlYWQoKS0+cnVuTG9vcCgpLnBvc3RUYXNrKFt0cmFu
c2ZlcnJlZFBvcnQgPSBXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCksIHNvdXJjZU9yaWdpbiA9IFdU
Rk1vdmUoc291cmNlT3JpZ2luKS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpIG11dGFibGUgewotICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
LQotICAgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93b3Jr
ZXJzLmh0bWwjZG9tLXNoYXJlZHdvcmtlciBzdGVwIDExLjUKLSAgICAgICAgYXV0byBzZXJpYWxp
emVkU2NyaXB0VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgiIik7Ci0gICAg
ICAgIEFTU0VSVChzZXJpYWxpemVkU2NyaXB0VmFsdWUpOwotICAgICAgICBhdXRvIHBvcnRzID0g
TWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgeyBXVEZN
b3ZlKHRyYW5zZmVycmVkUG9ydCkgfSk7Ci0gICAgICAgIEFTU0VSVChwb3J0cy5zaXplKCkgPT0g
MSk7Ci0gICAgICAgIGF1dG8gcG9ydCA9IHBvcnRzWzBdOwotICAgICAgICBBU1NFUlQocG9ydCk7
Ci0gICAgICAgIGF1dG8gZXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRz
KSwgc2VyaWFsaXplZFNjcmlwdFZhbHVlLnJlbGVhc2VOb25OdWxsKCksIHNvdXJjZU9yaWdpbiwg
eyB9LCBwb3J0KTsKLSAgICAgICAgZXZlbnQtPmluaXRFdmVudChldmVudE5hbWVzKCkuY29ubmVj
dEV2ZW50LCBmYWxzZSwgZmFsc2UpOwotCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04oaXM8U2hhcmVkV29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpKTsKLSAgICAgICAgYXV0byYgd29ya2VyR2xvYmFsU2NvcGUgPSBkb3duY2Fz
dDxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAg
ICAgIHdvcmtlckdsb2JhbFNjb3BlLmRpc3BhdGNoRXZlbnQoV1RGTW92ZShldmVudCkpOwotICAg
IH0pOwotCi0gICAgbV9sb2FkZXJzLnJlbW92ZShsb2FkZXIuaWRlbnRpZmllcigpKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmM2ZWI2YTAwMTJjZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIgorCisj
aW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgorI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRCdWZmZXIuaCIKKyNpbmNsdWRlICJT
aGFyZWRXb3JrZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCisjZGVmaW5lIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coZm10
LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCisjZGVmaW5lIENPTk5FQ1RJ
T05fUkVMRUFTRV9MT0dfRVJST1IoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKFNoYXJlZFdv
cmtlciwgIiVwIC0gU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsICMj
X19WQV9BUkdTX18pCisKK3N0YXRpYyB1aW50NjRfdCBsb2FkZXJJZGVudGlmaWVyU2VlZCA9IDA7
CisKK1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24oKSA9IGRlZmF1bHQ7CisKK1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246On5TaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCkgPSBkZWZhdWx0OworCit2b2lkIFNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb246OmZldGNoU2NyaXB0SW5DbGllbnQoVVJMJiYgdXJsLCBXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIsIFdvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFNjcmlwdEJ1ZmZlcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKworICAgIGF1dG8qIHdvcmtlck9iamVjdCA9IFNoYXJlZFdvcmtlcjo6ZnJv
bUlkZW50aWZpZXIoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgQ09OTkVDVElP
Tl9SRUxFQVNFX0xPRygiZmV0Y2hTY3JpcHRJbkNsaWVudDogc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllcj0le3B1YmxpY31zLCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgd29ya2VyT2JqZWN0KTsKKyAgICBpZiAoIXdv
cmtlck9iamVjdCkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisKKyAg
ICBhdXRvIGxvYWRlcklkZW50aWZpZXIgPSArK2xvYWRlcklkZW50aWZpZXJTZWVkOworICAgIGF1
dG8gbG9hZGVyID0gbWFrZVVuaXF1ZVJlZjxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+KFdURk1v
dmUodXJsKSwgKndvcmtlck9iamVjdCwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSk7CisgICAgYXV0
byBsb2FkZXJQdHIgPSBsb2FkZXIucHRyKCk7CisgICAgbV9sb2FkZXJzLmFkZChsb2FkZXJJZGVu
dGlmaWVyLCBXVEZNb3ZlKGxvYWRlcikpOworCisgICAgbG9hZGVyUHRyLT5sb2FkKFt0aGlzLCBs
b2FkZXJJZGVudGlmaWVyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXShTY3JpcHRCdWZmZXIgc2NyaXB0QnVmZmVyKSBtdXRhYmxlIHsKKyAgICAgICAgQ09O
TkVDVElPTl9SRUxFQVNFX0xPRygiZmV0Y2hTY3JpcHRJbkNsaWVudDogZmluaXNoZWQgc2NyaXB0
IGxvYWQsIHN1Y2Nlc3M9JWQiLCAhIXNjcmlwdEJ1ZmZlcik7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHNjcmlwdEJ1ZmZlcik7CisgICAgICAgIG1fbG9hZGVycy5yZW1vdmUobG9hZGVySWRl
bnRpZmllcik7CisgICAgfSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bjo6bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkRmFpbHVyZShXZWJDb3JlOjpTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBhdXRvKiB3b3JrZXJPYmplY3QgPSBTaGFyZWRXb3Jr
ZXI6OmZyb21JZGVudGlmaWVyKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIENP
Tk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IoIm5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZhaWx1
cmU6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cywgd29ya2VyPSVwIiwg
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHdv
cmtlck9iamVjdCk7CisgICAgaWYgKHdvcmtlck9iamVjdCkKKyAgICAgICAgd29ya2VyT2JqZWN0
LT5kaWRGYWlsTG9hZGluZygpOworfQorCit2b2lkIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBhdXRvKiB3b3JrZXJP
YmplY3QgPSBTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVyKHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIpOworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IoInBvc3RFeGNlcHRp
b25Ub1dvcmtlck9iamVjdDogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31z
LCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSwgd29ya2VyT2JqZWN0KTsKKyAgICBpZiAod29ya2VyT2JqZWN0KQorICAgICAg
ICBBY3RpdmVET01PYmplY3Q6OnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqd29ya2VyT2JqZWN0
LCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIEVycm9yRXZlbnQ6OmNyZWF0ZShlcnJvck1l
c3NhZ2UsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB7IH0pKTsKK30KKwor
I3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0cKKyN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0Vf
TE9HX0VSUk9SCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU4ZjBjMzJiN2Q2OAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oIgorI2luY2x1
ZGUgIlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZXNzYWdlUG9ydDsKK2NsYXNzIFNj
cmlwdEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjsKKworc3RydWN0IENs
aWVudE9yaWdpbjsKK3N0cnVjdCBXb3JrZXJPcHRpb25zOworCitjbGFzcyBTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbj4geworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24oKTsKKworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U2hhcmVk
V29ya2VyKGNvbnN0IENsaWVudE9yaWdpbiYsIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIs
IGNvbnN0IFVSTCYsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgY29uc3QgV29ya2VyT3B0aW9u
cyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXko
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgLy8g
SVBDIG1lc3NhZ2VzLgorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmV0Y2hTY3JpcHRJbkNsaWVu
dChVUkwmJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV29ya2VyT3B0
aW9ucyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNjcmlwdEJ1ZmZlcik+JiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkRmFpbHVyZShXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIFNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKTsKKworcHJpdmF0ZToKKyAgICBIYXNoTWFwPHVp
bnQ2NF90LCBVbmlxdWVSZWY8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPj4gbV9sb2FkZXJzOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZWJjZDRhN2FlODdhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIlByb2Nlc3NRdWFsaWZpZWQuaCIKKyNpbmNsdWRlIDx3dGYvT2JqZWN0
SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gU2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciA9IFByb2Nlc3NRdWFsaWZpZWQ8T2JqZWN0SWRlbnRpZmllcjxTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyVHlwZT4+OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mZDhlMTk3ZmEyNDIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJQcm92aWRlci5jcHAKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJQcm92aWRlci5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3N0YXRpYyBTaGFyZWRXb3JrZXJQcm92aWRlciogc2hhcmVkUHJvdmlkZXI7
CisKKy8vIEZvciBXZWJLaXRMZWdhY3kuCitjbGFzcyBEdW1teVNoYXJlZFdvcmtlclByb3ZpZGVy
IGZpbmFsIDogcHVibGljIFNoYXJlZFdvcmtlclByb3ZpZGVyIHsKK3B1YmxpYzoKKyAgICBTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKiBzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCkgZmluYWwg
eyByZXR1cm4gbnVsbHB0cjsgfQorfTsKKworU2hhcmVkV29ya2VyUHJvdmlkZXImIFNoYXJlZFdv
cmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKQoreworICAgIGlmICghc2hhcmVkUHJvdmlkZXIpCisg
ICAgICAgIHNoYXJlZFByb3ZpZGVyID0gbmV3IER1bW15U2hhcmVkV29ya2VyUHJvdmlkZXI7Cisg
ICAgcmV0dXJuICpzaGFyZWRQcm92aWRlcjsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJQcm92aWRl
cjo6c2V0U2hhcmVkUHJvdmlkZXIoU2hhcmVkV29ya2VyUHJvdmlkZXImIG5ld1Byb3ZpZGVyKQor
eworICAgIFJFTEVBU0VfQVNTRVJUKCFzaGFyZWRQcm92aWRlcik7CisgICAgc2hhcmVkUHJvdmlk
ZXIgPSAmbmV3UHJvdmlkZXI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmgKc2lt
aWxhcml0eSBpbmRleCA2NCUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyTWFuYWdlci5oCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5oCmluZGV4IGFlZjgyNzkwMzU4NC4uY2I1N2Nj
MWU3YjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXJNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyUHJvdmlkZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjUsMjYgKzI1LDE3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAi
TWVzc2FnZVBvcnRJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVyLmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkV29ya2VyOwotY2xh
c3MgU2NyaXB0QnVmZmVyOwotc3RydWN0IFdvcmtlck9wdGlvbnM7Ci11c2luZyBUcmFuc2ZlcnJl
ZE1lc3NhZ2VQb3J0ID0gc3RkOjpwYWlyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciwg
V2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyPjsKK2NsYXNzIFNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb247CiAKLWNsYXNzIFNoYXJlZFdvcmtlck1hbmFnZXIgeworY2xhc3MgU2hhcmVk
V29ya2VyUHJvdmlkZXIgewogcHVibGljOgotICAgIHN0YXRpYyBTaGFyZWRXb3JrZXJNYW5hZ2Vy
JiBzaW5nbGV0b24oKTsKLSAgICB2b2lkIGNvbm5lY3QoY29uc3QgVVJMJiwgU2hhcmVkV29ya2Vy
JiwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBXb3JrZXJPcHRpb25zJiYpOwotCi0gICAgdm9p
ZCBzY3JpcHRMb2FkRmFpbGVkKFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYpOwotICAgIHZvaWQg
c2NyaXB0TG9hZGVkU3VjY2Vzc2Z1bGx5KFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYsIGNvbnN0
IFNjcmlwdEJ1ZmZlciYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBTaGFyZWRXb3JrZXImLCBU
cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYpOworICAgIHN0YXRpYyBTaGFyZWRXb3JrZXJQcm92aWRl
ciYgc2luZ2xldG9uKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0U2hhcmVk
UHJvdmlkZXIoU2hhcmVkV29ya2VyUHJvdmlkZXImKTsKIAotcHJpdmF0ZToKLSAgICBIYXNoTWFw
PFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcklkZW50aWZpZXIsIFVuaXF1ZVJlZjxTaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXI+PiBtX2xvYWRlcnM7CisgICAgdmlydHVhbCB+U2hhcmVkV29ya2VyUHJv
dmlkZXIoKSB7IH0KKyAgICB2aXJ0dWFsIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24qIHNo
YXJlZFdvcmtlckNvbm5lY3Rpb24oKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm94
eS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiZTA3NTNmODkxZC4uMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclBy
b3h5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb3h5LmgiCi0KLSNpbmNs
dWRlICJDYWNoZVN0b3JhZ2VQcm92aWRlci5oIgotI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKLSNp
bmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKLSNp
bmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKLSNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgotI2luY2x1
ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0
aW9uLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2Vy
R2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1TaGFyZWRXb3JrZXJQcm94eTo6U2hhcmVkV29ya2VyUHJveHkoU2hh
cmVkV29ya2VyJiBzaGFyZWRXb3JrZXIpCi0gICAgOiBtX3NoYXJlZFdvcmtlcihzaGFyZWRXb3Jr
ZXIpCi0gICAgLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoc2hhcmVkV29ya2VyLnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAsIG1faWRlbnRpZmllckZvckluc3BlY3RvcihzaGFyZWRX
b3JrZXIuaWRlbnRpZmllckZvckluc3BlY3RvcigpKQotewotfQotCi12b2lkIFNoYXJlZFdvcmtl
clByb3h5OjpzdGFydFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBib29sIGlzT25saW5lLCBj
b25zdCBTY3JpcHRCdWZmZXImIHNjcmlwdEJ1ZmZlciwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMs
IGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBD
cm9zc09yaWdpbkVtYmVkZGVyUG9saWN5JiBjcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LCBNb25v
dG9uaWNUaW1lIHRpbWVPcmlnaW4sIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5LCBXb3Jr
ZXJUeXBlIHdvcmtlclR5cGUsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzIGNyZWRlbnRpYWxzLCBK
U0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MpCi17Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1p
bmF0ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBwYXJhbWV0ZXJzID0gV29ya2VyUGFy
YW1ldGVycyB7Ci0gICAgICAgIHNjcmlwdFVSTCwKLSAgICAgICAgbmFtZSwKLSAgICAgICAgbV9p
ZGVudGlmaWVyRm9ySW5zcGVjdG9yLAotICAgICAgICB1c2VyQWdlbnQsCi0gICAgICAgIGlzT25s
aW5lLAotICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsCi0gICAg
ICAgIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwKLSAgICAgICAg
Y3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwKLSAgICAgICAgdGltZU9yaWdpbiwKLSAgICAgICAg
cmVmZXJyZXJQb2xpY3ksCi0gICAgICAgIHdvcmtlclR5cGUsCi0gICAgICAgIGNyZWRlbnRpYWxz
LAotICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNldHRpbmdzVmFsdWVzKCkKLSAg
ICB9OwotCi0gICAgaWYgKCFtX3dvcmtlclRocmVhZCkgewotICAgICAgICBtX3dvcmtlclRocmVh
ZCA9IFNoYXJlZFdvcmtlclRocmVhZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIHNjcmlwdEJ1ZmZlciwg
KnRoaXMsICp0aGlzLCAqdGhpcywgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+dG9wT3JpZ2luKCksIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+aWRiQ29ubmVjdGlvblByb3h5KCksIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c29ja2V0
UHJvdmlkZXIoKSwgcnVudGltZUZsYWdzKTsKLSAgICAgICAgbV93b3JrZXJUaHJlYWQtPnN0YXJ0
KCk7Ci0gICAgfQotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5Ojp0ZXJtaW5hdGVXb3JrZXJH
bG9iYWxTY29wZSgpCi17Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgbV9hc2tlZFRvVGVybWluYXRlID0gdHJ1ZTsKLSAgICBpZiAobV93b3JrZXJU
aHJlYWQpCi0gICAgICAgIG1fd29ya2VyVGhyZWFkLT5zdG9wKG51bGxwdHIpOwotfQotCi12b2lk
IFNoYXJlZFdvcmtlclByb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUoTWVzc2Fn
ZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlKQotewotICAgIC8vIEZJWE1FOiBTaGFyZWRXb3Jr
ZXIgZG9lc24ndCBoYXZlIHBvc3RNZXNzYWdlLCBzbyB0aGlzIG1pZ2h0IG5vdCBiZSBuZWNlc3Nh
cnkuCi0gICAgcG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKFttZXNzYWdlID0gV1RGTW92ZSht
ZXNzYWdlKV0oYXV0byYgc2NyaXB0Q29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIGNv
bnRleHQgPSBkb3duY2FzdDxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0Q29udGV4dCk7
Ci0gICAgICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhzY3JpcHRD
b250ZXh0LCBXVEZNb3ZlKG1lc3NhZ2UudHJhbnNmZXJyZWRQb3J0cykpOwotICAgICAgICBjb250
ZXh0LmRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIG1l
c3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpKSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2hh
cmVkV29ya2VyUHJveHk6OnBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShGdW5jdGlvbjx2b2lk
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJiB0YXNrKQotewotICAgIGlmIChtX2Fza2VkVG9U
ZXJtaW5hdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgp
LnBvc3RUYXNrKFdURk1vdmUodGFzaykpOwotfQotCi1ib29sIFNoYXJlZFdvcmtlclByb3h5Ojpo
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAotewotICAgIHJldHVybiBtX2hhc1BlbmRpbmdBY3Rp
dml0eSAmJiAhbV9hc2tlZFRvVGVybWluYXRlOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5
Ojp3b3JrZXJPYmplY3REZXN0cm95ZWQoKQotewotICAgIG1fc2hhcmVkV29ya2VyID0gbnVsbHB0
cjsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzXSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpIHsKLSAgICAgICAgbV9tYXlCZURlc3Ryb3llZCA9IHRydWU7Ci0g
ICAgICAgIGlmIChtX3dvcmtlclRocmVhZCkKLSAgICAgICAgICAgIHRlcm1pbmF0ZVdvcmtlckds
b2JhbFNjb3BlKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHdvcmtlckdsb2JhbFNjb3Bl
RGVzdHJveWVkSW50ZXJuYWwoKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94
eTo6bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpCi17Ci0gICAgaWYgKG1f
YXNrZWRUb1Rlcm1pbmF0ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX3dvcmtlclRo
cmVhZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5w
b3N0VGFzayhbaXNPbmxpbmVdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0g
ICAgICAgIGF1dG8mIGdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNv
bnRleHQpOwotICAgICAgICBnbG9iYWxTY29wZS5zZXRJc09ubGluZShpc09ubGluZSk7Ci0gICAg
ICAgIGdsb2JhbFNjb3BlLmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShpc09ubGluZSA/IGV2
ZW50TmFtZXMoKS5vbmxpbmVFdmVudCA6IGV2ZW50TmFtZXMoKS5vZmZsaW5lRXZlbnQsIEV2ZW50
OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwotICAgIH0pOwotfQot
Ci12b2lkIFNoYXJlZFdvcmtlclByb3h5OjpzdXNwZW5kRm9yQmFja0ZvcndhcmRDYWNoZSgpCi17
Ci0KLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6cmVzdW1lRm9yQmFja0ZvcndhcmRDYWNo
ZSgpCi17Ci0KLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdEV4Y2VwdGlvblRvV29y
a2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCi17Ci0gICAgbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpcywgZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNz
YWdlLmlzb2xhdGVkQ29weSgpLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCks
IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0g
ICAgICAgIGlmICghbV9zaGFyZWRXb3JrZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgLy8gV2UgZG9uJ3QgYm90aGVyIGNoZWNraW5nIHRoZSBhc2tlZFRvVGVybWluYXRlKCkgZmxh
ZyBoZXJlLCBiZWNhdXNlIGV4Y2VwdGlvbnMgc2hvdWxkICphbHdheXMqIGJlIHJlcG9ydGVkIGV2
ZW4gaWYgdGhlIHRocmVhZCBpcyB0ZXJtaW5hdGVkLgotICAgICAgICAvLyBUaGlzIGlzIGludGVu
dGlvbmFsbHkgZGlmZmVyZW50IHRoYW4gdGhlIGJlaGF2aW9yIGluIE1lc3NhZ2VXb3JrZXJUYXNr
LCBiZWNhdXNlIHRlcm1pbmF0ZWQgd29ya2VycyBubyBsb25nZXIgZGVsaXZlciBtZXNzYWdlcyAo
c2VjdGlvbiA0LjYgb2YgdGhlIFdlYldvcmtlciBzcGVjKSwgYnV0IHRoZXkgZG8gcmVwb3J0IGV4
Y2VwdGlvbnMuCi0gICAgICAgIEFjdGl2ZURPTU9iamVjdDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2
ZW50KCptX3NoYXJlZFdvcmtlciwgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFcnJvckV2
ZW50OjpjcmVhdGUoZXJyb3JNZXNzYWdlLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgeyB9KSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6Ondvcmtl
ckdsb2JhbFNjb3BlRGVzdHJveWVkKCkKLXsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PnBvc3RUYXNrKFt0aGlzXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKLSAgICAgICAgd29y
a2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpOwotICAgIH0pOwotfQotCi12b2lkIFNo
YXJlZFdvcmtlclByb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzJiYpCi17Ci0KLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6Y29uZmlybU1l
c3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wpCi17Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJv
eHk6OnJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKLXsKLSAg
ICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzLCBoYXNQZW5kaW5nQWN0
aXZpdHldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewotICAgICAgICBtX2hhc1BlbmRpbmdB
Y3Rpdml0eSA9IGhhc1BlbmRpbmdBY3Rpdml0eTsKLSAgICB9KTsKLX0KLQotUmVmUHRyPENhY2hl
U3RvcmFnZUNvbm5lY3Rpb24+IFNoYXJlZFdvcmtlclByb3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uKCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8mIGRv
Y3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwot
ICAgIHJldHVybiBkb2N1bWVudC5wYWdlKCktPmNhY2hlU3RvcmFnZVByb3ZpZGVyKCkuY3JlYXRl
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpOwotfQotCi1SZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyQ29ubmVjdGlvbj4gU2hhcmVkV29ya2VyUHJveHk6OmNyZWF0ZVJUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24oKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCk7Ci0gICAgaWYgKCFkb2N1bWVudC5wYWdlKCkpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIHJldHVybiBkb2N1bWVudC5wYWdlKCktPmxpYldlYlJUQ1Byb3ZpZGVy
KCkuY3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpOwotfQotCi12
b2lkIFNoYXJlZFdvcmtlclByb3h5Ojpwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2smJiB0YXNrKQotewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9z
dFRhc2soV1RGTW92ZSh0YXNrKSk7Ci19Ci0KLWJvb2wgU2hhcmVkV29ya2VyUHJveHk6OnBvc3RU
YXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzayYmIHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKLXsKLSAgICBpZiAobV9hc2tl
ZFRvVGVybWluYXRlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtX3dvcmtlclRocmVh
ZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShXVEZNb3ZlKHRhc2spLCBtb2RlKTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdE1lc3NhZ2VUb0Rl
YnVnZ2VyKGNvbnN0IFN0cmluZyYpCi17Ci0KLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6
c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3BlY3Rvcihib29sKQotewotCi19Ci0K
LXZvaWQgU2hhcmVkV29ya2VyUHJveHk6Ondvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJu
YWwoKQotewotICAgIC8vIFRoaXMgaXMgYWx3YXlzIHRoZSBsYXN0IHRhc2sgdG8gYmUgcGVyZm9y
bWVkLCBzbyB0aGUgcHJveHkgaXMgbm90IG5lZWRlZCBmb3IgY29tbXVuaWNhdGlvbgotICAgIC8v
IGluIGVpdGhlciBzaWRlIGFueSBtb3JlLiBIb3dldmVyLCB0aGUgV29ya2VyIG9iamVjdCBtYXkg
c3RpbGwgZXhpc3QsIGFuZCBpdCBhc3N1bWVzIHRoYXQgdGhlIHByb3h5IGV4aXN0cywgdG9vLgot
ICAgIG1fYXNrZWRUb1Rlcm1pbmF0ZSA9IHRydWU7Ci0gICAgbV93b3JrZXJUaHJlYWQgPSBudWxs
cHRyOwotCi0gICAgLy8gVGhpcyBiYWxhbmNlcyB0aGUgb3JpZ2luYWwgcmVmIGluIGNvbnN0cnVj
dGlvbi4KLSAgICBpZiAobV9tYXlCZURlc3Ryb3llZCkKLSAgICAgICAgZGVyZWYoKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXggMzExZWJkNjA3
OGJjLi44OTFlODBmZDcxMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMjksMjMgKzI5LDI1
IEBACiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgotI2luY2x1ZGUgIlNoYXJlZFdv
cmtlck1hbmFnZXIuaCIKICNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCiAjaW5jbHVkZSAiV29y
a2VyU2NyaXB0TG9hZGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIoY29uc3QgVVJMJiB1cmwsIFNo
YXJlZFdvcmtlciYgd29ya2VyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgcG9ydCwgV29ya2Vy
T3B0aW9ucyYmIG9wdGlvbnMpCi0gICAgOiBtX2lkZW50aWZpZXIoU2hhcmVkV29ya2VyU2NyaXB0
TG9hZGVySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKLSAgICAsIG1fb3B0aW9ucyhXVEZNb3ZlKG9w
dGlvbnMpKQorU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXIoVVJMJiYgdXJsLCBTaGFyZWRXb3JrZXImIHdvcmtlciwgV29ya2VyT3B0aW9ucyYmIG9wdGlv
bnMpCisgICAgOiBtX29wdGlvbnMoV1RGTW92ZShvcHRpb25zKSkKICAgICAsIG1fd29ya2VyKHdv
cmtlcikKLSAgICAsIG1fcG9ydChXVEZNb3ZlKHBvcnQpKQogICAgICwgbV9sb2FkZXIoV29ya2Vy
U2NyaXB0TG9hZGVyOjpjcmVhdGUoKSkKLSAgICAsIG1fcGVuZGluZ0FjdGl2aXR5KHdvcmtlci5t
YWtlUGVuZGluZ0FjdGl2aXR5KHdvcmtlcikpCi0gICAgLCBtX3VybCh1cmwpCisgICAgLCBtX3Vy
bChXVEZNb3ZlKHVybCkpCiB7Ci0gICAgbV93b3JrZXItPnNldElzTG9hZGluZyh0cnVlKTsKLSAg
ICBtX2xvYWRlci0+bG9hZEFzeW5jaHJvbm91c2x5KCp3b3JrZXIuc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBSZXNvdXJjZVJlcXVlc3QodXJsKSwgd29ya2VyLndvcmtlckZldGNoT3B0aW9ucyhv
cHRpb25zLCBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpTaGFyZWR3b3JrZXIpLCBDb250ZW50
U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6RW5mb3JjZVdvcmtlclNyY0RpcmVjdGl2ZSwgU2Vy
dmljZVdvcmtlcnNNb2RlOjpBbGwsICp0aGlzLCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgp
KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWQoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTY3JpcHRCdWZmZXIpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFT
U0VSVCghbV9jb21wbGV0aW9uSGFuZGxlcik7CisgICAgbV9jb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgbV9sb2FkZXItPmxvYWRBc3luY2hyb25v
dXNseSgqbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgUmVzb3VyY2VSZXF1ZXN0
KG1fdXJsKSwgbV93b3JrZXItPndvcmtlckZldGNoT3B0aW9ucyhtX29wdGlvbnMsIEZldGNoT3B0
aW9uczo6RGVzdGluYXRpb246OlNoYXJlZHdvcmtlciksIENvbnRlbnRTZWN1cml0eVBvbGljeUVu
Zm9yY2VtZW50OjpFbmZvcmNlV29ya2VyU3JjRGlyZWN0aXZlLCBTZXJ2aWNlV29ya2Vyc01vZGU6
OkFsbCwgKnRoaXMsIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwogfQogCiB2b2lkIFNo
YXJlZFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKQEAgLTU1LDE2
ICs1NywxMiBAQCB2b2lkIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudAogCiB2b2lkIFNoYXJlZFdvcmtlclNj
cmlwdExvYWRlcjo6bm90aWZ5RmluaXNoZWQoKQogewotICAgIG1fd29ya2VyLT5zZXRJc0xvYWRp
bmcoZmFsc2UpOworICAgIGlmIChtX2xvYWRlci0+ZmFpbGVkKCkpCisgICAgICAgIHJldHVybiBt
X2NvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAgICBhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0ID0gbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAobV9sb2Fk
ZXItPmZhaWxlZCgpIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7Ci0gICAgICAgIG1fd29y
a2VyLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQs
IEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKLSAgICAg
ICAgU2hhcmVkV29ya2VyTWFuYWdlcjo6c2luZ2xldG9uKCkuc2NyaXB0TG9hZEZhaWxlZCgqdGhp
cyk7IC8vIGRlbGV0ZXMgdGhpcy4KLSAgICB9IGVsc2UgeworICAgIGlmIChhdXRvKiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0ID0gbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAg
ICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZCgqc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgbV9sb2FkZXItPmlkZW50aWZpZXIoKSwgbV9sb2FkZXItPnNjcmlwdCgp
LnRvU3RyaW5nKCkpOwotICAgICAgICBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5z
Y3JpcHRMb2FkZWRTdWNjZXNzZnVsbHkoKnRoaXMsIG1fbG9hZGVyLT5zY3JpcHQoKSwgKm1fd29y
a2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fd29ya2VyLmdldCgpLCBzdGQ6OmV4Y2hh
bmdlKG1fcG9ydCwgeyB9KSk7IC8vIGRlbGV0ZXMgdGhpcy4KLSAgICB9CisgICAgbV9jb21wbGV0
aW9uSGFuZGxlcihtX2xvYWRlci0+c2NyaXB0KCkpOyAvLyBkZWxldGVzIHRoaXMuCiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgKaW5kZXggYmYxZDRhZWYzYTA5Li4w
NTQ1OWE1NmU4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1No
YXJlZFdvcmtlclNjcmlwdExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFn
bWEgb25jZQogCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVBvcnRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgpAQCAtMzYsMzUgKzM1LDMwIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2NyaXB0QnVmZmVyOwogY2xhc3MgU2hhcmVkV29y
a2VyOwogY2xhc3MgV29ya2VyU2NyaXB0TG9hZGVyOwogCi1jbGFzcyBTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXI7Ci11c2luZyBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXJJZGVudGlmaWVyID0gT2Jq
ZWN0SWRlbnRpZmllcjxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+OwotCi11c2luZyBUcmFuc2Zl
cnJlZE1lc3NhZ2VQb3J0ID0gc3RkOjpwYWlyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmll
ciwgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyPjsKLQogY2xhc3MgU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyIDogcHJpdmF0ZSBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNoYXJlZFdvcmtlclNjcmlwdExv
YWRlcihjb25zdCBVUkwmLCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYs
IFdvcmtlck9wdGlvbnMmJik7CisgICAgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyKFVSTCYmLCBT
aGFyZWRXb3JrZXImLCBXb3JrZXJPcHRpb25zJiYpOworCisgICAgdm9pZCBsb2FkKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU2NyaXB0QnVmZmVyKT4mJik7CiAKLSAgICBTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZp
ZXI7IH0KICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAg
U2hhcmVkV29ya2VyJiB3b3JrZXIoKSB7IHJldHVybiBtX3dvcmtlci5nZXQoKTsgfQotICAgIGNv
bnN0IFdvcmtlck9wdGlvbnMmIG9wdGlvbnMoKSB7IHJldHVybiBtX29wdGlvbnM7IH0KKyAgICBj
b25zdCBXb3JrZXJPcHRpb25zJiBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9
CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAgICAgdm9pZCBub3Rp
ZnlGaW5pc2hlZCgpIGZpbmFsOwogCi0gICAgY29uc3QgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVy
SWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgY29uc3QgV29ya2VyT3B0aW9ucyBtX29wdGlv
bnM7CiAgICAgY29uc3QgUmVmPFNoYXJlZFdvcmtlcj4gbV93b3JrZXI7Ci0gICAgVHJhbnNmZXJy
ZWRNZXNzYWdlUG9ydCBtX3BvcnQ7CiAgICAgY29uc3QgUmVmPFdvcmtlclNjcmlwdExvYWRlcj4g
bV9sb2FkZXI7Ci0gICAgY29uc3QgUmVmPEFjdGl2ZURPTU9iamVjdDo6UGVuZGluZ0FjdGl2aXR5
PFNoYXJlZFdvcmtlcj4+IG1fcGVuZGluZ0FjdGl2aXR5OwogICAgIGNvbnN0IFVSTCBtX3VybDsK
KyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNjcmlwdEJ1ZmZlcik+IG1fY29tcGxldGlvbkhh
bmRsZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyVGhyZWFkLmNwcAppbmRleCA5ZWQ1NTg4
ZmJkNzkuLmVmZTA1ZTI3YzE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9TaGFyZWRXb3JrZXJUaHJlYWQuY3BwCkBAIC0zMSwxNCArMzEsMTcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRXb3JrZXJUaHJlYWQ6OlNoYXJlZFdvcmtlclRocmVh
ZChjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBTY3JpcHRCdWZmZXIm
IHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQcm94eSwgV29ya2VyRGVidWdn
ZXJQcm94eSYgZGVidWdnZXJQcm94eSwgV29ya2VyT2JqZWN0UHJveHkmIG9iamVjdFByb3h5LCBX
b3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9w
T3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBT
b2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVG
bGFncykKK1NoYXJlZFdvcmtlclRocmVhZDo6U2hhcmVkV29ya2VyVGhyZWFkKFNoYXJlZFdvcmtl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1ldGVy
cywgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgbG9h
ZGVyUHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkmIGRlYnVnZ2VyUHJveHksIFdvcmtlck9iamVj
dFByb3h5JiBvYmplY3RQcm94eSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29u
c3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJv
eHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyLCBKU0M6
OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MpCiAgICAgOiBXb3JrZXJUaHJlYWQocGFyYW1ldGVy
cywgc291cmNlQ29kZSwgbG9hZGVyUHJveHksIGRlYnVnZ2VyUHJveHksIG9iamVjdFByb3h5LCBz
dGFydE1vZGUsIHRvcE9yaWdpbiwgY29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlciwgcnVu
dGltZUZsYWdzKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX25hbWUo
cGFyYW1ldGVycy5uYW1lLmlzb2xhdGVkQ29weSgpKQogeworICAgIFJFTEVBU0VfTE9HKFNoYXJl
ZFdvcmtlciwgIiVwIC0gU2hhcmVkV29ya2VyVGhyZWFkOjpTaGFyZWRXb3JrZXJUaHJlYWQ6Iiwg
dGhpcyk7CiB9CiAKIFJlZjxXb3JrZXJHbG9iYWxTY29wZT4gU2hhcmVkV29ya2VyVGhyZWFkOjpj
cmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9w
T3JpZ2luKQogeworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gU2hhcmVkV29y
a2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29wZToiLCB0aGlzKTsKICAgICByZXR1cm4g
U2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZShzdGQ6OmV4Y2hhbmdlKG1fbmFtZSwgeyB9
KSwgcGFyYW1ldGVycywgV1RGTW92ZShvcmlnaW4pLCAqdGhpcywgV1RGTW92ZSh0b3BPcmlnaW4p
LCBpZGJDb25uZWN0aW9uUHJveHkoKSwgc29ja2V0UHJvdmlkZXIoKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclRocmVhZC5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyVGhyZWFkLmgKaW5kZXgg
MmYwNTZmOWQ1OWJiLi45ZWEyNDg0N2QzOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclRocmVhZC5oCkBAIC0yNSwyMSArMjUsMjcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiV29ya2VyVGhyZWFkLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV29y
a2VyT2JqZWN0UHJveHk7CiAKKy8vIEZJWE1FOiBNb3ZlIHRvIHdvcmtlcnMvc2hhcmVkL2NvbnRl
eHQuCiBjbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWQgOiBwdWJsaWMgV29ya2VyVGhyZWFkIHsKIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmPFNoYXJlZFdv
cmtlclRocmVhZD4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZFdvcmtlclRocmVhZChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsgfQorCisg
ICAgU2hhcmVkV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9p
ZGVudGlmaWVyOyB9CisKIHByaXZhdGU6Ci0gICAgU2hhcmVkV29ya2VyVGhyZWFkKGNvbnN0IFdv
cmtlclBhcmFtZXRlcnMmLCBjb25zdCBTY3JpcHRCdWZmZXImIHNvdXJjZUNvZGUsIFdvcmtlckxv
YWRlclByb3h5JiwgV29ya2VyRGVidWdnZXJQcm94eSYsIFdvcmtlck9iamVjdFByb3h5JiwgV29y
a2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBJREJD
bGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKiwgSlNDOjpSdW50aW1l
RmxhZ3MpOworICAgIFNoYXJlZFdvcmtlclRocmVhZChTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBj
b25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VDb2RlLCBX
b3JrZXJMb2FkZXJQcm94eSYsIFdvcmtlckRlYnVnZ2VyUHJveHkmLCBXb3JrZXJPYmplY3RQcm94
eSYsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdp
biwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciosIEpTQzo6
UnVudGltZUZsYWdzKTsKIAogICAgIFJlZjxXb3JrZXJHbG9iYWxTY29wZT4gY3JlYXRlV29ya2Vy
R2xvYmFsU2NvcGUoY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIFJlZjxTZWN1cml0eU9yaWdpbj4m
JiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbikgZmluYWw7CiAgICAgQVNDSUlMaXRl
cmFsIHRocmVhZE5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiV2ViQ29yZTogU2hhcmVkV29y
a2VyIl9zOyB9CiAKKyAgICBTaGFyZWRXb3JrZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAg
ICBTdHJpbmcgbV9uYW1lOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjA3YTkwZDk4MDUx
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRl
eHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTE0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiU2hhcmVkV29y
a2VyVGhyZWFkUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlciYgU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyPiBzaGFyZWRNYW5hZ2VyOworICAgIHJldHVy
biBzaGFyZWRNYW5hZ2VyOworfQorCitTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSogU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXI6OnNoYXJlZFdvcmtlcihTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNo
YXJlZFdvcmtlcklkZW50aWZpZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd29ya2VyTWFwLmdl
dChzaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlcjo6c3RvcFNoYXJlZFdvcmtlcihTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdv
cmtlcklkZW50aWZpZXIpCit7CisgICAgYXV0byB3b3JrZXIgPSBtX3dvcmtlck1hcC50YWtlKHNo
YXJlZFdvcmtlcklkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzdG9wU2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyPSUiIFBSSXU2NCAiLCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVy
LnRvVUludDY0KCksIHdvcmtlci5nZXQoKSk7CisgICAgaWYgKCF3b3JrZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIHdvcmtlci0+c2V0QXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCgpOworCisg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGRlYWwgd2l0aCB0aGUgdGhyZWFkIGJl
aW5nIHVucmVzcG9uc2l2ZSBoZXJlLgorCisgICAgYXV0byYgdGhyZWFkID0gd29ya2VyLT50aHJl
YWQoKTsKKyAgICB0aHJlYWQuc3RvcChbd29ya2VyID0gV1RGTW92ZSh3b3JrZXIpXSgpIG11dGFi
bGUgeworICAgICAgICAvLyBTcGluIHRoZSBydW5sb29wIGJlZm9yZSByZWxlYXNpbmcgdGhlIHNo
YXJlZCB3b3JrZXIgdGhyZWFkIHByb3h5LCBhcyB0aGVyZSB3b3VsZCBvdGhlcndpc2UgYmUKKyAg
ICAgICAgLy8gYSByYWNlIHRvd2FyZHMgaXRzIGRlc3RydWN0aW9uLgorICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFt3b3JrZXIgPSBXVEZNb3ZlKHdvcmtlcildIHsgfSk7CisgICAgfSk7Cit9CisK
K3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0b3BBbGxTaGFyZWRXb3JrZXJzKCkK
K3sKKyAgICB3aGlsZSAoIW1fd29ya2VyTWFwLmlzRW1wdHkoKSkKKyAgICAgICAgc3RvcFNoYXJl
ZFdvcmtlcihtX3dvcmtlck1hcC5iZWdpbigpLT5rZXkpOworfQorCit2b2lkIFNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyOjpzZXRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9u
PiYmIGNvbm5lY3Rpb24pCit7CisgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24gfHwgbV9jb25uZWN0
aW9uLT5pc0Nsb3NlZCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24gPSBXVEZNb3ZlKGNvbm5lY3Rpb24p
OworfQorCithdXRvIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpjb25uZWN0aW9uKCkgY29u
c3QgLT4gQ29ubmVjdGlvbioKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOworfQor
Cit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpyZWdpc3RlclNoYXJlZFdvcmtlclRo
cmVhZChSZWY8U2hhcmVkV29ya2VyVGhyZWFkUHJveHk+JiYgcHJveHkpCit7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlcjo6cmVnaXN0ZXJTaGFyZWRXb3JrZXJUaHJlYWQ6IHNoYXJlZFdv
cmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBwcm94eS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkp
OworCisgICAgYXV0byByZXN1bHQgPSBtX3dvcmtlck1hcC5hZGQocHJveHktPmlkZW50aWZpZXIo
KSwgcHJveHkuY29weVJlZigpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0Lmlz
TmV3RW50cnkpOworCisgICAgcHJveHktPnRocmVhZCgpLnN0YXJ0KFtdKGNvbnN0IFN0cmluZyYg
LypleGNlcHRpb25NZXNzYWdlKi8pIHsgfSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXI6OkNvbm5lY3Rpb246OnBvc3RDb25uZWN0RXZlbnQoU2hhcmVkV29ya2VySWRlbnRp
ZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgdHJh
bnNmZXJyZWRQb3J0LCBTdHJpbmcmJiBzb3VyY2VPcmlnaW4pCit7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBhdXRvKiBwcm94eSA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5zaGFyZWRXb3JrZXIoc2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAg
UkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNv
bm5lY3Rpb246OnBvc3RDb25uZWN0RXZlbnQ6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJ
dTY0ICIsIHByb3h5PSVwIiwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpLCBwcm94
eSk7CisgICAgaWYgKCFwcm94eSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJveHktPnRocmVh
ZCgpLnJ1bkxvb3AoKS5wb3N0VGFzayhbdHJhbnNmZXJyZWRQb3J0ID0gV1RGTW92ZSh0cmFuc2Zl
cnJlZFBvcnQpLCBzb3VyY2VPcmlnaW4gPSBXVEZNb3ZlKHNvdXJjZU9yaWdpbikuaXNvbGF0ZWRD
b3B5KCldIChhdXRvJiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgICAgIGRvd25jYXN0PFNoYXJlZFdvcmtlckds
b2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5wb3N0Q29ubmVjdEV2ZW50KFdURk1v
dmUodHJhbnNmZXJyZWRQb3J0KSwgV1RGTW92ZShzb3VyY2VPcmlnaW4pKTsKKyAgICB9KTsKK30K
Kwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6dGVybWluYXRl
U2hhcmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmll
cikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIFJFTEVBU0VfTE9HKFNoYXJl
ZFdvcmtlciwgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uOjp0ZXJtaW5h
dGVTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRX
b3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIFNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyOjpzaW5nbGV0b24oKS5zdG9wU2hhcmVkV29ya2VyKHNoYXJlZFdvcmtlcklkZW50aWZpZXIp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wNDc5Mzdj
OTFlNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9j
b250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgKQEAgLTAsMCArMSw3NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2FnZVdpdGhNZXNzYWdlUG9y
dHMuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTaGFyZWRXb3JrZXJU
aHJlYWRQcm94eTsKKworY2xhc3MgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIgeworcHVibGlj
OgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlciYg
c2luZ2xldG9uKCk7CisKKyAgICBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSogc2hhcmVkV29ya2Vy
KFNoYXJlZFdvcmtlcklkZW50aWZpZXIpIGNvbnN0OworICAgIHZvaWQgc3RvcFNoYXJlZFdvcmtl
cihTaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BB
bGxTaGFyZWRXb3JrZXJzKCk7CisKKyAgICBjbGFzcyBDb25uZWN0aW9uIHsKKyAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5Db25u
ZWN0aW9uKCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBlc3RhYmxpc2hDb25uZWN0aW9uKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcG9z
dEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkwpID0gMDsKKyAgICAgICAgYm9vbCBpc0Nsb3NlZCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNDbG9zZWQ7IH0KKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgdm9pZCBz
ZXRBc0Nsb3NlZCgpIHsgbV9pc0Nsb3NlZCA9IHRydWU7IH0KKworICAgICAgICAvLyBJUEMgbWVz
c2FnZSBoYW5kbGVycy4KKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0Q29ubmVjdEV2
ZW50KFNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgU3Ry
aW5nJiYgc291cmNlT3JpZ2luKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0ZXJtaW5h
dGVTaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllcik7CisKKyAgICBwcml2YXRlOgor
ICAgICAgICBib29sIG1faXNDbG9zZWQgeyBmYWxzZSB9OworICAgIH07CisKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldENvbm5lY3Rpb24oc3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+JiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIENvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKSBjb25zdDsKKwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVnaXN0ZXJTaGFyZWRXb3JrZXJUaHJlYWQoUmVmPFNo
YXJlZFdvcmtlclRocmVhZFByb3h5PiYmKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3Mg
TmV2ZXJEZXN0cm95ZWQ8U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI+OworCisgICAgU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIEhhc2hNYXA8U2hhcmVkV29ya2VySWRlbnRp
ZmllciwgUmVmPFNoYXJlZFdvcmtlclRocmVhZFByb3h5Pj4gbV93b3JrZXJNYXA7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjJlMmNlOTEzZTdkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAKQEAgLTAsMCArMSwxOTMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCIK
KworI2luY2x1ZGUgIkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCisjaW5jbHVkZSAiRXJyb3JFdmVu
dC5oIgorI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNp
bmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiTGli
V2ViUlRDUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgorI2luY2x1ZGUg
Ik1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiUGFn
ZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgorI2luY2x1ZGUgIlJUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXIu
aCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIgorI2luY2x1ZGUgIlNo
YXJlZFdvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkLmgi
CisjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRl
bnRpZmllcnNGYWN0b3J5Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIEhhc2hT
ZXQ8U2hhcmVkV29ya2VyVGhyZWFkUHJveHkqPiYgYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGll
cygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkqPj4gc2V0OworICAgIHJldHVybiBzZXQ7Cit9CisKK3N0YXRpYyBXb3JrZXJQYXJh
bWV0ZXJzIGdlbmVyYXRlV29ya2VyUGFyYW1ldGVycyhjb25zdCBVUkwmIHNjcmlwdFVSTCwgV29y
a2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBEb2N1
bWVudCYgZG9jdW1lbnQpCit7CisgICAgcmV0dXJuIFdvcmtlclBhcmFtZXRlcnMgeworICAgICAg
ICBzY3JpcHRVUkwsCisgICAgICAgIHdvcmtlck9wdGlvbnMubmFtZSwKKyAgICAgICAgInNoYXJl
ZHdvcmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZp
ZXIoKSwKKyAgICAgICAgdXNlckFnZW50LAorICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+
bG9hZGVyU3RyYXRlZ3koKS0+aXNPbkxpbmUoKSwKKyAgICAgICAgeyB9LCAvLyBGSVhNRTogY29u
dGVudFNlY3VyaXR5UG9saWN5CisgICAgICAgIGZhbHNlLAorICAgICAgICB7IH0sIC8vIEZJWE1F
OiBjcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5CisgICAgICAgIE1vbm90b25pY1RpbWU6Om5vdygp
LAorICAgICAgICB7IH0sCisgICAgICAgIHdvcmtlck9wdGlvbnMudHlwZSwKKyAgICAgICAgd29y
a2VyT3B0aW9ucy5jcmVkZW50aWFscywKKyAgICAgICAgZG9jdW1lbnQuc2V0dGluZ3NWYWx1ZXMo
KQorICAgIH07Cit9CisKK1NoYXJlZFdvcmtlclRocmVhZFByb3h5OjpTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eShVbmlxdWVSZWY8UGFnZT4mJiBwYWdlLCBTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNo
YXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IENsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBj
b25zdCBVUkwmIHNjcmlwdFVSTCwgU2NyaXB0QnVmZmVyJiYgc2NyaXB0QnVmZmVyLCBXb3JrZXJP
cHRpb25zJiYgd29ya2VyT3B0aW9ucywgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIENhY2hlU3Rv
cmFnZVByb3ZpZGVyJiBjYWNoZVN0b3JhZ2VQcm92aWRlcikKKyAgICA6IG1fcGFnZShXVEZNb3Zl
KHBhZ2UpKQorICAgICwgbV9kb2N1bWVudCgqbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgp
KQorICAgICwgbV93b3JrZXJUaHJlYWQoU2hhcmVkV29ya2VyVGhyZWFkOjpjcmVhdGUoc2hhcmVk
V29ya2VySWRlbnRpZmllciwgZ2VuZXJhdGVXb3JrZXJQYXJhbWV0ZXJzKHNjcmlwdFVSTCwgV1RG
TW92ZSh3b3JrZXJPcHRpb25zKSwgdXNlckFnZW50LCBtX2RvY3VtZW50KSwgV1RGTW92ZShzY3Jp
cHRCdWZmZXIpLCAqdGhpcywgKnRoaXMsICp0aGlzLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5v
cm1hbCwgY2xpZW50T3JpZ2luLnRvcE9yaWdpbi5zZWN1cml0eU9yaWdpbigpLCBtX2RvY3VtZW50
LT5pZGJDb25uZWN0aW9uUHJveHkoKSwgbV9kb2N1bWVudC0+c29ja2V0UHJvdmlkZXIoKSwgSlND
OjpSdW50aW1lRmxhZ3M6OmNyZWF0ZUFsbEVuYWJsZWQoKSkpCisgICAgLCBtX2NhY2hlU3RvcmFn
ZVByb3ZpZGVyKGNhY2hlU3RvcmFnZVByb3ZpZGVyKQoreworICAgIEFTU0VSVCghYWxsU2hhcmVk
V29ya2VyVGhyZWFkUHJveGllcygpLmNvbnRhaW5zKHRoaXMpKTsKKyAgICBhbGxTaGFyZWRXb3Jr
ZXJUaHJlYWRQcm94aWVzKCkuYWRkKHRoaXMpOworCisgICAgc3RhdGljIGJvb2wgYWRkZWRMaXN0
ZW5lcjsKKyAgICBpZiAoIWFkZGVkTGlzdGVuZXIpIHsKKyAgICAgICAgcGxhdGZvcm1TdHJhdGVn
aWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmFkZE9ubGluZVN0YXRlQ2hhbmdlTGlzdGVuZXIoJm5l
dHdvcmtTdGF0ZUNoYW5nZWQpOworICAgICAgICBhZGRlZExpc3RlbmVyID0gdHJ1ZTsKKyAgICB9
Cit9CisKK1NoYXJlZFdvcmtlclRocmVhZFByb3h5Ojp+U2hhcmVkV29ya2VyVGhyZWFkUHJveHko
KQoreworICAgIEFTU0VSVChhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkuY29udGFpbnMo
dGhpcykpOworICAgIGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKS5yZW1vdmUodGhpcyk7
Cit9CisKK1NoYXJlZFdvcmtlcklkZW50aWZpZXIgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Omlk
ZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX3dvcmtlclRocmVhZC0+aWRlbnRpZmll
cigpOworfQorCitSZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHk6OmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgaWYgKCFtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24pCisgICAg
ICAgIG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbiA9IG1fY2FjaGVTdG9yYWdlUHJvdmlkZXIuY3Jl
YXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpOworICAgIHJldHVybiBtX2NhY2hlU3RvcmFnZUNv
bm5lY3Rpb247Cit9CisKK1JlZlB0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0
aW9uPiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyQ29ubmVjdGlvbigpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBy
ZXR1cm4gbV9wYWdlLT5saWJXZWJSVENQcm92aWRlcigpLmNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlckNvbm5lY3Rpb24oKTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eTo6cG9zdFRhc2tUb0xvYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykK
K3sKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0YXNrID0gV1RGTW92ZSh0YXNrKSwgcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgeworICAgICAgICB0YXNrLnBlcmZvcm1U
YXNrKHByb3RlY3RlZFRoaXMtPm1fZG9jdW1lbnQuZ2V0KCkpOworICAgIH0pOworfQorCitib29s
IFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrLCBjb25zdCBT
dHJpbmcmIG1vZGUpCit7CisgICAgaWYgKG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0
VGFza0Zvck1vZGUoV1RGTW92ZSh0YXNrKSwgbW9kZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K3ZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RNZXNzYWdlVG9EZWJ1Z2dlcihjb25z
dCBTdHJpbmcmKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCit9CisKK3ZvaWQgU2hhcmVk
V29ya2VyVGhyZWFkUHJveHk6OnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNwZWN0
b3IoYm9vbCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorfQorCit2b2lkIFNoYXJlZFdv
cmtlclRocmVhZFByb3h5OjpuZXR3b3JrU3RhdGVDaGFuZ2VkKGJvb2wgaXNPbkxpbmUpCit7Cisg
ICAgZm9yIChhdXRvKiBwcm94eSA6IGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKSkKKyAg
ICAgICAgcHJveHktPm5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShpc09uTGluZSk7Cit9CisKK3Zv
aWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Om5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29s
IGlzT25saW5lKQoreworICAgIGlmIChtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQpCisgICAg
ICAgIHJldHVybjsKKworICAgIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUoW2lzT25saW5lXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAg
ICAgICBhdXRvJiBnbG9iYWxTY29wZSA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250
ZXh0KTsKKyAgICAgICAgZ2xvYmFsU2NvcGUuc2V0SXNPbmxpbmUoaXNPbmxpbmUpOworICAgICAg
ICBnbG9iYWxTY29wZS5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1
bGF0aW9uLCBbZ2xvYmFsU2NvcGUgPSBSZWYgeyBnbG9iYWxTY29wZSB9LCBpc09ubGluZV0gewor
ICAgICAgICAgICAgZ2xvYmFsU2NvcGUtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShpc09u
bGluZSA/IGV2ZW50TmFtZXMoKS5vbmxpbmVFdmVudCA6IGV2ZW50TmFtZXMoKS5vZmZsaW5lRXZl
bnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOworICAg
ICAgICB9KTsKKyAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKK30KKworLy8g
RklYTUU6IFRyeSBhbmQgc2hhcmUgY29kZSB3aXRoIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5j
cHAuCit2b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpzZXR1cFBhZ2VGb3JTaGFyZWRXb3Jr
ZXIoUGFnZSYgcGFnZSwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IENsaWVudE9yaWdpbiYg
Y2xpZW50T3JpZ2luKQoreworICAgIGF1dG8mIG1haW5GcmFtZSA9IHBhZ2UubWFpbkZyYW1lKCk7
CisgICAgbWFpbkZyYW1lLmxvYWRlcigpLmluaXRGb3JTeW50aGVzaXplZERvY3VtZW50KHsgfSk7
CisgICAgYXV0byBkb2N1bWVudCA9IERvY3VtZW50OjpjcmVhdGVOb25SZW5kZXJlZFBsYWNlaG9s
ZGVyKG1haW5GcmFtZSwgc2NyaXB0VVJMKTsKKyAgICBkb2N1bWVudC0+Y3JlYXRlRE9NV2luZG93
KCk7CisKKyAgICBkb2N1bWVudC0+c3RvcmFnZUJsb2NraW5nU3RhdGVEaWRDaGFuZ2UoKTsKKwor
ICAgIGF1dG8gb3JpZ2luID0gY2xpZW50T3JpZ2luLnRvcE9yaWdpbi5zZWN1cml0eU9yaWdpbigp
OworICAgIG9yaWdpbi0+c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KHBhZ2Uuc2V0dGluZ3MoKS5z
dG9yYWdlQmxvY2tpbmdQb2xpY3koKSk7CisKKyAgICBhdXRvIG9yaWdpbkFzVVJMID0gb3JpZ2lu
LT50b1VSTCgpOworICAgIGRvY3VtZW50LT5zZXRTaXRlRm9yQ29va2llcyhvcmlnaW5Bc1VSTCk7
CisgICAgZG9jdW1lbnQtPnNldEZpcnN0UGFydHlGb3JDb29raWVzKG9yaWdpbkFzVVJMKTsKKyAg
ICBkb2N1bWVudC0+c2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24ob3JpZ2luLT5kb21haW5Gb3JD
YWNoZVBhcnRpdGlvbigpKTsKKyAgICAvLyBGSVhNRTogU2hvdWxkIHNldCByZWZlcnJlciBwb2xp
Y3kgb24gZG9jdW1lbnQuCisKKyAgICBtYWluRnJhbWUuc2V0RG9jdW1lbnQoV1RGTW92ZShkb2N1
bWVudCkpOworfQorCit2b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0RXhjZXB0aW9u
VG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBjYWxs
T25NYWluVGhyZWFkKFtzaGFyZWRXb3JrZXJJZGVudGlmaWVyID0gbV93b3JrZXJUaHJlYWQtPmlk
ZW50aWZpZXIoKSwgZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlLmlzb2xhdGVkQ29weSgpLCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCA9IHNvdXJjZVVSTC5pc29sYXRlZENv
cHkoKV0geworICAgICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IFNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCisgICAgICAgICAgICBjb25uZWN0
aW9uLT5wb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qoc2hhcmVkV29ya2VySWRlbnRpZmllciwg
ZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCk7CisgICAg
fSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmgKc2ltaWxhcml0
eSBpbmRleCA1NSUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyUHJveHkuaApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
Y29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oCmluZGV4IGRiN2I4NTA5ZGY1YS4uODU1
NGZiMThiM2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRl
eHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaApAQCAtMjUsOCArMjUsOCBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgIlNoYXJlZFdvcmtlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJX
b3JrZXJEZWJ1Z2dlclByb3h5LmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGVQcm94eS5o
IgogI2luY2x1ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyT2JqZWN0
UHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJPcHRpb25zLmgiCkBAIC0zNCwyOSArMzQsMjcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDYWNoZVN0b3JhZ2VQcm92aWRlcjsKK2Ns
YXNzIFBhZ2U7CitjbGFzcyBTY3JpcHRCdWZmZXI7CiBjbGFzcyBTaGFyZWRXb3JrZXI7CiBjbGFz
cyBTaGFyZWRXb3JrZXJUaHJlYWQ7CiAKLWNsYXNzIFNoYXJlZFdvcmtlclByb3h5IDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZFdvcmtlclByb3h5PiwgcHVibGljIFdvcmtlckds
b2JhbFNjb3BlUHJveHksIHB1YmxpYyBXb3JrZXJPYmplY3RQcm94eSwgcHVibGljIFdvcmtlckxv
YWRlclByb3h5LCBwdWJsaWMgV29ya2VyRGVidWdnZXJQcm94eSB7CitzdHJ1Y3QgQ2xpZW50T3Jp
Z2luOworCitjbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4sIHB1YmxpYyBXb3JrZXJMb2FkZXJQ
cm94eSwgcHVibGljIFdvcmtlckRlYnVnZ2VyUHJveHksIHB1YmxpYyBXb3JrZXJPYmplY3RQcm94
eSB7CiBwdWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFNoYXJl
ZFdvcmtlclByb3h5JiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpIHsgcmV0dXJuICpuZXcgU2hhcmVk
V29ya2VyUHJveHkoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsgfQorICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyB2b2lkIHNldHVwUGFnZUZvclNoYXJlZFdvcmtlcihQYWdlJiwgY29uc3Qg
VVJMJiwgY29uc3QgQ2xpZW50T3JpZ2luJik7CiAKLSAgICBTaGFyZWRXb3JrZXJUaHJlYWQqIHRo
cmVhZCgpIHsgcmV0dXJuIG1fd29ya2VyVGhyZWFkLmdldCgpOyB9CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4gY3JlYXRl
KEFyZ3MmJi4uLiBhcmdzKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZFdvcmtlclRocmVh
ZFByb3h5KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOyB9CisgICAgflNoYXJlZFdvcmtl
clRocmVhZFByb3h5KCk7CisKKyAgICBTaGFyZWRXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIo
KSBjb25zdDsKKyAgICBTaGFyZWRXb3JrZXJUaHJlYWQmIHRocmVhZCgpIHsgcmV0dXJuIG1fd29y
a2VyVGhyZWFkLmdldCgpOyB9CisKKyAgICBib29sIGlzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQo
KSBjb25zdCB7IHJldHVybiBtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQ7IH0KKyAgICB2b2lk
IHNldEFzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKSB7IG1faXNUZXJtaW5hdGluZ09yVGVybWlu
YXRlZCA9IHRydWU7IH0KIAotICAgIHZvaWQgc3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBV
UkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCwgYm9vbCBpc09ubGluZSwgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VDb2RlLCBjb25zdCBD
b250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBib29sIHNob3VsZEJ5cGFzc01h
aW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgQ3Jvc3NPcmlnaW5FbWJlZGRlclBv
bGljeSYsIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5
cGUsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzLCBKU0M6OlJ1bnRpbWVGbGFncykgZmluYWw7Ci0g
ICAgdm9pZCB0ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpIGZpbmFsOwotICAgIHZvaWQgcG9z
dE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpIGZp
bmFsOwotICAgIHZvaWQgcG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1bmN0aW9uPHZvaWQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiYmKSBmaW5hbDsKLSAgICBib29sIGhhc1BlbmRpbmdB
Y3Rpdml0eSgpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgd29ya2VyT2JqZWN0RGVzdHJveWVkKCkg
ZmluYWw7Ci0gICAgdm9pZCBub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9vbCBpc09ubGluZSkg
ZmluYWw7Ci0gICAgdm9pZCBzdXNwZW5kRm9yQmFja0ZvcndhcmRDYWNoZSgpIGZpbmFsOwotICAg
IHZvaWQgcmVzdW1lRm9yQmFja0ZvcndhcmRDYWNoZSgpIGZpbmFsOwotICAgIHZvaWQgcG9zdEV4
Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpIGZpbmFs
OwotICAgIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWQoKSBmaW5hbDsKLSAgICB2b2lk
IHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJikgZmlu
YWw7Ci0gICAgdm9pZCBjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCBoYXNQZW5k
aW5nQWN0aXZpdHkpIGZpbmFsOwotICAgIHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wg
aGFzUGVuZGluZ0FjdGl2aXR5KSBmaW5hbDsKICAgICBSZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVj
dGlvbj4gY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpIGZpbmFsOwogICAgIFJlZlB0cjxS
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uPiBjcmVhdGVSVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCkgZmluYWw7CiAgICAgdm9pZCBwb3N0VGFza1RvTG9h
ZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJikgZmluYWw7CkBAIC02NCwxOCArNjIs
MjUgQEAgcHVibGljOgogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb0RlYnVnZ2VyKGNvbnN0IFN0cmlu
ZyYpIGZpbmFsOwogICAgIHZvaWQgc2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3Bl
Y3Rvcihib29sKSBmaW5hbDsKIAorICAgIC8vIFdvcmtlck9iamVjdFByb3h5CisgICAgdm9pZCBw
b3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkg
ZmluYWw7CisgICAgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgpIGZpbmFsIHsgfQor
ICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cyYmKSBmaW5hbCB7IH0KKyAgICB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChi
b29sKSBmaW5hbCB7IH0KKyAgICB2b2lkIHJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sKSBmaW5h
bCB7IH0KKwogcHJpdmF0ZToKLSAgICBTaGFyZWRXb3JrZXJQcm94eShTaGFyZWRXb3JrZXImKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShVbmlxdWVSZWY8UGFn
ZT4mJiwgU2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3Qg
VVJMJiBzY3JpcHRVUkwsIFNjcmlwdEJ1ZmZlciYmLCBXb3JrZXJPcHRpb25zJiYsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50LCBDYWNoZVN0b3JhZ2VQcm92aWRlciYpOwogCi0gICAgdm9pZCB3b3Jr
ZXJHbG9iYWxTY29wZURlc3Ryb3llZEludGVybmFsKCk7CisgICAgc3RhdGljIHZvaWQgbmV0d29y
a1N0YXRlQ2hhbmdlZChib29sIGlzT25MaW5lKTsKKyAgICB2b2lkIG5vdGlmeU5ldHdvcmtTdGF0
ZUNoYW5nZShib29sIGlzT25saW5lKTsKIAotICAgIFdlYWtQdHI8U2hhcmVkV29ya2VyPiBtX3No
YXJlZFdvcmtlcjsKLSAgICBSZWZQdHI8U2hhcmVkV29ya2VyVGhyZWFkPiBtX3dvcmtlclRocmVh
ZDsKLSAgICBjb25zdCBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0OwotICAgIGNvbnN0IFN0cmluZyBtX2lkZW50aWZpZXJGb3JJbnNwZWN0b3I7
Ci0gICAgYm9vbCBtX2Fza2VkVG9UZXJtaW5hdGUgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9oYXNQ
ZW5kaW5nQWN0aXZpdHkgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9tYXlCZURlc3Ryb3llZCB7IGZh
bHNlIH07CisgICAgVW5pcXVlUmVmPFBhZ2U+IG1fcGFnZTsKKyAgICBSZWY8RG9jdW1lbnQ+IG1f
ZG9jdW1lbnQ7CisgICAgUmVmPFNoYXJlZFdvcmtlclRocmVhZD4gbV93b3JrZXJUaHJlYWQ7Cisg
ICAgQ2FjaGVTdG9yYWdlUHJvdmlkZXImIG1fY2FjaGVTdG9yYWdlUHJvdmlkZXI7CisgICAgUmVm
UHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKKyAg
ICBib29sIG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCA3NTZkYTg4YjQ1ZjcuLmJi
ODFjZGMyYzc3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0yMDIsNiArMjAyLDkgQEAgc2V0KFdl
YktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uCiAgICAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24KIAorICAgIE5ldHdvcmtQcm9jZXNzL1NoYXJl
ZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJDb25uZWN0aW9uCisgICAgTmV0d29ya1Byb2Nlc3MvU2hh
cmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24KKwogICAg
IE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQKIAogICAgIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24KQEAgLTMwNSw2ICsz
MDgsOCBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAKICAgICBXZWJQcm9jZXNzL1Nw
ZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyCiAKKyAgICBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
CisgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24K
ICAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uCiAgICAgV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA0YzY2MjIwY2YxMjIu
LjcyMjljMWI5ODcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1p
bnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdApAQCAtOTEsNiArOTEsOCBAQCAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2subWVzc2FnZXMuaQogJChQ
Uk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtl
ci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1Rf
RElSKS9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJL
aXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4KQEAgLTIxNyw2ICsyMTksOCBAQCAkKFBST0pFQ1RfRElS
KS9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL1dlYlByb2Nlc3MvU3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJj
ZU1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NsaWVudENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQ
Uk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2Vi
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlz
dAppbmRleCBlM2I1NTg0MGFlMWUuLmE4NjMyODE0N2I1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC02MDcsNiArNjA3LDE4IEBAICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uTWVzc2FnZXNSZXBsaWVzCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5j
cHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdl
c1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9X
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3Bw
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbk1lc3NhZ2VSZWNl
aXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2Vi
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbk1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3Bw
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25NZXNzYWdl
c1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9X
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNw
cAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQvV2ViU29ja2V0Q2hhbm5lbE1lc3NhZ2VSZWNlaXZlci5jcHAKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU29ja2V0Q2hhbm5l
bE1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQv
V2ViU29ja2V0Q2hhbm5lbE1lc3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1h
a2UKaW5kZXggN2FkNDllMzczNWY0Li4zNTFmZmFlMGE1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKQEAgLTEzMyw2ICsxMzMsOCBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2sgXAogCU5l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzayBcCiAJTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24g
XAorCU5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uIFwKKwlOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbiBcCiAJTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0
cmVhbSBcCiAJTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MgXAogCU5ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlciBcCkBAIC0yMjUsNiArMjI3LDggQEAgTUVTU0FHRV9SRUNF
SVZFUlMgPSBcCiAJV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFn
ZUNvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJl
YWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyIFwKKwlXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIFwKKwlXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGll
bnRDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1dlYlByb2Nlc3MgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAppbmRleCBmNWI3ZGIxNjAzY2EuLjkyOTgzNGI4MmM2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKQEAgLTY2LDYgKzY2LDExIEBACiAjaW5jbHVkZSAiV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNz
YWdlcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlci5oIgorI2luY2x1ZGUgIldl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50U3RvcmFnZUFjY2Vz
cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oPgpAQCAtMTMy
LDYgKzEzNyw3IEBAIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYgbmV0CiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogICAgIGVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigpOwogI2VuZGlmCisgICAg
ZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpOwogfQogCiBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6fk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKQEAg
LTE2Niw2ICsxNzIsNyBAQCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fk5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAg
dW5yZWdpc3RlclNXQ29ubmVjdGlvbigpOwogI2VuZGlmCisgICAgdW5yZWdpc3RlclNoYXJlZFdv
cmtlckNvbm5lY3Rpb24oKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6aGFzVXBsb2FkU3RhdGVDaGFuZ2VkKGJvb2wgaGFzVXBsb2FkKQpAQCAtMjc1LDYgKzI4Miwx
NyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3RpbwogICAgIH0KICNlbmRpZgogCisgICAgaWYgKGRl
Y29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgaWYgKG1f
c2hhcmVkV29ya2VyQ29ubmVjdGlvbikKKyAgICAgICAgICAgIG1fc2hhcmVkV29ya2VyQ29ubmVj
dGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1l
c3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgaWYgKG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb24pCisgICAgICAgICAgICBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uLT5kaWRS
ZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKwogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQogICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkKICAgICAgICAgcmV0dXJuIHBheW1lbnRDb29yZGlu
YXRvcigpLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwpAQCAtMzk4LDkg
KzQxNiw4IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKGNvbm5lY3Rpb24pOwogI2VuZGlmCisgICAgbV9zaGFyZWRXb3JrZXJDb250ZXh0Q29u
bmVjdGlvbiA9IG51bGxwdHI7CiAKICAgICAvLyBQcm90ZWN0IG91cnNlbGYgYXMgd2UgbWlnaHQg
YmUgb3RoZXJ3aXNlIGJlIGRlbGV0ZWQgZHVyaW5nIHRoaXMgZnVuY3Rpb24uCiAgICAgUmVmPE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBwcm90ZWN0b3IoKnRoaXMpOwpAQCAtNDQxLDYg
KzQ1OCw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAg
ICAgdW5yZWdpc3RlclNXQ29ubmVjdGlvbigpOwogI2VuZGlmCisgICAgdW5yZWdpc3RlclNoYXJl
ZFdvcmtlckNvbm5lY3Rpb24oKTsKIAogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQog
ICAgIG1fcGF5bWVudENvb3JkaW5hdG9yID0gbnVsbHB0cjsKQEAgLTExODMsNiArMTIwMSw2MSBA
QCBzaXplX3QgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmZpbmROZXR3b3JrQWN0aXZp
dHlUcmFja2VyKFdlYkNvcmU6OlJlc291cgogICAgICAgICByZXR1cm4gaXRlbS5yZXNvdXJjZUlE
ID09IHJlc291cmNlSUQ7CiAgICAgfSk7CiB9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVE
b21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJl
ZFdvcmtlckNvbnRleHRDb25uZWN0aW9uOiIpOworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3Jr
U2Vzc2lvbigpOworICAgIGlmIChhdXRvKiBzd1NlcnZlciA9IHNlc3Npb24gPyBzZXNzaW9uLT5z
aGFyZWRXb3JrZXJTZXJ2ZXIoKSA6IG51bGxwdHIpCisgICAgICAgIG1fc2hhcmVkV29ya2VyQ29u
dGV4dENvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24+KCp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgKnN3U2VydmVy
KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCkKK3sK
KyAgICBpZiAobV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsKKyAgICBpZiAoIXNlc3Npb24pCisg
ICAgICAgIHJldHVybjsKKworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2Vy
LCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjoiKTsKKworICAgIGF1dG8m
IHNlcnZlciA9IHNlc3Npb24tPmVuc3VyZVNoYXJlZFdvcmtlclNlcnZlcigpOworICAgIGF1dG8g
Y29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4o
bV9uZXR3b3JrUHJvY2Vzcywgc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIG1fd2ViUHJvY2Vz
c0lkZW50aWZpZXIpOworCisgICAgbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uID0gKmNvbm5lY3Rp
b247CisgICAgc2VydmVyLmFkZENvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSk7Cit9CisK
K3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsb3NlU2hhcmVkV29ya2VyQ29u
dGV4dENvbm5lY3Rpb24oKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2hhcmVkV29y
a2VyLCAiY2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbjoiKTsKKyAgICBtX3NoYXJl
ZFdvcmtlckNvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKK30KKwordm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKQor
eworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAidW5yZWdpc3RlclNo
YXJlZFdvcmtlckNvbm5lY3Rpb246Iik7CisgICAgaWYgKG1fc2hhcmVkV29ya2VyQ29ubmVjdGlv
bikKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uLT5zZXJ2ZXIoKS5yZW1vdmVDb25u
ZWN0aW9uKG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbi0+d2ViUHJvY2Vzc0lkZW50aWZpZXIoKSk7
Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkKK3sKKyAgICBDT05ORUNU
SU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgInNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkOiIpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OlNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQgeyB3ZWJQcm9j
ZXNzSWRlbnRpZmllcigpIH0sIDApOworCisgICAgbV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvbiA9IG51bGxwdHI7Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24qIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCkKK3sK
KyAgICBpZiAoIW1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbikKKyAgICAgICAgZXN0YWJsaXNoU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpOworICAgIHJldHVybiBtX3NoYXJlZFdvcmtlckNv
bm5lY3Rpb24uZ2V0KCk7Cit9CiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29ubmVjdGlvbigp
CkBAIC0xMjIwLDEwICsxMjkzLDEwIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmNsb3NlU1dDb250ZXh0Q29ubmVjdGlvbigpCiAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9u
ID0gbnVsbHB0cjsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCkKK3ZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnNlcnZpY2VXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Tm9Mb25nZXJOZWVkZWQoKQogewotICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2VydmljZVdv
cmtlciwgInNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZDogV2ViUHJvY2Vz
cyBubyBsb25nZXIgdXNlZnVsIGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycyIpOwotICAgIG1f
bmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OldvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVk
ZWQgeyB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOworICAgIENPTk5FQ1RJT05fUkVMRUFT
RV9MT0coU2VydmljZVdvcmtlciwgInNlcnZpY2VXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uTm9Mb25nZXJOZWVkZWQ6IFdlYlByb2Nlc3Mgbm8gbG9uZ2VyIHVzZWZ1bCBmb3IgcnVubmlu
ZyBzZXJ2aWNlIHdvcmtlcnMiKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpTZXJ2aWNl
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCB7IHdlYlByb2Nlc3NJZGVudGlm
aWVyKCkgfSwgMCk7CiAKICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDBhNmU2ODQwMTJmMy4uMTg0M2Q0OGE2YjU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC05Miw2ICs5Miw4IEBAIGNsYXNzIE5ldHdvcmtT
b2NrZXRTdHJlYW07CiBjbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOwogY2xhc3MgV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOwogY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOwor
Y2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjsKK2NsYXNzIFdlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CiAKIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUg
ewogc3RydWN0IERhdGFLZXk7CkBAIC0xODEsMTAgKzE4MywxMyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25zdCBXZWJDb3JlOjpNZXNzYWdl
UG9ydElkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok1lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSk+JiYpOwogCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQotICAgIHZvaWQgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVl
ZGVkKCk7CisgICAgdm9pZCBzZXJ2aWNlV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5v
TG9uZ2VyTmVlZGVkKCk7CiAgICAgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBzd0Nvbm5lY3Rpb24o
KTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gY3JlYXRlRmV0
Y2hUYXNrKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpOwogI2VuZGlmCisgICAgdm9pZCBzaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOworCisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbiogc2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOwogCiAgICAgTmV0d29ya1NjaGVtZVJl
Z2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSgpIHsgcmV0dXJuIG1fc2NoZW1lUmVnaXN0cnkuZ2V0KCk7
IH0KIApAQCAtMjUzLDYgKzI1OCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVTb2NrZXRD
aGFubmVsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgcHJv
dG9jb2wsIFdlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwogICAgIHZvaWQgdXBkYXRlUXVvdGFC
YXNlZE9uU3BhY2VVc2FnZUZvclRlc3RpbmcoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7
CiAKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oKTsKKyAg
ICB2b2lkIHVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CisKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKTsK
ICAgICB2b2lkIGVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViUGFnZVByb3h5SWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMjYwLDYgKzI2OCw5IEBA
IHByaXZhdGU6CiAgICAgdm9pZCB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7CiAjZW5kaWYKIAor
ICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24oV2ViUGFnZVBy
b3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGNsb3NlU2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb24oKTsKKwogICAgIHZvaWQgY3JlYXRlUlRDUHJvdmlkZXIoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICB2b2lkIGNvbm5lY3RUb1JUQ0Rh
dGFDaGFubmVsUmVtb3RlU291cmNlKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBz
b3VyY2UsIFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBoYW5kbGVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8Ym9vbD4pPiYmKTsKQEAgLTQwNCw2ICs0MTUs
OCBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPiBtX3N3Q29u
bmVjdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uPiBtX3N3Q29udGV4dENvbm5lY3Rpb247CiAjZW5kaWYKKyAgICBXZWFrUHRyPFdlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb24+IG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbjsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4g
bV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbjsKIAogI2lmIEVOQUJMRShXRUJfUlRDKQog
ICAgIGJvb2wgbV9pc1JlZ2lzdGVyZWRUb1JUQ0RhdGFDaGFubmVsUHJveHkgeyBmYWxzZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMjQyODM1MDUw
YjI0Li5iOTdjYTM0NzliNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgpAQCAtODgsNiArODgsOSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgQ2xvc2VTV0NvbnRleHRDb25uZWN0aW9u
KCkKICNlbmRpZgogCisgICAgRXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24o
V2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiBkb21haW4pIC0+ICgpIEFzeW5jCisgICAgQ2xvc2VTaGFyZWRXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvbigpCisKICAgICBDcmVhdGVSVENQcm92aWRlcigpIC0+ICgpIEFz
eW5jCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgQ29ubmVjdFRvUlRDRGF0YUNoYW5uZWxSZW1v
dGVTb3VyY2Uoc3RydWN0IFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBzb3VyY2Us
IHN0cnVjdCBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgaGFuZGxlcikgLT4gKHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gcmVzdWx0KSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCA5YTMyZWExODY1NGMuLmQ3NjE2Mjg1
MGNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldlYlNXT3JpZ2luU3Rv
cmUuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJT
b2NrZXRUYXNrLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVKYXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgpAQCAtNjI5LDcgKzYzMCw3IEBAIFNXU2VydmVyJiBO
ZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlU1dTZXJ2ZXIoKQogICAgICAgICAgICAgU2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXI6OnN0YXJ0KHRoaXMsIFdURk1vdmUoam9iRGF0YSksIHNob3VsZFJl
ZnJlc2hDYWNoZSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgICAgICB9LCBbdGhpc10oYXV0byYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9u
YWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRl
bnRpZmllciwgYXV0byYmIGNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgICAgICBBU1NFUlQo
IXJlZ2lzdHJhYmxlRG9tYWluLmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICBtX25ldHdvcmtQcm9j
ZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyB7IHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlk
ZW50aWZpZXIsIG1fc2Vzc2lvbklEIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCAwKTsK
KyAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RXN0YWJs
aXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHJlZ2lz
dHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIG1fc2Vzc2lvbklEIH0s
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCAwKTsKICAgICAgICAgfSwgV1RGTW92ZShhcHBC
b3VuZERvbWFpbnNDYWxsYmFjaykpOwogICAgIH0KICAgICByZXR1cm4gKm1fc3dTZXJ2ZXI7CkBA
IC02NTMsNiArNjU0LDEzIEBAIGJvb2wgTmV0d29ya1Nlc3Npb246Omhhc1NlcnZpY2VXb3JrZXJE
YXRhYmFzZVBhdGgoKSBjb25zdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
CitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVTaGFyZWRXb3Jr
ZXJTZXJ2ZXIoKQoreworICAgIGlmICghbV9zaGFyZWRXb3JrZXJTZXJ2ZXIpCisgICAgICAgIG1f
c2hhcmVkV29ya2VyU2VydmVyID0gbWFrZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI+KCp0
aGlzKTsKKyAgICByZXR1cm4gKm1fc2hhcmVkV29ya2VyU2VydmVyOworfQorCiBXZWJJREJTZXJ2
ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVXZWJJREJTZXJ2ZXIoKQogewogICAgIGlmICghbV93
ZWJJREJTZXJ2ZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb24uaAppbmRleCAxOTMwN2NmNDBiZTMuLjNmOWQ2Yzk1NTBhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtNzksNiArNzksNyBAQCBj
bGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOwogY2xhc3MgV2ViSURCU2VydmVyOwogY2xhc3Mg
V2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzOwogY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyOwogY2xhc3MgV2ViU29ja2V0VGFz
azsKIGNsYXNzIFdlYlNXT3JpZ2luU3RvcmU7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247
CkBAIC0yMTAsNiArMjExLDkgQEAgcHVibGljOgogICAgIHZvaWQgYWRkU2VydmljZVdvcmtlclNl
c3Npb24oYm9vbCBwcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFN0cmluZyYmIHNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIGNvbnN0IFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYpOwogI2VuZGlmCiAKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIqIHNoYXJlZFdvcmtl
clNlcnZlcigpIHsgcmV0dXJuIG1fc2hhcmVkV29ya2VyU2VydmVyLmdldCgpOyB9CisgICAgV2Vi
U2hhcmVkV29ya2VyU2VydmVyJiBlbnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKTsKKwogICAgIFdl
YklEQlNlcnZlciogd2ViSURCU2VydmVyKCkgeyByZXR1cm4gbV93ZWJJREJTZXJ2ZXIuZ2V0KCk7
IH0KICAgICBXZWJJREJTZXJ2ZXImIGVuc3VyZVdlYklEQlNlcnZlcigpOwogICAgIHZvaWQgY2xv
c2VJREJTZXJ2ZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTMxOCw2ICszMjIs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySW5mbz4gbV9z
ZXJ2aWNlV29ya2VySW5mbzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1dTZXJ2ZXI+
IG1fc3dTZXJ2ZXI7CiAjZW5kaWYKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2Vy
U2VydmVyPiBtX3NoYXJlZFdvcmtlclNlcnZlcjsKIAogICAgIFN0cmluZyBtX2lkYkRhdGFiYXNl
UGF0aDsKICAgICBSZWZQdHI8V2ViSURCU2VydmVyPiBtX3dlYklEQlNlcnZlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggNWE4
NzAzZWZkNmQ1Li4yN2Y2ZThkYTVmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0xNjIsNyArMTYyLDcgQEAgdm9pZCBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWUKIAogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNv
bm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkKIHsKLSAgICBtX2Nvbm5lY3Rpb24uc2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCk7CisgICAgbV9jb25uZWN0aW9uLnNlcnZp
Y2VXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKTsKIH0KIAog
dm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNldFRocm90dGxlU3RhdGUoYm9v
bCBpc1Rocm90dGxlYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTI5OGNhYTVhZmE3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcApAQCAtMCwwICsxLDI4NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIK
KworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6OldlYlNoYXJlZFdvcmtlclNlcnZlcihOZXR3b3JrU2Vzc2lvbiYgc2Vz
c2lvbikKKyAgICA6IG1fc2Vzc2lvbihzZXNzaW9uKQoreworfQorCitXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXI6On5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIoKSA9IGRlZmF1bHQ7CisKK1BBTDo6U2Vzc2lv
bklEIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2Vzc2lvbklEKCkKK3sKKyAgICByZXR1cm4gbV9z
ZXNzaW9uLnNlc3Npb25JRCgpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVx
dWVzdFNoYXJlZFdvcmtlcihXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4sIFdlYkNvcmU6
OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciwgVVJMJiYgdXJsLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgcG9ydCwgV2Vi
Q29yZTo6V29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMpCit7CisgICAgV2ViQ29yZTo6U2hh
cmVkV29ya2VyS2V5IGtleSB7IG9yaWdpbiwgdXJsLCB3b3JrZXJPcHRpb25zLm5hbWUgfTsKKyAg
ICBhdXRvJiBzaGFyZWRXb3JrZXIgPSBtX3NoYXJlZFdvcmtlcnMuZW5zdXJlKGtleSwgWyZdIHsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2hhcmVkV29ya2VyPihvcmlnaW4sIHVybCwgd29y
a2VyT3B0aW9ucyk7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIHNoYXJlZFdvcmtlci0+
c2hhcmVkV29ya2VyT2JqZWN0cy5hZGQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgcG9y
dCk7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVy
OjpyZXF1ZXN0U2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHJp
dmF0ZX1zLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHNoYXJlZFdvcmtlci0+aWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKKworICAgIGlmIChzaGFyZWRXb3JrZXItPnNoYXJlZFdvcmtl
ck9iamVjdHMuc2l6ZSgpID4gMSkgeworICAgICAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIs
ICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6IEEgc2hhcmVkIHdv
cmtlciB3aXRoIHRoaXMgVVJMIGFscmVhZHkgZXhpc3RzIChub3cgc2hhcmVkIGJ5ICV1IHNoYXJl
ZCB3b3JrZXIgb2JqZWN0cykiLCBzaGFyZWRXb3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMuc2l6
ZSgpKTsKKyAgICAgICAgaWYgKHNoYXJlZFdvcmtlci0+aXNSdW5uaW5nKSB7CisgICAgICAgICAg
ICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IG1fY29udGV4dENvbm5lY3Rpb25zLmdldChzaGFy
ZWRXb3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgICAgICAgICAgQVNTRVJUKGNvbnRl
eHRDb25uZWN0aW9uKTsKKyAgICAgICAgICAgIGlmIChjb250ZXh0Q29ubmVjdGlvbikKKyAgICAg
ICAgICAgICAgICBwb3N0Q29ubmVjdEV2ZW50KCpjb250ZXh0Q29ubmVjdGlvbiwgc2hhcmVkV29y
a2VyLT5pZGVudGlmaWVyLCBwb3J0LCBvcmlnaW4uY2xpZW50T3JpZ2luLnRvU3RyaW5nKCkpOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvKiBzZXJ2ZXJDb25u
ZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5w
cm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlQoc2VydmVyQ29ubmVjdGlvbik7CisKKyAg
ICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVl
c3RTaGFyZWRXb3JrZXI6IEZldGNoaW5nIHNoYXJlZCB3b3JrZXIgc2NyaXB0IGluIGNsaWVudCIp
OworICAgIHNlcnZlckNvbm5lY3Rpb24tPmZldGNoU2NyaXB0SW5DbGllbnQodXJsLCBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLCB3b3JrZXJPcHRpb25zLCBbd2Vha1RoaXMgPSBXZWFrUHRy
IHsgKnRoaXMgfSwgc2hhcmVkV29ya2VyID0gV2Vha1B0ciB7ICpzaGFyZWRXb3JrZXIgfV0oV2Vi
Q29yZTo6U2NyaXB0QnVmZmVyJiYgc2NyaXB0QnVmZmVyKSB7CisgICAgICAgIGlmICh3ZWFrVGhp
cyAmJiBzaGFyZWRXb3JrZXIpCisgICAgICAgICAgICB3ZWFrVGhpcy0+ZGlkRmluaXNoRmV0Y2hp
bmdTaGFyZWRXb3JrZXJTY3JpcHQoKnNoYXJlZFdvcmtlciwgV1RGTW92ZShzY3JpcHRCdWZmZXIp
KTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmxhdW5jaFNoYXJl
ZFdvcmtlcihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0
Q29ubmVjdGlvbiwgU2hhcmVkV29ya2VyJiBzaGFyZWRXb3JrZXIpCit7CisgICAgUkVMRUFTRV9M
T0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpsYXVuY2hTaGFyZWRXb3Jr
ZXI6IGNvbnRleHRDb25uZWN0aW9uPSVwLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2
NCwgJmNvbnRleHRDb25uZWN0aW9uLCBzaGFyZWRXb3JrZXIuaWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKKyAgICBjb250ZXh0Q29ubmVjdGlvbi5sYXVuY2hTaGFyZWRXb3JrZXIoc2hhcmVkV29ya2Vy
Lm9yaWdpbiwgc2hhcmVkV29ya2VyLmlkZW50aWZpZXIsIHNoYXJlZFdvcmtlci51cmwsIHNoYXJl
ZFdvcmtlci53b3JrZXJPcHRpb25zLCBzaGFyZWRXb3JrZXIuc2NyaXB0QnVmZmVyKTsKKyAgICBz
aGFyZWRXb3JrZXIuaXNSdW5uaW5nID0gdHJ1ZTsKKyAgICBhdXRvIHNvdXJjZU9yaWdpbiA9IHNo
YXJlZFdvcmtlci5vcmlnaW4uY2xpZW50T3JpZ2luLnRvU3RyaW5nKCk7CisgICAgZm9yIChhdXRv
JiBwb3J0IDogc2hhcmVkV29ya2VyLnNoYXJlZFdvcmtlck9iamVjdHMudmFsdWVzKCkpCisgICAg
ICAgIHBvc3RDb25uZWN0RXZlbnQoY29udGV4dENvbm5lY3Rpb24sIHNoYXJlZFdvcmtlci5pZGVu
dGlmaWVyLCBwb3J0LCBzb3VyY2VPcmlnaW4pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNl
cnZlcjo6cG9zdENvbm5lY3RFdmVudChXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmll
ciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3Nh
Z2VQb3J0JiBzb3VyY2VQb3J0LCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3sKKyAgICBS
RUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnBvc3RDb25u
ZWN0RXZlbnQ6IGNvbnRleHRDb25uZWN0aW9uPSVwLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUi
IFBSSXU2NCwgJmNvbnRleHRDb25uZWN0aW9uLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUlu
dDY0KCkpOworICAgIGNvbnRleHRDb25uZWN0aW9uLnBvc3RDb25uZWN0RXZlbnQoc2hhcmVkV29y
a2VySWRlbnRpZmllciwgc291cmNlUG9ydCwgc291cmNlT3JpZ2luKTsKK30KKwordm9pZCBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29ya2VyU2NyaXB0KFNo
YXJlZFdvcmtlciYgd29ya2VyLCBXZWJDb3JlOjpTY3JpcHRCdWZmZXImJiBzY3JpcHRCdWZmZXIp
Cit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVy
OjpkaWRGaW5pc2hGZXRjaGluZ1NoYXJlZFdvcmtlclNjcmlwdCBzaGFyZWRXb3JrZXJJZGVudGlm
aWVyPSUiIFBSSXU2NCAiLCB3b3JrZXI9JXAsIHN1Y2Nlc3M9JWQiLCB3b3JrZXIuaWRlbnRpZmll
ci50b1VJbnQ2NCgpLCAmd29ya2VyLCAhIXNjcmlwdEJ1ZmZlcik7CisgICAgaWYgKCFzY3JpcHRC
dWZmZXIpIHsKKyAgICAgICAgLy8gRmV0Y2ggZmFpbGVkLCBub3RpZnkgdGhlIFNoYXJlZFdvcmtl
ciBvYmplY3RzLgorICAgICAgICBmb3IgKGF1dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciA6IHdvcmtlci5zaGFyZWRXb3JrZXJPYmplY3RzLmtleXMoKSkgeworICAgICAgICAgICAgaWYg
KGF1dG8qIHNlcnZlckNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkpKQorICAgICAgICAgICAgICAgIHNl
cnZlckNvbm5lY3Rpb24tPm5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZhaWx1cmUoc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgICAgIH0KKyAgICAgICAgbV9zaGFyZWRXb3JrZXJz
LnJlbW92ZSh3b3JrZXIua2V5KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd29y
a2VyLnNjcmlwdEJ1ZmZlciA9IFdURk1vdmUoc2NyaXB0QnVmZmVyKTsKKworICAgIGF1dG8gcmVn
aXN0cmFibGVEb21haW4gPSB3b3JrZXIucmVnaXN0cmFibGVEb21haW4oKTsKKyAgICBhdXRvKiBj
b250ZXh0Q29ubmVjdGlvbiA9IGNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4o
cmVnaXN0cmFibGVEb21haW4pOworICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAg
ICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgbGF1bmNoU2hhcmVkV29ya2VyKCpjb250ZXh0Q29ubmVjdGlv
biwgd29ya2VyKTsKK30KKworYm9vbCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6Om5lZWRzQ29udGV4
dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pIGNvbnN0Cit7CisgICAgZm9yIChhdXRvJiBzaGFy
ZWRXb3JrZXIgOiBtX3NoYXJlZFdvcmtlcnMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHJlZ2lz
dHJhYmxlRG9tYWluLm1hdGNoZXMoc2hhcmVkV29ya2VyLT51cmwpKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXI6OmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKK3sKKyAgICBBU1NFUlQoIW1fY29udGV4
dENvbm5lY3Rpb25zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSk7CisgICAgaWYgKG1fcGVu
ZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWlucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikp
CisgICAgICAgIHJldHVybjsKKworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNo
YXJlZFdvcmtlclNlcnZlcjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24gd2lsbCBjcmVhdGUgYSBj
b25uZWN0aW9uIik7CisKKyAgICBtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnMuYWRk
KHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBtX3Nlc3Npb24ubmV0d29ya1Byb2Nlc3MoKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyB7IHJlZ2lzdHJhYmxlRG9tYWluLCBtX3Nlc3Npb24uc2Vzc2lvbklEKCkg
fSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlZ2lzdHJhYmxlRG9tYWlu
XSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVh
dGVDb250ZXh0Q29ubmVjdGlvbiBzaG91bGQgbm93IGhhdmUgY3JlYXRlZCBhIGNvbm5lY3Rpb24i
KTsKKworICAgICAgICBBU1NFUlQobV9wZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5zLmNv
bnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSk7CisgICAgICAgIG1fcGVuZGluZ0NvbnRleHRDb25u
ZWN0aW9uRG9tYWlucy5yZW1vdmUocmVnaXN0cmFibGVEb21haW4pOworCisgICAgICAgIGlmICht
X2NvbnRleHRDb25uZWN0aW9ucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdp
c3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgICAgICBjcmVhdGVDb250
ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbik7CisgICAgfSwgMCk7Cit9CisKK3ZvaWQg
V2ViU2hhcmVkV29ya2VyU2VydmVyOjphZGRDb250ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbikKK3sKKyAgICBS
RUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmFkZENvbnRl
eHRDb25uZWN0aW9uKCVwKSB3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQsICZjb250ZXh0
Q29ubmVjdGlvbiwgY29udGV4dENvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJ
bnQ2NCgpKTsKKworICAgIEFTU0VSVCghbV9jb250ZXh0Q29ubmVjdGlvbnMuY29udGFpbnMoY29u
dGV4dENvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSkpOworCisgICAgbV9jb250ZXh0Q29u
bmVjdGlvbnMuYWRkKGNvbnRleHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCksICZjb250
ZXh0Q29ubmVjdGlvbik7CisKKyAgICBjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoY29udGV4dENv
bm5lY3Rpb24pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29udGV4
dENvbm5lY3Rpb24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29u
dGV4dENvbm5lY3Rpb24pCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hh
cmVkV29ya2VyU2VydmVyOjpyZW1vdmVDb250ZXh0Q29ubmVjdGlvbiglcCkgd2ViUHJvY2Vzc0lk
ZW50aWZpZXI9JSIgUFJJdTY0LCAmY29udGV4dENvbm5lY3Rpb24sIGNvbnRleHRDb25uZWN0aW9u
LndlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBhdXRvIHJlZ2lzdHJh
YmxlRG9tYWluID0gY29udGV4dENvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKTsKKworICAg
IEFTU0VSVChtX2NvbnRleHRDb25uZWN0aW9ucy5nZXQocmVnaXN0cmFibGVEb21haW4pID09ICZj
b250ZXh0Q29ubmVjdGlvbik7CisKKyAgICBtX2NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUocmVn
aXN0cmFibGVEb21haW4pOworCisgICAgaWYgKG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdp
c3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgIGNyZWF0ZUNvbnRleHRD
b25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbikKK3sKKyAgICBSRUxFQVNFX0xPRyhT
aGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3Jl
YXRlZCglcCkgd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCAmY29udGV4dENvbm5lY3Rp
b24sIGNvbnRleHRDb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSk7
CisgICAgYXV0byYgcmVnaXN0cmFibGVEb21haW4gPSBjb250ZXh0Q29ubmVjdGlvbi5yZWdpc3Ry
YWJsZURvbWFpbigpOworICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9zaGFyZWRXb3JrZXJzLnZh
bHVlcygpKSB7CisgICAgICAgIGlmIChyZWdpc3RyYWJsZURvbWFpbi5tYXRjaGVzKHdvcmtlci0+
dXJsKSkKKyAgICAgICAgICAgIGxhdW5jaFNoYXJlZFdvcmtlcihjb250ZXh0Q29ubmVjdGlvbiwg
Kndvcmtlcik7CisgICAgfQorfQorCithdXRvIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hhcmVk
V29ya2VyQnlJZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVk
V29ya2VySWRlbnRpZmllcikgLT4gU2hhcmVkV29ya2VyKgoreworICAgIGZvciAoYXV0byYgd29y
a2VyIDogbV9zaGFyZWRXb3JrZXJzLnZhbHVlcygpKSB7CisgICAgICAgIGlmICh3b3JrZXItPmlk
ZW50aWZpZXIgPT0gc2hhcmVkV29ya2VySWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiB3
b3JrZXIuZ2V0KCk7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCithdXRvIFdlYlNo
YXJlZFdvcmtlclNlcnZlcjo6c2hhcmVkV29ya2VyQnlPYmplY3RJZGVudGlmaWVyKFdlYkNvcmU6
OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
cikgLT4gU2hhcmVkV29ya2VyKgoreworICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9zaGFyZWRX
b3JrZXJzLnZhbHVlcygpKSB7CisgICAgICAgIGlmICh3b3JrZXItPnNoYXJlZFdvcmtlck9iamVj
dHMuY29udGFpbnMoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikpCisgICAgICAgICAgICBy
ZXR1cm4gd29ya2VyLmdldCgpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9p
ZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KFdl
YkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllcikKK3sKKyAgICBhdXRvKiB3b3JrZXIgPSBzaGFyZWRXb3JrZXJCeU9iamVjdElkZW50
aWZpZXIoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0coU2hh
cmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaGFyZWRXb3JrZXJPYmplY3RJc0dv
aW5nQXdheTogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zLCB3b3JrZXI9
JXAiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSwgd29ya2VyKTsKKyAgICBpZiAoIXdvcmtlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgd29y
a2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzLnJlbW92ZShzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyKTsKKyAgICBpZiAoIXdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIHNodXREb3duU2hhcmVkV29ya2VyKHdvcmtlci0+a2V5KCkp
OworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2h1dERvd25TaGFyZWRXb3JrZXIo
Y29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBrZXkpCit7CisgICAgYXV0byB3b3JrZXIg
PSBtX3NoYXJlZFdvcmtlcnMudGFrZShrZXkpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtl
ciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2h1dERvd25TaGFyZWRXb3JrZXI6IHNoYXJlZFdv
cmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHdvcmtlcj0lcCIsIHdvcmtlciA/IHdvcmtlci0+
aWRlbnRpZmllci50b1VJbnQ2NCgpIDogMCwgd29ya2VyLmdldCgpKTsKKyAgICBpZiAoIXdvcmtl
cikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogY29udGV4dENvbm5lY3Rpb24gPSBjb250
ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHdvcmtlci0+cmVnaXN0cmFibGVEb21h
aW4oKSk7CisgICAgaWYgKCFjb250ZXh0Q29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgY29udGV4dENvbm5lY3Rpb24tPnRlcm1pbmF0ZVNoYXJlZFdvcmtlcih3b3JrZXItPmlkZW50
aWZpZXIpOworCisgICAgaWYgKCFuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVE
b21haW4od29ya2VyLT5yZWdpc3RyYWJsZURvbWFpbigpKSkKKyAgICAgICAgY29udGV4dENvbm5l
Y3Rpb24tPmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVk
V29ya2VyU2VydmVyOjphZGRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCit7CisgICAgYXV0byBwcm9jZXNzSWRl
bnRpZmllciA9IGNvbm5lY3Rpb24tPndlYlByb2Nlc3NJZGVudGlmaWVyKCk7CisgICAgUkVMRUFT
RV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjphZGRDb25uZWN0aW9u
KCVwKTogcHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCBjb25uZWN0aW9uLmdldCgpLCBwcm9j
ZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbnMuY29u
dGFpbnMocHJvY2Vzc0lkZW50aWZpZXIpKTsKKyAgICBtX2Nvbm5lY3Rpb25zLmFkZChwcm9jZXNz
SWRlbnRpZmllciwgV1RGTW92ZShjb25uZWN0aW9uKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29y
a2VyU2VydmVyOjpyZW1vdmVDb25uZWN0aW9uKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHBy
b2Nlc3NJZGVudGlmaWVyKQoreworICAgIGF1dG8gY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMu
dGFrZShwcm9jZXNzSWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAi
V2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1vdmVDb25uZWN0aW9uKCVwKTogcHJvY2Vzc0lkZW50
aWZpZXI9JSIgUFJJdTY0LCBjb25uZWN0aW9uLmdldCgpLCBwcm9jZXNzSWRlbnRpZmllci50b1VJ
bnQ2NCgpKTsKKyAgICBBU1NFUlQoY29ubmVjdGlvbik7CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj4gc2hhcmVkV29ya2VyT2JqZWN0c0dvaW5nQXdh
eTsKKyAgICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgewor
ICAgICAgICBmb3IgKGF1dG8mIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgOiB3b3JrZXIt
PnNoYXJlZFdvcmtlck9iamVjdHMua2V5cygpKSB7CisgICAgICAgICAgICBpZiAoc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IHByb2Nlc3NJZGVudGlm
aWVyKQorICAgICAgICAgICAgICAgIHNoYXJlZFdvcmtlck9iamVjdHNHb2luZ0F3YXkuYXBwZW5k
KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgICAgICB9CisgICAgfQorICAgIGZv
ciAoYXV0byBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIDogc2hhcmVkV29ya2VyT2JqZWN0
c0dvaW5nQXdheSkKKyAgICAgICAgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllcik7Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlcjo6U2hh
cmVkV29ya2VyOjpTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmln
aW4sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJP
cHRpb25zKQorICAgIDogaWRlbnRpZmllcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpKQorICAgICwgb3JpZ2luKG9yaWdpbikKKyAgICAsIHVybCh1cmwpCisgICAg
LCB3b3JrZXJPcHRpb25zKHdvcmtlck9wdGlvbnMpCit7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29y
a2VyU2VydmVyOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29y
a2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlVVJMKQoreworICAgIGF1dG8qIHdvcmtlciA9IHNoYXJlZFdvcmtlckJ5SWRlbnRpZmll
cihzaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRX
b3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVj
dDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgd29ya2VyPSVwIiwgc2hhcmVk
V29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpLCB3b3JrZXIpOworICAgIGlmICghd29ya2VyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciA6IHdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5rZXlzKCkpIHsKKyAgICAgICAgaWYg
KGF1dG8qIHNlcnZlckNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkpKQorICAgICAgICAgICAgc2VydmVy
Q29ubmVjdGlvbi0+cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3Vy
Y2VVUkwpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNo
YXJlZFdvcmtlclNlcnZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uMjhlMTI2NzA2NTdiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmgKQEAgLTAsMCArMSwx
MDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvUHJv
Y2Vzc0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRCdWZmZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFy
ZWRXb3JrZXJJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJLZXku
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1dvcmtlck9wdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya1Nlc3Npb247CitjbGFzcyBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyIDogcHVibGljIENh
bk1ha2VXZWFrUHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlcj4geworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYlNoYXJlZFdvcmtlclNlcnZlcihO
ZXR3b3JrU2Vzc2lvbiYpOworICAgIH5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIoKTsKKworICAgIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpOworCisgICAgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2Vy
KFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBXZWJDb3Jl
OjpXb3JrZXJPcHRpb25zJiYpOworICAgIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3
YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisKKyAgICB2b2lkIGFk
ZENvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24mKTsKKyAgICB2b2lkIHJlbW92ZUNvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKKworICAgIHZvaWQgYWRkQ29ubmVjdGlvbihzdGQ6
OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4mJik7CisgICAgdm9p
ZCByZW1vdmVDb25uZWN0aW9uKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKKworICAgIFdl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIGNvbnRleHRDb25uZWN0aW9u
Rm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRv
bWFpbikgeyByZXR1cm4gbV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0KGRvbWFpbik7IH0KKworICAg
IHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCitwcml2YXRlOgorICAg
IHZvaWQgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mKTsKKworICAgIGJvb2wgbmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxl
RG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CisgICAgdm9p
ZCBjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbiYpOworCisgICAgc3RydWN0IFNoYXJlZFdvcmtlciA6IENhbk1ha2VXZWFrUHRy
PFNoYXJlZFdvcmtlcj4geworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7
CisKKyAgICAgICAgU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIGNv
bnN0IFVSTCYsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmKTsKKworICAgICAgICBXZWJD
b3JlOjpTaGFyZWRXb3JrZXJLZXkga2V5KCkgY29uc3QgeyByZXR1cm4geyBvcmlnaW4sIHVybCwg
d29ya2VyT3B0aW9ucy5uYW1lIH07IH0KKyAgICAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gcmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiB7IHVybCB9OyB9CisKKyAgICAgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRp
ZmllciBpZGVudGlmaWVyOworICAgICAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luOwor
ICAgICAgICBVUkwgdXJsOworICAgICAgICBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdvcmtlck9w
dGlvbnM7CisgICAgICAgIEhhc2hNYXA8V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydD4gc2hhcmVkV29ya2VyT2JqZWN0
czsKKyAgICAgICAgV2ViQ29yZTo6U2NyaXB0QnVmZmVyIHNjcmlwdEJ1ZmZlcjsKKyAgICAgICAg
Ym9vbCBpc1J1bm5pbmcgeyBmYWxzZSB9OworICAgIH07CisKKyAgICBTaGFyZWRXb3JrZXIqIHNo
YXJlZFdvcmtlckJ5SWRlbnRpZmllcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsK
KyAgICBTaGFyZWRXb3JrZXIqIHNoYXJlZFdvcmtlckJ5T2JqZWN0SWRlbnRpZmllcihXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICB2b2lkIGRpZEZpbmlzaEZldGNo
aW5nU2hhcmVkV29ya2VyU2NyaXB0KFNoYXJlZFdvcmtlciYsIFdlYkNvcmU6OlNjcmlwdEJ1ZmZl
ciYmKTsKKyAgICB2b2lkIGxhdW5jaFNoYXJlZFdvcmtlcihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uJiwgU2hhcmVkV29ya2VyJik7CisgICAgdm9pZCBwb3N0Q29ubmVj
dEV2ZW50KFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mLCBXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3Nh
Z2VQb3J0JiwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOworICAgIHZvaWQgc2h1dERvd25T
aGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5Jik7CisKKyAgICBOZXR3
b3JrU2Vzc2lvbiYgbV9zZXNzaW9uOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uPj4g
bV9jb25uZWN0aW9uczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4gbV9jb250ZXh0Q29ubmVj
dGlvbnM7CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9wZW5kaW5n
Q29udGV4dENvbm5lY3Rpb25Eb21haW5zOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2hhcmVkV29y
a2VyS2V5LCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcmVkV29ya2VyPj4gbV9zaGFyZWRXb3JrZXJzOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uNjY0NjI3ZTVmNzJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbi5jcHAKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIgorCisjaW5j
bHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNk
ZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVk
V29ya2VyLCAiJXAgLSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OiIgZm10LCB0aGlzLCBtX3dlYlByb2Nlc3NJZGVudGlm
aWVyLnRvVUludDY0KCksICMjX19WQV9BUkdTX18pCisjZGVmaW5lIENPTk5FQ1RJT05fUkVMRUFT
RV9MT0dfRVJST1IoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKFNoYXJlZFdvcmtlciwgIiVw
IC0gW3dlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgbV93ZWJQcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2
NCgpLCAjI19fVkFfQVJHU19fKQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJv
Y2VzcywgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIsIElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIp
CisgICAgOiBtX2NvbnRlbnRDb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX25ldHdvcmtQ
cm9jZXNzKG5ldHdvcmtQcm9jZXNzKQorICAgICwgbV9zZXJ2ZXIoc2VydmVyKQorICAgICwgbV93
ZWJQcm9jZXNzSWRlbnRpZmllcih3ZWJQcm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICBDT05ORUNU
SU9OX1JFTEVBU0VfTE9HKCJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOiIpOworfQor
CitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjp+V2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygifldlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb246Iik7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiogV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAor
eworICAgIHJldHVybiBtX2NvbnRlbnRDb25uZWN0aW9uLnB0cigpOworfQorCitQQUw6OlNlc3Np
b25JRCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpzZXNzaW9uSUQoKQoreworICAg
IHJldHVybiBzZXJ2ZXIoKS5zZXNzaW9uSUQoKTsKK30KKworTmV0d29ya1Nlc3Npb24qIFdlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OnNlc3Npb24oKQoreworICAgIHJldHVybiBtX25l
dHdvcmtQcm9jZXNzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSk7Cit9CisKK3ZvaWQgV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6cmVxdWVzdFNoYXJlZFdvcmtlcihXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mJiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgVVJMJiYgdXJsLCBXZWJDb3JlOjpU
cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgcG9ydCwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmIHdv
cmtlck9wdGlvbnMpCit7CisgICAgQVNTRVJUKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIu
cHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsgLy8gRklYTUU6
IFNob3VsZCBiZSBhIE1FU1NBR0VfQ0hFQ0soKS4KKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9H
KCJyZXF1ZXN0U2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVi
bGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSB0aGlzLT5zZXNzaW9uKCkpCisgICAgICAg
IHNlc3Npb24tPmVuc3VyZVNoYXJlZFdvcmtlclNlcnZlcigpLnJlcXVlc3RTaGFyZWRXb3JrZXIo
V1RGTW92ZShvcmlnaW4pLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXVEZNb3ZlKHVy
bCksIFdURk1vdmUocG9ydCksIFdURk1vdmUod29ya2VyT3B0aW9ucykpOworfQorCit2b2lkIFdl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OmZldGNoU2NyaXB0SW5DbGllbnQoY29uc3Qg
VVJMJiB1cmwsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYgd29ya2Vy
T3B0aW9ucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTY3JpcHRCdWZmZXImJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiZmV0
Y2hTY3JpcHRJbkNsaWVudDogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31z
Iiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbjo6RmV0Y2hTY3JpcHRJbkNsaWVudCB7IHVybCwgc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllciwgd29ya2VyT3B0aW9ucyB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6bm90aWZ5V29ya2Vy
T2JqZWN0T2ZMb2FkRmFpbHVyZShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNF
X0xPR19FUlJPUigibm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkRmFpbHVyZTogc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb246Ok5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZhaWx1cmUg
eyBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIH0pOworfQorCit2b2lkIFdlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgQ09OTkVDVElPTl9SRUxF
QVNFX0xPR19FUlJPUigicG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0OiBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6UG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0IHsgc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIHNvdXJjZVVSTCB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uOjpzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7Cisg
ICAgQVNTRVJUKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIo
KSA9PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsgLy8gRklYTUU6IFNob3VsZCBiZSBhIE1FU1NB
R0VfQ0hFQ0soKS4KKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJzaGFyZWRXb3JrZXJPYmpl
Y3RJc0dvaW5nQXdheTogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwg
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIGlmIChhdXRvKiBzZXNzaW9uID0gdGhpcy0+c2Vzc2lvbigpKQorICAgICAgICBzZXNzaW9u
LT5lbnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKS5zaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdh
eShzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKK30KKworI3VuZGVmIENPTk5FQ1RJT05f
UkVMRUFTRV9MT0cKKyN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SCisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODEz
MTUwMzZmNzAyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oCkBAIC0wLDAg
KzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1Byb2Nlc3NJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNjcmlwdEJ1ZmZl
cjsKK3N0cnVjdCBXb3JrZXJPcHRpb25zOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgTmV0d29ya1Byb2Nlc3M7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI7CitjbGFzcyBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOworCitjbGFzcyBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVi
bGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
K3B1YmxpYzoKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9j
ZXNzJiwgV2ViU2hhcmVkV29ya2VyU2VydmVyJiwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIpOworICAgIH5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
KCk7CisKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlcigpIHsgcmV0dXJuIG1fc2Vy
dmVyOyB9CisgICAgY29uc3QgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIoKSBjb25zdCB7
IHJldHVybiBtX3NlcnZlcjsgfQorCisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCk7Cisg
ICAgTmV0d29ya1Nlc3Npb24qIHNlc3Npb24oKTsKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUHJvY2Vzc0lk
ZW50aWZpZXI7IH0KKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAgICB2b2lkIGZldGNoU2NyaXB0SW5DbGllbnQo
Y29uc3QgVVJMJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6V29ya2VyT3B0aW9ucyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyJiYpPiYmKTsKKyAgICB2b2lkIG5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZh
aWx1cmUoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgdm9pZCBw
b3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisKK3ByaXZhdGU6CisgICAg
Ly8gSVBDOjpNZXNzYWdlU2VuZGVyLgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVz
dGluYXRpb25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KKworICAgIC8vIElQQyBtZXNz
YWdlcy4KKyAgICB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFVSTCYmLCBXZWJDb3Jl
OjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJik7Cisg
ICAgdm9pZCBzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyKTsKKworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29udGVu
dENvbm5lY3Rpb247CisgICAgUmVmPE5ldHdvcmtQcm9jZXNzPiBtX25ldHdvcmtQcm9jZXNzOwor
ICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlciYgbV9zZXJ2ZXI7CisgICAgV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIgbV93ZWJQcm9jZXNzSWRlbnRpZmllcjsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRX
b3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi5mYWU0YTA4MDM3NzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor
IyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlv
biBOb3RSZWZDb3VudGVkIHsKKyAgICBSZXF1ZXN0U2hhcmVkV29ya2VyKHN0cnVjdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4gb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFVSTCB1cmwsIFdlYkNvcmU6OlRyYW5z
ZmVycmVkTWVzc2FnZVBvcnQgcG9ydCwgc3RydWN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMgd29y
a2VyT3B0aW9ucykKKyAgICBTaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpT
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIp
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtl
ci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uNWQ3MDU5N2IwZjYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5jcHAKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNkZWZpbmUgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVB
U0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9j
ZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQo
KSwgIyNfX1ZBX0FSR1NfXykKKworV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZl
cikKKyAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQorICAgICwgbV9zZXJ2ZXIoc2VydmVy
KQorICAgICwgbV9yZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikKK3sKKyAgICBD
T05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246Iik7CisgICAgc2VydmVyLmFkZENvbnRleHRDb25uZWN0aW9uKCp0aGlz
KTsKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6fldlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQoreworICAgIENPTlRFWFRfQ09O
TkVDVElPTl9SRUxFQVNFX0xPRygifldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246Iik7CisgICAgaWYgKG1fc2VydmVyICYmIG1fc2VydmVyLT5jb250ZXh0Q29ubmVjdGlv
bkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKCkpID09IHRoaXMpCisgICAg
ICAgIG1fc2VydmVyLT5yZW1vdmVDb250ZXh0Q29ubmVjdGlvbigqdGhpcyk7Cit9CisKK1dlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OndlYlByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb25u
ZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCk7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiYgV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6aXBjQ29ubmVjdGlvbigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCk7Cit9CisKK0lQQzo6
Q29ubmVjdGlvbiogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVz
c2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiAmaXBjQ29ubmVjdGlv
bigpOworfQorCit1aW50NjRfdCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7
Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29u
bmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxF
QVNFX0xPRygiY29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQ6Iik7CisgICAgbV9jb25uZWN0aW9u
LnNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7
Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cG9z
dEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIg
c2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sK
KyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coInBvc3RFeGNlcHRpb25Ub1dvcmtl
ck9iamVjdDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklk
ZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgaWYgKG1fc2VydmVyKQorICAgICAgICBtX3NlcnZl
ci0+cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGVy
cm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwpOworfQorCit2
b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmxhdW5jaFNoYXJl
ZFdvcmtlcihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgV2ViQ29yZTo6U2hh
cmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYgd29ya2VyT3B0aW9ucywgY29uc3QgV2Vi
Q29yZTo6U2NyaXB0QnVmZmVyJiBzY3JpcHRCdWZmZXIpCit7CisgICAgQ09OVEVYVF9DT05ORUNU
SU9OX1JFTEVBU0VfTE9HKCJsYXVuY2hTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZp
ZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6TGF1
bmNoU2hhcmVkV29ya2VyIHsgb3JpZ2luLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCB1cmwsIHdv
cmtlck9wdGlvbnMsIHNjcmlwdEJ1ZmZlciB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpwb3N0Q29ubmVjdEV2ZW50KFdlYkNvcmU6OlNoYXJl
ZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYgcG9ydCwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4p
Cit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJwb3N0Q29ubmVjdEV2ZW50
OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VySWRlbnRpZmll
ci50b1VJbnQ2NCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OlBvc3RDb25uZWN0RXZlbnQgeyBzaGFyZWRXb3JrZXJJZGVudGlm
aWVyLCBwb3J0LCBzb3VyY2VPcmlnaW4gfSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlU2hhcmVkV29ya2VyKFdlYkNvcmU6OlNo
YXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBDT05U
RVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coInRlcm1pbmF0ZVNoYXJlZFdvcmtlcjogc2hhcmVk
V29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50
NjQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpUZXJtaW5hdGVTaGFyZWRXb3JrZXIgeyBzaGFyZWRXb3JrZXJJZGVudGlmaWVy
IH0pOworfQorCisjdW5kZWYgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HCisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uN2FiMjdhZjdmYTY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VT
ZW5kZXIuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9NZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVn
aXN0cmFibGVEb21haW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZp
ZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVnaXN0cmFibGVEb21haW47Citj
bGFzcyBTY3JpcHRCdWZmZXI7CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworc3RydWN0IFdvcmtlck9w
dGlvbnM7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzczsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlcjsKKworY2xhc3MgV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBJUEM6
Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2ViU2hhcmVkV29ya2VyU2VydmVyJik7CisgICAg
fldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKKworICAgIFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3Q7CisgICAg
Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29u
c3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQorICAgIElQQzo6Q29ubmVjdGlvbiYg
aXBjQ29ubmVjdGlvbigpIGNvbnN0OworCisgICAgdm9pZCBsYXVuY2hTaGFyZWRXb3JrZXIoY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmll
ciwgY29uc3QgVVJMJiwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYsIGNvbnN0IFdlYkNv
cmU6OlNjcmlwdEJ1ZmZlciYpOworICAgIHZvaWQgcG9zdENvbm5lY3RFdmVudChXZWJDb3JlOjpT
aGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQ
b3J0JiwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOworICAgIHZvaWQgdGVybWluYXRlU2hh
cmVkV29ya2VyKFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworCisgICAgdm9pZCBj
b25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworcHJpdmF0ZToKKyAg
ICAvLyBJUEMgbWVzc2FnZXMuCisgICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qo
V2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCk7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCisgICAgSVBDOjpDb25uZWN0aW9u
KiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1l
c3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CisKKyAgICBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgbV9jb25uZWN0aW9uOworICAgIFdlYWtQdHI8V2ViU2hhcmVk
V29ya2VyU2VydmVyPiBtX3NlcnZlcjsKKyAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBt
X3JlZ2lzdHJhYmxlRG9tYWluOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLmFlNDdjMTIyY2JhYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNSBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgeworICAgIFBvc3RFeGNlcHRpb25U
b1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtl
cklkZW50aWZpZXIsIFN0cmluZyBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBTdHJpbmcgc291cmNlVVJMKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaApp
bmRleCA0NGUwYTdhY2I3YjUuLjdiN2NjOWJhYzRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5n
LmgKQEAgLTk3LDYgKzk3LDcgQEAgZXh0ZXJuICJDIiB7CiAgICAgTShTZXJ2aWNlV29ya2VyKSBc
CiAgICAgTShTZXNzaW9uU3RhdGUpIFwKICAgICBNKFNoYXJlZERpc3BsYXlMaXN0cykgXAorICAg
IE0oU2hhcmVkV29ya2VyKSBcCiAgICAgTShTdG9yYWdlKSBcCiAgICAgTShTdG9yYWdlQVBJKSBc
CiAgICAgTShUZXh0SW5wdXQpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5CmluZGV4IDdlYmZhNTE2YjUwMy4uMWEyNjFlMGIxMGRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTMwMywxMCArMzAzLDEzIEBAIGRlZiB0eXBlc190
aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNoYXJlZFN0
cmluZ0hhc2gnLAorICAgICAgICAnV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllcicsCisg
ICAgICAgICdXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyJywKICAgICAgICAg
J1dlYkNvcmU6OlNsZWVwRGlzYWJsZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNv
dXJjZUJ1ZmZlckFwcGVuZE1vZGUnLAogICAgICAgICAnV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTdG9yYWdl
VHlwZScsCisgICAgICAgICdXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JywKICAgICAg
ICAgJ1dlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3RJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNv
cmU6OldlYkxvY2tJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OldlYlNvY2tldElkZW50
aWZpZXInLApAQCAtODUxLDYgKzg1NCw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgog
ICAgICAgICAnV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZSc6IFsnPFdlYkNvcmUvVGV4dENoZWNr
aW5nLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YSc6IFsnPFdlYkNv
cmUvVGV4dEluZGljYXRvci5oPiddLAogICAgICAgICAnV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZSc6IFsnPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+J10sCisg
ICAgICAgICdXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JzogWyc8V2ViQ29yZS9NZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0cy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6VXNlZExlZ2FjeVRM
Uyc6IFsnPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZUJhc2UuaD4nXSwKICAgICAgICAgJ1dlYkNv
cmU6OlZpZGVvUHJlc2V0RGF0YSc6IFsnPFdlYkNvcmUvVmlkZW9QcmVzZXQuaD4nXSwKICAgICAg
ICAgJ1dlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyc6IFsnPFdlYkNvcmUvVmlld3BvcnRBcmd1
bWVudHMuaD4nXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGRmNDdjNzg2YzhkZS4uZTRjMDc4NzUyZjMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKQEAgLTE0MSw2ICsxNDEsMTAgQEAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV09yaWdpblN0b3JlLmNwcCBAbm8tdW5pZnkKIE5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBAbm8tdW5pZnkKIE5ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBAbm8t
dW5pZnkKIAorTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZl
ci5jcHAKK05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uLmNwcAorTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxl
U3lzdGVtU3RvcmFnZUhhbmRsZS5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3Rl
bVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS5jcHAKQEAgLTc4Miw2ICs3ODYsOSBAQCBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCiBXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dPcmlnaW5UYWJsZS5jcHAKIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJQcm92aWRlci5jcHAKK1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCitXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKK1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3Jr
ZXJQcm92aWRlci5jcHAKIAogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIuY3BwCiAKQEAgLTg4NCwzICs4OTEsNyBAQCBSZW1vdGVXZWJMb2NrUmVnaXN0cnlN
ZXNzYWdlUmVjZWl2ZXIuY3BwCiBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrTWVzc2FnZVJlY2Vp
dmVyLmNwcAogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5TWVzc2FnZVJlY2VpdmVyLmNwcAog
V2ViTG9ja1JlZ2lzdHJ5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBk
MWI0MzcxNzYzNWYuLjMzMDIwYmQ1YzNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC01MjksNyArNTI5
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0ZXJtaW5hdGVXZWJQcm9jZXNzKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2MKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
dGVybWluYXRlVW5yZXNwb25zaXZlU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcikKIHsKICAgICBpZiAoUmVmUHRyIHByb2Nl
c3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHByb2Nlc3NJZGVudGlm
aWVyKSkgewotICAgICAgICBwcm9jZXNzLT5kaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICAg
ICAgcHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpT
ZXJ2aWNlV29ya2VyKTsKICAgICAgICAgcHJvY2Vzcy0+cmVxdWVzdFRlcm1pbmF0aW9uKFByb2Nl
c3NUZXJtaW5hdGlvblJlYXNvbjo6RXhjZWVkZWRDUFVMaW1pdCk7CiAgICAgfQogfQpAQCAtMTQx
NSwxNiArMTQxNSwyMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZERlc3Ryb3lXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eShXZWJVc2VyQ29udGVudAogfQogI2VuZGlmCiAKK3Zv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0
cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFdlYlByb2Nlc3NQb29sOjplc3Rh
Ymxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV1RGTW92
ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlc3Npb25JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworfQorCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5Ojplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVy
LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2Vy
dmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWdpc3RyYWJsZURv
bWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoKnRoaXMsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBz
ZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHNlc3Npb25JRCwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworICAgIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4p
LCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHNlc3Npb25JRCwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OndvcmtlckNvbnRl
eHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRl
bnRpZmllcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2VydmljZVdvcmtlckNvbnRleHRD
b25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRp
ZmllcikKIHsKICAgICBpZiAoYXV0byogcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vz
c0ZvcklkZW50aWZpZXIoaWRlbnRpZmllcikpCi0gICAgICAgIHByb2Nlc3MtPmRpc2FibGVTZXJ2
aWNlV29ya2VycygpOworICAgICAgICBwcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNz
UHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikKQEAgLTE0NjAsNiArMTQ2NSwx
MiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5k
UHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSQogfQogI2VuZGlmCiAKK3ZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6c2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvKiBw
cm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihpZGVudGlmaWVy
KSkKKyAgICAgICAgcHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3Jr
ZXJUeXBlOjpTaGFyZWRXb3JrZXIpOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJl
cXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBj
dXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBxdW90YSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgUkVMRUFTRV9MT0coU3RvcmFnZSwgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVx
dWVzdFN0b3JhZ2VTcGFjZSIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA4Y2JkN2QwOWI2NmYuLjY4
NDFhMzRmZTA5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTMyNywxMyArMzI3LDE1IEBAIHByaXZhdGU6CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB2b2lkIGVzdGFibGlzaFdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgd29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CisgICAgdm9p
ZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmll
ciwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9p
ZCBzZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllcik7CiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQ
cm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIp
OwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIHZvaWQgc3Rh
cnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKICAgICB2b2lkIGVuZFNlcnZp
Y2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBz
ZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogI2VuZGlmCisgICAgdm9pZCBzaGFyZWRX
b3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgdGVybWluYXRl
V2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5tZXNzYWdlcy5pbgppbmRleCBhOTk3NmIyMmU3M2YuLjE1NzU3ZWQ5YTI1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTMsMTMgKzUzLDE1IEBAIG1lc3NhZ2VzIC0+IE5l
dHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIFRlcm1pbmF0ZVdlYlByb2Nl
c3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIpCiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJh
YmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkgLT4gKCkgQXN5bmMKLSAgICBXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2Vy
TmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgRXN0YWJs
aXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJ
ZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCisgICAgU2Vy
dmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQ
cm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIp
CiAgICAgVW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpCiAgICAgU3RhcnRTZXJ2aWNlV29y
a2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2Vydmlj
ZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQogICAgIEVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5k
UHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vz
c0lkZW50aWZpZXIpCiAjZW5kaWYKKyAgICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0
cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKKyAgICBT
aGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAKICAgICBTZXRXZWJQcm9jZXNzSGFzVXBsb2FkcyhX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSUQsIGJvb2wgaGFzVXBsb2FkKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjNDJlMWNiZDliZWEu
Ljk4ZTQwYjc2NzA1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC0zNjkxLDExICszNjkxLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVzZXJBZ2VudChT
dHJpbmcmJiB1c2VyQWdlbnQpCiAgICAgICAgIHJldHVybjsKICAgICBtX3VzZXJBZ2VudCA9IFdU
Rk1vdmUodXNlckFnZW50KTsKIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICAvLyBX
ZSB1cGRhdGUgdGhlIHNlcnZpY2Ugd29ya2VyIHRoZXJlIGF0IHRoZSBtb21lbnQgdG8gYmUgc3Vy
ZSB3ZSB1c2UgdmFsdWVzIHVzZWQgYnkgYWN0dWFsIHdlYiBwYWdlcy4KICAgICAvLyBGSVhNRTog
UmVmYWN0b3IgdGhpcyB3aGVuIHdlIGhhdmUgYSBiZXR0ZXIgVXNlci1BZ2VudCBzdG9yeS4KLSAg
ICBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS51cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KG1f
dXNlckFnZW50KTsKLSNlbmRpZgorICAgIHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnVwZGF0ZVdv
cmtlclVzZXJBZ2VudChtX3VzZXJBZ2VudCk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcAppbmRleCA2NmQ0OWZhYzNlYTYuLjRiMTliMGQxZDNjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNTI5LDcgKzUyOSw3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OmdldFdlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1By
b3h5JiB3ZWJQcm9jZXNzUHJvCiBib29sIFdlYlByb2Nlc3NQb29sOjpzX3VzZVNlcGFyYXRlU2Vy
dmljZVdvcmtlclByb2Nlc3MgPSBmYWxzZTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
LXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiBwcm94eSwgUmVnaXN0cmFibGVEb21h
aW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250
ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURv
bWFpbiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2Vy
dmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiB3
ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JT
ZXNzaW9uSUQoc2Vzc2lvbklEKTsKICAgICBpZiAoIXdlYnNpdGVEYXRhU3RvcmUpCkBAIC01NDYs
NyArNTQ2LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm8KICAgICBpZiAoc2VydmljZVdvcmtl
clBhZ2VJZGVudGlmaWVyKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgYSBzZXJ2aWNlIHdvcmtlciBm
b3IgYSBzZXJ2aWNlIHdvcmtlciBwYWdlIHNvIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIHVzZSB1
c2UgdGhlIHBhZ2UncyBXZWJQcm9jZXNzIGZvciB0aGUgc2VydmljZSB3b3JrZXIuCiAgICAgICAg
IGlmICgoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vz
c0ZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLT5wcm9jZXNzSWRlbnRp
ZmllcigpKSkpIHsKLSAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJs
ZVNlcnZpY2VXb3JrZXJzKHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyRm9yU2VydmljZVdvcmtlcnMoKSk7CisgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5LT5lbmFibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2Vydmlj
ZVdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JX
b3JrZXJzKCkpOwogICAgICAgICAgICAgaWYgKHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmlz
SW5Qcm9jZXNzQ2FjaGUoKSkgewogICAgICAgICAgICAgICAgIHByb2Nlc3NQb29sLT53ZWJQcm9j
ZXNzQ2FjaGUoKS5yZW1vdmVQcm9jZXNzKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBXZWJQ
cm9jZXNzQ2FjaGU6OlNob3VsZFNodXREb3duUHJvY2Vzczo6Tm8pOwogICAgICAgICAgICAgICAg
IEFTU0VSVCghc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKTsK
QEAgLTU2NCw0MiArNTY0LDkyIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkg
PSBwcm9jZXNzLnB0cigpOwotICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+
ZW5hYmxlU2VydmljZVdvcmtlcnMocHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXJGb3JTZXJ2aWNlV29ya2VycygpKTsKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHktPmVuYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpT
ZXJ2aWNlV29ya2VyLCBwcm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
ckZvcldvcmtlcnMoKSk7CiAKICAgICAgICAgICAgIGlmIChzZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpIHsKICAgICAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+
d2ViUHJvY2Vzc0NhY2hlKCkucmVtb3ZlUHJvY2Vzcygqc2VydmljZVdvcmtlclByb2Nlc3NQcm94
eSwgV2ViUHJvY2Vzc0NhY2hlOjpTaG91bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKICAgICAgICAg
ICAgICAgICBBU1NFUlQoIXNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2Fj
aGUoKSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVB
U0VfTE9HX1NUQVRJQyhTZXJ2aWNlV29ya2VyLCAiZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzIHJldXNpbmcgYW4gZXhpc3Rpbmcgd2ViIHByb2Nlc3MgKHBy
b2Nlc3M9JXAsIFBJRD0lZCkiLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBzZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIFdFQlBS
T0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhTZXJ2aWNlV29ya2VyLCAiZXN0YWJsaXNoU2Vy
dmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyByZXVzaW5nIGFuIGV4
aXN0aW5nIHdlYiBwcm9jZXNzIChwcm9jZXNzPSVwLCBQSUQ9JWQpIiwgc2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eSwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50aWZpZXIo
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmICghc2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eSkgewotICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9
IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMoKnByb2Nlc3NQb29sLCBS
ZWdpc3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9y
ZSk7CisgICAgICAgIGF1dG8gbmV3UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVh
dGVGb3JXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwg
KnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAq
d2Vic2l0ZURhdGFTdG9yZSk7CiAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBu
ZXdQcm9jZXNzUHJveHkucHRyKCk7CiAKLSAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9M
T0dfU1RBVElDKFNlcnZpY2VXb3JrZXIsICJlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MgY3JlYXRpbmcgYSBuZXcgc2VydmljZSB3b3JrZXIgcHJvY2VzcyAo
cHJvY2VzPSVwLCBQSUQ9JWQpIiwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAgIFdFQlBST0NF
U1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhTZXJ2aWNlV29ya2VyLCAiZXN0YWJsaXNoU2Vydmlj
ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyBjcmVhdGluZyBhIG5ldyBz
ZXJ2aWNlIHdvcmtlciBwcm9jZXNzIChwcm9jZXM9JXAsIFBJRD0lZCkiLCBzZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5LCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmll
cigpKTsKIAogICAgICAgICBwcm9jZXNzUG9vbC0+aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MobmV3
UHJvY2Vzc1Byb3h5LCB3ZWJzaXRlRGF0YVN0b3JlKTsKICAgICAgICAgcHJvY2Vzc1Bvb2wtPm1f
cHJvY2Vzc2VzLmFwcGVuZChXVEZNb3ZlKG5ld1Byb2Nlc3NQcm94eSkpOwogICAgIH0KIAotICAg
IEFTU0VSVCghc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmNvbnRhaW5zKCpzZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5KSk7Ci0gICAgc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eSk7CisgICAgd29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpzZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5KTsKIAotICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVz
dGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJQ
cmVmZXJlbmNlcyA/IHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcy52YWx1
ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9y
ZSgpLCByZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgaWYgKCFwcm9jZXNzUG9vbC0+bV9zZXJ2aWNl
V29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5LT5zZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3Jr
ZXJVc2VyQWdlbnQpOworICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNl
cnZpY2VXb3JrZXJDb250ZXh0KHByb2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2VzID8gcHJv
Y2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2Rl
ZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVEb21haW4s
IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQorICAg
ICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRXb3JrZXJVc2VyQWdlbnQocHJvY2Vz
c1Bvb2wtPm1fd29ya2VyVXNlckFnZW50KTsKIH0KKyNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQ
b29sOjpyZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmIHBy
b2Nlc3MpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKFdl
YlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIHsKLSAgICBBU1NFUlQoc2VydmljZVdvcmtlclByb2Nl
c3NlcygpLmNvbnRhaW5zKHByb2Nlc3MpKTsKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCku
cmVtb3ZlKHByb2Nlc3MpOworICAgIEFTU0VSVCh3b3JrZXJQcm9jZXNzZXMoKS5jb250YWlucyhw
cm9jZXNzKSk7CisgICAgd29ya2VyUHJvY2Vzc2VzKCkucmVtb3ZlKHByb2Nlc3MpOworfQorCit2
b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJs
ZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9
IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Npb25J
RCk7CisgICAgaWYgKCF3ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICB3ZWJzaXRlRGF0YVN0b3Jl
ID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOworICAgIGlmICgh
cHJvY2Vzc1Bvb2xzKCkuc2l6ZSgpKQorICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVm
PFdlYlByb2Nlc3NQb29sPj4gc2hhcmVkV29ya2VyUHJvY2Vzc1Bvb2woV2ViUHJvY2Vzc1Bvb2w6
OmNyZWF0ZShBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCkuZ2V0KCkpKTsK
KworICAgIC8vIEFyYml0cmFyaWx5IGNob29zZSB0aGUgZmlyc3QgcHJvY2VzcyBwb29sIHRvIGhv
c3QgdGhlIHNoYXJlZCB3b3JrZXIgcHJvY2Vzcy4KKyAgICBhdXRvKiBwcm9jZXNzUG9vbCA9IHBy
b2Nlc3NQb29scygpWzBdOworICAgIEFTU0VSVChwcm9jZXNzUG9vbCk7CisKKyAgICBXZWJQcm9j
ZXNzUHJveHkqIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSB7IG51bGxwdHIgfTsKKworICAgIGZv
ciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3NQb29sLT5tX3Byb2Nlc3NlcykgeworICAgICAgICBp
ZiAocHJvY2Vzcy5wdHIoKSA9PSBwcm9jZXNzUG9vbC0+bV9wcmV3YXJtZWRQcm9jZXNzLmdldCgp
IHx8IHByb2Nlc3MtPmlzRHVtbXlQcm9jZXNzUHJveHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBpZiAoJnByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0
YVN0b3JlKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghcHJvY2Vzcy0+aXNN
YXRjaGluZ1JlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSA9IHByb2Nlc3Mu
cHRyKCk7CisgICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlV29ya2VycyhX
ZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOworCisgICAgICAgIGlm
IChzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSkgeworICAgICAg
ICAgICAgcHJvY2Vzc1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nlc3MoKnNoYXJl
ZFdvcmtlclByb2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0NhY2hlOjpTaG91bGRTaHV0RG93blByb2Nl
c3M6Ok5vKTsKKyAgICAgICAgICAgIEFTU0VSVCghc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5p
c0luUHJvY2Vzc0NhY2hlKCkpOworICAgICAgICB9CisKKyAgICAgICAgV0VCUFJPQ0VTU1BPT0xf
UkVMRUFTRV9MT0dfU1RBVElDKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyByZXVzaW5nIGFuIGV4aXN0aW5nIHdlYiBw
cm9jZXNzIChwcm9jZXNzPSVwLCBQSUQ9JWQpIiwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LCBz
aGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICBpZiAoIXNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSkgeworICAg
ICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yV29y
a2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgKnByb2Nlc3NQ
b29sLCBSZWdpc3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURh
dGFTdG9yZSk7CisgICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSA9IG5ld1Byb2Nlc3NQ
cm94eS5wdHIoKTsKKworICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMo
U2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzIGNyZWF0aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nl
c3M9JXAsIFBJRD0lZCkiLCBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHksIHNoYXJlZFdvcmtlclBy
b2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisKKyAgICAgICAgcHJvY2Vzc1Bvb2wt
PmluaXRpYWxpemVOZXdXZWJQcm9jZXNzKG5ld1Byb2Nlc3NQcm94eSwgd2Vic2l0ZURhdGFTdG9y
ZSk7CisgICAgICAgIHByb2Nlc3NQb29sLT5tX3Byb2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdQ
cm9jZXNzUHJveHkpKTsKKyAgICB9CisKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNoYXJl
ZFdvcmtlclByb2Nlc3NQcm94eSk7CisKKyAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmVz
dGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5j
ZXMgPyBwcm9jZXNzUG9vbC0+bV93b3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bv
b2wtPm1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJs
ZURvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmICghcHJvY2Vzc1Bv
b2wtPm1fd29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQorICAgICAgICBzaGFyZWRXb3JrZXJQcm9j
ZXNzUHJveHktPnNldFdvcmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV93b3JrZXJVc2VyQWdl
bnQpOwogfQotI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OndpbmRvd1NlcnZlckNvbm5l
Y3Rpb25TdGF0ZUNoYW5nZWQoKQogewpAQCAtMTAwMywxMCArMTA1Myw4IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIAog
ICAgIG1fYmFja0ZvcndhcmRDYWNoZS0+cmVtb3ZlRW50cmllc0ZvclByb2Nlc3MocHJvY2Vzcyk7
CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5n
U2VydmljZVdvcmtlcnMoKSkKLSAgICAgICAgcmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNz
ZXMocHJvY2Vzcyk7Ci0jZW5kaWYKKyAgICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdXb3JrZXJzKCkp
CisgICAgICAgIHJlbW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7CiAKICAgICBzdGF0
aWNfY2FzdDxXZWJDb250ZXh0U3VwcGxlbWVudCo+KHN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk+KCkpLT5wcm9jZXNzRGlkQ2xvc2UoJnByb2Nlc3MpOwogCkBAIC0xMDY3LDEy
ICsxMTE1LDEyIEBAIFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9jZXNz
Rm9yUmVnaXN0cmFibGVEb21haW4oV2Vic2l0ZURhdGFTdG9yCiB9CiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCi1Vc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIFdlYlByb2Nlc3NQ
b29sOjp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKQor
VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBXZWJQcm9jZXNzUG9vbDo6dXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKQogewotICAgIGlmICghbV91c2VyQ29u
dGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyKQotICAgICAgICBtX3VzZXJDb250ZW50Q29u
dHJvbGxlckZvclNlcnZpY2VXb3JrZXIgPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
Y3JlYXRlKCk7CisgICAgaWYgKCFtX3VzZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtlcnMpCisg
ICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2VycyA9IFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpjcmVhdGUoKTsKIAotICAgIHJldHVybiBtX3VzZXJDb250ZW50Q29u
dHJvbGxlckZvclNlcnZpY2VXb3JrZXItPmlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gbV91c2Vy
Q29udGVudENvbnRyb2xsZXJGb3JXb3JrZXJzLT5pZGVudGlmaWVyKCk7CiB9CiAjZW5kaWYKIApA
QCAtMTExOSwxNSArMTE2NywxMyBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6
Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogCiAgICAgYXV0
byBwYWdlID0gcHJvY2Vzcy0+Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBXVEZNb3ZlKHBhZ2VD
b25maWd1cmF0aW9uKSk7CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKCFt
X3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcykgewotICAgICAgICBtX3NlcnZpY2VXb3JrZXJQcmVm
ZXJlbmNlcyA9IHBhZ2UtPnByZWZlcmVuY2VzU3RvcmUoKTsKLSAgICAgICAgZm9yIChhdXRvJiBz
ZXJ2aWNlV29ya2VyUHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSkKLSAgICAgICAg
ICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzLnVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0
b3JlKCptX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyk7CisgICAgaWYgKCFtX3dvcmtlclByZWZl
cmVuY2VzKSB7CisgICAgICAgIG1fd29ya2VyUHJlZmVyZW5jZXMgPSBwYWdlLT5wcmVmZXJlbmNl
c1N0b3JlKCk7CisgICAgICAgIGZvciAoYXV0byYgd29ya2VyUHJvY2VzcyA6IHdvcmtlclByb2Nl
c3NlcygpKQorICAgICAgICAgICAgd29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcmVmZXJlbmNl
c1N0b3JlKCptX3dvcmtlclByZWZlcmVuY2VzKTsKICAgICB9CiAgICAgaWYgKHVzZXJDb250ZW50
Q29udHJvbGxlcikKLSAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29y
a2VyID0gdXNlckNvbnRlbnRDb250cm9sbGVyOwotI2VuZGlmCisgICAgICAgIG1fdXNlckNvbnRl
bnRDb250cm9sbGVyRm9yV29ya2VycyA9IHVzZXJDb250ZW50Q29udHJvbGxlcjsKIAogICAgIGJv
b2wgZW5hYmxlUHJvY2Vzc1N3YXBPbkNyb3NzU2l0ZU5hdmlnYXRpb24gPSBwYWdlLT5wcmVmZXJl
bmNlcygpLnByb2Nlc3NTd2FwT25Dcm9zc1NpdGVOYXZpZ2F0aW9uRW5hYmxlZCgpOwogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCkBAIC0xMTUwLDE2ICsxMTk2LDE0IEBAIFJlZjxXZWJQYWdlUHJv
eHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQs
IFJlZjxBUEk6CiAgICAgcmV0dXJuIHBhZ2U7CiB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi12b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNv
bnN0IFN0cmluZyYgdXNlckFnZW50KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlV29ya2Vy
VXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQogewotICAgIGlmIChtX3NlcnZpY2VX
b3JrZXJVc2VyQWdlbnQgPT0gdXNlckFnZW50KQorICAgIGlmIChtX3dvcmtlclVzZXJBZ2VudCA9
PSB1c2VyQWdlbnQpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3NlcnZpY2VXb3JrZXJVc2VyQWdl
bnQgPSB1c2VyQWdlbnQ7Ci0gICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IHNl
cnZpY2VXb3JrZXJQcm9jZXNzZXMoKSkKLSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3Muc2V0
U2VydmljZVdvcmtlclVzZXJBZ2VudChtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQpOworICAgIG1f
d29ya2VyVXNlckFnZW50ID0gdXNlckFnZW50OworICAgIGZvciAoYXV0byYgd29ya2VyUHJvY2Vz
cyA6IHdvcmtlclByb2Nlc3NlcygpKQorICAgICAgICB3b3JrZXJQcm9jZXNzLnNldFdvcmtlclVz
ZXJBZ2VudChtX3dvcmtlclVzZXJBZ2VudCk7CiB9Ci0jZW5kaWYKIAogdm9pZCBXZWJQcm9jZXNz
UG9vbDo6cGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCiB7CkBAIC0xNTM4LDggKzE1
ODIsMTMgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlU2VydmljZVdvcmtlcnMoKQog
ewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0
aGlzIH07Ci0gICAgd2hpbGUgKHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb21wdXRlU2l6ZSgp
KQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkuYmVnaW4oKS0+ZGlzYWJsZVNlcnZp
Y2VXb3JrZXJzKCk7CisgICAgVmVjdG9yPFJlZjxXZWJQcm9jZXNzUHJveHk+PiBzZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzOworICAgIHdvcmtlclByb2Nlc3NlcygpLmZvckVhY2goWyZdKGF1dG8mIHBy
b2Nlc3MpIHsKKyAgICAgICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkK
KyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYXBwZW5kKHByb2Nlc3MpOworICAg
IH0pOworICAgIGZvciAoYXV0byYgc2VydmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzKQorICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMo
V2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgogfQog
CkBAIC0xNzY3LDEzICsxODE2LDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcG9ydFdlYkNv
bnRlbnRDUFVUaW1lKFNlY29uZHMgY3B1VGltZSwgdWludDY0X3QgYWN0aXZpdHlTCiAjZW5kaWYK
IH0KIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLVdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQ
cm94eT4mIFdlYlByb2Nlc3NQb29sOjpzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkKK1dlYWtIYXNo
U2V0PFdlYlByb2Nlc3NQcm94eT4mIFdlYlByb2Nlc3NQb29sOjp3b3JrZXJQcm9jZXNzZXMoKQog
ewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+
PiBwcm9jZXNzZXM7CiAgICAgcmV0dXJuIHByb2Nlc3NlczsKIH0KLSNlbmRpZgogCiB2b2lkIFdl
YlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpCiB7CkBAIC0xNzg1LDIwICsx
ODMyLDI1IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkK
ICAgICBpZiAoYXV0byogZ3B1UHJvY2VzcyA9IEdQVVByb2Nlc3NQcm94eTo6c2luZ2xldG9uSWZD
cmVhdGVkKCkpCiAgICAgICAgIGdwdVByb2Nlc3MtPnVwZGF0ZVByb2Nlc3NBc3NlcnRpb24oKTsK
ICNlbmRpZgotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKwogICAgIC8vIENoZWNrIG9uIG5l
eHQgcnVuIGxvb3Agc2luY2UgdGhlIHdlYiBwcm9jZXNzIHByb3h5IHRva2VucyBhcmUgcHJvYmFi
bHkgYmVpbmcgdXBkYXRlZC4KICAgICBjYWxsT25NYWluUnVuTG9vcChbXSB7Ci0gICAgICAgIGZv
ciAoYXV0byYgc2VydmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkp
Ci0gICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy51cGRhdGVTZXJ2aWNlV29ya2VyUHJv
Y2Vzc0Fzc2VydGlvbigpOwotICAgIH0pOworICAgICAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JF
YWNoKFtdKGF1dG8mIHdvcmtlclByb2Nlc3MpIHsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CisgICAgICAgICAgICBpZiAod29ya2VyUHJvY2Vzcy5pc1J1bm5pbmdTZXJ2aWNlV29ya2Vycygp
KQorICAgICAgICAgICAgICAgIHdvcmtlclByb2Nlc3MudXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2Vy
dGlvbihXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogI2VuZGlm
CisgICAgICAgICAgICBpZiAod29ya2VyUHJvY2Vzcy5pc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkp
CisgICAgICAgICAgICAgICAgd29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0
aW9uKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKTsKKyAgICAgICAg
fSk7CisgICAgfSk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6OmlzU2VydmljZVdvcmtlclBh
Z2VJRChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgaW5lZmZpY2llbnQuCi0gICAg
cmV0dXJuIFdURjo6YW55T2Yoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLCBbcGFnZUlEXShhdXRv
JiBwcm9jZXNzKSB7CisgICAgcmV0dXJuIFdURjo6YW55T2Yod29ya2VyUHJvY2Vzc2VzKCksIFtw
YWdlSURdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuIHByb2Nlc3MuaGFzU2Vydmlj
ZVdvcmtlclBhZ2VQcm94eShwYWdlSUQpOwogICAgIH0pOwogI2VuZGlmCkBAIC0yMTI0LDE2ICsy
MTc2LDI2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFVzZVNlcGFyYXRlU2VydmljZVdvcmtl
clByb2Nlc3MoYm9vbCB1c2VTZXBhcmF0ZVNlcnZpY2VXCiB9CiAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCitzaXplX3QgV2ViUHJvY2Vzc1Bvb2w6OnNlcnZpY2VXb3JrZXJQcm94aWVzQ291
bnQoKSBjb25zdAoreworICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKKyAgICB3b3JrZXJQcm9jZXNz
ZXMoKS5mb3JFYWNoKFsmXShhdXRvJiBwcm9jZXNzKSB7CisgICAgICAgIGlmIChwcm9jZXNzLmlz
UnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCisgICAgICAgICAgICArK2NvdW50OworICAgIH0pOwor
ICAgIHJldHVybiBjb3VudDsKK30KKwogYm9vbCBXZWJQcm9jZXNzUG9vbDo6aGFzU2VydmljZVdv
cmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdAogewotICAgIHJldHVybiBX
VEY6OmFueU9mKHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2Vzcykgewor
ICAgIHJldHVybiBXVEY6OmFueU9mKHdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9jZXNz
KSB7CiAgICAgICAgIHJldHVybiBwcm9jZXNzLmhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0
aXZpdHlGb3JUZXN0aW5nKCk7CiAgICAgfSk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6Omhh
c1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gV1RGOjphbnlPZihzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8mIHBy
b2Nlc3MpIHsKKyAgICByZXR1cm4gV1RGOjphbnlPZih3b3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0
byYgcHJvY2VzcykgewogICAgICAgICByZXR1cm4gcHJvY2Vzcy5oYXNTZXJ2aWNlV29ya2VyQmFj
a2dyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggNDMyYzY1ZWU5OTQ5Li5lNzBiNmY0MjlmN2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMzc0LDE3ICsz
NzQsMjAgQEAgcHVibGljOgogICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NEaWRUZXJtaW5hdGUoTmV0
d29ya1Byb2Nlc3NQcm94eSYsIE5ldHdvcmtQcm9jZXNzUHJveHk6OlRlcm1pbmF0aW9uUmVhc29u
KTsKIAogICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyUGFnZUlEKFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIpIGNvbnN0OworICAgIHZvaWQgcmVtb3ZlRnJvbVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNz
UHJveHkmKTsKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBzdGF0aWMgdm9pZCBl
c3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1By
b2Nlc3NQcm94eSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQ
YWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7Ci0gICAgdm9pZCByZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNz
UHJveHkmKTsKLSAgICBzaXplX3Qgc2VydmljZVdvcmtlclByb3hpZXNDb3VudCgpIGNvbnN0IHsg
cmV0dXJuIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb21wdXRlU2l6ZSgpOyB9Ci0gICAgdm9p
ZCB1cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsK
LSAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXJGb3JTZXJ2aWNlV29ya2VycygpOworICAgIHN0YXRpYyB2b2lkIGVzdGFibGlz
aFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNl
c3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICBzaXplX3Qgc2Vydmlj
ZVdvcmtlclByb3hpZXNDb3VudCgpIGNvbnN0OworICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXIgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKTsKICAg
ICBib29sIGhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29u
c3Q7CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9yVGVzdGlu
ZygpIGNvbnN0OwogI2VuZGlmCiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyUHJvY2Vzc0NyYXNoZWQo
V2ViUHJvY2Vzc1Byb3h5Jik7CiAKKyAgICB2b2lkIHVwZGF0ZVdvcmtlclVzZXJBZ2VudChjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudCk7CisgICAgc3RhdGljIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiYsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwor
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVk
KCkgY29uc3Q7CiAjZW5kaWYKQEAgLTYxOCwxMyArNjIxLDExIEBAIHByaXZhdGU6CiAKICAgICBI
YXNoTWFwPFBBTDo6U2Vzc2lvbklELCBXZWFrUHRyPFdlYlByb2Nlc3NQcm94eT4+IG1fZHVtbXlQ
cm9jZXNzUHJveGllczsgLy8gTGlnaHR3ZWlnaHQgV2ViUHJvY2Vzc1Byb3h5IG9iamVjdHMgd2l0
aG91dCBiYWNraW5nIHByb2Nlc3MuCiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAg
c3RhdGljIFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIHNlcnZpY2VXb3JrZXJQcm9jZXNz
ZXMoKTsKLSAgICBib29sIG1fd2FpdGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlv
biB7IGZhbHNlIH07Ci0gICAgU3RyaW5nIG1fc2VydmljZVdvcmtlclVzZXJBZ2VudDsKLSAgICBz
dGQ6Om9wdGlvbmFsPFdlYlByZWZlcmVuY2VzU3RvcmU+IG1fc2VydmljZVdvcmtlclByZWZlcmVu
Y2VzOwotICAgIFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gbV91c2VyQ29u
dGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyOwotI2VuZGlmCisgICAgc3RhdGljIFdlYWtI
YXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIHdvcmtlclByb2Nlc3NlcygpOworCisgICAgc3RkOjpv
cHRpb25hbDxXZWJQcmVmZXJlbmNlc1N0b3JlPiBtX3dvcmtlclByZWZlcmVuY2VzOworICAgIFJl
ZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gbV91c2VyQ29udGVudENvbnRyb2xs
ZXJGb3JXb3JrZXJzOworICAgIFN0cmluZyBtX3dvcmtlclVzZXJBZ2VudDsKIAogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKICAgICBSZWZQdHI8R1BVUHJvY2Vzc1Byb3h5PiBtX2dwdVByb2Nlc3M7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzYmJl
MDNhN2RhZTIuLjE4YWYzNDZmZGIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bv
b2wuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIK
ICNpbmNsdWRlICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCkBAIC0xODIsMTEgKzE4MywxMSBA
QCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNz
UG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYnNpdAogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQotUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JTZXJ2aWNl
V29ya2VycyhXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWluJiYg
cmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCitS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvcldvcmtlcnMoV29y
a2VyVHlwZSB3b3JrZXJUeXBlLCBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJh
YmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVE
YXRhU3RvcmUpCiB7CiAgICAgYXV0byBwcm94eSA9IGFkb3B0UmVmKCpuZXcgV2ViUHJvY2Vzc1By
b3h5KHByb2Nlc3NQb29sLCAmd2Vic2l0ZURhdGFTdG9yZSwgSXNQcmV3YXJtZWQ6Ok5vLCBDcm9z
c09yaWdpbk1vZGU6OlNoYXJlZCwgQ2FwdGl2ZVBvcnRhbE1vZGU6OkRpc2FibGVkKSk7CiAgICAg
cHJveHktPm1fcmVnaXN0cmFibGVEb21haW4gPSBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsK
LSAgICBwcm94eS0+ZW5hYmxlU2VydmljZVdvcmtlcnMocHJvY2Vzc1Bvb2wudXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllckZvclNlcnZpY2VXb3JrZXJzKCkpOworICAgIHByb3h5LT5lbmFi
bGVXb3JrZXJzKHdvcmtlclR5cGUsIHByb2Nlc3NQb29sLnVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXJGb3JXb3JrZXJzKCkpOwogICAgIHByb3h5LT5jb25uZWN0KCk7CiAgICAgcmV0dXJu
IHByb3h5OwogfQpAQCAtOTk1LDEwICs5OTYsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRp
ZEJlY29tZVVucmVzcG9uc2l2ZSgpCiAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGlzUmVzcG9u
c2l2ZUNhbGxiYWNrcykKICAgICAgICAgY2FsbGJhY2soaXNXZWJQcm9jZXNzUmVzcG9uc2l2ZSk7
CiAKLSAgICAvLyBJZiB0aGUgd2ViIHByb2Nlc3MgYmVjb21lcyB1bnJlc3BvbnNpdmUgYW5kIG9u
bHkgcnVucyBzZXJ2aWNlIHdvcmtlcnMsIGtpbGwgaXQgb3Vyc2VsdmVzIHNpbmNlIHRoZXJlIGFy
ZSBubyBuYXRpdmUgY2xpZW50cyB0byBkbyBpdC4KLSAgICBpZiAoaXNSdW5uaW5nU2VydmljZVdv
cmtlcnMoKSAmJiBtX3BhZ2VNYXAuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFdFQlBST0NFU1NQUk9Y
WV9SRUxFQVNFX0xPR19FUlJPUihQZXJmb3JtYW5jZUxvZ2dpbmcsICJkaWRCZWNvbWVVbnJlc3Bv
bnNpdmU6IFRlcm1pbmF0aW5nIHNlcnZpY2Ugd29ya2VyLW9ubHkgd2ViIHByb2Nlc3MgYmVjYXVz
ZSBpdCBpcyB1bnJlc3BvbnNpdmUiKTsKLSAgICAgICAgZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7
CisgICAgLy8gSWYgdGhlIHdlYiBwcm9jZXNzIGJlY29tZXMgdW5yZXNwb25zaXZlIGFuZCBvbmx5
IHJ1bnMgc2VydmljZS9zaGFyZWQgd29ya2Vycywga2lsbCBpdCBvdXJzZWx2ZXMgc2luY2UgdGhl
cmUgYXJlIG5vIG5hdGl2ZSBjbGllbnRzIHRvIGRvIGl0LgorICAgIGlmIChpc1J1bm5pbmdXb3Jr
ZXJzKCkgJiYgbV9wYWdlTWFwLmlzRW1wdHkoKSkgeworICAgICAgICBXRUJQUk9DRVNTUFJPWFlf
UkVMRUFTRV9MT0dfRVJST1IoUGVyZm9ybWFuY2VMb2dnaW5nLCAiZGlkQmVjb21lVW5yZXNwb25z
aXZlOiBUZXJtaW5hdGluZyB3b3JrZXItb25seSB3ZWIgcHJvY2VzcyBiZWNhdXNlIGl0IGlzIHVu
cmVzcG9uc2l2ZSIpOworICAgICAgICBkaXNhYmxlV29ya2Vycyh7IFdvcmtlclR5cGU6OlNlcnZp
Y2VXb3JrZXIsIFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciB9KTsKICAgICAgICAgdGVybWluYXRl
KCk7CiAgICAgfQogfQpAQCAtMTY5NCw4ICsxNjk1LDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKGNvbnN0IFVSTCYgdXJsKQogICAg
IGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVy
bCB9OwogICAgIGlmIChtX3JlZ2lzdHJhYmxlRG9tYWluICYmICptX3JlZ2lzdHJhYmxlRG9tYWlu
ICE9IHJlZ2lzdHJhYmxlRG9tYWluKSB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAg
ICAgICBkaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICAgICAgZGlzYWJsZVdvcmtlcnMoV29y
a2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiAjZW5kaWYKKwogICAgICAgICAvLyBOdWxsIG91dCBy
ZWdpc3RyYWJsZSBkb21haW4gc2luY2UgdGhpcyBwcm9jZXNzIGhhcyBub3cgYmVlbiB1c2VkIGZv
ciBzZXZlcmFsIGRvbWFpbnMuCiAgICAgICAgIG1fcmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiB7IH07CiAgICAgICAgIHJldHVybjsKQEAgLTE4NjEsNjMgKzE4
NjMsODUgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuZEJhY2tncm91bmRBY3Rpdml0eUZvckZ1
bGxzY3JlZW5JbnB1dCgpCiAKICNlbmRpZgogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQot
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVn
aXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50
aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNF
X0xPRyhMb2FkaW5nLCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQ6IFN0YXJ0ZWQiKTsK
LSAgICBtYXJrUHJvY2Vzc0FzUmVjZW50bHlVc2VkKCk7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRlZmF1bHRQYWdlR3JvdXAoKS5wYWdlR3Jv
dXBJRCgpLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VQcm94
eUlELCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VJRCwgc3Rv
cmUsIHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIG1fc2Vy
dmljZVdvcmtlckluZm9ybWF0aW9uLT5pbml0aWFsaXphdGlvbkRhdGEgfSwgW3RoaXMsIHdlYWtU
aGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAg
ICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZXN0YWJsaXNoU2Vy
dmljZVdvcmtlckNvbnRleHQ6IEZpbmlzaGVkIik7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7Ci0gICAgfSwgMCk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRTZXJ2aWNlV29y
a2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQordm9pZCBXZWJQcm9jZXNzUHJv
eHk6OnNldFdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKIHsKLSAgICBB
U1NFUlQobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pOwotICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2VyQWdlbnQgfSwg
MCk7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIGlmIChtX3NlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbikKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OlNldFVzZXJBZ2VudCB7IHVzZXJBZ2VudCB9LCAwKTsKKyNlbmRpZgorICAgIGlm
IChtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlNldFVzZXJBZ2VudCB7IHVzZXJB
Z2VudCB9LCAwKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVNlcnZpY2VXb3Jr
ZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQordm9p
ZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2Vi
UHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiB7Ci0gICAgQVNTRVJUKG1fc2VydmljZVdvcmtlcklu
Zm9ybWF0aW9uKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDApOworI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpVcGRhdGVQ
cmVmZXJlbmNlc1N0b3JlIHsgc3RvcmUgfSwgMCk7CisjZW5kaWYKKyAgICBpZiAobV9zaGFyZWRX
b3JrZXJJbmZvcm1hdGlvbikKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpVcGRhdGVQcmVmZXJlbmNlc1N0b3JlIHsgc3RvcmUg
fSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29ya2VyUHJv
Y2Vzc0Fzc2VydGlvbigpCisvLyBGSVhNRTogQ2xpZW50cyBkbyBub3QgcHJvcGVybHkgZ2V0IHBv
cHVsYXRlZCBpbiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uLgordm9pZCBXZWJQcm9jZXNzUHJv
eHk6OnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZSB3b3JrZXJUeXBlKQog
ewotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInVw
ZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uOiIpOwotICAgIEFTU0VSVChtX3NlcnZp
Y2VXb3JrZXJJbmZvcm1hdGlvbik7Ci0gICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlv
bikKKyAgICBhdXRvJiB3b3JrZXJJbmZvcm1hdGlvbiA9IHdvcmtlclR5cGUgPT0gV29ya2VyVHlw
ZTo6U2hhcmVkV29ya2VyID8gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA6IG1fc2VydmljZVdv
cmtlckluZm9ybWF0aW9uOworICAgIEFTU0VSVCh3b3JrZXJJbmZvcm1hdGlvbik7CisgICAgaWYg
KCF3b3JrZXJJbmZvcm1hdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBzaG91bGRU
YWtlRm9yZWdyb3VuZEFjdGl2aXR5ID0gV1RGOjphbnlPZihtX3NlcnZpY2VXb3JrZXJJbmZvcm1h
dGlvbi0+Y2xpZW50UHJvY2Vzc2VzLCBbJl0oYXV0byYgcHJvY2VzcykgeworICAgIFdFQlBST0NF
U1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVdvcmtlclByb2Nl
c3NBc3NlcnRpb246IHdvcmtlclR5cGU9JXtwdWJsaWN9cyIsIHdvcmtlclR5cGUgPT0gV29ya2Vy
VHlwZTo6U2hhcmVkV29ya2VyID8gInNoYXJlZCIgOiAic2VydmljZSIpOworCisgICAgYm9vbCBz
aG91bGRUYWtlRm9yZWdyb3VuZEFjdGl2aXR5ID0gV1RGOjphbnlPZih3b3JrZXJJbmZvcm1hdGlv
bi0+Y2xpZW50UHJvY2Vzc2VzLCBbJl0oYXV0byYgcHJvY2VzcykgewogICAgICAgICByZXR1cm4g
JnByb2Nlc3MgIT0gdGhpcyAmJiAhIXByb2Nlc3MubV9mb3JlZ3JvdW5kVG9rZW47CiAgICAgfSk7
CiAgICAgaWYgKHNob3VsZFRha2VGb3JlZ3JvdW5kQWN0aXZpdHkpIHsKLSAgICAgICAgaWYgKCFQ
cm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkRm9yZWdyb3VuZEFjdGl2aXR5KG1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCi0gICAgICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZv
cm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5mb3JlZ3JvdW5kQWN0aXZpdHkoIlNlcnZp
Y2UgV29ya2VyIGZvciBmb3JlZ3JvdW5kIHZpZXcocykiX3MpOworICAgICAgICBpZiAoIVByb2Nl
c3NUaHJvdHRsZXI6OmlzVmFsaWRGb3JlZ3JvdW5kQWN0aXZpdHkod29ya2VySW5mb3JtYXRpb24t
PmFjdGl2aXR5KSkKKyAgICAgICAgICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1f
dGhyb3R0bGVyLmZvcmVncm91bmRBY3Rpdml0eSgiV29ya2VyIGZvciBmb3JlZ3JvdW5kIHZpZXco
cykiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYm9vbCBzaG91bGRUYWtlQmFj
a2dyb3VuZEFjdGl2aXR5ID0gV1RGOjphbnlPZihtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+
Y2xpZW50UHJvY2Vzc2VzLCBbJl0oYXV0byYgcHJvY2VzcykgeworICAgIGJvb2wgc2hvdWxkVGFr
ZUJhY2tncm91bmRBY3Rpdml0eSA9IFdURjo6YW55T2Yod29ya2VySW5mb3JtYXRpb24tPmNsaWVu
dFByb2Nlc3NlcywgWyZdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuICZwcm9jZXNz
ICE9IHRoaXMgJiYgISFwcm9jZXNzLm1fYmFja2dyb3VuZFRva2VuOwogICAgIH0pOwogICAgIGlm
IChzaG91bGRUYWtlQmFja2dyb3VuZEFjdGl2aXR5KSB7Ci0gICAgICAgIGlmICghUHJvY2Vzc1Ro
cm90dGxlcjo6aXNWYWxpZEJhY2tncm91bmRBY3Rpdml0eShtX3NlcnZpY2VXb3JrZXJJbmZvcm1h
dGlvbi0+YWN0aXZpdHkpKQotICAgICAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24t
PmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtl
ciBmb3IgYmFja2dyb3VuZCB2aWV3KHMpIl9zKTsKKyAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0
bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0
eSkpCisgICAgICAgICAgICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxl
ci5iYWNrZ3JvdW5kQWN0aXZpdHkoIldvcmtlciBmb3IgYmFja2dyb3VuZCB2aWV3KHMpIl9zKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChtX2hhc1NlcnZpY2VXb3JrZXJCYWNr
Z3JvdW5kUHJvY2Vzc2luZykgeworICAgIGlmICh3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNl
cnZpY2VXb3JrZXIgJiYgbV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcpIHsK
ICAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAi
U2VydmljZSBXb3JrZXIgZm9yIGJhY2tncm91bmQgcHJvY2Vzc2luZyIpOwotICAgICAgICBpZiAo
IVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkobV9zZXJ2aWNlV29y
a2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKLSAgICAgICAgICAgIG1fc2VydmljZVdvcmtlcklu
Zm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiU2Vy
dmljZSBXb3JrZXIgZm9yIGJhY2tncm91bmQgcHJvY2Vzc2luZyJfcyk7CisgICAgICAgIGlmICgh
UHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEJhY2tncm91bmRBY3Rpdml0eSh3b3JrZXJJbmZvcm1h
dGlvbi0+YWN0aXZpdHkpKQorICAgICAgICAgICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5
ID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3IgYmFj
a2dyb3VuZCBwcm9jZXNzaW5nIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1f
c2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG51bGxwdHI7CisgICAgd29ya2Vy
SW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbnVsbHB0cjsKK30KKwordm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZSYgc3RvcmUsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFdFQlBS
T0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3Jr
ZXJDb250ZXh0OiBTdGFydGVkIik7CisgICAgbWFya1Byb2Nlc3NBc1JlY2VudGx5VXNlZCgpOwor
ICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RXN0YWJsaXNoU2hh
cmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bvb2wo
KS5kZWZhdWx0UGFnZUdyb3VwKCkucGFnZUdyb3VwSUQoKSwgbV9zaGFyZWRXb3JrZXJJbmZvcm1h
dGlvbi0+d29ya2VyUGFnZVByb3h5SUQsIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24tPndvcmtl
clBhZ2VJRCwgc3RvcmUsIHJlZ2lzdHJhYmxlRG9tYWluLCBtX3NoYXJlZFdvcmtlckluZm9ybWF0
aW9uLT5pbml0aWFsaXphdGlvbkRhdGEgfSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgIFdFQlBST0NFU1NQ
Uk9YWV9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250
ZXh0OiBGaW5pc2hlZCIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0sIDAp
OworfQorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQordm9pZCBXZWJQcm9jZXNzUHJveHk6
OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
IHN0b3JlLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6
b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQ
YWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZXN0YWJs
aXNoU2VydmljZVdvcmtlckNvbnRleHQ6IFN0YXJ0ZWQiKTsKKyAgICBtYXJrUHJvY2Vzc0FzUmVj
ZW50bHlVc2VkKCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpFc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
IHsgcHJvY2Vzc1Bvb2woKS5kZWZhdWx0UGFnZUdyb3VwKCkucGFnZUdyb3VwSUQoKSwgbV9zZXJ2
aWNlV29ya2VySW5mb3JtYXRpb24tPndvcmtlclBhZ2VQcm94eUlELCBtX3NlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbi0+d29ya2VyUGFnZUlELCBzdG9yZSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZp
Y2VXb3JrZXJQYWdlSWRlbnRpZmllciwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmluaXRp
YWxpemF0aW9uRGF0YSB9LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVB
U0VfTE9HKExvYWRpbmcsICJlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dDogRmluaXNoZWQi
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9LCAwKTsKIH0KIAogdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJv
Y2Vzc1Byb3h5JiBwcm94eSkKQEAgLTE5MjcsNyArMTk1MSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYg
cHJveHkpCiAKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwg
InJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3M6IGNsaWVudFByb2Nlc3M9JXAsIGNs
aWVudFBJRD0lZCIsICZwcm94eSwgcHJveHkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgbV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3Nlcy5hZGQocHJveHkpOwotICAg
IHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBkYXRlV29ya2Vy
UHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KIAogdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQ
cm9jZXNzUHJveHkmIHByb3h5KQpAQCAtMTkzNyw3ICsxOTYxLDcgQEAgdm9pZCBXZWJQcm9jZXNz
UHJveHk6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJv
eHkmIHByb3gKIAogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2Vy
LCAidW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzOiBjbGllbnRQcm9jZXNzPSVw
LCBjbGllbnRQSUQ9JWQiLCAmcHJveHksIHByb3h5LnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAg
IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMucmVtb3ZlKHByb3h5
KTsKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOworICAgIHVwZGF0
ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAK
IGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5
Rm9yVGVzdGluZygpIGNvbnN0CkBAIC0xOTU3LDcgKzE5ODEsNyBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6c3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoKQogCiAgICAgV0VC
UFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAic3RhcnRTZXJ2aWNl
V29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmciKTsKICAgICBtX2hhc1NlcnZpY2VXb3JrZXJCYWNr
Z3JvdW5kUHJvY2Vzc2luZyA9IHRydWU7Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NB
c3NlcnRpb24oKTsKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6
OlNlcnZpY2VXb3JrZXIpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5kU2VydmljZVdv
cmtlckJhY2tncm91bmRQcm9jZXNzaW5nKCkKQEAgLTE5NjcsMjMgKzE5OTEsMzkgQEAgdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZygpCiAK
ICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJlbmRT
ZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmciKTsKICAgICBtX2hhc1NlcnZpY2VXb3Jr
ZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyA9IGZhbHNlOwotICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3Jr
ZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaXNhYmxlU2VydmljZVdvcmtlcnMoKQordm9p
ZCBXZWJQcm9jZXNzUHJveHk6OmRpc2FibGVXb3JrZXJzKE9wdGlvblNldDxXb3JrZXJUeXBlPiB3
b3JrZXJUeXBlKQogewotICAgIGlmICghbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAg
QVNTRVJUKCF3b3JrZXJUeXBlLmlzRW1wdHkoKSk7CisKKyAgICBib29sIGRpZENoYW5nZSA9IGZh
bHNlOworICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNlcnZpY2VXb3Jr
ZXIpICYmIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKSB7CisgICAgICAgIG1fc2VydmljZVdv
cmtlckluZm9ybWF0aW9uID0geyB9OworICAgICAgICBkaWRDaGFuZ2UgPSB0cnVlOworICAgIH0K
KyAgICBpZiAod29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpICYm
IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24pIHsKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJJbmZv
cm1hdGlvbiA9IHsgfTsKKyAgICAgICAgZGlkQ2hhbmdlID0gdHJ1ZTsKKyAgICB9CisgICAgaWYg
KCFkaWRDaGFuZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxF
QVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiZGlzYWJsZVNlcnZpY2VXb3JrZXJzOiIpOwotICAgIG1f
c2VydmljZVdvcmtlckluZm9ybWF0aW9uID0geyB9OworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxF
QVNFX0xPRyhQcm9jZXNzLCAiZGlzYWJsZVdvcmtlcnM6IERpc2FibGluZyB3b3JrZXJzIChTaGFy
ZWRXb3JrZXJzPSVkLCBTZXJ2aWNlV29ya2Vycz0lZCkiLCB3b3JrZXJUeXBlLmNvbnRhaW5zKFdv
cmtlclR5cGU6OlNoYXJlZFdvcmtlciksIHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6
U2VydmljZVdvcmtlcikpOworCiAgICAgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGlt
ZXIoKTsKIAorICAgIGlmICghaXNSdW5uaW5nV29ya2VycygpKQorICAgICAgICBwcm9jZXNzUG9v
bCgpLnJlbW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMoKnRoaXMpOworCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQotICAgIHByb2Nlc3NQb29sKCkucmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9j
ZXNzZXMoKnRoaXMpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpDbG9zZSB7IH0sIDApOworICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtl
clR5cGU6OlNlcnZpY2VXb3JrZXIpKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q2xvc2UgeyB9LCAwKTsKICNlbmRpZgorICAgIGlmICh3b3Jr
ZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlcikpCisgICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q2xvc2Ug
eyB9LCAwKTsKIAogICAgIG1heWJlU2h1dERvd24oKTsKIH0KQEAgLTIwMDQsMTEgKzIwNDQsMTMg
QEAgc3RhdGljIFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRh
LCBVUkw+PiBjb250ZW50UnVsZUxpc3RzRnIKIH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQ
cm94eTo6ZW5hYmxlU2VydmljZVdvcmtlcnMoY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllciYgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKK3ZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjplbmFibGVXb3JrZXJzKFdvcmtlclR5cGUgd29ya2VyVHlwZSwgY29uc3QgVXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllciYgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
cikKIHsKLSAgICBBU1NFUlQoIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsKLSAgICBXRUJQ
Uk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgImVuYWJsZVNlcnZpY2VXb3Jr
ZXJzOiIpOwotICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uID0gU2VydmljZVdvcmtlcklu
Zm9ybWF0aW9uIHsKKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtl
ciwgImVuYWJsZVdvcmtlcnM6IHdvcmtlclR5cGU9JXUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
d29ya2VyVHlwZSkpOworICAgIGF1dG8mIHdvcmtlckluZm9ybWF0aW9uID0gd29ya2VyVHlwZSA9
PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIDog
bV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247CisgICAgQVNTRVJUKCF3b3JrZXJJbmZvcm1hdGlv
bik7CisKKyAgICB3b3JrZXJJbmZvcm1hdGlvbiA9IFdvcmtlckluZm9ybWF0aW9uIHsKICAgICAg
ICAgV2ViUGFnZVByb3h5SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwKICAgICAgICAgUGFnZUlkZW50
aWZpZXI6OmdlbmVyYXRlKCksCiAgICAgICAgIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRh
dGEgewpAQCAtMjAyMSw5ICsyMDYzLDggQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVNl
cnZpY2VXb3JrZXJzKGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIKICAgICAg
ICAgeyB9CiAgICAgfTsKICAgICB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigp
OwotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJv
Y2Vzc0Fzc2VydGlvbigpOwotI2VuZGlmCisKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0
aW9uKHdvcmtlclR5cGUpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlU2xl
ZXBEaXNhYmxlcihTbGVlcERpc2FibGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIHJlYXNvbiwgYm9vbCBkaXNwbGF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaAppbmRleCBmNTE0Yjk5MTZhZDQuLjE5MmQ1ZDJiNmY5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTEzNiw5ICsxMzYsMTMgQEAgcHVi
bGljOgogCiAgICAgZW51bSBjbGFzcyBTaG91bGRMYXVuY2hQcm9jZXNzIDogYm9vbCB7IE5vLCBZ
ZXMgfTsKICAgICBlbnVtIGNsYXNzIENhcHRpdmVQb3J0YWxNb2RlIDogYm9vbCB7IERpc2FibGVk
LCBFbmFibGVkIH07CisgICAgZW51bSBjbGFzcyBXb3JrZXJUeXBlIDogdWludDMyX3QgeworICAg
ICAgICBTZXJ2aWNlV29ya2VyID0gMSA8PCAwLAorICAgICAgICBTaGFyZWRXb3JrZXIgPSAxIDw8
IDEKKyAgICB9OwogCiAgICAgc3RhdGljIFJlZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZShXZWJQ
cm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRhU3RvcmUqLCBDYXB0aXZlUG9ydGFsTW9kZSwgSXNQcmV3
YXJtZWQsIFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZSA9IFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9k
ZTo6U2hhcmVkLCBTaG91bGRMYXVuY2hQcm9jZXNzID0gU2hvdWxkTGF1bmNoUHJvY2Vzczo6WWVz
KTsKLSAgICBzdGF0aWMgUmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlRm9yU2VydmljZVdvcmtl
cnMoV2ViUHJvY2Vzc1Bvb2wmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBXZWJzaXRl
RGF0YVN0b3JlJik7CisgICAgc3RhdGljIFJlZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZUZvcldv
cmtlcnMoV29ya2VyVHlwZSwgV2ViUHJvY2Vzc1Bvb2wmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYmLCBXZWJzaXRlRGF0YVN0b3JlJik7CiAKICAgICB+V2ViUHJvY2Vzc1Byb3h5KCk7CiAK
QEAgLTE2MSw4ICsxNjUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc0luUHJvY2Vzc0NhY2hl
KGJvb2wsIFdpbGxTaHV0RG93biA9IFdpbGxTaHV0RG93bjo6Tm8pOwogICAgIGJvb2wgaXNJblBy
b2Nlc3NDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblByb2Nlc3NDYWNoZTsgfQogCi0gICAg
dm9pZCBlbmFibGVTZXJ2aWNlV29ya2Vycyhjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyJik7Ci0gICAgdm9pZCBkaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICB2b2lkIGVu
YWJsZVdvcmtlcnMoV29ya2VyVHlwZSwgY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
ZmllciYpOworICAgIHZvaWQgZGlzYWJsZVdvcmtlcnMoT3B0aW9uU2V0PFdvcmtlclR5cGU+KTsK
IAogICAgIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IEFTU0VS
VChtX3dlYnNpdGVEYXRhU3RvcmUpOyByZXR1cm4gKm1fd2Vic2l0ZURhdGFTdG9yZTsgfQogICAg
IHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlJik7CkBAIC0xOTQsNiAr
MTk4LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpIGNv
bnN0IHsgcmV0dXJuICEhbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247IH0KICAgICBib29sIGlz
U3RhbmRhbG9uZVNlcnZpY2VXb3JrZXJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gaXNSdW5uaW5n
U2VydmljZVdvcmtlcnMoKSAmJiAhcGFnZUNvdW50KCk7IH0KKyAgICBib29sIGlzUnVubmluZ1No
YXJlZFdvcmtlcnMoKSBjb25zdCB7IHJldHVybiAhIW1fc2hhcmVkV29ya2VySW5mb3JtYXRpb247
IH0KKyAgICBib29sIGlzU3RhbmRhbG9uZVNoYXJlZFdvcmtlclByb2Nlc3MoKSBjb25zdCB7IHJl
dHVybiBpc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkgJiYgIXBhZ2VDb3VudCgpOyB9CisgICAgYm9v
bCBpc1J1bm5pbmdXb3JrZXJzKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRXb3JrZXJJbmZvcm1h
dGlvbiB8fCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsgfQogCiAgICAgYm9vbCBpc0R1bW15
UHJvY2Vzc1Byb3h5KCkgY29uc3Q7CiAKQEAgLTM1OSwxMiArMzY2LDEzIEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgdXBkYXRlQXVkaWJsZU1lZGlhQXNzZXJ0aW9ucygpOwogCisgICAgdm9pZCBzZXRX
b3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCB1cGRhdGVXb3JrZXJQcmVm
ZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKKyAgICB2b2lkIGVzdGFi
bGlzaFNoYXJlZFdvcmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICB2b2lkIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZSk7CiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZXN0YWJsaXNoU2VydmljZVdvcmtl
ckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChjb25z
dCBTdHJpbmcmKTsKLSAgICB2b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3Jl
KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKLSAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJQ
YWdlUHJveHkoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCkgeyByZXR1cm4gbV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gJiYgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnNl
cnZpY2VXb3JrZXJQYWdlUHJveHlJRCA9PSBwYWdlUHJveHlJRDsgfQotICAgIHZvaWQgdXBkYXRl
U2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKKyAgICBib29sIGhhc1NlcnZpY2VXb3Jr
ZXJQYWdlUHJveHkoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCkgeyByZXR1cm4g
bV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gJiYgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24t
PndvcmtlclBhZ2VQcm94eUlEID09IHBhZ2VQcm94eUlEOyB9CiAgICAgdm9pZCByZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYpOwogICAgIHZvaWQgdW5y
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYpOwogICAg
IGJvb2wgaGFzU2VydmljZVdvcmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25z
dDsKQEAgLTY0OCwxNCArNjU2LDE1IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBSZWZQdHI8TG9n
Z2VyPiBtX2xvZ2dlcjsKIAotICAgIHN0cnVjdCBTZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gewot
ICAgICAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQYWdlUHJveHlJRDsK
LSAgICAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgc2VydmljZVdvcmtlclBhZ2VJRDsKKyAg
ICBzdHJ1Y3QgV29ya2VySW5mb3JtYXRpb24geworICAgICAgICBXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHdvcmtlclBhZ2VQcm94eUlEOworICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3
b3JrZXJQYWdlSUQ7CiAgICAgICAgIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5p
dGlhbGl6YXRpb25EYXRhOwogICAgICAgICBQcm9jZXNzVGhyb3R0bGVyOjpBY3Rpdml0eVZhcmlh
bnQgYWN0aXZpdHk7CiAgICAgICAgIFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4gY2xpZW50
UHJvY2Vzc2VzOwogICAgIH07Ci0gICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySW5mb3Jt
YXRpb24+IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8V29y
a2VySW5mb3JtYXRpb24+IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOworICAgIHN0ZDo6b3B0
aW9uYWw8V29ya2VySW5mb3JtYXRpb24+IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb247CiAgICAg
Ym9vbCBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyB7IGZhbHNlIH07CiAK
ICAgICBIYXNoTWFwPFdlYkNvcmU6OlNsZWVwRGlzYWJsZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6U2xlZXBEaXNhYmxlcj4+IG1fc2xlZXBEaXNhYmxlcnM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3NzkxMThi
ZDJmM2UuLmQzYWJiOGYwYTRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC04ODEsNiArODgxLDcgQEAKIAkJNDYxNEYxMzIyNURFRDg3
NTAwNzAwNkU3IC8qIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZBQzUzMjQyNURFRDgxRTAwM0I1
N0VDIC8qIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5oICovOyB9OwogCQk0NjFDQ0NB
NTIzMTQ4NUE3MDBCNjU5QjkgLyogVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzMjM2ODUyMzE0ODMzRjAwQTQ4
RkE3IC8qIFVJUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAqLzsgfTsKIAkJNDYxQ0NDQTYyMzE0ODVB
QTAwQjY1OUI5IC8qIFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjMyMzY4MzIzMTQ4MUVGMDBBNDhGQTcgLyog
V2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAqLzsgfTsKKwkJNDYxRTFCRjIyNzlBMDExNjAwNkFG
NTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYxRTFCRUYyNzlBMDEwRjAw
NkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICovOyB9
OwogCQk0NjNGRDQ4MDFFQjk0NTk2MDBBMjk4MkMgLyogV0tQcm9jZXNzVGVybWluYXRpb25SZWFz
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0ZE
NDdGMUVCOTQ1ODQwMEEyOTgyQyAvKiBXS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2M0ZENDgyMUVC
OTRFQzAwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0ZENDgxMUVCOTRFQUQwMEEyOTgy
QyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCAqLzsgfTsKIAkJNDY1OUYyNUYyNzVGRjZC
MjAwQkJCMzY5IC8qIENhcHRpdmVQb3J0YWxNb2RlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NTlGMjVFMjc1RkY2QjIwMEJCQjM2OSAv
KiBDYXB0aXZlUG9ydGFsTW9kZU9ic2VydmVyLmggKi87IH07CkBAIC04OTAsNiArODkxLDggQEAK
IAkJNDY3MUZGMUYyMzIxN0VGRjAwMUI2NEM3IC8qIFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjcxRkYxRDIz
MjE3RUZGMDAxQjY0QzcgLyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCAqLzsgfTsKIAkJNDY3
RTQzRTgyMjQzRkY3RDAwQjEzOTI0IC8qIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdFNDNFNzIy
NDNGRjZEMDBCMTM5MjQgLyogV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaCAqLzsgfTsK
IAkJNDY4MDlBN0MyM0Q5MjI1RTAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgwOUE3QTIzRDkyMjUzMDBD
Mjk3RDAgLyogV2ViQ29va2llQ2FjaGUuaCAqLzsgfTsKKwkJNDY5NDNERDAyNzYzRjgzQTAwNEI2
MTBFIC8qIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0M0RDRjI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hh
cmVkV29ya2VyUHJvdmlkZXIuaCAqLzsgfTsKKwkJNDY5NDNERDEyNzYzRjgzRjAwNEI2MTBFIC8q
IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTQzRENEMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2QTJCNjA5MUU1Njc2QTYw
MEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QTJCNjA3MUU1Njc1QTIw
MEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaCAqLzsgfTsK
IAkJNDZCMDUyNDcyMjY2OEQ4NTAwMjY1Qjk3IC8qIFdlYkRldmljZU9yaWVudGF0aW9uQW5kTW90
aW9uQWNjZXNzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDZCMDUyNDQyMjY2OEQyMzAwMjY1Qjk3IC8qIFdlYkRldmljZU9yaWVudGF0
aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlci5oICovOyB9OwogCQk0NkJFQjZENzIyRkI5QkQ3
MDAyNjk4NjcgLyogU3RvcmFnZUFyZWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2QkVCNkQ1MjJGQjlCRDYwMDI2OTg2NyAvKiBTdG9yYWdlQXJlYS5o
ICovOyB9OwpAQCAtODk3LDEwICs5MDAsMTMgQEAKIAkJNDZCRUI2REYyMkZCQjE2QjAwMjY5ODY3
IC8qIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NkJFQjZERDIyRkJCMTZCMDAyNjk4NjcgLyogU2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2UuaCAqLzsgfTsKIAkJNDZCRUI2RTMyMkZCQjIxQTAwMjY5ODY3IC8qIFRy
YW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRUI2RTEyMkZCQjIxQTAwMjY5ODY3IC8qIFRyYW5zaWVu
dExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oICovOyB9OwogCQk0NkMzOTIyOTIzMTZFQzREMDA4RUVE
OUIgLyogV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDMzkyMjgyMzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIuaCAqLzsgfTsKKwkJNDZDOTE2QUEyNzk5RDBBMjAwMUE0RTdDIC8qIFdl
YlNoYXJlZFdvcmtlclNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDZDOTE2QTkyNzk5RDA5RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNl
cnZlci5oICovOyB9OwogCQk0NkNFM0IxMTIzRDhDODQ5MDAxNkE5NkEgLyogV2ViQmFja0Zvcndh
cmRMaXN0Q291bnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NkNFM0IxMDIzRDhDODNEMDAxNkE5NkEgLyogV2ViQmFja0ZvcndhcmRMaXN0Q291bnRz
LmggKi87IH07CisJCTQ2RDQ4RkNFMjc5OUQ3RTEwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NkQ0OEZDRDI3OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oICovOyB9OwogCQk0NkRGMDYzQzFGMzkwNUY4
MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIg
LyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggKi87IH07CiAJCTQ2RUUyODQ5MjY5RTA0
QUMwMERENDhBQiAvKiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUUyODQ4MjY5RTA0OUIwMERENDhB
QiAvKiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCAqLzsgfTsKIAkJNDZFRTI4NEQyNjlF
MDUyNTAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUUyODRDMjY5RTA1MTcw
MERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggKi87IH07CisJCTQ2
RUUzRThCMjc2M0ZEMkYwMDYwQzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzODY2
NzI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oICov
OyB9OwogCQk0NkYzOEU4QzI0MTZFNjczMDA1OTM3NUEgLyogUnVubmluZ0JvYXJkU2VydmljZXNT
UEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjM4
RThCMjQxNkU2NkQwMDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oICovOyB9Owog
CQk0NkY5QjI2MzIzNTI2RUYzMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkY5QjI2MjIz
NTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggKi87IH07CiAJCTQ5
MzEwMkJEMjY4M0YzRDAwMDJCQjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTMxMDJCQzI2ODNGM0E1MDAyQkI4
ODUgLyogQXBwUHJpdmFjeVJlcG9ydC5oICovOyB9OwpAQCAtMTI3NCw2ICsxMjgwLDcgQEAKIAkJ
NkJFOTY5QzExRTU0RDQ1MjAwOEI3NDgzIC8qIGNvcmVQcmVkaWN0aW9uX21vZGVsIGluIFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkU5NjlDMDFFNTRENDUy
MDA4Qjc0ODMgLyogY29yZVByZWRpY3Rpb25fbW9kZWwgKi87IH07CiAJCTZCRTk2OUNCMUU1NEQ0
Q0YwMDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkU5NjlDOTFFNTRE
NENGMDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5oICov
OyB9OwogCQk2QkU5NjlDRDFFNTRFMDU0MDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0NsYXNzaWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZCRTk2OUNDMUU1NEUwNTQwMDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xh
c3NpZmllci5oICovOyB9OworCQk2Q0FFQ0I2NjI3NDY1QUU0MDBBQjc4RDAgLyogVW5pZmllZFNv
dXJjZTExNi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2Q0FFQ0I1RTI3NDY1QUUzMDBBQjc4RDAgLyogVW5pZmllZFNvdXJjZTExNi5jcHAgKi87IH07
CiAJCTZFRTg0OUM4MTM2OEQ5MzkwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFRTg0OUM2MTM2
OEQ5MkQwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MTE3MjVBOTIyOEQ1NjQzMDAwMTg1
MTQgLyogV2Vic2l0ZUxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3kuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMTcyNUE4MjI4RDU2M0Ew
MDAxODUxNCAvKiBXZWJzaXRlTGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaFBvbGljeS5oICov
OyB9OwogCQk3MTM0QTNEQTI2MDNCOTI1MDA2MjRCRDMgLyogV0tNb2RlbEludGVyYWN0aW9uR2Vz
dHVyZVJlY29nbml6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcxMzRBM0Q5MjYwM0I4MEUwMDYyNEJEMyAvKiBXS01vZGVsSW50ZXJhY3Rpb25HZXN0
dXJlUmVjb2duaXplci5oICovOyB9OwpAQCAtMTM1MSw2ICsxMzU4LDcgQEAKIAkJN0M5RDE1Mzcx
ODQ1ODREQTAwOUQzOTE4IC8qIFdLQnJvd3NpbmdDb250ZXh0R3JvdXBJbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M5RDE1MzYxODQ1ODRE
QTAwOUQzOTE4IC8qIFdLQnJvd3NpbmdDb250ZXh0R3JvdXBJbnRlcm5hbC5oICovOyB9OwogCQk3
Q0EyNTRFQjE4Mjk5M0NFMDBGQzhBNDEgLyogV0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NBMjU0
RUExODI5OTNDRTAwRkM4QTQxIC8qIFdLQnJvd3NpbmdDb250ZXh0UG9saWN5RGVsZWdhdGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Q0EzNzkz
RTFBQzM3OEIzMDA3OURDMzcgLyogX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVByaXZhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQTM3OTNE
MUFDMzc4QjMwMDc5REMzNyAvKiBfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUHJpdmF0ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdDQUVD
QjY2Mjc0NjVBRTQwMEFCNzhEMCAvKiBVbmlmaWVkU291cmNlMTE3LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQUVDQjVFMjc0NjVBRTMwMEFCNzhE
MCAvKiBVbmlmaWVkU291cmNlMTE3LmNwcCAqLzsgfTsKIAkJN0NCMTAwRjExRkEzODU4QTAwMTcy
OUVFIC8qIFdlYlByZWZlcmVuY2VzS2V5cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0IxMDBFRTFGQTJENzRBMDAxNzI5RUUgLyogV2ViUHJlZmVy
ZW5jZXNLZXlzLmNwcCAqLzsgfTsKIAkJN0NCMTAwRjIxRkEzODU4RTAwMTcyOUVFIC8qIFdlYlBy
ZWZlcmVuY2VzRGVmaW5pdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDREU3M0EzMUY5REFCNjUwMDM5MDMxMiAvKiBXZWJQcmVmZXJlbmNlc0Rl
ZmluaXRpb25zLmggKi87IH07CiAJCTdDQjEwMEYzMUZBMzg1OEUwMDE3MjlFRSAvKiBXZWJQcmVm
ZXJlbmNlc0tleXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDQjEwMEVGMUZBMkQ3NEIwMDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNlc0tleXMuaCAqLzsg
fTsKQEAgLTQyMTEsNiArNDIxOSw5IEBACiAJCTQ2MDg4OUZGMjYxRkE4QTkwMEUyNTAwRCAvKiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDYwRjQ4OEQxRjk5NkY2QzAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJl
Y2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCTQ2MEY0ODhFMUY5OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2
ZWRTb3VyY2VzL1dlYktpdC9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmg7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTQ2MUUxQkVDMjc5QTAxMEUw
MDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYx
RTFCRUYyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDYxRTFCRjAyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2MjEwN0Q3MUYzOERCRDMwMERENzgxMCAvKiBQaW5nTG9hZC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQaW5nTG9hZC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MzIzNjgzMjMxNDgxRUYwMEE0OEZBNyAvKiBX
ZWJSZW1vdGVPYmplY3RSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZW1vdGVPYmplY3RS
ZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjMyMzY4NDIzMTQ4MjVD
MDBBNDhGQTcgLyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNDIzOCw4ICs0MjQ5LDE1IEBACiAJCTQ2ODA5QTdCMjNEOTIyNTMwMEMyOTdEMCAvKiBX
ZWJDb29raWVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJDb29raWVDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM1NjlB
MjFFODFDQzcwMDZFMjdBMyAvKiBQcm92aXNpb25hbFBhZ2VQcm94eS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQcm92aXNpb25hbFBhZ2VQcm94eS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NjgzNTY5QjIxRTgxQ0M3MDA2RTI3QTMgLyogUHJvdmlzaW9uYWxQ
YWdlUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjgzODY2
NzI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2ODM4NjY4Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0Njg5QjkwRjI3NTZEMTQzMDAwN0M2NTEgLyogUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0Njg5QjkxMDI3NTZEMTQzMDAwN0M2NTEgLyogUmVtb3RlV2ViTG9ja1JlZ2lz
dHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzRENCMjc2M0Y4MzQwMDRCNjEwRSAvKiBX
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ2OTQzRENDMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJQcm92
aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzRENEMjc2M0Y4MzUwMDRCNjEwRSAv
KiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDY5NDNEQ0UyNzYzRjgzNTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzRENGMjc2M0Y4MzUw
MDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJT
aGFyZWRXb3JrZXJQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlE
RTgwMjI3M0VDQzVEMDA5MzAyNzYgLyogUHJvY2Vzc0xhdW5jaGVyQ29jb2EubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcm9jZXNzTGF1bmNoZXJDb2NvYS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZBMkI2MDYxRTU2NzVBMjAwQzNERURBIC8q
IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGlt
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkEyQjYwNzFFNTY3NUEyMDBD
M0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NU
aW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI1NSw3ICs0MjczLDExIEBA
CiAJCTQ2QkVCNkUxMjJGQkIyMUEwMDI2OTg2NyAvKiBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QkVCNkUyMjJGQkIyMUEwMDI2OTg2NyAv
KiBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDZDMzkyMjgyMzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGFnZVByb3h5SWRlbnRpZmllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0NkM5MTZBODI3OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hhcmVk
V29ya2VyU2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2QzkxNkE5Mjc5OUQwOUQwMDFB
NEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVk
V29ya2VyU2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2Q0UzQjEwMjNE
OEM4M0QwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2RDQ4RkNDMjc5OUQ3REQwMDdEMjAxNCAvKiBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0NkQ0OEZDRDI3OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2REYwNjM5MUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdo
dENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQ09SU1ByZWZsaWdodENo
ZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZFOTc2MEEyNzU3RjZDOTAw
QUNERDM3IC8qIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW47
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MjY1LDYgKzQyODcsNyBAQAogCQk0NkVF
Mjg0QTI2OUUwNTE3MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5t
ZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5l
bFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkVF
Mjg0QjI2OUUwNTE3MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrQnJvYWRjYXN0
Q2hhbm5lbFJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZFRTI4
NEMyNjlFMDUxNzAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxS
ZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkVFM0U4QTI3NjNGRDJB
MDA2MEM3MEYgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkYzOEU4QjI0MTZFNjZEMDA1OTM3NUEgLyogUnVubmlu
Z0JvYXJkU2VydmljZXNTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVu
bmluZ0JvYXJkU2VydmljZXNTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZG
OUIyNjIyMzUyNkVEMDAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDkzMTAyQkMyNjgzRjNBNTAwMkJCODg1IC8q
IEFwcFByaXZhY3lSZXBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBwUHJpdmFjeVJlcG9ydC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDk4Myw2ICs1MDA2LDcgQEAKIAkJNkJFOTY5
QzgxRTU0RDRDRjAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29j
b2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTZCRTk2OUM5MUU1NEQ0Q0YwMDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xh
c3NpZmllckNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNl
TG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNkJFOTY5Q0MxRTU0RTA1NDAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3ND
bGFzc2lmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZD
QUVDQjVFMjc0NjVBRTMwMEFCNzhEMCAvKiBVbmlmaWVkU291cmNlMTE2LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UxMTYuY3BwOyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzL1dl
YktpdC91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTExNi5jcHAiOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk2RDhBOTFBNTExRjBFRkQxMDBERDAxRkUgLyogY29t
LmFwcGxlLldlYlByb2Nlc3Muc2IuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gY29tLmFwcGxl
LldlYlByb2Nlc3Muc2IuaW47IHBhdGggPSBXZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNz
LnNiLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RUU4NDlDNjEzNjhEOTJEMDAz
OEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2YXRlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFdLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oOyBwYXRoID0gbWFjL1dLSW5zcGVjdG9y
UHJpdmF0ZU1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTE3MjVBODIyOEQ1
NjNBMDAwMTg1MTQgLyogV2Vic2l0ZUxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3ku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZUxlZ2FjeU92ZXJmbG93
U2Nyb2xsaW5nVG91Y2hQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUx
NDcsNiArNTE3MSw3IEBACiAJCTdDOUQxNTM2MTg0NTg0REEwMDlEMzkxOCAvKiBXS0Jyb3dzaW5n
Q29udGV4dEdyb3VwSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0tCcm93c2luZ0NvbnRleHRHcm91cEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdDQTI1NEVBMTgyOTkzQ0UwMEZDOEE0MSAvKiBXS0Jyb3dzaW5nQ29udGV4dFBvbGlj
eURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnJvd3NpbmdD
b250ZXh0UG9saWN5RGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NB
Mzc5M0QxQUMzNzhCMzAwNzlEQzM3IC8qIF9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVQcml2
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1VzZXJDb250ZW50RXh0
ZW5zaW9uU3RvcmVQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDQUVD
QjVFMjc0NjVBRTMwMEFCNzhEMCAvKiBVbmlmaWVkU291cmNlMTE3LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFVuaWZpZWRTb3VyY2UxMTcuY3BwOyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzL1dlYktp
dC91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTExNy5jcHAiOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OwogCQk3Q0IxMDBFRTFGQTJENzRBMDAxNzI5RUUgLyogV2ViUHJl
ZmVyZW5jZXNLZXlzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlByZWZlcmVuY2VzS2V5cy5j
cHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViUHJlZmVyZW5jZXNLZXlzLmNwcDsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJN0NCMTAwRUYxRkEyRDc0QjAw
MTcyOUVFIC8qIFdlYlByZWZlcmVuY2VzS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJQcmVmZXJl
bmNlc0tleXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJQcmVmZXJlbmNlc0tl
eXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJN0NCMTAwRjAxRkEy
RDc4NDAwMTcyOUVFIC8qIFdlYlByZWZlcmVuY2VzU3RvcmVEZWZhdWx0c01hcC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBXZWJQcmVmZXJlbmNlc1N0b3JlRGVmYXVsdHNNYXAuY3BwOyBwYXRoID0g
RGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlByZWZlcmVuY2VzU3RvcmVEZWZhdWx0c01hcC5jcHA7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC05MjYyLDYgKzkyODcsMjAg
QEAKIAkJCXBhdGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJ
CTQ2ODM4NjY1Mjc2M0ZBMUIwMENGOTE4MiAvKiBTaGFyZWRXb3JrZXIgKi8gPSB7CisJCQlpc2Eg
PSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTQ2RDQ4RkNDMjc5OUQ3REQwMDdEMjAx
NCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCAqLywKKwkJ
CQk0NkQ0OEZDRDI3OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oICovLAorCQkJCTQ2QzkxNkE4Mjc5OUQwOUQwMDFBNEU3QyAvKiBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXIuY3BwICovLAorCQkJCTQ2QzkxNkE5Mjc5OUQwOUQwMDFBNEU3QyAv
KiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCAqLywKKwkJCQk0NkVFM0U4QTI3NjNGRDJBMDA2MEM3
MEYgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKKwkJ
CQk0NjgzODY2NzI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbi5oICovLAorCQkJCTQ2ODM4NjY4Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLywKKwkJCSk7CisJCQlwYXRoID0gU2hhcmVkV29ya2Vy
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNDY5REU4MDEyNzNFQ0M1RDAw
OTMwMjc2IC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKQEAgLTkzMTMsNiArOTM1Miw3IEBACiAJCTUxMENDN0RBMTYxMzhFMDEwMEQwM0VEMyAvKiBO
ZXR3b3JrUHJvY2VzcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJNDY4Mzg2NjUyNzYzRkExQjAwQ0Y5MTgyIC8qIFNoYXJlZFdvcmtlciAqLywKIAkJCQlF
NDg5RDI4MjFBMEEyQkU4MDA3OEMwNkEgLyogY2FjaGUgKi8sCiAJCQkJN0E4NDNBMUQyMUU0MUZE
OTAwREVGNjYzIC8qIENsYXNzaWZpZXIgKi8sCiAJCQkJN0VDNEYwRjgxOEU0QTkyMjAwODA1NkFG
IC8qIGNvY29hICovLApAQCAtOTQyMSw2ICs5NDYxLDE0IEBACiAJCTUxMThFOTk4MUYyOTUyNTkw
MDNFRjlGNSAvKiBTdG9yYWdlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQk0NjFFMUJFQzI3OUEwMTBFMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk0NjFFMUJFRjI3OUEwMTBGMDA2QUY1
M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggKi8sCisJCQkJ
NDYxRTFCRjAyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKKwkJCQk0Njk0M0RDRTI3NjNGODM1MDA0QjYxMEUg
LyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgKi8sCisJCQkJNDY5NDNEQ0Qy
NzYzRjgzNTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAqLywK
KwkJCQk0Njk0M0RDQjI3NjNGODM0MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKKwkJCQk0Njk0M0RDQzI3NjNGODM1MDA0QjYxMEUgLyog
V2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwICovLAorCQkJCTQ2OTQzRENGMjc2M0Y4MzUwMDRC
NjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oICovLAogCQkJCTQxMzFGM0UwMUY5ODcx
MkMwMDU5OTk1QSAvKiBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCAqLywKIAkJ
CQk0MTlBQ0Y5QjFGOTgxRDI2MDA5RjFBODMgLyogV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudC5oICovLAogCQkJCTUxQkVCNjI5MUYzQTVBQ0QwMDUwMjlCOSAvKiBXZWJTZXJ2aWNlV29y
a2VyUHJvdmlkZXIuY3BwICovLApAQCAtMTI3NDAsNiArMTI3ODgsNyBAQAogCQkJCTQ5RkJGMDAw
MjM5QjFGNzUwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDlGQkYwMDkyMzlGMDhFMDAwQkQwMzJGIC8qIF9XS1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTM3NjMxMUZEMUEzRkI1RjcwMDVBMkU1MSAvKiBfV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlw
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDYxRTFCRjIyNzlBMDExNjAwNkFGNTNCIC8qIFdlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Mzc2MzExRkUxQTNGQjYwMDAwNUEyRTUxIC8qIF9XS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBl
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDAyRDQ0MTk2QjMzODkwMEI5QUQ0NCAv
KiBfV0tTZXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDAyRDQzMTk2QjMzNzAw
MEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
MjkwMiw2ICsxMjk1MSw3IEBACiAJCQkJRTE3MDg3NkMxNkQ2Q0E2OTAwRjk5MjI2IC8qIEJsb2JS
ZWdpc3RyeVByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0RjYwMTQzMjE1NUM1QUEyMDAxRkJE
RTAgLyogQmxvY2tpbmdSZXNwb25zZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NzA1MTEx
QkU0MTBFNjAwODc0QUYxIC8qIEJsb2NrU1BJLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkM5MTZB
QTI3OTlEMEEyMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzMwNjVGQTEyNTkzNDRFMDBFNzEyNzggLyogQ2FjaGVNb2RlbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDE4OTdFRDgxRjQxNUQ4QTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2lu
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGQUJEMkExRjRERTAwMTAwNkE2Qzk3IC8qIENhY2hl
U3RvcmFnZUVuZ2luZUNhY2hlLmggaW4gSGVhZGVycyAqLywKQEAgLTEzMzY1LDYgKzEzNDE1LDcg
QEAKIAkJCQkxQUMxMzM2ODE4NTY1QjU3MDBGM0VDMDUgLyogVXNlckRhdGEuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNENDkxQjA4MUU3MEQwNUYwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q0OTFCMEUxRTczMkU0RDAwMDA5MDY2IC8qIFVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2RUUz
RThCMjc2M0ZEMkYwMDYwQzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDRDQ5MUIxMzFFNzM0ODIxMDAwMDkwNjYgLyogVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q0OTFCMTgxRTczNTI1
NTAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDcyOTdGOUYxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1p
c3Npb25DaGVja1Byb3h5LmggaW4gSGVhZGVycyAqLywKQEAgLTEzNDUxLDYgKzEzNTAyLDcgQEAK
IAkJCQkzMzA5MzQ0QTEzMTVCOTIyMDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlclByb3h5TWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMUREN0IyMTE0REMzOTYwMDVBREFGMyAvKiBX
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkY1ODlCMTJBODgz
ODgwMDYyOTUzMCAvKiBXZWJDcmVkZW50aWFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk0Njk0M0RE
MDI3NjNGODNBMDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBQTgzRjZEMUE1QjYzRkYwMDAyNkVDNiAvKiBXZWJEYXRhYmFzZVByb3ZpZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNTJDRjU1MjIwQTM1QzNBMDBEQURBMjcgLyogV2ViRGF0
YUxpc3RTdWdnZXN0aW9uUGlja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNTY4QjkxRjIwQTNB
QjJGMDBFM0M4NTYgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duLmggaW4gSGVhZGVy
cyAqLywKQEAgLTEzNDg1LDYgKzEzNTM3LDcgQEAKIAkJCQlCQzAzMkQ3RjEwRjQzNzhEMDA1OEMx
NUEgLyogV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTFGMkNC
MTIxQjY3QUQwMEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQ0I5RjZBMDExMjNBODRCMDBBMTM3RTAgLyogV2ViRnJhbWVQb2xpY3lMaXN0
ZW5lclByb3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQk0Njk0M0REMTI3NjNGODNGMDA0QjYxMEUg
LyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkM5QjM4QTExMEY1MzhCRTAwNDQzQTE1IC8qIFdlYkZyYW1lUHJveHkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxNUJFMUFCMUQ1NTVBQTAwMEREN0M2OCAvKiBXZWJHYW1lcGFkLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTVCRTE3OTFENTNGRThGMDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVy
LmggaW4gSGVhZGVycyAqLywKQEAgLTEzNjExLDYgKzEzNjY0LDcgQEAKIAkJCQkxQTQ4MzJENzFB
OUNERjk2MDA4QjRERkUgLyogV2Vic2l0ZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDgz
MkQxMUE5QkRDMkYwMDhCNERGRSAvKiBXZWJzaXRlRGF0YVJlY29yZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUE1M0MyQUExQTMyNTczMDAwNEU4QzcwIC8qIFdlYnNpdGVEYXRhU3RvcmUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTQ2RDQ4RkNFMjc5OUQ3RTEwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTFGN0Q0
MTFFQjFCQ0Y1MDBFNDdCODMgLyogV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTcxMTcyNUE5MjI4RDU2NDMwMDAxODUxNCAvKiBXZWJzaXRlTGVnYWN5T3Zl
cmZsb3dTY3JvbGxpbmdUb3VjaFBvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjRDQjA5RTUy
MjVENUEwOTAwODkxNDg3IC8qIFdlYnNpdGVNZWRpYVNvdXJjZVBvbGljeS5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA4ZDNiNTdiZDE4ZGMuLmJiMzU0N2Y0
NmFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC01Nyw2ICs1NywxMCBAQAogI2lu
Y2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNlcnZpY2VX
b3JrZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRD
aGFubmVsTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRTdHJlYW0uaCIKQEAgLTE3Myw2
ICsxNzcsMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVAKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICNlbmRpZgorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNz
YWdlczo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKSB7CisgICAgICAgIHNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKS5kaWRSZWNlaXZlTWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAg
ICAgIEFTU0VSVChTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVj
dGlvbigpKTsKKyAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiA9IFNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCisgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24mPigqY29udGV4dE1hbmFnZXJDb25uZWN0aW9uKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogI2lmIEVOQUJMRShBUFBM
RV9QQVlfUkVNT1RFX1VJKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkp
IHsKQEAgLTMwNyw2ICszMjEsMTMgQEAgV2ViU1dDbGllbnRDb25uZWN0aW9uJiBOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb246OnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCkKIH0KICNlbmRpZgogCitX
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uJiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246
OnNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKQoreworICAgIGlmICghbV9zaGFyZWRXb3JrZXJDb25u
ZWN0aW9uKQorICAgICAgICBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24gPSBXZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uOjpjcmVhdGUoKTsKKyAgICByZXR1cm4gKm1fc2hhcmVkV29ya2Vy
Q29ubmVjdGlvbjsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246Om1lc3NhZ2Vz
QXZhaWxhYmxlRm9yUG9ydChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIG1l
c3NhZ2VQb3J0SWRlbnRpZmllcikKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5tZXNz
YWdlc0F2YWlsYWJsZUZvclBvcnQobWVzc2FnZVBvcnRJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmgKaW5kZXggZDYyZGZlNGRmNWFhLi41ZjA1MDQwOWFjNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5oCkBAIC00OCw2ICs0OCw3IEBAIGVudW0gY2xhc3MgSFRUUENvb2tpZUFjY2VwdFBv
bGljeSA6IHVpbnQ4X3Q7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViSURCQ29ubmVj
dGlvblRvU2VydmVyOworY2xhc3MgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjsKIGNs
YXNzIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjsKIAogY2xhc3MgTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uPiwgSVBDOjpD
b25uZWN0aW9uOjpDbGllbnQgewpAQCAtNzAsNiArNzEsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgIFdlYlNXQ2xpZW50Q29ubmVjdGlvbiYgc2VydmljZVdvcmtl
ckNvbm5lY3Rpb24oKTsKICNlbmRpZgorICAgIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b24mIHNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKIAogI2lmIEhBVkUoQVVESVRfVE9LRU4pCiAg
ICAgdm9pZCBzZXROZXR3b3JrUHJvY2Vzc0F1ZGl0VG9rZW4oc3RkOjpvcHRpb25hbDxhdWRpdF90
b2tlbl90PiBhdWRpdFRva2VuKSB7IG1fbmV0d29ya1Byb2Nlc3NBdWRpdFRva2VuID0gYXVkaXRU
b2tlbjsgfQpAQCAtMTIzLDYgKzEyNSw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogICAgIFJlZlB0cjxXZWJTV0NsaWVudENvbm5lY3Rpb24+IG1fc3dDb25uZWN0aW9u
OwogI2VuZGlmCisgICAgUmVmUHRyPFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24+IG1f
c2hhcmVkV29ya2VyQ29ubmVjdGlvbjsKICAgICBXZWJDb3JlOjpIVFRQQ29va2llQWNjZXB0UG9s
aWN5IG1fY29va2llQWNjZXB0UG9saWN5OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi43YWFlYTlkYzQwZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uY3BwCkBAIC0wLDAgKzEsMTE3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5o
IgorCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgor
I2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAi
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9FbXB0
eUNsaWVudHMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVj
dGlvbj4mJiBjb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcywgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgUGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJ
RCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBwcmVmZXJlbmNlc1N0
b3JlLCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYgaW5pdGlhbGl6YXRpb25EYXRh
KQorICAgIDogbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXVEZNb3ZlKGNvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKSkKKyAgICAsIG1fcmVnaXN0cmFibGVEb21haW4oV1RGTW92ZShyZWdp
c3RyYWJsZURvbWFpbikpCisgICAgLCBtX3BhZ2VHcm91cElEKHBhZ2VHcm91cElEKQorICAgICwg
bV93ZWJQYWdlUHJveHlJRCh3ZWJQYWdlUHJveHlJRCkKKyAgICAsIG1fcGFnZUlEKHBhZ2VJRCkK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAsIG1fdXNlckFnZW50KHN0YW5kYXJkVXNlckFnZW50
V2l0aEFwcGxpY2F0aW9uTmFtZSh7IH0pKQorI2Vsc2UKKyAgICAsIG1fdXNlckFnZW50KHN0YW5k
YXJkVXNlckFnZW50KCkpCisjZW5kaWYKKyAgICAsIG1fdXNlckNvbnRlbnRDb250cm9sbGVyKFdl
YlVzZXJDb250ZW50Q29udHJvbGxlcjo6Z2V0T3JDcmVhdGUoaW5pdGlhbGl6YXRpb25EYXRhLnVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpKQoreworI2lmIEVOQUJMRShDT05URU5UX0VY
VEVOU0lPTlMpCisgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZENvbnRlbnRSdWxlTGlz
dHMoV1RGTW92ZShpbml0aWFsaXphdGlvbkRhdGEuY29udGVudFJ1bGVMaXN0cykpOworI2VuZGlm
CisKKyAgICB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKHByZWZlcmVuY2VzU3RvcmUpOworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmRpc2FibGVUZXJtaW5hdGlvbigpOworfQorCitXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246On5XZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjplc3RhYmxpc2hDb25uZWN0aW9uKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX2Nvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiB7
IG1fd2ViUGFnZVByb3h5SUQsIG1fcmVnaXN0cmFibGVEb21haW4gfSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIDApOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdv
cmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCkKK3sKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpQb3N0RXhj
ZXB0aW9uVG9Xb3JrZXJPYmplY3QgeyBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBlcnJvck1lc3Nh
Z2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMIH0sIDApOworfQorCit2b2lk
IFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6dXBkYXRlUHJlZmVyZW5j
ZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKK3sKKyAgICBXZWJQYWdl
Ojp1cGRhdGVQcmVmZXJlbmNlc0dlbmVyYXRlZChzdG9yZSk7CisgICAgbV9wcmVmZXJlbmNlc1N0
b3JlID0gc3RvcmU7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpsYXVuY2hTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2lu
LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIs
IFVSTCYmIHVybCwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMsIFdlYkNv
cmU6OlNjcmlwdEJ1ZmZlciYmIHNjcmlwdEJ1ZmZlcikKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFy
ZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmxhdW5j
aFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdv
cmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9
IHBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cyhXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5zZXNzaW9uSUQoKSk7CisKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5kYXRhYmFzZVByb3ZpZGVy
ID0gV2ViRGF0YWJhc2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUobV9wYWdlR3JvdXBJRCk7CisgICAg
cGFnZUNvbmZpZ3VyYXRpb24uc29ja2V0UHJvdmlkZXIgPSBXZWJTb2NrZXRQcm92aWRlcjo6Y3Jl
YXRlKG1fd2ViUGFnZVByb3h5SUQpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLmJyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmJyb2FkY2FzdENoYW5uZWxS
ZWdpc3RyeSgpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLndlYkxvY2tSZWdpc3RyeSA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvY2tSZWdpc3RyeSgpOworICAgIHBhZ2VDb25maWd1cmF0
aW9uLnVzZXJDb250ZW50UHJvdmlkZXIgPSBtX3VzZXJDb250ZW50Q29udHJvbGxlcjsKKyNpZiBF
TkFCTEUoV0VCX1JUQykKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5saWJXZWJSVENQcm92aWRlciA9
IG1ha2VVbmlxdWVSZWY8U2VydmljZVdvcmtlckxpYldlYlJUQ1Byb3ZpZGVyPigpOworI2VuZGlm
CisKKyAgICAvLyBGSVhNRTogU2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50IHNob3VsZCBi
ZSByZW5hbWVkIGlmIHVzZWQgYnkgU2hhcmVkV29ya2Vycy4KKyAgICBwYWdlQ29uZmlndXJhdGlv
bi5sb2FkZXJDbGllbnRGb3JNYWluRnJhbWUgPSBtYWtlVW5pcXVlUmVmPFNlcnZpY2VXb3JrZXJG
cmFtZUxvYWRlckNsaWVudD4obV93ZWJQYWdlUHJveHlJRCwgbV9wYWdlSUQsIEZyYW1lSWRlbnRp
Zmllcjo6Z2VuZXJhdGUoKSwgbV91c2VyQWdlbnQpOworCisgICAgYXV0byBwYWdlID0gbWFrZVVu
aXF1ZVJlZjxQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CisgICAgaWYgKG1fcHJl
ZmVyZW5jZXNTdG9yZSkgeworICAgICAgICBXZWJQYWdlOjp1cGRhdGVTZXR0aW5nc0dlbmVyYXRl
ZCgqbV9wcmVmZXJlbmNlc1N0b3JlLCBwYWdlLT5zZXR0aW5ncygpKTsKKyAgICAgICAgcGFnZS0+
c2V0dGluZ3MoKS5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koc3RhdGljX2Nhc3Q8U3RvcmFnZUJs
b2NraW5nUG9saWN5PihtX3ByZWZlcmVuY2VzU3RvcmUtPmdldFVJbnQzMlZhbHVlRm9yS2V5KFdl
YlByZWZlcmVuY2VzS2V5OjpzdG9yYWdlQmxvY2tpbmdQb2xpY3lLZXkoKSkpKTsKKyAgICB9Cisg
ICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnNldHVwUGFnZUZvclNoYXJlZFdv
cmtlcihwYWdlLmdldCgpLCB1cmwsIG9yaWdpbik7CisgICAgYXV0byBzaGFyZWRXb3JrZXJUaHJl
YWRQcm94eSA9IFdlYkNvcmU6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpjcmVhdGUoV1RGTW92
ZShwYWdlKSwgc2hhcmVkV29ya2VySWRlbnRpZmllciwgb3JpZ2luLCB1cmwsIFdURk1vdmUoc2Ny
aXB0QnVmZmVyKSwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSwgbV91c2VyQWdlbnQsIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFnZVByb3ZpZGVyKCkpOworCisgICAgV2ViQ29yZTo6
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnJlZ2lzdGVyU2hhcmVkV29y
a2VyVGhyZWFkKFdURk1vdmUoc2hhcmVkV29ya2VyVGhyZWFkUHJveHkpKTsKK30KKwordm9pZCBX
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmNsb3NlKCkKK3sKKyAgICBS
RUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OmNsb3NlOiBTaGFyZWQgd29ya2VyIHByb2Nlc3MgaXMgcmVxdWVzdGVkIHRvIHN0
b3AgYWxsIHNoYXJlZCB3b3JrZXJzIik7CisgICAgc2V0QXNDbG9zZWQoKTsKKworICAgIG1fY29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpDbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uIHsgfSwgMCk7
CisgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnN0
b3BBbGxTaGFyZWRXb3JrZXJzKCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5hYmxl
VGVybWluYXRpb24oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uMjg0NmUyNjY4ZWI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIklkZW50aWZpZXJUeXBlcy5o
IgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZp
ZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVnaXN0cmFibGVEb21haW47Citz
dHJ1Y3QgV29ya2VyT3B0aW9uczsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlcjsKK3N0cnVjdCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRp
b25EYXRhOworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24g
ZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNvbm5l
Y3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAgV2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBhZ2VHcm91cElkZW50aWZpZXIsIFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVm
ZXJlbmNlc1N0b3JlJiwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmKTsKKyAgICB+
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKCk7CisKKyAgICB2b2lkIGVz
dGFibGlzaENvbm5lY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKKyAg
ICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSBmaW5hbDsKKworICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmlu
YWw7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDIE1lc3NhZ2VzLgorICAgIHZvaWQgbGF1bmNoU2hh
cmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmLCBXZWJDb3JlOjpTY3Jp
cHRCdWZmZXImJik7CisgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmKTsKKyAgICB2b2lkIHNldFVzZXJBZ2VudChTdHJpbmcmJiB1c2VyQWdl
bnQpIHsgbV91c2VyQWdlbnQgPSBXVEZNb3ZlKHVzZXJBZ2VudCk7IH0KKyAgICB2b2lkIGNsb3Nl
KCk7CisKKyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzOworICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG1fcmVnaXN0cmFibGVEb21haW47
CisgICAgUGFnZUdyb3VwSWRlbnRpZmllciBtX3BhZ2VHcm91cElEOworICAgIFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIgbV93ZWJQYWdlUHJveHlJRDsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBtX3BhZ2VJRDsKKyAgICBTdHJpbmcgbV91c2VyQWdlbnQ7CisgICAgUmVmPFdlYlVzZXJDb250
ZW50Q29udHJvbGxlcj4gbV91c2VyQ29udGVudENvbnRyb2xsZXI7CisgICAgc3RkOjpvcHRpb25h
bDxXZWJQcmVmZXJlbmNlc1N0b3JlPiBtX3ByZWZlcmVuY2VzU3RvcmU7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLjM1OGYyNmY3NzUyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMwIEBACisjIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKKyAgICBMYXVuY2hTaGFyZWRXb3JrZXIoc3Ry
dWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklk
ZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgVVJMIHVybCwgc3RydWN0IFdlYkNvcmU6
Oldvcmtlck9wdGlvbnMgd29ya2VyT3B0aW9ucywgV2ViQ29yZTo6U2NyaXB0QnVmZmVyIHNjcmlw
dEJ1ZmZlcikKKyAgICBQb3N0Q29ubmVjdEV2ZW50KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50
aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdl
UG9ydCBwb3J0LCBTdHJpbmcgc291cmNlT3JpZ2luKQorICAgIFRlcm1pbmF0ZVNoYXJlZFdvcmtl
cihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIp
CisgICAgVXBkYXRlUHJlZmVyZW5jZXNTdG9yZShzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNl
c1N0b3JlIHN0b3JlKQorICAgIFNldFVzZXJBZ2VudChTdHJpbmcgdXNlckFnZW50KQorICAgIENs
b3NlKCkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kN2Q5OTRkZTFmNzcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24u
aCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNz
SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyT3B0aW9ucy5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4u
KSBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0l
IiBQUkl1NjQgIl0gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6IiBmbXQsIHRoaXMs
IFdlYkNvcmU6OlByb2Nlc3M6OmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19f
KQorCitXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJXZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uOiIpOworfQorCitXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uOjp+V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpCit7CisgICAgQ09OTkVD
VElPTl9SRUxFQVNFX0xPRygifldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Iik7Cit9
CisKK0lQQzo6Q29ubmVjdGlvbiogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6bWVz
c2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiAmV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
OworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnJlcXVlc3RTaGFy
ZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFdlYkNvcmU6OlNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwg
Y29uc3QgVVJMJiB1cmwsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBj
b25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25zKQoreworICAgIENPTk5F
Q1RJT05fUkVMRUFTRV9MT0coInJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9T
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uOjpSZXF1ZXN0U2hhcmVkV29ya2VyIHsgb3JpZ2luLCBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLCB1cmwsIFdURk1vdmUocG9ydCksIHdvcmtlck9wdGlvbnMg
fSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6c2hhcmVkV29y
a2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFT
RV9MT0coInNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5OiBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyPSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbjo6U2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkgeyBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyIH0pOworfQorCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNF
X0xPRworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmVjYmY0MmY2
NzYyYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDU0IEBACisKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIGZpbmFs
IDogcHVibGljIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24sIHByaXZhdGUg
SVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbj4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
KTsgfQorICAgIH5XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCk7CisKKyAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFs
OworCitwcml2YXRlOgorICAgIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKTsKKwor
ICAgIC8vIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uCisgICAgdm9pZCBy
ZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFdlYkNvcmU6
OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OlRyYW5z
ZmVycmVkTWVzc2FnZVBvcnQmJiwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYpIGZpbmFs
OworICAgIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllcikgZmluYWw7CisKKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1l
c3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2Fn
ZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uNzVmMzBlMmQ3MTNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpA
QCAtMCwwICsxLDI3IEBACisjIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K21lc3NhZ2VzIC0+IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24geworICAgIEZldGNo
U2NyaXB0SW5DbGllbnQoVVJMIHVybCwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6V29ya2Vy
T3B0aW9ucyB3b3JrZXJPcHRpb25zKSAtPiAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyIHNjcmlwdEJ1
ZmZlcikgQXN5bmMKKyAgICBOb3RpZnlXb3JrZXJPYmplY3RPZkxvYWRGYWlsdXJlKFdlYkNvcmU6
OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
cikKKyAgICBQb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBTdHJpbmcgZXJy
b3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgU3RyaW5nIHNvdXJj
ZVVSTCkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNoYXJlZFdvcmtlclByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLjQ0OTVhNDIyNWU2MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmNwcApAQCAt
MCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmgiCisKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU2hh
cmVkV29ya2VyUHJvdmlkZXImIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXZWJTaGFyZWRXb3JrZXJQcm92aWRlcj4gcHJv
dmlkZXI7CisgICAgcmV0dXJuIHByb3ZpZGVyOworfQorCitXZWJTaGFyZWRXb3JrZXJQcm92aWRl
cjo6V2ViU2hhcmVkV29ya2VyUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CisKK1dlYkNvcmU6OlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24qIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyOjpzaGFyZWRX
b3JrZXJDb25uZWN0aW9uKCkKK3sKKyAgICByZXR1cm4gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLnNoYXJlZFdvcmtlckNvbm5lY3Rpb24o
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg2ZTNkMmZlNzBhMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtl
clByb3ZpZGVyLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJQcm92aWRlci5oPgorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViU2hhcmVkV29ya2VyUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U2hhcmVkV29y
a2VyUHJvdmlkZXIgeworcHVibGljOgorICAgIHN0YXRpYyBXZWJTaGFyZWRXb3JrZXJQcm92aWRl
ciYgc2luZ2xldG9uKCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPFdl
YlNoYXJlZFdvcmtlclByb3ZpZGVyPjsKKyAgICBXZWJTaGFyZWRXb3JrZXJQcm92aWRlcigpOwor
CisgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiogc2hhcmVkV29ya2Vy
Q29ubmVjdGlvbigpIGZpbmFsOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZWUxNDM0YmRhODdiLi40YTk5NGY4
YjZiOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTg0LDYg
Kzg0LDkgQEAKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIgogI2lu
Y2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtl
clByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFtLmgiCiAjaW5jbHVkZSAiV2Vi
c2l0ZURhdGEuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgpAQCAt
MTMzLDYgKzEzNiw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZXR0aW5ncy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAjaW5j
bHVkZSA8cGFsL0xvZ2dpbmcuaD4KICNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgpAQCAtNTY5
LDYgKzU3Myw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogICAgIFNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2V0U2hhcmVkUHJvdmlkZXIoV2Vi
U2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKSk7CiAjZW5kaWYKKyAgICBTaGFyZWRX
b3JrZXJQcm92aWRlcjo6c2V0U2hhcmVkUHJvdmlkZXIoV2ViU2hhcmVkV29ya2VyUHJvdmlkZXI6
OnNpbmdsZXRvbigpKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBKU0M6Oldhc206
OmVuYWJsZUZhc3RNZW1vcnkoKTsKQEAgLTkwMiw3ICs5MDcsNiBAQCB2b2lkIFdlYlByb2Nlc3M6
OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNv
ZGVyJiBkZQogICAgIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICAvLyBGSVhN
RTogUmVtb3ZlPwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNz
YWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSkgewogICAgICAgICBBU1NFUlQoU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVj
dGlvbigpKTsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiA9IFNX
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKQEAgLTkxMSw2ICs5MTUs
MTMgQEAgdm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGUKICAgICB9CiAjZW5kaWYKIAorICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAg
ICAgQVNTRVJUKFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0
aW9uKCkpOworICAgICAgICBpZiAoYXV0byogY29udGV4dE1hbmFnZXJDb25uZWN0aW9uID0gU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAg
ICAgICAgIHN0YXRpY19jYXN0PFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
biY+KCpjb250ZXh0TWFuYWdlckNvbm5lY3Rpb24pLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rp
b24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgTE9HX0VSUk9SKCJV
bmhhbmRsZWQgd2ViIHByb2Nlc3MgbWVzc2FnZSAnJXMnIChkZXN0aW5hdGlvbjogJSIgUFJJdTY0
ICIgcGlkOiAlZCkiLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpLCBkZWNvZGVy
LmRlc3RpbmF0aW9uSUQoKSwgc3RhdGljX2Nhc3Q8aW50PihnZXRDdXJyZW50UHJvY2Vzc0lEKCkp
KTsKIH0KIApAQCAtMTkxNyw4ICsxOTI4LDE4IEBAIExpYldlYlJUQ05ldHdvcmsmIFdlYlByb2Nl
c3M6OmxpYldlYlJUQ05ldHdvcmsoKQogICAgIHJldHVybiAqbV9saWJXZWJSVENOZXR3b3JrOwog
fQogCit2b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQs
IGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJl
Z2lzdHJhYmxlRG9tYWluLCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYgaW5pdGlh
bGl6YXRpb25EYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgLy8gV2UgYXJlIGluIHRoZSBTaGFyZWQgV29ya2VyIGNvbnRleHQgcHJvY2Vz
cyBhbmQgdGhlIGNhbGwgYmVsb3cgZXN0YWJsaXNoZXMgb3VyIGNvbm5lY3Rpb24gdG8gdGhlIE5l
dHdvcmsgUHJvY2VzcworICAgIC8vIGJ5IGNhbGxpbmcgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlciBuZWVkcyB0byB1c2UgdGhlIHNhbWUg
dW5kZXJseWluZyBJUEM6OkNvbm5lY3Rpb24gYXMgdGhlCisgICAgLy8gTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uIGZvciBzeW5jaHJvbml6YXRpb24gcHVycG9zZXMuCisgICAgYXV0byYgaXBjQ29u
bmVjdGlvbiA9IGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsK
KyAgICBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0Q29ubmVjdGlv
bihtYWtlVW5pcXVlPFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4oaXBj
Q29ubmVjdGlvbiwgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHBhZ2VHcm91cElELCB3ZWJQ
YWdlUHJveHlJRCwgcGFnZUlELCBzdG9yZSwgV1RGTW92ZShpbml0aWFsaXphdGlvbkRhdGEpKSk7
CisgICAgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24o
KS0+ZXN0YWJsaXNoQ29ubmVjdGlvbihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVy
IHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdl
SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdp
c3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFNl
cnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXphdGlvbkRhdGEsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUHJvY2Vz
czo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyhQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVu
Y2VzU3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBz
dGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0
aWFsaXphdGlvbkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICAvLyBXZSBhcmUgaW4gdGhlIFNlcnZpY2UgV29ya2VyIGNvbnRleHQgcHJv
Y2VzcyBhbmQgdGhlIGNhbGwgYmVsb3cgZXN0YWJsaXNoZXMgb3VyIGNvbm5lY3Rpb24gdG8gdGhl
IE5ldHdvcmsgUHJvY2VzcwogICAgIC8vIGJ5IGNhbGxpbmcgZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLiBTV0NvbnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0aGUgc2FtZSB1bmRlcmx5
aW5nIElQQzo6Q29ubmVjdGlvbiBhcyB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oCmluZGV4IGI4MDMyZmJlOGUyMC4uNjVmNzczMjAxYTczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTQ2OSw4ICs0NjksOSBAQCBwcml2YXRlOgogICAgIHZvaWQg
Z2FtZXBhZERpc2Nvbm5lY3RlZCh1bnNpZ25lZCBpbmRleCk7CiAjZW5kaWYKIAorICAgIHZvaWQg
ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBh
Z2VHcm91cElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mJiwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB2b2lk
IGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3Jv
dXBJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50
aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgU2VydmljZVdvcmtlckluaXRpYWxp
emF0aW9uRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZXN0
YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdl
R3JvdXBJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgU2VydmljZVdvcmtlckluaXRp
YWxpemF0aW9uRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAK
ICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vic2l0ZURhdGEmJik+JiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA0MmQ3NWEzOTRhOWMu
LmU1NTI5NmI5MDRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KQEAgLTEwMCw4ICsxMDAsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vz
cyBMZWdhY3lSZWNlaXZlciBOb3RSZWZDb3VudGVkIHsKICAgICBHYW1lcGFkRGlzY29ubmVjdGVk
KHVuc2lnbmVkIGluZGV4KQogI2VuZGlmCiAKKyAgICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJZGVudGlmaWVy
IHBhZ2VHcm91cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5
SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJl
ZmVyZW5jZXNTdG9yZSBzdG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBz
dHJ1Y3QgV2ViS2l0OjpTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhIGluaXRpYWxpemF0
aW9uRGF0YSkgLT4gKCkgQXN5bmMKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBF
c3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpQ
YWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50
aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3Ry
dWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gZG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJL
aXQ6OlNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRhKSAt
PiAoKSBBc3luYworICAgIEVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBX
ZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBz
dG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRh
dGEgaW5pdGlhbGl6YXRpb25EYXRhKSAtPiAoKSBBc3luYwogI2VuZGlmCiAKICAgICBTZXRIYXNT
dXNwZW5kZWRQYWdlUHJveHkoYm9vbCBoYXNTdXNwZW5kZWRQYWdlUHJveHkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450554</attachid>
            <date>2022-02-01 11:35:34 -0800</date>
            <delta_ts>2022-02-01 13:18:35 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>235958_SharedWorker_multiProcess_wip.patch</filename>
            <type>text/plain</type>
            <size>310449</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDQwYjI5NmM3MWQzNy4uMzZhMDczMTE3NjBlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTQ2Myw3ICs0NjMsNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYi1sb2Nrcy9zdGVhbC50ZW50YXRpdmUuaHR0cHMuYW55Lmh0bWwgWyBEdW1wSgog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3Ro
ZS1hbmFseXNlcm5vZGUtaW50ZXJmYWNlL3Rlc3QtYW5hbHlzZXItbWluaW11bS5odG1sIFsgRHVt
cEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUt
ZGlzY29ubmVjdC1hdWRpb3BhcmFtLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NhbWUtb3JpZ2luLWNoZWNr
LnN1Yi5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMuaHRt
bCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCiBmYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWJh
Y2stZm9yd2FyZC1jYWNoZS5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGZhc3Qv
aGlzdG9yeS9wYWdlLWNhY2hlLWNyZWF0ZUltYWdlQml0bWFwLmh0bWwgWyBEdW1wSlNDb25zb2xl
TG9nSW5TdGRFcnIgXQogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLWluLWxv
YWRpbmctaWZyYW1lLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQpAQCAtNTE1NCw2
ICs1MTUzLDEwIEBAIHdlYmtpdC5vcmcvYi8xODM5OTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3Nzb20vY3NzLXN0eWxlLWF0dHItZGVjCiAjIFRlc3QgaXMgY3Jhc2hpbmcg
aW4gRGVidWcgYnVpbGRzIHNpbmNlIGltcG9ydC4KIHdlYmtpdC5vcmcvYi8yMzQ5NzcgWyBEZWJ1
ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9mb2N1cy1ldmVu
dC1kb2N1bWVudC1tb3ZlLmh0bWwgWyBTa2lwIF0KIAorIyBUZXN0IGlzIGZsYWt5IGJlY2F1c2Ug
TWVzc2FnZVBvcnQgbWVzc2FnZXMgbWF5IGdldCByZWNlaXZlZCBpbiBhIGRpZmZlcmVudCBvcmRl
ciB3aGVuIHNldmVyYWwgTWVzc2FnZVBvcnRzIGFyZSBpbnZvbHZlZCwKKyMgZHVlIHRvIGhvdyBN
ZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpIGlzIGltcGxlbWVudGVkLgoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0
aW9ucy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIEZhaWx1cmUgUGFzcyBdCisKICMg
UGx1Z2lucwogIyBGSVhNRTogUmVtb3ZlIHRoZXNlIHRlc3RzLgogcGx1Z2lucy8gWyBTa2lwIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0
LW9ubHkuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3
b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dAppbmRleCAwZTk5NzI0Yjg2NGIuLjY4
OThiNTRhYWI2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdv
cmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRl
LXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSw2
ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2Nh
bGhvc3Q6OTQ0NC9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zdXBwb3J0L3Jlc291cmNlLnB5P2Ny
b3NzLW9yaWdpbi1mZXRjaAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8v
d3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQvcmVzb3Vy
Y2UucHk/Y3Jvc3Mtb3JpZ2luLXhocgotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0
dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQv
cmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLWZldGNoCiAKIFBBU1MgU2FtZS1vcmlnaW4gJ2ZldGNo
KCknLgogUEFTUyBTYW1lLW9yaWdpbiBYSFIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lk
ZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWItZXhwZWN0ZWQu
dHh0CmluZGV4IDk3OTEwNjMwMzc4NS4uYmI2NDUyZjQ0YTBhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMu
c3ViLWV4cGVjdGVkLnR4dApAQCAtMiwxMCArMiw5IEBACiBIYXJuZXNzIEVycm9yIChUSU1FT1VU
KSwgbWVzc2FnZSA9IG51bGwKIAogVElNRU9VVCBzaGFyZWR3b3JrZXItc2NyaXB0LXNyYyBUZXN0
IHRpbWVkIG91dAotRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgbm90IGJsb2Nr
ZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgIEEgbmV0d29yayBlcnJvciBvY2N1cnJlZC4KLUZBSUwg
YGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AgUmVmdXNlZCB0byBldmFs
dWF0ZSBhIHN0cmluZyBhcyBKYXZhU2NyaXB0IGJlY2F1c2UgJ3Vuc2FmZS1ldmFsJyBpcyBub3Qg
YW4gYWxsb3dlZCBzb3VyY2Ugb2Ygc2NyaXB0IGluIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1
cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAic2NyaXB0LXNyYyAnc2VsZicgJ25vbmNlLWEnIGJsb2I6
IGZpbGVzeXN0ZW06Ii4KLQotRkFJTCBgc2V0VGltZW91dChbc3RyaW5nXSlgIG5vdCBibG9ja2Vk
IGluIGh0dHA6IHdpdGhvdXQgQ1NQIGFzc2VydF91bnJlYWNoZWQ6IGNhbGxiYWNrIG5vdCBjYWxs
ZWQuIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNj
cmlwdHMoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgTG9hZCBmYWlsZWQKK1BB
U1MgYGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AKK1BBU1MgYHNldFRp
bWVvdXQoW3N0cmluZ10pYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3V0IENTUAogVElNRU9V
VCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgYmxvY2tlZCBpbiBodHRwOiB3aXRoIHNj
cmlwdC1zcmMgJ3NlbGYnIFRlc3QgdGltZWQgb3V0CiBOT1RSVU4gYGV2YWwoKWAgYmxvY2tlZCBp
biBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCiBOT1RSVU4gYHNldFRpbWVvdXQoW3N0cmlu
Z10pYCBibG9ja2VkIGluIGh0dHA6IHdpdGggc2NyaXB0LXNyYyAnc2VsZicKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vy
cy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9i
cm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4
cGVjdGVkLnR4dAppbmRleCBjMTA3MTM2NTUyODAuLjZmODQ0ZGQ1ZDk0OSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJz
L29mZmxpbmUvYXBwY2FjaGUvd29ya2Vycy9hcHBjYWNoZS13b3JrZXIuaHR0cHMtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBz
LWV4cGVjdGVkLnR4dApAQCAtNSw3ICs1LDcgQEAgSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1l
c3NhZ2UgPSBudWxsCiBQQVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIGNhY2hlZCBzY3JpcHQK
IFBBU1MgRGVkaWNhdGVkIHdvcmtlciBvZiB0aGUgZmFsbGJhY2tlZCBzY3JpcHQKIFBBU1MgRGVk
aWNhdGVkIHdvcmtlciBvZiB0aGUgbm90LWluLWNhY2hlIHNjcmlwdAotUEFTUyBTaGFyZWQgd29y
a2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0Ci1QQVNTIFNoYXJlZCB3b3JrZXIgb2YgdGhlIGZhbGxi
YWNrZWQgc2NyaXB0CitGQUlMIFNoYXJlZCB3b3JrZXIgb2YgdGhlIGNhY2hlZCBzY3JpcHQgYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgIkRvbmU6IGNhY2hlZCIgYnV0IGdvdCAiRXJyb3I6IEltcG9y
dGluZyBhIG5vbi1jYWNoZWQgc2NyaXB0IG11c3QgZmFpbC4iCitGQUlMIFNoYXJlZCB3b3JrZXIg
b2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJEb25lOiBm
YWxsYmFja2VkIiBidXQgZ290ICJFcnJvcjogSW1wb3J0aW5nIGEgbm9uLWNhY2hlZCBzY3JpcHQg
bXVzdCBmYWlsLiIKIFRJTUVPVVQgU2hhcmVkIHdvcmtlciBvZiB0aGUgbm90LWluLWNhY2hlIHNj
cmlwdCBUZXN0IHRpbWVkIG91dAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9h
bm9ueW1vdXMtaWZyYW1lL3NoYXJlZHdvcmtlci1wYXJ0aXRpb25pbmcudGVudGF0aXZlLmh0dHBz
LndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9hbm9ueW1vdXMtaWZy
YW1lL3NoYXJlZHdvcmtlci1wYXJ0aXRpb25pbmcudGVudGF0aXZlLmh0dHBzLndpbmRvdy1leHBl
Y3RlZC50eHQKaW5kZXggNGVkODc0NzQ3NmM3Li5mMWViMGIyMTdmMzkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmln
aW4tZW1iZWRkZXItcG9saWN5L2Fub255bW91cy1pZnJhbWUvc2hhcmVkd29ya2VyLXBhcnRpdGlv
bmluZy50ZW50YXRpdmUuaHR0cHMud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVk
ZGVyLXBvbGljeS9hbm9ueW1vdXMtaWZyYW1lL3NoYXJlZHdvcmtlci1wYXJ0aXRpb25pbmcudGVu
dGF0aXZlLmh0dHBzLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwg
QW5vbnltb3VzIGlmcmFtZXMgZ2V0IHBhcnRpdGlvbmVkIHNoYXJlZCB3b3JrZXJzLiBhc3NlcnRf
dHJ1ZTogVGhlICJub3JtYWwiIGlmcmFtZSdzIHNoYXJlZHdvcmtlciBzaG91bGQgcmV0dXJuIHsi
bm9ybWFsIjogdHJ1ZSwgIm5vcm1hbF9jb250cm9sIjogdHJ1ZX0sIGJ1dCBpbnN0ZWFkIHJldHVy
bmVkIHsibm9ybWFsIjp0cnVlfSBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQorRkFJTCBBbm9ueW1v
dXMgaWZyYW1lcyBnZXQgcGFydGl0aW9uZWQgc2hhcmVkIHdvcmtlcnMuIGFzc2VydF90cnVlOiBU
aGUgIm5vcm1hbCIgaWZyYW1lJ3Mgc2hhcmVkd29ya2VyIHNob3VsZCByZXR1cm4geyJub3JtYWwi
OiB0cnVlLCAibm9ybWFsX2NvbnRyb2wiOiB0cnVlfSwgYnV0IGluc3RlYWQgcmV0dXJuZWQgeyJh
bm9ueW1vdXMiOnRydWUsIm5vcm1hbF9jb250cm9sIjp0cnVlLCJub3JtYWwiOnRydWUsImFub255
bW91c19jb250cm9sIjp0cnVlfSBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mt
b3JpZ2luLWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5o
dHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNv
bGF0ZWQtcGVybWlzc2lvbi5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggNjM1NWI2OGRlNzBiLi5j
OGJmNzVlN2VhODUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L2Nyb3NzLW9yaWdp
bi1pc29sYXRlZC1wZXJtaXNzaW9uLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVk
ZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5odHRwcy1leHBlY3Rl
ZC50eHQKQEAgLTIwLDcgKzIwLDcgQEAgUEFTUyBkZWRpY2F0ZWQgd29ya2VyOiBzY2hlbWUgPSBi
bG9iLCB2YWx1ZSA9ICoKIFBBU1MgZGVkaWNhdGVkIHdvcmtlcjogc2NoZW1lID0gYmxvYiwgdmFs
dWUgPSBzZWxmCiBGQUlMIGRlZGljYXRlZCB3b3JrZXI6IHNjaGVtZSA9IGJsb2IsIHZhbHVlID0g
KFwpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIGZhbHNlIGJ1dCBnb3QgdHJ1ZQogUEFTUyBzaGFy
ZWQgd29ya2VyOiB3aXRoQ29vcENvZXAgPSBmYWxzZQotUEFTUyBzaGFyZWQgd29ya2VyOiB3aXRo
Q29vcENvZXAgPSB0cnVlCitGQUlMIHNoYXJlZCB3b3JrZXI6IHdpdGhDb29wQ29lcCA9IHRydWUg
YXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCiBQQVNTIHNlcnZpY2Ug
d29ya2VyOiB3aXRoQ29vcENvZXAgPSBmYWxzZQogRkFJTCBzZXJ2aWNlIHdvcmtlcjogd2l0aENv
b3BDb2VwID0gdHJ1ZSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCB0cnVlIGJ1dCBnb3QgZmFsc2UK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVyaXRhbmNlLnN1
Yi5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS93b3JrZXItaW5oZXJp
dGFuY2Uuc3ViLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCA3NWIxZDMzZTUyNjAuLmIyYmYyZTNi
ZmYzZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVyaXRhbmNl
LnN1Yi5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2Vy
LWluaGVyaXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw2IEBACiBCbG9j
a2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29t
bW9uL2JsYW5rLmh0bWwKIEJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3
dy5sb2NhbGhvc3Q6OTQ0NC9jb21tb24vYmxhbmsuaHRtbAogQmxvY2tlZCBhY2Nlc3MgdG8gZXh0
ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbW1vbi9ibGFuay5odG1sCi1C
bG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQv
Y29tbW9uL2JsYW5rLmh0bWwKIAogUEFTUyBUZXN0IHRoYXQgbG9jYWwgc2NoZW1lIHdvcmtlcnMg
aW5oZXJpdCBDT0VQOiByZXF1aXJlLWNvcnAgZnJvbSB0aGUgY3JlYXRpbmcgZG9jdW1lbnQKIFBB
U1MgYmxvYiBVUkwgZGVkaWNhdGVkIHdvcmtlcjogU2FtZSBvcmlnaW4gc2hvdWxkIGJlIGFsbG93
ZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyX2RhdGFVcmwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9k
YXRhVXJsLWV4cGVjdGVkLnR4dAppbmRleCA5OTVhMDYwMTliODQuLjliNTgyMGFhZThjYiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyX2RhdGFV
cmwtZXhwZWN0ZWQudHh0CkBAIC0xLDEzICsxLDUgQEAKLUNPTlNPTEUgTUVTU0FHRTogRXJyb3I6
IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDIgYnV0IGdvdCAxCiAKIAotSGFybmVzcyBFcnJvciAo
RkFJTCksIG1lc3NhZ2UgPSBFcnJvcjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290
IDEKLQotUEFTUyBEYXRhIFVSTCBub3Qgc2hhcmVkIGJ5IGNyb3NzLW9yaWdpbiBTaGFyZWRXb3Jr
ZXJzCi1USU1FT1VUIERhdGEgVVJMcyBzaGFyZWQgYnkgc2FtZS1vcmlnaW4gU2hhcmVkV29ya2Vy
cyBUZXN0IHRpbWVkIG91dAotCi1IYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IEVycm9y
OiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3QgMQotCiBQQVNTIERhdGEgVVJMIG5v
dCBzaGFyZWQgYnkgY3Jvc3Mtb3JpZ2luIFNoYXJlZFdvcmtlcnMKLVRJTUVPVVQgRGF0YSBVUkxz
IHNoYXJlZCBieSBzYW1lLW9yaWdpbiBTaGFyZWRXb3JrZXJzIFRlc3QgdGltZWQgb3V0CitQQVNT
IERhdGEgVVJMcyBzaGFyZWQgYnkgc2FtZS1vcmlnaW4gU2hhcmVkV29ya2VycwogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
bW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21v
ZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dApp
bmRleCA1NzZlNmQyYjdlZDIuLjRhMjZiZTkyOWE4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdv
cmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQt
d29ya2VyLWltcG9ydC1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBA
QAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3MS5sb2NhbGhvc3Q6
OTQ0My93b3JrZXJzL21vZHVsZXMvcmVzb3VyY2VzL2V4cG9ydC1vbi1sb2FkLXNjcmlwdC5weQog
CiBQQVNTIFN0YXRpYyBpbXBvcnQuCiBGQUlMIFN0YXRpYyBpbXBvcnQgKGNyb3NzLW9yaWdpbiku
IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiAiSW1wb3J0aW5n
IGEgbW9kdWxlIHNjcmlwdCBmYWlsZWQuIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1p
bXBvcnQtZGF0YS11cmwtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3Jr
ZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKaW5kZXggNGY4NjQx
ZTUxNDgwLi4yOTk3ZjdlMWYzMDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0
LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtl
ci1pbXBvcnQtZGF0YS11cmwtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMg
QEAKLUNPTlNPTEUgTUVTU0FHRTogT3JpZ2luIG51bGwgaXMgbm90IGFsbG93ZWQgYnkgQWNjZXNz
LUNvbnRyb2wtQWxsb3ctT3JpZ2luLiBTdGF0dXMgY29kZTogMjAwCiAKIEhhcm5lc3MgRXJyb3Ig
KFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2Vy
LWltcG9ydC1kYXRhLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1p
bXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dAppbmRleCBlYWM3Zjk1ZGU2ZjIuLmNi
YzA0MjllMGM3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11cmwu
d2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVy
bC53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8g
ZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3MS5sb2NhbGhvc3Q6OTQ0My93b3JrZXJzL21vZHVsZXMv
cmVzb3VyY2VzL2V4cG9ydC1vbi1sb2FkLXNjcmlwdC5weQogCiBIYXJuZXNzIEVycm9yIChUSU1F
T1VUKSwgbWVzc2FnZSA9IG51bGwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBv
cnQud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1l
eHBlY3RlZC50eHQKaW5kZXggNTc2ZTZkMmI3ZWQyLi40YTI2YmU5MjlhOGQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1
bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hh
cmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJs
b2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMv
d29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkKIAogUEFT
UyBTdGF0aWMgaW1wb3J0LgogRkFJTCBTdGF0aWMgaW1wb3J0IChjcm9zcy1vcmlnaW4pLiBwcm9t
aXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogIkltcG9ydGluZyBhIG1v
ZHVsZSBzY3JpcHQgZmFpbGVkLiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9u
cy1jcmVkZW50aWFscy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3Jl
ZGVudGlhbHMtZXhwZWN0ZWQudHh0CmluZGV4IGUxYmVkZjU0MzBlZi4uYTcwZjA1YWY1NGY0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1jcmVkZW50aWFscy1leHBlY3RlZC50
eHQKQEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cDov
L3d3dzEubG9jYWxob3N0Ojg4MDAvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtY3Jl
ZGVudGlhbHMucHkKIAogSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGlj
cy9tdWx0aXBsZS13b3JrZXJzLzAwNC1leHBlY3RlZC50eHQKaW5kZXggMDE4ZGI2MDQ1NjlkLi5j
ZmU0NjU1Njc1Y2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhwZWN0ZWQudHh0CkBAIC0x
LDUgKzEsMyBAQAogCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKLQot
Tk9UUlVOIHNoYXJlZCB3b3JrZXIgd2l0aCBtdWx0aXBsZSBkb2N1bWVudHMKK1BBU1Mgc2hhcmVk
IHdvcmtlciB3aXRoIG11bHRpcGxlIGRvY3VtZW50cwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRp
cGxlLXdvcmtlcnMvMDA4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDgt
ZXhwZWN0ZWQudHh0CmluZGV4IDk3YTRlN2E3M2E2My4uMDlmNjcyZDFjNjIxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2Vt
YW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA4LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRp
cGxlLXdvcmtlcnMvMDA4LWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDMgQEAKIAotSGFybmVzcyBF
cnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0KLVRJTUVPVVQgbWVzc2FnZWNoYW5uZWwg
aW4gc2hhcmVkIHdvcmtlciBUZXN0IHRpbWVkIG91dAorUEFTUyBtZXNzYWdlY2hhbm5lbCBpbiBz
aGFyZWQgd29ya2VyCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4
dAppbmRleCBhMDg5YzIyNDg5ZTIuLmQzOWE1NTA4NGRjMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXIt
ZnJvbS1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxv
Yi11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDcgQEAKIAogSGFybmVzcyBFcnJv
ciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCiAKLUZBSUwgQ3JlYXRpbmcgYSBzaGFyZWQgd29y
a2VyIGZyb20gYSBibG9iIFVSTCB3b3Jrcy4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIndvcmtl
cl9PS18yIiBidXQgZ290ICJ3b3JrZXJfT0tfMSIKLVBBU1MgQ3JlYXRpbmcgYSBzaGFyZWQgd29y
a2VyIGZyb20gYSBibG9iIFVSTCB3b3JrcyBpbW1lZGlhdGVseSBiZWZvcmUgcmV2b2tpbmcuCi1U
SU1FT1VUIENvbm5lY3RpbmcgdG8gYSBzaGFyZWQgd29ya2VyIG9uIGEgcmV2b2tlZCBibG9iIFVS
TCB3b3Jrcy4gVGVzdCB0aW1lZCBvdXQKK1BBU1MgQ3JlYXRpbmcgYSBzaGFyZWQgd29ya2VyIGZy
b20gYSBibG9iIFVSTCB3b3Jrcy4KK1RJTUVPVVQgQ3JlYXRpbmcgYSBzaGFyZWQgd29ya2VyIGZy
b20gYSBibG9iIFVSTCB3b3JrcyBpbW1lZGlhdGVseSBiZWZvcmUgcmV2b2tpbmcuIFRlc3QgdGlt
ZWQgb3V0CitOT1RSVU4gQ29ubmVjdGluZyB0byBhIHNoYXJlZCB3b3JrZXIgb24gYSByZXZva2Vk
IGJsb2IgVVJMIHdvcmtzLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25z
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDZmZmVlMjczOTBkOS4uYWU0NWI0ZDI3Mzk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1l
LXZpYS1vcHRpb25zLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25z
LWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKIAotRkFJTCBUZXN0IHRoZSBuYW1lIHByb3Bl
cnR5IG9mIHNoYXJlZCB3b3JrZXJzIG1peGluZyBjb25zdHJ1Y3RvciBvcHRpb25zIGFuZCBjb25z
dHJ1Y3RvciBzdHJpbmdzIEVycm9yOiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3Qg
MQorUEFTUyBUZXN0IHRoZSBuYW1lIHByb3BlcnR5IG9mIHNoYXJlZCB3b3JrZXJzIG1peGluZyBj
b25zdHJ1Y3RvciBvcHRpb25zIGFuZCBjb25zdHJ1Y3RvciBzdHJpbmdzCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL29wZW4tdXJs
LXJlZGlyZWN0ZWQtc2hhcmVkd29ya2VyLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVk
LXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0CmluZGV4IDFlMmQzOTkyZjZkNS4uNTlj
YWNhNDg2ZjhkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMveGhyL29wZW4tdXJsLXJlZGlyZWN0ZWQtc2hhcmVkd29ya2VyLW9yaWdpbi1leHBlY3RlZC50
eHQKQEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cDov
L3d3dzIubG9jYWxob3N0Ojg4MDAveGhyL3Jlc291cmNlcy9pbnNwZWN0LWhlYWRlcnMucHk/Zmls
dGVyX25hbWU9b3JpZ2luJmNvcnMKIAogRkFJTCBSZWZlcmVyIGhlYWRlciBhc3NlcnRfZXF1YWxz
OiBleHBlY3RlZCAiUmVmZXJlcjogaHR0cDovL2xvY2FsaG9zdDo4ODAwL3hoci9yZXNvdXJjZXMv
d29ya2VyeGhyLW9yaWdpbi1yZWZlcnJlci5qc1xuIiBidXQgZ290ICJSZWZlcmVyOiBodHRwOi8v
bG9jYWxob3N0Ojg4MDAveGhyL3Jlc291cmNlcy9yZWRpcmVjdC5weT9sb2NhdGlvbj13b3JrZXJ4
aHItb3JpZ2luLXJlZmVycmVyLmpzXG4iCiBGQUlMIE9yaWdpbiBoZWFkZXIgYXNzZXJ0X2VxdWFs
czogZXhwZWN0ZWQgIk9yaWdpbjogaHR0cDovL2xvY2FsaG9zdDo4ODAwXG4iIGJ1dCBnb3QgIiIK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA4
NmRmMjdkNWJhYmIuLmFmYTgwNjE4MjU5YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNjYsNiArNjYsMzggQEAgaHR0cC90ZXN0cy9uYXZp
Z2F0aW9uL3BhZ2UtY2FjaGUtZ2V0VXNlck1lZGlhLXBlbmRpbmctcHJvbWlzZS5odG1sIFsgU2tp
cCBdCiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS1tZWRpYXN0cmVhbS5odG1sIFsg
U2tpcCBdCiBtZWRpYS9hdWRpby1zZXNzaW9uLWNhdGVnb3J5Lmh0bWwgWyBTa2lwIF0KIAorIyBT
aGFyZWQgd29ya2VycyBhcmUgb25seSBpbXBsZW1lbnRlZCBmb3IgV2ViS2l0Mi4KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5o
dHRwLXJwL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwLmh0bWwgWyBT
a2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvZ2VuL3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItY2xhc3Np
Yy5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nv
bnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXNlbGYvc2hh
cmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3Njcmlw
dC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cC5odG1sIFsgU2tpcCBdCitp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dl
bi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0
dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hh
cmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtl
ci1zcmMtc2VsZi9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3Rv
cC5odHRwLXJwL3dvcmtlci1zcmMtc2VsZi9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwcy5odG1s
IFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJp
dHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1v
ZHVsZS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtd2lsZGNh
cmQvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1y
cC93b3JrZXItc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBT
a2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItY2xhc3NpYy5o
dHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3Jr
ZXItY2xhc3NpYy5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXNl
bGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3Nj
cmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cC5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0
dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtc2VsZi9zaGFyZWR3b3Jr
ZXItY2xhc3NpYy5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtc2Vs
Zi9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93
b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lwIF0KK2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2Vu
L3RvcC5tZXRhL3dvcmtlci1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHBzLmh0bWwg
WyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0
eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWNs
YXNzaWMuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLXdpbGRjYXJk
L3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dv
cmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
Z2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRw
cy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLWNvbm5lY3Qtc3JjLnN1
Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXJlcG9ydC1vbmx5LnN1
Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3Vi
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvc2FuZGJveC9zaGFyZWQtd29ya2VyLXNhbmRib3guaHRtbCAgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvc2NyaXB0LXNyYy93b3JrZXItZGF0YS1zZXQtdGltZW91dC5zdWIuaHRtbCBbIFNraXAgXQor
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS93
b3JrZXItc3JjL3NoYXJlZC1jaGlsZC5zdWIuaHRtbCBbIFNraXAgXQorCiBodHRwL3dwdC9tZWRp
YXJlY29yZGVyIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlh
Y2FwdHVyZS1yZWNvcmQgWyBTa2lwIF0KIGZhc3QvaGlzdG9yeS9wYWdlLWNhY2hlLW1lZGlhLXJl
Y29yZGVyLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNzkyYTAwZjllYTFh
Li40NTdjNGFhOWIxYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNzksNiArMTc5LDcgQEAg
c2V0KFdlYkNvcmVfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9E
SVJ9L3dvcmtlcnMvc2VydmljZS9jb250ZXh0IgogICAgICIke1dFQkNPUkVfRElSfS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyIgogICAgICIke1dFQkNPUkVfRElSfS93b3JrZXJzL3NoYXJlZCIKKyAg
ICAiJHtXRUJDT1JFX0RJUn0vd29ya2Vycy9zaGFyZWQvY29udGV4dCIKICAgICAiJHtXRUJDT1JF
X0RJUn0vd29ya2xldHMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3htbCIKICAgICAiJHtXRUJDT1JF
X0RJUn0veG1sL3BhcnNlciIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDVhY2MyZDlkZmUxZS4uMWM5
ODU2ZDQzZDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTE5NTQsOSArMTk1NCwxMiBAQCBzZXQo
V2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgd29ya2Vycy9Xb3JrZXJGb250
TG9hZFJlcXVlc3QuaAogICAgIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAogICAgIHdvcmtl
cnMvV29ya2VyTG9hZGVyUHJveHkuaAorICAgIHdvcmtlcnMvV29ya2VyT2JqZWN0UHJveHkuaAor
ICAgIHdvcmtlcnMvV29ya2VyT3B0aW9ucy5oCiAgICAgd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZS5oCiAgICAgd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVy
LmgKICAgICB3b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5oCisgICAgd29ya2Vycy9Xb3Jr
ZXJSZXBvcnRpbmdQcm94eS5oCiAgICAgd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmgKICAgICB3b3Jr
ZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCiAgICAgd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXJD
bGllbnQuaApAQCAtMjAwMCw2ICsyMDAzLDE1IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVX
T1JLX0hFQURFUlMKICAgICB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oCiAgICAgd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5o
CiAKKyAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgKKyAgICB3b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaAorICAgIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uaAorICAgIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIuaAorICAgIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVy
LmgKKworICAgIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXIuaAorICAgIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHku
aAorCiAgICAgeG1sL0N1c3RvbVhQYXRoTlNSZXNvbHZlci5oCiAgICAgeG1sL1hQYXRoRXhwcmVz
c2lvbi5oCiAgICAgeG1sL1hQYXRoTlNSZXNvbHZlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGY2NmNj
ZjhmMDZhNS4uOWFiODYwNGM5ZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjc4NiwxMCArMjc4Niwx
MiBAQCB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
cHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCiB3b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXIuY3BwCiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJHbG9iYWxT
Y29wZS5jcHAKLXdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuY3BwCi13b3JrZXJz
L3NoYXJlZC9TaGFyZWRXb3JrZXJQcm94eS5jcHAKK3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb24uY3BwCit3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRl
ci5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAKIHdvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlclRocmVhZC5jcHAKK3dvcmtlcnMvc2hhcmVkL2NvbnRleHQv
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwCit3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1No
YXJlZFdvcmtlclRocmVhZFByb3h5LmNwcAogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuY3BwCiB3b3JrbGV0cy9Xb3JrbGV0LmNwcAogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3Bl
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDljYmY4NzZlMjU4Zi4uZDFkMDUzZDAyOGI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MDMsNyArOTAzLDcg
QEAKIAkJMkU0MzQ2NEIwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjM5
MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZVByb3h5LmggKi87IH07CiAJCTJF
NDM0NjREMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2M0IwRjU0NkE4MjAwQjBGMUJB
IC8qIFdvcmtlckxvY2F0aW9uLmggKi87IH07CiAJCTJFNDM0NjUwMEY1NDZBODIwMEIwRjFCQSAv
KiBXb3JrZXJNZXNzYWdpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkU0MzQ2M0UwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck1lc3NhZ2lu
Z1Byb3h5LmggKi87IH07Ci0JCTJFNDM0NjUxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmpl
Y3RQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkU0MzQ2M0YwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5LmggKi87IH07CisJ
CTJFNDM0NjUxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94eS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2M0YwRjU0NkE4MjAw
QjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2NTMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtl
clJ1bkxvb3AuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJFNDM0NjQxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJSdW5Mb29wLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2NTUwRjU0NkE4MjAw
QjBGMUJBIC8qIFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkU0MzQ2NDMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFNzU4
NDFFMTI3NzlBREEwMDYyNjI4QiAvKiBGaWxlUmVhZGVyTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTc1ODQxQjEyNzc5QURBMDA2MjYyOEIg
LyogRmlsZVJlYWRlckxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0xMTI1LDcgKzExMjUsNyBAQAogCQk0MTZBMDZBMTIzQ0NBRDAzMDAz
NDcxMDkgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkEwNjk2MjNDQ0FBOUYwMDM0NzEwOSAv
KiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkQ3NUEyMjBDNjUxQTUwMEQwMkQyQyAvKiBO
ZXR3b3JrTG9hZEluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTZENzU5RjIwQzY0NDEzMDBEMDJEMkMgLyogTmV0d29ya0xvYWRJbmZv
cm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQxNkUwQjNBMjA5QkMzQ0IwMDRBOTVEOSAvKiBGZXRjaElkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkUwQjM3MjA5QkMzQzIw
MDRBOTVEOSAvKiBGZXRjaElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwotCQk0MTZFMjlBNjEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2Vy
UmVwb3J0aW5nUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxNkUyOUE1MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5o
ICovOyB9OworCQk0MTZFMjlBNjEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJv
eHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkUy
OUE1MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU4MUJCRDEyREYw
MDBBM0Y2NCAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0
RDkgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU4MUJCRDEyREYwMDBBM0Y2
NSAvKiBKU0RPTUJpbmRpbmdJbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NERBIC8qIEpT
RE9NQmluZGluZ0ludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgxQkJEMTJERjAwMEEzRjc0IC8qIFRyYW5z
Zm9ybVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RUEgLyogVHJhbnNmb3Jt
U3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMTMyMCw2ICsxMzIwLDggQEAKIAkJNDYwRTMwNzcyMjJGNEYw
MzAwOUEwNjA2IC8qIERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NUVERDlGMjIy
RjRFQzMwMEI0NkUxNiAvKiBEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYy
MThBQ0IxRjcyRDY0RTAwNTc0RkJFIC8qIERPTUhpZ2hSZXNUaW1lU3RhbXAuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RTAxNkFEMUY3MkQ2MUUwMDI4
MkIyQyAvKiBET01IaWdoUmVzVGltZVN0YW1wLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYyNzNDQUYyNjBFNTlFRjAwNkZBQTkxIC8qIFNXU2Ny
aXB0U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDYyNzNDQUMyNjBFNTlERjAwNkZBQTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2MjdGRjU5Mjc5Qjgy
NDkwMEFBMzkxNiAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYyN0ZGNTgyNzlCODI0NjAwQUEzOTE2IC8q
IFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDYyN0ZGNUIyNzlCODdBRjAwQUEzOTE2IC8qIFNoYXJlZFdv
cmtlcklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2MjdGRjVBMjc5Qjg3QTIwMEFBMzkxNiAvKiBTaGFyZWRXb3JrZXJJZGVudGlmaWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYy
QzdGNDEyNzU2REJFNDAwRDA4M0M4IC8qIFdlYkxvY2tJZGVudGlmaWVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njc4MDJCMjI3NDcxMTg1MDBEQTlG
QjYgLyogV2ViTG9ja0lkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0NjJFNEM1MDI2MTZBODExMDAzQTJDNjcgLyogU2NyaXB0QnVm
ZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjJF
NEM0RDI2MTZBODAxMDAzQTJDNjcgLyogU2NyaXB0QnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYzNEM3MkMyNzU3REFCMjAwMjZBODE1
IC8qIFdlYkxvY2tNYW5hZ2VyU25hcHNob3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzgwMkIwMjc0NzExN0IwMERBOUZCNiAvKiBXZWJMb2NrTWFu
YWdlclNuYXBzaG90LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTEzNDEsMTUgKzEzNDMsMTggQEAKIAkJNDY3MzAyMDIxQzRFRkU3ODAwQkNCMzU3
IC8qIElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3MzAyMDExQzRFRkU2NjAwQkNC
MzU3IC8qIElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlci5oICovOyB9Owog
CQk0NjdBNjhENzI3NUVBOTkxMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdBNjhENDI3NUVBOThC
MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggKi87IH07CiAJCTQ2N0E2OEQ4Mjc1RUE5
OTUwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0E2OEQ1Mjc1RUE5OEMwMDlCMzFDNSAv
KiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCAqLzsgfTsKLQkJNDY3QTY4RDkyNzVFQTk5ODAw
OUIzMUM1IC8qIFNoYXJlZFdvcmtlclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdBNjhENjI3NUVBOThDMDA5QjMxQzUgLyogU2hhcmVkV29y
a2VyUHJveHkuaCAqLzsgfTsKLQkJNDY3QTY4REEyNzVFQTk5QzAwOUIzMUM1IC8qIFNoYXJlZFdv
cmtlck1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2N0E2OEQyMjc1RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggKi87
IH07CiAJCTQ2ODJEMjAwMUY3OTc4MzAwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MkQx
RkYxRjc5NzgyMzAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4MzQ0RTAxRURERkFB
QTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3Qu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0Njgz
REY0MDI3NjdERjk4MDA3RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4M0RGM0UyNzY3
REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaCAqLzsgfTsKIAkJ
NDY4M0RGNDEyNzY3RTkxQTAwN0QwMEM4IC8qIFNoYWRvd1JlYWxtR2xvYmFsU2NvcGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODNERjNCMjc2N0RG
MjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4OEVFM0MyNkREMjYxMDAwMkFGNUM0
IC8qIENyb3NzT3JpZ2luTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDY4OEVFM0EyNkREMjYwQzAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2OTQz
REM4Mjc2M0Y4MTIwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0M0RDNTI3NjNG
ODBEMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2OTQzREM5Mjc2M0Y4MTcw
MDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0M0RDNzI3NjNGODBFMDA0QjYxMEUg
LyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2OTQzRENBMjc2M0Y4MUMwMDRCNjEwRSAvKiBT
aGFyZWRXb3JrZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDY5NDNEQzQyNzYzRjgwRDAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlclByb3Zp
ZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
NDY5ODVGMjMyN0E0QTZBRDAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktleS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5ODVGMjIyN0E0QTY4NjAwOTdB
MzJCIC8qIFNoYXJlZFdvcmtlcktleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTQ2OUNDQ0ZFMjY5RDAyMUMwMDZFMDMxNCAvKiBCcm9hZGNhc3RD
aGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjlDQ0NGQzI2OUQwMjAyMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2OUQ3N0I4MjcwMTYyNTEw
MDE0MkZBNiAvKiBOYXZpZ2F0aW9uUmVxdWVzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjlENzdCNjI3MDE2MjUwMDAxNDJGQTYgLyogTmF2aWdh
dGlvblJlcXVlc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTQ2QTc4QjM0Mjc5OUJENzEwMDExNTRGRSAvKiBXb3JrZXJPcHRpb25zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzFCMUQyNjI2RjE4
QTRCMDA4ODJEQTIgLyogV29ya2VyT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QUFBQTNEMjVEMzYzMjAwMEJBRjQyRiAvKiBBdWRp
b0ZpbGVSZWFkZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZBQUFBM0EyNUQzNjMxNDAwQkFGNDJGIC8qIEF1ZGlvRmlsZVJlYWRlckNvY29h
LmggKi87IH07CiAJCTQ2QjYzRjZDMUM2RThEMTkwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3Vz
dG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI2
M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QjY1MEREMjI5NjI2Mjcw
MEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZCNjUwREIyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlm
aWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTEzNjYsNiArMTM3MSw3IEBACiAJCTQ2QkQwNUM2MjVCQjZFNkMwMDIyNUYzMCAvKiBFdmVudExp
c3RlbmVyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZCRDA1QzMyNUJCNkU0RTAwMjI1RjMwIC8qIEV2ZW50TGlzdGVuZXJPcHRpb25zLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZDMDk2
MjEyM0Q3OERENjAwNjU3QzA5IC8qIEhUVFBDb29raWVBY2NlcHRQb2xpY3kuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzA5NjIwMjNENzhERDYwMDY1
N0MwOSAvKiBIVFRQQ29va2llQWNjZXB0UG9saWN5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZDMzc2NjIyMDg1MTc3RDAwQzczODI5IC8qIEpT
UmVtb3RlRE9NV2luZG93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkMzNzY2MTIwODUxNzZEMDBDNzM4MjkgLyogSlNSZW1vdGVET01XaW5kb3cuaCAq
LzsgfTsKKwkJNDZDNDE2OUIyNzlBMDRDNzAwMjUyQzNCIC8qIFNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjI2QjQ3NTI3OUEwM0QyMDBBRUYwQjIgLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkM2OTZD
QjFFNzIwNUY3MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNjk2QzkxRTcyMDVFNDAwNTk3OTM3IC8qIENQVU1v
bml0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0NkM2OTZDQzFFNzIwNUZDMDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM2OTZDQTFFNzIwNUU0MDA1OTc5
MzcgLyogQ1BVTW9uaXRvci5jcHAgKi87IH07CiAJCTQ2QzgzRUZFMUE5QkJFMjkwMEE3OUE0MSAv
KiBHZW9Ob3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZDODNFRkMxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTkxODAsOSArOTE4Niwx
MyBAQAogCQk0NjBDQkYzMzFENEJDQ0ZFMDA5MkU4OEUgLyogSlNET01XaW5kb3dQcm9wZXJ0aWVz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NV2luZG93UHJv
cGVydGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MENCRjM0MUQ0QkND
RkUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNET01XaW5kb3dQcm9wZXJ0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2MEQxOTQ0MUZDRTIxREQwMEMzREI4NSAvKiBKU1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQ2MjZCNDc1Mjc5QTAzRDIwMEFFRjBCMiAvKiBTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjI3M0MyMTI3QTFDQkM3MDA2QTE1Qjkg
LyogSlNBdWRpb1dvcmtsZXRQcm9jZXNzb3JDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNBdWRpb1dvcmtsZXRQcm9jZXNzb3JDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjI3M0NBQzI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNXU2NyaXB0U3RvcmFnZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NjI3M0NBRTI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3Jp
cHRTdG9yYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNXU2Ny
aXB0U3RvcmFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MjdGRjU3Mjc5
QjgyNDUwMEFBMzkxNiAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MjdGRjU4Mjc5QjgyNDYwMEFBMzkxNiAvKiBT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0NjI3RkY1QTI3OUI4N0EyMDBBQTM5MTYgLyogU2hhcmVkV29ya2VySWRlbnRpZmllci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MkU0QzREMjYxNkE4MDEwMDNBMkM2NyAv
KiBTY3JpcHRCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0
QnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MkU0QzRGMjYxNkE4MDEw
MDNBMkM2NyAvKiBTY3JpcHRCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2NyaXB0QnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDYzNDU5MkIxQUMyMjcxMDAwRUNCNzFDIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG93ZXJPYnNlcnZlck1hYy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MjI5LDE0ICs5MjM5LDEwIEBACiAJCTQ2NzMwMjAx
MUM0RUZFNjYwMEJDQjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWdub3JlT3BlbnNEdXJpbmdV
bmxvYWRDb3VudEluY3JlbWVudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
NzgwMkIwMjc0NzExN0IwMERBOUZCNiAvKiBXZWJMb2NrTWFuYWdlclNuYXBzaG90LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkxvY2tNYW5hZ2VyU25hcHNob3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3ODAyQjIyNzQ3MTE4NTAwREE5RkI2IC8qIFdl
YkxvY2tJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkxv
Y2tJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2N0E2OENGMjc1
RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTaGFyZWRXb3JrZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
N0E2OEQwMjc1RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDY3QTY4RDEyNzVFQTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExv
YWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NjdBNjhEMjI3NUVBOThBMDA5QjMxQzUg
LyogU2hhcmVkV29ya2VyTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJNYW5h
Z2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2N0E2OEQzMjc1RUE5OEIwMDlC
MzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJl
ZFdvcmtlck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdBNjhE
NDI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNoYXJlZFdvcmtlclRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdB
NjhENTI3NUVBOThDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0NjdBNjhENjI3NUVBOThDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyUHJveHku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDY4MkQxRkYxRjc5NzgyMzAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxz
UG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JlZENyZWRlbnRp
YWxzUG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM0NERDMUVEREZB
NUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NUmVjdExpc3QuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgzNDRERDFFRERGQTVGMDBCNzc5NUIgLyogRE9N
UmVjdExpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NUmVjdExpc3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTI0OSw2ICs5MjU1LDEyIEBACiAJCTQ2ODNERjNFMjc2
N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OEVFM0EyNkREMjYwQzAwMkFGNUM0IC8q
IENyb3NzT3JpZ2luTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcm9zc09yaWdpbk1vZGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4QjhCREUyNUNDODQ5MzAwRjY3ODIyIC8qIEpT
QmFzZUF1ZGlvQ29udGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Jhc2VBdWRp
b0NvbnRleHRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RD
MjI3NjNGODBDMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0Njk0M0RDNDI3NjNGODBEMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyUHJvdmlkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQzUyNzYzRjgwRDAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RDNjI3NjNGODBFMDA0
QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk4NUYyMjI3QTRBNjg2MDA5N0Ez
MkIgLyogU2hhcmVkV29ya2VyS2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNoYXJlZFdvcmtlcktleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlDQ0NG
QTI2OUQwMjAyMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBCcm9hZGNhc3RDaGFubmVsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDY5Q0NDRkMyNjlEMDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQnJvYWRjYXN0Q2hhbm5lbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjlDQ0NGRDI2OUQwMjAzMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQnJv
YWRjYXN0Q2hhbm5lbC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MjgzLDYg
KzkyOTUsNyBAQAogCQk0NkMzNzY1RjIwODUxNzZDMDBDNzM4MjkgLyogSlNSZW1vdGVET01XaW5k
b3cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSZW1vdGVET01X
aW5kb3cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkMzNzY2MTIwODUxNzZE
MDBDNzM4MjkgLyogSlNSZW1vdGVET01XaW5kb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNSZW1vdGVET01XaW5kb3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDZDM0E4RDMyNTQ4RDRCNzAwQzhDNTNBIC8qIEpTQXVkaW9CdWZmZXJDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNBdWRpb0J1ZmZlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ2QzQxNjlEMjc5QTA0RDIwMDI1MkMzQiAvKiBTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2QzY5NkM5MUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENQVU1vbml0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDZDNjk2Q0ExRTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1BVTW9uaXRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzgzRUZCMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3Rp
Zmllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW9Ob3RpZmll
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTUxNiw2ICsyMTUyOSwxNyBA
QAogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTQ2
MjZCNDczMjc5QTAzQjEwMEFFRjBCMiAvKiBjb250ZXh0ICovID0geworCQkJaXNhID0gUEJYR3Jv
dXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk0NjI3RkY1NzI3OUI4MjQ1MDBBQTM5MTYgLyogU2hh
cmVkV29ya2VyVGhyZWFkUHJveHkuY3BwICovLAorCQkJCTQ2MjdGRjU4Mjc5QjgyNDYwMEFBMzkx
NiAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oICovLAorCQkJCTQ2QzQxNjlEMjc5QTA0RDIw
MDI1MkMzQiAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAgKi8sCisJCQkJNDYyNkI0
NzUyNzlBMDNEMjAwQUVGMEIyIC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggKi8sCisJ
CQkpOworCQkJcGF0aCA9IGNvbnRleHQ7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OwogCQk0NjQyNDA0NDIwRUFGMEJEMDBCMjlGRDIgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjE1NTAsMTYgKzIxNTc0LDIwIEBACiAJCTQ2
Njk0Q0RFMjc1OTQ0NkQwMEUzMTUwRSAvKiBzaGFyZWQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQ2MjZCNDczMjc5QTAzQjEwMEFFRjBCMiAvKiBjb250
ZXh0ICovLAogCQkJCTQ2Njk0Q0UzMjc1OTQ0OEQwMEUzMTUwRSAvKiBTaGFyZWRXb3JrZXIuY3Bw
ICovLAogCQkJCTQ2Njk0Q0UyMjc1OTQ0OEQwMEUzMTUwRSAvKiBTaGFyZWRXb3JrZXIuaCAqLywK
IAkJCQk0NjY5NENFNTI3NTk0NDhFMDBFMzE1MEUgLyogU2hhcmVkV29ya2VyLmlkbCAqLywKIAkJ
CQk0NjY5NENFNDI3NTk0NDhFMDBFMzE1MEUgLyogU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3Bw
ICovLAogCQkJCTQ2Njk0Q0UxMjc1OTQ0OEMwMEUzMTUwRSAvKiBTaGFyZWRXb3JrZXJHbG9iYWxT
Y29wZS5oICovLAogCQkJCTQ2Njk0Q0UwMjc1OTQ0OEMwMEUzMTUwRSAvKiBTaGFyZWRXb3JrZXJH
bG9iYWxTY29wZS5pZGwgKi8sCi0JCQkJNDY3QTY4RDMyNzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJl
ZFdvcmtlck1hbmFnZXIuY3BwICovLAotCQkJCTQ2N0E2OEQyMjc1RUE5OEEwMDlCMzFDNSAvKiBT
aGFyZWRXb3JrZXJNYW5hZ2VyLmggKi8sCi0JCQkJNDY3QTY4Q0YyNzVFQTk4OTAwOUIzMUM1IC8q
IFNoYXJlZFdvcmtlclByb3h5LmNwcCAqLywKLQkJCQk0NjdBNjhENjI3NUVBOThDMDA5QjMxQzUg
LyogU2hhcmVkV29ya2VyUHJveHkuaCAqLywKKwkJCQk0NjI3RkY1QTI3OUI4N0EyMDBBQTM5MTYg
LyogU2hhcmVkV29ya2VySWRlbnRpZmllci5oICovLAorCQkJCTQ2OTg1RjIyMjdBNEE2ODYwMDk3
QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCAqLywKKwkJCQk0Njk0M0RDNjI3NjNGODBFMDA0QjYx
MEUgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgKi8sCisJCQkJNDY5NDNEQzUy
NzYzRjgwRDAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAqLywKKwkJ
CQk0Njk0M0RDNzI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ci5oICovLAorCQkJCTQ2OTQzREMyMjc2M0Y4MEMwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJQcm92
aWRlci5jcHAgKi8sCisJCQkJNDY5NDNEQzQyNzYzRjgwRDAwNEI2MTBFIC8qIFNoYXJlZFdvcmtl
clByb3ZpZGVyLmggKi8sCiAJCQkJNDY3QTY4RDEyNzVFQTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdv
cmtlclNjcmlwdExvYWRlci5jcHAgKi8sCiAJCQkJNDY3QTY4RDUyNzVFQTk4QzAwOUIzMUM1IC8q
IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oICovLAogCQkJCTQ2N0E2OEQwMjc1RUE5ODkwMDlC
MzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuY3BwICovLApAQCAtMzM4NjYsNiArMzM4OTQsNyBA
QAogCQkJCTJENDgxRjAyMTQ2QjVDNTUwMEFBNzgzNCAvKiBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFn
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFDNDE2MTIwRjY1NjJGRDAwOTJEMkZCIC8qIENyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY3MkFBOTgyNkIwOTQz
MzAwRTZFQzM4IC8qIENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kuaCBpbiBIZWFkZXJzICovLAor
CQkJCTQ2QTc4QjM0Mjc5OUJENzEwMDExNTRGRSAvKiBXb3JrZXJPcHRpb25zLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0Njg4RUUzQzI2REQyNjEwMDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5Nb2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0NjcyQUE5OTI2QjA5NDNGMDBFNkVDMzggLyogQ3Jvc3NPcmln
aW5PcGVuZXJQb2xpY3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQUJFNjdCMUQwNTgwREIwMDZE
ODYyRCAvKiBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuaCBpbiBIZWFkZXJzICovLApAQCAt
MzM5MDQsNiArMzM5MzMsNyBAQAogCQkJCTU3RkVERDNGMURCNkQ1OTIwMEVCOTZGNSAvKiBDcnlw
dG9BbGdvcml0aG1Sc2FLZXlHZW5QYXJhbXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MDZBNjk2
MURERTVDOTUwMEEwM0IxNCAvKiBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1NzIxQTk4QjFFQ0U1NzA0MDA4MTI5NUEgLyogQ3J5cHRvQWxnb3JpdGht
UnNhUHNzUGFyYW1zLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjI3RkY1OTI3OUI4MjQ5MDBBQTM5
MTYgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQkQz
MzFBMTgyRDhEREQwMEMwNUQ5RiAvKiBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTEyNUY4MkMxODIyQ0ZFQzAwRDg0Q0Q5IC8qIENyeXB0b0Fs
Z29yaXRobVNIQTEuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxOUFDM0VGMTgyNERDNzkwMDM0OTQy
NiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyMjQuaCBpbiBIZWFkZXJzICovLApAQCAtMzQ4OTAsNiAr
MzQ5MjAsNyBAQAogCQkJCUNEM0UyMUREMjE4MzQ0NEEwMEU2NkY1NSAvKiBJbWFnZUJ1ZmZlclV0
aWxpdGllc0NHLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NEVFQTEwMDI3NDc1N0YxMDA1OTRBODMg
LyogSW1hZ2VDb250cm9sc01hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3OTc5MUEwRDZCOUQw
QzAwMzg1MUI5IC8qIEltYWdlRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZDNDE2OUIyNzlB
MDRDNzAwMjUyQzNCIC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQ0EwODhGNTI2NEUxQzA4MDAzRTJBNkMgLyogSW1hZ2VEYXRhU2V0dGluZ3MuaCBp
biBIZWFkZXJzICovLAogCQkJCUNEMTlGRUE4MUY1NzM5NzIwMDBDNDJGQiAvKiBJbWFnZURlY29k
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMTlGRUFFMUY1NzRCNkQwMDBDNDJGQiAvKiBJbWFn
ZURlY29kZXJBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKQEAgLTM1NTE4LDYgKzM1NTQ5LDcgQEAK
IAkJCQkxQTc1MEQ4RTBBOTBFNTIxMDAwRkYyMTUgLyogSlNOb2RlSXRlcmF0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDRDlDMkMzMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05vZGVMaXN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBRDIwQjE4RDE4RTlEMjM3MDA1QTgwODMgLyogSlNOb2RlTGlzdEN1
c3RvbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY5NDNEQzkyNzYzRjgxNzAwNEI2MTBFIC8qIFNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMzNTAzQ0E0
MTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTEwRTJGMzMyNzZCRjY4NTAwODA5MzMzIC8qIEpTTm90aWZpY2F0aW9uRGlyZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTBFMkYyQjI3NkJDRkU4MDA4MDkzMzMgLyogSlNOb3RpZmljYXRp
b25FdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNjY2OSw2ICszNjcwMSw3IEBACiAJCQkJNDE2
RTZGRTkxQkJEMTJFNTAwMEE2MDQzIC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxMjlDOUE5MUY1OUM1NkIwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbURl
ZmF1bHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTZFNkZFODFCQkQxMkRGMDAw
QTNGNjQgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNDY5NDNEQzgyNzYzRjgxMjAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMjlDOUFGMUY1OUNGNUIwMDlENzQwMyAvKiBS
ZWFkYWJsZVN0cmVhbVNpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMjlDOUFCMUY1OUM1NzMw
MDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQz
MTYwM0MxMkIwMjY3NjAwQzFBMzU5IC8qIFJlYWx0aW1lQW5hbHlzZXIuaCBpbiBIZWFkZXJzICov
LApAQCAtMzcwNDYsNiArMzcwNzksNyBAQAogCQkJCTBGNjA1QUVEMTVGOTQ4NDgwMDRERjBDMCAv
KiBTY3JvbGxpbmdDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGNjJFRTgxNERB
MjJBNzAwNDE1NTZDIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5MzkxQTk5MTE2Mjc0NkNCMDAyOTczMzAgLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMuaCBp
biBIZWFkZXJzICovLAorCQkJCTQ2MjdGRjVCMjc5Qjg3QUYwMEFBMzkxNiAvKiBTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTJEQkE0OTIxRjhBRDgzMDA4RjM2
QjIgLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3JUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUI0
NjY1NjMyNUQxNEMwQTAwMENGRTE0IC8qIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjk5MDU5QTI2RjZCRTg1MDA1NEZCRTAgLyogU2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTM3MTcyLDggKzM3MjA2LDYgQEAK
IAkJCQlDRDM2QzE2QjI2MEE2NUNDMDBDOEM1MjkgLyogU2hhcmVkUm91dGluZ0FyYml0cmF0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTgzNERGQUQwMUY3REFFNUQwMEMyNzI1QiAvKiBTaGFyZWRT
dHJpbmdIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUVBMzA5OUVCNzhDMDA1NkU1ODEg
LyogU2hhcmVkVGltZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ2N0E2OERBMjc1RUE5OUMwMDlC
MzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0NjdBNjhE
OTI3NUVBOTk4MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyUHJveHkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ2N0E2OEQ4Mjc1RUE5OTUwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQ2N0E2OEQ3Mjc1RUE5OTEwMDlCMzFDNSAvKiBTaGFyZWRX
b3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDNERCMDI2MjczMzlGRTAwMDdCMEFE
MSAvKiBTaG91bGRMb2NhbGl6ZUF4aXNOYW1lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNzQwNyw2
ICszNzQzOSw3IEBACiAJCQkJQjIyMjc5QzAwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0VsbGlwc2VF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlDODBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHRkVCbGVuZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUNCMEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NDY5ODVGMjMyN0E0QTZBRDAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktleS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjIyMjc5Q0UwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFQ29tcG9uZW50VHJhbnNm
ZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlEMTBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHRkVDb21wb3NpdGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxOTIxMzI3NTEx
QzBFNkJCMDA0NTYyMzggLyogU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLApAQCAtMzgwNTMsNiArMzgwODYsNyBAQAogCQkJCTgzQUNEMDEzMjUyMjlFMTAwMDBEMTI0
RSAvKiBXb3JrbGV0T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM0QTZBM0EyNTI2ODQ0
QTAwNzQ3RjVEIC8qIFdvcmtsZXRQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzNC
RDgxNzI1MjRENEYyMDA2RTcyQjMgLyogV29ya2xldFBlbmRpbmdUYXNrcy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDY5NDNEQ0EyNzYzRjgxQzAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlclByb3ZpZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUyNDA5OUU2NDkyMDA1NkU1ODEgLyogV3JhcENv
bnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTZFNkZFODFC
QkQxMkRGMDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOUJBRjNCMjQxMkMxQTM5ODAwMDE0QkYxIC8qIFdyaXRpbmdEaXJlY3Rp
b24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcApp
bmRleCA4NDMxZjRjNTIxMTYuLjBjYjQ5YWY3YzU1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbi5jcHAKQEAgLTU0Niw2ICs1NDYsMTEgQEAgU3RyaW5nIFNlY3VyaXR5T3JpZ2lu
Ojp0b1Jhd1N0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0YS50b1N0cmluZygpOwogfQog
CitVUkwgU2VjdXJpdHlPcmlnaW46OnRvVVJMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kYXRh
LnRvVVJMKCk7Cit9CisKIHN0YXRpYyBpbmxpbmUgYm9vbCBhcmVPcmlnaW5zTWF0Y2hpbmcoY29u
c3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbjEsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4y
KQogewogICAgIEFTU0VSVCgmb3JpZ2luMSAhPSAmb3JpZ2luMik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmgKaW5kZXggNjNkNjM0MTU5ZjY0Li5lMTU1ZWM2ZjI0YWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKQEAgLTE5MCw2ICsxOTAsOCBAQCBwdWJsaWM6CiAg
ICAgLy8gY291bGQgbWFrZSB0aGUgc3RyaW5nIHJldHVybiAibnVsbCIuCiAgICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIHRvUmF3U3RyaW5nKCkgY29uc3Q7CiAKKyAgICBVUkwgdG9VUkwoKSBjb25z
dDsKKwogICAgIC8vIFRoaXMgbWV0aG9kIGNoZWNrcyBmb3IgZXF1YWxpdHkgYmV0d2VlbiBTZWN1
cml0eU9yaWdpbnMsIG5vdCB3aGV0aGVyCiAgICAgLy8gb25lIG9yaWdpbiBjYW4gYWNjZXNzIGFu
b3RoZXIuIEl0IGlzIHVzZWQgZm9yIGhhc2ggdGFibGUga2V5cy4KICAgICAvLyBGb3IgYWNjZXNz
IGNoZWNrcywgdXNlIGlzU2FtZU9yaWdpbkRvbWFpbigpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4IGU0OWNkY2QzNjJhZS4uMWFiNzdmNmVkZjMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCkBAIC00OSw2ICs0
OSwxMSBAQCBTdHJpbmcgU2VjdXJpdHlPcmlnaW5EYXRhOjp0b1N0cmluZygpIGNvbnN0CiAgICAg
cmV0dXJuIG1ha2VTdHJpbmcocHJvdG9jb2wsICI6Ly8iLCBob3N0LCAnOicsIHN0YXRpY19jYXN0
PHVpbnQzMl90PigqcG9ydCkpOwogfQogCitVUkwgU2VjdXJpdHlPcmlnaW5EYXRhOjp0b1VSTCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIFVSTCB7IFVSTCgpLCB0b1N0cmluZygpIH07Cit9CisKIFNl
Y3VyaXR5T3JpZ2luRGF0YSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShGcmFtZSogZnJh
bWUpCiB7CiAgICAgaWYgKCFmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW5EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
RGF0YS5oCmluZGV4IGZkZmM4NjQzZWFkZi4uYWMwODI4NTYxMjk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKQEAgLTg2LDYgKzg2LDcgQEAgc3RydWN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSB7CiAgICAgfQogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0
b1N0cmluZygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFVSTCB0b1VSTCgpIGNvbnN0Owog
CiAjaWYgIUxPR19ESVNBQkxFRAogICAgIFN0cmluZyBkZWJ1Z1N0cmluZygpIGNvbnN0IHsgcmV0
dXJuIHRvU3RyaW5nKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xv
Z2dpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCBkYzBmNTA5
OGI4N2YuLmZhN2QyMzAyZWMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaApAQCAtMTA5
LDYgKzEwOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBNKFNlbGVjdGlvbikgXAogICAg
IE0oU2VydmljZXMpIFwKICAgICBNKFNlcnZpY2VXb3JrZXIpIFwKKyAgICBNKFNoYXJlZFdvcmtl
cikgXAogICAgIE0oU3BlbGxpbmdBbmRHcmFtbWFyKSBcCiAgICAgTShTUUxEYXRhYmFzZSkgXAog
ICAgIE0oU3RvcmFnZSkgXApAQCAtMTI2LDYgKzEyNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBNKFdlYkdMKSBcCiAgICAgTShXZWJSVEMpIFwKICAgICBNKFdlYlJUQ1N0YXRzKSBcCisg
ICAgTShXb3JrZXIpIFwKICAgICBNKFhSKSBcCiAgICAgTShXaGVlbEV2ZW50VGVzdE1vbml0b3Ip
IFwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcHRpb25zLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9wdGlvbnMuaAppbmRleCBmYmRhZWFiZThh
YjcuLjc3MzM5NWI3OWExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcHRpb25zLmgK
QEAgLTM0LDYgKzM0LDM2IEBAIHN0cnVjdCBXb3JrZXJPcHRpb25zIHsKICAgICBXb3JrZXJUeXBl
IHR5cGUgeyBXb3JrZXJUeXBlOjpDbGFzc2ljIH07CiAgICAgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlh
bHMgY3JlZGVudGlhbHMgeyBGZXRjaFJlcXVlc3RDcmVkZW50aWFsczo6U2FtZU9yaWdpbiB9Owog
ICAgIFN0cmluZyBuYW1lOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFdvcmtlck9wdGlvbnM+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCit0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBXb3JrZXJPcHRpb25zOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHR5cGUgPDwgY3JlZGVudGlhbHMgPDwg
bmFtZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8V29ya2Vy
T3B0aW9ucz4gV29ya2VyT3B0aW9uczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAg
c3RkOjpvcHRpb25hbDxXb3JrZXJUeXBlPiB3b3JrZXJUeXBlOworICAgIGRlY29kZXIgPj4gd29y
a2VyVHlwZTsKKyAgICBpZiAoIXdvcmtlclR5cGUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPEZldGNoUmVxdWVzdENyZWRlbnRpYWxzPiBjcmVkZW50
aWFsczsKKyAgICBkZWNvZGVyID4+IGNyZWRlbnRpYWxzOworICAgIGlmICghY3JlZGVudGlhbHMp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gbmFtZTsKKyAgICBkZWNvZGVyID4+IG5hbWU7CisgICAgaWYgKCFuYW1lKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyAqd29ya2VyVHlwZSwgKmNyZWRl
bnRpYWxzLCBXVEZNb3ZlKCpuYW1lKSB9IH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCA0MDY3MTczYTg5YTUu
LmI3MTg1YTVlZGE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJU
aHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApA
QCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogCiAjaW5jbHVkZSAi
SURCQ29ubmVjdGlvblByb3h5LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNj
cmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUg
IlNvY2tldFByb3ZpZGVyLmgiCkBAIC0xNjMsNiArMTY0LDExIEBAIHZvaWQgV29ya2VyVGhyZWFk
OjpldmFsdWF0ZVNjcmlwdElmTmVjZXNzYXJ5KFN0cmluZyYgZXhjZXB0aW9uTWVzc2FnZSkKICAg
ICBpZiAoc291cmNlUHJvdmlkZXIpCiAgICAgICAgIGdsb2JhbFNjb3BlKCktPnNldE1haW5TY3Jp
cHRTb3VyY2VQcm92aWRlcigqc291cmNlUHJvdmlkZXIpOwogCisgICAgaWYgKGV4Y2VwdGlvbk1l
c3NhZ2UuaXNFbXB0eSgpKQorICAgICAgICBSRUxFQVNFX0xPRyhXb3JrZXIsICJXb3JrZXJUaHJl
YWQ6OmV2YWx1YXRlU2NyaXB0SWZOZWNlc3NhcnkoKSBTVUNDRVNTIik7CisgICAgZWxzZQorICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihXb3JrZXIsICJXb3JrZXJUaHJlYWQ6OmV2YWx1YXRlU2Ny
aXB0SWZOZWNlc3NhcnkoKSBGQUlMVVJFICgle3ByaXZhdGV9cykiLCBleGNlcHRpb25NZXNzYWdl
LnV0ZjgoKS5kYXRhKCkpOworCiAgICAgLy8gRnJlZSB0aGUgc3RhcnR1cCBkYXRhIHRvIGNhdXNl
IGl0cyBtZW1iZXIgdmFyaWFibGUgZGVyZWYncyBoYXBwZW4gb24gdGhlIHdvcmtlcidzIHRocmVh
ZCAoc2luY2UKICAgICAvLyBhbGwgcmVmL2RlcmVmcyBvZiB0aGVzZSBvYmplY3RzIGFyZSBoYXBw
ZW5pbmcgb24gdGhlIHRocmVhZCBhdCB0aGlzIHBvaW50KS4gTm90ZSB0aGF0CiAgICAgLy8gV29y
a2VyVGhyZWFkOjp+V29ya2VyVGhyZWFkIGhhcHBlbnMgb24gYSBkaWZmZXJlbnQgdGhyZWFkIHdo
ZXJlIGl0IHdhcyBjcmVhdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAK
aW5kZXggYzY2NjE0ZmEyYzk2Li4yYWMwMmE3ZDRhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZFByb3h5LmNwcApAQCAtNTEsMTEgKzUxLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1zdGF0aWMgVVJMIHRvcE9yaWdpblVSTChjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2lu
KQotewotICAgIHJldHVybiBVUkwgeyBVUkwgeyB9LCBvcmlnaW4udG9SYXdTdHJpbmcoKSB9Owot
fQotCiB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2V0dXBQYWdlRm9yU2VydmljZVdv
cmtlcihQYWdlJiBwYWdlLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEpCiB7
CiAgICAgYXV0byYgbWFpbkZyYW1lID0gcGFnZS5tYWluRnJhbWUoKTsKQEAgLTY4LDggKzYzLDkg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNldHVwUGFnZUZvclNlcnZpY2VXb3Jr
ZXIoUGFnZSYgcGFnZSwgY29uc3QgU2VydmkKICAgICBhdXRvIG9yaWdpbiA9IGRhdGEucmVnaXN0
cmF0aW9uLmtleS50b3BPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigpOwogICAgIG9yaWdpbi0+c2V0
U3RvcmFnZUJsb2NraW5nUG9saWN5KHBhZ2Uuc2V0dGluZ3MoKS5zdG9yYWdlQmxvY2tpbmdQb2xp
Y3koKSk7CiAKLSAgICBkb2N1bWVudC0+c2V0U2l0ZUZvckNvb2tpZXModG9wT3JpZ2luVVJMKG9y
aWdpbikpOwotICAgIGRvY3VtZW50LT5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyh0b3BPcmlnaW5V
Ukwob3JpZ2luKSk7CisgICAgYXV0byBvcmlnaW5Bc1VSTCA9IG9yaWdpbi0+dG9VUkwoKTsKKyAg
ICBkb2N1bWVudC0+c2V0U2l0ZUZvckNvb2tpZXMob3JpZ2luQXNVUkwpOworICAgIGRvY3VtZW50
LT5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhvcmlnaW5Bc1VSTCk7CiAgICAgZG9jdW1lbnQtPnNl
dERvbWFpbkZvckNhY2hlUGFydGl0aW9uKG9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24o
KSk7CiAKICAgICBpZiAoYXV0byBwb2xpY3kgPSBwYXJzZVJlZmVycmVyUG9saWN5KGRhdGEucmVm
ZXJyZXJQb2xpY3ksIFJlZmVycmVyUG9saWN5U291cmNlOjpIVFRQSGVhZGVyKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCmluZGV4IDZhNTliMmVm
ZTlhMS4uOTI2ZDM1NzA3ODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAy
MS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjYsMTMgKzI2LDE3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCiAKKyNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIKICNp
bmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgor
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
TWVzc2FnZUNoYW5uZWwuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgIlJl
c291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlNo
YXJlZFdvcmtlck1hbmFnZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJQcm94eS5oIgorI2lu
Y2x1ZGUgIlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJTaGFyZWRX
b3JrZXJQcm92aWRlci5oIgogI2luY2x1ZGUgIldvcmtlck9wdGlvbnMuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFs
bG9jSW5saW5lcy5oPgpAQCAtNDEsOCArNDUsMzEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoU2hhcmVkV29ya2VyKTsKIAotRXhjZXB0aW9uT3I8
UmVmPFNoYXJlZFdvcmtlcj4+IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVu
dCwgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzLCBTdHJpbmcmJiBzY3JpcHRVUkxTdHJp
bmcsIHN0ZDo6b3B0aW9uYWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYg
bWF5YmVPcHRpb25zKQorI2RlZmluZSBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HKGZtdCwgLi4u
KSBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFtpZGVudGlmaWVyPSV7cHVibGljfXNd
IFNoYXJlZFdvcmtlcjo6IiBmbXQsIHRoaXMsIG1faWRlbnRpZmllci50b1N0cmluZygpLnV0Zjgo
KS5kYXRhKCksICMjX19WQV9BUkdTX18pCisjZGVmaW5lIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9M
T0dfRVJST1IoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKFNoYXJlZFdvcmtlciwgIiVwIC0g
W2lkZW50aWZpZXI9JXtwdWJsaWN9c10gU2hhcmVkV29ya2VyOjoiIGZtdCwgdGhpcywgbV9pZGVu
dGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgIyNfX1ZBX0FSR1NfXykKKworc3RhdGlj
IEhhc2hNYXA8U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgU2hhcmVkV29ya2VyKj4mIGFs
bFNoYXJlZFdvcmtlcnMoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwg
U2hhcmVkV29ya2VyKj4+IGFsbFNoYXJlZFdvcmtlcnM7CisgICAgcmV0dXJuIGFsbFNoYXJlZFdv
cmtlcnM7Cit9CisKK1NoYXJlZFdvcmtlciogU2hhcmVkV29ya2VyOjpmcm9tSWRlbnRpZmllcihT
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIGFs
bFNoYXJlZFdvcmtlcnMoKS5nZXQoaWRlbnRpZmllcik7Cit9CisKK3N0YXRpYyBpbmxpbmUgU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiogbWFpblRocmVhZENvbm5lY3Rpb24oKQogeworICAg
IHJldHVybiBTaGFyZWRXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2hhcmVkV29ya2VyQ29u
bmVjdGlvbigpOworfQorCitFeGNlcHRpb25PcjxSZWY8U2hhcmVkV29ya2VyPj4gU2hhcmVkV29y
a2VyOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmcmJiBzY3JpcHRVUkxTdHJpbmcs
IHN0ZDo6b3B0aW9uYWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYgbWF5
YmVPcHRpb25zKQoreworICAgIGlmICghbWFpblRocmVhZENvbm5lY3Rpb24oKSkKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiU2hhcmVkIHdvcmtlcnMgYXJl
IG5vdCBzdXBwb3J0ZWQiIH07CisKICAgICBpZiAoIWRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCku
Y2FuQWNjZXNzU2hhcmVkV29ya2Vycyhkb2N1bWVudC50b3BPcmlnaW4oKSkpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yLCAiVGhpcyBpZnJhbWUgZG9lc24ndCBoYXZl
IHN0b3JhZ2UgYWNjZXNzIl9zIH07CiAKQEAgLTY3LDI2ICs5NCwzMCBAQCBFeGNlcHRpb25PcjxS
ZWY8U2hhcmVkV29ya2VyPj4gU2hhcmVkV29ya2VyOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50
LCBKU0M6OlJ1bgogICAgIGF1dG8gY2hhbm5lbCA9IE1lc3NhZ2VDaGFubmVsOjpjcmVhdGUoZG9j
dW1lbnQpOwogICAgIGF1dG8gdHJhbnNmZXJyZWRQb3J0ID0gY2hhbm5lbC0+cG9ydDIoKS5kaXNl
bnRhbmdsZSgpOwogCi0gICAgYXV0byBzaGFyZWRXb3JrZXIgPSBhZG9wdFJlZigqbmV3IFNoYXJl
ZFdvcmtlcihkb2N1bWVudCwgY2hhbm5lbC0+cG9ydDEoKSwgcnVudGltZUZsYWdzKSk7CisgICAg
YXV0byBzaGFyZWRXb3JrZXIgPSBhZG9wdFJlZigqbmV3IFNoYXJlZFdvcmtlcihkb2N1bWVudCwg
Y2hhbm5lbC0+cG9ydDEoKSkpOwogICAgIHNoYXJlZFdvcmtlci0+c3VzcGVuZElmTmVlZGVkKCk7
CiAKLSAgICBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0KHVybCwgc2hh
cmVkV29ya2VyLmdldCgpLCBXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCksIFdURk1vdmUob3B0aW9u
cykpOworICAgIENsaWVudE9yaWdpbiBjbGllbnRPcmlnaW4geyBkb2N1bWVudC50b3BEb2N1bWVu
dCgpLnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpLCBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRh
dGEoKSB9OworICAgIG1haW5UaHJlYWRDb25uZWN0aW9uKCktPnJlcXVlc3RTaGFyZWRXb3JrZXIo
Y2xpZW50T3JpZ2luLCBzaGFyZWRXb3JrZXItPmlkZW50aWZpZXIoKSwgdXJsLCBXVEZNb3ZlKHRy
YW5zZmVycmVkUG9ydCksIG9wdGlvbnMpOwogICAgIHJldHVybiBzaGFyZWRXb3JrZXI7CiB9CiAK
LVNoYXJlZFdvcmtlcjo6U2hhcmVkV29ya2VyKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPE1lc3Nh
Z2VQb3J0PiYmIHBvcnQsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncykKK1NoYXJlZFdv
cmtlcjo6U2hhcmVkV29ya2VyKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPE1lc3NhZ2VQb3J0PiYm
IHBvcnQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmRvY3VtZW50KQorICAgICwgbV9pZGVudGlm
aWVyKFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI6OmdlbmVyYXRlKCkpCiAgICAgLCBtX3Bv
cnQoV1RGTW92ZShwb3J0KSkKICAgICAsIG1faWRlbnRpZmllckZvckluc3BlY3RvcigiU2hhcmVk
V29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmll
cigpKQotICAgICwgbV9ydW50aW1lRmxhZ3MocnVudGltZUZsYWdzKQotICAgICwgbV9jcmVhdGlv
blRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkpCi0gICAgLCBtX3Byb3h5KFNoYXJlZFdvcmtlclBy
b3h5OjpjcmVhdGUoKnRoaXMpKQogeworICAgIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coIlNo
YXJlZFdvcmtlcjoiKTsKKyAgICBhbGxTaGFyZWRXb3JrZXJzKCkuYWRkKG1faWRlbnRpZmllciwg
dGhpcyk7CiB9CiAKIFNoYXJlZFdvcmtlcjo6flNoYXJlZFdvcmtlcigpCiB7Ci0gICAgbV9wcm94
eS53b3JrZXJPYmplY3REZXN0cm95ZWQoKTsKKyAgICBBU1NFUlQoYWxsU2hhcmVkV29ya2Vycygp
LmdldChtX2lkZW50aWZpZXIpID09IHRoaXMpOworICAgIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9M
T0coIn5TaGFyZWRXb3JrZXI6Iik7CisgICAgYWxsU2hhcmVkV29ya2VycygpLnJlbW92ZShtX2lk
ZW50aWZpZXIpOworICAgIEFTU0VSVCghbV9pc0FjdGl2ZSk7CiB9CiAKIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIFNoYXJlZFdvcmtlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CkBA
IC0xMDQsMTkgKzEzNSwyNiBAQCBFdmVudFRhcmdldEludGVyZmFjZSBTaGFyZWRXb3JrZXI6OmV2
ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QKICAgICByZXR1cm4gU2hhcmVkV29ya2VyRXZlbnRU
YXJnZXRJbnRlcmZhY2VUeXBlOwogfQogCi12b2lkIFNoYXJlZFdvcmtlcjo6c3RvcCgpCit2b2lk
IFNoYXJlZFdvcmtlcjo6ZGlkRmFpbExvYWRpbmcoKQogewotICAgIHRlcm1pbmF0ZSgpOworICAg
IFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0dfRVJST1IoIn5kaWRGYWlsTG9hZGluZzoiKTsKKyAg
ICBxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxh
dGlvbiwgRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1
YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOworICAgIG1faXNBY3RpdmUgPSBm
YWxzZTsKIH0KIAogYm9vbCBTaGFyZWRXb3JrZXI6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHko
KSBjb25zdAogewotICAgIHJldHVybiBtX3Byb3h5Lmhhc1BlbmRpbmdBY3Rpdml0eSgpIHx8IG1f
aXNMb2FkaW5nOworICAgIHJldHVybiBtX2lzQWN0aXZlOwogfQogCi12b2lkIFNoYXJlZFdvcmtl
cjo6dGVybWluYXRlKCkKK3ZvaWQgU2hhcmVkV29ya2VyOjpzdG9wKCkKIHsKLSAgICBtX3Byb3h5
LnRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCk7CisgICAgU0hBUkVEX1dPUktFUl9SRUxFQVNF
X0xPRygic3RvcDoiKTsKKyAgICBtX2lzQWN0aXZlID0gZmFsc2U7CisgICAgbWFpblRocmVhZENv
bm5lY3Rpb24oKS0+c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkobV9pZGVudGlmaWVyKTsK
IH0KIAorI3VuZGVmIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0cKKyN1bmRlZiBTSEFSRURfV09S
S0VSX1JFTEVBU0VfTE9HX0VSUk9SCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmgKaW5kZXggNTMyNmVlNTQyYzg4
Li44N2NjNzVlZmJlODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI3LDM5ICsyNywzNSBAQAogCiAjaW5jbHVkZSAiQWJzdHJhY3RXb3JrZXIuaCIK
ICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9S
dW50aW1lRmxhZ3MuaD4KKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBNZXNzYWdlUG9ydDsKLWNsYXNzIFNoYXJlZFdvcmtlclByb3h5OworY2xhc3MgUmVz
b3VyY2VFcnJvcjsKIAogc3RydWN0IFdvcmtlck9wdGlvbnM7CiAKIGNsYXNzIFNoYXJlZFdvcmtl
ciBmaW5hbCA6IHB1YmxpYyBBYnN0cmFjdFdvcmtlciwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7
CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChTaGFyZWRXb3JrZXIpOwogcHVibGljOgotICAg
IHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8U2hhcmVkV29ya2VyPj4gY3JlYXRlKERvY3VtZW50Jiwg
SlNDOjpSdW50aW1lRmxhZ3MsIFN0cmluZyYmIHNjcmlwdFVSTCwgc3RkOjpvcHRpb25hbDxzdGQ6
OnZhcmlhbnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlv
bk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBjcmVhdGUoRG9jdW1lbnQmLCBTdHJpbmcmJiBzY3JpcHRV
UkwsIHN0ZDo6b3B0aW9uYWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYp
OwogICAgIH5TaGFyZWRXb3JrZXIoKTsKIAorICAgIHN0YXRpYyBTaGFyZWRXb3JrZXIqIGZyb21J
ZGVudGlmaWVyKFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIFNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmll
cjsgfQogICAgIE1lc3NhZ2VQb3J0JiBwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9wb3J0LmdldCgp
OyB9Ci0gICAgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKCkgeyByZXR1cm4gbV9ydW50
aW1lRmxhZ3M7IH0KIAogICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllckZvckluc3BlY3Rvcigp
IGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckluc3BlY3RvcjsgfQotICAgIE1vbm90b25p
Y1RpbWUgY3JlYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdGlvblRpbWU7IH0KIAot
ICAgIFNoYXJlZFdvcmtlclByb3h5JiBwcm94eSgpIHsgcmV0dXJuIG1fcHJveHk7IH0KLQotICAg
IHZvaWQgc2V0SXNMb2FkaW5nKGJvb2wgaXNMb2FkaW5nKSB7IG1faXNMb2FkaW5nID0gaXNMb2Fk
aW5nOyB9CisgICAgdm9pZCBkaWRGYWlsTG9hZGluZygpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQu
CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0IGZpbmFsOwogCiBwcml2YXRlOgotICAgIFNoYXJlZFdvcmtlcihEb2N1bWVudCYsIFJlZjxN
ZXNzYWdlUG9ydD4mJiwgSlNDOjpSdW50aW1lRmxhZ3MpOwotCi0gICAgdm9pZCB0ZXJtaW5hdGUo
KTsKKyAgICBTaGFyZWRXb3JrZXIoRG9jdW1lbnQmLCBSZWY8TWVzc2FnZVBvcnQ+JiYpOwogCiAg
ICAgLy8gRXZlbnRUYXJnZXQuCiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJ
bnRlcmZhY2UoKSBjb25zdCBmaW5hbDsKQEAgLTcwLDEyICs2NiwxMCBAQCBwcml2YXRlOgogICAg
IGJvb2wgdmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwogCiAKKyAgICBT
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBSZWY8TWVzc2Fn
ZVBvcnQ+IG1fcG9ydDsKICAgICBTdHJpbmcgbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yOwotICAg
IEpTQzo6UnVudGltZUZsYWdzIG1fcnVudGltZUZsYWdzOwotICAgIE1vbm90b25pY1RpbWUgbV9j
cmVhdGlvblRpbWU7Ci0gICAgU2hhcmVkV29ya2VyUHJveHkmIG1fcHJveHk7IC8vIFRoZSBwcm94
eSBvdXRsaXZlcyB0aGUgd29ya2VyIHRvIHBlcmZvcm0gdGhyZWFkIHNodXRkb3duLgotICAgIGJv
b2wgbV9pc0xvYWRpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0FjdGl2ZSB7IHRydWUgfTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9TaGFyZWRXb3JrZXIuaWRsCmluZGV4IGIxNzFjOWVkZjgxYi4uNGM3NDE1NGQ4MjA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5pZGwK
QEAgLTI4LDcgKzI4LDcgQEAKICAgICBFeHBvc2VkPVdpbmRvdwogXQogaW50ZXJmYWNlIFNoYXJl
ZFdvcmtlciA6IEV2ZW50VGFyZ2V0IHsKLSAgW0NhbGxXaXRoPURvY3VtZW50JlJ1bnRpbWVGbGFn
c10gY29uc3RydWN0b3IoVVNWU3RyaW5nIHNjcmlwdFVSTCwgb3B0aW9uYWwgKERPTVN0cmluZyBv
ciBXb3JrZXJPcHRpb25zKSBvcHRpb25zKTsKKyAgW0NhbGxXaXRoPURvY3VtZW50XSBjb25zdHJ1
Y3RvcihVU1ZTdHJpbmcgc2NyaXB0VVJMLCBvcHRpb25hbCAoRE9NU3RyaW5nIG9yIFdvcmtlck9w
dGlvbnMpIG9wdGlvbnMpOwogCiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZXNzYWdlUG9ydCBwb3J0
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA0MTIxZWI1OGMyMDUuLjNjNTVhNjg3YmY4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xv
YmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgiCiAKKyNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgor
I2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkLmgiCiAjaW5j
bHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4K
IApAQCAtMzMsMTcgKzM5LDQ0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlKTsKIAorI2RlZmluZSBTQ09Q
RV9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBb
c2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gU2hhcmVkV29ya2VyR2xvYmFsU2Nv
cGU6OiIgZm10LCB0aGlzLCB0aGlzLT50aHJlYWQoKS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwg
IyNfX1ZBX0FSR1NfXykKKwogU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OlNoYXJlZFdvcmtlckds
b2JhbFNjb3BlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFy
YW1zLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBXb3JrZXJUaHJlYWQmIHRocmVhZCwg
UmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9u
UHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKQog
ICAgIDogV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyVGhyZWFkVHlwZTo6U2hhcmVkV29ya2VyLCBw
YXJhbXMsIFdURk1vdmUob3JpZ2luKSwgdGhyZWFkLCBXVEZNb3ZlKHRvcE9yaWdpbiksIGNvbm5l
Y3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIpCiAgICAgLCBtX25hbWUobmFtZSkKIHsKKyAgICBT
Q09QRV9SRUxFQVNFX0xPRygiU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6Iik7CiAgICAgcmVsYXhB
ZG9wdGlvblJlcXVpcmVtZW50KCk7CiAgICAgYXBwbHlDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnMocGFyYW1zLmNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyk7
CiB9CiAKK1NoYXJlZFdvcmtlclRocmVhZCYgU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OnRocmVh
ZCgpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNoYXJlZFdvcmtlclRocmVhZCY+KFdvcmtl
ckdsb2JhbFNjb3BlOjp0aHJlYWQoKSk7Cit9CisKIHZvaWQgU2hhcmVkV29ya2VyR2xvYmFsU2Nv
cGU6OmNsb3NlKCkKIHsKKyAgICBTQ09QRV9SRUxFQVNFX0xPRygiY2xvc2U6Iik7CiAgICAgdGhy
ZWFkKCkuc3RvcChudWxscHRyKTsKIH0KIAorLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9y
Zy9tdWx0aXBhZ2Uvd29ya2Vycy5odG1sI2RvbS1zaGFyZWR3b3JrZXIgc3RlcCAxMS41Cit2b2lk
IFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0Q29ubmVjdEV2ZW50KFRyYW5zZmVycmVkTWVz
c2FnZVBvcnQmJiB0cmFuc2ZlcnJlZFBvcnQsIFN0cmluZyYmIHNvdXJjZU9yaWdpbikKK3sKKyAg
ICBTQ09QRV9SRUxFQVNFX0xPRygicG9zdENvbm5lY3RFdmVudDoiKTsKKyAgICBhdXRvIHNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCIiKTsKKyAg
ICBBU1NFUlQoc2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKKyAgICBhdXRvIHBvcnRzID0gTWVzc2Fn
ZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKnRoaXMsIHsgV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpIH0p
OworICAgIEFTU0VSVChwb3J0cy5zaXplKCkgPT0gMSk7CisgICAgYXV0byBwb3J0ID0gcG9ydHNb
MF07CisgICAgQVNTRVJUKHBvcnQpOworICAgIGF1dG8gZXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNy
ZWF0ZShXVEZNb3ZlKHBvcnRzKSwgc2VyaWFsaXplZFNjcmlwdFZhbHVlLnJlbGVhc2VOb25OdWxs
KCksIHNvdXJjZU9yaWdpbiwgeyB9LCBwb3J0KTsKKyAgICBldmVudC0+aW5pdEV2ZW50KGV2ZW50
TmFtZXMoKS5jb25uZWN0RXZlbnQsIGZhbHNlLCBmYWxzZSk7CisKKyAgICBkaXNwYXRjaEV2ZW50
KFdURk1vdmUoZXZlbnQpKTsKK30KKworI3VuZGVmIFNDT1BFX1JFTEVBU0VfTE9HCisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IGYzNzc5Yjg0ZDE1MC4uMTVkZGM1
MzhkYjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1No
YXJlZFdvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMTEgKzI1LDEzIEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaCIKICNpbmNsdWRlICJXb3JrZXJH
bG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWQ7CiBzdHJ1Y3QgV29ya2VyUGFyYW1l
dGVyczsKIAogY2xhc3MgU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUgZmluYWwgOiBwdWJsaWMgV29y
a2VyR2xvYmFsU2NvcGUgewpAQCAtMzksNyArNDEsMTEgQEAgcHVibGljOgogCiAgICAgVHlwZSB0
eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gVHlwZTo6U2hhcmVkV29ya2VyOyB9CiAgICAgY29u
c3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgU2hhcmVkV29y
a2VyVGhyZWFkJiB0aHJlYWQoKTsKKworICAgIHZvaWQgcG9zdENvbm5lY3RFdmVudChUcmFuc2Zl
cnJlZE1lc3NhZ2VQb3J0JiYsIFN0cmluZyYmIHNvdXJjZU9yaWdpbik7CiAgICAgdm9pZCBjbG9z
ZSgpOworCiBwcml2YXRlOgogICAgIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiwg
V29ya2VyVGhyZWFkJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50
OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciopOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJJZGVudGlmaWVyLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44N2E5NzIxMDQ4NzkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitlbnVtIFNoYXJlZFdvcmtlcklkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFNoYXJlZFdv
cmtlcklkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFNoYXJlZFdvcmtlcklkZW50aWZpZXJU
eXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLjVmOWU2ZGM5MGJhOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlcktleS5oCkBAIC0wLDAgKzEsODEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNsaWVudE9yaWdpbi5oIgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoZXIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFNoYXJl
ZFdvcmtlcktleSB7CisgICAgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbjsKKyAgICBVUkwg
dXJsOworICAgIFN0cmluZyBuYW1lOworCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OworfTsK
KworaW5saW5lIHVuc2lnbmVkIFNoYXJlZFdvcmtlcktleTo6aGFzaCgpIGNvbnN0Cit7CisgICAg
SGFzaGVyIGhhc2hlcjsKKyAgICBhZGQoaGFzaGVyLCBvcmlnaW4uaGFzaCgpKTsKKyAgICBhZGQo
aGFzaGVyLCB1cmwpOworICAgIGFkZChoYXNoZXIsIG5hbWUpOworICAgIHJldHVybiBoYXNoZXIu
aGFzaCgpOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZFdvcmtlcktl
eSYgYSwgY29uc3QgU2hhcmVkV29ya2VyS2V5JiBiKQoreworICAgIHJldHVybiBhLm9yaWdpbiA9
PSBiLm9yaWdpbiAmJiBhLnVybCA9PSBiLnVybCAmJiBhLm5hbWUgPT0gYi5uYW1lOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0
cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk+IHsKKyAgICBzdGF0aWMg
dW5zaWduZWQgaGFzaChjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIGtleSkKKyAgICB7
CisgICAgICAgIHJldHVybiBrZXkuaGFzaCgpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGVx
dWFsKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgYSwgY29uc3QgV2ViQ29yZTo6U2hh
cmVkV29ya2VyS2V5JiBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGEgPT0gYjsKKyAgICB9CisK
KyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZh
bHNlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpTaGFyZWRX
b3JrZXJLZXk+IDogR2VuZXJpY0hhc2hUcmFpdHM8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5PiB7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsKKyAg
ICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6U2hhcmVkV29ya2Vy
S2V5JiBzbG90KSB7IG5ldyAoTm90TnVsbCwgJnNsb3QudXJsKSBVUkwoV1RGOjpIYXNoVGFibGVE
ZWxldGVkVmFsdWUpOyB9CisgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgV2Vi
Q29yZTo6U2hhcmVkV29ya2VyS2V5JiBzbG90KSB7IHJldHVybiBzbG90LnVybC5pc0hhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSgpOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxMjZiYzRmZWQ4Ny4uMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMTIyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyTWFuYWdlci5oIgotCi0jaW5jbHVkZSAi
Q29udGVudFNlY3VyaXR5UG9saWN5LmgiCi0jaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1
ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCi0jaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCi0jaW5jbHVk
ZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCi0jaW5j
bHVkZSAiU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJQ
cm94eS5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oIgotI2luY2x1ZGUg
IlNoYXJlZFdvcmtlclRocmVhZC5oIgotI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKLSNpbmNs
dWRlICJXb3JrZXJTY3JpcHRMb2FkZXIuaCIKLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVNo
YXJlZFdvcmtlck1hbmFnZXImIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNpbmdsZXRvbigpCi17Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYXJlZFdvcmtlck1hbmFnZXI+IGluc3RhbmNlOwot
ICAgIHJldHVybiBpbnN0YW5jZS5nZXQoKTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJNYW5hZ2Vy
Ojpjb25uZWN0KGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRXb3JrZXImIHdvcmtlciwgVHJhbnNmZXJy
ZWRNZXNzYWdlUG9ydCYmIG1lc3NhZ2VQb3J0LCBXb3JrZXJPcHRpb25zJiYgb3B0aW9ucykKLXsK
LSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIC8vIEZJWE1FOiBIYW5kbGUgd29y
a2VycyBmcm9tIG90aGVyIHByb2Nlc3Nlcywgd2hpY2ggd2lsbCBwcm9iYWJseSByZXF1aXJlIG1v
dmluZyBjb25uZWN0IHRvIHRoZSBGcmFtZUxvYWRlckNsaWVudCBvciBzb21ldGhpbmcuCi0gICAg
Ly8gTWF5YmUgc29tZXRoaW5nIG1vcmUgbGlrZSB3aGF0IFNlcnZpY2VXb3JrZXJzIGRvZXMuCi0K
LSAgICAvLyBGSVhNRTogQ2hlY2sgaWYgd2UgYWxyZWFkeSBtYWRlIGEgdGhyZWFkLgotICAgIC8v
IEZJWE1FOiBDaGVjayBpZiB0aGVyZSdzIGFscmVhZHkgYSBzaGFyZWQgd29ya2VyIGFuZCB1c2Ug
dGhhdCBpZiB0aGVyZSBpcy4KLQotICAgIGF1dG8gbG9hZGVyID0gbWFrZVVuaXF1ZVJlZjxTaGFy
ZWRXb3JrZXJTY3JpcHRMb2FkZXI+KHVybCwgd29ya2VyLCBXVEZNb3ZlKG1lc3NhZ2VQb3J0KSwg
V1RGTW92ZShvcHRpb25zKSk7Ci0gICAgYXV0byBpZGVudGlmaWVyID0gbG9hZGVyLT5pZGVudGlm
aWVyKCk7Ci0gICAgbV9sb2FkZXJzLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKGxvYWRlcikpOwot
fQotCi12b2lkIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNjcmlwdExvYWRGYWlsZWQoU2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyJiBsb2FkZXIpCi17Ci0gICAgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRh
c2tUb0Rpc3BhdGNoRXZlbnQobG9hZGVyLndvcmtlcigpLCBUYXNrU291cmNlOjpET01NYW5pcHVs
YXRpb24sIEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2ZW50OjpDYW5C
dWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKLSAgICBtX2xvYWRlcnMucmVt
b3ZlKGxvYWRlci5pZGVudGlmaWVyKCkpOwotfQotCi12b2lkIFNoYXJlZFdvcmtlck1hbmFnZXI6
OnNjcmlwdExvYWRlZFN1Y2Nlc3NmdWxseShTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXImIGxvYWRl
ciwgY29uc3QgU2NyaXB0QnVmZmVyJiBzY3JpcHRCdWZmZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFNoYXJlZFdvcmtlciYgc2hhcmVkV29ya2VyLCBU
cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgdHJhbnNmZXJyZWRQb3J0KQotewotICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7Ci0gICAgYXV0byYgd29ya2VyID0gbG9hZGVyLndvcmtlcigpOwot
ICAgIGF1dG8mIG9wdGlvbnMgPSBsb2FkZXIub3B0aW9ucygpOwotCi0gICAgYXV0byYgcHJveHkg
PSBzaGFyZWRXb3JrZXIucHJveHkoKTsKLQotICAgIHByb3h5LnN0YXJ0V29ya2VyR2xvYmFsU2Nv
cGUoCi0gICAgICAgIGxvYWRlci51cmwoKSwKLSAgICAgICAgb3B0aW9ucy5uYW1lLAotICAgICAg
ICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LnVzZXJBZ2VudChsb2FkZXIudXJsKCkpLAotICAgICAg
ICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+aXNPbkxpbmUoKSwKLSAg
ICAgICAgc2NyaXB0QnVmZmVyLAotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LmNvbnRl
bnRTZWN1cml0eVBvbGljeSgpLT5yZXNwb25zZUhlYWRlcnMoKSwKLSAgICAgICAgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ko
KSwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcm9zc09yaWdpbkVtYmVkZGVyUG9s
aWN5KCksCi0gICAgICAgIHdvcmtlci5jcmVhdGlvblRpbWUoKSwKLSAgICAgICAgUmVmZXJyZXJQ
b2xpY3k6OkVtcHR5U3RyaW5nLAotICAgICAgICBvcHRpb25zLnR5cGUsCi0gICAgICAgIG9wdGlv
bnMuY3JlZGVudGlhbHMsCi0gICAgICAgIHdvcmtlci5ydW50aW1lRmxhZ3MoKQotICAgICk7Ci0g
ICAgaWYgKCFwcm94eS50aHJlYWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUkVMRUFTRV9B
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxEb2N1bWVudD4oc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCkpOwotICAgIGF1dG8gc291cmNlT3JpZ2luID0gZG93bmNhc3Q8RG9jdW1lbnQ+
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmcoKTsKLQot
ICAgIHByb3h5LnRocmVhZCgpLT5ydW5Mb29wKCkucG9zdFRhc2soW3RyYW5zZmVycmVkUG9ydCA9
IFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwgc291cmNlT3JpZ2luID0gV1RGTW92ZShzb3VyY2VP
cmlnaW4pLmlzb2xhdGVkQ29weSgpXSAoYXV0byYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgbXV0
YWJsZSB7Ci0gICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgICAgIC8v
IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dvcmtlcnMuaHRtbCNkb20t
c2hhcmVkd29ya2VyIHN0ZXAgMTEuNQotICAgICAgICBhdXRvIHNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCIiKTsKLSAgICAgICAgQVNTRVJUKHNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSk7Ci0gICAgICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9ydDo6
ZW50YW5nbGVQb3J0cyhzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB7IFdURk1vdmUodHJhbnNmZXJy
ZWRQb3J0KSB9KTsKLSAgICAgICAgQVNTRVJUKHBvcnRzLnNpemUoKSA9PSAxKTsKLSAgICAgICAg
YXV0byBwb3J0ID0gcG9ydHNbMF07Ci0gICAgICAgIEFTU0VSVChwb3J0KTsKLSAgICAgICAgYXV0
byBldmVudCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUocG9ydHMpLCBzZXJpYWxpemVk
U2NyaXB0VmFsdWUucmVsZWFzZU5vbk51bGwoKSwgc291cmNlT3JpZ2luLCB7IH0sIHBvcnQpOwot
ICAgICAgICBldmVudC0+aW5pdEV2ZW50KGV2ZW50TmFtZXMoKS5jb25uZWN0RXZlbnQsIGZhbHNl
LCBmYWxzZSk7Ci0KLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTihpczxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkp
OwotICAgICAgICBhdXRvJiB3b3JrZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFNoYXJlZFdvcmtl
ckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICAgICAgd29ya2VyR2xv
YmFsU2NvcGUuZGlzcGF0Y2hFdmVudChXVEZNb3ZlKGV2ZW50KSk7Ci0gICAgfSk7Ci0KLSAgICBt
X2xvYWRlcnMucmVtb3ZlKGxvYWRlci5pZGVudGlmaWVyKCkpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uYzZlYjZhMDAxMmNlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5j
cHAKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJBY3Rp
dmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJFcnJvckV2ZW50LmgiCisjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgIlNjcmlwdEJ1ZmZlci5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5o
IgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKKyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFT
RV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjoi
IGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xP
R19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoU2hhcmVkV29ya2VyLCAiJXAgLSBT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykK
Kworc3RhdGljIHVpbnQ2NF90IGxvYWRlcklkZW50aWZpZXJTZWVkID0gMDsKKworU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbjo6U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpID0gZGVm
YXVsdDsKKworU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6flNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CisKK3ZvaWQgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbjo6ZmV0Y2hTY3JpcHRJbkNsaWVudChVUkwmJiB1cmwsIFdlYkNvcmU6OlNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV29ya2VyT3B0
aW9ucyYmIHdvcmtlck9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2NyaXB0QnVmZmVy
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
CisgICAgYXV0byogd29ya2VyT2JqZWN0ID0gU2hhcmVkV29ya2VyOjpmcm9tSWRlbnRpZmllcihz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9H
KCJmZXRjaFNjcmlwdEluQ2xpZW50OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVi
bGljfXMsIHdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmco
KS51dGY4KCkuZGF0YSgpLCB3b3JrZXJPYmplY3QpOworICAgIGlmICghd29ya2VyT2JqZWN0KQor
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKworICAgIGF1dG8gbG9hZGVy
SWRlbnRpZmllciA9ICsrbG9hZGVySWRlbnRpZmllclNlZWQ7CisgICAgYXV0byBsb2FkZXIgPSBt
YWtlVW5pcXVlUmVmPFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj4oV1RGTW92ZSh1cmwpLCAqd29y
a2VyT2JqZWN0LCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMpKTsKKyAgICBhdXRvIGxvYWRlclB0ciA9
IGxvYWRlci5wdHIoKTsKKyAgICBtX2xvYWRlcnMuYWRkKGxvYWRlcklkZW50aWZpZXIsIFdURk1v
dmUobG9hZGVyKSk7CisKKyAgICBsb2FkZXJQdHItPmxvYWQoW3RoaXMsIGxvYWRlcklkZW50aWZp
ZXIsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNjcmlw
dEJ1ZmZlciBzY3JpcHRCdWZmZXIpIG11dGFibGUgeworICAgICAgICBDT05ORUNUSU9OX1JFTEVB
U0VfTE9HKCJmZXRjaFNjcmlwdEluQ2xpZW50OiBmaW5pc2hlZCBzY3JpcHQgbG9hZCwgc3VjY2Vz
cz0lZCIsICEhc2NyaXB0QnVmZmVyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc2NyaXB0
QnVmZmVyKTsKKyAgICAgICAgbV9sb2FkZXJzLnJlbW92ZShsb2FkZXJJZGVudGlmaWVyKTsKKyAg
ICB9KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpub3RpZnlXb3Jr
ZXJPYmplY3RPZkxvYWRGYWlsdXJlKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIGF1dG8qIHdvcmtlck9iamVjdCA9IFNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50
aWZpZXIoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgQ09OTkVDVElPTl9SRUxF
QVNFX0xPR19FUlJPUigibm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkRmFpbHVyZTogc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zLCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgd29ya2VyT2JqZWN0KTsK
KyAgICBpZiAod29ya2VyT2JqZWN0KQorICAgICAgICB3b3JrZXJPYmplY3QtPmRpZEZhaWxMb2Fk
aW5nKCk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6cG9zdEV4Y2Vw
dGlvblRvV29ya2VyT2JqZWN0KFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8qIHdvcmtlck9iamVjdCA9IFNoYXJl
ZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7Cisg
ICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUigicG9zdEV4Y2VwdGlvblRvV29ya2VyT2Jq
ZWN0OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMsIHdvcmtlcj0lcCIs
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB3
b3JrZXJPYmplY3QpOworICAgIGlmICh3b3JrZXJPYmplY3QpCisgICAgICAgIEFjdGl2ZURPTU9i
amVjdDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCp3b3JrZXJPYmplY3QsIFRhc2tTb3VyY2U6
OkRPTU1hbmlwdWxhdGlvbiwgRXJyb3JFdmVudDo6Y3JlYXRlKGVycm9yTWVzc2FnZSwgc291cmNl
VVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHsgfSkpOworfQorCisjdW5kZWYgQ09OTkVD
VElPTl9SRUxFQVNFX0xPRworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZThmMGMzMmI3ZDY4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbi5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIk1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmgiCisjaW5jbHVkZSAiU2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lc3NhZ2VQb3J0OworY2xhc3MgU2NyaXB0QnVmZmVyOwor
Y2xhc3MgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOworCitzdHJ1Y3QgQ2xpZW50T3JpZ2luOwor
c3RydWN0IFdvcmtlck9wdGlvbnM7CisKK2NsYXNzIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b24gOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uPiB7Citw
dWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbigpOworCisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoY29uc3Qg
Q2xpZW50T3JpZ2luJiwgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgVVJMJiwg
VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBjb25zdCBXb3JrZXJPcHRpb25zJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICAvLyBJUEMgbWVzc2FnZXMu
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmZXRjaFNjcmlwdEluQ2xpZW50KFVSTCYmLCBXZWJD
b3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXb3JrZXJPcHRpb25zJiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU2NyaXB0QnVmZmVyKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRGYWlsdXJlKFdlYkNvcmU6OlNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdEV4Y2VwdGlv
blRvV29ya2VyT2JqZWN0KFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwpOworCisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbigpOworCitwcml2YXRlOgorICAgIEhhc2hNYXA8dWludDY0X3QsIFVuaXF1
ZVJlZjxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+PiBtX2xvYWRlcnM7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lYmNkNGE3YWU4N2EKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiUHJvY2Vzc1F1YWxpZmllZC5oIgorI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyVHlwZSB7IH07Cit1c2luZyBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyID0gUHJvY2Vz
c1F1YWxpZmllZDxPYmplY3RJZGVudGlmaWVyPFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXJU
eXBlPj47CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZkOGUxOTdmYTI0MgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmNw
cApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlNoYXJlZFdvcmtlclByb3ZpZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RhdGljIFNoYXJlZFdvcmtlclByb3ZpZGVyKiBzaGFyZWRQcm92aWRlcjsKKworLy8gRm9yIFdl
YktpdExlZ2FjeS4KK2NsYXNzIER1bW15U2hhcmVkV29ya2VyUHJvdmlkZXIgZmluYWwgOiBwdWJs
aWMgU2hhcmVkV29ya2VyUHJvdmlkZXIgeworcHVibGljOgorICAgIFNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24qIHNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKSBmaW5hbCB7IHJldHVybiBudWxs
cHRyOyB9Cit9OworCitTaGFyZWRXb3JrZXJQcm92aWRlciYgU2hhcmVkV29ya2VyUHJvdmlkZXI6
OnNpbmdsZXRvbigpCit7CisgICAgaWYgKCFzaGFyZWRQcm92aWRlcikKKyAgICAgICAgc2hhcmVk
UHJvdmlkZXIgPSBuZXcgRHVtbXlTaGFyZWRXb3JrZXJQcm92aWRlcjsKKyAgICByZXR1cm4gKnNo
YXJlZFByb3ZpZGVyOworfQorCit2b2lkIFNoYXJlZFdvcmtlclByb3ZpZGVyOjpzZXRTaGFyZWRQ
cm92aWRlcihTaGFyZWRXb3JrZXJQcm92aWRlciYgbmV3UHJvdmlkZXIpCit7CisgICAgUkVMRUFT
RV9BU1NFUlQoIXNoYXJlZFByb3ZpZGVyKTsKKyAgICBzaGFyZWRQcm92aWRlciA9ICZuZXdQcm92
aWRlcjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJvdmlkZXIuaApzaW1pbGFyaXR5IGluZGV4
IDY0JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJNYW5hZ2VyLmgKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlclByb3ZpZGVyLmgKaW5kZXggYWVmODI3OTAzNTg0Li5jYjU3Y2MxZTdiNWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRl
ci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
NSwyNiArMjUsMTcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJNZXNzYWdlUG9ydElk
ZW50aWZpZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCIKLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRXb3JrZXI7Ci1jbGFzcyBTY3JpcHRCdWZm
ZXI7Ci1zdHJ1Y3QgV29ya2VyT3B0aW9uczsKLXVzaW5nIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQg
PSBzdGQ6OnBhaXI8V2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNz
YWdlUG9ydElkZW50aWZpZXI+OworY2xhc3MgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjsK
IAotY2xhc3MgU2hhcmVkV29ya2VyTWFuYWdlciB7CitjbGFzcyBTaGFyZWRXb3JrZXJQcm92aWRl
ciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFNoYXJlZFdvcmtlck1hbmFnZXImIHNpbmdsZXRvbigp
OwotICAgIHZvaWQgY29ubmVjdChjb25zdCBVUkwmLCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJl
ZE1lc3NhZ2VQb3J0JiYsIFdvcmtlck9wdGlvbnMmJik7Ci0KLSAgICB2b2lkIHNjcmlwdExvYWRG
YWlsZWQoU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJik7Ci0gICAgdm9pZCBzY3JpcHRMb2FkZWRT
dWNjZXNzZnVsbHkoU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJiwgY29uc3QgU2NyaXB0QnVmZmVy
JiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFNoYXJlZFdvcmtlciYsIFRyYW5zZmVycmVkTWVz
c2FnZVBvcnQmJik7CisgICAgc3RhdGljIFNoYXJlZFdvcmtlclByb3ZpZGVyJiBzaW5nbGV0b24o
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRTaGFyZWRQcm92aWRlcihTaGFy
ZWRXb3JrZXJQcm92aWRlciYpOwogCi1wcml2YXRlOgotICAgIEhhc2hNYXA8U2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVySWRlbnRpZmllciwgVW5pcXVlUmVmPFNoYXJlZFdvcmtlclNjcmlwdExvYWRl
cj4+IG1fbG9hZGVyczsKKyAgICB2aXJ0dWFsIH5TaGFyZWRXb3JrZXJQcm92aWRlcigpIHsgfQor
ICAgIHZpcnR1YWwgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiogc2hhcmVkV29ya2VyQ29u
bmVjdGlvbigpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3h5LmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2JlMDc1M2Y4OTFkLi4wMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJveHkuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMjMzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyUHJveHkuaCIKLQotI2luY2x1ZGUgIkNhY2hlU3Rv
cmFnZVByb3ZpZGVyLmgiCi0jaW5jbHVkZSAiRXJyb3JFdmVudC5oIgotI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKLSNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgotI2luY2x1ZGUgIk1lc3Nh
Z2VFdmVudC5oIgotI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCi0jaW5jbHVkZSAiUGFnZS5oIgot
I2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24uaCIKLSNpbmNs
dWRlICJTaGFyZWRXb3JrZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5o
IgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlclRocmVhZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLVNoYXJlZFdvcmtlclByb3h5OjpTaGFyZWRXb3JrZXJQcm94eShTaGFyZWRXb3JrZXImIHNo
YXJlZFdvcmtlcikKLSAgICA6IG1fc2hhcmVkV29ya2VyKHNoYXJlZFdvcmtlcikKLSAgICAsIG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dChzaGFyZWRXb3JrZXIuc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKQotICAgICwgbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yKHNoYXJlZFdvcmtlci5pZGVudGlm
aWVyRm9ySW5zcGVjdG9yKCkpCi17Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnN0YXJ0
V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUsIGNvbnN0IFNjcmlwdEJ1
ZmZlciYgc2NyaXB0QnVmZmVyLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywgYm9vbCBzaG91bGRC
eXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnN0IENyb3NzT3JpZ2luRW1i
ZWRkZXJQb2xpY3kmIGNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ksIE1vbm90b25pY1RpbWUgdGlt
ZU9yaWdpbiwgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUgd29ya2Vy
VHlwZSwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVudGlhbHMsIEpTQzo6UnVudGltZUZs
YWdzIHJ1bnRpbWVGbGFncykKLXsKLSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBhdXRvIHBhcmFtZXRlcnMgPSBXb3JrZXJQYXJhbWV0ZXJzIHsKLSAg
ICAgICAgc2NyaXB0VVJMLAotICAgICAgICBuYW1lLAotICAgICAgICBtX2lkZW50aWZpZXJGb3JJ
bnNwZWN0b3IsCi0gICAgICAgIHVzZXJBZ2VudCwKLSAgICAgICAgaXNPbmxpbmUsCi0gICAgICAg
IGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywKLSAgICAgICAgc2hvdWxkQnlw
YXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LAotICAgICAgICBjcm9zc09yaWdpbkVt
YmVkZGVyUG9saWN5LAotICAgICAgICB0aW1lT3JpZ2luLAotICAgICAgICByZWZlcnJlclBvbGlj
eSwKLSAgICAgICAgd29ya2VyVHlwZSwKLSAgICAgICAgY3JlZGVudGlhbHMsCi0gICAgICAgIG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2V0dGluZ3NWYWx1ZXMoKQotICAgIH07Ci0KLSAgICBp
ZiAoIW1fd29ya2VyVGhyZWFkKSB7Ci0gICAgICAgIG1fd29ya2VyVGhyZWFkID0gU2hhcmVkV29y
a2VyVGhyZWFkOjpjcmVhdGUocGFyYW1ldGVycywgc2NyaXB0QnVmZmVyLCAqdGhpcywgKnRoaXMs
ICp0aGlzLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0LT50b3BPcmlnaW4oKSwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pZGJDb25uZWN0
aW9uUHJveHkoKSwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zb2NrZXRQcm92aWRlcigpLCBy
dW50aW1lRmxhZ3MpOwotICAgICAgICBtX3dvcmtlclRocmVhZC0+c3RhcnQoKTsKLSAgICB9Ci19
Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCkK
LXsKLSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBt
X2Fza2VkVG9UZXJtaW5hdGUgPSB0cnVlOwotICAgIGlmIChtX3dvcmtlclRocmVhZCkKLSAgICAg
ICAgbV93b3JrZXJUaHJlYWQtPnN0b3AobnVsbHB0cik7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2Vy
UHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0cyYmIG1lc3NhZ2UpCi17Ci0gICAgLy8gRklYTUU6IFNoYXJlZFdvcmtlciBkb2Vzbid0IGhh
dmUgcG9zdE1lc3NhZ2UsIHNvIHRoaXMgbWlnaHQgbm90IGJlIG5lY2Vzc2FyeS4KLSAgICBwb3N0
VGFza1RvV29ya2VyR2xvYmFsU2NvcGUoW21lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpXShhdXRv
JiBzY3JpcHRDb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byYgY29udGV4dCA9IGRvd25j
YXN0PFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRDb250ZXh0KTsKLSAgICAgICAgYXV0
byBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKHNjcmlwdENvbnRleHQsIFdURk1v
dmUobWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRzKSk7Ci0gICAgICAgIGNvbnRleHQuZGlzcGF0Y2hF
dmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgbWVzc2FnZS5tZXNzYWdl
LnJlbGVhc2VOb25OdWxsKCkpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94
eTo6cG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpPiYmIHRhc2spCi17Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soV1RG
TW92ZSh0YXNrKSk7Ci19Ci0KLWJvb2wgU2hhcmVkV29ya2VyUHJveHk6Omhhc1BlbmRpbmdBY3Rp
dml0eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faGFzUGVuZGluZ0FjdGl2aXR5ICYmICFtX2Fz
a2VkVG9UZXJtaW5hdGU7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6Ondvcmtlck9iamVj
dERlc3Ryb3llZCgpCi17Ci0gICAgbV9zaGFyZWRXb3JrZXIgPSBudWxscHRyOwotICAgIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXNdIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JikgewotICAgICAgICBtX21heUJlRGVzdHJveWVkID0gdHJ1ZTsKLSAgICAgICAgaWYgKG1f
d29ya2VyVGhyZWFkKQotICAgICAgICAgICAgdGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRl
cm5hbCgpOwotICAgIH0pOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5Ojpub3RpZnlOZXR3
b3JrU3RhdGVDaGFuZ2UoYm9vbCBpc09ubGluZSkKLXsKLSAgICBpZiAobV9hc2tlZFRvVGVybWlu
YXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1fd29ya2VyVGhyZWFkKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFtpc09u
bGluZV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgYXV0byYg
Z2xvYmFsU2NvcGUgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCk7Ci0gICAg
ICAgIGdsb2JhbFNjb3BlLnNldElzT25saW5lKGlzT25saW5lKTsKLSAgICAgICAgZ2xvYmFsU2Nv
cGUuZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGlzT25saW5lID8gZXZlbnROYW1lcygpLm9u
bGluZUV2ZW50IDogZXZlbnROYW1lcygpLm9mZmxpbmVFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6
Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2hhcmVk
V29ya2VyUHJveHk6OnN1c3BlbmRGb3JCYWNrRm9yd2FyZENhY2hlKCkKLXsKLQotfQotCi12b2lk
IFNoYXJlZFdvcmtlclByb3h5OjpyZXN1bWVGb3JCYWNrRm9yd2FyZENhY2hlKCkKLXsKLQotfQot
Ci12b2lkIFNoYXJlZFdvcmtlclByb3h5Ojpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKLXsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPnBvc3RUYXNrKFt0aGlzLCBlcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2UuaXNvbGF0ZWRD
b3B5KCksIHNvdXJjZVVSTCA9IHNvdXJjZVVSTC5pc29sYXRlZENvcHkoKSwgbGluZU51bWJlciwg
Y29sdW1uTnVtYmVyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKLSAgICAgICAgaWYgKCFt
X3NoYXJlZFdvcmtlcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBXZSBkb24n
dCBib3RoZXIgY2hlY2tpbmcgdGhlIGFza2VkVG9UZXJtaW5hdGUoKSBmbGFnIGhlcmUsIGJlY2F1
c2UgZXhjZXB0aW9ucyBzaG91bGQgKmFsd2F5cyogYmUgcmVwb3J0ZWQgZXZlbiBpZiB0aGUgdGhy
ZWFkIGlzIHRlcm1pbmF0ZWQuCi0gICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBkaWZm
ZXJlbnQgdGhhbiB0aGUgYmVoYXZpb3IgaW4gTWVzc2FnZVdvcmtlclRhc2ssIGJlY2F1c2UgdGVy
bWluYXRlZCB3b3JrZXJzIG5vIGxvbmdlciBkZWxpdmVyIG1lc3NhZ2VzIChzZWN0aW9uIDQuNiBv
ZiB0aGUgV2ViV29ya2VyIHNwZWMpLCBidXQgdGhleSBkbyByZXBvcnQgZXhjZXB0aW9ucy4KLSAg
ICAgICAgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKm1fc2hhcmVk
V29ya2VyLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIEVycm9yRXZlbnQ6OmNyZWF0ZShl
cnJvck1lc3NhZ2UsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB7IH0pKTsK
LSAgICB9KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6d29ya2VyR2xvYmFsU2NvcGVE
ZXN0cm95ZWQoKQotewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3Ro
aXNdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewotICAgICAgICB3b3JrZXJHbG9iYWxTY29w
ZURlc3Ryb3llZEludGVybmFsKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJv
eHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJikK
LXsKLQotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5Ojpjb25maXJtTWVzc2FnZUZyb21Xb3Jr
ZXJPYmplY3QoYm9vbCkKLXsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6cmVwb3J0UGVu
ZGluZ0FjdGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KQotewotICAgIG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXMsIGhhc1BlbmRpbmdBY3Rpdml0eV0gKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0gICAgICAgIG1faGFzUGVuZGluZ0FjdGl2aXR5ID0gaGFz
UGVuZGluZ0FjdGl2aXR5OwotICAgIH0pOwotfQotCi1SZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVj
dGlvbj4gU2hhcmVkV29ya2VyUHJveHk6OmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKQot
ewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byYgZG9jdW1lbnQgPSBkb3du
Y2FzdDxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgcmV0dXJuIGRv
Y3VtZW50LnBhZ2UoKS0+Y2FjaGVTdG9yYWdlUHJvdmlkZXIoKS5jcmVhdGVDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uKCk7Ci19Ci0KLVJlZlB0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25u
ZWN0aW9uPiBTaGFyZWRXb3JrZXJQcm94eTo6Y3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5k
bGVyQ29ubmVjdGlvbigpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRv
JiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
KTsKLSAgICBpZiAoIWRvY3VtZW50LnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgcmV0dXJuIGRvY3VtZW50LnBhZ2UoKS0+bGliV2ViUlRDUHJvdmlkZXIoKS5jcmVhdGVSVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCk7Ci19Ci0KLXZvaWQgU2hhcmVkV29y
a2VyUHJveHk6OnBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYm
IHRhc2spCi17Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhXVEZNb3Zl
KHRhc2spKTsKLX0KLQotYm9vbCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdFRhc2tGb3JNb2RlVG9X
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYg
dGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQotewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCku
cG9zdFRhc2tGb3JNb2RlKFdURk1vdmUodGFzayksIG1vZGUpOwotICAgIHJldHVybiB0cnVlOwot
fQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5Ojpwb3N0TWVzc2FnZVRvRGVidWdnZXIoY29uc3Qg
U3RyaW5nJikKLXsKLQotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5OjpzZXRSZXNvdXJjZUNh
Y2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yKGJvb2wpCi17Ci0KLX0KLQotdm9pZCBTaGFyZWRX
b3JrZXJQcm94eTo6d29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpCi17Ci0gICAg
Ly8gVGhpcyBpcyBhbHdheXMgdGhlIGxhc3QgdGFzayB0byBiZSBwZXJmb3JtZWQsIHNvIHRoZSBw
cm94eSBpcyBub3QgbmVlZGVkIGZvciBjb21tdW5pY2F0aW9uCi0gICAgLy8gaW4gZWl0aGVyIHNp
ZGUgYW55IG1vcmUuIEhvd2V2ZXIsIHRoZSBXb3JrZXIgb2JqZWN0IG1heSBzdGlsbCBleGlzdCwg
YW5kIGl0IGFzc3VtZXMgdGhhdCB0aGUgcHJveHkgZXhpc3RzLCB0b28uCi0gICAgbV9hc2tlZFRv
VGVybWluYXRlID0gdHJ1ZTsKLSAgICBtX3dvcmtlclRocmVhZCA9IG51bGxwdHI7Ci0KLSAgICAv
LyBUaGlzIGJhbGFuY2VzIHRoZSBvcmlnaW5hbCByZWYgaW4gY29uc3RydWN0aW9uLgotICAgIGlm
IChtX21heUJlRGVzdHJveWVkKQotICAgICAgICBkZXJlZigpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRleCAzMTFlYmQ2MDc4YmMuLmRiZGQ0Mjli
MzYzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9T
aGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDIzICsyOSwyNSBAQAogI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNs
dWRlICJTaGFyZWRXb3JrZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiV29ya2VyUnVuTG9vcC5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hh
cmVkV29ya2VyU2NyaXB0TG9hZGVyKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRXb3JrZXImIHdvcmtl
ciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBvcnQsIFdvcmtlck9wdGlvbnMmJiBvcHRpb25z
KQotICAgIDogbV9pZGVudGlmaWVyKFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcklkZW50aWZpZXI6
OmdlbmVyYXRlKCkpCi0gICAgLCBtX29wdGlvbnMoV1RGTW92ZShvcHRpb25zKSkKK1NoYXJlZFdv
cmtlclNjcmlwdExvYWRlcjo6U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyKFVSTCYmIHVybCwgU2hh
cmVkV29ya2VyJiB3b3JrZXIsIFdvcmtlck9wdGlvbnMmJiBvcHRpb25zKQorICAgIDogbV9vcHRp
b25zKFdURk1vdmUob3B0aW9ucykpCiAgICAgLCBtX3dvcmtlcih3b3JrZXIpCi0gICAgLCBtX3Bv
cnQoV1RGTW92ZShwb3J0KSkKICAgICAsIG1fbG9hZGVyKFdvcmtlclNjcmlwdExvYWRlcjo6Y3Jl
YXRlKCkpCi0gICAgLCBtX3BlbmRpbmdBY3Rpdml0eSh3b3JrZXIubWFrZVBlbmRpbmdBY3Rpdml0
eSh3b3JrZXIpKQotICAgICwgbV91cmwodXJsKQorICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQog
ewotICAgIG1fd29ya2VyLT5zZXRJc0xvYWRpbmcodHJ1ZSk7Ci0gICAgbV9sb2FkZXItPmxvYWRB
c3luY2hyb25vdXNseSgqd29ya2VyLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgUmVzb3VyY2VS
ZXF1ZXN0KHVybCksIHdvcmtlci53b3JrZXJGZXRjaE9wdGlvbnMob3B0aW9ucywgRmV0Y2hPcHRp
b25zOjpEZXN0aW5hdGlvbjo6U2hhcmVkd29ya2VyKSwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5m
b3JjZW1lbnQ6OkVuZm9yY2VXb3JrZXJTcmNEaXJlY3RpdmUsIFNlcnZpY2VXb3JrZXJzTW9kZTo6
QWxsLCAqdGhpcywgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7Cit9CisKK3ZvaWQgU2hh
cmVkV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2NyaXB0
QnVmZmVyKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoIW1fY29tcGxldGlv
bkhhbmRsZXIpOworICAgIG1fY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKTsKKworICAgIG1fbG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoKm1fd29ya2VyLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFJlc291cmNlUmVxdWVzdChtX3VybCksIG1fd29ya2Vy
LT53b3JrZXJGZXRjaE9wdGlvbnMobV9vcHRpb25zLCBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9u
OjpTaGFyZWR3b3JrZXIpLCBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6RW5mb3Jj
ZVdvcmtlclNyY0RpcmVjdGl2ZSwgU2VydmljZVdvcmtlcnNNb2RlOjpBbGwsICp0aGlzLCBXb3Jr
ZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKIH0KIAogdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCkBAIC01NSwxNiArNTcsMTIgQEAgdm9pZCBT
aGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgaWRlbnQKIAogdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6Om5vdGlm
eUZpbmlzaGVkKCkKIHsKLSAgICBtX3dvcmtlci0+c2V0SXNMb2FkaW5nKGZhbHNlKTsKKyAgICBp
ZiAobV9sb2FkZXItPmZhaWxlZCgpKQorICAgICAgICByZXR1cm4gbV9jb21wbGV0aW9uSGFuZGxl
cih7IH0pOwogCi0gICAgYXV0byogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IG1fd29ya2VyLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKG1fbG9hZGVyLT5mYWlsZWQoKSB8fCAh
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgewotICAgICAgICBtX3dvcmtlci0+ZGlzcGF0Y2hFdmVu
dChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxl
OjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7Ci0gICAgICAgIFNoYXJlZFdvcmtlck1h
bmFnZXI6OnNpbmdsZXRvbigpLnNjcmlwdExvYWRGYWlsZWQoKnRoaXMpOyAvLyBkZWxldGVzIHRo
aXMuCi0gICAgfSBlbHNlIHsKKyAgICBpZiAoYXV0byogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9
IG1fd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG1f
bG9hZGVyLT5pZGVudGlmaWVyKCksIG1fbG9hZGVyLT5zY3JpcHQoKS50b1N0cmluZygpKTsKLSAg
ICAgICAgU2hhcmVkV29ya2VyTWFuYWdlcjo6c2luZ2xldG9uKCkuc2NyaXB0TG9hZGVkU3VjY2Vz
c2Z1bGx5KCp0aGlzLCBtX2xvYWRlci0+c2NyaXB0KCksICptX3dvcmtlci0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLCBtX3dvcmtlci5nZXQoKSwgc3RkOjpleGNoYW5nZShtX3BvcnQsIHsgfSkp
OyAvLyBkZWxldGVzIHRoaXMuCi0gICAgfQorICAgIG1fY29tcGxldGlvbkhhbmRsZXIobV9sb2Fk
ZXItPnNjcmlwdCgpKTsgLy8gZGVsZXRlcyB0aGlzLgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlclNjcmlwdExvYWRlci5oCmluZGV4IGJmMWQ0YWVmM2EwOS4uN2ZiN2QwZmVjOGZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJT
Y3JpcHRMb2FkZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAi
QWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnRJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VS
ZXNwb25zZS5oIgpAQCAtMzYsMzUgKzM1LDMwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgU2NyaXB0QnVmZmVyOwogY2xhc3MgU2hhcmVkV29ya2VyOwogY2xhc3MgV29ya2VyU2Ny
aXB0TG9hZGVyOwogCi1jbGFzcyBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI7Ci11c2luZyBTaGFy
ZWRXb3JrZXJTY3JpcHRMb2FkZXJJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxTaGFyZWRX
b3JrZXJTY3JpcHRMb2FkZXI+OwotCi11c2luZyBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0ID0gc3Rk
OjpwYWlyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVzc2FnZVBv
cnRJZGVudGlmaWVyPjsKLQogY2xhc3MgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyIDogcHJpdmF0
ZSBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcihjb25zdCBVUkwmLCBTaGFy
ZWRXb3JrZXImLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdvcmtlck9wdGlvbnMmJik7Cisg
ICAgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyKFVSTCYmLCBTaGFyZWRXb3JrZXImLCBXb3JrZXJP
cHRpb25zJiYpOworCisgICAgdm9pZCBsb2FkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2NyaXB0
QnVmZmVyKT4mJik7CiAKLSAgICBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBjb25zdCBVUkwm
IHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgU2hhcmVkV29ya2VyJiB3b3JrZXIo
KSB7IHJldHVybiBtX3dvcmtlci5nZXQoKTsgfQotICAgIGNvbnN0IFdvcmtlck9wdGlvbnMmIG9w
dGlvbnMoKSB7IHJldHVybiBtX29wdGlvbnM7IH0KKyAgICBjb25zdCBXb3JrZXJPcHRpb25zJiBv
cHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAKIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZCgpIGZpbmFsOwog
Ci0gICAgY29uc3QgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmllciBtX2lkZW50aWZp
ZXI7CiAgICAgY29uc3QgV29ya2VyT3B0aW9ucyBtX29wdGlvbnM7CiAgICAgY29uc3QgUmVmPFNo
YXJlZFdvcmtlcj4gbV93b3JrZXI7Ci0gICAgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBtX3BvcnQ7
CiAgICAgY29uc3QgUmVmPFdvcmtlclNjcmlwdExvYWRlcj4gbV9sb2FkZXI7Ci0gICAgY29uc3Qg
UmVmPEFjdGl2ZURPTU9iamVjdDo6UGVuZGluZ0FjdGl2aXR5PFNoYXJlZFdvcmtlcj4+IG1fcGVu
ZGluZ0FjdGl2aXR5OwogICAgIGNvbnN0IFVSTCBtX3VybDsKKyAgICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFNjcmlwdEJ1ZmZlcik+IG1fY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VyVGhyZWFkLmNwcAppbmRleCA5ZWQ1NTg4ZmJkNzkuLmVmZTA1ZTI3YzE1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyVGhy
ZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJU
aHJlYWQuY3BwCkBAIC0zMSwxNCArMzEsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1T
aGFyZWRXb3JrZXJUaHJlYWQ6OlNoYXJlZFdvcmtlclRocmVhZChjb25zdCBXb3JrZXJQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBTY3JpcHRCdWZmZXImIHNvdXJjZUNvZGUsIFdvcmtlckxv
YWRlclByb3h5JiBsb2FkZXJQcm94eSwgV29ya2VyRGVidWdnZXJQcm94eSYgZGVidWdnZXJQcm94
eSwgV29ya2VyT2JqZWN0UHJveHkmIG9iamVjdFByb3h5LCBXb3JrZXJUaHJlYWRTdGFydE1vZGUg
c3RhcnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklE
QkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0
UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncykKK1NoYXJlZFdvcmtlclRo
cmVhZDo6U2hhcmVkV29ya2VyVGhyZWFkKFNoYXJlZFdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgU2NyaXB0QnVmZmVy
JiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFdvcmtlckRlYnVn
Z2VyUHJveHkmIGRlYnVnZ2VyUHJveHksIFdvcmtlck9iamVjdFByb3h5JiBvYmplY3RQcm94eSwg
V29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRv
cE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwg
U29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1l
RmxhZ3MpCiAgICAgOiBXb3JrZXJUaHJlYWQocGFyYW1ldGVycywgc291cmNlQ29kZSwgbG9hZGVy
UHJveHksIGRlYnVnZ2VyUHJveHksIG9iamVjdFByb3h5LCBzdGFydE1vZGUsIHRvcE9yaWdpbiwg
Y29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlciwgcnVudGltZUZsYWdzKQorICAgICwgbV9p
ZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX25hbWUocGFyYW1ldGVycy5uYW1lLmlzb2xh
dGVkQ29weSgpKQogeworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gU2hhcmVk
V29ya2VyVGhyZWFkOjpTaGFyZWRXb3JrZXJUaHJlYWQ6IiwgdGhpcyk7CiB9CiAKIFJlZjxXb3Jr
ZXJHbG9iYWxTY29wZT4gU2hhcmVkV29ya2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29w
ZShjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBSZWY8U2VjdXJpdHlPcmlnaW4+
JiYgb3JpZ2luLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luKQogeworICAgIFJFTEVB
U0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gU2hhcmVkV29ya2VyVGhyZWFkOjpjcmVhdGVXb3Jr
ZXJHbG9iYWxTY29wZToiLCB0aGlzKTsKICAgICByZXR1cm4gU2hhcmVkV29ya2VyR2xvYmFsU2Nv
cGU6OmNyZWF0ZShzdGQ6OmV4Y2hhbmdlKG1fbmFtZSwgeyB9KSwgcGFyYW1ldGVycywgV1RGTW92
ZShvcmlnaW4pLCAqdGhpcywgV1RGTW92ZSh0b3BPcmlnaW4pLCBpZGJDb25uZWN0aW9uUHJveHko
KSwgc29ja2V0UHJvdmlkZXIoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zaGFyZWQvU2hhcmVkV29ya2VyVGhyZWFkLmgKaW5kZXggMmYwNTZmOWQ1OWJiLi45ZWEyNDg0
N2QzOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlclRocmVhZC5oCkBAIC0yNSwyMSArMjUsMjcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV29ya2VyT2JqZWN0UHJveHk7CiAKKy8v
IEZJWE1FOiBNb3ZlIHRvIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQuCiBjbGFzcyBTaGFyZWRXb3Jr
ZXJUaHJlYWQgOiBwdWJsaWMgV29ya2VyVGhyZWFkIHsKIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmPFNoYXJlZFdvcmtlclRocmVhZD4gY3JlYXRlKEFy
Z3MmJi4uLiBhcmdzKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZFdvcmtlclRocmVhZChz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsgfQorCisgICAgU2hhcmVkV29ya2VySWRlbnRp
ZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKIHByaXZh
dGU6Ci0gICAgU2hhcmVkV29ya2VyVGhyZWFkKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBjb25z
dCBTY3JpcHRCdWZmZXImIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiwgV29ya2VyRGVi
dWdnZXJQcm94eSYsIFdvcmtlck9iamVjdFByb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBj
b25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Q
cm94eSosIFNvY2tldFByb3ZpZGVyKiwgSlNDOjpSdW50aW1lRmxhZ3MpOworICAgIFNoYXJlZFdv
cmtlclRocmVhZChTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJz
JiwgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYsIFdv
cmtlckRlYnVnZ2VyUHJveHkmLCBXb3JrZXJPYmplY3RQcm94eSYsIFdvcmtlclRocmVhZFN0YXJ0
TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25u
ZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciosIEpTQzo6UnVudGltZUZsYWdzKTsKIAogICAg
IFJlZjxXb3JrZXJHbG9iYWxTY29wZT4gY3JlYXRlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgV29y
a2VyUGFyYW1ldGVycyYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiwgUmVmPFNlY3VyaXR5T3JpZ2lu
PiYmIHRvcE9yaWdpbikgZmluYWw7CiAgICAgQVNDSUlMaXRlcmFsIHRocmVhZE5hbWUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAiV2ViQ29yZTogU2hhcmVkV29ya2VyIl9zOyB9CiAKKyAgICBTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBTdHJpbmcgbV9uYW1lOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjA3YTkwZDk4MDUxMgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgiCisKKyNpbmNs
dWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCIKKyNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlciYgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyPiBzaGFyZWRNYW5hZ2VyOworICAgIHJldHVybiBzaGFyZWRNYW5hZ2VyOworfQor
CitTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNo
YXJlZFdvcmtlcihTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd29ya2VyTWFwLmdldChzaGFyZWRXb3JrZXJJZGVudGlm
aWVyKTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c3RvcFNoYXJlZFdv
cmtlcihTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIpCit7Cisg
ICAgYXV0byB3b3JrZXIgPSBtX3dvcmtlck1hcC50YWtlKHNoYXJlZFdvcmtlcklkZW50aWZpZXIp
OworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyOjpzdG9wU2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCAi
LCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCksIHdvcmtlci5n
ZXQoKSk7CisgICAgaWYgKCF3b3JrZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHdvcmtlci0+
c2V0QXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCgpOworCisgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBiZSBhYmxlIHRvIGRlYWwgd2l0aCB0aGUgdGhyZWFkIGJlaW5nIHVucmVzcG9uc2l2ZSBoZXJl
LgorCisgICAgYXV0byYgdGhyZWFkID0gd29ya2VyLT50aHJlYWQoKTsKKyAgICB0aHJlYWQuc3Rv
cChbd29ya2VyID0gV1RGTW92ZSh3b3JrZXIpXSgpIG11dGFibGUgeworICAgICAgICAvLyBTcGlu
IHRoZSBydW5sb29wIGJlZm9yZSByZWxlYXNpbmcgdGhlIHNoYXJlZCB3b3JrZXIgdGhyZWFkIHBy
b3h5LCBhcyB0aGVyZSB3b3VsZCBvdGhlcndpc2UgYmUKKyAgICAgICAgLy8gYSByYWNlIHRvd2Fy
ZHMgaXRzIGRlc3RydWN0aW9uLgorICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3b3JrZXIgPSBX
VEZNb3ZlKHdvcmtlcildIHsgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXI6OnN0b3BBbGxTaGFyZWRXb3JrZXJzKCkKK3sKKyAgICB3aGlsZSAoIW1fd29y
a2VyTWFwLmlzRW1wdHkoKSkKKyAgICAgICAgc3RvcFNoYXJlZFdvcmtlcihtX3dvcmtlck1hcC5i
ZWdpbigpLT5rZXkpOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzZXRD
b25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCit7Cisg
ICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24gfHwgbV9jb25uZWN0aW9uLT5pc0Nsb3NlZCgpKTsKKyAg
ICBtX2Nvbm5lY3Rpb24gPSBXVEZNb3ZlKGNvbm5lY3Rpb24pOworfQorCithdXRvIFNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyOjpjb25uZWN0aW9uKCkgY29uc3QgLT4gQ29ubmVjdGlvbioKK3sK
KyAgICByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyOjpyZWdpc3RlclNoYXJlZFdvcmtlclRocmVhZChSZWY8U2hhcmVkV29ya2Vy
VGhyZWFkUHJveHk+JiYgcHJveHkpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6
cmVnaXN0ZXJTaGFyZWRXb3JrZXJUaHJlYWQ6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJ
dTY0LCBwcm94eS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworCisgICAgYXV0byByZXN1bHQg
PSBtX3dvcmtlck1hcC5hZGQocHJveHktPmlkZW50aWZpZXIoKSwgcHJveHkuY29weVJlZigpKTsK
KyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgcHJv
eHktPnRocmVhZCgpLnN0YXJ0KFtdKGNvbnN0IFN0cmluZyYgLypleGNlcHRpb25NZXNzYWdlKi8p
IHsgfSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb246
OnBvc3RDb25uZWN0RXZlbnQoU2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVu
dGlmaWVyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgdHJhbnNmZXJyZWRQb3J0LCBTdHJpbmcm
JiBzb3VyY2VPcmlnaW4pCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBhdXRv
KiBwcm94eSA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zaGFyZWRX
b3JrZXIoc2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29y
a2VyLCAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb246OnBvc3RDb25uZWN0
RXZlbnQ6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHByb3h5PSVwIiwgc2hh
cmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpLCBwcm94eSk7CisgICAgaWYgKCFwcm94eSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgcHJveHktPnRocmVhZCgpLnJ1bkxvb3AoKS5wb3N0VGFz
ayhbdHJhbnNmZXJyZWRQb3J0ID0gV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBzb3VyY2VPcmln
aW4gPSBXVEZNb3ZlKHNvdXJjZU9yaWdpbikuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQo
KSk7CisgICAgICAgIGRvd25jYXN0PFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVj
dXRpb25Db250ZXh0KS5wb3N0Q29ubmVjdEV2ZW50KFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwg
V1RGTW92ZShzb3VyY2VPcmlnaW4pKTsKKyAgICB9KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6dGVybWluYXRlU2hhcmVkV29ya2VyKFNoYXJlZFdv
cmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uOjp0ZXJtaW5hdGVTaGFyZWRXb3JrZXI6IHNoYXJl
ZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUlu
dDY0KCkpOworICAgIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zdG9w
U2hhcmVkV29ya2VyKHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250
ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wNDc5MzdjOTFlNmIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaCIKKyNpbmNsdWRlICJTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTsKKworY2xhc3Mg
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlciYgc2luZ2xldG9uKCk7CisKKyAgICBT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eSogc2hhcmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZp
ZXIpIGNvbnN0OworICAgIHZvaWQgc3RvcFNoYXJlZFdvcmtlcihTaGFyZWRXb3JrZXJJZGVudGlm
aWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BBbGxTaGFyZWRXb3JrZXJzKCk7CisK
KyAgICBjbGFzcyBDb25uZWN0aW9uIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5Db25uZWN0aW9uKCkgeyB9CisgICAgICAg
IHZpcnR1YWwgdm9pZCBlc3RhYmxpc2hDb25uZWN0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2Jq
ZWN0KFNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwp
ID0gMDsKKyAgICAgICAgYm9vbCBpc0Nsb3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDbG9zZWQ7
IH0KKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgdm9pZCBzZXRBc0Nsb3NlZCgpIHsgbV9pc0Ns
b3NlZCA9IHRydWU7IH0KKworICAgICAgICAvLyBJUEMgbWVzc2FnZSBoYW5kbGVycy4KKyAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0Q29ubmVjdEV2ZW50KFNoYXJlZFdvcmtlcklkZW50
aWZpZXIsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgU3RyaW5nJiYgc291cmNlT3JpZ2luKTsK
KyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0ZXJtaW5hdGVTaGFyZWRXb3JrZXIoU2hhcmVk
V29ya2VySWRlbnRpZmllcik7CisKKyAgICBwcml2YXRlOgorICAgICAgICBib29sIG1faXNDbG9z
ZWQgeyBmYWxzZSB9OworICAgIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbm5l
Y3Rpb24oc3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+JiYpOworICAgIFdFQkNPUkVfRVhQT1JU
IENvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVnaXN0ZXJTaGFyZWRXb3JrZXJUaHJlYWQoUmVmPFNoYXJlZFdvcmtlclRocmVhZFByb3h5
PiYmKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8U2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXI+OworCisgICAgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIo
KSA9IGRlZmF1bHQ7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVjdGlvbj4gbV9jb25uZWN0
aW9uOworICAgIEhhc2hNYXA8U2hhcmVkV29ya2VySWRlbnRpZmllciwgUmVmPFNoYXJlZFdvcmtl
clRocmVhZFByb3h5Pj4gbV93b3JrZXJNYXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJl
ZFdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2Nv
bnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uM2RjMzEyODVkMTYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5j
cHAKQEAgLTAsMCArMSwxOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIgorCisjaW5jbHVkZSAiQ2Fj
aGVTdG9yYWdlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJFcnJvckV2ZW50LmgiCisjaW5jbHVkZSAi
RXZlbnRMb29wLmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkZyYW1lLmgi
CisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5o
IgorI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCisjaW5jbHVkZSAiTWVzc2FnZUV2ZW50Lmgi
CisjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1TdHJhdGVnaWVzLmgiCisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5k
bGVyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgorI2luY2x1ZGUgIlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyR2xvYmFs
U2NvcGUuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlICJXb3Jr
ZXJUaHJlYWQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0ZhY3Rvcnku
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgSGFzaFNldDxTaGFyZWRXb3JrZXJU
aHJlYWRQcm94eSo+JiBhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkKK3sKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSo+PiBzZXQ7
CisgICAgcmV0dXJuIHNldDsKK30KKworc3RhdGljIFdvcmtlclBhcmFtZXRlcnMgZ2VuZXJhdGVX
b3JrZXJQYXJhbWV0ZXJzKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBXb3JrZXJPcHRpb25zJiYgd29y
a2VyT3B0aW9ucywgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIERvY3VtZW50JiBkb2N1bWVudCkK
K3sKKyAgICByZXR1cm4gV29ya2VyUGFyYW1ldGVycyB7CisgICAgICAgIHNjcmlwdFVSTCwKKyAg
ICAgICAgd29ya2VyT3B0aW9ucy5uYW1lLAorICAgICAgICAic2hhcmVkd29ya2VyOiIgKyBJbnNw
ZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpLAorICAgICAgICB1
c2VyQWdlbnQsCisgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgp
LT5pc09uTGluZSgpLAorICAgICAgICB7IH0sIC8vIEZJWE1FOiBjb250ZW50U2VjdXJpdHlQb2xp
Y3kKKyAgICAgICAgZmFsc2UsCisgICAgICAgIHsgfSwgLy8gRklYTUU6IGNyb3NzT3JpZ2luRW1i
ZWRkZXJQb2xpY3kKKyAgICAgICAgTW9ub3RvbmljVGltZTo6bm93KCksCisgICAgICAgIHsgfSwK
KyAgICAgICAgd29ya2VyT3B0aW9ucy50eXBlLAorICAgICAgICB3b3JrZXJPcHRpb25zLmNyZWRl
bnRpYWxzLAorICAgICAgICBkb2N1bWVudC5zZXR0aW5nc1ZhbHVlcygpCisgICAgfTsKK30KKwor
U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5KFVuaXF1ZVJl
ZjxQYWdlPiYmIHBhZ2UsIFNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRp
ZmllciwgY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIGNvbnN0IFVSTCYgc2NyaXB0
VVJMLCBTY3JpcHRCdWZmZXImJiBzY3JpcHRCdWZmZXIsIFdvcmtlck9wdGlvbnMmJiB3b3JrZXJP
cHRpb25zLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImIGNh
Y2hlU3RvcmFnZVByb3ZpZGVyKQorICAgIDogbV9wYWdlKFdURk1vdmUocGFnZSkpCisgICAgLCBt
X2RvY3VtZW50KCptX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCisgICAgLCBtX3dvcmtl
clRocmVhZChTaGFyZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZShzaGFyZWRXb3JrZXJJZGVudGlmaWVy
LCBnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMoc2NyaXB0VVJMLCBXVEZNb3ZlKHdvcmtlck9wdGlv
bnMpLCB1c2VyQWdlbnQsIG1fZG9jdW1lbnQpLCBXVEZNb3ZlKHNjcmlwdEJ1ZmZlciksICp0aGlz
LCAqdGhpcywgKnRoaXMsIFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBjbGllbnRPcmln
aW4udG9wT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCksIG1fZG9jdW1lbnQtPmlkYkNvbm5lY3Rpb25Q
cm94eSgpLCBtX2RvY3VtZW50LT5zb2NrZXRQcm92aWRlcigpLCBKU0M6OlJ1bnRpbWVGbGFnczo6
Y3JlYXRlQWxsRW5hYmxlZCgpKSkKKyAgICAsIG1fY2FjaGVTdG9yYWdlUHJvdmlkZXIoY2FjaGVT
dG9yYWdlUHJvdmlkZXIpCit7CisgICAgQVNTRVJUKCFhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94
aWVzKCkuY29udGFpbnModGhpcykpOworICAgIGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMo
KS5hZGQodGhpcyk7CisKKyAgICBzdGF0aWMgYm9vbCBhZGRlZExpc3RlbmVyOworICAgIGlmICgh
YWRkZWRMaXN0ZW5lcikgeworICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3Ry
YXRlZ3koKS0+YWRkT25saW5lU3RhdGVDaGFuZ2VMaXN0ZW5lcigmbmV0d29ya1N0YXRlQ2hhbmdl
ZCk7CisgICAgICAgIGFkZGVkTGlzdGVuZXIgPSB0cnVlOworICAgIH0KK30KKworU2hhcmVkV29y
a2VyVGhyZWFkUHJveHk6On5TaGFyZWRXb3JrZXJUaHJlYWRQcm94eSgpCit7CisgICAgQVNTRVJU
KGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKS5jb250YWlucyh0aGlzKSk7CisgICAgYWxs
U2hhcmVkV29ya2VyVGhyZWFkUHJveGllcygpLnJlbW92ZSh0aGlzKTsKK30KKworU2hhcmVkV29y
a2VySWRlbnRpZmllciBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6aWRlbnRpZmllcigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fd29ya2VyVGhyZWFkLT5pZGVudGlmaWVyKCk7Cit9CisKK1JlZlB0
cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRl
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICBpZiAoIW1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbikKKyAgICAgICAgbV9jYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uID0gbV9jYWNoZVN0b3JhZ2VQcm92aWRlci5jcmVhdGVDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uKCk7CisgICAgcmV0dXJuIG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKK30KKwor
UmVmUHRyPFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24+IFNoYXJlZFdvcmtl
clRocmVhZFByb3h5OjpjcmVhdGVSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9u
KCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHJldHVybiBtX3BhZ2UtPmxp
YldlYlJUQ1Byb3ZpZGVyKCkuY3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVj
dGlvbigpOworfQorCit2b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0VGFza1RvTG9h
ZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQoreworICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3Rhc2sgPSBXVEZNb3ZlKHRhc2spLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHRhc2sucGVyZm9ybVRhc2socHJvdGVjdGVkVGhp
cy0+bV9kb2N1bWVudC5nZXQoKSk7CisgICAgfSk7Cit9CisKK2Jvb2wgU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKK3sK
KyAgICBpZiAobV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShXVEZN
b3ZlKHRhc2spLCBtb2RlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBTaGFyZWRXb3Jr
ZXJUaHJlYWRQcm94eTo6cG9zdE1lc3NhZ2VUb0RlYnVnZ2VyKGNvbnN0IFN0cmluZyYpCit7Cisg
ICAgLy8gRklYTUU6IEltcGxlbWVudC4KK30KKwordm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3BlY3Rvcihib29sKQoreworICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQuCit9CisKK3ZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6
Om5ldHdvcmtTdGF0ZUNoYW5nZWQoYm9vbCBpc09uTGluZSkKK3sKKyAgICBmb3IgKGF1dG8qIHBy
b3h5IDogYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGllcygpKQorICAgICAgICBwcm94eS0+bm90
aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGlzT25MaW5lKTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJU
aHJlYWRQcm94eTo6bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpCit7Cisg
ICAgaWYgKG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbaXNPbmxpbmVd
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGF1dG8mIGdsb2Jh
bFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpOworICAgICAgICBn
bG9iYWxTY29wZS5zZXRJc09ubGluZShpc09ubGluZSk7CisgICAgICAgIGdsb2JhbFNjb3BlLmV2
ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtnbG9iYWxT
Y29wZSA9IFJlZiB7IGdsb2JhbFNjb3BlIH0sIGlzT25saW5lXSB7CisgICAgICAgICAgICBnbG9i
YWxTY29wZS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGlzT25saW5lID8gZXZlbnROYW1l
cygpLm9ubGluZUV2ZW50IDogZXZlbnROYW1lcygpLm9mZmxpbmVFdmVudCwgRXZlbnQ6OkNhbkJ1
YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CisgICAgICAgIH0pOworICAgIH0s
IFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOworfQorCisvLyBGSVhNRTogVHJ5IGFuZCBz
aGFyZSBjb2RlIHdpdGggU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcC4KK3ZvaWQgU2hhcmVk
V29ya2VyVGhyZWFkUHJveHk6OnNldHVwUGFnZUZvclNoYXJlZFdvcmtlcihQYWdlJiBwYWdlLCBj
b25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4pCit7
CisgICAgYXV0byYgbWFpbkZyYW1lID0gcGFnZS5tYWluRnJhbWUoKTsKKyAgICBtYWluRnJhbWUu
bG9hZGVyKCkuaW5pdEZvclN5bnRoZXNpemVkRG9jdW1lbnQoeyB9KTsKKyAgICBhdXRvIGRvY3Vt
ZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZU5vblJlbmRlcmVkUGxhY2Vob2xkZXIobWFpbkZyYW1lLCBz
Y3JpcHRVUkwpOworICAgIGRvY3VtZW50LT5jcmVhdGVET01XaW5kb3coKTsKKworICAgIGRvY3Vt
ZW50LT5zdG9yYWdlQmxvY2tpbmdTdGF0ZURpZENoYW5nZSgpOworCisgICAgYXV0byBvcmlnaW4g
PSBjbGllbnRPcmlnaW4udG9wT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7CisgICAgb3JpZ2luLT5z
ZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3kocGFnZS5zZXR0aW5ncygpLnN0b3JhZ2VCbG9ja2luZ1Bv
bGljeSgpKTsKKworICAgIGF1dG8gb3JpZ2luQXNVUkwgPSBvcmlnaW4tPnRvVVJMKCk7CisgICAg
ZG9jdW1lbnQtPnNldFNpdGVGb3JDb29raWVzKG9yaWdpbkFzVVJMKTsKKyAgICBkb2N1bWVudC0+
c2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMob3JpZ2luQXNVUkwpOworICAgIGRvY3VtZW50LT5zZXRE
b21haW5Gb3JDYWNoZVBhcnRpdGlvbihvcmlnaW4tPmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkp
OworICAgIC8vIEZJWE1FOiBTaG91bGQgc2V0IHJlZmVycmVyIHBvbGljeSBvbiBkb2N1bWVudC4K
KworICAgIG1haW5GcmFtZS5zZXREb2N1bWVudChXVEZNb3ZlKGRvY3VtZW50KSk7Cit9CisKK3Zv
aWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIGNhbGxPbk1haW5UaHJlYWQoW3No
YXJlZFdvcmtlcklkZW50aWZpZXIgPSBtX3dvcmtlclRocmVhZC0+aWRlbnRpZmllcigpLCBlcnJv
ck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCksIGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlciwgc291cmNlVVJMID0gc291cmNlVVJMLmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAg
IGlmIChhdXRvKiBjb25uZWN0aW9uID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmds
ZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPnBvc3RFeGNlcHRp
b25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMKTsKKyAgICB9KTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2Nv
bnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaApzaW1pbGFyaXR5IGluZGV4IDU0JQpyZW5h
bWUgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm94eS5o
CnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdv
cmtlclRocmVhZFByb3h5LmgKaW5kZXggZGI3Yjg1MDlkZjVhLi4xNmU4YzFlYzBlMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3h5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJU
aHJlYWRQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI1LDggKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJT
aGFyZWRXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV29ya2VyRGVidWdnZXJQcm94eS5o
IgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJM
b2FkZXJQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlck9iamVjdFByb3h5LmgiCiAjaW5jbHVkZSAi
V29ya2VyT3B0aW9ucy5oIgpAQCAtMzQsMjkgKzM0LDI3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgQ2FjaGVTdG9yYWdlUHJvdmlkZXI7CitjbGFzcyBQYWdlOworY2xhc3MgU2Ny
aXB0QnVmZmVyOwogY2xhc3MgU2hhcmVkV29ya2VyOwogY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFk
OwogCi1jbGFzcyBTaGFyZWRXb3JrZXJQcm94eSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxTaGFyZWRXb3JrZXJQcm94eT4sIHB1YmxpYyBXb3JrZXJHbG9iYWxTY29wZVByb3h5LCBwdWJs
aWMgV29ya2VyT2JqZWN0UHJveHksIHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94eSwgcHVibGljIFdv
cmtlckRlYnVnZ2VyUHJveHkgeworc3RydWN0IENsaWVudE9yaWdpbjsKKworY2xhc3MgU2hhcmVk
V29ya2VyVGhyZWFkUHJveHkgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkV29y
a2VyVGhyZWFkUHJveHk+LCBwdWJsaWMgV29ya2VyTG9hZGVyUHJveHksIHB1YmxpYyBXb3JrZXJE
ZWJ1Z2dlclByb3h5LCBwdWJsaWMgV29ya2VyT2JqZWN0UHJveHkgewogcHVibGljOgotICAgIHRl
bXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBTaGFyZWRXb3JrZXJQcm94eSYgY3JlYXRl
KEFyZ3MmJi4uLiBhcmdzKSB7IHJldHVybiAqbmV3IFNoYXJlZFdvcmtlclByb3h5KHN0ZDo6Zm9y
d2FyZDxBcmdzPihhcmdzKS4uLik7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBz
ZXR1cFBhZ2VGb3JTaGFyZWRXb3JrZXIoUGFnZSYsIGNvbnN0IFVSTCYsIGNvbnN0IENsaWVudE9y
aWdpbiYpOwogCi0gICAgU2hhcmVkV29ya2VyVGhyZWFkKiB0aHJlYWQoKSB7IHJldHVybiBtX3dv
cmtlclRocmVhZC5nZXQoKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRp
YyBSZWY8U2hhcmVkV29ya2VyVGhyZWFkUHJveHk+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShzdGQ6OmZvcndhcmQ8
QXJncz4oYXJncykuLi4pKTsgfQorICAgIH5TaGFyZWRXb3JrZXJUaHJlYWRQcm94eSgpOworCisg
ICAgU2hhcmVkV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Q7CisgICAgU2hhcmVk
V29ya2VyVGhyZWFkJiB0aHJlYWQoKSB7IHJldHVybiBtX3dvcmtlclRocmVhZC5nZXQoKTsgfQor
CisgICAgYm9vbCBpc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKCkgY29uc3QgeyByZXR1cm4gbV9p
c1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkOyB9CisgICAgdm9pZCBzZXRBc1Rlcm1pbmF0aW5nT3JU
ZXJtaW5hdGVkKCkgeyBtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQgPSB0cnVlOyB9CiAKLSAg
ICB2b2lkIHN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUsIGNv
bnN0IFNjcmlwdEJ1ZmZlciYgc291cmNlQ29kZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5
UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJp
dHlQb2xpY3ksIGNvbnN0IENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kmLCBNb25vdG9uaWNUaW1l
IHRpbWVPcmlnaW4sIFJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RDcmVk
ZW50aWFscywgSlNDOjpSdW50aW1lRmxhZ3MpIGZpbmFsOwotICAgIHZvaWQgdGVybWluYXRlV29y
a2VyR2xvYmFsU2NvcGUoKSBmaW5hbDsKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9i
YWxTY29wZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKSBmaW5hbDsKLSAgICB2b2lkIHBvc3RU
YXNrVG9Xb3JrZXJHbG9iYWxTY29wZShGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKT4mJikgZmluYWw7Ci0gICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5h
bDsKLSAgICB2b2lkIHdvcmtlck9iamVjdERlc3Ryb3llZCgpIGZpbmFsOwotICAgIHZvaWQgbm90
aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpIGZpbmFsOwotICAgIHZvaWQgc3Vz
cGVuZEZvckJhY2tGb3J3YXJkQ2FjaGUoKSBmaW5hbDsKLSAgICB2b2lkIHJlc3VtZUZvckJhY2tG
b3J3YXJkQ2FjaGUoKSBmaW5hbDsKLSAgICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVj
dChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSBmaW5hbDsKLSAgICB2b2lkIHdvcmtlckds
b2JhbFNjb3BlRGVzdHJveWVkKCkgZmluYWw7Ci0gICAgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2Vy
T2JqZWN0KE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpIGZpbmFsOwotICAgIHZvaWQgY29uZmly
bU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KSBmaW5hbDsK
LSAgICB2b2lkIHJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkg
ZmluYWw7CiAgICAgUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IGNyZWF0ZUNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24oKSBmaW5hbDsKICAgICBSZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyQ29ubmVjdGlvbj4gY3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVj
dGlvbigpIGZpbmFsOwogICAgIHZvaWQgcG9zdFRhc2tUb0xvYWRlcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrJiYpIGZpbmFsOwpAQCAtNjQsMTggKzYyLDI1IEBAIHB1YmxpYzoKICAgICB2
b2lkIHBvc3RNZXNzYWdlVG9EZWJ1Z2dlcihjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lk
IHNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNwZWN0b3IoYm9vbCkgZmluYWw7CiAK
KyAgICAvLyBXb3JrZXJPYmplY3RQcm94eQorICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2Vy
T2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpIGZpbmFsOworICAgIHZvaWQgd29y
a2VyR2xvYmFsU2NvcGVEZXN0cm95ZWQoKSBmaW5hbCB7IH0KKyAgICB2b2lkIHBvc3RNZXNzYWdl
VG9Xb3JrZXJPYmplY3QoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJikgZmluYWwgeyB9CisgICAg
dm9pZCBjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCkgZmluYWwgeyB9CisgICAg
dm9pZCByZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCkgZmluYWwgeyB9CisKIHByaXZhdGU6Ci0g
ICAgU2hhcmVkV29ya2VyUHJveHkoU2hhcmVkV29ya2VyJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
U2hhcmVkV29ya2VyVGhyZWFkUHJveHkoVW5pcXVlUmVmPFBhZ2U+JiYsIFNoYXJlZFdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IENsaWVudE9yaWdpbiYsIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBTY3Jp
cHRCdWZmZXImJiwgV29ya2VyT3B0aW9ucyYmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgQ2Fj
aGVTdG9yYWdlUHJvdmlkZXImKTsKIAotICAgIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95
ZWRJbnRlcm5hbCgpOworICAgIHN0YXRpYyB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoYm9vbCBp
c09uTGluZSk7CisgICAgdm9pZCBub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9vbCBpc09ubGlu
ZSk7CiAKLSAgICBXZWFrUHRyPFNoYXJlZFdvcmtlcj4gbV9zaGFyZWRXb3JrZXI7Ci0gICAgUmVm
UHRyPFNoYXJlZFdvcmtlclRocmVhZD4gbV93b3JrZXJUaHJlYWQ7Ci0gICAgY29uc3QgUmVmUHRy
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLSAgICBj
b25zdCBTdHJpbmcgbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yOwotICAgIGJvb2wgbV9hc2tlZFRv
VGVybWluYXRlIHsgZmFsc2UgfTsKLSAgICBib29sIG1faGFzUGVuZGluZ0FjdGl2aXR5IHsgZmFs
c2UgfTsKLSAgICBib29sIG1fbWF5QmVEZXN0cm95ZWQgeyBmYWxzZSB9OworICAgIFVuaXF1ZVJl
ZjxQYWdlPiBtX3BhZ2U7CisgICAgUmVmPERvY3VtZW50PiBtX2RvY3VtZW50OworICAgIFJlZjxT
aGFyZWRXb3JrZXJUaHJlYWQ+IG1fd29ya2VyVGhyZWFkOworICAgIENhY2hlU3RvcmFnZVByb3Zp
ZGVyJiBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyOworICAgIFJlZlB0cjxDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uPiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247CisgICAgYm9vbCBtX2lzVGVybWluYXRp
bmdPclRlcm1pbmF0ZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQv
Q01ha2VMaXN0cy50eHQKaW5kZXggNzU2ZGE4OGI0NWY3Li5iYjgxY2RjMmM3NzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFr
ZUxpc3RzLnR4dApAQCAtMjAyLDYgKzIwMiw5IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklM
RVMKICAgICBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bgogICAgIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uCiAKKyAgICBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29y
a2VyQ29ubmVjdGlvbgorICAgIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCisKICAgICBOZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0CiAKICAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uCkBAIC0zMDUsNiArMzA4LDggQEAgc2V0KFdlYktpdF9N
RVNTQUdFU19JTl9GSUxFUwogCiAgICAgV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRp
b25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcgogCisgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbgorICAgIFdlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uCiAgICAgV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbgogICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKaW5kZXggNGM2NjIyMGNmMTIyLi43MjI5YzFiOTg3MDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTkxLDYg
KzkxLDggQEAgJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRG93bmxvYWRUYXNrLm1lc3NhZ2VzLmkKICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBS
T0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3Mv
U2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXJTZXQubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL05ldHdvcmtQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNi
LmluCkBAIC0yMTcsNiArMjE5LDggQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1NwZWVj
aC9TcGVlY2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmlu
CiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vV2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggZTNiNTU4NDBhZTFl
Li5hODYzMjgxNDdiNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdApAQCAtNjA3LDYgKzYwNywxOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGll
cwogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bk1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQv
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb25NZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0L1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzUmVw
bGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb25NZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0L1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9X
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbk1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2Vz
UmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dl
YlNvY2tldENoYW5uZWxNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNvY2tldENoYW5uZWxNZXNzYWdlcy5oCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNvY2tldENoYW5uZWxNZXNz
YWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5t
YWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDdhZDQ5ZTM3MzVm
NC4uMzUxZmZhZTBhNTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xMzMsNiAr
MTMzLDggQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrIFwKIAlOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2sgXAogCU5ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIFwKKwlOZXR3b3JrUHJvY2Vzcy9T
aGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbiBcCisJTmV0d29ya1By
b2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24gXAogCU5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0gXAogCU5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzIFwKIAlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIgXApAQCAtMjI1LDYgKzIyNyw4IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uIFwKIAlXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiBcCiAJ
V2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFu
YWdlciBcCisJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbiBcCisJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbiBcCiAJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbiBcCiAJV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZDg1
ZWQ4NWQ2Zjk2Li5jN2IxN2ZkNzA3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBA
IC02Niw2ICs2NiwxMSBAQAogI2luY2x1ZGUgIldlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0hUVFBDb29raWVBY2NlcHRQb2xpY3kuaD4KQEAgLTEzMiw2ICsxMzcsNyBAQCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0
d29ya1Byb2Nlc3MmIG5ldAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBlc3RhYmxp
c2hTV1NlcnZlckNvbm5lY3Rpb24oKTsKICNlbmRpZgorICAgIGVzdGFibGlzaFNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb24oKTsKIH0KIAogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
On5OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCkBAIC0xNjYsNiArMTcyLDcgQEAgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cygpCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHVucmVnaXN0ZXJTV0Nvbm5lY3Rp
b24oKTsKICNlbmRpZgorICAgIHVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiB9
CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhhc1VwbG9hZFN0YXRlQ2hh
bmdlZChib29sIGhhc1VwbG9hZCkKQEAgLTI3NSw2ICsyODIsMTcgQEAgdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW8KICAgICB9CiAjZW5kaWYKIAorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGlmIChtX3NoYXJlZFdvcmtlckNvbm5lY3Rp
b24pCisgICAgICAgICAgICBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNz
YWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Cisg
ICAgICAgIGlmIChtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKQorICAgICAgICAgICAg
bV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICNpZiBFTkFCTEUoQVBQ
TEVfUEFZX1JFTU9URV9VSSkKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkg
PT0gTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpCiAgICAgICAgIHJldHVybiBwYXltZW50Q29vcmRpbmF0b3IoKS5kaWRSZWNlaXZlTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKQEAgLTM5OCw5ICs0MTYsOCBAQCB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24pCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIG1fc3dDb250ZXh0Q29u
bmVjdGlvbiA9IG51bGxwdHI7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsK
ICNlbmRpZgorICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwog
CiAgICAgLy8gUHJvdGVjdCBvdXJzZWxmIGFzIHdlIG1pZ2h0IGJlIG90aGVyd2lzZSBiZSBkZWxl
dGVkIGR1cmluZyB0aGlzIGZ1bmN0aW9uLgogICAgIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcz4gcHJvdGVjdG9yKCp0aGlzKTsKQEAgLTQ0MSw2ICs0NTgsNyBAQCB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24pCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHVucmVnaXN0ZXJTV0Nvbm5l
Y3Rpb24oKTsKICNlbmRpZgorICAgIHVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7
CiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKICAgICBtX3BheW1lbnRDb29yZGlu
YXRvciA9IG51bGxwdHI7CkBAIC0xMTg2LDYgKzEyMDQsNjEgQEAgc2l6ZV90IE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpmaW5kTmV0d29ya0FjdGl2aXR5VHJhY2tlcihXZWJDb3JlOjpS
ZXNvdXIKICAgICAgICAgcmV0dXJuIGl0ZW0ucmVzb3VyY2VJRCA9PSByZXNvdXJjZUlEOwogICAg
IH0pOwogfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hT
aGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxF
QVNFX0xPRyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvbjoiKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsKKyAgICBpZiAo
YXV0byogc3dTZXJ2ZXIgPSBzZXNzaW9uID8gc2Vzc2lvbi0+c2hhcmVkV29ya2VyU2VydmVyKCkg
OiBudWxscHRyKQorICAgICAgICBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uID0gbWFr
ZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPigqdGhpcywg
V1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksICpzd1NlcnZlcik7CisgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJs
aXNoU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpCit7CisgICAgaWYgKG1fc2hhcmVkV29y
a2VyQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogc2Vzc2lvbiA9IG5l
dHdvcmtTZXNzaW9uKCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAg
ICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb246Iik7CisKKyAgICBhdXRvJiBzZXJ2ZXIgPSBzZXNzaW9uLT5l
bnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKTsKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBtYWtlVW5p
cXVlPFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29ya1Byb2Nlc3MsIHNl
cnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsKKworICAg
IG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbiA9ICpjb25uZWN0aW9uOworICAgIHNlcnZlci5hZGRD
b25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpjbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKCkKK3sK
KyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImNsb3NlU2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb246Iik7CisgICAgbV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvbiA9IG51bGxwdHI7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JF
TEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgInVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9u
OiIpOworICAgIGlmIChtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAgIG1fc2hhcmVk
V29ya2VyQ29ubmVjdGlvbi0+c2VydmVyKCkucmVtb3ZlQ29ubmVjdGlvbihtX3NoYXJlZFdvcmtl
ckNvbm5lY3Rpb24tPndlYlByb2Nlc3NJZGVudGlmaWVyKCkpOworfQorCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uSXNOb0xvbmdlck5lZWRlZCgpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTaGFy
ZWRXb3JrZXIsICJzaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdl
ck5lZWRlZDoiKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpTaGFyZWRXb3JrZXJDb250
ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkIHsgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAw
KTsKKworICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOworfQor
CitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKiBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6c2hhcmVkV29ya2VyQ29ubmVjdGlvbigpCit7CisgICAgaWYgKCFtX3NoYXJlZFdv
cmtlckNvbm5lY3Rpb24pCisgICAgICAgIGVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb24oKTsKKyAgICByZXR1cm4gbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uLmdldCgpOworfQog
ICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKQpAQCAtMTIyMywxMCArMTI5Niwx
MCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbG9zZVNXQ29udGV4dENv
bm5lY3Rpb24oKQogICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7CiB9CiAKLXZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b25Ob0xvbmdlck5lZWRlZCgpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpz
ZXJ2aWNlV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCkKIHsK
LSAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJzZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQ6IFdlYlByb2Nlc3Mgbm8gbG9uZ2VyIHVzZWZ1bCBm
b3IgcnVubmluZyBzZXJ2aWNlIHdvcmtlcnMiKTsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkIHsgd2ViUHJvY2Vzc0lkZW50
aWZpZXIoKSB9LCAwKTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIs
ICJzZXJ2aWNlV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkOiBX
ZWJQcm9jZXNzIG5vIGxvbmdlciB1c2VmdWwgZm9yIHJ1bm5pbmcgc2VydmljZSB3b3JrZXJzIik7
CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6U2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0
aW9uTm9Mb25nZXJOZWVkZWQgeyB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOwogCiAgICAg
bV9zd0NvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aAppbmRleCAzYTFlMTQwNDMzOGYuLmQwYWE0ZWY3NDUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaApAQCAtOTIsNiArOTIsOCBAQCBjbGFzcyBOZXR3b3JrU29ja2V0U3RyZWFtOwogY2xhc3Mg
U2VydmljZVdvcmtlckZldGNoVGFzazsKIGNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKIGNs
YXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb247CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOwogCiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIHN0cnVjdCBEYXRhS2V5OwpA
QCAtMTgxLDEwICsxODMsMTMgQEAgcHVibGljOgogICAgIHZvaWQgY2hlY2tQcm9jZXNzTG9jYWxQ
b3J0Rm9yQWN0aXZpdHkoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6
SGFzQWN0aXZpdHkpPiYmKTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB2b2lk
IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCgpOworICAgIHZvaWQgc2Vy
dmljZVdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCgpOwogICAg
IFdlYlNXU2VydmVyQ29ubmVjdGlvbiogc3dDb25uZWN0aW9uKCk7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IGNyZWF0ZUZldGNoVGFzayhOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgorICAg
IHZvaWQgc2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVk
ZWQoKTsKKworICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24qIHNoYXJlZFdvcmtl
ckNvbm5lY3Rpb24oKTsKIAogICAgIE5ldHdvcmtTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0
cnkoKSB7IHJldHVybiBtX3NjaGVtZVJlZ2lzdHJ5LmdldCgpOyB9CiAKQEAgLTI1Myw2ICsyNTgs
OSBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlU29ja2V0Q2hhbm5lbChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBXZWJDb3JlOjpXZWJT
b2NrZXRJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mKTsKICAgICB2b2lkIHVwZGF0ZVF1b3RhQmFzZWRPblNwYWNlVXNhZ2VGb3JU
ZXN0aW5nKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwogCisgICAgdm9pZCBlc3RhYmxp
c2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCk7CisgICAgdm9pZCB1bnJlZ2lzdGVyU2hh
cmVkV29ya2VyQ29ubmVjdGlvbigpOworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IHZvaWQgZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKCk7CiAgICAgdm9pZCBlc3RhYmxpc2hT
V0NvbnRleHRDb25uZWN0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKQEAgLTI2MCw2ICsyNjgsOSBAQCBwcml2YXRlOgogICAgIHZvaWQg
dW5yZWdpc3RlclNXQ29ubmVjdGlvbigpOwogI2VuZGlmCiAKKyAgICB2b2lkIGVzdGFibGlzaFNo
YXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCBjbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKCk7CisKICAgICB2b2lk
IGNyZWF0ZVJUQ1Byb3ZpZGVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjaWYgRU5B
QkxFKFdFQl9SVEMpCiAgICAgdm9pZCBjb25uZWN0VG9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJj
ZShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgc291cmNlLCBXZWJDb3JlOjpSVENE
YXRhQ2hhbm5lbElkZW50aWZpZXIgaGFuZGxlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6
Om9wdGlvbmFsPGJvb2w+KT4mJik7CkBAIC00MDQsNiArNDE1LDggQEAgcHJpdmF0ZToKICAgICBX
ZWFrUHRyPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4gbV9zd0Nvbm5lY3Rpb247CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4gbV9zd0NvbnRleHRDb25u
ZWN0aW9uOwogI2VuZGlmCisgICAgV2Vha1B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uPiBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb247CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+IG1fc2hhcmVkV29ya2VyQ29udGV4
dENvbm5lY3Rpb247CiAKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICBib29sIG1faXNSZWdpc3Rl
cmVkVG9SVENEYXRhQ2hhbm5lbFByb3h5IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDI0MjgzNTA1MGIyNC4uYjk3Y2EzNDc5YjRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTg4LDYgKzg4
LDkgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIENsb3NlU1dDb250ZXh0Q29ubmVjdGlvbigpCiAjZW5kaWYKIAorICAgIEVz
dGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5
SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9t
YWluKSAtPiAoKSBBc3luYworICAgIENsb3NlU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24o
KQorCiAgICAgQ3JlYXRlUlRDUHJvdmlkZXIoKSAtPiAoKSBBc3luYwogI2lmIEVOQUJMRShXRUJf
UlRDKQogICAgIENvbm5lY3RUb1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlKHN0cnVjdCBXZWJD
b3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgc291cmNlLCBzdHJ1Y3QgV2ViQ29yZTo6UlRD
RGF0YUNoYW5uZWxJZGVudGlmaWVyIGhhbmRsZXIpIC0+IChzdGQ6Om9wdGlvbmFsPGJvb2w+IHJl
c3VsdCkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5jcHAKaW5kZXggOWEzMmVhMTg2NTRjLi5kNzYxNjI4NTBjYWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC00Nyw2ICs0Nyw3
IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJTV09yaWdpblN0b3JlLmgiCisjaW5jbHVkZSAiV2Vi
U2hhcmVkV29ya2VyU2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0VGFzay5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQ29va2llSmFyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVl
c3QuaD4KQEAgLTYyOSw3ICs2MzAsNyBAQCBTV1NlcnZlciYgTmV0d29ya1Nlc3Npb246OmVuc3Vy
ZVNXU2VydmVyKCkKICAgICAgICAgICAgIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpz
dGFydCh0aGlzLCBXVEZNb3ZlKGpvYkRhdGEpLCBzaG91bGRSZWZyZXNoQ2FjaGUsIFdURk1vdmUo
cmVxdWVzdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgfSwgW3RoaXNd
KGF1dG8mIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIGF1dG8mJiBjb21w
bGV0aW9uSGFuZGxlcikgewogICAgICAgICAgICAgQVNTRVJUKCFyZWdpc3RyYWJsZURvbWFpbi5p
c0VtcHR5KCkpOwotICAgICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1By
b3h5OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyBy
ZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBtX3Nlc3Npb25J
RCB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgMCk7CisgICAgICAgICAgICBtX25ldHdv
cmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyByZWdpc3RyYWJsZURvbWFpbiwgc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBtX3Nlc3Npb25JRCB9LCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgMCk7CiAgICAgICAgIH0sIFdURk1vdmUoYXBwQm91bmREb21haW5zQ2FsbGJhY2sp
KTsKICAgICB9CiAgICAgcmV0dXJuICptX3N3U2VydmVyOwpAQCAtNjUzLDYgKzY1NCwxMyBAQCBi
b29sIE5ldHdvcmtTZXNzaW9uOjpoYXNTZXJ2aWNlV29ya2VyRGF0YWJhc2VQYXRoKCkgY29uc3QK
IAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorV2ViU2hhcmVkV29ya2VyU2Vy
dmVyJiBOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCkKK3sKKyAgICBp
ZiAoIW1fc2hhcmVkV29ya2VyU2VydmVyKQorICAgICAgICBtX3NoYXJlZFdvcmtlclNlcnZlciA9
IG1ha2VVbmlxdWU8V2ViU2hhcmVkV29ya2VyU2VydmVyPigqdGhpcyk7CisgICAgcmV0dXJuICpt
X3NoYXJlZFdvcmtlclNlcnZlcjsKK30KKwogV2ViSURCU2VydmVyJiBOZXR3b3JrU2Vzc2lvbjo6
ZW5zdXJlV2ViSURCU2VydmVyKCkKIHsKICAgICBpZiAoIW1fd2ViSURCU2VydmVyKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggMTkzMDdj
ZjQwYmUzLi4zZjlkNmM5NTUwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmgKQEAgLTc5LDYgKzc5LDcgQEAgY2xhc3MgU2VydmljZVdvcmtlckZl
dGNoVGFzazsKIGNsYXNzIFdlYklEQlNlcnZlcjsKIGNsYXNzIFdlYlBhZ2VOZXR3b3JrUGFyYW1l
dGVyczsKIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTsKK2NsYXNzIFdlYlNo
YXJlZFdvcmtlclNlcnZlcjsKIGNsYXNzIFdlYlNvY2tldFRhc2s7CiBjbGFzcyBXZWJTV09yaWdp
blN0b3JlOwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwpAQCAtMjEwLDYgKzIxMSw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKGJvb2wgcHJvY2Vzc1Rl
cm1pbmF0aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcmJiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGlyZWN0b3J5LCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKICNlbmRpZgogCisg
ICAgV2ViU2hhcmVkV29ya2VyU2VydmVyKiBzaGFyZWRXb3JrZXJTZXJ2ZXIoKSB7IHJldHVybiBt
X3NoYXJlZFdvcmtlclNlcnZlci5nZXQoKTsgfQorICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlciYg
ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCk7CisKICAgICBXZWJJREJTZXJ2ZXIqIHdlYklEQlNl
cnZlcigpIHsgcmV0dXJuIG1fd2ViSURCU2VydmVyLmdldCgpOyB9CiAgICAgV2ViSURCU2VydmVy
JiBlbnN1cmVXZWJJREJTZXJ2ZXIoKTsKICAgICB2b2lkIGNsb3NlSURCU2VydmVyKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0zMTgsNiArMzIyLDcgQEAgcHJvdGVjdGVkOgogICAg
IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckluZm8+IG1fc2VydmljZVdvcmtlckluZm87CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNXU2VydmVyPiBtX3N3U2VydmVyOwogI2VuZGlm
CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlcj4gbV9zaGFyZWRXb3Jr
ZXJTZXJ2ZXI7CiAKICAgICBTdHJpbmcgbV9pZGJEYXRhYmFzZVBhdGg7CiAgICAgUmVmUHRyPFdl
YklEQlNlcnZlcj4gbV93ZWJJREJTZXJ2ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IDVhODcwM2VmZDZkNS4uMjdmNmU4ZGE1
ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcApAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjptYXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllCiAKIHZv
aWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uSXNOb0xvbmdlck5l
ZWRlZCgpCiB7Ci0gICAgbV9jb25uZWN0aW9uLnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xv
bmdlck5lZWRlZCgpOworICAgIG1fY29ubmVjdGlvbi5zZXJ2aWNlV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCk7CiB9CiAKIHZvaWQgV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpzZXRUaHJvdHRsZVN0YXRlKGJvb2wgaXNUaHJvdHRsZWFibGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJT
aGFyZWRXb3JrZXJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFy
ZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLmEyOThjYWE1YWZhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZl
ci5jcHAKQEAgLTAsMCArMSwyODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgiCisKKyNpbmNsdWRlICJMb2dnaW5n
LmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
TmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU2hhcmVkV29ya2VyU2VydmVyOjpXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXIoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24pCisgICAgOiBtX3Nlc3Np
b24oc2Vzc2lvbikKK3sKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVyOjp+V2ViU2hhcmVkV29y
a2VyU2VydmVyKCkgPSBkZWZhdWx0OworCitQQUw6OlNlc3Npb25JRCBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXI6OnNlc3Npb25JRCgpCit7CisgICAgcmV0dXJuIG1fc2Vzc2lvbi5zZXNzaW9uSUQoKTsK
K30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXIoV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFVSTCYmIHVybCwgV2ViQ29y
ZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBvcnQsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMm
JiB3b3JrZXJPcHRpb25zKQoreworICAgIFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSBrZXkgeyBv
cmlnaW4sIHVybCwgd29ya2VyT3B0aW9ucy5uYW1lIH07CisgICAgYXV0byYgc2hhcmVkV29ya2Vy
ID0gbV9zaGFyZWRXb3JrZXJzLmVuc3VyZShrZXksIFsmXSB7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFNoYXJlZFdvcmtlcj4ob3JpZ2luLCB1cmwsIHdvcmtlck9wdGlvbnMpOworICAgIH0p
Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICBzaGFyZWRXb3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMu
YWRkKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHBvcnQpOworICAgIFJFTEVBU0VfTE9H
KFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtl
cjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3ByaXZhdGV9cywgc2hhcmVkV29ya2Vy
SWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJp
bmcoKS51dGY4KCkuZGF0YSgpLCBzaGFyZWRXb3JrZXItPmlkZW50aWZpZXIudG9VSW50NjQoKSk7
CisKKyAgICBpZiAoc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzLnNpemUoKSA+IDEp
IHsKKyAgICAgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2Vy
dmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyOiBBIHNoYXJlZCB3b3JrZXIgd2l0aCB0aGlzIFVSTCBh
bHJlYWR5IGV4aXN0cyAobm93IHNoYXJlZCBieSAldSBzaGFyZWQgd29ya2VyIG9iamVjdHMpIiwg
c2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzLnNpemUoKSk7CisgICAgICAgIGlmIChz
aGFyZWRXb3JrZXItPmlzUnVubmluZykgeworICAgICAgICAgICAgYXV0byogY29udGV4dENvbm5l
Y3Rpb24gPSBtX2NvbnRleHRDb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyLT5yZWdpc3RyYWJs
ZURvbWFpbigpKTsKKyAgICAgICAgICAgIEFTU0VSVChjb250ZXh0Q29ubmVjdGlvbik7CisgICAg
ICAgICAgICBpZiAoY29udGV4dENvbm5lY3Rpb24pCisgICAgICAgICAgICAgICAgcG9zdENvbm5l
Y3RFdmVudCgqY29udGV4dENvbm5lY3Rpb24sIHNoYXJlZFdvcmtlci0+aWRlbnRpZmllciwgcG9y
dCwgb3JpZ2luLmNsaWVudE9yaWdpbi50b1N0cmluZygpKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlv
bnMuZ2V0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSk7
CisgICAgQVNTRVJUKHNlcnZlckNvbm5lY3Rpb24pOworCisgICAgUkVMRUFTRV9MT0coU2hhcmVk
V29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyOiBGZXRj
aGluZyBzaGFyZWQgd29ya2VyIHNjcmlwdCBpbiBjbGllbnQiKTsKKyAgICBzZXJ2ZXJDb25uZWN0
aW9uLT5mZXRjaFNjcmlwdEluQ2xpZW50KHVybCwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciwgd29ya2VyT3B0aW9ucywgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHNoYXJlZFdv
cmtlciA9IFdlYWtQdHIgeyAqc2hhcmVkV29ya2VyIH1dKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYm
IHNjcmlwdEJ1ZmZlcikgeworICAgICAgICBpZiAod2Vha1RoaXMgJiYgc2hhcmVkV29ya2VyKQor
ICAgICAgICAgICAgd2Vha1RoaXMtPmRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29ya2VyU2NyaXB0
KCpzaGFyZWRXb3JrZXIsIFdURk1vdmUoc2NyaXB0QnVmZmVyKSk7CisgICAgfSk7Cit9CisKK3Zv
aWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpsYXVuY2hTaGFyZWRXb3JrZXIoV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24sIFNoYXJlZFdv
cmtlciYgc2hhcmVkV29ya2VyKQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldl
YlNoYXJlZFdvcmtlclNlcnZlcjo6bGF1bmNoU2hhcmVkV29ya2VyOiBjb250ZXh0Q29ubmVjdGlv
bj0lcCwgc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsICZjb250ZXh0Q29ubmVjdGlv
biwgc2hhcmVkV29ya2VyLmlkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgY29udGV4dENvbm5l
Y3Rpb24ubGF1bmNoU2hhcmVkV29ya2VyKHNoYXJlZFdvcmtlci5vcmlnaW4sIHNoYXJlZFdvcmtl
ci5pZGVudGlmaWVyLCBzaGFyZWRXb3JrZXIudXJsLCBzaGFyZWRXb3JrZXIud29ya2VyT3B0aW9u
cywgc2hhcmVkV29ya2VyLnNjcmlwdEJ1ZmZlcik7CisgICAgc2hhcmVkV29ya2VyLmlzUnVubmlu
ZyA9IHRydWU7CisgICAgYXV0byBzb3VyY2VPcmlnaW4gPSBzaGFyZWRXb3JrZXIub3JpZ2luLmNs
aWVudE9yaWdpbi50b1N0cmluZygpOworICAgIGZvciAoYXV0byYgcG9ydCA6IHNoYXJlZFdvcmtl
ci5zaGFyZWRXb3JrZXJPYmplY3RzLnZhbHVlcygpKQorICAgICAgICBwb3N0Q29ubmVjdEV2ZW50
KGNvbnRleHRDb25uZWN0aW9uLCBzaGFyZWRXb3JrZXIuaWRlbnRpZmllciwgcG9ydCwgc291cmNl
T3JpZ2luKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnBvc3RDb25uZWN0RXZl
bnQoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5l
Y3Rpb24sIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYgc291cmNlUG9ydCwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29y
a2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpwb3N0Q29ubmVjdEV2ZW50OiBjb250ZXh0Q29u
bmVjdGlvbj0lcCwgc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsICZjb250ZXh0Q29u
bmVjdGlvbiwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBjb250ZXh0
Q29ubmVjdGlvbi5wb3N0Q29ubmVjdEV2ZW50KHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIHNvdXJj
ZVBvcnQsIHNvdXJjZU9yaWdpbik7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpk
aWRGaW5pc2hGZXRjaGluZ1NoYXJlZFdvcmtlclNjcmlwdChTaGFyZWRXb3JrZXImIHdvcmtlciwg
V2ViQ29yZTo6U2NyaXB0QnVmZmVyJiYgc2NyaXB0QnVmZmVyKQoreworICAgIFJFTEVBU0VfTE9H
KFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6ZGlkRmluaXNoRmV0Y2hpbmdT
aGFyZWRXb3JrZXJTY3JpcHQgc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgd29y
a2VyPSVwLCBzdWNjZXNzPSVkIiwgd29ya2VyLmlkZW50aWZpZXIudG9VSW50NjQoKSwgJndvcmtl
ciwgISFzY3JpcHRCdWZmZXIpOworICAgIGlmICghc2NyaXB0QnVmZmVyKSB7CisgICAgICAgIC8v
IEZldGNoIGZhaWxlZCwgbm90aWZ5IHRoZSBTaGFyZWRXb3JrZXIgb2JqZWN0cy4KKyAgICAgICAg
Zm9yIChhdXRvIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgOiB3b3JrZXIuc2hhcmVkV29y
a2VyT2JqZWN0cy5rZXlzKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0
aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9j
ZXNzSWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uLT5ub3Rp
ZnlXb3JrZXJPYmplY3RPZkxvYWRGYWlsdXJlKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIp
OworICAgICAgICB9CisgICAgICAgIG1fc2hhcmVkV29ya2Vycy5yZW1vdmUod29ya2VyLmtleSgp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdvcmtlci5zY3JpcHRCdWZmZXIgPSBX
VEZNb3ZlKHNjcmlwdEJ1ZmZlcik7CisKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gd29y
a2VyLnJlZ2lzdHJhYmxlRG9tYWluKCk7CisgICAgYXV0byogY29udGV4dENvbm5lY3Rpb24gPSBj
b250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKTsK
KyAgICBpZiAoIWNvbnRleHRDb25uZWN0aW9uKSB7CisgICAgICAgIGNyZWF0ZUNvbnRleHRDb25u
ZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGxhdW5jaFNoYXJlZFdvcmtlcigqY29udGV4dENvbm5lY3Rpb24sIHdvcmtlcik7Cit9CisKK2Jv
b2wgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0
cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxl
RG9tYWluKSBjb25zdAoreworICAgIGZvciAoYXV0byYgc2hhcmVkV29ya2VyIDogbV9zaGFyZWRX
b3JrZXJzLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChyZWdpc3RyYWJsZURvbWFpbi5tYXRjaGVz
KHNoYXJlZFdvcmtlci0+dXJsKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVD
b250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0
cmFibGVEb21haW4pCit7CisgICAgQVNTRVJUKCFtX2NvbnRleHRDb25uZWN0aW9ucy5jb250YWlu
cyhyZWdpc3RyYWJsZURvbWFpbikpOworICAgIGlmIChtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlv
bkRvbWFpbnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICByZXR1cm47CisK
KyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNy
ZWF0ZUNvbnRleHRDb25uZWN0aW9uIHdpbGwgY3JlYXRlIGEgY29ubmVjdGlvbiIpOworCisgICAg
bV9wZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5zLmFkZChyZWdpc3RyYWJsZURvbWFpbik7
CisgICAgbV9zZXNzaW9uLm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpFc3Rh
Ymxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyByZWdp
c3RyYWJsZURvbWFpbiwgbV9zZXNzaW9uLnNlc3Npb25JRCgpIH0sIFt0aGlzLCB3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9LCByZWdpc3RyYWJsZURvbWFpbl0geworICAgICAgICBpZiAoIXdl
YWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFJFTEVBU0VfTE9HKFNoYXJl
ZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24g
c2hvdWxkIG5vdyBoYXZlIGNyZWF0ZWQgYSBjb25uZWN0aW9uIik7CisKKyAgICAgICAgQVNTRVJU
KG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWlucy5jb250YWlucyhyZWdpc3RyYWJsZURv
bWFpbikpOworICAgICAgICBtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnMucmVtb3Zl
KHJlZ2lzdHJhYmxlRG9tYWluKTsKKworICAgICAgICBpZiAobV9jb250ZXh0Q29ubmVjdGlvbnMu
Y29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGlmIChuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0
cmFibGVEb21haW4pKQorICAgICAgICAgICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0
cmFibGVEb21haW4pOworICAgIH0sIDApOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZl
cjo6YWRkQ29udGV4dENvbm5lY3Rpb24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24pCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29y
a2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjphZGRDb250ZXh0Q29ubmVjdGlvbiglcCkgd2Vi
UHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCAmY29udGV4dENvbm5lY3Rpb24sIGNvbnRleHRD
b25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBBU1NF
UlQoIW1fY29udGV4dENvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbnRleHRDb25uZWN0aW9uLnJlZ2lz
dHJhYmxlRG9tYWluKCkpKTsKKworICAgIG1fY29udGV4dENvbm5lY3Rpb25zLmFkZChjb250ZXh0
Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpLCAmY29udGV4dENvbm5lY3Rpb24pOworCisg
ICAgY29udGV4dENvbm5lY3Rpb25DcmVhdGVkKGNvbnRleHRDb25uZWN0aW9uKTsKK30KKwordm9p
ZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uKQorewor
ICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVt
b3ZlQ29udGV4dENvbm5lY3Rpb24oJXApIHdlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwg
JmNvbnRleHRDb25uZWN0aW9uLCBjb250ZXh0Q29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmll
cigpLnRvVUludDY0KCkpOworCisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IGNvbnRleHRD
b25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCk7CisKKyAgICBBU1NFUlQobV9jb250ZXh0Q29u
bmVjdGlvbnMuZ2V0KHJlZ2lzdHJhYmxlRG9tYWluKSA9PSAmY29udGV4dENvbm5lY3Rpb24pOwor
CisgICAgbV9jb250ZXh0Q29ubmVjdGlvbnMucmVtb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKKwor
ICAgIGlmIChuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0
cmFibGVEb21haW4pKQorICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJs
ZURvbWFpbik7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjb250ZXh0Q29ubmVj
dGlvbkNyZWF0ZWQoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29u
dGV4dENvbm5lY3Rpb24pCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hh
cmVkV29ya2VyU2VydmVyOjpjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoJXApIHdlYlByb2Nlc3NJ
ZGVudGlmaWVyPSUiIFBSSXU2NCwgJmNvbnRleHRDb25uZWN0aW9uLCBjb250ZXh0Q29ubmVjdGlv
bi53ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgIGF1dG8mIHJlZ2lzdHJh
YmxlRG9tYWluID0gY29udGV4dENvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKTsKKyAgICBm
b3IgKGF1dG8mIHdvcmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBp
ZiAocmVnaXN0cmFibGVEb21haW4ubWF0Y2hlcyh3b3JrZXItPnVybCkpCisgICAgICAgICAgICBs
YXVuY2hTaGFyZWRXb3JrZXIoY29udGV4dENvbm5lY3Rpb24sICp3b3JrZXIpOworICAgIH0KK30K
KworYXV0byBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNoYXJlZFdvcmtlckJ5SWRlbnRpZmllcihX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIpIC0+
IFNoYXJlZFdvcmtlcioKK3sKKyAgICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fc2hhcmVkV29ya2Vy
cy52YWx1ZXMoKSkgeworICAgICAgICBpZiAod29ya2VyLT5pZGVudGlmaWVyID09IHNoYXJlZFdv
cmtlcklkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gd29ya2VyLmdldCgpOworICAgIH0K
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworYXV0byBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNo
YXJlZFdvcmtlckJ5T2JqZWN0SWRlbnRpZmllcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpIC0+IFNoYXJlZFdvcmtlcioK
K3sKKyAgICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgewor
ICAgICAgICBpZiAod29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzLmNvbnRhaW5zKHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIpKQorICAgICAgICAgICAgcmV0dXJuIHdvcmtlci5nZXQoKTsK
KyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyOjpzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7CisgICAgYXV0
byogd29ya2VyID0gc2hhcmVkV29ya2VyQnlPYmplY3RJZGVudGlmaWVyKHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJl
ZFdvcmtlclNlcnZlcjo6c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXk6IHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cywgd29ya2VyPSVwIiwgc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHdvcmtlcik7CisgICAgaWYg
KCF3b3JrZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHdvcmtlci0+c2hhcmVkV29ya2VyT2Jq
ZWN0cy5yZW1vdmUoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgaWYgKCF3b3Jr
ZXItPnNoYXJlZFdvcmtlck9iamVjdHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBzaHV0RG93blNoYXJlZFdvcmtlcih3b3JrZXItPmtleSgpKTsKK30KKwordm9pZCBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6OnNodXREb3duU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZFdvcmtlcktleSYga2V5KQoreworICAgIGF1dG8gd29ya2VyID0gbV9zaGFyZWRXb3JrZXJzLnRh
a2Uoa2V5KTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXI6OnNodXREb3duU2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBS
SXU2NCAiLCB3b3JrZXI9JXAiLCB3b3JrZXIgPyB3b3JrZXItPmlkZW50aWZpZXIudG9VSW50NjQo
KSA6IDAsIHdvcmtlci5nZXQoKSk7CisgICAgaWYgKCF3b3JrZXIpCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gY29udGV4dENvbm5lY3Rpb25Gb3JSZWdp
c3RyYWJsZURvbWFpbih3b3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgIGlmICghY29u
dGV4dENvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnRleHRDb25uZWN0aW9u
LT50ZXJtaW5hdGVTaGFyZWRXb3JrZXIod29ya2VyLT5pZGVudGlmaWVyKTsKKworICAgIGlmICgh
bmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHdvcmtlci0+cmVnaXN0
cmFibGVEb21haW4oKSkpCisgICAgICAgIGNvbnRleHRDb25uZWN0aW9uLT5jb25uZWN0aW9uSXNO
b0xvbmdlck5lZWRlZCgpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29u
bmVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4m
JiBjb25uZWN0aW9uKQoreworICAgIGF1dG8gcHJvY2Vzc0lkZW50aWZpZXIgPSBjb25uZWN0aW9u
LT53ZWJQcm9jZXNzSWRlbnRpZmllcigpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwg
IldlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29ubmVjdGlvbiglcCk6IHByb2Nlc3NJZGVudGlm
aWVyPSUiIFBSSXU2NCwgY29ubmVjdGlvbi5nZXQoKSwgcHJvY2Vzc0lkZW50aWZpZXIudG9VSW50
NjQoKSk7CisgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKHByb2Nlc3NJZGVudGlm
aWVyKSk7CisgICAgbV9jb25uZWN0aW9ucy5hZGQocHJvY2Vzc0lkZW50aWZpZXIsIFdURk1vdmUo
Y29ubmVjdGlvbikpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29u
bmVjdGlvbihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcikKK3sK
KyAgICBhdXRvIGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLnRha2UocHJvY2Vzc0lkZW50aWZp
ZXIpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZl
cjo6cmVtb3ZlQ29ubmVjdGlvbiglcCk6IHByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgY29u
bmVjdGlvbi5nZXQoKSwgcHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgQVNTRVJU
KGNvbm5lY3Rpb24pOworCisgICAgVmVjdG9yPFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXI+IHNoYXJlZFdvcmtlck9iamVjdHNHb2luZ0F3YXk7CisgICAgZm9yIChhdXRvJiB3
b3JrZXIgOiBtX3NoYXJlZFdvcmtlcnMudmFsdWVzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIDogd29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3Rz
LmtleXMoKSkgeworICAgICAgICAgICAgaWYgKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIu
cHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBwcm9jZXNzSWRlbnRpZmllcikKKyAgICAgICAgICAgICAg
ICBzaGFyZWRXb3JrZXJPYmplY3RzR29pbmdBd2F5LmFwcGVuZChzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBmb3IgKGF1dG8gc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciA6IHNoYXJlZFdvcmtlck9iamVjdHNHb2luZ0F3YXkpCisgICAgICAg
IHNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIpOworfQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OlNoYXJlZFdvcmtlcjo6U2hhcmVkV29y
a2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYgd29ya2VyT3B0aW9ucykKKyAgICA6IGlkZW50
aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKKyAgICAs
IG9yaWdpbihvcmlnaW4pCisgICAgLCB1cmwodXJsKQorICAgICwgd29ya2VyT3B0aW9ucyh3b3Jr
ZXJPcHRpb25zKQoreworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cG9zdEV4Y2Vw
dGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVk
V29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBh
dXRvKiB3b3JrZXIgPSBzaGFyZWRXb3JrZXJCeUlkZW50aWZpZXIoc2hhcmVkV29ya2VySWRlbnRp
Zmllcik7CisgICAgUkVMRUFTRV9MT0dfRVJST1IoU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29y
a2VyU2VydmVyOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Q6IHNoYXJlZFdvcmtlcklkZW50
aWZpZXI9JSIgUFJJdTY0ICIsIHdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9V
SW50NjQoKSwgd29ya2VyKTsKKyAgICBpZiAoIXdvcmtlcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgZm9yIChhdXRvIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgOiB3b3JrZXItPnNoYXJl
ZFdvcmtlck9iamVjdHMua2V5cygpKSB7CisgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0
aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9j
ZXNzSWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIHNlcnZlckNvbm5lY3Rpb24tPnBvc3RFeGNl
cHRpb25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBlcnJvck1l
c3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMKTsKKyAgICB9Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjI4ZTEyNjcwNjU3YgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2Vy
L1dlYlNoYXJlZFdvcmtlclNlcnZlci5oCkBAIC0wLDAgKzEsMTA2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2NyaXB0QnVmZmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VySWRlbnRpZmllci5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyS2V5Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Xb3Jr
ZXJPcHRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworc3RydWN0IENsaWVudE9yaWdpbjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIE5ldHdvcmtTZXNzaW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlv
bjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CisKK2Ns
YXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
KyAgICBleHBsaWNpdCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIoTmV0d29ya1Nlc3Npb24mKTsKKyAg
ICB+V2ViU2hhcmVkV29ya2VyU2VydmVyKCk7CisKKyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQoKTsKKworICAgIHZvaWQgcmVxdWVzdFNoYXJlZFdvcmtlcihXZWJDb3JlOjpDbGllbnRPcmln
aW4mJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgVVJMJiYsIFdlYkNv
cmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmKTsK
KyAgICB2b2lkIHNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KFdlYkNvcmU6OlNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIpOworCisgICAgdm9pZCBhZGRDb250ZXh0Q29ubmVjdGlvbihX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CisgICAgdm9pZCByZW1v
dmVDb250ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uJik7CisKKyAgICB2b2lkIGFkZENvbm5lY3Rpb24oc3RkOjp1bmlxdWVfcHRyPFdlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb24+JiYpOworICAgIHZvaWQgcmVtb3ZlQ29ubmVjdGlvbihX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CisKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKiBjb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWlu
KGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pIHsgcmV0dXJuIG1fY29u
dGV4dENvbm5lY3Rpb25zLmdldChkb21haW4pOyB9CisKKyAgICB2b2lkIHBvc3RFeGNlcHRpb25U
b1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGNyZWF0ZUNvbnRleHRD
b25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7CisKKyAgICBib29s
IG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OworICAgIHZvaWQgY29udGV4dENvbm5lY3Rpb25D
cmVhdGVkKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKKworICAg
IHN0cnVjdCBTaGFyZWRXb3JrZXIgOiBDYW5NYWtlV2Vha1B0cjxTaGFyZWRXb3JrZXI+IHsKKyAg
ICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworCisgICAgICAgIFNoYXJlZFdv
cmtlcihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBjb25zdCBVUkwmLCBjb25zdCBXZWJD
b3JlOjpXb3JrZXJPcHRpb25zJik7CisKKyAgICAgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5
IGtleSgpIGNvbnN0IHsgcmV0dXJuIHsgb3JpZ2luLCB1cmwsIHdvcmtlck9wdGlvbnMubmFtZSB9
OyB9CisgICAgICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWlu
KCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfTsgfQor
CisgICAgICAgIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAg
ICAgICAgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbjsKKyAgICAgICAgVVJMIHVybDsKKyAg
ICAgICAgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyB3b3JrZXJPcHRpb25zOworICAgICAgICBIYXNo
TWFwPFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5z
ZmVycmVkTWVzc2FnZVBvcnQ+IHNoYXJlZFdvcmtlck9iamVjdHM7CisgICAgICAgIFdlYkNvcmU6
OlNjcmlwdEJ1ZmZlciBzY3JpcHRCdWZmZXI7CisgICAgICAgIGJvb2wgaXNSdW5uaW5nIHsgZmFs
c2UgfTsKKyAgICB9OworCisgICAgU2hhcmVkV29ya2VyKiBzaGFyZWRXb3JrZXJCeUlkZW50aWZp
ZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgU2hhcmVkV29ya2VyKiBz
aGFyZWRXb3JrZXJCeU9iamVjdElkZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRGaW5pc2hGZXRjaGluZ1NoYXJlZFdvcmtlclNjcmlw
dChTaGFyZWRXb3JrZXImLCBXZWJDb3JlOjpTY3JpcHRCdWZmZXImJik7CisgICAgdm9pZCBsYXVu
Y2hTaGFyZWRXb3JrZXIoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYs
IFNoYXJlZFdvcmtlciYpOworICAgIHZvaWQgcG9zdENvbm5lY3RFdmVudChXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYsIGNvbnN0IFN0cmlu
ZyYgc291cmNlT3JpZ2luKTsKKyAgICB2b2lkIHNodXREb3duU2hhcmVkV29ya2VyKGNvbnN0IFdl
YkNvcmU6OlNoYXJlZFdvcmtlcktleSYpOworCisgICAgTmV0d29ya1Nlc3Npb24mIG1fc2Vzc2lv
bjsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9w
dHI8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4+IG1fY29ubmVjdGlvbnM7CisgICAg
SGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbio+IG1fY29udGV4dENvbm5lY3Rpb25zOworICAgIEhhc2hTZXQ8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9t
YWluczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSwgc3RkOjp1bmlxdWVf
cHRyPFNoYXJlZFdvcmtlcj4+IG1fc2hhcmVkV29ya2VyczsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRX
b3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjY2NDYyN2U1
ZjcyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hh
cmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEs
MTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNp
bmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbk1l
c3NhZ2VzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjZGVmaW5lIENPTk5FQ1RJT05fUkVM
RUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gW3dlYlBy
b2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uOjoiIGZtdCwgdGhpcywgbV93ZWJQcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpLCAjI19f
VkFfQVJHU19fKQorI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKGZtdCwgLi4u
KSBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRp
Zmllcj0lIiBQUkl1NjQgIl0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6IiBmbXQs
IHRoaXMsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykK
KworV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6V2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFdlYlNoYXJlZFdvcmtl
clNlcnZlciYgc2VydmVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKQorICAgIDogbV9jb250ZW50Q29u
bmVjdGlvbihjb25uZWN0aW9uKQorICAgICwgbV9uZXR3b3JrUHJvY2VzcyhuZXR3b3JrUHJvY2Vz
cykKKyAgICAsIG1fc2VydmVyKHNlcnZlcikKKyAgICAsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIo
d2ViUHJvY2Vzc0lkZW50aWZpZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjoiKTsKK30KKworV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oKQoreworICAg
IENPTk5FQ1RJT05fUkVMRUFTRV9MT0coIn5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
OiIpOworfQorCitJUEM6OkNvbm5lY3Rpb24qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250
ZW50Q29ubmVjdGlvbi5wdHIoKTsKK30KKworUEFMOjpTZXNzaW9uSUQgV2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbjo6c2Vzc2lvbklEKCkKK3sKKyAgICByZXR1cm4gc2VydmVyKCkuc2Vz
c2lvbklEKCk7Cit9CisKK05ldHdvcmtTZXNzaW9uKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uOjpzZXNzaW9uKCkKK3sKKyAgICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKCkpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb246OnJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3Jp
Z2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIsIFVSTCYmIHVybCwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9y
dCYmIHBvcnQsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zKQoreworICAg
IEFTU0VSVChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkg
PT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7IC8vIEZJWE1FOiBTaG91bGQgYmUgYSBNRVNTQUdF
X0NIRUNLKCkuCisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygicmVxdWVzdFNoYXJlZFdvcmtl
cjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmIChhdXRv
KiBzZXNzaW9uID0gdGhpcy0+c2Vzc2lvbigpKQorICAgICAgICBzZXNzaW9uLT5lbnN1cmVTaGFy
ZWRXb3JrZXJTZXJ2ZXIoKS5yZXF1ZXN0U2hhcmVkV29ya2VyKFdURk1vdmUob3JpZ2luKSwgc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHBvcnQpLCBX
VEZNb3ZlKHdvcmtlck9wdGlvbnMpKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uOjpmZXRjaFNjcmlwdEluQ2xpZW50KGNvbnN0IFVSTCYgdXJsLCBXZWJDb3JlOjpT
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6U2NyaXB0QnVmZmVyJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coImZldGNoU2NyaXB0SW5DbGllbnQ6IHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OkZldGNoU2Ny
aXB0SW5DbGllbnQgeyB1cmwsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHdvcmtlck9w
dGlvbnMgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Om5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZhaWx1cmUo
V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IoIm5vdGlmeVdv
cmtlck9iamVjdE9mTG9hZEZhaWx1cmU6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtw
dWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uOjpOb3RpZnlXb3JrZXJPYmplY3RPZkxvYWRGYWlsdXJlIHsgc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllciB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
Ojpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IoInBvc3RF
eGNlcHRpb25Ub1dvcmtlck9iamVjdDogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1
YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b246OlBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdCB7IHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwg
fSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2hhcmVkV29y
a2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQoreworICAgIEFTU0VSVChzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRl
bnRpZmllcik7IC8vIEZJWE1FOiBTaG91bGQgYmUgYSBNRVNTQUdFX0NIRUNLKCkuCisgICAgQ09O
TkVDVElPTl9SRUxFQVNFX0xPRygic2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXk6IHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAoYXV0byogc2Vzc2lv
biA9IHRoaXMtPnNlc3Npb24oKSkKKyAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU2hhcmVkV29ya2Vy
U2VydmVyKCkuc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcik7Cit9CisKKyN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HCisjdW5kZWYg
Q09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjgxMzE1MDM2ZjcwMgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRl
ICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTY3JpcHRCdWZmZXI7CitzdHJ1Y3QgV29ya2VyT3B0
aW9uczsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtQcm9jZXNzOwor
Y2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbiA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbihOZXR3b3JrUHJvY2VzcyYsIFdlYlNoYXJlZFdvcmtl
clNlcnZlciYsIElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsK
KyAgICB+V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpOworCisgICAgV2ViU2hhcmVk
V29ya2VyU2VydmVyJiBzZXJ2ZXIoKSB7IHJldHVybiBtX3NlcnZlcjsgfQorICAgIGNvbnN0IFdl
YlNoYXJlZFdvcmtlclNlcnZlciYgc2VydmVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXI7IH0K
KworICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpOworICAgIE5ldHdvcmtTZXNzaW9uKiBz
ZXNzaW9uKCk7CisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOyB9CisKKyAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZp
bmFsOworCisgICAgdm9pZCBmZXRjaFNjcmlwdEluQ2xpZW50KGNvbnN0IFVSTCYsIFdlYkNvcmU6
OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlv
bnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYmKT4mJik7
CisgICAgdm9pZCBub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRGYWlsdXJlKFdlYkNvcmU6OlNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2Vy
T2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwpOworCitwcml2YXRlOgorICAgIC8vIElQQzo6TWVzc2FnZVNlbmRl
ci4KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Qg
ZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiAwOyB9CisKKyAgICAvLyBJUEMgbWVzc2FnZXMuCisgICAgdm9pZCByZXF1
ZXN0U2hhcmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBXZWJDb3JlOjpTaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdl
UG9ydCYmLCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYpOworICAgIHZvaWQgc2hhcmVkV29ya2Vy
T2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7
CisKKyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2NvbnRlbnRDb25uZWN0aW9uOworICAgIFJl
ZjxOZXR3b3JrUHJvY2Vzcz4gbV9uZXR3b3JrUHJvY2VzczsKKyAgICBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXImIG1fc2VydmVyOworICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJv
Y2Vzc0lkZW50aWZpZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmFlNGEwODAzNzc5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRX
b3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMCww
ICsxLDI2IEBACisjIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
CisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3Nh
Z2VzIC0+IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7Cisg
ICAgUmVxdWVzdFNoYXJlZFdvcmtlcihzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdp
biwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLCBVUkwgdXJsLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0IHBv
cnQsIHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdvcmtlck9wdGlvbnMpCisgICAgU2hh
cmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQorfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjVkNzA1OTdiMGY2MAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29y
a2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0wLDAg
KzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2lu
Y2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQg
eworCisjZGVmaW5lIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVM
RUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJ
dTY0ICJdIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OiIgZm10LCB0
aGlzLCB3ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUludDY0KCksICMjX19WQV9BUkdTX18pCisK
K1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJs
ZURvbWFpbiwgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIpCisgICAgOiBtX2Nvbm5lY3Rp
b24oY29ubmVjdGlvbikKKyAgICAsIG1fc2VydmVyKHNlcnZlcikKKyAgICAsIG1fcmVnaXN0cmFi
bGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pCit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JF
TEVBU0VfTE9HKCJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOiIpOwor
ICAgIHNlcnZlci5hZGRDb250ZXh0Q29ubmVjdGlvbigqdGhpcyk7Cit9CisKK1dlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKCkKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0co
In5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOiIpOworICAgIGlmICht
X3NlcnZlciAmJiBtX3NlcnZlci0+Y29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFp
bihyZWdpc3RyYWJsZURvbWFpbigpKSA9PSB0aGlzKQorICAgICAgICBtX3NlcnZlci0+cmVtb3Zl
Q29udGV4dENvbm5lY3Rpb24oKnRoaXMpOworfQorCitXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp3ZWJQcm9jZXNzSWRl
bnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlvbi53ZWJQcm9jZXNzSWRl
bnRpZmllcigpOworfQorCitJUEM6OkNvbm5lY3Rpb24mIFdlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246OmlwY0Nvbm5lY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBt
X2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpOworfQorCitJUEM6OkNvbm5lY3Rpb24qIFdlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9u
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gJmlwY0Nvbm5lY3Rpb24oKTsKK30KKwordWludDY0X3Qg
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckRl
c3RpbmF0aW9uSUQoKSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCit2b2lkIFdlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVl
ZGVkKCkKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coImNvbm5lY3Rpb25J
c05vTG9uZ2VyTmVlZGVkOiIpOworICAgIG1fY29ubmVjdGlvbi5zaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOworfQorCit2b2lkIFdlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9i
amVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgQ09OVEVYVF9DT05ORUNU
SU9OX1JFTEVBU0VfTE9HKCJwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Q6IHNoYXJlZFdvcmtl
cklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkp
OworICAgIGlmIChtX3NlcnZlcikKKyAgICAgICAgbV9zZXJ2ZXItPnBvc3RFeGNlcHRpb25Ub1dv
cmtlck9iamVjdChzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpsYXVuY2hTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIg
c2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFdlYkNvcmU6Oldv
cmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMsIGNvbnN0IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYg
c2NyaXB0QnVmZmVyKQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygibGF1
bmNoU2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVk
V29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkxhdW5jaFNoYXJlZFdvcmtlciB7IG9y
aWdpbiwgc2hhcmVkV29ya2VySWRlbnRpZmllciwgdXJsLCB3b3JrZXJPcHRpb25zLCBzY3JpcHRC
dWZmZXIgfSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6cG9zdENvbm5lY3RFdmVudChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNo
YXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBv
cnQmIHBvcnQsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQoreworICAgIENPTlRFWFRfQ09O
TkVDVElPTl9SRUxFQVNFX0xPRygicG9zdENvbm5lY3RFdmVudDogc2hhcmVkV29ya2VySWRlbnRp
Zmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpQ
b3N0Q29ubmVjdEV2ZW50IHsgc2hhcmVkV29ya2VySWRlbnRpZmllciwgcG9ydCwgc291cmNlT3Jp
Z2luIH0pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OnRlcm1pbmF0ZVNoYXJlZFdvcmtlcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVy
IHNoYXJlZFdvcmtlcklkZW50aWZpZXIpCit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVB
U0VfTE9HKCJ0ZXJtaW5hdGVTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIg
UFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VGVybWluYXRl
U2hhcmVkV29ya2VyIHsgc2hhcmVkV29ya2VySWRlbnRpZmllciB9KTsKK30KKworI3VuZGVmIENP
TlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdhYjI3
YWY3ZmE2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApA
QCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAi
V2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOworY2xhc3MgU2NyaXB0QnVmZmVyOwor
c3RydWN0IENsaWVudE9yaWdpbjsKK3N0cnVjdCBXb3JrZXJPcHRpb25zOworfQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CitjbGFz
cyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI7CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJs
aWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
cHVibGljOgorICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYsIFdlYlNoYXJlZFdvcmtlclNlcnZlciYpOworICAgIH5XZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7CisKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0OworICAgIGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0
cmFibGVEb21haW47IH0KKyAgICBJUEM6OkNvbm5lY3Rpb24mIGlwY0Nvbm5lY3Rpb24oKSBjb25z
dDsKKworICAgIHZvaWQgbGF1bmNoU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0
IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmLCBjb25zdCBXZWJDb3JlOjpTY3JpcHRCdWZmZXImKTsK
KyAgICB2b2lkIHBvc3RDb25uZWN0RXZlbnQoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYsIGNvbnN0IFN0cmluZyYg
c291cmNlT3JpZ2luKTsKKyAgICB2b2lkIHRlcm1pbmF0ZVNoYXJlZFdvcmtlcihXZWJDb3JlOjpT
aGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKKworICAgIHZvaWQgY29ubmVjdGlvbklzTm9Mb25nZXJO
ZWVkZWQoKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJikgZmluYWw7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDIG1lc3NhZ2VzLgor
ICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtl
cklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCisgICAgLy8gSVBD
OjpNZXNzYWdlU2VuZGVyLgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRp
b25JRCgpIGNvbnN0IGZpbmFsOworCisgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IG1fY29ubmVjdGlvbjsKKyAgICBXZWFrUHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlcj4gbV9zZXJ2
ZXI7CisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hh
cmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hZTQ3YzEyMmNi
YWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJl
ZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCkBAIC0wLDAgKzEsMjUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworbWVzc2FnZXMgLT4gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
biBOb3RSZWZDb3VudGVkIHsKKyAgICBQb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29y
ZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBTdHJpbmcg
ZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgU3RyaW5nIHNv
dXJjZVVSTCkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKaW5kZXggNDRlMGE3YWNiN2I1Li43
YjdjYzliYWM0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCkBAIC05Nyw2ICs5Nyw3IEBA
IGV4dGVybiAiQyIgewogICAgIE0oU2VydmljZVdvcmtlcikgXAogICAgIE0oU2Vzc2lvblN0YXRl
KSBcCiAgICAgTShTaGFyZWREaXNwbGF5TGlzdHMpIFwKKyAgICBNKFNoYXJlZFdvcmtlcikgXAog
ICAgIE0oU3RvcmFnZSkgXAogICAgIE0oU3RvcmFnZUFQSSkgXAogICAgIE0oVGV4dElucHV0KSBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA3ZWJmYTUxNmI1
MDMuLjFhMjYxZTBiMTBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5CkBAIC0zMDMsMTAgKzMwMywxMyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2Fy
ZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRl
bnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoJywKKyAgICAgICAg
J1dlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXInLAorICAgICAgICAnV2ViQ29yZTo6U2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTbGVlcERpc2Fi
bGVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTb3VyY2VCdWZmZXJBcHBlbmRNb2Rl
JywKICAgICAgICAgJ1dlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U3RvcmFnZVR5cGUnLAorICAgICAgICAnV2Vi
Q29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCcsCiAgICAgICAgICdXZWJDb3JlOjpVc2VyTWVk
aWFSZXF1ZXN0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpXZWJMb2NrSWRlbnRpZmll
cicsCiAgICAgICAgICdXZWJDb3JlOjpXZWJTb2NrZXRJZGVudGlmaWVyJywKQEAgLTg1MSw2ICs4
NTQsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6OlRl
eHRDaGVja2luZ1R5cGUnOiBbJzxXZWJDb3JlL1RleHRDaGVja2luZy5oPiddLAogICAgICAgICAn
V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGEnOiBbJzxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4n
XSwKICAgICAgICAgJ1dlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUnOiBbJzxX
ZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPiddLAorICAgICAgICAnV2ViQ29yZTo6VHJh
bnNmZXJyZWRNZXNzYWdlUG9ydCc6IFsnPFdlYkNvcmUvTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMu
aD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlVzZWRMZWdhY3lUTFMnOiBbJzxXZWJDb3JlL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpWaWRlb1ByZXNldERhdGEn
OiBbJzxXZWJDb3JlL1ZpZGVvUHJlc2V0Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpWaWV3cG9y
dEF0dHJpYnV0ZXMnOiBbJzxXZWJDb3JlL1ZpZXdwb3J0QXJndW1lbnRzLmg+J10sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dAppbmRleCBkZjQ3Yzc4NmM4ZGUuLmU0YzA3ODc1MmYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0xNDEs
NiArMTQxLDEwIEBAIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dPcmlnaW5TdG9y
ZS5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiAKK05ldHdvcmtQcm9j
ZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwCitOZXR3b3JrUHJvY2Vz
cy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAKK05ldHdv
cmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcAorCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFu
YWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUu
Y3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0
cnkuY3BwCkBAIC03ODIsNiArNzg2LDkgQEAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFi
bGUuY3BwCiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dC5jcHAKIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwCitX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmNwcAorV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24u
Y3BwCitXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwCiAKIFdl
YlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAogCkBAIC04
ODQsMyArODkxLDcgQEAgUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5TWVzc2FnZVJlY2VpdmVyLmNwcAog
U2VydmljZVdvcmtlckRvd25sb2FkVGFza01lc3NhZ2VSZWNlaXZlci5jcHAKIFdlYkJyb2FkY2Fz
dENoYW5uZWxSZWdpc3RyeU1lc3NhZ2VSZWNlaXZlci5jcHAKIFdlYkxvY2tSZWdpc3RyeVByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbk1l
c3NhZ2VSZWNlaXZlci5jcHAKK1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25NZXNzYWdl
UmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVz
c2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggZDFiNDM3MTc2MzVmLi4zMzAyMGJk
NWMzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTI5LDcgKzUyOSw3IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6dGVybWluYXRlV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciB3ZWJQcm9jCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVVucmVzcG9uc2l2
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vz
c0lkZW50aWZpZXIpCiB7CiAgICAgaWYgKFJlZlB0ciBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5
Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihwcm9jZXNzSWRlbnRpZmllcikpIHsKLSAgICAgICAgcHJv
Y2Vzcy0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgICAgIHByb2Nlc3MtPmRpc2FibGVX
b3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiAgICAg
ICAgIHByb2Nlc3MtPnJlcXVlc3RUZXJtaW5hdGlvbihQcm9jZXNzVGVybWluYXRpb25SZWFzb246
OkV4Y2VlZGVkQ1BVTGltaXQpOwogICAgIH0KIH0KQEAgLTE0MTUsMTYgKzE0MTUsMjEgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkoV2ViVXNlckNvbnRlbnQKIH0KICNlbmRpZgogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4p
LCBzZXNzaW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYg
cmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURv
bWFpbiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2Vy
dmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBXZWJQcm9j
ZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KCp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2VydmljZVdvcmtlclBhZ2VJZGVu
dGlmaWVyLCBzZXNzaW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBXZWJQ
cm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyhXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2VydmljZVdvcmtlclBhZ2VJ
ZGVudGlmaWVyLCBzZXNzaW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAot
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp3b3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2Vy
TmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCit2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OnNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVl
ZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgaWYgKGF1
dG8qIHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKGlkZW50
aWZpZXIpKQotICAgICAgICBwcm9jZXNzLT5kaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICAg
ICAgcHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpT
ZXJ2aWNlV29ya2VyKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlBy
b2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2Vy
UHJvY2Vzc0lkZW50aWZpZXIpCkBAIC0xNDYwLDYgKzE0NjUsMTIgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjplbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6
UHJvY2Vzc0kKIH0KICNlbmRpZgogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNoYXJlZFdv
cmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byogcHJvY2VzcyA9IFdlYlByb2Nlc3NQ
cm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAgICAgIHByb2Nlc3Mt
PmRpc2FibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2hhcmVkV29ya2Vy
KTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmln
aW4sIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90
IHNwYWNlUmVxdWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gcXVvdGEpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9HKFN0
b3JhZ2UsICIlcCAtIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UiLCB0
aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmgKaW5kZXggOGNiZDdkMDliNjZmLi42ODQxYTM0ZmUwOWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCkBAIC0zMjcsMTMgKzMyNywxNSBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCi0gICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdv
cmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKLSAgICB2b2lkIHdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQo
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOworICAgIHZvaWQgZXN0YWJsaXNoU2VydmljZVdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2VydmljZVdvcmtlckNvbnRl
eHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwog
ICAgIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKICAgICB2b2lkIHVucmVnaXN0
ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3
ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdv
cmtlclByb2Nlc3NJZGVudGlmaWVyKTsKICAgICB2b2lkIHN0YXJ0U2VydmljZVdvcmtlckJhY2tn
cm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzSWRlbnRpZmllcik7CiAgICAgdm9pZCBlbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFBy
b2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJ
ZGVudGlmaWVyKTsKICNlbmRpZgorICAgIHZvaWQgc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CisgICAgdm9pZCBl
c3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIHRlcm1pbmF0ZVdlYlByb2Nlc3MoV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXgg
YTk5NzZiMjJlNzNmLi4xNTc1N2VkOWEyNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4KQEAgLTUzLDEzICs1MywxNSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExl
Z2FjeVJlY2VpdmVyIHsKICAgICBUZXJtaW5hdGVXZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdv
cmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5j
Ci0gICAgV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIEVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
cmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYworICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0Q29u
bmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCiAgICAgUmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQogICAgIFVucmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9j
ZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclBy
b2Nlc3NJZGVudGlmaWVyKQogICAgIFN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNz
aW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRp
ZmllcikKICAgICBFbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQogI2VuZGlm
CisgICAgRXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCisgICAgU2hhcmVkV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlm
aWVyKQogCiAgICAgU2V0V2ViUHJvY2Vzc0hhc1VwbG9hZHMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIgcHJvY2Vzc0lELCBib29sIGhhc1VwbG9hZCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZTQ5OTM1YzMyNWY2Li4xYWNiMzQ0NGFmYTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzY5MSwxMSArMzY5MSw5
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KQog
ICAgICAgICByZXR1cm47CiAgICAgbV91c2VyQWdlbnQgPSBXVEZNb3ZlKHVzZXJBZ2VudCk7CiAK
LSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgLy8gV2UgdXBkYXRlIHRoZSBzZXJ2aWNl
IHdvcmtlciB0aGVyZSBhdCB0aGUgbW9tZW50IHRvIGJlIHN1cmUgd2UgdXNlIHZhbHVlcyB1c2Vk
IGJ5IGFjdHVhbCB3ZWIgcGFnZXMuCiAgICAgLy8gRklYTUU6IFJlZmFjdG9yIHRoaXMgd2hlbiB3
ZSBoYXZlIGEgYmV0dGVyIFVzZXItQWdlbnQgc3RvcnkuCi0gICAgcHJvY2VzcygpLnByb2Nlc3NQ
b29sKCkudXBkYXRlU2VydmljZVdvcmtlclVzZXJBZ2VudChtX3VzZXJBZ2VudCk7Ci0jZW5kaWYK
KyAgICBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS51cGRhdGVXb3JrZXJVc2VyQWdlbnQobV91c2Vy
QWdlbnQpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggNjZkNDlm
YWMzZWE2Li40YjE5YjBkMWQzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKQEAgLTUyOSw3ICs1MjksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRX
ZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Bybwog
Ym9vbCBXZWJQcm9jZXNzUG9vbDo6c191c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzID0g
ZmFsc2U7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3NQb29s
Ojplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29y
a1Byb2Nlc3NQcm94eSYgcHJveHksIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21h
aW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZp
Y2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlByb2Nlc3NQ
b29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRp
ZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IFdl
YnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Npb25JRCk7
CiAgICAgaWYgKCF3ZWJzaXRlRGF0YVN0b3JlKQpAQCAtNTQ2LDcgKzU0Niw3IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhOZXR3b3JrUHJvCiAgICAgaWYgKHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcikgewog
ICAgICAgICAvLyBUaGlzIGlzIGEgc2VydmljZSB3b3JrZXIgZm9yIGEgc2VydmljZSB3b3JrZXIg
cGFnZSBzbyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSB1c2UgdXNlIHRoZSBwYWdlJ3MgV2ViUHJv
Y2VzcyBmb3IgdGhlIHNlcnZpY2Ugd29ya2VyLgogICAgICAgICBpZiAoKHNlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHNlcnZp
Y2VXb3JrZXJQYWdlSWRlbnRpZmllci0+cHJvY2Vzc0lkZW50aWZpZXIoKSkpKSB7Ci0gICAgICAg
ICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVTZXJ2aWNlV29ya2Vycyhwcm9j
ZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvclNlcnZpY2VXb3JrZXJz
KCkpOworICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlV29ya2Vy
cyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIHByb2Nlc3NQb29s
LT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpKTsKICAgICAgICAg
ICAgIGlmIChzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpIHsK
ICAgICAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hlKCkucmVtb3ZlUHJv
Y2Vzcygqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0NhY2hlOjpTaG91bGRT
aHV0RG93blByb2Nlc3M6Ok5vKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIXNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSk7CkBAIC01NjQsNDIgKzU2NCw5MiBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MoTmV0d29ya1BybwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gcHJvY2Vzcy5wdHIoKTsKLSAg
ICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVNlcnZpY2VXb3JrZXJz
KHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdv
cmtlcnMoKSk7CisgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVX
b3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgcHJvY2Vz
c1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOwogCiAg
ICAgICAgICAgICBpZiAoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNo
ZSgpKSB7CiAgICAgICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLnJl
bW92ZVByb2Nlc3MoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NDYWNoZTo6
U2hvdWxkU2h1dERvd25Qcm9jZXNzOjpObyk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFzZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpOwogICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoU2Vydmlj
ZVdvcmtlciwgImVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyByZXVzaW5nIGFuIGV4aXN0aW5nIHdlYiBwcm9jZXNzIChwcm9jZXNzPSVwLCBQSUQ9JWQpIiwg
c2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xP
R19TVEFUSUMoU2VydmljZVdvcmtlciwgImVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgcmV1c2luZyBhbiBleGlzdGluZyB3ZWIgcHJvY2VzcyAo
cHJvY2Vzcz0lcCwgUElEPSVkKSIsIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIHNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIXNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHkpIHsKLSAgICAgICAgYXV0byBuZXdQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmNy
ZWF0ZUZvclNlcnZpY2VXb3JrZXJzKCpwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21haW4gIHsg
cmVnaXN0cmFibGVEb21haW4gfSwgKndlYnNpdGVEYXRhU3RvcmUpOworICAgICAgICBhdXRvIG5l
d1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yV29ya2VycyhXZWJQcm9j
ZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsICpwcm9jZXNzUG9vbCwgUmVnaXN0
cmFibGVEb21haW4gIHsgcmVnaXN0cmFibGVEb21haW4gfSwgKndlYnNpdGVEYXRhU3RvcmUpOwog
ICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gbmV3UHJvY2Vzc1Byb3h5LnB0cigp
OwogCi0gICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhTZXJ2aWNlV29y
a2VyLCAiZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIGNy
ZWF0aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nlcz0lcCwgUElEPSVkKSIs
IHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPnBy
b2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19T
VEFUSUMoU2VydmljZVdvcmtlciwgImVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MgY3JlYXRpbmcgYSBuZXcgc2VydmljZSB3b3JrZXIgcHJvY2Vz
cyAocHJvY2VzPSVwLCBQSUQ9JWQpIiwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgc2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAKICAgICAgICAgcHJv
Y2Vzc1Bvb2wtPmluaXRpYWxpemVOZXdXZWJQcm9jZXNzKG5ld1Byb2Nlc3NQcm94eSwgd2Vic2l0
ZURhdGFTdG9yZSk7CiAgICAgICAgIHByb2Nlc3NQb29sLT5tX3Byb2Nlc3Nlcy5hcHBlbmQoV1RG
TW92ZShuZXdQcm9jZXNzUHJveHkpKTsKICAgICB9CiAKLSAgICBBU1NFUlQoIXNlcnZpY2VXb3Jr
ZXJQcm9jZXNzZXMoKS5jb250YWlucygqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSkpOwotICAg
IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkp
OworICAgIHdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSk7
CiAKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hTZXJ2aWNlV29ya2Vy
Q29udGV4dChwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNz
UG9vbC0+bV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5t
X2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVEb21h
aW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwotICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fc2VydmljZVdvcmtlclVzZXJBZ2VudC5pc051
bGwoKSkKLSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+c2V0U2VydmljZVdvcmtl
clVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyVXNlckFnZW50KTsKKyAgICBz
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChw
cm9jZXNzUG9vbC0+bV93b3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQb29sLT5tX3dvcmtlclBy
ZWZlcmVuY2VzLnZhbHVlKCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVm
ZXJlbmNlcygpLnN0b3JlKCksIHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlk
ZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBpZiAoIXByb2Nlc3NQ
b29sLT5tX3dvcmtlclVzZXJBZ2VudC5pc051bGwoKSkKKyAgICAgICAgc2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eS0+c2V0V29ya2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3dvcmtlclVzZXJB
Z2VudCk7CiB9CisjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlRnJvbVNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQordm9pZCBXZWJQcm9j
ZXNzUG9vbDo6cmVtb3ZlRnJvbVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nl
c3MpCiB7Ci0gICAgQVNTRVJUKHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb250YWlucyhwcm9j
ZXNzKSk7Ci0gICAgc2VydmljZVdvcmtlclByb2Nlc3NlcygpLnJlbW92ZShwcm9jZXNzKTsKKyAg
ICBBU1NFUlQod29ya2VyUHJvY2Vzc2VzKCkuY29udGFpbnMocHJvY2VzcykpOworICAgIHdvcmtl
clByb2Nlc3NlcygpLnJlbW92ZShwcm9jZXNzKTsKK30KKwordm9pZCBXZWJQcm9jZXNzUG9vbDo6
ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIGF1dG8qIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpl
eGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChzZXNzaW9uSUQpOworICAgIGlmICghd2Vic2l0
ZURhdGFTdG9yZSkKKyAgICAgICAgd2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHREYXRhU3RvcmUoKS5wdHIoKTsKKyAgICBpZiAoIXByb2Nlc3NQb29scygpLnNpemUo
KSkKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZjxXZWJQcm9jZXNzUG9vbD4+IHNo
YXJlZFdvcmtlclByb2Nlc3NQb29sKFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoQVBJOjpQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpLmdldCgpKSk7CisKKyAgICAvLyBBcmJpdHJhcmls
eSBjaG9vc2UgdGhlIGZpcnN0IHByb2Nlc3MgcG9vbCB0byBob3N0IHRoZSBzaGFyZWQgd29ya2Vy
IHByb2Nlc3MuCisgICAgYXV0byogcHJvY2Vzc1Bvb2wgPSBwcm9jZXNzUG9vbHMoKVswXTsKKyAg
ICBBU1NFUlQocHJvY2Vzc1Bvb2wpOworCisgICAgV2ViUHJvY2Vzc1Byb3h5KiBzaGFyZWRXb3Jr
ZXJQcm9jZXNzUHJveHkgeyBudWxscHRyIH07CisKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBw
cm9jZXNzUG9vbC0+bV9wcm9jZXNzZXMpIHsKKyAgICAgICAgaWYgKHByb2Nlc3MucHRyKCkgPT0g
cHJvY2Vzc1Bvb2wtPm1fcHJld2FybWVkUHJvY2Vzcy5nZXQoKSB8fCBwcm9jZXNzLT5pc0R1bW15
UHJvY2Vzc1Byb3h5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCZwcm9j
ZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gd2Vic2l0ZURhdGFTdG9yZSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICBpZiAoIXByb2Nlc3MtPmlzTWF0Y2hpbmdSZWdpc3RyYWJsZURv
bWFpbihyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkgPSBwcm9jZXNzLnB0cigpOworICAgICAgICBzaGFy
ZWRXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3Jr
ZXJUeXBlOjpTaGFyZWRXb3JrZXIsIHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyRm9yV29ya2VycygpKTsKKworICAgICAgICBpZiAoc2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpIHsKKyAgICAgICAgICAgIHByb2Nlc3NQb29sLT53
ZWJQcm9jZXNzQ2FjaGUoKS5yZW1vdmVQcm9jZXNzKCpzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHks
IFdlYlByb2Nlc3NDYWNoZTo6U2hvdWxkU2h1dERvd25Qcm9jZXNzOjpObyk7CisgICAgICAgICAg
ICBBU1NFUlQoIXNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKTsK
KyAgICAgICAgfQorCisgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhT
aGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MgcmV1c2luZyBhbiBleGlzdGluZyB3ZWIgcHJvY2VzcyAocHJvY2Vzcz0lcCwg
UElEPSVkKSIsIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSwgc2hhcmVkV29ya2VyUHJvY2Vzc1By
b3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
aWYgKCFzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkpIHsKKyAgICAgICAgYXV0byBuZXdQcm9jZXNz
UHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvcldvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5
OjpXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIsICpwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21h
aW4gIHsgcmVnaXN0cmFibGVEb21haW4gfSwgKndlYnNpdGVEYXRhU3RvcmUpOworICAgICAgICBz
aGFyZWRXb3JrZXJQcm9jZXNzUHJveHkgPSBuZXdQcm9jZXNzUHJveHkucHRyKCk7CisKKyAgICAg
ICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElDKFNoYXJlZFdvcmtlciwgImVzdGFi
bGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyBjcmVhdGlu
ZyBhIG5ldyBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzIChwcm9jZXNzPSVwLCBQSUQ9JWQpIiwgc2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5LCBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPnByb2Nlc3NJ
ZGVudGlmaWVyKCkpOworCisgICAgICAgIHByb2Nlc3NQb29sLT5pbml0aWFsaXplTmV3V2ViUHJv
Y2VzcyhuZXdQcm9jZXNzUHJveHksIHdlYnNpdGVEYXRhU3RvcmUpOworICAgICAgICBwcm9jZXNz
UG9vbC0+bV9wcm9jZXNzZXMuYXBwZW5kKFdURk1vdmUobmV3UHJvY2Vzc1Byb3h5KSk7CisgICAg
fQorCisgICAgd29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkp
OworCisgICAgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hTaGFyZWRXb3JrZXJD
b250ZXh0KHByb2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bvb2wtPm1f
d29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3Jv
dXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVEb21haW4sIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKyAgICBpZiAoIXByb2Nlc3NQb29sLT5tX3dvcmtlclVzZXJBZ2Vu
dC5pc051bGwoKSkKKyAgICAgICAgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRXb3JrZXJV
c2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFnZW50KTsKIH0KLSNlbmRpZgogCiB2
b2lkIFdlYlByb2Nlc3NQb29sOjp3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCkK
IHsKQEAgLTEwMDMsMTAgKzEwNTMsOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0
UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiAKICAgICBtX2JhY2tGb3J3YXJkQ2Fj
aGUtPnJlbW92ZUVudHJpZXNGb3JQcm9jZXNzKHByb2Nlc3MpOwogCi0jaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQotICAgIGlmIChwcm9jZXNzLmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCi0g
ICAgICAgIHJlbW92ZUZyb21TZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKHByb2Nlc3MpOwotI2VuZGlm
CisgICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nV29ya2VycygpKQorICAgICAgICByZW1vdmVGcm9t
V29ya2VyUHJvY2Vzc2VzKHByb2Nlc3MpOwogCiAgICAgc3RhdGljX2Nhc3Q8V2ViQ29udGV4dFN1
cHBsZW1lbnQqPihzdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PigpKS0+cHJv
Y2Vzc0RpZENsb3NlKCZwcm9jZXNzKTsKIApAQCAtMTA2NywxMiArMTExNSwxMiBAQCBSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWlu
KFdlYnNpdGVEYXRhU3RvcgogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotVXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllciBXZWJQcm9jZXNzUG9vbDo6dXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllckZvclNlcnZpY2VXb3JrZXJzKCkKK1VzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXIgV2ViUHJvY2Vzc1Bvb2w6OnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXJGb3JXb3JrZXJzKCkKIHsKLSAgICBpZiAoIW1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yU2Vy
dmljZVdvcmtlcikKLSAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29y
a2VyID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmNyZWF0ZSgpOworICAgIGlmICgh
bV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JXb3JrZXJzKQorICAgICAgICBtX3VzZXJDb250ZW50
Q29udHJvbGxlckZvcldvcmtlcnMgPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6Y3Jl
YXRlKCk7CiAKLSAgICByZXR1cm4gbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29y
a2VyLT5pZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9y
V29ya2Vycy0+aWRlbnRpZmllcigpOwogfQogI2VuZGlmCiAKQEAgLTExMTksMTUgKzExNjcsMTMg
QEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNs
aWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSToKIAogICAgIGF1dG8gcGFnZSA9IHByb2Nlc3MtPmNy
ZWF0ZVdlYlBhZ2UocGFnZUNsaWVudCwgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogCi0j
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmICghbV9zZXJ2aWNlV29ya2VyUHJlZmVy
ZW5jZXMpIHsKLSAgICAgICAgbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMgPSBwYWdlLT5wcmVm
ZXJlbmNlc1N0b3JlKCk7Ci0gICAgICAgIGZvciAoYXV0byYgc2VydmljZVdvcmtlclByb2Nlc3Mg
OiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkpCi0gICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJv
Y2Vzcy51cGRhdGVTZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXNTdG9yZSgqbV9zZXJ2aWNlV29ya2Vy
UHJlZmVyZW5jZXMpOworICAgIGlmICghbV93b3JrZXJQcmVmZXJlbmNlcykgeworICAgICAgICBt
X3dvcmtlclByZWZlcmVuY2VzID0gcGFnZS0+cHJlZmVyZW5jZXNTdG9yZSgpOworICAgICAgICBm
b3IgKGF1dG8mIHdvcmtlclByb2Nlc3MgOiB3b3JrZXJQcm9jZXNzZXMoKSkKKyAgICAgICAgICAg
IHdvcmtlclByb2Nlc3MudXBkYXRlV29ya2VyUHJlZmVyZW5jZXNTdG9yZSgqbV93b3JrZXJQcmVm
ZXJlbmNlcyk7CiAgICAgfQogICAgIGlmICh1c2VyQ29udGVudENvbnRyb2xsZXIpCi0gICAgICAg
IG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yU2VydmljZVdvcmtlciA9IHVzZXJDb250ZW50Q29u
dHJvbGxlcjsKLSNlbmRpZgorICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtl
cnMgPSB1c2VyQ29udGVudENvbnRyb2xsZXI7CiAKICAgICBib29sIGVuYWJsZVByb2Nlc3NTd2Fw
T25Dcm9zc1NpdGVOYXZpZ2F0aW9uID0gcGFnZS0+cHJlZmVyZW5jZXMoKS5wcm9jZXNzU3dhcE9u
Q3Jvc3NTaXRlTmF2aWdhdGlvbkVuYWJsZWQoKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpA
QCAtMTE1MCwxNiArMTE5NiwxNCBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6
Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogICAgIHJldHVy
biBwYWdlOwogfQogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBXZWJQcm9jZXNz
UG9vbDo6dXBkYXRlU2VydmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCkKIHsKLSAgICBpZiAobV9zZXJ2aWNlV29ya2VyVXNlckFnZW50ID09IHVz
ZXJBZ2VudCkKKyAgICBpZiAobV93b3JrZXJVc2VyQWdlbnQgPT0gdXNlckFnZW50KQogICAgICAg
ICByZXR1cm47Ci0gICAgbV9zZXJ2aWNlV29ya2VyVXNlckFnZW50ID0gdXNlckFnZW50OwotICAg
IGZvciAoYXV0byYgc2VydmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
KCkpCi0gICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzLnNldFNlcnZpY2VXb3JrZXJVc2VyQWdl
bnQobV9zZXJ2aWNlV29ya2VyVXNlckFnZW50KTsKKyAgICBtX3dvcmtlclVzZXJBZ2VudCA9IHVz
ZXJBZ2VudDsKKyAgICBmb3IgKGF1dG8mIHdvcmtlclByb2Nlc3MgOiB3b3JrZXJQcm9jZXNzZXMo
KSkKKyAgICAgICAgd29ya2VyUHJvY2Vzcy5zZXRXb3JrZXJVc2VyQWdlbnQobV93b3JrZXJVc2Vy
QWdlbnQpOwogfQotI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVzaW5n
V2Vic2l0ZURhdGFTdG9yZShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgV2Vic2l0ZURh
dGFTdG9yZSYgZGF0YVN0b3JlKQogewpAQCAtMTUzOCw4ICsxNTgyLDEzIEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzKCkKIHsKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwotICAgIHdoaWxlIChz
ZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkuY29tcHV0ZVNpemUoKSkKLSAgICAgICAgc2VydmljZVdv
cmtlclByb2Nlc3NlcygpLmJlZ2luKCktPmRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgIFZl
Y3RvcjxSZWY8V2ViUHJvY2Vzc1Byb3h5Pj4gc2VydmljZVdvcmtlclByb2Nlc3NlczsKKyAgICB3
b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFsmXShhdXRvJiBwcm9jZXNzKSB7CisgICAgICAgIGlm
IChwcm9jZXNzLmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCisgICAgICAgICAgICBzZXJ2aWNl
V29ya2VyUHJvY2Vzc2VzLmFwcGVuZChwcm9jZXNzKTsKKyAgICB9KTsKKyAgICBmb3IgKGF1dG8m
IHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogc2VydmljZVdvcmtlclByb2Nlc3NlcykKKyAgICAgICAg
c2VydmljZVdvcmtlclByb2Nlc3MtPmRpc2FibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29y
a2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiAjZW5kaWYKIH0KIApAQCAtMTc2NywxMyArMTgxNiwx
MSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXBvcnRXZWJDb250ZW50Q1BVVGltZShTZWNvbmRz
IGNwdVRpbWUsIHVpbnQ2NF90IGFjdGl2aXR5UwogI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCi1XZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+JiBXZWJQcm9jZXNzUG9v
bDo6c2VydmljZVdvcmtlclByb2Nlc3NlcygpCitXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+
JiBXZWJQcm9jZXNzUG9vbDo6d29ya2VyUHJvY2Vzc2VzKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8V2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5Pj4gcHJvY2Vzc2VzOwogICAgIHJl
dHVybiBwcm9jZXNzZXM7CiB9Ci0jZW5kaWYKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRl
UHJvY2Vzc0Fzc2VydGlvbnMoKQogewpAQCAtMTc4NSwyMCArMTgzMiwyNSBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpCiAgICAgaWYgKGF1dG8qIGdwdVBy
b2Nlc3MgPSBHUFVQcm9jZXNzUHJveHk6OnNpbmdsZXRvbklmQ3JlYXRlZCgpKQogICAgICAgICBn
cHVQcm9jZXNzLT51cGRhdGVQcm9jZXNzQXNzZXJ0aW9uKCk7CiAjZW5kaWYKLSNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCisKICAgICAvLyBDaGVjayBvbiBuZXh0IHJ1biBsb29wIHNpbmNlIHRo
ZSB3ZWIgcHJvY2VzcyBwcm94eSB0b2tlbnMgYXJlIHByb2JhYmx5IGJlaW5nIHVwZGF0ZWQuCiAg
ICAgY2FsbE9uTWFpblJ1bkxvb3AoW10gewotICAgICAgICBmb3IgKGF1dG8mIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzIDogc2VydmljZVdvcmtlclByb2Nlc3NlcygpKQotICAgICAgICAgICAgc2Vydmlj
ZVdvcmtlclByb2Nlc3MudXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKLSAg
ICB9KTsKKyAgICAgICAgd29ya2VyUHJvY2Vzc2VzKCkuZm9yRWFjaChbXShhdXRvJiB3b3JrZXJQ
cm9jZXNzKSB7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgICAgICAgICAgaWYgKHdv
cmtlclByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKKyAgICAgICAgICAgICAgICB3
b3JrZXJQcm9jZXNzLnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV2ViUHJvY2Vzc1Byb3h5
OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgorICAgICAgICAgICAgaWYgKHdv
cmtlclByb2Nlc3MuaXNSdW5uaW5nU2hhcmVkV29ya2VycygpKQorICAgICAgICAgICAgICAgIHdv
cmtlclByb2Nlc3MudXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXZWJQcm9jZXNzUHJveHk6
OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlcik7CisgICAgICAgIH0pOworICAgIH0pOwogfQogCiBi
b29sIFdlYlByb2Nlc3NQb29sOjppc1NlcnZpY2VXb3JrZXJQYWdlSUQoV2ViUGFnZVByb3h5SWRl
bnRpZmllciBwYWdlSUQpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IC8vIEZJWE1FOiBUaGlzIGlzIGluZWZmaWNpZW50LgotICAgIHJldHVybiBXVEY6OmFueU9mKHNl
cnZpY2VXb3JrZXJQcm9jZXNzZXMoKSwgW3BhZ2VJRF0oYXV0byYgcHJvY2VzcykgeworICAgIHJl
dHVybiBXVEY6OmFueU9mKHdvcmtlclByb2Nlc3NlcygpLCBbcGFnZUlEXShhdXRvJiBwcm9jZXNz
KSB7CiAgICAgICAgIHJldHVybiBwcm9jZXNzLmhhc1NlcnZpY2VXb3JrZXJQYWdlUHJveHkocGFn
ZUlEKTsKICAgICB9KTsKICNlbmRpZgpAQCAtMjEyNCwxNiArMjE3NiwyNiBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpzZXRVc2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKGJvb2wgdXNlU2Vw
YXJhdGVTZXJ2aWNlVwogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorc2l6ZV90IFdl
YlByb2Nlc3NQb29sOjpzZXJ2aWNlV29ya2VyUHJveGllc0NvdW50KCkgY29uc3QKK3sKKyAgICB1
bnNpZ25lZCBjb3VudCA9IDA7CisgICAgd29ya2VyUHJvY2Vzc2VzKCkuZm9yRWFjaChbJl0oYXV0
byYgcHJvY2VzcykgeworICAgICAgICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdTZXJ2aWNlV29ya2Vy
cygpKQorICAgICAgICAgICAgKytjb3VudDsKKyAgICB9KTsKKyAgICByZXR1cm4gY291bnQ7Cit9
CisKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6Omhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZp
dHlGb3JUZXN0aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjphbnlPZihzZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICByZXR1cm4gV1RGOjphbnlP
Zih3b3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2VzcykgewogICAgICAgICByZXR1cm4g
cHJvY2Vzcy5oYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpOwog
ICAgIH0pOwogfQogCiBib29sIFdlYlByb2Nlc3NQb29sOjpoYXNTZXJ2aWNlV29ya2VyQmFja2dy
b3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6YW55T2Yo
c2VydmljZVdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9jZXNzKSB7CisgICAgcmV0dXJu
IFdURjo6YW55T2Yod29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAg
ICAgcmV0dXJuIHByb2Nlc3MuaGFzU2VydmljZVdvcmtlckJhY2tncm91bmRBY3Rpdml0eUZvclRl
c3RpbmcoKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oCmluZGV4IDQzMmM2NWVlOTk0OS4uZTcwYjZmNDI5ZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTM3NCwxNyArMzc0LDIwIEBAIHB1YmxpYzoKICAg
ICB2b2lkIG5ldHdvcmtQcm9jZXNzRGlkVGVybWluYXRlKE5ldHdvcmtQcm9jZXNzUHJveHkmLCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJtaW5hdGlvblJlYXNvbik7CiAKICAgICBib29sIGlzU2Vy
dmljZVdvcmtlclBhZ2VJRChXZWJQYWdlUHJveHlJZGVudGlmaWVyKSBjb25zdDsKKyAgICB2b2lk
IHJlbW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5Jik7CisKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCi0gICAgc3RhdGljIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmLCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6
U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgcmVtb3Zl
RnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5Jik7Ci0gICAgc2l6ZV90
IHNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25zdCB7IHJldHVybiBzZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzKCkuY29tcHV0ZVNpemUoKTsgfQotICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtl
clVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCk7Ci0gICAgVXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllciB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2Vydmlj
ZVdvcmtlcnMoKTsKKyAgICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYs
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+
IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisgICAgc2l6ZV90IHNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQo
KSBjb25zdDsKKyAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVzZXJDb250ZW50
Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCk7CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29y
a2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0OwogICAgIGJvb2wgaGFzU2Vy
dmljZVdvcmtlckJhY2tncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdDsKICNlbmRpZgog
ICAgIHZvaWQgc2VydmljZVdvcmtlclByb2Nlc3NDcmFzaGVkKFdlYlByb2Nlc3NQcm94eSYpOwog
CisgICAgdm9pZCB1cGRhdGVXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQp
OworICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKwogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgpIGNvbnN0OwogI2VuZGlmCkBA
IC02MTgsMTMgKzYyMSwxMSBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25J
RCwgV2Vha1B0cjxXZWJQcm9jZXNzUHJveHk+PiBtX2R1bW15UHJvY2Vzc1Byb3hpZXM7IC8vIExp
Z2h0d2VpZ2h0IFdlYlByb2Nlc3NQcm94eSBvYmplY3RzIHdpdGhvdXQgYmFja2luZyBwcm9jZXNz
LgogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHN0YXRpYyBXZWFrSGFzaFNldDxX
ZWJQcm9jZXNzUHJveHk+JiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCk7Ci0gICAgYm9vbCBtX3dh
aXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24geyBmYWxzZSB9OwotICAgIFN0
cmluZyBtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQ7Ci0gICAgc3RkOjpvcHRpb25hbDxXZWJQcmVm
ZXJlbmNlc1N0b3JlPiBtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlczsKLSAgICBSZWZQdHI8V2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+IG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yU2Vy
dmljZVdvcmtlcjsKLSNlbmRpZgorICAgIHN0YXRpYyBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJv
eHk+JiB3b3JrZXJQcm9jZXNzZXMoKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8V2ViUHJlZmVyZW5j
ZXNTdG9yZT4gbV93b3JrZXJQcmVmZXJlbmNlczsKKyAgICBSZWZQdHI8V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk+IG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2VyczsKKyAgICBT
dHJpbmcgbV93b3JrZXJVc2VyQWdlbnQ7CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAg
UmVmUHRyPEdQVVByb2Nlc3NQcm94eT4gbV9ncHVQcm9jZXNzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggM2JiZTAzYTdkYWUyLi4xOGFmMzQ2ZmRi
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAt
NTksNiArNTksNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURh
dGFGZXRjaE9wdGlvbi5oIgpAQCAtMTgyLDExICsxODMsMTEgQEAgUmVmPFdlYlByb2Nlc3NQcm94
eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBX
ZWJzaXQKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLVJlZjxXZWJQcm9jZXNzUHJv
eHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMoV2ViUHJvY2Vzc1Bv
b2wmIHByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBX
ZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQorUmVmPFdlYlByb2Nlc3NQcm94eT4g
V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdvcmtlclR5cGUgd29ya2VyVHlwZSwg
V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJh
YmxlRG9tYWluLCBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQogewogICAgIGF1
dG8gcHJveHkgPSBhZG9wdFJlZigqbmV3IFdlYlByb2Nlc3NQcm94eShwcm9jZXNzUG9vbCwgJndl
YnNpdGVEYXRhU3RvcmUsIElzUHJld2FybWVkOjpObywgQ3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQs
IENhcHRpdmVQb3J0YWxNb2RlOjpEaXNhYmxlZCkpOwogICAgIHByb3h5LT5tX3JlZ2lzdHJhYmxl
RG9tYWluID0gV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgcHJveHktPmVuYWJsZVNl
cnZpY2VXb3JrZXJzKHByb2Nlc3NQb29sLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJG
b3JTZXJ2aWNlV29ya2VycygpKTsKKyAgICBwcm94eS0+ZW5hYmxlV29ya2Vycyh3b3JrZXJUeXBl
LCBwcm9jZXNzUG9vbC51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2Vycygp
KTsKICAgICBwcm94eS0+Y29ubmVjdCgpOwogICAgIHJldHVybiBwcm94eTsKIH0KQEAgLTk5NSwx
MCArOTk2LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUo
KQogICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBpc1Jlc3BvbnNpdmVDYWxsYmFja3MpCiAgICAg
ICAgIGNhbGxiYWNrKGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUpOwogCi0gICAgLy8gSWYgdGhlIHdl
YiBwcm9jZXNzIGJlY29tZXMgdW5yZXNwb25zaXZlIGFuZCBvbmx5IHJ1bnMgc2VydmljZSB3b3Jr
ZXJzLCBraWxsIGl0IG91cnNlbHZlcyBzaW5jZSB0aGVyZSBhcmUgbm8gbmF0aXZlIGNsaWVudHMg
dG8gZG8gaXQuCi0gICAgaWYgKGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkgJiYgbV9wYWdlTWFw
LmlzRW1wdHkoKSkgewotICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0dfRVJST1Io
UGVyZm9ybWFuY2VMb2dnaW5nLCAiZGlkQmVjb21lVW5yZXNwb25zaXZlOiBUZXJtaW5hdGluZyBz
ZXJ2aWNlIHdvcmtlci1vbmx5IHdlYiBwcm9jZXNzIGJlY2F1c2UgaXQgaXMgdW5yZXNwb25zaXZl
Iik7Ci0gICAgICAgIGRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgIC8vIElmIHRoZSB3ZWIg
cHJvY2VzcyBiZWNvbWVzIHVucmVzcG9uc2l2ZSBhbmQgb25seSBydW5zIHNlcnZpY2Uvc2hhcmVk
IHdvcmtlcnMsIGtpbGwgaXQgb3Vyc2VsdmVzIHNpbmNlIHRoZXJlIGFyZSBubyBuYXRpdmUgY2xp
ZW50cyB0byBkbyBpdC4KKyAgICBpZiAoaXNSdW5uaW5nV29ya2VycygpICYmIG1fcGFnZU1hcC5p
c0VtcHR5KCkpIHsKKyAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HX0VSUk9SKFBl
cmZvcm1hbmNlTG9nZ2luZywgImRpZEJlY29tZVVucmVzcG9uc2l2ZTogVGVybWluYXRpbmcgd29y
a2VyLW9ubHkgd2ViIHByb2Nlc3MgYmVjYXVzZSBpdCBpcyB1bnJlc3BvbnNpdmUiKTsKKyAgICAg
ICAgZGlzYWJsZVdvcmtlcnMoeyBXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBXb3JrZXJUeXBl
OjpTaGFyZWRXb3JrZXIgfSk7CiAgICAgICAgIHRlcm1pbmF0ZSgpOwogICAgIH0KIH0KQEAgLTE2
OTQsOCArMTY5NSw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFs
TG9hZEZvck1haW5GcmFtZShjb25zdCBVUkwmIHVybCkKICAgICBhdXRvIHJlZ2lzdHJhYmxlRG9t
YWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfTsKICAgICBpZiAobV9yZWdp
c3RyYWJsZURvbWFpbiAmJiAqbV9yZWdpc3RyYWJsZURvbWFpbiAhPSByZWdpc3RyYWJsZURvbWFp
bikgewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICAgICAgZGlzYWJsZVNlcnZpY2VX
b3JrZXJzKCk7CisgICAgICAgIGRpc2FibGVXb3JrZXJzKFdvcmtlclR5cGU6OlNlcnZpY2VXb3Jr
ZXIpOwogI2VuZGlmCisKICAgICAgICAgLy8gTnVsbCBvdXQgcmVnaXN0cmFibGUgZG9tYWluIHNp
bmNlIHRoaXMgcHJvY2VzcyBoYXMgbm93IGJlZW4gdXNlZCBmb3Igc2V2ZXJhbCBkb21haW5zLgog
ICAgICAgICBtX3JlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
eyB9OwogICAgICAgICByZXR1cm47CkBAIC0xODYxLDYzICsxODYzLDg1IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjplbmRCYWNrZ3JvdW5kQWN0aXZpdHlGb3JGdWxsc2NyZWVuSW5wdXQoKQogCiAj
ZW5kaWYKIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5
Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3Jl
JiBzdG9yZSwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6
Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2Vy
UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKLXsKLSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImVzdGFi
bGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0OiBTdGFydGVkIik7Ci0gICAgbWFya1Byb2Nlc3NBc1Jl
Y2VudGx5VXNlZCgpOwotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vz
czo6RXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcHJv
Y2Vzc1Bvb2woKS5kZWZhdWx0UGFnZUdyb3VwKCkucGFnZUdyb3VwSUQoKSwgbV9zZXJ2aWNlV29y
a2VySW5mb3JtYXRpb24tPnNlcnZpY2VXb3JrZXJQYWdlUHJveHlJRCwgbV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb24tPnNlcnZpY2VXb3JrZXJQYWdlSUQsIHN0b3JlLCByZWdpc3RyYWJsZURvbWFp
biwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlv
bi0+aW5pdGlhbGl6YXRpb25EYXRhIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhp
cyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgewotICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICBXRUJQUk9DRVNTUFJP
WFlfUkVMRUFTRV9MT0coTG9hZGluZywgImVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0OiBG
aW5pc2hlZCIpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotICAgIH0sIDApOwotfQot
Ci12b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBT
dHJpbmcmIHVzZXJBZ2VudCkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRXb3JrZXJVc2VyQWdl
bnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiB7Ci0gICAgQVNTRVJUKG1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6U2V0VXNlckFnZW50IHsgdXNlckFnZW50IH0sIDApOworI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTZXRVc2VyQWdl
bnQgeyB1c2VyQWdlbnQgfSwgMCk7CisjZW5kaWYKKyAgICBpZiAobV9zaGFyZWRXb3JrZXJJbmZv
cm1hdGlvbikKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2VyQWdlbnQgfSwgMCk7CiB9CiAKLXZv
aWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShj
b25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1
cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0
b3JlKQogewotICAgIEFTU0VSVChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbik7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZVByZWZlcmVu
Y2VzU3RvcmUgeyBzdG9yZSB9LCAwKTsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAg
aWYgKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0
b3JlIH0sIDApOworI2VuZGlmCisgICAgaWYgKG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24pCisg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDApOwogfQogCi12b2lkIFdl
YlByb2Nlc3NQcm94eTo6dXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKQorLy8g
RklYTUU6IENsaWVudHMgZG8gbm90IHByb3Blcmx5IGdldCBwb3B1bGF0ZWQgaW4gbV9zaGFyZWRX
b3JrZXJJbmZvcm1hdGlvbi4KK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVXb3JrZXJQcm9j
ZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGUgd29ya2VyVHlwZSkKIHsKLSAgICBXRUJQUk9DRVNTUFJP
WFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVTZXJ2aWNlV29ya2VyUHJv
Y2Vzc0Fzc2VydGlvbjoiKTsKLSAgICBBU1NFUlQobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24p
OwotICAgIGlmICghbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAgYXV0byYgd29ya2Vy
SW5mb3JtYXRpb24gPSB3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/IG1f
c2hhcmVkV29ya2VySW5mb3JtYXRpb24gOiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsKKyAg
ICBBU1NFUlQod29ya2VySW5mb3JtYXRpb24pOworICAgIGlmICghd29ya2VySW5mb3JtYXRpb24p
CiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgc2hvdWxkVGFrZUZvcmVncm91bmRBY3Rpdml0
eSA9IFdURjo6YW55T2YobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3Nl
cywgWyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0co
UHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uOiB3b3JrZXJU
eXBlPSV7cHVibGljfXMiLCB3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/
ICJzaGFyZWQiIDogInNlcnZpY2UiKTsKKworICAgIGJvb2wgc2hvdWxkVGFrZUZvcmVncm91bmRB
Y3Rpdml0eSA9IFdURjo6YW55T2Yod29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3Nlcywg
WyZdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuICZwcm9jZXNzICE9IHRoaXMgJiYg
ISFwcm9jZXNzLm1fZm9yZWdyb3VuZFRva2VuOwogICAgIH0pOwogICAgIGlmIChzaG91bGRUYWtl
Rm9yZWdyb3VuZEFjdGl2aXR5KSB7Ci0gICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNW
YWxpZEZvcmVncm91bmRBY3Rpdml0eShtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZp
dHkpKQotICAgICAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0g
bV90aHJvdHRsZXIuZm9yZWdyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3IgZm9yZWdy
b3VuZCB2aWV3KHMpIl9zKTsKKyAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlk
Rm9yZWdyb3VuZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCisgICAgICAg
ICAgICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5mb3JlZ3JvdW5k
QWN0aXZpdHkoIldvcmtlciBmb3IgZm9yZWdyb3VuZCB2aWV3KHMpIl9zKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGJvb2wgc2hvdWxkVGFrZUJhY2tncm91bmRBY3Rpdml0eSA9IFdU
Rjo6YW55T2YobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3NlcywgWyZd
KGF1dG8mIHByb2Nlc3MpIHsKKyAgICBib29sIHNob3VsZFRha2VCYWNrZ3JvdW5kQWN0aXZpdHkg
PSBXVEY6OmFueU9mKHdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMsIFsmXShhdXRv
JiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiAmcHJvY2VzcyAhPSB0aGlzICYmICEhcHJvY2Vz
cy5tX2JhY2tncm91bmRUb2tlbjsKICAgICB9KTsKICAgICBpZiAoc2hvdWxkVGFrZUJhY2tncm91
bmRBY3Rpdml0eSkgewotICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRCYWNr
Z3JvdW5kQWN0aXZpdHkobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKLSAg
ICAgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0
bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tncm91bmQgdmll
dyhzKSJfcyk7CisgICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEJhY2tncm91
bmRBY3Rpdml0eSh3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQorICAgICAgICAgICAgd29y
a2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5
KCJXb3JrZXIgZm9yIGJhY2tncm91bmQgdmlldyhzKSJfcyk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBpZiAobV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcpIHsK
KyAgICBpZiAod29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyICYmIG1faGFz
U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKSB7CiAgICAgICAgIFdFQlBST0NFU1NQ
Uk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlNlcnZpY2UgV29ya2VyIGZvciBi
YWNrZ3JvdW5kIHByb2Nlc3NpbmciKTsKLSAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjpp
c1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5KG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rp
dml0eSkpCi0gICAgICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkg
PSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2VyIGZvciBiYWNr
Z3JvdW5kIHByb2Nlc3NpbmciX3MpOworICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6Omlz
VmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkod29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKKyAg
ICAgICAgICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmJhY2tn
cm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tncm91bmQgcHJvY2Vzc2luZyJf
cyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1h
dGlvbi0+YWN0aXZpdHkgPSBudWxscHRyOworICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0
eSA9IG51bGxwdHI7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTaGFyZWRX
b3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9M
T0coU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dDogU3RhcnRlZCIp
OworICAgIG1hcmtQcm9jZXNzQXNSZWNlbnRseVVzZWQoKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVsdFBhZ2VHcm91cCgp
LnBhZ2VHcm91cElEKCksIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24tPndvcmtlclBhZ2VQcm94
eUlELCBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uLT53b3JrZXJQYWdlSUQsIHN0b3JlLCByZWdp
c3RyYWJsZURvbWFpbiwgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbi0+aW5pdGlhbGl6YXRpb25E
YXRhIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBp
ZiAod2Vha1RoaXMpCisgICAgICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2hh
cmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dDogRmluaXNoZWQiKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9LCAwKTsKK30KKworI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29y
a2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBXRUJQUk9D
RVNTUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250
ZXh0OiBTdGFydGVkIik7CisgICAgbWFya1Byb2Nlc3NBc1JlY2VudGx5VXNlZCgpOworICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RXN0YWJsaXNoU2VydmljZVdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVm
YXVsdFBhZ2VHcm91cCgpLnBhZ2VHcm91cElEKCksIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9u
LT53b3JrZXJQYWdlUHJveHlJRCwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPndvcmtlclBh
Z2VJRCwgc3RvcmUsIHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZp
ZXIsIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5pbml0aWFsaXphdGlvbkRhdGEgfSwgW3Ro
aXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICh3ZWFrVGhp
cykKKyAgICAgICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZXN0
YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQ6IEZpbmlzaGVkIik7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CisgICAgfSwgMCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZWdp
c3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCkBA
IC0xOTI3LDcgKzE5NTEsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVnaXN0ZXJTZXJ2aWNl
V29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb3h5KQogCiAgICAgV0VCUFJP
Q0VTU1BST1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJyZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnRQcm9jZXNzOiBjbGllbnRQcm9jZXNzPSVwLCBjbGllbnRQSUQ9JWQiLCAmcHJveHks
IHByb3h5LnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uLT5jbGllbnRQcm9jZXNzZXMuYWRkKHByb3h5KTsKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2Vy
UHJvY2Vzc0Fzc2VydGlvbigpOworICAgIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29y
a2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1bnJl
Z2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkK
QEAgLTE5MzcsNyArMTk2MSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1bnJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94CiAKICAgICBXRUJQ
Uk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgInVucmVnaXN0ZXJTZXJ2aWNl
V29ya2VyQ2xpZW50UHJvY2VzczogY2xpZW50UHJvY2Vzcz0lcCwgY2xpZW50UElEPSVkIiwgJnBy
b3h5LCBwcm94eS5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBtX3NlcnZpY2VXb3JrZXJJbmZv
cm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2VzLnJlbW92ZShwcm94eSk7Ci0gICAgdXBkYXRlU2Vydmlj
ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0
aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogfQogCiBib29sIFdlYlByb2Nlc3NQcm94
eTo6aGFzU2VydmljZVdvcmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdApA
QCAtMTk1Nyw3ICsxOTgxLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnN0YXJ0U2VydmljZVdv
cmtlckJhY2tncm91bmRQcm9jZXNzaW5nKCkKIAogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNF
X0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9j
ZXNzaW5nIik7CiAgICAgbV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcgPSB0
cnVlOwotICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBk
YXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0K
IAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vz
c2luZygpCkBAIC0xOTY3LDIzICsxOTkxLDM5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmRT
ZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoKQogCiAgICAgV0VCUFJPQ0VTU1BST1hZ
X1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiZW5kU2VydmljZVdvcmtlckJhY2tncm91
bmRQcm9jZXNzaW5nIik7CiAgICAgbV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3Np
bmcgPSBmYWxzZTsKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOwor
ICAgIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtl
cik7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCi12b2lkIFdlYlByb2Nl
c3NQcm94eTo6ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpk
aXNhYmxlV29ya2VycyhPcHRpb25TZXQ8V29ya2VyVHlwZT4gd29ya2VyVHlwZSkKIHsKLSAgICBp
ZiAoIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQorICAgIEFTU0VSVCghd29ya2VyVHlwZS5p
c0VtcHR5KCkpOworCisgICAgYm9vbCBkaWRDaGFuZ2UgPSBmYWxzZTsKKyAgICBpZiAod29ya2Vy
VHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSAmJiBtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbikgeworICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiA9IHsg
fTsKKyAgICAgICAgZGlkQ2hhbmdlID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKHdvcmtlclR5cGUu
Y29udGFpbnMoV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSAmJiBtX3NoYXJlZFdvcmtlckluZm9y
bWF0aW9uKSB7CisgICAgICAgIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gPSB7IH07CisgICAg
ICAgIGRpZENoYW5nZSA9IHRydWU7CisgICAgfQorICAgIGlmICghZGlkQ2hhbmdlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtl
ciwgImRpc2FibGVTZXJ2aWNlV29ya2VyczoiKTsKLSAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1h
dGlvbiA9IHsgfTsKKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2VzcywgImRp
c2FibGVXb3JrZXJzOiBEaXNhYmxpbmcgd29ya2VycyAoU2hhcmVkV29ya2Vycz0lZCwgU2Vydmlj
ZVdvcmtlcnM9JWQpIiwgd29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTaGFyZWRXb3Jr
ZXIpLCB3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpKTsKKwog
ICAgIHVwZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiAKKyAgICBpZiAoIWlz
UnVubmluZ1dvcmtlcnMoKSkKKyAgICAgICAgcHJvY2Vzc1Bvb2woKS5yZW1vdmVGcm9tV29ya2Vy
UHJvY2Vzc2VzKCp0aGlzKTsKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBwcm9j
ZXNzUG9vbCgpLnJlbW92ZUZyb21TZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCp0aGlzKTsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q2xvc2UgeyB9LCAw
KTsKKyAgICBpZiAod29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2Vy
KSkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OkNsb3NlIHsgfSwgMCk7CiAjZW5kaWYKKyAgICBpZiAod29ya2VyVHlwZS5jb250YWlucyhXb3Jr
ZXJUeXBlOjpTaGFyZWRXb3JrZXIpKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNsb3NlIHsgfSwgMCk7CiAKICAgICBtYXli
ZVNodXREb3duKCk7CiB9CkBAIC0yMDA0LDExICsyMDQ0LDEzIEBAIHN0YXRpYyBWZWN0b3I8c3Rk
OjpwYWlyPFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YSwgVVJMPj4gY29udGVudFJ1bGVM
aXN0c0ZyCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVNlcnZpY2VX
b3JrZXJzKGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImIHVzZXJDb250ZW50
Q29udHJvbGxlcklkZW50aWZpZXIpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlV29ya2Vy
cyhXb3JrZXJUeXBlIHdvcmtlclR5cGUsIGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXImIHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpCiB7Ci0gICAgQVNTRVJUKCFt
X3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbik7Ci0gICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0Vf
TE9HKFNlcnZpY2VXb3JrZXIsICJlbmFibGVTZXJ2aWNlV29ya2VyczoiKTsKLSAgICBtX3NlcnZp
Y2VXb3JrZXJJbmZvcm1hdGlvbiA9IFNlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiB7CisgICAgV0VC
UFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJlbmFibGVXb3JrZXJzOiB3
b3JrZXJUeXBlPSV1Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHdvcmtlclR5cGUpKTsKKyAgICBh
dXRvJiB3b3JrZXJJbmZvcm1hdGlvbiA9IHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVk
V29ya2VyID8gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA6IG1fc2VydmljZVdvcmtlckluZm9y
bWF0aW9uOworICAgIEFTU0VSVCghd29ya2VySW5mb3JtYXRpb24pOworCisgICAgd29ya2VySW5m
b3JtYXRpb24gPSBXb3JrZXJJbmZvcm1hdGlvbiB7CiAgICAgICAgIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXI6OmdlbmVyYXRlKCksCiAgICAgICAgIFBhZ2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLAog
ICAgICAgICBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhIHsKQEAgLTIwMjEsOSArMjA2
Myw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVTZXJ2aWNlV29ya2Vycyhjb25zdCBV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyCiAgICAgICAgIHsgfQogICAgIH07CiAgICAg
dXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKLSNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKLSNl
bmRpZgorCisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbih3b3JrZXJUeXBlKTsKIH0K
IAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZENyZWF0ZVNsZWVwRGlzYWJsZXIoU2xlZXBEaXNh
YmxlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiByZWFzb24sIGJvb2wgZGlz
cGxheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggZjUx
NGI5OTE2YWQ0Li4xOTJkNWQyYjZmOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oCkBAIC0xMzYsOSArMTM2LDEzIEBAIHB1YmxpYzoKIAogICAgIGVudW0gY2xh
c3MgU2hvdWxkTGF1bmNoUHJvY2VzcyA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgZW51bSBjbGFz
cyBDYXB0aXZlUG9ydGFsTW9kZSA6IGJvb2wgeyBEaXNhYmxlZCwgRW5hYmxlZCB9OworICAgIGVu
dW0gY2xhc3MgV29ya2VyVHlwZSA6IHVpbnQzMl90IHsKKyAgICAgICAgU2VydmljZVdvcmtlciA9
IDEgPDwgMCwKKyAgICAgICAgU2hhcmVkV29ya2VyID0gMSA8PCAxCisgICAgfTsKIAogICAgIHN0
YXRpYyBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmLCBXZWJzaXRl
RGF0YVN0b3JlKiwgQ2FwdGl2ZVBvcnRhbE1vZGUsIElzUHJld2FybWVkLCBXZWJDb3JlOjpDcm9z
c09yaWdpbk1vZGUgPSBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGU6OlNoYXJlZCwgU2hvdWxkTGF1
bmNoUHJvY2VzcyA9IFNob3VsZExhdW5jaFByb2Nlc3M6Olllcyk7Ci0gICAgc3RhdGljIFJlZjxX
ZWJQcm9jZXNzUHJveHk+IGNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKFdlYlByb2Nlc3NQb29sJiwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgV2Vic2l0ZURhdGFTdG9yZSYpOworICAgIHN0
YXRpYyBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGVGb3JXb3JrZXJzKFdvcmtlclR5cGUsIFdl
YlByb2Nlc3NQb29sJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgV2Vic2l0ZURhdGFT
dG9yZSYpOwogCiAgICAgfldlYlByb2Nlc3NQcm94eSgpOwogCkBAIC0xNjEsOCArMTY1LDggQEAg
cHVibGljOgogICAgIHZvaWQgc2V0SXNJblByb2Nlc3NDYWNoZShib29sLCBXaWxsU2h1dERvd24g
PSBXaWxsU2h1dERvd246Ok5vKTsKICAgICBib29sIGlzSW5Qcm9jZXNzQ2FjaGUoKSBjb25zdCB7
IHJldHVybiBtX2lzSW5Qcm9jZXNzQ2FjaGU7IH0KIAotICAgIHZvaWQgZW5hYmxlU2VydmljZVdv
cmtlcnMoY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYpOwotICAgIHZvaWQg
ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgdm9pZCBlbmFibGVXb3JrZXJzKFdvcmtlclR5
cGUsIGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImKTsKKyAgICB2b2lkIGRp
c2FibGVXb3JrZXJzKE9wdGlvblNldDxXb3JrZXJUeXBlPik7CiAKICAgICBXZWJzaXRlRGF0YVN0
b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyBBU1NFUlQobV93ZWJzaXRlRGF0YVN0b3Jl
KTsgcmV0dXJuICptX3dlYnNpdGVEYXRhU3RvcmU7IH0KICAgICB2b2lkIHNldFdlYnNpdGVEYXRh
U3RvcmUoV2Vic2l0ZURhdGFTdG9yZSYpOwpAQCAtMTk0LDYgKzE5OCw5IEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSBjb25zdCB7IHJldHVybiAhIW1fc2Vy
dmljZVdvcmtlckluZm9ybWF0aW9uOyB9CiAgICAgYm9vbCBpc1N0YW5kYWxvbmVTZXJ2aWNlV29y
a2VyUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkgJiYg
IXBhZ2VDb3VudCgpOyB9CisgICAgYm9vbCBpc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkgY29uc3Qg
eyByZXR1cm4gISFtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uOyB9CisgICAgYm9vbCBpc1N0YW5k
YWxvbmVTaGFyZWRXb3JrZXJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gaXNSdW5uaW5nU2hhcmVk
V29ya2VycygpICYmICFwYWdlQ291bnQoKTsgfQorICAgIGJvb2wgaXNSdW5uaW5nV29ya2Vycygp
IGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gfHwgbV9zZXJ2aWNlV29y
a2VySW5mb3JtYXRpb247IH0KIAogICAgIGJvb2wgaXNEdW1teVByb2Nlc3NQcm94eSgpIGNvbnN0
OwogCkBAIC0zNTksMTIgKzM2NiwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZUF1ZGli
bGVNZWRpYUFzc2VydGlvbnMoKTsKIAorICAgIHZvaWQgc2V0V29ya2VyVXNlckFnZW50KGNvbnN0
IFN0cmluZyYpOworICAgIHZvaWQgdXBkYXRlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlJik7CisgICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250
ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCB1cGRhdGVX
b3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGUpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKICAgICB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZp
Y2VXb3JrZXJQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAg
ICB2b2lkIHNldFNlcnZpY2VXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9p
ZCB1cGRhdGVTZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlJik7Ci0gICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyUGFnZVByb3h5KFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIgcGFnZVByb3h5SUQpIHsgcmV0dXJuIG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uICYmIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZVByb3h5
SUQgPT0gcGFnZVByb3h5SUQ7IH0KLSAgICB2b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNz
QXNzZXJ0aW9uKCk7CisgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyUGFnZVByb3h5KFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgcGFnZVByb3h5SUQpIHsgcmV0dXJuIG1fc2VydmljZVdvcmtlckluZm9y
bWF0aW9uICYmIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT53b3JrZXJQYWdlUHJveHlJRCA9
PSBwYWdlUHJveHlJRDsgfQogICAgIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJv
Y2VzcyhXZWJQcm9jZXNzUHJveHkmKTsKICAgICB2b2lkIHVucmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
Q2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmKTsKICAgICBib29sIGhhc1NlcnZpY2VXb3Jr
ZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3Q7CkBAIC02NDgsMTQgKzY1Niwx
NSBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgUmVmUHRyPExvZ2dlcj4gbV9sb2dnZXI7CiAKLSAg
ICBzdHJ1Y3QgU2VydmljZVdvcmtlckluZm9ybWF0aW9uIHsKLSAgICAgICAgV2ViUGFnZVByb3h5
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUGFnZVByb3h5SUQ7Ci0gICAgICAgIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQYWdlSUQ7CisgICAgc3RydWN0IFdvcmtlckluZm9y
bWF0aW9uIHsKKyAgICAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3b3JrZXJQYWdlUHJveHlJ
RDsKKyAgICAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd29ya2VyUGFnZUlEOwogICAgICAg
ICBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhIGluaXRpYWxpemF0aW9uRGF0YTsKICAg
ICAgICAgUHJvY2Vzc1Rocm90dGxlcjo6QWN0aXZpdHlWYXJpYW50IGFjdGl2aXR5OwogICAgICAg
ICBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+IGNsaWVudFByb2Nlc3NlczsKICAgICB9Owot
ICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckluZm9ybWF0aW9uPiBtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdvcmtlckluZm9ybWF0aW9uPiBtX3Nl
cnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdvcmtlckluZm9ybWF0
aW9uPiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uOwogICAgIGJvb2wgbV9oYXNTZXJ2aWNlV29y
a2VyQmFja2dyb3VuZFByb2Nlc3NpbmcgeyBmYWxzZSB9OwogCiAgICAgSGFzaE1hcDxXZWJDb3Jl
OjpTbGVlcERpc2FibGVySWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNsZWVw
RGlzYWJsZXI+PiBtX3NsZWVwRGlzYWJsZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYmI5YmUyYzBmZjE1Li43ZTI2ZDg3NTIxZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtODgxLDYgKzg4MSw3IEBACiAJCTQ2MTRGMTMyMjVERUQ4NzUwMDcwMDZFNyAvKiBHUFVQcm9j
ZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2QUM1MzI0MjVERUQ4MUUwMDNCNTdFQyAvKiBHUFVQcm9jZXNzQ29u
bmVjdGlvblBhcmFtZXRlcnMuaCAqLzsgfTsKIAkJNDYxQ0NDQTUyMzE0ODVBNzAwQjY1OUI5IC8q
IFVJUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2MzIzNjg1MjMxNDgzM0YwMEE0OEZBNyAvKiBVSVJlbW90ZU9iamVj
dFJlZ2lzdHJ5LmggKi87IH07CiAJCTQ2MUNDQ0E2MjMxNDg1QUEwMEI2NTlCOSAvKiBXZWJSZW1v
dGVPYmplY3RSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDYzMjM2ODMyMzE0ODFFRjAwQTQ4RkE3IC8qIFdlYlJlbW90ZU9iamVjdFJlZ2lz
dHJ5LmggKi87IH07CisJCTQ2MUUxQkYyMjc5QTAxMTYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MUUxQkVGMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCAqLzsgfTsKIAkJNDYzRkQ0ODAxRUI5NDU5
NjAwQTI5ODJDIC8qIFdLUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjNGRDQ3RjFFQjk0NTg0MDBBMjk4MkMg
LyogV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjNGRDQ4MjFFQjk0RUMwMDBBMjk4MkMgLyogUHJv
Y2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjNGRDQ4MTFFQjk0RUFEMDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1pbmF0
aW9uUmVhc29uLmggKi87IH07CiAJCTQ2NTlGMjVGMjc1RkY2QjIwMEJCQjM2OSAvKiBDYXB0aXZl
UG9ydGFsTW9kZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NjU5RjI1RTI3NUZGNkIyMDBCQkIzNjkgLyogQ2FwdGl2ZVBvcnRhbE1vZGVP
YnNlcnZlci5oICovOyB9OwpAQCAtODkwLDYgKzg5MSw4IEBACiAJCTQ2NzFGRjFGMjMyMTdFRkYw
MDFCNjRDNyAvKiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3MUZGMUQyMzIxN0VGRjAwMUI2NEM3IC8qIFdl
YlJlc291cmNlTG9hZE9ic2VydmVyLmggKi87IH07CiAJCTQ2N0U0M0U4MjI0M0ZGN0QwMEIxMzky
NCAvKiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3RTQzRTcyMjQzRkY2RDAwQjEzOTI0IC8qIFdl
YlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmggKi87IH07CiAJCTQ2ODA5QTdDMjNEOTIyNUUw
MEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDY4MDlBN0EyM0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNh
Y2hlLmggKi87IH07CisJCTQ2OTQzREQwMjc2M0Y4M0EwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3Jr
ZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY5NDNEQ0YyNzYzRjgzNTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmgg
Ki87IH07CisJCTQ2OTQzREQxMjc2M0Y4M0YwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0Njk0M0RDRDI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbi5oICovOyB9OwogCQk0NkEyQjYwOTFFNTY3NkE2MDBDM0RFREEgLyogQmFja2dyb3Vu
ZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NkEyQjYwNzFFNTY3NUEyMDBDM0RFREEgLyogQmFja2dyb3Vu
ZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggKi87IH07CiAJCTQ2QjA1MjQ3MjI2NjhEODUw
MDI2NUI5NyAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjA1MjQ0
MjI2NjhEMjMwMDI2NUI5NyAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0Nv
bnRyb2xsZXIuaCAqLzsgfTsKIAkJNDZCRUI2RDcyMkZCOUJENzAwMjY5ODY3IC8qIFN0b3JhZ2VB
cmVhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkJF
QjZENTIyRkI5QkQ2MDAyNjk4NjcgLyogU3RvcmFnZUFyZWEuaCAqLzsgfTsKQEAgLTg5NywxMCAr
OTAwLDEzIEBACiAJCTQ2QkVCNkRGMjJGQkIxNkIwMDI2OTg2NyAvKiBTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDZCRUI2REQyMkZCQjE2QjAwMjY5ODY3IC8qIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmggKi87
IH07CiAJCTQ2QkVCNkUzMjJGQkIyMUEwMDI2OTg2NyAvKiBUcmFuc2llbnRMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2QkVCNkUxMjJGQkIyMUEwMDI2OTg2NyAvKiBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UuaCAqLzsgfTsKIAkJNDZDMzkyMjkyMzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2QzM5MjI4MjMxNkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmggKi87
IH07CisJCTQ2QzkxNkFBMjc5OUQwQTIwMDFBNEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzkxNkE5
Mjc5OUQwOUQwMDFBNEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCAqLzsgfTsKIAkJNDZD
RTNCMTEyM0Q4Qzg0OTAwMTZBOTZBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDRTNCMTAyM0Q4Qzgz
RDAwMTZBOTZBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oICovOyB9OworCQk0NkQ0OEZD
RTI3OTlEN0UxMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZE
NDhGQ0QyNzk5RDdERTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uaCAqLzsgfTsKIAkJNDZERjA2M0MxRjM5MDVGODAwMTk4MEJCIC8qIE5ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5oICovOyB9OwogCQk0NkVFMjg0OTI2OUUwNEFDMDBERDQ4QUIgLyogV2ViQnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NkVFMjg0ODI2OUUwNDlCMDBERDQ4QUIgLyogV2ViQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5LmggKi87IH07CiAJCTQ2RUUyODREMjY5RTA1MjUwMERENDhBQiAvKiBOZXR3
b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NkVFMjg0QzI2OUUwNTE3MDBERDQ4QUIgLyogTmV0d29ya0Jy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oICovOyB9OworCQk0NkVFM0U4QjI3NjNGRDJGMDA2MEM3
MEYgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4Mzg2NjcyNzYzRkFCMTAwQ0Y5MTgyIC8q
IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCAqLzsgfTsKIAkJNDZGMzhFOEMyNDE2
RTY3MzAwNTkzNzVBIC8qIFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkYzOEU4QjI0MTZFNjZEMDA1OTM3NUEg
LyogUnVubmluZ0JvYXJkU2VydmljZXNTUEkuaCAqLzsgfTsKIAkJNDZGOUIyNjMyMzUyNkVGMzAw
NkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZGOUIyNjIyMzUyNkVEMDAwNkZFNUZBIC8qIFdl
YkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oICovOyB9OwogCQk0OTMxMDJCRDI2ODNGM0QwMDAyQkI4
ODUgLyogQXBwUHJpdmFjeVJlcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDkzMTAyQkMyNjgzRjNBNTAwMkJCODg1IC8qIEFwcFByaXZhY3lSZXBv
cnQuaCAqLzsgfTsKQEAgLTEyNzQsNiArMTI4MCw3IEBACiAJCTZCRTk2OUMxMUU1NEQ0NTIwMDhC
NzQ4MyAvKiBjb3JlUHJlZGljdGlvbl9tb2RlbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNkJFOTY5QzAxRTU0RDQ1MjAwOEI3NDgzIC8qIGNvcmVQcmVk
aWN0aW9uX21vZGVsICovOyB9OwogCQk2QkU5NjlDQjFFNTRENENGMDA4Qjc0ODMgLyogUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkJFOTY5QzkxRTU0RDRDRjAwOEI3NDgzIC8qIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuaCAqLzsgfTsKIAkJNkJFOTY5Q0QxRTU0
RTA1NDAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkU5NjlDQzFFNTRFMDU0
MDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuaCAqLzsgfTsKKwkJ
NkNBRUNCNjYyNzQ2NUFFNDAwQUI3OEQwIC8qIFVuaWZpZWRTb3VyY2UxMTYuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkNBRUNCNUUyNzQ2NUFFMzAw
QUI3OEQwIC8qIFVuaWZpZWRTb3VyY2UxMTYuY3BwICovOyB9OwogCQk2RUU4NDlDODEzNjhEOTM5
MDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2YXRlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUU4NDlDNjEzNjhEOTJEMDAzOEQ0ODEgLyogV0tJ
bnNwZWN0b3JQcml2YXRlTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNzExNzI1QTkyMjhENTY0MzAwMDE4NTE0IC8qIFdlYnNpdGVMZWdhY3lP
dmVyZmxvd1Njcm9sbGluZ1RvdWNoUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MTE3MjVBODIyOEQ1NjNBMDAwMTg1MTQgLyogV2Vic2l0ZUxl
Z2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3kuaCAqLzsgfTsKIAkJNzEzNEEzREEyNjAz
QjkyNTAwNjI0QkQzIC8qIFdLTW9kZWxJbnRlcmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTM0QTNEOTI2MDNC
ODBFMDA2MjRCRDMgLyogV0tNb2RlbEludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaCAqLzsg
fTsKQEAgLTEzNTEsNiArMTM1OCw3IEBACiAJCTdDOUQxNTM3MTg0NTg0REEwMDlEMzkxOCAvKiBX
S0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOUQxNTM2MTg0NTg0REEwMDlEMzkxOCAvKiBXS0Jyb3dz
aW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaCAqLzsgfTsKIAkJN0NBMjU0RUIxODI5OTNDRTAwRkM4
QTQxIC8qIFdLQnJvd3NpbmdDb250ZXh0UG9saWN5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQTI1NEVBMTgyOTkzQ0UwMEZDOEE0MSAv
KiBXS0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0NBMzc5M0UxQUMzNzhCMzAwNzlEQzM3IC8q
IF9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0EzNzkzRDFBQzM3OEIzMDA3OURDMzcgLyog
X1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3Q0FFQ0I2NjI3NDY1QUU0MDBBQjc4RDAg
LyogVW5pZmllZFNvdXJjZTExNy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3Q0FFQ0I1RTI3NDY1QUUzMDBBQjc4RDAgLyogVW5pZmllZFNvdXJjZTEx
Ny5jcHAgKi87IH07CiAJCTdDQjEwMEYxMUZBMzg1OEEwMDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNl
c0tleXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0NCMTAwRUUxRkEyRDc0QTAwMTcyOUVFIC8qIFdlYlByZWZlcmVuY2VzS2V5cy5jcHAgKi87IH07
CiAJCTdDQjEwMEYyMUZBMzg1OEUwMDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNlc0RlZmluaXRpb25z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0RFNzNB
MzFGOURBQjY1MDAzOTAzMTIgLyogV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oICovOyB9Owog
CQk3Q0IxMDBGMzFGQTM4NThFMDAxNzI5RUUgLyogV2ViUHJlZmVyZW5jZXNLZXlzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0IxMDBFRjFGQTJENzRC
MDAxNzI5RUUgLyogV2ViUHJlZmVyZW5jZXNLZXlzLmggKi87IH07CkBAIC00MjE4LDYgKzQyMjYs
OSBAQAogCQk0NjA4ODlGRjI2MUZBOEE5MDBFMjUwMEQgLyogUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZENyZWF0aW9uUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
MEY0ODhEMUY5OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1l
c3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBE
ZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdl
UmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk0NjBG
NDg4RTFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNz
YWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OworCQk0NjFFMUJFQzI3OUEwMTBFMDA2QUY1M0IgLyogV2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MUUxQkVGMjc5QTAxMEYwMDZBRjUz
QiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MUUxQkYwMjc5QTAxMEYw
MDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjIxMDdENzFGMzhEQkQzMDBERDc4MTAgLyogUGluZ0xvYWQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUGluZ0xvYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjMyMzY4MzIzMTQ4MUVGMDBBNDhGQTcgLyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0
cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzMjM2ODQyMzE0ODI1QzAwQTQ4RkE3IC8qIFdlYlJlbW90
ZU9iamVjdFJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlbW90ZU9iamVjdFJl
Z2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyNDUsOCArNDI1Niwx
NSBAQAogCQk0NjgwOUE3QjIzRDkyMjUzMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29va2llQ2FjaGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgzNTY5QTIxRTgxQ0M3MDA2RTI3QTMgLyog
UHJvdmlzaW9uYWxQYWdlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UHJvdmlzaW9uYWxQYWdlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4
MzU2OUIyMUU4MUNDNzAwNkUyN0EzIC8qIFByb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4Mzg2NjcyNzYzRkFCMTAwQ0Y5MTgyIC8q
IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0NjgzODY2ODI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OUI5MEYyNzU2RDE0MzAw
MDdDNjUxIC8qIFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVX
ZWJMb2NrUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OUI5MTAy
NzU2RDE0MzAwMDdDNjUxIC8qIFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0Njk0M0RDQjI3NjNGODM0MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RDQzI3
NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0Njk0M0RDRDI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzRENFMjc2M0Y4MzUw
MDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RDRjI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVk
V29ya2VyUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5REU4MDIyNzNFQ0M1RDAwOTMwMjc2
IC8qIFByb2Nlc3NMYXVuY2hlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gUHJvY2Vzc0xhdW5jaGVyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2QTJCNjA2MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jl
c3BvbnNpdmVuZXNzVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDZBMkI2MDcxRTU2NzVBMjAwQzNERURBIC8qIEJhY2tncm91bmRQ
cm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTQyNjIsNyArNDI4MCwxMSBAQAogCQk0NkJFQjZFMTIyRkJCMjFB
MDAyNjk4NjcgLyogVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NkJFQjZFMjIyRkJCMjFBMDAyNjk4NjcgLyogVHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzM5MjI4MjMx
NkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDZDOTE2QTgyNzk5RDA5RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0NkM5MTZBOTI3OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hhcmVkV29y
a2VyU2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkNFM0IxMDIzRDhDODNEMDAxNkE5NkEgLyogV2Vi
QmFja0ZvcndhcmRMaXN0Q291bnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0NkQ0OEZDQzI3OTlEN0REMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDZENDhGQ0QyNzk5RDdERTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRGMDYzOTFG
MzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2REYwNjNBMUYzOTA1RTUwMDE5
ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2RTk3NjBBMjc1N0Y2QzkwMEFDREQzNyAvKiBXZWJCcm9hZGNh
c3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2Vi
QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNDI3Miw2ICs0Mjk0LDcgQEAKIAkJNDZFRTI4NEEyNjlFMDUxNzAwREQ0OEFC
IC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW4gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5p
bjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZFRTI4NEIyNjlFMDUxNzAwREQ0OEFC
IC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RUUyODRDMjY5RTA1MTcwMERENDhBQiAv
KiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZFRTNFOEEyNzYzRkQyQTAwNjBDNzBGIC8qIFdlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDZGMzhFOEIyNDE2RTY2RDAwNTkzNzVBIC8qIFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJ
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RjlCMjYyMjM1MjZFRDAwMDZGRTVG
QSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ5MzEwMkJDMjY4M0YzQTUwMDJCQjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFwcFByaXZhY3lSZXBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTQ5OTAsNiArNTAxMyw3IEBACiAJCTZCRTk2OUM4MUU1NEQ0Q0YwMDhCNzQ4MyAv
KiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVy
Q29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QkU5NjlDOTFFNTRENENG
MDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3Np
ZmllckNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCRTk2OUNDMUU1NEUw
NTQwMDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2Q0FFQ0I1RTI3NDY1QUUzMDBBQjc4
RDAgLyogVW5pZmllZFNvdXJjZTExNi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291
cmNlMTE2LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9XZWJLaXQvdW5pZmllZC1zb3VyY2Vz
L1VuaWZpZWRTb3VyY2UxMTYuY3BwIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKIAkJNkQ4QTkxQTUxMUYwRUZEMTAwREQwMUZFIC8qIGNvbS5hcHBsZS5XZWJQcm9jZXNzLnNi
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IGNvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluOyBw
YXRoID0gV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNkVFODQ5QzYxMzY4RDkyRDAwMzhENDgxIC8qIFdLSW5zcGVjdG9y
UHJpdmF0ZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0luc3BlY3Rv
clByaXZhdGVNYWMuaDsgcGF0aCA9IG1hYy9XS0luc3BlY3RvclByaXZhdGVNYWMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzExNzI1QTgyMjhENTYzQTAwMDE4NTE0IC8qIFdlYnNp
dGVMZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoUG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYnNpdGVMZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoUG9saWN5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MTU0LDYgKzUxNzgsNyBAQAogCQk3
QzlEMTUzNjE4NDU4NERBMDA5RDM5MTggLyogV0tCcm93c2luZ0NvbnRleHRHcm91cEludGVybmFs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnJvd3NpbmdDb250ZXh0R3Jv
dXBJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0EyNTRFQTE4Mjk5
M0NFMDBGQzhBNDEgLyogV0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVnYXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQTM3OTNEMUFDMzc4QjMwMDc5REMz
NyAvKiBfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUHJpdmF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Q0FFQ0I1RTI3NDY1QUUzMDBBQjc4RDAg
LyogVW5pZmllZFNvdXJjZTExNy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNl
MTE3LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9XZWJLaXQvdW5pZmllZC1zb3VyY2VzL1Vu
aWZpZWRTb3VyY2UxMTcuY3BwIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
IAkJN0NCMTAwRUUxRkEyRDc0QTAwMTcyOUVFIC8qIFdlYlByZWZlcmVuY2VzS2V5cy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBXZWJQcmVmZXJlbmNlc0tleXMuY3BwOyBwYXRoID0gRGVyaXZlZFNv
dXJjZXMvV2ViS2l0L1dlYlByZWZlcmVuY2VzS2V5cy5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CiAJCTdDQjEwMEVGMUZBMkQ3NEIwMDE3MjlFRSAvKiBXZWJQcmVmZXJl
bmNlc0tleXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViUHJlZmVyZW5jZXNLZXlzLmg7IHBhdGggPSBE
ZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViUHJlZmVyZW5jZXNLZXlzLmg7IHNvdXJjZVRyZWUgPSBC
VUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTdDQjEwMEYwMUZBMkQ3ODQwMDE3MjlFRSAvKiBXZWJQ
cmVmZXJlbmNlc1N0b3JlRGVmYXVsdHNNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViUHJl
ZmVyZW5jZXNTdG9yZURlZmF1bHRzTWFwLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktp
dC9XZWJQcmVmZXJlbmNlc1N0b3JlRGVmYXVsdHNNYXAuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OwpAQCAtOTI3Nyw2ICs5MzAyLDIwIEBACiAJCQlwYXRoID0gY29jb2E7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk0NjgzODY2NTI3NjNGQTFCMDBD
RjkxODIgLyogU2hhcmVkV29ya2VyICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQk0NkQ0OEZDQzI3OTlEN0REMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgKi8sCisJCQkJNDZENDhGQ0QyNzk5RDdERTAw
N0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCAqLywK
KwkJCQk0NkM5MTZBODI3OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmNw
cCAqLywKKwkJCQk0NkM5MTZBOTI3OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2Vy
dmVyLmggKi8sCisJCQkJNDZFRTNFOEEyNzYzRkQyQTAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCisJCQkJNDY4Mzg2NjcyNzYzRkFCMTAw
Q0Y5MTgyIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCAqLywKKwkJCQk0Njgz
ODY2ODI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5j
cHAgKi8sCisJCQkpOworCQkJcGF0aCA9IFNoYXJlZFdvcmtlcjsKKwkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CisJCX07CiAJCTQ2OURFODAxMjczRUNDNUQwMDkzMDI3NiAvKiBjb2NvYSAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC05MzI4LDYgKzkzNjcs
NyBAQAogCQk1MTBDQzdEQTE2MTM4RTAxMDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3MgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQ2ODM4NjY1Mjc2M0ZB
MUIwMENGOTE4MiAvKiBTaGFyZWRXb3JrZXIgKi8sCiAJCQkJRTQ4OUQyODIxQTBBMkJFODAwNzhD
MDZBIC8qIGNhY2hlICovLAogCQkJCTdBODQzQTFEMjFFNDFGRDkwMERFRjY2MyAvKiBDbGFzc2lm
aWVyICovLAogCQkJCTdFQzRGMEY4MThFNEE5MjIwMDgwNTZBRiAvKiBjb2NvYSAqLywKQEAgLTk0
MzYsNiArOTQ3NiwxNCBAQAogCQk1MTE4RTk5ODFGMjk1MjU5MDAzRUY5RjUgLyogU3RvcmFnZSAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDYxRTFCRUMy
NzlBMDEwRTAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5jcHAgKi8sCisJCQkJNDYxRTFCRUYyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICovLAorCQkJCTQ2MUUxQkYwMjc5QTAxMEYwMDZB
RjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMu
aW4gKi8sCisJCQkJNDY5NDNEQ0UyNzYzRjgzNTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24uY3BwICovLAorCQkJCTQ2OTQzRENEMjc2M0Y4MzUwMDRCNjEwRSAvKiBX
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggKi8sCisJCQkJNDY5NDNEQ0IyNzYzRjgz
NDAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4g
Ki8sCisJCQkJNDY5NDNEQ0MyNzYzRjgzNTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlclByb3Zp
ZGVyLmNwcCAqLywKKwkJCQk0Njk0M0RDRjI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29y
a2VyUHJvdmlkZXIuaCAqLywKIAkJCQk0MTMxRjNFMDFGOTg3MTJDMDA1OTk5NUEgLyogV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgKi8sCiAJCQkJNDE5QUNGOUIxRjk4MUQyNjAw
OUYxQTgzIC8qIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCAqLywKIAkJCQk1MUJF
QjYyOTFGM0E1QUNEMDA1MDI5QjkgLyogV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcCAqLywK
QEAgLTEyNzYxLDYgKzEyODA5LDcgQEAKIAkJCQk0OUZCRjAwMDIzOUIxRjc1MDBCRDAzMkYgLyog
X1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ5RkJGMDA5MjM5RjA4RTAwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhp
cmRQYXJ0eUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzYzMTFGRDFBM0ZCNUY3MDA1
QTJFNTEgLyogX1dLU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTQ2MUUxQkYyMjc5QTAxMTYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTM3NjMxMUZFMUEzRkI2MDAwMDVB
MkU1MSAvKiBfV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZUludGVybmFsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTAwMkQ0NDE5NkIzMzg5MDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTAwMkQ0MzE5NkIzMzcwMDBCOUFENDQgLyogX1dLU2Vzc2lv
blN0YXRlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAtMTI5MjUsNiArMTI5NzQsNyBAQAog
CQkJCUUxNzA4NzZDMTZENkNBNjkwMEY5OTIyNiAvKiBCbG9iUmVnaXN0cnlQcm94eS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNEY2MDE0MzIxNTVDNUFBMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9u
c2VNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTcwNTExMUJFNDEwRTYwMDg3NEFGMSAvKiBC
bG9ja1NQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZDOTE2QUEyNzk5RDBBMjAwMUE0RTdDIC8q
IFdlYlNoYXJlZFdvcmtlclNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzMDY1RkExMjU5
MzQ0RTAwRTcxMjc4IC8qIENhY2hlTW9kZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxODk3RUQ4
MUY0MTVEOEEwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxRkFCRDJBMUY0REUwMDEwMDZBNkM5NyAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xMzM5MCw2ICsxMzQ0MCw3IEBACiAJCQkJMUFDMTMzNjgxODU2
NUI1NzAwRjNFQzA1IC8qIFVzZXJEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDQ5MUIwODFF
NzBEMDVGMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUNENDkxQjBFMUU3MzJFNEQwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
ck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkVFM0U4QjI3NjNGRDJGMDA2MEM3MEYg
LyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Q0Q0OTFCMTMxRTczNDgyMTAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHku
aCBpbiBIZWFkZXJzICovLAogCQkJCUNENDkxQjE4MUU3MzUyNTUwMDAwOTA2NiAvKiBVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3Mjk3
RjlGMUMxN0JCRUEwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xMzQ3Niw2ICsxMzUyNyw3IEBACiAJCQkJMzMwOTM0NEExMzE1Qjky
MjAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzFERDdCMjExNERDMzk2MDA1QURBRjMgLyogV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJGNTg5QjEyQTg4Mzg4MDA2Mjk1MzAgLyogV2ViQ3Jl
ZGVudGlhbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY5NDNERDAyNzYzRjgzQTAwNEI2MTBFIC8q
IFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE4M0Y2RDFB
NUI2M0ZGMDAwMjZFQzYgLyogV2ViRGF0YWJhc2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTUyQ0Y1NTIyMEEzNUMzQTAwREFEQTI3IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTU2OEI5MUYyMEEzQUIyRjAwRTNDODU2IC8qIFdlYkRh
dGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzUxMCw2ICsx
MzU2Miw3IEBACiAJCQkJQkMwMzJEN0YxMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkZyYW1lTG9hZGVy
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzkxRjJDQjEyMUI2N0FEMDBFQkY3RTggLyog
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCOUY2QTAx
MTIzQTg0QjAwQTEzN0UwIC8qIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNDY5NDNERDEyNzYzRjgzRjAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOUIzOEExMTBGNTM4QkUwMDQ0
M0ExNSAvKiBXZWJGcmFtZVByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVCRTFBQjFENTU1
QUEwMDBERDdDNjggLyogV2ViR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1QkUxNzkx
RDUzRkU4RjAwREQ3QzY4IC8qIFdlYkdhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xMzYzNiw2ICsxMzY4OSw3IEBACiAJCQkJMUE0ODMyRDcxQTlDREY5NjAwOEI0REZFIC8qIFdl
YnNpdGVEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTQ4MzJEMTFBOUJEQzJGMDA4QjRERkUg
LyogV2Vic2l0ZURhdGFSZWNvcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTNDMkFBMUEzMjU3
MzAwMDRFOEM3MCAvKiBXZWJzaXRlRGF0YVN0b3JlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkQ0
OEZDRTI3OTlEN0UxMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTExRjdENDExRUIxQkNGNTAwRTQ3QjgzIC8q
IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTE3MjVB
OTIyOEQ1NjQzMDAwMTg1MTQgLyogV2Vic2l0ZUxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQ
b2xpY3kuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0Q0IwOUU1MjI1RDVBMDkwMDg5MTQ4NyAvKiBX
ZWJzaXRlTWVkaWFTb3VyY2VQb2xpY3kuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHAKaW5kZXggOGQzYjU3YmQxOGRjLi5iYjM1NDdmNDZhZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmNwcApAQCAtNTcsNiArNTcsMTAgQEAKICNpbmNsdWRlICJXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCIKKyNp
bmNsdWRlICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgor
I2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJX
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJT
b2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbE1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViU29ja2V0U3RyZWFtLmgiCkBAIC0xNzMsNiArMTc3LDE2IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIElQCiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKKyAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBzaGFy
ZWRXb3JrZXJDb25uZWN0aW9uKCkuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rl
cik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBBU1NFUlQoU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSk7CisgICAgICAgIGlm
IChhdXRvKiBjb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uJj4oKmNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbikuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKICAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBheW1l
bnRDb29yZGluYXRvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CkBAIC0zMDcsNiArMzIxLDEz
IEBAIFdlYlNXQ2xpZW50Q29ubmVjdGlvbiYgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpzZXJ2
aWNlV29ya2VyQ29ubmVjdGlvbigpCiB9CiAjZW5kaWYKIAorV2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbiYgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpzaGFyZWRXb3JrZXJDb25uZWN0
aW9uKCkKK3sKKyAgICBpZiAoIW1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbikKKyAgICAgICAgbV9z
aGFyZWRXb3JrZXJDb25uZWN0aW9uID0gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6
Y3JlYXRlKCk7CisgICAgcmV0dXJuICptX3NoYXJlZFdvcmtlckNvbm5lY3Rpb247Cit9CisKIHZv
aWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjptZXNzYWdlc0F2YWlsYWJsZUZvclBvcnQoY29u
c3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBtZXNzYWdlUG9ydElkZW50aWZpZXIp
CiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0
KG1lc3NhZ2VQb3J0SWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IGQ2MmRm
ZTRkZjVhYS4uNWYwNTA0MDlhYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtNDgsNiAr
NDgsNyBAQCBlbnVtIGNsYXNzIEhUVFBDb29raWVBY2NlcHRQb2xpY3kgOiB1aW50OF90OwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjsKK2NsYXNz
IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb247CiBjbGFzcyBXZWJTV0NsaWVudENvbm5l
Y3Rpb247CiAKIGNsYXNzIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3Vu
dGVkPE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbj4sIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsK
QEAgLTcwLDYgKzcxLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICBXZWJTV0NsaWVudENvbm5lY3Rpb24mIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCk7CiAjZW5k
aWYKKyAgICBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uJiBzaGFyZWRXb3JrZXJDb25u
ZWN0aW9uKCk7CiAKICNpZiBIQVZFKEFVRElUX1RPS0VOKQogICAgIHZvaWQgc2V0TmV0d29ya1By
b2Nlc3NBdWRpdFRva2VuKHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbikg
eyBtX25ldHdvcmtQcm9jZXNzQXVkaXRUb2tlbiA9IGF1ZGl0VG9rZW47IH0KQEAgLTEyMyw2ICsx
MjUsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBSZWZQdHI8
V2ViU1dDbGllbnRDb25uZWN0aW9uPiBtX3N3Q29ubmVjdGlvbjsKICNlbmRpZgorICAgIFJlZlB0
cjxXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uPiBtX3NoYXJlZFdvcmtlckNvbm5lY3Rp
b247CiAgICAgV2ViQ29yZTo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSBtX2Nvb2tpZUFjY2VwdFBv
bGljeTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2FhZWE5
ZGM0MGQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMCwwICsx
LDExNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIk5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgi
CisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlVzZXJDb250ZW50
Q29udHJvbGxlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRW1wdHlDbGllbnRzLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVE
b21haW4sIFBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29u
c3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgcHJlZmVyZW5jZXNTdG9yZSwgU2VydmljZVdvcmtlcklu
aXRpYWxpemF0aW9uRGF0YSYmIGluaXRpYWxpemF0aW9uRGF0YSkKKyAgICA6IG1fY29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MoV1RGTW92ZShjb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcykpCisg
ICAgLCBtX3JlZ2lzdHJhYmxlRG9tYWluKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pKQorICAg
ICwgbV9wYWdlR3JvdXBJRChwYWdlR3JvdXBJRCkKKyAgICAsIG1fd2ViUGFnZVByb3h5SUQod2Vi
UGFnZVByb3h5SUQpCisgICAgLCBtX3BhZ2VJRChwYWdlSUQpCisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgLCBtX3VzZXJBZ2VudChzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUo
eyB9KSkKKyNlbHNlCisgICAgLCBtX3VzZXJBZ2VudChzdGFuZGFyZFVzZXJBZ2VudCgpKQorI2Vu
ZGlmCisgICAgLCBtX3VzZXJDb250ZW50Q29udHJvbGxlcihXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OmdldE9yQ3JlYXRlKGluaXRpYWxpemF0aW9uRGF0YS51c2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyKSkKK3sKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIG1fdXNl
ckNvbnRlbnRDb250cm9sbGVyLT5hZGRDb250ZW50UnVsZUxpc3RzKFdURk1vdmUoaW5pdGlhbGl6
YXRpb25EYXRhLmNvbnRlbnRSdWxlTGlzdHMpKTsKKyNlbmRpZgorCisgICAgdXBkYXRlUHJlZmVy
ZW5jZXNTdG9yZShwcmVmZXJlbmNlc1N0b3JlKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5kaXNhYmxlVGVybWluYXRpb24oKTsKK30KKworV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjp+V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKCkg
PSBkZWZhdWx0OworCit2b2lkIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6ZXN0YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0
YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24geyBtX3dlYlBhZ2VQcm94eUlELCBt
X3JlZ2lzdHJhYmxlRG9tYWluIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCAwKTsKK30K
Kwordm9pZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnBvc3RFeGNl
cHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJl
ZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAg
bV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6UG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0
IHsgc2hhcmVkV29ya2VySWRlbnRpZmllciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIHNvdXJjZVVSTCB9LCAwKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OnVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYgc3RvcmUpCit7CisgICAgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXNH
ZW5lcmF0ZWQoc3RvcmUpOworICAgIG1fcHJlZmVyZW5jZXNTdG9yZSA9IHN0b3JlOworfQorCit2
b2lkIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bGF1bmNoU2hhcmVk
V29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29y
a2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiB1cmwsIFdlYkNvcmU6
Oldvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zLCBXZWJDb3JlOjpTY3JpcHRCdWZmZXImJiBz
Y3JpcHRCdWZmZXIpCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpsYXVuY2hTaGFyZWRXb3JrZXI6IHNoYXJl
ZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUlu
dDY0KCkpOworICAgIGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBwYWdlQ29uZmlndXJhdGlvbldp
dGhFbXB0eUNsaWVudHMoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2Vzc2lvbklEKCkpOworCisg
ICAgcGFnZUNvbmZpZ3VyYXRpb24uZGF0YWJhc2VQcm92aWRlciA9IFdlYkRhdGFiYXNlUHJvdmlk
ZXI6OmdldE9yQ3JlYXRlKG1fcGFnZUdyb3VwSUQpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnNv
Y2tldFByb3ZpZGVyID0gV2ViU29ja2V0UHJvdmlkZXI6OmNyZWF0ZShtX3dlYlBhZ2VQcm94eUlE
KTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5icm9hZGNhc3RDaGFubmVsUmVnaXN0cnkgPSBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5icm9hZGNhc3RDaGFubmVsUmVnaXN0cnkoKTsKKyAgICBwYWdl
Q29uZmlndXJhdGlvbi53ZWJMb2NrUmVnaXN0cnkgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53
ZWJMb2NrUmVnaXN0cnkoKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudFByb3Zp
ZGVyID0gbV91c2VyQ29udGVudENvbnRyb2xsZXI7CisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAg
cGFnZUNvbmZpZ3VyYXRpb24ubGliV2ViUlRDUHJvdmlkZXIgPSBtYWtlVW5pcXVlUmVmPFNlcnZp
Y2VXb3JrZXJMaWJXZWJSVENQcm92aWRlcj4oKTsKKyNlbmRpZgorCisgICAgLy8gRklYTUU6IFNl
cnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudCBzaG91bGQgYmUgcmVuYW1lZCBpZiB1c2VkIGJ5
IFNoYXJlZFdvcmtlcnMuCisgICAgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50Rm9yTWFp
bkZyYW1lID0gbWFrZVVuaXF1ZVJlZjxTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ+KG1f
d2ViUGFnZVByb3h5SUQsIG1fcGFnZUlELCBGcmFtZUlkZW50aWZpZXI6OmdlbmVyYXRlKCksIG1f
dXNlckFnZW50KTsKKworICAgIGF1dG8gcGFnZSA9IG1ha2VVbmlxdWVSZWY8UGFnZT4oV1RGTW92
ZShwYWdlQ29uZmlndXJhdGlvbikpOworICAgIGlmIChtX3ByZWZlcmVuY2VzU3RvcmUpIHsKKyAg
ICAgICAgV2ViUGFnZTo6dXBkYXRlU2V0dGluZ3NHZW5lcmF0ZWQoKm1fcHJlZmVyZW5jZXNTdG9y
ZSwgcGFnZS0+c2V0dGluZ3MoKSk7CisgICAgICAgIHBhZ2UtPnNldHRpbmdzKCkuc2V0U3RvcmFn
ZUJsb2NraW5nUG9saWN5KHN0YXRpY19jYXN0PFN0b3JhZ2VCbG9ja2luZ1BvbGljeT4obV9wcmVm
ZXJlbmNlc1N0b3JlLT5nZXRVSW50MzJWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6c3Rv
cmFnZUJsb2NraW5nUG9saWN5S2V5KCkpKSk7CisgICAgfQorICAgIFdlYkNvcmU6OlNoYXJlZFdv
cmtlclRocmVhZFByb3h5OjpzZXR1cFBhZ2VGb3JTaGFyZWRXb3JrZXIocGFnZS5nZXQoKSwgdXJs
LCBvcmlnaW4pOworICAgIGF1dG8gc2hhcmVkV29ya2VyVGhyZWFkUHJveHkgPSBXZWJDb3JlOjpT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlKFdURk1vdmUocGFnZSksIHNoYXJlZFdvcmtl
cklkZW50aWZpZXIsIG9yaWdpbiwgdXJsLCBXVEZNb3ZlKHNjcmlwdEJ1ZmZlciksIFdURk1vdmUo
d29ya2VyT3B0aW9ucyksIG1fdXNlckFnZW50LCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNo
ZVN0b3JhZ2VQcm92aWRlcigpKTsKKworICAgIFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyOjpzaW5nbGV0b24oKS5yZWdpc3RlclNoYXJlZFdvcmtlclRocmVhZChXVEZNb3ZlKHNo
YXJlZFdvcmtlclRocmVhZFByb3h5KSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpjbG9zZSgpCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29y
a2VyLCAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpjbG9zZTogU2hh
cmVkIHdvcmtlciBwcm9jZXNzIGlzIHJlcXVlc3RlZCB0byBzdG9wIGFsbCBzaGFyZWQgd29ya2Vy
cyIpOworICAgIHNldEFzQ2xvc2VkKCk7CisKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q2xvc2VT
aGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiB7IH0sIDApOworICAgIFdlYkNvcmU6OlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zdG9wQWxsU2hhcmVkV29ya2Vycygp
OworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuYWJsZVRlcm1pbmF0aW9uKCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LjI4NDZlMjY2OGViNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC0w
LDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5l
Y3Rpb24uaCIKKyNpbmNsdWRlICJJZGVudGlmaWVyVHlwZXMuaCIKKyNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCisjaW5jbHVk
ZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZp
ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOworc3RydWN0IFdvcmtlck9wdGlvbnM7
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI7CitzdHJ1Y3QgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YTsKKworY2xhc3MgV2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNv
cmU6OlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmLCBQYWdlR3JvdXBJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFNlcnZp
Y2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJik7CisgICAgfldlYlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbigpOworCisgICAgdm9pZCBlc3RhYmxpc2hDb25uZWN0aW9uKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CisgICAgdm9pZCBwb3N0RXhjZXB0aW9u
VG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCkgZmluYWw7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCitwcml2YXRlOgorICAg
IC8vIElQQyBNZXNzYWdlcy4KKyAgICB2b2lkIGxhdW5jaFNoYXJlZFdvcmtlcihXZWJDb3JlOjpD
bGllbnRPcmlnaW4mJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwgVVJMJiYsIFdl
YkNvcmU6Oldvcmtlck9wdGlvbnMmJiwgV2ViQ29yZTo6U2NyaXB0QnVmZmVyJiYpOworICAgIHZv
aWQgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7Cisg
ICAgdm9pZCBzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KSB7IG1fdXNlckFnZW50ID0g
V1RGTW92ZSh1c2VyQWdlbnQpOyB9CisgICAgdm9pZCBjbG9zZSgpOworCisgICAgUmVmPElQQzo6
Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzczsKKyAgICBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluOworICAgIFBhZ2VHcm91cElkZW50
aWZpZXIgbV9wYWdlR3JvdXBJRDsKKyAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIG1fd2ViUGFn
ZVByb3h5SUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CisgICAgU3Ry
aW5nIG1fdXNlckFnZW50OworICAgIFJlZjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXI+IG1fdXNl
ckNvbnRlbnRDb250cm9sbGVyOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViUHJlZmVyZW5jZXNTdG9y
ZT4gbV9wcmVmZXJlbmNlc1N0b3JlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zNThmMjZm
Nzc1MjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAg
LTAsMCArMSwzMCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitt
ZXNzYWdlcyAtPiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gTm90UmVm
Q291bnRlZCB7CisgICAgTGF1bmNoU2hhcmVkV29ya2VyKHN0cnVjdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4gb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtl
cklkZW50aWZpZXIsIFVSTCB1cmwsIHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdvcmtl
ck9wdGlvbnMsIFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciBzY3JpcHRCdWZmZXIpCisgICAgUG9zdENv
bm5lY3RFdmVudChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklk
ZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQgcG9ydCwgU3RyaW5nIHNv
dXJjZU9yaWdpbikKKyAgICBUZXJtaW5hdGVTaGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hhcmVkV29y
a2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyKQorICAgIFVwZGF0ZVByZWZlcmVu
Y2VzU3RvcmUoc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSkKKyAgICBT
ZXRVc2VyQWdlbnQoU3RyaW5nIHVzZXJBZ2VudCkKKyAgICBDbG9zZSgpCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uZDdkOTk0ZGUxZjc3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAK
QEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
V2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25N
ZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1dvcmtlck9wdGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNk
ZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVk
V29ya2VyLCAiJXAgLSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb246OiIgZm10LCB0aGlzLCBXZWJDb3JlOjpQcm9jZXNzOjpp
ZGVudGlmaWVyKCkudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKKworV2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbjo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpCit7Cisg
ICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bjoiKTsKK30KKworV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6fldlYlNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24oKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coIn5X
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOiIpOworfQorCitJUEM6OkNvbm5lY3Rpb24q
IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9u
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKK30KKwordm9pZCBXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpyZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBXZWJD
b3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgcG9ydCwgY29uc3QgV2ViQ29yZTo6V29ya2Vy
T3B0aW9ucyYgd29ya2VyT3B0aW9ucykKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJy
ZXF1ZXN0U2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGlj
fXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6
UmVxdWVzdFNoYXJlZFdvcmtlciB7IG9yaWdpbiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciwgdXJsLCBXVEZNb3ZlKHBvcnQpLCB3b3JrZXJPcHRpb25zIH0pOworfQorCit2b2lkIFdlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5
KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcikKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJzaGFyZWRXb3JrZXJP
YmplY3RJc0dvaW5nQXdheTogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31z
Iiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OlNo
YXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5IHsgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciB9KTsKK30KKworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0cKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lY2JmNDJmNjc2MmEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw1NCBAQAorCisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciwg
cHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdl
YlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbik7IH0KKyAgICB+V2ViU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbigpOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBX
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCk7CisKKyAgICAvLyBXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLgorICAgIHZvaWQgcmVxdWVzdFNoYXJlZFdvcmtlcihj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYs
IGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmKSBmaW5hbDsKKyAgICB2b2lkIHNoYXJlZFdv
cmtlck9iamVjdElzR29pbmdBd2F5KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIpIGZpbmFsOworCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlv
bigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklE
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjc1ZjMwZTJkNzEzZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNyBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIHsKKyAgICBGZXRjaFNjcmlwdEluQ2xpZW50KFVSTCB1
cmwsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMgd29ya2VyT3B0aW9u
cykgLT4gKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciBzY3JpcHRCdWZmZXIpIEFzeW5jCisgICAgTm90
aWZ5V29ya2VyT2JqZWN0T2ZMb2FkRmFpbHVyZShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCisgICAgUG9zdEV4Y2VwdGlv
blRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgU3RyaW5nIGVycm9yTWVzc2FnZSwgaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFN0cmluZyBzb3VyY2VVUkwpCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJQcm92aWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJQ
cm92aWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40NDk1
YTQyMjVlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJQcm92
aWRlci5oIgorCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlNoYXJlZFdvcmtlclByb3ZpZGVyJiBX
ZWJTaGFyZWRXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8V2ViU2hhcmVkV29ya2VyUHJvdmlkZXI+IHByb3ZpZGVyOworICAgIHJldHVybiBw
cm92aWRlcjsKK30KKworV2ViU2hhcmVkV29ya2VyUHJvdmlkZXI6OldlYlNoYXJlZFdvcmtlclBy
b3ZpZGVyKCkgPSBkZWZhdWx0OworCitXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uKiBXZWJTaGFyZWRXb3JrZXJQcm92aWRlcjo6c2hhcmVkV29ya2VyQ29ubmVjdGlvbigpCit7
CisgICAgcmV0dXJuICZXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5zaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi44NmUzZDJmZTcwYTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oCkBAIC0wLDAg
KzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVkV29ya2VyUHJvdmlkZXIuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclByb3Zp
ZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNoYXJlZFdvcmtlclByb3ZpZGVyIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgV2ViU2hhcmVkV29ya2VyUHJvdmlkZXImIHNpbmdsZXRvbigpOworCitw
cml2YXRlOgorICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxXZWJTaGFyZWRXb3JrZXJQcm92aWRl
cj47CisgICAgV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIoKTsKKworICAgIFdlYkNvcmU6OlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24qIHNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKSBmaW5hbDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCmluZGV4IGUyNWQ4ZjNlNjkxNi4uOGM3NGM3Y2JjYTQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC04NCw2ICs4NCw5IEBACiAjaW5jbHVkZSAi
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU2VydmljZVdvcmtlclBy
b3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oIgogI2luY2x1
ZGUgIldlYlNvY2tldFN0cmVhbS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVk
ZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKQEAgLTEzMyw2ICsxMzYsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGljYXRvci5oPgogI2luY2x1ZGUgPHBhbC9Mb2dnaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL0FsZ29yaXRobXMuaD4KQEAgLTU2OSw2ICs1NzMsNyBAQCB2b2lkIFdl
YlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzKQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBTZXJ2aWNl
V29ya2VyUHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKFdlYlNlcnZpY2VXb3JrZXJQcm92aWRl
cjo6c2luZ2xldG9uKCkpOwogI2VuZGlmCisgICAgU2hhcmVkV29ya2VyUHJvdmlkZXI6OnNldFNo
YXJlZFByb3ZpZGVyKFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKSk7CiAKICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgSlNDOjpXYXNtOjplbmFibGVGYXN0TWVtb3J5KCk7
CkBAIC05MDIsNyArOTA3LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGUKICAgICB9CiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgLy8gRklYTUU6IFJlbW92ZT8KICAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAgICAgQVNTRVJU
KFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSk7CiAgICAgICAgIGlm
IChhdXRvKiBjb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5n
bGV0b24oKS5jb25uZWN0aW9uKCkpCkBAIC05MTEsNiArOTE1LDEzIEBAIHZvaWQgV2ViUHJvY2Vz
czo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlCiAgICAgfQogI2VuZGlmCiAKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIEFTU0VSVChTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKTsKKyAgICAgICAgaWYg
KGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxX
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24mPigqY29udGV4dE1hbmFnZXJD
b25uZWN0aW9uKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKwogICAgIExPR19FUlJPUigiVW5oYW5kbGVkIHdlYiBwcm9jZXNz
IG1lc3NhZ2UgJyVzJyAoZGVzdGluYXRpb246ICUiIFBSSXU2NCAiIHBpZDogJWQpIiwgZGVzY3Jp
cHRpb24oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSwgZGVjb2Rlci5kZXN0aW5hdGlvbklEKCksIHN0
YXRpY19jYXN0PGludD4oZ2V0Q3VycmVudFByb2Nlc3NJRCgpKSk7CiB9CiAKQEAgLTE5MTcsOCAr
MTkyOCwxOCBAQCBMaWJXZWJSVENOZXR3b3JrJiBXZWJQcm9jZXNzOjpsaWJXZWJSVENOZXR3b3Jr
KCkKICAgICByZXR1cm4gKm1fbGliV2ViUlRDTmV0d29yazsKIH0KIAordm9pZCBXZWJQcm9jZXNz
Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
UGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3
ZWJQYWdlUHJveHlJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlJiBzdG9yZSwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgU2Vy
dmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmIGluaXRpYWxpemF0aW9uRGF0YSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIC8vIFdlIGFy
ZSBpbiB0aGUgU2hhcmVkIFdvcmtlciBjb250ZXh0IHByb2Nlc3MgYW5kIHRoZSBjYWxsIGJlbG93
IGVzdGFibGlzaGVzIG91ciBjb25uZWN0aW9uIHRvIHRoZSBOZXR3b3JrIFByb2Nlc3MKKyAgICAv
LyBieSBjYWxsaW5nIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi4gU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXIgbmVlZHMgdG8gdXNlIHRoZSBzYW1lIHVuZGVybHlpbmcgSVBDOjpDb25u
ZWN0aW9uIGFzIHRoZQorICAgIC8vIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiBmb3Igc3luY2hy
b25pemF0aW9uIHB1cnBvc2VzLgorICAgIGF1dG8mIGlwY0Nvbm5lY3Rpb24gPSBlbnN1cmVOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7CisgICAgU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENvbm5lY3Rpb24obWFrZVVuaXF1ZTxXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24+KGlwY0Nvbm5lY3Rpb24sIFdURk1vdmUo
cmVnaXN0cmFibGVEb21haW4pLCBwYWdlR3JvdXBJRCwgd2ViUGFnZVByb3h5SUQsIHBhZ2VJRCwg
c3RvcmUsIFdURk1vdmUoaW5pdGlhbGl6YXRpb25EYXRhKSkpOworICAgIFNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCktPmVzdGFibGlzaENvbm5lY3Rp
b24oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQotdm9pZCBXZWJQcm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBj
b25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgUmVnaXN0cmFibGVEb21haW4mJiByZWdp
c3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRp
Zmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6
YXRpb25EYXRhJiYgaW5pdGlhbGl6YXRpb25EYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFNlcnZpY2VX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmll
ciBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgUGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgUmVn
aXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTY3JpcHRF
eGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBT
ZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYgaW5pdGlhbGl6YXRpb25EYXRhLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgLy8gV2Ug
YXJlIGluIHRoZSBTZXJ2aWNlIFdvcmtlciBjb250ZXh0IHByb2Nlc3MgYW5kIHRoZSBjYWxsIGJl
bG93IGVzdGFibGlzaGVzIG91ciBjb25uZWN0aW9uIHRvIHRoZSBOZXR3b3JrIFByb2Nlc3MKICAg
ICAvLyBieSBjYWxsaW5nIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi4gU1dDb250ZXh0
TWFuYWdlciBuZWVkcyB0byB1c2UgdGhlIHNhbWUgdW5kZXJseWluZyBJUEM6OkNvbm5lY3Rpb24g
YXMgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBiODAzMmZiZThl
MjAuLjY1Zjc3MzIwMWE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBA
IC00NjksOCArNDY5LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdhbWVwYWREaXNjb25uZWN0ZWQo
dW5zaWduZWQgaW5kZXgpOwogI2VuZGlmCiAKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyLCBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2Vi
UHJlZmVyZW5jZXNTdG9yZSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFNlcnZpY2VX
b3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmllciwgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2Vy
UGFnZUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmllciwgV2Vi
UGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBmZXRjaFdlYnNp
dGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYnNpdGVEYXRhJiYpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNDJkNzVhMzk0YTljLi5lNTUyOTZiOTA0ZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0x
MDAsOCArMTAwLDEwIEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgTm90
UmVmQ291bnRlZCB7CiAgICAgR2FtZXBhZERpc2Nvbm5lY3RlZCh1bnNpZ25lZCBpbmRleCkKICNl
bmRpZgogCisgICAgRXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKFdlYktpdDo6UGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2ViS2l0
OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgc3RydWN0IFdlYktpdDo6U2Vydmlj
ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSBpbml0aWFsaXphdGlvbkRhdGEpIC0+ICgpIEFzeW5j
CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgRXN0YWJsaXNoV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYktpdDo6UGFnZUdyb3VwSWRlbnRpZmllciBw
YWdlR3JvdXBJRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlE
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OldlYlByZWZl
cmVuY2VzU3RvcmUgc3RvcmUsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2Vy
dmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpTZXJ2aWNlV29ya2VySW5p
dGlhbGl6YXRpb25EYXRhIGluaXRpYWxpemF0aW9uRGF0YSkgLT4gKCkgQXN5bmMKKyAgICBFc3Rh
Ymxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYktp
dDo6UGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IHN0cnVjdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIGRvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3Qg
V2ViS2l0OjpTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhIGluaXRpYWxpemF0aW9uRGF0
YSkgLT4gKCkgQXN5bmMKICNlbmRpZgogCiAgICAgU2V0SGFzU3VzcGVuZGVkUGFnZVByb3h5KGJv
b2wgaGFzU3VzcGVuZGVkUGFnZVByb3h5KTsK
</data>
<flag name="commit-queue"
          id="476983"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450561</attachid>
            <date>2022-02-01 13:18:35 -0800</date>
            <delta_ts>2022-02-01 14:51:53 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>235958_SharedWorker_multiProcess_wip.patch</filename>
            <type>text/plain</type>
            <size>329281</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDQwYjI5NmM3MWQzNy4uMzZhMDczMTE3NjBlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTQ2Myw3ICs0NjMsNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYi1sb2Nrcy9zdGVhbC50ZW50YXRpdmUuaHR0cHMuYW55Lmh0bWwgWyBEdW1wSgog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3Ro
ZS1hbmFseXNlcm5vZGUtaW50ZXJmYWNlL3Rlc3QtYW5hbHlzZXItbWluaW11bS5odG1sIFsgRHVt
cEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUt
ZGlzY29ubmVjdC1hdWRpb3BhcmFtLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NhbWUtb3JpZ2luLWNoZWNr
LnN1Yi5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMuaHRt
bCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCiBmYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWJh
Y2stZm9yd2FyZC1jYWNoZS5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGZhc3Qv
aGlzdG9yeS9wYWdlLWNhY2hlLWNyZWF0ZUltYWdlQml0bWFwLmh0bWwgWyBEdW1wSlNDb25zb2xl
TG9nSW5TdGRFcnIgXQogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLWluLWxv
YWRpbmctaWZyYW1lLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQpAQCAtNTE1NCw2
ICs1MTUzLDEwIEBAIHdlYmtpdC5vcmcvYi8xODM5OTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3Nzb20vY3NzLXN0eWxlLWF0dHItZGVjCiAjIFRlc3QgaXMgY3Jhc2hpbmcg
aW4gRGVidWcgYnVpbGRzIHNpbmNlIGltcG9ydC4KIHdlYmtpdC5vcmcvYi8yMzQ5NzcgWyBEZWJ1
ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9mb2N1cy1ldmVu
dC1kb2N1bWVudC1tb3ZlLmh0bWwgWyBTa2lwIF0KIAorIyBUZXN0IGlzIGZsYWt5IGJlY2F1c2Ug
TWVzc2FnZVBvcnQgbWVzc2FnZXMgbWF5IGdldCByZWNlaXZlZCBpbiBhIGRpZmZlcmVudCBvcmRl
ciB3aGVuIHNldmVyYWwgTWVzc2FnZVBvcnRzIGFyZSBpbnZvbHZlZCwKKyMgZHVlIHRvIGhvdyBN
ZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpIGlzIGltcGxlbWVudGVkLgoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0
aW9ucy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIEZhaWx1cmUgUGFzcyBdCisKICMg
UGx1Z2lucwogIyBGSVhNRTogUmVtb3ZlIHRoZXNlIHRlc3RzLgogcGx1Z2lucy8gWyBTa2lwIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0
LW9ubHkuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3
b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dAppbmRleCAwZTk5NzI0Yjg2NGIuLjY4
OThiNTRhYWI2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdv
cmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRl
LXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSw2
ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2Nh
bGhvc3Q6OTQ0NC9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zdXBwb3J0L3Jlc291cmNlLnB5P2Ny
b3NzLW9yaWdpbi1mZXRjaAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8v
d3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQvcmVzb3Vy
Y2UucHk/Y3Jvc3Mtb3JpZ2luLXhocgotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0
dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQv
cmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLWZldGNoCiAKIFBBU1MgU2FtZS1vcmlnaW4gJ2ZldGNo
KCknLgogUEFTUyBTYW1lLW9yaWdpbiBYSFIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lk
ZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWItZXhwZWN0ZWQu
dHh0CmluZGV4IDk3OTEwNjMwMzc4NS4uYmI2NDUyZjQ0YTBhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMu
c3ViLWV4cGVjdGVkLnR4dApAQCAtMiwxMCArMiw5IEBACiBIYXJuZXNzIEVycm9yIChUSU1FT1VU
KSwgbWVzc2FnZSA9IG51bGwKIAogVElNRU9VVCBzaGFyZWR3b3JrZXItc2NyaXB0LXNyYyBUZXN0
IHRpbWVkIG91dAotRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgbm90IGJsb2Nr
ZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgIEEgbmV0d29yayBlcnJvciBvY2N1cnJlZC4KLUZBSUwg
YGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AgUmVmdXNlZCB0byBldmFs
dWF0ZSBhIHN0cmluZyBhcyBKYXZhU2NyaXB0IGJlY2F1c2UgJ3Vuc2FmZS1ldmFsJyBpcyBub3Qg
YW4gYWxsb3dlZCBzb3VyY2Ugb2Ygc2NyaXB0IGluIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1
cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAic2NyaXB0LXNyYyAnc2VsZicgJ25vbmNlLWEnIGJsb2I6
IGZpbGVzeXN0ZW06Ii4KLQotRkFJTCBgc2V0VGltZW91dChbc3RyaW5nXSlgIG5vdCBibG9ja2Vk
IGluIGh0dHA6IHdpdGhvdXQgQ1NQIGFzc2VydF91bnJlYWNoZWQ6IGNhbGxiYWNrIG5vdCBjYWxs
ZWQuIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNj
cmlwdHMoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgTG9hZCBmYWlsZWQKK1BB
U1MgYGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AKK1BBU1MgYHNldFRp
bWVvdXQoW3N0cmluZ10pYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3V0IENTUAogVElNRU9V
VCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgYmxvY2tlZCBpbiBodHRwOiB3aXRoIHNj
cmlwdC1zcmMgJ3NlbGYnIFRlc3QgdGltZWQgb3V0CiBOT1RSVU4gYGV2YWwoKWAgYmxvY2tlZCBp
biBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCiBOT1RSVU4gYHNldFRpbWVvdXQoW3N0cmlu
Z10pYCBibG9ja2VkIGluIGh0dHA6IHdpdGggc2NyaXB0LXNyYyAnc2VsZicKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vy
cy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9i
cm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4
cGVjdGVkLnR4dAppbmRleCBjMTA3MTM2NTUyODAuLjZmODQ0ZGQ1ZDk0OSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJz
L29mZmxpbmUvYXBwY2FjaGUvd29ya2Vycy9hcHBjYWNoZS13b3JrZXIuaHR0cHMtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBz
LWV4cGVjdGVkLnR4dApAQCAtNSw3ICs1LDcgQEAgSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1l
c3NhZ2UgPSBudWxsCiBQQVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIGNhY2hlZCBzY3JpcHQK
IFBBU1MgRGVkaWNhdGVkIHdvcmtlciBvZiB0aGUgZmFsbGJhY2tlZCBzY3JpcHQKIFBBU1MgRGVk
aWNhdGVkIHdvcmtlciBvZiB0aGUgbm90LWluLWNhY2hlIHNjcmlwdAotUEFTUyBTaGFyZWQgd29y
a2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0Ci1QQVNTIFNoYXJlZCB3b3JrZXIgb2YgdGhlIGZhbGxi
YWNrZWQgc2NyaXB0CitGQUlMIFNoYXJlZCB3b3JrZXIgb2YgdGhlIGNhY2hlZCBzY3JpcHQgYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgIkRvbmU6IGNhY2hlZCIgYnV0IGdvdCAiRXJyb3I6IEltcG9y
dGluZyBhIG5vbi1jYWNoZWQgc2NyaXB0IG11c3QgZmFpbC4iCitGQUlMIFNoYXJlZCB3b3JrZXIg
b2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJEb25lOiBm
YWxsYmFja2VkIiBidXQgZ290ICJFcnJvcjogSW1wb3J0aW5nIGEgbm9uLWNhY2hlZCBzY3JpcHQg
bXVzdCBmYWlsLiIKIFRJTUVPVVQgU2hhcmVkIHdvcmtlciBvZiB0aGUgbm90LWluLWNhY2hlIHNj
cmlwdCBUZXN0IHRpbWVkIG91dAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9h
bm9ueW1vdXMtaWZyYW1lL3NoYXJlZHdvcmtlci1wYXJ0aXRpb25pbmcudGVudGF0aXZlLmh0dHBz
LndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9hbm9ueW1vdXMtaWZy
YW1lL3NoYXJlZHdvcmtlci1wYXJ0aXRpb25pbmcudGVudGF0aXZlLmh0dHBzLndpbmRvdy1leHBl
Y3RlZC50eHQKaW5kZXggNGVkODc0NzQ3NmM3Li5mMWViMGIyMTdmMzkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmln
aW4tZW1iZWRkZXItcG9saWN5L2Fub255bW91cy1pZnJhbWUvc2hhcmVkd29ya2VyLXBhcnRpdGlv
bmluZy50ZW50YXRpdmUuaHR0cHMud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVk
ZGVyLXBvbGljeS9hbm9ueW1vdXMtaWZyYW1lL3NoYXJlZHdvcmtlci1wYXJ0aXRpb25pbmcudGVu
dGF0aXZlLmh0dHBzLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwg
QW5vbnltb3VzIGlmcmFtZXMgZ2V0IHBhcnRpdGlvbmVkIHNoYXJlZCB3b3JrZXJzLiBhc3NlcnRf
dHJ1ZTogVGhlICJub3JtYWwiIGlmcmFtZSdzIHNoYXJlZHdvcmtlciBzaG91bGQgcmV0dXJuIHsi
bm9ybWFsIjogdHJ1ZSwgIm5vcm1hbF9jb250cm9sIjogdHJ1ZX0sIGJ1dCBpbnN0ZWFkIHJldHVy
bmVkIHsibm9ybWFsIjp0cnVlfSBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQorRkFJTCBBbm9ueW1v
dXMgaWZyYW1lcyBnZXQgcGFydGl0aW9uZWQgc2hhcmVkIHdvcmtlcnMuIGFzc2VydF90cnVlOiBU
aGUgIm5vcm1hbCIgaWZyYW1lJ3Mgc2hhcmVkd29ya2VyIHNob3VsZCByZXR1cm4geyJub3JtYWwi
OiB0cnVlLCAibm9ybWFsX2NvbnRyb2wiOiB0cnVlfSwgYnV0IGluc3RlYWQgcmV0dXJuZWQgeyJh
bm9ueW1vdXMiOnRydWUsIm5vcm1hbF9jb250cm9sIjp0cnVlLCJub3JtYWwiOnRydWUsImFub255
bW91c19jb250cm9sIjp0cnVlfSBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mt
b3JpZ2luLWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5o
dHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNv
bGF0ZWQtcGVybWlzc2lvbi5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggNjM1NWI2OGRlNzBiLi5j
OGJmNzVlN2VhODUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L2Nyb3NzLW9yaWdp
bi1pc29sYXRlZC1wZXJtaXNzaW9uLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVk
ZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5odHRwcy1leHBlY3Rl
ZC50eHQKQEAgLTIwLDcgKzIwLDcgQEAgUEFTUyBkZWRpY2F0ZWQgd29ya2VyOiBzY2hlbWUgPSBi
bG9iLCB2YWx1ZSA9ICoKIFBBU1MgZGVkaWNhdGVkIHdvcmtlcjogc2NoZW1lID0gYmxvYiwgdmFs
dWUgPSBzZWxmCiBGQUlMIGRlZGljYXRlZCB3b3JrZXI6IHNjaGVtZSA9IGJsb2IsIHZhbHVlID0g
KFwpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIGZhbHNlIGJ1dCBnb3QgdHJ1ZQogUEFTUyBzaGFy
ZWQgd29ya2VyOiB3aXRoQ29vcENvZXAgPSBmYWxzZQotUEFTUyBzaGFyZWQgd29ya2VyOiB3aXRo
Q29vcENvZXAgPSB0cnVlCitGQUlMIHNoYXJlZCB3b3JrZXI6IHdpdGhDb29wQ29lcCA9IHRydWUg
YXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCiBQQVNTIHNlcnZpY2Ug
d29ya2VyOiB3aXRoQ29vcENvZXAgPSBmYWxzZQogRkFJTCBzZXJ2aWNlIHdvcmtlcjogd2l0aENv
b3BDb2VwID0gdHJ1ZSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCB0cnVlIGJ1dCBnb3QgZmFsc2UK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVyaXRhbmNlLnN1
Yi5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS93b3JrZXItaW5oZXJp
dGFuY2Uuc3ViLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCA3NWIxZDMzZTUyNjAuLmIyYmYyZTNi
ZmYzZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVyaXRhbmNl
LnN1Yi5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2Vy
LWluaGVyaXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw2IEBACiBCbG9j
a2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29t
bW9uL2JsYW5rLmh0bWwKIEJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3
dy5sb2NhbGhvc3Q6OTQ0NC9jb21tb24vYmxhbmsuaHRtbAogQmxvY2tlZCBhY2Nlc3MgdG8gZXh0
ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbW1vbi9ibGFuay5odG1sCi1C
bG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQv
Y29tbW9uL2JsYW5rLmh0bWwKIAogUEFTUyBUZXN0IHRoYXQgbG9jYWwgc2NoZW1lIHdvcmtlcnMg
aW5oZXJpdCBDT0VQOiByZXF1aXJlLWNvcnAgZnJvbSB0aGUgY3JlYXRpbmcgZG9jdW1lbnQKIFBB
U1MgYmxvYiBVUkwgZGVkaWNhdGVkIHdvcmtlcjogU2FtZSBvcmlnaW4gc2hvdWxkIGJlIGFsbG93
ZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyX2RhdGFVcmwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9k
YXRhVXJsLWV4cGVjdGVkLnR4dAppbmRleCA5OTVhMDYwMTliODQuLjliNTgyMGFhZThjYiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyX2RhdGFV
cmwtZXhwZWN0ZWQudHh0CkBAIC0xLDEzICsxLDUgQEAKLUNPTlNPTEUgTUVTU0FHRTogRXJyb3I6
IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDIgYnV0IGdvdCAxCiAKIAotSGFybmVzcyBFcnJvciAo
RkFJTCksIG1lc3NhZ2UgPSBFcnJvcjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290
IDEKLQotUEFTUyBEYXRhIFVSTCBub3Qgc2hhcmVkIGJ5IGNyb3NzLW9yaWdpbiBTaGFyZWRXb3Jr
ZXJzCi1USU1FT1VUIERhdGEgVVJMcyBzaGFyZWQgYnkgc2FtZS1vcmlnaW4gU2hhcmVkV29ya2Vy
cyBUZXN0IHRpbWVkIG91dAotCi1IYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IEVycm9y
OiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3QgMQotCiBQQVNTIERhdGEgVVJMIG5v
dCBzaGFyZWQgYnkgY3Jvc3Mtb3JpZ2luIFNoYXJlZFdvcmtlcnMKLVRJTUVPVVQgRGF0YSBVUkxz
IHNoYXJlZCBieSBzYW1lLW9yaWdpbiBTaGFyZWRXb3JrZXJzIFRlc3QgdGltZWQgb3V0CitQQVNT
IERhdGEgVVJMcyBzaGFyZWQgYnkgc2FtZS1vcmlnaW4gU2hhcmVkV29ya2VycwogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
bW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21v
ZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dApp
bmRleCA1NzZlNmQyYjdlZDIuLjRhMjZiZTkyOWE4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdv
cmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQt
d29ya2VyLWltcG9ydC1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBA
QAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3MS5sb2NhbGhvc3Q6
OTQ0My93b3JrZXJzL21vZHVsZXMvcmVzb3VyY2VzL2V4cG9ydC1vbi1sb2FkLXNjcmlwdC5weQog
CiBQQVNTIFN0YXRpYyBpbXBvcnQuCiBGQUlMIFN0YXRpYyBpbXBvcnQgKGNyb3NzLW9yaWdpbiku
IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiAiSW1wb3J0aW5n
IGEgbW9kdWxlIHNjcmlwdCBmYWlsZWQuIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1p
bXBvcnQtZGF0YS11cmwtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3Jr
ZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKaW5kZXggNGY4NjQx
ZTUxNDgwLi4yOTk3ZjdlMWYzMDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0
LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtl
ci1pbXBvcnQtZGF0YS11cmwtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMg
QEAKLUNPTlNPTEUgTUVTU0FHRTogT3JpZ2luIG51bGwgaXMgbm90IGFsbG93ZWQgYnkgQWNjZXNz
LUNvbnRyb2wtQWxsb3ctT3JpZ2luLiBTdGF0dXMgY29kZTogMjAwCiAKIEhhcm5lc3MgRXJyb3Ig
KFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2Vy
LWltcG9ydC1kYXRhLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1p
bXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dAppbmRleCBlYWM3Zjk1ZGU2ZjIuLmNi
YzA0MjllMGM3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11cmwu
d2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVy
bC53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8g
ZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3MS5sb2NhbGhvc3Q6OTQ0My93b3JrZXJzL21vZHVsZXMv
cmVzb3VyY2VzL2V4cG9ydC1vbi1sb2FkLXNjcmlwdC5weQogCiBIYXJuZXNzIEVycm9yIChUSU1F
T1VUKSwgbWVzc2FnZSA9IG51bGwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBv
cnQud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1l
eHBlY3RlZC50eHQKaW5kZXggNTc2ZTZkMmI3ZWQyLi40YTI2YmU5MjlhOGQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1
bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hh
cmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJs
b2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMv
d29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkKIAogUEFT
UyBTdGF0aWMgaW1wb3J0LgogRkFJTCBTdGF0aWMgaW1wb3J0IChjcm9zcy1vcmlnaW4pLiBwcm9t
aXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogIkltcG9ydGluZyBhIG1v
ZHVsZSBzY3JpcHQgZmFpbGVkLiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9u
cy1jcmVkZW50aWFscy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3Jl
ZGVudGlhbHMtZXhwZWN0ZWQudHh0CmluZGV4IGUxYmVkZjU0MzBlZi4uYTcwZjA1YWY1NGY0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1jcmVkZW50aWFscy1leHBlY3RlZC50
eHQKQEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cDov
L3d3dzEubG9jYWxob3N0Ojg4MDAvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtY3Jl
ZGVudGlhbHMucHkKIAogSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGlj
cy9tdWx0aXBsZS13b3JrZXJzLzAwNC1leHBlY3RlZC50eHQKaW5kZXggMDE4ZGI2MDQ1NjlkLi5j
ZmU0NjU1Njc1Y2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhwZWN0ZWQudHh0CkBAIC0x
LDUgKzEsMyBAQAogCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKLQot
Tk9UUlVOIHNoYXJlZCB3b3JrZXIgd2l0aCBtdWx0aXBsZSBkb2N1bWVudHMKK1BBU1Mgc2hhcmVk
IHdvcmtlciB3aXRoIG11bHRpcGxlIGRvY3VtZW50cwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRp
cGxlLXdvcmtlcnMvMDA4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDgt
ZXhwZWN0ZWQudHh0CmluZGV4IDk3YTRlN2E3M2E2My4uMDlmNjcyZDFjNjIxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2Vt
YW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA4LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRp
cGxlLXdvcmtlcnMvMDA4LWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDMgQEAKIAotSGFybmVzcyBF
cnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0KLVRJTUVPVVQgbWVzc2FnZWNoYW5uZWwg
aW4gc2hhcmVkIHdvcmtlciBUZXN0IHRpbWVkIG91dAorUEFTUyBtZXNzYWdlY2hhbm5lbCBpbiBz
aGFyZWQgd29ya2VyCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4
dAppbmRleCBhMDg5YzIyNDg5ZTIuLmQzOWE1NTA4NGRjMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXIt
ZnJvbS1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxv
Yi11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDcgQEAKIAogSGFybmVzcyBFcnJv
ciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCiAKLUZBSUwgQ3JlYXRpbmcgYSBzaGFyZWQgd29y
a2VyIGZyb20gYSBibG9iIFVSTCB3b3Jrcy4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIndvcmtl
cl9PS18yIiBidXQgZ290ICJ3b3JrZXJfT0tfMSIKLVBBU1MgQ3JlYXRpbmcgYSBzaGFyZWQgd29y
a2VyIGZyb20gYSBibG9iIFVSTCB3b3JrcyBpbW1lZGlhdGVseSBiZWZvcmUgcmV2b2tpbmcuCi1U
SU1FT1VUIENvbm5lY3RpbmcgdG8gYSBzaGFyZWQgd29ya2VyIG9uIGEgcmV2b2tlZCBibG9iIFVS
TCB3b3Jrcy4gVGVzdCB0aW1lZCBvdXQKK1BBU1MgQ3JlYXRpbmcgYSBzaGFyZWQgd29ya2VyIGZy
b20gYSBibG9iIFVSTCB3b3Jrcy4KK1RJTUVPVVQgQ3JlYXRpbmcgYSBzaGFyZWQgd29ya2VyIGZy
b20gYSBibG9iIFVSTCB3b3JrcyBpbW1lZGlhdGVseSBiZWZvcmUgcmV2b2tpbmcuIFRlc3QgdGlt
ZWQgb3V0CitOT1RSVU4gQ29ubmVjdGluZyB0byBhIHNoYXJlZCB3b3JrZXIgb24gYSByZXZva2Vk
IGJsb2IgVVJMIHdvcmtzLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25z
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDZmZmVlMjczOTBkOS4uYWU0NWI0ZDI3Mzk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1l
LXZpYS1vcHRpb25zLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25z
LWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKIAotRkFJTCBUZXN0IHRoZSBuYW1lIHByb3Bl
cnR5IG9mIHNoYXJlZCB3b3JrZXJzIG1peGluZyBjb25zdHJ1Y3RvciBvcHRpb25zIGFuZCBjb25z
dHJ1Y3RvciBzdHJpbmdzIEVycm9yOiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3Qg
MQorUEFTUyBUZXN0IHRoZSBuYW1lIHByb3BlcnR5IG9mIHNoYXJlZCB3b3JrZXJzIG1peGluZyBj
b25zdHJ1Y3RvciBvcHRpb25zIGFuZCBjb25zdHJ1Y3RvciBzdHJpbmdzCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFy
ZWQtd29ya2VyLW9wdGlvbnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItb3B0aW9u
cy1taXNtYXRjaC1leHBlY3RlZC50eHQKaW5kZXggZjY1Njk0NjE1MGRiLi40Zjk5YTEzNDA5ZTcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFy
ZWQtd29ya2VyLW9wdGlvbnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CkBAIC0xLDI4ICsxLDI2IEBA
CiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1USU1FT1VUIENv
bm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBi
ZSBibG9ja2VkOiBkZWZhdWx0IHRvIG1vZHVsZSBUZXN0IHRpbWVkIG91dAotTk9UUlVOIENvbm5l
Y3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBi
bG9ja2VkOiBtb2R1bGUgdG8gZGVmYXVsdAotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBjbGFzc2ljIHRv
IG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVu
dCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBtb2R1bGUgdG8gY2xhc3NpYwotTk9UUlVOIENv
bm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBi
ZSBibG9ja2VkOiBkZWZhdWx0IHRvIG9taXQgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBkZWZhdWx0IHRvIGluY2x1ZGUgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hh
cmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0
IHRvIGRlZmF1bHQgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIHNhbWUt
b3JpZ2luIGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0
aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBpbmNsdWRlIGlu
IGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJl
bnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBjbGFz
c2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9w
dGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIGluY2x1ZGUgaW4gY2xhc3Np
YwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIGRlZmF1bHQgaW4gY2xhc3NpYwotTk9U
UlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNo
b3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5l
Y3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBi
bG9ja2VkOiBpbmNsdWRlIHRvIHNhbWUtb3JpZ2luIGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0
aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxv
Y2tlZDogZGVmYXVsdCB0byBvbWl0IGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hh
cmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZh
dWx0IHRvIGluY2x1ZGUgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29y
a2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gZGVm
YXVsdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBzYW1lLW9yaWdpbiBp
biBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJl
bnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBpbmNsdWRlIGluIG1vZHVsZQot
Tk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25z
IHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBvbWl0IGluIG1vZHVsZQotTk9UUlVO
IENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3Vs
ZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIG1vZHVsZQotTk9UUlVOIENv
bm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBi
ZSBibG9ja2VkOiBpbmNsdWRlIHRvIGRlZmF1bHQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGlu
ZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2Nr
ZWQ6IGluY2x1ZGUgdG8gb21pdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJl
ZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVk
ZSB0byBzYW1lLW9yaWdpbiBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29y
a2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8g
bW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBtb2R1bGUgdG8gZGVmYXVsdAorUEFTUyBDb25uZWN0
aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxv
Y2tlZDogY2xhc3NpYyB0byBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2Vy
IHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG1vZHVsZSB0byBjbGFz
c2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIG9taXQgaW4gY2xhc3NpYworUEFTUyBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogZGVmYXVsdCB0byBpbmNsdWRlIGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGlu
ZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2Nr
ZWQ6IG9taXQgdG8gZGVmYXVsdCBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVk
IHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRv
IHNhbWUtb3JpZ2luIGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2Vy
IHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVk
ZSBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZl
cmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBvbWl0IGluIGNs
YXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9w
dGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIGluY2x1ZGUgaW4gY2xhc3Np
YworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9u
cyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGluIGNsYXNzaWMKK1BBU1Mg
Q29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxk
IGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gb21pdCBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBpbmNsdWRlIHRvIHNhbWUtb3JpZ2luIGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBz
aGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRl
ZmF1bHQgdG8gb21pdCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2Vy
IHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gaW5j
bHVkZSBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlm
ZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gZGVmYXVsdCBpbiBtb2R1
bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlv
bnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gc2FtZS1vcmlnaW4gaW4gbW9kdWxlCitQQVNT
IENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3Vs
ZCBiZSBibG9ja2VkOiBvbWl0IHRvIGluY2x1ZGUgaW4gbW9kdWxlCitQQVNTIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBzYW1lLW9yaWdpbiB0byBvbWl0IGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJl
ZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1v
cmlnaW4gdG8gaW5jbHVkZSBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29y
a2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8g
ZGVmYXVsdCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGgg
ZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gb21pdCBpbiBt
b2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9w
dGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gc2FtZS1vcmlnaW4gaW4gbW9kdWxl
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMveGhyL29wZW4tdXJsLXJlZGlyZWN0ZWQtc2hhcmVkd29ya2VyLW9yaWdpbi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVu
LXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0CmluZGV4IDFl
MmQzOTkyZjZkNS4uNTljYWNhNDg2ZjhkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdv
cmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMveGhyL29wZW4tdXJsLXJlZGlyZWN0ZWQtc2hhcmVkd29ya2VyLW9y
aWdpbi1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0byBleHRl
cm5hbCBVUkwgaHR0cDovL3d3dzIubG9jYWxob3N0Ojg4MDAveGhyL3Jlc291cmNlcy9pbnNwZWN0
LWhlYWRlcnMucHk/ZmlsdGVyX25hbWU9b3JpZ2luJmNvcnMKIAogRkFJTCBSZWZlcmVyIGhlYWRl
ciBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiUmVmZXJlcjogaHR0cDovL2xvY2FsaG9zdDo4ODAw
L3hoci9yZXNvdXJjZXMvd29ya2VyeGhyLW9yaWdpbi1yZWZlcnJlci5qc1xuIiBidXQgZ290ICJS
ZWZlcmVyOiBodHRwOi8vbG9jYWxob3N0Ojg4MDAveGhyL3Jlc291cmNlcy9yZWRpcmVjdC5weT9s
b2NhdGlvbj13b3JrZXJ4aHItb3JpZ2luLXJlZmVycmVyLmpzXG4iCiBGQUlMIE9yaWdpbiBoZWFk
ZXIgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIk9yaWdpbjogaHR0cDovL2xvY2FsaG9zdDo4ODAw
XG4iIGJ1dCBnb3QgIiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCA4NmRmMjdkNWJhYmIuLmNmMjczOWZjMDMwMyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNjYsNiArNjYsNjcgQEAg
aHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUtZ2V0VXNlck1lZGlhLXBlbmRpbmctcHJv
bWlzZS5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS1tZWRp
YXN0cmVhbS5odG1sIFsgU2tpcCBdCiBtZWRpYS9hdWRpby1zZXNzaW9uLWNhdGVnb3J5Lmh0bWwg
WyBTa2lwIF0KIAorIyBTaGFyZWQgd29ya2VycyBhcmUgb25seSBpbXBsZW1lbnRlZCBmb3IgV2Vi
S2l0Mi4KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvZ2VuL3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItY2xhc3Np
Yy5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtc2VsZi9zaGFy
ZWR3b3JrZXItY2xhc3NpYy5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC9zY3Jp
cHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3Rv
cC5odHRwLXJwL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cC5o
dG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdv
cmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3NjcmlwdC1z
cmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3Rv
cC5odHRwLXJwL3dvcmtlci1zcmMtc2VsZi9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwLmh0bWwg
WyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0
eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtc2VsZi9zaGFyZWR3b3JrZXItY2xh
c3NpYy5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLXNlbGYv
c2hhcmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dv
cmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cC5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1jbGFzc2lj
Lmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3
b3JrZXItY2xhc3NpYy5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMt
c2VsZi9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0
YS9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
Z2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0
cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdv
cmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMt
c2VsZi9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRh
L3dvcmtlci1zcmMtc2VsZi9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwcy5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2dlbi90b3AubWV0YS93b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwLmh0
bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9k
dWxlLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtd2lsZGNhcmQv
c2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3Jr
ZXItc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
Z2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRw
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29y
a2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2Vy
LWNvbm5lY3Qtc3JjLnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2Vy
LXJlcG9ydC1vbmx5LnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2Vy
LXNjcmlwdC1zcmMuc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2FuZGJveC9zaGFyZWQtd29ya2VyLXNhbmRi
b3guaHRtbCAgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItZGF0YS1zZXQtdGltZW91dC5zdWIu
aHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS93b3JrZXItc3JjL3NoYXJlZC1jaGlsZC5zdWIuaHRtbCBbIFNraXAgXQor
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9n
ZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy1zZWxmL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5o
dHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3
b3JrZXItaW1wb3J0LWRhdGEuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2Ny
aXB0LXNyYy1zZWxmL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4v
dG9wLmh0dHAtcnAvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItaW1wb3J0LWRhdGEu
aHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXdpbGRjYXJkL3No
YXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1y
cC9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cHMuaHRtbCBbIFNr
aXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBv
bGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1ub25lL3NoYXJlZHdvcmtlci1jbGFzc2lj
Lmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1ub25lL3NoYXJl
ZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtl
ci1zcmMtbm9uZS9zaGFyZWR3b3JrZXItaW1wb3J0LWRhdGEuaHR0cC5odG1sIFsgU2tpcCBdCitp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dl
bi90b3AuaHR0cC1ycC93b3JrZXItc3JjLW5vbmUvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0
dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtbm9uZS9zaGFyZWR3
b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNy
Yy1ub25lL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0
dHAtcnAvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0bWwg
WyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0
eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtc2VsZi9zaGFyZWR3b3JrZXItaW1w
b3J0LWRhdGEuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1z
ZWxmL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAt
cnAvd29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItaW1wb3J0LWRhdGEuaHR0cC5odG1s
IFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJp
dHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtl
ci1pbXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXIt
c3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90
b3AuaHR0cC1ycC93b3JrZXItc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cHMu
aHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNyYy1zZWxmL3NoYXJlZHdvcmtlci1p
bXBvcnQtZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtc2Vs
Zi9zaGFyZWR3b3JrZXItaW1wb3J0LWRhdGEuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1l
dGEvc2NyaXB0LXNyYy1zZWxmL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cHMuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItaW1wb3J0LWRh
dGEuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nv
bnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXdpbGRjYXJkL3No
YXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS9z
Y3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cC5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0
cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50
LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1ub25lL3NoYXJlZHdvcmtl
ci1jbGFzc2ljLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1ub25l
L3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dv
cmtlci1zcmMtc2VsZi9zaGFyZWR3b3JrZXItaW1wb3J0LWRhdGEuaHR0cC5odG1sIFsgU2tpcCBd
CisKIGh0dHAvd3B0L21lZGlhcmVjb3JkZXIgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJlY29yZCBbIFNraXAgXQogZmFzdC9oaXN0b3J5L3Bh
Z2UtY2FjaGUtbWVkaWEtcmVjb3JkZXIuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCA3OTJhMDBmOWVhMWEuLjQ1N2M0YWE5YjFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAg
LTE3OSw2ICsxNzksNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0lOQ0xVREVfRElSRUNUT1JJRVMK
ICAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQiCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3dv
cmtlcnMvc2hhcmVkIgorICAgICIke1dFQkNPUkVfRElSfS93b3JrZXJzL3NoYXJlZC9jb250ZXh0
IgogICAgICIke1dFQkNPUkVfRElSfS93b3JrbGV0cyIKICAgICAiJHtXRUJDT1JFX0RJUn0veG1s
IgogICAgICIke1dFQkNPUkVfRElSfS94bWwvcGFyc2VyIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXgg
NWFjYzJkOWRmZTFlLi5mY2UwOTliYWRmZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTk1MSwx
MiArMTk1MSwxNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
d29ya2Vycy9TY3JpcHRCdWZmZXIuaAogICAgIHdvcmtlcnMvV29ya2VyQW5pbWF0aW9uQ29udHJv
bGxlci5oCiAgICAgd29ya2Vycy9Xb3JrZXJEZWJ1Z2dlclByb3h5LmgKKyAgICB3b3JrZXJzL1dv
cmtlckZldGNoUmVzdWx0LmgKICAgICB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCiAg
ICAgd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCiAgICAgd29ya2Vycy9Xb3JrZXJMb2FkZXJQ
cm94eS5oCisgICAgd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oCisgICAgd29ya2Vycy9Xb3Jr
ZXJPcHRpb25zLmgKICAgICB3b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKICAg
ICB3b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaAogICAgIHdvcmtlcnMv
V29ya2VyT3JXb3JrbGV0VGhyZWFkLmgKKyAgICB3b3JrZXJzL1dvcmtlclJlcG9ydGluZ1Byb3h5
LmgKICAgICB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuaAogICAgIHdvcmtlcnMvV29ya2VyU2NyaXB0
TG9hZGVyLmgKICAgICB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlckNsaWVudC5oCkBAIC0yMDAw
LDYgKzIwMDQsMTUgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAg
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKICAg
ICB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKIAorICAgIHdvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaAorICAgIHdvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlcktleS5oCisgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbi5oCisgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5o
CisgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJvdmlkZXIuaAorCisgICAgd29ya2Vy
cy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oCisgICAgd29ya2Vy
cy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oCisKICAgICB4bWwvQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyLmgKICAgICB4bWwvWFBhdGhFeHByZXNzaW9uLmgKICAgICB4bWwv
WFBhdGhOU1Jlc29sdmVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZjY2Y2NmOGYwNmE1Li45YWI4NjA0
YzlkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yNzg2LDEwICsyNzg2LDEyIEBAIHdvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
ci5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAotd29ya2Vy
cy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5jcHAKLXdvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlclByb3h5LmNwcAord29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bi5jcHAKK3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmNwcAogd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyVGhyZWFkLmNwcAord29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlci5jcHAKK3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFk
UHJveHkuY3BwCiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKIHdvcmtsZXRz
L1dvcmtsZXQuY3BwCiB3b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWNiZjg3
NmUyNThmLi4xOGRmZWMwNjgyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkwMyw3ICs5MDMsNyBAQAogCQkyRTQzNDY0QjBG
NTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2MzkwRjU0NkE4MjAwQjBGMUJB
IC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuaCAqLzsgfTsKIAkJMkU0MzQ2NEQwRjU0NkE4MjAw
QjBGMUJBIC8qIFdvcmtlckxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzQjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyTG9jYXRp
b24uaCAqLzsgfTsKIAkJMkU0MzQ2NTAwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck1lc3NhZ2lu
Z1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RTQzNDYzRTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyTWVzc2FnaW5nUHJveHkuaCAqLzsgfTsK
LQkJMkU0MzQ2NTEwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzRjBGNTQ2QTgy
MDBCMEYxQkEgLyogV29ya2VyT2JqZWN0UHJveHkuaCAqLzsgfTsKKwkJMkU0MzQ2NTEwRjU0NkE4
MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzRjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
T2JqZWN0UHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkyRTQzNDY1MzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyUnVuTG9vcC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2NDEwRjU0NkE4
MjAwQjBGMUJBIC8qIFdvcmtlclJ1bkxvb3AuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTQzNDY1NTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
VGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RTQzNDY0MzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyVGhyZWFkLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU3NTg0MUUxMjc3OUFEQTAwNjI2
MjhCIC8qIEZpbGVSZWFkZXJMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJFNzU4NDFCMTI3NzlBREEwMDYyNjI4QiAvKiBGaWxlUmVhZGVyTG9h
ZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTExMjUsNyArMTEyNSw3IEBACiAJCTQxNkEwNkExMjNDQ0FEMDMwMDM0NzEwOSAvKiBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE2QTA2OTYyM0NDQUE5RjAwMzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNDE2RDc1QTIyMEM2NTFBNTAwRDAyRDJDIC8qIE5ldHdvcmtMb2FkSW5mb3Jt
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
NkQ3NTlGMjBDNjQ0MTMwMEQwMkQyQyAvKiBOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTBCM0EyMDlC
QzNDQjAwNEE5NUQ5IC8qIEZldGNoSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTBCMzcyMDlCQzNDMjAwNEE5NUQ5IC8qIEZldGNo
SWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTI5QTUx
MDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggKi87IH07CisJCTQxNkUy
OUE2MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTI5QTUxMDJGQTk2MjAwN0ZD
MTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgxQkJEMTJERjAwMEEzRjY0IC8qIFJlYWRh
YmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjREOSAvKiBSZWFkYWJsZVN0
cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgxQkJEMTJERjAwMEEzRjY1IC8qIEpTRE9NQmluZGlu
Z0ludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0REEgLyogSlNET01CaW5kaW5nSW50ZXJu
YWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0MTZFNkZFODFCQkQxMkRGMDAwQTNGNzQgLyogVHJhbnNmb3JtU3RyZWFtSW50ZXJu
YWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjRFQSAvKiBUcmFuc2Zvcm1TdHJlYW1JbnRlcm5hbHNC
dWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0xMzIwLDYgKzEzMjAsOCBAQAogCQk0NjBFMzA3NzIyMkY0RjAzMDA5QTA2MDYgLyogRGV2
aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1RUREOUYyMjJGNEVDMzAwQjQ2RTE2IC8q
IERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjIxOEFDQjFGNzJENjRFMDA1
NzRGQkUgLyogRE9NSGlnaFJlc1RpbWVTdGFtcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFMDE2QUQxRjcyRDYxRTAwMjgyQjJDIC8qIERPTUhpZ2hS
ZXNUaW1lU3RhbXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0NjI3M0NBRjI2MEU1OUVGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjI3M0NBQzI2MEU1
OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDYyN0ZGNTkyNzlCODI0OTAwQUEzOTE2IC8qIFNo
YXJlZFdvcmtlclRocmVhZFByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjI3RkY1ODI3OUI4MjQ2MDBBQTM5MTYgLyogU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk0NjI3RkY1QjI3OUI4N0FGMDBBQTM5MTYgLyogU2hhcmVkV29ya2VySWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYyN0ZGNUEy
NzlCODdBMjAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlcklkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjJDN0Y0MTI3NTZEQkU0MDBE
MDgzQzggLyogV2ViTG9ja0lkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzgwMkIyMjc0NzExODUwMERBOUZCNiAvKiBXZWJMb2NrSWRl
bnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQ2MkU0QzUwMjYxNkE4MTEwMDNBMkM2NyAvKiBTY3JpcHRCdWZmZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MkU0QzREMjYxNkE4MDEwMDNB
MkM2NyAvKiBTY3JpcHRCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0NjM0QzcyQzI3NTdEQUIyMDAyNkE4MTUgLyogV2ViTG9ja01hbmFn
ZXJTbmFwc2hvdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY3ODAyQjAyNzQ3MTE3QjAwREE5RkI2IC8qIFdlYkxvY2tNYW5hZ2VyU25hcHNob3QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM0MSwx
NSArMTM0MywxOCBAQAogCQk0NjczMDIwMjFDNEVGRTc4MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNE
dXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjczMDIwMTFDNEVGRTY2MDBCQ0IzNTcgLyogSWdub3JlT3Bl
bnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggKi87IH07CiAJCTQ2N0E2OEQ3Mjc1RUE5
OTEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0E2OEQ0Mjc1RUE5OEIwMDlCMzFDNSAvKiBTaGFy
ZWRXb3JrZXJUaHJlYWQuaCAqLzsgfTsKIAkJNDY3QTY4RDgyNzVFQTk5NTAwOUIzMUM1IC8qIFNo
YXJlZFdvcmtlclNjcmlwdExvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDY3QTY4RDUyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNj
cmlwdExvYWRlci5oICovOyB9OwotCQk0NjdBNjhEOTI3NUVBOTk4MDA5QjMxQzUgLyogU2hhcmVk
V29ya2VyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2N0E2OEQ2Mjc1RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJQcm94eS5oICovOyB9
OwotCQk0NjdBNjhEQTI3NUVBOTlDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3QTY4RDIyNzVF
QTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCAqLzsgfTsKIAkJNDY4MkQyMDAx
Rjc5NzgzMDAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgyRDFGRjFGNzk3ODIzMDBDODYz
REIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjgzNDRFMDFFRERGQUFBMDBCNzc5NUIgLyogRE9N
UmVjdExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODNERjQwMjc2N0RGOTgwMDdE
MDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzREYzRTI3NjdERjk4MDA3RDAwQzggLyog
SlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oICovOyB9OwogCQk0NjgzREY0MTI3NjdFOTFB
MDA3RDAwQzggLyogU2hhZG93UmVhbG1HbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4M0RGM0IyNzY3REYyNjAwN0QwMEM4IC8qIFNo
YWRvd1JlYWxtR2xvYmFsU2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0Njg4RUUzQzI2REQyNjEwMDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5N
b2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njg4
RUUzQTI2REQyNjBDMDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5Nb2RlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDY5NDNEQzgyNzYzRjgxMjAwNEI2
MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTQzREM1Mjc2M0Y4MEQwMDRCNjEwRSAvKiBT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDY5NDNEQzkyNzYzRjgxNzAwNEI2MTBFIC8qIFNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2OTQzREM3Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNDY5NDNEQ0EyNzYzRjgxQzAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlclByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0
M0RDNDI3NjNGODBEMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyUHJvdmlkZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0Njk4NUYyMzI3QTRBNkFE
MDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk4NUYyMjI3QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVkV29y
a2VyS2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDY5Q0NDRkUyNjlEMDIxQzAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OUNDQ0ZDMjY5RDAyMDIw
MDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY5RDc3QjgyNzAxNjI1MTAwMTQyRkE2IC8qIE5hdmln
YXRpb25SZXF1ZXN0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2OUQ3N0I2MjcwMTYyNTAwMDE0MkZBNiAvKiBOYXZpZ2F0aW9uUmVxdWVzdGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDZBNzhC
MzQyNzk5QkQ3MTAwMTE1NEZFIC8qIFdvcmtlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMUIxRDI2MjZGMThBNEIwMDg4MkRBMiAvKiBX
b3JrZXJPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDZBQUFBM0QyNUQzNjMyMDAwQkFGNDJGIC8qIEF1ZGlvRmlsZVJlYWRlckNvY29h
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkFBQUEz
QTI1RDM2MzE0MDBCQUY0MkYgLyogQXVkaW9GaWxlUmVhZGVyQ29jb2EuaCAqLzsgfTsKIAkJNDZC
NjNGNkMxQzZFOEQxOTAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjYzRjZCMUM2RThDREYwMDJF
OTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCNjUwREQyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJ
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkI2NTBEQjIyOTYyNjI3MDBGRDhBQTQgLyogUGFnZUlkZW50aWZpZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM2Niw2ICsxMzcxLDcg
QEAKIAkJNDZCRDA1QzYyNUJCNkU2QzAwMjI1RjMwIC8qIEV2ZW50TGlzdGVuZXJPcHRpb25zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkJEMDVDMzI1
QkI2RTRFMDAyMjVGMzAgLyogRXZlbnRMaXN0ZW5lck9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkMwOTYyMTIzRDc4REQ2MDA2NTdD
MDkgLyogSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDMDk2MjAyM0Q3OERENjAwNjU3QzA5IC8qIEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0NkMzNzY2MjIwODUxNzdEMDBDNzM4MjkgLyogSlNSZW1vdGVET01XaW5kb3cu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzM3NjYx
MjA4NTE3NkQwMEM3MzgyOSAvKiBKU1JlbW90ZURPTVdpbmRvdy5oICovOyB9OworCQk0NkM0MTY5
QjI3OUEwNEM3MDAyNTJDM0IgLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MjZCNDc1Mjc5QTAzRDIw
MEFFRjBCMiAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QzY5NkNCMUU3MjA1RjcwMDU5Nzkz
NyAvKiBDUFVNb25pdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkM2OTZDOTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QzY5NkNDMUU3MjA1
RkMwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5NkNBMUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9y
LmNwcCAqLzsgfTsKIAkJNDZDODNFRkUxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM4M0VGQzFB
OUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM3Myw2ICsxMzc5LDcgQEAKIAkJNDZEMDAwNDAy
NkEwRkVCMzAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkQwMDAzRTI2QTBGRTZGMDBEMUJGMUUgLyogU3VibWl0
RXZlbnQuaCAqLzsgfTsKIAkJNDZEQkI2NTAxQUI4Qzk2RjAwRDlBODEzIC8qIFBvd2VyT2JzZXJ2
ZXJNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
REJCNjRFMUFCOEM5NkYwMEQ5QTgxMyAvKiBQb3dlck9ic2VydmVyTWFjLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZERDkzRDcyNjlERTc1NjAw
MUFGRDg4IC8qIEJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkREOTNENTI2OURFNzRCMDAxQUZEODggLyog
QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk0NkREQkRBMzI3QTlDNzE2MDA3NzM0N0EgLyogV29ya2Vy
RmV0Y2hSZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2RERCREExMjdBOUM3MEMwMDc3MzQ3QSAvKiBXb3JrZXJGZXRjaFJlc3VsdC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2REU5QkI1MjY5
REY5M0UwMDI0QzVBNiAvKiBCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REU5QkI0MjY5REY5MzIwMDI0QzVB
NiAvKiBCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkRGRjQ5ODFEQzI2MDMxMDBCODBCNDggLyogU2hh
ZG93Um9vdE1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2REZGNDk2MURDMjYwMTMwMEI4MEI0OCAvKiBTaGFkb3dSb290TW9kZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2REZGNDlDMURDMjYy
MEIwMEI4MEI0OCAvKiBKU1NoYWRvd1Jvb3RNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRGRjQ5QTFEQzI2MUY5MDBCODBCNDggLyogSlNTaGFk
b3dSb290TW9kZS5oICovOyB9OwpAQCAtOTE4MCw5ICs5MTg3LDEzIEBACiAJCTQ2MENCRjMzMUQ0
QkNDRkUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01XaW5kb3dQcm9wZXJ0aWVzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYwQ0JGMzQxRDRCQ0NGRTAwOTJFODhFIC8qIEpTRE9N
V2luZG93UHJvcGVydGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RP
TVdpbmRvd1Byb3BlcnRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYwRDE5
NDQxRkNFMjFERDAwQzNEQjg1IC8qIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2VydmljZVdvcmtlckds
b2JhbFNjb3BlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYyNkI0
NzUyNzlBMDNEMjAwQUVGMEIyIC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2MjczQzIxMjdBMUNCQzcwMDZBMTVCOSAvKiBKU0F1ZGlvV29ya2xldFBy
b2Nlc3NvckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0F1ZGlvV29ya2xldFByb2Nl
c3NvckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MjczQ0FDMjYw
RTU5REYwMDZGQUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1dTY3JpcHRTdG9yYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2MjczQ0FFMjYwRTU5REYwMDZGQUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1dTY3JpcHRTdG9yYWdlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYyN0ZGNTcyNzlCODI0NTAwQUEzOTE2IC8qIFNo
YXJlZFdvcmtlclRocmVhZFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDYyN0ZGNTgyNzlCODI0NjAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlclRocmVhZFBy
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclRocmVh
ZFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MjdGRjVBMjc5Qjg3QTIw
MEFBMzkxNiAvKiBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlcklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDYyRTRDNEQyNjE2QTgwMTAwM0EyQzY3IC8qIFNjcmlwdEJ1ZmZlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRCdWZmZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYyRTRDNEYyNjE2QTgwMTAwM0EyQzY3IC8qIFNjcmlwdEJ1
ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRCdWZm
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjM0NTkyQjFBQzIyNzEwMDBF
Q0I3MUMgLyogUG93ZXJPYnNlcnZlck1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQb3dlck9ic2VydmVyTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTkyMjksMTQgKzkyNDAsMTAgQEAKIAkJNDY3MzAyMDExQzRFRkU2NjAwQkNCMzU3IC8q
IElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3ODAyQjAyNzQ3MTE3QjAwREE5
RkI2IC8qIFdlYkxvY2tNYW5hZ2VyU25hcHNob3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViTG9ja01hbmFnZXJTbmFwc2hvdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0Njc4MDJCMjI3NDcxMTg1MDBEQTlGQjYgLyogV2ViTG9ja0lkZW50aWZpZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTG9ja0lkZW50aWZpZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDY3QTY4Q0YyNzVFQTk4OTAwOUIzMUM1IC8qIFNo
YXJlZFdvcmtlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb3h5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3QTY4RDAyNzVFQTk4OTAwOUIz
MUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRX
b3JrZXJUaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdBNjhEMTI3
NUVBOThBMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTQ2N0E2OEQyMjc1RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5h
Z2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlck1hbmFnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNDY3QTY4RDMyNzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtl
ck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyTWFuYWdlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2N0E2OEQ0Mjc1RUE5OEIwMDlCMzFDNSAv
KiBTaGFyZWRXb3JrZXJUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFk
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2N0E2OEQ1Mjc1RUE5OEMwMDlCMzFD
NSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2N0E2OEQ2
Mjc1RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
aGFyZWRXb3JrZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgyRDFG
RjFGNzk3ODIzMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzQ0REMxRURERkE1RjAwQjc3OTVCIC8qIERPTVJl
Y3RMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBET01SZWN0TGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2ODM0NEREMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBET01SZWN0TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC05MjQ5LDYgKzkyNTYsMTIgQEAKIAkJNDY4M0RGM0UyNzY3REY5ODAwN0QwMEM4IC8qIEpT
U2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0Njg4RUUzQTI2REQyNjBDMDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5Nb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENyb3NzT3JpZ2luTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjhCOEJERTI1Q0M4NDkzMDBGNjc4MjIgLyogSlNCYXNlQXVkaW9Db250ZXh0Q3Vz
dG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQmFzZUF1ZGlvQ29udGV4dEN1c3RvbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzREMyMjc2M0Y4MEMwMDRCNjEwRSAv
KiBTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3Jr
ZXJQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzREM0Mjc2
M0Y4MEQwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
aGFyZWRXb3JrZXJQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0
M0RDNTI3NjNGODBEMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzREM2Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RD
NzI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ2OTg1RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJL
ZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyS2V5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OUNDQ0ZBMjY5RDAyMDIwMDZFMDMxNCAv
KiBCcm9hZGNhc3RDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJyb2FkY2FzdENoYW5u
ZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlDQ0NGQzI2OUQwMjAyMDA2
RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCcm9hZGNhc3RDaGFu
bmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OUNDQ0ZEMjY5RDAyMDMwMDZF
MDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBCcm9hZGNhc3RDaGFubmVsLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkyODMsNiArOTI5Niw3IEBACiAJCTQ2QzM3
NjVGMjA4NTE3NkMwMEM3MzgyOSAvKiBKU1JlbW90ZURPTVdpbmRvdy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlbW90ZURPTVdpbmRvdy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzM3NjYxMjA4NTE3NkQwMEM3MzgyOSAvKiBKU1JlbW90
ZURPTVdpbmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1JlbW90ZURP
TVdpbmRvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkMzQThEMzI1NDhENEI3
MDBDOEM1M0EgLyogSlNBdWRpb0J1ZmZlckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0F1ZGlvQnVmZmVyQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZD
NDE2OUQyNzlBMDREMjAwMjUyQzNCIC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDNjk2QzkxRTcyMDVF
NDAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ1BVTW9uaXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkM2OTZDQTFF
NzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDUFVNb25pdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDZDODNFRkIxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlb05vdGlmaWVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTkyOTQsNiArOTMwOCw3IEBACiAJCTQ2RDAwMDNGMjZBMEZFNzAw
MEQxQkYxRSAvKiBTdWJtaXRFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU3VibWl0
RXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRCQjY0RTFBQjhDOTZG
MDBEOUE4MTMgLyogUG93ZXJPYnNlcnZlck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQb3dlck9ic2VydmVyTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2REQ5M0Q1MjY5REU3NEIwMDFBRkQ4OCAvKiBCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0NkREQkRBMTI3QTlDNzBDMDA3NzM0N0EgLyogV29ya2VyRmV0
Y2hSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyRmV0Y2hS
ZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZERTlCQjQyNjlERjkzMjAw
MjRDNUE2IC8qIEJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCcm9h
ZGNhc3RDaGFubmVsUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZE
RkY0OTYxREMyNjAxMzAwQjgwQjQ4IC8qIFNoYWRvd1Jvb3RNb2RlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNoYWRvd1Jvb3RNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2REZGNDk3MURDMjYwMTMwMEI4MEI0OCAvKiBTaGFkb3dSb290TW9kZS5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2hhZG93Um9vdE1vZGUuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjA3OTQsNiArMjA4MDksNyBAQAogCQkJCUE1MkIzNDlDMUZBNDE2
RjgwMDhCNjI0NiAvKiBXb3JrZXJEZWJ1Z2dlclByb3h5LmggKi8sCiAJCQkJOUIwQUJDQTMyMzY3
OUFDRjAwQjQ1MDg1IC8qIFdvcmtlckV2ZW50TG9vcC5jcHAgKi8sCiAJCQkJOUIwQUJDQTQyMzY3
OUFDRjAwQjQ1MDg1IC8qIFdvcmtlckV2ZW50TG9vcC5oICovLAorCQkJCTQ2RERCREExMjdBOUM3
MEMwMDc3MzQ3QSAvKiBXb3JrZXJGZXRjaFJlc3VsdC5oICovLAogCQkJCUE3RDZCMzQ4MEY2MTEw
NDUwMEZGOUZEMSAvKiBXb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwICovLAogCQkJCUE3RDZCMzQ3
MEY2MTEwNDUwMEZGOUZEMSAvKiBXb3JrZXJGb250TG9hZFJlcXVlc3QuaCAqLywKIAkJCQkyRTQz
NDYzNjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGUuY3BwICovLApAQCAtMjE1
MTYsNiArMjE1MzIsMTcgQEAKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwogCQl9OworCQk0NjI2QjQ3MzI3OUEwM0IxMDBBRUYwQjIgLyogY29udGV4dCAqLyA9IHsK
KwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNDYyN0ZGNTcyNzlCODI0
NTAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcCAqLywKKwkJCQk0NjI3RkY1
ODI3OUI4MjQ2MDBBQTM5MTYgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCAqLywKKwkJCQk0
NkM0MTY5RDI3OUEwNEQyMDAyNTJDM0IgLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3Bw
ICovLAorCQkJCTQ2MjZCNDc1Mjc5QTAzRDIwMEFFRjBCMiAvKiBTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlci5oICovLAorCQkJKTsKKwkJCXBhdGggPSBjb250ZXh0OworCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNDY0MjQwNDQyMEVBRjBCRDAwQjI5RkQyIC8qIGNvY29hICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTIxNTUwLDE2ICsy
MTU3NywyMCBAQAogCQk0NjY5NENERTI3NTk0NDZEMDBFMzE1MEUgLyogc2hhcmVkICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0NjI2QjQ3MzI3OUEwM0Ix
MDBBRUYwQjIgLyogY29udGV4dCAqLywKIAkJCQk0NjY5NENFMzI3NTk0NDhEMDBFMzE1MEUgLyog
U2hhcmVkV29ya2VyLmNwcCAqLywKIAkJCQk0NjY5NENFMjI3NTk0NDhEMDBFMzE1MEUgLyogU2hh
cmVkV29ya2VyLmggKi8sCiAJCQkJNDY2OTRDRTUyNzU5NDQ4RTAwRTMxNTBFIC8qIFNoYXJlZFdv
cmtlci5pZGwgKi8sCiAJCQkJNDY2OTRDRTQyNzU5NDQ4RTAwRTMxNTBFIC8qIFNoYXJlZFdvcmtl
ckdsb2JhbFNjb3BlLmNwcCAqLywKIAkJCQk0NjY5NENFMTI3NTk0NDhDMDBFMzE1MEUgLyogU2hh
cmVkV29ya2VyR2xvYmFsU2NvcGUuaCAqLywKIAkJCQk0NjY5NENFMDI3NTk0NDhDMDBFMzE1MEUg
LyogU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaWRsICovLAotCQkJCTQ2N0E2OEQzMjc1RUE5OEIw
MDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcCAqLywKLQkJCQk0NjdBNjhEMjI3NUVB
OThBMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oICovLAotCQkJCTQ2N0E2OENGMjc1
RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJQcm94eS5jcHAgKi8sCi0JCQkJNDY3QTY4RDYy
NzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclByb3h5LmggKi8sCisJCQkJNDYyN0ZGNUEy
NzlCODdBMjAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlcklkZW50aWZpZXIuaCAqLywKKwkJCQk0Njk4
NUYyMjI3QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggKi8sCisJCQkJNDY5NDNE
QzYyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwICov
LAorCQkJCTQ2OTQzREM1Mjc2M0Y4MEQwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uLmggKi8sCisJCQkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIuaCAqLywKKwkJCQk0Njk0M0RDMjI3NjNGODBDMDA0QjYxMEUgLyog
U2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwICovLAorCQkJCTQ2OTQzREM0Mjc2M0Y4MEQwMDRCNjEw
RSAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5oICovLAogCQkJCTQ2N0E2OEQxMjc1RUE5OEEwMDlC
MzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwICovLAogCQkJCTQ2N0E2OEQ1Mjc1
RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCAqLywKIAkJCQk0NjdB
NjhEMDI3NUVBOTg5MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmNwcCAqLywKQEAgLTMz
ODY2LDYgKzMzODk3LDcgQEAKIAkJCQkyRDQ4MUYwMjE0NkI1QzU1MDBBQTc4MzQgLyogQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQzQxNjEyMEY2NTYyRkQw
MDkyRDJGQiAvKiBDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ2NzJBQTk4MjZCMDk0MzMwMEU2RUMzOCAvKiBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0NkE3OEIzNDI3OTlCRDcxMDAxMTU0RkUgLyogV29ya2VyT3B0
aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY4OEVFM0MyNkREMjYxMDAwMkFGNUM0IC8qIENy
b3NzT3JpZ2luTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY3MkFBOTkyNkIwOTQzRjAwRTZF
QzM4IC8qIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUFC
RTY3QjFEMDU4MERCMDA2RDg2MkQgLyogQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmggaW4g
SGVhZGVycyAqLywKQEAgLTMzOTA0LDYgKzMzOTM2LDcgQEAKIAkJCQk1N0ZFREQzRjFEQjZENTky
MDBFQjk2RjUgLyogQ3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1NzA2QTY5NjFEREU1Qzk1MDBBMDNCMTQgLyogQ3J5cHRvQWxnb3JpdGhtUnNhT2Fl
cFBhcmFtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcyMUE5OEIxRUNFNTcwNDAwODEyOTVBIC8q
IENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDYyN0ZG
NTkyNzlCODI0OTAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMUJEMzMxQTE4MkQ4REREMDBDMDVEOUYgLyogQ3J5cHRvQWxnb3JpdGhtUlNB
U1NBX1BLQ1MxX3YxXzUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMjVGODJDMTgyMkNGRUMwMEQ4
NENEOSAvKiBDcnlwdG9BbGdvcml0aG1TSEExLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTlBQzNF
RjE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmggaW4gSGVhZGVycyAq
LywKQEAgLTM0MTMzLDYgKzM0MTY2LDcgQEAKIAkJCQk0NUZFQTVEMDE1NkRERThDMDA2NTQxMDEg
LyogRGVjaW1hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzE1QUQ3MjAyMDUwNTEzMjAwRDU5MkRD
IC8qIERlY2xhcmF0aXZlQW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEMyMjhBMTEx
RDU3MjJFMDBENUE3RDMgLyogRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDZEREJEQTMyN0E5QzcxNjAwNzczNDdBIC8qIFdvcmtlckZldGNoUmVzdWx0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1NTUxMzAwMTFFN0NDQ0NCMDBBNjlFMzggLyogRGVjb2RpbmdP
cHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTYyQTQ1MTEwMTE0NUFFMDBERkYzRUQgLyog
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQTNENThG
MTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICov
LApAQCAtMzQ4OTAsNiArMzQ5MjQsNyBAQAogCQkJCUNEM0UyMUREMjE4MzQ0NEEwMEU2NkY1NSAv
KiBJbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NEVFQTEwMDI3
NDc1N0YxMDA1OTRBODMgLyogSW1hZ2VDb250cm9sc01hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTc3OTc5MUEwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNDZDNDE2OUIyNzlBMDRDNzAwMjUyQzNCIC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0EwODhGNTI2NEUxQzA4MDAzRTJBNkMgLyogSW1hZ2VE
YXRhU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMTlGRUE4MUY1NzM5NzIwMDBDNDJG
QiAvKiBJbWFnZURlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMTlGRUFFMUY1NzRCNkQw
MDBDNDJGQiAvKiBJbWFnZURlY29kZXJBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKQEAgLTM1NTE4
LDYgKzM1NTUzLDcgQEAKIAkJCQkxQTc1MEQ4RTBBOTBFNTIxMDAwRkYyMTUgLyogSlNOb2RlSXRl
cmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDlDMkMzMEMxN0I2OUUwMDVDOTBBMiAvKiBK
U05vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDIwQjE4RDE4RTlEMjM3MDA1QTgwODMg
LyogSlNOb2RlTGlzdEN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY5NDNEQzkyNzYzRjgx
NzAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTMzNTAzQ0E0MTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTEwRTJGMzMyNzZCRjY4NTAwODA5MzMzIC8qIEpTTm90aWZpY2F0aW9u
RGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTBFMkYyQjI3NkJDRkU4MDA4MDkzMzMg
LyogSlNOb3RpZmljYXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNjY2OSw2ICszNjcw
NSw3IEBACiAJCQkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2MDQzIC8qIFJlYWRhYmxlU3RyZWFtQnVp
bHRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMjlDOUE5MUY1OUM1NkIwMDlENzQwMyAvKiBS
ZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTZF
NkZFODFCQkQxMkRGMDAwQTNGNjQgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDY5NDNEQzgyNzYzRjgxMjAwNEI2MTBFIC8qIFNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMjlDOUFGMUY1OUNG
NUIwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
MjlDOUFCMUY1OUM1NzMwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNvdXJjZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkQzMTYwM0MxMkIwMjY3NjAwQzFBMzU5IC8qIFJlYWx0aW1lQW5hbHlzZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtMzcwNDYsNiArMzcwODMsNyBAQAogCQkJCTBGNjA1QUVEMTVG
OTQ4NDgwMDRERjBDMCAvKiBTY3JvbGxpbmdDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFGNjJFRTgxNERBMjJBNzAwNDE1NTZDIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5MzkxQTk5MTE2Mjc0NkNCMDAyOTczMzAgLyogU2Nyb2xsaW5nQ29v
cmRpbmF0b3JNYWMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2MjdGRjVCMjc5Qjg3QUYwMEFBMzkx
NiAvKiBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTJEQkE0
OTIxRjhBRDgzMDA4RjM2QjIgLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3JUeXBlcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNUI0NjY1NjMyNUQxNEMwQTAwMENGRTE0IC8qIFNjcm9sbGluZ0VmZmVjdHND
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk5MDU5QTI2RjZCRTg1MDA1NEZCRTAg
LyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTM3MTcy
LDggKzM3MjEwLDYgQEAKIAkJCQlDRDM2QzE2QjI2MEE2NUNDMDBDOEM1MjkgLyogU2hhcmVkUm91
dGluZ0FyYml0cmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNERGQUQwMUY3REFFNUQwMEMy
NzI1QiAvKiBTaGFyZWRTdHJpbmdIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUVBMzA5
OUVCNzhDMDA1NkU1ODEgLyogU2hhcmVkVGltZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ2N0E2
OERBMjc1RUE5OUMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LywKLQkJCQk0NjdBNjhEOTI3NUVBOTk4MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyUHJveHkuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ2N0E2OEQ4Mjc1RUE5OTUwMDlCMzFDNSAvKiBTaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2N0E2OEQ3Mjc1RUE5OTEwMDlC
MzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDNERCMDI2
MjczMzlGRTAwMDdCMEFEMSAvKiBTaG91bGRMb2NhbGl6ZUF4aXNOYW1lcy5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0zNzQwNyw2ICszNzQ0Myw3IEBACiAJCQkJQjIyMjc5QzAwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR0VsbGlwc2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlDODBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHRkVCbGVuZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
MjI3OUNCMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNDY5ODVGMjMyN0E0QTZBRDAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktl
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5Q0UwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZF
Q29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlEMTBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVDb21wb3NpdGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxOTIxMzI3NTExQzBFNkJCMDA0NTYyMzggLyogU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzgwNTMsNiArMzgwOTAsNyBAQAogCQkJCTgzQUNEMDEz
MjUyMjlFMTAwMDBEMTI0RSAvKiBXb3JrbGV0T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODM0QTZBM0EyNTI2ODQ0QTAwNzQ3RjVEIC8qIFdvcmtsZXRQYXJhbWV0ZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4MzNCRDgxNzI1MjRENEYyMDA2RTcyQjMgLyogV29ya2xldFBlbmRpbmdUYXNr
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY5NDNEQ0EyNzYzRjgxQzAwNEI2MTBFIC8qIFNoYXJl
ZFdvcmtlclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUyNDA5OUU2NDkyMDA1
NkU1ODEgLyogV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTZFNkZFODFCQkQxMkRGMDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNC
dWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUJBRjNCMjQxMkMxQTM5ODAwMDE0QkYxIC8q
IFdyaXRpbmdEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5T3JpZ2luLmNwcAppbmRleCA4NDMxZjRjNTIxMTYuLjBjYjQ5YWY3YzU1MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTU0Niw2ICs1NDYsMTEgQEAgU3RyaW5n
IFNlY3VyaXR5T3JpZ2luOjp0b1Jhd1N0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0YS50
b1N0cmluZygpOwogfQogCitVUkwgU2VjdXJpdHlPcmlnaW46OnRvVVJMKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9kYXRhLnRvVVJMKCk7Cit9CisKIHN0YXRpYyBpbmxpbmUgYm9vbCBhcmVPcmln
aW5zTWF0Y2hpbmcoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbjEsIGNvbnN0IFNlY3VyaXR5
T3JpZ2luJiBvcmlnaW4yKQogewogICAgIEFTU0VSVCgmb3JpZ2luMSAhPSAmb3JpZ2luMik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKaW5kZXggNjNkNjM0MTU5ZjY0Li5lMTU1ZWM2
ZjI0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKQEAgLTE5MCw2ICsxOTAs
OCBAQCBwdWJsaWM6CiAgICAgLy8gY291bGQgbWFrZSB0aGUgc3RyaW5nIHJldHVybiAibnVsbCIu
CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRvUmF3U3RyaW5nKCkgY29uc3Q7CiAKKyAgICBV
UkwgdG9VUkwoKSBjb25zdDsKKwogICAgIC8vIFRoaXMgbWV0aG9kIGNoZWNrcyBmb3IgZXF1YWxp
dHkgYmV0d2VlbiBTZWN1cml0eU9yaWdpbnMsIG5vdCB3aGV0aGVyCiAgICAgLy8gb25lIG9yaWdp
biBjYW4gYWNjZXNzIGFub3RoZXIuIEl0IGlzIHVzZWQgZm9yIGhhc2ggdGFibGUga2V5cy4KICAg
ICAvLyBGb3IgYWNjZXNzIGNoZWNrcywgdXNlIGlzU2FtZU9yaWdpbkRvbWFpbigpLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4IGU0OWNkY2QzNjJhZS4u
MWFiNzdmNmVkZjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEu
Y3BwCkBAIC00OSw2ICs0OSwxMSBAQCBTdHJpbmcgU2VjdXJpdHlPcmlnaW5EYXRhOjp0b1N0cmlu
ZygpIGNvbnN0CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcocHJvdG9jb2wsICI6Ly8iLCBob3N0LCAn
OicsIHN0YXRpY19jYXN0PHVpbnQzMl90PigqcG9ydCkpOwogfQogCitVUkwgU2VjdXJpdHlPcmln
aW5EYXRhOjp0b1VSTCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFVSTCB7IFVSTCgpLCB0b1N0cmlu
ZygpIH07Cit9CisKIFNlY3VyaXR5T3JpZ2luRGF0YSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21G
cmFtZShGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKCFmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luRGF0YS5oCmluZGV4IGZkZmM4NjQzZWFkZi4uYWMwODI4NTYxMjk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKQEAgLTg2LDYgKzg2LDcg
QEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YSB7CiAgICAgfQogICAgIAogICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFVSTCB0
b1VSTCgpIGNvbnN0OwogCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIFN0cmluZyBkZWJ1Z1N0cmlu
ZygpIGNvbnN0IHsgcmV0dXJuIHRvU3RyaW5nKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcu
aAppbmRleCBkYzBmNTA5OGI4N2YuLmZhN2QyMzAyZWMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xv
Z2dpbmcuaApAQCAtMTA5LDYgKzEwOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBNKFNl
bGVjdGlvbikgXAogICAgIE0oU2VydmljZXMpIFwKICAgICBNKFNlcnZpY2VXb3JrZXIpIFwKKyAg
ICBNKFNoYXJlZFdvcmtlcikgXAogICAgIE0oU3BlbGxpbmdBbmRHcmFtbWFyKSBcCiAgICAgTShT
UUxEYXRhYmFzZSkgXAogICAgIE0oU3RvcmFnZSkgXApAQCAtMTI2LDYgKzEyNyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBNKFdlYkdMKSBcCiAgICAgTShXZWJSVEMpIFwKICAgICBNKFdl
YlJUQ1N0YXRzKSBcCisgICAgTShXb3JrZXIpIFwKICAgICBNKFhSKSBcCiAgICAgTShXaGVlbEV2
ZW50VGVzdE1vbml0b3IpIFwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGZXRjaFJlc3VsdC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGZXRjaFJl
c3VsdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDRmZWExZWJi
ZmZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGZXRj
aFJlc3VsdC5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgiCisj
aW5jbHVkZSAiQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5oIgorI2luY2x1ZGUgIlJlc291cmNl
RXJyb3IuaCIKKyNpbmNsdWRlICJTY3JpcHRCdWZmZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQgeworICAgIFNjcmlwdEJ1ZmZlciBzY3JpcHQ7
CisgICAgQ2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbzsKKyAgICBDb250ZW50U2VjdXJp
dHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgY29udGVudFNlY3VyaXR5UG9saWN5OworICAgIENyb3Nz
T3JpZ2luRW1iZWRkZXJQb2xpY3kgY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeTsKKyAgICBTdHJp
bmcgcmVmZXJyZXJQb2xpY3k7CisgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKKworICAgIFdvcmtl
ckZldGNoUmVzdWx0IGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgc2NyaXB0Lmlzb2xh
dGVkQ29weSgpLCBjZXJ0aWZpY2F0ZUluZm8uaXNvbGF0ZWRDb3B5KCksIGNvbnRlbnRTZWN1cml0
eVBvbGljeS5pc29sYXRlZENvcHkoKSwgY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5pc29sYXRl
ZENvcHkoKSwgcmVmZXJyZXJQb2xpY3kuaXNvbGF0ZWRDb3B5KCksIGVycm9yLmlzb2xhdGVkQ29w
eSgpIH07IH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXb3JrZXJGZXRjaFJlc3VsdCYpOworfTsK
KworaW5saW5lIFdvcmtlckZldGNoUmVzdWx0IHdvcmtlckZldGNoRXJyb3IoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCit7CisgICAgcmV0dXJuIHsgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0s
IGVycm9yIH07Cit9CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFdvcmtlckZldGNo
UmVzdWx0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8
IHNjcmlwdCA8PCBjb250ZW50U2VjdXJpdHlQb2xpY3kgPDwgY3Jvc3NPcmlnaW5FbWJlZGRlclBv
bGljeSA8PCByZWZlcnJlclBvbGljeSA8PCBlcnJvciA8PCBjZXJ0aWZpY2F0ZUluZm87Cit9CisK
K3RlbXBsYXRlPGNsYXNzIERlY29kZXI+Citib29sIFdvcmtlckZldGNoUmVzdWx0OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgV29ya2VyRmV0Y2hSZXN1bHQmIHJlc3VsdCkKK3sKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zY3JpcHQpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY29udGVudFNlY3VyaXR5UG9saWN5KSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNyb3Nz
T3JpZ2luRW1iZWRkZXJQb2xpY3kpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQucmVmZXJyZXJQb2xpY3kpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZXJyb3IpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNh
dGVJbmZvOworICAgIGRlY29kZXIgPj4gY2VydGlmaWNhdGVJbmZvOworICAgIGlmICghY2VydGlm
aWNhdGVJbmZvKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVzdWx0LmNlcnRpZmljYXRl
SW5mbyA9IFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9wdGlv
bnMuaAppbmRleCBmYmRhZWFiZThhYjcuLjc3MzM5NWI3OWExYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJPcHRpb25zLmgKQEAgLTM0LDYgKzM0LDM2IEBAIHN0cnVjdCBXb3JrZXJPcHRp
b25zIHsKICAgICBXb3JrZXJUeXBlIHR5cGUgeyBXb3JrZXJUeXBlOjpDbGFzc2ljIH07CiAgICAg
RmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVudGlhbHMgeyBGZXRjaFJlcXVlc3RDcmVkZW50
aWFsczo6U2FtZU9yaWdpbiB9OwogICAgIFN0cmluZyBuYW1lOworCisgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdvcmtlck9wdGlvbnM+IGRlY29kZShE
ZWNvZGVyJik7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBXb3JrZXJPcHRp
b25zOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHR5
cGUgPDwgY3JlZGVudGlhbHMgPDwgbmFtZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
K3N0ZDo6b3B0aW9uYWw8V29ya2VyT3B0aW9ucz4gV29ya2VyT3B0aW9uczo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxXb3JrZXJUeXBlPiB3b3JrZXJUeXBl
OworICAgIGRlY29kZXIgPj4gd29ya2VyVHlwZTsKKyAgICBpZiAoIXdvcmtlclR5cGUpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPEZldGNoUmVxdWVz
dENyZWRlbnRpYWxzPiBjcmVkZW50aWFsczsKKyAgICBkZWNvZGVyID4+IGNyZWRlbnRpYWxzOwor
ICAgIGlmICghY3JlZGVudGlhbHMpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmFtZTsKKyAgICBkZWNvZGVyID4+IG5hbWU7CisgICAg
aWYgKCFuYW1lKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsg
eyAqd29ya2VyVHlwZSwgKmNyZWRlbnRpYWxzLCBXVEZNb3ZlKCpuYW1lKSB9IH07Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNw
cAppbmRleCA0MDY3MTczYTg5YTUuLmI3MTg1YTVlZGE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyVGhyZWFkLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIldvcmtlclRo
cmVhZC5oIgogCiAjaW5jbHVkZSAiSURCQ29ubmVjdGlvblByb3h5LmgiCisjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNvY2tldFByb3ZpZGVyLmgiCkBAIC0xNjMsNiArMTY0LDEx
IEBAIHZvaWQgV29ya2VyVGhyZWFkOjpldmFsdWF0ZVNjcmlwdElmTmVjZXNzYXJ5KFN0cmluZyYg
ZXhjZXB0aW9uTWVzc2FnZSkKICAgICBpZiAoc291cmNlUHJvdmlkZXIpCiAgICAgICAgIGdsb2Jh
bFNjb3BlKCktPnNldE1haW5TY3JpcHRTb3VyY2VQcm92aWRlcigqc291cmNlUHJvdmlkZXIpOwog
CisgICAgaWYgKGV4Y2VwdGlvbk1lc3NhZ2UuaXNFbXB0eSgpKQorICAgICAgICBSRUxFQVNFX0xP
RyhXb3JrZXIsICJXb3JrZXJUaHJlYWQ6OmV2YWx1YXRlU2NyaXB0SWZOZWNlc3NhcnkoKSBTVUND
RVNTIik7CisgICAgZWxzZQorICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXb3JrZXIsICJXb3Jr
ZXJUaHJlYWQ6OmV2YWx1YXRlU2NyaXB0SWZOZWNlc3NhcnkoKSBGQUlMVVJFICgle3ByaXZhdGV9
cykiLCBleGNlcHRpb25NZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworCiAgICAgLy8gRnJlZSB0aGUg
c3RhcnR1cCBkYXRhIHRvIGNhdXNlIGl0cyBtZW1iZXIgdmFyaWFibGUgZGVyZWYncyBoYXBwZW4g
b24gdGhlIHdvcmtlcidzIHRocmVhZCAoc2luY2UKICAgICAvLyBhbGwgcmVmL2RlcmVmcyBvZiB0
aGVzZSBvYmplY3RzIGFyZSBoYXBwZW5pbmcgb24gdGhlIHRocmVhZCBhdCB0aGlzIHBvaW50KS4g
Tm90ZSB0aGF0CiAgICAgLy8gV29ya2VyVGhyZWFkOjp+V29ya2VyVGhyZWFkIGhhcHBlbnMgb24g
YSBkaWZmZXJlbnQgdGhyZWFkIHdoZXJlIGl0IHdhcyBjcmVhdGVkLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5o
CmluZGV4IDkwYmRiMDQ1OTU3MS4uM2ZkMDZjZjk0OWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckZldGNoUmVzdWx0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oCkBA
IC0zNyw2ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gRklYTUU6IFVzZSB0
aGUgZ2VuZXJpYyBXb3JrZXJGZXRjaFJlc3VsdCBpbnN0ZWFkLgogc3RydWN0IFNlcnZpY2VXb3Jr
ZXJGZXRjaFJlc3VsdCB7CiAgICAgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyIGpvYkRh
dGFJZGVudGlmaWVyOwogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgcmVnaXN0cmF0
aW9uS2V5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKaW5kZXggYzY2NjE0
ZmEyYzk2Li4yYWMwMmE3ZDRhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5
LmNwcApAQCAtNTEsMTEgKzUxLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMg
VVJMIHRvcE9yaWdpblVSTChjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQotewotICAgIHJl
dHVybiBVUkwgeyBVUkwgeyB9LCBvcmlnaW4udG9SYXdTdHJpbmcoKSB9OwotfQotCiB2b2lkIFNl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2V0dXBQYWdlRm9yU2VydmljZVdvcmtlcihQYWdlJiBw
YWdlLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEpCiB7CiAgICAgYXV0byYg
bWFpbkZyYW1lID0gcGFnZS5tYWluRnJhbWUoKTsKQEAgLTY4LDggKzYzLDkgQEAgdm9pZCBTZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHk6OnNldHVwUGFnZUZvclNlcnZpY2VXb3JrZXIoUGFnZSYgcGFn
ZSwgY29uc3QgU2VydmkKICAgICBhdXRvIG9yaWdpbiA9IGRhdGEucmVnaXN0cmF0aW9uLmtleS50
b3BPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigpOwogICAgIG9yaWdpbi0+c2V0U3RvcmFnZUJsb2Nr
aW5nUG9saWN5KHBhZ2Uuc2V0dGluZ3MoKS5zdG9yYWdlQmxvY2tpbmdQb2xpY3koKSk7CiAKLSAg
ICBkb2N1bWVudC0+c2V0U2l0ZUZvckNvb2tpZXModG9wT3JpZ2luVVJMKG9yaWdpbikpOwotICAg
IGRvY3VtZW50LT5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyh0b3BPcmlnaW5VUkwob3JpZ2luKSk7
CisgICAgYXV0byBvcmlnaW5Bc1VSTCA9IG9yaWdpbi0+dG9VUkwoKTsKKyAgICBkb2N1bWVudC0+
c2V0U2l0ZUZvckNvb2tpZXMob3JpZ2luQXNVUkwpOworICAgIGRvY3VtZW50LT5zZXRGaXJzdFBh
cnR5Rm9yQ29va2llcyhvcmlnaW5Bc1VSTCk7CiAgICAgZG9jdW1lbnQtPnNldERvbWFpbkZvckNh
Y2hlUGFydGl0aW9uKG9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSk7CiAKICAgICBp
ZiAoYXV0byBwb2xpY3kgPSBwYXJzZVJlZmVycmVyUG9saWN5KGRhdGEucmVmZXJyZXJQb2xpY3ks
IFJlZmVycmVyUG9saWN5U291cmNlOjpIVFRQSGVhZGVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCmluZGV4IDZhNTliMmVmZTlhMS4uOTI2ZDM1
NzA3ODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
ci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsMTMgKzI2LDE3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hh
cmVkV29ya2VyLmgiCiAKKyNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIKICNpbmNsdWRlICJDb250
ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUNoYW5u
ZWwuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgIlJlc291cmNlRXJyb3Iu
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlck1h
bmFnZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJQcm94eS5oIgorI2luY2x1ZGUgIlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJQcm92aWRl
ci5oIgogI2luY2x1ZGUgIldvcmtlck9wdGlvbnMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5o
PgpAQCAtNDEsOCArNDUsMzEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0lNUEwoU2hhcmVkV29ya2VyKTsKIAotRXhjZXB0aW9uT3I8UmVmPFNoYXJlZFdv
cmtlcj4+IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgSlNDOjpSdW50
aW1lRmxhZ3MgcnVudGltZUZsYWdzLCBTdHJpbmcmJiBzY3JpcHRVUkxTdHJpbmcsIHN0ZDo6b3B0
aW9uYWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYgbWF5YmVPcHRpb25z
KQorI2RlZmluZSBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xP
RyhTaGFyZWRXb3JrZXIsICIlcCAtIFtpZGVudGlmaWVyPSV7cHVibGljfXNdIFNoYXJlZFdvcmtl
cjo6IiBmbXQsIHRoaXMsIG1faWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksICMj
X19WQV9BUkdTX18pCisjZGVmaW5lIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0dfRVJST1IoZm10
LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKFNoYXJlZFdvcmtlciwgIiVwIC0gW2lkZW50aWZpZXI9
JXtwdWJsaWN9c10gU2hhcmVkV29ya2VyOjoiIGZtdCwgdGhpcywgbV9pZGVudGlmaWVyLnRvU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSwgIyNfX1ZBX0FSR1NfXykKKworc3RhdGljIEhhc2hNYXA8U2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgU2hhcmVkV29ya2VyKj4mIGFsbFNoYXJlZFdvcmtl
cnMoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEhhc2hNYXA8U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgU2hhcmVkV29ya2Vy
Kj4+IGFsbFNoYXJlZFdvcmtlcnM7CisgICAgcmV0dXJuIGFsbFNoYXJlZFdvcmtlcnM7Cit9CisK
K1NoYXJlZFdvcmtlciogU2hhcmVkV29ya2VyOjpmcm9tSWRlbnRpZmllcihTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIGFsbFNoYXJlZFdvcmtl
cnMoKS5nZXQoaWRlbnRpZmllcik7Cit9CisKK3N0YXRpYyBpbmxpbmUgU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbiogbWFpblRocmVhZENvbm5lY3Rpb24oKQogeworICAgIHJldHVybiBTaGFy
ZWRXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOwor
fQorCitFeGNlcHRpb25PcjxSZWY8U2hhcmVkV29ya2VyPj4gU2hhcmVkV29ya2VyOjpjcmVhdGUo
RG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmcmJiBzY3JpcHRVUkxTdHJpbmcsIHN0ZDo6b3B0aW9u
YWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYgbWF5YmVPcHRpb25zKQor
eworICAgIGlmICghbWFpblRocmVhZENvbm5lY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0
ZWQiIH07CisKICAgICBpZiAoIWRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzU2hh
cmVkV29ya2Vycyhkb2N1bWVudC50b3BPcmlnaW4oKSkpCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBTZWN1cml0eUVycm9yLCAiVGhpcyBpZnJhbWUgZG9lc24ndCBoYXZlIHN0b3JhZ2UgYWNj
ZXNzIl9zIH07CiAKQEAgLTY3LDI2ICs5NCwzMCBAQCBFeGNlcHRpb25PcjxSZWY8U2hhcmVkV29y
a2VyPj4gU2hhcmVkV29ya2VyOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBKU0M6OlJ1bgog
ICAgIGF1dG8gY2hhbm5lbCA9IE1lc3NhZ2VDaGFubmVsOjpjcmVhdGUoZG9jdW1lbnQpOwogICAg
IGF1dG8gdHJhbnNmZXJyZWRQb3J0ID0gY2hhbm5lbC0+cG9ydDIoKS5kaXNlbnRhbmdsZSgpOwog
Ci0gICAgYXV0byBzaGFyZWRXb3JrZXIgPSBhZG9wdFJlZigqbmV3IFNoYXJlZFdvcmtlcihkb2N1
bWVudCwgY2hhbm5lbC0+cG9ydDEoKSwgcnVudGltZUZsYWdzKSk7CisgICAgYXV0byBzaGFyZWRX
b3JrZXIgPSBhZG9wdFJlZigqbmV3IFNoYXJlZFdvcmtlcihkb2N1bWVudCwgY2hhbm5lbC0+cG9y
dDEoKSkpOwogICAgIHNoYXJlZFdvcmtlci0+c3VzcGVuZElmTmVlZGVkKCk7CiAKLSAgICBTaGFy
ZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0KHVybCwgc2hhcmVkV29ya2VyLmdl
dCgpLCBXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCksIFdURk1vdmUob3B0aW9ucykpOworICAgIENs
aWVudE9yaWdpbiBjbGllbnRPcmlnaW4geyBkb2N1bWVudC50b3BEb2N1bWVudCgpLnNlY3VyaXR5
T3JpZ2luKCkuZGF0YSgpLCBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSB9OworICAg
IG1haW5UaHJlYWRDb25uZWN0aW9uKCktPnJlcXVlc3RTaGFyZWRXb3JrZXIoY2xpZW50T3JpZ2lu
LCBzaGFyZWRXb3JrZXItPmlkZW50aWZpZXIoKSwgdXJsLCBXVEZNb3ZlKHRyYW5zZmVycmVkUG9y
dCksIG9wdGlvbnMpOwogICAgIHJldHVybiBzaGFyZWRXb3JrZXI7CiB9CiAKLVNoYXJlZFdvcmtl
cjo6U2hhcmVkV29ya2VyKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPE1lc3NhZ2VQb3J0PiYmIHBv
cnQsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncykKK1NoYXJlZFdvcmtlcjo6U2hhcmVk
V29ya2VyKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPE1lc3NhZ2VQb3J0PiYmIHBvcnQpCiAgICAg
OiBBY3RpdmVET01PYmplY3QoJmRvY3VtZW50KQorICAgICwgbV9pZGVudGlmaWVyKFNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXI6OmdlbmVyYXRlKCkpCiAgICAgLCBtX3BvcnQoV1RGTW92ZShw
b3J0KSkKICAgICAsIG1faWRlbnRpZmllckZvckluc3BlY3RvcigiU2hhcmVkV29ya2VyOiIgKyBJ
bnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpKQotICAgICwg
bV9ydW50aW1lRmxhZ3MocnVudGltZUZsYWdzKQotICAgICwgbV9jcmVhdGlvblRpbWUoTW9ub3Rv
bmljVGltZTo6bm93KCkpCi0gICAgLCBtX3Byb3h5KFNoYXJlZFdvcmtlclByb3h5OjpjcmVhdGUo
KnRoaXMpKQogeworICAgIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coIlNoYXJlZFdvcmtlcjoi
KTsKKyAgICBhbGxTaGFyZWRXb3JrZXJzKCkuYWRkKG1faWRlbnRpZmllciwgdGhpcyk7CiB9CiAK
IFNoYXJlZFdvcmtlcjo6flNoYXJlZFdvcmtlcigpCiB7Ci0gICAgbV9wcm94eS53b3JrZXJPYmpl
Y3REZXN0cm95ZWQoKTsKKyAgICBBU1NFUlQoYWxsU2hhcmVkV29ya2VycygpLmdldChtX2lkZW50
aWZpZXIpID09IHRoaXMpOworICAgIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coIn5TaGFyZWRX
b3JrZXI6Iik7CisgICAgYWxsU2hhcmVkV29ya2VycygpLnJlbW92ZShtX2lkZW50aWZpZXIpOwor
ICAgIEFTU0VSVCghbV9pc0FjdGl2ZSk7CiB9CiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFNo
YXJlZFdvcmtlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CkBAIC0xMDQsMTkgKzEz
NSwyNiBAQCBFdmVudFRhcmdldEludGVyZmFjZSBTaGFyZWRXb3JrZXI6OmV2ZW50VGFyZ2V0SW50
ZXJmYWNlKCkgY29uc3QKICAgICByZXR1cm4gU2hhcmVkV29ya2VyRXZlbnRUYXJnZXRJbnRlcmZh
Y2VUeXBlOwogfQogCi12b2lkIFNoYXJlZFdvcmtlcjo6c3RvcCgpCit2b2lkIFNoYXJlZFdvcmtl
cjo6ZGlkRmFpbExvYWRpbmcoKQogewotICAgIHRlcm1pbmF0ZSgpOworICAgIFNIQVJFRF9XT1JL
RVJfUkVMRUFTRV9MT0dfRVJST1IoIn5kaWRGYWlsTG9hZGluZzoiKTsKKyAgICBxdWV1ZVRhc2tU
b0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2
ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOworICAgIG1faXNBY3RpdmUgPSBmYWxzZTsKIH0KIAog
Ym9vbCBTaGFyZWRXb3JrZXI6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewot
ICAgIHJldHVybiBtX3Byb3h5Lmhhc1BlbmRpbmdBY3Rpdml0eSgpIHx8IG1faXNMb2FkaW5nOwor
ICAgIHJldHVybiBtX2lzQWN0aXZlOwogfQogCi12b2lkIFNoYXJlZFdvcmtlcjo6dGVybWluYXRl
KCkKK3ZvaWQgU2hhcmVkV29ya2VyOjpzdG9wKCkKIHsKLSAgICBtX3Byb3h5LnRlcm1pbmF0ZVdv
cmtlckdsb2JhbFNjb3BlKCk7CisgICAgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRygic3RvcDoi
KTsKKyAgICBtX2lzQWN0aXZlID0gZmFsc2U7CisgICAgbWFpblRocmVhZENvbm5lY3Rpb24oKS0+
c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkobV9pZGVudGlmaWVyKTsKIH0KIAorI3VuZGVm
IFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0cKKyN1bmRlZiBTSEFSRURfV09SS0VSX1JFTEVBU0Vf
TE9HX0VSUk9SCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmgKaW5kZXggNTMyNmVlNTQyYzg4Li44N2NjNzVlZmJl
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3
LDM5ICsyNywzNSBAQAogCiAjaW5jbHVkZSAiQWJzdHJhY3RXb3JrZXIuaCIKICNpbmNsdWRlICJB
Y3RpdmVET01PYmplY3QuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SdW50aW1lRmxhZ3Mu
aD4KKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8
d3RmL01vbm90b25pY1RpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZXNz
YWdlUG9ydDsKLWNsYXNzIFNoYXJlZFdvcmtlclByb3h5OworY2xhc3MgUmVzb3VyY2VFcnJvcjsK
IAogc3RydWN0IFdvcmtlck9wdGlvbnM7CiAKIGNsYXNzIFNoYXJlZFdvcmtlciBmaW5hbCA6IHB1
YmxpYyBBYnN0cmFjdFdvcmtlciwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChTaGFyZWRXb3JrZXIpOwogcHVibGljOgotICAgIHN0YXRpYyBFeGNl
cHRpb25PcjxSZWY8U2hhcmVkV29ya2VyPj4gY3JlYXRlKERvY3VtZW50JiwgSlNDOjpSdW50aW1l
RmxhZ3MsIFN0cmluZyYmIHNjcmlwdFVSTCwgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8U3Ry
aW5nLCBXb3JrZXJPcHRpb25zPj4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxTaGFy
ZWRXb3JrZXI+PiBjcmVhdGUoRG9jdW1lbnQmLCBTdHJpbmcmJiBzY3JpcHRVUkwsIHN0ZDo6b3B0
aW9uYWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYpOwogICAgIH5TaGFy
ZWRXb3JrZXIoKTsKIAorICAgIHN0YXRpYyBTaGFyZWRXb3JrZXIqIGZyb21JZGVudGlmaWVyKFNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIFNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIE1l
c3NhZ2VQb3J0JiBwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9wb3J0LmdldCgpOyB9Ci0gICAgSlND
OjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKCkgeyByZXR1cm4gbV9ydW50aW1lRmxhZ3M7IH0K
IAogICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllckZvckluc3BlY3RvcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllckZvckluc3BlY3RvcjsgfQotICAgIE1vbm90b25pY1RpbWUgY3JlYXRp
b25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdGlvblRpbWU7IH0KIAotICAgIFNoYXJlZFdv
cmtlclByb3h5JiBwcm94eSgpIHsgcmV0dXJuIG1fcHJveHk7IH0KLQotICAgIHZvaWQgc2V0SXNM
b2FkaW5nKGJvb2wgaXNMb2FkaW5nKSB7IG1faXNMb2FkaW5nID0gaXNMb2FkaW5nOyB9CisgICAg
dm9pZCBkaWRGYWlsTG9hZGluZygpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQuCiAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsOwog
CiBwcml2YXRlOgotICAgIFNoYXJlZFdvcmtlcihEb2N1bWVudCYsIFJlZjxNZXNzYWdlUG9ydD4m
JiwgSlNDOjpSdW50aW1lRmxhZ3MpOwotCi0gICAgdm9pZCB0ZXJtaW5hdGUoKTsKKyAgICBTaGFy
ZWRXb3JrZXIoRG9jdW1lbnQmLCBSZWY8TWVzc2FnZVBvcnQ+JiYpOwogCiAgICAgLy8gRXZlbnRU
YXJnZXQuCiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdCBmaW5hbDsKQEAgLTcwLDEyICs2NiwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgdmlydHVh
bEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwogCiAKKyAgICBTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBSZWY8TWVzc2FnZVBvcnQ+IG1fcG9y
dDsKICAgICBTdHJpbmcgbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yOwotICAgIEpTQzo6UnVudGlt
ZUZsYWdzIG1fcnVudGltZUZsYWdzOwotICAgIE1vbm90b25pY1RpbWUgbV9jcmVhdGlvblRpbWU7
Ci0gICAgU2hhcmVkV29ya2VyUHJveHkmIG1fcHJveHk7IC8vIFRoZSBwcm94eSBvdXRsaXZlcyB0
aGUgd29ya2VyIHRvIHBlcmZvcm0gdGhyZWFkIHNodXRkb3duLgotICAgIGJvb2wgbV9pc0xvYWRp
bmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0FjdGl2ZSB7IHRydWUgfTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXIuaWRsCmluZGV4IGIxNzFjOWVkZjgxYi4uNGM3NDE1NGQ4MjA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5pZGwKQEAgLTI4LDcgKzI4
LDcgQEAKICAgICBFeHBvc2VkPVdpbmRvdwogXQogaW50ZXJmYWNlIFNoYXJlZFdvcmtlciA6IEV2
ZW50VGFyZ2V0IHsKLSAgW0NhbGxXaXRoPURvY3VtZW50JlJ1bnRpbWVGbGFnc10gY29uc3RydWN0
b3IoVVNWU3RyaW5nIHNjcmlwdFVSTCwgb3B0aW9uYWwgKERPTVN0cmluZyBvciBXb3JrZXJPcHRp
b25zKSBvcHRpb25zKTsKKyAgW0NhbGxXaXRoPURvY3VtZW50XSBjb25zdHJ1Y3RvcihVU1ZTdHJp
bmcgc2NyaXB0VVJMLCBvcHRpb25hbCAoRE9NU3RyaW5nIG9yIFdvcmtlck9wdGlvbnMpIG9wdGlv
bnMpOwogCiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZXNzYWdlUG9ydCBwb3J0OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2JhbFNj
b3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlLmNwcAppbmRleCA0MTIxZWI1OGMyMDUuLjNjNTVhNjg3YmY4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2JhbFNj
b3BlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNiw2ICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNo
YXJlZFdvcmtlckdsb2JhbFNjb3BlLmgiCiAKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5j
bHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSAiV29ya2Vy
VGhyZWFkLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtMzMsMTcg
KzM5LDQ0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlKTsKIAorI2RlZmluZSBTQ09QRV9SRUxFQVNFX0xP
RyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBbc2hhcmVkV29ya2Vy
SWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OiIgZm10LCB0
aGlzLCB0aGlzLT50aHJlYWQoKS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1Nf
XykKKwogU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OlNoYXJlZFdvcmtlckdsb2JhbFNjb3BlKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1zLCBSZWY8U2Vj
dXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBXb3JrZXJUaHJlYWQmIHRocmVhZCwgUmVmPFNlY3VyaXR5
T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5l
Y3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKQogICAgIDogV29ya2Vy
R2xvYmFsU2NvcGUoV29ya2VyVGhyZWFkVHlwZTo6U2hhcmVkV29ya2VyLCBwYXJhbXMsIFdURk1v
dmUob3JpZ2luKSwgdGhyZWFkLCBXVEZNb3ZlKHRvcE9yaWdpbiksIGNvbm5lY3Rpb25Qcm94eSwg
c29ja2V0UHJvdmlkZXIpCiAgICAgLCBtX25hbWUobmFtZSkKIHsKKyAgICBTQ09QRV9SRUxFQVNF
X0xPRygiU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6Iik7CiAgICAgcmVsYXhBZG9wdGlvblJlcXVp
cmVtZW50KCk7CiAgICAgYXBwbHlDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMo
cGFyYW1zLmNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyk7CiB9CiAKK1NoYXJl
ZFdvcmtlclRocmVhZCYgU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OnRocmVhZCgpCit7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFNoYXJlZFdvcmtlclRocmVhZCY+KFdvcmtlckdsb2JhbFNjb3Bl
Ojp0aHJlYWQoKSk7Cit9CisKIHZvaWQgU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OmNsb3NlKCkK
IHsKKyAgICBTQ09QRV9SRUxFQVNFX0xPRygiY2xvc2U6Iik7CiAgICAgdGhyZWFkKCkuc3RvcChu
dWxscHRyKTsKIH0KIAorLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
d29ya2Vycy5odG1sI2RvbS1zaGFyZWR3b3JrZXIgc3RlcCAxMS41Cit2b2lkIFNoYXJlZFdvcmtl
ckdsb2JhbFNjb3BlOjpwb3N0Q29ubmVjdEV2ZW50KFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiB0
cmFuc2ZlcnJlZFBvcnQsIFN0cmluZyYmIHNvdXJjZU9yaWdpbikKK3sKKyAgICBTQ09QRV9SRUxF
QVNFX0xPRygicG9zdENvbm5lY3RFdmVudDoiKTsKKyAgICBhdXRvIHNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCIiKTsKKyAgICBBU1NFUlQoc2Vy
aWFsaXplZFNjcmlwdFZhbHVlKTsKKyAgICBhdXRvIHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFu
Z2xlUG9ydHMoKnRoaXMsIHsgV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpIH0pOworICAgIEFTU0VS
VChwb3J0cy5zaXplKCkgPT0gMSk7CisgICAgYXV0byBwb3J0ID0gcG9ydHNbMF07CisgICAgQVNT
RVJUKHBvcnQpOworICAgIGF1dG8gZXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3Zl
KHBvcnRzKSwgc2VyaWFsaXplZFNjcmlwdFZhbHVlLnJlbGVhc2VOb25OdWxsKCksIHNvdXJjZU9y
aWdpbiwgeyB9LCBwb3J0KTsKKyAgICBldmVudC0+aW5pdEV2ZW50KGV2ZW50TmFtZXMoKS5jb25u
ZWN0RXZlbnQsIGZhbHNlLCBmYWxzZSk7CisKKyAgICBkaXNwYXRjaEV2ZW50KFdURk1vdmUoZXZl
bnQpKTsKK30KKworI3VuZGVmIFNDT1BFX1JFTEVBU0VfTE9HCisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IGYzNzc5Yjg0ZDE1MC4uMTVkZGM1MzhkYjZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJHbG9iYWxT
Y29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckds
b2JhbFNjb3BlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjUsMTEgKzI1LDEzIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAi
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5o
IgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBTaGFyZWRXb3JrZXJUaHJlYWQ7CiBzdHJ1Y3QgV29ya2VyUGFyYW1ldGVyczsKIAogY2xh
c3MgU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUgZmluYWwgOiBwdWJsaWMgV29ya2VyR2xvYmFsU2Nv
cGUgewpAQCAtMzksNyArNDEsMTEgQEAgcHVibGljOgogCiAgICAgVHlwZSB0eXBlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gVHlwZTo6U2hhcmVkV29ya2VyOyB9CiAgICAgY29uc3QgU3RyaW5nJiBu
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgU2hhcmVkV29ya2VyVGhyZWFkJiB0
aHJlYWQoKTsKKworICAgIHZvaWQgcG9zdENvbm5lY3RFdmVudChUcmFuc2ZlcnJlZE1lc3NhZ2VQ
b3J0JiYsIFN0cmluZyYmIHNvdXJjZU9yaWdpbik7CiAgICAgdm9pZCBjbG9zZSgpOworCiBwcml2
YXRlOgogICAgIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgV29ya2VyUGFyYW1ldGVycyYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiwgV29ya2VyVGhyZWFk
JiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0
aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44N2E5NzIxMDQ4NzkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgK
QEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIFNo
YXJlZFdvcmtlcklkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFNoYXJlZFdvcmtlcklkZW50aWZp
ZXIgPSBPYmplY3RJZGVudGlmaWVyPFNoYXJlZFdvcmtlcklkZW50aWZpZXJUeXBlPjsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9T
aGFyZWRXb3JrZXJLZXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LjVmOWU2ZGM5MGJhOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlcktleS5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNsaWVudE9yaWdpbi5oIgorI2luY2x1ZGUgPHd0Zi9I
YXNoZXIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFNoYXJlZFdvcmtlcktleSB7
CisgICAgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbjsKKyAgICBVUkwgdXJsOworICAgIFN0
cmluZyBuYW1lOworCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OworfTsKKworaW5saW5lIHVu
c2lnbmVkIFNoYXJlZFdvcmtlcktleTo6aGFzaCgpIGNvbnN0Cit7CisgICAgSGFzaGVyIGhhc2hl
cjsKKyAgICBhZGQoaGFzaGVyLCBvcmlnaW4uaGFzaCgpKTsKKyAgICBhZGQoaGFzaGVyLCB1cmwp
OworICAgIGFkZChoYXNoZXIsIG5hbWUpOworICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOworfQor
CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZFdvcmtlcktleSYgYSwgY29uc3Qg
U2hhcmVkV29ya2VyS2V5JiBiKQoreworICAgIHJldHVybiBhLm9yaWdpbiA9PSBiLm9yaWdpbiAm
JiBhLnVybCA9PSBiLnVybCAmJiBhLm5hbWUgPT0gYi5uYW1lOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0
SGFzaDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk+IHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFz
aChjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIGtleSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBrZXkuaGFzaCgpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdl
YkNvcmU6OlNoYXJlZFdvcmtlcktleSYgYSwgY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5
JiBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGEgPT0gYjsKKyAgICB9CisKKyAgICBzdGF0aWMg
Y29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOworfTsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk+IDog
R2VuZXJpY0hhc2hUcmFpdHM8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5PiB7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsKKyAgICBzdGF0aWMgdm9p
ZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBzbG90KSB7
IG5ldyAoTm90TnVsbCwgJnNsb3QudXJsKSBVUkwoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUp
OyB9CisgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgV2ViQ29yZTo6U2hhcmVk
V29ya2VyS2V5JiBzbG90KSB7IHJldHVybiBzbG90LnVybC5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAxMjZiYzRmZWQ4Ny4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMTIyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiU2hhcmVkV29ya2VyTWFuYWdlci5oIgotCi0jaW5jbHVkZSAiQ29udGVudFNlY3Vy
aXR5UG9saWN5LmgiCi0jaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkxvYWRlclN0
cmF0ZWd5LmgiCi0jaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1T
dHJhdGVnaWVzLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVk
V29ya2VyR2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJQcm94eS5oIgotI2lu
Y2x1ZGUgIlNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtl
clRocmVhZC5oIgotI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKLSNpbmNsdWRlICJXb3JrZXJT
Y3JpcHRMb2FkZXIuaCIKLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRl
IDx3dGYvUnVuTG9vcC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVNoYXJlZFdvcmtlck1h
bmFnZXImIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNpbmdsZXRvbigpCi17Ci0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFNoYXJlZFdvcmtlck1hbmFnZXI+IGluc3RhbmNlOwotICAgIHJldHVybiBp
bnN0YW5jZS5nZXQoKTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpjb25uZWN0KGNv
bnN0IFVSTCYgdXJsLCBTaGFyZWRXb3JrZXImIHdvcmtlciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9y
dCYmIG1lc3NhZ2VQb3J0LCBXb3JrZXJPcHRpb25zJiYgb3B0aW9ucykKLXsKLSAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwotICAgIC8vIEZJWE1FOiBIYW5kbGUgd29ya2VycyBmcm9tIG90
aGVyIHByb2Nlc3Nlcywgd2hpY2ggd2lsbCBwcm9iYWJseSByZXF1aXJlIG1vdmluZyBjb25uZWN0
IHRvIHRoZSBGcmFtZUxvYWRlckNsaWVudCBvciBzb21ldGhpbmcuCi0gICAgLy8gTWF5YmUgc29t
ZXRoaW5nIG1vcmUgbGlrZSB3aGF0IFNlcnZpY2VXb3JrZXJzIGRvZXMuCi0KLSAgICAvLyBGSVhN
RTogQ2hlY2sgaWYgd2UgYWxyZWFkeSBtYWRlIGEgdGhyZWFkLgotICAgIC8vIEZJWE1FOiBDaGVj
ayBpZiB0aGVyZSdzIGFscmVhZHkgYSBzaGFyZWQgd29ya2VyIGFuZCB1c2UgdGhhdCBpZiB0aGVy
ZSBpcy4KLQotICAgIGF1dG8gbG9hZGVyID0gbWFrZVVuaXF1ZVJlZjxTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXI+KHVybCwgd29ya2VyLCBXVEZNb3ZlKG1lc3NhZ2VQb3J0KSwgV1RGTW92ZShvcHRp
b25zKSk7Ci0gICAgYXV0byBpZGVudGlmaWVyID0gbG9hZGVyLT5pZGVudGlmaWVyKCk7Ci0gICAg
bV9sb2FkZXJzLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKGxvYWRlcikpOwotfQotCi12b2lkIFNo
YXJlZFdvcmtlck1hbmFnZXI6OnNjcmlwdExvYWRGYWlsZWQoU2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVyJiBsb2FkZXIpCi17Ci0gICAgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNo
RXZlbnQobG9hZGVyLndvcmtlcigpLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBF
dmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKLSAgICBtX2xvYWRlcnMucmVtb3ZlKGxvYWRlci5p
ZGVudGlmaWVyKCkpOwotfQotCi12b2lkIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNjcmlwdExvYWRl
ZFN1Y2Nlc3NmdWxseShTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXImIGxvYWRlciwgY29uc3QgU2Ny
aXB0QnVmZmVyJiBzY3JpcHRCdWZmZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIFNoYXJlZFdvcmtlciYgc2hhcmVkV29ya2VyLCBUcmFuc2ZlcnJlZE1l
c3NhZ2VQb3J0JiYgdHJhbnNmZXJyZWRQb3J0KQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7Ci0gICAgYXV0byYgd29ya2VyID0gbG9hZGVyLndvcmtlcigpOwotICAgIGF1dG8mIG9w
dGlvbnMgPSBsb2FkZXIub3B0aW9ucygpOwotCi0gICAgYXV0byYgcHJveHkgPSBzaGFyZWRXb3Jr
ZXIucHJveHkoKTsKLQotICAgIHByb3h5LnN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoCi0gICAgICAg
IGxvYWRlci51cmwoKSwKLSAgICAgICAgb3B0aW9ucy5uYW1lLAotICAgICAgICBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LnVzZXJBZ2VudChsb2FkZXIudXJsKCkpLAotICAgICAgICBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+aXNPbkxpbmUoKSwKLSAgICAgICAgc2NyaXB0
QnVmZmVyLAotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LmNvbnRlbnRTZWN1cml0eVBv
bGljeSgpLT5yZXNwb25zZUhlYWRlcnMoKSwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKSwKLSAgICAgICAg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KCksCi0gICAg
ICAgIHdvcmtlci5jcmVhdGlvblRpbWUoKSwKLSAgICAgICAgUmVmZXJyZXJQb2xpY3k6OkVtcHR5
U3RyaW5nLAotICAgICAgICBvcHRpb25zLnR5cGUsCi0gICAgICAgIG9wdGlvbnMuY3JlZGVudGlh
bHMsCi0gICAgICAgIHdvcmtlci5ydW50aW1lRmxhZ3MoKQotICAgICk7Ci0gICAgaWYgKCFwcm94
eS50aHJlYWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTihpczxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkp
OwotICAgIGF1dG8gc291cmNlT3JpZ2luID0gZG93bmNhc3Q8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpLnNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmcoKTsKLQotICAgIHByb3h5LnRo
cmVhZCgpLT5ydW5Mb29wKCkucG9zdFRhc2soW3RyYW5zZmVycmVkUG9ydCA9IFdURk1vdmUodHJh
bnNmZXJyZWRQb3J0KSwgc291cmNlT3JpZ2luID0gV1RGTW92ZShzb3VyY2VPcmlnaW4pLmlzb2xh
dGVkQ29weSgpXSAoYXV0byYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgbXV0YWJsZSB7Ci0gICAg
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgICAgIC8vIGh0dHBzOi8vaHRt
bC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dvcmtlcnMuaHRtbCNkb20tc2hhcmVkd29ya2Vy
IHN0ZXAgMTEuNQotICAgICAgICBhdXRvIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA9IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCIiKTsKLSAgICAgICAgQVNTRVJUKHNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSk7Ci0gICAgICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0
cyhzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB7IFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSB9KTsK
LSAgICAgICAgQVNTRVJUKHBvcnRzLnNpemUoKSA9PSAxKTsKLSAgICAgICAgYXV0byBwb3J0ID0g
cG9ydHNbMF07Ci0gICAgICAgIEFTU0VSVChwb3J0KTsKLSAgICAgICAgYXV0byBldmVudCA9IE1l
c3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUocG9ydHMpLCBzZXJpYWxpemVkU2NyaXB0VmFsdWUu
cmVsZWFzZU5vbk51bGwoKSwgc291cmNlT3JpZ2luLCB7IH0sIHBvcnQpOwotICAgICAgICBldmVu
dC0+aW5pdEV2ZW50KGV2ZW50TmFtZXMoKS5jb25uZWN0RXZlbnQsIGZhbHNlLCBmYWxzZSk7Ci0K
LSAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxTaGFy
ZWRXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwotICAgICAgICBh
dXRvJiB3b3JrZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFNoYXJlZFdvcmtlckdsb2JhbFNjb3Bl
PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUuZGlz
cGF0Y2hFdmVudChXVEZNb3ZlKGV2ZW50KSk7Ci0gICAgfSk7Ci0KLSAgICBtX2xvYWRlcnMucmVt
b3ZlKGxvYWRlci5pZGVudGlmaWVyKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uZGJkMzgxNTkyZjI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCAr
MSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3Qu
aCIKKyNpbmNsdWRlICJFcnJvckV2ZW50LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1
ZGUgIlNjcmlwdEJ1ZmZlci5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgorI2luY2x1ZGUg
IlNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oIgorI2luY2x1ZGUgIldvcmtlckZldGNoUmVzdWx0
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0Vf
TE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb246OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBD
T05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihT
aGFyZWRXb3JrZXIsICIlcCAtIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OiIgZm10LCB0
aGlzLCAjI19fVkFfQVJHU19fKQorCitzdGF0aWMgdWludDY0X3QgbG9hZGVySWRlbnRpZmllclNl
ZWQgPSAwOworCitTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uKCkgPSBkZWZhdWx0OworCitTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
Ojp+U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpID0gZGVmYXVsdDsKKwordm9pZCBTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpmZXRjaFNjcmlwdEluQ2xpZW50KFVSTCYmIHVybCwg
V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLCBXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRvKiB3b3JrZXJPYmplY3Qg
PSBTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVyKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIpOworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coImZldGNoU2NyaXB0SW5DbGllbnQ6IHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cywgd29ya2VyPSVwIiwgc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHdvcmtlck9i
amVjdCk7CisgICAgaWYgKCF3b3JrZXJPYmplY3QpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcih7IH0pOworCisgICAgYXV0byBsb2FkZXJJZGVudGlmaWVyID0gKytsb2FkZXJJZGVu
dGlmaWVyU2VlZDsKKyAgICBhdXRvIGxvYWRlciA9IG1ha2VVbmlxdWVSZWY8U2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyPihXVEZNb3ZlKHVybCksICp3b3JrZXJPYmplY3QsIFdURk1vdmUod29ya2Vy
T3B0aW9ucykpOworICAgIGF1dG8gbG9hZGVyUHRyID0gbG9hZGVyLnB0cigpOworICAgIG1fbG9h
ZGVycy5hZGQobG9hZGVySWRlbnRpZmllciwgV1RGTW92ZShsb2FkZXIpKTsKKworICAgIGxvYWRl
clB0ci0+bG9hZChbdGhpcywgbG9hZGVySWRlbnRpZmllciwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmIGZldGNo
UmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiZmV0Y2hT
Y3JpcHRJbkNsaWVudDogZmluaXNoZWQgc2NyaXB0IGxvYWQsIHN1Y2Nlc3M9JWQiLCBmZXRjaFJl
c3VsdC5lcnJvci5pc051bGwoKSk7CisgICAgICAgIGF1dG8gbG9hZGVyID0gbV9sb2FkZXJzLnRh
a2UobG9hZGVySWRlbnRpZmllcik7CisgICAgICAgIEFTU0VSVChsb2FkZXIpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihmZXRjaFJlc3VsdCk7CisgICAgfSk7Cit9CisKK3ZvaWQgU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkRmFpbHVyZShX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBhdXRvKiB3b3Jr
ZXJPYmplY3QgPSBTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVyKHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIpOworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IoIm5vdGlmeVdv
cmtlck9iamVjdE9mTG9hZEZhaWx1cmU6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtw
dWJsaWN9cywgd29ya2VyPSVwIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCksIHdvcmtlck9iamVjdCk7CisgICAgaWYgKHdvcmtlck9iamVjdCkK
KyAgICAgICAgd29ya2VyT2JqZWN0LT5kaWRGYWlsTG9hZGluZygpOworfQorCit2b2lkIFNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChTaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBhdXRvKiB3b3JrZXJPYmplY3QgPSBTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVy
KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9M
T0dfRVJST1IoInBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdDogc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcj0le3B1YmxpY31zLCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgd29ya2VyT2JqZWN0KTsKKyAgICBpZiAo
d29ya2VyT2JqZWN0KQorICAgICAgICBBY3RpdmVET01PYmplY3Q6OnF1ZXVlVGFza1RvRGlzcGF0
Y2hFdmVudCgqd29ya2VyT2JqZWN0LCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIEVycm9y
RXZlbnQ6OmNyZWF0ZShlcnJvck1lc3NhZ2UsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCB7IH0pKTsKK30KKworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0cKKyN1bmRl
ZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjUxOTExZDRhMTY3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDYy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cy5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCIK
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBN
ZXNzYWdlUG9ydDsKK2NsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjsKKworc3RydWN0IENs
aWVudE9yaWdpbjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKK3N0cnVjdCBXb3JrZXJPcHRp
b25zOworCitjbGFzcyBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIDogcHVibGljIFJlZkNv
dW50ZWQ8U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbj4geworcHVibGljOgorICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgflNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKTsKKworICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0IENsaWVudE9yaWdpbiYsIFNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFVSTCYsIFRyYW5zZmVycmVkTWVzc2Fn
ZVBvcnQmJiwgY29uc3QgV29ya2VyT3B0aW9ucyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2hh
cmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikg
PSAwOworCitwcm90ZWN0ZWQ6CisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZmV0Y2hTY3JpcHRJbkNsaWVudChVUkwmJiwgV2ViQ29yZTo6U2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciwgV29ya2VyT3B0aW9ucyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFdvcmtlckZldGNoUmVzdWx0Jik+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkRmFpbHVyZShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RFeGNlcHRpb25Ub1dv
cmtlck9iamVjdChTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24oKTsKKworcHJpdmF0ZToKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBVbmlxdWVSZWY8
U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPj4gbV9sb2FkZXJzOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uZWJjZDRhN2FlODdhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oCkBA
IC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlBy
b2Nlc3NRdWFsaWZpZWQuaCIKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllclR5
cGUgeyB9OwordXNpbmcgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA9IFByb2Nlc3NRdWFs
aWZpZWQ8T2JqZWN0SWRlbnRpZmllcjxTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyVHlwZT4+
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mZDhlMTk3ZmEyNDIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5jcHAKQEAg
LTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJTaGFyZWRXb3JrZXJQcm92aWRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRp
YyBTaGFyZWRXb3JrZXJQcm92aWRlciogc2hhcmVkUHJvdmlkZXI7CisKKy8vIEZvciBXZWJLaXRM
ZWdhY3kuCitjbGFzcyBEdW1teVNoYXJlZFdvcmtlclByb3ZpZGVyIGZpbmFsIDogcHVibGljIFNo
YXJlZFdvcmtlclByb3ZpZGVyIHsKK3B1YmxpYzoKKyAgICBTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uKiBzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsg
fQorfTsKKworU2hhcmVkV29ya2VyUHJvdmlkZXImIFNoYXJlZFdvcmtlclByb3ZpZGVyOjpzaW5n
bGV0b24oKQoreworICAgIGlmICghc2hhcmVkUHJvdmlkZXIpCisgICAgICAgIHNoYXJlZFByb3Zp
ZGVyID0gbmV3IER1bW15U2hhcmVkV29ya2VyUHJvdmlkZXI7CisgICAgcmV0dXJuICpzaGFyZWRQ
cm92aWRlcjsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJQcm92aWRlcjo6c2V0U2hhcmVkUHJvdmlk
ZXIoU2hhcmVkV29ya2VyUHJvdmlkZXImIG5ld1Byb3ZpZGVyKQoreworICAgIFJFTEVBU0VfQVNT
RVJUKCFzaGFyZWRQcm92aWRlcik7CisgICAgc2hhcmVkUHJvdmlkZXIgPSAmbmV3UHJvdmlkZXI7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmgKc2ltaWxhcml0eSBpbmRleCA2NCUK
cmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFu
YWdlci5oCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJQcm92aWRlci5oCmluZGV4IGFlZjgyNzkwMzU4NC4uY2I1N2NjMWU3YjVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJvdmlkZXIuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMjYg
KzI1LDE3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiTWVzc2FnZVBvcnRJZGVudGlm
aWVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgiCi0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkV29ya2VyOwotY2xhc3MgU2NyaXB0QnVmZmVyOwot
c3RydWN0IFdvcmtlck9wdGlvbnM7Ci11c2luZyBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0ID0gc3Rk
OjpwYWlyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVzc2FnZVBv
cnRJZGVudGlmaWVyPjsKK2NsYXNzIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb247CiAKLWNs
YXNzIFNoYXJlZFdvcmtlck1hbmFnZXIgeworY2xhc3MgU2hhcmVkV29ya2VyUHJvdmlkZXIgewog
cHVibGljOgotICAgIHN0YXRpYyBTaGFyZWRXb3JrZXJNYW5hZ2VyJiBzaW5nbGV0b24oKTsKLSAg
ICB2b2lkIGNvbm5lY3QoY29uc3QgVVJMJiwgU2hhcmVkV29ya2VyJiwgVHJhbnNmZXJyZWRNZXNz
YWdlUG9ydCYmLCBXb3JrZXJPcHRpb25zJiYpOwotCi0gICAgdm9pZCBzY3JpcHRMb2FkRmFpbGVk
KFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYpOwotICAgIHZvaWQgc2NyaXB0TG9hZGVkU3VjY2Vz
c2Z1bGx5KFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQ
b3J0JiYpOworICAgIHN0YXRpYyBTaGFyZWRXb3JrZXJQcm92aWRlciYgc2luZ2xldG9uKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0U2hhcmVkUHJvdmlkZXIoU2hhcmVkV29y
a2VyUHJvdmlkZXImKTsKIAotcHJpdmF0ZToKLSAgICBIYXNoTWFwPFNoYXJlZFdvcmtlclNjcmlw
dExvYWRlcklkZW50aWZpZXIsIFVuaXF1ZVJlZjxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+PiBt
X2xvYWRlcnM7CisgICAgdmlydHVhbCB+U2hhcmVkV29ya2VyUHJvdmlkZXIoKSB7IH0KKyAgICB2
aXJ0dWFsIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24qIHNoYXJlZFdvcmtlckNvbm5lY3Rp
b24oKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm94eS5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDNiZTA3NTNmODkxZC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3h5LmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDIzMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb3h5LmgiCi0KLSNpbmNsdWRlICJDYWNoZVN0b3JhZ2VQ
cm92aWRlci5oIgotI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKLSNpbmNsdWRlICJFdmVudE5hbWVz
LmgiCi0jaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKLSNpbmNsdWRlICJNZXNzYWdlRXZl
bnQuaCIKLSNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNs
dWRlICJSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAi
U2hhcmVkV29ya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaCIKLSNp
bmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1T
aGFyZWRXb3JrZXJQcm94eTo6U2hhcmVkV29ya2VyUHJveHkoU2hhcmVkV29ya2VyJiBzaGFyZWRX
b3JrZXIpCi0gICAgOiBtX3NoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXIpCi0gICAgLCBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQoc2hhcmVkV29ya2VyLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkK
LSAgICAsIG1faWRlbnRpZmllckZvckluc3BlY3RvcihzaGFyZWRXb3JrZXIuaWRlbnRpZmllckZv
ckluc3BlY3RvcigpKQotewotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5OjpzdGFydFdvcmtl
ckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50LCBib29sIGlzT25saW5lLCBjb25zdCBTY3JpcHRCdWZmZXIm
IHNjcmlwdEJ1ZmZlciwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJz
JiBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsIGJvb2wgc2hvdWxkQnlwYXNz
TWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBDcm9zc09yaWdpbkVtYmVkZGVy
UG9saWN5JiBjcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LCBNb25vdG9uaWNUaW1lIHRpbWVPcmln
aW4sIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHdvcmtlclR5cGUs
IEZldGNoUmVxdWVzdENyZWRlbnRpYWxzIGNyZWRlbnRpYWxzLCBKU0M6OlJ1bnRpbWVGbGFncyBy
dW50aW1lRmxhZ3MpCi17Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgYXV0byBwYXJhbWV0ZXJzID0gV29ya2VyUGFyYW1ldGVycyB7Ci0gICAgICAg
IHNjcmlwdFVSTCwKLSAgICAgICAgbmFtZSwKLSAgICAgICAgbV9pZGVudGlmaWVyRm9ySW5zcGVj
dG9yLAotICAgICAgICB1c2VyQWdlbnQsCi0gICAgICAgIGlzT25saW5lLAotICAgICAgICBjb250
ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsCi0gICAgICAgIHNob3VsZEJ5cGFzc01h
aW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwKLSAgICAgICAgY3Jvc3NPcmlnaW5FbWJlZGRl
clBvbGljeSwKLSAgICAgICAgdGltZU9yaWdpbiwKLSAgICAgICAgcmVmZXJyZXJQb2xpY3ksCi0g
ICAgICAgIHdvcmtlclR5cGUsCi0gICAgICAgIGNyZWRlbnRpYWxzLAotICAgICAgICBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPnNldHRpbmdzVmFsdWVzKCkKLSAgICB9OwotCi0gICAgaWYgKCFt
X3dvcmtlclRocmVhZCkgewotICAgICAgICBtX3dvcmtlclRocmVhZCA9IFNoYXJlZFdvcmtlclRo
cmVhZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIHNjcmlwdEJ1ZmZlciwgKnRoaXMsICp0aGlzLCAqdGhp
cywgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+dG9wT3JpZ2luKCksIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aWRiQ29ubmVjdGlvblBy
b3h5KCksIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c29ja2V0UHJvdmlkZXIoKSwgcnVudGlt
ZUZsYWdzKTsKLSAgICAgICAgbV93b3JrZXJUaHJlYWQtPnN0YXJ0KCk7Ci0gICAgfQotfQotCi12
b2lkIFNoYXJlZFdvcmtlclByb3h5Ojp0ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpCi17Ci0g
ICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9hc2tl
ZFRvVGVybWluYXRlID0gdHJ1ZTsKLSAgICBpZiAobV93b3JrZXJUaHJlYWQpCi0gICAgICAgIG1f
d29ya2VyVGhyZWFkLT5zdG9wKG51bGxwdHIpOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5
Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMm
JiBtZXNzYWdlKQotewotICAgIC8vIEZJWE1FOiBTaGFyZWRXb3JrZXIgZG9lc24ndCBoYXZlIHBv
c3RNZXNzYWdlLCBzbyB0aGlzIG1pZ2h0IG5vdCBiZSBuZWNlc3NhcnkuCi0gICAgcG9zdFRhc2tU
b1dvcmtlckdsb2JhbFNjb3BlKFttZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKV0oYXV0byYgc2Ny
aXB0Q29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIGNvbnRleHQgPSBkb3duY2FzdDxT
aGFyZWRXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0Q29udGV4dCk7Ci0gICAgICAgIGF1dG8gcG9y
dHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhzY3JpcHRDb250ZXh0LCBXVEZNb3ZlKG1l
c3NhZ2UudHJhbnNmZXJyZWRQb3J0cykpOwotICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXZlbnQo
TWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIG1lc3NhZ2UubWVzc2FnZS5yZWxl
YXNlTm9uTnVsbCgpKSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnBv
c3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmKT4mJiB0YXNrKQotewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCi0gICAgICAg
IHJldHVybjsKLSAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFdURk1vdmUo
dGFzaykpOwotfQotCi1ib29sIFNoYXJlZFdvcmtlclByb3h5OjpoYXNQZW5kaW5nQWN0aXZpdHko
KSBjb25zdAotewotICAgIHJldHVybiBtX2hhc1BlbmRpbmdBY3Rpdml0eSAmJiAhbV9hc2tlZFRv
VGVybWluYXRlOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5Ojp3b3JrZXJPYmplY3REZXN0
cm95ZWQoKQotewotICAgIG1fc2hhcmVkV29ya2VyID0gbnVsbHB0cjsKLSAgICBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
IHsKLSAgICAgICAgbV9tYXlCZURlc3Ryb3llZCA9IHRydWU7Ci0gICAgICAgIGlmIChtX3dvcmtl
clRocmVhZCkKLSAgICAgICAgICAgIHRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwo
KTsKLSAgICB9KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6bm90aWZ5TmV0d29ya1N0
YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpCi17Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX3dvcmtlclRocmVhZCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhbaXNPbmxpbmVd
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgIGF1dG8mIGdsb2Jh
bFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpOwotICAgICAgICBn
bG9iYWxTY29wZS5zZXRJc09ubGluZShpc09ubGluZSk7Ci0gICAgICAgIGdsb2JhbFNjb3BlLmRp
c3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShpc09ubGluZSA/IGV2ZW50TmFtZXMoKS5vbmxpbmVF
dmVudCA6IGV2ZW50TmFtZXMoKS5vZmZsaW5lRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBF
dmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwotICAgIH0pOwotfQotCi12b2lkIFNoYXJlZFdvcmtl
clByb3h5OjpzdXNwZW5kRm9yQmFja0ZvcndhcmRDYWNoZSgpCi17Ci0KLX0KLQotdm9pZCBTaGFy
ZWRXb3JrZXJQcm94eTo6cmVzdW1lRm9yQmFja0ZvcndhcmRDYWNoZSgpCi17Ci0KLX0KLQotdm9p
ZCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkwpCi17Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5w
b3N0VGFzayhbdGhpcywgZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlLmlzb2xhdGVkQ29weSgp
LCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCksIGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlcl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0gICAgICAgIGlmICghbV9zaGFy
ZWRXb3JrZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gV2UgZG9uJ3QgYm90
aGVyIGNoZWNraW5nIHRoZSBhc2tlZFRvVGVybWluYXRlKCkgZmxhZyBoZXJlLCBiZWNhdXNlIGV4
Y2VwdGlvbnMgc2hvdWxkICphbHdheXMqIGJlIHJlcG9ydGVkIGV2ZW4gaWYgdGhlIHRocmVhZCBp
cyB0ZXJtaW5hdGVkLgotICAgICAgICAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgZGlmZmVyZW50
IHRoYW4gdGhlIGJlaGF2aW9yIGluIE1lc3NhZ2VXb3JrZXJUYXNrLCBiZWNhdXNlIHRlcm1pbmF0
ZWQgd29ya2VycyBubyBsb25nZXIgZGVsaXZlciBtZXNzYWdlcyAoc2VjdGlvbiA0LjYgb2YgdGhl
IFdlYldvcmtlciBzcGVjKSwgYnV0IHRoZXkgZG8gcmVwb3J0IGV4Y2VwdGlvbnMuCi0gICAgICAg
IEFjdGl2ZURPTU9iamVjdDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCptX3NoYXJlZFdvcmtl
ciwgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFcnJvckV2ZW50OjpjcmVhdGUoZXJyb3JN
ZXNzYWdlLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgeyB9KSk7Ci0gICAg
fSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6Ondvcmtlckdsb2JhbFNjb3BlRGVzdHJv
eWVkKCkKLXsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKLSAgICAgICAgd29ya2VyR2xvYmFsU2NvcGVEZXN0
cm95ZWRJbnRlcm5hbCgpOwotICAgIH0pOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5Ojpw
b3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpCi17Ci0K
LX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6Y29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2Jq
ZWN0KGJvb2wpCi17Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnJlcG9ydFBlbmRpbmdB
Y3Rpdml0eShib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKLXsKLSAgICBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzLCBoYXNQZW5kaW5nQWN0aXZpdHldIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JikgewotICAgICAgICBtX2hhc1BlbmRpbmdBY3Rpdml0eSA9IGhhc1BlbmRp
bmdBY3Rpdml0eTsKLSAgICB9KTsKLX0KLQotUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+
IFNoYXJlZFdvcmtlclByb3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkKLXsKLSAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8
RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIHJldHVybiBkb2N1bWVu
dC5wYWdlKCktPmNhY2hlU3RvcmFnZVByb3ZpZGVyKCkuY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbigpOwotfQotCi1SZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlv
bj4gU2hhcmVkV29ya2VyUHJveHk6OmNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNv
bm5lY3Rpb24oKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byYgZG9j
dW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0g
ICAgaWYgKCFkb2N1bWVudC5wYWdlKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJl
dHVybiBkb2N1bWVudC5wYWdlKCktPmxpYldlYlJUQ1Byb3ZpZGVyKCkuY3JlYXRlUlRDRGF0YUNo
YW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclBy
b3h5Ojpwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNr
KQotewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soV1RGTW92ZSh0YXNr
KSk7Ci19Ci0KLWJvb2wgU2hhcmVkV29ya2VyUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2ss
IGNvbnN0IFN0cmluZyYgbW9kZSkKLXsKLSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RU
YXNrRm9yTW9kZShXVEZNb3ZlKHRhc2spLCBtb2RlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
dm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdE1lc3NhZ2VUb0RlYnVnZ2VyKGNvbnN0IFN0cmlu
ZyYpCi17Ci0KLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5n
RGlzYWJsZWRCeVdlYkluc3BlY3Rvcihib29sKQotewotCi19Ci0KLXZvaWQgU2hhcmVkV29ya2Vy
UHJveHk6Ondvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwoKQotewotICAgIC8vIFRo
aXMgaXMgYWx3YXlzIHRoZSBsYXN0IHRhc2sgdG8gYmUgcGVyZm9ybWVkLCBzbyB0aGUgcHJveHkg
aXMgbm90IG5lZWRlZCBmb3IgY29tbXVuaWNhdGlvbgotICAgIC8vIGluIGVpdGhlciBzaWRlIGFu
eSBtb3JlLiBIb3dldmVyLCB0aGUgV29ya2VyIG9iamVjdCBtYXkgc3RpbGwgZXhpc3QsIGFuZCBp
dCBhc3N1bWVzIHRoYXQgdGhlIHByb3h5IGV4aXN0cywgdG9vLgotICAgIG1fYXNrZWRUb1Rlcm1p
bmF0ZSA9IHRydWU7Ci0gICAgbV93b3JrZXJUaHJlYWQgPSBudWxscHRyOwotCi0gICAgLy8gVGhp
cyBiYWxhbmNlcyB0aGUgb3JpZ2luYWwgcmVmIGluIGNvbnN0cnVjdGlvbi4KLSAgICBpZiAobV9t
YXlCZURlc3Ryb3llZCkKLSAgICAgICAgZGVyZWYoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXggMzExZWJkNjA3OGJjLi5lYTJlMDQ4Yzc2MjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNj
cmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwyMyArMjksMjYgQEAKICNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
U2hhcmVkV29ya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyTWFuYWdlci5oIgorI2luY2x1
ZGUgIldvcmtlckZldGNoUmVzdWx0LmgiCiAjaW5jbHVkZSAiV29ya2VyUnVuTG9vcC5oIgogI2lu
Y2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNo
YXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyKGNvbnN0IFVS
TCYgdXJsLCBTaGFyZWRXb3JrZXImIHdvcmtlciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBv
cnQsIFdvcmtlck9wdGlvbnMmJiBvcHRpb25zKQotICAgIDogbV9pZGVudGlmaWVyKFNoYXJlZFdv
cmtlclNjcmlwdExvYWRlcklkZW50aWZpZXI6OmdlbmVyYXRlKCkpCi0gICAgLCBtX29wdGlvbnMo
V1RGTW92ZShvcHRpb25zKSkKK1NoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyKFVSTCYmIHVybCwgU2hhcmVkV29ya2VyJiB3b3JrZXIsIFdvcmtlck9wdGlv
bnMmJiBvcHRpb25zKQorICAgIDogbV9vcHRpb25zKFdURk1vdmUob3B0aW9ucykpCiAgICAgLCBt
X3dvcmtlcih3b3JrZXIpCi0gICAgLCBtX3BvcnQoV1RGTW92ZShwb3J0KSkKICAgICAsIG1fbG9h
ZGVyKFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlKCkpCi0gICAgLCBtX3BlbmRpbmdBY3Rpdml0
eSh3b3JrZXIubWFrZVBlbmRpbmdBY3Rpdml0eSh3b3JrZXIpKQotICAgICwgbV91cmwodXJsKQor
ICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQogewotICAgIG1fd29ya2VyLT5zZXRJc0xvYWRpbmco
dHJ1ZSk7Ci0gICAgbV9sb2FkZXItPmxvYWRBc3luY2hyb25vdXNseSgqd29ya2VyLnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgUmVzb3VyY2VSZXF1ZXN0KHVybCksIHdvcmtlci53b3JrZXJGZXRj
aE9wdGlvbnMob3B0aW9ucywgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2hhcmVkd29ya2Vy
KSwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQ6OkVuZm9yY2VXb3JrZXJTcmNEaXJl
Y3RpdmUsIFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsLCAqdGhpcywgV29ya2VyUnVuTG9vcDo6ZGVm
YXVsdE1vZGUoKSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoIW1fY29tcGxldGlvbkhhbmRsZXIpOworICAgIG1f
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIG1f
bG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoKm1fd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIFJlc291cmNlUmVxdWVzdChtX3VybCksIG1fd29ya2VyLT53b3JrZXJGZXRjaE9wdGlv
bnMobV9vcHRpb25zLCBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpTaGFyZWR3b3JrZXIpLCBD
b250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6RW5mb3JjZVdvcmtlclNyY0RpcmVjdGl2
ZSwgU2VydmljZVdvcmtlcnNNb2RlOjpBbGwsICp0aGlzLCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0
TW9kZSgpKTsKIH0KIAogdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpCkBAIC01NSwxNiArNTgsMTIgQEAgdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnQK
IAogdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKCkKIHsKLSAg
ICBtX3dvcmtlci0+c2V0SXNMb2FkaW5nKGZhbHNlKTsKKyAgICBpZiAobV9sb2FkZXItPmZhaWxl
ZCgpKQorICAgICAgICByZXR1cm4gbV9jb21wbGV0aW9uSGFuZGxlcih3b3JrZXJGZXRjaEVycm9y
KG1fbG9hZGVyLT5lcnJvcigpKSk7CiAKLSAgICBhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
ID0gbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAobV9sb2FkZXIt
PmZhaWxlZCgpIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7Ci0gICAgICAgIG1fd29ya2Vy
LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKLSAgICAgICAg
U2hhcmVkV29ya2VyTWFuYWdlcjo6c2luZ2xldG9uKCkuc2NyaXB0TG9hZEZhaWxlZCgqdGhpcyk7
IC8vIGRlbGV0ZXMgdGhpcy4KLSAgICB9IGVsc2UgeworICAgIGlmIChhdXRvKiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0ID0gbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZCgqc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgbV9sb2FkZXItPmlkZW50aWZpZXIoKSwgbV9sb2FkZXItPnNjcmlwdCgpLnRv
U3RyaW5nKCkpOwotICAgICAgICBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5zY3Jp
cHRMb2FkZWRTdWNjZXNzZnVsbHkoKnRoaXMsIG1fbG9hZGVyLT5zY3JpcHQoKSwgKm1fd29ya2Vy
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fd29ya2VyLmdldCgpLCBzdGQ6OmV4Y2hhbmdl
KG1fcG9ydCwgeyB9KSk7IC8vIGRlbGV0ZXMgdGhpcy4KLSAgICB9CisgICAgbV9jb21wbGV0aW9u
SGFuZGxlcih7IG1fbG9hZGVyLT5zY3JpcHQoKSwgbV9sb2FkZXItPmNlcnRpZmljYXRlSW5mbygp
LCBtX2xvYWRlci0+Y29udGVudFNlY3VyaXR5UG9saWN5KCksIG1fbG9hZGVyLT5jcm9zc09yaWdp
bkVtYmVkZGVyUG9saWN5KCksIG1fbG9hZGVyLT5yZWZlcnJlclBvbGljeSgpLCB7IH0gfSk7IC8v
IGRlbGV0ZXMgdGhpcy4KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIu
aAppbmRleCBiZjFkNGFlZjNhMDkuLmViMGI3MTQ1YmZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUs
NyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291cmNl
TG9hZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKQEAgLTM4
LDMzICszNywyOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNoYXJlZFdvcmtlcjsK
IGNsYXNzIFdvcmtlclNjcmlwdExvYWRlcjsKLQotY2xhc3MgU2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVyOwotdXNpbmcgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmllciA9IE9iamVjdElk
ZW50aWZpZXI8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPjsKLQotdXNpbmcgVHJhbnNmZXJyZWRN
ZXNzYWdlUG9ydCA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIsIFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllcj47CitzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7
CiAKIGNsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciA6IHByaXZhdGUgV29ya2VyU2NyaXB0
TG9hZGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIoY29uc3QgVVJMJiwgU2hhcmVkV29ya2VyJiwgVHJh
bnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBXb3JrZXJPcHRpb25zJiYpOworICAgIFNoYXJlZFdvcmtl
clNjcmlwdExvYWRlcihVUkwmJiwgU2hhcmVkV29ya2VyJiwgV29ya2VyT3B0aW9ucyYmKTsKKwor
ICAgIHZvaWQgbG9hZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdvcmtlckZldGNoUmVz
dWx0Jik+JiYpOwogCi0gICAgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgY29uc3QgVVJMJiB1
cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIFNoYXJlZFdvcmtlciYgd29ya2VyKCkg
eyByZXR1cm4gbV93b3JrZXIuZ2V0KCk7IH0KLSAgICBjb25zdCBXb3JrZXJPcHRpb25zJiBvcHRp
b25zKCkgeyByZXR1cm4gbV9vcHRpb25zOyB9CisgICAgY29uc3QgV29ya2VyT3B0aW9ucyYgb3B0
aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9uczsgfQogCiBwcml2YXRlOgogICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoKSBmaW5hbDsKIAot
ICAgIGNvbnN0IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVy
OwogICAgIGNvbnN0IFdvcmtlck9wdGlvbnMgbV9vcHRpb25zOwogICAgIGNvbnN0IFJlZjxTaGFy
ZWRXb3JrZXI+IG1fd29ya2VyOwotICAgIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQgbV9wb3J0Owog
ICAgIGNvbnN0IFJlZjxXb3JrZXJTY3JpcHRMb2FkZXI+IG1fbG9hZGVyOwotICAgIGNvbnN0IFJl
ZjxBY3RpdmVET01PYmplY3Q6OlBlbmRpbmdBY3Rpdml0eTxTaGFyZWRXb3JrZXI+PiBtX3BlbmRp
bmdBY3Rpdml0eTsKICAgICBjb25zdCBVUkwgbV91cmw7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYpPiBtX2NvbXBsZXRpb25IYW5kbGVyOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlclRocmVhZC5jcHAKaW5kZXggOWVkNTU4OGZiZDc5Li5lZmUw
NWUyN2MxNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyVGhyZWFkLmNwcApAQCAtMzEsMTQgKzMxLDE3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotU2hhcmVkV29ya2VyVGhyZWFkOjpTaGFyZWRXb3JrZXJUaHJlYWQoY29uc3QgV29y
a2VyUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VDb2Rl
LCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkmIGRl
YnVnZ2VyUHJveHksIFdvcmtlck9iamVjdFByb3h5JiBvYmplY3RQcm94eSwgV29ya2VyVGhyZWFk
U3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgSURC
Q2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlk
ZXIqIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MpCitTaGFy
ZWRXb3JrZXJUaHJlYWQ6OlNoYXJlZFdvcmtlclRocmVhZChTaGFyZWRXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IFNj
cmlwdEJ1ZmZlciYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmIGxvYWRlclByb3h5LCBX
b3JrZXJEZWJ1Z2dlclByb3h5JiBkZWJ1Z2dlclByb3h5LCBXb3JrZXJPYmplY3RQcm94eSYgb2Jq
ZWN0UHJveHksIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0IFNlY3VyaXR5
T3JpZ2luJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBjb25uZWN0
aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlciwgSlNDOjpSdW50aW1lRmxh
Z3MgcnVudGltZUZsYWdzKQogICAgIDogV29ya2VyVGhyZWFkKHBhcmFtZXRlcnMsIHNvdXJjZUNv
ZGUsIGxvYWRlclByb3h5LCBkZWJ1Z2dlclByb3h5LCBvYmplY3RQcm94eSwgc3RhcnRNb2RlLCB0
b3BPcmlnaW4sIGNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIHJ1bnRpbWVGbGFncykK
KyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV9uYW1lKHBhcmFtZXRlcnMu
bmFtZS5pc29sYXRlZENvcHkoKSkKIHsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIl
cCAtIFNoYXJlZFdvcmtlclRocmVhZDo6U2hhcmVkV29ya2VyVGhyZWFkOiIsIHRoaXMpOwogfQog
CiBSZWY8V29ya2VyR2xvYmFsU2NvcGU+IFNoYXJlZFdvcmtlclRocmVhZDo6Y3JlYXRlV29ya2Vy
R2xvYmFsU2NvcGUoY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1ldGVycywgUmVmPFNlY3Vy
aXR5T3JpZ2luPiYmIG9yaWdpbiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbikKIHsK
KyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFNoYXJlZFdvcmtlclRocmVhZDo6
Y3JlYXRlV29ya2VyR2xvYmFsU2NvcGU6IiwgdGhpcyk7CiAgICAgcmV0dXJuIFNoYXJlZFdvcmtl
ckdsb2JhbFNjb3BlOjpjcmVhdGUoc3RkOjpleGNoYW5nZShtX25hbWUsIHsgfSksIHBhcmFtZXRl
cnMsIFdURk1vdmUob3JpZ2luKSwgKnRoaXMsIFdURk1vdmUodG9wT3JpZ2luKSwgaWRiQ29ubmVj
dGlvblByb3h5KCksIHNvY2tldFByb3ZpZGVyKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclRocmVhZC5oCmluZGV4IDJmMDU2ZjlkNTli
Yi4uOWVhMjQ4NDdkMzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJUaHJlYWQuaApAQCAtMjUsMjEgKzI1LDI3IEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSAiU2hhcmVkV29ya2VySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldvcmtl
clRocmVhZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdvcmtlck9iamVjdFBy
b3h5OwogCisvLyBGSVhNRTogTW92ZSB0byB3b3JrZXJzL3NoYXJlZC9jb250ZXh0LgogY2xhc3Mg
U2hhcmVkV29ya2VyVGhyZWFkIDogcHVibGljIFdvcmtlclRocmVhZCB7CiBwdWJsaWM6CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxTaGFyZWRXb3JrZXJUaHJlYWQ+
IGNyZWF0ZShBcmdzJiYuLi4gYXJncykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRXb3Jr
ZXJUaHJlYWQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7IH0KKworICAgIFNoYXJlZFdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsg
fQorCiBwcml2YXRlOgotICAgIFNoYXJlZFdvcmtlclRocmVhZChjb25zdCBXb3JrZXJQYXJhbWV0
ZXJzJiwgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYs
IFdvcmtlckRlYnVnZ2VyUHJveHkmLCBXb3JrZXJPYmplY3RQcm94eSYsIFdvcmtlclRocmVhZFN0
YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJD
b25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciosIEpTQzo6UnVudGltZUZsYWdzKTsKKyAg
ICBTaGFyZWRXb3JrZXJUaHJlYWQoU2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgV29ya2Vy
UGFyYW1ldGVycyYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVy
UHJveHkmLCBXb3JrZXJEZWJ1Z2dlclByb3h5JiwgV29ya2VyT2JqZWN0UHJveHkmLCBXb3JrZXJU
aHJlYWRTdGFydE1vZGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIElEQkNsaWVu
dDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqLCBKU0M6OlJ1bnRpbWVGbGFn
cyk7CiAKICAgICBSZWY8V29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZVdvcmtlckdsb2JhbFNjb3Bl
KGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIFJlZjxTZWN1
cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4pIGZpbmFsOwogICAgIEFTQ0lJTGl0ZXJhbCB0aHJlYWRO
YW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIldlYkNvcmU6IFNoYXJlZFdvcmtlciJfczsgfQog
CisgICAgU2hhcmVkV29ya2VySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgU3RyaW5nIG1f
bmFtZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2Nv
bnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wN2E5MGQ5ODA1MTIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5o
IgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlclRocmVhZFBy
b3h5LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXImIFNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlcj4gc2hhcmVkTWFuYWdlcjsKKyAgICByZXR1cm4gc2hhcmVkTWFu
YWdlcjsKK30KKworU2hhcmVkV29ya2VyVGhyZWFkUHJveHkqIFNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyOjpzaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyKSBjb25zdAoreworICAgIHJldHVybiBtX3dvcmtlck1hcC5nZXQoc2hhcmVkV29y
a2VySWRlbnRpZmllcik7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0
b3BTaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlm
aWVyKQoreworICAgIGF1dG8gd29ya2VyID0gbV93b3JrZXJNYXAudGFrZShzaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlcjo6c3RvcFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0l
IiBQUkl1NjQgIiwgd29ya2VyPSVwIiwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgp
LCB3b3JrZXIuZ2V0KCkpOworICAgIGlmICghd29ya2VyKQorICAgICAgICByZXR1cm47CisKKyAg
ICB3b3JrZXItPnNldEFzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKTsKKworICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgYmUgYWJsZSB0byBkZWFsIHdpdGggdGhlIHRocmVhZCBiZWluZyB1bnJlc3Bv
bnNpdmUgaGVyZS4KKworICAgIGF1dG8mIHRocmVhZCA9IHdvcmtlci0+dGhyZWFkKCk7CisgICAg
dGhyZWFkLnN0b3AoW3dvcmtlciA9IFdURk1vdmUod29ya2VyKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgLy8gU3BpbiB0aGUgcnVubG9vcCBiZWZvcmUgcmVsZWFzaW5nIHRoZSBzaGFyZWQgd29ya2Vy
IHRocmVhZCBwcm94eSwgYXMgdGhlcmUgd291bGQgb3RoZXJ3aXNlIGJlCisgICAgICAgIC8vIGEg
cmFjZSB0b3dhcmRzIGl0cyBkZXN0cnVjdGlvbi4KKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
d29ya2VyID0gV1RGTW92ZSh3b3JrZXIpXSB7IH0pOworICAgIH0pOworfQorCit2b2lkIFNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzdG9wQWxsU2hhcmVkV29ya2VycygpCit7CisgICAgd2hp
bGUgKCFtX3dvcmtlck1hcC5pc0VtcHR5KCkpCisgICAgICAgIHN0b3BTaGFyZWRXb3JrZXIobV93
b3JrZXJNYXAuYmVnaW4oKS0+a2V5KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlcjo6c2V0Q29ubmVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVjdGlvbj4mJiBjb25uZWN0
aW9uKQoreworICAgIEFTU0VSVCghbV9jb25uZWN0aW9uIHx8IG1fY29ubmVjdGlvbi0+aXNDbG9z
ZWQoKSk7CisgICAgbV9jb25uZWN0aW9uID0gV1RGTW92ZShjb25uZWN0aW9uKTsKK30KKworYXV0
byBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Y29ubmVjdGlvbigpIGNvbnN0IC0+IENvbm5l
Y3Rpb24qCit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsKK30KKwordm9pZCBTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6cmVnaXN0ZXJTaGFyZWRXb3JrZXJUaHJlYWQoUmVmPFNo
YXJlZFdvcmtlclRocmVhZFByb3h5PiYmIHByb3h5KQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXI6OnJlZ2lzdGVyU2hhcmVkV29ya2VyVGhyZWFkOiBzaGFyZWRXb3JrZXJJZGVudGlm
aWVyPSUiIFBSSXU2NCwgcHJveHktPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKworICAgIGF1
dG8gcmVzdWx0ID0gbV93b3JrZXJNYXAuYWRkKHByb3h5LT5pZGVudGlmaWVyKCksIHByb3h5LmNv
cHlSZWYoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsK
KworICAgIHByb3h5LT50aHJlYWQoKS5zdGFydChbXShjb25zdCBTdHJpbmcmIC8qZXhjZXB0aW9u
TWVzc2FnZSovKSB7IH0pOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpD
b25uZWN0aW9uOjpwb3N0Q29ubmVjdEV2ZW50KFNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVk
V29ya2VySWRlbnRpZmllciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHRyYW5zZmVycmVkUG9y
dCwgU3RyaW5nJiYgc291cmNlT3JpZ2luKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgYXV0byogcHJveHkgPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9u
KCkuc2hhcmVkV29ya2VyKHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9H
KFNoYXJlZFdvcmtlciwgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uOjpw
b3N0Q29ubmVjdEV2ZW50OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCAiLCBwcm94
eT0lcCIsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSwgcHJveHkpOworICAgIGlm
ICghcHJveHkpCisgICAgICAgIHJldHVybjsKKworICAgIHByb3h5LT50aHJlYWQoKS5ydW5Mb29w
KCkucG9zdFRhc2soW3RyYW5zZmVycmVkUG9ydCA9IFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwg
c291cmNlT3JpZ2luID0gV1RGTW92ZShzb3VyY2VPcmlnaW4pLmlzb2xhdGVkQ29weSgpXSAoYXV0
byYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOworICAgICAgICBkb3duY2FzdDxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4o
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkucG9zdENvbm5lY3RFdmVudChXVEZNb3ZlKHRyYW5zZmVy
cmVkUG9ydCksIFdURk1vdmUoc291cmNlT3JpZ2luKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb246OnRlcm1pbmF0ZVNoYXJlZFdvcmtl
cihTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6dGVybWluYXRlU2hhcmVkV29y
a2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VySWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKKyAgICBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkuc3RvcFNoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDQ3OTM3YzkxZTZiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmgiCisjaW5j
bHVkZSAiU2hhcmVkV29ya2VySWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk7
CisKK2NsYXNzIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXImIHNpbmdsZXRvbigp
OworCisgICAgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkqIHNoYXJlZFdvcmtlcihTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyKSBjb25zdDsKKyAgICB2b2lkIHN0b3BTaGFyZWRXb3JrZXIoU2hhcmVkV29y
a2VySWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wQWxsU2hhcmVkV29y
a2VycygpOworCisgICAgY2xhc3MgQ29ubmVjdGlvbiB7CisgICAgICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+Q29ubmVjdGlvbigpIHsg
fQorICAgICAgICB2aXJ0dWFsIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RFeGNlcHRpb25U
b1dvcmtlck9iamVjdChTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlVVJMKSA9IDA7CisgICAgICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzQ2xvc2VkOyB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZvaWQgc2V0QXNDbG9zZWQo
KSB7IG1faXNDbG9zZWQgPSB0cnVlOyB9CisKKyAgICAgICAgLy8gSVBDIG1lc3NhZ2UgaGFuZGxl
cnMuCisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdENvbm5lY3RFdmVudChTaGFyZWRX
b3JrZXJJZGVudGlmaWVyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFN0cmluZyYmIHNvdXJj
ZU9yaWdpbik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdGVybWluYXRlU2hhcmVkV29y
a2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9v
bCBtX2lzQ2xvc2VkIHsgZmFsc2UgfTsKKyAgICB9OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBDb25uZWN0aW9uKiBjb25uZWN0aW9uKCkgY29uc3Q7CisKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHJlZ2lzdGVyU2hhcmVkV29ya2VyVGhyZWFkKFJlZjxTaGFyZWRXb3JrZXJU
aHJlYWRQcm94eT4mJik7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJv
eWVkPFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyPjsKKworICAgIFNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyKCkgPSBkZWZhdWx0OworCisgICAgc3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+
IG1fY29ubmVjdGlvbjsKKyAgICBIYXNoTWFwPFNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFJlZjxT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eT4+IG1fd29ya2VyTWFwOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29u
dGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmM5ZGY5MDZhNWRlYwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkuY3BwCkBAIC0wLDAgKzEsMTk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCIKKworI2lu
Y2x1ZGUgIkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCisjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgor
I2luY2x1ZGUgIkV2ZW50TG9vcC5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRl
ICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiTGliV2ViUlRD
UHJvdmlkZXIuaCIKKyNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgorI2luY2x1ZGUgIk1lc3Nh
Z2VFdmVudC5oIgorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiUGFnZS5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgorI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKKyNp
bmNsdWRlICJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIgorI2luY2x1ZGUgIlNoYXJlZFdv
cmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkLmgiCisjaW5j
bHVkZSAiV29ya2VyRmV0Y2hSZXN1bHQuaCIKKyNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitzdGF0aWMgSGFzaFNldDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSo+JiBh
bGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8SGFzaFNldDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSo+PiBzZXQ7CisgICAgcmV0dXJuIHNl
dDsKK30KKworc3RhdGljIFdvcmtlclBhcmFtZXRlcnMgZ2VuZXJhdGVXb3JrZXJQYXJhbWV0ZXJz
KGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYgd29ya2VyRmV0
Y2hSZXN1bHQsIFdvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zLCBjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCwgRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIHJldHVybiBXb3JrZXJQYXJhbWV0
ZXJzIHsKKyAgICAgICAgc2NyaXB0VVJMLAorICAgICAgICB3b3JrZXJPcHRpb25zLm5hbWUsCisg
ICAgICAgICJzaGFyZWR3b3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5Ojpj
cmVhdGVJZGVudGlmaWVyKCksCisgICAgICAgIHVzZXJBZ2VudCwKKyAgICAgICAgcGxhdGZvcm1T
dHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmlzT25MaW5lKCksCisgICAgICAgIHdvcmtl
ckZldGNoUmVzdWx0LmNvbnRlbnRTZWN1cml0eVBvbGljeSwKKyAgICAgICAgZmFsc2UsCisgICAg
ICAgIHdvcmtlckZldGNoUmVzdWx0LmNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ksCisgICAgICAg
IE1vbm90b25pY1RpbWU6Om5vdygpLAorICAgICAgICB7IH0sCisgICAgICAgIHdvcmtlck9wdGlv
bnMudHlwZSwKKyAgICAgICAgd29ya2VyT3B0aW9ucy5jcmVkZW50aWFscywKKyAgICAgICAgZG9j
dW1lbnQuc2V0dGluZ3NWYWx1ZXMoKQorICAgIH07Cit9CisKK1NoYXJlZFdvcmtlclRocmVhZFBy
b3h5OjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShVbmlxdWVSZWY8UGFnZT4mJiBwYWdlLCBTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IENsaWVudE9y
aWdpbiYgY2xpZW50T3JpZ2luLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgV29ya2VyRmV0Y2hSZXN1
bHQmJiB3b3JrZXJGZXRjaFJlc3VsdCwgV29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50LCBDYWNoZVN0b3JhZ2VQcm92aWRlciYgY2FjaGVTdG9yYWdl
UHJvdmlkZXIpCisgICAgOiBtX3BhZ2UoV1RGTW92ZShwYWdlKSkKKyAgICAsIG1fZG9jdW1lbnQo
Km1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKKyAgICAsIG1fd29ya2VyVGhyZWFkKFNo
YXJlZFdvcmtlclRocmVhZDo6Y3JlYXRlKHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGdlbmVyYXRl
V29ya2VyUGFyYW1ldGVycyhzY3JpcHRVUkwsIHdvcmtlckZldGNoUmVzdWx0LCBXVEZNb3ZlKHdv
cmtlck9wdGlvbnMpLCB1c2VyQWdlbnQsIG1fZG9jdW1lbnQpLCBXVEZNb3ZlKHdvcmtlckZldGNo
UmVzdWx0LnNjcmlwdCksICp0aGlzLCAqdGhpcywgKnRoaXMsIFdvcmtlclRocmVhZFN0YXJ0TW9k
ZTo6Tm9ybWFsLCBjbGllbnRPcmlnaW4udG9wT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCksIG1fZG9j
dW1lbnQtPmlkYkNvbm5lY3Rpb25Qcm94eSgpLCBtX2RvY3VtZW50LT5zb2NrZXRQcm92aWRlcigp
LCBKU0M6OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpKSkKKyAgICAsIG1fY2FjaGVT
dG9yYWdlUHJvdmlkZXIoY2FjaGVTdG9yYWdlUHJvdmlkZXIpCit7CisgICAgQVNTRVJUKCFhbGxT
aGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkuY29udGFpbnModGhpcykpOworICAgIGFsbFNoYXJl
ZFdvcmtlclRocmVhZFByb3hpZXMoKS5hZGQodGhpcyk7CisKKyAgICBzdGF0aWMgYm9vbCBhZGRl
ZExpc3RlbmVyOworICAgIGlmICghYWRkZWRMaXN0ZW5lcikgeworICAgICAgICBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+YWRkT25saW5lU3RhdGVDaGFuZ2VMaXN0ZW5l
cigmbmV0d29ya1N0YXRlQ2hhbmdlZCk7CisgICAgICAgIGFkZGVkTGlzdGVuZXIgPSB0cnVlOwor
ICAgIH0KK30KKworU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6On5TaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eSgpCit7CisgICAgQVNTRVJUKGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKS5jb250
YWlucyh0aGlzKSk7CisgICAgYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGllcygpLnJlbW92ZSh0
aGlzKTsKK30KKworU2hhcmVkV29ya2VySWRlbnRpZmllciBTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eTo6aWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd29ya2VyVGhyZWFkLT5pZGVu
dGlmaWVyKCk7Cit9CisKK1JlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBTaGFyZWRXb3Jr
ZXJUaHJlYWRQcm94eTo6Y3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAoIW1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbikK
KyAgICAgICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uID0gbV9jYWNoZVN0b3JhZ2VQcm92aWRl
ci5jcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCk7CisgICAgcmV0dXJuIG1fY2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjsKK30KKworUmVmUHRyPFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNv
bm5lY3Rpb24+IFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpjcmVhdGVSVENEYXRhQ2hhbm5lbFJl
bW90ZUhhbmRsZXJDb25uZWN0aW9uKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIHJldHVybiBtX3BhZ2UtPmxpYldlYlJUQ1Byb3ZpZGVyKCkuY3JlYXRlUlRDRGF0YUNoYW5u
ZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpOworfQorCit2b2lkIFNoYXJlZFdvcmtlclRocmVh
ZFByb3h5Ojpwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0
YXNrKQoreworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Rhc2sgPSBXVEZNb3ZlKHRhc2spLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHRhc2sucGVy
Zm9ybVRhc2socHJvdGVjdGVkVGhpcy0+bV9kb2N1bWVudC5nZXQoKSk7CisgICAgfSk7Cit9CisK
K2Jvb2wgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2ssIGNv
bnN0IFN0cmluZyYgbW9kZSkKK3sKKyAgICBpZiAobV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVk
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgp
LnBvc3RUYXNrRm9yTW9kZShXVEZNb3ZlKHRhc2spLCBtb2RlKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwordm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdE1lc3NhZ2VUb0RlYnVnZ2Vy
KGNvbnN0IFN0cmluZyYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4KK30KKwordm9pZCBT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYklu
c3BlY3Rvcihib29sKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCit9CisKK3ZvaWQgU2hh
cmVkV29ya2VyVGhyZWFkUHJveHk6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoYm9vbCBpc09uTGluZSkK
K3sKKyAgICBmb3IgKGF1dG8qIHByb3h5IDogYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGllcygp
KQorICAgICAgICBwcm94eS0+bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGlzT25MaW5lKTsKK30K
Kwordm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdl
KGJvb2wgaXNPbmxpbmUpCit7CisgICAgaWYgKG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZShbaXNPbmxpbmVdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7
CisgICAgICAgIGF1dG8mIGdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KGNvbnRleHQpOworICAgICAgICBnbG9iYWxTY29wZS5zZXRJc09ubGluZShpc09ubGluZSk7Cisg
ICAgICAgIGdsb2JhbFNjb3BlLmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01N
YW5pcHVsYXRpb24sIFtnbG9iYWxTY29wZSA9IFJlZiB7IGdsb2JhbFNjb3BlIH0sIGlzT25saW5l
XSB7CisgICAgICAgICAgICBnbG9iYWxTY29wZS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRl
KGlzT25saW5lID8gZXZlbnROYW1lcygpLm9ubGluZUV2ZW50IDogZXZlbnROYW1lcygpLm9mZmxp
bmVFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7
CisgICAgICAgIH0pOworICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOworfQor
CisvLyBGSVhNRTogVHJ5IGFuZCBzaGFyZSBjb2RlIHdpdGggU2VydmljZVdvcmtlclRocmVhZFBy
b3h5LmNwcC4KK3ZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnNldHVwUGFnZUZvclNoYXJl
ZFdvcmtlcihQYWdlJiBwYWdlLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgQ2xpZW50T3Jp
Z2luJiBjbGllbnRPcmlnaW4sIGNvbnN0IFdvcmtlckZldGNoUmVzdWx0JiB3b3JrZXJGZXRjaFJl
c3VsdCkKK3sKKyAgICBhdXRvJiBtYWluRnJhbWUgPSBwYWdlLm1haW5GcmFtZSgpOworICAgIG1h
aW5GcmFtZS5sb2FkZXIoKS5pbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudCh7IH0pOworICAgIGF1
dG8gZG9jdW1lbnQgPSBEb2N1bWVudDo6Y3JlYXRlTm9uUmVuZGVyZWRQbGFjZWhvbGRlcihtYWlu
RnJhbWUsIHNjcmlwdFVSTCk7CisgICAgZG9jdW1lbnQtPmNyZWF0ZURPTVdpbmRvdygpOworCisg
ICAgZG9jdW1lbnQtPnN0b3JhZ2VCbG9ja2luZ1N0YXRlRGlkQ2hhbmdlKCk7CisKKyAgICBhdXRv
IG9yaWdpbiA9IGNsaWVudE9yaWdpbi50b3BPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKTsKKyAgICBv
cmlnaW4tPnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShwYWdlLnNldHRpbmdzKCkuc3RvcmFnZUJs
b2NraW5nUG9saWN5KCkpOworCisgICAgYXV0byBvcmlnaW5Bc1VSTCA9IG9yaWdpbi0+dG9VUkwo
KTsKKyAgICBkb2N1bWVudC0+c2V0U2l0ZUZvckNvb2tpZXMob3JpZ2luQXNVUkwpOworICAgIGRv
Y3VtZW50LT5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhvcmlnaW5Bc1VSTCk7CisgICAgZG9jdW1l
bnQtPnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKG9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0
aXRpb24oKSk7CisKKyAgICBpZiAoYXV0byBwb2xpY3kgPSBwYXJzZVJlZmVycmVyUG9saWN5KHdv
cmtlckZldGNoUmVzdWx0LnJlZmVycmVyUG9saWN5LCBSZWZlcnJlclBvbGljeVNvdXJjZTo6SFRU
UEhlYWRlcikpCisgICAgICAgIGRvY3VtZW50LT5zZXRSZWZlcnJlclBvbGljeSgqcG9saWN5KTsK
KworICAgIG1haW5GcmFtZS5zZXREb2N1bWVudChXVEZNb3ZlKGRvY3VtZW50KSk7Cit9CisKK3Zv
aWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIGNhbGxPbk1haW5UaHJlYWQoW3No
YXJlZFdvcmtlcklkZW50aWZpZXIgPSBtX3dvcmtlclRocmVhZC0+aWRlbnRpZmllcigpLCBlcnJv
ck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCksIGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlciwgc291cmNlVVJMID0gc291cmNlVVJMLmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAg
IGlmIChhdXRvKiBjb25uZWN0aW9uID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmds
ZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPnBvc3RFeGNlcHRp
b25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMKTsKKyAgICB9KTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2Nv
bnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaApzaW1pbGFyaXR5IGluZGV4IDU0JQpyZW5h
bWUgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm94eS5o
CnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdv
cmtlclRocmVhZFByb3h5LmgKaW5kZXggZGI3Yjg1MDlkZjVhLi5mN2IyOTI0ZGJlMzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3h5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJU
aHJlYWRQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI1LDggKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJT
aGFyZWRXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV29ya2VyRGVidWdnZXJQcm94eS5o
IgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJM
b2FkZXJQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlck9iamVjdFByb3h5LmgiCiAjaW5jbHVkZSAi
V29ya2VyT3B0aW9ucy5oIgpAQCAtMzQsMjkgKzM0LDI3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgQ2FjaGVTdG9yYWdlUHJvdmlkZXI7CitjbGFzcyBQYWdlOwogY2xhc3MgU2hh
cmVkV29ya2VyOwogY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkOwogCi1jbGFzcyBTaGFyZWRXb3Jr
ZXJQcm94eSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRXb3JrZXJQcm94eT4s
IHB1YmxpYyBXb3JrZXJHbG9iYWxTY29wZVByb3h5LCBwdWJsaWMgV29ya2VyT2JqZWN0UHJveHks
IHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94eSwgcHVibGljIFdvcmtlckRlYnVnZ2VyUHJveHkgewor
c3RydWN0IENsaWVudE9yaWdpbjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKKworY2xhc3Mg
U2hhcmVkV29ya2VyVGhyZWFkUHJveHkgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hh
cmVkV29ya2VyVGhyZWFkUHJveHk+LCBwdWJsaWMgV29ya2VyTG9hZGVyUHJveHksIHB1YmxpYyBX
b3JrZXJEZWJ1Z2dlclByb3h5LCBwdWJsaWMgV29ya2VyT2JqZWN0UHJveHkgewogcHVibGljOgot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBTaGFyZWRXb3JrZXJQcm94eSYg
Y3JlYXRlKEFyZ3MmJi4uLiBhcmdzKSB7IHJldHVybiAqbmV3IFNoYXJlZFdvcmtlclByb3h5KHN0
ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
dm9pZCBzZXR1cFBhZ2VGb3JTaGFyZWRXb3JrZXIoUGFnZSYsIGNvbnN0IFVSTCYsIGNvbnN0IENs
aWVudE9yaWdpbiYsIGNvbnN0IFdvcmtlckZldGNoUmVzdWx0Jik7CiAKLSAgICBTaGFyZWRXb3Jr
ZXJUaHJlYWQqIHRocmVhZCgpIHsgcmV0dXJuIG1fd29ya2VyVGhyZWFkLmdldCgpOyB9CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eT4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZFdvcmtlclRocmVhZFByb3h5KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOyB9CisgICAg
flNoYXJlZFdvcmtlclRocmVhZFByb3h5KCk7CisKKyAgICBTaGFyZWRXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIoKSBjb25zdDsKKyAgICBTaGFyZWRXb3JrZXJUaHJlYWQmIHRocmVhZCgpIHsg
cmV0dXJuIG1fd29ya2VyVGhyZWFkLmdldCgpOyB9CisKKyAgICBib29sIGlzVGVybWluYXRpbmdP
clRlcm1pbmF0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQ7
IH0KKyAgICB2b2lkIHNldEFzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKSB7IG1faXNUZXJtaW5h
dGluZ09yVGVybWluYXRlZCA9IHRydWU7IH0KIAotICAgIHZvaWQgc3RhcnRXb3JrZXJHbG9iYWxT
Y29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VD
b2RlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBib29sIHNo
b3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgQ3Jvc3NPcmln
aW5FbWJlZGRlclBvbGljeSYsIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUmVmZXJyZXJQb2xp
Y3ksIFdvcmtlclR5cGUsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzLCBKU0M6OlJ1bnRpbWVGbGFn
cykgZmluYWw7Ci0gICAgdm9pZCB0ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpIGZpbmFsOwot
ICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzJiYpIGZpbmFsOwotICAgIHZvaWQgcG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1
bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiYmKSBmaW5hbDsKLSAgICBib29s
IGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgd29ya2VyT2JqZWN0
RGVzdHJveWVkKCkgZmluYWw7Ci0gICAgdm9pZCBub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9v
bCBpc09ubGluZSkgZmluYWw7Ci0gICAgdm9pZCBzdXNwZW5kRm9yQmFja0ZvcndhcmRDYWNoZSgp
IGZpbmFsOwotICAgIHZvaWQgcmVzdW1lRm9yQmFja0ZvcndhcmRDYWNoZSgpIGZpbmFsOwotICAg
IHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwpIGZpbmFsOwotICAgIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWQoKSBmaW5h
bDsKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVdpdGhNZXNzYWdl
UG9ydHMmJikgZmluYWw7Ci0gICAgdm9pZCBjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3Qo
Ym9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpIGZpbmFsOwotICAgIHZvaWQgcmVwb3J0UGVuZGluZ0Fj
dGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KSBmaW5hbDsKICAgICBSZWZQdHI8Q2FjaGVT
dG9yYWdlQ29ubmVjdGlvbj4gY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpIGZpbmFsOwog
ICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uPiBjcmVhdGVS
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCkgZmluYWw7CiAgICAgdm9pZCBw
b3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJikgZmluYWw7CkBA
IC02NCwxOCArNjIsMjUgQEAgcHVibGljOgogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb0RlYnVnZ2Vy
KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgc2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJs
ZWRCeVdlYkluc3BlY3Rvcihib29sKSBmaW5hbDsKIAorICAgIC8vIFdvcmtlck9iamVjdFByb3h5
CisgICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCkgZmluYWw7CisgICAgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgp
IGZpbmFsIHsgfQorICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyYmKSBmaW5hbCB7IH0KKyAgICB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdv
cmtlck9iamVjdChib29sKSBmaW5hbCB7IH0KKyAgICB2b2lkIHJlcG9ydFBlbmRpbmdBY3Rpdml0
eShib29sKSBmaW5hbCB7IH0KKwogcHJpdmF0ZToKLSAgICBTaGFyZWRXb3JrZXJQcm94eShTaGFy
ZWRXb3JrZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShV
bmlxdWVSZWY8UGFnZT4mJiwgU2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgQ2xpZW50T3Jp
Z2luJiwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIFdvcmtlckZldGNoUmVzdWx0JiYsIFdvcmtlck9w
dGlvbnMmJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIENhY2hlU3RvcmFnZVByb3ZpZGVyJik7
CiAKLSAgICB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwoKTsKKyAgICBz
dGF0aWMgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKGJvb2wgaXNPbkxpbmUpOworICAgIHZvaWQg
bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpOwogCi0gICAgV2Vha1B0cjxT
aGFyZWRXb3JrZXI+IG1fc2hhcmVkV29ya2VyOwotICAgIFJlZlB0cjxTaGFyZWRXb3JrZXJUaHJl
YWQ+IG1fd29ya2VyVGhyZWFkOwotICAgIGNvbnN0IFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0gICAgY29uc3QgU3RyaW5nIG1faWRlbnRp
ZmllckZvckluc3BlY3RvcjsKLSAgICBib29sIG1fYXNrZWRUb1Rlcm1pbmF0ZSB7IGZhbHNlIH07
Ci0gICAgYm9vbCBtX2hhc1BlbmRpbmdBY3Rpdml0eSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX21h
eUJlRGVzdHJveWVkIHsgZmFsc2UgfTsKKyAgICBVbmlxdWVSZWY8UGFnZT4gbV9wYWdlOworICAg
IFJlZjxEb2N1bWVudD4gbV9kb2N1bWVudDsKKyAgICBSZWY8U2hhcmVkV29ya2VyVGhyZWFkPiBt
X3dvcmtlclRocmVhZDsKKyAgICBDYWNoZVN0b3JhZ2VQcm92aWRlciYgbV9jYWNoZVN0b3JhZ2VQ
cm92aWRlcjsKKyAgICBSZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gbV9jYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOworICAgIGJvb2wgbV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkIHsgZmFs
c2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4
IDc1NmRhODhiNDVmNy4uM2Q2NTEyNDRjZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAgLTIwMiw2
ICsyMDIsMTAgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIE5ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uCiAgICAgTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24KIAorICAgIE5l
dHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJDb25uZWN0aW9uCisgICAg
TmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b24KKyAgICBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbgorCiAgICAgTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlTWFuYWdlclNldAogCiAgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbgpAQCAtMzA1LDYgKzMwOSw4IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5f
RklMRVMKIAogICAgIFdlYlByb2Nlc3MvU3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVN
ZWRpYVNvdXJjZU1hbmFnZXIKIAorICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24KKyAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbgogICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Ns
aWVudENvbm5lY3Rpb24KICAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1p
bnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0CmluZGV4IDRjNjYyMjBjZjEyMi4uNzIyOWMxYjk4NzA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC05MSw2ICs5MSw4IEBAICQo
UFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRv
d25sb2FkVGFzay5tZXNzYWdlcy5pCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikv
TmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtl
ci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3Jr
UHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbgpAQCAtMjE3
LDYgKzIxOSw4IEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVj
b2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBS
T0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLm1lc3Nh
Z2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1
dGhuUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IGUzYjU1ODQwYWUxZS4uYTg2MzI4MTQ3
YjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKQEAgLTYwNyw2ICs2MDcsMTggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9XZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdC9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVz
c2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVz
c2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25N
ZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTb2NrZXRDaGFu
bmVsTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9XZWJTb2NrZXRDaGFubmVsTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTb2NrZXRDaGFubmVsTWVzc2FnZXNSZXBsaWVz
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA3YWQ0OWUzNzM1ZjQuLjM1MWZmYWUw
YTU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBi
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTMzLDYgKzEzMyw4IEBAIE1F
U1NBR0VfUkVDRUlWRVJTID0gXAogCU5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckRvd25sb2FkVGFzayBcCiAJTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrIFwKIAlOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBcCisJTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2Vy
L1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24gXAorCU5ldHdvcmtQcm9jZXNzL1NoYXJl
ZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIFwKIAlOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtIFwKIAlOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2VzcyBcCiAJTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyIFwKQEAgLTIy
NSw2ICsyMjcsOCBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3Mv
U3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIgXAorCVdl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24g
XAorCVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIFwK
IAlXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gXAogCVdl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvV2Vi
UHJvY2VzcyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGQ4NWVkODVkNmY5Ni4u
YzdiMTdmZDcwNzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNjYsNiArNjYs
MTEgQEAKICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1
ZGUgIldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29y
a2VyU2VydmVyLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgor
I2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVFRQQ29v
a2llQWNjZXB0UG9saWN5Lmg+CkBAIC0xMzIsNiArMTM3LDcgQEAgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtQcm9jZXNz
JiBuZXQKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgZXN0YWJsaXNoU1dTZXJ2ZXJD
b25uZWN0aW9uKCk7CiAjZW5kaWYKKyAgICBlc3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uKCk7CiB9CiAKIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp+TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQpAQCAtMTY2LDYgKzE3Miw3IEBAIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKICAgICB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7CiAjZW5k
aWYKKyAgICB1bnJlZ2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOwogfQogCiB2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYXNVcGxvYWRTdGF0ZUNoYW5nZWQoYm9vbCBo
YXNVcGxvYWQpCkBAIC0yNzUsNiArMjgyLDE3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvCiAg
ICAgfQogI2VuZGlmCiAKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0g
TWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSkgeworICAgICAgICBpZiAobV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uKQorICAgICAg
ICAgICAgbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBpZiAo
bV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbikKKyAgICAgICAgICAgIG1fc2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1P
VEVfVUkpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKQogICAg
ICAgICByZXR1cm4gcGF5bWVudENvb3JkaW5hdG9yKCkuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2Rlcik7CkBAIC0zOTgsOSArNDE2LDggQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBu
dWxscHRyOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAjZW5kaWYKKyAg
ICBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKIAogICAgIC8vIFBy
b3RlY3Qgb3Vyc2VsZiBhcyB3ZSBtaWdodCBiZSBvdGhlcndpc2UgYmUgZGVsZXRlZCBkdXJpbmcg
dGhpcyBmdW5jdGlvbi4KICAgICBSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IHBy
b3RlY3RvcigqdGhpcyk7CkBAIC00NDEsNiArNDU4LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7CiAj
ZW5kaWYKKyAgICB1bnJlZ2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOwogCiAjaWYgRU5B
QkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAgbV9wYXltZW50Q29vcmRpbmF0b3IgPSBudWxs
cHRyOwpAQCAtMTE4Niw2ICsxMjA0LDYxIEBAIHNpemVfdCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6ZmluZE5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoV2ViQ29yZTo6UmVzb3VyCiAgICAg
ICAgIHJldHVybiBpdGVtLnJlc291cmNlSUQgPT0gcmVzb3VyY2VJRDsKICAgICB9KTsKIH0KKwor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2hhcmVkV29ya2Vy
Q29udGV4dENvbm5lY3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2hh
cmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb246Iik7Cisg
ICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7CisgICAgaWYgKGF1dG8qIHN3U2Vy
dmVyID0gc2Vzc2lvbiA/IHNlc3Npb24tPnNoYXJlZFdvcmtlclNlcnZlcigpIDogbnVsbHB0cikK
KyAgICAgICAgbV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4oKnRoaXMsIFdURk1vdmUocmVn
aXN0cmFibGVEb21haW4pLCAqc3dTZXJ2ZXIpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9
CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb24oKQoreworICAgIGlmIChtX3NoYXJlZFdvcmtlckNvbm5lY3Rp
b24pCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lv
bigpOworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgQ09OTkVDVElP
Tl9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uOiIpOworCisgICAgYXV0byYgc2VydmVyID0gc2Vzc2lvbi0+ZW5zdXJlU2hhcmVk
V29ya2VyU2VydmVyKCk7CisgICAgYXV0byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uPihtX25ldHdvcmtQcm9jZXNzLCBzZXJ2ZXIsIG1fY29u
bmVjdGlvbi5nZXQoKSwgbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7CisKKyAgICBtX3NoYXJlZFdv
cmtlckNvbm5lY3Rpb24gPSAqY29ubmVjdGlvbjsKKyAgICBzZXJ2ZXIuYWRkQ29ubmVjdGlvbihX
VEZNb3ZlKGNvbm5lY3Rpb24pKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Y2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpCit7CisgICAgQ09OTkVD
VElPTl9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJjbG9zZVNoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uOiIpOworICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBudWxs
cHRyOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVy
U2hhcmVkV29ya2VyQ29ubmVjdGlvbigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhT
aGFyZWRXb3JrZXIsICJ1bnJlZ2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbjoiKTsKKyAgICBp
ZiAobV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uKQorICAgICAgICBtX3NoYXJlZFdvcmtlckNvbm5l
Y3Rpb24tPnNlcnZlcigpLnJlbW92ZUNvbm5lY3Rpb24obV9zaGFyZWRXb3JrZXJDb25uZWN0aW9u
LT53ZWJQcm9jZXNzSWRlbnRpZmllcigpKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6c2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25n
ZXJOZWVkZWQoKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAi
c2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQ6Iik7
CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6U2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ob0xvbmdlck5lZWRlZCB7IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CisKKyAgICBt
X3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKK30KKworV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbiogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNo
YXJlZFdvcmtlckNvbm5lY3Rpb24oKQoreworICAgIGlmICghbV9zaGFyZWRXb3JrZXJDb25uZWN0
aW9uKQorICAgICAgICBlc3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCk7Cisg
ICAgcmV0dXJuIG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbi5nZXQoKTsKK30KICAgICAKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojp1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCkKQEAgLTEyMjMsMTAgKzEyOTYsMTAgQEAgdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xvc2VTV0NvbnRleHRDb25uZWN0aW9uKCkK
ICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwogfQogCi12b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJO
ZWVkZWQoKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2VydmljZVdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCgpCiB7Ci0gICAgQ09OTkVD
VElPTl9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAic2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bk5vTG9uZ2VyTmVlZGVkOiBXZWJQcm9jZXNzIG5vIGxvbmdlciB1c2VmdWwgZm9yIHJ1bm5pbmcg
c2VydmljZSB3b3JrZXJzIik7Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6V29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCB7IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwg
MCk7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAic2VydmljZVdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZDogV2ViUHJvY2VzcyBu
byBsb25nZXIgdXNlZnVsIGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycyIpOworICAgIG1fbmV0
d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OlNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2Vy
TmVlZGVkIHsgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKIAogICAgIG1fc3dDb250ZXh0
Q29ubmVjdGlvbiA9IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggM2Ex
ZTE0MDQzMzhmLi5kMGFhNGVmNzQ1MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTky
LDYgKzkyLDggQEAgY2xhc3MgTmV0d29ya1NvY2tldFN0cmVhbTsKIGNsYXNzIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CiBjbGFzcyBXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb247CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsK
IAogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiBzdHJ1Y3QgRGF0YUtleTsKQEAgLTE4MSwxMCAr
MTgzLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2
aXR5KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5
KT4mJik7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgdm9pZCBzZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKTsKKyAgICB2b2lkIHNlcnZpY2VXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKTsKICAgICBXZWJTV1NlcnZl
ckNvbm5lY3Rpb24qIHN3Q29ubmVjdGlvbigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrPiBjcmVhdGVGZXRjaFRhc2soTmV0d29ya1Jlc291cmNlTG9hZGVyJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKKyAgICB2b2lkIHNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7CisKKyAg
ICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKiBzaGFyZWRXb3JrZXJDb25uZWN0aW9u
KCk7CiAKICAgICBOZXR3b3JrU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KCkgeyByZXR1
cm4gbV9zY2hlbWVSZWdpc3RyeS5nZXQoKTsgfQogCkBAIC0yNTMsNiArMjU4LDkgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGNyZWF0ZVNvY2tldENoYW5uZWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRp
ZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
Jik7CiAgICAgdm9pZCB1cGRhdGVRdW90YUJhc2VkT25TcGFjZVVzYWdlRm9yVGVzdGluZyhjb25z
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKIAorICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbigpOworICAgIHZvaWQgdW5yZWdpc3RlclNoYXJlZFdvcmtlckNv
bm5lY3Rpb24oKTsKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFi
bGlzaFNXU2VydmVyQ29ubmVjdGlvbigpOwogICAgIHZvaWQgZXN0YWJsaXNoU1dDb250ZXh0Q29u
bmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CkBAIC0yNjAsNiArMjY4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVucmVnaXN0ZXJT
V0Nvbm5lY3Rpb24oKTsKICNlbmRpZgogCisgICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJD
b250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgY2xv
c2VTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpOworCiAgICAgdm9pZCBjcmVhdGVSVENQ
cm92aWRlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2lmIEVOQUJMRShXRUJfUlRD
KQogICAgIHZvaWQgY29ubmVjdFRvUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UoV2ViQ29yZTo6
UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJ
ZGVudGlmaWVyIGhhbmRsZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxi
b29sPik+JiYpOwpAQCAtNDA0LDYgKzQxNSw4IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxXZWJT
V1NlcnZlckNvbm5lY3Rpb24+IG1fc3dDb25uZWN0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+IG1fc3dDb250ZXh0Q29ubmVjdGlvbjsKICNl
bmRpZgorICAgIFdlYWtQdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4gbV9zaGFy
ZWRXb3JrZXJDb25uZWN0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9u
OwogCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgYm9vbCBtX2lzUmVnaXN0ZXJlZFRvUlRDRGF0
YUNoYW5uZWxQcm94eSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgppbmRleCAyNDI4MzUwNTBiMjQuLmI5N2NhMzQ3OWI0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC04OCw2ICs4OCw5IEBAIG1lc3Nh
Z2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAg
ICBDbG9zZVNXQ29udGV4dENvbm5lY3Rpb24oKQogI2VuZGlmCiAKKyAgICBFc3RhYmxpc2hTaGFy
ZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIg
d2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikgLT4gKCkg
QXN5bmMKKyAgICBDbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKCkKKwogICAgIENy
ZWF0ZVJUQ1Byb3ZpZGVyKCkgLT4gKCkgQXN5bmMKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICBD
b25uZWN0VG9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZShzdHJ1Y3QgV2ViQ29yZTo6UlRDRGF0
YUNoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgc3RydWN0IFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVs
SWRlbnRpZmllciBoYW5kbGVyKSAtPiAoc3RkOjpvcHRpb25hbDxib29sPiByZXN1bHQpIEFzeW5j
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCmlu
ZGV4IDlhMzJlYTE4NjU0Yy4uZDc2MTYyODUwY2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1
ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5Lmgi
CiAjaW5jbHVkZSAiV2ViU1dPcmlnaW5TdG9yZS5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtl
clNlcnZlci5oIgogI2luY2x1ZGUgIldlYlNvY2tldFRhc2suaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0Nvb2tpZUphci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CkBAIC02
MjksNyArNjMwLDcgQEAgU1dTZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVTV1NlcnZlcigp
CiAgICAgICAgICAgICBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6c3RhcnQodGhpcywg
V1RGTW92ZShqb2JEYXRhKSwgc2hvdWxkUmVmcmVzaENhY2hlLCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIH0sIFt0aGlzXShhdXRvJiByZWdp
c3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRp
Zmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBhdXRvJiYgY29tcGxldGlvbkhhbmRs
ZXIpIHsKICAgICAgICAgICAgIEFTU0VSVCghcmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgpKTsK
LSAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RXN0YWJs
aXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcmVnaXN0cmFibGVE
b21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgbV9zZXNzaW9uSUQgfSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIDApOworICAgICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzIHsgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdl
SWRlbnRpZmllciwgbV9zZXNzaW9uSUQgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIDAp
OwogICAgICAgICB9LCBXVEZNb3ZlKGFwcEJvdW5kRG9tYWluc0NhbGxiYWNrKSk7CiAgICAgfQog
ICAgIHJldHVybiAqbV9zd1NlcnZlcjsKQEAgLTY1Myw2ICs2NTQsMTMgQEAgYm9vbCBOZXR3b3Jr
U2Vzc2lvbjo6aGFzU2VydmljZVdvcmtlckRhdGFiYXNlUGF0aCgpIGNvbnN0CiAKICNlbmRpZiAv
LyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKK1dlYlNoYXJlZFdvcmtlclNlcnZlciYgTmV0d29y
a1Nlc3Npb246OmVuc3VyZVNoYXJlZFdvcmtlclNlcnZlcigpCit7CisgICAgaWYgKCFtX3NoYXJl
ZFdvcmtlclNlcnZlcikKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJTZXJ2ZXIgPSBtYWtlVW5pcXVl
PFdlYlNoYXJlZFdvcmtlclNlcnZlcj4oKnRoaXMpOworICAgIHJldHVybiAqbV9zaGFyZWRXb3Jr
ZXJTZXJ2ZXI7Cit9CisKIFdlYklEQlNlcnZlciYgTmV0d29ya1Nlc3Npb246OmVuc3VyZVdlYklE
QlNlcnZlcigpCiB7CiAgICAgaWYgKCFtX3dlYklEQlNlcnZlcikgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDE5MzA3Y2Y0MGJlMy4uM2Y5
ZDZjOTU1MGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5oCkBAIC03OSw2ICs3OSw3IEBAIGNsYXNzIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s7CiBj
bGFzcyBXZWJJREJTZXJ2ZXI7CiBjbGFzcyBXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnM7CiBjbGFz
cyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXI7CiBjbGFzcyBXZWJTb2NrZXRUYXNrOwogY2xhc3MgV2ViU1dPcmlnaW5TdG9yZTsKIGNs
YXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKQEAgLTIxMCw2ICsyMTEsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihib29sIHByb2Nlc3NUZXJtaW5hdGlvbkRl
bGF5RW5hYmxlZCwgU3RyaW5nJiYgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSwg
Y29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CiAjZW5kaWYKIAorICAgIFdlYlNoYXJl
ZFdvcmtlclNlcnZlciogc2hhcmVkV29ya2VyU2VydmVyKCkgeyByZXR1cm4gbV9zaGFyZWRXb3Jr
ZXJTZXJ2ZXIuZ2V0KCk7IH0KKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIGVuc3VyZVNoYXJl
ZFdvcmtlclNlcnZlcigpOworCiAgICAgV2ViSURCU2VydmVyKiB3ZWJJREJTZXJ2ZXIoKSB7IHJl
dHVybiBtX3dlYklEQlNlcnZlci5nZXQoKTsgfQogICAgIFdlYklEQlNlcnZlciYgZW5zdXJlV2Vi
SURCU2VydmVyKCk7CiAgICAgdm9pZCBjbG9zZUlEQlNlcnZlcihDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwpAQCAtMzE4LDYgKzMyMiw3IEBAIHByb3RlY3RlZDoKICAgICBzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJJbmZvPiBtX3NlcnZpY2VXb3JrZXJJbmZvOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpTV1NlcnZlcj4gbV9zd1NlcnZlcjsKICNlbmRpZgorICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI+IG1fc2hhcmVkV29ya2VyU2VydmVyOwog
CiAgICAgU3RyaW5nIG1faWRiRGF0YWJhc2VQYXRoOwogICAgIFJlZlB0cjxXZWJJREJTZXJ2ZXI+
IG1fd2ViSURCU2VydmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmNwcAppbmRleCA1YTg3MDNlZmQ2ZDUuLjI3ZjZlOGRhNWY0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAg
LTE2Miw3ICsxNjIsNyBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWF0
Y2hBbGxDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZQogCiB2b2lkIFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKQogewot
ICAgIG1fY29ubmVjdGlvbi5zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQo
KTsKKyAgICBtX2Nvbm5lY3Rpb24uc2VydmljZVdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b25Ob0xvbmdlck5lZWRlZCgpOwogfQogCiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6c2V0VGhyb3R0bGVTdGF0ZShib29sIGlzVGhyb3R0bGVhYmxlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2Vy
U2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dl
YlNoYXJlZFdvcmtlclNlcnZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi4zYzYzNjRhYTU0MDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwCkBAIC0w
LDAgKzEsMjk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYlNoYXJlZFdvcmtlclNlcnZlci5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1
ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtTZXNz
aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIgorI2lu
Y2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlcjo6V2ViU2hhcmVkV29ya2Vy
U2VydmVyKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uKQorICAgIDogbV9zZXNzaW9uKHNlc3Npb24p
Cit7Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlcjo6fldlYlNoYXJlZFdvcmtlclNlcnZlcigp
ID0gZGVmYXVsdDsKKworUEFMOjpTZXNzaW9uSUQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpzZXNz
aW9uSUQoKQoreworICAgIHJldHVybiBtX3Nlc3Npb24uc2Vzc2lvbklEKCk7Cit9CisKK3ZvaWQg
V2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyKFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYmIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBVUkwmJiB1cmwsIFdlYkNvcmU6OlRyYW5zZmVy
cmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0
aW9ucykKK3sKKyAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkga2V5IHsgb3JpZ2luLCB1cmws
IHdvcmtlck9wdGlvbnMubmFtZSB9OworICAgIGF1dG8mIHNoYXJlZFdvcmtlciA9IG1fc2hhcmVk
V29ya2Vycy5lbnN1cmUoa2V5LCBbJl0geworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTaGFy
ZWRXb3JrZXI+KG9yaWdpbiwgdXJsLCB3b3JrZXJPcHRpb25zKTsKKyAgICB9KS5pdGVyYXRvci0+
dmFsdWU7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2Vy
dmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7
cHJpdmF0ZX1zLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHNoYXJlZFdvcmtlci0+
aWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKworICAgIGlmIChzaGFyZWRXb3JrZXItPndvcmtlck9w
dGlvbnMudHlwZSAhPSB3b3JrZXJPcHRpb25zLnR5cGUgfHwgc2hhcmVkV29ya2VyLT53b3JrZXJP
cHRpb25zLmNyZWRlbnRpYWxzICE9IHdvcmtlck9wdGlvbnMuY3JlZGVudGlhbHMpIHsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVy
OjpyZXF1ZXN0U2hhcmVkV29ya2VyOiBBIHdvcmtlciBhbHJlYWR5IGV4aXN0cyB3aXRoIHRoaXMg
bmFtZSBidXQgaGFzIGRpZmZlcmVudCB0eXBlIC8gY3JlZGVudGlhbHMiKTsKKyAgICAgICAgaWYg
KGF1dG8qIHNlcnZlckNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkpKQorICAgICAgICAgICAgc2VydmVy
Q29ubmVjdGlvbi0+bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkRmFpbHVyZShzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNoYXJlZFdv
cmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5hZGQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciwgcG9ydCk7CisKKyAgICBpZiAoc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzLnNp
emUoKSA+IDEpIHsKKyAgICAgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVk
V29ya2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyOiBBIHNoYXJlZCB3b3JrZXIgd2l0aCB0
aGlzIFVSTCBhbHJlYWR5IGV4aXN0cyAobm93IHNoYXJlZCBieSAldSBzaGFyZWQgd29ya2VyIG9i
amVjdHMpIiwgc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzLnNpemUoKSk7CisgICAg
ICAgIGlmIChzaGFyZWRXb3JrZXItPmlzUnVubmluZykgeworICAgICAgICAgICAgYXV0byogY29u
dGV4dENvbm5lY3Rpb24gPSBtX2NvbnRleHRDb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyLT5y
ZWdpc3RyYWJsZURvbWFpbigpKTsKKyAgICAgICAgICAgIEFTU0VSVChjb250ZXh0Q29ubmVjdGlv
bik7CisgICAgICAgICAgICBpZiAoY29udGV4dENvbm5lY3Rpb24pCisgICAgICAgICAgICAgICAg
cG9zdENvbm5lY3RFdmVudCgqY29udGV4dENvbm5lY3Rpb24sIHNoYXJlZFdvcmtlci0+aWRlbnRp
ZmllciwgcG9ydCwgb3JpZ2luLmNsaWVudE9yaWdpbi50b1N0cmluZygpKTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVCghc2hhcmVkV29ya2VyLT5pc1J1bm5p
bmcpOworCisgICAgYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgQVNT
RVJUKHNlcnZlckNvbm5lY3Rpb24pOworCisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAi
V2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyOiBGZXRjaGluZyBzaGFy
ZWQgd29ya2VyIHNjcmlwdCBpbiBjbGllbnQiKTsKKyAgICBzZXJ2ZXJDb25uZWN0aW9uLT5mZXRj
aFNjcmlwdEluQ2xpZW50KHVybCwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgd29ya2Vy
T3B0aW9ucywgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHNoYXJlZFdvcmtlciA9IFdl
YWtQdHIgeyAqc2hhcmVkV29ya2VyIH1dKFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYgZmV0
Y2hSZXN1bHQpIHsKKyAgICAgICAgaWYgKHdlYWtUaGlzICYmIHNoYXJlZFdvcmtlcikKKyAgICAg
ICAgICAgIHdlYWtUaGlzLT5kaWRGaW5pc2hGZXRjaGluZ1NoYXJlZFdvcmtlclNjcmlwdCgqc2hh
cmVkV29ya2VyLCBXVEZNb3ZlKGZldGNoUmVzdWx0KSk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2Vi
U2hhcmVkV29ya2VyU2VydmVyOjpsYXVuY2hTaGFyZWRXb3JrZXIoV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24sIFNoYXJlZFdvcmtlciYg
c2hhcmVkV29ya2VyKQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJl
ZFdvcmtlclNlcnZlcjo6bGF1bmNoU2hhcmVkV29ya2VyOiBjb250ZXh0Q29ubmVjdGlvbj0lcCwg
c2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsICZjb250ZXh0Q29ubmVjdGlvbiwgc2hh
cmVkV29ya2VyLmlkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgY29udGV4dENvbm5lY3Rpb24u
bGF1bmNoU2hhcmVkV29ya2VyKHNoYXJlZFdvcmtlci5vcmlnaW4sIHNoYXJlZFdvcmtlci5pZGVu
dGlmaWVyLCBzaGFyZWRXb3JrZXIudXJsLCBzaGFyZWRXb3JrZXIud29ya2VyT3B0aW9ucywgc2hh
cmVkV29ya2VyLmZldGNoUmVzdWx0KTsKKyAgICBzaGFyZWRXb3JrZXIuaXNSdW5uaW5nID0gdHJ1
ZTsKKyAgICBhdXRvIHNvdXJjZU9yaWdpbiA9IHNoYXJlZFdvcmtlci5vcmlnaW4uY2xpZW50T3Jp
Z2luLnRvU3RyaW5nKCk7CisgICAgZm9yIChhdXRvJiBwb3J0IDogc2hhcmVkV29ya2VyLnNoYXJl
ZFdvcmtlck9iamVjdHMudmFsdWVzKCkpCisgICAgICAgIHBvc3RDb25uZWN0RXZlbnQoY29udGV4
dENvbm5lY3Rpb24sIHNoYXJlZFdvcmtlci5pZGVudGlmaWVyLCBwb3J0LCBzb3VyY2VPcmlnaW4p
OworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cG9zdENvbm5lY3RFdmVudChXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbiwg
V2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiBzb3VyY2VQb3J0LCBjb25zdCBT
dHJpbmcmIHNvdXJjZU9yaWdpbikKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnBvc3RDb25uZWN0RXZlbnQ6IGNvbnRleHRDb25uZWN0aW9u
PSVwLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgJmNvbnRleHRDb25uZWN0aW9u
LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIGNvbnRleHRDb25uZWN0
aW9uLnBvc3RDb25uZWN0RXZlbnQoc2hhcmVkV29ya2VySWRlbnRpZmllciwgc291cmNlUG9ydCwg
c291cmNlT3JpZ2luKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlz
aEZldGNoaW5nU2hhcmVkV29ya2VyU2NyaXB0KFNoYXJlZFdvcmtlciYgd29ya2VyLCBXZWJDb3Jl
OjpXb3JrZXJGZXRjaFJlc3VsdCYmIGZldGNoUmVzdWx0KQoreworICAgIFJFTEVBU0VfTE9HKFNo
YXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6ZGlkRmluaXNoRmV0Y2hpbmdTaGFy
ZWRXb3JrZXJTY3JpcHQgc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgd29ya2Vy
PSVwLCBzdWNjZXNzPSVkIiwgd29ya2VyLmlkZW50aWZpZXIudG9VSW50NjQoKSwgJndvcmtlciwg
ZmV0Y2hSZXN1bHQuZXJyb3IuaXNOdWxsKCkpOworICAgIGlmICghZmV0Y2hSZXN1bHQuZXJyb3Iu
aXNOdWxsKCkpIHsKKyAgICAgICAgLy8gRmV0Y2ggZmFpbGVkLCBub3RpZnkgdGhlIFNoYXJlZFdv
cmtlciBvYmplY3RzLgorICAgICAgICBmb3IgKGF1dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciA6IHdvcmtlci5zaGFyZWRXb3JrZXJPYmplY3RzLmtleXMoKSkgeworICAgICAgICAgICAg
aWYgKGF1dG8qIHNlcnZlckNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkpKQorICAgICAgICAgICAgICAg
IHNlcnZlckNvbm5lY3Rpb24tPm5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZhaWx1cmUoc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgICAgIH0KKyAgICAgICAgbV9zaGFyZWRXb3Jr
ZXJzLnJlbW92ZSh3b3JrZXIua2V5KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
d29ya2VyLmZldGNoUmVzdWx0ID0gV1RGTW92ZShmZXRjaFJlc3VsdCk7CisKKyAgICBhdXRvIHJl
Z2lzdHJhYmxlRG9tYWluID0gd29ya2VyLnJlZ2lzdHJhYmxlRG9tYWluKCk7CisgICAgYXV0byog
Y29udGV4dENvbm5lY3Rpb24gPSBjb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWlu
KHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoIWNvbnRleHRDb25uZWN0aW9uKSB7CisgICAg
ICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGxhdW5jaFNoYXJlZFdvcmtlcigqY29udGV4dENvbm5lY3Rp
b24sIHdvcmtlcik7Cit9CisKK2Jvb2wgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpuZWVkc0NvbnRl
eHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKSBjb25zdAoreworICAgIGZvciAoYXV0byYgc2hh
cmVkV29ya2VyIDogbV9zaGFyZWRXb3JrZXJzLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChyZWdp
c3RyYWJsZURvbWFpbi5tYXRjaGVzKHNoYXJlZFdvcmtlci0+dXJsKSkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViU2hhcmVk
V29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCit7CisgICAgQVNTRVJUKCFtX2NvbnRl
eHRDb25uZWN0aW9ucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpOworICAgIGlmIChtX3Bl
bmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4p
KQorICAgICAgICByZXR1cm47CisKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI6OmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uIHdpbGwgY3JlYXRlIGEg
Y29ubmVjdGlvbiIpOworCisgICAgbV9wZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5zLmFk
ZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgbV9zZXNzaW9uLm5ldHdvcmtQcm9jZXNzKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MgeyByZWdpc3RyYWJsZURvbWFpbiwgbV9zZXNzaW9uLnNlc3Npb25JRCgp
IH0sIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZWdpc3RyYWJsZURvbWFp
bl0geworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y3Jl
YXRlQ29udGV4dENvbm5lY3Rpb24gc2hvdWxkIG5vdyBoYXZlIGNyZWF0ZWQgYSBjb25uZWN0aW9u
Iik7CisKKyAgICAgICAgQVNTRVJUKG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWlucy5j
b250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpOworICAgICAgICBtX3BlbmRpbmdDb250ZXh0Q29u
bmVjdGlvbkRvbWFpbnMucmVtb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKKworICAgICAgICBpZiAo
bV9jb250ZXh0Q29ubmVjdGlvbnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVn
aXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICAgICAgY3JlYXRlQ29u
dGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4pOworICAgIH0sIDApOworfQorCit2b2lk
IFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29udGV4dENvbm5lY3Rpb24oV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24pCit7CisgICAg
UkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjphZGRDb250
ZXh0Q29ubmVjdGlvbiglcCkgd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCAmY29udGV4
dENvbm5lY3Rpb24sIGNvbnRleHRDb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9V
SW50NjQoKSk7CisKKyAgICBBU1NFUlQoIW1fY29udGV4dENvbm5lY3Rpb25zLmNvbnRhaW5zKGNv
bnRleHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCkpKTsKKworICAgIG1fY29udGV4dENv
bm5lY3Rpb25zLmFkZChjb250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpLCAmY29u
dGV4dENvbm5lY3Rpb24pOworCisgICAgY29udGV4dENvbm5lY3Rpb25DcmVhdGVkKGNvbnRleHRD
b25uZWN0aW9uKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlbW92ZUNvbnRl
eHRDb25uZWN0aW9uKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNv
bnRleHRDb25uZWN0aW9uKQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNo
YXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oJXApIHdlYlByb2Nlc3NJ
ZGVudGlmaWVyPSUiIFBSSXU2NCwgJmNvbnRleHRDb25uZWN0aW9uLCBjb250ZXh0Q29ubmVjdGlv
bi53ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUludDY0KCkpOworCisgICAgYXV0byByZWdpc3Ry
YWJsZURvbWFpbiA9IGNvbnRleHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCk7CisKKyAg
ICBBU1NFUlQobV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0KHJlZ2lzdHJhYmxlRG9tYWluKSA9PSAm
Y29udGV4dENvbm5lY3Rpb24pOworCisgICAgbV9jb250ZXh0Q29ubmVjdGlvbnMucmVtb3ZlKHJl
Z2lzdHJhYmxlRG9tYWluKTsKKworICAgIGlmIChuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVn
aXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICBjcmVhdGVDb250ZXh0
Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbik7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2Vy
U2VydmVyOjpjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24pCit7CisgICAgUkVMRUFTRV9MT0co
U2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjb250ZXh0Q29ubmVjdGlvbkNy
ZWF0ZWQoJXApIHdlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgJmNvbnRleHRDb25uZWN0
aW9uLCBjb250ZXh0Q29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUludDY0KCkp
OworICAgIGF1dG8mIHJlZ2lzdHJhYmxlRG9tYWluID0gY29udGV4dENvbm5lY3Rpb24ucmVnaXN0
cmFibGVEb21haW4oKTsKKyAgICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fc2hhcmVkV29ya2Vycy52
YWx1ZXMoKSkgeworICAgICAgICBpZiAod29ya2VyLT5kaWRGaW5pc2hGZXRjaGluZygpICYmIHJl
Z2lzdHJhYmxlRG9tYWluLm1hdGNoZXMod29ya2VyLT51cmwpKQorICAgICAgICAgICAgbGF1bmNo
U2hhcmVkV29ya2VyKGNvbnRleHRDb25uZWN0aW9uLCAqd29ya2VyKTsKKyAgICB9Cit9CisKK2F1
dG8gV2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaGFyZWRXb3JrZXJCeUlkZW50aWZpZXIoV2ViQ29y
ZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyKSAtPiBTaGFy
ZWRXb3JrZXIqCit7CisgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3NoYXJlZFdvcmtlcnMudmFs
dWVzKCkpIHsKKyAgICAgICAgaWYgKHdvcmtlci0+aWRlbnRpZmllciA9PSBzaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIHdvcmtlci5nZXQoKTsKKyAgICB9CisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK2F1dG8gV2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaGFyZWRX
b3JrZXJCeU9iamVjdElkZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKSAtPiBTaGFyZWRXb3JrZXIqCit7Cisg
ICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3NoYXJlZFdvcmtlcnMudmFsdWVzKCkpIHsKKyAgICAg
ICAgaWYgKHdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5jb250YWlucyhzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJldHVybiB3b3JrZXIuZ2V0KCk7CisgICAg
fQorICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6
c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQoreworICAgIGF1dG8qIHdv
cmtlciA9IHNoYXJlZFdvcmtlckJ5T2JqZWN0SWRlbnRpZmllcihzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXI6OnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5OiBzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyPSV7cHVibGljfXMsIHdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB3b3JrZXIpOworICAgIGlmICghd29y
a2VyKQorICAgICAgICByZXR1cm47CisKKyAgICB3b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMu
cmVtb3ZlKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIGlmICghd29ya2VyLT5z
aGFyZWRXb3JrZXJPYmplY3RzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2h1
dERvd25TaGFyZWRXb3JrZXIod29ya2VyLT5rZXkoKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29y
a2VyU2VydmVyOjpzaHV0RG93blNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJLZXkmIGtleSkKK3sKKyAgICBhdXRvIHdvcmtlciA9IG1fc2hhcmVkV29ya2Vycy50YWtlKGtl
eSk7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVy
OjpzaHV0RG93blNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQg
Iiwgd29ya2VyPSVwIiwgd29ya2VyID8gd29ya2VyLT5pZGVudGlmaWVyLnRvVUludDY0KCkgOiAw
LCB3b3JrZXIuZ2V0KCkpOworICAgIGlmICghd29ya2VyKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IGNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFi
bGVEb21haW4od29ya2VyLT5yZWdpc3RyYWJsZURvbWFpbigpKTsKKyAgICBpZiAoIWNvbnRleHRD
b25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBjb250ZXh0Q29ubmVjdGlvbi0+dGVy
bWluYXRlU2hhcmVkV29ya2VyKHdvcmtlci0+aWRlbnRpZmllcik7CisKKyAgICBpZiAoIW5lZWRz
Q29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbih3b3JrZXItPnJlZ2lzdHJhYmxl
RG9tYWluKCkpKQorICAgICAgICBjb250ZXh0Q29ubmVjdGlvbi0+Y29ubmVjdGlvbklzTm9Mb25n
ZXJOZWVkZWQoKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmFkZENvbm5lY3Rp
b24oc3RkOjp1bmlxdWVfcHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24+JiYgY29u
bmVjdGlvbikKK3sKKyAgICBhdXRvIHByb2Nlc3NJZGVudGlmaWVyID0gY29ubmVjdGlvbi0+d2Vi
UHJvY2Vzc0lkZW50aWZpZXIoKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI6OmFkZENvbm5lY3Rpb24oJXApOiBwcm9jZXNzSWRlbnRpZmllcj0l
IiBQUkl1NjQsIGNvbm5lY3Rpb24uZ2V0KCksIHByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCkp
OworICAgIEFTU0VSVCghbV9jb25uZWN0aW9ucy5jb250YWlucyhwcm9jZXNzSWRlbnRpZmllcikp
OworICAgIG1fY29ubmVjdGlvbnMuYWRkKHByb2Nlc3NJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbm5l
Y3Rpb24pKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlbW92ZUNvbm5lY3Rp
b24oV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIpCit7CisgICAg
YXV0byBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy50YWtlKHByb2Nlc3NJZGVudGlmaWVyKTsK
KyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJl
bW92ZUNvbm5lY3Rpb24oJXApOiBwcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQsIGNvbm5lY3Rp
b24uZ2V0KCksIHByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIEFTU0VSVChjb25u
ZWN0aW9uKTsKKworICAgIFZlY3RvcjxXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyPiBzaGFyZWRXb3JrZXJPYmplY3RzR29pbmdBd2F5OworICAgIGZvciAoYXV0byYgd29ya2Vy
IDogbV9zaGFyZWRXb3JrZXJzLnZhbHVlcygpKSB7CisgICAgICAgIGZvciAoYXV0byYgc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllciA6IHdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5rZXlz
KCkpIHsKKyAgICAgICAgICAgIGlmIChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nl
c3NJZGVudGlmaWVyKCkgPT0gcHJvY2Vzc0lkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgc2hh
cmVkV29ya2VyT2JqZWN0c0dvaW5nQXdheS5hcHBlbmQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllcik7CisgICAgICAgIH0KKyAgICB9CisgICAgZm9yIChhdXRvIHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIgOiBzaGFyZWRXb3JrZXJPYmplY3RzR29pbmdBd2F5KQorICAgICAgICBzaGFy
ZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsK
K30KKworV2ViU2hhcmVkV29ya2VyU2VydmVyOjpTaGFyZWRXb3JrZXI6OlNoYXJlZFdvcmtlcihj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMpCisgICAgOiBpZGVudGlmaWVy
KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXI6OmdlbmVyYXRlKCkpCisgICAgLCBvcmln
aW4ob3JpZ2luKQorICAgICwgdXJsKHVybCkKKyAgICAsIHdvcmtlck9wdGlvbnMod29ya2VyT3B0
aW9ucykKK3sKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnBvc3RFeGNlcHRpb25U
b1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtl
cklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgYXV0byog
d29ya2VyID0gc2hhcmVkV29ya2VyQnlJZGVudGlmaWVyKHNoYXJlZFdvcmtlcklkZW50aWZpZXIp
OworICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNl
cnZlcjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVy
PSUiIFBSSXU2NCAiLCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0
KCksIHdvcmtlcik7CisgICAgaWYgKCF3b3JrZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGZv
ciAoYXV0byBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIDogd29ya2VyLT5zaGFyZWRXb3Jr
ZXJPYmplY3RzLmtleXMoKSkgeworICAgICAgICBpZiAoYXV0byogc2VydmVyQ29ubmVjdGlvbiA9
IG1fY29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lk
ZW50aWZpZXIoKSkpCisgICAgICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uLT5wb3N0RXhjZXB0aW9u
VG9Xb3JrZXJPYmplY3Qoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgZXJyb3JNZXNzYWdl
LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCk7CisgICAgfQorfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jODMxZTBhNDJhYjQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJT
aGFyZWRXb3JrZXJTZXJ2ZXIuaApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRX
b3JrZXJJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJLZXkuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1dvcmtlckZldGNoUmVzdWx0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Xb3Jr
ZXJPcHRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworc3RydWN0IENsaWVudE9yaWdpbjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIE5ldHdvcmtTZXNzaW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlv
bjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CisKK2Ns
YXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
KyAgICBleHBsaWNpdCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIoTmV0d29ya1Nlc3Npb24mKTsKKyAg
ICB+V2ViU2hhcmVkV29ya2VyU2VydmVyKCk7CisKKyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQoKTsKKworICAgIHZvaWQgcmVxdWVzdFNoYXJlZFdvcmtlcihXZWJDb3JlOjpDbGllbnRPcmln
aW4mJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgVVJMJiYsIFdlYkNv
cmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmKTsK
KyAgICB2b2lkIHNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KFdlYkNvcmU6OlNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIpOworCisgICAgdm9pZCBhZGRDb250ZXh0Q29ubmVjdGlvbihX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CisgICAgdm9pZCByZW1v
dmVDb250ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uJik7CisKKyAgICB2b2lkIGFkZENvbm5lY3Rpb24oc3RkOjp1bmlxdWVfcHRyPFdlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb24+JiYpOworICAgIHZvaWQgcmVtb3ZlQ29ubmVjdGlvbihX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CisKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKiBjb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWlu
KGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pIHsgcmV0dXJuIG1fY29u
dGV4dENvbm5lY3Rpb25zLmdldChkb21haW4pOyB9CisKKyAgICB2b2lkIHBvc3RFeGNlcHRpb25U
b1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGNyZWF0ZUNvbnRleHRD
b25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7CisKKyAgICBib29s
IG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OworICAgIHZvaWQgY29udGV4dENvbm5lY3Rpb25D
cmVhdGVkKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKKworICAg
IHN0cnVjdCBTaGFyZWRXb3JrZXIgOiBDYW5NYWtlV2Vha1B0cjxTaGFyZWRXb3JrZXI+IHsKKyAg
ICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworCisgICAgICAgIFNoYXJlZFdv
cmtlcihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBjb25zdCBVUkwmLCBjb25zdCBXZWJD
b3JlOjpXb3JrZXJPcHRpb25zJik7CisKKyAgICAgICAgYm9vbCBkaWRGaW5pc2hGZXRjaGluZygp
IGNvbnN0IHsgcmV0dXJuICEhZmV0Y2hSZXN1bHQuc2NyaXB0OyB9CisgICAgICAgIFdlYkNvcmU6
OlNoYXJlZFdvcmtlcktleSBrZXkoKSBjb25zdCB7IHJldHVybiB7IG9yaWdpbiwgdXJsLCB3b3Jr
ZXJPcHRpb25zLm5hbWUgfTsgfQorICAgICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBy
ZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHsgdXJsIH07IH0KKworICAgICAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXI7CisgICAgICAgIFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW47CisgICAg
ICAgIFVSTCB1cmw7CisgICAgICAgIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMgd29ya2VyT3B0aW9u
czsKKyAgICAgICAgSGFzaE1hcDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0PiBzaGFyZWRXb3JrZXJPYmplY3RzOwor
ICAgICAgICBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCBmZXRjaFJlc3VsdDsKKyAgICAgICAg
Ym9vbCBpc1J1bm5pbmcgeyBmYWxzZSB9OworICAgIH07CisKKyAgICBTaGFyZWRXb3JrZXIqIHNo
YXJlZFdvcmtlckJ5SWRlbnRpZmllcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsK
KyAgICBTaGFyZWRXb3JrZXIqIHNoYXJlZFdvcmtlckJ5T2JqZWN0SWRlbnRpZmllcihXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICB2b2lkIGRpZEZpbmlzaEZldGNo
aW5nU2hhcmVkV29ya2VyU2NyaXB0KFNoYXJlZFdvcmtlciYsIFdlYkNvcmU6OldvcmtlckZldGNo
UmVzdWx0JiYpOworICAgIHZvaWQgbGF1bmNoU2hhcmVkV29ya2VyKFdlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24mLCBTaGFyZWRXb3JrZXImKTsKKyAgICB2b2lkIHBvc3RD
b25uZWN0RXZlbnQoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYsIFdl
YkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVk
TWVzc2FnZVBvcnQmLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CisgICAgdm9pZCBzaHV0
RG93blNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmKTsKKworICAg
IE5ldHdvcmtTZXNzaW9uJiBtX3Nlc3Npb247CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b24+PiBtX2Nvbm5lY3Rpb25zOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4sIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qPiBtX2NvbnRleHRD
b25uZWN0aW9uczsKKyAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBtX3Bl
bmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJLZXksIHN0ZDo6dW5pcXVlX3B0cjxTaGFyZWRXb3JrZXI+PiBtX3NoYXJlZFdvcmtl
cnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi4zY2Y2MTBiNmJiOGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgiCisK
KyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvV29y
a2VyRmV0Y2hSZXN1bHQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNkZWZpbmUgQ09OTkVD
VElPTl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAg
LSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb246OiIgZm10LCB0aGlzLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0
KCksICMjX19WQV9BUkdTX18pCisjZGVmaW5lIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1Io
Zm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKFNoYXJlZFdvcmtlciwgIiVwIC0gW3dlYlByb2Nl
c3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
OjoiIGZtdCwgdGhpcywgbV93ZWJQcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpLCAjI19fVkFf
QVJHU19fKQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgV2ViU2hh
cmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIpCisgICAgOiBtX2Nv
bnRlbnRDb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdv
cmtQcm9jZXNzKQorICAgICwgbV9zZXJ2ZXIoc2VydmVyKQorICAgICwgbV93ZWJQcm9jZXNzSWRl
bnRpZmllcih3ZWJQcm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0Vf
TE9HKCJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOiIpOworfQorCitXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjp+V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigp
Cit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygifldlYlNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb246Iik7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiogV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAoreworICAgIHJldHVy
biBtX2NvbnRlbnRDb25uZWN0aW9uLnB0cigpOworfQorCitQQUw6OlNlc3Npb25JRCBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpzZXNzaW9uSUQoKQoreworICAgIHJldHVybiBzZXJ2
ZXIoKS5zZXNzaW9uSUQoKTsKK30KKworTmV0d29ya1Nlc3Npb24qIFdlYlNoYXJlZFdvcmtlclNl
cnZlckNvbm5lY3Rpb246OnNlc3Npb24oKQoreworICAgIHJldHVybiBtX25ldHdvcmtQcm9jZXNz
LT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbjo6cmVxdWVzdFNoYXJlZFdvcmtlcihXZWJDb3JlOjpDbGllbnRPcmln
aW4mJiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllciwgVVJMJiYgdXJsLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1l
c3NhZ2VQb3J0JiYgcG9ydCwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMp
Cit7CisgICAgQVNTRVJUKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50
aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsgLy8gRklYTUU6IFNob3VsZCBiZSBh
IE1FU1NBR0VfQ0hFQ0soKS4KKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJyZXF1ZXN0U2hh
cmVkV29ya2VyOiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMiLCBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
aWYgKGF1dG8qIHNlc3Npb24gPSB0aGlzLT5zZXNzaW9uKCkpCisgICAgICAgIHNlc3Npb24tPmVu
c3VyZVNoYXJlZFdvcmtlclNlcnZlcigpLnJlcXVlc3RTaGFyZWRXb3JrZXIoV1RGTW92ZShvcmln
aW4pLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXVEZNb3ZlKHVybCksIFdURk1vdmUo
cG9ydCksIFdURk1vdmUod29ya2VyT3B0aW9ucykpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb246OmZldGNoU2NyaXB0SW5DbGllbnQoY29uc3QgVVJMJiB1cmwsIFdl
YkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYgd29ya2VyT3B0aW9ucywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJmZXRjaFNjcmlw
dEluQ2xpZW50OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMiLCBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uOjpGZXRjaFNjcmlwdEluQ2xpZW50IHsgdXJsLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyLCB3b3JrZXJPcHRpb25zIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwor
dm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpub3RpZnlXb3JrZXJPYmplY3RP
ZkxvYWRGYWlsdXJlKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllcikKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VS
Uk9SKCJub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRGYWlsdXJlOiBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyPSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbjo6Tm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkRmFpbHVyZSB7IHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIgfSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9H
X0VSUk9SKCJwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Q6IHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uOjpQb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QgeyBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgc291cmNlVVJMIH0pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b246OnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK3sKKyAgICBBU1NF
UlQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IG1f
d2ViUHJvY2Vzc0lkZW50aWZpZXIpOyAvLyBGSVhNRTogU2hvdWxkIGJlIGEgTUVTU0FHRV9DSEVD
SygpLgorICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coInNoYXJlZFdvcmtlck9iamVjdElzR29p
bmdBd2F5OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMiLCBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSB0aGlzLT5zZXNzaW9uKCkpCisgICAgICAgIHNlc3Npb24tPmVuc3Vy
ZVNoYXJlZFdvcmtlclNlcnZlcigpLnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworfQorCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNF
X0xPRworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJl
ZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jNjg0OWFiMDJl
YWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJl
ZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw3OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vz
c0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0
Oworc3RydWN0IFdvcmtlck9wdGlvbnM7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBOZXR3b3JrUHJvY2VzczsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlcjsKK2NsYXNzIFdl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CisKK2NsYXNzIFdlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb24gOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJs
aWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
cHVibGljOgorICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oTmV0d29ya1Byb2Nl
c3MmLCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImLCBJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllcik7CisgICAgfldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24o
KTsKKworICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlciYgc2VydmVyKCkgeyByZXR1cm4gbV9zZXJ2
ZXI7IH0KKyAgICBjb25zdCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlcigpIGNvbnN0IHsg
cmV0dXJuIG1fc2VydmVyOyB9CisKKyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKTsKKyAg
ICBOZXR3b3JrU2Vzc2lvbiogc2Vzc2lvbigpOworICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV93ZWJQcm9jZXNzSWRl
bnRpZmllcjsgfQorCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworICAgIHZvaWQgZmV0Y2hTY3JpcHRJbkNsaWVudChj
b25zdCBVUkwmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpXb3JrZXJPcHRpb25zJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpX
b3JrZXJGZXRjaFJlc3VsdCYmKT4mJik7CisgICAgdm9pZCBub3RpZnlXb3JrZXJPYmplY3RPZkxv
YWRGYWlsdXJlKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIHZv
aWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCitwcml2YXRlOgor
ICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlci4KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VT
ZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRl
ckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CisKKyAgICAvLyBJUEMg
bWVzc2FnZXMuCisgICAgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBVUkwmJiwgV2Vi
Q29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYp
OworICAgIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisKKyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nv
bnRlbnRDb25uZWN0aW9uOworICAgIFJlZjxOZXR3b3JrUHJvY2Vzcz4gbV9uZXR3b3JrUHJvY2Vz
czsKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIG1fc2VydmVyOworICAgIFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hh
cmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uZmFlNGEwODAzNzc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI2IEBACisjIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb24gTm90UmVmQ291bnRlZCB7CisgICAgUmVxdWVzdFNoYXJlZFdvcmtlcihzdHJ1Y3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBVUkwgdXJsLCBXZWJDb3JlOjpU
cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0IHBvcnQsIHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25z
IHdvcmtlck9wdGlvbnMpCisgICAgU2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29y
ZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRX
b3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLjQ5YzExMjQxNTIxOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVy
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjZGVmaW5lIENPTlRFWFRfQ09OTkVDVElPTl9S
RUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBbd2Vi
UHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OiIgZm10LCB0aGlzLCB3ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUlu
dDY0KCksICMjX19WQV9BUkdTX18pCisKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246OldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBz
ZXJ2ZXIpCisgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1fc2VydmVyKHNl
cnZlcikKKyAgICAsIG1fcmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pCit7Cisg
ICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOiIpOworICAgIHNlcnZlci5hZGRDb250ZXh0Q29ubmVjdGlvbigq
dGhpcyk7Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5X
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkKK3sKKyAgICBDT05URVhU
X0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coIn5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOiIpOworICAgIGlmIChtX3NlcnZlciAmJiBtX3NlcnZlci0+Y29udGV4dENvbm5l
Y3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbigpKSA9PSB0aGlzKQor
ICAgICAgICBtX3NlcnZlci0+cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oKnRoaXMpOworfQorCitX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjp3ZWJQcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
Y29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpOworfQorCitJUEM6OkNvbm5lY3Rpb24m
IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmlwY0Nvbm5lY3Rpb24o
KSBjb25zdAoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpOworfQorCitJ
UEM6OkNvbm5lY3Rpb24qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gJmlwY0Nvbm5l
Y3Rpb24oKTsKK30KKwordWludDY0X3QgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAoreworICAgIHJldHVy
biAwOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05f
UkVMRUFTRV9MT0coImNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkOiIpOworICAgIG1fY29ubmVj
dGlvbi5zaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRl
ZCgpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlm
aWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwp
Cit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJwb3N0RXhjZXB0aW9uVG9X
b3JrZXJPYmplY3Q6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIGlmIChtX3NlcnZlcikKKyAgICAgICAgbV9z
ZXJ2ZXItPnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJJZGVudGlmaWVy
LCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMKTsKK30K
Kwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpsYXVuY2hT
aGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFdlYkNvcmU6
OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMsIGNvbnN0
IFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiBmZXRjaFJlc3VsdCkKK3sKKyAgICBDT05URVhU
X0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coImxhdW5jaFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2Vy
SWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpMYXVuY2hTaGFyZWRXb3JrZXIgeyBvcmlnaW4sIHNoYXJlZFdvcmtlcklkZW50aWZpZXIs
IHVybCwgd29ya2VyT3B0aW9ucywgZmV0Y2hSZXN1bHQgfSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVudChXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmIHBvcnQsIGNvbnN0IFN0cmluZyYgc291cmNl
T3JpZ2luKQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygicG9zdENvbm5l
Y3RFdmVudDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklk
ZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpQb3N0Q29ubmVjdEV2ZW50IHsgc2hhcmVkV29ya2Vy
SWRlbnRpZmllciwgcG9ydCwgc291cmNlT3JpZ2luIH0pOworfQorCit2b2lkIFdlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZVNoYXJlZFdvcmtlcihXZWJD
b3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIpCit7Cisg
ICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJ0ZXJtaW5hdGVTaGFyZWRXb3JrZXI6
IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVy
LnRvVUludDY0KCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6VGVybWluYXRlU2hhcmVkV29ya2VyIHsgc2hhcmVkV29ya2VySWRl
bnRpZmllciB9KTsKK30KKworI3VuZGVmIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRwor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLmYwN2ZmMDNhMzNkNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJN
ZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlZ2lzdHJhYmxlRG9t
YWluOworY2xhc3MgU2NyaXB0QnVmZmVyOworc3RydWN0IENsaWVudE9yaWdpbjsKK3N0cnVjdCBX
b3JrZXJGZXRjaFJlc3VsdDsKK3N0cnVjdCBXb3JrZXJPcHRpb25zOworfQorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CitjbGFzcyBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI7CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYsIFdlYlNoYXJlZFdvcmtlclNlcnZlciYpOworICAgIH5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKCk7CisKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3
ZWJQcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0OworICAgIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFi
bGVEb21haW47IH0KKyAgICBJUEM6OkNvbm5lY3Rpb24mIGlwY0Nvbm5lY3Rpb24oKSBjb25zdDsK
KworICAgIHZvaWQgbGF1bmNoU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFdl
YkNvcmU6Oldvcmtlck9wdGlvbnMmLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYp
OworICAgIHZvaWQgcG9zdENvbm5lY3RFdmVudChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiwgY29uc3QgU3RyaW5n
JiBzb3VyY2VPcmlnaW4pOworICAgIHZvaWQgdGVybWluYXRlU2hhcmVkV29ya2VyKFdlYkNvcmU6
OlNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworCisgICAgdm9pZCBjb25uZWN0aW9uSXNOb0xvbmdl
ck5lZWRlZCgpOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICAvLyBJUEMgbWVzc2FnZXMu
CisgICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29y
a2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisKKyAgICAvLyBJ
UEM6Ok1lc3NhZ2VTZW5kZXIuCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29u
bmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5h
dGlvbklEKCkgY29uc3QgZmluYWw7CisKKyAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYgbV9jb25uZWN0aW9uOworICAgIFdlYWtQdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyPiBtX3Nl
cnZlcjsKKyAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWlu
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
aGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNz
YWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFlNDdjMTIy
Y2JhYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hh
cmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KQEAgLTAsMCArMSwyNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMg
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgor
IyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCittZXNzYWdlcyAtPiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uIE5vdFJlZkNvdW50ZWQgeworICAgIFBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJD
b3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFN0cmlu
ZyBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTdHJpbmcg
c291cmNlVVJMKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5n
LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCA0NGUwYTdhY2I3YjUu
LjdiN2NjOWJhYzRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5n
LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTk3LDYgKzk3LDcg
QEAgZXh0ZXJuICJDIiB7CiAgICAgTShTZXJ2aWNlV29ya2VyKSBcCiAgICAgTShTZXNzaW9uU3Rh
dGUpIFwKICAgICBNKFNoYXJlZERpc3BsYXlMaXN0cykgXAorICAgIE0oU2hhcmVkV29ya2VyKSBc
CiAgICAgTShTdG9yYWdlKSBcCiAgICAgTShTdG9yYWdlQVBJKSBcCiAgICAgTShUZXh0SW5wdXQp
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkg
Yi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDdlYmZhNTE2
YjUwMy4uMWEyNjFlMGIxMGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkKQEAgLTMwMywxMCArMzAzLDEzIEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3
YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJ
ZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2gnLAorICAgICAg
ICAnV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpT
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNsZWVwRGlz
YWJsZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNvdXJjZUJ1ZmZlckFwcGVuZE1v
ZGUnLAogICAgICAgICAnV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50
SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTdG9yYWdlVHlwZScsCisgICAgICAgICdX
ZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JywKICAgICAgICAgJ1dlYkNvcmU6OlVzZXJN
ZWRpYVJlcXVlc3RJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OldlYkxvY2tJZGVudGlm
aWVyJywKICAgICAgICAgJ1dlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXInLApAQCAtODUxLDYg
Kzg1NCw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6
VGV4dENoZWNraW5nVHlwZSc6IFsnPFdlYkNvcmUvVGV4dENoZWNraW5nLmg+J10sCiAgICAgICAg
ICdXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YSc6IFsnPFdlYkNvcmUvVGV4dEluZGljYXRvci5o
PiddLAogICAgICAgICAnV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSc6IFsn
PFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+J10sCisgICAgICAgICdXZWJDb3JlOjpU
cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JzogWyc8V2ViQ29yZS9NZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6VXNlZExlZ2FjeVRMUyc6IFsnPFdlYkNvcmUvUmVz
b3VyY2VSZXNwb25zZUJhc2UuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlZpZGVvUHJlc2V0RGF0
YSc6IFsnPFdlYkNvcmUvVmlkZW9QcmVzZXQuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlZpZXdw
b3J0QXR0cmlidXRlcyc6IFsnPFdlYkNvcmUvVmlld3BvcnRBcmd1bWVudHMuaD4nXSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CmluZGV4IGRmNDdjNzg2YzhkZS4uZTRjMDc4NzUyZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTE0
MSw2ICsxNDEsMTAgQEAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV09yaWdpblN0
b3JlLmNwcCBAbm8tdW5pZnkKIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmNwcCBAbm8tdW5pZnkKIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBAbm8tdW5pZnkKIAorTmV0d29ya1By
b2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAKK05ldHdvcmtQcm9j
ZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcAorTmV0
d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uY3BwCisKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VN
YW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRs
ZS5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdp
c3RyeS5jcHAKQEAgLTc4Miw2ICs3ODYsOSBAQCBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dPcmlnaW5U
YWJsZS5jcHAKIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50LmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAK
K1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uY3BwCitXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bi5jcHAKK1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAKIAog
V2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCiAKQEAg
LTg4NCwzICs4OTEsNyBAQCBSZW1vdGVXZWJMb2NrUmVnaXN0cnlNZXNzYWdlUmVjZWl2ZXIuY3Bw
CiBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrTWVzc2FnZVJlY2VpdmVyLmNwcAogV2ViQnJvYWRj
YXN0Q2hhbm5lbFJlZ2lzdHJ5TWVzc2FnZVJlY2VpdmVyLmNwcAogV2ViTG9ja1JlZ2lzdHJ5UHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
TWVzc2FnZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3Nh
Z2VSZWNlaXZlci5jcHAKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25N
ZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBkMWI0MzcxNzYzNWYuLjMzMDIw
YmQ1YzNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC01MjksNyArNTI5LDcgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5Ojp0ZXJtaW5hdGVXZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyIHdlYlByb2MKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6dGVybWluYXRlVW5yZXNwb25z
aXZlU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9j
ZXNzSWRlbnRpZmllcikKIHsKICAgICBpZiAoUmVmUHRyIHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJv
eHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHByb2Nlc3NJZGVudGlmaWVyKSkgewotICAgICAgICBw
cm9jZXNzLT5kaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICAgICAgcHJvY2Vzcy0+ZGlzYWJs
ZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICAg
ICAgICAgcHJvY2Vzcy0+cmVxdWVzdFRlcm1pbmF0aW9uKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNv
bjo6RXhjZWVkZWRDUFVMaW1pdCk7CiAgICAgfQogfQpAQCAtMTQxNSwxNiArMTQxNSwyMSBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZERlc3Ryb3lXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eShXZWJVc2VyQ29udGVudAogfQogI2VuZGlmCiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV1RGTW92ZShyZWdpc3RyYWJsZURvbWFp
biksIHNlc3Npb25JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4m
JiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0
SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxl
RG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBz
ZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFdlYlBy
b2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MoKnRoaXMsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXJ2aWNlV29ya2VyUGFnZUlk
ZW50aWZpZXIsIHNlc3Npb25JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIFdl
YlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIsIHNlc3Npb25JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQog
Ci12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OndvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25n
ZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6c2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJO
ZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBpZiAo
YXV0byogcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIoaWRl
bnRpZmllcikpCi0gICAgICAgIHByb2Nlc3MtPmRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAg
ICAgICBwcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6
OlNlcnZpY2VXb3JrZXIpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlZ2lzdGVy
U2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2Vi
UHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzSWRlbnRpZmllcikKQEAgLTE0NjAsNiArMTQ2NSwxMiBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3Jl
OjpQcm9jZXNzSQogfQogI2VuZGlmCiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2hhcmVk
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvKiBwcm9jZXNzID0gV2ViUHJvY2Vz
c1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihpZGVudGlmaWVyKSkKKyAgICAgICAgcHJvY2Vz
cy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTaGFyZWRXb3Jr
ZXIpOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2Uo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9y
aWdpbiwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0
X3Qgc3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBxdW90YSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUkVMRUFTRV9MT0co
U3RvcmFnZSwgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VTcGFjZSIs
IHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaAppbmRleCA4Y2JkN2QwOWI2NmYuLjY4NDFhMzRmZTA5ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmgKQEAgLTMyNywxMyArMzI3LDE1IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKLSAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNl
V29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwotICAgIHZvaWQgd29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRl
ZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CisgICAgdm9pZCBlc3RhYmxpc2hTZXJ2aWNl
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXJ2aWNlV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7
CiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIHZvaWQgdW5yZWdp
c3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
IHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNl
V29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIHZvaWQgc3RhcnRTZXJ2aWNlV29ya2VyQmFj
a2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtl
clByb2Nlc3NJZGVudGlmaWVyKTsKICAgICB2b2lkIGVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5k
UHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vz
c0lkZW50aWZpZXIpOwogI2VuZGlmCisgICAgdm9pZCBzaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICB2b2lk
IGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgdGVybWluYXRlV2ViUHJvY2VzcyhXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRl
eCBhOTk3NmIyMmU3M2YuLjE1NzU3ZWQ5YTI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdl
cy5pbgpAQCAtNTMsMTMgKzUzLDE1IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkg
TGVnYWN5UmVjZWl2ZXIgewogICAgIFRlcm1pbmF0ZVdlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIpCiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCi0gICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNl
V29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5
bmMKLSAgICBXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgRXN0YWJsaXNoU2VydmljZVdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCisgICAgU2VydmljZVdvcmtlckNvbnRleHRD
b25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRp
ZmllcikKICAgICBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpCiAgICAgVW5yZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlBy
b2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2Vy
UHJvY2Vzc0lkZW50aWZpZXIpCiAgICAgU3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nl
c3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVu
dGlmaWVyKQogICAgIEVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpCiAjZW5k
aWYKKyAgICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4sIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKKyAgICBTaGFyZWRXb3JrZXJDb250ZXh0
Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiAKICAgICBTZXRXZWJQcm9jZXNzSGFzVXBsb2FkcyhXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciBwcm9jZXNzSUQsIGJvb2wgaGFzVXBsb2FkKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBlNDk5MzVjMzI1ZjYuLjFhY2IzNDQ0YWZhMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zNjkxLDExICszNjkx
LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVzZXJBZ2VudChTdHJpbmcmJiB1c2VyQWdlbnQp
CiAgICAgICAgIHJldHVybjsKICAgICBtX3VzZXJBZ2VudCA9IFdURk1vdmUodXNlckFnZW50KTsK
IAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICAvLyBXZSB1cGRhdGUgdGhlIHNlcnZp
Y2Ugd29ya2VyIHRoZXJlIGF0IHRoZSBtb21lbnQgdG8gYmUgc3VyZSB3ZSB1c2UgdmFsdWVzIHVz
ZWQgYnkgYWN0dWFsIHdlYiBwYWdlcy4KICAgICAvLyBGSVhNRTogUmVmYWN0b3IgdGhpcyB3aGVu
IHdlIGhhdmUgYSBiZXR0ZXIgVXNlci1BZ2VudCBzdG9yeS4KLSAgICBwcm9jZXNzKCkucHJvY2Vz
c1Bvb2woKS51cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KG1fdXNlckFnZW50KTsKLSNlbmRp
ZgorICAgIHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnVwZGF0ZVdvcmtlclVzZXJBZ2VudChtX3Vz
ZXJBZ2VudCk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA2NmQ0
OWZhYzNlYTYuLjRiMTliMGQxZDNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcApAQCAtNTI5LDcgKzUyOSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6Omdl
dFdlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJv
CiBib29sIFdlYlByb2Nlc3NQb29sOjpzX3VzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3Mg
PSBmYWxzZTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3
b3JrUHJvY2Vzc1Byb3h5JiBwcm94eSwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURv
bWFpbiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2Vy
dmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25h
bDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVu
dGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiB3ZWJzaXRlRGF0YVN0b3JlID0g
V2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQoc2Vzc2lvbklE
KTsKICAgICBpZiAoIXdlYnNpdGVEYXRhU3RvcmUpCkBAIC01NDYsNyArNTQ2LDcgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKE5ldHdvcmtQcm8KICAgICBpZiAoc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKSB7
CiAgICAgICAgIC8vIFRoaXMgaXMgYSBzZXJ2aWNlIHdvcmtlciBmb3IgYSBzZXJ2aWNlIHdvcmtl
ciBwYWdlIHNvIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIHVzZSB1c2UgdGhlIHBhZ2UncyBXZWJQ
cm9jZXNzIGZvciB0aGUgc2VydmljZSB3b3JrZXIuCiAgICAgICAgIGlmICgoc2VydmljZVdvcmtl
clByb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIoc2Vy
dmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLT5wcm9jZXNzSWRlbnRpZmllcigpKSkpIHsKLSAgICAg
ICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVNlcnZpY2VXb3JrZXJzKHBy
b2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtl
cnMoKSk7CisgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVXb3Jr
ZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgcHJvY2Vzc1Bv
b2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOwogICAgICAg
ICAgICAgaWYgKHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSkg
ewogICAgICAgICAgICAgICAgIHByb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5yZW1vdmVQ
cm9jZXNzKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBXZWJQcm9jZXNzQ2FjaGU6OlNob3Vs
ZFNodXREb3duUHJvY2Vzczo6Tm8pOwogICAgICAgICAgICAgICAgIEFTU0VSVCghc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKTsKQEAgLTU2NCw0MiArNTY0LDky
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBwcm9jZXNzLnB0cigpOwot
ICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlU2VydmljZVdvcmtl
cnMocHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2aWNl
V29ya2VycygpKTsKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJs
ZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBwcm9j
ZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CiAK
ICAgICAgICAgICAgIGlmIChzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0Nh
Y2hlKCkpIHsKICAgICAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hlKCku
cmVtb3ZlUHJvY2Vzcygqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0NhY2hl
OjpTaG91bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIXNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSk7CiAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhTZXJ2
aWNlV29ya2VyLCAiZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzIHJldXNpbmcgYW4gZXhpc3Rpbmcgd2ViIHByb2Nlc3MgKHByb2Nlc3M9JXAsIFBJRD0lZCki
LCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5w
cm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0Vf
TE9HX1NUQVRJQyhTZXJ2aWNlV29ya2VyLCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyByZXVzaW5nIGFuIGV4aXN0aW5nIHdlYiBwcm9jZXNz
IChwcm9jZXNzPSVwLCBQSUQ9JWQpIiwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgc2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmICghc2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eSkgewotICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6
Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMoKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiAg
eyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIGF1dG8g
bmV3UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdlYlBy
b2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgKnByb2Nlc3NQb29sLCBSZWdp
c3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7
CiAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBuZXdQcm9jZXNzUHJveHkucHRy
KCk7CiAKLSAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElDKFNlcnZpY2VX
b3JrZXIsICJlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mg
Y3JlYXRpbmcgYSBuZXcgc2VydmljZSB3b3JrZXIgcHJvY2VzcyAocHJvY2VzPSVwLCBQSUQ9JWQp
Iiwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+
cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9H
X1NUQVRJQyhTZXJ2aWNlV29ya2VyLCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyBjcmVhdGluZyBhIG5ldyBzZXJ2aWNlIHdvcmtlciBwcm9j
ZXNzIChwcm9jZXM9JXAsIFBJRD0lZCkiLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBzZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKIAogICAgICAgICBw
cm9jZXNzUG9vbC0+aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MobmV3UHJvY2Vzc1Byb3h5LCB3ZWJz
aXRlRGF0YVN0b3JlKTsKICAgICAgICAgcHJvY2Vzc1Bvb2wtPm1fcHJvY2Vzc2VzLmFwcGVuZChX
VEZNb3ZlKG5ld1Byb2Nlc3NQcm94eSkpOwogICAgIH0KIAotICAgIEFTU0VSVCghc2VydmljZVdv
cmtlclByb2Nlc3NlcygpLmNvbnRhaW5zKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KSk7Ci0g
ICAgc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2VydmljZVdvcmtlclByb2Nlc3NQcm94
eSk7CisgICAgd29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
KTsKIAotICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZpY2VXb3Jr
ZXJDb250ZXh0KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nl
c3NQb29sLT5tX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wt
Pm1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJsZURv
bWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Ci0gICAgaWYgKCFwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyVXNlckFnZW50Lmlz
TnVsbCgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRTZXJ2aWNlV29y
a2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQpOworICAg
IHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0
KHByb2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bvb2wtPm1fd29ya2Vy
UHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3JvdXAtPnBy
ZWZlcmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdl
SWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmICghcHJvY2Vz
c1Bvb2wtPm1fd29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQorICAgICAgICBzZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5LT5zZXRXb3JrZXJVc2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNl
ckFnZW50KTsKIH0KKyNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVGcm9tU2Vy
dmljZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCit2b2lkIFdlYlBy
b2Nlc3NQb29sOjpyZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYgcHJv
Y2VzcykKIHsKLSAgICBBU1NFUlQoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmNvbnRhaW5zKHBy
b2Nlc3MpKTsKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkucmVtb3ZlKHByb2Nlc3MpOwor
ICAgIEFTU0VSVCh3b3JrZXJQcm9jZXNzZXMoKS5jb250YWlucyhwcm9jZXNzKSk7CisgICAgd29y
a2VyUHJvY2Vzc2VzKCkucmVtb3ZlKHByb2Nlc3MpOworfQorCit2b2lkIFdlYlByb2Nlc3NQb29s
Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6
OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Npb25JRCk7CisgICAgaWYgKCF3ZWJz
aXRlRGF0YVN0b3JlKQorICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOworICAgIGlmICghcHJvY2Vzc1Bvb2xzKCkuc2l6
ZSgpKQorICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPFdlYlByb2Nlc3NQb29sPj4g
c2hhcmVkV29ya2VyUHJvY2Vzc1Bvb2woV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6OlByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCkuZ2V0KCkpKTsKKworICAgIC8vIEFyYml0cmFy
aWx5IGNob29zZSB0aGUgZmlyc3QgcHJvY2VzcyBwb29sIHRvIGhvc3QgdGhlIHNoYXJlZCB3b3Jr
ZXIgcHJvY2Vzcy4KKyAgICBhdXRvKiBwcm9jZXNzUG9vbCA9IHByb2Nlc3NQb29scygpWzBdOwor
ICAgIEFTU0VSVChwcm9jZXNzUG9vbCk7CisKKyAgICBXZWJQcm9jZXNzUHJveHkqIHNoYXJlZFdv
cmtlclByb2Nlc3NQcm94eSB7IG51bGxwdHIgfTsKKworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6
IHByb2Nlc3NQb29sLT5tX3Byb2Nlc3NlcykgeworICAgICAgICBpZiAocHJvY2Vzcy5wdHIoKSA9
PSBwcm9jZXNzUG9vbC0+bV9wcmV3YXJtZWRQcm9jZXNzLmdldCgpIHx8IHByb2Nlc3MtPmlzRHVt
bXlQcm9jZXNzUHJveHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoJnBy
b2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIGlmICghcHJvY2Vzcy0+aXNNYXRjaGluZ1JlZ2lzdHJhYmxl
RG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSA9IHByb2Nlc3MucHRyKCk7CisgICAgICAgIHNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6Oldv
cmtlclR5cGU6OlNoYXJlZFdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOworCisgICAgICAgIGlmIChzaGFyZWRXb3JrZXJQcm9j
ZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSkgeworICAgICAgICAgICAgcHJvY2Vzc1Bvb2wt
PndlYlByb2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nlc3MoKnNoYXJlZFdvcmtlclByb2Nlc3NQcm94
eSwgV2ViUHJvY2Vzc0NhY2hlOjpTaG91bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKKyAgICAgICAg
ICAgIEFTU0VSVCghc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkp
OworICAgICAgICB9CisKKyAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElD
KFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyByZXVzaW5nIGFuIGV4aXN0aW5nIHdlYiBwcm9jZXNzIChwcm9jZXNzPSVw
LCBQSUQ9JWQpIiwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LCBzaGFyZWRXb3JrZXJQcm9jZXNz
UHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBpZiAoIXNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSkgeworICAgICAgICBhdXRvIG5ld1Byb2Nl
c3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yV29ya2VycyhXZWJQcm9jZXNzUHJv
eHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURv
bWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAg
IHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSA9IG5ld1Byb2Nlc3NQcm94eS5wdHIoKTsKKworICAg
ICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoU2hhcmVkV29ya2VyLCAiZXN0
YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIGNyZWF0
aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nlc3M9JXAsIFBJRD0lZCkiLCBz
aGFyZWRXb3JrZXJQcm9jZXNzUHJveHksIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+cHJvY2Vz
c0lkZW50aWZpZXIoKSk7CisKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmluaXRpYWxpemVOZXdXZWJQ
cm9jZXNzKG5ld1Byb2Nlc3NQcm94eSwgd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIHByb2Nl
c3NQb29sLT5tX3Byb2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdQcm9jZXNzUHJveHkpKTsKKyAg
ICB9CisKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNoYXJlZFdvcmtlclByb2Nlc3NQcm94
eSk7CisKKyAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNoYXJlZFdvcmtl
ckNvbnRleHQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNzUG9vbC0+
bV93b3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVsdFBhZ2VH
cm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJsZURvbWFpbiwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFn
ZW50LmlzTnVsbCgpKQorICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPnNldFdvcmtl
clVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV93b3JrZXJVc2VyQWdlbnQpOwogfQotI2VuZGlmCiAK
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQo
KQogewpAQCAtMTAwMywxMCArMTA1Myw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5l
Y3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIAogICAgIG1fYmFja0ZvcndhcmRD
YWNoZS0+cmVtb3ZlRW50cmllc0ZvclByb2Nlc3MocHJvY2Vzcyk7CiAKLSNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCi0gICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkK
LSAgICAgICAgcmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7Ci0jZW5k
aWYKKyAgICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdXb3JrZXJzKCkpCisgICAgICAgIHJlbW92ZUZy
b21Xb3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7CiAKICAgICBzdGF0aWNfY2FzdDxXZWJDb250ZXh0
U3VwcGxlbWVudCo+KHN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpLT5w
cm9jZXNzRGlkQ2xvc2UoJnByb2Nlc3MpOwogCkBAIC0xMDY3LDEyICsxMTE1LDEyIEBAIFJlZjxX
ZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21h
aW4oV2Vic2l0ZURhdGFTdG9yCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1Vc2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIFdlYlByb2Nlc3NQb29sOjp1c2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKQorVXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllciBXZWJQcm9jZXNzUG9vbDo6dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
ZmllckZvcldvcmtlcnMoKQogewotICAgIGlmICghbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JT
ZXJ2aWNlV29ya2VyKQotICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclNlcnZpY2VX
b3JrZXIgPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKCk7CisgICAgaWYg
KCFtX3VzZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtlcnMpCisgICAgICAgIG1fdXNlckNvbnRl
bnRDb250cm9sbGVyRm9yV29ya2VycyA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojpj
cmVhdGUoKTsKIAotICAgIHJldHVybiBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclNlcnZpY2VX
b3JrZXItPmlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gbV91c2VyQ29udGVudENvbnRyb2xsZXJG
b3JXb3JrZXJzLT5pZGVudGlmaWVyKCk7CiB9CiAjZW5kaWYKIApAQCAtMTExOSwxNSArMTE2Nywx
MyBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdl
Q2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogCiAgICAgYXV0byBwYWdlID0gcHJvY2Vzcy0+
Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAK
LSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJQcmVm
ZXJlbmNlcykgewotICAgICAgICBtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA9IHBhZ2UtPnBy
ZWZlcmVuY2VzU3RvcmUoKTsKLSAgICAgICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2VyUHJvY2Vz
cyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSkKLSAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzLnVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKCptX3NlcnZpY2VXb3Jr
ZXJQcmVmZXJlbmNlcyk7CisgICAgaWYgKCFtX3dvcmtlclByZWZlcmVuY2VzKSB7CisgICAgICAg
IG1fd29ya2VyUHJlZmVyZW5jZXMgPSBwYWdlLT5wcmVmZXJlbmNlc1N0b3JlKCk7CisgICAgICAg
IGZvciAoYXV0byYgd29ya2VyUHJvY2VzcyA6IHdvcmtlclByb2Nlc3NlcygpKQorICAgICAgICAg
ICAgd29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKCptX3dvcmtlclBy
ZWZlcmVuY2VzKTsKICAgICB9CiAgICAgaWYgKHVzZXJDb250ZW50Q29udHJvbGxlcikKLSAgICAg
ICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyID0gdXNlckNvbnRlbnRD
b250cm9sbGVyOwotI2VuZGlmCisgICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29y
a2VycyA9IHVzZXJDb250ZW50Q29udHJvbGxlcjsKIAogICAgIGJvb2wgZW5hYmxlUHJvY2Vzc1N3
YXBPbkNyb3NzU2l0ZU5hdmlnYXRpb24gPSBwYWdlLT5wcmVmZXJlbmNlcygpLnByb2Nlc3NTd2Fw
T25Dcm9zc1NpdGVOYXZpZ2F0aW9uRW5hYmxlZCgpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CkBAIC0xMTUwLDE2ICsxMTk2LDE0IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29s
OjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAgICAgcmV0
dXJuIHBhZ2U7CiB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nl
c3NQb29sOjp1cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0
cmluZyYgdXNlckFnZW50KQogewotICAgIGlmIChtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQgPT0g
dXNlckFnZW50KQorICAgIGlmIChtX3dvcmtlclVzZXJBZ2VudCA9PSB1c2VyQWdlbnQpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQgPSB1c2VyQWdlbnQ7Ci0g
ICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNz
ZXMoKSkKLSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3Muc2V0U2VydmljZVdvcmtlclVzZXJB
Z2VudChtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQpOworICAgIG1fd29ya2VyVXNlckFnZW50ID0g
dXNlckFnZW50OworICAgIGZvciAoYXV0byYgd29ya2VyUHJvY2VzcyA6IHdvcmtlclByb2Nlc3Nl
cygpKQorICAgICAgICB3b3JrZXJQcm9jZXNzLnNldFdvcmtlclVzZXJBZ2VudChtX3dvcmtlclVz
ZXJBZ2VudCk7CiB9Ci0jZW5kaWYKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUJlZ2luVXNp
bmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJzaXRl
RGF0YVN0b3JlJiBkYXRhU3RvcmUpCiB7CkBAIC0xNTM4LDggKzE1ODIsMTMgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6dGVybWluYXRlU2VydmljZVdvcmtlcnMoKQogewogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07Ci0gICAgd2hpbGUg
KHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb21wdXRlU2l6ZSgpKQotICAgICAgICBzZXJ2aWNl
V29ya2VyUHJvY2Vzc2VzKCkuYmVnaW4oKS0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAg
VmVjdG9yPFJlZjxXZWJQcm9jZXNzUHJveHk+PiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOworICAg
IHdvcmtlclByb2Nlc3NlcygpLmZvckVhY2goWyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICAgICAg
aWYgKHByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKKyAgICAgICAgICAgIHNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMuYXBwZW5kKHByb2Nlc3MpOworICAgIH0pOworICAgIGZvciAoYXV0
byYgc2VydmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKQorICAgICAg
ICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpX
b3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgogfQogCkBAIC0xNzY3LDEzICsxODE2
LDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcG9ydFdlYkNvbnRlbnRDUFVUaW1lKFNlY29u
ZHMgY3B1VGltZSwgdWludDY0X3QgYWN0aXZpdHlTCiAjZW5kaWYKIH0KIAotI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKLVdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIFdlYlByb2Nlc3NQ
b29sOjpzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkKK1dlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94
eT4mIFdlYlByb2Nlc3NQb29sOjp3b3JrZXJQcm9jZXNzZXMoKQogewogICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+PiBwcm9jZXNzZXM7CiAgICAg
cmV0dXJuIHByb2Nlc3NlczsKIH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRh
dGVQcm9jZXNzQXNzZXJ0aW9ucygpCiB7CkBAIC0xNzg1LDIwICsxODMyLDI1IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkKICAgICBpZiAoYXV0byogZ3B1
UHJvY2VzcyA9IEdQVVByb2Nlc3NQcm94eTo6c2luZ2xldG9uSWZDcmVhdGVkKCkpCiAgICAgICAg
IGdwdVByb2Nlc3MtPnVwZGF0ZVByb2Nlc3NBc3NlcnRpb24oKTsKICNlbmRpZgotI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKKwogICAgIC8vIENoZWNrIG9uIG5leHQgcnVuIGxvb3Agc2luY2Ug
dGhlIHdlYiBwcm9jZXNzIHByb3h5IHRva2VucyBhcmUgcHJvYmFibHkgYmVpbmcgdXBkYXRlZC4K
ICAgICBjYWxsT25NYWluUnVuTG9vcChbXSB7Ci0gICAgICAgIGZvciAoYXV0byYgc2VydmljZVdv
cmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkpCi0gICAgICAgICAgICBzZXJ2
aWNlV29ya2VyUHJvY2Vzcy51cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOwot
ICAgIH0pOworICAgICAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFtdKGF1dG8mIHdvcmtl
clByb2Nlc3MpIHsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgICAgICAgICBpZiAo
d29ya2VyUHJvY2Vzcy5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQorICAgICAgICAgICAgICAg
IHdvcmtlclByb2Nlc3MudXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXZWJQcm9jZXNzUHJv
eHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogI2VuZGlmCisgICAgICAgICAgICBpZiAo
d29ya2VyUHJvY2Vzcy5pc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkpCisgICAgICAgICAgICAgICAg
d29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdlYlByb2Nlc3NQcm94
eTo6V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAK
IGJvb2wgV2ViUHJvY2Vzc1Bvb2w6OmlzU2VydmljZVdvcmtlclBhZ2VJRChXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAg
ICAgLy8gRklYTUU6IFRoaXMgaXMgaW5lZmZpY2llbnQuCi0gICAgcmV0dXJuIFdURjo6YW55T2Yo
c2VydmljZVdvcmtlclByb2Nlc3NlcygpLCBbcGFnZUlEXShhdXRvJiBwcm9jZXNzKSB7CisgICAg
cmV0dXJuIFdURjo6YW55T2Yod29ya2VyUHJvY2Vzc2VzKCksIFtwYWdlSURdKGF1dG8mIHByb2Nl
c3MpIHsKICAgICAgICAgcmV0dXJuIHByb2Nlc3MuaGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShw
YWdlSUQpOwogICAgIH0pOwogI2VuZGlmCkBAIC0yMTI0LDE2ICsyMTc2LDI2IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnNldFVzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoYm9vbCB1c2VT
ZXBhcmF0ZVNlcnZpY2VXCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCitzaXplX3Qg
V2ViUHJvY2Vzc1Bvb2w6OnNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25zdAoreworICAg
IHVuc2lnbmVkIGNvdW50ID0gMDsKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFsmXShh
dXRvJiBwcm9jZXNzKSB7CisgICAgICAgIGlmIChwcm9jZXNzLmlzUnVubmluZ1NlcnZpY2VXb3Jr
ZXJzKCkpCisgICAgICAgICAgICArK2NvdW50OworICAgIH0pOworICAgIHJldHVybiBjb3VudDsK
K30KKwogYm9vbCBXZWJQcm9jZXNzUG9vbDo6aGFzU2VydmljZVdvcmtlckZvcmVncm91bmRBY3Rp
dml0eUZvclRlc3RpbmcoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6OmFueU9mKHNlcnZpY2VX
b3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2VzcykgeworICAgIHJldHVybiBXVEY6OmFu
eU9mKHdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVy
biBwcm9jZXNzLmhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCk7
CiAgICAgfSk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6Omhhc1NlcnZpY2VXb3JrZXJCYWNr
Z3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjphbnlP
ZihzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICByZXR1
cm4gV1RGOjphbnlPZih3b3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2VzcykgewogICAg
ICAgICByZXR1cm4gcHJvY2Vzcy5oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9y
VGVzdGluZygpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmgKaW5kZXggNDMyYzY1ZWU5OTQ5Li5lNzBiNmY0MjlmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMzc0LDE3ICszNzQsMjAgQEAgcHVibGljOgog
ICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NEaWRUZXJtaW5hdGUoTmV0d29ya1Byb2Nlc3NQcm94eSYs
IE5ldHdvcmtQcm9jZXNzUHJveHk6OlRlcm1pbmF0aW9uUmVhc29uKTsKIAogICAgIGJvb2wgaXNT
ZXJ2aWNlV29ya2VyUGFnZUlEKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpIGNvbnN0OworICAgIHZv
aWQgcmVtb3ZlRnJvbVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmKTsKKwogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFM
OjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCByZW1v
dmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmKTsKLSAgICBzaXpl
X3Qgc2VydmljZVdvcmtlclByb3hpZXNDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzZXMoKS5jb21wdXRlU2l6ZSgpOyB9Ci0gICAgdm9pZCB1cGRhdGVTZXJ2aWNlV29y
a2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKLSAgICBVc2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyIHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2
aWNlV29ya2VycygpOworICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
Jiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmll
cj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICBzaXplX3Qgc2VydmljZVdvcmtlclByb3hpZXNDb3Vu
dCgpIGNvbnN0OworICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgdXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKTsKICAgICBib29sIGhhc1NlcnZpY2VX
b3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNT
ZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0OwogI2VuZGlm
CiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyUHJvY2Vzc0NyYXNoZWQoV2ViUHJvY2Vzc1Byb3h5Jik7
CiAKKyAgICB2b2lkIHVwZGF0ZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCk7CisgICAgc3RhdGljIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vz
c2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkgY29uc3Q7CiAjZW5kaWYK
QEAgLTYxOCwxMyArNjIxLDExIEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lv
bklELCBXZWFrUHRyPFdlYlByb2Nlc3NQcm94eT4+IG1fZHVtbXlQcm9jZXNzUHJveGllczsgLy8g
TGlnaHR3ZWlnaHQgV2ViUHJvY2Vzc1Byb3h5IG9iamVjdHMgd2l0aG91dCBiYWNraW5nIHByb2Nl
c3MuCiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgc3RhdGljIFdlYWtIYXNoU2V0
PFdlYlByb2Nlc3NQcm94eT4mIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKTsKLSAgICBib29sIG1f
d2FpdGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNlIH07Ci0gICAg
U3RyaW5nIG1fc2VydmljZVdvcmtlclVzZXJBZ2VudDsKLSAgICBzdGQ6Om9wdGlvbmFsPFdlYlBy
ZWZlcmVuY2VzU3RvcmU+IG1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzOwotICAgIFJlZlB0cjxX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JT
ZXJ2aWNlV29ya2VyOwotI2VuZGlmCisgICAgc3RhdGljIFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQ
cm94eT4mIHdvcmtlclByb2Nlc3NlcygpOworCisgICAgc3RkOjpvcHRpb25hbDxXZWJQcmVmZXJl
bmNlc1N0b3JlPiBtX3dvcmtlclByZWZlcmVuY2VzOworICAgIFJlZlB0cjxXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eT4gbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JXb3JrZXJzOworICAg
IFN0cmluZyBtX3dvcmtlclVzZXJBZ2VudDsKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAg
ICBSZWZQdHI8R1BVUHJvY2Vzc1Byb3h5PiBtX2dwdVByb2Nlc3M7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzYmJlMDNhN2RhZTIuLjE4YWYzNDZm
ZGIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBA
IC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNpbmNsdWRlICJXZWJzaXRl
RGF0YUZldGNoT3B0aW9uLmgiCkBAIC0xODIsMTEgKzE4MywxMSBAQCBSZWY8V2ViUHJvY2Vzc1By
b3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2ws
IFdlYnNpdAogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotUmVmPFdlYlByb2Nlc3NQ
cm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JTZXJ2aWNlV29ya2VycyhXZWJQcm9jZXNz
UG9vbCYgcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4s
IFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCitSZWY8V2ViUHJvY2Vzc1Byb3h5
PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvcldvcmtlcnMoV29ya2VyVHlwZSB3b3JrZXJUeXBl
LCBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0
cmFibGVEb21haW4sIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCiB7CiAgICAg
YXV0byBwcm94eSA9IGFkb3B0UmVmKCpuZXcgV2ViUHJvY2Vzc1Byb3h5KHByb2Nlc3NQb29sLCAm
d2Vic2l0ZURhdGFTdG9yZSwgSXNQcmV3YXJtZWQ6Ok5vLCBDcm9zc09yaWdpbk1vZGU6OlNoYXJl
ZCwgQ2FwdGl2ZVBvcnRhbE1vZGU6OkRpc2FibGVkKSk7CiAgICAgcHJveHktPm1fcmVnaXN0cmFi
bGVEb21haW4gPSBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKLSAgICBwcm94eS0+ZW5hYmxl
U2VydmljZVdvcmtlcnMocHJvY2Vzc1Bvb2wudXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
ckZvclNlcnZpY2VXb3JrZXJzKCkpOworICAgIHByb3h5LT5lbmFibGVXb3JrZXJzKHdvcmtlclR5
cGUsIHByb2Nlc3NQb29sLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJz
KCkpOwogICAgIHByb3h5LT5jb25uZWN0KCk7CiAgICAgcmV0dXJuIHByb3h5OwogfQpAQCAtOTk1
LDEwICs5OTYsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZEJlY29tZVVucmVzcG9uc2l2
ZSgpCiAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGlzUmVzcG9uc2l2ZUNhbGxiYWNrcykKICAg
ICAgICAgY2FsbGJhY2soaXNXZWJQcm9jZXNzUmVzcG9uc2l2ZSk7CiAKLSAgICAvLyBJZiB0aGUg
d2ViIHByb2Nlc3MgYmVjb21lcyB1bnJlc3BvbnNpdmUgYW5kIG9ubHkgcnVucyBzZXJ2aWNlIHdv
cmtlcnMsIGtpbGwgaXQgb3Vyc2VsdmVzIHNpbmNlIHRoZXJlIGFyZSBubyBuYXRpdmUgY2xpZW50
cyB0byBkbyBpdC4KLSAgICBpZiAoaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSAmJiBtX3BhZ2VN
YXAuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPR19FUlJP
UihQZXJmb3JtYW5jZUxvZ2dpbmcsICJkaWRCZWNvbWVVbnJlc3BvbnNpdmU6IFRlcm1pbmF0aW5n
IHNlcnZpY2Ugd29ya2VyLW9ubHkgd2ViIHByb2Nlc3MgYmVjYXVzZSBpdCBpcyB1bnJlc3BvbnNp
dmUiKTsKLSAgICAgICAgZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgLy8gSWYgdGhlIHdl
YiBwcm9jZXNzIGJlY29tZXMgdW5yZXNwb25zaXZlIGFuZCBvbmx5IHJ1bnMgc2VydmljZS9zaGFy
ZWQgd29ya2Vycywga2lsbCBpdCBvdXJzZWx2ZXMgc2luY2UgdGhlcmUgYXJlIG5vIG5hdGl2ZSBj
bGllbnRzIHRvIGRvIGl0LgorICAgIGlmIChpc1J1bm5pbmdXb3JrZXJzKCkgJiYgbV9wYWdlTWFw
LmlzRW1wdHkoKSkgeworICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0dfRVJST1Io
UGVyZm9ybWFuY2VMb2dnaW5nLCAiZGlkQmVjb21lVW5yZXNwb25zaXZlOiBUZXJtaW5hdGluZyB3
b3JrZXItb25seSB3ZWIgcHJvY2VzcyBiZWNhdXNlIGl0IGlzIHVucmVzcG9uc2l2ZSIpOworICAg
ICAgICBkaXNhYmxlV29ya2Vycyh7IFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIFdvcmtlclR5
cGU6OlNoYXJlZFdvcmtlciB9KTsKICAgICAgICAgdGVybWluYXRlKCk7CiAgICAgfQogfQpAQCAt
MTY5NCw4ICsxNjk1LDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkRm9yTWFpbkZyYW1lKGNvbnN0IFVSTCYgdXJsKQogICAgIGF1dG8gcmVnaXN0cmFibGVE
b21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9OwogICAgIGlmIChtX3Jl
Z2lzdHJhYmxlRG9tYWluICYmICptX3JlZ2lzdHJhYmxlRG9tYWluICE9IHJlZ2lzdHJhYmxlRG9t
YWluKSB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgICAgICBkaXNhYmxlU2Vydmlj
ZVdvcmtlcnMoKTsKKyAgICAgICAgZGlzYWJsZVdvcmtlcnMoV29ya2VyVHlwZTo6U2VydmljZVdv
cmtlcik7CiAjZW5kaWYKKwogICAgICAgICAvLyBOdWxsIG91dCByZWdpc3RyYWJsZSBkb21haW4g
c2luY2UgdGhpcyBwcm9jZXNzIGhhcyBub3cgYmVlbiB1c2VkIGZvciBzZXZlcmFsIGRvbWFpbnMu
CiAgICAgICAgIG1fcmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biB7IH07CiAgICAgICAgIHJldHVybjsKQEAgLTE4NjEsNjMgKzE4NjMsODUgQEAgdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OmVuZEJhY2tncm91bmRBY3Rpdml0eUZvckZ1bGxzY3JlZW5JbnB1dCgpCiAK
ICNlbmRpZgogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmIHN0b3JlLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIHN0
ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3Jr
ZXJQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQotewotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZXN0
YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQ6IFN0YXJ0ZWQiKTsKLSAgICBtYXJrUHJvY2Vzc0Fz
UmVjZW50bHlVc2VkKCk7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzOjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyBw
cm9jZXNzUG9vbCgpLmRlZmF1bHRQYWdlR3JvdXAoKS5wYWdlR3JvdXBJRCgpLCBtX3NlcnZpY2VX
b3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VQcm94eUlELCBtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VJRCwgc3RvcmUsIHJlZ2lzdHJhYmxlRG9t
YWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uLT5pbml0aWFsaXphdGlvbkRhdGEgfSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7Ci0gICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgIFdFQlBST0NFU1NQ
Uk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQ6
IEZpbmlzaGVkIik7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgfSwgMCk7Ci19
Ci0KLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0
IFN0cmluZyYgdXNlckFnZW50KQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldFdvcmtlclVzZXJB
Z2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKIHsKLSAgICBBU1NFUlQobV9zZXJ2aWNlV29y
a2VySW5mb3JtYXRpb24pOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2VyQWdlbnQgfSwgMCk7CisjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQorICAgIGlmIChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKKyAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlNldFVzZXJB
Z2VudCB7IHVzZXJBZ2VudCB9LCAwKTsKKyNlbmRpZgorICAgIGlmIChtX3NoYXJlZFdvcmtlcklu
Zm9ybWF0aW9uKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OlNldFVzZXJBZ2VudCB7IHVzZXJBZ2VudCB9LCAwKTsKIH0KIAot
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3Jl
KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQordm9pZCBXZWJQcm9jZXNzUHJveHk6
OnVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYg
c3RvcmUpCiB7Ci0gICAgQVNTRVJUKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlUHJlZmVy
ZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDApOworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAg
ICBpZiAobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpVcGRhdGVQcmVmZXJlbmNlc1N0b3JlIHsg
c3RvcmUgfSwgMCk7CisjZW5kaWYKKyAgICBpZiAobV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbikK
KyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpVcGRhdGVQcmVmZXJlbmNlc1N0b3JlIHsgc3RvcmUgfSwgMCk7CiB9CiAKLXZvaWQg
V2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpCisv
LyBGSVhNRTogQ2xpZW50cyBkbyBub3QgcHJvcGVybHkgZ2V0IHBvcHVsYXRlZCBpbiBtX3NoYXJl
ZFdvcmtlckluZm9ybWF0aW9uLgordm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclBy
b2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZSB3b3JrZXJUeXBlKQogewotICAgIFdFQlBST0NFU1NQ
Uk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzQXNzZXJ0aW9uOiIpOwotICAgIEFTU0VSVChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlv
bik7Ci0gICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKKyAgICBhdXRvJiB3b3Jr
ZXJJbmZvcm1hdGlvbiA9IHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8g
bV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA6IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOwor
ICAgIEFTU0VSVCh3b3JrZXJJbmZvcm1hdGlvbik7CisgICAgaWYgKCF3b3JrZXJJbmZvcm1hdGlv
bikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBzaG91bGRUYWtlRm9yZWdyb3VuZEFjdGl2
aXR5ID0gV1RGOjphbnlPZihtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vz
c2VzLCBbJl0oYXV0byYgcHJvY2VzcykgeworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xP
RyhQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb246IHdvcmtl
clR5cGU9JXtwdWJsaWN9cyIsIHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVkV29ya2Vy
ID8gInNoYXJlZCIgOiAic2VydmljZSIpOworCisgICAgYm9vbCBzaG91bGRUYWtlRm9yZWdyb3Vu
ZEFjdGl2aXR5ID0gV1RGOjphbnlPZih3b3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2Vz
LCBbJl0oYXV0byYgcHJvY2VzcykgewogICAgICAgICByZXR1cm4gJnByb2Nlc3MgIT0gdGhpcyAm
JiAhIXByb2Nlc3MubV9mb3JlZ3JvdW5kVG9rZW47CiAgICAgfSk7CiAgICAgaWYgKHNob3VsZFRh
a2VGb3JlZ3JvdW5kQWN0aXZpdHkpIHsKLSAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjpp
c1ZhbGlkRm9yZWdyb3VuZEFjdGl2aXR5KG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rp
dml0eSkpCi0gICAgICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkg
PSBtX3Rocm90dGxlci5mb3JlZ3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2VyIGZvciBmb3Jl
Z3JvdW5kIHZpZXcocykiX3MpOworICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFs
aWRGb3JlZ3JvdW5kQWN0aXZpdHkod29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKKyAgICAg
ICAgICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmZvcmVncm91
bmRBY3Rpdml0eSgiV29ya2VyIGZvciBmb3JlZ3JvdW5kIHZpZXcocykiX3MpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgYm9vbCBzaG91bGRUYWtlQmFja2dyb3VuZEFjdGl2aXR5ID0g
V1RGOjphbnlPZihtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2VzLCBb
Jl0oYXV0byYgcHJvY2VzcykgeworICAgIGJvb2wgc2hvdWxkVGFrZUJhY2tncm91bmRBY3Rpdml0
eSA9IFdURjo6YW55T2Yod29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3NlcywgWyZdKGF1
dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuICZwcm9jZXNzICE9IHRoaXMgJiYgISFwcm9j
ZXNzLm1fYmFja2dyb3VuZFRva2VuOwogICAgIH0pOwogICAgIGlmIChzaG91bGRUYWtlQmFja2dy
b3VuZEFjdGl2aXR5KSB7Ci0gICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEJh
Y2tncm91bmRBY3Rpdml0eShtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQot
ICAgICAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJv
dHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3IgYmFja2dyb3VuZCB2
aWV3KHMpIl9zKTsKKyAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkQmFja2dy
b3VuZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCisgICAgICAgICAgICB3
b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZp
dHkoIldvcmtlciBmb3IgYmFja2dyb3VuZCB2aWV3KHMpIl9zKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGlmIChtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZykg
eworICAgIGlmICh3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIgJiYgbV9o
YXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcpIHsKICAgICAgICAgV0VCUFJPQ0VT
U1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiU2VydmljZSBXb3JrZXIgZm9y
IGJhY2tncm91bmQgcHJvY2Vzc2luZyIpOwotICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6
OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFj
dGl2aXR5KSkKLSAgICAgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0
eSA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJh
Y2tncm91bmQgcHJvY2Vzc2luZyJfcyk7CisgICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6
aXNWYWxpZEJhY2tncm91bmRBY3Rpdml0eSh3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQor
ICAgICAgICAgICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuYmFj
a2dyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3IgYmFja2dyb3VuZCBwcm9jZXNzaW5n
Il9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fc2VydmljZVdvcmtlckluZm9y
bWF0aW9uLT5hY3Rpdml0eSA9IG51bGxwdHI7CisgICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2
aXR5ID0gbnVsbHB0cjsKK30KKwordm9pZCBXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNoYXJl
ZFdvcmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNF
X0xPRyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0OiBTdGFydGVk
Iik7CisgICAgbWFya1Byb2Nlc3NBc1JlY2VudGx5VXNlZCgpOworICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bvb2woKS5kZWZhdWx0UGFnZUdyb3Vw
KCkucGFnZUdyb3VwSUQoKSwgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbi0+d29ya2VyUGFnZVBy
b3h5SUQsIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24tPndvcmtlclBhZ2VJRCwgc3RvcmUsIHJl
Z2lzdHJhYmxlRG9tYWluLCBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uLT5pbml0aWFsaXphdGlv
bkRhdGEgfSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAg
IGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhT
aGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0OiBGaW5pc2hlZCIpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0sIDApOworfQorCisjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VX
b3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFdFQlBS
T0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNv
bnRleHQ6IFN0YXJ0ZWQiKTsKKyAgICBtYXJrUHJvY2Vzc0FzUmVjZW50bHlVc2VkKCk7CisgICAg
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hTZXJ2aWNl
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bvb2woKS5k
ZWZhdWx0UGFnZUdyb3VwKCkucGFnZUdyb3VwSUQoKSwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24tPndvcmtlclBhZ2VQcm94eUlELCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+d29ya2Vy
UGFnZUlELCBzdG9yZSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRp
ZmllciwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmluaXRpYWxpemF0aW9uRGF0YSB9LCBb
dGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHdlYWtU
aGlzKQorICAgICAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJl
c3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dDogRmluaXNoZWQiKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKKyAgICB9LCAwKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJl
Z2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkK
QEAgLTE5MjcsNyArMTk1MSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCiAKICAgICBXRUJQ
Uk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgInJlZ2lzdGVyU2VydmljZVdv
cmtlckNsaWVudFByb2Nlc3M6IGNsaWVudFByb2Nlc3M9JXAsIGNsaWVudFBJRD0lZCIsICZwcm94
eSwgcHJveHkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3Jt
YXRpb24tPmNsaWVudFByb2Nlc3Nlcy5hZGQocHJveHkpOwotICAgIHVwZGF0ZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihX
b3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVu
cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb3h5
KQpAQCAtMTkzNyw3ICsxOTYxLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVucmVnaXN0ZXJT
ZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb3gKIAogICAgIFdF
QlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAidW5yZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnRQcm9jZXNzOiBjbGllbnRQcm9jZXNzPSVwLCBjbGllbnRQSUQ9JWQiLCAm
cHJveHksIHByb3h5LnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgIG1fc2VydmljZVdvcmtlcklu
Zm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMucmVtb3ZlKHByb3h5KTsKLSAgICB1cGRhdGVTZXJ2
aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOworICAgIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3Nl
cnRpb24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1By
b3h5OjpoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0
CkBAIC0xOTU3LDcgKzE5ODEsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c3RhcnRTZXJ2aWNl
V29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoKQogCiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVB
U0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAic3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFBy
b2Nlc3NpbmciKTsKICAgICBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyA9
IHRydWU7Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKKyAgICB1
cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwog
fQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9j
ZXNzaW5nKCkKQEAgLTE5NjcsMjMgKzE5OTEsMzkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVu
ZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZygpCiAKICAgICBXRUJQUk9DRVNTUFJP
WFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJlbmRTZXJ2aWNlV29ya2VyQmFja2dy
b3VuZFByb2Nlc3NpbmciKTsKICAgICBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vz
c2luZyA9IGZhbHNlOwotICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7
CisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlOjpTZXJ2aWNlV29y
a2VyKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKLXZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjpkaXNhYmxlU2VydmljZVdvcmtlcnMoKQordm9pZCBXZWJQcm9jZXNzUHJveHk6
OmRpc2FibGVXb3JrZXJzKE9wdGlvblNldDxXb3JrZXJUeXBlPiB3b3JrZXJUeXBlKQogewotICAg
IGlmICghbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAgQVNTRVJUKCF3b3JrZXJUeXBl
LmlzRW1wdHkoKSk7CisKKyAgICBib29sIGRpZENoYW5nZSA9IGZhbHNlOworICAgIGlmICh3b3Jr
ZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpICYmIG1fc2VydmljZVdv
cmtlckluZm9ybWF0aW9uKSB7CisgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uID0g
eyB9OworICAgICAgICBkaWRDaGFuZ2UgPSB0cnVlOworICAgIH0KKyAgICBpZiAod29ya2VyVHlw
ZS5jb250YWlucyhXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpICYmIG1fc2hhcmVkV29ya2VySW5m
b3JtYXRpb24pIHsKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA9IHsgfTsKKyAg
ICAgICAgZGlkQ2hhbmdlID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKCFkaWRDaGFuZ2UpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29y
a2VyLCAiZGlzYWJsZVNlcnZpY2VXb3JrZXJzOiIpOwotICAgIG1fc2VydmljZVdvcmtlckluZm9y
bWF0aW9uID0geyB9OworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzLCAi
ZGlzYWJsZVdvcmtlcnM6IERpc2FibGluZyB3b3JrZXJzIChTaGFyZWRXb3JrZXJzPSVkLCBTZXJ2
aWNlV29ya2Vycz0lZCkiLCB3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNoYXJlZFdv
cmtlciksIHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikpOwor
CiAgICAgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKIAorICAgIGlmICgh
aXNSdW5uaW5nV29ya2VycygpKQorICAgICAgICBwcm9jZXNzUG9vbCgpLnJlbW92ZUZyb21Xb3Jr
ZXJQcm9jZXNzZXMoKnRoaXMpOworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHBy
b2Nlc3NQb29sKCkucmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKnRoaXMpOwotICAg
IHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9zZSB7IH0s
IDApOworICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNlcnZpY2VXb3Jr
ZXIpKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6Q2xvc2UgeyB9LCAwKTsKICNlbmRpZgorICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdv
cmtlclR5cGU6OlNoYXJlZFdvcmtlcikpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q2xvc2UgeyB9LCAwKTsKIAogICAgIG1h
eWJlU2h1dERvd24oKTsKIH0KQEAgLTIwMDQsMTEgKzIwNDQsMTMgQEAgc3RhdGljIFZlY3Rvcjxz
dGQ6OnBhaXI8V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLCBVUkw+PiBjb250ZW50UnVs
ZUxpc3RzRnIKIH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlU2Vydmlj
ZVdvcmtlcnMoY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYgdXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllcikKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVXb3Jr
ZXJzKFdvcmtlclR5cGUgd29ya2VyVHlwZSwgY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllciYgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKIHsKLSAgICBBU1NFUlQo
IW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsKLSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFT
RV9MT0coU2VydmljZVdvcmtlciwgImVuYWJsZVNlcnZpY2VXb3JrZXJzOiIpOwotICAgIG1fc2Vy
dmljZVdvcmtlckluZm9ybWF0aW9uID0gU2VydmljZVdvcmtlckluZm9ybWF0aW9uIHsKKyAgICBX
RUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgImVuYWJsZVdvcmtlcnM6
IHdvcmtlclR5cGU9JXUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4od29ya2VyVHlwZSkpOworICAg
IGF1dG8mIHdvcmtlckluZm9ybWF0aW9uID0gd29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFy
ZWRXb3JrZXIgPyBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIDogbV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb247CisgICAgQVNTRVJUKCF3b3JrZXJJbmZvcm1hdGlvbik7CisKKyAgICB3b3JrZXJJ
bmZvcm1hdGlvbiA9IFdvcmtlckluZm9ybWF0aW9uIHsKICAgICAgICAgV2ViUGFnZVByb3h5SWRl
bnRpZmllcjo6Z2VuZXJhdGUoKSwKICAgICAgICAgUGFnZUlkZW50aWZpZXI6OmdlbmVyYXRlKCks
CiAgICAgICAgIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgewpAQCAtMjAyMSw5ICsy
MDYzLDggQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVNlcnZpY2VXb3JrZXJzKGNvbnN0
IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIKICAgICAgICAgeyB9CiAgICAgfTsKICAg
ICB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwotI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOwot
I2VuZGlmCisKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKHdvcmtlclR5cGUpOwog
fQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlU2xlZXBEaXNhYmxlcihTbGVlcERp
c2FibGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgYm9vbCBk
aXNwbGF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCBm
NTE0Yjk5MTZhZDQuLjE5MmQ1ZDJiNmY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmgKQEAgLTEzNiw5ICsxMzYsMTMgQEAgcHVibGljOgogCiAgICAgZW51bSBj
bGFzcyBTaG91bGRMYXVuY2hQcm9jZXNzIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBlbnVtIGNs
YXNzIENhcHRpdmVQb3J0YWxNb2RlIDogYm9vbCB7IERpc2FibGVkLCBFbmFibGVkIH07CisgICAg
ZW51bSBjbGFzcyBXb3JrZXJUeXBlIDogdWludDMyX3QgeworICAgICAgICBTZXJ2aWNlV29ya2Vy
ID0gMSA8PCAwLAorICAgICAgICBTaGFyZWRXb3JrZXIgPSAxIDw8IDEKKyAgICB9OwogCiAgICAg
c3RhdGljIFJlZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCYsIFdlYnNp
dGVEYXRhU3RvcmUqLCBDYXB0aXZlUG9ydGFsTW9kZSwgSXNQcmV3YXJtZWQsIFdlYkNvcmU6OkNy
b3NzT3JpZ2luTW9kZSA9IFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZTo6U2hhcmVkLCBTaG91bGRM
YXVuY2hQcm9jZXNzID0gU2hvdWxkTGF1bmNoUHJvY2Vzczo6WWVzKTsKLSAgICBzdGF0aWMgUmVm
PFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlRm9yU2VydmljZVdvcmtlcnMoV2ViUHJvY2Vzc1Bvb2wm
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBXZWJzaXRlRGF0YVN0b3JlJik7CisgICAg
c3RhdGljIFJlZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZUZvcldvcmtlcnMoV29ya2VyVHlwZSwg
V2ViUHJvY2Vzc1Bvb2wmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBXZWJzaXRlRGF0
YVN0b3JlJik7CiAKICAgICB+V2ViUHJvY2Vzc1Byb3h5KCk7CiAKQEAgLTE2MSw4ICsxNjUsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc0luUHJvY2Vzc0NhY2hlKGJvb2wsIFdpbGxTaHV0RG93
biA9IFdpbGxTaHV0RG93bjo6Tm8pOwogICAgIGJvb2wgaXNJblByb2Nlc3NDYWNoZSgpIGNvbnN0
IHsgcmV0dXJuIG1faXNJblByb2Nlc3NDYWNoZTsgfQogCi0gICAgdm9pZCBlbmFibGVTZXJ2aWNl
V29ya2Vycyhjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJik7Ci0gICAgdm9p
ZCBkaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICB2b2lkIGVuYWJsZVdvcmtlcnMoV29ya2Vy
VHlwZSwgY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYpOworICAgIHZvaWQg
ZGlzYWJsZVdvcmtlcnMoT3B0aW9uU2V0PFdvcmtlclR5cGU+KTsKIAogICAgIFdlYnNpdGVEYXRh
U3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IEFTU0VSVChtX3dlYnNpdGVEYXRhU3Rv
cmUpOyByZXR1cm4gKm1fd2Vic2l0ZURhdGFTdG9yZTsgfQogICAgIHZvaWQgc2V0V2Vic2l0ZURh
dGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlJik7CkBAIC0xOTQsNiArMTk4LDkgQEAgcHVibGljOgog
CiAgICAgYm9vbCBpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpIGNvbnN0IHsgcmV0dXJuICEhbV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb247IH0KICAgICBib29sIGlzU3RhbmRhbG9uZVNlcnZpY2VX
b3JrZXJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSAm
JiAhcGFnZUNvdW50KCk7IH0KKyAgICBib29sIGlzUnVubmluZ1NoYXJlZFdvcmtlcnMoKSBjb25z
dCB7IHJldHVybiAhIW1fc2hhcmVkV29ya2VySW5mb3JtYXRpb247IH0KKyAgICBib29sIGlzU3Rh
bmRhbG9uZVNoYXJlZFdvcmtlclByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBpc1J1bm5pbmdTaGFy
ZWRXb3JrZXJzKCkgJiYgIXBhZ2VDb3VudCgpOyB9CisgICAgYm9vbCBpc1J1bm5pbmdXb3JrZXJz
KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiB8fCBtX3NlcnZpY2VX
b3JrZXJJbmZvcm1hdGlvbjsgfQogCiAgICAgYm9vbCBpc0R1bW15UHJvY2Vzc1Byb3h5KCkgY29u
c3Q7CiAKQEAgLTM1OSwxMiArMzY2LDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlQXVk
aWJsZU1lZGlhQXNzZXJ0aW9ucygpOwogCisgICAgdm9pZCBzZXRXb3JrZXJVc2VyQWdlbnQoY29u
c3QgU3RyaW5nJik7CisgICAgdm9pZCB1cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNv
bnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHVwZGF0
ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZSk7CiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogICAgIHZvaWQgZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2Vi
UHJlZmVyZW5jZXNTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2Vy
dmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwot
ICAgIHZvaWQgc2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKLSAgICB2
b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVu
Y2VzU3RvcmUmKTsKLSAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJQYWdlUHJveHkoV2ViUGFnZVBy
b3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCkgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VySW5mb3Jt
YXRpb24gJiYgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnNlcnZpY2VXb3JrZXJQYWdlUHJv
eHlJRCA9PSBwYWdlUHJveHlJRDsgfQotICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtlclByb2Nl
c3NBc3NlcnRpb24oKTsKKyAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJQYWdlUHJveHkoV2ViUGFn
ZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCkgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb24gJiYgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPndvcmtlclBhZ2VQcm94eUlE
ID09IHBhZ2VQcm94eUlEOyB9CiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQ
cm9jZXNzKFdlYlByb2Nlc3NQcm94eSYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYpOwogICAgIGJvb2wgaGFzU2VydmljZVdv
cmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdDsKQEAgLTY0OCwxNCArNjU2
LDE1IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBSZWZQdHI8TG9nZ2VyPiBtX2xvZ2dlcjsKIAot
ICAgIHN0cnVjdCBTZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gewotICAgICAgICBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQYWdlUHJveHlJRDsKLSAgICAgICAgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgc2VydmljZVdvcmtlclBhZ2VJRDsKKyAgICBzdHJ1Y3QgV29ya2VySW5m
b3JtYXRpb24geworICAgICAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdvcmtlclBhZ2VQcm94
eUlEOworICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3b3JrZXJQYWdlSUQ7CiAgICAg
ICAgIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRhOwog
ICAgICAgICBQcm9jZXNzVGhyb3R0bGVyOjpBY3Rpdml0eVZhcmlhbnQgYWN0aXZpdHk7CiAgICAg
ICAgIFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4gY2xpZW50UHJvY2Vzc2VzOwogICAgIH07
Ci0gICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySW5mb3JtYXRpb24+IG1fc2VydmljZVdv
cmtlckluZm9ybWF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8V29ya2VySW5mb3JtYXRpb24+IG1f
c2VydmljZVdvcmtlckluZm9ybWF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8V29ya2VySW5mb3Jt
YXRpb24+IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb247CiAgICAgYm9vbCBtX2hhc1NlcnZpY2VX
b3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyB7IGZhbHNlIH07CiAKICAgICBIYXNoTWFwPFdlYkNv
cmU6OlNsZWVwRGlzYWJsZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U2xl
ZXBEaXNhYmxlcj4+IG1fc2xlZXBEaXNhYmxlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiYjliZTJjMGZmMTUuLjdlMjZkODc1MjFk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC04ODEsNiArODgxLDcgQEAKIAkJNDYxNEYxMzIyNURFRDg3NTAwNzAwNkU3IC8qIEdQVVBy
b2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZBQzUzMjQyNURFRDgxRTAwM0I1N0VDIC8qIEdQVVByb2Nlc3ND
b25uZWN0aW9uUGFyYW1ldGVycy5oICovOyB9OwogCQk0NjFDQ0NBNTIzMTQ4NUE3MDBCNjU5Qjkg
LyogVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDYzMjM2ODUyMzE0ODMzRjAwQTQ4RkE3IC8qIFVJUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkuaCAqLzsgfTsKIAkJNDYxQ0NDQTYyMzE0ODVBQTAwQjY1OUI5IC8qIFdlYlJl
bW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NjMyMzY4MzIzMTQ4MUVGMDBBNDhGQTcgLyogV2ViUmVtb3RlT2JqZWN0UmVn
aXN0cnkuaCAqLzsgfTsKKwkJNDYxRTFCRjIyNzlBMDExNjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDYxRTFCRUYyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICovOyB9OwogCQk0NjNGRDQ4MDFFQjk0
NTk2MDBBMjk4MkMgLyogV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0ZENDdGMUVCOTQ1ODQwMEEyOTgy
QyAvKiBXS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2M0ZENDgyMUVCOTRFQzAwMEEyOTgyQyAvKiBQ
cm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2M0ZENDgxMUVCOTRFQUQwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWlu
YXRpb25SZWFzb24uaCAqLzsgfTsKIAkJNDY1OUYyNUYyNzVGRjZCMjAwQkJCMzY5IC8qIENhcHRp
dmVQb3J0YWxNb2RlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2NTlGMjVFMjc1RkY2QjIwMEJCQjM2OSAvKiBDYXB0aXZlUG9ydGFsTW9k
ZU9ic2VydmVyLmggKi87IH07CkBAIC04OTAsNiArODkxLDggQEAKIAkJNDY3MUZGMUYyMzIxN0VG
RjAwMUI2NEM3IC8qIFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjcxRkYxRDIzMjE3RUZGMDAxQjY0QzcgLyog
V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCAqLzsgfTsKIAkJNDY3RTQzRTgyMjQzRkY3RDAwQjEz
OTI0IC8qIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdFNDNFNzIyNDNGRjZEMDBCMTM5MjQgLyog
V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaCAqLzsgfTsKIAkJNDY4MDlBN0MyM0Q5MjI1
RTAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgwOUE3QTIzRDkyMjUzMDBDMjk3RDAgLyogV2ViQ29va2ll
Q2FjaGUuaCAqLzsgfTsKKwkJNDY5NDNERDAyNzYzRjgzQTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdv
cmtlclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0Njk0M0RDRjI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIu
aCAqLzsgfTsKKwkJNDY5NDNERDEyNzYzRjgzRjAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2OTQzRENEMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLmggKi87IH07CiAJCTQ2QTJCNjA5MUU1Njc2QTYwMEMzREVEQSAvKiBCYWNrZ3Jv
dW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QTJCNjA3MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3Jv
dW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaCAqLzsgfTsKIAkJNDZCMDUyNDcyMjY2OEQ4
NTAwMjY1Qjk3IC8qIFdlYkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCMDUy
NDQyMjY2OEQyMzAwMjY1Qjk3IC8qIFdlYkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNz
Q29udHJvbGxlci5oICovOyB9OwogCQk0NkJFQjZENzIyRkI5QkQ3MDAyNjk4NjcgLyogU3RvcmFn
ZUFyZWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
QkVCNkQ1MjJGQjlCRDYwMDI2OTg2NyAvKiBTdG9yYWdlQXJlYS5oICovOyB9OwpAQCAtODk3LDEw
ICs5MDAsMTMgQEAKIAkJNDZCRUI2REYyMkZCQjE2QjAwMjY5ODY3IC8qIFNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkJFQjZERDIyRkJCMTZCMDAyNjk4NjcgLyogU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuaCAq
LzsgfTsKIAkJNDZCRUI2RTMyMkZCQjIxQTAwMjY5ODY3IC8qIFRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZCRUI2RTEyMkZCQjIxQTAwMjY5ODY3IC8qIFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVz
cGFjZS5oICovOyB9OwogCQk0NkMzOTIyOTIzMTZFQzREMDA4RUVEOUIgLyogV2ViUGFnZVByb3h5
SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZDMzkyMjgyMzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCAq
LzsgfTsKKwkJNDZDOTE2QUEyNzk5RDBBMjAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDOTE2
QTkyNzk5RDA5RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5oICovOyB9OwogCQk0
NkNFM0IxMTIzRDhDODQ5MDAxNkE5NkEgLyogV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkNFM0IxMDIzRDhD
ODNEMDAxNkE5NkEgLyogV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmggKi87IH07CisJCTQ2RDQ4
RkNFMjc5OUQ3RTEwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NkQ0OEZDRDI3OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oICovOyB9OwogCQk0NkRGMDYzQzFGMzkwNUY4MDAxOTgwQkIgLyogTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVm
bGlnaHRDaGVja2VyLmggKi87IH07CiAJCTQ2RUUyODQ5MjY5RTA0QUMwMERENDhBQiAvKiBXZWJC
cm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2RUUyODQ4MjY5RTA0OUIwMERENDhBQiAvKiBXZWJCcm9hZGNhc3RD
aGFubmVsUmVnaXN0cnkuaCAqLzsgfTsKIAkJNDZFRTI4NEQyNjlFMDUyNTAwREQ0OEFCIC8qIE5l
dHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUUyODRDMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3Jr
QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggKi87IH07CisJCTQ2RUUzRThCMjc2M0ZEMkYwMDYw
QzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzODY2NzI3NjNGQUIxMDBDRjkxODIg
LyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oICovOyB9OwogCQk0NkYzOEU4QzI0
MTZFNjczMDA1OTM3NUEgLyogUnVubmluZ0JvYXJkU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjM4RThCMjQxNkU2NkQwMDU5Mzc1
QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oICovOyB9OwogCQk0NkY5QjI2MzIzNTI2RUYz
MDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkY5QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyog
V2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggKi87IH07CiAJCTQ5MzEwMkJEMjY4M0YzRDAwMDJC
Qjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0OTMxMDJCQzI2ODNGM0E1MDAyQkI4ODUgLyogQXBwUHJpdmFjeVJl
cG9ydC5oICovOyB9OwpAQCAtMTI3NCw2ICsxMjgwLDcgQEAKIAkJNkJFOTY5QzExRTU0RDQ1MjAw
OEI3NDgzIC8qIGNvcmVQcmVkaWN0aW9uX21vZGVsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkU5NjlDMDFFNTRENDUyMDA4Qjc0ODMgLyogY29yZVBy
ZWRpY3Rpb25fbW9kZWwgKi87IH07CiAJCTZCRTk2OUNCMUU1NEQ0Q0YwMDhCNzQ4MyAvKiBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkU5NjlDOTFFNTRENENGMDA4Qjc0ODMgLyogUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5oICovOyB9OwogCQk2QkU5NjlDRDFF
NTRFMDU0MDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCRTk2OUNDMUU1NEUw
NTQwMDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5oICovOyB9Owor
CQk2Q0FFQ0I2NjI3NDY1QUU0MDBBQjc4RDAgLyogVW5pZmllZFNvdXJjZTExNi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2Q0FFQ0I1RTI3NDY1QUUz
MDBBQjc4RDAgLyogVW5pZmllZFNvdXJjZTExNi5jcHAgKi87IH07CiAJCTZFRTg0OUM4MTM2OEQ5
MzkwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFRTg0OUM2MTM2OEQ5MkQwMDM4RDQ4MSAvKiBX
S0luc3BlY3RvclByaXZhdGVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3MTE3MjVBOTIyOEQ1NjQzMDAwMTg1MTQgLyogV2Vic2l0ZUxlZ2Fj
eU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMTcyNUE4MjI4RDU2M0EwMDAxODUxNCAvKiBXZWJzaXRl
TGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaFBvbGljeS5oICovOyB9OwogCQk3MTM0QTNEQTI2
MDNCOTI1MDA2MjRCRDMgLyogV0tNb2RlbEludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMzRBM0Q5MjYw
M0I4MEUwMDYyNEJEMyAvKiBXS01vZGVsSW50ZXJhY3Rpb25HZXN0dXJlUmVjb2duaXplci5oICov
OyB9OwpAQCAtMTM1MSw2ICsxMzU4LDcgQEAKIAkJN0M5RDE1MzcxODQ1ODREQTAwOUQzOTE4IC8q
IFdLQnJvd3NpbmdDb250ZXh0R3JvdXBJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M5RDE1MzYxODQ1ODREQTAwOUQzOTE4IC8qIFdLQnJv
d3NpbmdDb250ZXh0R3JvdXBJbnRlcm5hbC5oICovOyB9OwogCQk3Q0EyNTRFQjE4Mjk5M0NFMDBG
QzhBNDEgLyogV0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NBMjU0RUExODI5OTNDRTAwRkM4QTQx
IC8qIFdLQnJvd3NpbmdDb250ZXh0UG9saWN5RGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Q0EzNzkzRTFBQzM3OEIzMDA3OURDMzcg
LyogX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQTM3OTNEMUFDMzc4QjMwMDc5REMzNyAv
KiBfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdDQUVDQjY2Mjc0NjVBRTQwMEFCNzhE
MCAvKiBVbmlmaWVkU291cmNlMTE3LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDQUVDQjVFMjc0NjVBRTMwMEFCNzhEMCAvKiBVbmlmaWVkU291cmNl
MTE3LmNwcCAqLzsgfTsKIAkJN0NCMTAwRjExRkEzODU4QTAwMTcyOUVFIC8qIFdlYlByZWZlcmVu
Y2VzS2V5cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3Q0IxMDBFRTFGQTJENzRBMDAxNzI5RUUgLyogV2ViUHJlZmVyZW5jZXNLZXlzLmNwcCAqLzsg
fTsKIAkJN0NCMTAwRjIxRkEzODU4RTAwMTcyOUVFIC8qIFdlYlByZWZlcmVuY2VzRGVmaW5pdGlv
bnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDREU3
M0EzMUY5REFCNjUwMDM5MDMxMiAvKiBXZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmggKi87IH07
CiAJCTdDQjEwMEYzMUZBMzg1OEUwMDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNlc0tleXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQjEwMEVGMUZBMkQ3
NEIwMDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNlc0tleXMuaCAqLzsgfTsKQEAgLTQyMTgsNiArNDIy
Niw5IEBACiAJCTQ2MDg4OUZGMjYxRkE4QTkwMEUyNTAwRCAvKiBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDYwRjQ4OEQxRjk5NkY2QzAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9
IERlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3Nh
Z2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTQ2
MEY0ODhFMUY5OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1l
c3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CisJCTQ2MUUxQkVDMjc5QTAxMEUwMDZBRjUzQiAvKiBXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYxRTFCRUYyNzlBMDEwRjAwNkFG
NTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYxRTFCRjAyNzlBMDEw
RjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2MjEwN0Q3MUYzOERCRDMwMERENzgxMCAvKiBQaW5nTG9hZC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQaW5nTG9hZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2MzIzNjgzMjMxNDgxRUYwMEE0OEZBNyAvKiBXZWJSZW1vdGVPYmplY3RSZWdp
c3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZW1vdGVPYmplY3RSZWdpc3RyeS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NjMyMzY4NDIzMTQ4MjVDMDBBNDhGQTcgLyogV2ViUmVt
b3RlT2JqZWN0UmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUmVtb3RlT2JqZWN0
UmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI0NSw4ICs0MjU2
LDE1IEBACiAJCTQ2ODA5QTdCMjNEOTIyNTMwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb29raWVDYWNoZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM1NjlBMjFFODFDQzcwMDZFMjdBMyAv
KiBQcm92aXNpb25hbFBhZ2VQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQcm92aXNpb25hbFBhZ2VQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjgzNTY5QjIxRTgxQ0M3MDA2RTI3QTMgLyogUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvdmlzaW9uYWxQYWdlUHJveHkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjgzODY2NzI3NjNGQUIxMDBDRjkxODIg
LyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQ2ODM4NjY4Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njg5QjkwRjI3NTZEMTQz
MDAwN0M2NTEgLyogUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZVdlYkxvY2tSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njg5Qjkx
MDI3NTZEMTQzMDAwN0M2NTEgLyogUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ2OTQzRENCMjc2M0Y4MzQwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzREND
Mjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQ2OTQzRENEMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQ0UyNzYzRjgz
NTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzRENGMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFy
ZWRXb3JrZXJQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJQcm92aWRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlERTgwMjI3M0VDQzVEMDA5MzAy
NzYgLyogUHJvY2Vzc0xhdW5jaGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBQcm9jZXNzTGF1bmNoZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDZBMkI2MDYxRTU2NzVBMjAwQzNERURBIC8qIEJhY2tncm91bmRQcm9jZXNz
UmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NkEyQjYwNzFFNTY3NUEyMDBDM0RFREEgLyogQmFja2dyb3Vu
ZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNDI2Miw3ICs0MjgwLDExIEBACiAJCTQ2QkVCNkUxMjJGQkIy
MUEwMDI2OTg2NyAvKiBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2QkVCNkUyMjJGQkIyMUEwMDI2OTg2NyAvKiBUcmFuc2llbnRMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDMzkyMjgy
MzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViUGFnZVByb3h5SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0NkM5MTZBODI3OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQ2QzkxNkE5Mjc5OUQwOUQwMDFBNEU3QyAvKiBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2Q0UzQjEwMjNEOEM4M0QwMDE2QTk2QSAvKiBX
ZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQ2RDQ4RkNDMjc5OUQ3REQwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0NkQ0OEZDRDI3OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2REYwNjM5
MUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZERjA2M0ExRjM5MDVFNTAw
MTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZFOTc2MEEyNzU3RjZDOTAwQUNERDM3IC8qIFdlYkJyb2Fk
Y2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBX
ZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC00MjcyLDYgKzQyOTQsNyBAQAogCQk0NkVFMjg0QTI2OUUwNTE3MDBERDQ4
QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkVFMjg0QjI2OUUwNTE3MDBERDQ4
QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZFRTI4NEMyNjlFMDUxNzAwREQ0OEFC
IC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0NkVFM0U4QTI3NjNGRDJBMDA2MEM3MEYgLyogV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NkYzOEU4QjI0MTZFNjZEMDA1OTM3NUEgLyogUnVubmluZ0JvYXJkU2VydmljZXNTUEku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVubmluZ0JvYXJkU2VydmljZXNT
UEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZGOUIyNjIyMzUyNkVEMDAwNkZF
NUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDkzMTAyQkMyNjgzRjNBNTAwMkJCODg1IC8qIEFwcFByaXZhY3lSZXBvcnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXBwUHJpdmFjeVJlcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNDk5MCw2ICs1MDEzLDcgQEAKIAkJNkJFOTY5QzgxRTU0RDRDRjAwOEI3NDgz
IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZp
ZXJDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCRTk2OUM5MUU1NEQ0
Q0YwMDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFz
c2lmaWVyQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkJFOTY5Q0MxRTU0
RTA1NDAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lm
aWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDQUVDQjVFMjc0NjVBRTMwMEFC
NzhEMCAvKiBVbmlmaWVkU291cmNlMTE2LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRT
b3VyY2UxMTYuY3BwOyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzL1dlYktpdC91bmlmaWVkLXNvdXJj
ZXMvVW5pZmllZFNvdXJjZTExNi5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OwogCQk2RDhBOTFBNTExRjBFRkQxMDBERDAxRkUgLyogY29tLmFwcGxlLldlYlByb2Nlc3Mu
c2IuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW47
IHBhdGggPSBXZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk2RUU4NDlDNjEzNjhEOTJEMDAzOEQ0ODEgLyogV0tJbnNwZWN0
b3JQcml2YXRlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLSW5zcGVj
dG9yUHJpdmF0ZU1hYy5oOyBwYXRoID0gbWFjL1dLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTE3MjVBODIyOEQ1NjNBMDAwMTg1MTQgLyogV2Vi
c2l0ZUxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZUxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xp
Y3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUxNTQsNiArNTE3OCw3IEBACiAJ
CTdDOUQxNTM2MTg0NTg0REEwMDlEMzkxOCAvKiBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJu
YWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCcm93c2luZ0NvbnRleHRH
cm91cEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQTI1NEVBMTgy
OTkzQ0UwMEZDOEE0MSAvKiBXS0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVnYXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnJvd3NpbmdDb250ZXh0UG9saWN5RGVsZWdh
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NBMzc5M0QxQUMzNzhCMzAwNzlE
QzM3IC8qIF9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVQcml2YXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVQcml2YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDQUVDQjVFMjc0NjVBRTMwMEFCNzhE
MCAvKiBVbmlmaWVkU291cmNlMTE3LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3Vy
Y2UxMTcuY3BwOyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzL1dlYktpdC91bmlmaWVkLXNvdXJjZXMv
VW5pZmllZFNvdXJjZTExNy5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwogCQk3Q0IxMDBFRTFGQTJENzRBMDAxNzI5RUUgLyogV2ViUHJlZmVyZW5jZXNLZXlzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlByZWZlcmVuY2VzS2V5cy5jcHA7IHBhdGggPSBEZXJpdmVk
U291cmNlcy9XZWJLaXQvV2ViUHJlZmVyZW5jZXNLZXlzLmNwcDsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJN0NCMTAwRUYxRkEyRDc0QjAwMTcyOUVFIC8qIFdlYlByZWZl
cmVuY2VzS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJQcmVmZXJlbmNlc0tleXMuaDsgcGF0aCA9
IERlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJQcmVmZXJlbmNlc0tleXMuaDsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJN0NCMTAwRjAxRkEyRDc4NDAwMTcyOUVFIC8qIFdl
YlByZWZlcmVuY2VzU3RvcmVEZWZhdWx0c01hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJQ
cmVmZXJlbmNlc1N0b3JlRGVmYXVsdHNNYXAuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0L1dlYlByZWZlcmVuY2VzU3RvcmVEZWZhdWx0c01hcC5jcHA7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CkBAIC05Mjc3LDYgKzkzMDIsMjAgQEAKIAkJCXBhdGggPSBjb2Nv
YTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTQ2ODM4NjY1Mjc2M0ZBMUIw
MENGOTE4MiAvKiBTaGFyZWRXb3JrZXIgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCTQ2RDQ4RkNDMjc5OUQ3REQwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk0NkQ0OEZDRDI3OTlEN0RF
MDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oICov
LAorCQkJCTQ2QzkxNkE4Mjc5OUQwOUQwMDFBNEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIu
Y3BwICovLAorCQkJCTQ2QzkxNkE5Mjc5OUQwOUQwMDFBNEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXIuaCAqLywKKwkJCQk0NkVFM0U4QTI3NjNGRDJBMDA2MEM3MEYgLyogV2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKKwkJCQk0NjgzODY2NzI3NjNGQUIx
MDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oICovLAorCQkJCTQ2
ODM4NjY4Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
LmNwcCAqLywKKwkJCSk7CisJCQlwYXRoID0gU2hhcmVkV29ya2VyOworCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNDY5REU4MDEyNzNFQ0M1RDAwOTMwMjc2IC8qIGNvY29hICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTkzMjgsNiArOTM2
Nyw3IEBACiAJCTUxMENDN0RBMTYxMzhFMDEwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2VzcyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDY4Mzg2NjUyNzYz
RkExQjAwQ0Y5MTgyIC8qIFNoYXJlZFdvcmtlciAqLywKIAkJCQlFNDg5RDI4MjFBMEEyQkU4MDA3
OEMwNkEgLyogY2FjaGUgKi8sCiAJCQkJN0E4NDNBMUQyMUU0MUZEOTAwREVGNjYzIC8qIENsYXNz
aWZpZXIgKi8sCiAJCQkJN0VDNEYwRjgxOEU0QTkyMjAwODA1NkFGIC8qIGNvY29hICovLApAQCAt
OTQzNiw2ICs5NDc2LDE0IEBACiAJCTUxMThFOTk4MUYyOTUyNTkwMDNFRjlGNSAvKiBTdG9yYWdl
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0NjFFMUJF
QzI3OUEwMTBFMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmNwcCAqLywKKwkJCQk0NjFFMUJFRjI3OUEwMTBGMDA2QUY1M0IgLyogV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggKi8sCisJCQkJNDYxRTFCRjAyNzlBMDEwRjAw
NkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbiAqLywKKwkJCQk0Njk0M0RDRTI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbi5jcHAgKi8sCisJCQkJNDY5NDNEQ0QyNzYzRjgzNTAwNEI2MTBFIC8q
IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAqLywKKwkJCQk0Njk0M0RDQjI3NjNG
ODM0MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5p
biAqLywKKwkJCQk0Njk0M0RDQzI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyUHJv
dmlkZXIuY3BwICovLAorCQkJCTQ2OTQzRENGMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRX
b3JrZXJQcm92aWRlci5oICovLAogCQkJCTQxMzFGM0UwMUY5ODcxMkMwMDU5OTk1QSAvKiBXZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCAqLywKIAkJCQk0MTlBQ0Y5QjFGOTgxRDI2
MDA5RjFBODMgLyogV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oICovLAogCQkJCTUx
QkVCNjI5MUYzQTVBQ0QwMDUwMjlCOSAvKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwICov
LApAQCAtMTI3NjEsNiArMTI4MDksNyBAQAogCQkJCTQ5RkJGMDAwMjM5QjFGNzUwMEJEMDMyRiAv
KiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDlGQkYwMDkyMzlGMDhFMDAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NU
aGlyZFBhcnR5SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3NjMxMUZEMUEzRkI1Rjcw
MDVBMkU1MSAvKiBfV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNDYxRTFCRjIyNzlBMDExNjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc2MzExRkUxQTNGQjYwMDAw
NUEyRTUxIC8qIF9XS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBMDAyRDQ0MTk2QjMzODkwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDAyRDQzMTk2QjMzNzAwMEI5QUQ0NCAvKiBfV0tTZXNz
aW9uU3RhdGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjkyNSw2ICsxMjk3NCw3IEBA
CiAJCQkJRTE3MDg3NkMxNkQ2Q0E2OTAwRjk5MjI2IC8qIEJsb2JSZWdpc3RyeVByb3h5LmggaW4g
SGVhZGVycyAqLywKIAkJCQk0RjYwMTQzMjE1NUM1QUEyMDAxRkJERTAgLyogQmxvY2tpbmdSZXNw
b25zZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NzA1MTExQkU0MTBFNjAwODc0QUYxIC8q
IEJsb2NrU1BJLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkM5MTZBQTI3OTlEMEEyMDAxQTRFN0Mg
LyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzMwNjVGQTEy
NTkzNDRFMDBFNzEyNzggLyogQ2FjaGVNb2RlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE4OTdF
RDgxRjQxNUQ4QTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDFGQUJEMkExRjRERTAwMTAwNkE2Qzk3IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
LmggaW4gSGVhZGVycyAqLywKQEAgLTEzMzkwLDYgKzEzNDQwLDcgQEAKIAkJCQkxQUMxMzM2ODE4
NTY1QjU3MDBGM0VDMDUgLyogVXNlckRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENDkxQjA4
MUU3MEQwNUYwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0Q0OTFCMEUxRTczMkU0RDAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2RUUzRThCMjc2M0ZEMkYwMDYwQzcw
RiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDRDQ5MUIxMzFFNzM0ODIxMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q0OTFCMTgxRTczNTI1NTAwMDA5MDY2IC8qIFVzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcy
OTdGOUYxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTEzNDc2LDYgKzEzNTI3LDcgQEAKIAkJCQkzMzA5MzQ0QTEzMTVC
OTIyMDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMUREN0IyMTE0REMzOTYwMDVBREFGMyAvKiBXZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkY1ODlCMTJBODgzODgwMDYyOTUzMCAvKiBXZWJD
cmVkZW50aWFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk0Njk0M0REMDI3NjNGODNBMDA0QjYxMEUg
LyogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQTgzRjZE
MUE1QjYzRkYwMDAyNkVDNiAvKiBXZWJEYXRhYmFzZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFNTJDRjU1MjIwQTM1QzNBMDBEQURBMjcgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlj
a2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNTY4QjkxRjIwQTNBQjJGMDBFM0M4NTYgLyogV2Vi
RGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duLmggaW4gSGVhZGVycyAqLywKQEAgLTEzNTEwLDYg
KzEzNTYyLDcgQEAKIAkJCQlCQzAzMkQ3RjEwRjQzNzhEMDA1OEMxNUEgLyogV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTFGMkNCMTIxQjY3QUQwMEVCRjdFOCAv
KiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0I5RjZB
MDExMjNBODRCMDBBMTM3RTAgLyogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0Njk0M0REMTI3NjNGODNGMDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5QjM4QTExMEY1MzhCRTAw
NDQzQTE1IC8qIFdlYkZyYW1lUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMUFCMUQ1
NTVBQTAwMEREN0M2OCAvKiBXZWJHYW1lcGFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVCRTE3
OTFENTNGRThGMDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywK
QEAgLTEzNjM2LDYgKzEzNjg5LDcgQEAKIAkJCQkxQTQ4MzJENzFBOUNERjk2MDA4QjRERkUgLyog
V2Vic2l0ZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDgzMkQxMUE5QkRDMkYwMDhCNERG
RSAvKiBXZWJzaXRlRGF0YVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1M0MyQUExQTMy
NTczMDAwNEU4QzcwIC8qIFdlYnNpdGVEYXRhU3RvcmUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2
RDQ4RkNFMjc5OUQ3RTEwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTFGN0Q0MTFFQjFCQ0Y1MDBFNDdCODMg
LyogV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTcxMTcy
NUE5MjI4RDU2NDMwMDAxODUxNCAvKiBXZWJzaXRlTGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3Vj
aFBvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjRDQjA5RTUyMjVENUEwOTAwODkxNDg3IC8q
IFdlYnNpdGVNZWRpYVNvdXJjZVBvbGljeS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmNwcAppbmRleCA4ZDNiNTdiZDE4ZGMuLmJiMzU0N2Y0NmFkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwCkBAIC01Nyw2ICs1NywxMCBAQAogI2luY2x1ZGUgIldlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgor
I2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIgorI2lu
Y2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
IldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YlNvY2tldENoYW5uZWwuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJTb2NrZXRTdHJlYW0uaCIKQEAgLTE3Myw2ICsxNzcsMTYgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgSVAKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgorICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIHNo
YXJlZFdvcmtlckNvbm5lY3Rpb24oKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIEFTU0VSVChTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKTsKKyAgICAgICAg
aWYgKGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiA9IFNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCisgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24mPigqY29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KIAogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQog
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGF5
bWVudENvb3JkaW5hdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKQEAgLTMwNyw2ICszMjEs
MTMgQEAgV2ViU1dDbGllbnRDb25uZWN0aW9uJiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OnNl
cnZpY2VXb3JrZXJDb25uZWN0aW9uKCkKIH0KICNlbmRpZgogCitXZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uJiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OnNoYXJlZFdvcmtlckNvbm5l
Y3Rpb24oKQoreworICAgIGlmICghbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uKQorICAgICAgICBt
X3NoYXJlZFdvcmtlckNvbm5lY3Rpb24gPSBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
OjpjcmVhdGUoKTsKKyAgICByZXR1cm4gKm1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbjsKK30KKwog
dm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246Om1lc3NhZ2VzQXZhaWxhYmxlRm9yUG9ydChj
b25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIG1lc3NhZ2VQb3J0SWRlbnRpZmll
cikKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5tZXNzYWdlc0F2YWlsYWJsZUZvclBv
cnQobWVzc2FnZVBvcnRJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggZDYy
ZGZlNGRmNWFhLi41ZjA1MDQwOWFjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC00OCw2
ICs0OCw3IEBAIGVudW0gY2xhc3MgSFRUUENvb2tpZUFjY2VwdFBvbGljeSA6IHVpbnQ4X3Q7CiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOworY2xh
c3MgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjsKIGNsYXNzIFdlYlNXQ2xpZW50Q29u
bmVjdGlvbjsKIAogY2xhc3MgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIDogcHVibGljIFJlZkNv
dW50ZWQ8TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uPiwgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQg
ewpAQCAtNzAsNiArNzEsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
ICAgIFdlYlNXQ2xpZW50Q29ubmVjdGlvbiYgc2VydmljZVdvcmtlckNvbm5lY3Rpb24oKTsKICNl
bmRpZgorICAgIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24mIHNoYXJlZFdvcmtlckNv
bm5lY3Rpb24oKTsKIAogI2lmIEhBVkUoQVVESVRfVE9LRU4pCiAgICAgdm9pZCBzZXROZXR3b3Jr
UHJvY2Vzc0F1ZGl0VG9rZW4oc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2Vu
KSB7IG1fbmV0d29ya1Byb2Nlc3NBdWRpdFRva2VuID0gYXVkaXRUb2tlbjsgfQpAQCAtMTIzLDYg
KzEyNSw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIFJlZlB0
cjxXZWJTV0NsaWVudENvbm5lY3Rpb24+IG1fc3dDb25uZWN0aW9uOwogI2VuZGlmCisgICAgUmVm
UHRyPFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24+IG1fc2hhcmVkV29ya2VyQ29ubmVj
dGlvbjsKICAgICBXZWJDb3JlOjpIVFRQQ29va2llQWNjZXB0UG9saWN5IG1fY29va2llQWNjZXB0
UG9saWN5OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iZmUw
YmI2ODY1NzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0wLDAg
KzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAiTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBhZ2Uu
aCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9FbXB0eUNsaWVudHMuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2Vy
RmV0Y2hSZXN1bHQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Ms
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBhZ2VHcm91
cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVBy
b3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZSYgcHJlZmVyZW5jZXNTdG9yZSwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0
YSYmIGluaXRpYWxpemF0aW9uRGF0YSkKKyAgICA6IG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MoV1RGTW92ZShjb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcykpCisgICAgLCBtX3JlZ2lzdHJh
YmxlRG9tYWluKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pKQorICAgICwgbV9wYWdlR3JvdXBJ
RChwYWdlR3JvdXBJRCkKKyAgICAsIG1fd2ViUGFnZVByb3h5SUQod2ViUGFnZVByb3h5SUQpCisg
ICAgLCBtX3BhZ2VJRChwYWdlSUQpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgLCBtX3VzZXJB
Z2VudChzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoeyB9KSkKKyNlbHNlCisg
ICAgLCBtX3VzZXJBZ2VudChzdGFuZGFyZFVzZXJBZ2VudCgpKQorI2VuZGlmCisgICAgLCBtX3Vz
ZXJDb250ZW50Q29udHJvbGxlcihXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmdldE9yQ3JlYXRl
KGluaXRpYWxpemF0aW9uRGF0YS51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKSkKK3sK
KyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIG1fdXNlckNvbnRlbnRDb250cm9s
bGVyLT5hZGRDb250ZW50UnVsZUxpc3RzKFdURk1vdmUoaW5pdGlhbGl6YXRpb25EYXRhLmNvbnRl
bnRSdWxlTGlzdHMpKTsKKyNlbmRpZgorCisgICAgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShwcmVm
ZXJlbmNlc1N0b3JlKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5kaXNhYmxlVGVybWlu
YXRpb24oKTsKK30KKworV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp+
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKCkgPSBkZWZhdWx0OworCit2
b2lkIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZXN0YWJsaXNoQ29u
bmVjdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0YWJsaXNoU2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb24geyBtX3dlYlBhZ2VQcm94eUlELCBtX3JlZ2lzdHJhYmxlRG9t
YWluIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCAwKTsKK30KKwordm9pZCBXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9i
amVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgbV9jb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6UG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0IHsgc2hhcmVkV29ya2Vy
SWRlbnRpZmllciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJj
ZVVSTCB9LCAwKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OnVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYg
c3RvcmUpCit7CisgICAgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXNHZW5lcmF0ZWQoc3RvcmUp
OworICAgIG1fcHJlZmVyZW5jZXNTdG9yZSA9IHN0b3JlOworfQorCit2b2lkIFdlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bGF1bmNoU2hhcmVkV29ya2VyKFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBz
aGFyZWRXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiB1cmwsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMm
JiB3b3JrZXJPcHRpb25zLCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmIHdvcmtlckZldGNo
UmVzdWx0KQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bGF1bmNoU2hhcmVkV29ya2VyOiBzaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKKyAgICBhdXRvIHBhZ2VDb25maWd1cmF0aW9uID0gcGFnZUNvbmZpZ3VyYXRpb25XaXRoRW1w
dHlDbGllbnRzKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNlc3Npb25JRCgpKTsKKworICAgIHBh
Z2VDb25maWd1cmF0aW9uLmRhdGFiYXNlUHJvdmlkZXIgPSBXZWJEYXRhYmFzZVByb3ZpZGVyOjpn
ZXRPckNyZWF0ZShtX3BhZ2VHcm91cElEKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5zb2NrZXRQ
cm92aWRlciA9IFdlYlNvY2tldFByb3ZpZGVyOjpjcmVhdGUobV93ZWJQYWdlUHJveHlJRCk7Cisg
ICAgcGFnZUNvbmZpZ3VyYXRpb24uYnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5ID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuYnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5KCk7CisgICAgcGFnZUNvbmZp
Z3VyYXRpb24ud2ViTG9ja1JlZ2lzdHJ5ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9j
a1JlZ2lzdHJ5KCk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRQcm92aWRlciA9
IG1fdXNlckNvbnRlbnRDb250cm9sbGVyOworI2lmIEVOQUJMRShXRUJfUlRDKQorICAgIHBhZ2VD
b25maWd1cmF0aW9uLmxpYldlYlJUQ1Byb3ZpZGVyID0gbWFrZVVuaXF1ZVJlZjxTZXJ2aWNlV29y
a2VyTGliV2ViUlRDUHJvdmlkZXI+KCk7CisjZW5kaWYKKworICAgIC8vIEZJWE1FOiBTZXJ2aWNl
V29ya2VyRnJhbWVMb2FkZXJDbGllbnQgc2hvdWxkIGJlIHJlbmFtZWQgaWYgdXNlZCBieSBTaGFy
ZWRXb3JrZXJzLgorICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFt
ZSA9IG1ha2VVbmlxdWVSZWY8U2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50PihtX3dlYlBh
Z2VQcm94eUlELCBtX3BhZ2VJRCwgRnJhbWVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBtX3VzZXJB
Z2VudCk7CisKKyAgICBhdXRvIHBhZ2UgPSBtYWtlVW5pcXVlUmVmPFBhZ2U+KFdURk1vdmUocGFn
ZUNvbmZpZ3VyYXRpb24pKTsKKyAgICBpZiAobV9wcmVmZXJlbmNlc1N0b3JlKSB7CisgICAgICAg
IFdlYlBhZ2U6OnVwZGF0ZVNldHRpbmdzR2VuZXJhdGVkKCptX3ByZWZlcmVuY2VzU3RvcmUsIHBh
Z2UtPnNldHRpbmdzKCkpOworICAgICAgICBwYWdlLT5zZXR0aW5ncygpLnNldFN0b3JhZ2VCbG9j
a2luZ1BvbGljeShzdGF0aWNfY2FzdDxTdG9yYWdlQmxvY2tpbmdQb2xpY3k+KG1fcHJlZmVyZW5j
ZXNTdG9yZS0+Z2V0VUludDMyVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnN0b3JhZ2VC
bG9ja2luZ1BvbGljeUtleSgpKSkpOworICAgIH0KKyAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJU
aHJlYWRQcm94eTo6c2V0dXBQYWdlRm9yU2hhcmVkV29ya2VyKHBhZ2UuZ2V0KCksIHVybCwgb3Jp
Z2luLCB3b3JrZXJGZXRjaFJlc3VsdCk7CisgICAgYXV0byBzaGFyZWRXb3JrZXJUaHJlYWRQcm94
eSA9IFdlYkNvcmU6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpjcmVhdGUoV1RGTW92ZShwYWdl
KSwgc2hhcmVkV29ya2VySWRlbnRpZmllciwgb3JpZ2luLCB1cmwsIFdURk1vdmUod29ya2VyRmV0
Y2hSZXN1bHQpLCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMpLCBtX3VzZXJBZ2VudCwgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuY2FjaGVTdG9yYWdlUHJvdmlkZXIoKSk7CisKKyAgICBXZWJDb3JlOjpT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkucmVnaXN0ZXJTaGFyZWRXb3Jr
ZXJUaHJlYWQoV1RGTW92ZShzaGFyZWRXb3JrZXJUaHJlYWRQcm94eSkpOworfQorCit2b2lkIFdl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Y2xvc2UoKQoreworICAgIFJF
TEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6Y2xvc2U6IFNoYXJlZCB3b3JrZXIgcHJvY2VzcyBpcyByZXF1ZXN0ZWQgdG8gc3Rv
cCBhbGwgc2hhcmVkIHdvcmtlcnMiKTsKKyAgICBzZXRBc0Nsb3NlZCgpOworCisgICAgbV9jb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OkNsb3NlU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24geyB9LCAwKTsK
KyAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc3Rv
cEFsbFNoYXJlZFdvcmtlcnMoKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbmFibGVU
ZXJtaW5hdGlvbigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi5lZDkxZjk3YzFiMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiSWRlbnRpZmllclR5cGVzLmgi
CisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VySWRlbnRpZmll
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKK3N0
cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKK3N0cnVjdCBXb3JrZXJPcHRpb25zOworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOworc3RydWN0
IFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGE7CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2Vp
dmVyIHsKK3B1YmxpYzoKKyAgICBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwg
UGFnZUdyb3VwSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBTZXJ2aWNlV29ya2VySW5p
dGlhbGl6YXRpb25EYXRhJiYpOworICAgIH5XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24oKTsKKworICAgIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2Jq
ZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkwpIGZpbmFsOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICAvLyBJUEMgTWVz
c2FnZXMuCisgICAgdm9pZCBsYXVuY2hTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpXb3Jr
ZXJPcHRpb25zJiYsIFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYpOworICAgIHZvaWQgdXBk
YXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CisgICAgdm9p
ZCBzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KSB7IG1fdXNlckFnZW50ID0gV1RGTW92
ZSh1c2VyQWdlbnQpOyB9CisgICAgdm9pZCBjbG9zZSgpOworCisgICAgUmVmPElQQzo6Q29ubmVj
dGlvbj4gbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzczsKKyAgICBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluOworICAgIFBhZ2VHcm91cElkZW50aWZpZXIg
bV9wYWdlR3JvdXBJRDsKKyAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIG1fd2ViUGFnZVByb3h5
SUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CisgICAgU3RyaW5nIG1f
dXNlckFnZW50OworICAgIFJlZjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXI+IG1fdXNlckNvbnRl
bnRDb250cm9sbGVyOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViUHJlZmVyZW5jZXNTdG9yZT4gbV9w
cmVmZXJlbmNlc1N0b3JlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMu
aW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kODJhNGFkYTUzZmQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCAr
MSwzMCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAor
IyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdl
cyAtPiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gTm90UmVmQ291bnRl
ZCB7CisgICAgTGF1bmNoU2hhcmVkV29ya2VyKHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4g
b3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50
aWZpZXIsIFVSTCB1cmwsIHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdvcmtlck9wdGlv
bnMsIHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCB3b3JrZXJGZXRjaFJlc3VsdCkK
KyAgICBQb3N0Q29ubmVjdEV2ZW50KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hh
cmVkV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBwb3J0
LCBTdHJpbmcgc291cmNlT3JpZ2luKQorICAgIFRlcm1pbmF0ZVNoYXJlZFdvcmtlcihXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIpCisgICAgVXBk
YXRlUHJlZmVyZW5jZXNTdG9yZShzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0
b3JlKQorICAgIFNldFVzZXJBZ2VudChTdHJpbmcgdXNlckFnZW50KQorICAgIENsb3NlKCkKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kN2Q5OTRkZTFmNzcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uLmNwcApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCIKKworI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIK
KyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmll
ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyT3B0aW9ucy5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNF
X0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQg
Il0gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsIFdlYkNvcmU6
OlByb2Nlc3M6OmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQorCitXZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJXZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uOiIpOworfQorCitXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjp+
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpCit7CisgICAgQ09OTkVDVElPTl9SRUxF
QVNFX0xPRygifldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Iik7Cit9CisKK0lQQzo6
Q29ubmVjdGlvbiogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworfQorCit2
b2lkIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnJlcXVlc3RTaGFyZWRXb3JrZXIo
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgVVJM
JiB1cmwsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBjb25zdCBXZWJD
b3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25zKQoreworICAgIENPTk5FQ1RJT05fUkVM
RUFTRV9MT0coInJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uOjpSZXF1ZXN0U2hhcmVkV29ya2VyIHsgb3JpZ2luLCBzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLCB1cmwsIFdURk1vdmUocG9ydCksIHdvcmtlck9wdGlvbnMgfSk7Cit9CisK
K3ZvaWQgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6c2hhcmVkV29ya2VyT2JqZWN0
SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coInNo
YXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
PSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbjo6U2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkgeyBzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyIH0pOworfQorCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPRworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmVjYmY0MmY2NzYyYQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDU0IEBACisKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNz
YWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIGZpbmFsIDogcHVibGlj
IFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24sIHByaXZhdGUgSVBDOjpNZXNz
YWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIHN0
YXRpYyBSZWY8V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbj4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKTsgfQorICAg
IH5XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCk7CisKKyAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCitwcml2
YXRlOgorICAgIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKTsKKworICAgIC8vIFdl
YkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uCisgICAgdm9pZCByZXF1ZXN0U2hh
cmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFdlYkNvcmU6OlNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVz
c2FnZVBvcnQmJiwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYpIGZpbmFsOworICAgIHZv
aWQgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllcikgZmluYWw7CisKKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5k
ZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRl
c3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMWNlYTE5
MzJlOWY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsx
LDI3IEBACisjIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisj
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2Vz
IC0+IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24geworICAgIEZldGNoU2NyaXB0SW5D
bGllbnQoVVJMIHVybCwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyB3
b3JrZXJPcHRpb25zKSAtPiAoc3RydWN0IFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0IGZldGNo
UmVzdWx0KSBBc3luYworICAgIE5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZhaWx1cmUoV2ViQ29y
ZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyKQorICAgIFBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFN0cmluZyBl
cnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTdHJpbmcgc291
cmNlVVJMKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uNDQ5NWE0MjI1ZTYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwCkBA
IC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaCIKKworI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJT
aGFyZWRXb3JrZXJQcm92aWRlciYgV2ViU2hhcmVkV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyPiBw
cm92aWRlcjsKKyAgICByZXR1cm4gcHJvdmlkZXI7Cit9CisKK1dlYlNoYXJlZFdvcmtlclByb3Zp
ZGVyOjpXZWJTaGFyZWRXb3JrZXJQcm92aWRlcigpID0gZGVmYXVsdDsKKworV2ViQ29yZTo6U2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXI6OnNoYXJl
ZFdvcmtlckNvbm5lY3Rpb24oKQoreworICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuc2hhcmVkV29ya2VyQ29ubmVjdGlv
bigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODZlM2QyZmU3MGEwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29y
a2VyUHJvdmlkZXIuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlclByb3ZpZGVyLmg+CisjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb247Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBXZWJTaGFyZWRXb3JrZXJQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTaGFyZWRX
b3JrZXJQcm92aWRlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFdlYlNoYXJlZFdvcmtlclByb3Zp
ZGVyJiBzaW5nbGV0b24oKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8
V2ViU2hhcmVkV29ya2VyUHJvdmlkZXI+OworICAgIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyKCk7
CisKKyAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKiBzaGFyZWRXb3Jr
ZXJDb25uZWN0aW9uKCkgZmluYWw7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBlMjVkOGYzZTY5MTYuLjhjNzRj
N2NiY2E0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtODQs
NiArODQsOSBAQAogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1
ZGUgIldlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29y
a2VyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRTdHJlYW0uaCIKICNpbmNsdWRlICJX
ZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCkBA
IC0xMzMsNiArMTM2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NldHRpbmdzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckdlc3R1cmVJbmRpY2F0b3IuaD4KICNp
bmNsdWRlIDxwYWwvTG9nZ2luZy5oPgogI2luY2x1ZGUgPHd0Zi9BbGdvcml0aG1zLmg+CkBAIC01
NjksNiArNTczLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAgICAgU2VydmljZVdvcmtlclByb3ZpZGVyOjpzZXRTaGFyZWRQcm92aWRlcihX
ZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpKTsKICNlbmRpZgorICAgIFNoYXJl
ZFdvcmtlclByb3ZpZGVyOjpzZXRTaGFyZWRQcm92aWRlcihXZWJTaGFyZWRXb3JrZXJQcm92aWRl
cjo6c2luZ2xldG9uKCkpOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIEpTQzo6V2Fz
bTo6ZW5hYmxlRmFzdE1lbW9yeSgpOwpAQCAtOTAyLDcgKzkwNyw2IEBAIHZvaWQgV2ViUHJvY2Vz
czo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlCiAgICAgfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIC8vIEZJ
WE1FOiBSZW1vdmU/CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1l
c3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKSB7CiAgICAgICAgIEFTU0VSVChTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25u
ZWN0aW9uKCkpOwogICAgICAgICBpZiAoYXV0byogY29udGV4dE1hbmFnZXJDb25uZWN0aW9uID0g
U1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKQpAQCAtOTExLDYgKzkx
NSwxMyBAQCB2b2lkIFdlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZQogICAgIH0KICNlbmRpZgogCisgICAgaWYg
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAg
ICAgICBBU1NFUlQoU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5l
Y3Rpb24oKSk7CisgICAgICAgIGlmIChhdXRvKiBjb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gPSBT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKQorICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uJj4oKmNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbikuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBMT0dfRVJST1Io
IlVuaGFuZGxlZCB3ZWIgcHJvY2VzcyBtZXNzYWdlICclcycgKGRlc3RpbmF0aW9uOiAlIiBQUkl1
NjQgIiBwaWQ6ICVkKSIsIGRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2FnZU5hbWUoKSksIGRlY29k
ZXIuZGVzdGluYXRpb25JRCgpLCBzdGF0aWNfY2FzdDxpbnQ+KGdldEN1cnJlbnRQcm9jZXNzSUQo
KSkpOwogfQogCkBAIC0xOTE3LDggKzE5MjgsMTggQEAgTGliV2ViUlRDTmV0d29yayYgV2ViUHJv
Y2Vzczo6bGliV2ViUlRDTmV0d29yaygpCiAgICAgcmV0dXJuICptX2xpYldlYlJUQ05ldHdvcms7
CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFJlZ2lzdHJhYmxlRG9tYWluJiYg
cmVnaXN0cmFibGVEb21haW4sIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0
aWFsaXphdGlvbkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICAvLyBXZSBhcmUgaW4gdGhlIFNoYXJlZCBXb3JrZXIgY29udGV4dCBwcm9j
ZXNzIGFuZCB0aGUgY2FsbCBiZWxvdyBlc3RhYmxpc2hlcyBvdXIgY29ubmVjdGlvbiB0byB0aGUg
TmV0d29yayBQcm9jZXNzCisgICAgLy8gYnkgY2FsbGluZyBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0aGUgc2Ft
ZSB1bmRlcmx5aW5nIElQQzo6Q29ubmVjdGlvbiBhcyB0aGUKKyAgICAvLyBOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24gZm9yIHN5bmNocm9uaXphdGlvbiBwdXJwb3Nlcy4KKyAgICBhdXRvJiBpcGND
b25uZWN0aW9uID0gZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
OworICAgIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDb25uZWN0
aW9uKG1ha2VVbmlxdWU8V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uPihp
cGNDb25uZWN0aW9uLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgcGFnZUdyb3VwSUQsIHdl
YlBhZ2VQcm94eUlELCBwYWdlSUQsIHN0b3JlLCBXVEZNb3ZlKGluaXRpYWxpemF0aW9uRGF0YSkp
KTsKKyAgICBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlv
bigpLT5lc3RhYmxpc2hDb25uZWN0aW9uKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30K
KwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNo
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZp
ZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFJl
Z2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwg
U2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmIGluaXRpYWxpemF0aW9uRGF0YSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQcm9j
ZXNzOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKFBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVy
ZW5jZXNTdG9yZSYgc3RvcmUsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4s
IHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllciwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmIGlu
aXRpYWxpemF0aW9uRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIC8vIFdlIGFyZSBpbiB0aGUgU2VydmljZSBXb3JrZXIgY29udGV4dCBw
cm9jZXNzIGFuZCB0aGUgY2FsbCBiZWxvdyBlc3RhYmxpc2hlcyBvdXIgY29ubmVjdGlvbiB0byB0
aGUgTmV0d29yayBQcm9jZXNzCiAgICAgLy8gYnkgY2FsbGluZyBlbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uIFNXQ29udGV4dE1hbmFnZXIgbmVlZHMgdG8gdXNlIHRoZSBzYW1lIHVuZGVy
bHlpbmcgSVBDOjpDb25uZWN0aW9uIGFzIHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKaW5kZXggYjgwMzJmYmU4ZTIwLi42NWY3NzMyMDFhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNDY5LDggKzQ2OSw5IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBnYW1lcGFkRGlzY29ubmVjdGVkKHVuc2lnbmVkIGluZGV4KTsKICNlbmRpZgogCisgICAgdm9p
ZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
UGFnZUdyb3VwSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmLCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZv
aWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VH
cm91cElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySW5pdGlh
bGl6YXRpb25EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBl
c3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBh
Z2VHcm91cElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySW5p
dGlhbGl6YXRpb25EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYK
IAogICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJzaXRlRGF0YSYmKT4mJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDQyZDc1YTM5NGE5
Yy4uZTU1Mjk2YjkwNGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTAwLDggKzEwMCwxMCBAQCBtZXNzYWdlcyAtPiBXZWJQcm9j
ZXNzIExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewogICAgIEdhbWVwYWREaXNjb25uZWN0
ZWQodW5zaWduZWQgaW5kZXgpCiAjZW5kaWYKIAorICAgIEVzdGFibGlzaFNoYXJlZFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJLaXQ6OlBhZ2VHcm91cElkZW50aWZp
ZXIgcGFnZUdyb3VwSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJv
eHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4s
IHN0cnVjdCBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6
YXRpb25EYXRhKSAtPiAoKSBBc3luYworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAg
IEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJLaXQ6
OlBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRl
bnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBz
dHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBkb21haW4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgc3RydWN0IFdl
YktpdDo6U2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSBpbml0aWFsaXphdGlvbkRhdGEp
IC0+ICgpIEFzeW5jCisgICAgRXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhXZWJLaXQ6OlBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQs
IFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3Jl
IHN0b3JlLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQ
YWdlSWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6U2VydmljZVdvcmtlckluaXRpYWxpemF0aW9u
RGF0YSBpbml0aWFsaXphdGlvbkRhdGEpIC0+ICgpIEFzeW5jCiAjZW5kaWYKIAogICAgIFNldEhh
c1N1c3BlbmRlZFBhZ2VQcm94eShib29sIGhhc1N1c3BlbmRlZFBhZ2VQcm94eSk7Cg==
</data>
<flag name="commit-queue"
          id="476996"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450565</attachid>
            <date>2022-02-01 14:05:07 -0800</date>
            <delta_ts>2022-02-01 15:25:12 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>235958_SharedWorker_multiProcess_wip.patch</filename>
            <type>text/plain</type>
            <size>329221</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDQwYjI5NmM3MWQzNy4uMzZhMDczMTE3NjBlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTQ2Myw3ICs0NjMsNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYi1sb2Nrcy9zdGVhbC50ZW50YXRpdmUuaHR0cHMuYW55Lmh0bWwgWyBEdW1wSgog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3Ro
ZS1hbmFseXNlcm5vZGUtaW50ZXJmYWNlL3Rlc3QtYW5hbHlzZXItbWluaW11bS5odG1sIFsgRHVt
cEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUt
ZGlzY29ubmVjdC1hdWRpb3BhcmFtLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NhbWUtb3JpZ2luLWNoZWNr
LnN1Yi5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMuaHRt
bCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCiBmYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWJh
Y2stZm9yd2FyZC1jYWNoZS5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGZhc3Qv
aGlzdG9yeS9wYWdlLWNhY2hlLWNyZWF0ZUltYWdlQml0bWFwLmh0bWwgWyBEdW1wSlNDb25zb2xl
TG9nSW5TdGRFcnIgXQogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLWluLWxv
YWRpbmctaWZyYW1lLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQpAQCAtNTE1NCw2
ICs1MTUzLDEwIEBAIHdlYmtpdC5vcmcvYi8xODM5OTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3Nzb20vY3NzLXN0eWxlLWF0dHItZGVjCiAjIFRlc3QgaXMgY3Jhc2hpbmcg
aW4gRGVidWcgYnVpbGRzIHNpbmNlIGltcG9ydC4KIHdlYmtpdC5vcmcvYi8yMzQ5NzcgWyBEZWJ1
ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9mb2N1cy1ldmVu
dC1kb2N1bWVudC1tb3ZlLmh0bWwgWyBTa2lwIF0KIAorIyBUZXN0IGlzIGZsYWt5IGJlY2F1c2Ug
TWVzc2FnZVBvcnQgbWVzc2FnZXMgbWF5IGdldCByZWNlaXZlZCBpbiBhIGRpZmZlcmVudCBvcmRl
ciB3aGVuIHNldmVyYWwgTWVzc2FnZVBvcnRzIGFyZSBpbnZvbHZlZCwKKyMgZHVlIHRvIGhvdyBN
ZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpIGlzIGltcGxlbWVudGVkLgoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0
aW9ucy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIEZhaWx1cmUgUGFzcyBdCisKICMg
UGx1Z2lucwogIyBGSVhNRTogUmVtb3ZlIHRoZXNlIHRlc3RzLgogcGx1Z2lucy8gWyBTa2lwIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0
LW9ubHkuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3
b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dAppbmRleCAwZTk5NzI0Yjg2NGIuLjY4
OThiNTRhYWI2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdv
cmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRl
LXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSw2
ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2Nh
bGhvc3Q6OTQ0NC9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zdXBwb3J0L3Jlc291cmNlLnB5P2Ny
b3NzLW9yaWdpbi1mZXRjaAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8v
d3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQvcmVzb3Vy
Y2UucHk/Y3Jvc3Mtb3JpZ2luLXhocgotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0
dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQv
cmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLWZldGNoCiAKIFBBU1MgU2FtZS1vcmlnaW4gJ2ZldGNo
KCknLgogUEFTUyBTYW1lLW9yaWdpbiBYSFIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lk
ZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWItZXhwZWN0ZWQu
dHh0CmluZGV4IDk3OTEwNjMwMzc4NS4uYmI2NDUyZjQ0YTBhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMu
c3ViLWV4cGVjdGVkLnR4dApAQCAtMiwxMCArMiw5IEBACiBIYXJuZXNzIEVycm9yIChUSU1FT1VU
KSwgbWVzc2FnZSA9IG51bGwKIAogVElNRU9VVCBzaGFyZWR3b3JrZXItc2NyaXB0LXNyYyBUZXN0
IHRpbWVkIG91dAotRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgbm90IGJsb2Nr
ZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgIEEgbmV0d29yayBlcnJvciBvY2N1cnJlZC4KLUZBSUwg
YGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AgUmVmdXNlZCB0byBldmFs
dWF0ZSBhIHN0cmluZyBhcyBKYXZhU2NyaXB0IGJlY2F1c2UgJ3Vuc2FmZS1ldmFsJyBpcyBub3Qg
YW4gYWxsb3dlZCBzb3VyY2Ugb2Ygc2NyaXB0IGluIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1
cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAic2NyaXB0LXNyYyAnc2VsZicgJ25vbmNlLWEnIGJsb2I6
IGZpbGVzeXN0ZW06Ii4KLQotRkFJTCBgc2V0VGltZW91dChbc3RyaW5nXSlgIG5vdCBibG9ja2Vk
IGluIGh0dHA6IHdpdGhvdXQgQ1NQIGFzc2VydF91bnJlYWNoZWQ6IGNhbGxiYWNrIG5vdCBjYWxs
ZWQuIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNj
cmlwdHMoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgTG9hZCBmYWlsZWQKK1BB
U1MgYGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AKK1BBU1MgYHNldFRp
bWVvdXQoW3N0cmluZ10pYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3V0IENTUAogVElNRU9V
VCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgYmxvY2tlZCBpbiBodHRwOiB3aXRoIHNj
cmlwdC1zcmMgJ3NlbGYnIFRlc3QgdGltZWQgb3V0CiBOT1RSVU4gYGV2YWwoKWAgYmxvY2tlZCBp
biBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCiBOT1RSVU4gYHNldFRpbWVvdXQoW3N0cmlu
Z10pYCBibG9ja2VkIGluIGh0dHA6IHdpdGggc2NyaXB0LXNyYyAnc2VsZicKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vy
cy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9i
cm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4
cGVjdGVkLnR4dAppbmRleCBjMTA3MTM2NTUyODAuLjZmODQ0ZGQ1ZDk0OSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJz
L29mZmxpbmUvYXBwY2FjaGUvd29ya2Vycy9hcHBjYWNoZS13b3JrZXIuaHR0cHMtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBz
LWV4cGVjdGVkLnR4dApAQCAtNSw3ICs1LDcgQEAgSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1l
c3NhZ2UgPSBudWxsCiBQQVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIGNhY2hlZCBzY3JpcHQK
IFBBU1MgRGVkaWNhdGVkIHdvcmtlciBvZiB0aGUgZmFsbGJhY2tlZCBzY3JpcHQKIFBBU1MgRGVk
aWNhdGVkIHdvcmtlciBvZiB0aGUgbm90LWluLWNhY2hlIHNjcmlwdAotUEFTUyBTaGFyZWQgd29y
a2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0Ci1QQVNTIFNoYXJlZCB3b3JrZXIgb2YgdGhlIGZhbGxi
YWNrZWQgc2NyaXB0CitGQUlMIFNoYXJlZCB3b3JrZXIgb2YgdGhlIGNhY2hlZCBzY3JpcHQgYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgIkRvbmU6IGNhY2hlZCIgYnV0IGdvdCAiRXJyb3I6IEltcG9y
dGluZyBhIG5vbi1jYWNoZWQgc2NyaXB0IG11c3QgZmFpbC4iCitGQUlMIFNoYXJlZCB3b3JrZXIg
b2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJEb25lOiBm
YWxsYmFja2VkIiBidXQgZ290ICJFcnJvcjogSW1wb3J0aW5nIGEgbm9uLWNhY2hlZCBzY3JpcHQg
bXVzdCBmYWlsLiIKIFRJTUVPVVQgU2hhcmVkIHdvcmtlciBvZiB0aGUgbm90LWluLWNhY2hlIHNj
cmlwdCBUZXN0IHRpbWVkIG91dAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9h
bm9ueW1vdXMtaWZyYW1lL3NoYXJlZHdvcmtlci1wYXJ0aXRpb25pbmcudGVudGF0aXZlLmh0dHBz
LndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9hbm9ueW1vdXMtaWZy
YW1lL3NoYXJlZHdvcmtlci1wYXJ0aXRpb25pbmcudGVudGF0aXZlLmh0dHBzLndpbmRvdy1leHBl
Y3RlZC50eHQKaW5kZXggNGVkODc0NzQ3NmM3Li5mMWViMGIyMTdmMzkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmln
aW4tZW1iZWRkZXItcG9saWN5L2Fub255bW91cy1pZnJhbWUvc2hhcmVkd29ya2VyLXBhcnRpdGlv
bmluZy50ZW50YXRpdmUuaHR0cHMud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVk
ZGVyLXBvbGljeS9hbm9ueW1vdXMtaWZyYW1lL3NoYXJlZHdvcmtlci1wYXJ0aXRpb25pbmcudGVu
dGF0aXZlLmh0dHBzLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwg
QW5vbnltb3VzIGlmcmFtZXMgZ2V0IHBhcnRpdGlvbmVkIHNoYXJlZCB3b3JrZXJzLiBhc3NlcnRf
dHJ1ZTogVGhlICJub3JtYWwiIGlmcmFtZSdzIHNoYXJlZHdvcmtlciBzaG91bGQgcmV0dXJuIHsi
bm9ybWFsIjogdHJ1ZSwgIm5vcm1hbF9jb250cm9sIjogdHJ1ZX0sIGJ1dCBpbnN0ZWFkIHJldHVy
bmVkIHsibm9ybWFsIjp0cnVlfSBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQorRkFJTCBBbm9ueW1v
dXMgaWZyYW1lcyBnZXQgcGFydGl0aW9uZWQgc2hhcmVkIHdvcmtlcnMuIGFzc2VydF90cnVlOiBU
aGUgIm5vcm1hbCIgaWZyYW1lJ3Mgc2hhcmVkd29ya2VyIHNob3VsZCByZXR1cm4geyJub3JtYWwi
OiB0cnVlLCAibm9ybWFsX2NvbnRyb2wiOiB0cnVlfSwgYnV0IGluc3RlYWQgcmV0dXJuZWQgeyJh
bm9ueW1vdXMiOnRydWUsIm5vcm1hbF9jb250cm9sIjp0cnVlLCJub3JtYWwiOnRydWUsImFub255
bW91c19jb250cm9sIjp0cnVlfSBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mt
b3JpZ2luLWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5o
dHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNv
bGF0ZWQtcGVybWlzc2lvbi5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggNjM1NWI2OGRlNzBiLi5j
OGJmNzVlN2VhODUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L2Nyb3NzLW9yaWdp
bi1pc29sYXRlZC1wZXJtaXNzaW9uLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVk
ZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5odHRwcy1leHBlY3Rl
ZC50eHQKQEAgLTIwLDcgKzIwLDcgQEAgUEFTUyBkZWRpY2F0ZWQgd29ya2VyOiBzY2hlbWUgPSBi
bG9iLCB2YWx1ZSA9ICoKIFBBU1MgZGVkaWNhdGVkIHdvcmtlcjogc2NoZW1lID0gYmxvYiwgdmFs
dWUgPSBzZWxmCiBGQUlMIGRlZGljYXRlZCB3b3JrZXI6IHNjaGVtZSA9IGJsb2IsIHZhbHVlID0g
KFwpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIGZhbHNlIGJ1dCBnb3QgdHJ1ZQogUEFTUyBzaGFy
ZWQgd29ya2VyOiB3aXRoQ29vcENvZXAgPSBmYWxzZQotUEFTUyBzaGFyZWQgd29ya2VyOiB3aXRo
Q29vcENvZXAgPSB0cnVlCitGQUlMIHNoYXJlZCB3b3JrZXI6IHdpdGhDb29wQ29lcCA9IHRydWUg
YXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCiBQQVNTIHNlcnZpY2Ug
d29ya2VyOiB3aXRoQ29vcENvZXAgPSBmYWxzZQogRkFJTCBzZXJ2aWNlIHdvcmtlcjogd2l0aENv
b3BDb2VwID0gdHJ1ZSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCB0cnVlIGJ1dCBnb3QgZmFsc2UK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVyaXRhbmNlLnN1
Yi5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS93b3JrZXItaW5oZXJp
dGFuY2Uuc3ViLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCA3NWIxZDMzZTUyNjAuLmIyYmYyZTNi
ZmYzZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVyaXRhbmNl
LnN1Yi5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2Vy
LWluaGVyaXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw2IEBACiBCbG9j
a2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29t
bW9uL2JsYW5rLmh0bWwKIEJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3
dy5sb2NhbGhvc3Q6OTQ0NC9jb21tb24vYmxhbmsuaHRtbAogQmxvY2tlZCBhY2Nlc3MgdG8gZXh0
ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbW1vbi9ibGFuay5odG1sCi1C
bG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQv
Y29tbW9uL2JsYW5rLmh0bWwKIAogUEFTUyBUZXN0IHRoYXQgbG9jYWwgc2NoZW1lIHdvcmtlcnMg
aW5oZXJpdCBDT0VQOiByZXF1aXJlLWNvcnAgZnJvbSB0aGUgY3JlYXRpbmcgZG9jdW1lbnQKIFBB
U1MgYmxvYiBVUkwgZGVkaWNhdGVkIHdvcmtlcjogU2FtZSBvcmlnaW4gc2hvdWxkIGJlIGFsbG93
ZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyX2RhdGFVcmwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9k
YXRhVXJsLWV4cGVjdGVkLnR4dAppbmRleCA5OTVhMDYwMTliODQuLjliNTgyMGFhZThjYiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyX2RhdGFV
cmwtZXhwZWN0ZWQudHh0CkBAIC0xLDEzICsxLDUgQEAKLUNPTlNPTEUgTUVTU0FHRTogRXJyb3I6
IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDIgYnV0IGdvdCAxCiAKIAotSGFybmVzcyBFcnJvciAo
RkFJTCksIG1lc3NhZ2UgPSBFcnJvcjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290
IDEKLQotUEFTUyBEYXRhIFVSTCBub3Qgc2hhcmVkIGJ5IGNyb3NzLW9yaWdpbiBTaGFyZWRXb3Jr
ZXJzCi1USU1FT1VUIERhdGEgVVJMcyBzaGFyZWQgYnkgc2FtZS1vcmlnaW4gU2hhcmVkV29ya2Vy
cyBUZXN0IHRpbWVkIG91dAotCi1IYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IEVycm9y
OiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3QgMQotCiBQQVNTIERhdGEgVVJMIG5v
dCBzaGFyZWQgYnkgY3Jvc3Mtb3JpZ2luIFNoYXJlZFdvcmtlcnMKLVRJTUVPVVQgRGF0YSBVUkxz
IHNoYXJlZCBieSBzYW1lLW9yaWdpbiBTaGFyZWRXb3JrZXJzIFRlc3QgdGltZWQgb3V0CitQQVNT
IERhdGEgVVJMcyBzaGFyZWQgYnkgc2FtZS1vcmlnaW4gU2hhcmVkV29ya2VycwogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
bW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21v
ZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dApp
bmRleCA1NzZlNmQyYjdlZDIuLjRhMjZiZTkyOWE4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdv
cmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQt
d29ya2VyLWltcG9ydC1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBA
QAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3MS5sb2NhbGhvc3Q6
OTQ0My93b3JrZXJzL21vZHVsZXMvcmVzb3VyY2VzL2V4cG9ydC1vbi1sb2FkLXNjcmlwdC5weQog
CiBQQVNTIFN0YXRpYyBpbXBvcnQuCiBGQUlMIFN0YXRpYyBpbXBvcnQgKGNyb3NzLW9yaWdpbiku
IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiAiSW1wb3J0aW5n
IGEgbW9kdWxlIHNjcmlwdCBmYWlsZWQuIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1p
bXBvcnQtZGF0YS11cmwtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3Jr
ZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKaW5kZXggNGY4NjQx
ZTUxNDgwLi4yOTk3ZjdlMWYzMDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0
LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtl
ci1pbXBvcnQtZGF0YS11cmwtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMg
QEAKLUNPTlNPTEUgTUVTU0FHRTogT3JpZ2luIG51bGwgaXMgbm90IGFsbG93ZWQgYnkgQWNjZXNz
LUNvbnRyb2wtQWxsb3ctT3JpZ2luLiBTdGF0dXMgY29kZTogMjAwCiAKIEhhcm5lc3MgRXJyb3Ig
KFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2Vy
LWltcG9ydC1kYXRhLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1p
bXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dAppbmRleCBlYWM3Zjk1ZGU2ZjIuLmNi
YzA0MjllMGM3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11cmwu
d2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVy
bC53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8g
ZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3MS5sb2NhbGhvc3Q6OTQ0My93b3JrZXJzL21vZHVsZXMv
cmVzb3VyY2VzL2V4cG9ydC1vbi1sb2FkLXNjcmlwdC5weQogCiBIYXJuZXNzIEVycm9yIChUSU1F
T1VUKSwgbWVzc2FnZSA9IG51bGwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBv
cnQud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1l
eHBlY3RlZC50eHQKaW5kZXggNTc2ZTZkMmI3ZWQyLi40YTI2YmU5MjlhOGQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1
bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hh
cmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJs
b2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMv
d29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkKIAogUEFT
UyBTdGF0aWMgaW1wb3J0LgogRkFJTCBTdGF0aWMgaW1wb3J0IChjcm9zcy1vcmlnaW4pLiBwcm9t
aXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogIkltcG9ydGluZyBhIG1v
ZHVsZSBzY3JpcHQgZmFpbGVkLiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9u
cy1jcmVkZW50aWFscy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3Jl
ZGVudGlhbHMtZXhwZWN0ZWQudHh0CmluZGV4IGUxYmVkZjU0MzBlZi4uYTcwZjA1YWY1NGY0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1jcmVkZW50aWFscy1leHBlY3RlZC50
eHQKQEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cDov
L3d3dzEubG9jYWxob3N0Ojg4MDAvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtY3Jl
ZGVudGlhbHMucHkKIAogSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGlj
cy9tdWx0aXBsZS13b3JrZXJzLzAwNC1leHBlY3RlZC50eHQKaW5kZXggMDE4ZGI2MDQ1NjlkLi5j
ZmU0NjU1Njc1Y2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhwZWN0ZWQudHh0CkBAIC0x
LDUgKzEsMyBAQAogCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKLQot
Tk9UUlVOIHNoYXJlZCB3b3JrZXIgd2l0aCBtdWx0aXBsZSBkb2N1bWVudHMKK1BBU1Mgc2hhcmVk
IHdvcmtlciB3aXRoIG11bHRpcGxlIGRvY3VtZW50cwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRp
cGxlLXdvcmtlcnMvMDA4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDgt
ZXhwZWN0ZWQudHh0CmluZGV4IDk3YTRlN2E3M2E2My4uMDlmNjcyZDFjNjIxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2Vt
YW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA4LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRp
cGxlLXdvcmtlcnMvMDA4LWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDMgQEAKIAotSGFybmVzcyBF
cnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0KLVRJTUVPVVQgbWVzc2FnZWNoYW5uZWwg
aW4gc2hhcmVkIHdvcmtlciBUZXN0IHRpbWVkIG91dAorUEFTUyBtZXNzYWdlY2hhbm5lbCBpbiBz
aGFyZWQgd29ya2VyCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4
dAppbmRleCBhMDg5YzIyNDg5ZTIuLmQzOWE1NTA4NGRjMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXIt
ZnJvbS1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxv
Yi11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDcgQEAKIAogSGFybmVzcyBFcnJv
ciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCiAKLUZBSUwgQ3JlYXRpbmcgYSBzaGFyZWQgd29y
a2VyIGZyb20gYSBibG9iIFVSTCB3b3Jrcy4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIndvcmtl
cl9PS18yIiBidXQgZ290ICJ3b3JrZXJfT0tfMSIKLVBBU1MgQ3JlYXRpbmcgYSBzaGFyZWQgd29y
a2VyIGZyb20gYSBibG9iIFVSTCB3b3JrcyBpbW1lZGlhdGVseSBiZWZvcmUgcmV2b2tpbmcuCi1U
SU1FT1VUIENvbm5lY3RpbmcgdG8gYSBzaGFyZWQgd29ya2VyIG9uIGEgcmV2b2tlZCBibG9iIFVS
TCB3b3Jrcy4gVGVzdCB0aW1lZCBvdXQKK1BBU1MgQ3JlYXRpbmcgYSBzaGFyZWQgd29ya2VyIGZy
b20gYSBibG9iIFVSTCB3b3Jrcy4KK1RJTUVPVVQgQ3JlYXRpbmcgYSBzaGFyZWQgd29ya2VyIGZy
b20gYSBibG9iIFVSTCB3b3JrcyBpbW1lZGlhdGVseSBiZWZvcmUgcmV2b2tpbmcuIFRlc3QgdGlt
ZWQgb3V0CitOT1RSVU4gQ29ubmVjdGluZyB0byBhIHNoYXJlZCB3b3JrZXIgb24gYSByZXZva2Vk
IGJsb2IgVVJMIHdvcmtzLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25z
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDZmZmVlMjczOTBkOS4uYWU0NWI0ZDI3Mzk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1l
LXZpYS1vcHRpb25zLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25z
LWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKIAotRkFJTCBUZXN0IHRoZSBuYW1lIHByb3Bl
cnR5IG9mIHNoYXJlZCB3b3JrZXJzIG1peGluZyBjb25zdHJ1Y3RvciBvcHRpb25zIGFuZCBjb25z
dHJ1Y3RvciBzdHJpbmdzIEVycm9yOiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3Qg
MQorUEFTUyBUZXN0IHRoZSBuYW1lIHByb3BlcnR5IG9mIHNoYXJlZCB3b3JrZXJzIG1peGluZyBj
b25zdHJ1Y3RvciBvcHRpb25zIGFuZCBjb25zdHJ1Y3RvciBzdHJpbmdzCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFy
ZWQtd29ya2VyLW9wdGlvbnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItb3B0aW9u
cy1taXNtYXRjaC1leHBlY3RlZC50eHQKaW5kZXggZjY1Njk0NjE1MGRiLi40Zjk5YTEzNDA5ZTcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFy
ZWQtd29ya2VyLW9wdGlvbnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CkBAIC0xLDI4ICsxLDI2IEBA
CiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1USU1FT1VUIENv
bm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBi
ZSBibG9ja2VkOiBkZWZhdWx0IHRvIG1vZHVsZSBUZXN0IHRpbWVkIG91dAotTk9UUlVOIENvbm5l
Y3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBi
bG9ja2VkOiBtb2R1bGUgdG8gZGVmYXVsdAotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBjbGFzc2ljIHRv
IG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVu
dCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBtb2R1bGUgdG8gY2xhc3NpYwotTk9UUlVOIENv
bm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBi
ZSBibG9ja2VkOiBkZWZhdWx0IHRvIG9taXQgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBkZWZhdWx0IHRvIGluY2x1ZGUgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hh
cmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0
IHRvIGRlZmF1bHQgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIHNhbWUt
b3JpZ2luIGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0
aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBpbmNsdWRlIGlu
IGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJl
bnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBjbGFz
c2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9w
dGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIGluY2x1ZGUgaW4gY2xhc3Np
YwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIGRlZmF1bHQgaW4gY2xhc3NpYwotTk9U
UlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNo
b3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5l
Y3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBi
bG9ja2VkOiBpbmNsdWRlIHRvIHNhbWUtb3JpZ2luIGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0
aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxv
Y2tlZDogZGVmYXVsdCB0byBvbWl0IGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hh
cmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZh
dWx0IHRvIGluY2x1ZGUgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29y
a2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gZGVm
YXVsdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBzYW1lLW9yaWdpbiBp
biBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJl
bnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBpbmNsdWRlIGluIG1vZHVsZQot
Tk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25z
IHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBvbWl0IGluIG1vZHVsZQotTk9UUlVO
IENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3Vs
ZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIG1vZHVsZQotTk9UUlVOIENv
bm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBi
ZSBibG9ja2VkOiBpbmNsdWRlIHRvIGRlZmF1bHQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGlu
ZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2Nr
ZWQ6IGluY2x1ZGUgdG8gb21pdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJl
ZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVk
ZSB0byBzYW1lLW9yaWdpbiBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29y
a2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8g
bW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBtb2R1bGUgdG8gZGVmYXVsdAorUEFTUyBDb25uZWN0
aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxv
Y2tlZDogY2xhc3NpYyB0byBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2Vy
IHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG1vZHVsZSB0byBjbGFz
c2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIG9taXQgaW4gY2xhc3NpYworUEFTUyBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogZGVmYXVsdCB0byBpbmNsdWRlIGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGlu
ZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2Nr
ZWQ6IG9taXQgdG8gZGVmYXVsdCBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVk
IHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRv
IHNhbWUtb3JpZ2luIGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2Vy
IHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVk
ZSBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZl
cmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBvbWl0IGluIGNs
YXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9w
dGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIGluY2x1ZGUgaW4gY2xhc3Np
YworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9u
cyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGluIGNsYXNzaWMKK1BBU1Mg
Q29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxk
IGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gb21pdCBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBpbmNsdWRlIHRvIHNhbWUtb3JpZ2luIGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBz
aGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRl
ZmF1bHQgdG8gb21pdCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2Vy
IHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gaW5j
bHVkZSBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlm
ZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gZGVmYXVsdCBpbiBtb2R1
bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlv
bnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gc2FtZS1vcmlnaW4gaW4gbW9kdWxlCitQQVNT
IENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3Vs
ZCBiZSBibG9ja2VkOiBvbWl0IHRvIGluY2x1ZGUgaW4gbW9kdWxlCitQQVNTIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBzYW1lLW9yaWdpbiB0byBvbWl0IGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJl
ZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1v
cmlnaW4gdG8gaW5jbHVkZSBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29y
a2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8g
ZGVmYXVsdCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGgg
ZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gb21pdCBpbiBt
b2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9w
dGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gc2FtZS1vcmlnaW4gaW4gbW9kdWxl
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMveGhyL29wZW4tdXJsLXJlZGlyZWN0ZWQtc2hhcmVkd29ya2VyLW9yaWdpbi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVu
LXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0CmluZGV4IDFl
MmQzOTkyZjZkNS4uNTljYWNhNDg2ZjhkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdv
cmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMveGhyL29wZW4tdXJsLXJlZGlyZWN0ZWQtc2hhcmVkd29ya2VyLW9y
aWdpbi1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0byBleHRl
cm5hbCBVUkwgaHR0cDovL3d3dzIubG9jYWxob3N0Ojg4MDAveGhyL3Jlc291cmNlcy9pbnNwZWN0
LWhlYWRlcnMucHk/ZmlsdGVyX25hbWU9b3JpZ2luJmNvcnMKIAogRkFJTCBSZWZlcmVyIGhlYWRl
ciBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiUmVmZXJlcjogaHR0cDovL2xvY2FsaG9zdDo4ODAw
L3hoci9yZXNvdXJjZXMvd29ya2VyeGhyLW9yaWdpbi1yZWZlcnJlci5qc1xuIiBidXQgZ290ICJS
ZWZlcmVyOiBodHRwOi8vbG9jYWxob3N0Ojg4MDAveGhyL3Jlc291cmNlcy9yZWRpcmVjdC5weT9s
b2NhdGlvbj13b3JrZXJ4aHItb3JpZ2luLXJlZmVycmVyLmpzXG4iCiBGQUlMIE9yaWdpbiBoZWFk
ZXIgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIk9yaWdpbjogaHR0cDovL2xvY2FsaG9zdDo4ODAw
XG4iIGJ1dCBnb3QgIiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCA4NmRmMjdkNWJhYmIuLmNmMjczOWZjMDMwMyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNjYsNiArNjYsNjcgQEAg
aHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUtZ2V0VXNlck1lZGlhLXBlbmRpbmctcHJv
bWlzZS5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS1tZWRp
YXN0cmVhbS5odG1sIFsgU2tpcCBdCiBtZWRpYS9hdWRpby1zZXNzaW9uLWNhdGVnb3J5Lmh0bWwg
WyBTa2lwIF0KIAorIyBTaGFyZWQgd29ya2VycyBhcmUgb25seSBpbXBsZW1lbnRlZCBmb3IgV2Vi
S2l0Mi4KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvZ2VuL3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItY2xhc3Np
Yy5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtc2VsZi9zaGFy
ZWR3b3JrZXItY2xhc3NpYy5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC9zY3Jp
cHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3Rv
cC5odHRwLXJwL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cC5o
dG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdv
cmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3NjcmlwdC1z
cmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3Rv
cC5odHRwLXJwL3dvcmtlci1zcmMtc2VsZi9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwLmh0bWwg
WyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0
eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtc2VsZi9zaGFyZWR3b3JrZXItY2xh
c3NpYy5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLXNlbGYv
c2hhcmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dv
cmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cC5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1jbGFzc2lj
Lmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3
b3JrZXItY2xhc3NpYy5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMt
c2VsZi9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0
YS9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
Z2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0
cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdv
cmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMt
c2VsZi9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRh
L3dvcmtlci1zcmMtc2VsZi9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwcy5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2dlbi90b3AubWV0YS93b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwLmh0
bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9k
dWxlLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtd2lsZGNhcmQv
c2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3Jr
ZXItc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
Z2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRw
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29y
a2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2Vy
LWNvbm5lY3Qtc3JjLnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2Vy
LXJlcG9ydC1vbmx5LnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2Vy
LXNjcmlwdC1zcmMuc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2FuZGJveC9zaGFyZWQtd29ya2VyLXNhbmRi
b3guaHRtbCAgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItZGF0YS1zZXQtdGltZW91dC5zdWIu
aHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS93b3JrZXItc3JjL3NoYXJlZC1jaGlsZC5zdWIuaHRtbCBbIFNraXAgXQor
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9n
ZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy1zZWxmL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5o
dHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3
b3JrZXItaW1wb3J0LWRhdGEuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2Ny
aXB0LXNyYy1zZWxmL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4v
dG9wLmh0dHAtcnAvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItaW1wb3J0LWRhdGEu
aHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXdpbGRjYXJkL3No
YXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1y
cC9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cHMuaHRtbCBbIFNr
aXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBv
bGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1ub25lL3NoYXJlZHdvcmtlci1jbGFzc2lj
Lmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1ub25lL3NoYXJl
ZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtl
ci1zcmMtbm9uZS9zaGFyZWR3b3JrZXItaW1wb3J0LWRhdGEuaHR0cC5odG1sIFsgU2tpcCBdCitp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dl
bi90b3AuaHR0cC1ycC93b3JrZXItc3JjLW5vbmUvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0
dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtbm9uZS9zaGFyZWR3
b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNy
Yy1ub25lL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0
dHAtcnAvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0bWwg
WyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0
eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtc2VsZi9zaGFyZWR3b3JrZXItaW1w
b3J0LWRhdGEuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1z
ZWxmL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAt
cnAvd29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItaW1wb3J0LWRhdGEuaHR0cC5odG1s
IFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJp
dHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtl
ci1pbXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXIt
c3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90
b3AuaHR0cC1ycC93b3JrZXItc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cHMu
aHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNyYy1zZWxmL3NoYXJlZHdvcmtlci1p
bXBvcnQtZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtc2Vs
Zi9zaGFyZWR3b3JrZXItaW1wb3J0LWRhdGEuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1l
dGEvc2NyaXB0LXNyYy1zZWxmL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cHMuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItaW1wb3J0LWRh
dGEuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nv
bnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXdpbGRjYXJkL3No
YXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS9z
Y3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cC5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0
cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50
LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1ub25lL3NoYXJlZHdvcmtl
ci1jbGFzc2ljLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1ub25l
L3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dv
cmtlci1zcmMtc2VsZi9zaGFyZWR3b3JrZXItaW1wb3J0LWRhdGEuaHR0cC5odG1sIFsgU2tpcCBd
CisKIGh0dHAvd3B0L21lZGlhcmVjb3JkZXIgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJlY29yZCBbIFNraXAgXQogZmFzdC9oaXN0b3J5L3Bh
Z2UtY2FjaGUtbWVkaWEtcmVjb3JkZXIuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCA3OTJhMDBmOWVhMWEuLjQ1N2M0YWE5YjFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAg
LTE3OSw2ICsxNzksNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0lOQ0xVREVfRElSRUNUT1JJRVMK
ICAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQiCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3dv
cmtlcnMvc2hhcmVkIgorICAgICIke1dFQkNPUkVfRElSfS93b3JrZXJzL3NoYXJlZC9jb250ZXh0
IgogICAgICIke1dFQkNPUkVfRElSfS93b3JrbGV0cyIKICAgICAiJHtXRUJDT1JFX0RJUn0veG1s
IgogICAgICIke1dFQkNPUkVfRElSfS94bWwvcGFyc2VyIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXgg
NWFjYzJkOWRmZTFlLi5mY2UwOTliYWRmZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTk1MSwx
MiArMTk1MSwxNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
d29ya2Vycy9TY3JpcHRCdWZmZXIuaAogICAgIHdvcmtlcnMvV29ya2VyQW5pbWF0aW9uQ29udHJv
bGxlci5oCiAgICAgd29ya2Vycy9Xb3JrZXJEZWJ1Z2dlclByb3h5LmgKKyAgICB3b3JrZXJzL1dv
cmtlckZldGNoUmVzdWx0LmgKICAgICB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCiAg
ICAgd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCiAgICAgd29ya2Vycy9Xb3JrZXJMb2FkZXJQ
cm94eS5oCisgICAgd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oCisgICAgd29ya2Vycy9Xb3Jr
ZXJPcHRpb25zLmgKICAgICB3b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKICAg
ICB3b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaAogICAgIHdvcmtlcnMv
V29ya2VyT3JXb3JrbGV0VGhyZWFkLmgKKyAgICB3b3JrZXJzL1dvcmtlclJlcG9ydGluZ1Byb3h5
LmgKICAgICB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuaAogICAgIHdvcmtlcnMvV29ya2VyU2NyaXB0
TG9hZGVyLmgKICAgICB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlckNsaWVudC5oCkBAIC0yMDAw
LDYgKzIwMDQsMTUgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAg
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKICAg
ICB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKIAorICAgIHdvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaAorICAgIHdvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlcktleS5oCisgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbi5oCisgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5o
CisgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJvdmlkZXIuaAorCisgICAgd29ya2Vy
cy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oCisgICAgd29ya2Vy
cy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oCisKICAgICB4bWwvQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyLmgKICAgICB4bWwvWFBhdGhFeHByZXNzaW9uLmgKICAgICB4bWwv
WFBhdGhOU1Jlc29sdmVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZjY2Y2NmOGYwNmE1Li45YWI4NjA0
YzlkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yNzg2LDEwICsyNzg2LDEyIEBAIHdvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
ci5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAotd29ya2Vy
cy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5jcHAKLXdvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlclByb3h5LmNwcAord29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bi5jcHAKK3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmNwcAogd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyVGhyZWFkLmNwcAord29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlci5jcHAKK3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFk
UHJveHkuY3BwCiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKIHdvcmtsZXRz
L1dvcmtsZXQuY3BwCiB3b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWNiZjg3
NmUyNThmLi4xOGRmZWMwNjgyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkwMyw3ICs5MDMsNyBAQAogCQkyRTQzNDY0QjBG
NTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2MzkwRjU0NkE4MjAwQjBGMUJB
IC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuaCAqLzsgfTsKIAkJMkU0MzQ2NEQwRjU0NkE4MjAw
QjBGMUJBIC8qIFdvcmtlckxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzQjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyTG9jYXRp
b24uaCAqLzsgfTsKIAkJMkU0MzQ2NTAwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck1lc3NhZ2lu
Z1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RTQzNDYzRTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyTWVzc2FnaW5nUHJveHkuaCAqLzsgfTsK
LQkJMkU0MzQ2NTEwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzRjBGNTQ2QTgy
MDBCMEYxQkEgLyogV29ya2VyT2JqZWN0UHJveHkuaCAqLzsgfTsKKwkJMkU0MzQ2NTEwRjU0NkE4
MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzRjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
T2JqZWN0UHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkyRTQzNDY1MzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyUnVuTG9vcC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2NDEwRjU0NkE4
MjAwQjBGMUJBIC8qIFdvcmtlclJ1bkxvb3AuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTQzNDY1NTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
VGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RTQzNDY0MzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyVGhyZWFkLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU3NTg0MUUxMjc3OUFEQTAwNjI2
MjhCIC8qIEZpbGVSZWFkZXJMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJFNzU4NDFCMTI3NzlBREEwMDYyNjI4QiAvKiBGaWxlUmVhZGVyTG9h
ZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTExMjUsNyArMTEyNSw3IEBACiAJCTQxNkEwNkExMjNDQ0FEMDMwMDM0NzEwOSAvKiBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE2QTA2OTYyM0NDQUE5RjAwMzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNDE2RDc1QTIyMEM2NTFBNTAwRDAyRDJDIC8qIE5ldHdvcmtMb2FkSW5mb3Jt
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
NkQ3NTlGMjBDNjQ0MTMwMEQwMkQyQyAvKiBOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTBCM0EyMDlC
QzNDQjAwNEE5NUQ5IC8qIEZldGNoSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTBCMzcyMDlCQzNDMjAwNEE5NUQ5IC8qIEZldGNo
SWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTI5QTUx
MDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggKi87IH07CisJCTQxNkUy
OUE2MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTI5QTUxMDJGQTk2MjAwN0ZD
MTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgxQkJEMTJERjAwMEEzRjY0IC8qIFJlYWRh
YmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjREOSAvKiBSZWFkYWJsZVN0
cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgxQkJEMTJERjAwMEEzRjY1IC8qIEpTRE9NQmluZGlu
Z0ludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0REEgLyogSlNET01CaW5kaW5nSW50ZXJu
YWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0MTZFNkZFODFCQkQxMkRGMDAwQTNGNzQgLyogVHJhbnNmb3JtU3RyZWFtSW50ZXJu
YWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjRFQSAvKiBUcmFuc2Zvcm1TdHJlYW1JbnRlcm5hbHNC
dWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0xMzIwLDYgKzEzMjAsOCBAQAogCQk0NjBFMzA3NzIyMkY0RjAzMDA5QTA2MDYgLyogRGV2
aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1RUREOUYyMjJGNEVDMzAwQjQ2RTE2IC8q
IERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjIxOEFDQjFGNzJENjRFMDA1
NzRGQkUgLyogRE9NSGlnaFJlc1RpbWVTdGFtcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFMDE2QUQxRjcyRDYxRTAwMjgyQjJDIC8qIERPTUhpZ2hS
ZXNUaW1lU3RhbXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0NjI3M0NBRjI2MEU1OUVGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjI3M0NBQzI2MEU1
OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDYyN0ZGNTkyNzlCODI0OTAwQUEzOTE2IC8qIFNo
YXJlZFdvcmtlclRocmVhZFByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjI3RkY1ODI3OUI4MjQ2MDBBQTM5MTYgLyogU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk0NjI3RkY1QjI3OUI4N0FGMDBBQTM5MTYgLyogU2hhcmVkV29ya2VySWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYyN0ZGNUEy
NzlCODdBMjAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlcklkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjJDN0Y0MTI3NTZEQkU0MDBE
MDgzQzggLyogV2ViTG9ja0lkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzgwMkIyMjc0NzExODUwMERBOUZCNiAvKiBXZWJMb2NrSWRl
bnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQ2MkU0QzUwMjYxNkE4MTEwMDNBMkM2NyAvKiBTY3JpcHRCdWZmZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MkU0QzREMjYxNkE4MDEwMDNB
MkM2NyAvKiBTY3JpcHRCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0NjM0QzcyQzI3NTdEQUIyMDAyNkE4MTUgLyogV2ViTG9ja01hbmFn
ZXJTbmFwc2hvdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY3ODAyQjAyNzQ3MTE3QjAwREE5RkI2IC8qIFdlYkxvY2tNYW5hZ2VyU25hcHNob3QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM0MSwx
NSArMTM0MywxOCBAQAogCQk0NjczMDIwMjFDNEVGRTc4MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNE
dXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjczMDIwMTFDNEVGRTY2MDBCQ0IzNTcgLyogSWdub3JlT3Bl
bnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggKi87IH07CiAJCTQ2N0E2OEQ3Mjc1RUE5
OTEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0E2OEQ0Mjc1RUE5OEIwMDlCMzFDNSAvKiBTaGFy
ZWRXb3JrZXJUaHJlYWQuaCAqLzsgfTsKIAkJNDY3QTY4RDgyNzVFQTk5NTAwOUIzMUM1IC8qIFNo
YXJlZFdvcmtlclNjcmlwdExvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDY3QTY4RDUyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNj
cmlwdExvYWRlci5oICovOyB9OwotCQk0NjdBNjhEOTI3NUVBOTk4MDA5QjMxQzUgLyogU2hhcmVk
V29ya2VyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2N0E2OEQ2Mjc1RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJQcm94eS5oICovOyB9
OwotCQk0NjdBNjhEQTI3NUVBOTlDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3QTY4RDIyNzVF
QTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCAqLzsgfTsKIAkJNDY4MkQyMDAx
Rjc5NzgzMDAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgyRDFGRjFGNzk3ODIzMDBDODYz
REIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjgzNDRFMDFFRERGQUFBMDBCNzc5NUIgLyogRE9N
UmVjdExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODNERjQwMjc2N0RGOTgwMDdE
MDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzREYzRTI3NjdERjk4MDA3RDAwQzggLyog
SlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oICovOyB9OwogCQk0NjgzREY0MTI3NjdFOTFB
MDA3RDAwQzggLyogU2hhZG93UmVhbG1HbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4M0RGM0IyNzY3REYyNjAwN0QwMEM4IC8qIFNo
YWRvd1JlYWxtR2xvYmFsU2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0Njg4RUUzQzI2REQyNjEwMDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5N
b2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njg4
RUUzQTI2REQyNjBDMDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5Nb2RlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDY5NDNEQzgyNzYzRjgxMjAwNEI2
MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTQzREM1Mjc2M0Y4MEQwMDRCNjEwRSAvKiBT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDY5NDNEQzkyNzYzRjgxNzAwNEI2MTBFIC8qIFNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2OTQzREM3Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNDY5NDNEQ0EyNzYzRjgxQzAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlclByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0
M0RDNDI3NjNGODBEMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyUHJvdmlkZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0Njk4NUYyMzI3QTRBNkFE
MDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk4NUYyMjI3QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVkV29y
a2VyS2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDY5Q0NDRkUyNjlEMDIxQzAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OUNDQ0ZDMjY5RDAyMDIw
MDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY5RDc3QjgyNzAxNjI1MTAwMTQyRkE2IC8qIE5hdmln
YXRpb25SZXF1ZXN0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2OUQ3N0I2MjcwMTYyNTAwMDE0MkZBNiAvKiBOYXZpZ2F0aW9uUmVxdWVzdGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDZBNzhC
MzQyNzk5QkQ3MTAwMTE1NEZFIC8qIFdvcmtlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMUIxRDI2MjZGMThBNEIwMDg4MkRBMiAvKiBX
b3JrZXJPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDZBQUFBM0QyNUQzNjMyMDAwQkFGNDJGIC8qIEF1ZGlvRmlsZVJlYWRlckNvY29h
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkFBQUEz
QTI1RDM2MzE0MDBCQUY0MkYgLyogQXVkaW9GaWxlUmVhZGVyQ29jb2EuaCAqLzsgfTsKIAkJNDZC
NjNGNkMxQzZFOEQxOTAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjYzRjZCMUM2RThDREYwMDJF
OTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCNjUwREQyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJ
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkI2NTBEQjIyOTYyNjI3MDBGRDhBQTQgLyogUGFnZUlkZW50aWZpZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM2Niw2ICsxMzcxLDcg
QEAKIAkJNDZCRDA1QzYyNUJCNkU2QzAwMjI1RjMwIC8qIEV2ZW50TGlzdGVuZXJPcHRpb25zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkJEMDVDMzI1
QkI2RTRFMDAyMjVGMzAgLyogRXZlbnRMaXN0ZW5lck9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkMwOTYyMTIzRDc4REQ2MDA2NTdD
MDkgLyogSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDMDk2MjAyM0Q3OERENjAwNjU3QzA5IC8qIEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0NkMzNzY2MjIwODUxNzdEMDBDNzM4MjkgLyogSlNSZW1vdGVET01XaW5kb3cu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzM3NjYx
MjA4NTE3NkQwMEM3MzgyOSAvKiBKU1JlbW90ZURPTVdpbmRvdy5oICovOyB9OworCQk0NkM0MTY5
QjI3OUEwNEM3MDAyNTJDM0IgLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MjZCNDc1Mjc5QTAzRDIw
MEFFRjBCMiAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QzY5NkNCMUU3MjA1RjcwMDU5Nzkz
NyAvKiBDUFVNb25pdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkM2OTZDOTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QzY5NkNDMUU3MjA1
RkMwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5NkNBMUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9y
LmNwcCAqLzsgfTsKIAkJNDZDODNFRkUxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM4M0VGQzFB
OUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM3Myw2ICsxMzc5LDcgQEAKIAkJNDZEMDAwNDAy
NkEwRkVCMzAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkQwMDAzRTI2QTBGRTZGMDBEMUJGMUUgLyogU3VibWl0
RXZlbnQuaCAqLzsgfTsKIAkJNDZEQkI2NTAxQUI4Qzk2RjAwRDlBODEzIC8qIFBvd2VyT2JzZXJ2
ZXJNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
REJCNjRFMUFCOEM5NkYwMEQ5QTgxMyAvKiBQb3dlck9ic2VydmVyTWFjLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZERDkzRDcyNjlERTc1NjAw
MUFGRDg4IC8qIEJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkREOTNENTI2OURFNzRCMDAxQUZEODggLyog
QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk0NkREQkRBMzI3QTlDNzE2MDA3NzM0N0EgLyogV29ya2Vy
RmV0Y2hSZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2RERCREExMjdBOUM3MEMwMDc3MzQ3QSAvKiBXb3JrZXJGZXRjaFJlc3VsdC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2REU5QkI1MjY5
REY5M0UwMDI0QzVBNiAvKiBCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REU5QkI0MjY5REY5MzIwMDI0QzVB
NiAvKiBCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkRGRjQ5ODFEQzI2MDMxMDBCODBCNDggLyogU2hh
ZG93Um9vdE1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2REZGNDk2MURDMjYwMTMwMEI4MEI0OCAvKiBTaGFkb3dSb290TW9kZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2REZGNDlDMURDMjYy
MEIwMEI4MEI0OCAvKiBKU1NoYWRvd1Jvb3RNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRGRjQ5QTFEQzI2MUY5MDBCODBCNDggLyogSlNTaGFk
b3dSb290TW9kZS5oICovOyB9OwpAQCAtOTE4MCw5ICs5MTg3LDEzIEBACiAJCTQ2MENCRjMzMUQ0
QkNDRkUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01XaW5kb3dQcm9wZXJ0aWVzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYwQ0JGMzQxRDRCQ0NGRTAwOTJFODhFIC8qIEpTRE9N
V2luZG93UHJvcGVydGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RP
TVdpbmRvd1Byb3BlcnRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYwRDE5
NDQxRkNFMjFERDAwQzNEQjg1IC8qIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2VydmljZVdvcmtlckds
b2JhbFNjb3BlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYyNkI0
NzUyNzlBMDNEMjAwQUVGMEIyIC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2MjczQzIxMjdBMUNCQzcwMDZBMTVCOSAvKiBKU0F1ZGlvV29ya2xldFBy
b2Nlc3NvckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0F1ZGlvV29ya2xldFByb2Nl
c3NvckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MjczQ0FDMjYw
RTU5REYwMDZGQUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1dTY3JpcHRTdG9yYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2MjczQ0FFMjYwRTU5REYwMDZGQUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1dTY3JpcHRTdG9yYWdlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYyN0ZGNTcyNzlCODI0NTAwQUEzOTE2IC8qIFNo
YXJlZFdvcmtlclRocmVhZFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDYyN0ZGNTgyNzlCODI0NjAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlclRocmVhZFBy
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclRocmVh
ZFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MjdGRjVBMjc5Qjg3QTIw
MEFBMzkxNiAvKiBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlcklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDYyRTRDNEQyNjE2QTgwMTAwM0EyQzY3IC8qIFNjcmlwdEJ1ZmZlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRCdWZmZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYyRTRDNEYyNjE2QTgwMTAwM0EyQzY3IC8qIFNjcmlwdEJ1
ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRCdWZm
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjM0NTkyQjFBQzIyNzEwMDBF
Q0I3MUMgLyogUG93ZXJPYnNlcnZlck1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQb3dlck9ic2VydmVyTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTkyMjksMTQgKzkyNDAsMTAgQEAKIAkJNDY3MzAyMDExQzRFRkU2NjAwQkNCMzU3IC8q
IElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3ODAyQjAyNzQ3MTE3QjAwREE5
RkI2IC8qIFdlYkxvY2tNYW5hZ2VyU25hcHNob3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViTG9ja01hbmFnZXJTbmFwc2hvdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0Njc4MDJCMjI3NDcxMTg1MDBEQTlGQjYgLyogV2ViTG9ja0lkZW50aWZpZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTG9ja0lkZW50aWZpZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDY3QTY4Q0YyNzVFQTk4OTAwOUIzMUM1IC8qIFNo
YXJlZFdvcmtlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb3h5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3QTY4RDAyNzVFQTk4OTAwOUIz
MUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRX
b3JrZXJUaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdBNjhEMTI3
NUVBOThBMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTQ2N0E2OEQyMjc1RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5h
Z2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlck1hbmFnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNDY3QTY4RDMyNzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtl
ck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyTWFuYWdlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2N0E2OEQ0Mjc1RUE5OEIwMDlCMzFDNSAv
KiBTaGFyZWRXb3JrZXJUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFk
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2N0E2OEQ1Mjc1RUE5OEMwMDlCMzFD
NSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2N0E2OEQ2
Mjc1RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
aGFyZWRXb3JrZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgyRDFG
RjFGNzk3ODIzMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzQ0REMxRURERkE1RjAwQjc3OTVCIC8qIERPTVJl
Y3RMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBET01SZWN0TGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2ODM0NEREMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBET01SZWN0TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC05MjQ5LDYgKzkyNTYsMTIgQEAKIAkJNDY4M0RGM0UyNzY3REY5ODAwN0QwMEM4IC8qIEpT
U2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0Njg4RUUzQTI2REQyNjBDMDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5Nb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENyb3NzT3JpZ2luTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjhCOEJERTI1Q0M4NDkzMDBGNjc4MjIgLyogSlNCYXNlQXVkaW9Db250ZXh0Q3Vz
dG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQmFzZUF1ZGlvQ29udGV4dEN1c3RvbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzREMyMjc2M0Y4MEMwMDRCNjEwRSAv
KiBTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3Jr
ZXJQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzREM0Mjc2
M0Y4MEQwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
aGFyZWRXb3JrZXJQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0
M0RDNTI3NjNGODBEMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzREM2Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RD
NzI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ2OTg1RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJL
ZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyS2V5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OUNDQ0ZBMjY5RDAyMDIwMDZFMDMxNCAv
KiBCcm9hZGNhc3RDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJyb2FkY2FzdENoYW5u
ZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlDQ0NGQzI2OUQwMjAyMDA2
RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCcm9hZGNhc3RDaGFu
bmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OUNDQ0ZEMjY5RDAyMDMwMDZF
MDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBCcm9hZGNhc3RDaGFubmVsLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkyODMsNiArOTI5Niw3IEBACiAJCTQ2QzM3
NjVGMjA4NTE3NkMwMEM3MzgyOSAvKiBKU1JlbW90ZURPTVdpbmRvdy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlbW90ZURPTVdpbmRvdy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzM3NjYxMjA4NTE3NkQwMEM3MzgyOSAvKiBKU1JlbW90
ZURPTVdpbmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1JlbW90ZURP
TVdpbmRvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkMzQThEMzI1NDhENEI3
MDBDOEM1M0EgLyogSlNBdWRpb0J1ZmZlckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0F1ZGlvQnVmZmVyQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZD
NDE2OUQyNzlBMDREMjAwMjUyQzNCIC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDNjk2QzkxRTcyMDVF
NDAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ1BVTW9uaXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkM2OTZDQTFF
NzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDUFVNb25pdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDZDODNFRkIxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlb05vdGlmaWVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTkyOTQsNiArOTMwOCw3IEBACiAJCTQ2RDAwMDNGMjZBMEZFNzAw
MEQxQkYxRSAvKiBTdWJtaXRFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU3VibWl0
RXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRCQjY0RTFBQjhDOTZG
MDBEOUE4MTMgLyogUG93ZXJPYnNlcnZlck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQb3dlck9ic2VydmVyTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2REQ5M0Q1MjY5REU3NEIwMDFBRkQ4OCAvKiBCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0NkREQkRBMTI3QTlDNzBDMDA3NzM0N0EgLyogV29ya2VyRmV0
Y2hSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyRmV0Y2hS
ZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZERTlCQjQyNjlERjkzMjAw
MjRDNUE2IC8qIEJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCcm9h
ZGNhc3RDaGFubmVsUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZE
RkY0OTYxREMyNjAxMzAwQjgwQjQ4IC8qIFNoYWRvd1Jvb3RNb2RlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNoYWRvd1Jvb3RNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2REZGNDk3MURDMjYwMTMwMEI4MEI0OCAvKiBTaGFkb3dSb290TW9kZS5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2hhZG93Um9vdE1vZGUuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjA3OTQsNiArMjA4MDksNyBAQAogCQkJCUE1MkIzNDlDMUZBNDE2
RjgwMDhCNjI0NiAvKiBXb3JrZXJEZWJ1Z2dlclByb3h5LmggKi8sCiAJCQkJOUIwQUJDQTMyMzY3
OUFDRjAwQjQ1MDg1IC8qIFdvcmtlckV2ZW50TG9vcC5jcHAgKi8sCiAJCQkJOUIwQUJDQTQyMzY3
OUFDRjAwQjQ1MDg1IC8qIFdvcmtlckV2ZW50TG9vcC5oICovLAorCQkJCTQ2RERCREExMjdBOUM3
MEMwMDc3MzQ3QSAvKiBXb3JrZXJGZXRjaFJlc3VsdC5oICovLAogCQkJCUE3RDZCMzQ4MEY2MTEw
NDUwMEZGOUZEMSAvKiBXb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwICovLAogCQkJCUE3RDZCMzQ3
MEY2MTEwNDUwMEZGOUZEMSAvKiBXb3JrZXJGb250TG9hZFJlcXVlc3QuaCAqLywKIAkJCQkyRTQz
NDYzNjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGUuY3BwICovLApAQCAtMjE1
MTYsNiArMjE1MzIsMTcgQEAKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwogCQl9OworCQk0NjI2QjQ3MzI3OUEwM0IxMDBBRUYwQjIgLyogY29udGV4dCAqLyA9IHsK
KwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNDYyN0ZGNTcyNzlCODI0
NTAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcCAqLywKKwkJCQk0NjI3RkY1
ODI3OUI4MjQ2MDBBQTM5MTYgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCAqLywKKwkJCQk0
NkM0MTY5RDI3OUEwNEQyMDAyNTJDM0IgLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3Bw
ICovLAorCQkJCTQ2MjZCNDc1Mjc5QTAzRDIwMEFFRjBCMiAvKiBTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlci5oICovLAorCQkJKTsKKwkJCXBhdGggPSBjb250ZXh0OworCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNDY0MjQwNDQyMEVBRjBCRDAwQjI5RkQyIC8qIGNvY29hICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTIxNTUwLDE2ICsy
MTU3NywyMCBAQAogCQk0NjY5NENERTI3NTk0NDZEMDBFMzE1MEUgLyogc2hhcmVkICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0NjI2QjQ3MzI3OUEwM0Ix
MDBBRUYwQjIgLyogY29udGV4dCAqLywKIAkJCQk0NjY5NENFMzI3NTk0NDhEMDBFMzE1MEUgLyog
U2hhcmVkV29ya2VyLmNwcCAqLywKIAkJCQk0NjY5NENFMjI3NTk0NDhEMDBFMzE1MEUgLyogU2hh
cmVkV29ya2VyLmggKi8sCiAJCQkJNDY2OTRDRTUyNzU5NDQ4RTAwRTMxNTBFIC8qIFNoYXJlZFdv
cmtlci5pZGwgKi8sCiAJCQkJNDY2OTRDRTQyNzU5NDQ4RTAwRTMxNTBFIC8qIFNoYXJlZFdvcmtl
ckdsb2JhbFNjb3BlLmNwcCAqLywKIAkJCQk0NjY5NENFMTI3NTk0NDhDMDBFMzE1MEUgLyogU2hh
cmVkV29ya2VyR2xvYmFsU2NvcGUuaCAqLywKIAkJCQk0NjY5NENFMDI3NTk0NDhDMDBFMzE1MEUg
LyogU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaWRsICovLAotCQkJCTQ2N0E2OEQzMjc1RUE5OEIw
MDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcCAqLywKLQkJCQk0NjdBNjhEMjI3NUVB
OThBMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oICovLAotCQkJCTQ2N0E2OENGMjc1
RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJQcm94eS5jcHAgKi8sCi0JCQkJNDY3QTY4RDYy
NzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclByb3h5LmggKi8sCisJCQkJNDYyN0ZGNUEy
NzlCODdBMjAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlcklkZW50aWZpZXIuaCAqLywKKwkJCQk0Njk4
NUYyMjI3QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggKi8sCisJCQkJNDY5NDNE
QzYyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwICov
LAorCQkJCTQ2OTQzREM1Mjc2M0Y4MEQwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uLmggKi8sCisJCQkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIuaCAqLywKKwkJCQk0Njk0M0RDMjI3NjNGODBDMDA0QjYxMEUgLyog
U2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwICovLAorCQkJCTQ2OTQzREM0Mjc2M0Y4MEQwMDRCNjEw
RSAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5oICovLAogCQkJCTQ2N0E2OEQxMjc1RUE5OEEwMDlC
MzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwICovLAogCQkJCTQ2N0E2OEQ1Mjc1
RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCAqLywKIAkJCQk0NjdB
NjhEMDI3NUVBOTg5MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmNwcCAqLywKQEAgLTMz
ODY2LDYgKzMzODk3LDcgQEAKIAkJCQkyRDQ4MUYwMjE0NkI1QzU1MDBBQTc4MzQgLyogQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQzQxNjEyMEY2NTYyRkQw
MDkyRDJGQiAvKiBDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ2NzJBQTk4MjZCMDk0MzMwMEU2RUMzOCAvKiBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0NkE3OEIzNDI3OTlCRDcxMDAxMTU0RkUgLyogV29ya2VyT3B0
aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY4OEVFM0MyNkREMjYxMDAwMkFGNUM0IC8qIENy
b3NzT3JpZ2luTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY3MkFBOTkyNkIwOTQzRjAwRTZF
QzM4IC8qIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUFC
RTY3QjFEMDU4MERCMDA2RDg2MkQgLyogQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmggaW4g
SGVhZGVycyAqLywKQEAgLTMzOTA0LDYgKzMzOTM2LDcgQEAKIAkJCQk1N0ZFREQzRjFEQjZENTky
MDBFQjk2RjUgLyogQ3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1NzA2QTY5NjFEREU1Qzk1MDBBMDNCMTQgLyogQ3J5cHRvQWxnb3JpdGhtUnNhT2Fl
cFBhcmFtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcyMUE5OEIxRUNFNTcwNDAwODEyOTVBIC8q
IENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDYyN0ZG
NTkyNzlCODI0OTAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMUJEMzMxQTE4MkQ4REREMDBDMDVEOUYgLyogQ3J5cHRvQWxnb3JpdGhtUlNB
U1NBX1BLQ1MxX3YxXzUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMjVGODJDMTgyMkNGRUMwMEQ4
NENEOSAvKiBDcnlwdG9BbGdvcml0aG1TSEExLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTlBQzNF
RjE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmggaW4gSGVhZGVycyAq
LywKQEAgLTM0MTMzLDYgKzM0MTY2LDcgQEAKIAkJCQk0NUZFQTVEMDE1NkRERThDMDA2NTQxMDEg
LyogRGVjaW1hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzE1QUQ3MjAyMDUwNTEzMjAwRDU5MkRD
IC8qIERlY2xhcmF0aXZlQW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEMyMjhBMTEx
RDU3MjJFMDBENUE3RDMgLyogRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDZEREJEQTMyN0E5QzcxNjAwNzczNDdBIC8qIFdvcmtlckZldGNoUmVzdWx0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1NTUxMzAwMTFFN0NDQ0NCMDBBNjlFMzggLyogRGVjb2RpbmdP
cHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTYyQTQ1MTEwMTE0NUFFMDBERkYzRUQgLyog
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQTNENThG
MTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICov
LApAQCAtMzQ4OTAsNiArMzQ5MjQsNyBAQAogCQkJCUNEM0UyMUREMjE4MzQ0NEEwMEU2NkY1NSAv
KiBJbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NEVFQTEwMDI3
NDc1N0YxMDA1OTRBODMgLyogSW1hZ2VDb250cm9sc01hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTc3OTc5MUEwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNDZDNDE2OUIyNzlBMDRDNzAwMjUyQzNCIC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0EwODhGNTI2NEUxQzA4MDAzRTJBNkMgLyogSW1hZ2VE
YXRhU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMTlGRUE4MUY1NzM5NzIwMDBDNDJG
QiAvKiBJbWFnZURlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMTlGRUFFMUY1NzRCNkQw
MDBDNDJGQiAvKiBJbWFnZURlY29kZXJBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKQEAgLTM1NTE4
LDYgKzM1NTUzLDcgQEAKIAkJCQkxQTc1MEQ4RTBBOTBFNTIxMDAwRkYyMTUgLyogSlNOb2RlSXRl
cmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDlDMkMzMEMxN0I2OUUwMDVDOTBBMiAvKiBK
U05vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDIwQjE4RDE4RTlEMjM3MDA1QTgwODMg
LyogSlNOb2RlTGlzdEN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY5NDNEQzkyNzYzRjgx
NzAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTMzNTAzQ0E0MTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTEwRTJGMzMyNzZCRjY4NTAwODA5MzMzIC8qIEpTTm90aWZpY2F0aW9u
RGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTBFMkYyQjI3NkJDRkU4MDA4MDkzMzMg
LyogSlNOb3RpZmljYXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNjY2OSw2ICszNjcw
NSw3IEBACiAJCQkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2MDQzIC8qIFJlYWRhYmxlU3RyZWFtQnVp
bHRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMjlDOUE5MUY1OUM1NkIwMDlENzQwMyAvKiBS
ZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTZF
NkZFODFCQkQxMkRGMDAwQTNGNjQgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDY5NDNEQzgyNzYzRjgxMjAwNEI2MTBFIC8qIFNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMjlDOUFGMUY1OUNG
NUIwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
MjlDOUFCMUY1OUM1NzMwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNvdXJjZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkQzMTYwM0MxMkIwMjY3NjAwQzFBMzU5IC8qIFJlYWx0aW1lQW5hbHlzZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtMzcwNDYsNiArMzcwODMsNyBAQAogCQkJCTBGNjA1QUVEMTVG
OTQ4NDgwMDRERjBDMCAvKiBTY3JvbGxpbmdDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFGNjJFRTgxNERBMjJBNzAwNDE1NTZDIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5MzkxQTk5MTE2Mjc0NkNCMDAyOTczMzAgLyogU2Nyb2xsaW5nQ29v
cmRpbmF0b3JNYWMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2MjdGRjVCMjc5Qjg3QUYwMEFBMzkx
NiAvKiBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTJEQkE0
OTIxRjhBRDgzMDA4RjM2QjIgLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3JUeXBlcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNUI0NjY1NjMyNUQxNEMwQTAwMENGRTE0IC8qIFNjcm9sbGluZ0VmZmVjdHND
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk5MDU5QTI2RjZCRTg1MDA1NEZCRTAg
LyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTM3MTcy
LDggKzM3MjEwLDYgQEAKIAkJCQlDRDM2QzE2QjI2MEE2NUNDMDBDOEM1MjkgLyogU2hhcmVkUm91
dGluZ0FyYml0cmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNERGQUQwMUY3REFFNUQwMEMy
NzI1QiAvKiBTaGFyZWRTdHJpbmdIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUVBMzA5
OUVCNzhDMDA1NkU1ODEgLyogU2hhcmVkVGltZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ2N0E2
OERBMjc1RUE5OUMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LywKLQkJCQk0NjdBNjhEOTI3NUVBOTk4MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyUHJveHkuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ2N0E2OEQ4Mjc1RUE5OTUwMDlCMzFDNSAvKiBTaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2N0E2OEQ3Mjc1RUE5OTEwMDlC
MzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDNERCMDI2
MjczMzlGRTAwMDdCMEFEMSAvKiBTaG91bGRMb2NhbGl6ZUF4aXNOYW1lcy5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0zNzQwNyw2ICszNzQ0Myw3IEBACiAJCQkJQjIyMjc5QzAwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR0VsbGlwc2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlDODBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHRkVCbGVuZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
MjI3OUNCMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNDY5ODVGMjMyN0E0QTZBRDAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktl
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5Q0UwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZF
Q29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlEMTBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVDb21wb3NpdGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxOTIxMzI3NTExQzBFNkJCMDA0NTYyMzggLyogU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzgwNTMsNiArMzgwOTAsNyBAQAogCQkJCTgzQUNEMDEz
MjUyMjlFMTAwMDBEMTI0RSAvKiBXb3JrbGV0T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODM0QTZBM0EyNTI2ODQ0QTAwNzQ3RjVEIC8qIFdvcmtsZXRQYXJhbWV0ZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4MzNCRDgxNzI1MjRENEYyMDA2RTcyQjMgLyogV29ya2xldFBlbmRpbmdUYXNr
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY5NDNEQ0EyNzYzRjgxQzAwNEI2MTBFIC8qIFNoYXJl
ZFdvcmtlclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUyNDA5OUU2NDkyMDA1
NkU1ODEgLyogV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTZFNkZFODFCQkQxMkRGMDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNC
dWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUJBRjNCMjQxMkMxQTM5ODAwMDE0QkYxIC8q
IFdyaXRpbmdEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5T3JpZ2luLmNwcAppbmRleCA4NDMxZjRjNTIxMTYuLjBjYjQ5YWY3YzU1MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTU0Niw2ICs1NDYsMTEgQEAgU3RyaW5n
IFNlY3VyaXR5T3JpZ2luOjp0b1Jhd1N0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0YS50
b1N0cmluZygpOwogfQogCitVUkwgU2VjdXJpdHlPcmlnaW46OnRvVVJMKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9kYXRhLnRvVVJMKCk7Cit9CisKIHN0YXRpYyBpbmxpbmUgYm9vbCBhcmVPcmln
aW5zTWF0Y2hpbmcoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbjEsIGNvbnN0IFNlY3VyaXR5
T3JpZ2luJiBvcmlnaW4yKQogewogICAgIEFTU0VSVCgmb3JpZ2luMSAhPSAmb3JpZ2luMik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKaW5kZXggNjNkNjM0MTU5ZjY0Li5lMTU1ZWM2
ZjI0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKQEAgLTE5MCw2ICsxOTAs
OCBAQCBwdWJsaWM6CiAgICAgLy8gY291bGQgbWFrZSB0aGUgc3RyaW5nIHJldHVybiAibnVsbCIu
CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRvUmF3U3RyaW5nKCkgY29uc3Q7CiAKKyAgICBV
UkwgdG9VUkwoKSBjb25zdDsKKwogICAgIC8vIFRoaXMgbWV0aG9kIGNoZWNrcyBmb3IgZXF1YWxp
dHkgYmV0d2VlbiBTZWN1cml0eU9yaWdpbnMsIG5vdCB3aGV0aGVyCiAgICAgLy8gb25lIG9yaWdp
biBjYW4gYWNjZXNzIGFub3RoZXIuIEl0IGlzIHVzZWQgZm9yIGhhc2ggdGFibGUga2V5cy4KICAg
ICAvLyBGb3IgYWNjZXNzIGNoZWNrcywgdXNlIGlzU2FtZU9yaWdpbkRvbWFpbigpLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4IGU0OWNkY2QzNjJhZS4u
MWFiNzdmNmVkZjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEu
Y3BwCkBAIC00OSw2ICs0OSwxMSBAQCBTdHJpbmcgU2VjdXJpdHlPcmlnaW5EYXRhOjp0b1N0cmlu
ZygpIGNvbnN0CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcocHJvdG9jb2wsICI6Ly8iLCBob3N0LCAn
OicsIHN0YXRpY19jYXN0PHVpbnQzMl90PigqcG9ydCkpOwogfQogCitVUkwgU2VjdXJpdHlPcmln
aW5EYXRhOjp0b1VSTCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFVSTCB7IFVSTCgpLCB0b1N0cmlu
ZygpIH07Cit9CisKIFNlY3VyaXR5T3JpZ2luRGF0YSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21G
cmFtZShGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKCFmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luRGF0YS5oCmluZGV4IGZkZmM4NjQzZWFkZi4uYWMwODI4NTYxMjk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKQEAgLTg2LDYgKzg2LDcg
QEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YSB7CiAgICAgfQogICAgIAogICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFVSTCB0
b1VSTCgpIGNvbnN0OwogCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIFN0cmluZyBkZWJ1Z1N0cmlu
ZygpIGNvbnN0IHsgcmV0dXJuIHRvU3RyaW5nKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcu
aAppbmRleCBkYzBmNTA5OGI4N2YuLmZhN2QyMzAyZWMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xv
Z2dpbmcuaApAQCAtMTA5LDYgKzEwOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBNKFNl
bGVjdGlvbikgXAogICAgIE0oU2VydmljZXMpIFwKICAgICBNKFNlcnZpY2VXb3JrZXIpIFwKKyAg
ICBNKFNoYXJlZFdvcmtlcikgXAogICAgIE0oU3BlbGxpbmdBbmRHcmFtbWFyKSBcCiAgICAgTShT
UUxEYXRhYmFzZSkgXAogICAgIE0oU3RvcmFnZSkgXApAQCAtMTI2LDYgKzEyNyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBNKFdlYkdMKSBcCiAgICAgTShXZWJSVEMpIFwKICAgICBNKFdl
YlJUQ1N0YXRzKSBcCisgICAgTShXb3JrZXIpIFwKICAgICBNKFhSKSBcCiAgICAgTShXaGVlbEV2
ZW50VGVzdE1vbml0b3IpIFwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGZXRjaFJlc3VsdC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGZXRjaFJl
c3VsdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDRmZWExZWJi
ZmZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGZXRj
aFJlc3VsdC5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgiCisj
aW5jbHVkZSAiQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5oIgorI2luY2x1ZGUgIlJlc291cmNl
RXJyb3IuaCIKKyNpbmNsdWRlICJTY3JpcHRCdWZmZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQgeworICAgIFNjcmlwdEJ1ZmZlciBzY3JpcHQ7
CisgICAgQ2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbzsKKyAgICBDb250ZW50U2VjdXJp
dHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgY29udGVudFNlY3VyaXR5UG9saWN5OworICAgIENyb3Nz
T3JpZ2luRW1iZWRkZXJQb2xpY3kgY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeTsKKyAgICBTdHJp
bmcgcmVmZXJyZXJQb2xpY3k7CisgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKKworICAgIFdvcmtl
ckZldGNoUmVzdWx0IGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgc2NyaXB0Lmlzb2xh
dGVkQ29weSgpLCBjZXJ0aWZpY2F0ZUluZm8uaXNvbGF0ZWRDb3B5KCksIGNvbnRlbnRTZWN1cml0
eVBvbGljeS5pc29sYXRlZENvcHkoKSwgY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5pc29sYXRl
ZENvcHkoKSwgcmVmZXJyZXJQb2xpY3kuaXNvbGF0ZWRDb3B5KCksIGVycm9yLmlzb2xhdGVkQ29w
eSgpIH07IH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXb3JrZXJGZXRjaFJlc3VsdCYpOworfTsK
KworaW5saW5lIFdvcmtlckZldGNoUmVzdWx0IHdvcmtlckZldGNoRXJyb3IoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCit7CisgICAgcmV0dXJuIHsgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0s
IGVycm9yIH07Cit9CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFdvcmtlckZldGNo
UmVzdWx0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8
IHNjcmlwdCA8PCBjb250ZW50U2VjdXJpdHlQb2xpY3kgPDwgY3Jvc3NPcmlnaW5FbWJlZGRlclBv
bGljeSA8PCByZWZlcnJlclBvbGljeSA8PCBlcnJvciA8PCBjZXJ0aWZpY2F0ZUluZm87Cit9CisK
K3RlbXBsYXRlPGNsYXNzIERlY29kZXI+Citib29sIFdvcmtlckZldGNoUmVzdWx0OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgV29ya2VyRmV0Y2hSZXN1bHQmIHJlc3VsdCkKK3sKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zY3JpcHQpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY29udGVudFNlY3VyaXR5UG9saWN5KSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNyb3Nz
T3JpZ2luRW1iZWRkZXJQb2xpY3kpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQucmVmZXJyZXJQb2xpY3kpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZXJyb3IpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNh
dGVJbmZvOworICAgIGRlY29kZXIgPj4gY2VydGlmaWNhdGVJbmZvOworICAgIGlmICghY2VydGlm
aWNhdGVJbmZvKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVzdWx0LmNlcnRpZmljYXRl
SW5mbyA9IFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9wdGlv
bnMuaAppbmRleCBmYmRhZWFiZThhYjcuLjc3MzM5NWI3OWExYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJPcHRpb25zLmgKQEAgLTM0LDYgKzM0LDM2IEBAIHN0cnVjdCBXb3JrZXJPcHRp
b25zIHsKICAgICBXb3JrZXJUeXBlIHR5cGUgeyBXb3JrZXJUeXBlOjpDbGFzc2ljIH07CiAgICAg
RmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVudGlhbHMgeyBGZXRjaFJlcXVlc3RDcmVkZW50
aWFsczo6U2FtZU9yaWdpbiB9OwogICAgIFN0cmluZyBuYW1lOworCisgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdvcmtlck9wdGlvbnM+IGRlY29kZShE
ZWNvZGVyJik7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBXb3JrZXJPcHRp
b25zOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHR5
cGUgPDwgY3JlZGVudGlhbHMgPDwgbmFtZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
K3N0ZDo6b3B0aW9uYWw8V29ya2VyT3B0aW9ucz4gV29ya2VyT3B0aW9uczo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxXb3JrZXJUeXBlPiB3b3JrZXJUeXBl
OworICAgIGRlY29kZXIgPj4gd29ya2VyVHlwZTsKKyAgICBpZiAoIXdvcmtlclR5cGUpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPEZldGNoUmVxdWVz
dENyZWRlbnRpYWxzPiBjcmVkZW50aWFsczsKKyAgICBkZWNvZGVyID4+IGNyZWRlbnRpYWxzOwor
ICAgIGlmICghY3JlZGVudGlhbHMpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmFtZTsKKyAgICBkZWNvZGVyID4+IG5hbWU7CisgICAg
aWYgKCFuYW1lKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsg
eyAqd29ya2VyVHlwZSwgKmNyZWRlbnRpYWxzLCBXVEZNb3ZlKCpuYW1lKSB9IH07Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNw
cAppbmRleCA0MDY3MTczYTg5YTUuLmI3MTg1YTVlZGE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyVGhyZWFkLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIldvcmtlclRo
cmVhZC5oIgogCiAjaW5jbHVkZSAiSURCQ29ubmVjdGlvblByb3h5LmgiCisjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNvY2tldFByb3ZpZGVyLmgiCkBAIC0xNjMsNiArMTY0LDEx
IEBAIHZvaWQgV29ya2VyVGhyZWFkOjpldmFsdWF0ZVNjcmlwdElmTmVjZXNzYXJ5KFN0cmluZyYg
ZXhjZXB0aW9uTWVzc2FnZSkKICAgICBpZiAoc291cmNlUHJvdmlkZXIpCiAgICAgICAgIGdsb2Jh
bFNjb3BlKCktPnNldE1haW5TY3JpcHRTb3VyY2VQcm92aWRlcigqc291cmNlUHJvdmlkZXIpOwog
CisgICAgaWYgKGV4Y2VwdGlvbk1lc3NhZ2UuaXNFbXB0eSgpKQorICAgICAgICBSRUxFQVNFX0xP
RyhXb3JrZXIsICJXb3JrZXJUaHJlYWQ6OmV2YWx1YXRlU2NyaXB0SWZOZWNlc3NhcnkoKSBTVUND
RVNTIik7CisgICAgZWxzZQorICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXb3JrZXIsICJXb3Jr
ZXJUaHJlYWQ6OmV2YWx1YXRlU2NyaXB0SWZOZWNlc3NhcnkoKSBGQUlMVVJFICgle3ByaXZhdGV9
cykiLCBleGNlcHRpb25NZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworCiAgICAgLy8gRnJlZSB0aGUg
c3RhcnR1cCBkYXRhIHRvIGNhdXNlIGl0cyBtZW1iZXIgdmFyaWFibGUgZGVyZWYncyBoYXBwZW4g
b24gdGhlIHdvcmtlcidzIHRocmVhZCAoc2luY2UKICAgICAvLyBhbGwgcmVmL2RlcmVmcyBvZiB0
aGVzZSBvYmplY3RzIGFyZSBoYXBwZW5pbmcgb24gdGhlIHRocmVhZCBhdCB0aGlzIHBvaW50KS4g
Tm90ZSB0aGF0CiAgICAgLy8gV29ya2VyVGhyZWFkOjp+V29ya2VyVGhyZWFkIGhhcHBlbnMgb24g
YSBkaWZmZXJlbnQgdGhyZWFkIHdoZXJlIGl0IHdhcyBjcmVhdGVkLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5o
CmluZGV4IDkwYmRiMDQ1OTU3MS4uM2ZkMDZjZjk0OWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckZldGNoUmVzdWx0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oCkBA
IC0zNyw2ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gRklYTUU6IFVzZSB0
aGUgZ2VuZXJpYyBXb3JrZXJGZXRjaFJlc3VsdCBpbnN0ZWFkLgogc3RydWN0IFNlcnZpY2VXb3Jr
ZXJGZXRjaFJlc3VsdCB7CiAgICAgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyIGpvYkRh
dGFJZGVudGlmaWVyOwogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgcmVnaXN0cmF0
aW9uS2V5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKaW5kZXggYzY2NjE0
ZmEyYzk2Li4yYWMwMmE3ZDRhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5
LmNwcApAQCAtNTEsMTEgKzUxLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMg
VVJMIHRvcE9yaWdpblVSTChjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQotewotICAgIHJl
dHVybiBVUkwgeyBVUkwgeyB9LCBvcmlnaW4udG9SYXdTdHJpbmcoKSB9OwotfQotCiB2b2lkIFNl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2V0dXBQYWdlRm9yU2VydmljZVdvcmtlcihQYWdlJiBw
YWdlLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEpCiB7CiAgICAgYXV0byYg
bWFpbkZyYW1lID0gcGFnZS5tYWluRnJhbWUoKTsKQEAgLTY4LDggKzYzLDkgQEAgdm9pZCBTZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHk6OnNldHVwUGFnZUZvclNlcnZpY2VXb3JrZXIoUGFnZSYgcGFn
ZSwgY29uc3QgU2VydmkKICAgICBhdXRvIG9yaWdpbiA9IGRhdGEucmVnaXN0cmF0aW9uLmtleS50
b3BPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigpOwogICAgIG9yaWdpbi0+c2V0U3RvcmFnZUJsb2Nr
aW5nUG9saWN5KHBhZ2Uuc2V0dGluZ3MoKS5zdG9yYWdlQmxvY2tpbmdQb2xpY3koKSk7CiAKLSAg
ICBkb2N1bWVudC0+c2V0U2l0ZUZvckNvb2tpZXModG9wT3JpZ2luVVJMKG9yaWdpbikpOwotICAg
IGRvY3VtZW50LT5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyh0b3BPcmlnaW5VUkwob3JpZ2luKSk7
CisgICAgYXV0byBvcmlnaW5Bc1VSTCA9IG9yaWdpbi0+dG9VUkwoKTsKKyAgICBkb2N1bWVudC0+
c2V0U2l0ZUZvckNvb2tpZXMob3JpZ2luQXNVUkwpOworICAgIGRvY3VtZW50LT5zZXRGaXJzdFBh
cnR5Rm9yQ29va2llcyhvcmlnaW5Bc1VSTCk7CiAgICAgZG9jdW1lbnQtPnNldERvbWFpbkZvckNh
Y2hlUGFydGl0aW9uKG9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSk7CiAKICAgICBp
ZiAoYXV0byBwb2xpY3kgPSBwYXJzZVJlZmVycmVyUG9saWN5KGRhdGEucmVmZXJyZXJQb2xpY3ks
IFJlZmVycmVyUG9saWN5U291cmNlOjpIVFRQSGVhZGVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCmluZGV4IDZhNTliMmVmZTlhMS4uOTI2ZDM1
NzA3ODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
ci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsMTMgKzI2LDE3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hh
cmVkV29ya2VyLmgiCiAKKyNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIKICNpbmNsdWRlICJDb250
ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUNoYW5u
ZWwuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgIlJlc291cmNlRXJyb3Iu
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlck1h
bmFnZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJQcm94eS5oIgorI2luY2x1ZGUgIlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJQcm92aWRl
ci5oIgogI2luY2x1ZGUgIldvcmtlck9wdGlvbnMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5o
PgpAQCAtNDEsOCArNDUsMzEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0lNUEwoU2hhcmVkV29ya2VyKTsKIAotRXhjZXB0aW9uT3I8UmVmPFNoYXJlZFdv
cmtlcj4+IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgSlNDOjpSdW50
aW1lRmxhZ3MgcnVudGltZUZsYWdzLCBTdHJpbmcmJiBzY3JpcHRVUkxTdHJpbmcsIHN0ZDo6b3B0
aW9uYWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYgbWF5YmVPcHRpb25z
KQorI2RlZmluZSBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xP
RyhTaGFyZWRXb3JrZXIsICIlcCAtIFtpZGVudGlmaWVyPSV7cHVibGljfXNdIFNoYXJlZFdvcmtl
cjo6IiBmbXQsIHRoaXMsIG1faWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksICMj
X19WQV9BUkdTX18pCisjZGVmaW5lIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0dfRVJST1IoZm10
LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKFNoYXJlZFdvcmtlciwgIiVwIC0gW2lkZW50aWZpZXI9
JXtwdWJsaWN9c10gU2hhcmVkV29ya2VyOjoiIGZtdCwgdGhpcywgbV9pZGVudGlmaWVyLnRvU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSwgIyNfX1ZBX0FSR1NfXykKKworc3RhdGljIEhhc2hNYXA8U2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgU2hhcmVkV29ya2VyKj4mIGFsbFNoYXJlZFdvcmtl
cnMoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEhhc2hNYXA8U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgU2hhcmVkV29ya2Vy
Kj4+IGFsbFNoYXJlZFdvcmtlcnM7CisgICAgcmV0dXJuIGFsbFNoYXJlZFdvcmtlcnM7Cit9CisK
K1NoYXJlZFdvcmtlciogU2hhcmVkV29ya2VyOjpmcm9tSWRlbnRpZmllcihTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIGFsbFNoYXJlZFdvcmtl
cnMoKS5nZXQoaWRlbnRpZmllcik7Cit9CisKK3N0YXRpYyBpbmxpbmUgU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbiogbWFpblRocmVhZENvbm5lY3Rpb24oKQogeworICAgIHJldHVybiBTaGFy
ZWRXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOwor
fQorCitFeGNlcHRpb25PcjxSZWY8U2hhcmVkV29ya2VyPj4gU2hhcmVkV29ya2VyOjpjcmVhdGUo
RG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmcmJiBzY3JpcHRVUkxTdHJpbmcsIHN0ZDo6b3B0aW9u
YWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYgbWF5YmVPcHRpb25zKQor
eworICAgIGlmICghbWFpblRocmVhZENvbm5lY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0
ZWQiIH07CisKICAgICBpZiAoIWRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzU2hh
cmVkV29ya2Vycyhkb2N1bWVudC50b3BPcmlnaW4oKSkpCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBTZWN1cml0eUVycm9yLCAiVGhpcyBpZnJhbWUgZG9lc24ndCBoYXZlIHN0b3JhZ2UgYWNj
ZXNzIl9zIH07CiAKQEAgLTY3LDI2ICs5NCwzMCBAQCBFeGNlcHRpb25PcjxSZWY8U2hhcmVkV29y
a2VyPj4gU2hhcmVkV29ya2VyOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBKU0M6OlJ1bgog
ICAgIGF1dG8gY2hhbm5lbCA9IE1lc3NhZ2VDaGFubmVsOjpjcmVhdGUoZG9jdW1lbnQpOwogICAg
IGF1dG8gdHJhbnNmZXJyZWRQb3J0ID0gY2hhbm5lbC0+cG9ydDIoKS5kaXNlbnRhbmdsZSgpOwog
Ci0gICAgYXV0byBzaGFyZWRXb3JrZXIgPSBhZG9wdFJlZigqbmV3IFNoYXJlZFdvcmtlcihkb2N1
bWVudCwgY2hhbm5lbC0+cG9ydDEoKSwgcnVudGltZUZsYWdzKSk7CisgICAgYXV0byBzaGFyZWRX
b3JrZXIgPSBhZG9wdFJlZigqbmV3IFNoYXJlZFdvcmtlcihkb2N1bWVudCwgY2hhbm5lbC0+cG9y
dDEoKSkpOwogICAgIHNoYXJlZFdvcmtlci0+c3VzcGVuZElmTmVlZGVkKCk7CiAKLSAgICBTaGFy
ZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0KHVybCwgc2hhcmVkV29ya2VyLmdl
dCgpLCBXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCksIFdURk1vdmUob3B0aW9ucykpOworICAgIENs
aWVudE9yaWdpbiBjbGllbnRPcmlnaW4geyBkb2N1bWVudC50b3BEb2N1bWVudCgpLnNlY3VyaXR5
T3JpZ2luKCkuZGF0YSgpLCBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSB9OworICAg
IG1haW5UaHJlYWRDb25uZWN0aW9uKCktPnJlcXVlc3RTaGFyZWRXb3JrZXIoY2xpZW50T3JpZ2lu
LCBzaGFyZWRXb3JrZXItPmlkZW50aWZpZXIoKSwgdXJsLCBXVEZNb3ZlKHRyYW5zZmVycmVkUG9y
dCksIG9wdGlvbnMpOwogICAgIHJldHVybiBzaGFyZWRXb3JrZXI7CiB9CiAKLVNoYXJlZFdvcmtl
cjo6U2hhcmVkV29ya2VyKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPE1lc3NhZ2VQb3J0PiYmIHBv
cnQsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncykKK1NoYXJlZFdvcmtlcjo6U2hhcmVk
V29ya2VyKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPE1lc3NhZ2VQb3J0PiYmIHBvcnQpCiAgICAg
OiBBY3RpdmVET01PYmplY3QoJmRvY3VtZW50KQorICAgICwgbV9pZGVudGlmaWVyKFNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXI6OmdlbmVyYXRlKCkpCiAgICAgLCBtX3BvcnQoV1RGTW92ZShw
b3J0KSkKICAgICAsIG1faWRlbnRpZmllckZvckluc3BlY3RvcigiU2hhcmVkV29ya2VyOiIgKyBJ
bnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpKQotICAgICwg
bV9ydW50aW1lRmxhZ3MocnVudGltZUZsYWdzKQotICAgICwgbV9jcmVhdGlvblRpbWUoTW9ub3Rv
bmljVGltZTo6bm93KCkpCi0gICAgLCBtX3Byb3h5KFNoYXJlZFdvcmtlclByb3h5OjpjcmVhdGUo
KnRoaXMpKQogeworICAgIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coIlNoYXJlZFdvcmtlcjoi
KTsKKyAgICBhbGxTaGFyZWRXb3JrZXJzKCkuYWRkKG1faWRlbnRpZmllciwgdGhpcyk7CiB9CiAK
IFNoYXJlZFdvcmtlcjo6flNoYXJlZFdvcmtlcigpCiB7Ci0gICAgbV9wcm94eS53b3JrZXJPYmpl
Y3REZXN0cm95ZWQoKTsKKyAgICBBU1NFUlQoYWxsU2hhcmVkV29ya2VycygpLmdldChtX2lkZW50
aWZpZXIpID09IHRoaXMpOworICAgIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coIn5TaGFyZWRX
b3JrZXI6Iik7CisgICAgYWxsU2hhcmVkV29ya2VycygpLnJlbW92ZShtX2lkZW50aWZpZXIpOwor
ICAgIEFTU0VSVCghbV9pc0FjdGl2ZSk7CiB9CiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFNo
YXJlZFdvcmtlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CkBAIC0xMDQsMTkgKzEz
NSwyNiBAQCBFdmVudFRhcmdldEludGVyZmFjZSBTaGFyZWRXb3JrZXI6OmV2ZW50VGFyZ2V0SW50
ZXJmYWNlKCkgY29uc3QKICAgICByZXR1cm4gU2hhcmVkV29ya2VyRXZlbnRUYXJnZXRJbnRlcmZh
Y2VUeXBlOwogfQogCi12b2lkIFNoYXJlZFdvcmtlcjo6c3RvcCgpCit2b2lkIFNoYXJlZFdvcmtl
cjo6ZGlkRmFpbExvYWRpbmcoKQogewotICAgIHRlcm1pbmF0ZSgpOworICAgIFNIQVJFRF9XT1JL
RVJfUkVMRUFTRV9MT0dfRVJST1IoIn5kaWRGYWlsTG9hZGluZzoiKTsKKyAgICBxdWV1ZVRhc2tU
b0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2
ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOworICAgIG1faXNBY3RpdmUgPSBmYWxzZTsKIH0KIAog
Ym9vbCBTaGFyZWRXb3JrZXI6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewot
ICAgIHJldHVybiBtX3Byb3h5Lmhhc1BlbmRpbmdBY3Rpdml0eSgpIHx8IG1faXNMb2FkaW5nOwor
ICAgIHJldHVybiBtX2lzQWN0aXZlOwogfQogCi12b2lkIFNoYXJlZFdvcmtlcjo6dGVybWluYXRl
KCkKK3ZvaWQgU2hhcmVkV29ya2VyOjpzdG9wKCkKIHsKLSAgICBtX3Byb3h5LnRlcm1pbmF0ZVdv
cmtlckdsb2JhbFNjb3BlKCk7CisgICAgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRygic3RvcDoi
KTsKKyAgICBtX2lzQWN0aXZlID0gZmFsc2U7CisgICAgbWFpblRocmVhZENvbm5lY3Rpb24oKS0+
c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkobV9pZGVudGlmaWVyKTsKIH0KIAorI3VuZGVm
IFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0cKKyN1bmRlZiBTSEFSRURfV09SS0VSX1JFTEVBU0Vf
TE9HX0VSUk9SCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmgKaW5kZXggNTMyNmVlNTQyYzg4Li44N2NjNzVlZmJl
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3
LDM5ICsyNywzNSBAQAogCiAjaW5jbHVkZSAiQWJzdHJhY3RXb3JrZXIuaCIKICNpbmNsdWRlICJB
Y3RpdmVET01PYmplY3QuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SdW50aW1lRmxhZ3Mu
aD4KKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8
d3RmL01vbm90b25pY1RpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZXNz
YWdlUG9ydDsKLWNsYXNzIFNoYXJlZFdvcmtlclByb3h5OworY2xhc3MgUmVzb3VyY2VFcnJvcjsK
IAogc3RydWN0IFdvcmtlck9wdGlvbnM7CiAKIGNsYXNzIFNoYXJlZFdvcmtlciBmaW5hbCA6IHB1
YmxpYyBBYnN0cmFjdFdvcmtlciwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChTaGFyZWRXb3JrZXIpOwogcHVibGljOgotICAgIHN0YXRpYyBFeGNl
cHRpb25PcjxSZWY8U2hhcmVkV29ya2VyPj4gY3JlYXRlKERvY3VtZW50JiwgSlNDOjpSdW50aW1l
RmxhZ3MsIFN0cmluZyYmIHNjcmlwdFVSTCwgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8U3Ry
aW5nLCBXb3JrZXJPcHRpb25zPj4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxTaGFy
ZWRXb3JrZXI+PiBjcmVhdGUoRG9jdW1lbnQmLCBTdHJpbmcmJiBzY3JpcHRVUkwsIHN0ZDo6b3B0
aW9uYWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYpOwogICAgIH5TaGFy
ZWRXb3JrZXIoKTsKIAorICAgIHN0YXRpYyBTaGFyZWRXb3JrZXIqIGZyb21JZGVudGlmaWVyKFNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIFNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIE1l
c3NhZ2VQb3J0JiBwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9wb3J0LmdldCgpOyB9Ci0gICAgSlND
OjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKCkgeyByZXR1cm4gbV9ydW50aW1lRmxhZ3M7IH0K
IAogICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllckZvckluc3BlY3RvcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllckZvckluc3BlY3RvcjsgfQotICAgIE1vbm90b25pY1RpbWUgY3JlYXRp
b25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdGlvblRpbWU7IH0KIAotICAgIFNoYXJlZFdv
cmtlclByb3h5JiBwcm94eSgpIHsgcmV0dXJuIG1fcHJveHk7IH0KLQotICAgIHZvaWQgc2V0SXNM
b2FkaW5nKGJvb2wgaXNMb2FkaW5nKSB7IG1faXNMb2FkaW5nID0gaXNMb2FkaW5nOyB9CisgICAg
dm9pZCBkaWRGYWlsTG9hZGluZygpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQuCiAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsOwog
CiBwcml2YXRlOgotICAgIFNoYXJlZFdvcmtlcihEb2N1bWVudCYsIFJlZjxNZXNzYWdlUG9ydD4m
JiwgSlNDOjpSdW50aW1lRmxhZ3MpOwotCi0gICAgdm9pZCB0ZXJtaW5hdGUoKTsKKyAgICBTaGFy
ZWRXb3JrZXIoRG9jdW1lbnQmLCBSZWY8TWVzc2FnZVBvcnQ+JiYpOwogCiAgICAgLy8gRXZlbnRU
YXJnZXQuCiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdCBmaW5hbDsKQEAgLTcwLDEyICs2NiwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgdmlydHVh
bEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwogCiAKKyAgICBTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBSZWY8TWVzc2FnZVBvcnQ+IG1fcG9y
dDsKICAgICBTdHJpbmcgbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yOwotICAgIEpTQzo6UnVudGlt
ZUZsYWdzIG1fcnVudGltZUZsYWdzOwotICAgIE1vbm90b25pY1RpbWUgbV9jcmVhdGlvblRpbWU7
Ci0gICAgU2hhcmVkV29ya2VyUHJveHkmIG1fcHJveHk7IC8vIFRoZSBwcm94eSBvdXRsaXZlcyB0
aGUgd29ya2VyIHRvIHBlcmZvcm0gdGhyZWFkIHNodXRkb3duLgotICAgIGJvb2wgbV9pc0xvYWRp
bmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0FjdGl2ZSB7IHRydWUgfTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXIuaWRsCmluZGV4IGIxNzFjOWVkZjgxYi4uNGM3NDE1NGQ4MjA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5pZGwKQEAgLTI4LDcgKzI4
LDcgQEAKICAgICBFeHBvc2VkPVdpbmRvdwogXQogaW50ZXJmYWNlIFNoYXJlZFdvcmtlciA6IEV2
ZW50VGFyZ2V0IHsKLSAgW0NhbGxXaXRoPURvY3VtZW50JlJ1bnRpbWVGbGFnc10gY29uc3RydWN0
b3IoVVNWU3RyaW5nIHNjcmlwdFVSTCwgb3B0aW9uYWwgKERPTVN0cmluZyBvciBXb3JrZXJPcHRp
b25zKSBvcHRpb25zKTsKKyAgW0NhbGxXaXRoPURvY3VtZW50XSBjb25zdHJ1Y3RvcihVU1ZTdHJp
bmcgc2NyaXB0VVJMLCBvcHRpb25hbCAoRE9NU3RyaW5nIG9yIFdvcmtlck9wdGlvbnMpIG9wdGlv
bnMpOwogCiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZXNzYWdlUG9ydCBwb3J0OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2JhbFNj
b3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlLmNwcAppbmRleCA0MTIxZWI1OGMyMDUuLjNjNTVhNjg3YmY4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2JhbFNj
b3BlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNiw2ICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNo
YXJlZFdvcmtlckdsb2JhbFNjb3BlLmgiCiAKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5j
bHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSAiV29ya2Vy
VGhyZWFkLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtMzMsMTcg
KzM5LDQ0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlKTsKIAorI2RlZmluZSBTQ09QRV9SRUxFQVNFX0xP
RyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBbc2hhcmVkV29ya2Vy
SWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OiIgZm10LCB0
aGlzLCB0aGlzLT50aHJlYWQoKS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1Nf
XykKKwogU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OlNoYXJlZFdvcmtlckdsb2JhbFNjb3BlKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1zLCBSZWY8U2Vj
dXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBXb3JrZXJUaHJlYWQmIHRocmVhZCwgUmVmPFNlY3VyaXR5
T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5l
Y3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKQogICAgIDogV29ya2Vy
R2xvYmFsU2NvcGUoV29ya2VyVGhyZWFkVHlwZTo6U2hhcmVkV29ya2VyLCBwYXJhbXMsIFdURk1v
dmUob3JpZ2luKSwgdGhyZWFkLCBXVEZNb3ZlKHRvcE9yaWdpbiksIGNvbm5lY3Rpb25Qcm94eSwg
c29ja2V0UHJvdmlkZXIpCiAgICAgLCBtX25hbWUobmFtZSkKIHsKKyAgICBTQ09QRV9SRUxFQVNF
X0xPRygiU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6Iik7CiAgICAgcmVsYXhBZG9wdGlvblJlcXVp
cmVtZW50KCk7CiAgICAgYXBwbHlDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMo
cGFyYW1zLmNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyk7CiB9CiAKK1NoYXJl
ZFdvcmtlclRocmVhZCYgU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OnRocmVhZCgpCit7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFNoYXJlZFdvcmtlclRocmVhZCY+KFdvcmtlckdsb2JhbFNjb3Bl
Ojp0aHJlYWQoKSk7Cit9CisKIHZvaWQgU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OmNsb3NlKCkK
IHsKKyAgICBTQ09QRV9SRUxFQVNFX0xPRygiY2xvc2U6Iik7CiAgICAgdGhyZWFkKCkuc3RvcChu
dWxscHRyKTsKIH0KIAorLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
d29ya2Vycy5odG1sI2RvbS1zaGFyZWR3b3JrZXIgc3RlcCAxMS41Cit2b2lkIFNoYXJlZFdvcmtl
ckdsb2JhbFNjb3BlOjpwb3N0Q29ubmVjdEV2ZW50KFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiB0
cmFuc2ZlcnJlZFBvcnQsIFN0cmluZyYmIHNvdXJjZU9yaWdpbikKK3sKKyAgICBTQ09QRV9SRUxF
QVNFX0xPRygicG9zdENvbm5lY3RFdmVudDoiKTsKKyAgICBhdXRvIHNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCIiKTsKKyAgICBBU1NFUlQoc2Vy
aWFsaXplZFNjcmlwdFZhbHVlKTsKKyAgICBhdXRvIHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFu
Z2xlUG9ydHMoKnRoaXMsIHsgV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpIH0pOworICAgIEFTU0VS
VChwb3J0cy5zaXplKCkgPT0gMSk7CisgICAgYXV0byBwb3J0ID0gcG9ydHNbMF07CisgICAgQVNT
RVJUKHBvcnQpOworICAgIGF1dG8gZXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3Zl
KHBvcnRzKSwgc2VyaWFsaXplZFNjcmlwdFZhbHVlLnJlbGVhc2VOb25OdWxsKCksIHNvdXJjZU9y
aWdpbiwgeyB9LCBwb3J0KTsKKyAgICBldmVudC0+aW5pdEV2ZW50KGV2ZW50TmFtZXMoKS5jb25u
ZWN0RXZlbnQsIGZhbHNlLCBmYWxzZSk7CisKKyAgICBkaXNwYXRjaEV2ZW50KFdURk1vdmUoZXZl
bnQpKTsKK30KKworI3VuZGVmIFNDT1BFX1JFTEVBU0VfTE9HCisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IGYzNzc5Yjg0ZDE1MC4uMTVkZGM1MzhkYjZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJHbG9iYWxT
Y29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckds
b2JhbFNjb3BlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjUsMTEgKzI1LDEzIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAi
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5o
IgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBTaGFyZWRXb3JrZXJUaHJlYWQ7CiBzdHJ1Y3QgV29ya2VyUGFyYW1ldGVyczsKIAogY2xh
c3MgU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUgZmluYWwgOiBwdWJsaWMgV29ya2VyR2xvYmFsU2Nv
cGUgewpAQCAtMzksNyArNDEsMTEgQEAgcHVibGljOgogCiAgICAgVHlwZSB0eXBlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gVHlwZTo6U2hhcmVkV29ya2VyOyB9CiAgICAgY29uc3QgU3RyaW5nJiBu
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgU2hhcmVkV29ya2VyVGhyZWFkJiB0
aHJlYWQoKTsKKworICAgIHZvaWQgcG9zdENvbm5lY3RFdmVudChUcmFuc2ZlcnJlZE1lc3NhZ2VQ
b3J0JiYsIFN0cmluZyYmIHNvdXJjZU9yaWdpbik7CiAgICAgdm9pZCBjbG9zZSgpOworCiBwcml2
YXRlOgogICAgIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgV29ya2VyUGFyYW1ldGVycyYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiwgV29ya2VyVGhyZWFk
JiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0
aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44N2E5NzIxMDQ4NzkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgK
QEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIFNo
YXJlZFdvcmtlcklkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFNoYXJlZFdvcmtlcklkZW50aWZp
ZXIgPSBPYmplY3RJZGVudGlmaWVyPFNoYXJlZFdvcmtlcklkZW50aWZpZXJUeXBlPjsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9T
aGFyZWRXb3JrZXJLZXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LjVmOWU2ZGM5MGJhOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlcktleS5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNsaWVudE9yaWdpbi5oIgorI2luY2x1ZGUgPHd0Zi9I
YXNoZXIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFNoYXJlZFdvcmtlcktleSB7
CisgICAgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbjsKKyAgICBVUkwgdXJsOworICAgIFN0
cmluZyBuYW1lOworCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OworfTsKKworaW5saW5lIHVu
c2lnbmVkIFNoYXJlZFdvcmtlcktleTo6aGFzaCgpIGNvbnN0Cit7CisgICAgSGFzaGVyIGhhc2hl
cjsKKyAgICBhZGQoaGFzaGVyLCBvcmlnaW4uaGFzaCgpKTsKKyAgICBhZGQoaGFzaGVyLCB1cmwp
OworICAgIGFkZChoYXNoZXIsIG5hbWUpOworICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOworfQor
CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZFdvcmtlcktleSYgYSwgY29uc3Qg
U2hhcmVkV29ya2VyS2V5JiBiKQoreworICAgIHJldHVybiBhLm9yaWdpbiA9PSBiLm9yaWdpbiAm
JiBhLnVybCA9PSBiLnVybCAmJiBhLm5hbWUgPT0gYi5uYW1lOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0
SGFzaDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk+IHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFz
aChjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIGtleSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBrZXkuaGFzaCgpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdl
YkNvcmU6OlNoYXJlZFdvcmtlcktleSYgYSwgY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5
JiBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGEgPT0gYjsKKyAgICB9CisKKyAgICBzdGF0aWMg
Y29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOworfTsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk+IDog
R2VuZXJpY0hhc2hUcmFpdHM8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5PiB7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsKKyAgICBzdGF0aWMgdm9p
ZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBzbG90KSB7
IG5ldyAoTm90TnVsbCwgJnNsb3QudXJsKSBVUkwoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUp
OyB9CisgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgV2ViQ29yZTo6U2hhcmVk
V29ya2VyS2V5JiBzbG90KSB7IHJldHVybiBzbG90LnVybC5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAxMjZiYzRmZWQ4Ny4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMTIyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiU2hhcmVkV29ya2VyTWFuYWdlci5oIgotCi0jaW5jbHVkZSAiQ29udGVudFNlY3Vy
aXR5UG9saWN5LmgiCi0jaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkxvYWRlclN0
cmF0ZWd5LmgiCi0jaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1T
dHJhdGVnaWVzLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVk
V29ya2VyR2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJQcm94eS5oIgotI2lu
Y2x1ZGUgIlNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtl
clRocmVhZC5oIgotI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKLSNpbmNsdWRlICJXb3JrZXJT
Y3JpcHRMb2FkZXIuaCIKLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRl
IDx3dGYvUnVuTG9vcC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVNoYXJlZFdvcmtlck1h
bmFnZXImIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNpbmdsZXRvbigpCi17Ci0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFNoYXJlZFdvcmtlck1hbmFnZXI+IGluc3RhbmNlOwotICAgIHJldHVybiBp
bnN0YW5jZS5nZXQoKTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpjb25uZWN0KGNv
bnN0IFVSTCYgdXJsLCBTaGFyZWRXb3JrZXImIHdvcmtlciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9y
dCYmIG1lc3NhZ2VQb3J0LCBXb3JrZXJPcHRpb25zJiYgb3B0aW9ucykKLXsKLSAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwotICAgIC8vIEZJWE1FOiBIYW5kbGUgd29ya2VycyBmcm9tIG90
aGVyIHByb2Nlc3Nlcywgd2hpY2ggd2lsbCBwcm9iYWJseSByZXF1aXJlIG1vdmluZyBjb25uZWN0
IHRvIHRoZSBGcmFtZUxvYWRlckNsaWVudCBvciBzb21ldGhpbmcuCi0gICAgLy8gTWF5YmUgc29t
ZXRoaW5nIG1vcmUgbGlrZSB3aGF0IFNlcnZpY2VXb3JrZXJzIGRvZXMuCi0KLSAgICAvLyBGSVhN
RTogQ2hlY2sgaWYgd2UgYWxyZWFkeSBtYWRlIGEgdGhyZWFkLgotICAgIC8vIEZJWE1FOiBDaGVj
ayBpZiB0aGVyZSdzIGFscmVhZHkgYSBzaGFyZWQgd29ya2VyIGFuZCB1c2UgdGhhdCBpZiB0aGVy
ZSBpcy4KLQotICAgIGF1dG8gbG9hZGVyID0gbWFrZVVuaXF1ZVJlZjxTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXI+KHVybCwgd29ya2VyLCBXVEZNb3ZlKG1lc3NhZ2VQb3J0KSwgV1RGTW92ZShvcHRp
b25zKSk7Ci0gICAgYXV0byBpZGVudGlmaWVyID0gbG9hZGVyLT5pZGVudGlmaWVyKCk7Ci0gICAg
bV9sb2FkZXJzLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKGxvYWRlcikpOwotfQotCi12b2lkIFNo
YXJlZFdvcmtlck1hbmFnZXI6OnNjcmlwdExvYWRGYWlsZWQoU2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVyJiBsb2FkZXIpCi17Ci0gICAgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNo
RXZlbnQobG9hZGVyLndvcmtlcigpLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBF
dmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKLSAgICBtX2xvYWRlcnMucmVtb3ZlKGxvYWRlci5p
ZGVudGlmaWVyKCkpOwotfQotCi12b2lkIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNjcmlwdExvYWRl
ZFN1Y2Nlc3NmdWxseShTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXImIGxvYWRlciwgY29uc3QgU2Ny
aXB0QnVmZmVyJiBzY3JpcHRCdWZmZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIFNoYXJlZFdvcmtlciYgc2hhcmVkV29ya2VyLCBUcmFuc2ZlcnJlZE1l
c3NhZ2VQb3J0JiYgdHJhbnNmZXJyZWRQb3J0KQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7Ci0gICAgYXV0byYgd29ya2VyID0gbG9hZGVyLndvcmtlcigpOwotICAgIGF1dG8mIG9w
dGlvbnMgPSBsb2FkZXIub3B0aW9ucygpOwotCi0gICAgYXV0byYgcHJveHkgPSBzaGFyZWRXb3Jr
ZXIucHJveHkoKTsKLQotICAgIHByb3h5LnN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoCi0gICAgICAg
IGxvYWRlci51cmwoKSwKLSAgICAgICAgb3B0aW9ucy5uYW1lLAotICAgICAgICBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LnVzZXJBZ2VudChsb2FkZXIudXJsKCkpLAotICAgICAgICBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+aXNPbkxpbmUoKSwKLSAgICAgICAgc2NyaXB0
QnVmZmVyLAotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LmNvbnRlbnRTZWN1cml0eVBv
bGljeSgpLT5yZXNwb25zZUhlYWRlcnMoKSwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKSwKLSAgICAgICAg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KCksCi0gICAg
ICAgIHdvcmtlci5jcmVhdGlvblRpbWUoKSwKLSAgICAgICAgUmVmZXJyZXJQb2xpY3k6OkVtcHR5
U3RyaW5nLAotICAgICAgICBvcHRpb25zLnR5cGUsCi0gICAgICAgIG9wdGlvbnMuY3JlZGVudGlh
bHMsCi0gICAgICAgIHdvcmtlci5ydW50aW1lRmxhZ3MoKQotICAgICk7Ci0gICAgaWYgKCFwcm94
eS50aHJlYWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTihpczxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkp
OwotICAgIGF1dG8gc291cmNlT3JpZ2luID0gZG93bmNhc3Q8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpLnNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmcoKTsKLQotICAgIHByb3h5LnRo
cmVhZCgpLT5ydW5Mb29wKCkucG9zdFRhc2soW3RyYW5zZmVycmVkUG9ydCA9IFdURk1vdmUodHJh
bnNmZXJyZWRQb3J0KSwgc291cmNlT3JpZ2luID0gV1RGTW92ZShzb3VyY2VPcmlnaW4pLmlzb2xh
dGVkQ29weSgpXSAoYXV0byYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgbXV0YWJsZSB7Ci0gICAg
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgICAgIC8vIGh0dHBzOi8vaHRt
bC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dvcmtlcnMuaHRtbCNkb20tc2hhcmVkd29ya2Vy
IHN0ZXAgMTEuNQotICAgICAgICBhdXRvIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA9IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCIiKTsKLSAgICAgICAgQVNTRVJUKHNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSk7Ci0gICAgICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0
cyhzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB7IFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSB9KTsK
LSAgICAgICAgQVNTRVJUKHBvcnRzLnNpemUoKSA9PSAxKTsKLSAgICAgICAgYXV0byBwb3J0ID0g
cG9ydHNbMF07Ci0gICAgICAgIEFTU0VSVChwb3J0KTsKLSAgICAgICAgYXV0byBldmVudCA9IE1l
c3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUocG9ydHMpLCBzZXJpYWxpemVkU2NyaXB0VmFsdWUu
cmVsZWFzZU5vbk51bGwoKSwgc291cmNlT3JpZ2luLCB7IH0sIHBvcnQpOwotICAgICAgICBldmVu
dC0+aW5pdEV2ZW50KGV2ZW50TmFtZXMoKS5jb25uZWN0RXZlbnQsIGZhbHNlLCBmYWxzZSk7Ci0K
LSAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxTaGFy
ZWRXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwotICAgICAgICBh
dXRvJiB3b3JrZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFNoYXJlZFdvcmtlckdsb2JhbFNjb3Bl
PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUuZGlz
cGF0Y2hFdmVudChXVEZNb3ZlKGV2ZW50KSk7Ci0gICAgfSk7Ci0KLSAgICBtX2xvYWRlcnMucmVt
b3ZlKGxvYWRlci5pZGVudGlmaWVyKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uZGJkMzgxNTkyZjI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCAr
MSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3Qu
aCIKKyNpbmNsdWRlICJFcnJvckV2ZW50LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1
ZGUgIlNjcmlwdEJ1ZmZlci5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgorI2luY2x1ZGUg
IlNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oIgorI2luY2x1ZGUgIldvcmtlckZldGNoUmVzdWx0
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0Vf
TE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb246OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBD
T05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihT
aGFyZWRXb3JrZXIsICIlcCAtIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OiIgZm10LCB0
aGlzLCAjI19fVkFfQVJHU19fKQorCitzdGF0aWMgdWludDY0X3QgbG9hZGVySWRlbnRpZmllclNl
ZWQgPSAwOworCitTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uKCkgPSBkZWZhdWx0OworCitTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
Ojp+U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpID0gZGVmYXVsdDsKKwordm9pZCBTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpmZXRjaFNjcmlwdEluQ2xpZW50KFVSTCYmIHVybCwg
V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLCBXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRvKiB3b3JrZXJPYmplY3Qg
PSBTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVyKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIpOworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coImZldGNoU2NyaXB0SW5DbGllbnQ6IHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cywgd29ya2VyPSVwIiwgc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHdvcmtlck9i
amVjdCk7CisgICAgaWYgKCF3b3JrZXJPYmplY3QpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcih7IH0pOworCisgICAgYXV0byBsb2FkZXJJZGVudGlmaWVyID0gKytsb2FkZXJJZGVu
dGlmaWVyU2VlZDsKKyAgICBhdXRvIGxvYWRlciA9IG1ha2VVbmlxdWVSZWY8U2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyPihXVEZNb3ZlKHVybCksICp3b3JrZXJPYmplY3QsIFdURk1vdmUod29ya2Vy
T3B0aW9ucykpOworICAgIGF1dG8gbG9hZGVyUHRyID0gbG9hZGVyLnB0cigpOworICAgIG1fbG9h
ZGVycy5hZGQobG9hZGVySWRlbnRpZmllciwgV1RGTW92ZShsb2FkZXIpKTsKKworICAgIGxvYWRl
clB0ci0+bG9hZChbdGhpcywgbG9hZGVySWRlbnRpZmllciwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmIGZldGNo
UmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiZmV0Y2hT
Y3JpcHRJbkNsaWVudDogZmluaXNoZWQgc2NyaXB0IGxvYWQsIHN1Y2Nlc3M9JWQiLCBmZXRjaFJl
c3VsdC5lcnJvci5pc051bGwoKSk7CisgICAgICAgIGF1dG8gbG9hZGVyID0gbV9sb2FkZXJzLnRh
a2UobG9hZGVySWRlbnRpZmllcik7CisgICAgICAgIEFTU0VSVChsb2FkZXIpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihmZXRjaFJlc3VsdCk7CisgICAgfSk7Cit9CisKK3ZvaWQgU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkRmFpbHVyZShX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBhdXRvKiB3b3Jr
ZXJPYmplY3QgPSBTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVyKHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIpOworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IoIm5vdGlmeVdv
cmtlck9iamVjdE9mTG9hZEZhaWx1cmU6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtw
dWJsaWN9cywgd29ya2VyPSVwIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCksIHdvcmtlck9iamVjdCk7CisgICAgaWYgKHdvcmtlck9iamVjdCkK
KyAgICAgICAgd29ya2VyT2JqZWN0LT5kaWRGYWlsTG9hZGluZygpOworfQorCit2b2lkIFNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChTaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBhdXRvKiB3b3JrZXJPYmplY3QgPSBTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVy
KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9M
T0dfRVJST1IoInBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdDogc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcj0le3B1YmxpY31zLCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgd29ya2VyT2JqZWN0KTsKKyAgICBpZiAo
d29ya2VyT2JqZWN0KQorICAgICAgICBBY3RpdmVET01PYmplY3Q6OnF1ZXVlVGFza1RvRGlzcGF0
Y2hFdmVudCgqd29ya2VyT2JqZWN0LCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIEVycm9y
RXZlbnQ6OmNyZWF0ZShlcnJvck1lc3NhZ2UsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCB7IH0pKTsKK30KKworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0cKKyN1bmRl
ZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjUxOTExZDRhMTY3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDYy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cy5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCIK
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBN
ZXNzYWdlUG9ydDsKK2NsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjsKKworc3RydWN0IENs
aWVudE9yaWdpbjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKK3N0cnVjdCBXb3JrZXJPcHRp
b25zOworCitjbGFzcyBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIDogcHVibGljIFJlZkNv
dW50ZWQ8U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbj4geworcHVibGljOgorICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgflNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKTsKKworICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0IENsaWVudE9yaWdpbiYsIFNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFVSTCYsIFRyYW5zZmVycmVkTWVzc2Fn
ZVBvcnQmJiwgY29uc3QgV29ya2VyT3B0aW9ucyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2hh
cmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikg
PSAwOworCitwcm90ZWN0ZWQ6CisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZmV0Y2hTY3JpcHRJbkNsaWVudChVUkwmJiwgV2ViQ29yZTo6U2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciwgV29ya2VyT3B0aW9ucyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFdvcmtlckZldGNoUmVzdWx0Jik+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkRmFpbHVyZShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RFeGNlcHRpb25Ub1dv
cmtlck9iamVjdChTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24oKTsKKworcHJpdmF0ZToKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBVbmlxdWVSZWY8
U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPj4gbV9sb2FkZXJzOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uZWJjZDRhN2FlODdhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oCkBA
IC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlBy
b2Nlc3NRdWFsaWZpZWQuaCIKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllclR5
cGUgeyB9OwordXNpbmcgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA9IFByb2Nlc3NRdWFs
aWZpZWQ8T2JqZWN0SWRlbnRpZmllcjxTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyVHlwZT4+
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mZDhlMTk3ZmEyNDIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5jcHAKQEAg
LTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJTaGFyZWRXb3JrZXJQcm92aWRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRp
YyBTaGFyZWRXb3JrZXJQcm92aWRlciogc2hhcmVkUHJvdmlkZXI7CisKKy8vIEZvciBXZWJLaXRM
ZWdhY3kuCitjbGFzcyBEdW1teVNoYXJlZFdvcmtlclByb3ZpZGVyIGZpbmFsIDogcHVibGljIFNo
YXJlZFdvcmtlclByb3ZpZGVyIHsKK3B1YmxpYzoKKyAgICBTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uKiBzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsg
fQorfTsKKworU2hhcmVkV29ya2VyUHJvdmlkZXImIFNoYXJlZFdvcmtlclByb3ZpZGVyOjpzaW5n
bGV0b24oKQoreworICAgIGlmICghc2hhcmVkUHJvdmlkZXIpCisgICAgICAgIHNoYXJlZFByb3Zp
ZGVyID0gbmV3IER1bW15U2hhcmVkV29ya2VyUHJvdmlkZXI7CisgICAgcmV0dXJuICpzaGFyZWRQ
cm92aWRlcjsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJQcm92aWRlcjo6c2V0U2hhcmVkUHJvdmlk
ZXIoU2hhcmVkV29ya2VyUHJvdmlkZXImIG5ld1Byb3ZpZGVyKQoreworICAgIFJFTEVBU0VfQVNT
RVJUKCFzaGFyZWRQcm92aWRlcik7CisgICAgc2hhcmVkUHJvdmlkZXIgPSAmbmV3UHJvdmlkZXI7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmgKc2ltaWxhcml0eSBpbmRleCA2NCUK
cmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFu
YWdlci5oCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJQcm92aWRlci5oCmluZGV4IGFlZjgyNzkwMzU4NC4uY2I1N2NjMWU3YjVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJvdmlkZXIuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMjYg
KzI1LDE3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiTWVzc2FnZVBvcnRJZGVudGlm
aWVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgiCi0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkV29ya2VyOwotY2xhc3MgU2NyaXB0QnVmZmVyOwot
c3RydWN0IFdvcmtlck9wdGlvbnM7Ci11c2luZyBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0ID0gc3Rk
OjpwYWlyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVzc2FnZVBv
cnRJZGVudGlmaWVyPjsKK2NsYXNzIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb247CiAKLWNs
YXNzIFNoYXJlZFdvcmtlck1hbmFnZXIgeworY2xhc3MgU2hhcmVkV29ya2VyUHJvdmlkZXIgewog
cHVibGljOgotICAgIHN0YXRpYyBTaGFyZWRXb3JrZXJNYW5hZ2VyJiBzaW5nbGV0b24oKTsKLSAg
ICB2b2lkIGNvbm5lY3QoY29uc3QgVVJMJiwgU2hhcmVkV29ya2VyJiwgVHJhbnNmZXJyZWRNZXNz
YWdlUG9ydCYmLCBXb3JrZXJPcHRpb25zJiYpOwotCi0gICAgdm9pZCBzY3JpcHRMb2FkRmFpbGVk
KFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYpOwotICAgIHZvaWQgc2NyaXB0TG9hZGVkU3VjY2Vz
c2Z1bGx5KFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQ
b3J0JiYpOworICAgIHN0YXRpYyBTaGFyZWRXb3JrZXJQcm92aWRlciYgc2luZ2xldG9uKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0U2hhcmVkUHJvdmlkZXIoU2hhcmVkV29y
a2VyUHJvdmlkZXImKTsKIAotcHJpdmF0ZToKLSAgICBIYXNoTWFwPFNoYXJlZFdvcmtlclNjcmlw
dExvYWRlcklkZW50aWZpZXIsIFVuaXF1ZVJlZjxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+PiBt
X2xvYWRlcnM7CisgICAgdmlydHVhbCB+U2hhcmVkV29ya2VyUHJvdmlkZXIoKSB7IH0KKyAgICB2
aXJ0dWFsIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24qIHNoYXJlZFdvcmtlckNvbm5lY3Rp
b24oKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm94eS5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDNiZTA3NTNmODkxZC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3h5LmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDIzMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb3h5LmgiCi0KLSNpbmNsdWRlICJDYWNoZVN0b3JhZ2VQ
cm92aWRlci5oIgotI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKLSNpbmNsdWRlICJFdmVudE5hbWVz
LmgiCi0jaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKLSNpbmNsdWRlICJNZXNzYWdlRXZl
bnQuaCIKLSNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNs
dWRlICJSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAi
U2hhcmVkV29ya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaCIKLSNp
bmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1T
aGFyZWRXb3JrZXJQcm94eTo6U2hhcmVkV29ya2VyUHJveHkoU2hhcmVkV29ya2VyJiBzaGFyZWRX
b3JrZXIpCi0gICAgOiBtX3NoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXIpCi0gICAgLCBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQoc2hhcmVkV29ya2VyLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkK
LSAgICAsIG1faWRlbnRpZmllckZvckluc3BlY3RvcihzaGFyZWRXb3JrZXIuaWRlbnRpZmllckZv
ckluc3BlY3RvcigpKQotewotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5OjpzdGFydFdvcmtl
ckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50LCBib29sIGlzT25saW5lLCBjb25zdCBTY3JpcHRCdWZmZXIm
IHNjcmlwdEJ1ZmZlciwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJz
JiBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsIGJvb2wgc2hvdWxkQnlwYXNz
TWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBDcm9zc09yaWdpbkVtYmVkZGVy
UG9saWN5JiBjcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LCBNb25vdG9uaWNUaW1lIHRpbWVPcmln
aW4sIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHdvcmtlclR5cGUs
IEZldGNoUmVxdWVzdENyZWRlbnRpYWxzIGNyZWRlbnRpYWxzLCBKU0M6OlJ1bnRpbWVGbGFncyBy
dW50aW1lRmxhZ3MpCi17Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgYXV0byBwYXJhbWV0ZXJzID0gV29ya2VyUGFyYW1ldGVycyB7Ci0gICAgICAg
IHNjcmlwdFVSTCwKLSAgICAgICAgbmFtZSwKLSAgICAgICAgbV9pZGVudGlmaWVyRm9ySW5zcGVj
dG9yLAotICAgICAgICB1c2VyQWdlbnQsCi0gICAgICAgIGlzT25saW5lLAotICAgICAgICBjb250
ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsCi0gICAgICAgIHNob3VsZEJ5cGFzc01h
aW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwKLSAgICAgICAgY3Jvc3NPcmlnaW5FbWJlZGRl
clBvbGljeSwKLSAgICAgICAgdGltZU9yaWdpbiwKLSAgICAgICAgcmVmZXJyZXJQb2xpY3ksCi0g
ICAgICAgIHdvcmtlclR5cGUsCi0gICAgICAgIGNyZWRlbnRpYWxzLAotICAgICAgICBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPnNldHRpbmdzVmFsdWVzKCkKLSAgICB9OwotCi0gICAgaWYgKCFt
X3dvcmtlclRocmVhZCkgewotICAgICAgICBtX3dvcmtlclRocmVhZCA9IFNoYXJlZFdvcmtlclRo
cmVhZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIHNjcmlwdEJ1ZmZlciwgKnRoaXMsICp0aGlzLCAqdGhp
cywgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+dG9wT3JpZ2luKCksIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aWRiQ29ubmVjdGlvblBy
b3h5KCksIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c29ja2V0UHJvdmlkZXIoKSwgcnVudGlt
ZUZsYWdzKTsKLSAgICAgICAgbV93b3JrZXJUaHJlYWQtPnN0YXJ0KCk7Ci0gICAgfQotfQotCi12
b2lkIFNoYXJlZFdvcmtlclByb3h5Ojp0ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpCi17Ci0g
ICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9hc2tl
ZFRvVGVybWluYXRlID0gdHJ1ZTsKLSAgICBpZiAobV93b3JrZXJUaHJlYWQpCi0gICAgICAgIG1f
d29ya2VyVGhyZWFkLT5zdG9wKG51bGxwdHIpOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5
Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMm
JiBtZXNzYWdlKQotewotICAgIC8vIEZJWE1FOiBTaGFyZWRXb3JrZXIgZG9lc24ndCBoYXZlIHBv
c3RNZXNzYWdlLCBzbyB0aGlzIG1pZ2h0IG5vdCBiZSBuZWNlc3NhcnkuCi0gICAgcG9zdFRhc2tU
b1dvcmtlckdsb2JhbFNjb3BlKFttZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKV0oYXV0byYgc2Ny
aXB0Q29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIGNvbnRleHQgPSBkb3duY2FzdDxT
aGFyZWRXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0Q29udGV4dCk7Ci0gICAgICAgIGF1dG8gcG9y
dHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhzY3JpcHRDb250ZXh0LCBXVEZNb3ZlKG1l
c3NhZ2UudHJhbnNmZXJyZWRQb3J0cykpOwotICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXZlbnQo
TWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIG1lc3NhZ2UubWVzc2FnZS5yZWxl
YXNlTm9uTnVsbCgpKSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnBv
c3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmKT4mJiB0YXNrKQotewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCi0gICAgICAg
IHJldHVybjsKLSAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFdURk1vdmUo
dGFzaykpOwotfQotCi1ib29sIFNoYXJlZFdvcmtlclByb3h5OjpoYXNQZW5kaW5nQWN0aXZpdHko
KSBjb25zdAotewotICAgIHJldHVybiBtX2hhc1BlbmRpbmdBY3Rpdml0eSAmJiAhbV9hc2tlZFRv
VGVybWluYXRlOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5Ojp3b3JrZXJPYmplY3REZXN0
cm95ZWQoKQotewotICAgIG1fc2hhcmVkV29ya2VyID0gbnVsbHB0cjsKLSAgICBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
IHsKLSAgICAgICAgbV9tYXlCZURlc3Ryb3llZCA9IHRydWU7Ci0gICAgICAgIGlmIChtX3dvcmtl
clRocmVhZCkKLSAgICAgICAgICAgIHRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwo
KTsKLSAgICB9KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6bm90aWZ5TmV0d29ya1N0
YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpCi17Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX3dvcmtlclRocmVhZCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhbaXNPbmxpbmVd
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgIGF1dG8mIGdsb2Jh
bFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpOwotICAgICAgICBn
bG9iYWxTY29wZS5zZXRJc09ubGluZShpc09ubGluZSk7Ci0gICAgICAgIGdsb2JhbFNjb3BlLmRp
c3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShpc09ubGluZSA/IGV2ZW50TmFtZXMoKS5vbmxpbmVF
dmVudCA6IGV2ZW50TmFtZXMoKS5vZmZsaW5lRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBF
dmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwotICAgIH0pOwotfQotCi12b2lkIFNoYXJlZFdvcmtl
clByb3h5OjpzdXNwZW5kRm9yQmFja0ZvcndhcmRDYWNoZSgpCi17Ci0KLX0KLQotdm9pZCBTaGFy
ZWRXb3JrZXJQcm94eTo6cmVzdW1lRm9yQmFja0ZvcndhcmRDYWNoZSgpCi17Ci0KLX0KLQotdm9p
ZCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkwpCi17Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5w
b3N0VGFzayhbdGhpcywgZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlLmlzb2xhdGVkQ29weSgp
LCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCksIGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlcl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0gICAgICAgIGlmICghbV9zaGFy
ZWRXb3JrZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gV2UgZG9uJ3QgYm90
aGVyIGNoZWNraW5nIHRoZSBhc2tlZFRvVGVybWluYXRlKCkgZmxhZyBoZXJlLCBiZWNhdXNlIGV4
Y2VwdGlvbnMgc2hvdWxkICphbHdheXMqIGJlIHJlcG9ydGVkIGV2ZW4gaWYgdGhlIHRocmVhZCBp
cyB0ZXJtaW5hdGVkLgotICAgICAgICAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgZGlmZmVyZW50
IHRoYW4gdGhlIGJlaGF2aW9yIGluIE1lc3NhZ2VXb3JrZXJUYXNrLCBiZWNhdXNlIHRlcm1pbmF0
ZWQgd29ya2VycyBubyBsb25nZXIgZGVsaXZlciBtZXNzYWdlcyAoc2VjdGlvbiA0LjYgb2YgdGhl
IFdlYldvcmtlciBzcGVjKSwgYnV0IHRoZXkgZG8gcmVwb3J0IGV4Y2VwdGlvbnMuCi0gICAgICAg
IEFjdGl2ZURPTU9iamVjdDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCptX3NoYXJlZFdvcmtl
ciwgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFcnJvckV2ZW50OjpjcmVhdGUoZXJyb3JN
ZXNzYWdlLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgeyB9KSk7Ci0gICAg
fSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6Ondvcmtlckdsb2JhbFNjb3BlRGVzdHJv
eWVkKCkKLXsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKLSAgICAgICAgd29ya2VyR2xvYmFsU2NvcGVEZXN0
cm95ZWRJbnRlcm5hbCgpOwotICAgIH0pOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5Ojpw
b3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpCi17Ci0K
LX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6Y29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2Jq
ZWN0KGJvb2wpCi17Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnJlcG9ydFBlbmRpbmdB
Y3Rpdml0eShib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKLXsKLSAgICBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzLCBoYXNQZW5kaW5nQWN0aXZpdHldIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JikgewotICAgICAgICBtX2hhc1BlbmRpbmdBY3Rpdml0eSA9IGhhc1BlbmRp
bmdBY3Rpdml0eTsKLSAgICB9KTsKLX0KLQotUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+
IFNoYXJlZFdvcmtlclByb3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkKLXsKLSAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8
RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIHJldHVybiBkb2N1bWVu
dC5wYWdlKCktPmNhY2hlU3RvcmFnZVByb3ZpZGVyKCkuY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbigpOwotfQotCi1SZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlv
bj4gU2hhcmVkV29ya2VyUHJveHk6OmNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNv
bm5lY3Rpb24oKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byYgZG9j
dW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0g
ICAgaWYgKCFkb2N1bWVudC5wYWdlKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJl
dHVybiBkb2N1bWVudC5wYWdlKCktPmxpYldlYlJUQ1Byb3ZpZGVyKCkuY3JlYXRlUlRDRGF0YUNo
YW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclBy
b3h5Ojpwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNr
KQotewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soV1RGTW92ZSh0YXNr
KSk7Ci19Ci0KLWJvb2wgU2hhcmVkV29ya2VyUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2ss
IGNvbnN0IFN0cmluZyYgbW9kZSkKLXsKLSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RU
YXNrRm9yTW9kZShXVEZNb3ZlKHRhc2spLCBtb2RlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
dm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdE1lc3NhZ2VUb0RlYnVnZ2VyKGNvbnN0IFN0cmlu
ZyYpCi17Ci0KLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5n
RGlzYWJsZWRCeVdlYkluc3BlY3Rvcihib29sKQotewotCi19Ci0KLXZvaWQgU2hhcmVkV29ya2Vy
UHJveHk6Ondvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwoKQotewotICAgIC8vIFRo
aXMgaXMgYWx3YXlzIHRoZSBsYXN0IHRhc2sgdG8gYmUgcGVyZm9ybWVkLCBzbyB0aGUgcHJveHkg
aXMgbm90IG5lZWRlZCBmb3IgY29tbXVuaWNhdGlvbgotICAgIC8vIGluIGVpdGhlciBzaWRlIGFu
eSBtb3JlLiBIb3dldmVyLCB0aGUgV29ya2VyIG9iamVjdCBtYXkgc3RpbGwgZXhpc3QsIGFuZCBp
dCBhc3N1bWVzIHRoYXQgdGhlIHByb3h5IGV4aXN0cywgdG9vLgotICAgIG1fYXNrZWRUb1Rlcm1p
bmF0ZSA9IHRydWU7Ci0gICAgbV93b3JrZXJUaHJlYWQgPSBudWxscHRyOwotCi0gICAgLy8gVGhp
cyBiYWxhbmNlcyB0aGUgb3JpZ2luYWwgcmVmIGluIGNvbnN0cnVjdGlvbi4KLSAgICBpZiAobV9t
YXlCZURlc3Ryb3llZCkKLSAgICAgICAgZGVyZWYoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXggMzExZWJkNjA3OGJjLi5lYTJlMDQ4Yzc2MjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNj
cmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwyMyArMjksMjYgQEAKICNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
U2hhcmVkV29ya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyTWFuYWdlci5oIgorI2luY2x1
ZGUgIldvcmtlckZldGNoUmVzdWx0LmgiCiAjaW5jbHVkZSAiV29ya2VyUnVuTG9vcC5oIgogI2lu
Y2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNo
YXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyKGNvbnN0IFVS
TCYgdXJsLCBTaGFyZWRXb3JrZXImIHdvcmtlciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBv
cnQsIFdvcmtlck9wdGlvbnMmJiBvcHRpb25zKQotICAgIDogbV9pZGVudGlmaWVyKFNoYXJlZFdv
cmtlclNjcmlwdExvYWRlcklkZW50aWZpZXI6OmdlbmVyYXRlKCkpCi0gICAgLCBtX29wdGlvbnMo
V1RGTW92ZShvcHRpb25zKSkKK1NoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyKFVSTCYmIHVybCwgU2hhcmVkV29ya2VyJiB3b3JrZXIsIFdvcmtlck9wdGlv
bnMmJiBvcHRpb25zKQorICAgIDogbV9vcHRpb25zKFdURk1vdmUob3B0aW9ucykpCiAgICAgLCBt
X3dvcmtlcih3b3JrZXIpCi0gICAgLCBtX3BvcnQoV1RGTW92ZShwb3J0KSkKICAgICAsIG1fbG9h
ZGVyKFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlKCkpCi0gICAgLCBtX3BlbmRpbmdBY3Rpdml0
eSh3b3JrZXIubWFrZVBlbmRpbmdBY3Rpdml0eSh3b3JrZXIpKQotICAgICwgbV91cmwodXJsKQor
ICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQogewotICAgIG1fd29ya2VyLT5zZXRJc0xvYWRpbmco
dHJ1ZSk7Ci0gICAgbV9sb2FkZXItPmxvYWRBc3luY2hyb25vdXNseSgqd29ya2VyLnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgUmVzb3VyY2VSZXF1ZXN0KHVybCksIHdvcmtlci53b3JrZXJGZXRj
aE9wdGlvbnMob3B0aW9ucywgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2hhcmVkd29ya2Vy
KSwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQ6OkVuZm9yY2VXb3JrZXJTcmNEaXJl
Y3RpdmUsIFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsLCAqdGhpcywgV29ya2VyUnVuTG9vcDo6ZGVm
YXVsdE1vZGUoKSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoIW1fY29tcGxldGlvbkhhbmRsZXIpOworICAgIG1f
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIG1f
bG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoKm1fd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIFJlc291cmNlUmVxdWVzdChtX3VybCksIG1fd29ya2VyLT53b3JrZXJGZXRjaE9wdGlv
bnMobV9vcHRpb25zLCBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpTaGFyZWR3b3JrZXIpLCBD
b250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6RW5mb3JjZVdvcmtlclNyY0RpcmVjdGl2
ZSwgU2VydmljZVdvcmtlcnNNb2RlOjpBbGwsICp0aGlzLCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0
TW9kZSgpKTsKIH0KIAogdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpCkBAIC01NSwxNiArNTgsMTIgQEAgdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnQK
IAogdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKCkKIHsKLSAg
ICBtX3dvcmtlci0+c2V0SXNMb2FkaW5nKGZhbHNlKTsKKyAgICBpZiAobV9sb2FkZXItPmZhaWxl
ZCgpKQorICAgICAgICByZXR1cm4gbV9jb21wbGV0aW9uSGFuZGxlcih3b3JrZXJGZXRjaEVycm9y
KG1fbG9hZGVyLT5lcnJvcigpKSk7CiAKLSAgICBhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
ID0gbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAobV9sb2FkZXIt
PmZhaWxlZCgpIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7Ci0gICAgICAgIG1fd29ya2Vy
LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKLSAgICAgICAg
U2hhcmVkV29ya2VyTWFuYWdlcjo6c2luZ2xldG9uKCkuc2NyaXB0TG9hZEZhaWxlZCgqdGhpcyk7
IC8vIGRlbGV0ZXMgdGhpcy4KLSAgICB9IGVsc2UgeworICAgIGlmIChhdXRvKiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0ID0gbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZCgqc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgbV9sb2FkZXItPmlkZW50aWZpZXIoKSwgbV9sb2FkZXItPnNjcmlwdCgpLnRv
U3RyaW5nKCkpOwotICAgICAgICBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5zY3Jp
cHRMb2FkZWRTdWNjZXNzZnVsbHkoKnRoaXMsIG1fbG9hZGVyLT5zY3JpcHQoKSwgKm1fd29ya2Vy
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fd29ya2VyLmdldCgpLCBzdGQ6OmV4Y2hhbmdl
KG1fcG9ydCwgeyB9KSk7IC8vIGRlbGV0ZXMgdGhpcy4KLSAgICB9CisgICAgbV9jb21wbGV0aW9u
SGFuZGxlcih7IG1fbG9hZGVyLT5zY3JpcHQoKSwgbV9sb2FkZXItPmNlcnRpZmljYXRlSW5mbygp
LCBtX2xvYWRlci0+Y29udGVudFNlY3VyaXR5UG9saWN5KCksIG1fbG9hZGVyLT5jcm9zc09yaWdp
bkVtYmVkZGVyUG9saWN5KCksIG1fbG9hZGVyLT5yZWZlcnJlclBvbGljeSgpLCB7IH0gfSk7IC8v
IGRlbGV0ZXMgdGhpcy4KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIu
aAppbmRleCBiZjFkNGFlZjNhMDkuLmViMGI3MTQ1YmZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUs
NyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291cmNl
TG9hZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKQEAgLTM4
LDMzICszNywyOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNoYXJlZFdvcmtlcjsK
IGNsYXNzIFdvcmtlclNjcmlwdExvYWRlcjsKLQotY2xhc3MgU2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVyOwotdXNpbmcgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmllciA9IE9iamVjdElk
ZW50aWZpZXI8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPjsKLQotdXNpbmcgVHJhbnNmZXJyZWRN
ZXNzYWdlUG9ydCA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIsIFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllcj47CitzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7
CiAKIGNsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciA6IHByaXZhdGUgV29ya2VyU2NyaXB0
TG9hZGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIoY29uc3QgVVJMJiwgU2hhcmVkV29ya2VyJiwgVHJh
bnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBXb3JrZXJPcHRpb25zJiYpOworICAgIFNoYXJlZFdvcmtl
clNjcmlwdExvYWRlcihVUkwmJiwgU2hhcmVkV29ya2VyJiwgV29ya2VyT3B0aW9ucyYmKTsKKwor
ICAgIHZvaWQgbG9hZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdvcmtlckZldGNoUmVz
dWx0Jik+JiYpOwogCi0gICAgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgY29uc3QgVVJMJiB1
cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIFNoYXJlZFdvcmtlciYgd29ya2VyKCkg
eyByZXR1cm4gbV93b3JrZXIuZ2V0KCk7IH0KLSAgICBjb25zdCBXb3JrZXJPcHRpb25zJiBvcHRp
b25zKCkgeyByZXR1cm4gbV9vcHRpb25zOyB9CisgICAgY29uc3QgV29ya2VyT3B0aW9ucyYgb3B0
aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9uczsgfQogCiBwcml2YXRlOgogICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoKSBmaW5hbDsKIAot
ICAgIGNvbnN0IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVy
OwogICAgIGNvbnN0IFdvcmtlck9wdGlvbnMgbV9vcHRpb25zOwogICAgIGNvbnN0IFJlZjxTaGFy
ZWRXb3JrZXI+IG1fd29ya2VyOwotICAgIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQgbV9wb3J0Owog
ICAgIGNvbnN0IFJlZjxXb3JrZXJTY3JpcHRMb2FkZXI+IG1fbG9hZGVyOwotICAgIGNvbnN0IFJl
ZjxBY3RpdmVET01PYmplY3Q6OlBlbmRpbmdBY3Rpdml0eTxTaGFyZWRXb3JrZXI+PiBtX3BlbmRp
bmdBY3Rpdml0eTsKICAgICBjb25zdCBVUkwgbV91cmw7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYpPiBtX2NvbXBsZXRpb25IYW5kbGVyOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlclRocmVhZC5jcHAKaW5kZXggOWVkNTU4OGZiZDc5Li5lZmUw
NWUyN2MxNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyVGhyZWFkLmNwcApAQCAtMzEsMTQgKzMxLDE3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotU2hhcmVkV29ya2VyVGhyZWFkOjpTaGFyZWRXb3JrZXJUaHJlYWQoY29uc3QgV29y
a2VyUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VDb2Rl
LCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkmIGRl
YnVnZ2VyUHJveHksIFdvcmtlck9iamVjdFByb3h5JiBvYmplY3RQcm94eSwgV29ya2VyVGhyZWFk
U3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgSURC
Q2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlk
ZXIqIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MpCitTaGFy
ZWRXb3JrZXJUaHJlYWQ6OlNoYXJlZFdvcmtlclRocmVhZChTaGFyZWRXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IFNj
cmlwdEJ1ZmZlciYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmIGxvYWRlclByb3h5LCBX
b3JrZXJEZWJ1Z2dlclByb3h5JiBkZWJ1Z2dlclByb3h5LCBXb3JrZXJPYmplY3RQcm94eSYgb2Jq
ZWN0UHJveHksIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0IFNlY3VyaXR5
T3JpZ2luJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBjb25uZWN0
aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlciwgSlNDOjpSdW50aW1lRmxh
Z3MgcnVudGltZUZsYWdzKQogICAgIDogV29ya2VyVGhyZWFkKHBhcmFtZXRlcnMsIHNvdXJjZUNv
ZGUsIGxvYWRlclByb3h5LCBkZWJ1Z2dlclByb3h5LCBvYmplY3RQcm94eSwgc3RhcnRNb2RlLCB0
b3BPcmlnaW4sIGNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIHJ1bnRpbWVGbGFncykK
KyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV9uYW1lKHBhcmFtZXRlcnMu
bmFtZS5pc29sYXRlZENvcHkoKSkKIHsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIl
cCAtIFNoYXJlZFdvcmtlclRocmVhZDo6U2hhcmVkV29ya2VyVGhyZWFkOiIsIHRoaXMpOwogfQog
CiBSZWY8V29ya2VyR2xvYmFsU2NvcGU+IFNoYXJlZFdvcmtlclRocmVhZDo6Y3JlYXRlV29ya2Vy
R2xvYmFsU2NvcGUoY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1ldGVycywgUmVmPFNlY3Vy
aXR5T3JpZ2luPiYmIG9yaWdpbiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbikKIHsK
KyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFNoYXJlZFdvcmtlclRocmVhZDo6
Y3JlYXRlV29ya2VyR2xvYmFsU2NvcGU6IiwgdGhpcyk7CiAgICAgcmV0dXJuIFNoYXJlZFdvcmtl
ckdsb2JhbFNjb3BlOjpjcmVhdGUoc3RkOjpleGNoYW5nZShtX25hbWUsIHsgfSksIHBhcmFtZXRl
cnMsIFdURk1vdmUob3JpZ2luKSwgKnRoaXMsIFdURk1vdmUodG9wT3JpZ2luKSwgaWRiQ29ubmVj
dGlvblByb3h5KCksIHNvY2tldFByb3ZpZGVyKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclRocmVhZC5oCmluZGV4IDJmMDU2ZjlkNTli
Yi4uOWVhMjQ4NDdkMzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJUaHJlYWQuaApAQCAtMjUsMjEgKzI1LDI3IEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSAiU2hhcmVkV29ya2VySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldvcmtl
clRocmVhZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdvcmtlck9iamVjdFBy
b3h5OwogCisvLyBGSVhNRTogTW92ZSB0byB3b3JrZXJzL3NoYXJlZC9jb250ZXh0LgogY2xhc3Mg
U2hhcmVkV29ya2VyVGhyZWFkIDogcHVibGljIFdvcmtlclRocmVhZCB7CiBwdWJsaWM6CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxTaGFyZWRXb3JrZXJUaHJlYWQ+
IGNyZWF0ZShBcmdzJiYuLi4gYXJncykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRXb3Jr
ZXJUaHJlYWQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7IH0KKworICAgIFNoYXJlZFdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsg
fQorCiBwcml2YXRlOgotICAgIFNoYXJlZFdvcmtlclRocmVhZChjb25zdCBXb3JrZXJQYXJhbWV0
ZXJzJiwgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYs
IFdvcmtlckRlYnVnZ2VyUHJveHkmLCBXb3JrZXJPYmplY3RQcm94eSYsIFdvcmtlclRocmVhZFN0
YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJD
b25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciosIEpTQzo6UnVudGltZUZsYWdzKTsKKyAg
ICBTaGFyZWRXb3JrZXJUaHJlYWQoU2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgV29ya2Vy
UGFyYW1ldGVycyYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVy
UHJveHkmLCBXb3JrZXJEZWJ1Z2dlclByb3h5JiwgV29ya2VyT2JqZWN0UHJveHkmLCBXb3JrZXJU
aHJlYWRTdGFydE1vZGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIElEQkNsaWVu
dDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqLCBKU0M6OlJ1bnRpbWVGbGFn
cyk7CiAKICAgICBSZWY8V29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZVdvcmtlckdsb2JhbFNjb3Bl
KGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIFJlZjxTZWN1
cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4pIGZpbmFsOwogICAgIEFTQ0lJTGl0ZXJhbCB0aHJlYWRO
YW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIldlYkNvcmU6IFNoYXJlZFdvcmtlciJfczsgfQog
CisgICAgU2hhcmVkV29ya2VySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgU3RyaW5nIG1f
bmFtZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2Nv
bnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wN2E5MGQ5ODA1MTIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5o
IgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlclRocmVhZFBy
b3h5LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXImIFNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlcj4gc2hhcmVkTWFuYWdlcjsKKyAgICByZXR1cm4gc2hhcmVkTWFu
YWdlcjsKK30KKworU2hhcmVkV29ya2VyVGhyZWFkUHJveHkqIFNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyOjpzaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyKSBjb25zdAoreworICAgIHJldHVybiBtX3dvcmtlck1hcC5nZXQoc2hhcmVkV29y
a2VySWRlbnRpZmllcik7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0
b3BTaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlm
aWVyKQoreworICAgIGF1dG8gd29ya2VyID0gbV93b3JrZXJNYXAudGFrZShzaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlcjo6c3RvcFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0l
IiBQUkl1NjQgIiwgd29ya2VyPSVwIiwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgp
LCB3b3JrZXIuZ2V0KCkpOworICAgIGlmICghd29ya2VyKQorICAgICAgICByZXR1cm47CisKKyAg
ICB3b3JrZXItPnNldEFzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKTsKKworICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgYmUgYWJsZSB0byBkZWFsIHdpdGggdGhlIHRocmVhZCBiZWluZyB1bnJlc3Bv
bnNpdmUgaGVyZS4KKworICAgIGF1dG8mIHRocmVhZCA9IHdvcmtlci0+dGhyZWFkKCk7CisgICAg
dGhyZWFkLnN0b3AoW3dvcmtlciA9IFdURk1vdmUod29ya2VyKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgLy8gU3BpbiB0aGUgcnVubG9vcCBiZWZvcmUgcmVsZWFzaW5nIHRoZSBzaGFyZWQgd29ya2Vy
IHRocmVhZCBwcm94eSwgYXMgdGhlcmUgd291bGQgb3RoZXJ3aXNlIGJlCisgICAgICAgIC8vIGEg
cmFjZSB0b3dhcmRzIGl0cyBkZXN0cnVjdGlvbi4KKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
d29ya2VyID0gV1RGTW92ZSh3b3JrZXIpXSB7IH0pOworICAgIH0pOworfQorCit2b2lkIFNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzdG9wQWxsU2hhcmVkV29ya2VycygpCit7CisgICAgd2hp
bGUgKCFtX3dvcmtlck1hcC5pc0VtcHR5KCkpCisgICAgICAgIHN0b3BTaGFyZWRXb3JrZXIobV93
b3JrZXJNYXAuYmVnaW4oKS0+a2V5KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlcjo6c2V0Q29ubmVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVjdGlvbj4mJiBjb25uZWN0
aW9uKQoreworICAgIEFTU0VSVCghbV9jb25uZWN0aW9uIHx8IG1fY29ubmVjdGlvbi0+aXNDbG9z
ZWQoKSk7CisgICAgbV9jb25uZWN0aW9uID0gV1RGTW92ZShjb25uZWN0aW9uKTsKK30KKworYXV0
byBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Y29ubmVjdGlvbigpIGNvbnN0IC0+IENvbm5l
Y3Rpb24qCit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsKK30KKwordm9pZCBTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6cmVnaXN0ZXJTaGFyZWRXb3JrZXJUaHJlYWQoUmVmPFNo
YXJlZFdvcmtlclRocmVhZFByb3h5PiYmIHByb3h5KQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXI6OnJlZ2lzdGVyU2hhcmVkV29ya2VyVGhyZWFkOiBzaGFyZWRXb3JrZXJJZGVudGlm
aWVyPSUiIFBSSXU2NCwgcHJveHktPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKworICAgIGF1
dG8gcmVzdWx0ID0gbV93b3JrZXJNYXAuYWRkKHByb3h5LT5pZGVudGlmaWVyKCksIHByb3h5LmNv
cHlSZWYoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsK
KworICAgIHByb3h5LT50aHJlYWQoKS5zdGFydChbXShjb25zdCBTdHJpbmcmIC8qZXhjZXB0aW9u
TWVzc2FnZSovKSB7IH0pOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpD
b25uZWN0aW9uOjpwb3N0Q29ubmVjdEV2ZW50KFNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVk
V29ya2VySWRlbnRpZmllciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHRyYW5zZmVycmVkUG9y
dCwgU3RyaW5nJiYgc291cmNlT3JpZ2luKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgYXV0byogcHJveHkgPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9u
KCkuc2hhcmVkV29ya2VyKHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9H
KFNoYXJlZFdvcmtlciwgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uOjpw
b3N0Q29ubmVjdEV2ZW50OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCAiLCBwcm94
eT0lcCIsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSwgcHJveHkpOworICAgIGlm
ICghcHJveHkpCisgICAgICAgIHJldHVybjsKKworICAgIHByb3h5LT50aHJlYWQoKS5ydW5Mb29w
KCkucG9zdFRhc2soW3RyYW5zZmVycmVkUG9ydCA9IFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwg
c291cmNlT3JpZ2luID0gV1RGTW92ZShzb3VyY2VPcmlnaW4pLmlzb2xhdGVkQ29weSgpXSAoYXV0
byYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOworICAgICAgICBkb3duY2FzdDxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4o
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkucG9zdENvbm5lY3RFdmVudChXVEZNb3ZlKHRyYW5zZmVy
cmVkUG9ydCksIFdURk1vdmUoc291cmNlT3JpZ2luKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb246OnRlcm1pbmF0ZVNoYXJlZFdvcmtl
cihTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6dGVybWluYXRlU2hhcmVkV29y
a2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VySWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKKyAgICBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkuc3RvcFNoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDQ3OTM3YzkxZTZiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmgiCisjaW5j
bHVkZSAiU2hhcmVkV29ya2VySWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk7
CisKK2NsYXNzIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXImIHNpbmdsZXRvbigp
OworCisgICAgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkqIHNoYXJlZFdvcmtlcihTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyKSBjb25zdDsKKyAgICB2b2lkIHN0b3BTaGFyZWRXb3JrZXIoU2hhcmVkV29y
a2VySWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wQWxsU2hhcmVkV29y
a2VycygpOworCisgICAgY2xhc3MgQ29ubmVjdGlvbiB7CisgICAgICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+Q29ubmVjdGlvbigpIHsg
fQorICAgICAgICB2aXJ0dWFsIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RFeGNlcHRpb25U
b1dvcmtlck9iamVjdChTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlVVJMKSA9IDA7CisgICAgICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzQ2xvc2VkOyB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZvaWQgc2V0QXNDbG9zZWQo
KSB7IG1faXNDbG9zZWQgPSB0cnVlOyB9CisKKyAgICAgICAgLy8gSVBDIG1lc3NhZ2UgaGFuZGxl
cnMuCisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdENvbm5lY3RFdmVudChTaGFyZWRX
b3JrZXJJZGVudGlmaWVyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFN0cmluZyYmIHNvdXJj
ZU9yaWdpbik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdGVybWluYXRlU2hhcmVkV29y
a2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9v
bCBtX2lzQ2xvc2VkIHsgZmFsc2UgfTsKKyAgICB9OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBDb25uZWN0aW9uKiBjb25uZWN0aW9uKCkgY29uc3Q7CisKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHJlZ2lzdGVyU2hhcmVkV29ya2VyVGhyZWFkKFJlZjxTaGFyZWRXb3JrZXJU
aHJlYWRQcm94eT4mJik7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJv
eWVkPFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyPjsKKworICAgIFNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyKCkgPSBkZWZhdWx0OworCisgICAgc3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+
IG1fY29ubmVjdGlvbjsKKyAgICBIYXNoTWFwPFNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFJlZjxT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eT4+IG1fd29ya2VyTWFwOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29u
dGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmM5ZGY5MDZhNWRlYwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkuY3BwCkBAIC0wLDAgKzEsMTk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCIKKworI2lu
Y2x1ZGUgIkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCisjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgor
I2luY2x1ZGUgIkV2ZW50TG9vcC5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRl
ICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiTGliV2ViUlRD
UHJvdmlkZXIuaCIKKyNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgorI2luY2x1ZGUgIk1lc3Nh
Z2VFdmVudC5oIgorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiUGFnZS5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgorI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKKyNp
bmNsdWRlICJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIgorI2luY2x1ZGUgIlNoYXJlZFdv
cmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkLmgiCisjaW5j
bHVkZSAiV29ya2VyRmV0Y2hSZXN1bHQuaCIKKyNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitzdGF0aWMgSGFzaFNldDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSo+JiBh
bGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8SGFzaFNldDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSo+PiBzZXQ7CisgICAgcmV0dXJuIHNl
dDsKK30KKworc3RhdGljIFdvcmtlclBhcmFtZXRlcnMgZ2VuZXJhdGVXb3JrZXJQYXJhbWV0ZXJz
KGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYgd29ya2VyRmV0
Y2hSZXN1bHQsIFdvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zLCBjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCwgRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIHJldHVybiBXb3JrZXJQYXJhbWV0
ZXJzIHsKKyAgICAgICAgc2NyaXB0VVJMLAorICAgICAgICB3b3JrZXJPcHRpb25zLm5hbWUsCisg
ICAgICAgICJzaGFyZWR3b3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5Ojpj
cmVhdGVJZGVudGlmaWVyKCksCisgICAgICAgIHVzZXJBZ2VudCwKKyAgICAgICAgcGxhdGZvcm1T
dHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmlzT25MaW5lKCksCisgICAgICAgIHdvcmtl
ckZldGNoUmVzdWx0LmNvbnRlbnRTZWN1cml0eVBvbGljeSwKKyAgICAgICAgZmFsc2UsCisgICAg
ICAgIHdvcmtlckZldGNoUmVzdWx0LmNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ksCisgICAgICAg
IE1vbm90b25pY1RpbWU6Om5vdygpLAorICAgICAgICB7IH0sCisgICAgICAgIHdvcmtlck9wdGlv
bnMudHlwZSwKKyAgICAgICAgd29ya2VyT3B0aW9ucy5jcmVkZW50aWFscywKKyAgICAgICAgZG9j
dW1lbnQuc2V0dGluZ3NWYWx1ZXMoKQorICAgIH07Cit9CisKK1NoYXJlZFdvcmtlclRocmVhZFBy
b3h5OjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShVbmlxdWVSZWY8UGFnZT4mJiBwYWdlLCBTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IENsaWVudE9y
aWdpbiYgY2xpZW50T3JpZ2luLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgV29ya2VyRmV0Y2hSZXN1
bHQmJiB3b3JrZXJGZXRjaFJlc3VsdCwgV29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50LCBDYWNoZVN0b3JhZ2VQcm92aWRlciYgY2FjaGVTdG9yYWdl
UHJvdmlkZXIpCisgICAgOiBtX3BhZ2UoV1RGTW92ZShwYWdlKSkKKyAgICAsIG1fZG9jdW1lbnQo
Km1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKKyAgICAsIG1fd29ya2VyVGhyZWFkKFNo
YXJlZFdvcmtlclRocmVhZDo6Y3JlYXRlKHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGdlbmVyYXRl
V29ya2VyUGFyYW1ldGVycyhzY3JpcHRVUkwsIHdvcmtlckZldGNoUmVzdWx0LCBXVEZNb3ZlKHdv
cmtlck9wdGlvbnMpLCB1c2VyQWdlbnQsIG1fZG9jdW1lbnQpLCBXVEZNb3ZlKHdvcmtlckZldGNo
UmVzdWx0LnNjcmlwdCksICp0aGlzLCAqdGhpcywgKnRoaXMsIFdvcmtlclRocmVhZFN0YXJ0TW9k
ZTo6Tm9ybWFsLCBjbGllbnRPcmlnaW4udG9wT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCksIG1fZG9j
dW1lbnQtPmlkYkNvbm5lY3Rpb25Qcm94eSgpLCBtX2RvY3VtZW50LT5zb2NrZXRQcm92aWRlcigp
LCBKU0M6OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpKSkKKyAgICAsIG1fY2FjaGVT
dG9yYWdlUHJvdmlkZXIoY2FjaGVTdG9yYWdlUHJvdmlkZXIpCit7CisgICAgQVNTRVJUKCFhbGxT
aGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkuY29udGFpbnModGhpcykpOworICAgIGFsbFNoYXJl
ZFdvcmtlclRocmVhZFByb3hpZXMoKS5hZGQodGhpcyk7CisKKyAgICBzdGF0aWMgYm9vbCBhZGRl
ZExpc3RlbmVyOworICAgIGlmICghYWRkZWRMaXN0ZW5lcikgeworICAgICAgICBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+YWRkT25saW5lU3RhdGVDaGFuZ2VMaXN0ZW5l
cigmbmV0d29ya1N0YXRlQ2hhbmdlZCk7CisgICAgICAgIGFkZGVkTGlzdGVuZXIgPSB0cnVlOwor
ICAgIH0KK30KKworU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6On5TaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eSgpCit7CisgICAgQVNTRVJUKGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKS5jb250
YWlucyh0aGlzKSk7CisgICAgYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGllcygpLnJlbW92ZSh0
aGlzKTsKK30KKworU2hhcmVkV29ya2VySWRlbnRpZmllciBTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eTo6aWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd29ya2VyVGhyZWFkLT5pZGVu
dGlmaWVyKCk7Cit9CisKK1JlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBTaGFyZWRXb3Jr
ZXJUaHJlYWRQcm94eTo6Y3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAoIW1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbikK
KyAgICAgICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uID0gbV9jYWNoZVN0b3JhZ2VQcm92aWRl
ci5jcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCk7CisgICAgcmV0dXJuIG1fY2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjsKK30KKworUmVmUHRyPFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNv
bm5lY3Rpb24+IFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpjcmVhdGVSVENEYXRhQ2hhbm5lbFJl
bW90ZUhhbmRsZXJDb25uZWN0aW9uKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIHJldHVybiBtX3BhZ2UtPmxpYldlYlJUQ1Byb3ZpZGVyKCkuY3JlYXRlUlRDRGF0YUNoYW5u
ZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpOworfQorCit2b2lkIFNoYXJlZFdvcmtlclRocmVh
ZFByb3h5Ojpwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0
YXNrKQoreworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Rhc2sgPSBXVEZNb3ZlKHRhc2spLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHRhc2sucGVy
Zm9ybVRhc2socHJvdGVjdGVkVGhpcy0+bV9kb2N1bWVudC5nZXQoKSk7CisgICAgfSk7Cit9CisK
K2Jvb2wgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2ssIGNv
bnN0IFN0cmluZyYgbW9kZSkKK3sKKyAgICBpZiAobV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVk
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgp
LnBvc3RUYXNrRm9yTW9kZShXVEZNb3ZlKHRhc2spLCBtb2RlKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwordm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdE1lc3NhZ2VUb0RlYnVnZ2Vy
KGNvbnN0IFN0cmluZyYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4KK30KKwordm9pZCBT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYklu
c3BlY3Rvcihib29sKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCit9CisKK3ZvaWQgU2hh
cmVkV29ya2VyVGhyZWFkUHJveHk6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoYm9vbCBpc09uTGluZSkK
K3sKKyAgICBmb3IgKGF1dG8qIHByb3h5IDogYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGllcygp
KQorICAgICAgICBwcm94eS0+bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGlzT25MaW5lKTsKK30K
Kwordm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdl
KGJvb2wgaXNPbmxpbmUpCit7CisgICAgaWYgKG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZShbaXNPbmxpbmVdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7
CisgICAgICAgIGF1dG8mIGdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KGNvbnRleHQpOworICAgICAgICBnbG9iYWxTY29wZS5zZXRJc09ubGluZShpc09ubGluZSk7Cisg
ICAgICAgIGdsb2JhbFNjb3BlLmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01N
YW5pcHVsYXRpb24sIFtnbG9iYWxTY29wZSA9IFJlZiB7IGdsb2JhbFNjb3BlIH0sIGlzT25saW5l
XSB7CisgICAgICAgICAgICBnbG9iYWxTY29wZS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRl
KGlzT25saW5lID8gZXZlbnROYW1lcygpLm9ubGluZUV2ZW50IDogZXZlbnROYW1lcygpLm9mZmxp
bmVFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7
CisgICAgICAgIH0pOworICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOworfQor
CisvLyBGSVhNRTogVHJ5IGFuZCBzaGFyZSBjb2RlIHdpdGggU2VydmljZVdvcmtlclRocmVhZFBy
b3h5LmNwcC4KK3ZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnNldHVwUGFnZUZvclNoYXJl
ZFdvcmtlcihQYWdlJiBwYWdlLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgQ2xpZW50T3Jp
Z2luJiBjbGllbnRPcmlnaW4sIGNvbnN0IFdvcmtlckZldGNoUmVzdWx0JiB3b3JrZXJGZXRjaFJl
c3VsdCkKK3sKKyAgICBhdXRvJiBtYWluRnJhbWUgPSBwYWdlLm1haW5GcmFtZSgpOworICAgIG1h
aW5GcmFtZS5sb2FkZXIoKS5pbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudCh7IH0pOworICAgIGF1
dG8gZG9jdW1lbnQgPSBEb2N1bWVudDo6Y3JlYXRlTm9uUmVuZGVyZWRQbGFjZWhvbGRlcihtYWlu
RnJhbWUsIHNjcmlwdFVSTCk7CisgICAgZG9jdW1lbnQtPmNyZWF0ZURPTVdpbmRvdygpOworCisg
ICAgZG9jdW1lbnQtPnN0b3JhZ2VCbG9ja2luZ1N0YXRlRGlkQ2hhbmdlKCk7CisKKyAgICBhdXRv
IG9yaWdpbiA9IGNsaWVudE9yaWdpbi50b3BPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKTsKKyAgICBv
cmlnaW4tPnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShwYWdlLnNldHRpbmdzKCkuc3RvcmFnZUJs
b2NraW5nUG9saWN5KCkpOworCisgICAgYXV0byBvcmlnaW5Bc1VSTCA9IG9yaWdpbi0+dG9VUkwo
KTsKKyAgICBkb2N1bWVudC0+c2V0U2l0ZUZvckNvb2tpZXMob3JpZ2luQXNVUkwpOworICAgIGRv
Y3VtZW50LT5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhvcmlnaW5Bc1VSTCk7CisgICAgZG9jdW1l
bnQtPnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKG9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0
aXRpb24oKSk7CisKKyAgICBpZiAoYXV0byBwb2xpY3kgPSBwYXJzZVJlZmVycmVyUG9saWN5KHdv
cmtlckZldGNoUmVzdWx0LnJlZmVycmVyUG9saWN5LCBSZWZlcnJlclBvbGljeVNvdXJjZTo6SFRU
UEhlYWRlcikpCisgICAgICAgIGRvY3VtZW50LT5zZXRSZWZlcnJlclBvbGljeSgqcG9saWN5KTsK
KworICAgIG1haW5GcmFtZS5zZXREb2N1bWVudChXVEZNb3ZlKGRvY3VtZW50KSk7Cit9CisKK3Zv
aWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIGNhbGxPbk1haW5UaHJlYWQoW3No
YXJlZFdvcmtlcklkZW50aWZpZXIgPSBtX3dvcmtlclRocmVhZC0+aWRlbnRpZmllcigpLCBlcnJv
ck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCksIGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlciwgc291cmNlVVJMID0gc291cmNlVVJMLmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAg
IGlmIChhdXRvKiBjb25uZWN0aW9uID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmds
ZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPnBvc3RFeGNlcHRp
b25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMKTsKKyAgICB9KTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2Nv
bnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaApzaW1pbGFyaXR5IGluZGV4IDU0JQpyZW5h
bWUgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm94eS5o
CnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdv
cmtlclRocmVhZFByb3h5LmgKaW5kZXggZGI3Yjg1MDlkZjVhLi5mN2IyOTI0ZGJlMzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3h5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJU
aHJlYWRQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI1LDggKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJT
aGFyZWRXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV29ya2VyRGVidWdnZXJQcm94eS5o
IgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJM
b2FkZXJQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlck9iamVjdFByb3h5LmgiCiAjaW5jbHVkZSAi
V29ya2VyT3B0aW9ucy5oIgpAQCAtMzQsMjkgKzM0LDI3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgQ2FjaGVTdG9yYWdlUHJvdmlkZXI7CitjbGFzcyBQYWdlOwogY2xhc3MgU2hh
cmVkV29ya2VyOwogY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkOwogCi1jbGFzcyBTaGFyZWRXb3Jr
ZXJQcm94eSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRXb3JrZXJQcm94eT4s
IHB1YmxpYyBXb3JrZXJHbG9iYWxTY29wZVByb3h5LCBwdWJsaWMgV29ya2VyT2JqZWN0UHJveHks
IHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94eSwgcHVibGljIFdvcmtlckRlYnVnZ2VyUHJveHkgewor
c3RydWN0IENsaWVudE9yaWdpbjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKKworY2xhc3Mg
U2hhcmVkV29ya2VyVGhyZWFkUHJveHkgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hh
cmVkV29ya2VyVGhyZWFkUHJveHk+LCBwdWJsaWMgV29ya2VyTG9hZGVyUHJveHksIHB1YmxpYyBX
b3JrZXJEZWJ1Z2dlclByb3h5LCBwdWJsaWMgV29ya2VyT2JqZWN0UHJveHkgewogcHVibGljOgot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBTaGFyZWRXb3JrZXJQcm94eSYg
Y3JlYXRlKEFyZ3MmJi4uLiBhcmdzKSB7IHJldHVybiAqbmV3IFNoYXJlZFdvcmtlclByb3h5KHN0
ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
dm9pZCBzZXR1cFBhZ2VGb3JTaGFyZWRXb3JrZXIoUGFnZSYsIGNvbnN0IFVSTCYsIGNvbnN0IENs
aWVudE9yaWdpbiYsIGNvbnN0IFdvcmtlckZldGNoUmVzdWx0Jik7CiAKLSAgICBTaGFyZWRXb3Jr
ZXJUaHJlYWQqIHRocmVhZCgpIHsgcmV0dXJuIG1fd29ya2VyVGhyZWFkLmdldCgpOyB9CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eT4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZFdvcmtlclRocmVhZFByb3h5KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOyB9CisgICAg
flNoYXJlZFdvcmtlclRocmVhZFByb3h5KCk7CisKKyAgICBTaGFyZWRXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIoKSBjb25zdDsKKyAgICBTaGFyZWRXb3JrZXJUaHJlYWQmIHRocmVhZCgpIHsg
cmV0dXJuIG1fd29ya2VyVGhyZWFkLmdldCgpOyB9CisKKyAgICBib29sIGlzVGVybWluYXRpbmdP
clRlcm1pbmF0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQ7
IH0KKyAgICB2b2lkIHNldEFzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKSB7IG1faXNUZXJtaW5h
dGluZ09yVGVybWluYXRlZCA9IHRydWU7IH0KIAotICAgIHZvaWQgc3RhcnRXb3JrZXJHbG9iYWxT
Y29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VD
b2RlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBib29sIHNo
b3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgQ3Jvc3NPcmln
aW5FbWJlZGRlclBvbGljeSYsIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUmVmZXJyZXJQb2xp
Y3ksIFdvcmtlclR5cGUsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzLCBKU0M6OlJ1bnRpbWVGbGFn
cykgZmluYWw7Ci0gICAgdm9pZCB0ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpIGZpbmFsOwot
ICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzJiYpIGZpbmFsOwotICAgIHZvaWQgcG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1
bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiYmKSBmaW5hbDsKLSAgICBib29s
IGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgd29ya2VyT2JqZWN0
RGVzdHJveWVkKCkgZmluYWw7Ci0gICAgdm9pZCBub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9v
bCBpc09ubGluZSkgZmluYWw7Ci0gICAgdm9pZCBzdXNwZW5kRm9yQmFja0ZvcndhcmRDYWNoZSgp
IGZpbmFsOwotICAgIHZvaWQgcmVzdW1lRm9yQmFja0ZvcndhcmRDYWNoZSgpIGZpbmFsOwotICAg
IHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwpIGZpbmFsOwotICAgIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWQoKSBmaW5h
bDsKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVdpdGhNZXNzYWdl
UG9ydHMmJikgZmluYWw7Ci0gICAgdm9pZCBjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3Qo
Ym9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpIGZpbmFsOwotICAgIHZvaWQgcmVwb3J0UGVuZGluZ0Fj
dGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KSBmaW5hbDsKICAgICBSZWZQdHI8Q2FjaGVT
dG9yYWdlQ29ubmVjdGlvbj4gY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpIGZpbmFsOwog
ICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uPiBjcmVhdGVS
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCkgZmluYWw7CiAgICAgdm9pZCBw
b3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJikgZmluYWw7CkBA
IC02NCwxOCArNjIsMjUgQEAgcHVibGljOgogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb0RlYnVnZ2Vy
KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgc2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJs
ZWRCeVdlYkluc3BlY3Rvcihib29sKSBmaW5hbDsKIAorICAgIC8vIFdvcmtlck9iamVjdFByb3h5
CisgICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCkgZmluYWw7CisgICAgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgp
IGZpbmFsIHsgfQorICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyYmKSBmaW5hbCB7IH0KKyAgICB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdv
cmtlck9iamVjdChib29sKSBmaW5hbCB7IH0KKyAgICB2b2lkIHJlcG9ydFBlbmRpbmdBY3Rpdml0
eShib29sKSBmaW5hbCB7IH0KKwogcHJpdmF0ZToKLSAgICBTaGFyZWRXb3JrZXJQcm94eShTaGFy
ZWRXb3JrZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShV
bmlxdWVSZWY8UGFnZT4mJiwgU2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgQ2xpZW50T3Jp
Z2luJiwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIFdvcmtlckZldGNoUmVzdWx0JiYsIFdvcmtlck9w
dGlvbnMmJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIENhY2hlU3RvcmFnZVByb3ZpZGVyJik7
CiAKLSAgICB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwoKTsKKyAgICBz
dGF0aWMgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKGJvb2wgaXNPbkxpbmUpOworICAgIHZvaWQg
bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpOwogCi0gICAgV2Vha1B0cjxT
aGFyZWRXb3JrZXI+IG1fc2hhcmVkV29ya2VyOwotICAgIFJlZlB0cjxTaGFyZWRXb3JrZXJUaHJl
YWQ+IG1fd29ya2VyVGhyZWFkOwotICAgIGNvbnN0IFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0gICAgY29uc3QgU3RyaW5nIG1faWRlbnRp
ZmllckZvckluc3BlY3RvcjsKLSAgICBib29sIG1fYXNrZWRUb1Rlcm1pbmF0ZSB7IGZhbHNlIH07
Ci0gICAgYm9vbCBtX2hhc1BlbmRpbmdBY3Rpdml0eSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX21h
eUJlRGVzdHJveWVkIHsgZmFsc2UgfTsKKyAgICBVbmlxdWVSZWY8UGFnZT4gbV9wYWdlOworICAg
IFJlZjxEb2N1bWVudD4gbV9kb2N1bWVudDsKKyAgICBSZWY8U2hhcmVkV29ya2VyVGhyZWFkPiBt
X3dvcmtlclRocmVhZDsKKyAgICBDYWNoZVN0b3JhZ2VQcm92aWRlciYgbV9jYWNoZVN0b3JhZ2VQ
cm92aWRlcjsKKyAgICBSZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gbV9jYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOworICAgIGJvb2wgbV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkIHsgZmFs
c2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4
IDc1NmRhODhiNDVmNy4uZjVlY2UxZTE1ZjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAgLTIwMiw2
ICsyMDIsOSBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24KICAgICBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbgogCisgICAgTmV0
d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24K
KyAgICBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbgorCiAgICAgTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
TWFuYWdlclNldAogCiAgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbgpAQCAtMzA1LDYgKzMwOCw4IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklM
RVMKIAogICAgIFdlYlByb2Nlc3MvU3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRp
YVNvdXJjZU1hbmFnZXIKIAorICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24KKyAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbgogICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVu
dENvbm5lY3Rpb24KICAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1
dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0CmluZGV4IDRjNjYyMjBjZjEyMi4uNzIyOWMxYjk4NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC05MSw2ICs5MSw4IEBAICQoUFJP
SkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25s
b2FkVGFzay5tZXNzYWdlcy5pCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIp
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvTmV0
d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJv
Y2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbgpAQCAtMjE3LDYg
KzIxOSw4IEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2du
aXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pF
Q1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhu
UHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IGUzYjU1ODQwYWUxZS4uYTg2MzI4MTQ3YjU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QK
QEAgLTYwNyw2ICs2MDcsMTggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdC9XZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdC9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2Fn
ZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVzc2Fn
ZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNz
YWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTb2NrZXRDaGFubmVs
TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdC9XZWJTb2NrZXRDaGFubmVsTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTb2NrZXRDaGFubmVsTWVzc2FnZXNSZXBsaWVzLmgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA3YWQ0OWUzNzM1ZjQuLjM1MWZmYWUwYTU4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTMzLDYgKzEzMyw4IEBAIE1FU1NB
R0VfUkVDRUlWRVJTID0gXAogCU5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckRvd25sb2FkVGFzayBcCiAJTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrIFwKIAlOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbiBcCisJTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24gXAorCU5ldHdvcmtQcm9jZXNzL1NoYXJlZFdv
cmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIFwKIAlOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtIFwKIAlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2VzcyBcCiAJTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyIFwKQEAgLTIyNSw2
ICsyMjcsOCBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvU3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIgXAorCVdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gXAor
CVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIFwKIAlX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gXAogCVdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvV2ViUHJv
Y2VzcyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGQ4NWVkODVkNmY5Ni4uYzdi
MTdmZDcwNzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNjYsNiArNjYsMTEg
QEAKICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2Vy
U2VydmVyLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVFRQQ29va2ll
QWNjZXB0UG9saWN5Lmg+CkBAIC0xMzIsNiArMTM3LDcgQEAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtQcm9jZXNzJiBu
ZXQKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgZXN0YWJsaXNoU1dTZXJ2ZXJDb25u
ZWN0aW9uKCk7CiAjZW5kaWYKKyAgICBlc3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uKCk7CiB9CiAKIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp+TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MoKQpAQCAtMTY2LDYgKzE3Miw3IEBAIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKICAgICB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7CiAjZW5kaWYK
KyAgICB1bnJlZ2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOwogfQogCiB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYXNVcGxvYWRTdGF0ZUNoYW5nZWQoYm9vbCBoYXNV
cGxvYWQpCkBAIC0yNzUsNiArMjgyLDE3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvCiAgICAg
fQogI2VuZGlmCiAKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVz
c2FnZXM6OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSkgeworICAgICAgICBpZiAobV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uKQorICAgICAgICAg
ICAgbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBpZiAobV9z
aGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbikKKyAgICAgICAgICAgIG1fc2hhcmVkV29ya2Vy
Q29udGV4dENvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIp
OworICAgICAgICByZXR1cm47CisgICAgfQorCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVf
VUkpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKQogICAgICAg
ICByZXR1cm4gcGF5bWVudENvb3JkaW5hdG9yKCkuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2Rlcik7CkBAIC0zOTgsOSArNDE2LDggQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBudWxs
cHRyOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAjZW5kaWYKKyAgICBt
X3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKIAogICAgIC8vIFByb3Rl
Y3Qgb3Vyc2VsZiBhcyB3ZSBtaWdodCBiZSBvdGhlcndpc2UgYmUgZGVsZXRlZCBkdXJpbmcgdGhp
cyBmdW5jdGlvbi4KICAgICBSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IHByb3Rl
Y3RvcigqdGhpcyk7CkBAIC00NDEsNiArNDU4LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKICAgICB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7CiAjZW5k
aWYKKyAgICB1bnJlZ2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOwogCiAjaWYgRU5BQkxF
KEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAgbV9wYXltZW50Q29vcmRpbmF0b3IgPSBudWxscHRy
OwpAQCAtMTE4Niw2ICsxMjA0LDYxIEBAIHNpemVfdCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZmluZE5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoV2ViQ29yZTo6UmVzb3VyCiAgICAgICAg
IHJldHVybiBpdGVtLnJlc291cmNlSUQgPT0gcmVzb3VyY2VJRDsKICAgICB9KTsKIH0KKwordm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29u
dGV4dENvbm5lY3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2hhcmVk
V29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb246Iik7CisgICAg
YXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7CisgICAgaWYgKGF1dG8qIHN3U2VydmVy
ID0gc2Vzc2lvbiA/IHNlc3Npb24tPnNoYXJlZFdvcmtlclNlcnZlcigpIDogbnVsbHB0cikKKyAg
ICAgICAgbV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4oKnRoaXMsIFdURk1vdmUocmVnaXN0
cmFibGVEb21haW4pLCAqc3dTZXJ2ZXIpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisK
K3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb24oKQoreworICAgIGlmIChtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24p
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigp
OworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgQ09OTkVDVElPTl9S
RUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uOiIpOworCisgICAgYXV0byYgc2VydmVyID0gc2Vzc2lvbi0+ZW5zdXJlU2hhcmVkV29y
a2VyU2VydmVyKCk7CisgICAgYXV0byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uPihtX25ldHdvcmtQcm9jZXNzLCBzZXJ2ZXIsIG1fY29ubmVj
dGlvbi5nZXQoKSwgbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7CisKKyAgICBtX3NoYXJlZFdvcmtl
ckNvbm5lY3Rpb24gPSAqY29ubmVjdGlvbjsKKyAgICBzZXJ2ZXIuYWRkQ29ubmVjdGlvbihXVEZN
b3ZlKGNvbm5lY3Rpb24pKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpCit7CisgICAgQ09OTkVDVElP
Tl9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJjbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uOiIpOworICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBudWxscHRy
OworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU2hh
cmVkV29ya2VyQ29ubmVjdGlvbigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTaGFy
ZWRXb3JrZXIsICJ1bnJlZ2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbjoiKTsKKyAgICBpZiAo
bV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uKQorICAgICAgICBtX3NoYXJlZFdvcmtlckNvbm5lY3Rp
b24tPnNlcnZlcigpLnJlbW92ZUNvbm5lY3Rpb24obV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uLT53
ZWJQcm9jZXNzSWRlbnRpZmllcigpKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6c2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJO
ZWVkZWQoKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAic2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQ6Iik7Cisg
ICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6U2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25O
b0xvbmdlck5lZWRlZCB7IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CisKKyAgICBtX3No
YXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKK30KKworV2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbiogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNoYXJl
ZFdvcmtlckNvbm5lY3Rpb24oKQoreworICAgIGlmICghbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9u
KQorICAgICAgICBlc3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCk7CisgICAg
cmV0dXJuIG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbi5nZXQoKTsKK30KICAgICAKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1
bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCkKQEAgLTEyMjMsMTAgKzEyOTYsMTAgQEAgdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xvc2VTV0NvbnRleHRDb25uZWN0aW9uKCkKICAg
ICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwogfQogCi12b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVk
ZWQoKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2VydmljZVdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCgpCiB7Ci0gICAgQ09OTkVDVElP
Tl9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAic2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5v
TG9uZ2VyTmVlZGVkOiBXZWJQcm9jZXNzIG5vIGxvbmdlciB1c2VmdWwgZm9yIHJ1bm5pbmcgc2Vy
dmljZSB3b3JrZXJzIik7Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6V29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCB7IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7
CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAic2VydmljZVdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZDogV2ViUHJvY2VzcyBubyBs
b25nZXIgdXNlZnVsIGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycyIpOworICAgIG1fbmV0d29y
a1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OlNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVl
ZGVkIHsgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKIAogICAgIG1fc3dDb250ZXh0Q29u
bmVjdGlvbiA9IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggM2ExZTE0
MDQzMzhmLi5kMGFhNGVmNzQ1MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTkyLDYg
KzkyLDggQEAgY2xhc3MgTmV0d29ya1NvY2tldFN0cmVhbTsKIGNsYXNzIFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2s7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CiBjbGFzcyBXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb247CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKIAog
bmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiBzdHJ1Y3QgRGF0YUtleTsKQEAgLTE4MSwxMCArMTgz
LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5
KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5KT4m
Jik7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgdm9pZCBzZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKTsKKyAgICB2b2lkIHNlcnZpY2VXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKTsKICAgICBXZWJTV1NlcnZlckNv
bm5lY3Rpb24qIHN3Q29ubmVjdGlvbigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrPiBjcmVhdGVGZXRjaFRhc2soTmV0d29ya1Jlc291cmNlTG9hZGVyJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKKyAgICB2b2lkIHNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7CisKKyAgICBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKiBzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7
CiAKICAgICBOZXR3b3JrU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KCkgeyByZXR1cm4g
bV9zY2hlbWVSZWdpc3RyeS5nZXQoKTsgfQogCkBAIC0yNTMsNiArMjU4LDkgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNyZWF0ZVNvY2tldENoYW5uZWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmll
ciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7
CiAgICAgdm9pZCB1cGRhdGVRdW90YUJhc2VkT25TcGFjZVVzYWdlRm9yVGVzdGluZyhjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKIAorICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbigpOworICAgIHZvaWQgdW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5l
Y3Rpb24oKTsKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlz
aFNXU2VydmVyQ29ubmVjdGlvbigpOwogICAgIHZvaWQgZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVj
dGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYm
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
PiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CkBAIC0yNjAsNiArMjY4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVucmVnaXN0ZXJTV0Nv
bm5lY3Rpb24oKTsKICNlbmRpZgogCisgICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250
ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgY2xvc2VT
aGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpOworCiAgICAgdm9pZCBjcmVhdGVSVENQcm92
aWRlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2lmIEVOQUJMRShXRUJfUlRDKQog
ICAgIHZvaWQgY29ubmVjdFRvUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UoV2ViQ29yZTo6UlRD
RGF0YUNoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVu
dGlmaWVyIGhhbmRsZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxib29s
Pik+JiYpOwpAQCAtNDA0LDYgKzQxNSw4IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxXZWJTV1Nl
cnZlckNvbm5lY3Rpb24+IG1fc3dDb25uZWN0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+IG1fc3dDb250ZXh0Q29ubmVjdGlvbjsKICNlbmRp
ZgorICAgIFdlYWtQdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4gbV9zaGFyZWRX
b3JrZXJDb25uZWN0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uPiBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uOwog
CiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgYm9vbCBtX2lzUmVnaXN0ZXJlZFRvUlRDRGF0YUNo
YW5uZWxQcm94eSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgppbmRleCAyNDI4MzUwNTBiMjQuLmI5N2NhMzQ3OWI0ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC04OCw2ICs4OCw5IEBAIG1lc3NhZ2Vz
IC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBD
bG9zZVNXQ29udGV4dENvbm5lY3Rpb24oKQogI2VuZGlmCiAKKyAgICBFc3RhYmxpc2hTaGFyZWRX
b3JrZXJDb250ZXh0Q29ubmVjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2Vi
UGFnZVByb3h5SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikgLT4gKCkgQXN5
bmMKKyAgICBDbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKCkKKwogICAgIENyZWF0
ZVJUQ1Byb3ZpZGVyKCkgLT4gKCkgQXN5bmMKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICBDb25u
ZWN0VG9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZShzdHJ1Y3QgV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgc3RydWN0IFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRl
bnRpZmllciBoYW5kbGVyKSAtPiAoc3RkOjpvcHRpb25hbDxib29sPiByZXN1bHQpIEFzeW5jCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4
IDlhMzJlYTE4NjU0Yy4uZDc2MTYyODUwY2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUg
IldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAj
aW5jbHVkZSAiV2ViU1dPcmlnaW5TdG9yZS5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNl
cnZlci5oIgogI2luY2x1ZGUgIldlYlNvY2tldFRhc2suaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nv
b2tpZUphci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CkBAIC02Mjks
NyArNjMwLDcgQEAgU1dTZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVTV1NlcnZlcigpCiAg
ICAgICAgICAgICBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6c3RhcnQodGhpcywgV1RG
TW92ZShqb2JEYXRhKSwgc2hvdWxkUmVmcmVzaENhY2hlLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIH0sIFt0aGlzXShhdXRvJiByZWdpc3Ry
YWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmll
cj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBhdXRvJiYgY29tcGxldGlvbkhhbmRsZXIp
IHsKICAgICAgICAgICAgIEFTU0VSVCghcmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgpKTsKLSAg
ICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RXN0YWJsaXNo
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcmVnaXN0cmFibGVEb21h
aW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgbV9zZXNzaW9uSUQgfSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIDApOworICAgICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzIHsgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRl
bnRpZmllciwgbV9zZXNzaW9uSUQgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIDApOwog
ICAgICAgICB9LCBXVEZNb3ZlKGFwcEJvdW5kRG9tYWluc0NhbGxiYWNrKSk7CiAgICAgfQogICAg
IHJldHVybiAqbV9zd1NlcnZlcjsKQEAgLTY1Myw2ICs2NTQsMTMgQEAgYm9vbCBOZXR3b3JrU2Vz
c2lvbjo6aGFzU2VydmljZVdvcmtlckRhdGFiYXNlUGF0aCgpIGNvbnN0CiAKICNlbmRpZiAvLyBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKK1dlYlNoYXJlZFdvcmtlclNlcnZlciYgTmV0d29ya1Nl
c3Npb246OmVuc3VyZVNoYXJlZFdvcmtlclNlcnZlcigpCit7CisgICAgaWYgKCFtX3NoYXJlZFdv
cmtlclNlcnZlcikKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJTZXJ2ZXIgPSBtYWtlVW5pcXVlPFdl
YlNoYXJlZFdvcmtlclNlcnZlcj4oKnRoaXMpOworICAgIHJldHVybiAqbV9zaGFyZWRXb3JrZXJT
ZXJ2ZXI7Cit9CisKIFdlYklEQlNlcnZlciYgTmV0d29ya1Nlc3Npb246OmVuc3VyZVdlYklEQlNl
cnZlcigpCiB7CiAgICAgaWYgKCFtX3dlYklEQlNlcnZlcikgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDE5MzA3Y2Y0MGJlMy4uM2Y5ZDZj
OTU1MGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5oCkBAIC03OSw2ICs3OSw3IEBAIGNsYXNzIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s7CiBjbGFz
cyBXZWJJREJTZXJ2ZXI7CiBjbGFzcyBXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnM7CiBjbGFzcyBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXI7CiBjbGFzcyBXZWJTb2NrZXRUYXNrOwogY2xhc3MgV2ViU1dPcmlnaW5TdG9yZTsKIGNsYXNz
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKQEAgLTIxMCw2ICsyMTEsOSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihib29sIHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5
RW5hYmxlZCwgU3RyaW5nJiYgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSwgY29u
c3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CiAjZW5kaWYKIAorICAgIFdlYlNoYXJlZFdv
cmtlclNlcnZlciogc2hhcmVkV29ya2VyU2VydmVyKCkgeyByZXR1cm4gbV9zaGFyZWRXb3JrZXJT
ZXJ2ZXIuZ2V0KCk7IH0KKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIGVuc3VyZVNoYXJlZFdv
cmtlclNlcnZlcigpOworCiAgICAgV2ViSURCU2VydmVyKiB3ZWJJREJTZXJ2ZXIoKSB7IHJldHVy
biBtX3dlYklEQlNlcnZlci5nZXQoKTsgfQogICAgIFdlYklEQlNlcnZlciYgZW5zdXJlV2ViSURC
U2VydmVyKCk7CiAgICAgdm9pZCBjbG9zZUlEQlNlcnZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwpAQCAtMzE4LDYgKzMyMiw3IEBAIHByb3RlY3RlZDoKICAgICBzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJJbmZvPiBtX3NlcnZpY2VXb3JrZXJJbmZvOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpTV1NlcnZlcj4gbV9zd1NlcnZlcjsKICNlbmRpZgorICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI+IG1fc2hhcmVkV29ya2VyU2VydmVyOwogCiAg
ICAgU3RyaW5nIG1faWRiRGF0YWJhc2VQYXRoOwogICAgIFJlZlB0cjxXZWJJREJTZXJ2ZXI+IG1f
d2ViSURCU2VydmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcAppbmRleCA1YTg3MDNlZmQ2ZDUuLjI3ZjZlOGRhNWY0MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTE2
Miw3ICsxNjIsNyBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWF0Y2hB
bGxDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZQogCiB2b2lkIFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKQogewotICAg
IG1fY29ubmVjdGlvbi5zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKTsK
KyAgICBtX2Nvbm5lY3Rpb24uc2VydmljZVdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25O
b0xvbmdlck5lZWRlZCgpOwogfQogCiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6c2V0VGhyb3R0bGVTdGF0ZShib29sIGlzVGhyb3R0bGVhYmxlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2Vy
dmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNo
YXJlZFdvcmtlclNlcnZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi4zYzYzNjRhYTU0MDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwCkBAIC0wLDAg
KzEsMjk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldl
YlNoYXJlZFdvcmtlclNlcnZlci5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUg
Ik5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9u
LmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIgorI2luY2x1
ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlcjo6V2ViU2hhcmVkV29ya2VyU2Vy
dmVyKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uKQorICAgIDogbV9zZXNzaW9uKHNlc3Npb24pCit7
Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlcjo6fldlYlNoYXJlZFdvcmtlclNlcnZlcigpID0g
ZGVmYXVsdDsKKworUEFMOjpTZXNzaW9uSUQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpzZXNzaW9u
SUQoKQoreworICAgIHJldHVybiBtX3Nlc3Npb24uc2Vzc2lvbklEKCk7Cit9CisKK3ZvaWQgV2Vi
U2hhcmVkV29ya2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYmIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBVUkwmJiB1cmwsIFdlYkNvcmU6OlRyYW5zZmVycmVk
TWVzc2FnZVBvcnQmJiBwb3J0LCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9u
cykKK3sKKyAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkga2V5IHsgb3JpZ2luLCB1cmwsIHdv
cmtlck9wdGlvbnMubmFtZSB9OworICAgIGF1dG8mIHNoYXJlZFdvcmtlciA9IG1fc2hhcmVkV29y
a2Vycy5lbnN1cmUoa2V5LCBbJl0geworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTaGFyZWRX
b3JrZXI+KG9yaWdpbiwgdXJsLCB3b3JrZXJPcHRpb25zKTsKKyAgICB9KS5pdGVyYXRvci0+dmFs
dWU7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVy
OjpyZXF1ZXN0U2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHJp
dmF0ZX1zLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHNoYXJlZFdvcmtlci0+aWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKKworICAgIGlmIChzaGFyZWRXb3JrZXItPndvcmtlck9wdGlv
bnMudHlwZSAhPSB3b3JrZXJPcHRpb25zLnR5cGUgfHwgc2hhcmVkV29ya2VyLT53b3JrZXJPcHRp
b25zLmNyZWRlbnRpYWxzICE9IHdvcmtlck9wdGlvbnMuY3JlZGVudGlhbHMpIHsKKyAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpy
ZXF1ZXN0U2hhcmVkV29ya2VyOiBBIHdvcmtlciBhbHJlYWR5IGV4aXN0cyB3aXRoIHRoaXMgbmFt
ZSBidXQgaGFzIGRpZmZlcmVudCB0eXBlIC8gY3JlZGVudGlhbHMiKTsKKyAgICAgICAgaWYgKGF1
dG8qIHNlcnZlckNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkpKQorICAgICAgICAgICAgc2VydmVyQ29u
bmVjdGlvbi0+bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkRmFpbHVyZShzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNoYXJlZFdvcmtl
ci0+c2hhcmVkV29ya2VyT2JqZWN0cy5hZGQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwg
cG9ydCk7CisKKyAgICBpZiAoc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzLnNpemUo
KSA+IDEpIHsKKyAgICAgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29y
a2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyOiBBIHNoYXJlZCB3b3JrZXIgd2l0aCB0aGlz
IFVSTCBhbHJlYWR5IGV4aXN0cyAobm93IHNoYXJlZCBieSAldSBzaGFyZWQgd29ya2VyIG9iamVj
dHMpIiwgc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzLnNpemUoKSk7CisgICAgICAg
IGlmIChzaGFyZWRXb3JrZXItPmlzUnVubmluZykgeworICAgICAgICAgICAgYXV0byogY29udGV4
dENvbm5lY3Rpb24gPSBtX2NvbnRleHRDb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyLT5yZWdp
c3RyYWJsZURvbWFpbigpKTsKKyAgICAgICAgICAgIEFTU0VSVChjb250ZXh0Q29ubmVjdGlvbik7
CisgICAgICAgICAgICBpZiAoY29udGV4dENvbm5lY3Rpb24pCisgICAgICAgICAgICAgICAgcG9z
dENvbm5lY3RFdmVudCgqY29udGV4dENvbm5lY3Rpb24sIHNoYXJlZFdvcmtlci0+aWRlbnRpZmll
ciwgcG9ydCwgb3JpZ2luLmNsaWVudE9yaWdpbi50b1N0cmluZygpKTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVCghc2hhcmVkV29ya2VyLT5pc1J1bm5pbmcp
OworCisgICAgYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgQVNTRVJU
KHNlcnZlckNvbm5lY3Rpb24pOworCisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2Vi
U2hhcmVkV29ya2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyOiBGZXRjaGluZyBzaGFyZWQg
d29ya2VyIHNjcmlwdCBpbiBjbGllbnQiKTsKKyAgICBzZXJ2ZXJDb25uZWN0aW9uLT5mZXRjaFNj
cmlwdEluQ2xpZW50KHVybCwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgd29ya2VyT3B0
aW9ucywgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHNoYXJlZFdvcmtlciA9IFdlYWtQ
dHIgeyAqc2hhcmVkV29ya2VyIH1dKFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYgZmV0Y2hS
ZXN1bHQpIHsKKyAgICAgICAgaWYgKHdlYWtUaGlzICYmIHNoYXJlZFdvcmtlcikKKyAgICAgICAg
ICAgIHdlYWtUaGlzLT5kaWRGaW5pc2hGZXRjaGluZ1NoYXJlZFdvcmtlclNjcmlwdCgqc2hhcmVk
V29ya2VyLCBXVEZNb3ZlKGZldGNoUmVzdWx0KSk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViU2hh
cmVkV29ya2VyU2VydmVyOjpsYXVuY2hTaGFyZWRXb3JrZXIoV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24sIFNoYXJlZFdvcmtlciYgc2hh
cmVkV29ya2VyKQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdv
cmtlclNlcnZlcjo6bGF1bmNoU2hhcmVkV29ya2VyOiBjb250ZXh0Q29ubmVjdGlvbj0lcCwgc2hh
cmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsICZjb250ZXh0Q29ubmVjdGlvbiwgc2hhcmVk
V29ya2VyLmlkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgY29udGV4dENvbm5lY3Rpb24ubGF1
bmNoU2hhcmVkV29ya2VyKHNoYXJlZFdvcmtlci5vcmlnaW4sIHNoYXJlZFdvcmtlci5pZGVudGlm
aWVyLCBzaGFyZWRXb3JrZXIudXJsLCBzaGFyZWRXb3JrZXIud29ya2VyT3B0aW9ucywgc2hhcmVk
V29ya2VyLmZldGNoUmVzdWx0KTsKKyAgICBzaGFyZWRXb3JrZXIuaXNSdW5uaW5nID0gdHJ1ZTsK
KyAgICBhdXRvIHNvdXJjZU9yaWdpbiA9IHNoYXJlZFdvcmtlci5vcmlnaW4uY2xpZW50T3JpZ2lu
LnRvU3RyaW5nKCk7CisgICAgZm9yIChhdXRvJiBwb3J0IDogc2hhcmVkV29ya2VyLnNoYXJlZFdv
cmtlck9iamVjdHMudmFsdWVzKCkpCisgICAgICAgIHBvc3RDb25uZWN0RXZlbnQoY29udGV4dENv
bm5lY3Rpb24sIHNoYXJlZFdvcmtlci5pZGVudGlmaWVyLCBwb3J0LCBzb3VyY2VPcmlnaW4pOwor
fQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cG9zdENvbm5lY3RFdmVudChXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbiwgV2Vi
Q29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiBzb3VyY2VQb3J0LCBjb25zdCBTdHJp
bmcmIHNvdXJjZU9yaWdpbikKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI6OnBvc3RDb25uZWN0RXZlbnQ6IGNvbnRleHRDb25uZWN0aW9uPSVw
LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgJmNvbnRleHRDb25uZWN0aW9uLCBz
aGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIGNvbnRleHRDb25uZWN0aW9u
LnBvc3RDb25uZWN0RXZlbnQoc2hhcmVkV29ya2VySWRlbnRpZmllciwgc291cmNlUG9ydCwgc291
cmNlT3JpZ2luKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZl
dGNoaW5nU2hhcmVkV29ya2VyU2NyaXB0KFNoYXJlZFdvcmtlciYgd29ya2VyLCBXZWJDb3JlOjpX
b3JrZXJGZXRjaFJlc3VsdCYmIGZldGNoUmVzdWx0KQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJl
ZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6ZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRX
b3JrZXJTY3JpcHQgc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgd29ya2VyPSVw
LCBzdWNjZXNzPSVkIiwgd29ya2VyLmlkZW50aWZpZXIudG9VSW50NjQoKSwgJndvcmtlciwgZmV0
Y2hSZXN1bHQuZXJyb3IuaXNOdWxsKCkpOworICAgIGlmICghZmV0Y2hSZXN1bHQuZXJyb3IuaXNO
dWxsKCkpIHsKKyAgICAgICAgLy8gRmV0Y2ggZmFpbGVkLCBub3RpZnkgdGhlIFNoYXJlZFdvcmtl
ciBvYmplY3RzLgorICAgICAgICBmb3IgKGF1dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciA6IHdvcmtlci5zaGFyZWRXb3JrZXJPYmplY3RzLmtleXMoKSkgeworICAgICAgICAgICAgaWYg
KGF1dG8qIHNlcnZlckNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkpKQorICAgICAgICAgICAgICAgIHNl
cnZlckNvbm5lY3Rpb24tPm5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZhaWx1cmUoc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgICAgIH0KKyAgICAgICAgbV9zaGFyZWRXb3JrZXJz
LnJlbW92ZSh3b3JrZXIua2V5KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd29y
a2VyLmZldGNoUmVzdWx0ID0gV1RGTW92ZShmZXRjaFJlc3VsdCk7CisKKyAgICBhdXRvIHJlZ2lz
dHJhYmxlRG9tYWluID0gd29ya2VyLnJlZ2lzdHJhYmxlRG9tYWluKCk7CisgICAgYXV0byogY29u
dGV4dENvbm5lY3Rpb24gPSBjb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJl
Z2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoIWNvbnRleHRDb25uZWN0aW9uKSB7CisgICAgICAg
IGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGxhdW5jaFNoYXJlZFdvcmtlcigqY29udGV4dENvbm5lY3Rpb24s
IHdvcmtlcik7Cit9CisKK2Jvb2wgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpuZWVkc0NvbnRleHRD
b25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKSBjb25zdAoreworICAgIGZvciAoYXV0byYgc2hhcmVk
V29ya2VyIDogbV9zaGFyZWRXb3JrZXJzLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChyZWdpc3Ry
YWJsZURvbWFpbi5tYXRjaGVzKHNoYXJlZFdvcmtlci0+dXJsKSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29y
a2VyU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCit7CisgICAgQVNTRVJUKCFtX2NvbnRleHRD
b25uZWN0aW9ucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpOworICAgIGlmIChtX3BlbmRp
bmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKQor
ICAgICAgICByZXR1cm47CisKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6OmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uIHdpbGwgY3JlYXRlIGEgY29u
bmVjdGlvbiIpOworCisgICAgbV9wZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5zLmFkZChy
ZWdpc3RyYWJsZURvbWFpbik7CisgICAgbV9zZXNzaW9uLm5ldHdvcmtQcm9jZXNzKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MgeyByZWdpc3RyYWJsZURvbWFpbiwgbV9zZXNzaW9uLnNlc3Npb25JRCgpIH0s
IFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZWdpc3RyYWJsZURvbWFpbl0g
eworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y3JlYXRl
Q29udGV4dENvbm5lY3Rpb24gc2hvdWxkIG5vdyBoYXZlIGNyZWF0ZWQgYSBjb25uZWN0aW9uIik7
CisKKyAgICAgICAgQVNTRVJUKG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWlucy5jb250
YWlucyhyZWdpc3RyYWJsZURvbWFpbikpOworICAgICAgICBtX3BlbmRpbmdDb250ZXh0Q29ubmVj
dGlvbkRvbWFpbnMucmVtb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKKworICAgICAgICBpZiAobV9j
b250ZXh0Q29ubmVjdGlvbnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGlmIChuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0
cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICAgICAgY3JlYXRlQ29udGV4
dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4pOworICAgIH0sIDApOworfQorCit2b2lkIFdl
YlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29udGV4dENvbm5lY3Rpb24oV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24pCit7CisgICAgUkVM
RUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjphZGRDb250ZXh0
Q29ubmVjdGlvbiglcCkgd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCAmY29udGV4dENv
bm5lY3Rpb24sIGNvbnRleHRDb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50
NjQoKSk7CisKKyAgICBBU1NFUlQoIW1fY29udGV4dENvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbnRl
eHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCkpKTsKKworICAgIG1fY29udGV4dENvbm5l
Y3Rpb25zLmFkZChjb250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpLCAmY29udGV4
dENvbm5lY3Rpb24pOworCisgICAgY29udGV4dENvbm5lY3Rpb25DcmVhdGVkKGNvbnRleHRDb25u
ZWN0aW9uKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlbW92ZUNvbnRleHRD
b25uZWN0aW9uKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRl
eHRDb25uZWN0aW9uKQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJl
ZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oJXApIHdlYlByb2Nlc3NJZGVu
dGlmaWVyPSUiIFBSSXU2NCwgJmNvbnRleHRDb25uZWN0aW9uLCBjb250ZXh0Q29ubmVjdGlvbi53
ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUludDY0KCkpOworCisgICAgYXV0byByZWdpc3RyYWJs
ZURvbWFpbiA9IGNvbnRleHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCk7CisKKyAgICBB
U1NFUlQobV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0KHJlZ2lzdHJhYmxlRG9tYWluKSA9PSAmY29u
dGV4dENvbm5lY3Rpb24pOworCisgICAgbV9jb250ZXh0Q29ubmVjdGlvbnMucmVtb3ZlKHJlZ2lz
dHJhYmxlRG9tYWluKTsKKworICAgIGlmIChuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0
cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICBjcmVhdGVDb250ZXh0Q29u
bmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbik7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyOjpjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24pCit7CisgICAgUkVMRUFTRV9MT0coU2hh
cmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjb250ZXh0Q29ubmVjdGlvbkNyZWF0
ZWQoJXApIHdlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgJmNvbnRleHRDb25uZWN0aW9u
LCBjb250ZXh0Q29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUludDY0KCkpOwor
ICAgIGF1dG8mIHJlZ2lzdHJhYmxlRG9tYWluID0gY29udGV4dENvbm5lY3Rpb24ucmVnaXN0cmFi
bGVEb21haW4oKTsKKyAgICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1
ZXMoKSkgeworICAgICAgICBpZiAod29ya2VyLT5kaWRGaW5pc2hGZXRjaGluZygpICYmIHJlZ2lz
dHJhYmxlRG9tYWluLm1hdGNoZXMod29ya2VyLT51cmwpKQorICAgICAgICAgICAgbGF1bmNoU2hh
cmVkV29ya2VyKGNvbnRleHRDb25uZWN0aW9uLCAqd29ya2VyKTsKKyAgICB9Cit9CisKK2F1dG8g
V2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaGFyZWRXb3JrZXJCeUlkZW50aWZpZXIoV2ViQ29yZTo6
U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyKSAtPiBTaGFyZWRX
b3JrZXIqCit7CisgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3NoYXJlZFdvcmtlcnMudmFsdWVz
KCkpIHsKKyAgICAgICAgaWYgKHdvcmtlci0+aWRlbnRpZmllciA9PSBzaGFyZWRXb3JrZXJJZGVu
dGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIHdvcmtlci5nZXQoKTsKKyAgICB9CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKK2F1dG8gV2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaGFyZWRXb3Jr
ZXJCeU9iamVjdElkZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKSAtPiBTaGFyZWRXb3JrZXIqCit7CisgICAg
Zm9yIChhdXRvJiB3b3JrZXIgOiBtX3NoYXJlZFdvcmtlcnMudmFsdWVzKCkpIHsKKyAgICAgICAg
aWYgKHdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5jb250YWlucyhzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJldHVybiB3b3JrZXIuZ2V0KCk7CisgICAgfQor
ICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hh
cmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQoreworICAgIGF1dG8qIHdvcmtl
ciA9IHNoYXJlZFdvcmtlckJ5T2JqZWN0SWRlbnRpZmllcihzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXI6OnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5OiBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyPSV7cHVibGljfXMsIHdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB3b3JrZXIpOworICAgIGlmICghd29ya2Vy
KQorICAgICAgICByZXR1cm47CisKKyAgICB3b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMucmVt
b3ZlKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIGlmICghd29ya2VyLT5zaGFy
ZWRXb3JrZXJPYmplY3RzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2h1dERv
d25TaGFyZWRXb3JrZXIod29ya2VyLT5rZXkoKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2Vy
U2VydmVyOjpzaHV0RG93blNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJL
ZXkmIGtleSkKK3sKKyAgICBhdXRvIHdvcmtlciA9IG1fc2hhcmVkV29ya2Vycy50YWtlKGtleSk7
CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpz
aHV0RG93blNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIiwg
d29ya2VyPSVwIiwgd29ya2VyID8gd29ya2VyLT5pZGVudGlmaWVyLnRvVUludDY0KCkgOiAwLCB3
b3JrZXIuZ2V0KCkpOworICAgIGlmICghd29ya2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IGNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVE
b21haW4od29ya2VyLT5yZWdpc3RyYWJsZURvbWFpbigpKTsKKyAgICBpZiAoIWNvbnRleHRDb25u
ZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBjb250ZXh0Q29ubmVjdGlvbi0+dGVybWlu
YXRlU2hhcmVkV29ya2VyKHdvcmtlci0+aWRlbnRpZmllcik7CisKKyAgICBpZiAoIW5lZWRzQ29u
dGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbih3b3JrZXItPnJlZ2lzdHJhYmxlRG9t
YWluKCkpKQorICAgICAgICBjb250ZXh0Q29ubmVjdGlvbi0+Y29ubmVjdGlvbklzTm9Mb25nZXJO
ZWVkZWQoKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmFkZENvbm5lY3Rpb24o
c3RkOjp1bmlxdWVfcHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24+JiYgY29ubmVj
dGlvbikKK3sKKyAgICBhdXRvIHByb2Nlc3NJZGVudGlmaWVyID0gY29ubmVjdGlvbi0+d2ViUHJv
Y2Vzc0lkZW50aWZpZXIoKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6OmFkZENvbm5lY3Rpb24oJXApOiBwcm9jZXNzSWRlbnRpZmllcj0lIiBQ
Ukl1NjQsIGNvbm5lY3Rpb24uZ2V0KCksIHByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCkpOwor
ICAgIEFTU0VSVCghbV9jb25uZWN0aW9ucy5jb250YWlucyhwcm9jZXNzSWRlbnRpZmllcikpOwor
ICAgIG1fY29ubmVjdGlvbnMuYWRkKHByb2Nlc3NJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbm5lY3Rp
b24pKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlbW92ZUNvbm5lY3Rpb24o
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIpCit7CisgICAgYXV0
byBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy50YWtlKHByb2Nlc3NJZGVudGlmaWVyKTsKKyAg
ICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlbW92
ZUNvbm5lY3Rpb24oJXApOiBwcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQsIGNvbm5lY3Rpb24u
Z2V0KCksIHByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIEFTU0VSVChjb25uZWN0
aW9uKTsKKworICAgIFZlY3RvcjxXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
PiBzaGFyZWRXb3JrZXJPYmplY3RzR29pbmdBd2F5OworICAgIGZvciAoYXV0byYgd29ya2VyIDog
bV9zaGFyZWRXb3JrZXJzLnZhbHVlcygpKSB7CisgICAgICAgIGZvciAoYXV0byYgc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciA6IHdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5rZXlzKCkp
IHsKKyAgICAgICAgICAgIGlmIChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJ
ZGVudGlmaWVyKCkgPT0gcHJvY2Vzc0lkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgc2hhcmVk
V29ya2VyT2JqZWN0c0dvaW5nQXdheS5hcHBlbmQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
cik7CisgICAgICAgIH0KKyAgICB9CisgICAgZm9yIChhdXRvIHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIgOiBzaGFyZWRXb3JrZXJPYmplY3RzR29pbmdBd2F5KQorICAgICAgICBzaGFyZWRX
b3JrZXJPYmplY3RJc0dvaW5nQXdheShzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKK30K
KworV2ViU2hhcmVkV29ya2VyU2VydmVyOjpTaGFyZWRXb3JrZXI6OlNoYXJlZFdvcmtlcihjb25z
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFdl
YkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMpCisgICAgOiBpZGVudGlmaWVyKFdl
YkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXI6OmdlbmVyYXRlKCkpCisgICAgLCBvcmlnaW4o
b3JpZ2luKQorICAgICwgdXJsKHVybCkKKyAgICAsIHdvcmtlck9wdGlvbnMod29ya2VyT3B0aW9u
cykKK3sKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnBvc3RFeGNlcHRpb25Ub1dv
cmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgYXV0byogd29y
a2VyID0gc2hhcmVkV29ya2VyQnlJZGVudGlmaWVyKHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOwor
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZl
cjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUi
IFBSSXU2NCAiLCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCks
IHdvcmtlcik7CisgICAgaWYgKCF3b3JrZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAo
YXV0byBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIDogd29ya2VyLT5zaGFyZWRXb3JrZXJP
YmplY3RzLmtleXMoKSkgeworICAgICAgICBpZiAoYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1f
Y29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50
aWZpZXIoKSkpCisgICAgICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uLT5wb3N0RXhjZXB0aW9uVG9X
b3JrZXJPYmplY3Qoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgZXJyb3JNZXNzYWdlLCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCk7CisgICAgfQorfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jODMxZTBhNDJhYjQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXIuaApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJLZXkuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1dvcmtlckZldGNoUmVzdWx0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Xb3JrZXJP
cHRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworc3RydWN0IENsaWVudE9yaWdpbjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IE5ldHdvcmtTZXNzaW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjsK
K2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CisKK2NsYXNz
IFdlYlNoYXJlZFdvcmtlclNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIoTmV0d29ya1Nlc3Npb24mKTsKKyAgICB+
V2ViU2hhcmVkV29ya2VyU2VydmVyKCk7CisKKyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQo
KTsKKworICAgIHZvaWQgcmVxdWVzdFNoYXJlZFdvcmtlcihXZWJDb3JlOjpDbGllbnRPcmlnaW4m
JiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgVVJMJiYsIFdlYkNvcmU6
OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmKTsKKyAg
ICB2b2lkIHNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KFdlYkNvcmU6OlNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIpOworCisgICAgdm9pZCBhZGRDb250ZXh0Q29ubmVjdGlvbihXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CisgICAgdm9pZCByZW1vdmVD
b250ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Jik7CisKKyAgICB2b2lkIGFkZENvbm5lY3Rpb24oc3RkOjp1bmlxdWVfcHRyPFdlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb24+JiYpOworICAgIHZvaWQgcmVtb3ZlQ29ubmVjdGlvbihXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CisKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKiBjb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNv
bnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pIHsgcmV0dXJuIG1fY29udGV4
dENvbm5lY3Rpb25zLmdldChkb21haW4pOyB9CisKKyAgICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dv
cmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGNyZWF0ZUNvbnRleHRDb25u
ZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7CisKKyAgICBib29sIG5l
ZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OworICAgIHZvaWQgY29udGV4dENvbm5lY3Rpb25DcmVh
dGVkKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKKworICAgIHN0
cnVjdCBTaGFyZWRXb3JrZXIgOiBDYW5NYWtlV2Vha1B0cjxTaGFyZWRXb3JrZXI+IHsKKyAgICAg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworCisgICAgICAgIFNoYXJlZFdvcmtl
cihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBjb25zdCBVUkwmLCBjb25zdCBXZWJDb3Jl
OjpXb3JrZXJPcHRpb25zJik7CisKKyAgICAgICAgYm9vbCBkaWRGaW5pc2hGZXRjaGluZygpIGNv
bnN0IHsgcmV0dXJuICEhZmV0Y2hSZXN1bHQuc2NyaXB0OyB9CisgICAgICAgIFdlYkNvcmU6OlNo
YXJlZFdvcmtlcktleSBrZXkoKSBjb25zdCB7IHJldHVybiB7IG9yaWdpbiwgdXJsLCB3b3JrZXJP
cHRpb25zLm5hbWUgfTsgfQorICAgICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdp
c3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IHsgdXJsIH07IH0KKworICAgICAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXI7CisgICAgICAgIFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW47CisgICAgICAg
IFVSTCB1cmw7CisgICAgICAgIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMgd29ya2VyT3B0aW9uczsK
KyAgICAgICAgSGFzaE1hcDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBX
ZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0PiBzaGFyZWRXb3JrZXJPYmplY3RzOworICAg
ICAgICBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCBmZXRjaFJlc3VsdDsKKyAgICAgICAgYm9v
bCBpc1J1bm5pbmcgeyBmYWxzZSB9OworICAgIH07CisKKyAgICBTaGFyZWRXb3JrZXIqIHNoYXJl
ZFdvcmtlckJ5SWRlbnRpZmllcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKKyAg
ICBTaGFyZWRXb3JrZXIqIHNoYXJlZFdvcmtlckJ5T2JqZWN0SWRlbnRpZmllcihXZWJDb3JlOjpT
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICB2b2lkIGRpZEZpbmlzaEZldGNoaW5n
U2hhcmVkV29ya2VyU2NyaXB0KFNoYXJlZFdvcmtlciYsIFdlYkNvcmU6OldvcmtlckZldGNoUmVz
dWx0JiYpOworICAgIHZvaWQgbGF1bmNoU2hhcmVkV29ya2VyKFdlYlNoYXJlZFdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24mLCBTaGFyZWRXb3JrZXImKTsKKyAgICB2b2lkIHBvc3RDb25u
ZWN0RXZlbnQoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYsIFdlYkNv
cmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVz
c2FnZVBvcnQmLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CisgICAgdm9pZCBzaHV0RG93
blNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmKTsKKworICAgIE5l
dHdvcmtTZXNzaW9uJiBtX3Nlc3Npb247CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24+
PiBtX2Nvbm5lY3Rpb25zOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4s
IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qPiBtX2NvbnRleHRDb25u
ZWN0aW9uczsKKyAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBtX3BlbmRp
bmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpTaGFyZWRX
b3JrZXJLZXksIHN0ZDo6dW5pcXVlX3B0cjxTaGFyZWRXb3JrZXI+PiBtX3NoYXJlZFdvcmtlcnM7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi4zY2Y2MTBiNmJiOGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uLmNwcApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgiCisKKyNp
bmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2Vy
RmV0Y2hSZXN1bHQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNkZWZpbmUgQ09OTkVDVElP
Tl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBb
d2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdlYlNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb246OiIgZm10LCB0aGlzLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCks
ICMjX19WQV9BUkdTX18pCisjZGVmaW5lIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IoZm10
LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKFNoYXJlZFdvcmtlciwgIiVwIC0gW3dlYlByb2Nlc3NJ
ZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjoi
IGZtdCwgdGhpcywgbV93ZWJQcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpLCAjI19fVkFfQVJH
U19fKQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgV2ViU2hhcmVk
V29ya2VyU2VydmVyJiBzZXJ2ZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIpCisgICAgOiBtX2NvbnRl
bnRDb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQ
cm9jZXNzKQorICAgICwgbV9zZXJ2ZXIoc2VydmVyKQorICAgICwgbV93ZWJQcm9jZXNzSWRlbnRp
Zmllcih3ZWJQcm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9H
KCJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOiIpOworfQorCitXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uOjp+V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpCit7
CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygifldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb246Iik7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBt
X2NvbnRlbnRDb25uZWN0aW9uLnB0cigpOworfQorCitQQUw6OlNlc3Npb25JRCBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpzZXNzaW9uSUQoKQoreworICAgIHJldHVybiBzZXJ2ZXIo
KS5zZXNzaW9uSUQoKTsKK30KKworTmV0d29ya1Nlc3Npb24qIFdlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb246OnNlc3Npb24oKQoreworICAgIHJldHVybiBtX25ldHdvcmtQcm9jZXNzLT5u
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbjo6cmVxdWVzdFNoYXJlZFdvcmtlcihXZWJDb3JlOjpDbGllbnRPcmlnaW4m
JiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciwgVVJMJiYgdXJsLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3Nh
Z2VQb3J0JiYgcG9ydCwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMpCit7
CisgICAgQVNTRVJUKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZp
ZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsgLy8gRklYTUU6IFNob3VsZCBiZSBhIE1F
U1NBR0VfQ0hFQ0soKS4KKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJyZXF1ZXN0U2hhcmVk
V29ya2VyOiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMiLCBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSB0aGlzLT5zZXNzaW9uKCkpCisgICAgICAgIHNlc3Npb24tPmVuc3Vy
ZVNoYXJlZFdvcmtlclNlcnZlcigpLnJlcXVlc3RTaGFyZWRXb3JrZXIoV1RGTW92ZShvcmlnaW4p
LCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXVEZNb3ZlKHVybCksIFdURk1vdmUocG9y
dCksIFdURk1vdmUod29ya2VyT3B0aW9ucykpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNl
cnZlckNvbm5lY3Rpb246OmZldGNoU2NyaXB0SW5DbGllbnQoY29uc3QgVVJMJiB1cmwsIFdlYkNv
cmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYgd29ya2VyT3B0aW9ucywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJmZXRjaFNjcmlwdElu
Q2xpZW50OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMiLCBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
OjpGZXRjaFNjcmlwdEluQ2xpZW50IHsgdXJsLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LCB3b3JrZXJPcHRpb25zIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9p
ZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpub3RpZnlXb3JrZXJPYmplY3RPZkxv
YWRGYWlsdXJlKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllcikKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9S
KCJub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRGYWlsdXJlOiBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyPSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbjo6Tm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkRmFpbHVyZSB7IHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIgfSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VS
Uk9SKCJwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Q6IHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uOjpQb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QgeyBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
c291cmNlVVJMIH0pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246
OnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQo
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fd2Vi
UHJvY2Vzc0lkZW50aWZpZXIpOyAvLyBGSVhNRTogU2hvdWxkIGJlIGEgTUVTU0FHRV9DSEVDSygp
LgorICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coInNoYXJlZFdvcmtlck9iamVjdElzR29pbmdB
d2F5OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMiLCBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgaWYgKGF1
dG8qIHNlc3Npb24gPSB0aGlzLT5zZXNzaW9uKCkpCisgICAgICAgIHNlc3Npb24tPmVuc3VyZVNo
YXJlZFdvcmtlclNlcnZlcigpLnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIpOworfQorCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xP
RworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdv
cmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jNjg0OWFiMDJlYWEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdv
cmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw3OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgi
CisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lk
ZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0Owor
c3RydWN0IFdvcmtlck9wdGlvbnM7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBO
ZXR3b3JrUHJvY2VzczsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlcjsKK2NsYXNzIFdlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CisKK2NsYXNzIFdlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb24gOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oTmV0d29ya1Byb2Nlc3Mm
LCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImLCBJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllcik7CisgICAgfldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oKTsK
KworICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlciYgc2VydmVyKCkgeyByZXR1cm4gbV9zZXJ2ZXI7
IH0KKyAgICBjb25zdCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlcigpIGNvbnN0IHsgcmV0
dXJuIG1fc2VydmVyOyB9CisKKyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKTsKKyAgICBO
ZXR3b3JrU2Vzc2lvbiogc2Vzc2lvbigpOworICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV93ZWJQcm9jZXNzSWRlbnRp
ZmllcjsgfQorCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBmaW5hbDsKKworICAgIHZvaWQgZmV0Y2hTY3JpcHRJbkNsaWVudChjb25z
dCBVUkwmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpXb3JrZXJPcHRpb25zJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXb3Jr
ZXJGZXRjaFJlc3VsdCYmKT4mJik7CisgICAgdm9pZCBub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRG
YWlsdXJlKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIHZvaWQg
cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCitwcml2YXRlOgorICAg
IC8vIElQQzo6TWVzc2FnZVNlbmRlci4KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5k
ZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRl
c3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CisKKyAgICAvLyBJUEMgbWVz
c2FnZXMuCisgICAgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdp
biYmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29y
ZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYpOwor
ICAgIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllcik7CisKKyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2NvbnRl
bnRDb25uZWN0aW9uOworICAgIFJlZjxOZXR3b3JrUHJvY2Vzcz4gbV9uZXR3b3JrUHJvY2VzczsK
KyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIG1fc2VydmVyOworICAgIFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVk
V29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uZmFlNGEwODAzNzc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI2IEBACisjIENvcHlyaWdodCAoQykgMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQK
KyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b24gTm90UmVmQ291bnRlZCB7CisgICAgUmVxdWVzdFNoYXJlZFdvcmtlcihzdHJ1Y3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBVUkwgdXJsLCBXZWJDb3JlOjpUcmFu
c2ZlcnJlZE1lc3NhZ2VQb3J0IHBvcnQsIHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdv
cmtlck9wdGlvbnMpCisgICAgU2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
KQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjQ5YzExMjQxNTIxOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgi
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjZGVmaW5lIENPTlRFWFRfQ09OTkVDVElPTl9SRUxF
QVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBbd2ViUHJv
Y2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OiIgZm10LCB0aGlzLCB3ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUludDY0
KCksICMjX19WQV9BUkdTX18pCisKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2
ZXIpCisgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1fc2VydmVyKHNlcnZl
cikKKyAgICAsIG1fcmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pCit7CisgICAg
Q09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOiIpOworICAgIHNlcnZlci5hZGRDb250ZXh0Q29ubmVjdGlvbigqdGhp
cyk7Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5XZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkKK3sKKyAgICBDT05URVhUX0NP
Tk5FQ1RJT05fUkVMRUFTRV9MT0coIn5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOiIpOworICAgIGlmIChtX3NlcnZlciAmJiBtX3NlcnZlci0+Y29udGV4dENvbm5lY3Rp
b25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbigpKSA9PSB0aGlzKQorICAg
ICAgICBtX3NlcnZlci0+cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oKnRoaXMpOworfQorCitXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjp3ZWJQcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29u
bmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpOworfQorCitJUEM6OkNvbm5lY3Rpb24mIFdl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmlwY0Nvbm5lY3Rpb24oKSBj
b25zdAoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpOworfQorCitJUEM6
OkNvbm5lY3Rpb24qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1l
c3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gJmlwY0Nvbm5lY3Rp
b24oKTsKK30KKwordWludDY0X3QgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAoreworICAgIHJldHVybiAw
OworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNv
bm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVM
RUFTRV9MT0coImNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkOiIpOworICAgIG1fY29ubmVjdGlv
bi5zaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgp
OworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnBv
c3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVy
IHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7
CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJwb3N0RXhjZXB0aW9uVG9Xb3Jr
ZXJPYmplY3Q6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIGlmIChtX3NlcnZlcikKKyAgICAgICAgbV9zZXJ2
ZXItPnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBl
cnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMKTsKK30KKwor
dm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpsYXVuY2hTaGFy
ZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFdlYkNvcmU6OlNo
YXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMsIGNvbnN0IFdl
YkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiBmZXRjaFJlc3VsdCkKK3sKKyAgICBDT05URVhUX0NP
Tk5FQ1RJT05fUkVMRUFTRV9MT0coImxhdW5jaFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRl
bnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpMYXVuY2hTaGFyZWRXb3JrZXIgeyBvcmlnaW4sIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIHVy
bCwgd29ya2VyT3B0aW9ucywgZmV0Y2hSZXN1bHQgfSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVudChXZWJDb3JlOjpT
aGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmIHBvcnQsIGNvbnN0IFN0cmluZyYgc291cmNlT3Jp
Z2luKQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygicG9zdENvbm5lY3RF
dmVudDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50
aWZpZXIudG9VSW50NjQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpQb3N0Q29ubmVjdEV2ZW50IHsgc2hhcmVkV29ya2VySWRl
bnRpZmllciwgcG9ydCwgc291cmNlT3JpZ2luIH0pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZVNoYXJlZFdvcmtlcihXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIpCit7CisgICAg
Q09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJ0ZXJtaW5hdGVTaGFyZWRXb3JrZXI6IHNo
YXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRv
VUludDY0KCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6VGVybWluYXRlU2hhcmVkV29ya2VyIHsgc2hhcmVkV29ya2VySWRlbnRp
ZmllciB9KTsKK30KKworI3VuZGVmIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLmYwN2ZmMDNhMzNkNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNz
YWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1JlZ2lzdHJhYmxlRG9tYWluLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJJZGVu
dGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlZ2lzdHJhYmxlRG9tYWlu
OworY2xhc3MgU2NyaXB0QnVmZmVyOworc3RydWN0IENsaWVudE9yaWdpbjsKK3N0cnVjdCBXb3Jr
ZXJGZXRjaFJlc3VsdDsKK3N0cnVjdCBXb3JrZXJPcHRpb25zOworfQorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CitjbGFzcyBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI7CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYs
IFdlYlNoYXJlZFdvcmtlclNlcnZlciYpOworICAgIH5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKCk7CisKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQ
cm9jZXNzSWRlbnRpZmllcigpIGNvbnN0OworICAgIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiByZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFibGVE
b21haW47IH0KKyAgICBJUEM6OkNvbm5lY3Rpb24mIGlwY0Nvbm5lY3Rpb24oKSBjb25zdDsKKwor
ICAgIHZvaWQgbGF1bmNoU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYs
IFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFdlYkNv
cmU6Oldvcmtlck9wdGlvbnMmLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYpOwor
ICAgIHZvaWQgcG9zdENvbm5lY3RFdmVudChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiwgY29uc3QgU3RyaW5nJiBz
b3VyY2VPcmlnaW4pOworICAgIHZvaWQgdGVybWluYXRlU2hhcmVkV29ya2VyKFdlYkNvcmU6OlNo
YXJlZFdvcmtlcklkZW50aWZpZXIpOworCisgICAgdm9pZCBjb25uZWN0aW9uSXNOb0xvbmdlck5l
ZWRlZCgpOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICAvLyBJUEMgbWVzc2FnZXMuCisg
ICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2Vy
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisKKyAgICAvLyBJUEM6
Ok1lc3NhZ2VTZW5kZXIuCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlv
bklEKCkgY29uc3QgZmluYWw7CisKKyAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYg
bV9jb25uZWN0aW9uOworICAgIFdlYWtQdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyPiBtX3NlcnZl
cjsKKyAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFy
ZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdl
cy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFlNDdjMTIyY2Jh
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVk
V29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMu
aW4KQEAgLTAsMCArMSwyNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCittZXNzYWdlcyAtPiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
IE5vdFJlZkNvdW50ZWQgeworICAgIFBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFN0cmluZyBl
cnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTdHJpbmcgc291
cmNlVVJMKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCA0NGUwYTdhY2I3YjUuLjdi
N2NjOWJhYzRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTk3LDYgKzk3LDcgQEAg
ZXh0ZXJuICJDIiB7CiAgICAgTShTZXJ2aWNlV29ya2VyKSBcCiAgICAgTShTZXNzaW9uU3RhdGUp
IFwKICAgICBNKFNoYXJlZERpc3BsYXlMaXN0cykgXAorICAgIE0oU2hhcmVkV29ya2VyKSBcCiAg
ICAgTShTdG9yYWdlKSBcCiAgICAgTShTdG9yYWdlQVBJKSBcCiAgICAgTShUZXh0SW5wdXQpIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDdlYmZhNTE2YjUw
My4uMWEyNjFlMGIxMGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKQEAgLTMwMywxMCArMzAzLDEzIEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJk
X2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVu
dGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2gnLAorICAgICAgICAn
V2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNsZWVwRGlzYWJs
ZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNvdXJjZUJ1ZmZlckFwcGVuZE1vZGUn
LAogICAgICAgICAnV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTdG9yYWdlVHlwZScsCisgICAgICAgICdXZWJD
b3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JywKICAgICAgICAgJ1dlYkNvcmU6OlVzZXJNZWRp
YVJlcXVlc3RJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OldlYkxvY2tJZGVudGlmaWVy
JywKICAgICAgICAgJ1dlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXInLApAQCAtODUxLDYgKzg1
NCw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6VGV4
dENoZWNraW5nVHlwZSc6IFsnPFdlYkNvcmUvVGV4dENoZWNraW5nLmg+J10sCiAgICAgICAgICdX
ZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YSc6IFsnPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPidd
LAogICAgICAgICAnV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSc6IFsnPFdl
YkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+J10sCisgICAgICAgICdXZWJDb3JlOjpUcmFu
c2ZlcnJlZE1lc3NhZ2VQb3J0JzogWyc8V2ViQ29yZS9NZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5o
PiddLAogICAgICAgICAnV2ViQ29yZTo6VXNlZExlZ2FjeVRMUyc6IFsnPFdlYkNvcmUvUmVzb3Vy
Y2VSZXNwb25zZUJhc2UuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlZpZGVvUHJlc2V0RGF0YSc6
IFsnPFdlYkNvcmUvVmlkZW9QcmVzZXQuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlZpZXdwb3J0
QXR0cmlidXRlcyc6IFsnPFdlYkNvcmUvVmlld3BvcnRBcmd1bWVudHMuaD4nXSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CmluZGV4IGRmNDdjNzg2YzhkZS4uZTRjMDc4NzUyZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTE0MSw2
ICsxNDEsMTAgQEAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV09yaWdpblN0b3Jl
LmNwcCBAbm8tdW5pZnkKIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcCBAbm8tdW5pZnkKIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBAbm8tdW5pZnkKIAorTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAKK05ldHdvcmtQcm9jZXNz
L1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcAorTmV0d29y
a1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uY3BwCisKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VNYW5h
Z2VyLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5j
cHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3Ry
eS5jcHAKQEAgLTc4Miw2ICs3ODYsOSBAQCBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uY3BwCiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dPcmlnaW5UYWJs
ZS5jcHAKIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
LmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAKK1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
Y3BwCitXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5j
cHAKK1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAKIAogV2Vi
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCiAKQEAgLTg4
NCwzICs4OTEsNyBAQCBSZW1vdGVXZWJMb2NrUmVnaXN0cnlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBT
ZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrTWVzc2FnZVJlY2VpdmVyLmNwcAogV2ViQnJvYWRjYXN0
Q2hhbm5lbFJlZ2lzdHJ5TWVzc2FnZVJlY2VpdmVyLmNwcAogV2ViTG9ja1JlZ2lzdHJ5UHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b25NZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVz
c2FnZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VS
ZWNlaXZlci5jcHAKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNz
YWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBkMWI0MzcxNzYzNWYuLjMzMDIwYmQ1
YzNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC01MjksNyArNTI5LDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5Ojp0ZXJtaW5hdGVXZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
IHdlYlByb2MKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6dGVybWluYXRlVW5yZXNwb25zaXZl
U2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNz
SWRlbnRpZmllcikKIHsKICAgICBpZiAoUmVmUHRyIHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6
OnByb2Nlc3NGb3JJZGVudGlmaWVyKHByb2Nlc3NJZGVudGlmaWVyKSkgewotICAgICAgICBwcm9j
ZXNzLT5kaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICAgICAgcHJvY2Vzcy0+ZGlzYWJsZVdv
cmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICAgICAg
ICAgcHJvY2Vzcy0+cmVxdWVzdFRlcm1pbmF0aW9uKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6
RXhjZWVkZWRDUFVMaW1pdCk7CiAgICAgfQogfQpAQCAtMTQxNSwxNiArMTQxNSwyMSBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZERlc3Ryb3lXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eShXZWJVc2VyQ29udGVudAogfQogI2VuZGlmCiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiks
IHNlc3Npb25JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBy
ZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9t
YWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2
aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFdlYlByb2Nl
c3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
KnRoaXMsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50
aWZpZXIsIHNlc3Npb25JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIFdlYlBy
b2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXJ2aWNlV29ya2VyUGFnZUlk
ZW50aWZpZXIsIHNlc3Npb25JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OndvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJO
ZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6c2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVk
ZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBpZiAoYXV0
byogcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIoaWRlbnRp
ZmllcikpCi0gICAgICAgIHByb2Nlc3MtPmRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgICAg
ICBwcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNl
cnZpY2VXb3JrZXIpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJv
Y2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzSWRlbnRpZmllcikKQEAgLTE0NjAsNiArMTQ2NSwxMiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQ
cm9jZXNzSQogfQogI2VuZGlmCiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciBpZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvKiBwcm9jZXNzID0gV2ViUHJvY2Vzc1By
b3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihpZGVudGlmaWVyKSkKKyAgICAgICAgcHJvY2Vzcy0+
ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIp
OworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdp
biwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qg
c3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBxdW90YSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUkVMRUFTRV9MT0coU3Rv
cmFnZSwgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VTcGFjZSIsIHRo
aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaAppbmRleCA4Y2JkN2QwOWI2NmYuLjY4NDFhMzRmZTA5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmgKQEAgLTMyNywxMyArMzI3LDE1IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKLSAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwotICAgIHZvaWQgd29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CisgICAgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXJ2aWNlV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAg
ICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIHZvaWQgdW5yZWdpc3Rl
clNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdl
YlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29y
a2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIHZvaWQgc3RhcnRTZXJ2aWNlV29ya2VyQmFja2dy
b3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclBy
b2Nlc3NJZGVudGlmaWVyKTsKICAgICB2b2lkIGVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJv
Y2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lk
ZW50aWZpZXIpOwogI2VuZGlmCisgICAgdm9pZCBzaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlv
bk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICB2b2lkIGVz
dGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgdGVybWluYXRlV2ViUHJvY2VzcyhXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCBh
OTk3NmIyMmU3M2YuLjE1NzU3ZWQ5YTI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5p
bgpAQCAtNTMsMTMgKzUzLDE1IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVn
YWN5UmVjZWl2ZXIgewogICAgIFRlcm1pbmF0ZVdlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIpCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi0gICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMK
LSAgICBXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgRXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBy
ZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCisgICAgU2VydmljZVdvcmtlckNvbnRleHRDb25u
ZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmll
cikKICAgICBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpCiAgICAgVW5yZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nl
c3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc0lkZW50aWZpZXIpCiAgICAgU3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3Np
bmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlm
aWVyKQogICAgIEVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpCiAjZW5kaWYK
KyAgICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKKyAgICBTaGFyZWRXb3JrZXJDb250ZXh0Q29u
bmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCiAKICAgICBTZXRXZWJQcm9jZXNzSGFzVXBsb2FkcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciBwcm9jZXNzSUQsIGJvb2wgaGFzVXBsb2FkKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAppbmRleCBlNDk5MzVjMzI1ZjYuLjFhY2IzNDQ0YWZhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zNjkxLDExICszNjkxLDkg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVzZXJBZ2VudChTdHJpbmcmJiB1c2VyQWdlbnQpCiAg
ICAgICAgIHJldHVybjsKICAgICBtX3VzZXJBZ2VudCA9IFdURk1vdmUodXNlckFnZW50KTsKIAot
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICAvLyBXZSB1cGRhdGUgdGhlIHNlcnZpY2Ug
d29ya2VyIHRoZXJlIGF0IHRoZSBtb21lbnQgdG8gYmUgc3VyZSB3ZSB1c2UgdmFsdWVzIHVzZWQg
YnkgYWN0dWFsIHdlYiBwYWdlcy4KICAgICAvLyBGSVhNRTogUmVmYWN0b3IgdGhpcyB3aGVuIHdl
IGhhdmUgYSBiZXR0ZXIgVXNlci1BZ2VudCBzdG9yeS4KLSAgICBwcm9jZXNzKCkucHJvY2Vzc1Bv
b2woKS51cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KG1fdXNlckFnZW50KTsKLSNlbmRpZgor
ICAgIHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnVwZGF0ZVdvcmtlclVzZXJBZ2VudChtX3VzZXJB
Z2VudCk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA2NmQ0OWZh
YzNlYTYuLjRiMTliMGQxZDNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcApAQCAtNTI5LDcgKzUyOSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdldFdl
YkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJvCiBi
b29sIFdlYlByb2Nlc3NQb29sOjpzX3VzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MgPSBm
YWxzZTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3Jr
UHJvY2Vzc1Byb3h5JiBwcm94eSwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFp
biwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MoUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlm
aWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiB3ZWJzaXRlRGF0YVN0b3JlID0gV2Vi
c2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQoc2Vzc2lvbklEKTsK
ICAgICBpZiAoIXdlYnNpdGVEYXRhU3RvcmUpCkBAIC01NDYsNyArNTQ2LDcgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKE5ldHdvcmtQcm8KICAgICBpZiAoc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKSB7CiAg
ICAgICAgIC8vIFRoaXMgaXMgYSBzZXJ2aWNlIHdvcmtlciBmb3IgYSBzZXJ2aWNlIHdvcmtlciBw
YWdlIHNvIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIHVzZSB1c2UgdGhlIHBhZ2UncyBXZWJQcm9j
ZXNzIGZvciB0aGUgc2VydmljZSB3b3JrZXIuCiAgICAgICAgIGlmICgoc2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIoc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyLT5wcm9jZXNzSWRlbnRpZmllcigpKSkpIHsKLSAgICAgICAg
ICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVNlcnZpY2VXb3JrZXJzKHByb2Nl
c3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMo
KSk7CisgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVXb3JrZXJz
KFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgcHJvY2Vzc1Bvb2wt
PnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOwogICAgICAgICAg
ICAgaWYgKHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSkgewog
ICAgICAgICAgICAgICAgIHByb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5yZW1vdmVQcm9j
ZXNzKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBXZWJQcm9jZXNzQ2FjaGU6OlNob3VsZFNo
dXREb3duUHJvY2Vzczo6Tm8pOwogICAgICAgICAgICAgICAgIEFTU0VSVCghc2VydmljZVdvcmtl
clByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKTsKQEAgLTU2NCw0MiArNTY0LDkyIEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBwcm9jZXNzLnB0cigpOwotICAg
ICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlU2VydmljZVdvcmtlcnMo
cHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2aWNlV29y
a2VycygpKTsKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVdv
cmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBwcm9jZXNz
UG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CiAKICAg
ICAgICAgICAgIGlmIChzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hl
KCkpIHsKICAgICAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hlKCkucmVt
b3ZlUHJvY2Vzcygqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0NhY2hlOjpT
aG91bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIXNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSk7CiAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhTZXJ2aWNl
V29ya2VyLCAiZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
IHJldXNpbmcgYW4gZXhpc3Rpbmcgd2ViIHByb2Nlc3MgKHByb2Nlc3M9JXAsIFBJRD0lZCkiLCBz
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9j
ZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9H
X1NUQVRJQyhTZXJ2aWNlV29ya2VyLCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyByZXVzaW5nIGFuIGV4aXN0aW5nIHdlYiBwcm9jZXNzIChw
cm9jZXNzPSVwLCBQSUQ9JWQpIiwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmICghc2VydmljZVdvcmtlclByb2Nlc3NQcm94
eSkgewotICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3Jl
YXRlRm9yU2VydmljZVdvcmtlcnMoKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiAgeyBy
ZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIGF1dG8gbmV3
UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdlYlByb2Nl
c3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgKnByb2Nlc3NQb29sLCBSZWdpc3Ry
YWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CiAg
ICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBuZXdQcm9jZXNzUHJveHkucHRyKCk7
CiAKLSAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElDKFNlcnZpY2VXb3Jr
ZXIsICJlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgY3Jl
YXRpbmcgYSBuZXcgc2VydmljZSB3b3JrZXIgcHJvY2VzcyAocHJvY2VzPSVwLCBQSUQ9JWQpIiwg
c2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NU
QVRJQyhTZXJ2aWNlV29ya2VyLCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2VzcyBjcmVhdGluZyBhIG5ldyBzZXJ2aWNlIHdvcmtlciBwcm9jZXNz
IChwcm9jZXM9JXAsIFBJRD0lZCkiLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBzZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKIAogICAgICAgICBwcm9j
ZXNzUG9vbC0+aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MobmV3UHJvY2Vzc1Byb3h5LCB3ZWJzaXRl
RGF0YVN0b3JlKTsKICAgICAgICAgcHJvY2Vzc1Bvb2wtPm1fcHJvY2Vzc2VzLmFwcGVuZChXVEZN
b3ZlKG5ld1Byb2Nlc3NQcm94eSkpOwogICAgIH0KIAotICAgIEFTU0VSVCghc2VydmljZVdvcmtl
clByb2Nlc3NlcygpLmNvbnRhaW5zKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KSk7Ci0gICAg
c2VydmljZVdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSk7
CisgICAgd29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KTsK
IAotICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZpY2VXb3JrZXJD
b250ZXh0KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQ
b29sLT5tX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1f
ZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJsZURvbWFp
biwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7Ci0gICAgaWYgKCFwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyVXNlckFnZW50LmlzTnVs
bCgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRTZXJ2aWNlV29ya2Vy
VXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQpOworICAgIHNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KHBy
b2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJl
ZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZl
cmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRl
bnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmICghcHJvY2Vzc1Bv
b2wtPm1fd29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQorICAgICAgICBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5LT5zZXRXb3JrZXJVc2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFn
ZW50KTsKIH0KKyNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVGcm9tU2Vydmlj
ZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCit2b2lkIFdlYlByb2Nl
c3NQb29sOjpyZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vz
cykKIHsKLSAgICBBU1NFUlQoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmNvbnRhaW5zKHByb2Nl
c3MpKTsKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkucmVtb3ZlKHByb2Nlc3MpOworICAg
IEFTU0VSVCh3b3JrZXJQcm9jZXNzZXMoKS5jb250YWlucyhwcm9jZXNzKSk7CisgICAgd29ya2Vy
UHJvY2Vzc2VzKCkucmVtb3ZlKHByb2Nlc3MpOworfQorCit2b2lkIFdlYlByb2Nlc3NQb29sOjpl
c3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4
aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Npb25JRCk7CisgICAgaWYgKCF3ZWJzaXRl
RGF0YVN0b3JlKQorICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOworICAgIGlmICghcHJvY2Vzc1Bvb2xzKCkuc2l6ZSgp
KQorICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPFdlYlByb2Nlc3NQb29sPj4gc2hh
cmVkV29ya2VyUHJvY2Vzc1Bvb2woV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6OlByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCkuZ2V0KCkpKTsKKworICAgIC8vIEFyYml0cmFyaWx5
IGNob29zZSB0aGUgZmlyc3QgcHJvY2VzcyBwb29sIHRvIGhvc3QgdGhlIHNoYXJlZCB3b3JrZXIg
cHJvY2Vzcy4KKyAgICBhdXRvKiBwcm9jZXNzUG9vbCA9IHByb2Nlc3NQb29scygpWzBdOworICAg
IEFTU0VSVChwcm9jZXNzUG9vbCk7CisKKyAgICBXZWJQcm9jZXNzUHJveHkqIHNoYXJlZFdvcmtl
clByb2Nlc3NQcm94eSB7IG51bGxwdHIgfTsKKworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHBy
b2Nlc3NQb29sLT5tX3Byb2Nlc3NlcykgeworICAgICAgICBpZiAocHJvY2Vzcy5wdHIoKSA9PSBw
cm9jZXNzUG9vbC0+bV9wcmV3YXJtZWRQcm9jZXNzLmdldCgpIHx8IHByb2Nlc3MtPmlzRHVtbXlQ
cm9jZXNzUHJveHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoJnByb2Nl
c3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIGlmICghcHJvY2Vzcy0+aXNNYXRjaGluZ1JlZ2lzdHJhYmxlRG9t
YWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
IHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSA9IHByb2Nlc3MucHRyKCk7CisgICAgICAgIHNoYXJl
ZFdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6Oldvcmtl
clR5cGU6OlNoYXJlZFdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXJGb3JXb3JrZXJzKCkpOworCisgICAgICAgIGlmIChzaGFyZWRXb3JrZXJQcm9jZXNz
UHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSkgeworICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPndl
YlByb2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nlc3MoKnNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSwg
V2ViUHJvY2Vzc0NhY2hlOjpTaG91bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKKyAgICAgICAgICAg
IEFTU0VSVCghc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpOwor
ICAgICAgICB9CisKKyAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElDKFNo
YXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyByZXVzaW5nIGFuIGV4aXN0aW5nIHdlYiBwcm9jZXNzIChwcm9jZXNzPSVwLCBQ
SUQ9JWQpIiwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LCBzaGFyZWRXb3JrZXJQcm9jZXNzUHJv
eHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBp
ZiAoIXNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSkgeworICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQ
cm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yV29ya2VycyhXZWJQcm9jZXNzUHJveHk6
OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFp
biAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIHNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eSA9IG5ld1Byb2Nlc3NQcm94eS5wdHIoKTsKKworICAgICAg
ICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoU2hhcmVkV29ya2VyLCAiZXN0YWJs
aXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIGNyZWF0aW5n
IGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nlc3M9JXAsIFBJRD0lZCkiLCBzaGFy
ZWRXb3JrZXJQcm9jZXNzUHJveHksIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSk7CisKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmluaXRpYWxpemVOZXdXZWJQcm9j
ZXNzKG5ld1Byb2Nlc3NQcm94eSwgd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIHByb2Nlc3NQ
b29sLT5tX3Byb2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdQcm9jZXNzUHJveHkpKTsKKyAgICB9
CisKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSk7
CisKKyAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNoYXJlZFdvcmtlckNv
bnRleHQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNzUG9vbC0+bV93
b3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVsdFBhZ2VHcm91
cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJsZURvbWFpbiwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFnZW50
LmlzTnVsbCgpKQorICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPnNldFdvcmtlclVz
ZXJBZ2VudChwcm9jZXNzUG9vbC0+bV93b3JrZXJVc2VyQWdlbnQpOwogfQotI2VuZGlmCiAKIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKQog
ewpAQCAtMTAwMywxMCArMTA1Myw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQ
cm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIAogICAgIG1fYmFja0ZvcndhcmRDYWNo
ZS0+cmVtb3ZlRW50cmllc0ZvclByb2Nlc3MocHJvY2Vzcyk7CiAKLSNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi0gICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKLSAg
ICAgICAgcmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7Ci0jZW5kaWYK
KyAgICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdXb3JrZXJzKCkpCisgICAgICAgIHJlbW92ZUZyb21X
b3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7CiAKICAgICBzdGF0aWNfY2FzdDxXZWJDb250ZXh0U3Vw
cGxlbWVudCo+KHN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpLT5wcm9j
ZXNzRGlkQ2xvc2UoJnByb2Nlc3MpOwogCkBAIC0xMDY3LDEyICsxMTE1LDEyIEBAIFJlZjxXZWJQ
cm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4o
V2Vic2l0ZURhdGFTdG9yCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1Vc2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyIFdlYlByb2Nlc3NQb29sOjp1c2VyQ29udGVudENvbnRy
b2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKQorVXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllciBXZWJQcm9jZXNzUG9vbDo6dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
ckZvcldvcmtlcnMoKQogewotICAgIGlmICghbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2
aWNlV29ya2VyKQotICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclNlcnZpY2VXb3Jr
ZXIgPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKCk7CisgICAgaWYgKCFt
X3VzZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtlcnMpCisgICAgICAgIG1fdXNlckNvbnRlbnRD
b250cm9sbGVyRm9yV29ya2VycyA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpjcmVh
dGUoKTsKIAotICAgIHJldHVybiBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclNlcnZpY2VXb3Jr
ZXItPmlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JX
b3JrZXJzLT5pZGVudGlmaWVyKCk7CiB9CiAjZW5kaWYKIApAQCAtMTExOSwxNSArMTE2NywxMyBA
QCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xp
ZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogCiAgICAgYXV0byBwYWdlID0gcHJvY2Vzcy0+Y3Jl
YXRlV2ViUGFnZShwYWdlQ2xpZW50LCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAKLSNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJQcmVmZXJl
bmNlcykgewotICAgICAgICBtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA9IHBhZ2UtPnByZWZl
cmVuY2VzU3RvcmUoKTsKLSAgICAgICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6
IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSkKLSAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzLnVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKCptX3NlcnZpY2VXb3JrZXJQ
cmVmZXJlbmNlcyk7CisgICAgaWYgKCFtX3dvcmtlclByZWZlcmVuY2VzKSB7CisgICAgICAgIG1f
d29ya2VyUHJlZmVyZW5jZXMgPSBwYWdlLT5wcmVmZXJlbmNlc1N0b3JlKCk7CisgICAgICAgIGZv
ciAoYXV0byYgd29ya2VyUHJvY2VzcyA6IHdvcmtlclByb2Nlc3NlcygpKQorICAgICAgICAgICAg
d29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKCptX3dvcmtlclByZWZl
cmVuY2VzKTsKICAgICB9CiAgICAgaWYgKHVzZXJDb250ZW50Q29udHJvbGxlcikKLSAgICAgICAg
bV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyID0gdXNlckNvbnRlbnRDb250
cm9sbGVyOwotI2VuZGlmCisgICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2Vy
cyA9IHVzZXJDb250ZW50Q29udHJvbGxlcjsKIAogICAgIGJvb2wgZW5hYmxlUHJvY2Vzc1N3YXBP
bkNyb3NzU2l0ZU5hdmlnYXRpb24gPSBwYWdlLT5wcmVmZXJlbmNlcygpLnByb2Nlc3NTd2FwT25D
cm9zc1NpdGVOYXZpZ2F0aW9uRW5hYmxlZCgpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBA
IC0xMTUwLDE2ICsxMTk2LDE0IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjpj
cmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAgICAgcmV0dXJu
IHBhZ2U7CiB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3NQ
b29sOjp1cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50
KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmlu
ZyYgdXNlckFnZW50KQogewotICAgIGlmIChtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQgPT0gdXNl
ckFnZW50KQorICAgIGlmIChtX3dvcmtlclVzZXJBZ2VudCA9PSB1c2VyQWdlbnQpCiAgICAgICAg
IHJldHVybjsKLSAgICBtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQgPSB1c2VyQWdlbnQ7Ci0gICAg
Zm9yIChhdXRvJiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMo
KSkKLSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3Muc2V0U2VydmljZVdvcmtlclVzZXJBZ2Vu
dChtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQpOworICAgIG1fd29ya2VyVXNlckFnZW50ID0gdXNl
ckFnZW50OworICAgIGZvciAoYXV0byYgd29ya2VyUHJvY2VzcyA6IHdvcmtlclByb2Nlc3Nlcygp
KQorICAgICAgICB3b3JrZXJQcm9jZXNzLnNldFdvcmtlclVzZXJBZ2VudChtX3dvcmtlclVzZXJB
Z2VudCk7CiB9Ci0jZW5kaWYKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUJlZ2luVXNpbmdX
ZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0
YVN0b3JlJiBkYXRhU3RvcmUpCiB7CkBAIC0xNTM4LDggKzE1ODIsMTMgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6dGVybWluYXRlU2VydmljZVdvcmtlcnMoKQogewogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07Ci0gICAgd2hpbGUgKHNl
cnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb21wdXRlU2l6ZSgpKQotICAgICAgICBzZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzKCkuYmVnaW4oKS0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgVmVj
dG9yPFJlZjxXZWJQcm9jZXNzUHJveHk+PiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOworICAgIHdv
cmtlclByb2Nlc3NlcygpLmZvckVhY2goWyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICAgICAgaWYg
KHByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKKyAgICAgICAgICAgIHNlcnZpY2VX
b3JrZXJQcm9jZXNzZXMuYXBwZW5kKHByb2Nlc3MpOworICAgIH0pOworICAgIGZvciAoYXV0byYg
c2VydmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKQorICAgICAgICBz
ZXJ2aWNlV29ya2VyUHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3Jr
ZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgogfQogCkBAIC0xNzY3LDEzICsxODE2LDEx
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcG9ydFdlYkNvbnRlbnRDUFVUaW1lKFNlY29uZHMg
Y3B1VGltZSwgdWludDY0X3QgYWN0aXZpdHlTCiAjZW5kaWYKIH0KIAotI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKLVdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIFdlYlByb2Nlc3NQb29s
OjpzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkKK1dlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4m
IFdlYlByb2Nlc3NQb29sOjp3b3JrZXJQcm9jZXNzZXMoKQogewogICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+PiBwcm9jZXNzZXM7CiAgICAgcmV0
dXJuIHByb2Nlc3NlczsKIH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVQ
cm9jZXNzQXNzZXJ0aW9ucygpCiB7CkBAIC0xNzg1LDIwICsxODMyLDI1IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkKICAgICBpZiAoYXV0byogZ3B1UHJv
Y2VzcyA9IEdQVVByb2Nlc3NQcm94eTo6c2luZ2xldG9uSWZDcmVhdGVkKCkpCiAgICAgICAgIGdw
dVByb2Nlc3MtPnVwZGF0ZVByb2Nlc3NBc3NlcnRpb24oKTsKICNlbmRpZgotI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKKwogICAgIC8vIENoZWNrIG9uIG5leHQgcnVuIGxvb3Agc2luY2UgdGhl
IHdlYiBwcm9jZXNzIHByb3h5IHRva2VucyBhcmUgcHJvYmFibHkgYmVpbmcgdXBkYXRlZC4KICAg
ICBjYWxsT25NYWluUnVuTG9vcChbXSB7Ci0gICAgICAgIGZvciAoYXV0byYgc2VydmljZVdvcmtl
clByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkpCi0gICAgICAgICAgICBzZXJ2aWNl
V29ya2VyUHJvY2Vzcy51cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOwotICAg
IH0pOworICAgICAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFtdKGF1dG8mIHdvcmtlclBy
b2Nlc3MpIHsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgICAgICAgICBpZiAod29y
a2VyUHJvY2Vzcy5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQorICAgICAgICAgICAgICAgIHdv
cmtlclByb2Nlc3MudXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXZWJQcm9jZXNzUHJveHk6
OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogI2VuZGlmCisgICAgICAgICAgICBpZiAod29y
a2VyUHJvY2Vzcy5pc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkpCisgICAgICAgICAgICAgICAgd29y
a2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdlYlByb2Nlc3NQcm94eTo6
V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIGJv
b2wgV2ViUHJvY2Vzc1Bvb2w6OmlzU2VydmljZVdvcmtlclBhZ2VJRChXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAg
Ly8gRklYTUU6IFRoaXMgaXMgaW5lZmZpY2llbnQuCi0gICAgcmV0dXJuIFdURjo6YW55T2Yoc2Vy
dmljZVdvcmtlclByb2Nlc3NlcygpLCBbcGFnZUlEXShhdXRvJiBwcm9jZXNzKSB7CisgICAgcmV0
dXJuIFdURjo6YW55T2Yod29ya2VyUHJvY2Vzc2VzKCksIFtwYWdlSURdKGF1dG8mIHByb2Nlc3Mp
IHsKICAgICAgICAgcmV0dXJuIHByb2Nlc3MuaGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShwYWdl
SUQpOwogICAgIH0pOwogI2VuZGlmCkBAIC0yMTI0LDE2ICsyMTc2LDI2IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnNldFVzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoYm9vbCB1c2VTZXBh
cmF0ZVNlcnZpY2VXCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCitzaXplX3QgV2Vi
UHJvY2Vzc1Bvb2w6OnNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25zdAoreworICAgIHVu
c2lnbmVkIGNvdW50ID0gMDsKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFsmXShhdXRv
JiBwcm9jZXNzKSB7CisgICAgICAgIGlmIChwcm9jZXNzLmlzUnVubmluZ1NlcnZpY2VXb3JrZXJz
KCkpCisgICAgICAgICAgICArK2NvdW50OworICAgIH0pOworICAgIHJldHVybiBjb3VudDsKK30K
KwogYm9vbCBXZWJQcm9jZXNzUG9vbDo6aGFzU2VydmljZVdvcmtlckZvcmVncm91bmRBY3Rpdml0
eUZvclRlc3RpbmcoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6OmFueU9mKHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2VzcykgeworICAgIHJldHVybiBXVEY6OmFueU9m
KHdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiBw
cm9jZXNzLmhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCk7CiAg
ICAgfSk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6Omhhc1NlcnZpY2VXb3JrZXJCYWNrZ3Jv
dW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjphbnlPZihz
ZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICByZXR1cm4g
V1RGOjphbnlPZih3b3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2VzcykgewogICAgICAg
ICByZXR1cm4gcHJvY2Vzcy5oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9yVGVz
dGluZygpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmgKaW5kZXggNDMyYzY1ZWU5OTQ5Li5lNzBiNmY0MjlmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMzc0LDE3ICszNzQsMjAgQEAgcHVibGljOgogICAg
IHZvaWQgbmV0d29ya1Byb2Nlc3NEaWRUZXJtaW5hdGUoTmV0d29ya1Byb2Nlc3NQcm94eSYsIE5l
dHdvcmtQcm9jZXNzUHJveHk6OlRlcm1pbmF0aW9uUmVhc29uKTsKIAogICAgIGJvb2wgaXNTZXJ2
aWNlV29ya2VyUGFnZUlEKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpIGNvbnN0OworICAgIHZvaWQg
cmVtb3ZlRnJvbVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmKTsKKwogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKLSAgICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpT
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCByZW1vdmVG
cm9tU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmKTsKLSAgICBzaXplX3Qg
c2VydmljZVdvcmtlclByb3hpZXNDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMoKS5jb21wdXRlU2l6ZSgpOyB9Ci0gICAgdm9pZCB1cGRhdGVTZXJ2aWNlV29ya2Vy
VXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKLSAgICBVc2VyQ29udGVudENvbnRy
b2xsZXJJZGVudGlmaWVyIHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2aWNl
V29ya2VycygpOworICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4g
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKKyAgICBzaXplX3Qgc2VydmljZVdvcmtlclByb3hpZXNDb3VudCgp
IGNvbnN0OworICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgdXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKTsKICAgICBib29sIGhhc1NlcnZpY2VXb3Jr
ZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNTZXJ2
aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0OwogI2VuZGlmCiAg
ICAgdm9pZCBzZXJ2aWNlV29ya2VyUHJvY2Vzc0NyYXNoZWQoV2ViUHJvY2Vzc1Byb3h5Jik7CiAK
KyAgICB2b2lkIHVwZGF0ZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCk7
CisgICAgc3RhdGljIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkgY29uc3Q7CiAjZW5kaWYKQEAg
LTYxOCwxMyArNjIxLDExIEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklE
LCBXZWFrUHRyPFdlYlByb2Nlc3NQcm94eT4+IG1fZHVtbXlQcm9jZXNzUHJveGllczsgLy8gTGln
aHR3ZWlnaHQgV2ViUHJvY2Vzc1Byb3h5IG9iamVjdHMgd2l0aG91dCBiYWNraW5nIHByb2Nlc3Mu
CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgc3RhdGljIFdlYWtIYXNoU2V0PFdl
YlByb2Nlc3NQcm94eT4mIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKTsKLSAgICBib29sIG1fd2Fp
dGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNlIH07Ci0gICAgU3Ry
aW5nIG1fc2VydmljZVdvcmtlclVzZXJBZ2VudDsKLSAgICBzdGQ6Om9wdGlvbmFsPFdlYlByZWZl
cmVuY2VzU3RvcmU+IG1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzOwotICAgIFJlZlB0cjxXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2
aWNlV29ya2VyOwotI2VuZGlmCisgICAgc3RhdGljIFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94
eT4mIHdvcmtlclByb2Nlc3NlcygpOworCisgICAgc3RkOjpvcHRpb25hbDxXZWJQcmVmZXJlbmNl
c1N0b3JlPiBtX3dvcmtlclByZWZlcmVuY2VzOworICAgIFJlZlB0cjxXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eT4gbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JXb3JrZXJzOworICAgIFN0
cmluZyBtX3dvcmtlclVzZXJBZ2VudDsKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAgICBS
ZWZQdHI8R1BVUHJvY2Vzc1Byb3h5PiBtX2dwdVByb2Nlc3M7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzYmJlMDNhN2RhZTIuLjE4YWYzNDZmZGIw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC01
OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0
YUZldGNoT3B0aW9uLmgiCkBAIC0xODIsMTEgKzE4MywxMSBAQCBSZWY8V2ViUHJvY2Vzc1Byb3h5
PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdl
YnNpdAogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotUmVmPFdlYlByb2Nlc3NQcm94
eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JTZXJ2aWNlV29ya2VycyhXZWJQcm9jZXNzUG9v
bCYgcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFdl
YnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCitSZWY8V2ViUHJvY2Vzc1Byb3h5PiBX
ZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvcldvcmtlcnMoV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBX
ZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFi
bGVEb21haW4sIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCiB7CiAgICAgYXV0
byBwcm94eSA9IGFkb3B0UmVmKCpuZXcgV2ViUHJvY2Vzc1Byb3h5KHByb2Nlc3NQb29sLCAmd2Vi
c2l0ZURhdGFTdG9yZSwgSXNQcmV3YXJtZWQ6Ok5vLCBDcm9zc09yaWdpbk1vZGU6OlNoYXJlZCwg
Q2FwdGl2ZVBvcnRhbE1vZGU6OkRpc2FibGVkKSk7CiAgICAgcHJveHktPm1fcmVnaXN0cmFibGVE
b21haW4gPSBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKLSAgICBwcm94eS0+ZW5hYmxlU2Vy
dmljZVdvcmtlcnMocHJvY2Vzc1Bvb2wudXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZv
clNlcnZpY2VXb3JrZXJzKCkpOworICAgIHByb3h5LT5lbmFibGVXb3JrZXJzKHdvcmtlclR5cGUs
IHByb2Nlc3NQb29sLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkp
OwogICAgIHByb3h5LT5jb25uZWN0KCk7CiAgICAgcmV0dXJuIHByb3h5OwogfQpAQCAtOTk1LDEw
ICs5OTYsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZEJlY29tZVVucmVzcG9uc2l2ZSgp
CiAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGlzUmVzcG9uc2l2ZUNhbGxiYWNrcykKICAgICAg
ICAgY2FsbGJhY2soaXNXZWJQcm9jZXNzUmVzcG9uc2l2ZSk7CiAKLSAgICAvLyBJZiB0aGUgd2Vi
IHByb2Nlc3MgYmVjb21lcyB1bnJlc3BvbnNpdmUgYW5kIG9ubHkgcnVucyBzZXJ2aWNlIHdvcmtl
cnMsIGtpbGwgaXQgb3Vyc2VsdmVzIHNpbmNlIHRoZXJlIGFyZSBubyBuYXRpdmUgY2xpZW50cyB0
byBkbyBpdC4KLSAgICBpZiAoaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSAmJiBtX3BhZ2VNYXAu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQ
ZXJmb3JtYW5jZUxvZ2dpbmcsICJkaWRCZWNvbWVVbnJlc3BvbnNpdmU6IFRlcm1pbmF0aW5nIHNl
cnZpY2Ugd29ya2VyLW9ubHkgd2ViIHByb2Nlc3MgYmVjYXVzZSBpdCBpcyB1bnJlc3BvbnNpdmUi
KTsKLSAgICAgICAgZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgLy8gSWYgdGhlIHdlYiBw
cm9jZXNzIGJlY29tZXMgdW5yZXNwb25zaXZlIGFuZCBvbmx5IHJ1bnMgc2VydmljZS9zaGFyZWQg
d29ya2Vycywga2lsbCBpdCBvdXJzZWx2ZXMgc2luY2UgdGhlcmUgYXJlIG5vIG5hdGl2ZSBjbGll
bnRzIHRvIGRvIGl0LgorICAgIGlmIChpc1J1bm5pbmdXb3JrZXJzKCkgJiYgbV9wYWdlTWFwLmlz
RW1wdHkoKSkgeworICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUGVy
Zm9ybWFuY2VMb2dnaW5nLCAiZGlkQmVjb21lVW5yZXNwb25zaXZlOiBUZXJtaW5hdGluZyB3b3Jr
ZXItb25seSB3ZWIgcHJvY2VzcyBiZWNhdXNlIGl0IGlzIHVucmVzcG9uc2l2ZSIpOworICAgICAg
ICBkaXNhYmxlV29ya2Vycyh7IFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIFdvcmtlclR5cGU6
OlNoYXJlZFdvcmtlciB9KTsKICAgICAgICAgdGVybWluYXRlKCk7CiAgICAgfQogfQpAQCAtMTY5
NCw4ICsxNjk1LDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkRm9yTWFpbkZyYW1lKGNvbnN0IFVSTCYgdXJsKQogICAgIGF1dG8gcmVnaXN0cmFibGVEb21h
aW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9OwogICAgIGlmIChtX3JlZ2lz
dHJhYmxlRG9tYWluICYmICptX3JlZ2lzdHJhYmxlRG9tYWluICE9IHJlZ2lzdHJhYmxlRG9tYWlu
KSB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgICAgICBkaXNhYmxlU2VydmljZVdv
cmtlcnMoKTsKKyAgICAgICAgZGlzYWJsZVdvcmtlcnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtl
cik7CiAjZW5kaWYKKwogICAgICAgICAvLyBOdWxsIG91dCByZWdpc3RyYWJsZSBkb21haW4gc2lu
Y2UgdGhpcyBwcm9jZXNzIGhhcyBub3cgYmVlbiB1c2VkIGZvciBzZXZlcmFsIGRvbWFpbnMuCiAg
ICAgICAgIG1fcmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7
IH07CiAgICAgICAgIHJldHVybjsKQEAgLTE4NjEsNjMgKzE4NjMsODUgQEAgdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OmVuZEJhY2tncm91bmRBY3Rpdml0eUZvckZ1bGxzY3JlZW5JbnB1dCgpCiAKICNl
bmRpZgogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
IHN0b3JlLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6
b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQ
YWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQotewotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZXN0YWJs
aXNoU2VydmljZVdvcmtlckNvbnRleHQ6IFN0YXJ0ZWQiKTsKLSAgICBtYXJrUHJvY2Vzc0FzUmVj
ZW50bHlVc2VkKCk7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyBwcm9j
ZXNzUG9vbCgpLmRlZmF1bHRQYWdlR3JvdXAoKS5wYWdlR3JvdXBJRCgpLCBtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VQcm94eUlELCBtX3NlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VJRCwgc3RvcmUsIHJlZ2lzdHJhYmxlRG9tYWlu
LCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9u
LT5pbml0aWFsaXphdGlvbkRhdGEgfSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7Ci0gICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgIFdFQlBST0NFU1NQUk9Y
WV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQ6IEZp
bmlzaGVkIik7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgfSwgMCk7Ci19Ci0K
LXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0
cmluZyYgdXNlckFnZW50KQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldFdvcmtlclVzZXJBZ2Vu
dChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKIHsKLSAgICBBU1NFUlQobV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb24pOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2VyQWdlbnQgfSwgMCk7CisjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQorICAgIGlmIChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKKyAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlNldFVzZXJBZ2Vu
dCB7IHVzZXJBZ2VudCB9LCAwKTsKKyNlbmRpZgorICAgIGlmIChtX3NoYXJlZFdvcmtlckluZm9y
bWF0aW9uKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OlNldFVzZXJBZ2VudCB7IHVzZXJBZ2VudCB9LCAwKTsKIH0KIAotdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNv
bnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnVw
ZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3Rv
cmUpCiB7Ci0gICAgQVNTRVJUKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5j
ZXNTdG9yZSB7IHN0b3JlIH0sIDApOworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBp
ZiAobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpVcGRhdGVQcmVmZXJlbmNlc1N0b3JlIHsgc3Rv
cmUgfSwgMCk7CisjZW5kaWYKKyAgICBpZiAobV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbikKKyAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpVcGRhdGVQcmVmZXJlbmNlc1N0b3JlIHsgc3RvcmUgfSwgMCk7CiB9CiAKLXZvaWQgV2Vi
UHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpCisvLyBG
SVhNRTogQ2xpZW50cyBkbyBub3QgcHJvcGVybHkgZ2V0IHBvcHVsYXRlZCBpbiBtX3NoYXJlZFdv
cmtlckluZm9ybWF0aW9uLgordm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByb2Nl
c3NBc3NlcnRpb24oV29ya2VyVHlwZSB3b3JrZXJUeXBlKQogewotICAgIFdFQlBST0NFU1NQUk9Y
WV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9j
ZXNzQXNzZXJ0aW9uOiIpOwotICAgIEFTU0VSVChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbik7
Ci0gICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKKyAgICBhdXRvJiB3b3JrZXJJ
bmZvcm1hdGlvbiA9IHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8gbV9z
aGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA6IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOworICAg
IEFTU0VSVCh3b3JrZXJJbmZvcm1hdGlvbik7CisgICAgaWYgKCF3b3JrZXJJbmZvcm1hdGlvbikK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBzaG91bGRUYWtlRm9yZWdyb3VuZEFjdGl2aXR5
ID0gV1RGOjphbnlPZihtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2Vz
LCBbJl0oYXV0byYgcHJvY2VzcykgeworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQ
cm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb246IHdvcmtlclR5
cGU9JXtwdWJsaWN9cyIsIHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8g
InNoYXJlZCIgOiAic2VydmljZSIpOworCisgICAgYm9vbCBzaG91bGRUYWtlRm9yZWdyb3VuZEFj
dGl2aXR5ID0gV1RGOjphbnlPZih3b3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2VzLCBb
Jl0oYXV0byYgcHJvY2VzcykgewogICAgICAgICByZXR1cm4gJnByb2Nlc3MgIT0gdGhpcyAmJiAh
IXByb2Nlc3MubV9mb3JlZ3JvdW5kVG9rZW47CiAgICAgfSk7CiAgICAgaWYgKHNob3VsZFRha2VG
b3JlZ3JvdW5kQWN0aXZpdHkpIHsKLSAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1Zh
bGlkRm9yZWdyb3VuZEFjdGl2aXR5KG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0
eSkpCi0gICAgICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBt
X3Rocm90dGxlci5mb3JlZ3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2VyIGZvciBmb3JlZ3Jv
dW5kIHZpZXcocykiX3MpOworICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRG
b3JlZ3JvdW5kQWN0aXZpdHkod29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKKyAgICAgICAg
ICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmZvcmVncm91bmRB
Y3Rpdml0eSgiV29ya2VyIGZvciBmb3JlZ3JvdW5kIHZpZXcocykiX3MpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgYm9vbCBzaG91bGRUYWtlQmFja2dyb3VuZEFjdGl2aXR5ID0gV1RG
OjphbnlPZihtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2VzLCBbJl0o
YXV0byYgcHJvY2VzcykgeworICAgIGJvb2wgc2hvdWxkVGFrZUJhY2tncm91bmRBY3Rpdml0eSA9
IFdURjo6YW55T2Yod29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3NlcywgWyZdKGF1dG8m
IHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuICZwcm9jZXNzICE9IHRoaXMgJiYgISFwcm9jZXNz
Lm1fYmFja2dyb3VuZFRva2VuOwogICAgIH0pOwogICAgIGlmIChzaG91bGRUYWtlQmFja2dyb3Vu
ZEFjdGl2aXR5KSB7Ci0gICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEJhY2tn
cm91bmRBY3Rpdml0eShtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQotICAg
ICAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRs
ZXIuYmFja2dyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3IgYmFja2dyb3VuZCB2aWV3
KHMpIl9zKTsKKyAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkQmFja2dyb3Vu
ZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCisgICAgICAgICAgICB3b3Jr
ZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHko
IldvcmtlciBmb3IgYmFja2dyb3VuZCB2aWV3KHMpIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmIChtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZykgewor
ICAgIGlmICh3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIgJiYgbV9oYXNT
ZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcpIHsKICAgICAgICAgV0VCUFJPQ0VTU1BS
T1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiU2VydmljZSBXb3JrZXIgZm9yIGJh
Y2tncm91bmQgcHJvY2Vzc2luZyIpOwotICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6Omlz
VmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2
aXR5KSkKLSAgICAgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9
IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tn
cm91bmQgcHJvY2Vzc2luZyJfcyk7CisgICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNW
YWxpZEJhY2tncm91bmRBY3Rpdml0eSh3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQorICAg
ICAgICAgICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuYmFja2dy
b3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3IgYmFja2dyb3VuZCBwcm9jZXNzaW5nIl9z
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uLT5hY3Rpdml0eSA9IG51bGxwdHI7CisgICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5
ID0gbnVsbHB0cjsKK30KKwordm9pZCBXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNoYXJlZFdv
cmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xP
RyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0OiBTdGFydGVkIik7
CisgICAgbWFya1Byb2Nlc3NBc1JlY2VudGx5VXNlZCgpOworICAgIHNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bvb2woKS5kZWZhdWx0UGFnZUdyb3VwKCku
cGFnZUdyb3VwSUQoKSwgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbi0+d29ya2VyUGFnZVByb3h5
SUQsIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24tPndvcmtlclBhZ2VJRCwgc3RvcmUsIHJlZ2lz
dHJhYmxlRG9tYWluLCBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uLT5pbml0aWFsaXphdGlvbkRh
dGEgfSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGlm
ICh3ZWFrVGhpcykKKyAgICAgICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTaGFy
ZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0OiBGaW5pc2hlZCIpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0sIDApOworfQorCisjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3Jr
ZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFdFQlBST0NF
U1NQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRl
eHQ6IFN0YXJ0ZWQiKTsKKyAgICBtYXJrUHJvY2Vzc0FzUmVjZW50bHlVc2VkKCk7CisgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hTZXJ2aWNlV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bvb2woKS5kZWZh
dWx0UGFnZUdyb3VwKCkucGFnZUdyb3VwSUQoKSwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24t
PndvcmtlclBhZ2VQcm94eUlELCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+d29ya2VyUGFn
ZUlELCBzdG9yZSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmll
ciwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmluaXRpYWxpemF0aW9uRGF0YSB9LCBbdGhp
cywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHdlYWtUaGlz
KQorICAgICAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJlc3Rh
Ymxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dDogRmluaXNoZWQiKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKKyAgICB9LCAwKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlZ2lz
dGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKQEAg
LTE5MjcsNyArMTk1MSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCiAKICAgICBXRUJQUk9D
RVNTUFJPWFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgInJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudFByb2Nlc3M6IGNsaWVudFByb2Nlc3M9JXAsIGNsaWVudFBJRD0lZCIsICZwcm94eSwg
cHJveHkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24tPmNsaWVudFByb2Nlc3Nlcy5hZGQocHJveHkpOwotICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3Jr
ZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVucmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb3h5KQpA
QCAtMTkzNyw3ICsxOTYxLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVucmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb3gKIAogICAgIFdFQlBS
T0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAidW5yZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnRQcm9jZXNzOiBjbGllbnRQcm9jZXNzPSVwLCBjbGllbnRQSUQ9JWQiLCAmcHJv
eHksIHByb3h5LnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgIG1fc2VydmljZVdvcmtlckluZm9y
bWF0aW9uLT5jbGllbnRQcm9jZXNzZXMucmVtb3ZlKHByb3h5KTsKLSAgICB1cGRhdGVTZXJ2aWNl
V29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOworICAgIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRp
b24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Byb3h5
OjpoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0CkBA
IC0xOTU3LDcgKzE5ODEsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c3RhcnRTZXJ2aWNlV29y
a2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoKQogCiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0Vf
TE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAic3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nl
c3NpbmciKTsKICAgICBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyA9IHRy
dWU7Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKKyAgICB1cGRh
dGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogfQog
CiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNz
aW5nKCkKQEAgLTE5NjcsMjMgKzE5OTEsMzkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuZFNl
cnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZygpCiAKICAgICBXRUJQUk9DRVNTUFJPWFlf
UkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJlbmRTZXJ2aWNlV29ya2VyQmFja2dyb3Vu
ZFByb2Nlc3NpbmciKTsKICAgICBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2lu
ZyA9IGZhbHNlOwotICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7Cisg
ICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2Vy
KTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKLXZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpkaXNhYmxlU2VydmljZVdvcmtlcnMoKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmRp
c2FibGVXb3JrZXJzKE9wdGlvblNldDxXb3JrZXJUeXBlPiB3b3JrZXJUeXBlKQogewotICAgIGlm
ICghbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAgQVNTRVJUKCF3b3JrZXJUeXBlLmlz
RW1wdHkoKSk7CisKKyAgICBib29sIGRpZENoYW5nZSA9IGZhbHNlOworICAgIGlmICh3b3JrZXJU
eXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpICYmIG1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uKSB7CisgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uID0geyB9
OworICAgICAgICBkaWRDaGFuZ2UgPSB0cnVlOworICAgIH0KKyAgICBpZiAod29ya2VyVHlwZS5j
b250YWlucyhXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpICYmIG1fc2hhcmVkV29ya2VySW5mb3Jt
YXRpb24pIHsKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA9IHsgfTsKKyAgICAg
ICAgZGlkQ2hhbmdlID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKCFkaWRDaGFuZ2UpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2Vy
LCAiZGlzYWJsZVNlcnZpY2VXb3JrZXJzOiIpOwotICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uID0geyB9OworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzLCAiZGlz
YWJsZVdvcmtlcnM6IERpc2FibGluZyB3b3JrZXJzIChTaGFyZWRXb3JrZXJzPSVkLCBTZXJ2aWNl
V29ya2Vycz0lZCkiLCB3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNoYXJlZFdvcmtl
ciksIHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikpOworCiAg
ICAgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKIAorICAgIGlmICghaXNS
dW5uaW5nV29ya2VycygpKQorICAgICAgICBwcm9jZXNzUG9vbCgpLnJlbW92ZUZyb21Xb3JrZXJQ
cm9jZXNzZXMoKnRoaXMpOworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHByb2Nl
c3NQb29sKCkucmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKnRoaXMpOwotICAgIHNl
bmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9zZSB7IH0sIDAp
OworICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIp
KQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
Q2xvc2UgeyB9LCAwKTsKICNlbmRpZgorICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtl
clR5cGU6OlNoYXJlZFdvcmtlcikpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q2xvc2UgeyB9LCAwKTsKIAogICAgIG1heWJl
U2h1dERvd24oKTsKIH0KQEAgLTIwMDQsMTEgKzIwNDQsMTMgQEAgc3RhdGljIFZlY3RvcjxzdGQ6
OnBhaXI8V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLCBVUkw+PiBjb250ZW50UnVsZUxp
c3RzRnIKIH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlU2VydmljZVdv
cmtlcnMoY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYgdXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllcikKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVXb3JrZXJz
KFdvcmtlclR5cGUgd29ya2VyVHlwZSwgY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
ZmllciYgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKIHsKLSAgICBBU1NFUlQoIW1f
c2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsKLSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9M
T0coU2VydmljZVdvcmtlciwgImVuYWJsZVNlcnZpY2VXb3JrZXJzOiIpOwotICAgIG1fc2Vydmlj
ZVdvcmtlckluZm9ybWF0aW9uID0gU2VydmljZVdvcmtlckluZm9ybWF0aW9uIHsKKyAgICBXRUJQ
Uk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgImVuYWJsZVdvcmtlcnM6IHdv
cmtlclR5cGU9JXUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4od29ya2VyVHlwZSkpOworICAgIGF1
dG8mIHdvcmtlckluZm9ybWF0aW9uID0gd29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRX
b3JrZXIgPyBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIDogbV9zZXJ2aWNlV29ya2VySW5mb3Jt
YXRpb247CisgICAgQVNTRVJUKCF3b3JrZXJJbmZvcm1hdGlvbik7CisKKyAgICB3b3JrZXJJbmZv
cm1hdGlvbiA9IFdvcmtlckluZm9ybWF0aW9uIHsKICAgICAgICAgV2ViUGFnZVByb3h5SWRlbnRp
Zmllcjo6Z2VuZXJhdGUoKSwKICAgICAgICAgUGFnZUlkZW50aWZpZXI6OmdlbmVyYXRlKCksCiAg
ICAgICAgIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgewpAQCAtMjAyMSw5ICsyMDYz
LDggQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVNlcnZpY2VXb3JrZXJzKGNvbnN0IFVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIKICAgICAgICAgeyB9CiAgICAgfTsKICAgICB1
cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwotI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOwotI2Vu
ZGlmCisKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKHdvcmtlclR5cGUpOwogfQog
CiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlU2xlZXBEaXNhYmxlcihTbGVlcERpc2Fi
bGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgYm9vbCBkaXNw
bGF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCBmNTE0
Yjk5MTZhZDQuLjE5MmQ1ZDJiNmY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmgKQEAgLTEzNiw5ICsxMzYsMTMgQEAgcHVibGljOgogCiAgICAgZW51bSBjbGFz
cyBTaG91bGRMYXVuY2hQcm9jZXNzIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBlbnVtIGNsYXNz
IENhcHRpdmVQb3J0YWxNb2RlIDogYm9vbCB7IERpc2FibGVkLCBFbmFibGVkIH07CisgICAgZW51
bSBjbGFzcyBXb3JrZXJUeXBlIDogdWludDMyX3QgeworICAgICAgICBTZXJ2aWNlV29ya2VyID0g
MSA8PCAwLAorICAgICAgICBTaGFyZWRXb3JrZXIgPSAxIDw8IDEKKyAgICB9OwogCiAgICAgc3Rh
dGljIFJlZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVE
YXRhU3RvcmUqLCBDYXB0aXZlUG9ydGFsTW9kZSwgSXNQcmV3YXJtZWQsIFdlYkNvcmU6OkNyb3Nz
T3JpZ2luTW9kZSA9IFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZTo6U2hhcmVkLCBTaG91bGRMYXVu
Y2hQcm9jZXNzID0gU2hvdWxkTGF1bmNoUHJvY2Vzczo6WWVzKTsKLSAgICBzdGF0aWMgUmVmPFdl
YlByb2Nlc3NQcm94eT4gY3JlYXRlRm9yU2VydmljZVdvcmtlcnMoV2ViUHJvY2Vzc1Bvb2wmLCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgc3Rh
dGljIFJlZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZUZvcldvcmtlcnMoV29ya2VyVHlwZSwgV2Vi
UHJvY2Vzc1Bvb2wmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBXZWJzaXRlRGF0YVN0
b3JlJik7CiAKICAgICB+V2ViUHJvY2Vzc1Byb3h5KCk7CiAKQEAgLTE2MSw4ICsxNjUsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRJc0luUHJvY2Vzc0NhY2hlKGJvb2wsIFdpbGxTaHV0RG93biA9
IFdpbGxTaHV0RG93bjo6Tm8pOwogICAgIGJvb2wgaXNJblByb2Nlc3NDYWNoZSgpIGNvbnN0IHsg
cmV0dXJuIG1faXNJblByb2Nlc3NDYWNoZTsgfQogCi0gICAgdm9pZCBlbmFibGVTZXJ2aWNlV29y
a2Vycyhjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJik7Ci0gICAgdm9pZCBk
aXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICB2b2lkIGVuYWJsZVdvcmtlcnMoV29ya2VyVHlw
ZSwgY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYpOworICAgIHZvaWQgZGlz
YWJsZVdvcmtlcnMoT3B0aW9uU2V0PFdvcmtlclR5cGU+KTsKIAogICAgIFdlYnNpdGVEYXRhU3Rv
cmUmIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IEFTU0VSVChtX3dlYnNpdGVEYXRhU3RvcmUp
OyByZXR1cm4gKm1fd2Vic2l0ZURhdGFTdG9yZTsgfQogICAgIHZvaWQgc2V0V2Vic2l0ZURhdGFT
dG9yZShXZWJzaXRlRGF0YVN0b3JlJik7CkBAIC0xOTQsNiArMTk4LDkgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpIGNvbnN0IHsgcmV0dXJuICEhbV9zZXJ2
aWNlV29ya2VySW5mb3JtYXRpb247IH0KICAgICBib29sIGlzU3RhbmRhbG9uZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSAmJiAh
cGFnZUNvdW50KCk7IH0KKyAgICBib29sIGlzUnVubmluZ1NoYXJlZFdvcmtlcnMoKSBjb25zdCB7
IHJldHVybiAhIW1fc2hhcmVkV29ya2VySW5mb3JtYXRpb247IH0KKyAgICBib29sIGlzU3RhbmRh
bG9uZVNoYXJlZFdvcmtlclByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBpc1J1bm5pbmdTaGFyZWRX
b3JrZXJzKCkgJiYgIXBhZ2VDb3VudCgpOyB9CisgICAgYm9vbCBpc1J1bm5pbmdXb3JrZXJzKCkg
Y29uc3QgeyByZXR1cm4gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiB8fCBtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbjsgfQogCiAgICAgYm9vbCBpc0R1bW15UHJvY2Vzc1Byb3h5KCkgY29uc3Q7
CiAKQEAgLTM1OSwxMiArMzY2LDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlQXVkaWJs
ZU1lZGlhQXNzZXJ0aW9ucygpOwogCisgICAgdm9pZCBzZXRXb3JrZXJVc2VyQWdlbnQoY29uc3Qg
U3RyaW5nJik7CisgICAgdm9pZCB1cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmKTsKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRl
eHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZVdv
cmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZSk7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQogICAgIHZvaWQgZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAg
IHZvaWQgc2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lk
IHVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2Vz
U3RvcmUmKTsKLSAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJQYWdlUHJveHkoV2ViUGFnZVByb3h5
SWRlbnRpZmllciBwYWdlUHJveHlJRCkgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24gJiYgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnNlcnZpY2VXb3JrZXJQYWdlUHJveHlJ
RCA9PSBwYWdlUHJveHlJRDsgfQotICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NB
c3NlcnRpb24oKTsKKyAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJQYWdlUHJveHkoV2ViUGFnZVBy
b3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCkgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VySW5mb3Jt
YXRpb24gJiYgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPndvcmtlclBhZ2VQcm94eUlEID09
IHBhZ2VQcm94eUlEOyB9CiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9j
ZXNzKFdlYlByb2Nlc3NQcm94eSYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYpOwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtl
ckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdDsKQEAgLTY0OCwxNCArNjU2LDE1
IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBSZWZQdHI8TG9nZ2VyPiBtX2xvZ2dlcjsKIAotICAg
IHN0cnVjdCBTZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gewotICAgICAgICBXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQYWdlUHJveHlJRDsKLSAgICAgICAgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgc2VydmljZVdvcmtlclBhZ2VJRDsKKyAgICBzdHJ1Y3QgV29ya2VySW5mb3Jt
YXRpb24geworICAgICAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdvcmtlclBhZ2VQcm94eUlE
OworICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3b3JrZXJQYWdlSUQ7CiAgICAgICAg
IFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRhOwogICAg
ICAgICBQcm9jZXNzVGhyb3R0bGVyOjpBY3Rpdml0eVZhcmlhbnQgYWN0aXZpdHk7CiAgICAgICAg
IFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4gY2xpZW50UHJvY2Vzc2VzOwogICAgIH07Ci0g
ICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySW5mb3JtYXRpb24+IG1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8V29ya2VySW5mb3JtYXRpb24+IG1fc2Vy
dmljZVdvcmtlckluZm9ybWF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8V29ya2VySW5mb3JtYXRp
b24+IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb247CiAgICAgYm9vbCBtX2hhc1NlcnZpY2VXb3Jr
ZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyB7IGZhbHNlIH07CiAKICAgICBIYXNoTWFwPFdlYkNvcmU6
OlNsZWVwRGlzYWJsZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U2xlZXBE
aXNhYmxlcj4+IG1fc2xlZXBEaXNhYmxlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiYjliZTJjMGZmMTUuLjdlMjZkODc1MjFkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC04ODEsNiArODgxLDcgQEAKIAkJNDYxNEYxMzIyNURFRDg3NTAwNzAwNkU3IC8qIEdQVVByb2Nl
c3NDb25uZWN0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDZBQzUzMjQyNURFRDgxRTAwM0I1N0VDIC8qIEdQVVByb2Nlc3NDb25u
ZWN0aW9uUGFyYW1ldGVycy5oICovOyB9OwogCQk0NjFDQ0NBNTIzMTQ4NUE3MDBCNjU5QjkgLyog
VUlSZW1vdGVPYmplY3RSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDYzMjM2ODUyMzE0ODMzRjAwQTQ4RkE3IC8qIFVJUmVtb3RlT2JqZWN0
UmVnaXN0cnkuaCAqLzsgfTsKIAkJNDYxQ0NDQTYyMzE0ODVBQTAwQjY1OUI5IC8qIFdlYlJlbW90
ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjMyMzY4MzIzMTQ4MUVGMDBBNDhGQTcgLyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0
cnkuaCAqLzsgfTsKKwkJNDYxRTFCRjIyNzlBMDExNjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDYxRTFCRUYyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICovOyB9OwogCQk0NjNGRDQ4MDFFQjk0NTk2
MDBBMjk4MkMgLyogV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0ZENDdGMUVCOTQ1ODQwMEEyOTgyQyAv
KiBXS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2M0ZENDgyMUVCOTRFQzAwMEEyOTgyQyAvKiBQcm9j
ZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2M0ZENDgxMUVCOTRFQUQwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWluYXRp
b25SZWFzb24uaCAqLzsgfTsKIAkJNDY1OUYyNUYyNzVGRjZCMjAwQkJCMzY5IC8qIENhcHRpdmVQ
b3J0YWxNb2RlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2NTlGMjVFMjc1RkY2QjIwMEJCQjM2OSAvKiBDYXB0aXZlUG9ydGFsTW9kZU9i
c2VydmVyLmggKi87IH07CkBAIC04OTAsNiArODkxLDggQEAKIAkJNDY3MUZGMUYyMzIxN0VGRjAw
MUI2NEM3IC8qIFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjcxRkYxRDIzMjE3RUZGMDAxQjY0QzcgLyogV2Vi
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCAqLzsgfTsKIAkJNDY3RTQzRTgyMjQzRkY3RDAwQjEzOTI0
IC8qIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdFNDNFNzIyNDNGRjZEMDBCMTM5MjQgLyogV2Vi
UHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaCAqLzsgfTsKIAkJNDY4MDlBN0MyM0Q5MjI1RTAw
QzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NjgwOUE3QTIzRDkyMjUzMDBDMjk3RDAgLyogV2ViQ29va2llQ2Fj
aGUuaCAqLzsgfTsKKwkJNDY5NDNERDAyNzYzRjgzQTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtl
clByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0Njk0M0RDRjI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaCAq
LzsgfTsKKwkJNDY5NDNERDEyNzYzRjgzRjAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2OTQzRENEMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uLmggKi87IH07CiAJCTQ2QTJCNjA5MUU1Njc2QTYwMEMzREVEQSAvKiBCYWNrZ3JvdW5k
UHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QTJCNjA3MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5k
UHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaCAqLzsgfTsKIAkJNDZCMDUyNDcyMjY2OEQ4NTAw
MjY1Qjk3IC8qIFdlYkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCMDUyNDQy
MjY2OEQyMzAwMjY1Qjk3IC8qIFdlYkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29u
dHJvbGxlci5oICovOyB9OwogCQk0NkJFQjZENzIyRkI5QkQ3MDAyNjk4NjcgLyogU3RvcmFnZUFy
ZWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkVC
NkQ1MjJGQjlCRDYwMDI2OTg2NyAvKiBTdG9yYWdlQXJlYS5oICovOyB9OwpAQCAtODk3LDEwICs5
MDAsMTMgQEAKIAkJNDZCRUI2REYyMkZCQjE2QjAwMjY5ODY3IC8qIFNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NkJFQjZERDIyRkJCMTZCMDAyNjk4NjcgLyogU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuaCAqLzsg
fTsKIAkJNDZCRUI2RTMyMkZCQjIxQTAwMjY5ODY3IC8qIFRyYW5zaWVudExvY2FsU3RvcmFnZU5h
bWVzcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDZCRUI2RTEyMkZCQjIxQTAwMjY5ODY3IC8qIFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZS5oICovOyB9OwogCQk0NkMzOTIyOTIzMTZFQzREMDA4RUVEOUIgLyogV2ViUGFnZVByb3h5SWRl
bnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDZDMzkyMjgyMzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCAqLzsg
fTsKKwkJNDZDOTE2QUEyNzk5RDBBMjAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDOTE2QTky
Nzk5RDA5RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5oICovOyB9OwogCQk0NkNF
M0IxMTIzRDhDODQ5MDAxNkE5NkEgLyogV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkNFM0IxMDIzRDhDODNE
MDAxNkE5NkEgLyogV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmggKi87IH07CisJCTQ2RDQ4RkNF
Mjc5OUQ3RTEwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkQ0
OEZDRDI3OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oICovOyB9OwogCQk0NkRGMDYzQzFGMzkwNUY4MDAxOTgwQkIgLyogTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyLmggKi87IH07CiAJCTQ2RUUyODQ5MjY5RTA0QUMwMERENDhBQiAvKiBXZWJCcm9h
ZGNhc3RDaGFubmVsUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2RUUyODQ4MjY5RTA0OUIwMERENDhBQiAvKiBXZWJCcm9hZGNhc3RDaGFu
bmVsUmVnaXN0cnkuaCAqLzsgfTsKIAkJNDZFRTI4NEQyNjlFMDUyNTAwREQ0OEFCIC8qIE5ldHdv
cmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUUyODRDMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggKi87IH07CisJCTQ2RUUzRThCMjc2M0ZEMkYwMDYwQzcw
RiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzODY2NzI3NjNGQUIxMDBDRjkxODIgLyog
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oICovOyB9OwogCQk0NkYzOEU4QzI0MTZF
NjczMDA1OTM3NUEgLyogUnVubmluZ0JvYXJkU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjM4RThCMjQxNkU2NkQwMDU5Mzc1QSAv
KiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oICovOyB9OwogCQk0NkY5QjI2MzIzNTI2RUYzMDA2
RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkY5QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2Vi
QmFja0ZvcndhcmRDYWNoZUVudHJ5LmggKi87IH07CiAJCTQ5MzEwMkJEMjY4M0YzRDAwMDJCQjg4
NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0OTMxMDJCQzI2ODNGM0E1MDAyQkI4ODUgLyogQXBwUHJpdmFjeVJlcG9y
dC5oICovOyB9OwpAQCAtMTI3NCw2ICsxMjgwLDcgQEAKIAkJNkJFOTY5QzExRTU0RDQ1MjAwOEI3
NDgzIC8qIGNvcmVQcmVkaWN0aW9uX21vZGVsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2QkU5NjlDMDFFNTRENDUyMDA4Qjc0ODMgLyogY29yZVByZWRp
Y3Rpb25fbW9kZWwgKi87IH07CiAJCTZCRTk2OUNCMUU1NEQ0Q0YwMDhCNzQ4MyAvKiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkU5NjlDOTFFNTRENENGMDA4Qjc0ODMgLyogUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5oICovOyB9OwogCQk2QkU5NjlDRDFFNTRF
MDU0MDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCRTk2OUNDMUU1NEUwNTQw
MDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5oICovOyB9OworCQk2
Q0FFQ0I2NjI3NDY1QUU0MDBBQjc4RDAgLyogVW5pZmllZFNvdXJjZTExNi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2Q0FFQ0I1RTI3NDY1QUUzMDBB
Qjc4RDAgLyogVW5pZmllZFNvdXJjZTExNi5jcHAgKi87IH07CiAJCTZFRTg0OUM4MTM2OEQ5Mzkw
MDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFRTg0OUM2MTM2OEQ5MkQwMDM4RDQ4MSAvKiBXS0lu
c3BlY3RvclByaXZhdGVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3MTE3MjVBOTIyOEQ1NjQzMDAwMTg1MTQgLyogV2Vic2l0ZUxlZ2FjeU92
ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcxMTcyNUE4MjI4RDU2M0EwMDAxODUxNCAvKiBXZWJzaXRlTGVn
YWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaFBvbGljeS5oICovOyB9OwogCQk3MTM0QTNEQTI2MDNC
OTI1MDA2MjRCRDMgLyogV0tNb2RlbEludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMzRBM0Q5MjYwM0I4
MEUwMDYyNEJEMyAvKiBXS01vZGVsSW50ZXJhY3Rpb25HZXN0dXJlUmVjb2duaXplci5oICovOyB9
OwpAQCAtMTM1MSw2ICsxMzU4LDcgQEAKIAkJN0M5RDE1MzcxODQ1ODREQTAwOUQzOTE4IC8qIFdL
QnJvd3NpbmdDb250ZXh0R3JvdXBJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0M5RDE1MzYxODQ1ODREQTAwOUQzOTE4IC8qIFdLQnJvd3Np
bmdDb250ZXh0R3JvdXBJbnRlcm5hbC5oICovOyB9OwogCQk3Q0EyNTRFQjE4Mjk5M0NFMDBGQzhB
NDEgLyogV0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NBMjU0RUExODI5OTNDRTAwRkM4QTQxIC8q
IFdLQnJvd3NpbmdDb250ZXh0UG9saWN5RGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Q0EzNzkzRTFBQzM3OEIzMDA3OURDMzcgLyog
X1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQTM3OTNEMUFDMzc4QjMwMDc5REMzNyAvKiBf
V0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdDQUVDQjY2Mjc0NjVBRTQwMEFCNzhEMCAv
KiBVbmlmaWVkU291cmNlMTE3LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDQUVDQjVFMjc0NjVBRTMwMEFCNzhEMCAvKiBVbmlmaWVkU291cmNlMTE3
LmNwcCAqLzsgfTsKIAkJN0NCMTAwRjExRkEzODU4QTAwMTcyOUVFIC8qIFdlYlByZWZlcmVuY2Vz
S2V5cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
Q0IxMDBFRTFGQTJENzRBMDAxNzI5RUUgLyogV2ViUHJlZmVyZW5jZXNLZXlzLmNwcCAqLzsgfTsK
IAkJN0NCMTAwRjIxRkEzODU4RTAwMTcyOUVFIC8qIFdlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDREU3M0Ez
MUY5REFCNjUwMDM5MDMxMiAvKiBXZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmggKi87IH07CiAJ
CTdDQjEwMEYzMUZBMzg1OEUwMDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNlc0tleXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQjEwMEVGMUZBMkQ3NEIw
MDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNlc0tleXMuaCAqLzsgfTsKQEAgLTQyMTgsNiArNDIyNiw5
IEBACiAJCTQ2MDg4OUZGMjYxRkE4QTkwMEUyNTAwRCAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
Q3JlYXRpb25QYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRDcmVhdGlvblBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYw
RjQ4OEQxRjk5NkY2QzAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERl
cml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VS
ZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTQ2MEY0
ODhFMUY5OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3Nh
Z2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CisJCTQ2MUUxQkVDMjc5QTAxMEUwMDZBRjUzQiAvKiBXZWJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYxRTFCRUYyNzlBMDEwRjAwNkFGNTNC
IC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYxRTFCRjAyNzlBMDEwRjAw
NkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
MjEwN0Q3MUYzOERCRDMwMERENzgxMCAvKiBQaW5nTG9hZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQaW5nTG9hZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2MzIzNjgzMjMxNDgxRUYwMEE0OEZBNyAvKiBXZWJSZW1vdGVPYmplY3RSZWdpc3Ry
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZW1vdGVPYmplY3RSZWdpc3RyeS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NjMyMzY4NDIzMTQ4MjVDMDBBNDhGQTcgLyogV2ViUmVtb3Rl
T2JqZWN0UmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUmVtb3RlT2JqZWN0UmVn
aXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI0NSw4ICs0MjU2LDE1
IEBACiAJCTQ2ODA5QTdCMjNEOTIyNTMwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb29raWVDYWNoZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM1NjlBMjFFODFDQzcwMDZFMjdBMyAvKiBQ
cm92aXNpb25hbFBhZ2VQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
cm92aXNpb25hbFBhZ2VQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njgz
NTY5QjIxRTgxQ0M3MDA2RTI3QTMgLyogUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjgzODY2NzI3NjNGQUIxMDBDRjkxODIgLyog
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQ2ODM4NjY4Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njg5QjkwRjI3NTZEMTQzMDAw
N0M2NTEgLyogUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVdl
YkxvY2tSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njg5QjkxMDI3
NTZEMTQzMDAwN0M2NTEgLyogUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQ2OTQzRENCMjc2M0Y4MzQwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzRENDMjc2
M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ2OTQzRENEMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQ0UyNzYzRjgzNTAw
NEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzRENGMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRX
b3JrZXJQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlERTgwMjI3M0VDQzVEMDA5MzAyNzYg
LyogUHJvY2Vzc0xhdW5jaGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBQcm9jZXNzTGF1bmNoZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDZBMkI2MDYxRTU2NzVBMjAwQzNERURBIC8qIEJhY2tncm91bmRQcm9jZXNzUmVz
cG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NkEyQjYwNzFFNTY3NUEyMDBDM0RFREEgLyogQmFja2dyb3VuZFBy
b2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNDI2Miw3ICs0MjgwLDExIEBACiAJCTQ2QkVCNkUxMjJGQkIyMUEw
MDI2OTg2NyAvKiBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2QkVCNkUyMjJGQkIyMUEwMDI2OTg2NyAvKiBUcmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDMzkyMjgyMzE2
RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViUGFnZVByb3h5SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
NkM5MTZBODI3OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ2QzkxNkE5Mjc5OUQwOUQwMDFBNEU3QyAvKiBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2Q0UzQjEwMjNEOEM4M0QwMDE2QTk2QSAvKiBXZWJC
YWNrRm9yd2FyZExpc3RDb3VudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQ2RDQ4RkNDMjc5OUQ3REQwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
NkQ0OEZDRDI3OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2REYwNjM5MUYz
OTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZERjA2M0ExRjM5MDVFNTAwMTk4
MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDZFOTc2MEEyNzU3RjZDOTAwQUNERDM3IC8qIFdlYkJyb2FkY2Fz
dENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJC
cm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC00MjcyLDYgKzQyOTQsNyBAQAogCQk0NkVFMjg0QTI2OUUwNTE3MDBERDQ4QUIg
LyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkVFMjg0QjI2OUUwNTE3MDBERDQ4QUIg
LyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZFRTI4NEMyNjlFMDUxNzAwREQ0OEFCIC8q
IE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0NkVFM0U4QTI3NjNGRDJBMDA2MEM3MEYgLyogV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NkYzOEU4QjI0MTZFNjZEMDA1OTM3NUEgLyogUnVubmluZ0JvYXJkU2VydmljZXNTUEkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVubmluZ0JvYXJkU2VydmljZXNTUEku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZGOUIyNjIyMzUyNkVEMDAwNkZFNUZB
IC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDkzMTAyQkMyNjgzRjNBNTAwMkJCODg1IC8qIEFwcFByaXZhY3lSZXBvcnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXBwUHJpdmFjeVJlcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNDk5MCw2ICs1MDEzLDcgQEAKIAkJNkJFOTY5QzgxRTU0RDRDRjAwOEI3NDgzIC8q
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJD
b2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCRTk2OUM5MUU1NEQ0Q0Yw
MDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lm
aWVyQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkJFOTY5Q0MxRTU0RTA1
NDAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDQUVDQjVFMjc0NjVBRTMwMEFCNzhE
MCAvKiBVbmlmaWVkU291cmNlMTE2LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3Vy
Y2UxMTYuY3BwOyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzL1dlYktpdC91bmlmaWVkLXNvdXJjZXMv
VW5pZmllZFNvdXJjZTExNi5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwogCQk2RDhBOTFBNTExRjBFRkQxMDBERDAxRkUgLyogY29tLmFwcGxlLldlYlByb2Nlc3Muc2Iu
aW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW47IHBh
dGggPSBXZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2RUU4NDlDNjEzNjhEOTJEMDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQ
cml2YXRlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLSW5zcGVjdG9y
UHJpdmF0ZU1hYy5oOyBwYXRoID0gbWFjL1dLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MTE3MjVBODIyOEQ1NjNBMDAwMTg1MTQgLyogV2Vic2l0
ZUxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2Vic2l0ZUxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3ku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUxNTQsNiArNTE3OCw3IEBACiAJCTdD
OUQxNTM2MTg0NTg0REEwMDlEMzkxOCAvKiBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJuYWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCcm93c2luZ0NvbnRleHRHcm91
cEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQTI1NEVBMTgyOTkz
Q0UwMEZDOEE0MSAvKiBXS0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVnYXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnJvd3NpbmdDb250ZXh0UG9saWN5RGVsZWdhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NBMzc5M0QxQUMzNzhCMzAwNzlEQzM3
IC8qIF9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVQcml2YXRlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVQcml2YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDQUVDQjVFMjc0NjVBRTMwMEFCNzhEMCAv
KiBVbmlmaWVkU291cmNlMTE3LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2Ux
MTcuY3BwOyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzL1dlYktpdC91bmlmaWVkLXNvdXJjZXMvVW5p
ZmllZFNvdXJjZTExNy5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owog
CQk3Q0IxMDBFRTFGQTJENzRBMDAxNzI5RUUgLyogV2ViUHJlZmVyZW5jZXNLZXlzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFdlYlByZWZlcmVuY2VzS2V5cy5jcHA7IHBhdGggPSBEZXJpdmVkU291
cmNlcy9XZWJLaXQvV2ViUHJlZmVyZW5jZXNLZXlzLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKIAkJN0NCMTAwRUYxRkEyRDc0QjAwMTcyOUVFIC8qIFdlYlByZWZlcmVu
Y2VzS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJQcmVmZXJlbmNlc0tleXMuaDsgcGF0aCA9IERl
cml2ZWRTb3VyY2VzL1dlYktpdC9XZWJQcmVmZXJlbmNlc0tleXMuaDsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJN0NCMTAwRjAxRkEyRDc4NDAwMTcyOUVFIC8qIFdlYlBy
ZWZlcmVuY2VzU3RvcmVEZWZhdWx0c01hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJQcmVm
ZXJlbmNlc1N0b3JlRGVmYXVsdHNNYXAuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0
L1dlYlByZWZlcmVuY2VzU3RvcmVEZWZhdWx0c01hcC5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CkBAIC05Mjc3LDYgKzkzMDIsMjAgQEAKIAkJCXBhdGggPSBjb2NvYTsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTQ2ODM4NjY1Mjc2M0ZBMUIwMENG
OTE4MiAvKiBTaGFyZWRXb3JrZXIgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxk
cmVuID0gKAorCQkJCTQ2RDQ4RkNDMjc5OUQ3REQwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk0NkQ0OEZDRDI3OTlEN0RFMDA3
RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oICovLAor
CQkJCTQ2QzkxNkE4Mjc5OUQwOUQwMDFBNEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3Bw
ICovLAorCQkJCTQ2QzkxNkE5Mjc5OUQwOUQwMDFBNEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXIuaCAqLywKKwkJCQk0NkVFM0U4QTI3NjNGRDJBMDA2MEM3MEYgLyogV2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKKwkJCQk0NjgzODY2NzI3NjNGQUIxMDBD
RjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oICovLAorCQkJCTQ2ODM4
NjY4Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNw
cCAqLywKKwkJCSk7CisJCQlwYXRoID0gU2hhcmVkV29ya2VyOworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKIAkJNDY5REU4MDEyNzNFQ0M1RDAwOTMwMjc2IC8qIGNvY29hICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTkzMjgsNiArOTM2Nyw3
IEBACiAJCTUxMENDN0RBMTYxMzhFMDEwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2VzcyAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDY4Mzg2NjUyNzYzRkEx
QjAwQ0Y5MTgyIC8qIFNoYXJlZFdvcmtlciAqLywKIAkJCQlFNDg5RDI4MjFBMEEyQkU4MDA3OEMw
NkEgLyogY2FjaGUgKi8sCiAJCQkJN0E4NDNBMUQyMUU0MUZEOTAwREVGNjYzIC8qIENsYXNzaWZp
ZXIgKi8sCiAJCQkJN0VDNEYwRjgxOEU0QTkyMjAwODA1NkFGIC8qIGNvY29hICovLApAQCAtOTQz
Niw2ICs5NDc2LDE0IEBACiAJCTUxMThFOTk4MUYyOTUyNTkwMDNFRjlGNSAvKiBTdG9yYWdlICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0NjFFMUJFQzI3
OUEwMTBFMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmNwcCAqLywKKwkJCQk0NjFFMUJFRjI3OUEwMTBGMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggKi8sCisJCQkJNDYxRTFCRjAyNzlBMDEwRjAwNkFG
NTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5p
biAqLywKKwkJCQk0Njk0M0RDRTI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbi5jcHAgKi8sCisJCQkJNDY5NDNEQ0QyNzYzRjgzNTAwNEI2MTBFIC8qIFdl
YlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAqLywKKwkJCQk0Njk0M0RDQjI3NjNGODM0
MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAq
LywKKwkJCQk0Njk0M0RDQzI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyUHJvdmlk
ZXIuY3BwICovLAorCQkJCTQ2OTQzRENGMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3Jr
ZXJQcm92aWRlci5oICovLAogCQkJCTQxMzFGM0UwMUY5ODcxMkMwMDU5OTk1QSAvKiBXZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCAqLywKIAkJCQk0MTlBQ0Y5QjFGOTgxRDI2MDA5
RjFBODMgLyogV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oICovLAogCQkJCTUxQkVC
NjI5MUYzQTVBQ0QwMDUwMjlCOSAvKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwICovLApA
QCAtMTI3NjEsNiArMTI4MDksNyBAQAogCQkJCTQ5RkJGMDAwMjM5QjFGNzUwMEJEMDMyRiAvKiBf
V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDlGQkYwMDkyMzlGMDhFMDAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGly
ZFBhcnR5SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3NjMxMUZEMUEzRkI1RjcwMDVB
MkU1MSAvKiBfV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNDYxRTFCRjIyNzlBMDExNjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc2MzExRkUxQTNGQjYwMDAwNUEy
RTUxIC8qIF9XS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlSW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBMDAyRDQ0MTk2QjMzODkwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBMDAyRDQzMTk2QjMzNzAwMEI5QUQ0NCAvKiBfV0tTZXNzaW9u
U3RhdGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjkyNSw2ICsxMjk3NCw3IEBACiAJ
CQkJRTE3MDg3NkMxNkQ2Q0E2OTAwRjk5MjI2IC8qIEJsb2JSZWdpc3RyeVByb3h5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0RjYwMTQzMjE1NUM1QUEyMDAxRkJERTAgLyogQmxvY2tpbmdSZXNwb25z
ZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NzA1MTExQkU0MTBFNjAwODc0QUYxIC8qIEJs
b2NrU1BJLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkM5MTZBQTI3OTlEMEEyMDAxQTRFN0MgLyog
V2ViU2hhcmVkV29ya2VyU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzMwNjVGQTEyNTkz
NDRFMDBFNzEyNzggLyogQ2FjaGVNb2RlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE4OTdFRDgx
RjQxNUQ4QTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDFGQUJEMkExRjRERTAwMTAwNkE2Qzk3IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTEzMzkwLDYgKzEzNDQwLDcgQEAKIAkJCQkxQUMxMzM2ODE4NTY1
QjU3MDBGM0VDMDUgLyogVXNlckRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENDkxQjA4MUU3
MEQwNUYwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQ0Q0OTFCMEUxRTczMkU0RDAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2RUUzRThCMjc2M0ZEMkYwMDYwQzcwRiAv
KiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RDQ5MUIxMzFFNzM0ODIxMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q0OTFCMTgxRTczNTI1NTAwMDA5MDY2IC8qIFVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcyOTdG
OUYxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmggaW4g
SGVhZGVycyAqLywKQEAgLTEzNDc2LDYgKzEzNTI3LDcgQEAKIAkJCQkzMzA5MzQ0QTEzMTVCOTIy
MDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMUREN0IyMTE0REMzOTYwMDVBREFGMyAvKiBXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkY1ODlCMTJBODgzODgwMDYyOTUzMCAvKiBXZWJDcmVk
ZW50aWFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk0Njk0M0REMDI3NjNGODNBMDA0QjYxMEUgLyog
V2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQTgzRjZEMUE1
QjYzRkYwMDAyNkVDNiAvKiBXZWJEYXRhYmFzZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFNTJDRjU1MjIwQTM1QzNBMDBEQURBMjcgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNTY4QjkxRjIwQTNBQjJGMDBFM0M4NTYgLyogV2ViRGF0
YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duLmggaW4gSGVhZGVycyAqLywKQEAgLTEzNTEwLDYgKzEz
NTYyLDcgQEAKIAkJCQlCQzAzMkQ3RjEwRjQzNzhEMDA1OEMxNUEgLyogV2ViRnJhbWVMb2FkZXJD
bGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTFGMkNCMTIxQjY3QUQwMEVCRjdFOCAvKiBX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0I5RjZBMDEx
MjNBODRCMDBBMTM3RTAgLyogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmggaW4gSGVhZGVy
cyAqLywKKwkJCQk0Njk0M0REMTI3NjNGODNGMDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5QjM4QTExMEY1MzhCRTAwNDQz
QTE1IC8qIFdlYkZyYW1lUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMUFCMUQ1NTVB
QTAwMEREN0M2OCAvKiBXZWJHYW1lcGFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVCRTE3OTFE
NTNGRThGMDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKQEAg
LTEzNjM2LDYgKzEzNjg5LDcgQEAKIAkJCQkxQTQ4MzJENzFBOUNERjk2MDA4QjRERkUgLyogV2Vi
c2l0ZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDgzMkQxMUE5QkRDMkYwMDhCNERGRSAv
KiBXZWJzaXRlRGF0YVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1M0MyQUExQTMyNTcz
MDAwNEU4QzcwIC8qIFdlYnNpdGVEYXRhU3RvcmUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2RDQ4
RkNFMjc5OUQ3RTEwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTFGN0Q0MTFFQjFCQ0Y1MDBFNDdCODMgLyog
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTcxMTcyNUE5
MjI4RDU2NDMwMDAxODUxNCAvKiBXZWJzaXRlTGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaFBv
bGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjRDQjA5RTUyMjVENUEwOTAwODkxNDg3IC8qIFdl
YnNpdGVNZWRpYVNvdXJjZVBvbGljeS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmNwcAppbmRleCA4ZDNiNTdiZDE4ZGMuLmJiMzU0N2Y0NmFkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCkBAIC01Nyw2ICs1NywxMCBAQAogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgorI2lu
Y2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIgorI2luY2x1
ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldl
YlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNv
Y2tldENoYW5uZWwuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJTb2NrZXRTdHJlYW0uaCIKQEAgLTE3Myw2ICsxNzcsMTYgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgSVAKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgorICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIHNoYXJl
ZFdvcmtlckNvbm5lY3Rpb24oKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIEFTU0VSVChTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKTsKKyAgICAgICAgaWYg
KGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxX
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24mPigqY29udGV4dE1hbmFnZXJD
b25uZWN0aW9uKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KIAogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQogICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGF5bWVu
dENvb3JkaW5hdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKQEAgLTMwNyw2ICszMjEsMTMg
QEAgV2ViU1dDbGllbnRDb25uZWN0aW9uJiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OnNlcnZp
Y2VXb3JrZXJDb25uZWN0aW9uKCkKIH0KICNlbmRpZgogCitXZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uJiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OnNoYXJlZFdvcmtlckNvbm5lY3Rp
b24oKQoreworICAgIGlmICghbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uKQorICAgICAgICBtX3No
YXJlZFdvcmtlckNvbm5lY3Rpb24gPSBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpj
cmVhdGUoKTsKKyAgICByZXR1cm4gKm1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbjsKK30KKwogdm9p
ZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246Om1lc3NhZ2VzQXZhaWxhYmxlRm9yUG9ydChjb25z
dCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIG1lc3NhZ2VQb3J0SWRlbnRpZmllcikK
IHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5tZXNzYWdlc0F2YWlsYWJsZUZvclBvcnQo
bWVzc2FnZVBvcnRJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggZDYyZGZl
NGRmNWFhLi41ZjA1MDQwOWFjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC00OCw2ICs0
OCw3IEBAIGVudW0gY2xhc3MgSFRUUENvb2tpZUFjY2VwdFBvbGljeSA6IHVpbnQ4X3Q7CiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOworY2xhc3Mg
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjsKIGNsYXNzIFdlYlNXQ2xpZW50Q29ubmVj
dGlvbjsKIAogY2xhc3MgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50
ZWQ8TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uPiwgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQgewpA
QCAtNzAsNiArNzEsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IFdlYlNXQ2xpZW50Q29ubmVjdGlvbiYgc2VydmljZVdvcmtlckNvbm5lY3Rpb24oKTsKICNlbmRp
ZgorICAgIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24mIHNoYXJlZFdvcmtlckNvbm5l
Y3Rpb24oKTsKIAogI2lmIEhBVkUoQVVESVRfVE9LRU4pCiAgICAgdm9pZCBzZXROZXR3b3JrUHJv
Y2Vzc0F1ZGl0VG9rZW4oc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuKSB7
IG1fbmV0d29ya1Byb2Nlc3NBdWRpdFRva2VuID0gYXVkaXRUb2tlbjsgfQpAQCAtMTIzLDYgKzEy
NSw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIFJlZlB0cjxX
ZWJTV0NsaWVudENvbm5lY3Rpb24+IG1fc3dDb25uZWN0aW9uOwogI2VuZGlmCisgICAgUmVmUHRy
PFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24+IG1fc2hhcmVkV29ya2VyQ29ubmVjdGlv
bjsKICAgICBXZWJDb3JlOjpIVFRQQ29va2llQWNjZXB0UG9saWN5IG1fY29va2llQWNjZXB0UG9s
aWN5OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iZmUwYmI2
ODY1NzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEs
MTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAiTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIK
KyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9FbXB0eUNsaWVudHMuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyRmV0
Y2hSZXN1bHQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBhZ2VHcm91cElk
ZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5
SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNT
dG9yZSYgcHJlZmVyZW5jZXNTdG9yZSwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYm
IGluaXRpYWxpemF0aW9uRGF0YSkKKyAgICA6IG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
V1RGTW92ZShjb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcykpCisgICAgLCBtX3JlZ2lzdHJhYmxl
RG9tYWluKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pKQorICAgICwgbV9wYWdlR3JvdXBJRChw
YWdlR3JvdXBJRCkKKyAgICAsIG1fd2ViUGFnZVByb3h5SUQod2ViUGFnZVByb3h5SUQpCisgICAg
LCBtX3BhZ2VJRChwYWdlSUQpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgLCBtX3VzZXJBZ2Vu
dChzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoeyB9KSkKKyNlbHNlCisgICAg
LCBtX3VzZXJBZ2VudChzdGFuZGFyZFVzZXJBZ2VudCgpKQorI2VuZGlmCisgICAgLCBtX3VzZXJD
b250ZW50Q29udHJvbGxlcihXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmdldE9yQ3JlYXRlKGlu
aXRpYWxpemF0aW9uRGF0YS51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKSkKK3sKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVy
LT5hZGRDb250ZW50UnVsZUxpc3RzKFdURk1vdmUoaW5pdGlhbGl6YXRpb25EYXRhLmNvbnRlbnRS
dWxlTGlzdHMpKTsKKyNlbmRpZgorCisgICAgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShwcmVmZXJl
bmNlc1N0b3JlKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5kaXNhYmxlVGVybWluYXRp
b24oKTsKK30KKworV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp+V2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKCkgPSBkZWZhdWx0OworCit2b2lk
IFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZXN0YWJsaXNoQ29ubmVj
dGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0YWJsaXNoU2hhcmVkV29ya2Vy
Q29udGV4dENvbm5lY3Rpb24geyBtX3dlYlBhZ2VQcm94eUlELCBtX3JlZ2lzdHJhYmxlRG9tYWlu
IH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCAwKTsKK30KKwordm9pZCBXZWJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVj
dChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgbV9jb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6UG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0IHsgc2hhcmVkV29ya2VySWRl
bnRpZmllciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVS
TCB9LCAwKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OnVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3Rv
cmUpCit7CisgICAgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXNHZW5lcmF0ZWQoc3RvcmUpOwor
ICAgIG1fcHJlZmVyZW5jZXNTdG9yZSA9IHN0b3JlOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bGF1bmNoU2hhcmVkV29ya2VyKFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYmIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFy
ZWRXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiB1cmwsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJiB3
b3JrZXJPcHRpb25zLCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmIHdvcmtlckZldGNoUmVz
dWx0KQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bGF1bmNoU2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpKTsK
KyAgICBhdXRvIHBhZ2VDb25maWd1cmF0aW9uID0gcGFnZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlD
bGllbnRzKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNlc3Npb25JRCgpKTsKKworICAgIHBhZ2VD
b25maWd1cmF0aW9uLmRhdGFiYXNlUHJvdmlkZXIgPSBXZWJEYXRhYmFzZVByb3ZpZGVyOjpnZXRP
ckNyZWF0ZShtX3BhZ2VHcm91cElEKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5zb2NrZXRQcm92
aWRlciA9IFdlYlNvY2tldFByb3ZpZGVyOjpjcmVhdGUobV93ZWJQYWdlUHJveHlJRCk7CisgICAg
cGFnZUNvbmZpZ3VyYXRpb24uYnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5ID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuYnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5KCk7CisgICAgcGFnZUNvbmZpZ3Vy
YXRpb24ud2ViTG9ja1JlZ2lzdHJ5ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9ja1Jl
Z2lzdHJ5KCk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRQcm92aWRlciA9IG1f
dXNlckNvbnRlbnRDb250cm9sbGVyOworI2lmIEVOQUJMRShXRUJfUlRDKQorICAgIHBhZ2VDb25m
aWd1cmF0aW9uLmxpYldlYlJUQ1Byb3ZpZGVyID0gbWFrZVVuaXF1ZVJlZjxTZXJ2aWNlV29ya2Vy
TGliV2ViUlRDUHJvdmlkZXI+KCk7CisjZW5kaWYKKworICAgIC8vIEZJWE1FOiBTZXJ2aWNlV29y
a2VyRnJhbWVMb2FkZXJDbGllbnQgc2hvdWxkIGJlIHJlbmFtZWQgaWYgdXNlZCBieSBTaGFyZWRX
b3JrZXJzLgorICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSA9
IG1ha2VVbmlxdWVSZWY8U2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50PihtX3dlYlBhZ2VQ
cm94eUlELCBtX3BhZ2VJRCwgRnJhbWVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBtX3VzZXJBZ2Vu
dCk7CisKKyAgICBhdXRvIHBhZ2UgPSBtYWtlVW5pcXVlUmVmPFBhZ2U+KFdURk1vdmUocGFnZUNv
bmZpZ3VyYXRpb24pKTsKKyAgICBpZiAobV9wcmVmZXJlbmNlc1N0b3JlKSB7CisgICAgICAgIFdl
YlBhZ2U6OnVwZGF0ZVNldHRpbmdzR2VuZXJhdGVkKCptX3ByZWZlcmVuY2VzU3RvcmUsIHBhZ2Ut
PnNldHRpbmdzKCkpOworICAgICAgICBwYWdlLT5zZXR0aW5ncygpLnNldFN0b3JhZ2VCbG9ja2lu
Z1BvbGljeShzdGF0aWNfY2FzdDxTdG9yYWdlQmxvY2tpbmdQb2xpY3k+KG1fcHJlZmVyZW5jZXNT
dG9yZS0+Z2V0VUludDMyVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnN0b3JhZ2VCbG9j
a2luZ1BvbGljeUtleSgpKSkpOworICAgIH0KKyAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eTo6c2V0dXBQYWdlRm9yU2hhcmVkV29ya2VyKHBhZ2UuZ2V0KCksIHVybCwgb3JpZ2lu
LCB3b3JrZXJGZXRjaFJlc3VsdCk7CisgICAgYXV0byBzaGFyZWRXb3JrZXJUaHJlYWRQcm94eSA9
IFdlYkNvcmU6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpjcmVhdGUoV1RGTW92ZShwYWdlKSwg
c2hhcmVkV29ya2VySWRlbnRpZmllciwgb3JpZ2luLCB1cmwsIFdURk1vdmUod29ya2VyRmV0Y2hS
ZXN1bHQpLCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMpLCBtX3VzZXJBZ2VudCwgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuY2FjaGVTdG9yYWdlUHJvdmlkZXIoKSk7CisKKyAgICBXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkucmVnaXN0ZXJTaGFyZWRXb3JrZXJU
aHJlYWQoV1RGTW92ZShzaGFyZWRXb3JrZXJUaHJlYWRQcm94eSkpOworfQorCit2b2lkIFdlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Y2xvc2UoKQoreworICAgIFJFTEVB
U0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6Y2xvc2U6IFNoYXJlZCB3b3JrZXIgcHJvY2VzcyBpcyByZXF1ZXN0ZWQgdG8gc3RvcCBh
bGwgc2hhcmVkIHdvcmtlcnMiKTsKKyAgICBzZXRBc0Nsb3NlZCgpOworCisgICAgbV9jb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OkNsb3NlU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24geyB9LCAwKTsKKyAg
ICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc3RvcEFs
bFNoYXJlZFdvcmtlcnMoKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbmFibGVUZXJt
aW5hdGlvbigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi5lZDkxZjk3YzFiMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiSWRlbnRpZmllclR5cGVzLmgiCisj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRp
Zmllci5oIgorI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VySWRlbnRpZmllci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKK3N0cnVj
dCBXb3JrZXJGZXRjaFJlc3VsdDsKK3N0cnVjdCBXb3JrZXJPcHRpb25zOworfQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOworc3RydWN0IFNl
cnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGE7CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVy
IHsKK3B1YmxpYzoKKyAgICBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24o
UmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUGFn
ZUdyb3VwSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBTZXJ2aWNlV29ya2VySW5pdGlh
bGl6YXRpb25EYXRhJiYpOworICAgIH5XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24oKTsKKworICAgIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0
KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwpIGZpbmFsOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICAvLyBJUEMgTWVzc2Fn
ZXMuCisgICAgdm9pZCBsYXVuY2hTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYs
IFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpXb3JrZXJP
cHRpb25zJiYsIFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYpOworICAgIHZvaWQgdXBkYXRl
UHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CisgICAgdm9pZCBz
ZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KSB7IG1fdXNlckFnZW50ID0gV1RGTW92ZSh1
c2VyQWdlbnQpOyB9CisgICAgdm9pZCBjbG9zZSgpOworCisgICAgUmVmPElQQzo6Q29ubmVjdGlv
bj4gbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzczsKKyAgICBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluOworICAgIFBhZ2VHcm91cElkZW50aWZpZXIgbV9w
YWdlR3JvdXBJRDsKKyAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIG1fd2ViUGFnZVByb3h5SUQ7
CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CisgICAgU3RyaW5nIG1fdXNl
ckFnZW50OworICAgIFJlZjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXI+IG1fdXNlckNvbnRlbnRD
b250cm9sbGVyOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViUHJlZmVyZW5jZXNTdG9yZT4gbV9wcmVm
ZXJlbmNlc1N0b3JlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kODJhNGFkYTUzZmQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwz
MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisj
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAt
PiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7
CisgICAgTGF1bmNoU2hhcmVkV29ya2VyKHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3Jp
Z2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZp
ZXIsIFVSTCB1cmwsIHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdvcmtlck9wdGlvbnMs
IHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCB3b3JrZXJGZXRjaFJlc3VsdCkKKyAg
ICBQb3N0Q29ubmVjdEV2ZW50KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVk
V29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBwb3J0LCBT
dHJpbmcgc291cmNlT3JpZ2luKQorICAgIFRlcm1pbmF0ZVNoYXJlZFdvcmtlcihXZWJDb3JlOjpT
aGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIpCisgICAgVXBkYXRl
UHJlZmVyZW5jZXNTdG9yZShzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3Jl
KQorICAgIFNldFVzZXJBZ2VudChTdHJpbmcgdXNlckFnZW50KQorICAgIENsb3NlKCkKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi5kN2Q5OTRkZTFmNzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uLmNwcApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCIKKworI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyT3B0aW9ucy5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xP
RyhTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQgIl0g
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsIFdlYkNvcmU6OlBy
b2Nlc3M6OmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQorCitXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
KCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJXZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uOiIpOworfQorCitXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjp+V2Vi
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNF
X0xPRygifldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Iik7Cit9CisKK0lQQzo6Q29u
bmVjdGlvbiogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworfQorCit2b2lk
IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnJlcXVlc3RTaGFyZWRXb3JrZXIoY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgVVJMJiB1
cmwsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBjb25zdCBXZWJDb3Jl
OjpXb3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25zKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFT
RV9MT0coInJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9
JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uOjpSZXF1ZXN0U2hhcmVkV29ya2VyIHsgb3JpZ2luLCBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLCB1cmwsIFdURk1vdmUocG9ydCksIHdvcmtlck9wdGlvbnMgfSk7Cit9CisKK3Zv
aWQgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6c2hhcmVkV29ya2VyT2JqZWN0SXNH
b2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coInNoYXJl
ZFdvcmtlck9iamVjdElzR29pbmdBd2F5OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7
cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbjo6U2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkgeyBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyIH0pOworfQorCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPRworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmVjYmY0MmY2NzYyYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDU0IEBACisKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdl
YkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24sIHByaXZhdGUgSVBDOjpNZXNzYWdl
U2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIHN0YXRp
YyBSZWY8V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbj4gY3JlYXRlKCkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKTsgfQorICAgIH5X
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCitwcml2YXRl
OgorICAgIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKTsKKworICAgIC8vIFdlYkNv
cmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uCisgICAgdm9pZCByZXF1ZXN0U2hhcmVk
V29ya2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2Fn
ZVBvcnQmJiwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYpIGZpbmFsOworICAgIHZvaWQg
c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcikgZmluYWw7CisKKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJD
b25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3Rp
bmF0aW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMWNlYTE5MzJl
OWY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI3
IEBACisjIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+
IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24geworICAgIEZldGNoU2NyaXB0SW5DbGll
bnQoVVJMIHVybCwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyB3b3Jr
ZXJPcHRpb25zKSAtPiAoc3RydWN0IFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0IGZldGNoUmVz
dWx0KSBBc3luYworICAgIE5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZhaWx1cmUoV2ViQ29yZTo6
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
KQorICAgIFBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFN0cmluZyBlcnJv
ck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTdHJpbmcgc291cmNl
VVJMKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uNDQ5NWE0MjI1ZTYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwCkBAIC0w
LDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaCIKKworI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJTaGFy
ZWRXb3JrZXJQcm92aWRlciYgV2ViU2hhcmVkV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyPiBwcm92
aWRlcjsKKyAgICByZXR1cm4gcHJvdmlkZXI7Cit9CisKK1dlYlNoYXJlZFdvcmtlclByb3ZpZGVy
OjpXZWJTaGFyZWRXb3JrZXJQcm92aWRlcigpID0gZGVmYXVsdDsKKworV2ViQ29yZTo6U2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbiogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXI6OnNoYXJlZFdv
cmtlckNvbm5lY3Rpb24oKQoreworICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuc2hhcmVkV29ya2VyQ29ubmVjdGlvbigp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODZlM2QyZmU3MGEwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2Vy
UHJvdmlkZXIuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlclByb3ZpZGVyLmg+CisjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb247Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBX
ZWJTaGFyZWRXb3JrZXJQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJQcm92aWRlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVy
JiBzaW5nbGV0b24oKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8V2Vi
U2hhcmVkV29ya2VyUHJvdmlkZXI+OworICAgIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyKCk7CisK
KyAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKiBzaGFyZWRXb3JrZXJD
b25uZWN0aW9uKCkgZmluYWw7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBlMjVkOGYzZTY5MTYuLjhjNzRjN2Ni
Y2E0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtODQsNiAr
ODQsOSBAQAogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgiCiAjaW5j
bHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2Vy
UHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRTdHJlYW0uaCIKICNpbmNsdWRlICJXZWJz
aXRlRGF0YS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCkBAIC0x
MzMsNiArMTM2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NldHRpbmdzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckdlc3R1cmVJbmRpY2F0b3IuaD4KICNpbmNs
dWRlIDxwYWwvTG9nZ2luZy5oPgogI2luY2x1ZGUgPHd0Zi9BbGdvcml0aG1zLmg+CkBAIC01Njks
NiArNTczLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAgICAgU2VydmljZVdvcmtlclByb3ZpZGVyOjpzZXRTaGFyZWRQcm92aWRlcihXZWJT
ZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpKTsKICNlbmRpZgorICAgIFNoYXJlZFdv
cmtlclByb3ZpZGVyOjpzZXRTaGFyZWRQcm92aWRlcihXZWJTaGFyZWRXb3JrZXJQcm92aWRlcjo6
c2luZ2xldG9uKCkpOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIEpTQzo6V2FzbTo6
ZW5hYmxlRmFzdE1lbW9yeSgpOwpAQCAtOTAyLDcgKzkwNyw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29k
ZXImIGRlCiAgICAgfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIC8vIEZJWE1F
OiBSZW1vdmU/CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3Nh
Z2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
KSB7CiAgICAgICAgIEFTU0VSVChTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0
aW9uKCkpOwogICAgICAgICBpZiAoYXV0byogY29udGV4dE1hbmFnZXJDb25uZWN0aW9uID0gU1dD
b250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKQpAQCAtOTExLDYgKzkxNSwx
MyBAQCB2b2lkIFdlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZQogICAgIH0KICNlbmRpZgogCisgICAgaWYgKGRl
Y29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAg
ICBBU1NFUlQoU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rp
b24oKSk7CisgICAgICAgIGlmIChhdXRvKiBjb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gPSBTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKQorICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
Jj4oKmNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbikuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBMT0dfRVJST1IoIlVu
aGFuZGxlZCB3ZWIgcHJvY2VzcyBtZXNzYWdlICclcycgKGRlc3RpbmF0aW9uOiAlIiBQUkl1NjQg
IiBwaWQ6ICVkKSIsIGRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2FnZU5hbWUoKSksIGRlY29kZXIu
ZGVzdGluYXRpb25JRCgpLCBzdGF0aWNfY2FzdDxpbnQ+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSkp
OwogfQogCkBAIC0xOTE3LDggKzE5MjgsMTggQEAgTGliV2ViUlRDTmV0d29yayYgV2ViUHJvY2Vz
czo6bGliV2ViUlRDTmV0d29yaygpCiAgICAgcmV0dXJuICptX2xpYldlYlJUQ05ldHdvcms7CiB9
CiAKK3ZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
Y29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVn
aXN0cmFibGVEb21haW4sIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFs
aXphdGlvbkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICAvLyBXZSBhcmUgaW4gdGhlIFNoYXJlZCBXb3JrZXIgY29udGV4dCBwcm9jZXNz
IGFuZCB0aGUgY2FsbCBiZWxvdyBlc3RhYmxpc2hlcyBvdXIgY29ubmVjdGlvbiB0byB0aGUgTmV0
d29yayBQcm9jZXNzCisgICAgLy8gYnkgY2FsbGluZyBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0aGUgc2FtZSB1
bmRlcmx5aW5nIElQQzo6Q29ubmVjdGlvbiBhcyB0aGUKKyAgICAvLyBOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24gZm9yIHN5bmNocm9uaXphdGlvbiBwdXJwb3Nlcy4KKyAgICBhdXRvJiBpcGNDb25u
ZWN0aW9uID0gZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwor
ICAgIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDb25uZWN0aW9u
KG1ha2VVbmlxdWU8V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uPihpcGND
b25uZWN0aW9uLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgcGFnZUdyb3VwSUQsIHdlYlBh
Z2VQcm94eUlELCBwYWdlSUQsIHN0b3JlLCBXVEZNb3ZlKGluaXRpYWxpemF0aW9uRGF0YSkpKTsK
KyAgICBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigp
LT5lc3RhYmxpc2hDb25uZWN0aW9uKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZpZXIg
cGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFJlZ2lz
dHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgU2Vy
dmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmIGluaXRpYWxpemF0aW9uRGF0YSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQcm9jZXNz
Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KFBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
d2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZSYgc3RvcmUsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0
ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3Jr
ZXJQYWdlSWRlbnRpZmllciwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmIGluaXRp
YWxpemF0aW9uRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIC8vIFdlIGFyZSBpbiB0aGUgU2VydmljZSBXb3JrZXIgY29udGV4dCBwcm9j
ZXNzIGFuZCB0aGUgY2FsbCBiZWxvdyBlc3RhYmxpc2hlcyBvdXIgY29ubmVjdGlvbiB0byB0aGUg
TmV0d29yayBQcm9jZXNzCiAgICAgLy8gYnkgY2FsbGluZyBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uIFNXQ29udGV4dE1hbmFnZXIgbmVlZHMgdG8gdXNlIHRoZSBzYW1lIHVuZGVybHlp
bmcgSVBDOjpDb25uZWN0aW9uIGFzIHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmgKaW5kZXggYjgwMzJmYmU4ZTIwLi42NWY3NzMyMDFhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaApAQCAtNDY5LDggKzQ2OSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBn
YW1lcGFkRGlzY29ubmVjdGVkKHVuc2lnbmVkIGluZGV4KTsKICNlbmRpZgogCisgICAgdm9pZCBl
c3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUGFn
ZUdyb3VwSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmLCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQg
ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91
cElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRp
Zmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6
YXRpb25EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBlc3Rh
Ymxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VH
cm91cElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySW5pdGlh
bGl6YXRpb25EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKIAog
ICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJzaXRlRGF0YSYmKT4mJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDQyZDc1YTM5NGE5Yy4u
ZTU1Mjk2YjkwNGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgpAQCAtMTAwLDggKzEwMCwxMCBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNz
IExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewogICAgIEdhbWVwYWREaXNjb25uZWN0ZWQo
dW5zaWduZWQgaW5kZXgpCiAjZW5kaWYKIAorICAgIEVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJLaXQ6OlBhZ2VHcm91cElkZW50aWZpZXIg
cGFnZUdyb3VwSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJ
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVm
ZXJlbmNlc1N0b3JlIHN0b3JlLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIHN0
cnVjdCBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRp
b25EYXRhKSAtPiAoKSBBc3luYworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEVz
dGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJLaXQ6OlBh
Z2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRp
ZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1
Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiBkb21haW4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgc3RydWN0IFdlYktp
dDo6U2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSBpbml0aWFsaXphdGlvbkRhdGEpIC0+
ICgpIEFzeW5jCisgICAgRXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhXZWJLaXQ6OlBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdl
YktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0
b3JlLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdl
SWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6U2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0
YSBpbml0aWFsaXphdGlvbkRhdGEpIC0+ICgpIEFzeW5jCiAjZW5kaWYKIAogICAgIFNldEhhc1N1
c3BlbmRlZFBhZ2VQcm94eShib29sIGhhc1N1c3BlbmRlZFBhZ2VQcm94eSk7Cg==
</data>
<flag name="commit-queue"
          id="477008"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450581</attachid>
            <date>2022-02-01 15:25:12 -0800</date>
            <delta_ts>2022-02-01 19:04:54 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>235958_SharedWorker_multiProcess_wip.patch</filename>
            <type>text/plain</type>
            <size>337991</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDQwYjI5NmM3MWQzNy4uMzZhMDczMTE3NjBlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTQ2Myw3ICs0NjMsNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYi1sb2Nrcy9zdGVhbC50ZW50YXRpdmUuaHR0cHMuYW55Lmh0bWwgWyBEdW1wSgog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3Ro
ZS1hbmFseXNlcm5vZGUtaW50ZXJmYWNlL3Rlc3QtYW5hbHlzZXItbWluaW11bS5odG1sIFsgRHVt
cEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUt
ZGlzY29ubmVjdC1hdWRpb3BhcmFtLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NhbWUtb3JpZ2luLWNoZWNr
LnN1Yi5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMuaHRt
bCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCiBmYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWJh
Y2stZm9yd2FyZC1jYWNoZS5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGZhc3Qv
aGlzdG9yeS9wYWdlLWNhY2hlLWNyZWF0ZUltYWdlQml0bWFwLmh0bWwgWyBEdW1wSlNDb25zb2xl
TG9nSW5TdGRFcnIgXQogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLWluLWxv
YWRpbmctaWZyYW1lLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQpAQCAtNTE1NCw2
ICs1MTUzLDEwIEBAIHdlYmtpdC5vcmcvYi8xODM5OTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3Nzb20vY3NzLXN0eWxlLWF0dHItZGVjCiAjIFRlc3QgaXMgY3Jhc2hpbmcg
aW4gRGVidWcgYnVpbGRzIHNpbmNlIGltcG9ydC4KIHdlYmtpdC5vcmcvYi8yMzQ5NzcgWyBEZWJ1
ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9mb2N1cy1ldmVu
dC1kb2N1bWVudC1tb3ZlLmh0bWwgWyBTa2lwIF0KIAorIyBUZXN0IGlzIGZsYWt5IGJlY2F1c2Ug
TWVzc2FnZVBvcnQgbWVzc2FnZXMgbWF5IGdldCByZWNlaXZlZCBpbiBhIGRpZmZlcmVudCBvcmRl
ciB3aGVuIHNldmVyYWwgTWVzc2FnZVBvcnRzIGFyZSBpbnZvbHZlZCwKKyMgZHVlIHRvIGhvdyBN
ZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpIGlzIGltcGxlbWVudGVkLgoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0
aW9ucy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIEZhaWx1cmUgUGFzcyBdCisKICMg
UGx1Z2lucwogIyBGSVhNRTogUmVtb3ZlIHRoZXNlIHRlc3RzLgogcGx1Z2lucy8gWyBTa2lwIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0
LW9ubHkuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3
b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dAppbmRleCAwZTk5NzI0Yjg2NGIuLjY4
OThiNTRhYWI2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdv
cmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRl
LXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSw2
ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2Nh
bGhvc3Q6OTQ0NC9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zdXBwb3J0L3Jlc291cmNlLnB5P2Ny
b3NzLW9yaWdpbi1mZXRjaAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8v
d3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQvcmVzb3Vy
Y2UucHk/Y3Jvc3Mtb3JpZ2luLXhocgotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0
dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQv
cmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLWZldGNoCiAKIFBBU1MgU2FtZS1vcmlnaW4gJ2ZldGNo
KCknLgogUEFTUyBTYW1lLW9yaWdpbiBYSFIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lk
ZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWItZXhwZWN0ZWQu
dHh0CmluZGV4IDk3OTEwNjMwMzc4NS4uYmI2NDUyZjQ0YTBhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMu
c3ViLWV4cGVjdGVkLnR4dApAQCAtMiwxMCArMiw5IEBACiBIYXJuZXNzIEVycm9yIChUSU1FT1VU
KSwgbWVzc2FnZSA9IG51bGwKIAogVElNRU9VVCBzaGFyZWR3b3JrZXItc2NyaXB0LXNyYyBUZXN0
IHRpbWVkIG91dAotRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgbm90IGJsb2Nr
ZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgIEEgbmV0d29yayBlcnJvciBvY2N1cnJlZC4KLUZBSUwg
YGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AgUmVmdXNlZCB0byBldmFs
dWF0ZSBhIHN0cmluZyBhcyBKYXZhU2NyaXB0IGJlY2F1c2UgJ3Vuc2FmZS1ldmFsJyBpcyBub3Qg
YW4gYWxsb3dlZCBzb3VyY2Ugb2Ygc2NyaXB0IGluIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1
cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAic2NyaXB0LXNyYyAnc2VsZicgJ25vbmNlLWEnIGJsb2I6
IGZpbGVzeXN0ZW06Ii4KLQotRkFJTCBgc2V0VGltZW91dChbc3RyaW5nXSlgIG5vdCBibG9ja2Vk
IGluIGh0dHA6IHdpdGhvdXQgQ1NQIGFzc2VydF91bnJlYWNoZWQ6IGNhbGxiYWNrIG5vdCBjYWxs
ZWQuIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNj
cmlwdHMoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgTG9hZCBmYWlsZWQKK1BB
U1MgYGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AKK1BBU1MgYHNldFRp
bWVvdXQoW3N0cmluZ10pYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3V0IENTUAogVElNRU9V
VCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgYmxvY2tlZCBpbiBodHRwOiB3aXRoIHNj
cmlwdC1zcmMgJ3NlbGYnIFRlc3QgdGltZWQgb3V0CiBOT1RSVU4gYGV2YWwoKWAgYmxvY2tlZCBp
biBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCiBOT1RSVU4gYHNldFRpbWVvdXQoW3N0cmlu
Z10pYCBibG9ja2VkIGluIGh0dHA6IHdpdGggc2NyaXB0LXNyYyAnc2VsZicKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVk
LnR4dAppbmRleCA0ZWFjMWNjYzA1MjYuLmI4ZWUxM2IwZmZjZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBv
bGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91dC5zdWItZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4
dApAQCAtMSw0ICsxLDQgQEAKIAogRkFJTCBEZWRpY2F0ZWQgd29ya2VyIGluaGVyaXRzIENTUCBm
cm9tIG1haW4gZG9jdW1lbnQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgInNldFRpbWVvdXQgYWxs
b3dlZCIgYnV0IGdvdCAic2V0VGltZW91dCBibG9ja2VkIgotRkFJTCBTaGFyZWQgd29ya2VyIGRl
bGl2ZXJzIGl0cyBvd24gQ1NQIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJzZXRUaW1lb3V0IGJs
b2NrZWQiIGJ1dCBnb3QgInNldFRpbWVvdXQgYWxsb3dlZCIKK1BBU1MgU2hhcmVkIHdvcmtlciBk
ZWxpdmVycyBpdHMgb3duIENTUAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3Jr
ZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNo
ZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggYzEwNzEz
NjU1MjgwLi42Zjg0NGRkNWQ5NDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtl
cnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBj
YWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKQEAgLTUsNyAr
NSw3IEBAIEhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAogUEFTUyBEZWRp
Y2F0ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0CiBQQVNTIERlZGljYXRlZCB3b3JrZXIg
b2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0CiBQQVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIG5v
dC1pbi1jYWNoZSBzY3JpcHQKLVBBU1MgU2hhcmVkIHdvcmtlciBvZiB0aGUgY2FjaGVkIHNjcmlw
dAotUEFTUyBTaGFyZWQgd29ya2VyIG9mIHRoZSBmYWxsYmFja2VkIHNjcmlwdAorRkFJTCBTaGFy
ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJE
b25lOiBjYWNoZWQiIGJ1dCBnb3QgIkVycm9yOiBJbXBvcnRpbmcgYSBub24tY2FjaGVkIHNjcmlw
dCBtdXN0IGZhaWwuIgorRkFJTCBTaGFyZWQgd29ya2VyIG9mIHRoZSBmYWxsYmFja2VkIHNjcmlw
dCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiRG9uZTogZmFsbGJhY2tlZCIgYnV0IGdvdCAiRXJy
b3I6IEltcG9ydGluZyBhIG5vbi1jYWNoZWQgc2NyaXB0IG11c3QgZmFpbC4iCiBUSU1FT1VUIFNo
YXJlZCB3b3JrZXIgb2YgdGhlIG5vdC1pbi1jYWNoZSBzY3JpcHQgVGVzdCB0aW1lZCBvdXQKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3
b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9y
aWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3b3JrZXItcGFydGl0
aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0CmluZGV4IDRlZDg3NDc0
NzZjNy4uZjFlYjBiMjE3ZjM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9hbm9u
eW1vdXMtaWZyYW1lL3NoYXJlZHdvcmtlci1wYXJ0aXRpb25pbmcudGVudGF0aXZlLmh0dHBzLndp
bmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlm
cmFtZS9zaGFyZWR3b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhw
ZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIEFub255bW91cyBpZnJhbWVzIGdldCBw
YXJ0aXRpb25lZCBzaGFyZWQgd29ya2Vycy4gYXNzZXJ0X3RydWU6IFRoZSAibm9ybWFsIiBpZnJh
bWUncyBzaGFyZWR3b3JrZXIgc2hvdWxkIHJldHVybiB7Im5vcm1hbCI6IHRydWUsICJub3JtYWxf
Y29udHJvbCI6IHRydWV9LCBidXQgaW5zdGVhZCByZXR1cm5lZCB7Im5vcm1hbCI6dHJ1ZX0gZXhw
ZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK0ZBSUwgQW5vbnltb3VzIGlmcmFtZXMgZ2V0IHBhcnRpdGlv
bmVkIHNoYXJlZCB3b3JrZXJzLiBhc3NlcnRfdHJ1ZTogVGhlICJub3JtYWwiIGlmcmFtZSdzIHNo
YXJlZHdvcmtlciBzaG91bGQgcmV0dXJuIHsibm9ybWFsIjogdHJ1ZSwgIm5vcm1hbF9jb250cm9s
IjogdHJ1ZX0sIGJ1dCBpbnN0ZWFkIHJldHVybmVkIHsiYW5vbnltb3VzIjp0cnVlLCJub3JtYWxf
Y29udHJvbCI6dHJ1ZSwibm9ybWFsIjp0cnVlLCJhbm9ueW1vdXNfY29udHJvbCI6dHJ1ZX0gZXhw
ZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kv
Y3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdp
bi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMt
ZXhwZWN0ZWQudHh0CmluZGV4IDYzNTViNjhkZTcwYi4uYzhiZjc1ZTdlYTg1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mt
b3JpZ2luLWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5o
dHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2lu
LWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0yMCw3ICsyMCw3IEBA
IFBBU1MgZGVkaWNhdGVkIHdvcmtlcjogc2NoZW1lID0gYmxvYiwgdmFsdWUgPSAqCiBQQVNTIGRl
ZGljYXRlZCB3b3JrZXI6IHNjaGVtZSA9IGJsb2IsIHZhbHVlID0gc2VsZgogRkFJTCBkZWRpY2F0
ZWQgd29ya2VyOiBzY2hlbWUgPSBibG9iLCB2YWx1ZSA9IChcKSBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCBmYWxzZSBidXQgZ290IHRydWUKIFBBU1Mgc2hhcmVkIHdvcmtlcjogd2l0aENvb3BDb2Vw
ID0gZmFsc2UKLVBBU1Mgc2hhcmVkIHdvcmtlcjogd2l0aENvb3BDb2VwID0gdHJ1ZQorRkFJTCBz
aGFyZWQgd29ya2VyOiB3aXRoQ29vcENvZXAgPSB0cnVlIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
IHRydWUgYnV0IGdvdCBmYWxzZQogUEFTUyBzZXJ2aWNlIHdvcmtlcjogd2l0aENvb3BDb2VwID0g
ZmFsc2UKIEZBSUwgc2VydmljZSB3b3JrZXI6IHdpdGhDb29wQ29lcCA9IHRydWUgYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1i
ZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1i
ZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAzMzk4
YmQ4ODkzMWIuLjRjODY2ZWIyOTI2MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kv
c2hhcmVkLXdvcmtlcnMuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9s
aWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMiw3ICsyLDcgQEAgVmVy
aWZ5IHRoZSBDcm9zcy1PcmlnaW4gRW1iZWRkZXIgUG9saWN5IGZvciBTaGFyZWQgV29ya2VycyBi
eSBwZXJmb3JtaW5nIGEgY3Jvc3MKIAogCiBQQVNTIGRlZmF1bHQgcG9saWN5IChkZXJpdmVkIGZy
b20gcmVzcG9uc2UpCi1GQUlMICJyZXF1aXJlLWNvcnAiIChkZXJpdmVkIGZyb20gcmVzcG9uc2Up
IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJmYWlsdXJlIiBidXQgZ290ICJzdWNjZXNzIgorUEFT
UyAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIHJlc3BvbnNlKQogUEFTUyBkZWZhdWx0IHBv
bGljeSAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBkdWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAt
IGJsb2IgVVJMKQogRkFJTCAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBk
dWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAtIGJsb2IgVVJMKSBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCAiZmFpbHVyZSIgYnV0IGdvdCAic3VjY2VzcyIKIFBBU1MgZGVmYXVsdCBwb2xpY3kgKGRl
cml2ZWQgZnJvbSBvd25lciBzZXQgZHVlIHRvIHVzZSBvZiBsb2NhbCBzY2hlbWUgLSBkYXRhIFVS
TCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5jZS5z
dWIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVy
aXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggNzViMWQzM2U1MjYwLi5iMmJmMmUz
YmZmM2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5j
ZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtl
ci1pbmhlcml0YW5jZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNiBAQAogQmxv
Y2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2Nv
bW1vbi9ibGFuay5odG1sCiBCbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93
d3cubG9jYWxob3N0Ojk0NDQvY29tbW9uL2JsYW5rLmh0bWwKIEJsb2NrZWQgYWNjZXNzIHRvIGV4
dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2NhbGhvc3Q6OTQ0NC9jb21tb24vYmxhbmsuaHRtbAot
QmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0
L2NvbW1vbi9ibGFuay5odG1sCiAKIFBBU1MgVGVzdCB0aGF0IGxvY2FsIHNjaGVtZSB3b3JrZXJz
IGluaGVyaXQgQ09FUDogcmVxdWlyZS1jb3JwIGZyb20gdGhlIGNyZWF0aW5nIGRvY3VtZW50CiBQ
QVNTIGJsb2IgVVJMIGRlZGljYXRlZCB3b3JrZXI6IFNhbWUgb3JpZ2luIHNob3VsZCBiZSBhbGxv
d2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJf
ZGF0YVVybC1leHBlY3RlZC50eHQKaW5kZXggOTk1YTA2MDE5Yjg0Li45YjU4MjBhYWU4Y2IgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9TaGFyZWRXb3JrZXJfZGF0YVVybC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRh
VXJsLWV4cGVjdGVkLnR4dApAQCAtMSwxMyArMSw1IEBACi1DT05TT0xFIE1FU1NBR0U6IEVycm9y
OiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3QgMQogCiAKLUhhcm5lc3MgRXJyb3Ig
KEZBSUwpLCBtZXNzYWdlID0gRXJyb3I6IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDIgYnV0IGdv
dCAxCi0KLVBBU1MgRGF0YSBVUkwgbm90IHNoYXJlZCBieSBjcm9zcy1vcmlnaW4gU2hhcmVkV29y
a2VycwotVElNRU9VVCBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtl
cnMgVGVzdCB0aW1lZCBvdXQKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBFcnJv
cjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290IDEKLQogUEFTUyBEYXRhIFVSTCBu
b3Qgc2hhcmVkIGJ5IGNyb3NzLW9yaWdpbiBTaGFyZWRXb3JrZXJzCi1USU1FT1VUIERhdGEgVVJM
cyBzaGFyZWQgYnkgc2FtZS1vcmlnaW4gU2hhcmVkV29ya2VycyBUZXN0IHRpbWVkIG91dAorUEFT
UyBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtlcnMKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQK
aW5kZXggNTc2ZTZkMmI3ZWQyLi40YTI2YmU5MjlhOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13
b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVk
LXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMg
QEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0
Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkK
IAogUEFTUyBTdGF0aWMgaW1wb3J0LgogRkFJTCBTdGF0aWMgaW1wb3J0IChjcm9zcy1vcmlnaW4p
LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogIkltcG9ydGlu
ZyBhIG1vZHVsZSBzY3JpcHQgZmFpbGVkLiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXIt
aW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29y
a2VyLWltcG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CmluZGV4IDRmODY0
MWU1MTQ4MC4uMjk5N2Y3ZTFmMzA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9y
dC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3Jr
ZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwz
IEBACi1DT05TT0xFIE1FU1NBR0U6IE9yaWdpbiBudWxsIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vz
cy1Db250cm9sLUFsbG93LU9yaWdpbi4gU3RhdHVzIGNvZGU6IDIwMAogCiBIYXJuZXNzIEVycm9y
IChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtl
ci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXIt
aW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQKaW5kZXggZWFjN2Y5NWRlNmYyLi5j
YmMwNDI5ZTBjNzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJs
LndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11
cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRv
IGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVz
L3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkKIAogSGFybmVzcyBFcnJvciAoVElN
RU9VVCksIG1lc3NhZ2UgPSBudWxsCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ct
ZXhwZWN0ZWQudHh0CmluZGV4IDU3NmU2ZDJiN2VkMi4uNGEyNmJlOTI5YThkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9k
dWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3No
YXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1C
bG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQz
L3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LW9uLWxvYWQtc2NyaXB0LnB5CiAKIFBB
U1MgU3RhdGljIGltcG9ydC4KIEZBSUwgU3RhdGljIGltcG9ydCAoY3Jvc3Mtb3JpZ2luKS4gcHJv
bWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6ICJJbXBvcnRpbmcgYSBt
b2R1bGUgc2NyaXB0IGZhaWxlZC4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlv
bnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNy
ZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAppbmRleCBlMWJlZGY1NDMwZWYuLmE3MGYwNWFmNTRmNCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQu
dHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHA6
Ly93d3cxLmxvY2FsaG9zdDo4ODAwL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LWNy
ZWRlbnRpYWxzLnB5CiAKIEhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRp
Y3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhwZWN0ZWQudHh0CmluZGV4IDAxOGRiNjA0NTY5ZC4u
Y2ZlNDY1NTY3NWNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVkLnR4dApAQCAt
MSw1ICsxLDMgQEAKIAotSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0K
LU5PVFJVTiBzaGFyZWQgd29ya2VyIHdpdGggbXVsdGlwbGUgZG9jdW1lbnRzCitQQVNTIHNoYXJl
ZCB3b3JrZXIgd2l0aCBtdWx0aXBsZSBkb2N1bWVudHMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA4
LWV4cGVjdGVkLnR4dAppbmRleCA5N2E0ZTdhNzNhNjMuLjA5ZjY3MmQxYzYyMSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3Nl
bWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSwzIEBACiAKLUhhcm5lc3Mg
RXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1USU1FT1VUIG1lc3NhZ2VjaGFubmVs
IGluIHNoYXJlZCB3b3JrZXIgVGVzdCB0aW1lZCBvdXQKK1BBU1MgbWVzc2FnZWNoYW5uZWwgaW4g
c2hhcmVkIHdvcmtlcgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRv
dy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50
eHQKaW5kZXggYTA4OWMyMjQ4OWUyLi5kMzlhNTUwODRkYzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2Vy
LWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJs
b2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw3IEBACiAKIEhhcm5lc3MgRXJy
b3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAogCi1GQUlMIENyZWF0aW5nIGEgc2hhcmVkIHdv
cmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJ3b3Jr
ZXJfT0tfMiIgYnV0IGdvdCAid29ya2VyX09LXzEiCi1QQVNTIENyZWF0aW5nIGEgc2hhcmVkIHdv
cmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MgaW1tZWRpYXRlbHkgYmVmb3JlIHJldm9raW5nLgot
VElNRU9VVCBDb25uZWN0aW5nIHRvIGEgc2hhcmVkIHdvcmtlciBvbiBhIHJldm9rZWQgYmxvYiBV
Ukwgd29ya3MuIFRlc3QgdGltZWQgb3V0CitQQVNTIENyZWF0aW5nIGEgc2hhcmVkIHdvcmtlciBm
cm9tIGEgYmxvYiBVUkwgd29ya3MuCitUSU1FT1VUIENyZWF0aW5nIGEgc2hhcmVkIHdvcmtlciBm
cm9tIGEgYmxvYiBVUkwgd29ya3MgaW1tZWRpYXRlbHkgYmVmb3JlIHJldm9raW5nLiBUZXN0IHRp
bWVkIG91dAorTk9UUlVOIENvbm5lY3RpbmcgdG8gYSBzaGFyZWQgd29ya2VyIG9uIGEgcmV2b2tl
ZCBibG9iIFVSTCB3b3Jrcy4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9u
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25zLWV4cGVjdGVkLnR4dApp
bmRleCA2ZmZlZTI3MzkwZDkuLmFlNDViNGQyNzM5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFt
ZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9u
cy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgVGVzdCB0aGUgbmFtZSBwcm9w
ZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBtaXhpbmcgY29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29u
c3RydWN0b3Igc3RyaW5ncyBFcnJvcjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290
IDEKK1BBU1MgVGVzdCB0aGUgbmFtZSBwcm9wZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBtaXhpbmcg
Y29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29uc3RydWN0b3Igc3RyaW5ncwogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW9wdGlv
bnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CmluZGV4IGY2NTY5NDYxNTBkYi4uNGY5OWExMzQwOWU3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dApAQCAtMSwyOCArMSwyNiBA
QAogCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKLQotVElNRU9VVCBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogZGVmYXVsdCB0byBtb2R1bGUgVGVzdCB0aW1lZCBvdXQKLU5PVFJVTiBDb25u
ZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUg
YmxvY2tlZDogbW9kdWxlIHRvIGRlZmF1bHQKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3
b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogY2xhc3NpYyB0
byBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJl
bnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGNsYXNzaWMKLU5PVFJVTiBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogZGVmYXVsdCB0byBvbWl0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogZGVmYXVsdCB0byBpbmNsdWRlIGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNo
YXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21p
dCB0byBkZWZhdWx0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3Jr
ZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBzYW1l
LW9yaWdpbiBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdp
dGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVkZSBp
biBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVy
ZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIG9taXQgaW4gY2xh
c3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIGNsYXNz
aWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGluIGNsYXNzaWMKLU5P
VFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBz
aG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBvbWl0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25u
ZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUg
YmxvY2tlZDogaW5jbHVkZSB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IGRlZmF1bHQgdG8gb21pdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNo
YXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVm
YXVsdCB0byBpbmNsdWRlIGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRl
ZmF1bHQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGgg
ZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gc2FtZS1vcmlnaW4g
aW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVy
ZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVkZSBpbiBtb2R1bGUK
LU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9u
cyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBtb2R1bGUKLU5PVFJV
TiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91
bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gaW5jbHVkZSBpbiBtb2R1bGUKLU5PVFJVTiBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3Rp
bmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9j
a2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1
ZGUgdG8gc2FtZS1vcmlnaW4gaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRv
IG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQg
b3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGRlZmF1bHQKK1BBU1MgQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IGNsYXNzaWMgdG8gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBtb2R1bGUgdG8gY2xh
c3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBvbWl0IGluIGNsYXNzaWMKK1BBU1Mg
Q29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxk
IGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gaW5jbHVkZSBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3Rp
bmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9j
a2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJl
ZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0
byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGluY2x1
ZGUgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZm
ZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBj
bGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIGNsYXNz
aWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlv
bnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gZGVmYXVsdCBpbiBjbGFzc2ljCitQQVNT
IENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3Vs
ZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogaW5jbHVkZSB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8g
c2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBk
ZWZhdWx0IHRvIG9taXQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIGlu
Y2x1ZGUgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRp
ZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4gbW9k
dWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIHNhbWUtb3JpZ2luIGluIG1vZHVsZQorUEFT
UyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91
bGQgYmUgYmxvY2tlZDogb21pdCB0byBpbmNsdWRlIGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUt
b3JpZ2luIHRvIGluY2x1ZGUgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRv
IGRlZmF1bHQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4g
bW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIHNhbWUtb3JpZ2luIGluIG1vZHVs
ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Bl
bi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dAppbmRleCAx
ZTJkMzk5MmY2ZDUuLjU5Y2FjYTQ4NmY4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3
b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1v
cmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0
ZXJuYWwgVVJMIGh0dHA6Ly93d3cyLmxvY2FsaG9zdDo4ODAwL3hoci9yZXNvdXJjZXMvaW5zcGVj
dC1oZWFkZXJzLnB5P2ZpbHRlcl9uYW1lPW9yaWdpbiZjb3JzCiAKIEZBSUwgUmVmZXJlciBoZWFk
ZXIgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIlJlZmVyZXI6IGh0dHA6Ly9sb2NhbGhvc3Q6ODgw
MC94aHIvcmVzb3VyY2VzL3dvcmtlcnhoci1vcmlnaW4tcmVmZXJyZXIuanNcbiIgYnV0IGdvdCAi
UmVmZXJlcjogaHR0cDovL2xvY2FsaG9zdDo4ODAwL3hoci9yZXNvdXJjZXMvcmVkaXJlY3QucHk/
bG9jYXRpb249d29ya2VyeGhyLW9yaWdpbi1yZWZlcnJlci5qc1xuIgogRkFJTCBPcmlnaW4gaGVh
ZGVyIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJPcmlnaW46IGh0dHA6Ly9sb2NhbGhvc3Q6ODgw
MFxuIiBidXQgZ290ICIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sx
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggODZkZjI3ZDViYWJiLi42NDdjNGM4NWY0YWUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTY2LDYgKzY2LDg5IEBA
IGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNhY2hlLWdldFVzZXJNZWRpYS1wZW5kaW5nLXBy
b21pc2UuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUtbWVk
aWFzdHJlYW0uaHRtbCBbIFNraXAgXQogbWVkaWEvYXVkaW8tc2Vzc2lvbi1jYXRlZ29yeS5odG1s
IFsgU2tpcCBdCiAKKyMgU2hhcmVkIHdvcmtlcnMgYXJlIG9ubHkgaW1wbGVtZW50ZWQgZm9yIFdl
YktpdDIuCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHkt
cG9saWN5L2dlbi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLWNsYXNz
aWMuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nv
bnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXNlbGYvc2hh
cmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2Ny
aXB0LXNyYy1zZWxmL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90
b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHAu
aHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3
b3JrZXItY2xhc3NpYy5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC9zY3JpcHQt
c3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90
b3AuaHR0cC1ycC93b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cC5odG1s
IFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJp
dHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLWNs
YXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1zZWxm
L3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93
b3JrZXItc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHAuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItY2xhc3Np
Yy5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nv
bnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXNlbGYvc2hhcmVk
d29ya2VyLWNsYXNzaWMuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3Jj
LXNlbGYvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1l
dGEvc2NyaXB0LXNyYy1zZWxmL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cC5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0
dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50
LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3
b3JrZXItY2xhc3NpYy5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3Jj
LXNlbGYvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0
YS93b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cC5o
dG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1v
ZHVsZS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLXdpbGRjYXJk
L3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29y
a2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwcy5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2dlbi90b3AubWV0YS93b3JrZXItc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0
cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLXdpbGRjYXJkL3NoYXJlZHdv
cmtlci1tb2R1bGUuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtl
ci1jb25uZWN0LXNyYy5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtl
ci1yZXBvcnQtb25seS5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtl
ci1zY3JpcHQtc3JjLnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3NhbmRib3gvc2hhcmVkLXdvcmtlci1zYW5k
Ym94Lmh0bWwgIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L3NjcmlwdC1zcmMvd29ya2VyLWRhdGEtc2V0LXRpbWVvdXQuc3Vi
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvd29ya2VyLXNyYy9zaGFyZWQtY2hpbGQuc3ViLmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
Z2VuL3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItaW1wb3J0LWRhdGEu
aHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXNlbGYvc2hhcmVk
d29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3Nj
cmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2Vu
L3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRh
Lmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy13aWxkY2FyZC9z
aGFyZWR3b3JrZXItaW1wb3J0LWRhdGEuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAt
cnAvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHBzLmh0bWwgWyBT
a2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtbm9uZS9zaGFyZWR3b3JrZXItY2xhc3Np
Yy5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtbm9uZS9zaGFy
ZWR3b3JrZXItY2xhc3NpYy5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3Jr
ZXItc3JjLW5vbmUvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHAuaHRtbCBbIFNraXAgXQor
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9n
ZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1ub25lL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5o
dHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLW5vbmUvc2hhcmVk
d29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1z
cmMtbm9uZS9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5o
dHRwLXJwL3dvcmtlci1zcmMtc2VsZi9zaGFyZWR3b3JrZXItaW1wb3J0LWRhdGEuaHR0cC5odG1s
IFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJp
dHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLWlt
cG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMt
c2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRw
LXJwL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHAuaHRt
bCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3Vy
aXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3b3Jr
ZXItaW1wb3J0LWRhdGEuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2Vy
LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4v
dG9wLmh0dHAtcnAvd29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHBz
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXIt
aW1wb3J0LWRhdGEuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXNl
bGYvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5t
ZXRhL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHBzLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWltcG9ydC1k
YXRhLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
b250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNyYy13aWxkY2FyZC9z
aGFyZWR3b3JrZXItaW1wb3J0LWRhdGEuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEv
c2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItbW9kdWxlLmh0
dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtbm9uZS9zaGFyZWR3b3Jr
ZXItY2xhc3NpYy5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtbm9u
ZS9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93
b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHAuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1ub25lL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5o
dHRwLmh0bWwJWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtbm9uZS9zaGFyZWR3b3Jr
ZXItaW1wb3J0LWRhdGEuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNy
Yy1ub25lL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0
YS93b3JrZXItc3JjLW5vbmUvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2dlbi90b3AubWV0YS93b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0
dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVk
d29ya2VyLWltcG9ydC1kYXRhLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2Vy
LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItaW1wb3J0LWRhdGEuaHR0cHMuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS93b3JrZXItc3JjL3NoYXJlZC1mYWxsYmFjay5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS93b3JrZXItc3Jj
L3NoYXJlZC1saXN0LnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLW5vbmUuc3Vi
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvd29ya2VyLXNyYy9zaGFyZWQtc2VsZi5zdWIuaHRtbCBbIFNraXAgXQor
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS93
b3JrZXItc3JjL3NoYXJlZC13b3JrZXItc3JjLWNoaWxkLWZhbGxiYWNrLWJsb2NrZWQuc3ViLmh0
bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvd29ya2VyLXNyYy9zaGFyZWQtd29ya2VyLXNyYy1jaGlsZC1mYWxsYmFjay5z
dWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50
LXNlY3VyaXR5LXBvbGljeS93b3JrZXItc3JjL3NoYXJlZC13b3JrZXItc3JjLWRlZmF1bHQtZmFs
bGJhY2suc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvd29ya2VyLXNyYy9zaGFyZWQtd29ya2VyLXNyYy1zY3Jp
cHQtZmFsbGJhY2suc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvd29ya2VyLXNyYy9zaGFyZWQtd29ya2VyLXNy
Yy1zZWxmLWZhbGxiYWNrLnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2ZldGNoL2FwaS9jb3JzL2RhdGEtdXJsLXNoYXJlZC13b3JrZXIuaHRtbCBbIFNr
aXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29mZmxp
bmUvbm8tYXBwY2FjaGUtaW4tc2hhcmVkLXdvcmtlcnMtaGlzdG9yaWNhbC5odHRwcy5odG1sIFsg
U2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3Nj
cmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudC9tb2R1bGUvZXZhbHVhdGlvbi1vcmRlci0xLW5v
dGhyb3ctc2hhcmVkd29ya2VyLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mvc2NyaXB0aW5nLTEvdGhlLXNjcmlwdC1lbGVtZW50L21v
ZHVsZS9ldmFsdWF0aW9uLW9yZGVyLTEtc2hhcmVkd29ya2VyLmh0bWwgWyBTa2lwIF0KK2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mvc2NyaXB0aW5nLTEvdGhl
LXNjcmlwdC1lbGVtZW50L21vZHVsZS9ldmFsdWF0aW9uLW9yZGVyLTItaW1wb3J0LXNoYXJlZHdv
cmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
c2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudC9tb2R1bGUvZXZhbHVhdGlv
bi1vcmRlci0zLWR5bmFtaWMtc2hhcmVkd29ya2VyLmh0bWwgWyBTa2lwIF0KKwogaHR0cC93cHQv
bWVkaWFyZWNvcmRlciBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9t
ZWRpYWNhcHR1cmUtcmVjb3JkIFsgU2tpcCBdCiBmYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS1tZWRp
YS1yZWNvcmRlci5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0
eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItaW1wb3J0c2NyaXB0cy5zdWItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3NjcmlwdC1zcmMvd29ya2VyLWltcG9ydHNj
cmlwdHMuc3ViLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjZlZWExYmVhYjViMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3Vy
aXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1pbXBvcnRzY3JpcHRzLnN1Yi1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw0IEBACisKK0ZBSUwgRGVkaWNhdGVkIHdvcmtlciBpbmhlcml0cyBDU1Ag
ZnJvbSBtYWluIGRvY3VtZW50IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJpbXBvcnRTY3JpcHRz
IGFsbG93ZWQiIGJ1dCBnb3QgImltcG9ydFNjcmlwdHMgYmxvY2tlZCIKK0ZBSUwgU2hhcmVkIHdv
cmtlciBkZWxpdmVycyBpdHMgb3duIENTUCBTaGFyZWQgd29ya2VycyBhcmUgbm90IHN1cHBvcnRl
ZAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93
b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5
LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91dC5zdWItZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNjc1YTNhOGUwZjBiCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3NjcmlwdC1zcmMvd29y
a2VyLXNldC10aW1lb3V0LnN1Yi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK0ZBSUwg
RGVkaWNhdGVkIHdvcmtlciBpbmhlcml0cyBDU1AgZnJvbSBtYWluIGRvY3VtZW50IGFzc2VydF9l
cXVhbHM6IGV4cGVjdGVkICJzZXRUaW1lb3V0IGFsbG93ZWQiIGJ1dCBnb3QgInNldFRpbWVvdXQg
YmxvY2tlZCIKK0ZBSUwgU2hhcmVkIHdvcmtlciBkZWxpdmVycyBpdHMgb3duIENTUCBTaGFyZWQg
d29ya2VycyBhcmUgbm90IHN1cHBvcnRlZAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vy
cy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29mZmxpbmUvYXBwY2FjaGUvd29ya2Vycy9hcHBjYWNo
ZS13b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uN2YyY2Q1MThjN2U3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJv
d3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitDT05TT0xFIE1FU1NBR0U6IEFwcGxpY2F0aW9uQ2Fj
aGUgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBTZXJ2aWNlV29ya2VycyBpbnN0ZWFkLgorCitQ
QVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIGNhY2hlZCBzY3JpcHQKK1BBU1MgRGVkaWNhdGVk
IHdvcmtlciBvZiB0aGUgZmFsbGJhY2tlZCBzY3JpcHQKK1BBU1MgRGVkaWNhdGVkIHdvcmtlciBv
ZiB0aGUgbm90LWluLWNhY2hlIHNjcmlwdAorRkFJTCBTaGFyZWQgd29ya2VyIG9mIHRoZSBjYWNo
ZWQgc2NyaXB0IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBv
YmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBTaGFyZWQgd29ya2VycyBhcmUgbm90IHN1cHBvcnRl
ZCIKK0ZBSUwgU2hhcmVkIHdvcmtlciBvZiB0aGUgZmFsbGJhY2tlZCBzY3JpcHQgcHJvbWlzZV90
ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiTm90U3VwcG9ydGVk
RXJyb3I6IFNoYXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkIgorRkFJTCBTaGFyZWQgd29y
a2VyIG9mIHRoZSBub3QtaW4tY2FjaGUgc2NyaXB0IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJl
amVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBTaGFyZWQgd29y
a2VycyBhcmUgbm90IHN1cHBvcnRlZCIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudC9tb2R1bGUvaW1wb3J0LW1ldGEvaW1wb3J0
LW1ldGEtdXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9zY3JpcHRpbmctMS90
aGUtc2NyaXB0LWVsZW1lbnQvbW9kdWxlL2ltcG9ydC1tZXRhL2ltcG9ydC1tZXRhLXVybC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iMjQ5OWZh
ZGNiNmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mvc2NyaXB0aW5nLTEv
dGhlLXNjcmlwdC1lbGVtZW50L21vZHVsZS9pbXBvcnQtbWV0YS9pbXBvcnQtbWV0YS11cmwtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKKworUEFTUyBpbXBvcnQubWV0YS51cmwgaW4gYSBy
b290IGV4dGVybmFsIHNjcmlwdAorUEFTUyBpbXBvcnQubWV0YS51cmwgaW4gYSBkZXBlbmRlbnQg
ZXh0ZXJuYWwgc2NyaXB0CitQQVNTIGltcG9ydC5tZXRhIGlzIGFuIG9iamVjdAorUEFTUyBpbXBv
cnQubWV0YSBpcyBleHRlbnNpYmxlCitQQVNTIGltcG9ydC5tZXRhJ3MgcHJvcGVydGllcyBhcmUg
d3JpdGFibGUsIGNvbmZpZ3VyYWJsZSwgYW5kIGVudW1lcmFibGUKK1BBU1MgaW1wb3J0Lm1ldGEu
dXJsIHdoZW4gaW1wb3J0aW5nIHRoZSBtb2R1bGUgd2l0aCBkaWZmZXJlbnQgZnJhZ21lbnRzCitQ
QVNTIGltcG9ydC5tZXRhLnVybCBpbiBhIHJvb3QgaW5saW5lIHNjcmlwdAorUEFTUyBpbXBvcnQu
bWV0YS51cmwgYXQgdG9wLWxldmVsIG1vZHVsZSBEZWRpY2F0ZWRXb3JrZXIKK0ZBSUwgaW1wb3J0
Lm1ldGEudXJsIGF0IHRvcC1sZXZlbCBtb2R1bGUgU2hhcmVkV29ya2VyIHByb21pc2VfdGVzdDog
VW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9y
OiBTaGFyZWQgd29ya2VycyBhcmUgbm90IHN1cHBvcnRlZCIKKwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCA3OTJhMDBmOWVhMWEuLjQ1N2M0YWE5YjFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAg
LTE3OSw2ICsxNzksNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0lOQ0xVREVfRElSRUNUT1JJRVMK
ICAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQiCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3dv
cmtlcnMvc2hhcmVkIgorICAgICIke1dFQkNPUkVfRElSfS93b3JrZXJzL3NoYXJlZC9jb250ZXh0
IgogICAgICIke1dFQkNPUkVfRElSfS93b3JrbGV0cyIKICAgICAiJHtXRUJDT1JFX0RJUn0veG1s
IgogICAgICIke1dFQkNPUkVfRElSfS94bWwvcGFyc2VyIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXgg
NWFjYzJkOWRmZTFlLi5mY2UwOTliYWRmZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTk1MSwx
MiArMTk1MSwxNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
d29ya2Vycy9TY3JpcHRCdWZmZXIuaAogICAgIHdvcmtlcnMvV29ya2VyQW5pbWF0aW9uQ29udHJv
bGxlci5oCiAgICAgd29ya2Vycy9Xb3JrZXJEZWJ1Z2dlclByb3h5LmgKKyAgICB3b3JrZXJzL1dv
cmtlckZldGNoUmVzdWx0LmgKICAgICB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCiAg
ICAgd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCiAgICAgd29ya2Vycy9Xb3JrZXJMb2FkZXJQ
cm94eS5oCisgICAgd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oCisgICAgd29ya2Vycy9Xb3Jr
ZXJPcHRpb25zLmgKICAgICB3b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKICAg
ICB3b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaAogICAgIHdvcmtlcnMv
V29ya2VyT3JXb3JrbGV0VGhyZWFkLmgKKyAgICB3b3JrZXJzL1dvcmtlclJlcG9ydGluZ1Byb3h5
LmgKICAgICB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuaAogICAgIHdvcmtlcnMvV29ya2VyU2NyaXB0
TG9hZGVyLmgKICAgICB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlckNsaWVudC5oCkBAIC0yMDAw
LDYgKzIwMDQsMTUgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAg
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKICAg
ICB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKIAorICAgIHdvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaAorICAgIHdvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlcktleS5oCisgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbi5oCisgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5o
CisgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJvdmlkZXIuaAorCisgICAgd29ya2Vy
cy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oCisgICAgd29ya2Vy
cy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oCisKICAgICB4bWwvQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyLmgKICAgICB4bWwvWFBhdGhFeHByZXNzaW9uLmgKICAgICB4bWwv
WFBhdGhOU1Jlc29sdmVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZjY2Y2NmOGYwNmE1Li45YWI4NjA0
YzlkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yNzg2LDEwICsyNzg2LDEyIEBAIHdvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
ci5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAotd29ya2Vy
cy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5jcHAKLXdvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlclByb3h5LmNwcAord29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bi5jcHAKK3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmNwcAogd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyVGhyZWFkLmNwcAord29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlci5jcHAKK3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFk
UHJveHkuY3BwCiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKIHdvcmtsZXRz
L1dvcmtsZXQuY3BwCiB3b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWNiZjg3
NmUyNThmLi4xOGRmZWMwNjgyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkwMyw3ICs5MDMsNyBAQAogCQkyRTQzNDY0QjBG
NTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2MzkwRjU0NkE4MjAwQjBGMUJB
IC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuaCAqLzsgfTsKIAkJMkU0MzQ2NEQwRjU0NkE4MjAw
QjBGMUJBIC8qIFdvcmtlckxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzQjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyTG9jYXRp
b24uaCAqLzsgfTsKIAkJMkU0MzQ2NTAwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck1lc3NhZ2lu
Z1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RTQzNDYzRTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyTWVzc2FnaW5nUHJveHkuaCAqLzsgfTsK
LQkJMkU0MzQ2NTEwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzRjBGNTQ2QTgy
MDBCMEYxQkEgLyogV29ya2VyT2JqZWN0UHJveHkuaCAqLzsgfTsKKwkJMkU0MzQ2NTEwRjU0NkE4
MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzRjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
T2JqZWN0UHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkyRTQzNDY1MzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyUnVuTG9vcC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2NDEwRjU0NkE4
MjAwQjBGMUJBIC8qIFdvcmtlclJ1bkxvb3AuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTQzNDY1NTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
VGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RTQzNDY0MzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyVGhyZWFkLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU3NTg0MUUxMjc3OUFEQTAwNjI2
MjhCIC8qIEZpbGVSZWFkZXJMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJFNzU4NDFCMTI3NzlBREEwMDYyNjI4QiAvKiBGaWxlUmVhZGVyTG9h
ZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTExMjUsNyArMTEyNSw3IEBACiAJCTQxNkEwNkExMjNDQ0FEMDMwMDM0NzEwOSAvKiBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE2QTA2OTYyM0NDQUE5RjAwMzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNDE2RDc1QTIyMEM2NTFBNTAwRDAyRDJDIC8qIE5ldHdvcmtMb2FkSW5mb3Jt
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
NkQ3NTlGMjBDNjQ0MTMwMEQwMkQyQyAvKiBOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTBCM0EyMDlC
QzNDQjAwNEE5NUQ5IC8qIEZldGNoSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTBCMzcyMDlCQzNDMjAwNEE5NUQ5IC8qIEZldGNo
SWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTI5QTUx
MDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggKi87IH07CisJCTQxNkUy
OUE2MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTI5QTUxMDJGQTk2MjAwN0ZD
MTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgxQkJEMTJERjAwMEEzRjY0IC8qIFJlYWRh
YmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjREOSAvKiBSZWFkYWJsZVN0
cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgxQkJEMTJERjAwMEEzRjY1IC8qIEpTRE9NQmluZGlu
Z0ludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0REEgLyogSlNET01CaW5kaW5nSW50ZXJu
YWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0MTZFNkZFODFCQkQxMkRGMDAwQTNGNzQgLyogVHJhbnNmb3JtU3RyZWFtSW50ZXJu
YWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjRFQSAvKiBUcmFuc2Zvcm1TdHJlYW1JbnRlcm5hbHNC
dWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0xMzIwLDYgKzEzMjAsOCBAQAogCQk0NjBFMzA3NzIyMkY0RjAzMDA5QTA2MDYgLyogRGV2
aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1RUREOUYyMjJGNEVDMzAwQjQ2RTE2IC8q
IERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjIxOEFDQjFGNzJENjRFMDA1
NzRGQkUgLyogRE9NSGlnaFJlc1RpbWVTdGFtcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFMDE2QUQxRjcyRDYxRTAwMjgyQjJDIC8qIERPTUhpZ2hS
ZXNUaW1lU3RhbXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0NjI3M0NBRjI2MEU1OUVGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjI3M0NBQzI2MEU1
OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDYyN0ZGNTkyNzlCODI0OTAwQUEzOTE2IC8qIFNo
YXJlZFdvcmtlclRocmVhZFByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjI3RkY1ODI3OUI4MjQ2MDBBQTM5MTYgLyogU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk0NjI3RkY1QjI3OUI4N0FGMDBBQTM5MTYgLyogU2hhcmVkV29ya2VySWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYyN0ZGNUEy
NzlCODdBMjAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlcklkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjJDN0Y0MTI3NTZEQkU0MDBE
MDgzQzggLyogV2ViTG9ja0lkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzgwMkIyMjc0NzExODUwMERBOUZCNiAvKiBXZWJMb2NrSWRl
bnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQ2MkU0QzUwMjYxNkE4MTEwMDNBMkM2NyAvKiBTY3JpcHRCdWZmZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MkU0QzREMjYxNkE4MDEwMDNB
MkM2NyAvKiBTY3JpcHRCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0NjM0QzcyQzI3NTdEQUIyMDAyNkE4MTUgLyogV2ViTG9ja01hbmFn
ZXJTbmFwc2hvdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY3ODAyQjAyNzQ3MTE3QjAwREE5RkI2IC8qIFdlYkxvY2tNYW5hZ2VyU25hcHNob3QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM0MSwx
NSArMTM0MywxOCBAQAogCQk0NjczMDIwMjFDNEVGRTc4MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNE
dXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjczMDIwMTFDNEVGRTY2MDBCQ0IzNTcgLyogSWdub3JlT3Bl
bnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggKi87IH07CiAJCTQ2N0E2OEQ3Mjc1RUE5
OTEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0E2OEQ0Mjc1RUE5OEIwMDlCMzFDNSAvKiBTaGFy
ZWRXb3JrZXJUaHJlYWQuaCAqLzsgfTsKIAkJNDY3QTY4RDgyNzVFQTk5NTAwOUIzMUM1IC8qIFNo
YXJlZFdvcmtlclNjcmlwdExvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDY3QTY4RDUyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNj
cmlwdExvYWRlci5oICovOyB9OwotCQk0NjdBNjhEOTI3NUVBOTk4MDA5QjMxQzUgLyogU2hhcmVk
V29ya2VyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2N0E2OEQ2Mjc1RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJQcm94eS5oICovOyB9
OwotCQk0NjdBNjhEQTI3NUVBOTlDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3QTY4RDIyNzVF
QTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCAqLzsgfTsKIAkJNDY4MkQyMDAx
Rjc5NzgzMDAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgyRDFGRjFGNzk3ODIzMDBDODYz
REIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjgzNDRFMDFFRERGQUFBMDBCNzc5NUIgLyogRE9N
UmVjdExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODNERjQwMjc2N0RGOTgwMDdE
MDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzREYzRTI3NjdERjk4MDA3RDAwQzggLyog
SlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oICovOyB9OwogCQk0NjgzREY0MTI3NjdFOTFB
MDA3RDAwQzggLyogU2hhZG93UmVhbG1HbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4M0RGM0IyNzY3REYyNjAwN0QwMEM4IC8qIFNo
YWRvd1JlYWxtR2xvYmFsU2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0Njg4RUUzQzI2REQyNjEwMDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5N
b2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njg4
RUUzQTI2REQyNjBDMDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5Nb2RlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDY5NDNEQzgyNzYzRjgxMjAwNEI2
MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTQzREM1Mjc2M0Y4MEQwMDRCNjEwRSAvKiBT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDY5NDNEQzkyNzYzRjgxNzAwNEI2MTBFIC8qIFNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2OTQzREM3Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNDY5NDNEQ0EyNzYzRjgxQzAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlclByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0
M0RDNDI3NjNGODBEMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyUHJvdmlkZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0Njk4NUYyMzI3QTRBNkFE
MDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk4NUYyMjI3QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVkV29y
a2VyS2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDY5Q0NDRkUyNjlEMDIxQzAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OUNDQ0ZDMjY5RDAyMDIw
MDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY5RDc3QjgyNzAxNjI1MTAwMTQyRkE2IC8qIE5hdmln
YXRpb25SZXF1ZXN0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2OUQ3N0I2MjcwMTYyNTAwMDE0MkZBNiAvKiBOYXZpZ2F0aW9uUmVxdWVzdGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDZBNzhC
MzQyNzk5QkQ3MTAwMTE1NEZFIC8qIFdvcmtlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMUIxRDI2MjZGMThBNEIwMDg4MkRBMiAvKiBX
b3JrZXJPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDZBQUFBM0QyNUQzNjMyMDAwQkFGNDJGIC8qIEF1ZGlvRmlsZVJlYWRlckNvY29h
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkFBQUEz
QTI1RDM2MzE0MDBCQUY0MkYgLyogQXVkaW9GaWxlUmVhZGVyQ29jb2EuaCAqLzsgfTsKIAkJNDZC
NjNGNkMxQzZFOEQxOTAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjYzRjZCMUM2RThDREYwMDJF
OTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCNjUwREQyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJ
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkI2NTBEQjIyOTYyNjI3MDBGRDhBQTQgLyogUGFnZUlkZW50aWZpZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM2Niw2ICsxMzcxLDcg
QEAKIAkJNDZCRDA1QzYyNUJCNkU2QzAwMjI1RjMwIC8qIEV2ZW50TGlzdGVuZXJPcHRpb25zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkJEMDVDMzI1
QkI2RTRFMDAyMjVGMzAgLyogRXZlbnRMaXN0ZW5lck9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkMwOTYyMTIzRDc4REQ2MDA2NTdD
MDkgLyogSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDMDk2MjAyM0Q3OERENjAwNjU3QzA5IC8qIEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0NkMzNzY2MjIwODUxNzdEMDBDNzM4MjkgLyogSlNSZW1vdGVET01XaW5kb3cu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzM3NjYx
MjA4NTE3NkQwMEM3MzgyOSAvKiBKU1JlbW90ZURPTVdpbmRvdy5oICovOyB9OworCQk0NkM0MTY5
QjI3OUEwNEM3MDAyNTJDM0IgLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MjZCNDc1Mjc5QTAzRDIw
MEFFRjBCMiAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QzY5NkNCMUU3MjA1RjcwMDU5Nzkz
NyAvKiBDUFVNb25pdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkM2OTZDOTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QzY5NkNDMUU3MjA1
RkMwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5NkNBMUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9y
LmNwcCAqLzsgfTsKIAkJNDZDODNFRkUxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM4M0VGQzFB
OUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM3Myw2ICsxMzc5LDcgQEAKIAkJNDZEMDAwNDAy
NkEwRkVCMzAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkQwMDAzRTI2QTBGRTZGMDBEMUJGMUUgLyogU3VibWl0
RXZlbnQuaCAqLzsgfTsKIAkJNDZEQkI2NTAxQUI4Qzk2RjAwRDlBODEzIC8qIFBvd2VyT2JzZXJ2
ZXJNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
REJCNjRFMUFCOEM5NkYwMEQ5QTgxMyAvKiBQb3dlck9ic2VydmVyTWFjLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZERDkzRDcyNjlERTc1NjAw
MUFGRDg4IC8qIEJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkREOTNENTI2OURFNzRCMDAxQUZEODggLyog
QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk0NkREQkRBMzI3QTlDNzE2MDA3NzM0N0EgLyogV29ya2Vy
RmV0Y2hSZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2RERCREExMjdBOUM3MEMwMDc3MzQ3QSAvKiBXb3JrZXJGZXRjaFJlc3VsdC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2REU5QkI1MjY5
REY5M0UwMDI0QzVBNiAvKiBCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REU5QkI0MjY5REY5MzIwMDI0QzVB
NiAvKiBCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkRGRjQ5ODFEQzI2MDMxMDBCODBCNDggLyogU2hh
ZG93Um9vdE1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2REZGNDk2MURDMjYwMTMwMEI4MEI0OCAvKiBTaGFkb3dSb290TW9kZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2REZGNDlDMURDMjYy
MEIwMEI4MEI0OCAvKiBKU1NoYWRvd1Jvb3RNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRGRjQ5QTFEQzI2MUY5MDBCODBCNDggLyogSlNTaGFk
b3dSb290TW9kZS5oICovOyB9OwpAQCAtOTE4MCw5ICs5MTg3LDEzIEBACiAJCTQ2MENCRjMzMUQ0
QkNDRkUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01XaW5kb3dQcm9wZXJ0aWVzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYwQ0JGMzQxRDRCQ0NGRTAwOTJFODhFIC8qIEpTRE9N
V2luZG93UHJvcGVydGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RP
TVdpbmRvd1Byb3BlcnRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYwRDE5
NDQxRkNFMjFERDAwQzNEQjg1IC8qIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2VydmljZVdvcmtlckds
b2JhbFNjb3BlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYyNkI0
NzUyNzlBMDNEMjAwQUVGMEIyIC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2MjczQzIxMjdBMUNCQzcwMDZBMTVCOSAvKiBKU0F1ZGlvV29ya2xldFBy
b2Nlc3NvckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0F1ZGlvV29ya2xldFByb2Nl
c3NvckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MjczQ0FDMjYw
RTU5REYwMDZGQUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1dTY3JpcHRTdG9yYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2MjczQ0FFMjYwRTU5REYwMDZGQUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1dTY3JpcHRTdG9yYWdlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYyN0ZGNTcyNzlCODI0NTAwQUEzOTE2IC8qIFNo
YXJlZFdvcmtlclRocmVhZFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDYyN0ZGNTgyNzlCODI0NjAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlclRocmVhZFBy
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclRocmVh
ZFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MjdGRjVBMjc5Qjg3QTIw
MEFBMzkxNiAvKiBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlcklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDYyRTRDNEQyNjE2QTgwMTAwM0EyQzY3IC8qIFNjcmlwdEJ1ZmZlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRCdWZmZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYyRTRDNEYyNjE2QTgwMTAwM0EyQzY3IC8qIFNjcmlwdEJ1
ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRCdWZm
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjM0NTkyQjFBQzIyNzEwMDBF
Q0I3MUMgLyogUG93ZXJPYnNlcnZlck1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQb3dlck9ic2VydmVyTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTkyMjksMTQgKzkyNDAsMTAgQEAKIAkJNDY3MzAyMDExQzRFRkU2NjAwQkNCMzU3IC8q
IElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3ODAyQjAyNzQ3MTE3QjAwREE5
RkI2IC8qIFdlYkxvY2tNYW5hZ2VyU25hcHNob3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViTG9ja01hbmFnZXJTbmFwc2hvdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0Njc4MDJCMjI3NDcxMTg1MDBEQTlGQjYgLyogV2ViTG9ja0lkZW50aWZpZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTG9ja0lkZW50aWZpZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDY3QTY4Q0YyNzVFQTk4OTAwOUIzMUM1IC8qIFNo
YXJlZFdvcmtlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb3h5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3QTY4RDAyNzVFQTk4OTAwOUIz
MUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRX
b3JrZXJUaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdBNjhEMTI3
NUVBOThBMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTQ2N0E2OEQyMjc1RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5h
Z2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlck1hbmFnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNDY3QTY4RDMyNzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtl
ck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyTWFuYWdlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2N0E2OEQ0Mjc1RUE5OEIwMDlCMzFDNSAv
KiBTaGFyZWRXb3JrZXJUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFk
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2N0E2OEQ1Mjc1RUE5OEMwMDlCMzFD
NSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2N0E2OEQ2
Mjc1RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
aGFyZWRXb3JrZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgyRDFG
RjFGNzk3ODIzMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzQ0REMxRURERkE1RjAwQjc3OTVCIC8qIERPTVJl
Y3RMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBET01SZWN0TGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2ODM0NEREMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBET01SZWN0TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC05MjQ5LDYgKzkyNTYsMTIgQEAKIAkJNDY4M0RGM0UyNzY3REY5ODAwN0QwMEM4IC8qIEpT
U2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0Njg4RUUzQTI2REQyNjBDMDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5Nb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENyb3NzT3JpZ2luTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjhCOEJERTI1Q0M4NDkzMDBGNjc4MjIgLyogSlNCYXNlQXVkaW9Db250ZXh0Q3Vz
dG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQmFzZUF1ZGlvQ29udGV4dEN1c3RvbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzREMyMjc2M0Y4MEMwMDRCNjEwRSAv
KiBTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3Jr
ZXJQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzREM0Mjc2
M0Y4MEQwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
aGFyZWRXb3JrZXJQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0
M0RDNTI3NjNGODBEMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzREM2Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RD
NzI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ2OTg1RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJL
ZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyS2V5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OUNDQ0ZBMjY5RDAyMDIwMDZFMDMxNCAv
KiBCcm9hZGNhc3RDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJyb2FkY2FzdENoYW5u
ZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlDQ0NGQzI2OUQwMjAyMDA2
RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCcm9hZGNhc3RDaGFu
bmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OUNDQ0ZEMjY5RDAyMDMwMDZF
MDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBCcm9hZGNhc3RDaGFubmVsLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkyODMsNiArOTI5Niw3IEBACiAJCTQ2QzM3
NjVGMjA4NTE3NkMwMEM3MzgyOSAvKiBKU1JlbW90ZURPTVdpbmRvdy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlbW90ZURPTVdpbmRvdy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzM3NjYxMjA4NTE3NkQwMEM3MzgyOSAvKiBKU1JlbW90
ZURPTVdpbmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1JlbW90ZURP
TVdpbmRvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkMzQThEMzI1NDhENEI3
MDBDOEM1M0EgLyogSlNBdWRpb0J1ZmZlckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0F1ZGlvQnVmZmVyQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZD
NDE2OUQyNzlBMDREMjAwMjUyQzNCIC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDNjk2QzkxRTcyMDVF
NDAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ1BVTW9uaXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkM2OTZDQTFF
NzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDUFVNb25pdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDZDODNFRkIxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlb05vdGlmaWVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTkyOTQsNiArOTMwOCw3IEBACiAJCTQ2RDAwMDNGMjZBMEZFNzAw
MEQxQkYxRSAvKiBTdWJtaXRFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU3VibWl0
RXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRCQjY0RTFBQjhDOTZG
MDBEOUE4MTMgLyogUG93ZXJPYnNlcnZlck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQb3dlck9ic2VydmVyTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2REQ5M0Q1MjY5REU3NEIwMDFBRkQ4OCAvKiBCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0NkREQkRBMTI3QTlDNzBDMDA3NzM0N0EgLyogV29ya2VyRmV0
Y2hSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyRmV0Y2hS
ZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZERTlCQjQyNjlERjkzMjAw
MjRDNUE2IC8qIEJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCcm9h
ZGNhc3RDaGFubmVsUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZE
RkY0OTYxREMyNjAxMzAwQjgwQjQ4IC8qIFNoYWRvd1Jvb3RNb2RlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNoYWRvd1Jvb3RNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2REZGNDk3MURDMjYwMTMwMEI4MEI0OCAvKiBTaGFkb3dSb290TW9kZS5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2hhZG93Um9vdE1vZGUuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjA3OTQsNiArMjA4MDksNyBAQAogCQkJCUE1MkIzNDlDMUZBNDE2
RjgwMDhCNjI0NiAvKiBXb3JrZXJEZWJ1Z2dlclByb3h5LmggKi8sCiAJCQkJOUIwQUJDQTMyMzY3
OUFDRjAwQjQ1MDg1IC8qIFdvcmtlckV2ZW50TG9vcC5jcHAgKi8sCiAJCQkJOUIwQUJDQTQyMzY3
OUFDRjAwQjQ1MDg1IC8qIFdvcmtlckV2ZW50TG9vcC5oICovLAorCQkJCTQ2RERCREExMjdBOUM3
MEMwMDc3MzQ3QSAvKiBXb3JrZXJGZXRjaFJlc3VsdC5oICovLAogCQkJCUE3RDZCMzQ4MEY2MTEw
NDUwMEZGOUZEMSAvKiBXb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwICovLAogCQkJCUE3RDZCMzQ3
MEY2MTEwNDUwMEZGOUZEMSAvKiBXb3JrZXJGb250TG9hZFJlcXVlc3QuaCAqLywKIAkJCQkyRTQz
NDYzNjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGUuY3BwICovLApAQCAtMjE1
MTYsNiArMjE1MzIsMTcgQEAKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwogCQl9OworCQk0NjI2QjQ3MzI3OUEwM0IxMDBBRUYwQjIgLyogY29udGV4dCAqLyA9IHsK
KwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNDYyN0ZGNTcyNzlCODI0
NTAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcCAqLywKKwkJCQk0NjI3RkY1
ODI3OUI4MjQ2MDBBQTM5MTYgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCAqLywKKwkJCQk0
NkM0MTY5RDI3OUEwNEQyMDAyNTJDM0IgLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3Bw
ICovLAorCQkJCTQ2MjZCNDc1Mjc5QTAzRDIwMEFFRjBCMiAvKiBTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlci5oICovLAorCQkJKTsKKwkJCXBhdGggPSBjb250ZXh0OworCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNDY0MjQwNDQyMEVBRjBCRDAwQjI5RkQyIC8qIGNvY29hICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTIxNTUwLDE2ICsy
MTU3NywyMCBAQAogCQk0NjY5NENERTI3NTk0NDZEMDBFMzE1MEUgLyogc2hhcmVkICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0NjI2QjQ3MzI3OUEwM0Ix
MDBBRUYwQjIgLyogY29udGV4dCAqLywKIAkJCQk0NjY5NENFMzI3NTk0NDhEMDBFMzE1MEUgLyog
U2hhcmVkV29ya2VyLmNwcCAqLywKIAkJCQk0NjY5NENFMjI3NTk0NDhEMDBFMzE1MEUgLyogU2hh
cmVkV29ya2VyLmggKi8sCiAJCQkJNDY2OTRDRTUyNzU5NDQ4RTAwRTMxNTBFIC8qIFNoYXJlZFdv
cmtlci5pZGwgKi8sCiAJCQkJNDY2OTRDRTQyNzU5NDQ4RTAwRTMxNTBFIC8qIFNoYXJlZFdvcmtl
ckdsb2JhbFNjb3BlLmNwcCAqLywKIAkJCQk0NjY5NENFMTI3NTk0NDhDMDBFMzE1MEUgLyogU2hh
cmVkV29ya2VyR2xvYmFsU2NvcGUuaCAqLywKIAkJCQk0NjY5NENFMDI3NTk0NDhDMDBFMzE1MEUg
LyogU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaWRsICovLAotCQkJCTQ2N0E2OEQzMjc1RUE5OEIw
MDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcCAqLywKLQkJCQk0NjdBNjhEMjI3NUVB
OThBMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oICovLAotCQkJCTQ2N0E2OENGMjc1
RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJQcm94eS5jcHAgKi8sCi0JCQkJNDY3QTY4RDYy
NzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclByb3h5LmggKi8sCisJCQkJNDYyN0ZGNUEy
NzlCODdBMjAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlcklkZW50aWZpZXIuaCAqLywKKwkJCQk0Njk4
NUYyMjI3QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggKi8sCisJCQkJNDY5NDNE
QzYyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwICov
LAorCQkJCTQ2OTQzREM1Mjc2M0Y4MEQwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uLmggKi8sCisJCQkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIuaCAqLywKKwkJCQk0Njk0M0RDMjI3NjNGODBDMDA0QjYxMEUgLyog
U2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwICovLAorCQkJCTQ2OTQzREM0Mjc2M0Y4MEQwMDRCNjEw
RSAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5oICovLAogCQkJCTQ2N0E2OEQxMjc1RUE5OEEwMDlC
MzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwICovLAogCQkJCTQ2N0E2OEQ1Mjc1
RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCAqLywKIAkJCQk0NjdB
NjhEMDI3NUVBOTg5MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmNwcCAqLywKQEAgLTMz
ODY2LDYgKzMzODk3LDcgQEAKIAkJCQkyRDQ4MUYwMjE0NkI1QzU1MDBBQTc4MzQgLyogQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQzQxNjEyMEY2NTYyRkQw
MDkyRDJGQiAvKiBDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ2NzJBQTk4MjZCMDk0MzMwMEU2RUMzOCAvKiBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0NkE3OEIzNDI3OTlCRDcxMDAxMTU0RkUgLyogV29ya2VyT3B0
aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY4OEVFM0MyNkREMjYxMDAwMkFGNUM0IC8qIENy
b3NzT3JpZ2luTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY3MkFBOTkyNkIwOTQzRjAwRTZF
QzM4IC8qIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUFC
RTY3QjFEMDU4MERCMDA2RDg2MkQgLyogQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmggaW4g
SGVhZGVycyAqLywKQEAgLTMzOTA0LDYgKzMzOTM2LDcgQEAKIAkJCQk1N0ZFREQzRjFEQjZENTky
MDBFQjk2RjUgLyogQ3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1NzA2QTY5NjFEREU1Qzk1MDBBMDNCMTQgLyogQ3J5cHRvQWxnb3JpdGhtUnNhT2Fl
cFBhcmFtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcyMUE5OEIxRUNFNTcwNDAwODEyOTVBIC8q
IENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDYyN0ZG
NTkyNzlCODI0OTAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMUJEMzMxQTE4MkQ4REREMDBDMDVEOUYgLyogQ3J5cHRvQWxnb3JpdGhtUlNB
U1NBX1BLQ1MxX3YxXzUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMjVGODJDMTgyMkNGRUMwMEQ4
NENEOSAvKiBDcnlwdG9BbGdvcml0aG1TSEExLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTlBQzNF
RjE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmggaW4gSGVhZGVycyAq
LywKQEAgLTM0MTMzLDYgKzM0MTY2LDcgQEAKIAkJCQk0NUZFQTVEMDE1NkRERThDMDA2NTQxMDEg
LyogRGVjaW1hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzE1QUQ3MjAyMDUwNTEzMjAwRDU5MkRD
IC8qIERlY2xhcmF0aXZlQW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEMyMjhBMTEx
RDU3MjJFMDBENUE3RDMgLyogRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDZEREJEQTMyN0E5QzcxNjAwNzczNDdBIC8qIFdvcmtlckZldGNoUmVzdWx0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1NTUxMzAwMTFFN0NDQ0NCMDBBNjlFMzggLyogRGVjb2RpbmdP
cHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTYyQTQ1MTEwMTE0NUFFMDBERkYzRUQgLyog
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQTNENThG
MTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICov
LApAQCAtMzQ4OTAsNiArMzQ5MjQsNyBAQAogCQkJCUNEM0UyMUREMjE4MzQ0NEEwMEU2NkY1NSAv
KiBJbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NEVFQTEwMDI3
NDc1N0YxMDA1OTRBODMgLyogSW1hZ2VDb250cm9sc01hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTc3OTc5MUEwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNDZDNDE2OUIyNzlBMDRDNzAwMjUyQzNCIC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0EwODhGNTI2NEUxQzA4MDAzRTJBNkMgLyogSW1hZ2VE
YXRhU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMTlGRUE4MUY1NzM5NzIwMDBDNDJG
QiAvKiBJbWFnZURlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMTlGRUFFMUY1NzRCNkQw
MDBDNDJGQiAvKiBJbWFnZURlY29kZXJBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKQEAgLTM1NTE4
LDYgKzM1NTUzLDcgQEAKIAkJCQkxQTc1MEQ4RTBBOTBFNTIxMDAwRkYyMTUgLyogSlNOb2RlSXRl
cmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDlDMkMzMEMxN0I2OUUwMDVDOTBBMiAvKiBK
U05vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDIwQjE4RDE4RTlEMjM3MDA1QTgwODMg
LyogSlNOb2RlTGlzdEN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY5NDNEQzkyNzYzRjgx
NzAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTMzNTAzQ0E0MTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTEwRTJGMzMyNzZCRjY4NTAwODA5MzMzIC8qIEpTTm90aWZpY2F0aW9u
RGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTBFMkYyQjI3NkJDRkU4MDA4MDkzMzMg
LyogSlNOb3RpZmljYXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNjY2OSw2ICszNjcw
NSw3IEBACiAJCQkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2MDQzIC8qIFJlYWRhYmxlU3RyZWFtQnVp
bHRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMjlDOUE5MUY1OUM1NkIwMDlENzQwMyAvKiBS
ZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTZF
NkZFODFCQkQxMkRGMDAwQTNGNjQgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDY5NDNEQzgyNzYzRjgxMjAwNEI2MTBFIC8qIFNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMjlDOUFGMUY1OUNG
NUIwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
MjlDOUFCMUY1OUM1NzMwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNvdXJjZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkQzMTYwM0MxMkIwMjY3NjAwQzFBMzU5IC8qIFJlYWx0aW1lQW5hbHlzZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtMzcwNDYsNiArMzcwODMsNyBAQAogCQkJCTBGNjA1QUVEMTVG
OTQ4NDgwMDRERjBDMCAvKiBTY3JvbGxpbmdDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFGNjJFRTgxNERBMjJBNzAwNDE1NTZDIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5MzkxQTk5MTE2Mjc0NkNCMDAyOTczMzAgLyogU2Nyb2xsaW5nQ29v
cmRpbmF0b3JNYWMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2MjdGRjVCMjc5Qjg3QUYwMEFBMzkx
NiAvKiBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTJEQkE0
OTIxRjhBRDgzMDA4RjM2QjIgLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3JUeXBlcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNUI0NjY1NjMyNUQxNEMwQTAwMENGRTE0IC8qIFNjcm9sbGluZ0VmZmVjdHND
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk5MDU5QTI2RjZCRTg1MDA1NEZCRTAg
LyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTM3MTcy
LDggKzM3MjEwLDYgQEAKIAkJCQlDRDM2QzE2QjI2MEE2NUNDMDBDOEM1MjkgLyogU2hhcmVkUm91
dGluZ0FyYml0cmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNERGQUQwMUY3REFFNUQwMEMy
NzI1QiAvKiBTaGFyZWRTdHJpbmdIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUVBMzA5
OUVCNzhDMDA1NkU1ODEgLyogU2hhcmVkVGltZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ2N0E2
OERBMjc1RUE5OUMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LywKLQkJCQk0NjdBNjhEOTI3NUVBOTk4MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyUHJveHkuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ2N0E2OEQ4Mjc1RUE5OTUwMDlCMzFDNSAvKiBTaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2N0E2OEQ3Mjc1RUE5OTEwMDlC
MzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDNERCMDI2
MjczMzlGRTAwMDdCMEFEMSAvKiBTaG91bGRMb2NhbGl6ZUF4aXNOYW1lcy5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0zNzQwNyw2ICszNzQ0Myw3IEBACiAJCQkJQjIyMjc5QzAwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR0VsbGlwc2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlDODBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHRkVCbGVuZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
MjI3OUNCMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNDY5ODVGMjMyN0E0QTZBRDAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktl
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5Q0UwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZF
Q29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlEMTBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVDb21wb3NpdGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxOTIxMzI3NTExQzBFNkJCMDA0NTYyMzggLyogU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzgwNTMsNiArMzgwOTAsNyBAQAogCQkJCTgzQUNEMDEz
MjUyMjlFMTAwMDBEMTI0RSAvKiBXb3JrbGV0T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODM0QTZBM0EyNTI2ODQ0QTAwNzQ3RjVEIC8qIFdvcmtsZXRQYXJhbWV0ZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4MzNCRDgxNzI1MjRENEYyMDA2RTcyQjMgLyogV29ya2xldFBlbmRpbmdUYXNr
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY5NDNEQ0EyNzYzRjgxQzAwNEI2MTBFIC8qIFNoYXJl
ZFdvcmtlclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUyNDA5OUU2NDkyMDA1
NkU1ODEgLyogV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTZFNkZFODFCQkQxMkRGMDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNC
dWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUJBRjNCMjQxMkMxQTM5ODAwMDE0QkYxIC8q
IFdyaXRpbmdEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5T3JpZ2luLmNwcAppbmRleCA4NDMxZjRjNTIxMTYuLjBjYjQ5YWY3YzU1MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTU0Niw2ICs1NDYsMTEgQEAgU3RyaW5n
IFNlY3VyaXR5T3JpZ2luOjp0b1Jhd1N0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0YS50
b1N0cmluZygpOwogfQogCitVUkwgU2VjdXJpdHlPcmlnaW46OnRvVVJMKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9kYXRhLnRvVVJMKCk7Cit9CisKIHN0YXRpYyBpbmxpbmUgYm9vbCBhcmVPcmln
aW5zTWF0Y2hpbmcoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbjEsIGNvbnN0IFNlY3VyaXR5
T3JpZ2luJiBvcmlnaW4yKQogewogICAgIEFTU0VSVCgmb3JpZ2luMSAhPSAmb3JpZ2luMik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKaW5kZXggNjNkNjM0MTU5ZjY0Li5lMTU1ZWM2
ZjI0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKQEAgLTE5MCw2ICsxOTAs
OCBAQCBwdWJsaWM6CiAgICAgLy8gY291bGQgbWFrZSB0aGUgc3RyaW5nIHJldHVybiAibnVsbCIu
CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRvUmF3U3RyaW5nKCkgY29uc3Q7CiAKKyAgICBV
UkwgdG9VUkwoKSBjb25zdDsKKwogICAgIC8vIFRoaXMgbWV0aG9kIGNoZWNrcyBmb3IgZXF1YWxp
dHkgYmV0d2VlbiBTZWN1cml0eU9yaWdpbnMsIG5vdCB3aGV0aGVyCiAgICAgLy8gb25lIG9yaWdp
biBjYW4gYWNjZXNzIGFub3RoZXIuIEl0IGlzIHVzZWQgZm9yIGhhc2ggdGFibGUga2V5cy4KICAg
ICAvLyBGb3IgYWNjZXNzIGNoZWNrcywgdXNlIGlzU2FtZU9yaWdpbkRvbWFpbigpLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4IGU0OWNkY2QzNjJhZS4u
MWFiNzdmNmVkZjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEu
Y3BwCkBAIC00OSw2ICs0OSwxMSBAQCBTdHJpbmcgU2VjdXJpdHlPcmlnaW5EYXRhOjp0b1N0cmlu
ZygpIGNvbnN0CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcocHJvdG9jb2wsICI6Ly8iLCBob3N0LCAn
OicsIHN0YXRpY19jYXN0PHVpbnQzMl90PigqcG9ydCkpOwogfQogCitVUkwgU2VjdXJpdHlPcmln
aW5EYXRhOjp0b1VSTCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFVSTCB7IFVSTCgpLCB0b1N0cmlu
ZygpIH07Cit9CisKIFNlY3VyaXR5T3JpZ2luRGF0YSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21G
cmFtZShGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKCFmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luRGF0YS5oCmluZGV4IGZkZmM4NjQzZWFkZi4uYWMwODI4NTYxMjk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKQEAgLTg2LDYgKzg2LDcg
QEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YSB7CiAgICAgfQogICAgIAogICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFVSTCB0
b1VSTCgpIGNvbnN0OwogCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIFN0cmluZyBkZWJ1Z1N0cmlu
ZygpIGNvbnN0IHsgcmV0dXJuIHRvU3RyaW5nKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcu
aAppbmRleCBkYzBmNTA5OGI4N2YuLmZhN2QyMzAyZWMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xv
Z2dpbmcuaApAQCAtMTA5LDYgKzEwOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBNKFNl
bGVjdGlvbikgXAogICAgIE0oU2VydmljZXMpIFwKICAgICBNKFNlcnZpY2VXb3JrZXIpIFwKKyAg
ICBNKFNoYXJlZFdvcmtlcikgXAogICAgIE0oU3BlbGxpbmdBbmRHcmFtbWFyKSBcCiAgICAgTShT
UUxEYXRhYmFzZSkgXAogICAgIE0oU3RvcmFnZSkgXApAQCAtMTI2LDYgKzEyNyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBNKFdlYkdMKSBcCiAgICAgTShXZWJSVEMpIFwKICAgICBNKFdl
YlJUQ1N0YXRzKSBcCisgICAgTShXb3JrZXIpIFwKICAgICBNKFhSKSBcCiAgICAgTShXaGVlbEV2
ZW50VGVzdE1vbml0b3IpIFwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGZXRjaFJlc3VsdC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGZXRjaFJl
c3VsdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDRmZWExZWJi
ZmZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGZXRj
aFJlc3VsdC5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgiCisj
aW5jbHVkZSAiQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5oIgorI2luY2x1ZGUgIlJlc291cmNl
RXJyb3IuaCIKKyNpbmNsdWRlICJTY3JpcHRCdWZmZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQgeworICAgIFNjcmlwdEJ1ZmZlciBzY3JpcHQ7
CisgICAgQ2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbzsKKyAgICBDb250ZW50U2VjdXJp
dHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgY29udGVudFNlY3VyaXR5UG9saWN5OworICAgIENyb3Nz
T3JpZ2luRW1iZWRkZXJQb2xpY3kgY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeTsKKyAgICBTdHJp
bmcgcmVmZXJyZXJQb2xpY3k7CisgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKKworICAgIFdvcmtl
ckZldGNoUmVzdWx0IGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgc2NyaXB0Lmlzb2xh
dGVkQ29weSgpLCBjZXJ0aWZpY2F0ZUluZm8uaXNvbGF0ZWRDb3B5KCksIGNvbnRlbnRTZWN1cml0
eVBvbGljeS5pc29sYXRlZENvcHkoKSwgY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5pc29sYXRl
ZENvcHkoKSwgcmVmZXJyZXJQb2xpY3kuaXNvbGF0ZWRDb3B5KCksIGVycm9yLmlzb2xhdGVkQ29w
eSgpIH07IH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXb3JrZXJGZXRjaFJlc3VsdCYpOworfTsK
KworaW5saW5lIFdvcmtlckZldGNoUmVzdWx0IHdvcmtlckZldGNoRXJyb3IoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCit7CisgICAgcmV0dXJuIHsgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0s
IGVycm9yIH07Cit9CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFdvcmtlckZldGNo
UmVzdWx0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8
IHNjcmlwdCA8PCBjb250ZW50U2VjdXJpdHlQb2xpY3kgPDwgY3Jvc3NPcmlnaW5FbWJlZGRlclBv
bGljeSA8PCByZWZlcnJlclBvbGljeSA8PCBlcnJvciA8PCBjZXJ0aWZpY2F0ZUluZm87Cit9CisK
K3RlbXBsYXRlPGNsYXNzIERlY29kZXI+Citib29sIFdvcmtlckZldGNoUmVzdWx0OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgV29ya2VyRmV0Y2hSZXN1bHQmIHJlc3VsdCkKK3sKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zY3JpcHQpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY29udGVudFNlY3VyaXR5UG9saWN5KSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNyb3Nz
T3JpZ2luRW1iZWRkZXJQb2xpY3kpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQucmVmZXJyZXJQb2xpY3kpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZXJyb3IpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNh
dGVJbmZvOworICAgIGRlY29kZXIgPj4gY2VydGlmaWNhdGVJbmZvOworICAgIGlmICghY2VydGlm
aWNhdGVJbmZvKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVzdWx0LmNlcnRpZmljYXRl
SW5mbyA9IFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9wdGlv
bnMuaAppbmRleCBmYmRhZWFiZThhYjcuLjc3MzM5NWI3OWExYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJPcHRpb25zLmgKQEAgLTM0LDYgKzM0LDM2IEBAIHN0cnVjdCBXb3JrZXJPcHRp
b25zIHsKICAgICBXb3JrZXJUeXBlIHR5cGUgeyBXb3JrZXJUeXBlOjpDbGFzc2ljIH07CiAgICAg
RmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVudGlhbHMgeyBGZXRjaFJlcXVlc3RDcmVkZW50
aWFsczo6U2FtZU9yaWdpbiB9OwogICAgIFN0cmluZyBuYW1lOworCisgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdvcmtlck9wdGlvbnM+IGRlY29kZShE
ZWNvZGVyJik7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBXb3JrZXJPcHRp
b25zOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHR5
cGUgPDwgY3JlZGVudGlhbHMgPDwgbmFtZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
K3N0ZDo6b3B0aW9uYWw8V29ya2VyT3B0aW9ucz4gV29ya2VyT3B0aW9uczo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxXb3JrZXJUeXBlPiB3b3JrZXJUeXBl
OworICAgIGRlY29kZXIgPj4gd29ya2VyVHlwZTsKKyAgICBpZiAoIXdvcmtlclR5cGUpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPEZldGNoUmVxdWVz
dENyZWRlbnRpYWxzPiBjcmVkZW50aWFsczsKKyAgICBkZWNvZGVyID4+IGNyZWRlbnRpYWxzOwor
ICAgIGlmICghY3JlZGVudGlhbHMpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmFtZTsKKyAgICBkZWNvZGVyID4+IG5hbWU7CisgICAg
aWYgKCFuYW1lKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsg
eyAqd29ya2VyVHlwZSwgKmNyZWRlbnRpYWxzLCBXVEZNb3ZlKCpuYW1lKSB9IH07Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNw
cAppbmRleCA0MDY3MTczYTg5YTUuLmI3MTg1YTVlZGE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyVGhyZWFkLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIldvcmtlclRo
cmVhZC5oIgogCiAjaW5jbHVkZSAiSURCQ29ubmVjdGlvblByb3h5LmgiCisjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNvY2tldFByb3ZpZGVyLmgiCkBAIC0xNjMsNiArMTY0LDEx
IEBAIHZvaWQgV29ya2VyVGhyZWFkOjpldmFsdWF0ZVNjcmlwdElmTmVjZXNzYXJ5KFN0cmluZyYg
ZXhjZXB0aW9uTWVzc2FnZSkKICAgICBpZiAoc291cmNlUHJvdmlkZXIpCiAgICAgICAgIGdsb2Jh
bFNjb3BlKCktPnNldE1haW5TY3JpcHRTb3VyY2VQcm92aWRlcigqc291cmNlUHJvdmlkZXIpOwog
CisgICAgaWYgKGV4Y2VwdGlvbk1lc3NhZ2UuaXNFbXB0eSgpKQorICAgICAgICBSRUxFQVNFX0xP
RyhXb3JrZXIsICJXb3JrZXJUaHJlYWQ6OmV2YWx1YXRlU2NyaXB0SWZOZWNlc3NhcnkoKSBTVUND
RVNTIik7CisgICAgZWxzZQorICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXb3JrZXIsICJXb3Jr
ZXJUaHJlYWQ6OmV2YWx1YXRlU2NyaXB0SWZOZWNlc3NhcnkoKSBGQUlMVVJFICgle3ByaXZhdGV9
cykiLCBleGNlcHRpb25NZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworCiAgICAgLy8gRnJlZSB0aGUg
c3RhcnR1cCBkYXRhIHRvIGNhdXNlIGl0cyBtZW1iZXIgdmFyaWFibGUgZGVyZWYncyBoYXBwZW4g
b24gdGhlIHdvcmtlcidzIHRocmVhZCAoc2luY2UKICAgICAvLyBhbGwgcmVmL2RlcmVmcyBvZiB0
aGVzZSBvYmplY3RzIGFyZSBoYXBwZW5pbmcgb24gdGhlIHRocmVhZCBhdCB0aGlzIHBvaW50KS4g
Tm90ZSB0aGF0CiAgICAgLy8gV29ya2VyVGhyZWFkOjp+V29ya2VyVGhyZWFkIGhhcHBlbnMgb24g
YSBkaWZmZXJlbnQgdGhyZWFkIHdoZXJlIGl0IHdhcyBjcmVhdGVkLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5o
CmluZGV4IDkwYmRiMDQ1OTU3MS4uM2ZkMDZjZjk0OWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckZldGNoUmVzdWx0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oCkBA
IC0zNyw2ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gRklYTUU6IFVzZSB0
aGUgZ2VuZXJpYyBXb3JrZXJGZXRjaFJlc3VsdCBpbnN0ZWFkLgogc3RydWN0IFNlcnZpY2VXb3Jr
ZXJGZXRjaFJlc3VsdCB7CiAgICAgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyIGpvYkRh
dGFJZGVudGlmaWVyOwogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgcmVnaXN0cmF0
aW9uS2V5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKaW5kZXggYzY2NjE0
ZmEyYzk2Li4yYWMwMmE3ZDRhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5
LmNwcApAQCAtNTEsMTEgKzUxLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMg
VVJMIHRvcE9yaWdpblVSTChjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQotewotICAgIHJl
dHVybiBVUkwgeyBVUkwgeyB9LCBvcmlnaW4udG9SYXdTdHJpbmcoKSB9OwotfQotCiB2b2lkIFNl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2V0dXBQYWdlRm9yU2VydmljZVdvcmtlcihQYWdlJiBw
YWdlLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEpCiB7CiAgICAgYXV0byYg
bWFpbkZyYW1lID0gcGFnZS5tYWluRnJhbWUoKTsKQEAgLTY4LDggKzYzLDkgQEAgdm9pZCBTZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHk6OnNldHVwUGFnZUZvclNlcnZpY2VXb3JrZXIoUGFnZSYgcGFn
ZSwgY29uc3QgU2VydmkKICAgICBhdXRvIG9yaWdpbiA9IGRhdGEucmVnaXN0cmF0aW9uLmtleS50
b3BPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigpOwogICAgIG9yaWdpbi0+c2V0U3RvcmFnZUJsb2Nr
aW5nUG9saWN5KHBhZ2Uuc2V0dGluZ3MoKS5zdG9yYWdlQmxvY2tpbmdQb2xpY3koKSk7CiAKLSAg
ICBkb2N1bWVudC0+c2V0U2l0ZUZvckNvb2tpZXModG9wT3JpZ2luVVJMKG9yaWdpbikpOwotICAg
IGRvY3VtZW50LT5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyh0b3BPcmlnaW5VUkwob3JpZ2luKSk7
CisgICAgYXV0byBvcmlnaW5Bc1VSTCA9IG9yaWdpbi0+dG9VUkwoKTsKKyAgICBkb2N1bWVudC0+
c2V0U2l0ZUZvckNvb2tpZXMob3JpZ2luQXNVUkwpOworICAgIGRvY3VtZW50LT5zZXRGaXJzdFBh
cnR5Rm9yQ29va2llcyhvcmlnaW5Bc1VSTCk7CiAgICAgZG9jdW1lbnQtPnNldERvbWFpbkZvckNh
Y2hlUGFydGl0aW9uKG9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSk7CiAKICAgICBp
ZiAoYXV0byBwb2xpY3kgPSBwYXJzZVJlZmVycmVyUG9saWN5KGRhdGEucmVmZXJyZXJQb2xpY3ks
IFJlZmVycmVyUG9saWN5U291cmNlOjpIVFRQSGVhZGVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCmluZGV4IDZhNTliMmVmZTlhMS4uOTI2ZDM1
NzA3ODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
ci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsMTMgKzI2LDE3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hh
cmVkV29ya2VyLmgiCiAKKyNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIKICNpbmNsdWRlICJDb250
ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUNoYW5u
ZWwuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgIlJlc291cmNlRXJyb3Iu
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlck1h
bmFnZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJQcm94eS5oIgorI2luY2x1ZGUgIlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJQcm92aWRl
ci5oIgogI2luY2x1ZGUgIldvcmtlck9wdGlvbnMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5o
PgpAQCAtNDEsOCArNDUsMzEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0lNUEwoU2hhcmVkV29ya2VyKTsKIAotRXhjZXB0aW9uT3I8UmVmPFNoYXJlZFdv
cmtlcj4+IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgSlNDOjpSdW50
aW1lRmxhZ3MgcnVudGltZUZsYWdzLCBTdHJpbmcmJiBzY3JpcHRVUkxTdHJpbmcsIHN0ZDo6b3B0
aW9uYWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYgbWF5YmVPcHRpb25z
KQorI2RlZmluZSBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xP
RyhTaGFyZWRXb3JrZXIsICIlcCAtIFtpZGVudGlmaWVyPSV7cHVibGljfXNdIFNoYXJlZFdvcmtl
cjo6IiBmbXQsIHRoaXMsIG1faWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksICMj
X19WQV9BUkdTX18pCisjZGVmaW5lIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0dfRVJST1IoZm10
LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKFNoYXJlZFdvcmtlciwgIiVwIC0gW2lkZW50aWZpZXI9
JXtwdWJsaWN9c10gU2hhcmVkV29ya2VyOjoiIGZtdCwgdGhpcywgbV9pZGVudGlmaWVyLnRvU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSwgIyNfX1ZBX0FSR1NfXykKKworc3RhdGljIEhhc2hNYXA8U2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgU2hhcmVkV29ya2VyKj4mIGFsbFNoYXJlZFdvcmtl
cnMoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEhhc2hNYXA8U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgU2hhcmVkV29ya2Vy
Kj4+IGFsbFNoYXJlZFdvcmtlcnM7CisgICAgcmV0dXJuIGFsbFNoYXJlZFdvcmtlcnM7Cit9CisK
K1NoYXJlZFdvcmtlciogU2hhcmVkV29ya2VyOjpmcm9tSWRlbnRpZmllcihTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIGFsbFNoYXJlZFdvcmtl
cnMoKS5nZXQoaWRlbnRpZmllcik7Cit9CisKK3N0YXRpYyBpbmxpbmUgU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbiogbWFpblRocmVhZENvbm5lY3Rpb24oKQogeworICAgIHJldHVybiBTaGFy
ZWRXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOwor
fQorCitFeGNlcHRpb25PcjxSZWY8U2hhcmVkV29ya2VyPj4gU2hhcmVkV29ya2VyOjpjcmVhdGUo
RG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmcmJiBzY3JpcHRVUkxTdHJpbmcsIHN0ZDo6b3B0aW9u
YWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYgbWF5YmVPcHRpb25zKQor
eworICAgIGlmICghbWFpblRocmVhZENvbm5lY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0
ZWQiIH07CisKICAgICBpZiAoIWRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzU2hh
cmVkV29ya2Vycyhkb2N1bWVudC50b3BPcmlnaW4oKSkpCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBTZWN1cml0eUVycm9yLCAiVGhpcyBpZnJhbWUgZG9lc24ndCBoYXZlIHN0b3JhZ2UgYWNj
ZXNzIl9zIH07CiAKQEAgLTY3LDI2ICs5NCwzMCBAQCBFeGNlcHRpb25PcjxSZWY8U2hhcmVkV29y
a2VyPj4gU2hhcmVkV29ya2VyOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBKU0M6OlJ1bgog
ICAgIGF1dG8gY2hhbm5lbCA9IE1lc3NhZ2VDaGFubmVsOjpjcmVhdGUoZG9jdW1lbnQpOwogICAg
IGF1dG8gdHJhbnNmZXJyZWRQb3J0ID0gY2hhbm5lbC0+cG9ydDIoKS5kaXNlbnRhbmdsZSgpOwog
Ci0gICAgYXV0byBzaGFyZWRXb3JrZXIgPSBhZG9wdFJlZigqbmV3IFNoYXJlZFdvcmtlcihkb2N1
bWVudCwgY2hhbm5lbC0+cG9ydDEoKSwgcnVudGltZUZsYWdzKSk7CisgICAgYXV0byBzaGFyZWRX
b3JrZXIgPSBhZG9wdFJlZigqbmV3IFNoYXJlZFdvcmtlcihkb2N1bWVudCwgY2hhbm5lbC0+cG9y
dDEoKSkpOwogICAgIHNoYXJlZFdvcmtlci0+c3VzcGVuZElmTmVlZGVkKCk7CiAKLSAgICBTaGFy
ZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0KHVybCwgc2hhcmVkV29ya2VyLmdl
dCgpLCBXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCksIFdURk1vdmUob3B0aW9ucykpOworICAgIENs
aWVudE9yaWdpbiBjbGllbnRPcmlnaW4geyBkb2N1bWVudC50b3BEb2N1bWVudCgpLnNlY3VyaXR5
T3JpZ2luKCkuZGF0YSgpLCBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSB9OworICAg
IG1haW5UaHJlYWRDb25uZWN0aW9uKCktPnJlcXVlc3RTaGFyZWRXb3JrZXIoY2xpZW50T3JpZ2lu
LCBzaGFyZWRXb3JrZXItPmlkZW50aWZpZXIoKSwgdXJsLCBXVEZNb3ZlKHRyYW5zZmVycmVkUG9y
dCksIG9wdGlvbnMpOwogICAgIHJldHVybiBzaGFyZWRXb3JrZXI7CiB9CiAKLVNoYXJlZFdvcmtl
cjo6U2hhcmVkV29ya2VyKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPE1lc3NhZ2VQb3J0PiYmIHBv
cnQsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncykKK1NoYXJlZFdvcmtlcjo6U2hhcmVk
V29ya2VyKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPE1lc3NhZ2VQb3J0PiYmIHBvcnQpCiAgICAg
OiBBY3RpdmVET01PYmplY3QoJmRvY3VtZW50KQorICAgICwgbV9pZGVudGlmaWVyKFNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXI6OmdlbmVyYXRlKCkpCiAgICAgLCBtX3BvcnQoV1RGTW92ZShw
b3J0KSkKICAgICAsIG1faWRlbnRpZmllckZvckluc3BlY3RvcigiU2hhcmVkV29ya2VyOiIgKyBJ
bnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpKQotICAgICwg
bV9ydW50aW1lRmxhZ3MocnVudGltZUZsYWdzKQotICAgICwgbV9jcmVhdGlvblRpbWUoTW9ub3Rv
bmljVGltZTo6bm93KCkpCi0gICAgLCBtX3Byb3h5KFNoYXJlZFdvcmtlclByb3h5OjpjcmVhdGUo
KnRoaXMpKQogeworICAgIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coIlNoYXJlZFdvcmtlcjoi
KTsKKyAgICBhbGxTaGFyZWRXb3JrZXJzKCkuYWRkKG1faWRlbnRpZmllciwgdGhpcyk7CiB9CiAK
IFNoYXJlZFdvcmtlcjo6flNoYXJlZFdvcmtlcigpCiB7Ci0gICAgbV9wcm94eS53b3JrZXJPYmpl
Y3REZXN0cm95ZWQoKTsKKyAgICBBU1NFUlQoYWxsU2hhcmVkV29ya2VycygpLmdldChtX2lkZW50
aWZpZXIpID09IHRoaXMpOworICAgIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coIn5TaGFyZWRX
b3JrZXI6Iik7CisgICAgYWxsU2hhcmVkV29ya2VycygpLnJlbW92ZShtX2lkZW50aWZpZXIpOwor
ICAgIEFTU0VSVCghbV9pc0FjdGl2ZSk7CiB9CiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFNo
YXJlZFdvcmtlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CkBAIC0xMDQsMTkgKzEz
NSwyNiBAQCBFdmVudFRhcmdldEludGVyZmFjZSBTaGFyZWRXb3JrZXI6OmV2ZW50VGFyZ2V0SW50
ZXJmYWNlKCkgY29uc3QKICAgICByZXR1cm4gU2hhcmVkV29ya2VyRXZlbnRUYXJnZXRJbnRlcmZh
Y2VUeXBlOwogfQogCi12b2lkIFNoYXJlZFdvcmtlcjo6c3RvcCgpCit2b2lkIFNoYXJlZFdvcmtl
cjo6ZGlkRmFpbExvYWRpbmcoKQogewotICAgIHRlcm1pbmF0ZSgpOworICAgIFNIQVJFRF9XT1JL
RVJfUkVMRUFTRV9MT0dfRVJST1IoIn5kaWRGYWlsTG9hZGluZzoiKTsKKyAgICBxdWV1ZVRhc2tU
b0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2
ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOworICAgIG1faXNBY3RpdmUgPSBmYWxzZTsKIH0KIAog
Ym9vbCBTaGFyZWRXb3JrZXI6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewot
ICAgIHJldHVybiBtX3Byb3h5Lmhhc1BlbmRpbmdBY3Rpdml0eSgpIHx8IG1faXNMb2FkaW5nOwor
ICAgIHJldHVybiBtX2lzQWN0aXZlOwogfQogCi12b2lkIFNoYXJlZFdvcmtlcjo6dGVybWluYXRl
KCkKK3ZvaWQgU2hhcmVkV29ya2VyOjpzdG9wKCkKIHsKLSAgICBtX3Byb3h5LnRlcm1pbmF0ZVdv
cmtlckdsb2JhbFNjb3BlKCk7CisgICAgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRygic3RvcDoi
KTsKKyAgICBtX2lzQWN0aXZlID0gZmFsc2U7CisgICAgbWFpblRocmVhZENvbm5lY3Rpb24oKS0+
c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkobV9pZGVudGlmaWVyKTsKIH0KIAorI3VuZGVm
IFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0cKKyN1bmRlZiBTSEFSRURfV09SS0VSX1JFTEVBU0Vf
TE9HX0VSUk9SCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmgKaW5kZXggNTMyNmVlNTQyYzg4Li44N2NjNzVlZmJl
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3
LDM5ICsyNywzNSBAQAogCiAjaW5jbHVkZSAiQWJzdHJhY3RXb3JrZXIuaCIKICNpbmNsdWRlICJB
Y3RpdmVET01PYmplY3QuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SdW50aW1lRmxhZ3Mu
aD4KKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8
d3RmL01vbm90b25pY1RpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZXNz
YWdlUG9ydDsKLWNsYXNzIFNoYXJlZFdvcmtlclByb3h5OworY2xhc3MgUmVzb3VyY2VFcnJvcjsK
IAogc3RydWN0IFdvcmtlck9wdGlvbnM7CiAKIGNsYXNzIFNoYXJlZFdvcmtlciBmaW5hbCA6IHB1
YmxpYyBBYnN0cmFjdFdvcmtlciwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChTaGFyZWRXb3JrZXIpOwogcHVibGljOgotICAgIHN0YXRpYyBFeGNl
cHRpb25PcjxSZWY8U2hhcmVkV29ya2VyPj4gY3JlYXRlKERvY3VtZW50JiwgSlNDOjpSdW50aW1l
RmxhZ3MsIFN0cmluZyYmIHNjcmlwdFVSTCwgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8U3Ry
aW5nLCBXb3JrZXJPcHRpb25zPj4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxTaGFy
ZWRXb3JrZXI+PiBjcmVhdGUoRG9jdW1lbnQmLCBTdHJpbmcmJiBzY3JpcHRVUkwsIHN0ZDo6b3B0
aW9uYWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYpOwogICAgIH5TaGFy
ZWRXb3JrZXIoKTsKIAorICAgIHN0YXRpYyBTaGFyZWRXb3JrZXIqIGZyb21JZGVudGlmaWVyKFNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIFNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIE1l
c3NhZ2VQb3J0JiBwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9wb3J0LmdldCgpOyB9Ci0gICAgSlND
OjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKCkgeyByZXR1cm4gbV9ydW50aW1lRmxhZ3M7IH0K
IAogICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllckZvckluc3BlY3RvcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllckZvckluc3BlY3RvcjsgfQotICAgIE1vbm90b25pY1RpbWUgY3JlYXRp
b25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdGlvblRpbWU7IH0KIAotICAgIFNoYXJlZFdv
cmtlclByb3h5JiBwcm94eSgpIHsgcmV0dXJuIG1fcHJveHk7IH0KLQotICAgIHZvaWQgc2V0SXNM
b2FkaW5nKGJvb2wgaXNMb2FkaW5nKSB7IG1faXNMb2FkaW5nID0gaXNMb2FkaW5nOyB9CisgICAg
dm9pZCBkaWRGYWlsTG9hZGluZygpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQuCiAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsOwog
CiBwcml2YXRlOgotICAgIFNoYXJlZFdvcmtlcihEb2N1bWVudCYsIFJlZjxNZXNzYWdlUG9ydD4m
JiwgSlNDOjpSdW50aW1lRmxhZ3MpOwotCi0gICAgdm9pZCB0ZXJtaW5hdGUoKTsKKyAgICBTaGFy
ZWRXb3JrZXIoRG9jdW1lbnQmLCBSZWY8TWVzc2FnZVBvcnQ+JiYpOwogCiAgICAgLy8gRXZlbnRU
YXJnZXQuCiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdCBmaW5hbDsKQEAgLTcwLDEyICs2NiwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgdmlydHVh
bEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwogCiAKKyAgICBTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBSZWY8TWVzc2FnZVBvcnQ+IG1fcG9y
dDsKICAgICBTdHJpbmcgbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yOwotICAgIEpTQzo6UnVudGlt
ZUZsYWdzIG1fcnVudGltZUZsYWdzOwotICAgIE1vbm90b25pY1RpbWUgbV9jcmVhdGlvblRpbWU7
Ci0gICAgU2hhcmVkV29ya2VyUHJveHkmIG1fcHJveHk7IC8vIFRoZSBwcm94eSBvdXRsaXZlcyB0
aGUgd29ya2VyIHRvIHBlcmZvcm0gdGhyZWFkIHNodXRkb3duLgotICAgIGJvb2wgbV9pc0xvYWRp
bmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0FjdGl2ZSB7IHRydWUgfTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXIuaWRsCmluZGV4IGIxNzFjOWVkZjgxYi4uNGM3NDE1NGQ4MjA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5pZGwKQEAgLTI4LDcgKzI4
LDcgQEAKICAgICBFeHBvc2VkPVdpbmRvdwogXQogaW50ZXJmYWNlIFNoYXJlZFdvcmtlciA6IEV2
ZW50VGFyZ2V0IHsKLSAgW0NhbGxXaXRoPURvY3VtZW50JlJ1bnRpbWVGbGFnc10gY29uc3RydWN0
b3IoVVNWU3RyaW5nIHNjcmlwdFVSTCwgb3B0aW9uYWwgKERPTVN0cmluZyBvciBXb3JrZXJPcHRp
b25zKSBvcHRpb25zKTsKKyAgW0NhbGxXaXRoPURvY3VtZW50XSBjb25zdHJ1Y3RvcihVU1ZTdHJp
bmcgc2NyaXB0VVJMLCBvcHRpb25hbCAoRE9NU3RyaW5nIG9yIFdvcmtlck9wdGlvbnMpIG9wdGlv
bnMpOwogCiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZXNzYWdlUG9ydCBwb3J0OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2JhbFNj
b3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlLmNwcAppbmRleCA0MTIxZWI1OGMyMDUuLjNjNTVhNjg3YmY4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2JhbFNj
b3BlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNiw2ICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNo
YXJlZFdvcmtlckdsb2JhbFNjb3BlLmgiCiAKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5j
bHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSAiV29ya2Vy
VGhyZWFkLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtMzMsMTcg
KzM5LDQ0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlKTsKIAorI2RlZmluZSBTQ09QRV9SRUxFQVNFX0xP
RyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBbc2hhcmVkV29ya2Vy
SWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OiIgZm10LCB0
aGlzLCB0aGlzLT50aHJlYWQoKS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1Nf
XykKKwogU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OlNoYXJlZFdvcmtlckdsb2JhbFNjb3BlKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1zLCBSZWY8U2Vj
dXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBXb3JrZXJUaHJlYWQmIHRocmVhZCwgUmVmPFNlY3VyaXR5
T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5l
Y3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKQogICAgIDogV29ya2Vy
R2xvYmFsU2NvcGUoV29ya2VyVGhyZWFkVHlwZTo6U2hhcmVkV29ya2VyLCBwYXJhbXMsIFdURk1v
dmUob3JpZ2luKSwgdGhyZWFkLCBXVEZNb3ZlKHRvcE9yaWdpbiksIGNvbm5lY3Rpb25Qcm94eSwg
c29ja2V0UHJvdmlkZXIpCiAgICAgLCBtX25hbWUobmFtZSkKIHsKKyAgICBTQ09QRV9SRUxFQVNF
X0xPRygiU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6Iik7CiAgICAgcmVsYXhBZG9wdGlvblJlcXVp
cmVtZW50KCk7CiAgICAgYXBwbHlDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMo
cGFyYW1zLmNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyk7CiB9CiAKK1NoYXJl
ZFdvcmtlclRocmVhZCYgU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OnRocmVhZCgpCit7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFNoYXJlZFdvcmtlclRocmVhZCY+KFdvcmtlckdsb2JhbFNjb3Bl
Ojp0aHJlYWQoKSk7Cit9CisKIHZvaWQgU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OmNsb3NlKCkK
IHsKKyAgICBTQ09QRV9SRUxFQVNFX0xPRygiY2xvc2U6Iik7CiAgICAgdGhyZWFkKCkuc3RvcChu
dWxscHRyKTsKIH0KIAorLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
d29ya2Vycy5odG1sI2RvbS1zaGFyZWR3b3JrZXIgc3RlcCAxMS41Cit2b2lkIFNoYXJlZFdvcmtl
ckdsb2JhbFNjb3BlOjpwb3N0Q29ubmVjdEV2ZW50KFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiB0
cmFuc2ZlcnJlZFBvcnQsIFN0cmluZyYmIHNvdXJjZU9yaWdpbikKK3sKKyAgICBTQ09QRV9SRUxF
QVNFX0xPRygicG9zdENvbm5lY3RFdmVudDoiKTsKKyAgICBhdXRvIHNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCIiKTsKKyAgICBBU1NFUlQoc2Vy
aWFsaXplZFNjcmlwdFZhbHVlKTsKKyAgICBhdXRvIHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFu
Z2xlUG9ydHMoKnRoaXMsIHsgV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpIH0pOworICAgIEFTU0VS
VChwb3J0cy5zaXplKCkgPT0gMSk7CisgICAgYXV0byBwb3J0ID0gcG9ydHNbMF07CisgICAgQVNT
RVJUKHBvcnQpOworICAgIGF1dG8gZXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3Zl
KHBvcnRzKSwgc2VyaWFsaXplZFNjcmlwdFZhbHVlLnJlbGVhc2VOb25OdWxsKCksIHNvdXJjZU9y
aWdpbiwgeyB9LCBwb3J0KTsKKyAgICBldmVudC0+aW5pdEV2ZW50KGV2ZW50TmFtZXMoKS5jb25u
ZWN0RXZlbnQsIGZhbHNlLCBmYWxzZSk7CisKKyAgICBkaXNwYXRjaEV2ZW50KFdURk1vdmUoZXZl
bnQpKTsKK30KKworI3VuZGVmIFNDT1BFX1JFTEVBU0VfTE9HCisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IGYzNzc5Yjg0ZDE1MC4uMTVkZGM1MzhkYjZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJHbG9iYWxT
Y29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckds
b2JhbFNjb3BlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjUsMTEgKzI1LDEzIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAi
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5o
IgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBTaGFyZWRXb3JrZXJUaHJlYWQ7CiBzdHJ1Y3QgV29ya2VyUGFyYW1ldGVyczsKIAogY2xh
c3MgU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUgZmluYWwgOiBwdWJsaWMgV29ya2VyR2xvYmFsU2Nv
cGUgewpAQCAtMzksNyArNDEsMTEgQEAgcHVibGljOgogCiAgICAgVHlwZSB0eXBlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gVHlwZTo6U2hhcmVkV29ya2VyOyB9CiAgICAgY29uc3QgU3RyaW5nJiBu
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgU2hhcmVkV29ya2VyVGhyZWFkJiB0
aHJlYWQoKTsKKworICAgIHZvaWQgcG9zdENvbm5lY3RFdmVudChUcmFuc2ZlcnJlZE1lc3NhZ2VQ
b3J0JiYsIFN0cmluZyYmIHNvdXJjZU9yaWdpbik7CiAgICAgdm9pZCBjbG9zZSgpOworCiBwcml2
YXRlOgogICAgIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgV29ya2VyUGFyYW1ldGVycyYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiwgV29ya2VyVGhyZWFk
JiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0
aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44N2E5NzIxMDQ4NzkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgK
QEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIFNo
YXJlZFdvcmtlcklkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFNoYXJlZFdvcmtlcklkZW50aWZp
ZXIgPSBPYmplY3RJZGVudGlmaWVyPFNoYXJlZFdvcmtlcklkZW50aWZpZXJUeXBlPjsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9T
aGFyZWRXb3JrZXJLZXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LjVmOWU2ZGM5MGJhOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlcktleS5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNsaWVudE9yaWdpbi5oIgorI2luY2x1ZGUgPHd0Zi9I
YXNoZXIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFNoYXJlZFdvcmtlcktleSB7
CisgICAgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbjsKKyAgICBVUkwgdXJsOworICAgIFN0
cmluZyBuYW1lOworCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OworfTsKKworaW5saW5lIHVu
c2lnbmVkIFNoYXJlZFdvcmtlcktleTo6aGFzaCgpIGNvbnN0Cit7CisgICAgSGFzaGVyIGhhc2hl
cjsKKyAgICBhZGQoaGFzaGVyLCBvcmlnaW4uaGFzaCgpKTsKKyAgICBhZGQoaGFzaGVyLCB1cmwp
OworICAgIGFkZChoYXNoZXIsIG5hbWUpOworICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOworfQor
CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZFdvcmtlcktleSYgYSwgY29uc3Qg
U2hhcmVkV29ya2VyS2V5JiBiKQoreworICAgIHJldHVybiBhLm9yaWdpbiA9PSBiLm9yaWdpbiAm
JiBhLnVybCA9PSBiLnVybCAmJiBhLm5hbWUgPT0gYi5uYW1lOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0
SGFzaDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk+IHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFz
aChjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIGtleSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBrZXkuaGFzaCgpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdl
YkNvcmU6OlNoYXJlZFdvcmtlcktleSYgYSwgY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5
JiBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGEgPT0gYjsKKyAgICB9CisKKyAgICBzdGF0aWMg
Y29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOworfTsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk+IDog
R2VuZXJpY0hhc2hUcmFpdHM8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5PiB7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsKKyAgICBzdGF0aWMgdm9p
ZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBzbG90KSB7
IG5ldyAoTm90TnVsbCwgJnNsb3QudXJsKSBVUkwoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUp
OyB9CisgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgV2ViQ29yZTo6U2hhcmVk
V29ya2VyS2V5JiBzbG90KSB7IHJldHVybiBzbG90LnVybC5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAxMjZiYzRmZWQ4Ny4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMTIyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiU2hhcmVkV29ya2VyTWFuYWdlci5oIgotCi0jaW5jbHVkZSAiQ29udGVudFNlY3Vy
aXR5UG9saWN5LmgiCi0jaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkxvYWRlclN0
cmF0ZWd5LmgiCi0jaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1T
dHJhdGVnaWVzLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVk
V29ya2VyR2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJQcm94eS5oIgotI2lu
Y2x1ZGUgIlNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtl
clRocmVhZC5oIgotI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKLSNpbmNsdWRlICJXb3JrZXJT
Y3JpcHRMb2FkZXIuaCIKLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRl
IDx3dGYvUnVuTG9vcC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVNoYXJlZFdvcmtlck1h
bmFnZXImIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNpbmdsZXRvbigpCi17Ci0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFNoYXJlZFdvcmtlck1hbmFnZXI+IGluc3RhbmNlOwotICAgIHJldHVybiBp
bnN0YW5jZS5nZXQoKTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpjb25uZWN0KGNv
bnN0IFVSTCYgdXJsLCBTaGFyZWRXb3JrZXImIHdvcmtlciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9y
dCYmIG1lc3NhZ2VQb3J0LCBXb3JrZXJPcHRpb25zJiYgb3B0aW9ucykKLXsKLSAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwotICAgIC8vIEZJWE1FOiBIYW5kbGUgd29ya2VycyBmcm9tIG90
aGVyIHByb2Nlc3Nlcywgd2hpY2ggd2lsbCBwcm9iYWJseSByZXF1aXJlIG1vdmluZyBjb25uZWN0
IHRvIHRoZSBGcmFtZUxvYWRlckNsaWVudCBvciBzb21ldGhpbmcuCi0gICAgLy8gTWF5YmUgc29t
ZXRoaW5nIG1vcmUgbGlrZSB3aGF0IFNlcnZpY2VXb3JrZXJzIGRvZXMuCi0KLSAgICAvLyBGSVhN
RTogQ2hlY2sgaWYgd2UgYWxyZWFkeSBtYWRlIGEgdGhyZWFkLgotICAgIC8vIEZJWE1FOiBDaGVj
ayBpZiB0aGVyZSdzIGFscmVhZHkgYSBzaGFyZWQgd29ya2VyIGFuZCB1c2UgdGhhdCBpZiB0aGVy
ZSBpcy4KLQotICAgIGF1dG8gbG9hZGVyID0gbWFrZVVuaXF1ZVJlZjxTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXI+KHVybCwgd29ya2VyLCBXVEZNb3ZlKG1lc3NhZ2VQb3J0KSwgV1RGTW92ZShvcHRp
b25zKSk7Ci0gICAgYXV0byBpZGVudGlmaWVyID0gbG9hZGVyLT5pZGVudGlmaWVyKCk7Ci0gICAg
bV9sb2FkZXJzLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKGxvYWRlcikpOwotfQotCi12b2lkIFNo
YXJlZFdvcmtlck1hbmFnZXI6OnNjcmlwdExvYWRGYWlsZWQoU2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVyJiBsb2FkZXIpCi17Ci0gICAgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNo
RXZlbnQobG9hZGVyLndvcmtlcigpLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBF
dmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKLSAgICBtX2xvYWRlcnMucmVtb3ZlKGxvYWRlci5p
ZGVudGlmaWVyKCkpOwotfQotCi12b2lkIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNjcmlwdExvYWRl
ZFN1Y2Nlc3NmdWxseShTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXImIGxvYWRlciwgY29uc3QgU2Ny
aXB0QnVmZmVyJiBzY3JpcHRCdWZmZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIFNoYXJlZFdvcmtlciYgc2hhcmVkV29ya2VyLCBUcmFuc2ZlcnJlZE1l
c3NhZ2VQb3J0JiYgdHJhbnNmZXJyZWRQb3J0KQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7Ci0gICAgYXV0byYgd29ya2VyID0gbG9hZGVyLndvcmtlcigpOwotICAgIGF1dG8mIG9w
dGlvbnMgPSBsb2FkZXIub3B0aW9ucygpOwotCi0gICAgYXV0byYgcHJveHkgPSBzaGFyZWRXb3Jr
ZXIucHJveHkoKTsKLQotICAgIHByb3h5LnN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoCi0gICAgICAg
IGxvYWRlci51cmwoKSwKLSAgICAgICAgb3B0aW9ucy5uYW1lLAotICAgICAgICBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LnVzZXJBZ2VudChsb2FkZXIudXJsKCkpLAotICAgICAgICBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+aXNPbkxpbmUoKSwKLSAgICAgICAgc2NyaXB0
QnVmZmVyLAotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LmNvbnRlbnRTZWN1cml0eVBv
bGljeSgpLT5yZXNwb25zZUhlYWRlcnMoKSwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKSwKLSAgICAgICAg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KCksCi0gICAg
ICAgIHdvcmtlci5jcmVhdGlvblRpbWUoKSwKLSAgICAgICAgUmVmZXJyZXJQb2xpY3k6OkVtcHR5
U3RyaW5nLAotICAgICAgICBvcHRpb25zLnR5cGUsCi0gICAgICAgIG9wdGlvbnMuY3JlZGVudGlh
bHMsCi0gICAgICAgIHdvcmtlci5ydW50aW1lRmxhZ3MoKQotICAgICk7Ci0gICAgaWYgKCFwcm94
eS50aHJlYWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTihpczxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkp
OwotICAgIGF1dG8gc291cmNlT3JpZ2luID0gZG93bmNhc3Q8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpLnNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmcoKTsKLQotICAgIHByb3h5LnRo
cmVhZCgpLT5ydW5Mb29wKCkucG9zdFRhc2soW3RyYW5zZmVycmVkUG9ydCA9IFdURk1vdmUodHJh
bnNmZXJyZWRQb3J0KSwgc291cmNlT3JpZ2luID0gV1RGTW92ZShzb3VyY2VPcmlnaW4pLmlzb2xh
dGVkQ29weSgpXSAoYXV0byYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgbXV0YWJsZSB7Ci0gICAg
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgICAgIC8vIGh0dHBzOi8vaHRt
bC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dvcmtlcnMuaHRtbCNkb20tc2hhcmVkd29ya2Vy
IHN0ZXAgMTEuNQotICAgICAgICBhdXRvIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA9IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCIiKTsKLSAgICAgICAgQVNTRVJUKHNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSk7Ci0gICAgICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0
cyhzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB7IFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSB9KTsK
LSAgICAgICAgQVNTRVJUKHBvcnRzLnNpemUoKSA9PSAxKTsKLSAgICAgICAgYXV0byBwb3J0ID0g
cG9ydHNbMF07Ci0gICAgICAgIEFTU0VSVChwb3J0KTsKLSAgICAgICAgYXV0byBldmVudCA9IE1l
c3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUocG9ydHMpLCBzZXJpYWxpemVkU2NyaXB0VmFsdWUu
cmVsZWFzZU5vbk51bGwoKSwgc291cmNlT3JpZ2luLCB7IH0sIHBvcnQpOwotICAgICAgICBldmVu
dC0+aW5pdEV2ZW50KGV2ZW50TmFtZXMoKS5jb25uZWN0RXZlbnQsIGZhbHNlLCBmYWxzZSk7Ci0K
LSAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxTaGFy
ZWRXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwotICAgICAgICBh
dXRvJiB3b3JrZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFNoYXJlZFdvcmtlckdsb2JhbFNjb3Bl
PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUuZGlz
cGF0Y2hFdmVudChXVEZNb3ZlKGV2ZW50KSk7Ci0gICAgfSk7Ci0KLSAgICBtX2xvYWRlcnMucmVt
b3ZlKGxvYWRlci5pZGVudGlmaWVyKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uZGJkMzgxNTkyZjI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCAr
MSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3Qu
aCIKKyNpbmNsdWRlICJFcnJvckV2ZW50LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1
ZGUgIlNjcmlwdEJ1ZmZlci5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgorI2luY2x1ZGUg
IlNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oIgorI2luY2x1ZGUgIldvcmtlckZldGNoUmVzdWx0
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0Vf
TE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb246OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBD
T05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihT
aGFyZWRXb3JrZXIsICIlcCAtIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OiIgZm10LCB0
aGlzLCAjI19fVkFfQVJHU19fKQorCitzdGF0aWMgdWludDY0X3QgbG9hZGVySWRlbnRpZmllclNl
ZWQgPSAwOworCitTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uKCkgPSBkZWZhdWx0OworCitTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
Ojp+U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpID0gZGVmYXVsdDsKKwordm9pZCBTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpmZXRjaFNjcmlwdEluQ2xpZW50KFVSTCYmIHVybCwg
V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLCBXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRvKiB3b3JrZXJPYmplY3Qg
PSBTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVyKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIpOworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coImZldGNoU2NyaXB0SW5DbGllbnQ6IHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cywgd29ya2VyPSVwIiwgc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHdvcmtlck9i
amVjdCk7CisgICAgaWYgKCF3b3JrZXJPYmplY3QpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcih7IH0pOworCisgICAgYXV0byBsb2FkZXJJZGVudGlmaWVyID0gKytsb2FkZXJJZGVu
dGlmaWVyU2VlZDsKKyAgICBhdXRvIGxvYWRlciA9IG1ha2VVbmlxdWVSZWY8U2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyPihXVEZNb3ZlKHVybCksICp3b3JrZXJPYmplY3QsIFdURk1vdmUod29ya2Vy
T3B0aW9ucykpOworICAgIGF1dG8gbG9hZGVyUHRyID0gbG9hZGVyLnB0cigpOworICAgIG1fbG9h
ZGVycy5hZGQobG9hZGVySWRlbnRpZmllciwgV1RGTW92ZShsb2FkZXIpKTsKKworICAgIGxvYWRl
clB0ci0+bG9hZChbdGhpcywgbG9hZGVySWRlbnRpZmllciwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmIGZldGNo
UmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiZmV0Y2hT
Y3JpcHRJbkNsaWVudDogZmluaXNoZWQgc2NyaXB0IGxvYWQsIHN1Y2Nlc3M9JWQiLCBmZXRjaFJl
c3VsdC5lcnJvci5pc051bGwoKSk7CisgICAgICAgIGF1dG8gbG9hZGVyID0gbV9sb2FkZXJzLnRh
a2UobG9hZGVySWRlbnRpZmllcik7CisgICAgICAgIEFTU0VSVChsb2FkZXIpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihmZXRjaFJlc3VsdCk7CisgICAgfSk7Cit9CisKK3ZvaWQgU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkRmFpbHVyZShX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBhdXRvKiB3b3Jr
ZXJPYmplY3QgPSBTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVyKHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIpOworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IoIm5vdGlmeVdv
cmtlck9iamVjdE9mTG9hZEZhaWx1cmU6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtw
dWJsaWN9cywgd29ya2VyPSVwIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCksIHdvcmtlck9iamVjdCk7CisgICAgaWYgKHdvcmtlck9iamVjdCkK
KyAgICAgICAgd29ya2VyT2JqZWN0LT5kaWRGYWlsTG9hZGluZygpOworfQorCit2b2lkIFNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChTaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBhdXRvKiB3b3JrZXJPYmplY3QgPSBTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVy
KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9M
T0dfRVJST1IoInBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdDogc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcj0le3B1YmxpY31zLCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgd29ya2VyT2JqZWN0KTsKKyAgICBpZiAo
d29ya2VyT2JqZWN0KQorICAgICAgICBBY3RpdmVET01PYmplY3Q6OnF1ZXVlVGFza1RvRGlzcGF0
Y2hFdmVudCgqd29ya2VyT2JqZWN0LCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIEVycm9y
RXZlbnQ6OmNyZWF0ZShlcnJvck1lc3NhZ2UsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCB7IH0pKTsKK30KKworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0cKKyN1bmRl
ZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjUxOTExZDRhMTY3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDYy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cy5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCIK
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBN
ZXNzYWdlUG9ydDsKK2NsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjsKKworc3RydWN0IENs
aWVudE9yaWdpbjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKK3N0cnVjdCBXb3JrZXJPcHRp
b25zOworCitjbGFzcyBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIDogcHVibGljIFJlZkNv
dW50ZWQ8U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbj4geworcHVibGljOgorICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgflNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKTsKKworICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0IENsaWVudE9yaWdpbiYsIFNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFVSTCYsIFRyYW5zZmVycmVkTWVzc2Fn
ZVBvcnQmJiwgY29uc3QgV29ya2VyT3B0aW9ucyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2hh
cmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikg
PSAwOworCitwcm90ZWN0ZWQ6CisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZmV0Y2hTY3JpcHRJbkNsaWVudChVUkwmJiwgV2ViQ29yZTo6U2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciwgV29ya2VyT3B0aW9ucyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFdvcmtlckZldGNoUmVzdWx0Jik+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkRmFpbHVyZShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RFeGNlcHRpb25Ub1dv
cmtlck9iamVjdChTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24oKTsKKworcHJpdmF0ZToKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBVbmlxdWVSZWY8
U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPj4gbV9sb2FkZXJzOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uZWJjZDRhN2FlODdhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oCkBA
IC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlBy
b2Nlc3NRdWFsaWZpZWQuaCIKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllclR5
cGUgeyB9OwordXNpbmcgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA9IFByb2Nlc3NRdWFs
aWZpZWQ8T2JqZWN0SWRlbnRpZmllcjxTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyVHlwZT4+
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mZDhlMTk3ZmEyNDIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5jcHAKQEAg
LTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJTaGFyZWRXb3JrZXJQcm92aWRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRp
YyBTaGFyZWRXb3JrZXJQcm92aWRlciogc2hhcmVkUHJvdmlkZXI7CisKKy8vIEZvciBXZWJLaXRM
ZWdhY3kuCitjbGFzcyBEdW1teVNoYXJlZFdvcmtlclByb3ZpZGVyIGZpbmFsIDogcHVibGljIFNo
YXJlZFdvcmtlclByb3ZpZGVyIHsKK3B1YmxpYzoKKyAgICBTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uKiBzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsg
fQorfTsKKworU2hhcmVkV29ya2VyUHJvdmlkZXImIFNoYXJlZFdvcmtlclByb3ZpZGVyOjpzaW5n
bGV0b24oKQoreworICAgIGlmICghc2hhcmVkUHJvdmlkZXIpCisgICAgICAgIHNoYXJlZFByb3Zp
ZGVyID0gbmV3IER1bW15U2hhcmVkV29ya2VyUHJvdmlkZXI7CisgICAgcmV0dXJuICpzaGFyZWRQ
cm92aWRlcjsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJQcm92aWRlcjo6c2V0U2hhcmVkUHJvdmlk
ZXIoU2hhcmVkV29ya2VyUHJvdmlkZXImIG5ld1Byb3ZpZGVyKQoreworICAgIFJFTEVBU0VfQVNT
RVJUKCFzaGFyZWRQcm92aWRlcik7CisgICAgc2hhcmVkUHJvdmlkZXIgPSAmbmV3UHJvdmlkZXI7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmgKc2ltaWxhcml0eSBpbmRleCA2NCUK
cmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFu
YWdlci5oCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJQcm92aWRlci5oCmluZGV4IGFlZjgyNzkwMzU4NC4uY2I1N2NjMWU3YjVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJvdmlkZXIuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMjYg
KzI1LDE3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiTWVzc2FnZVBvcnRJZGVudGlm
aWVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgiCi0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkV29ya2VyOwotY2xhc3MgU2NyaXB0QnVmZmVyOwot
c3RydWN0IFdvcmtlck9wdGlvbnM7Ci11c2luZyBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0ID0gc3Rk
OjpwYWlyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVzc2FnZVBv
cnRJZGVudGlmaWVyPjsKK2NsYXNzIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb247CiAKLWNs
YXNzIFNoYXJlZFdvcmtlck1hbmFnZXIgeworY2xhc3MgU2hhcmVkV29ya2VyUHJvdmlkZXIgewog
cHVibGljOgotICAgIHN0YXRpYyBTaGFyZWRXb3JrZXJNYW5hZ2VyJiBzaW5nbGV0b24oKTsKLSAg
ICB2b2lkIGNvbm5lY3QoY29uc3QgVVJMJiwgU2hhcmVkV29ya2VyJiwgVHJhbnNmZXJyZWRNZXNz
YWdlUG9ydCYmLCBXb3JrZXJPcHRpb25zJiYpOwotCi0gICAgdm9pZCBzY3JpcHRMb2FkRmFpbGVk
KFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYpOwotICAgIHZvaWQgc2NyaXB0TG9hZGVkU3VjY2Vz
c2Z1bGx5KFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQ
b3J0JiYpOworICAgIHN0YXRpYyBTaGFyZWRXb3JrZXJQcm92aWRlciYgc2luZ2xldG9uKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0U2hhcmVkUHJvdmlkZXIoU2hhcmVkV29y
a2VyUHJvdmlkZXImKTsKIAotcHJpdmF0ZToKLSAgICBIYXNoTWFwPFNoYXJlZFdvcmtlclNjcmlw
dExvYWRlcklkZW50aWZpZXIsIFVuaXF1ZVJlZjxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+PiBt
X2xvYWRlcnM7CisgICAgdmlydHVhbCB+U2hhcmVkV29ya2VyUHJvdmlkZXIoKSB7IH0KKyAgICB2
aXJ0dWFsIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24qIHNoYXJlZFdvcmtlckNvbm5lY3Rp
b24oKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm94eS5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDNiZTA3NTNmODkxZC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3h5LmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDIzMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb3h5LmgiCi0KLSNpbmNsdWRlICJDYWNoZVN0b3JhZ2VQ
cm92aWRlci5oIgotI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKLSNpbmNsdWRlICJFdmVudE5hbWVz
LmgiCi0jaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKLSNpbmNsdWRlICJNZXNzYWdlRXZl
bnQuaCIKLSNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNs
dWRlICJSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAi
U2hhcmVkV29ya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaCIKLSNp
bmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1T
aGFyZWRXb3JrZXJQcm94eTo6U2hhcmVkV29ya2VyUHJveHkoU2hhcmVkV29ya2VyJiBzaGFyZWRX
b3JrZXIpCi0gICAgOiBtX3NoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXIpCi0gICAgLCBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQoc2hhcmVkV29ya2VyLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkK
LSAgICAsIG1faWRlbnRpZmllckZvckluc3BlY3RvcihzaGFyZWRXb3JrZXIuaWRlbnRpZmllckZv
ckluc3BlY3RvcigpKQotewotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5OjpzdGFydFdvcmtl
ckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50LCBib29sIGlzT25saW5lLCBjb25zdCBTY3JpcHRCdWZmZXIm
IHNjcmlwdEJ1ZmZlciwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJz
JiBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsIGJvb2wgc2hvdWxkQnlwYXNz
TWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBDcm9zc09yaWdpbkVtYmVkZGVy
UG9saWN5JiBjcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LCBNb25vdG9uaWNUaW1lIHRpbWVPcmln
aW4sIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHdvcmtlclR5cGUs
IEZldGNoUmVxdWVzdENyZWRlbnRpYWxzIGNyZWRlbnRpYWxzLCBKU0M6OlJ1bnRpbWVGbGFncyBy
dW50aW1lRmxhZ3MpCi17Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgYXV0byBwYXJhbWV0ZXJzID0gV29ya2VyUGFyYW1ldGVycyB7Ci0gICAgICAg
IHNjcmlwdFVSTCwKLSAgICAgICAgbmFtZSwKLSAgICAgICAgbV9pZGVudGlmaWVyRm9ySW5zcGVj
dG9yLAotICAgICAgICB1c2VyQWdlbnQsCi0gICAgICAgIGlzT25saW5lLAotICAgICAgICBjb250
ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsCi0gICAgICAgIHNob3VsZEJ5cGFzc01h
aW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwKLSAgICAgICAgY3Jvc3NPcmlnaW5FbWJlZGRl
clBvbGljeSwKLSAgICAgICAgdGltZU9yaWdpbiwKLSAgICAgICAgcmVmZXJyZXJQb2xpY3ksCi0g
ICAgICAgIHdvcmtlclR5cGUsCi0gICAgICAgIGNyZWRlbnRpYWxzLAotICAgICAgICBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPnNldHRpbmdzVmFsdWVzKCkKLSAgICB9OwotCi0gICAgaWYgKCFt
X3dvcmtlclRocmVhZCkgewotICAgICAgICBtX3dvcmtlclRocmVhZCA9IFNoYXJlZFdvcmtlclRo
cmVhZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIHNjcmlwdEJ1ZmZlciwgKnRoaXMsICp0aGlzLCAqdGhp
cywgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+dG9wT3JpZ2luKCksIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aWRiQ29ubmVjdGlvblBy
b3h5KCksIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c29ja2V0UHJvdmlkZXIoKSwgcnVudGlt
ZUZsYWdzKTsKLSAgICAgICAgbV93b3JrZXJUaHJlYWQtPnN0YXJ0KCk7Ci0gICAgfQotfQotCi12
b2lkIFNoYXJlZFdvcmtlclByb3h5Ojp0ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpCi17Ci0g
ICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9hc2tl
ZFRvVGVybWluYXRlID0gdHJ1ZTsKLSAgICBpZiAobV93b3JrZXJUaHJlYWQpCi0gICAgICAgIG1f
d29ya2VyVGhyZWFkLT5zdG9wKG51bGxwdHIpOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5
Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMm
JiBtZXNzYWdlKQotewotICAgIC8vIEZJWE1FOiBTaGFyZWRXb3JrZXIgZG9lc24ndCBoYXZlIHBv
c3RNZXNzYWdlLCBzbyB0aGlzIG1pZ2h0IG5vdCBiZSBuZWNlc3NhcnkuCi0gICAgcG9zdFRhc2tU
b1dvcmtlckdsb2JhbFNjb3BlKFttZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKV0oYXV0byYgc2Ny
aXB0Q29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIGNvbnRleHQgPSBkb3duY2FzdDxT
aGFyZWRXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0Q29udGV4dCk7Ci0gICAgICAgIGF1dG8gcG9y
dHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhzY3JpcHRDb250ZXh0LCBXVEZNb3ZlKG1l
c3NhZ2UudHJhbnNmZXJyZWRQb3J0cykpOwotICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXZlbnQo
TWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIG1lc3NhZ2UubWVzc2FnZS5yZWxl
YXNlTm9uTnVsbCgpKSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnBv
c3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmKT4mJiB0YXNrKQotewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCi0gICAgICAg
IHJldHVybjsKLSAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFdURk1vdmUo
dGFzaykpOwotfQotCi1ib29sIFNoYXJlZFdvcmtlclByb3h5OjpoYXNQZW5kaW5nQWN0aXZpdHko
KSBjb25zdAotewotICAgIHJldHVybiBtX2hhc1BlbmRpbmdBY3Rpdml0eSAmJiAhbV9hc2tlZFRv
VGVybWluYXRlOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5Ojp3b3JrZXJPYmplY3REZXN0
cm95ZWQoKQotewotICAgIG1fc2hhcmVkV29ya2VyID0gbnVsbHB0cjsKLSAgICBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
IHsKLSAgICAgICAgbV9tYXlCZURlc3Ryb3llZCA9IHRydWU7Ci0gICAgICAgIGlmIChtX3dvcmtl
clRocmVhZCkKLSAgICAgICAgICAgIHRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwo
KTsKLSAgICB9KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6bm90aWZ5TmV0d29ya1N0
YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpCi17Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX3dvcmtlclRocmVhZCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhbaXNPbmxpbmVd
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgIGF1dG8mIGdsb2Jh
bFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpOwotICAgICAgICBn
bG9iYWxTY29wZS5zZXRJc09ubGluZShpc09ubGluZSk7Ci0gICAgICAgIGdsb2JhbFNjb3BlLmRp
c3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShpc09ubGluZSA/IGV2ZW50TmFtZXMoKS5vbmxpbmVF
dmVudCA6IGV2ZW50TmFtZXMoKS5vZmZsaW5lRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBF
dmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwotICAgIH0pOwotfQotCi12b2lkIFNoYXJlZFdvcmtl
clByb3h5OjpzdXNwZW5kRm9yQmFja0ZvcndhcmRDYWNoZSgpCi17Ci0KLX0KLQotdm9pZCBTaGFy
ZWRXb3JrZXJQcm94eTo6cmVzdW1lRm9yQmFja0ZvcndhcmRDYWNoZSgpCi17Ci0KLX0KLQotdm9p
ZCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkwpCi17Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5w
b3N0VGFzayhbdGhpcywgZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlLmlzb2xhdGVkQ29weSgp
LCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCksIGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlcl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0gICAgICAgIGlmICghbV9zaGFy
ZWRXb3JrZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gV2UgZG9uJ3QgYm90
aGVyIGNoZWNraW5nIHRoZSBhc2tlZFRvVGVybWluYXRlKCkgZmxhZyBoZXJlLCBiZWNhdXNlIGV4
Y2VwdGlvbnMgc2hvdWxkICphbHdheXMqIGJlIHJlcG9ydGVkIGV2ZW4gaWYgdGhlIHRocmVhZCBp
cyB0ZXJtaW5hdGVkLgotICAgICAgICAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgZGlmZmVyZW50
IHRoYW4gdGhlIGJlaGF2aW9yIGluIE1lc3NhZ2VXb3JrZXJUYXNrLCBiZWNhdXNlIHRlcm1pbmF0
ZWQgd29ya2VycyBubyBsb25nZXIgZGVsaXZlciBtZXNzYWdlcyAoc2VjdGlvbiA0LjYgb2YgdGhl
IFdlYldvcmtlciBzcGVjKSwgYnV0IHRoZXkgZG8gcmVwb3J0IGV4Y2VwdGlvbnMuCi0gICAgICAg
IEFjdGl2ZURPTU9iamVjdDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCptX3NoYXJlZFdvcmtl
ciwgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFcnJvckV2ZW50OjpjcmVhdGUoZXJyb3JN
ZXNzYWdlLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgeyB9KSk7Ci0gICAg
fSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6Ondvcmtlckdsb2JhbFNjb3BlRGVzdHJv
eWVkKCkKLXsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKLSAgICAgICAgd29ya2VyR2xvYmFsU2NvcGVEZXN0
cm95ZWRJbnRlcm5hbCgpOwotICAgIH0pOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5Ojpw
b3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpCi17Ci0K
LX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6Y29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2Jq
ZWN0KGJvb2wpCi17Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnJlcG9ydFBlbmRpbmdB
Y3Rpdml0eShib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKLXsKLSAgICBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzLCBoYXNQZW5kaW5nQWN0aXZpdHldIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JikgewotICAgICAgICBtX2hhc1BlbmRpbmdBY3Rpdml0eSA9IGhhc1BlbmRp
bmdBY3Rpdml0eTsKLSAgICB9KTsKLX0KLQotUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+
IFNoYXJlZFdvcmtlclByb3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkKLXsKLSAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8
RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIHJldHVybiBkb2N1bWVu
dC5wYWdlKCktPmNhY2hlU3RvcmFnZVByb3ZpZGVyKCkuY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbigpOwotfQotCi1SZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlv
bj4gU2hhcmVkV29ya2VyUHJveHk6OmNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNv
bm5lY3Rpb24oKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byYgZG9j
dW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0g
ICAgaWYgKCFkb2N1bWVudC5wYWdlKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJl
dHVybiBkb2N1bWVudC5wYWdlKCktPmxpYldlYlJUQ1Byb3ZpZGVyKCkuY3JlYXRlUlRDRGF0YUNo
YW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclBy
b3h5Ojpwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNr
KQotewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soV1RGTW92ZSh0YXNr
KSk7Ci19Ci0KLWJvb2wgU2hhcmVkV29ya2VyUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2ss
IGNvbnN0IFN0cmluZyYgbW9kZSkKLXsKLSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RU
YXNrRm9yTW9kZShXVEZNb3ZlKHRhc2spLCBtb2RlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
dm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdE1lc3NhZ2VUb0RlYnVnZ2VyKGNvbnN0IFN0cmlu
ZyYpCi17Ci0KLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5n
RGlzYWJsZWRCeVdlYkluc3BlY3Rvcihib29sKQotewotCi19Ci0KLXZvaWQgU2hhcmVkV29ya2Vy
UHJveHk6Ondvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwoKQotewotICAgIC8vIFRo
aXMgaXMgYWx3YXlzIHRoZSBsYXN0IHRhc2sgdG8gYmUgcGVyZm9ybWVkLCBzbyB0aGUgcHJveHkg
aXMgbm90IG5lZWRlZCBmb3IgY29tbXVuaWNhdGlvbgotICAgIC8vIGluIGVpdGhlciBzaWRlIGFu
eSBtb3JlLiBIb3dldmVyLCB0aGUgV29ya2VyIG9iamVjdCBtYXkgc3RpbGwgZXhpc3QsIGFuZCBp
dCBhc3N1bWVzIHRoYXQgdGhlIHByb3h5IGV4aXN0cywgdG9vLgotICAgIG1fYXNrZWRUb1Rlcm1p
bmF0ZSA9IHRydWU7Ci0gICAgbV93b3JrZXJUaHJlYWQgPSBudWxscHRyOwotCi0gICAgLy8gVGhp
cyBiYWxhbmNlcyB0aGUgb3JpZ2luYWwgcmVmIGluIGNvbnN0cnVjdGlvbi4KLSAgICBpZiAobV9t
YXlCZURlc3Ryb3llZCkKLSAgICAgICAgZGVyZWYoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXggMzExZWJkNjA3OGJjLi5lYTJlMDQ4Yzc2MjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNj
cmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwyMyArMjksMjYgQEAKICNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
U2hhcmVkV29ya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyTWFuYWdlci5oIgorI2luY2x1
ZGUgIldvcmtlckZldGNoUmVzdWx0LmgiCiAjaW5jbHVkZSAiV29ya2VyUnVuTG9vcC5oIgogI2lu
Y2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNo
YXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyKGNvbnN0IFVS
TCYgdXJsLCBTaGFyZWRXb3JrZXImIHdvcmtlciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBv
cnQsIFdvcmtlck9wdGlvbnMmJiBvcHRpb25zKQotICAgIDogbV9pZGVudGlmaWVyKFNoYXJlZFdv
cmtlclNjcmlwdExvYWRlcklkZW50aWZpZXI6OmdlbmVyYXRlKCkpCi0gICAgLCBtX29wdGlvbnMo
V1RGTW92ZShvcHRpb25zKSkKK1NoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyKFVSTCYmIHVybCwgU2hhcmVkV29ya2VyJiB3b3JrZXIsIFdvcmtlck9wdGlv
bnMmJiBvcHRpb25zKQorICAgIDogbV9vcHRpb25zKFdURk1vdmUob3B0aW9ucykpCiAgICAgLCBt
X3dvcmtlcih3b3JrZXIpCi0gICAgLCBtX3BvcnQoV1RGTW92ZShwb3J0KSkKICAgICAsIG1fbG9h
ZGVyKFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlKCkpCi0gICAgLCBtX3BlbmRpbmdBY3Rpdml0
eSh3b3JrZXIubWFrZVBlbmRpbmdBY3Rpdml0eSh3b3JrZXIpKQotICAgICwgbV91cmwodXJsKQor
ICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQogewotICAgIG1fd29ya2VyLT5zZXRJc0xvYWRpbmco
dHJ1ZSk7Ci0gICAgbV9sb2FkZXItPmxvYWRBc3luY2hyb25vdXNseSgqd29ya2VyLnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgUmVzb3VyY2VSZXF1ZXN0KHVybCksIHdvcmtlci53b3JrZXJGZXRj
aE9wdGlvbnMob3B0aW9ucywgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2hhcmVkd29ya2Vy
KSwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQ6OkVuZm9yY2VXb3JrZXJTcmNEaXJl
Y3RpdmUsIFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsLCAqdGhpcywgV29ya2VyUnVuTG9vcDo6ZGVm
YXVsdE1vZGUoKSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoIW1fY29tcGxldGlvbkhhbmRsZXIpOworICAgIG1f
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIG1f
bG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoKm1fd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIFJlc291cmNlUmVxdWVzdChtX3VybCksIG1fd29ya2VyLT53b3JrZXJGZXRjaE9wdGlv
bnMobV9vcHRpb25zLCBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpTaGFyZWR3b3JrZXIpLCBD
b250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6RW5mb3JjZVdvcmtlclNyY0RpcmVjdGl2
ZSwgU2VydmljZVdvcmtlcnNNb2RlOjpBbGwsICp0aGlzLCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0
TW9kZSgpKTsKIH0KIAogdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpCkBAIC01NSwxNiArNTgsMTIgQEAgdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnQK
IAogdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKCkKIHsKLSAg
ICBtX3dvcmtlci0+c2V0SXNMb2FkaW5nKGZhbHNlKTsKKyAgICBpZiAobV9sb2FkZXItPmZhaWxl
ZCgpKQorICAgICAgICByZXR1cm4gbV9jb21wbGV0aW9uSGFuZGxlcih3b3JrZXJGZXRjaEVycm9y
KG1fbG9hZGVyLT5lcnJvcigpKSk7CiAKLSAgICBhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
ID0gbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAobV9sb2FkZXIt
PmZhaWxlZCgpIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7Ci0gICAgICAgIG1fd29ya2Vy
LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKLSAgICAgICAg
U2hhcmVkV29ya2VyTWFuYWdlcjo6c2luZ2xldG9uKCkuc2NyaXB0TG9hZEZhaWxlZCgqdGhpcyk7
IC8vIGRlbGV0ZXMgdGhpcy4KLSAgICB9IGVsc2UgeworICAgIGlmIChhdXRvKiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0ID0gbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZCgqc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgbV9sb2FkZXItPmlkZW50aWZpZXIoKSwgbV9sb2FkZXItPnNjcmlwdCgpLnRv
U3RyaW5nKCkpOwotICAgICAgICBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5zY3Jp
cHRMb2FkZWRTdWNjZXNzZnVsbHkoKnRoaXMsIG1fbG9hZGVyLT5zY3JpcHQoKSwgKm1fd29ya2Vy
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fd29ya2VyLmdldCgpLCBzdGQ6OmV4Y2hhbmdl
KG1fcG9ydCwgeyB9KSk7IC8vIGRlbGV0ZXMgdGhpcy4KLSAgICB9CisgICAgbV9jb21wbGV0aW9u
SGFuZGxlcih7IG1fbG9hZGVyLT5zY3JpcHQoKSwgbV9sb2FkZXItPmNlcnRpZmljYXRlSW5mbygp
LCBtX2xvYWRlci0+Y29udGVudFNlY3VyaXR5UG9saWN5KCksIG1fbG9hZGVyLT5jcm9zc09yaWdp
bkVtYmVkZGVyUG9saWN5KCksIG1fbG9hZGVyLT5yZWZlcnJlclBvbGljeSgpLCB7IH0gfSk7IC8v
IGRlbGV0ZXMgdGhpcy4KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIu
aAppbmRleCBiZjFkNGFlZjNhMDkuLmViMGI3MTQ1YmZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUs
NyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291cmNl
TG9hZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKQEAgLTM4
LDMzICszNywyOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNoYXJlZFdvcmtlcjsK
IGNsYXNzIFdvcmtlclNjcmlwdExvYWRlcjsKLQotY2xhc3MgU2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVyOwotdXNpbmcgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmllciA9IE9iamVjdElk
ZW50aWZpZXI8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPjsKLQotdXNpbmcgVHJhbnNmZXJyZWRN
ZXNzYWdlUG9ydCA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIsIFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllcj47CitzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7
CiAKIGNsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciA6IHByaXZhdGUgV29ya2VyU2NyaXB0
TG9hZGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIoY29uc3QgVVJMJiwgU2hhcmVkV29ya2VyJiwgVHJh
bnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBXb3JrZXJPcHRpb25zJiYpOworICAgIFNoYXJlZFdvcmtl
clNjcmlwdExvYWRlcihVUkwmJiwgU2hhcmVkV29ya2VyJiwgV29ya2VyT3B0aW9ucyYmKTsKKwor
ICAgIHZvaWQgbG9hZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdvcmtlckZldGNoUmVz
dWx0Jik+JiYpOwogCi0gICAgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgY29uc3QgVVJMJiB1
cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIFNoYXJlZFdvcmtlciYgd29ya2VyKCkg
eyByZXR1cm4gbV93b3JrZXIuZ2V0KCk7IH0KLSAgICBjb25zdCBXb3JrZXJPcHRpb25zJiBvcHRp
b25zKCkgeyByZXR1cm4gbV9vcHRpb25zOyB9CisgICAgY29uc3QgV29ya2VyT3B0aW9ucyYgb3B0
aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9uczsgfQogCiBwcml2YXRlOgogICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoKSBmaW5hbDsKIAot
ICAgIGNvbnN0IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVy
OwogICAgIGNvbnN0IFdvcmtlck9wdGlvbnMgbV9vcHRpb25zOwogICAgIGNvbnN0IFJlZjxTaGFy
ZWRXb3JrZXI+IG1fd29ya2VyOwotICAgIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQgbV9wb3J0Owog
ICAgIGNvbnN0IFJlZjxXb3JrZXJTY3JpcHRMb2FkZXI+IG1fbG9hZGVyOwotICAgIGNvbnN0IFJl
ZjxBY3RpdmVET01PYmplY3Q6OlBlbmRpbmdBY3Rpdml0eTxTaGFyZWRXb3JrZXI+PiBtX3BlbmRp
bmdBY3Rpdml0eTsKICAgICBjb25zdCBVUkwgbV91cmw7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYpPiBtX2NvbXBsZXRpb25IYW5kbGVyOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlclRocmVhZC5jcHAKaW5kZXggOWVkNTU4OGZiZDc5Li5lZmUw
NWUyN2MxNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyVGhyZWFkLmNwcApAQCAtMzEsMTQgKzMxLDE3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotU2hhcmVkV29ya2VyVGhyZWFkOjpTaGFyZWRXb3JrZXJUaHJlYWQoY29uc3QgV29y
a2VyUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VDb2Rl
LCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkmIGRl
YnVnZ2VyUHJveHksIFdvcmtlck9iamVjdFByb3h5JiBvYmplY3RQcm94eSwgV29ya2VyVGhyZWFk
U3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgSURC
Q2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlk
ZXIqIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MpCitTaGFy
ZWRXb3JrZXJUaHJlYWQ6OlNoYXJlZFdvcmtlclRocmVhZChTaGFyZWRXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IFNj
cmlwdEJ1ZmZlciYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmIGxvYWRlclByb3h5LCBX
b3JrZXJEZWJ1Z2dlclByb3h5JiBkZWJ1Z2dlclByb3h5LCBXb3JrZXJPYmplY3RQcm94eSYgb2Jq
ZWN0UHJveHksIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0IFNlY3VyaXR5
T3JpZ2luJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBjb25uZWN0
aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlciwgSlNDOjpSdW50aW1lRmxh
Z3MgcnVudGltZUZsYWdzKQogICAgIDogV29ya2VyVGhyZWFkKHBhcmFtZXRlcnMsIHNvdXJjZUNv
ZGUsIGxvYWRlclByb3h5LCBkZWJ1Z2dlclByb3h5LCBvYmplY3RQcm94eSwgc3RhcnRNb2RlLCB0
b3BPcmlnaW4sIGNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIHJ1bnRpbWVGbGFncykK
KyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV9uYW1lKHBhcmFtZXRlcnMu
bmFtZS5pc29sYXRlZENvcHkoKSkKIHsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIl
cCAtIFNoYXJlZFdvcmtlclRocmVhZDo6U2hhcmVkV29ya2VyVGhyZWFkOiIsIHRoaXMpOwogfQog
CiBSZWY8V29ya2VyR2xvYmFsU2NvcGU+IFNoYXJlZFdvcmtlclRocmVhZDo6Y3JlYXRlV29ya2Vy
R2xvYmFsU2NvcGUoY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1ldGVycywgUmVmPFNlY3Vy
aXR5T3JpZ2luPiYmIG9yaWdpbiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbikKIHsK
KyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFNoYXJlZFdvcmtlclRocmVhZDo6
Y3JlYXRlV29ya2VyR2xvYmFsU2NvcGU6IiwgdGhpcyk7CiAgICAgcmV0dXJuIFNoYXJlZFdvcmtl
ckdsb2JhbFNjb3BlOjpjcmVhdGUoc3RkOjpleGNoYW5nZShtX25hbWUsIHsgfSksIHBhcmFtZXRl
cnMsIFdURk1vdmUob3JpZ2luKSwgKnRoaXMsIFdURk1vdmUodG9wT3JpZ2luKSwgaWRiQ29ubmVj
dGlvblByb3h5KCksIHNvY2tldFByb3ZpZGVyKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclRocmVhZC5oCmluZGV4IDJmMDU2ZjlkNTli
Yi4uOWVhMjQ4NDdkMzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJUaHJlYWQuaApAQCAtMjUsMjEgKzI1LDI3IEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSAiU2hhcmVkV29ya2VySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldvcmtl
clRocmVhZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdvcmtlck9iamVjdFBy
b3h5OwogCisvLyBGSVhNRTogTW92ZSB0byB3b3JrZXJzL3NoYXJlZC9jb250ZXh0LgogY2xhc3Mg
U2hhcmVkV29ya2VyVGhyZWFkIDogcHVibGljIFdvcmtlclRocmVhZCB7CiBwdWJsaWM6CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxTaGFyZWRXb3JrZXJUaHJlYWQ+
IGNyZWF0ZShBcmdzJiYuLi4gYXJncykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRXb3Jr
ZXJUaHJlYWQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7IH0KKworICAgIFNoYXJlZFdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsg
fQorCiBwcml2YXRlOgotICAgIFNoYXJlZFdvcmtlclRocmVhZChjb25zdCBXb3JrZXJQYXJhbWV0
ZXJzJiwgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYs
IFdvcmtlckRlYnVnZ2VyUHJveHkmLCBXb3JrZXJPYmplY3RQcm94eSYsIFdvcmtlclRocmVhZFN0
YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJD
b25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciosIEpTQzo6UnVudGltZUZsYWdzKTsKKyAg
ICBTaGFyZWRXb3JrZXJUaHJlYWQoU2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgV29ya2Vy
UGFyYW1ldGVycyYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVy
UHJveHkmLCBXb3JrZXJEZWJ1Z2dlclByb3h5JiwgV29ya2VyT2JqZWN0UHJveHkmLCBXb3JrZXJU
aHJlYWRTdGFydE1vZGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIElEQkNsaWVu
dDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqLCBKU0M6OlJ1bnRpbWVGbGFn
cyk7CiAKICAgICBSZWY8V29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZVdvcmtlckdsb2JhbFNjb3Bl
KGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIFJlZjxTZWN1
cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4pIGZpbmFsOwogICAgIEFTQ0lJTGl0ZXJhbCB0aHJlYWRO
YW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIldlYkNvcmU6IFNoYXJlZFdvcmtlciJfczsgfQog
CisgICAgU2hhcmVkV29ya2VySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgU3RyaW5nIG1f
bmFtZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2Nv
bnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wN2E5MGQ5ODA1MTIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5o
IgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlclRocmVhZFBy
b3h5LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXImIFNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlcj4gc2hhcmVkTWFuYWdlcjsKKyAgICByZXR1cm4gc2hhcmVkTWFu
YWdlcjsKK30KKworU2hhcmVkV29ya2VyVGhyZWFkUHJveHkqIFNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyOjpzaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyKSBjb25zdAoreworICAgIHJldHVybiBtX3dvcmtlck1hcC5nZXQoc2hhcmVkV29y
a2VySWRlbnRpZmllcik7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0
b3BTaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlm
aWVyKQoreworICAgIGF1dG8gd29ya2VyID0gbV93b3JrZXJNYXAudGFrZShzaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlcjo6c3RvcFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0l
IiBQUkl1NjQgIiwgd29ya2VyPSVwIiwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgp
LCB3b3JrZXIuZ2V0KCkpOworICAgIGlmICghd29ya2VyKQorICAgICAgICByZXR1cm47CisKKyAg
ICB3b3JrZXItPnNldEFzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKTsKKworICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgYmUgYWJsZSB0byBkZWFsIHdpdGggdGhlIHRocmVhZCBiZWluZyB1bnJlc3Bv
bnNpdmUgaGVyZS4KKworICAgIGF1dG8mIHRocmVhZCA9IHdvcmtlci0+dGhyZWFkKCk7CisgICAg
dGhyZWFkLnN0b3AoW3dvcmtlciA9IFdURk1vdmUod29ya2VyKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgLy8gU3BpbiB0aGUgcnVubG9vcCBiZWZvcmUgcmVsZWFzaW5nIHRoZSBzaGFyZWQgd29ya2Vy
IHRocmVhZCBwcm94eSwgYXMgdGhlcmUgd291bGQgb3RoZXJ3aXNlIGJlCisgICAgICAgIC8vIGEg
cmFjZSB0b3dhcmRzIGl0cyBkZXN0cnVjdGlvbi4KKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
d29ya2VyID0gV1RGTW92ZSh3b3JrZXIpXSB7IH0pOworICAgIH0pOworfQorCit2b2lkIFNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzdG9wQWxsU2hhcmVkV29ya2VycygpCit7CisgICAgd2hp
bGUgKCFtX3dvcmtlck1hcC5pc0VtcHR5KCkpCisgICAgICAgIHN0b3BTaGFyZWRXb3JrZXIobV93
b3JrZXJNYXAuYmVnaW4oKS0+a2V5KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlcjo6c2V0Q29ubmVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVjdGlvbj4mJiBjb25uZWN0
aW9uKQoreworICAgIEFTU0VSVCghbV9jb25uZWN0aW9uIHx8IG1fY29ubmVjdGlvbi0+aXNDbG9z
ZWQoKSk7CisgICAgbV9jb25uZWN0aW9uID0gV1RGTW92ZShjb25uZWN0aW9uKTsKK30KKworYXV0
byBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Y29ubmVjdGlvbigpIGNvbnN0IC0+IENvbm5l
Y3Rpb24qCit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsKK30KKwordm9pZCBTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6cmVnaXN0ZXJTaGFyZWRXb3JrZXJUaHJlYWQoUmVmPFNo
YXJlZFdvcmtlclRocmVhZFByb3h5PiYmIHByb3h5KQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXI6OnJlZ2lzdGVyU2hhcmVkV29ya2VyVGhyZWFkOiBzaGFyZWRXb3JrZXJJZGVudGlm
aWVyPSUiIFBSSXU2NCwgcHJveHktPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKworICAgIGF1
dG8gcmVzdWx0ID0gbV93b3JrZXJNYXAuYWRkKHByb3h5LT5pZGVudGlmaWVyKCksIHByb3h5LmNv
cHlSZWYoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsK
KworICAgIHByb3h5LT50aHJlYWQoKS5zdGFydChbXShjb25zdCBTdHJpbmcmIC8qZXhjZXB0aW9u
TWVzc2FnZSovKSB7IH0pOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpD
b25uZWN0aW9uOjpwb3N0Q29ubmVjdEV2ZW50KFNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVk
V29ya2VySWRlbnRpZmllciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHRyYW5zZmVycmVkUG9y
dCwgU3RyaW5nJiYgc291cmNlT3JpZ2luKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgYXV0byogcHJveHkgPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9u
KCkuc2hhcmVkV29ya2VyKHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9H
KFNoYXJlZFdvcmtlciwgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uOjpw
b3N0Q29ubmVjdEV2ZW50OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCAiLCBwcm94
eT0lcCIsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSwgcHJveHkpOworICAgIGlm
ICghcHJveHkpCisgICAgICAgIHJldHVybjsKKworICAgIHByb3h5LT50aHJlYWQoKS5ydW5Mb29w
KCkucG9zdFRhc2soW3RyYW5zZmVycmVkUG9ydCA9IFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwg
c291cmNlT3JpZ2luID0gV1RGTW92ZShzb3VyY2VPcmlnaW4pLmlzb2xhdGVkQ29weSgpXSAoYXV0
byYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOworICAgICAgICBkb3duY2FzdDxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4o
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkucG9zdENvbm5lY3RFdmVudChXVEZNb3ZlKHRyYW5zZmVy
cmVkUG9ydCksIFdURk1vdmUoc291cmNlT3JpZ2luKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb246OnRlcm1pbmF0ZVNoYXJlZFdvcmtl
cihTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6dGVybWluYXRlU2hhcmVkV29y
a2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VySWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKKyAgICBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkuc3RvcFNoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDQ3OTM3YzkxZTZiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmgiCisjaW5j
bHVkZSAiU2hhcmVkV29ya2VySWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk7
CisKK2NsYXNzIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXImIHNpbmdsZXRvbigp
OworCisgICAgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkqIHNoYXJlZFdvcmtlcihTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyKSBjb25zdDsKKyAgICB2b2lkIHN0b3BTaGFyZWRXb3JrZXIoU2hhcmVkV29y
a2VySWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wQWxsU2hhcmVkV29y
a2VycygpOworCisgICAgY2xhc3MgQ29ubmVjdGlvbiB7CisgICAgICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+Q29ubmVjdGlvbigpIHsg
fQorICAgICAgICB2aXJ0dWFsIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RFeGNlcHRpb25U
b1dvcmtlck9iamVjdChTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlVVJMKSA9IDA7CisgICAgICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzQ2xvc2VkOyB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZvaWQgc2V0QXNDbG9zZWQo
KSB7IG1faXNDbG9zZWQgPSB0cnVlOyB9CisKKyAgICAgICAgLy8gSVBDIG1lc3NhZ2UgaGFuZGxl
cnMuCisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdENvbm5lY3RFdmVudChTaGFyZWRX
b3JrZXJJZGVudGlmaWVyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFN0cmluZyYmIHNvdXJj
ZU9yaWdpbik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdGVybWluYXRlU2hhcmVkV29y
a2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9v
bCBtX2lzQ2xvc2VkIHsgZmFsc2UgfTsKKyAgICB9OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBDb25uZWN0aW9uKiBjb25uZWN0aW9uKCkgY29uc3Q7CisKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHJlZ2lzdGVyU2hhcmVkV29ya2VyVGhyZWFkKFJlZjxTaGFyZWRXb3JrZXJU
aHJlYWRQcm94eT4mJik7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJv
eWVkPFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyPjsKKworICAgIFNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyKCkgPSBkZWZhdWx0OworCisgICAgc3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+
IG1fY29ubmVjdGlvbjsKKyAgICBIYXNoTWFwPFNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFJlZjxT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eT4+IG1fd29ya2VyTWFwOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29u
dGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmM5ZGY5MDZhNWRlYwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkuY3BwCkBAIC0wLDAgKzEsMTk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCIKKworI2lu
Y2x1ZGUgIkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCisjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgor
I2luY2x1ZGUgIkV2ZW50TG9vcC5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRl
ICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiTGliV2ViUlRD
UHJvdmlkZXIuaCIKKyNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgorI2luY2x1ZGUgIk1lc3Nh
Z2VFdmVudC5oIgorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiUGFnZS5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgorI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKKyNp
bmNsdWRlICJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIgorI2luY2x1ZGUgIlNoYXJlZFdv
cmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkLmgiCisjaW5j
bHVkZSAiV29ya2VyRmV0Y2hSZXN1bHQuaCIKKyNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitzdGF0aWMgSGFzaFNldDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSo+JiBh
bGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8SGFzaFNldDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSo+PiBzZXQ7CisgICAgcmV0dXJuIHNl
dDsKK30KKworc3RhdGljIFdvcmtlclBhcmFtZXRlcnMgZ2VuZXJhdGVXb3JrZXJQYXJhbWV0ZXJz
KGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYgd29ya2VyRmV0
Y2hSZXN1bHQsIFdvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zLCBjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCwgRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIHJldHVybiBXb3JrZXJQYXJhbWV0
ZXJzIHsKKyAgICAgICAgc2NyaXB0VVJMLAorICAgICAgICB3b3JrZXJPcHRpb25zLm5hbWUsCisg
ICAgICAgICJzaGFyZWR3b3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5Ojpj
cmVhdGVJZGVudGlmaWVyKCksCisgICAgICAgIHVzZXJBZ2VudCwKKyAgICAgICAgcGxhdGZvcm1T
dHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmlzT25MaW5lKCksCisgICAgICAgIHdvcmtl
ckZldGNoUmVzdWx0LmNvbnRlbnRTZWN1cml0eVBvbGljeSwKKyAgICAgICAgZmFsc2UsCisgICAg
ICAgIHdvcmtlckZldGNoUmVzdWx0LmNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ksCisgICAgICAg
IE1vbm90b25pY1RpbWU6Om5vdygpLAorICAgICAgICB7IH0sCisgICAgICAgIHdvcmtlck9wdGlv
bnMudHlwZSwKKyAgICAgICAgd29ya2VyT3B0aW9ucy5jcmVkZW50aWFscywKKyAgICAgICAgZG9j
dW1lbnQuc2V0dGluZ3NWYWx1ZXMoKQorICAgIH07Cit9CisKK1NoYXJlZFdvcmtlclRocmVhZFBy
b3h5OjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShVbmlxdWVSZWY8UGFnZT4mJiBwYWdlLCBTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IENsaWVudE9y
aWdpbiYgY2xpZW50T3JpZ2luLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgV29ya2VyRmV0Y2hSZXN1
bHQmJiB3b3JrZXJGZXRjaFJlc3VsdCwgV29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50LCBDYWNoZVN0b3JhZ2VQcm92aWRlciYgY2FjaGVTdG9yYWdl
UHJvdmlkZXIpCisgICAgOiBtX3BhZ2UoV1RGTW92ZShwYWdlKSkKKyAgICAsIG1fZG9jdW1lbnQo
Km1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKKyAgICAsIG1fd29ya2VyVGhyZWFkKFNo
YXJlZFdvcmtlclRocmVhZDo6Y3JlYXRlKHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGdlbmVyYXRl
V29ya2VyUGFyYW1ldGVycyhzY3JpcHRVUkwsIHdvcmtlckZldGNoUmVzdWx0LCBXVEZNb3ZlKHdv
cmtlck9wdGlvbnMpLCB1c2VyQWdlbnQsIG1fZG9jdW1lbnQpLCBXVEZNb3ZlKHdvcmtlckZldGNo
UmVzdWx0LnNjcmlwdCksICp0aGlzLCAqdGhpcywgKnRoaXMsIFdvcmtlclRocmVhZFN0YXJ0TW9k
ZTo6Tm9ybWFsLCBjbGllbnRPcmlnaW4udG9wT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCksIG1fZG9j
dW1lbnQtPmlkYkNvbm5lY3Rpb25Qcm94eSgpLCBtX2RvY3VtZW50LT5zb2NrZXRQcm92aWRlcigp
LCBKU0M6OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpKSkKKyAgICAsIG1fY2FjaGVT
dG9yYWdlUHJvdmlkZXIoY2FjaGVTdG9yYWdlUHJvdmlkZXIpCit7CisgICAgQVNTRVJUKCFhbGxT
aGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkuY29udGFpbnModGhpcykpOworICAgIGFsbFNoYXJl
ZFdvcmtlclRocmVhZFByb3hpZXMoKS5hZGQodGhpcyk7CisKKyAgICBzdGF0aWMgYm9vbCBhZGRl
ZExpc3RlbmVyOworICAgIGlmICghYWRkZWRMaXN0ZW5lcikgeworICAgICAgICBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+YWRkT25saW5lU3RhdGVDaGFuZ2VMaXN0ZW5l
cigmbmV0d29ya1N0YXRlQ2hhbmdlZCk7CisgICAgICAgIGFkZGVkTGlzdGVuZXIgPSB0cnVlOwor
ICAgIH0KK30KKworU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6On5TaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eSgpCit7CisgICAgQVNTRVJUKGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKS5jb250
YWlucyh0aGlzKSk7CisgICAgYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGllcygpLnJlbW92ZSh0
aGlzKTsKK30KKworU2hhcmVkV29ya2VySWRlbnRpZmllciBTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eTo6aWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd29ya2VyVGhyZWFkLT5pZGVu
dGlmaWVyKCk7Cit9CisKK1JlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBTaGFyZWRXb3Jr
ZXJUaHJlYWRQcm94eTo6Y3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAoIW1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbikK
KyAgICAgICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uID0gbV9jYWNoZVN0b3JhZ2VQcm92aWRl
ci5jcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCk7CisgICAgcmV0dXJuIG1fY2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjsKK30KKworUmVmUHRyPFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNv
bm5lY3Rpb24+IFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpjcmVhdGVSVENEYXRhQ2hhbm5lbFJl
bW90ZUhhbmRsZXJDb25uZWN0aW9uKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIHJldHVybiBtX3BhZ2UtPmxpYldlYlJUQ1Byb3ZpZGVyKCkuY3JlYXRlUlRDRGF0YUNoYW5u
ZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpOworfQorCit2b2lkIFNoYXJlZFdvcmtlclRocmVh
ZFByb3h5Ojpwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0
YXNrKQoreworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Rhc2sgPSBXVEZNb3ZlKHRhc2spLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHRhc2sucGVy
Zm9ybVRhc2socHJvdGVjdGVkVGhpcy0+bV9kb2N1bWVudC5nZXQoKSk7CisgICAgfSk7Cit9CisK
K2Jvb2wgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2ssIGNv
bnN0IFN0cmluZyYgbW9kZSkKK3sKKyAgICBpZiAobV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVk
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgp
LnBvc3RUYXNrRm9yTW9kZShXVEZNb3ZlKHRhc2spLCBtb2RlKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwordm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdE1lc3NhZ2VUb0RlYnVnZ2Vy
KGNvbnN0IFN0cmluZyYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4KK30KKwordm9pZCBT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYklu
c3BlY3Rvcihib29sKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCit9CisKK3ZvaWQgU2hh
cmVkV29ya2VyVGhyZWFkUHJveHk6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoYm9vbCBpc09uTGluZSkK
K3sKKyAgICBmb3IgKGF1dG8qIHByb3h5IDogYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGllcygp
KQorICAgICAgICBwcm94eS0+bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGlzT25MaW5lKTsKK30K
Kwordm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdl
KGJvb2wgaXNPbmxpbmUpCit7CisgICAgaWYgKG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZShbaXNPbmxpbmVdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7
CisgICAgICAgIGF1dG8mIGdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KGNvbnRleHQpOworICAgICAgICBnbG9iYWxTY29wZS5zZXRJc09ubGluZShpc09ubGluZSk7Cisg
ICAgICAgIGdsb2JhbFNjb3BlLmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01N
YW5pcHVsYXRpb24sIFtnbG9iYWxTY29wZSA9IFJlZiB7IGdsb2JhbFNjb3BlIH0sIGlzT25saW5l
XSB7CisgICAgICAgICAgICBnbG9iYWxTY29wZS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRl
KGlzT25saW5lID8gZXZlbnROYW1lcygpLm9ubGluZUV2ZW50IDogZXZlbnROYW1lcygpLm9mZmxp
bmVFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7
CisgICAgICAgIH0pOworICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOworfQor
CisvLyBGSVhNRTogVHJ5IGFuZCBzaGFyZSBjb2RlIHdpdGggU2VydmljZVdvcmtlclRocmVhZFBy
b3h5LmNwcC4KK3ZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnNldHVwUGFnZUZvclNoYXJl
ZFdvcmtlcihQYWdlJiBwYWdlLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgQ2xpZW50T3Jp
Z2luJiBjbGllbnRPcmlnaW4sIGNvbnN0IFdvcmtlckZldGNoUmVzdWx0JiB3b3JrZXJGZXRjaFJl
c3VsdCkKK3sKKyAgICBhdXRvJiBtYWluRnJhbWUgPSBwYWdlLm1haW5GcmFtZSgpOworICAgIG1h
aW5GcmFtZS5sb2FkZXIoKS5pbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudCh7IH0pOworICAgIGF1
dG8gZG9jdW1lbnQgPSBEb2N1bWVudDo6Y3JlYXRlTm9uUmVuZGVyZWRQbGFjZWhvbGRlcihtYWlu
RnJhbWUsIHNjcmlwdFVSTCk7CisgICAgZG9jdW1lbnQtPmNyZWF0ZURPTVdpbmRvdygpOworCisg
ICAgZG9jdW1lbnQtPnN0b3JhZ2VCbG9ja2luZ1N0YXRlRGlkQ2hhbmdlKCk7CisKKyAgICBhdXRv
IG9yaWdpbiA9IGNsaWVudE9yaWdpbi50b3BPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKTsKKyAgICBv
cmlnaW4tPnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShwYWdlLnNldHRpbmdzKCkuc3RvcmFnZUJs
b2NraW5nUG9saWN5KCkpOworCisgICAgYXV0byBvcmlnaW5Bc1VSTCA9IG9yaWdpbi0+dG9VUkwo
KTsKKyAgICBkb2N1bWVudC0+c2V0U2l0ZUZvckNvb2tpZXMob3JpZ2luQXNVUkwpOworICAgIGRv
Y3VtZW50LT5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhvcmlnaW5Bc1VSTCk7CisgICAgZG9jdW1l
bnQtPnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKG9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0
aXRpb24oKSk7CisKKyAgICBpZiAoYXV0byBwb2xpY3kgPSBwYXJzZVJlZmVycmVyUG9saWN5KHdv
cmtlckZldGNoUmVzdWx0LnJlZmVycmVyUG9saWN5LCBSZWZlcnJlclBvbGljeVNvdXJjZTo6SFRU
UEhlYWRlcikpCisgICAgICAgIGRvY3VtZW50LT5zZXRSZWZlcnJlclBvbGljeSgqcG9saWN5KTsK
KworICAgIG1haW5GcmFtZS5zZXREb2N1bWVudChXVEZNb3ZlKGRvY3VtZW50KSk7Cit9CisKK3Zv
aWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIGNhbGxPbk1haW5UaHJlYWQoW3No
YXJlZFdvcmtlcklkZW50aWZpZXIgPSBtX3dvcmtlclRocmVhZC0+aWRlbnRpZmllcigpLCBlcnJv
ck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCksIGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlciwgc291cmNlVVJMID0gc291cmNlVVJMLmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAg
IGlmIChhdXRvKiBjb25uZWN0aW9uID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmds
ZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPnBvc3RFeGNlcHRp
b25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMKTsKKyAgICB9KTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2Nv
bnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaApzaW1pbGFyaXR5IGluZGV4IDU0JQpyZW5h
bWUgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm94eS5o
CnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdv
cmtlclRocmVhZFByb3h5LmgKaW5kZXggZGI3Yjg1MDlkZjVhLi5mN2IyOTI0ZGJlMzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3h5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJU
aHJlYWRQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI1LDggKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJT
aGFyZWRXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV29ya2VyRGVidWdnZXJQcm94eS5o
IgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJM
b2FkZXJQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlck9iamVjdFByb3h5LmgiCiAjaW5jbHVkZSAi
V29ya2VyT3B0aW9ucy5oIgpAQCAtMzQsMjkgKzM0LDI3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgQ2FjaGVTdG9yYWdlUHJvdmlkZXI7CitjbGFzcyBQYWdlOwogY2xhc3MgU2hh
cmVkV29ya2VyOwogY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkOwogCi1jbGFzcyBTaGFyZWRXb3Jr
ZXJQcm94eSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRXb3JrZXJQcm94eT4s
IHB1YmxpYyBXb3JrZXJHbG9iYWxTY29wZVByb3h5LCBwdWJsaWMgV29ya2VyT2JqZWN0UHJveHks
IHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94eSwgcHVibGljIFdvcmtlckRlYnVnZ2VyUHJveHkgewor
c3RydWN0IENsaWVudE9yaWdpbjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKKworY2xhc3Mg
U2hhcmVkV29ya2VyVGhyZWFkUHJveHkgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hh
cmVkV29ya2VyVGhyZWFkUHJveHk+LCBwdWJsaWMgV29ya2VyTG9hZGVyUHJveHksIHB1YmxpYyBX
b3JrZXJEZWJ1Z2dlclByb3h5LCBwdWJsaWMgV29ya2VyT2JqZWN0UHJveHkgewogcHVibGljOgot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBTaGFyZWRXb3JrZXJQcm94eSYg
Y3JlYXRlKEFyZ3MmJi4uLiBhcmdzKSB7IHJldHVybiAqbmV3IFNoYXJlZFdvcmtlclByb3h5KHN0
ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
dm9pZCBzZXR1cFBhZ2VGb3JTaGFyZWRXb3JrZXIoUGFnZSYsIGNvbnN0IFVSTCYsIGNvbnN0IENs
aWVudE9yaWdpbiYsIGNvbnN0IFdvcmtlckZldGNoUmVzdWx0Jik7CiAKLSAgICBTaGFyZWRXb3Jr
ZXJUaHJlYWQqIHRocmVhZCgpIHsgcmV0dXJuIG1fd29ya2VyVGhyZWFkLmdldCgpOyB9CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eT4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZFdvcmtlclRocmVhZFByb3h5KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOyB9CisgICAg
flNoYXJlZFdvcmtlclRocmVhZFByb3h5KCk7CisKKyAgICBTaGFyZWRXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIoKSBjb25zdDsKKyAgICBTaGFyZWRXb3JrZXJUaHJlYWQmIHRocmVhZCgpIHsg
cmV0dXJuIG1fd29ya2VyVGhyZWFkLmdldCgpOyB9CisKKyAgICBib29sIGlzVGVybWluYXRpbmdP
clRlcm1pbmF0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQ7
IH0KKyAgICB2b2lkIHNldEFzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKSB7IG1faXNUZXJtaW5h
dGluZ09yVGVybWluYXRlZCA9IHRydWU7IH0KIAotICAgIHZvaWQgc3RhcnRXb3JrZXJHbG9iYWxT
Y29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VD
b2RlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBib29sIHNo
b3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgQ3Jvc3NPcmln
aW5FbWJlZGRlclBvbGljeSYsIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUmVmZXJyZXJQb2xp
Y3ksIFdvcmtlclR5cGUsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzLCBKU0M6OlJ1bnRpbWVGbGFn
cykgZmluYWw7Ci0gICAgdm9pZCB0ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpIGZpbmFsOwot
ICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzJiYpIGZpbmFsOwotICAgIHZvaWQgcG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1
bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiYmKSBmaW5hbDsKLSAgICBib29s
IGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgd29ya2VyT2JqZWN0
RGVzdHJveWVkKCkgZmluYWw7Ci0gICAgdm9pZCBub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9v
bCBpc09ubGluZSkgZmluYWw7Ci0gICAgdm9pZCBzdXNwZW5kRm9yQmFja0ZvcndhcmRDYWNoZSgp
IGZpbmFsOwotICAgIHZvaWQgcmVzdW1lRm9yQmFja0ZvcndhcmRDYWNoZSgpIGZpbmFsOwotICAg
IHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwpIGZpbmFsOwotICAgIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWQoKSBmaW5h
bDsKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVdpdGhNZXNzYWdl
UG9ydHMmJikgZmluYWw7Ci0gICAgdm9pZCBjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3Qo
Ym9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpIGZpbmFsOwotICAgIHZvaWQgcmVwb3J0UGVuZGluZ0Fj
dGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KSBmaW5hbDsKICAgICBSZWZQdHI8Q2FjaGVT
dG9yYWdlQ29ubmVjdGlvbj4gY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpIGZpbmFsOwog
ICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uPiBjcmVhdGVS
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCkgZmluYWw7CiAgICAgdm9pZCBw
b3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJikgZmluYWw7CkBA
IC02NCwxOCArNjIsMjUgQEAgcHVibGljOgogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb0RlYnVnZ2Vy
KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgc2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJs
ZWRCeVdlYkluc3BlY3Rvcihib29sKSBmaW5hbDsKIAorICAgIC8vIFdvcmtlck9iamVjdFByb3h5
CisgICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCkgZmluYWw7CisgICAgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgp
IGZpbmFsIHsgfQorICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyYmKSBmaW5hbCB7IH0KKyAgICB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdv
cmtlck9iamVjdChib29sKSBmaW5hbCB7IH0KKyAgICB2b2lkIHJlcG9ydFBlbmRpbmdBY3Rpdml0
eShib29sKSBmaW5hbCB7IH0KKwogcHJpdmF0ZToKLSAgICBTaGFyZWRXb3JrZXJQcm94eShTaGFy
ZWRXb3JrZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShV
bmlxdWVSZWY8UGFnZT4mJiwgU2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgQ2xpZW50T3Jp
Z2luJiwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIFdvcmtlckZldGNoUmVzdWx0JiYsIFdvcmtlck9w
dGlvbnMmJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIENhY2hlU3RvcmFnZVByb3ZpZGVyJik7
CiAKLSAgICB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwoKTsKKyAgICBz
dGF0aWMgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKGJvb2wgaXNPbkxpbmUpOworICAgIHZvaWQg
bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpOwogCi0gICAgV2Vha1B0cjxT
aGFyZWRXb3JrZXI+IG1fc2hhcmVkV29ya2VyOwotICAgIFJlZlB0cjxTaGFyZWRXb3JrZXJUaHJl
YWQ+IG1fd29ya2VyVGhyZWFkOwotICAgIGNvbnN0IFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0gICAgY29uc3QgU3RyaW5nIG1faWRlbnRp
ZmllckZvckluc3BlY3RvcjsKLSAgICBib29sIG1fYXNrZWRUb1Rlcm1pbmF0ZSB7IGZhbHNlIH07
Ci0gICAgYm9vbCBtX2hhc1BlbmRpbmdBY3Rpdml0eSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX21h
eUJlRGVzdHJveWVkIHsgZmFsc2UgfTsKKyAgICBVbmlxdWVSZWY8UGFnZT4gbV9wYWdlOworICAg
IFJlZjxEb2N1bWVudD4gbV9kb2N1bWVudDsKKyAgICBSZWY8U2hhcmVkV29ya2VyVGhyZWFkPiBt
X3dvcmtlclRocmVhZDsKKyAgICBDYWNoZVN0b3JhZ2VQcm92aWRlciYgbV9jYWNoZVN0b3JhZ2VQ
cm92aWRlcjsKKyAgICBSZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gbV9jYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOworICAgIGJvb2wgbV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkIHsgZmFs
c2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4
IDc1NmRhODhiNDVmNy4uMjlmNGM3ODE4MTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAgLTI4LDYg
KzI4LDcgQEAgc2V0KFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUX0RJ
Un0vTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucyIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudCIKICAgICAiJHtXRUJLSVRfRElSfS9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyIgorICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQ
cm9jZXNzL1NoYXJlZFdvcmtlciIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlIgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL2NhY2hlIgogICAg
ICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UiCkBAIC0yMDIsNiArMjAzLDkg
QEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIE5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uCiAgICAgTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24KIAorICAgIE5ldHdvcmtQcm9j
ZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uCisgICAgTmV0
d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24KKwogICAgIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJT
ZXQKIAogICAgIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b24KQEAgLTMwNSw2ICszMDksOCBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAKICAg
ICBXZWJQcm9jZXNzL1NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VN
YW5hZ2VyCiAKKyAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uCisgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24KICAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0
aW9uCiAgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRl
eCA0YzY2MjIwY2YxMjIuLjcyMjljMWI5ODcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtOTEsNiArOTEsOCBAQCAkKFBST0pFQ1RfRElS
KS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2su
bWVzc2FnZXMuaQogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9j
ZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCiskKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvbWFj
L2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4KQEAgLTIxNyw2ICsyMTksOCBA
QCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkubWVzc2FnZXMu
aW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVh
bHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5tZXNzYWdlcy5pbgogJChQ
Uk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoblByb2Nlc3ND
b25uZWN0aW9uLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1v
dXRwdXQueGNmaWxlbGlzdAppbmRleCBlM2I1NTg0MGFlMWUuLmE4NjMyODE0N2I1NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC02MDcs
NiArNjA3LDE4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1l
c3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNz
YWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0L1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbk1lc3NhZ2VzLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25NZXNz
YWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVz
c2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdC9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU29ja2V0Q2hhbm5lbE1lc3NhZ2VS
ZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQv
V2ViU29ja2V0Q2hhbm5lbE1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQvV2ViU29ja2V0Q2hhbm5lbE1lc3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggN2FkNDllMzczNWY0Li4zNTFmZmFlMGE1ODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTEzMyw2ICsxMzMsOCBAQCBNRVNTQUdFX1JFQ0VJ
VkVSUyA9IFwKIAlOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3du
bG9hZFRhc2sgXAogCU5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZl
dGNoVGFzayBcCiAJTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24gXAorCU5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uIFwKKwlOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBcCiAJTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1NvY2tldFN0cmVhbSBcCiAJTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MgXAog
CU5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlciBcCkBAIC0yMjUsNiArMjI3LDgg
QEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyIFwKKwlXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIFwKKwlXZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1dlYlByb2Nlc3MgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBkODVlZDg1ZDZmOTYuLmM3YjE3ZmQ3MDc4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTY2LDYgKzY2LDExIEBACiAjaW5j
bHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlci5o
IgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRl
ICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RvY3Vt
ZW50U3RvcmFnZUFjY2Vzcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRUUENvb2tpZUFjY2VwdFBv
bGljeS5oPgpAQCAtMTMyLDYgKzEzNyw3IEBAIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYgbmV0CiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigp
OwogI2VuZGlmCisgICAgZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpOwog
fQogCiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fk5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKCkKQEAgLTE2Niw2ICsxNzIsNyBAQCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6fk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAgICAgdW5yZWdpc3RlclNXQ29ubmVjdGlvbigpOwogI2VuZGlmCisgICAgdW5y
ZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6aGFzVXBsb2FkU3RhdGVDaGFuZ2VkKGJvb2wgaGFzVXBsb2FkKQpA
QCAtMjc1LDYgKzI4MiwxNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3RpbwogICAgIH0KICNlbmRp
ZgogCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsK
KyAgICAgICAgaWYgKG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbikKKyAgICAgICAgICAgIG1fc2hh
cmVkV29ya2VyQ29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rl
cik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgaWYgKG1fc2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb24pCisgICAgICAgICAgICBtX3NoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKwogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQogICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkKICAgICAgICAgcmV0dXJu
IHBheW1lbnRDb29yZGluYXRvcigpLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIpOwpAQCAtMzk4LDkgKzQxNiw4IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKLSNl
bHNlCi0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogI2VuZGlmCisgICAgbV9zaGFyZWRX
b3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7CiAKICAgICAvLyBQcm90ZWN0IG91cnNl
bGYgYXMgd2UgbWlnaHQgYmUgb3RoZXJ3aXNlIGJlIGRlbGV0ZWQgZHVyaW5nIHRoaXMgZnVuY3Rp
b24uCiAgICAgUmVmPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBwcm90ZWN0b3IoKnRo
aXMpOwpAQCAtNDQxLDYgKzQ1OCw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiAgICAgdW5yZWdpc3RlclNXQ29ubmVjdGlvbigpOwogI2VuZGlmCisgICAg
dW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKIAogI2lmIEVOQUJMRShBUFBMRV9Q
QVlfUkVNT1RFX1VJKQogICAgIG1fcGF5bWVudENvb3JkaW5hdG9yID0gbnVsbHB0cjsKQEAgLTEx
ODYsNiArMTIwNCw2MSBAQCBzaXplX3QgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmZp
bmROZXR3b3JrQWN0aXZpdHlUcmFja2VyKFdlYkNvcmU6OlJlc291cgogICAgICAgICByZXR1cm4g
aXRlbS5yZXNvdXJjZUlEID09IHJlc291cmNlSUQ7CiAgICAgfSk7CiB9CisKK3ZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYgcmVnaXN0cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwg
ImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uOiIpOworICAgIGF1dG8qIHNl
c3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOworICAgIGlmIChhdXRvKiBzd1NlcnZlciA9IHNlc3Np
b24gPyBzZXNzaW9uLT5zaGFyZWRXb3JrZXJTZXJ2ZXIoKSA6IG51bGxwdHIpCisgICAgICAgIG1f
c2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+KCp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9t
YWluKSwgKnN3U2VydmVyKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uKCkKK3sKKyAgICBpZiAobV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsKKyAgICBp
ZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9M
T0coU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjoi
KTsKKworICAgIGF1dG8mIHNlcnZlciA9IHNlc3Npb24tPmVuc3VyZVNoYXJlZFdvcmtlclNlcnZl
cigpOworICAgIGF1dG8gY29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbj4obV9uZXR3b3JrUHJvY2Vzcywgc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0
KCksIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOworCisgICAgbV9zaGFyZWRXb3JrZXJDb25uZWN0
aW9uID0gKmNvbm5lY3Rpb247CisgICAgc2VydmVyLmFkZENvbm5lY3Rpb24oV1RGTW92ZShjb25u
ZWN0aW9uKSk7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsb3Nl
U2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24oKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFT
RV9MT0coU2hhcmVkV29ya2VyLCAiY2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbjoi
KTsKKyAgICBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKK30KKwor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlclNoYXJlZFdvcmtl
ckNvbm5lY3Rpb24oKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2Vy
LCAidW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb246Iik7CisgICAgaWYgKG1fc2hhcmVk
V29ya2VyQ29ubmVjdGlvbikKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uLT5zZXJ2
ZXIoKS5yZW1vdmVDb25uZWN0aW9uKG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbi0+d2ViUHJvY2Vz
c0lkZW50aWZpZXIoKSk7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkK
K3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgInNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkOiIpOworICAgIG1fbmV0
d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OlNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJO
ZWVkZWQgeyB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOworCisgICAgbV9zaGFyZWRXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb24qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzaGFyZWRXb3JrZXJD
b25uZWN0aW9uKCkKK3sKKyAgICBpZiAoIW1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbikKKyAgICAg
ICAgZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpOworICAgIHJldHVybiBt
X3NoYXJlZFdvcmtlckNvbm5lY3Rpb24uZ2V0KCk7Cit9CiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3Rl
clNXQ29ubmVjdGlvbigpCkBAIC0xMjIzLDEwICsxMjk2LDEwIEBAIHZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmNsb3NlU1dDb250ZXh0Q29ubmVjdGlvbigpCiAgICAgbV9zd0Nv
bnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCkKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNlcnZpY2VXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKQogewotICAgIENPTk5FQ1RJT05fUkVMRUFT
RV9MT0coU2VydmljZVdvcmtlciwgInNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5l
ZWRlZDogV2ViUHJvY2VzcyBubyBsb25nZXIgdXNlZnVsIGZvciBydW5uaW5nIHNlcnZpY2Ugd29y
a2VycyIpOwotICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OldvcmtlckNvbnRleHRDb25uZWN0
aW9uTm9Mb25nZXJOZWVkZWQgeyB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOworICAgIENP
Tk5FQ1RJT05fUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgInNlcnZpY2VXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQ6IFdlYlByb2Nlc3Mgbm8gbG9uZ2VyIHVz
ZWZ1bCBmb3IgcnVubmluZyBzZXJ2aWNlIHdvcmtlcnMiKTsKKyAgICBtX25ldHdvcmtQcm9jZXNz
LT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCB7IHdl
YlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CiAKICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24g
PSBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDNhMWUxNDA0MzM4Zi4u
ZDBhYTRlZjc0NTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC05Miw2ICs5Miw4IEBA
IGNsYXNzIE5ldHdvcmtTb2NrZXRTdHJlYW07CiBjbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwogY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjsKK2Ns
YXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CiAKIG5hbWVzcGFj
ZSBOZXR3b3JrQ2FjaGUgewogc3RydWN0IERhdGFLZXk7CkBAIC0xODEsMTAgKzE4MywxMyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25zdCBX
ZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSk+JiYpOwogCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQgc2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbk5vTG9uZ2VyTmVlZGVkKCk7CisgICAgdm9pZCBzZXJ2aWNlV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCk7CiAgICAgV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
KiBzd0Nvbm5lY3Rpb24oKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNo
VGFzaz4gY3JlYXRlRmV0Y2hUYXNrKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlmCisgICAgdm9pZCBzaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOworCisgICAgV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbiogc2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOwogCiAgICAg
TmV0d29ya1NjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSgpIHsgcmV0dXJuIG1fc2NoZW1l
UmVnaXN0cnkuZ2V0KCk7IH0KIApAQCAtMjUzLDYgKzI1OCw5IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjcmVhdGVTb2NrZXRDaGFubmVsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFN0cmluZyYgcHJvdG9jb2wsIFdlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXIsIFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwogICAgIHZv
aWQgdXBkYXRlUXVvdGFCYXNlZE9uU3BhY2VVc2FnZUZvclRlc3RpbmcoY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJik7CiAKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb24oKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7
CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxpc2hTV1NlcnZl
ckNvbm5lY3Rpb24oKTsKICAgICB2b2lkIGVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2Vi
UGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAt
MjYwLDYgKzI2OCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bnJlZ2lzdGVyU1dDb25uZWN0aW9u
KCk7CiAjZW5kaWYKIAorICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGNsb3NlU2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb24oKTsKKwogICAgIHZvaWQgY3JlYXRlUlRDUHJvdmlkZXIoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICB2b2lk
IGNvbm5lY3RUb1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsSWRlbnRpZmllciBzb3VyY2UsIFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBo
YW5kbGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8Ym9vbD4pPiYmKTsK
QEAgLTQwNCw2ICs0MTUsOCBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8V2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uPiBtX3N3Q29ubmVjdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uPiBtX3N3Q29udGV4dENvbm5lY3Rpb247CiAjZW5kaWYKKyAgICBX
ZWFrUHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24+IG1fc2hhcmVkV29ya2VyQ29u
bmVjdGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbj4gbV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbjsKIAogI2lmIEVO
QUJMRShXRUJfUlRDKQogICAgIGJvb2wgbV9pc1JlZ2lzdGVyZWRUb1JUQ0RhdGFDaGFubmVsUHJv
eHkgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
aW5kZXggMjQyODM1MDUwYjI0Li5iOTdjYTM0NzliNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtODgsNiArODgsOSBAQCBtZXNzYWdlcyAtPiBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgQ2xvc2VTV0Nv
bnRleHRDb25uZWN0aW9uKCkKICNlbmRpZgogCisgICAgRXN0YWJsaXNoU2hhcmVkV29ya2VyQ29u
dGV4dENvbm5lY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94
eUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pIC0+ICgpIEFzeW5jCisgICAg
Q2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpCisKICAgICBDcmVhdGVSVENQcm92
aWRlcigpIC0+ICgpIEFzeW5jCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgQ29ubmVjdFRvUlRD
RGF0YUNoYW5uZWxSZW1vdGVTb3VyY2Uoc3RydWN0IFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRl
bnRpZmllciBzb3VyY2UsIHN0cnVjdCBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIg
aGFuZGxlcikgLT4gKHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcmVzdWx0KSBBc3luYwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCA5YTMyZWEx
ODY1NGMuLmQ3NjE2Mjg1MGNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJXZWJQYWdl
UHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUg
IldlYlNXT3JpZ2luU3RvcmUuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIK
ICNpbmNsdWRlICJXZWJTb2NrZXRUYXNrLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVKYXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgpAQCAtNjI5LDcgKzYzMCw3
IEBAIFNXU2VydmVyJiBOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlU1dTZXJ2ZXIoKQogICAgICAgICAg
ICAgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OnN0YXJ0KHRoaXMsIFdURk1vdmUoam9i
RGF0YSksIHNob3VsZFJlZnJlc2hDYWNoZSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogICAgICAgICB9LCBbdGhpc10oYXV0byYgcmVnaXN0cmFibGVEb21h
aW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZp
Y2VXb3JrZXJQYWdlSWRlbnRpZmllciwgYXV0byYmIGNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAg
ICAgICAgICBBU1NFUlQoIXJlZ2lzdHJhYmxlRG9tYWluLmlzRW1wdHkoKSk7Ci0gICAgICAgICAg
ICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2
aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIG1fc2Vzc2lvbklEIH0sIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCAwKTsKKyAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6RXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcyB7IHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIs
IG1fc2Vzc2lvbklEIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCAwKTsKICAgICAgICAg
fSwgV1RGTW92ZShhcHBCb3VuZERvbWFpbnNDYWxsYmFjaykpOwogICAgIH0KICAgICByZXR1cm4g
Km1fc3dTZXJ2ZXI7CkBAIC02NTMsNiArNjU0LDEzIEBAIGJvb2wgTmV0d29ya1Nlc3Npb246Omhh
c1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBhdGgoKSBjb25zdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjpl
bnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKQoreworICAgIGlmICghbV9zaGFyZWRXb3JrZXJTZXJ2
ZXIpCisgICAgICAgIG1fc2hhcmVkV29ya2VyU2VydmVyID0gbWFrZVVuaXF1ZTxXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXI+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fc2hhcmVkV29ya2VyU2VydmVyOwor
fQorCiBXZWJJREJTZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVXZWJJREJTZXJ2ZXIoKQog
ewogICAgIGlmICghbV93ZWJJREJTZXJ2ZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uaAppbmRleCAxOTMwN2NmNDBiZTMuLjNmOWQ2Yzk1NTBhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAt
NzksNiArNzksNyBAQCBjbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOwogY2xhc3MgV2ViSURC
U2VydmVyOwogY2xhc3MgV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzOwogY2xhc3MgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyOwogY2xh
c3MgV2ViU29ja2V0VGFzazsKIGNsYXNzIFdlYlNXT3JpZ2luU3RvcmU7CiBjbGFzcyBXZWJTV1Nl
cnZlckNvbm5lY3Rpb247CkBAIC0yMTAsNiArMjExLDkgQEAgcHVibGljOgogICAgIHZvaWQgYWRk
U2VydmljZVdvcmtlclNlc3Npb24oYm9vbCBwcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQs
IFN0cmluZyYmIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIGNvbnN0IFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYpOwogI2VuZGlmCiAKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXIqIHNoYXJlZFdvcmtlclNlcnZlcigpIHsgcmV0dXJuIG1fc2hhcmVkV29ya2VyU2VydmVyLmdl
dCgpOyB9CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBlbnN1cmVTaGFyZWRXb3JrZXJTZXJ2
ZXIoKTsKKwogICAgIFdlYklEQlNlcnZlciogd2ViSURCU2VydmVyKCkgeyByZXR1cm4gbV93ZWJJ
REJTZXJ2ZXIuZ2V0KCk7IH0KICAgICBXZWJJREJTZXJ2ZXImIGVuc3VyZVdlYklEQlNlcnZlcigp
OwogICAgIHZvaWQgY2xvc2VJREJTZXJ2ZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
QEAgLTMxOCw2ICszMjIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNl
V29ya2VySW5mbz4gbV9zZXJ2aWNlV29ya2VySW5mbzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6U1dTZXJ2ZXI+IG1fc3dTZXJ2ZXI7CiAjZW5kaWYKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViU2hhcmVkV29ya2VyU2VydmVyPiBtX3NoYXJlZFdvcmtlclNlcnZlcjsKIAogICAgIFN0cmlu
ZyBtX2lkYkRhdGFiYXNlUGF0aDsKICAgICBSZWZQdHI8V2ViSURCU2VydmVyPiBtX3dlYklEQlNl
cnZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHAKaW5kZXggNWE4NzAzZWZkNmQ1Li4yN2Y2ZThkYTVmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0xNjIsNyArMTYy
LDcgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1hdGNoQWxsQ29tcGxl
dGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWUKIAogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkKIHsKLSAgICBtX2Nvbm5l
Y3Rpb24uc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCk7CisgICAgbV9j
b25uZWN0aW9uLnNlcnZpY2VXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJO
ZWVkZWQoKTsKIH0KIAogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNldFRo
cm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxlYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uM2M2
MzY0YWE1NDA4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcApAQCAtMCwwICsxLDI5NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXIuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgorI2lu
Y2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OldlYlNoYXJlZFdvcmtlclNlcnZlcihOZXR3
b3JrU2Vzc2lvbiYgc2Vzc2lvbikKKyAgICA6IG1fc2Vzc2lvbihzZXNzaW9uKQoreworfQorCitX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6On5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIoKSA9IGRlZmF1bHQ7
CisKK1BBTDo6U2Vzc2lvbklEIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2Vzc2lvbklEKCkKK3sK
KyAgICByZXR1cm4gbV9zZXNzaW9uLnNlc3Npb25JRCgpOworfQorCit2b2lkIFdlYlNoYXJlZFdv
cmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtlcihXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBv
cmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciwgVVJMJiYgdXJsLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQ
b3J0JiYgcG9ydCwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMpCit7Cisg
ICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5IGtleSB7IG9yaWdpbiwgdXJsLCB3b3JrZXJPcHRp
b25zLm5hbWUgfTsKKyAgICBhdXRvJiBzaGFyZWRXb3JrZXIgPSBtX3NoYXJlZFdvcmtlcnMuZW5z
dXJlKGtleSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2hhcmVkV29ya2VyPihv
cmlnaW4sIHVybCwgd29ya2VyT3B0aW9ucyk7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlOworICAg
IFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVz
dFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3ByaXZhdGV9cywg
c2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzaGFyZWRXb3JrZXItPmlkZW50aWZpZXIu
dG9VSW50NjQoKSk7CisKKyAgICBpZiAoc2hhcmVkV29ya2VyLT53b3JrZXJPcHRpb25zLnR5cGUg
IT0gd29ya2VyT3B0aW9ucy50eXBlIHx8IHNoYXJlZFdvcmtlci0+d29ya2VyT3B0aW9ucy5jcmVk
ZW50aWFscyAhPSB3b3JrZXJPcHRpb25zLmNyZWRlbnRpYWxzKSB7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNo
YXJlZFdvcmtlcjogQSB3b3JrZXIgYWxyZWFkeSBleGlzdHMgd2l0aCB0aGlzIG5hbWUgYnV0IGhh
cyBkaWZmZXJlbnQgdHlwZSAvIGNyZWRlbnRpYWxzIik7CisgICAgICAgIGlmIChhdXRvKiBzZXJ2
ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIHNlcnZlckNvbm5lY3Rpb24t
Pm5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZhaWx1cmUoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaGFyZWRXb3JrZXItPnNoYXJl
ZFdvcmtlck9iamVjdHMuYWRkKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHBvcnQpOwor
CisgICAgaWYgKHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5zaXplKCkgPiAxKSB7
CisgICAgICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZl
cjo6cmVxdWVzdFNoYXJlZFdvcmtlcjogQSBzaGFyZWQgd29ya2VyIHdpdGggdGhpcyBVUkwgYWxy
ZWFkeSBleGlzdHMgKG5vdyBzaGFyZWQgYnkgJXUgc2hhcmVkIHdvcmtlciBvYmplY3RzKSIsIHNo
YXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5zaXplKCkpOworICAgICAgICBpZiAoc2hh
cmVkV29ya2VyLT5pc1J1bm5pbmcpIHsKKyAgICAgICAgICAgIGF1dG8qIGNvbnRleHRDb25uZWN0
aW9uID0gbV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtlci0+cmVnaXN0cmFibGVE
b21haW4oKSk7CisgICAgICAgICAgICBBU1NFUlQoY29udGV4dENvbm5lY3Rpb24pOworICAgICAg
ICAgICAgaWYgKGNvbnRleHRDb25uZWN0aW9uKQorICAgICAgICAgICAgICAgIHBvc3RDb25uZWN0
RXZlbnQoKmNvbnRleHRDb25uZWN0aW9uLCBzaGFyZWRXb3JrZXItPmlkZW50aWZpZXIsIHBvcnQs
IG9yaWdpbi5jbGllbnRPcmlnaW4udG9TdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBBU1NFUlQoIXNoYXJlZFdvcmtlci0+aXNSdW5uaW5nKTsKKworICAg
IGF1dG8qIHNlcnZlckNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgIEFTU0VSVChzZXJ2ZXJD
b25uZWN0aW9uKTsKKworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdv
cmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtlcjogRmV0Y2hpbmcgc2hhcmVkIHdvcmtlciBz
Y3JpcHQgaW4gY2xpZW50Iik7CisgICAgc2VydmVyQ29ubmVjdGlvbi0+ZmV0Y2hTY3JpcHRJbkNs
aWVudCh1cmwsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHdvcmtlck9wdGlvbnMsIFt3
ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBzaGFyZWRXb3JrZXIgPSBXZWFrUHRyIHsgKnNo
YXJlZFdvcmtlciB9XShXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmIGZldGNoUmVzdWx0KSB7
CisgICAgICAgIGlmICh3ZWFrVGhpcyAmJiBzaGFyZWRXb3JrZXIpCisgICAgICAgICAgICB3ZWFr
VGhpcy0+ZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRXb3JrZXJTY3JpcHQoKnNoYXJlZFdvcmtlciwg
V1RGTW92ZShmZXRjaFJlc3VsdCkpOworICAgIH0pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtl
clNlcnZlcjo6bGF1bmNoU2hhcmVkV29ya2VyKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uLCBTaGFyZWRXb3JrZXImIHNoYXJlZFdvcmtl
cikKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXI6OmxhdW5jaFNoYXJlZFdvcmtlcjogY29udGV4dENvbm5lY3Rpb249JXAsIHNoYXJlZFdvcmtl
cklkZW50aWZpZXI9JSIgUFJJdTY0LCAmY29udGV4dENvbm5lY3Rpb24sIHNoYXJlZFdvcmtlci5p
ZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIGNvbnRleHRDb25uZWN0aW9uLmxhdW5jaFNoYXJl
ZFdvcmtlcihzaGFyZWRXb3JrZXIub3JpZ2luLCBzaGFyZWRXb3JrZXIuaWRlbnRpZmllciwgc2hh
cmVkV29ya2VyLnVybCwgc2hhcmVkV29ya2VyLndvcmtlck9wdGlvbnMsIHNoYXJlZFdvcmtlci5m
ZXRjaFJlc3VsdCk7CisgICAgc2hhcmVkV29ya2VyLmlzUnVubmluZyA9IHRydWU7CisgICAgYXV0
byBzb3VyY2VPcmlnaW4gPSBzaGFyZWRXb3JrZXIub3JpZ2luLmNsaWVudE9yaWdpbi50b1N0cmlu
ZygpOworICAgIGZvciAoYXV0byYgcG9ydCA6IHNoYXJlZFdvcmtlci5zaGFyZWRXb3JrZXJPYmpl
Y3RzLnZhbHVlcygpKQorICAgICAgICBwb3N0Q29ubmVjdEV2ZW50KGNvbnRleHRDb25uZWN0aW9u
LCBzaGFyZWRXb3JrZXIuaWRlbnRpZmllciwgcG9ydCwgc291cmNlT3JpZ2luKTsKK30KKwordm9p
ZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnBvc3RDb25uZWN0RXZlbnQoV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24sIFdlYkNvcmU6OlNo
YXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYgc291cmNlUG9ydCwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VPcmlnaW4pCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29y
a2VyU2VydmVyOjpwb3N0Q29ubmVjdEV2ZW50OiBjb250ZXh0Q29ubmVjdGlvbj0lcCwgc2hhcmVk
V29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsICZjb250ZXh0Q29ubmVjdGlvbiwgc2hhcmVkV29y
a2VySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBjb250ZXh0Q29ubmVjdGlvbi5wb3N0Q29u
bmVjdEV2ZW50KHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIHNvdXJjZVBvcnQsIHNvdXJjZU9yaWdp
bik7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpkaWRGaW5pc2hGZXRjaGluZ1No
YXJlZFdvcmtlclNjcmlwdChTaGFyZWRXb3JrZXImIHdvcmtlciwgV2ViQ29yZTo6V29ya2VyRmV0
Y2hSZXN1bHQmJiBmZXRjaFJlc3VsdCkKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIs
ICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29ya2VyU2Ny
aXB0IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHdvcmtlcj0lcCwgc3VjY2Vz
cz0lZCIsIHdvcmtlci5pZGVudGlmaWVyLnRvVUludDY0KCksICZ3b3JrZXIsIGZldGNoUmVzdWx0
LmVycm9yLmlzTnVsbCgpKTsKKyAgICBpZiAoIWZldGNoUmVzdWx0LmVycm9yLmlzTnVsbCgpKSB7
CisgICAgICAgIC8vIEZldGNoIGZhaWxlZCwgbm90aWZ5IHRoZSBTaGFyZWRXb3JrZXIgb2JqZWN0
cy4KKyAgICAgICAgZm9yIChhdXRvIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgOiB3b3Jr
ZXIuc2hhcmVkV29ya2VyT2JqZWN0cy5rZXlzKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBz
ZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgICAgICBzZXJ2ZXJDb25u
ZWN0aW9uLT5ub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRGYWlsdXJlKHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIpOworICAgICAgICB9CisgICAgICAgIG1fc2hhcmVkV29ya2Vycy5yZW1vdmUo
d29ya2VyLmtleSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdvcmtlci5mZXRj
aFJlc3VsdCA9IFdURk1vdmUoZmV0Y2hSZXN1bHQpOworCisgICAgYXV0byByZWdpc3RyYWJsZURv
bWFpbiA9IHdvcmtlci5yZWdpc3RyYWJsZURvbWFpbigpOworICAgIGF1dG8qIGNvbnRleHRDb25u
ZWN0aW9uID0gY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJs
ZURvbWFpbik7CisgICAgaWYgKCFjb250ZXh0Q29ubmVjdGlvbikgeworICAgICAgICBjcmVhdGVD
b250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBsYXVuY2hTaGFyZWRXb3JrZXIoKmNvbnRleHRDb25uZWN0aW9uLCB3b3JrZXIp
OworfQorCitib29sIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6bmVlZHNDb250ZXh0Q29ubmVjdGlv
bkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBy
ZWdpc3RyYWJsZURvbWFpbikgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8mIHNoYXJlZFdvcmtlciA6
IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAocmVnaXN0cmFibGVEb21h
aW4ubWF0Y2hlcyhzaGFyZWRXb3JrZXItPnVybCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZl
cjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mIHJlZ2lzdHJhYmxlRG9tYWluKQoreworICAgIEFTU0VSVCghbV9jb250ZXh0Q29ubmVjdGlv
bnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKTsKKyAgICBpZiAobV9wZW5kaW5nQ29udGV4
dENvbm5lY3Rpb25Eb21haW5zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2Vy
U2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbiB3aWxsIGNyZWF0ZSBhIGNvbm5lY3Rpb24i
KTsKKworICAgIG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWlucy5hZGQocmVnaXN0cmFi
bGVEb21haW4pOworICAgIG1fc2Vzc2lvbi5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6RXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzIHsgcmVnaXN0cmFibGVEb21haW4sIG1fc2Vzc2lvbi5zZXNzaW9uSUQoKSB9LCBbdGhpcywg
d2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVnaXN0cmFibGVEb21haW5dIHsKKyAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBSRUxFQVNF
X0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNyZWF0ZUNvbnRleHRD
b25uZWN0aW9uIHNob3VsZCBub3cgaGF2ZSBjcmVhdGVkIGEgY29ubmVjdGlvbiIpOworCisgICAg
ICAgIEFTU0VSVChtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnMuY29udGFpbnMocmVn
aXN0cmFibGVEb21haW4pKTsKKyAgICAgICAgbV9wZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21h
aW5zLnJlbW92ZShyZWdpc3RyYWJsZURvbWFpbik7CisKKyAgICAgICAgaWYgKG1fY29udGV4dENv
bm5lY3Rpb25zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBpZiAobmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9t
YWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0
aW9uKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICB9LCAwKTsKK30KKwordm9pZCBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXI6OmFkZENvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uKQoreworICAgIFJFTEVBU0VfTE9H
KFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29udGV4dENvbm5lY3Rp
b24oJXApIHdlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgJmNvbnRleHRDb25uZWN0aW9u
LCBjb250ZXh0Q29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUludDY0KCkpOwor
CisgICAgQVNTRVJUKCFtX2NvbnRleHRDb25uZWN0aW9ucy5jb250YWlucyhjb250ZXh0Q29ubmVj
dGlvbi5yZWdpc3RyYWJsZURvbWFpbigpKSk7CisKKyAgICBtX2NvbnRleHRDb25uZWN0aW9ucy5h
ZGQoY29udGV4dENvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSwgJmNvbnRleHRDb25uZWN0
aW9uKTsKKworICAgIGNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChjb250ZXh0Q29ubmVjdGlvbik7
Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1vdmVDb250ZXh0Q29ubmVjdGlv
bihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVj
dGlvbikKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXI6OnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKCVwKSB3ZWJQcm9jZXNzSWRlbnRpZmllcj0l
IiBQUkl1NjQsICZjb250ZXh0Q29ubmVjdGlvbiwgY29udGV4dENvbm5lY3Rpb24ud2ViUHJvY2Vz
c0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4g
PSBjb250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpOworCisgICAgQVNTRVJUKG1f
Y29udGV4dENvbm5lY3Rpb25zLmdldChyZWdpc3RyYWJsZURvbWFpbikgPT0gJmNvbnRleHRDb25u
ZWN0aW9uKTsKKworICAgIG1fY29udGV4dENvbm5lY3Rpb25zLnJlbW92ZShyZWdpc3RyYWJsZURv
bWFpbik7CisKKyAgICBpZiAobmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9t
YWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24o
cmVnaXN0cmFibGVEb21haW4pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y29u
dGV4dENvbm5lY3Rpb25DcmVhdGVkKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24mIGNvbnRleHRDb25uZWN0aW9uKQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtl
ciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y29udGV4dENvbm5lY3Rpb25DcmVhdGVkKCVwKSB3
ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQsICZjb250ZXh0Q29ubmVjdGlvbiwgY29udGV4
dENvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICBhdXRv
JiByZWdpc3RyYWJsZURvbWFpbiA9IGNvbnRleHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWlu
KCk7CisgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3NoYXJlZFdvcmtlcnMudmFsdWVzKCkpIHsK
KyAgICAgICAgaWYgKHdvcmtlci0+ZGlkRmluaXNoRmV0Y2hpbmcoKSAmJiByZWdpc3RyYWJsZURv
bWFpbi5tYXRjaGVzKHdvcmtlci0+dXJsKSkKKyAgICAgICAgICAgIGxhdW5jaFNoYXJlZFdvcmtl
cihjb250ZXh0Q29ubmVjdGlvbiwgKndvcmtlcik7CisgICAgfQorfQorCithdXRvIFdlYlNoYXJl
ZFdvcmtlclNlcnZlcjo6c2hhcmVkV29ya2VyQnlJZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdv
cmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikgLT4gU2hhcmVkV29ya2VyKgor
eworICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9zaGFyZWRXb3JrZXJzLnZhbHVlcygpKSB7Cisg
ICAgICAgIGlmICh3b3JrZXItPmlkZW50aWZpZXIgPT0gc2hhcmVkV29ya2VySWRlbnRpZmllcikK
KyAgICAgICAgICAgIHJldHVybiB3b3JrZXIuZ2V0KCk7CisgICAgfQorICAgIHJldHVybiBudWxs
cHRyOworfQorCithdXRvIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hhcmVkV29ya2VyQnlPYmpl
Y3RJZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllcikgLT4gU2hhcmVkV29ya2VyKgoreworICAgIGZvciAoYXV0
byYgd29ya2VyIDogbV9zaGFyZWRXb3JrZXJzLnZhbHVlcygpKSB7CisgICAgICAgIGlmICh3b3Jr
ZXItPnNoYXJlZFdvcmtlck9iamVjdHMuY29udGFpbnMoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllcikpCisgICAgICAgICAgICByZXR1cm4gd29ya2VyLmdldCgpOworICAgIH0KKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNoYXJlZFdvcmtl
ck9iamVjdElzR29pbmdBd2F5KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIg
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK3sKKyAgICBhdXRvKiB3b3JrZXIgPSBzaGFy
ZWRXb3JrZXJCeU9iamVjdElkZW50aWZpZXIoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7
CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpz
aGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheTogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
cj0le3B1YmxpY31zLCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRv
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgd29ya2VyKTsKKyAgICBpZiAoIXdvcmtlcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgd29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzLnJlbW92ZShzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBpZiAoIXdvcmtlci0+c2hhcmVkV29ya2Vy
T2JqZWN0cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHNodXREb3duU2hhcmVk
V29ya2VyKHdvcmtlci0+a2V5KCkpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6
c2h1dERvd25TaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBrZXkp
Cit7CisgICAgYXV0byB3b3JrZXIgPSBtX3NoYXJlZFdvcmtlcnMudGFrZShrZXkpOworICAgIFJF
TEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2h1dERvd25T
aGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHdvcmtlcj0l
cCIsIHdvcmtlciA/IHdvcmtlci0+aWRlbnRpZmllci50b1VJbnQ2NCgpIDogMCwgd29ya2VyLmdl
dCgpKTsKKyAgICBpZiAoIXdvcmtlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogY29u
dGV4dENvbm5lY3Rpb24gPSBjb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHdv
cmtlci0+cmVnaXN0cmFibGVEb21haW4oKSk7CisgICAgaWYgKCFjb250ZXh0Q29ubmVjdGlvbikK
KyAgICAgICAgcmV0dXJuOworCisgICAgY29udGV4dENvbm5lY3Rpb24tPnRlcm1pbmF0ZVNoYXJl
ZFdvcmtlcih3b3JrZXItPmlkZW50aWZpZXIpOworCisgICAgaWYgKCFuZWVkc0NvbnRleHRDb25u
ZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4od29ya2VyLT5yZWdpc3RyYWJsZURvbWFpbigpKSkK
KyAgICAgICAgY29udGV4dENvbm5lY3Rpb24tPmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7
Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjphZGRDb25uZWN0aW9uKHN0ZDo6dW5p
cXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCit7
CisgICAgYXV0byBwcm9jZXNzSWRlbnRpZmllciA9IGNvbm5lY3Rpb24tPndlYlByb2Nlc3NJZGVu
dGlmaWVyKCk7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2Vy
U2VydmVyOjphZGRDb25uZWN0aW9uKCVwKTogcHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCBj
b25uZWN0aW9uLmdldCgpLCBwcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBBU1NF
UlQoIW1fY29ubmVjdGlvbnMuY29udGFpbnMocHJvY2Vzc0lkZW50aWZpZXIpKTsKKyAgICBtX2Nv
bm5lY3Rpb25zLmFkZChwcm9jZXNzSWRlbnRpZmllciwgV1RGTW92ZShjb25uZWN0aW9uKSk7Cit9
CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1vdmVDb25uZWN0aW9uKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQoreworICAgIGF1dG8gY29ubmVj
dGlvbiA9IG1fY29ubmVjdGlvbnMudGFrZShwcm9jZXNzSWRlbnRpZmllcik7CisgICAgUkVMRUFT
RV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1vdmVDb25uZWN0
aW9uKCVwKTogcHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCBjb25uZWN0aW9uLmdldCgpLCBw
cm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBBU1NFUlQoY29ubmVjdGlvbik7CisK
KyAgICBWZWN0b3I8V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj4gc2hhcmVk
V29ya2VyT2JqZWN0c0dvaW5nQXdheTsKKyAgICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fc2hhcmVk
V29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBmb3IgKGF1dG8mIHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIgOiB3b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMua2V5cygpKSB7CisgICAg
ICAgICAgICBpZiAoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmll
cigpID09IHByb2Nlc3NJZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIHNoYXJlZFdvcmtlck9i
amVjdHNHb2luZ0F3YXkuYXBwZW5kKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAg
ICAgICB9CisgICAgfQorICAgIGZvciAoYXV0byBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
IDogc2hhcmVkV29ya2VyT2JqZWN0c0dvaW5nQXdheSkKKyAgICAgICAgc2hhcmVkV29ya2VyT2Jq
ZWN0SXNHb2luZ0F3YXkoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7Cit9CisKK1dlYlNo
YXJlZFdvcmtlclNlcnZlcjo6U2hhcmVkV29ya2VyOjpTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBXZWJDb3JlOjpX
b3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25zKQorICAgIDogaWRlbnRpZmllcihXZWJDb3JlOjpT
aGFyZWRXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQorICAgICwgb3JpZ2luKG9yaWdpbikK
KyAgICAsIHVybCh1cmwpCisgICAgLCB3b3JrZXJPcHRpb25zKHdvcmtlck9wdGlvbnMpCit7Cit9
CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmpl
Y3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIGF1dG8qIHdvcmtlciA9IHNo
YXJlZFdvcmtlckJ5SWRlbnRpZmllcihzaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBSRUxF
QVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnBvc3RF
eGNlcHRpb25Ub1dvcmtlck9iamVjdDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQg
Iiwgd29ya2VyPSVwIiwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpLCB3b3JrZXIp
OworICAgIGlmICghd29ya2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8gc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA6IHdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5r
ZXlzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHNlcnZlckNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rp
b25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkp
KQorICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlvbi0+cG9zdEV4Y2VwdGlvblRvV29ya2VyT2Jq
ZWN0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGVycm9yTWVzc2FnZSwgbGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdv
cmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzgzMWUwYTQyYWI0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2Vy
U2VydmVyLmgKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1JlZ2lzdHJhYmxlRG9tYWluLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VySWRlbnRp
Zmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyS2V5Lmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9Xb3JrZXJGZXRjaFJlc3VsdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyT3B0aW9ucy5o
PgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVj
dCBDbGllbnRPcmlnaW47Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3Jr
U2Vzc2lvbjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb247CitjbGFzcyBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOworCitjbGFzcyBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViU2hhcmVkV29ya2VyU2Vy
dmVyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgV2ViU2hhcmVkV29ya2VyU2VydmVyKE5ldHdvcmtTZXNzaW9uJik7CisgICAgfldlYlNoYXJl
ZFdvcmtlclNlcnZlcigpOworCisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCk7CisKKyAg
ICB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFdlYkNv
cmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpUcmFuc2Zl
cnJlZE1lc3NhZ2VQb3J0JiYsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJik7CisgICAgdm9pZCBz
aGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyKTsKKworICAgIHZvaWQgYWRkQ29udGV4dENvbm5lY3Rpb24oV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOworICAgIHZvaWQgcmVtb3ZlQ29udGV4dENv
bm5lY3Rpb24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOworCisg
ICAgdm9pZCBhZGRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uPiYmKTsKKyAgICB2b2lkIHJlbW92ZUNvbm5lY3Rpb24oV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIpOworCisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbiogY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSB7IHJldHVybiBtX2NvbnRleHRDb25uZWN0
aW9ucy5nZXQoZG9tYWluKTsgfQorCisgICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmpl
Y3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOworCisgICAgYm9vbCBuZWVkc0NvbnRl
eHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mKSBjb25zdDsKKyAgICB2b2lkIGNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CisKKyAgICBzdHJ1Y3QgU2hh
cmVkV29ya2VyIDogQ2FuTWFrZVdlYWtQdHI8U2hhcmVkV29ya2VyPiB7CisgICAgICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKworICAgICAgICBTaGFyZWRXb3JrZXIoY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgY29uc3QgVVJMJiwgY29uc3QgV2ViQ29yZTo6V29ya2Vy
T3B0aW9ucyYpOworCisgICAgICAgIGJvb2wgZGlkRmluaXNoRmV0Y2hpbmcoKSBjb25zdCB7IHJl
dHVybiAhIWZldGNoUmVzdWx0LnNjcmlwdDsgfQorICAgICAgICBXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJLZXkga2V5KCkgY29uc3QgeyByZXR1cm4geyBvcmlnaW4sIHVybCwgd29ya2VyT3B0aW9ucy5u
YW1lIH07IH0KKyAgICAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVE
b21haW4oKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9
OyB9CisKKyAgICAgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVy
OworICAgICAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luOworICAgICAgICBVUkwgdXJs
OworICAgICAgICBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdvcmtlck9wdGlvbnM7CisgICAgICAg
IEhhc2hNYXA8V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29yZTo6
VHJhbnNmZXJyZWRNZXNzYWdlUG9ydD4gc2hhcmVkV29ya2VyT2JqZWN0czsKKyAgICAgICAgV2Vi
Q29yZTo6V29ya2VyRmV0Y2hSZXN1bHQgZmV0Y2hSZXN1bHQ7CisgICAgICAgIGJvb2wgaXNSdW5u
aW5nIHsgZmFsc2UgfTsKKyAgICB9OworCisgICAgU2hhcmVkV29ya2VyKiBzaGFyZWRXb3JrZXJC
eUlkZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgU2hhcmVk
V29ya2VyKiBzaGFyZWRXb3JrZXJCeU9iamVjdElkZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRGaW5pc2hGZXRjaGluZ1NoYXJlZFdv
cmtlclNjcmlwdChTaGFyZWRXb3JrZXImLCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmKTsK
KyAgICB2b2lkIGxhdW5jaFNoYXJlZFdvcmtlcihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uJiwgU2hhcmVkV29ya2VyJik7CisgICAgdm9pZCBwb3N0Q29ubmVjdEV2ZW50
KFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mLCBXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0
JiwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOworICAgIHZvaWQgc2h1dERvd25TaGFyZWRX
b3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5Jik7CisKKyAgICBOZXR3b3JrU2Vz
c2lvbiYgbV9zZXNzaW9uOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIs
IHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uPj4gbV9jb25u
ZWN0aW9uczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4gbV9jb250ZXh0Q29ubmVjdGlvbnM7
CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9wZW5kaW5nQ29udGV4
dENvbm5lY3Rpb25Eb21haW5zOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5
LCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcmVkV29ya2VyPj4gbV9zaGFyZWRXb3JrZXJzOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uM2NmNjEwYjZiYjhhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5j
cHAKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAi
TG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisj
aW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlckZldGNoUmVz
dWx0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjZGVmaW5lIENPTk5FQ1RJT05fUkVMRUFT
RV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gW3dlYlByb2Nl
c3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
OjoiIGZtdCwgdGhpcywgbV93ZWJQcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpLCAjI19fVkFf
QVJHU19fKQorI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKGZtdCwgLi4uKSBS
RUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmll
cj0lIiBQUkl1NjQgIl0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6IiBmbXQsIHRo
aXMsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKKwor
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFdlYlNoYXJlZFdvcmtlclNl
cnZlciYgc2VydmVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKQorICAgIDogbV9jb250ZW50Q29ubmVj
dGlvbihjb25uZWN0aW9uKQorICAgICwgbV9uZXR3b3JrUHJvY2VzcyhuZXR3b3JrUHJvY2VzcykK
KyAgICAsIG1fc2VydmVyKHNlcnZlcikKKyAgICAsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIod2Vi
UHJvY2Vzc0lkZW50aWZpZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjoiKTsKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oKQoreworICAgIENP
Tk5FQ1RJT05fUkVMRUFTRV9MT0coIn5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOiIp
OworfQorCitJUEM6OkNvbm5lY3Rpb24qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246
Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZW50
Q29ubmVjdGlvbi5wdHIoKTsKK30KKworUEFMOjpTZXNzaW9uSUQgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbjo6c2Vzc2lvbklEKCkKK3sKKyAgICByZXR1cm4gc2VydmVyKCkuc2Vzc2lv
bklEKCk7Cit9CisKK05ldHdvcmtTZXNzaW9uKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uOjpzZXNzaW9uKCkKK3sKKyAgICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKCkpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb246OnJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2lu
LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIsIFVSTCYmIHVybCwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYm
IHBvcnQsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zKQoreworICAgIEFT
U0VSVChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0g
bV93ZWJQcm9jZXNzSWRlbnRpZmllcik7IC8vIEZJWE1FOiBTaG91bGQgYmUgYSBNRVNTQUdFX0NI
RUNLKCkuCisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygicmVxdWVzdFNoYXJlZFdvcmtlcjog
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmIChhdXRvKiBz
ZXNzaW9uID0gdGhpcy0+c2Vzc2lvbigpKQorICAgICAgICBzZXNzaW9uLT5lbnN1cmVTaGFyZWRX
b3JrZXJTZXJ2ZXIoKS5yZXF1ZXN0U2hhcmVkV29ya2VyKFdURk1vdmUob3JpZ2luKSwgc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllciwgV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHBvcnQpLCBXVEZN
b3ZlKHdvcmtlck9wdGlvbnMpKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uOjpmZXRjaFNjcmlwdEluQ2xpZW50KGNvbnN0IFVSTCYgdXJsLCBXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiZmV0Y2hTY3JpcHRJbkNsaWVudDog
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6RmV0Y2hT
Y3JpcHRJbkNsaWVudCB7IHVybCwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgd29ya2Vy
T3B0aW9ucyB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkRmFpbHVy
ZShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUigibm90aWZ5
V29ya2VyT2JqZWN0T2ZMb2FkRmFpbHVyZTogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0l
e3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb246Ok5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZhaWx1cmUgeyBzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyIH0pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VVUkwpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUigicG9z
dEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7
cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbjo6UG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0IHsgc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVS
TCB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpzaGFyZWRX
b3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7CisgICAgQVNTRVJUKHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJ
ZGVudGlmaWVyKTsgLy8gRklYTUU6IFNob3VsZCBiZSBhIE1FU1NBR0VfQ0hFQ0soKS4KKyAgICBD
T05ORUNUSU9OX1JFTEVBU0VfTE9HKCJzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheTogc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmIChhdXRvKiBzZXNz
aW9uID0gdGhpcy0+c2Vzc2lvbigpKQorICAgICAgICBzZXNzaW9uLT5lbnN1cmVTaGFyZWRXb3Jr
ZXJTZXJ2ZXIoKS5zaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyKTsKK30KKworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0cKKyN1bmRl
ZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzY4NDlhYjAyZWFhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1
ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVy
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKK3N0cnVjdCBX
b3JrZXJPcHRpb25zOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya1By
b2Nlc3M7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI7CitjbGFzcyBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVz
c2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiwgV2ViU2hh
cmVkV29ya2VyU2VydmVyJiwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIpOworICAgIH5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCk7CisKKyAgICBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlcigpIHsgcmV0dXJuIG1fc2VydmVyOyB9CisgICAg
Y29uc3QgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIoKSBjb25zdCB7IHJldHVybiBtX3Nl
cnZlcjsgfQorCisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCk7CisgICAgTmV0d29ya1Nl
c3Npb24qIHNlc3Npb24oKTsKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9j
ZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7IH0K
KworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgZmluYWw7CisKKyAgICB2b2lkIGZldGNoU2NyaXB0SW5DbGllbnQoY29uc3QgVVJMJiwg
V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6V29y
a2VyT3B0aW9ucyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V29ya2VyRmV0Y2hS
ZXN1bHQmJik+JiYpOworICAgIHZvaWQgbm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkRmFpbHVyZShX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICB2b2lkIHBvc3RFeGNl
cHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKworcHJpdmF0ZToKKyAgICAvLyBJUEM6
Ok1lc3NhZ2VTZW5kZXIuCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlv
bklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQorCisgICAgLy8gSVBDIG1lc3NhZ2VzLgor
ICAgIHZvaWQgcmVxdWVzdFNoYXJlZFdvcmtlcihXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgV2Vi
Q29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgVVJMJiYsIFdlYkNvcmU6OlRyYW5z
ZmVycmVkTWVzc2FnZVBvcnQmJiwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmKTsKKyAgICB2b2lk
IHNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIpOworCisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb250ZW50Q29ubmVj
dGlvbjsKKyAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7CisgICAgV2Vi
U2hhcmVkV29ya2VyU2VydmVyJiBtX3NlcnZlcjsKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LmZhZTRhMDgwMzc3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KQEAgLTAsMCArMSwyNiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMg
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgor
IyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCittZXNzYWdlcyAtPiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uIE5vdFJl
ZkNvdW50ZWQgeworICAgIFJlcXVlc3RTaGFyZWRXb3JrZXIoc3RydWN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgVVJMIHVybCwgV2ViQ29yZTo6VHJhbnNmZXJyZWRN
ZXNzYWdlUG9ydCBwb3J0LCBzdHJ1Y3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyB3b3JrZXJPcHRp
b25zKQorICAgIFNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KFdlYkNvcmU6OlNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40
OWMxMTI0MTUyMTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCisK
KyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlci5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworI2RlZmluZSBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0co
Zm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gW3dlYlByb2Nlc3NJZGVu
dGlmaWVyPSUiIFBSSXU2NCAiXSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjoiIGZtdCwgdGhpcywgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19f
VkFfQVJHU19fKQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYgcmVnaXN0cmFibGVEb21haW4sIFdlYlNoYXJlZFdvcmtlclNlcnZlciYgc2VydmVyKQorICAg
IDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX3NlcnZlcihzZXJ2ZXIpCisgICAg
LCBtX3JlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKQoreworICAgIENPTlRFWFRf
Q09OTkVDVElPTl9SRUxFQVNFX0xPRygiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjoiKTsKKyAgICBzZXJ2ZXIuYWRkQ29udGV4dENvbm5lY3Rpb24oKnRoaXMpOworfQor
CitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp+V2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpCit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9O
X1JFTEVBU0VfTE9HKCJ+V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjoi
KTsKKyAgICBpZiAobV9zZXJ2ZXIgJiYgbV9zZXJ2ZXItPmNvbnRleHRDb25uZWN0aW9uRm9yUmVn
aXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4oKSkgPT0gdGhpcykKKyAgICAgICAgbV9z
ZXJ2ZXItPnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKCp0aGlzKTsKK30KKworV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
d2ViUHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24u
d2ViUHJvY2Vzc0lkZW50aWZpZXIoKTsKK30KKworSVBDOjpDb25uZWN0aW9uJiBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjppcGNDb25uZWN0aW9uKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKTsKK30KKworSVBDOjpDb25uZWN0
aW9uKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlU2Vu
ZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuICZpcGNDb25uZWN0aW9uKCk7Cit9
CisKK3VpbnQ2NF90IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1l
c3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKwor
dm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9u
SXNOb0xvbmdlck5lZWRlZCgpCit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9H
KCJjb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZDoiKTsKKyAgICBtX2Nvbm5lY3Rpb24uc2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKTsKK30KKwor
dm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpwb3N0RXhjZXB0
aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIENP
TlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygicG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0
OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VySWRlbnRpZmll
ci50b1VJbnQ2NCgpKTsKKyAgICBpZiAobV9zZXJ2ZXIpCisgICAgICAgIG1fc2VydmVyLT5wb3N0
RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qoc2hhcmVkV29ya2VySWRlbnRpZmllciwgZXJyb3JNZXNz
YWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCk7Cit9CisKK3ZvaWQgV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bGF1bmNoU2hhcmVkV29ya2Vy
KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25zLCBjb25zdCBXZWJDb3JlOjpX
b3JrZXJGZXRjaFJlc3VsdCYgZmV0Y2hSZXN1bHQpCit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9O
X1JFTEVBU0VfTE9HKCJsYXVuY2hTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9
JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6TGF1bmNo
U2hhcmVkV29ya2VyIHsgb3JpZ2luLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCB1cmwsIHdvcmtl
ck9wdGlvbnMsIGZldGNoUmVzdWx0IH0pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OnBvc3RDb25uZWN0RXZlbnQoV2ViQ29yZTo6U2hhcmVkV29y
a2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpUcmFu
c2ZlcnJlZE1lc3NhZ2VQb3J0JiBwb3J0LCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3sK
KyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coInBvc3RDb25uZWN0RXZlbnQ6IHNo
YXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRv
VUludDY0KCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6UG9zdENvbm5lY3RFdmVudCB7IHNoYXJlZFdvcmtlcklkZW50aWZpZXIs
IHBvcnQsIHNvdXJjZU9yaWdpbiB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjp0ZXJtaW5hdGVTaGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hhcmVk
V29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyKQoreworICAgIENPTlRFWFRf
Q09OTkVDVElPTl9SRUxFQVNFX0xPRygidGVybWluYXRlU2hhcmVkV29ya2VyOiBzaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OlRlcm1pbmF0ZVNoYXJlZFdvcmtlciB7IHNoYXJlZFdvcmtlcklkZW50aWZpZXIgfSk7
Cit9CisKKyN1bmRlZiBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0cKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1No
YXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5mMDdmZjAzYTMzZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRl
ci5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3Ry
YWJsZURvbWFpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VySWRlbnRpZmllci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKK2NsYXNz
IFNjcmlwdEJ1ZmZlcjsKK3N0cnVjdCBDbGllbnRPcmlnaW47CitzdHJ1Y3QgV29ya2VyRmV0Y2hS
ZXN1bHQ7CitzdHJ1Y3QgV29ya2VyT3B0aW9uczsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworY2xhc3MgV2ViU2hhcmVkV29y
a2VyU2VydmVyOworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uIGZpbmFsIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXImKTsKKyAgICB+V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbigpOworCisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lk
ZW50aWZpZXIoKSBjb25zdDsKKyAgICBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYg
cmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9
CisgICAgSVBDOjpDb25uZWN0aW9uJiBpcGNDb25uZWN0aW9uKCkgY29uc3Q7CisKKyAgICB2b2lk
IGxhdW5jaFNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBXZWJDb3JlOjpXb3Jr
ZXJPcHRpb25zJiwgY29uc3QgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmKTsKKyAgICB2b2lk
IHBvc3RDb25uZWN0RXZlbnQoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYsIGNvbnN0IFN0cmluZyYgc291cmNlT3Jp
Z2luKTsKKyAgICB2b2lkIHRlcm1pbmF0ZVNoYXJlZFdvcmtlcihXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyKTsKKworICAgIHZvaWQgY29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKTsK
KworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgZmluYWw7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAgIHZvaWQg
cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCisgICAgLy8gSVBDOjpNZXNzYWdl
U2VuZGVyLgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBj
b25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNv
bnN0IGZpbmFsOworCisgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fY29ubmVj
dGlvbjsKKyAgICBXZWFrUHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlcj4gbV9zZXJ2ZXI7CisgICAg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2Vy
L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hZTQ3YzEyMmNiYWMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0w
LDAgKzEsMjUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVz
c2FnZXMgLT4gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBOb3RSZWZD
b3VudGVkIHsKKyAgICBQb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVk
V29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBTdHJpbmcgZXJyb3JNZXNz
YWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgU3RyaW5nIHNvdXJjZVVSTCkK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKaW5kZXggNDRlMGE3YWNiN2I1Li43YjdjYzliYWM0
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCkBAIC05Nyw2ICs5Nyw3IEBAIGV4dGVybiAi
QyIgewogICAgIE0oU2VydmljZVdvcmtlcikgXAogICAgIE0oU2Vzc2lvblN0YXRlKSBcCiAgICAg
TShTaGFyZWREaXNwbGF5TGlzdHMpIFwKKyAgICBNKFNoYXJlZFdvcmtlcikgXAogICAgIE0oU3Rv
cmFnZSkgXAogICAgIE0oU3RvcmFnZUFQSSkgXAogICAgIE0oVGV4dElucHV0KSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA3ZWJmYTUxNmI1MDMuLjFhMjYx
ZTBiMTBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0z
MDMsMTAgKzMwMywxMyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJl
ZCgpOgogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllcics
CiAgICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcics
CiAgICAgICAgICdXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoJywKKyAgICAgICAgJ1dlYkNvcmU6
OlNoYXJlZFdvcmtlcklkZW50aWZpZXInLAorICAgICAgICAnV2ViQ29yZTo6U2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTbGVlcERpc2FibGVySWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTb3VyY2VCdWZmZXJBcHBlbmRNb2RlJywKICAgICAg
ICAgJ1dlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIn
LAogICAgICAgICAnV2ViQ29yZTo6U3RvcmFnZVR5cGUnLAorICAgICAgICAnV2ViQ29yZTo6VHJh
bnNmZXJyZWRNZXNzYWdlUG9ydCcsCiAgICAgICAgICdXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0
SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpXZWJMb2NrSWRlbnRpZmllcicsCiAgICAg
ICAgICdXZWJDb3JlOjpXZWJTb2NrZXRJZGVudGlmaWVyJywKQEAgLTg1MSw2ICs4NTQsNyBAQCBk
ZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6OlRleHRDaGVja2lu
Z1R5cGUnOiBbJzxXZWJDb3JlL1RleHRDaGVja2luZy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6
VGV4dEluZGljYXRvckRhdGEnOiBbJzxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4nXSwKICAgICAg
ICAgJ1dlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUnOiBbJzxXZWJDb3JlL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oPiddLAorICAgICAgICAnV2ViQ29yZTo6VHJhbnNmZXJyZWRN
ZXNzYWdlUG9ydCc6IFsnPFdlYkNvcmUvTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaD4nXSwKICAg
ICAgICAgJ1dlYkNvcmU6OlVzZWRMZWdhY3lUTFMnOiBbJzxXZWJDb3JlL1Jlc291cmNlUmVzcG9u
c2VCYXNlLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpWaWRlb1ByZXNldERhdGEnOiBbJzxXZWJD
b3JlL1ZpZGVvUHJlc2V0Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0
ZXMnOiBbJzxXZWJDb3JlL1ZpZXdwb3J0QXJndW1lbnRzLmg+J10sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBk
ZjQ3Yzc4NmM4ZGUuLmU0YzA3ODc1MmYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0xNDEsNiArMTQxLDEw
IEBAIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dPcmlnaW5TdG9yZS5jcHAgQG5v
LXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bi5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiAKK05ldHdvcmtQcm9jZXNzL1NoYXJl
ZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy9TaGFyZWRX
b3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAKK05ldHdvcmtQcm9jZXNz
L1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cAorCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5jcHAK
IE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuY3BwCiBOZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkuY3BwCkBA
IC03ODIsNiArNzg2LDkgQEAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFibGUuY3BwCiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKIFdl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwCitXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCitXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwCiAKIFdlYlByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAogCkBAIC04ODQsMyArODkx
LDcgQEAgUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5TWVzc2FnZVJlY2VpdmVyLmNwcAogU2VydmljZVdv
cmtlckRvd25sb2FkVGFza01lc3NhZ2VSZWNlaXZlci5jcHAKIFdlYkJyb2FkY2FzdENoYW5uZWxS
ZWdpc3RyeU1lc3NhZ2VSZWNlaXZlci5jcHAKIFdlYkxvY2tSZWdpc3RyeVByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2Fn
ZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbk1lc3NhZ2VSZWNl
aXZlci5jcHAKK1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIu
Y3BwCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggZDFiNDM3MTc2MzVmLi4zMzAyMGJkNWMzY2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcApAQCAtNTI5LDcgKzUyOSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6dGVybWluYXRlV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9j
CiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZpY2VX
b3JrZXJQcm9jZXNzZXMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZp
ZXIpCiB7CiAgICAgaWYgKFJlZlB0ciBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNz
Rm9ySWRlbnRpZmllcihwcm9jZXNzSWRlbnRpZmllcikpIHsKLSAgICAgICAgcHJvY2Vzcy0+ZGlz
YWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgICAgIHByb2Nlc3MtPmRpc2FibGVXb3JrZXJzKFdl
YlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiAgICAgICAgIHByb2Nl
c3MtPnJlcXVlc3RUZXJtaW5hdGlvbihQcm9jZXNzVGVybWluYXRpb25SZWFzb246OkV4Y2VlZGVk
Q1BVTGltaXQpOwogICAgIH0KIH0KQEAgLTE0MTUsMTYgKzE0MTUsMjEgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpkaWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoV2Vi
VXNlckNvbnRlbnQKIH0KICNlbmRpZgogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmVzdGFi
bGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXNzaW9u
SUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFi
bGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+
IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3Rk
OjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtl
clBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBXZWJQcm9jZXNzUG9vbDo6
ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKCp0aGlzLCBX
VEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBz
ZXNzaW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBXZWJQcm9jZXNzUG9v
bDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyhXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVy
LCBzZXNzaW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5Ojp3b3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OnNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgaWYgKGF1dG8qIHByb2Nl
c3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIpKQot
ICAgICAgICBwcm9jZXNzLT5kaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICAgICAgcHJvY2Vz
cy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29y
a2VyKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnRQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVu
dGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lk
ZW50aWZpZXIpCkBAIC0xNDYwLDYgKzE0NjUsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjplbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0kK
IH0KICNlbmRpZgogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNoYXJlZFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRl
bnRpZmllcikKK3sKKyAgICBpZiAoYXV0byogcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJv
Y2Vzc0ZvcklkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAgICAgIHByb2Nlc3MtPmRpc2FibGVX
b3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKTsKK30KKwog
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2
NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVx
dWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcXVv
dGEpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9HKFN0b3JhZ2UsICIl
cCAtIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UiLCB0aGlzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmgKaW5kZXggOGNiZDdkMDliNjZmLi42ODQxYTM0ZmUwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0z
MjcsMTMgKzMyNywxNSBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCi0gICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJ
ZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
LSAgICB2b2lkIHdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIpOworICAgIHZvaWQgZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYm
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
PiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0
aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIHZvaWQg
cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2Vy
dmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKICAgICB2b2lkIHVucmVnaXN0ZXJTZXJ2aWNl
V29ya2VyQ2xpZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNz
SWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nl
c3NJZGVudGlmaWVyKTsKICAgICB2b2lkIHN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9j
ZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRl
bnRpZmllcik7CiAgICAgdm9pZCBlbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3Npbmco
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVy
KTsKICNlbmRpZgorICAgIHZvaWQgc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdl
ck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CisgICAgdm9pZCBlc3RhYmxpc2hT
aGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAKICAgICB2b2lkIHRlcm1pbmF0ZVdlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYTk5NzZiMjJl
NzNmLi4xNTc1N2VkOWEyNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTUz
LDEzICs1MywxNSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2Vp
dmVyIHsKICAgICBUZXJtaW5hdGVXZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
IHdlYlByb2Nlc3NJZGVudGlmaWVyKQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAg
IEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJ
ZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCi0gICAgV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciBpZGVudGlmaWVyKQorICAgIEVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFi
bGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKSAtPiAoKSBBc3luYworICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5v
TG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAg
UmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2Vy
dmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQogICAgIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
Q2xpZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRp
ZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVu
dGlmaWVyKQogICAgIFN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikKICAg
ICBFbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQogI2VuZGlmCisgICAgRXN0
YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpIC0+ICgpIEFzeW5jCisgICAgU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25O
b0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQogCiAg
ICAgU2V0V2ViUHJvY2Vzc0hhc1VwbG9hZHMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJv
Y2Vzc0lELCBib29sIGhhc1VwbG9hZCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKaW5kZXggZTQ5OTM1YzMyNWY2Li4xYWNiMzQ0NGFmYTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzY5MSwxMSArMzY5MSw5IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KQogICAgICAgICBy
ZXR1cm47CiAgICAgbV91c2VyQWdlbnQgPSBXVEZNb3ZlKHVzZXJBZ2VudCk7CiAKLSNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiAgICAgLy8gV2UgdXBkYXRlIHRoZSBzZXJ2aWNlIHdvcmtlciB0
aGVyZSBhdCB0aGUgbW9tZW50IHRvIGJlIHN1cmUgd2UgdXNlIHZhbHVlcyB1c2VkIGJ5IGFjdHVh
bCB3ZWIgcGFnZXMuCiAgICAgLy8gRklYTUU6IFJlZmFjdG9yIHRoaXMgd2hlbiB3ZSBoYXZlIGEg
YmV0dGVyIFVzZXItQWdlbnQgc3RvcnkuCi0gICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCkudXBk
YXRlU2VydmljZVdvcmtlclVzZXJBZ2VudChtX3VzZXJBZ2VudCk7Ci0jZW5kaWYKKyAgICBwcm9j
ZXNzKCkucHJvY2Vzc1Bvb2woKS51cGRhdGVXb3JrZXJVc2VyQWdlbnQobV91c2VyQWdlbnQpOwog
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggNjZkNDlmYWMzZWE2Li40
YjE5YjBkMWQzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKQEAgLTUyOSw3ICs1MjksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRXZWJBdXRoblBy
b2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1BybwogYm9vbCBXZWJQ
cm9jZXNzUG9vbDo6c191c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzID0gZmFsc2U7CiAK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxp
c2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQ
cm94eSYgcHJveHksIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6
b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQ
YWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlByb2Nlc3NQb29sOjplc3Rh
Ymxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlZ2lz
dHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRh
U3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Npb25JRCk7CiAgICAgaWYg
KCF3ZWJzaXRlRGF0YVN0b3JlKQpAQCAtNTQ2LDcgKzU0Niw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3
b3JrUHJvCiAgICAgaWYgKHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcikgewogICAgICAgICAv
LyBUaGlzIGlzIGEgc2VydmljZSB3b3JrZXIgZm9yIGEgc2VydmljZSB3b3JrZXIgcGFnZSBzbyB3
ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSB1c2UgdXNlIHRoZSBwYWdlJ3MgV2ViUHJvY2VzcyBmb3Ig
dGhlIHNlcnZpY2Ugd29ya2VyLgogICAgICAgICBpZiAoKHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHkgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJQ
YWdlSWRlbnRpZmllci0+cHJvY2Vzc0lkZW50aWZpZXIoKSkpKSB7Ci0gICAgICAgICAgICBzZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVTZXJ2aWNlV29ya2Vycyhwcm9jZXNzUG9vbC0+
dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvclNlcnZpY2VXb3JrZXJzKCkpOworICAg
ICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlV29ya2VycyhXZWJQcm9j
ZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIHByb2Nlc3NQb29sLT51c2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpKTsKICAgICAgICAgICAgIGlmIChz
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpIHsKICAgICAgICAg
ICAgICAgICBwcm9jZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hlKCkucmVtb3ZlUHJvY2Vzcygqc2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0NhY2hlOjpTaG91bGRTaHV0RG93blBy
b2Nlc3M6Ok5vKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIXNlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSk7CkBAIC01NjQsNDIgKzU2NCw5MiBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoTmV0d29ya1BybwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAg
ICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gcHJvY2Vzcy5wdHIoKTsKLSAgICAgICAgICAg
IHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVNlcnZpY2VXb3JrZXJzKHByb2Nlc3NQ
b29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKSk7
CisgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVXb3JrZXJzKFdl
YlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOwogCiAgICAgICAgICAg
ICBpZiAoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKSB7CiAg
ICAgICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nl
c3MoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NDYWNoZTo6U2hvdWxkU2h1
dERvd25Qcm9jZXNzOjpObyk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFzZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpOwogICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoU2VydmljZVdvcmtlciwg
ImVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyByZXVzaW5n
IGFuIGV4aXN0aW5nIHdlYiBwcm9jZXNzIChwcm9jZXNzPSVwLCBQSUQ9JWQpIiwgc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eSwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50
aWZpZXIoKSk7CisgICAgICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMo
U2VydmljZVdvcmtlciwgImVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MgcmV1c2luZyBhbiBleGlzdGluZyB3ZWIgcHJvY2VzcyAocHJvY2Vzcz0l
cCwgUElEPSVkKSIsIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICB9CiAKICAgICBpZiAoIXNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpIHsKLSAg
ICAgICAgYXV0byBuZXdQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclNl
cnZpY2VXb3JrZXJzKCpwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21haW4gIHsgcmVnaXN0cmFi
bGVEb21haW4gfSwgKndlYnNpdGVEYXRhU3RvcmUpOworICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQ
cm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yV29ya2VycyhXZWJQcm9jZXNzUHJveHk6
OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsICpwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21h
aW4gIHsgcmVnaXN0cmFibGVEb21haW4gfSwgKndlYnNpdGVEYXRhU3RvcmUpOwogICAgICAgICBz
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gbmV3UHJvY2Vzc1Byb3h5LnB0cigpOwogCi0gICAg
ICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhTZXJ2aWNlV29ya2VyLCAiZXN0
YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIGNyZWF0aW5nIGEg
bmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nlcz0lcCwgUElEPSVkKSIsIHNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHksIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPnByb2Nlc3NJZGVu
dGlmaWVyKCkpOworICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoU2Vy
dmljZVdvcmtlciwgImVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MgY3JlYXRpbmcgYSBuZXcgc2VydmljZSB3b3JrZXIgcHJvY2VzcyAocHJvY2Vz
PSVwLCBQSUQ9JWQpIiwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgc2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAKICAgICAgICAgcHJvY2Vzc1Bvb2wt
PmluaXRpYWxpemVOZXdXZWJQcm9jZXNzKG5ld1Byb2Nlc3NQcm94eSwgd2Vic2l0ZURhdGFTdG9y
ZSk7CiAgICAgICAgIHByb2Nlc3NQb29sLT5tX3Byb2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdQ
cm9jZXNzUHJveHkpKTsKICAgICB9CiAKLSAgICBBU1NFUlQoIXNlcnZpY2VXb3JrZXJQcm9jZXNz
ZXMoKS5jb250YWlucygqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSkpOwotICAgIHNlcnZpY2VX
b3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpOworICAgIHdv
cmtlclByb2Nlc3NlcygpLmFkZCgqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSk7CiAKLSAgICBz
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChw
cm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNzUG9vbC0+bV9z
ZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQ
YWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZp
Y2VXb3JrZXJQYWdlSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAg
IGlmICghcHJvY2Vzc1Bvb2wtPm1fc2VydmljZVdvcmtlclVzZXJBZ2VudC5pc051bGwoKSkKLSAg
ICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+c2V0U2VydmljZVdvcmtlclVzZXJBZ2Vu
dChwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyVXNlckFnZW50KTsKKyAgICBzZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChwcm9jZXNzUG9v
bC0+bV93b3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2Vz
LnZhbHVlKCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygp
LnN0b3JlKCksIHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBpZiAoIXByb2Nlc3NQb29sLT5tX3dv
cmtlclVzZXJBZ2VudC5pc051bGwoKSkKKyAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94
eS0+c2V0V29ya2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3dvcmtlclVzZXJBZ2VudCk7CiB9
CisjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6
cmVtb3ZlRnJvbVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7Ci0g
ICAgQVNTRVJUKHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb250YWlucyhwcm9jZXNzKSk7Ci0g
ICAgc2VydmljZVdvcmtlclByb2Nlc3NlcygpLnJlbW92ZShwcm9jZXNzKTsKKyAgICBBU1NFUlQo
d29ya2VyUHJvY2Vzc2VzKCkuY29udGFpbnMocHJvY2VzcykpOworICAgIHdvcmtlclByb2Nlc3Nl
cygpLnJlbW92ZShwcm9jZXNzKTsKK30KKwordm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNo
U2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIGF1dG8qIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0Rh
dGFTdG9yZUZvclNlc3Npb25JRChzZXNzaW9uSUQpOworICAgIGlmICghd2Vic2l0ZURhdGFTdG9y
ZSkKKyAgICAgICAgd2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRE
YXRhU3RvcmUoKS5wdHIoKTsKKyAgICBpZiAoIXByb2Nlc3NQb29scygpLnNpemUoKSkKKyAgICAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZjxXZWJQcm9jZXNzUG9vbD4+IHNoYXJlZFdvcmtl
clByb2Nlc3NQb29sKFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoQVBJOjpQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb246OmNyZWF0ZSgpLmdldCgpKSk7CisKKyAgICAvLyBBcmJpdHJhcmlseSBjaG9vc2Ug
dGhlIGZpcnN0IHByb2Nlc3MgcG9vbCB0byBob3N0IHRoZSBzaGFyZWQgd29ya2VyIHByb2Nlc3Mu
CisgICAgYXV0byogcHJvY2Vzc1Bvb2wgPSBwcm9jZXNzUG9vbHMoKVswXTsKKyAgICBBU1NFUlQo
cHJvY2Vzc1Bvb2wpOworCisgICAgV2ViUHJvY2Vzc1Byb3h5KiBzaGFyZWRXb3JrZXJQcm9jZXNz
UHJveHkgeyBudWxscHRyIH07CisKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBwcm9jZXNzUG9v
bC0+bV9wcm9jZXNzZXMpIHsKKyAgICAgICAgaWYgKHByb2Nlc3MucHRyKCkgPT0gcHJvY2Vzc1Bv
b2wtPm1fcHJld2FybWVkUHJvY2Vzcy5nZXQoKSB8fCBwcm9jZXNzLT5pc0R1bW15UHJvY2Vzc1By
b3h5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCZwcm9jZXNzLT53ZWJz
aXRlRGF0YVN0b3JlKCkgIT0gd2Vic2l0ZURhdGFTdG9yZSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBpZiAoIXByb2Nlc3MtPmlzTWF0Y2hpbmdSZWdpc3RyYWJsZURvbWFpbihyZWdp
c3RyYWJsZURvbWFpbikpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBzaGFyZWRX
b3JrZXJQcm9jZXNzUHJveHkgPSBwcm9jZXNzLnB0cigpOworICAgICAgICBzaGFyZWRXb3JrZXJQ
cm9jZXNzUHJveHktPmVuYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpT
aGFyZWRXb3JrZXIsIHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
Rm9yV29ya2VycygpKTsKKworICAgICAgICBpZiAoc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5p
c0luUHJvY2Vzc0NhY2hlKCkpIHsKKyAgICAgICAgICAgIHByb2Nlc3NQb29sLT53ZWJQcm9jZXNz
Q2FjaGUoKS5yZW1vdmVQcm9jZXNzKCpzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHksIFdlYlByb2Nl
c3NDYWNoZTo6U2hvdWxkU2h1dERvd25Qcm9jZXNzOjpObyk7CisgICAgICAgICAgICBBU1NFUlQo
IXNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKTsKKyAgICAgICAg
fQorCisgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhTaGFyZWRXb3Jr
ZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MgcmV1c2luZyBhbiBleGlzdGluZyB3ZWIgcHJvY2VzcyAocHJvY2Vzcz0lcCwgUElEPSVkKSIs
IHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9j
ZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKCFzaGFy
ZWRXb3JrZXJQcm9jZXNzUHJveHkpIHsKKyAgICAgICAgYXV0byBuZXdQcm9jZXNzUHJveHkgPSBX
ZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvcldvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJU
eXBlOjpTaGFyZWRXb3JrZXIsICpwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21haW4gIHsgcmVn
aXN0cmFibGVEb21haW4gfSwgKndlYnNpdGVEYXRhU3RvcmUpOworICAgICAgICBzaGFyZWRXb3Jr
ZXJQcm9jZXNzUHJveHkgPSBuZXdQcm9jZXNzUHJveHkucHRyKCk7CisKKyAgICAgICAgV0VCUFJP
Q0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElDKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJl
ZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyBjcmVhdGluZyBhIG5ldyBz
ZXJ2aWNlIHdvcmtlciBwcm9jZXNzIChwcm9jZXNzPSVwLCBQSUQ9JWQpIiwgc2hhcmVkV29ya2Vy
UHJvY2Vzc1Byb3h5LCBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVy
KCkpOworCisgICAgICAgIHByb2Nlc3NQb29sLT5pbml0aWFsaXplTmV3V2ViUHJvY2VzcyhuZXdQ
cm9jZXNzUHJveHksIHdlYnNpdGVEYXRhU3RvcmUpOworICAgICAgICBwcm9jZXNzUG9vbC0+bV9w
cm9jZXNzZXMuYXBwZW5kKFdURk1vdmUobmV3UHJvY2Vzc1Byb3h5KSk7CisgICAgfQorCisgICAg
d29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkpOworCisgICAg
c2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0KHBy
b2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJl
ZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZl
cmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVEb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKyAgICBpZiAoIXByb2Nlc3NQb29sLT5tX3dvcmtlclVzZXJBZ2VudC5pc051bGwo
KSkKKyAgICAgICAgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRXb3JrZXJVc2VyQWdlbnQo
cHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFnZW50KTsKIH0KLSNlbmRpZgogCiB2b2lkIFdlYlBy
b2Nlc3NQb29sOjp3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCkKIHsKQEAgLTEw
MDMsMTAgKzEwNTMsOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2VzcyhX
ZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiAKICAgICBtX2JhY2tGb3J3YXJkQ2FjaGUtPnJlbW92
ZUVudHJpZXNGb3JQcm9jZXNzKHByb2Nlc3MpOwogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQotICAgIGlmIChwcm9jZXNzLmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCi0gICAgICAgIHJl
bW92ZUZyb21TZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKHByb2Nlc3MpOwotI2VuZGlmCisgICAgaWYg
KHByb2Nlc3MuaXNSdW5uaW5nV29ya2VycygpKQorICAgICAgICByZW1vdmVGcm9tV29ya2VyUHJv
Y2Vzc2VzKHByb2Nlc3MpOwogCiAgICAgc3RhdGljX2Nhc3Q8V2ViQ29udGV4dFN1cHBsZW1lbnQq
PihzdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PigpKS0+cHJvY2Vzc0RpZENs
b3NlKCZwcm9jZXNzKTsKIApAQCAtMTA2NywxMiArMTExNSwxMiBAQCBSZWY8V2ViUHJvY2Vzc1By
b3h5PiBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKFdlYnNpdGVE
YXRhU3RvcgogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotVXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllciBXZWJQcm9jZXNzUG9vbDo6dXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllckZvclNlcnZpY2VXb3JrZXJzKCkKK1VzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIgV2ViUHJvY2Vzc1Bvb2w6OnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3Jr
ZXJzKCkKIHsKLSAgICBpZiAoIW1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yU2VydmljZVdvcmtl
cikKLSAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyID0gV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmNyZWF0ZSgpOworICAgIGlmICghbV91c2VyQ29u
dGVudENvbnRyb2xsZXJGb3JXb3JrZXJzKQorICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxl
ckZvcldvcmtlcnMgPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKCk7CiAK
LSAgICByZXR1cm4gbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyLT5pZGVu
dGlmaWVyKCk7CisgICAgcmV0dXJuIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2Vycy0+
aWRlbnRpZmllcigpOwogfQogI2VuZGlmCiAKQEAgLTExMTksMTUgKzExNjcsMTMgQEAgUmVmPFdl
YlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFn
ZUNsaWVudCwgUmVmPEFQSToKIAogICAgIGF1dG8gcGFnZSA9IHByb2Nlc3MtPmNyZWF0ZVdlYlBh
Z2UocGFnZUNsaWVudCwgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogCi0jaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQotICAgIGlmICghbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMpIHsK
LSAgICAgICAgbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMgPSBwYWdlLT5wcmVmZXJlbmNlc1N0
b3JlKCk7Ci0gICAgICAgIGZvciAoYXV0byYgc2VydmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNl
V29ya2VyUHJvY2Vzc2VzKCkpCi0gICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy51cGRh
dGVTZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXNTdG9yZSgqbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5j
ZXMpOworICAgIGlmICghbV93b3JrZXJQcmVmZXJlbmNlcykgeworICAgICAgICBtX3dvcmtlclBy
ZWZlcmVuY2VzID0gcGFnZS0+cHJlZmVyZW5jZXNTdG9yZSgpOworICAgICAgICBmb3IgKGF1dG8m
IHdvcmtlclByb2Nlc3MgOiB3b3JrZXJQcm9jZXNzZXMoKSkKKyAgICAgICAgICAgIHdvcmtlclBy
b2Nlc3MudXBkYXRlV29ya2VyUHJlZmVyZW5jZXNTdG9yZSgqbV93b3JrZXJQcmVmZXJlbmNlcyk7
CiAgICAgfQogICAgIGlmICh1c2VyQ29udGVudENvbnRyb2xsZXIpCi0gICAgICAgIG1fdXNlckNv
bnRlbnRDb250cm9sbGVyRm9yU2VydmljZVdvcmtlciA9IHVzZXJDb250ZW50Q29udHJvbGxlcjsK
LSNlbmRpZgorICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtlcnMgPSB1c2Vy
Q29udGVudENvbnRyb2xsZXI7CiAKICAgICBib29sIGVuYWJsZVByb2Nlc3NTd2FwT25Dcm9zc1Np
dGVOYXZpZ2F0aW9uID0gcGFnZS0+cHJlZmVyZW5jZXMoKS5wcm9jZXNzU3dhcE9uQ3Jvc3NTaXRl
TmF2aWdhdGlvbkVuYWJsZWQoKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMTE1MCwx
NiArMTE5NiwxNCBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2Vi
UGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogICAgIHJldHVybiBwYWdlOwog
fQogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBk
YXRlU2VydmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKK3ZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCkKIHsKLSAgICBpZiAobV9zZXJ2aWNlV29ya2VyVXNlckFnZW50ID09IHVzZXJBZ2VudCkK
KyAgICBpZiAobV93b3JrZXJVc2VyQWdlbnQgPT0gdXNlckFnZW50KQogICAgICAgICByZXR1cm47
Ci0gICAgbV9zZXJ2aWNlV29ya2VyVXNlckFnZW50ID0gdXNlckFnZW50OwotICAgIGZvciAoYXV0
byYgc2VydmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkpCi0gICAg
ICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzLnNldFNlcnZpY2VXb3JrZXJVc2VyQWdlbnQobV9zZXJ2
aWNlV29ya2VyVXNlckFnZW50KTsKKyAgICBtX3dvcmtlclVzZXJBZ2VudCA9IHVzZXJBZ2VudDsK
KyAgICBmb3IgKGF1dG8mIHdvcmtlclByb2Nlc3MgOiB3b3JrZXJQcm9jZXNzZXMoKSkKKyAgICAg
ICAgd29ya2VyUHJvY2Vzcy5zZXRXb3JrZXJVc2VyQWdlbnQobV93b3JrZXJVc2VyQWdlbnQpOwog
fQotI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURh
dGFTdG9yZShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgV2Vic2l0ZURhdGFTdG9yZSYg
ZGF0YVN0b3JlKQogewpAQCAtMTUzOCw4ICsxNTgyLDEzIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzKCkKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwotICAgIHdoaWxlIChzZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzKCkuY29tcHV0ZVNpemUoKSkKLSAgICAgICAgc2VydmljZVdvcmtlclByb2Nl
c3NlcygpLmJlZ2luKCktPmRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgIFZlY3RvcjxSZWY8
V2ViUHJvY2Vzc1Byb3h5Pj4gc2VydmljZVdvcmtlclByb2Nlc3NlczsKKyAgICB3b3JrZXJQcm9j
ZXNzZXMoKS5mb3JFYWNoKFsmXShhdXRvJiBwcm9jZXNzKSB7CisgICAgICAgIGlmIChwcm9jZXNz
LmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCisgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc2VzLmFwcGVuZChwcm9jZXNzKTsKKyAgICB9KTsKKyAgICBmb3IgKGF1dG8mIHNlcnZpY2VX
b3JrZXJQcm9jZXNzIDogc2VydmljZVdvcmtlclByb2Nlc3NlcykKKyAgICAgICAgc2VydmljZVdv
cmtlclByb2Nlc3MtPmRpc2FibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6
U2VydmljZVdvcmtlcik7CiAjZW5kaWYKIH0KIApAQCAtMTc2NywxMyArMTgxNiwxMSBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpyZXBvcnRXZWJDb250ZW50Q1BVVGltZShTZWNvbmRzIGNwdVRpbWUs
IHVpbnQ2NF90IGFjdGl2aXR5UwogI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi1XZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+JiBXZWJQcm9jZXNzUG9vbDo6c2Vydmlj
ZVdvcmtlclByb2Nlc3NlcygpCitXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+JiBXZWJQcm9j
ZXNzUG9vbDo6d29ya2VyUHJvY2Vzc2VzKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
V2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5Pj4gcHJvY2Vzc2VzOwogICAgIHJldHVybiBwcm9j
ZXNzZXM7CiB9Ci0jZW5kaWYKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fz
c2VydGlvbnMoKQogewpAQCAtMTc4NSwyMCArMTgzMiwyNSBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
Ojp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpCiAgICAgaWYgKGF1dG8qIGdwdVByb2Nlc3MgPSBH
UFVQcm9jZXNzUHJveHk6OnNpbmdsZXRvbklmQ3JlYXRlZCgpKQogICAgICAgICBncHVQcm9jZXNz
LT51cGRhdGVQcm9jZXNzQXNzZXJ0aW9uKCk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCisKICAgICAvLyBDaGVjayBvbiBuZXh0IHJ1biBsb29wIHNpbmNlIHRoZSB3ZWIgcHJv
Y2VzcyBwcm94eSB0b2tlbnMgYXJlIHByb2JhYmx5IGJlaW5nIHVwZGF0ZWQuCiAgICAgY2FsbE9u
TWFpblJ1bkxvb3AoW10gewotICAgICAgICBmb3IgKGF1dG8mIHNlcnZpY2VXb3JrZXJQcm9jZXNz
IDogc2VydmljZVdvcmtlclByb2Nlc3NlcygpKQotICAgICAgICAgICAgc2VydmljZVdvcmtlclBy
b2Nlc3MudXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKLSAgICB9KTsKKyAg
ICAgICAgd29ya2VyUHJvY2Vzc2VzKCkuZm9yRWFjaChbXShhdXRvJiB3b3JrZXJQcm9jZXNzKSB7
CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgICAgICAgICAgaWYgKHdvcmtlclByb2Nl
c3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKKyAgICAgICAgICAgICAgICB3b3JrZXJQcm9j
ZXNzLnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJU
eXBlOjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgorICAgICAgICAgICAgaWYgKHdvcmtlclByb2Nl
c3MuaXNSdW5uaW5nU2hhcmVkV29ya2VycygpKQorICAgICAgICAgICAgICAgIHdvcmtlclByb2Nl
c3MudXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5
cGU6OlNoYXJlZFdvcmtlcik7CisgICAgICAgIH0pOworICAgIH0pOwogfQogCiBib29sIFdlYlBy
b2Nlc3NQb29sOjppc1NlcnZpY2VXb3JrZXJQYWdlSUQoV2ViUGFnZVByb3h5SWRlbnRpZmllciBw
YWdlSUQpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIC8vIEZJWE1F
OiBUaGlzIGlzIGluZWZmaWNpZW50LgotICAgIHJldHVybiBXVEY6OmFueU9mKHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzZXMoKSwgW3BhZ2VJRF0oYXV0byYgcHJvY2VzcykgeworICAgIHJldHVybiBXVEY6
OmFueU9mKHdvcmtlclByb2Nlc3NlcygpLCBbcGFnZUlEXShhdXRvJiBwcm9jZXNzKSB7CiAgICAg
ICAgIHJldHVybiBwcm9jZXNzLmhhc1NlcnZpY2VXb3JrZXJQYWdlUHJveHkocGFnZUlEKTsKICAg
ICB9KTsKICNlbmRpZgpAQCAtMjEyNCwxNiArMjE3NiwyNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpzZXRVc2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKGJvb2wgdXNlU2VwYXJhdGVTZXJ2
aWNlVwogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorc2l6ZV90IFdlYlByb2Nlc3NQ
b29sOjpzZXJ2aWNlV29ya2VyUHJveGllc0NvdW50KCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBj
b3VudCA9IDA7CisgICAgd29ya2VyUHJvY2Vzc2VzKCkuZm9yRWFjaChbJl0oYXV0byYgcHJvY2Vz
cykgeworICAgICAgICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQorICAg
ICAgICAgICAgKytjb3VudDsKKyAgICB9KTsKKyAgICByZXR1cm4gY291bnQ7Cit9CisKIGJvb2wg
V2ViUHJvY2Vzc1Bvb2w6Omhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0
aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjphbnlPZihzZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICByZXR1cm4gV1RGOjphbnlPZih3b3JrZXJQ
cm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2VzcykgewogICAgICAgICByZXR1cm4gcHJvY2Vzcy5o
YXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpOwogICAgIH0pOwog
fQogCiBib29sIFdlYlByb2Nlc3NQb29sOjpoYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2
aXR5Rm9yVGVzdGluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6YW55T2Yoc2VydmljZVdv
cmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9jZXNzKSB7CisgICAgcmV0dXJuIFdURjo6YW55
T2Yod29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJu
IHByb2Nlc3MuaGFzU2VydmljZVdvcmtlckJhY2tncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKTsK
ICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4
IDQzMmM2NWVlOTk0OS4uZTcwYjZmNDI5ZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmgKQEAgLTM3NCwxNyArMzc0LDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIG5l
dHdvcmtQcm9jZXNzRGlkVGVybWluYXRlKE5ldHdvcmtQcm9jZXNzUHJveHkmLCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpUZXJtaW5hdGlvblJlYXNvbik7CiAKICAgICBib29sIGlzU2VydmljZVdvcmtl
clBhZ2VJRChXZWJQYWdlUHJveHlJZGVudGlmaWVyKSBjb25zdDsKKyAgICB2b2lkIHJlbW92ZUZy
b21Xb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5Jik7CisKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi0gICAgc3RhdGljIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgcmVtb3ZlRnJvbVNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5Jik7Ci0gICAgc2l6ZV90IHNlcnZpY2VX
b3JrZXJQcm94aWVzQ291bnQoKSBjb25zdCB7IHJldHVybiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
KCkuY29tcHV0ZVNpemUoKTsgfQotICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtlclVzZXJBZ2Vu
dChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCk7Ci0gICAgVXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllciB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMo
KTsKKyAgICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgc2l6ZV90IHNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25zdDsK
KyAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXJGb3JXb3JrZXJzKCk7CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyRm9yZWdy
b3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0OwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtl
ckJhY2tncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdDsKICNlbmRpZgogICAgIHZvaWQg
c2VydmljZVdvcmtlclByb2Nlc3NDcmFzaGVkKFdlYlByb2Nlc3NQcm94eSYpOwogCisgICAgdm9p
ZCB1cGRhdGVXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpOworICAgIHN0
YXRpYyB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJv
b2wgcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgpIGNvbnN0OwogI2VuZGlmCkBAIC02MTgsMTMg
KzYyMSwxMSBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgV2Vha1B0
cjxXZWJQcm9jZXNzUHJveHk+PiBtX2R1bW15UHJvY2Vzc1Byb3hpZXM7IC8vIExpZ2h0d2VpZ2h0
IFdlYlByb2Nlc3NQcm94eSBvYmplY3RzIHdpdGhvdXQgYmFja2luZyBwcm9jZXNzLgogCi0jaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHN0YXRpYyBXZWFrSGFzaFNldDxXZWJQcm9jZXNz
UHJveHk+JiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCk7Ci0gICAgYm9vbCBtX3dhaXRpbmdGb3JX
b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24geyBmYWxzZSB9OwotICAgIFN0cmluZyBtX3Nl
cnZpY2VXb3JrZXJVc2VyQWdlbnQ7Ci0gICAgc3RkOjpvcHRpb25hbDxXZWJQcmVmZXJlbmNlc1N0
b3JlPiBtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlczsKLSAgICBSZWZQdHI8V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk+IG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yU2VydmljZVdvcmtl
cjsKLSNlbmRpZgorICAgIHN0YXRpYyBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+JiB3b3Jr
ZXJQcm9jZXNzZXMoKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8V2ViUHJlZmVyZW5jZXNTdG9yZT4g
bV93b3JrZXJQcmVmZXJlbmNlczsKKyAgICBSZWZQdHI8V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk+IG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2VyczsKKyAgICBTdHJpbmcgbV93
b3JrZXJVc2VyQWdlbnQ7CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgUmVmUHRyPEdQ
VVByb2Nlc3NQcm94eT4gbV9ncHVQcm9jZXNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAKaW5kZXggM2JiZTAzYTdkYWUyLi4xOGFmMzQ2ZmRiMDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTksNiArNTks
NyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1By
b3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5o
IgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFGZXRjaE9w
dGlvbi5oIgpAQCAtMTgyLDExICsxODMsMTEgQEAgUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJv
Y2Vzc1Byb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJzaXQKIH0K
IAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLVJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlBy
b2Nlc3NQcm94eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nl
c3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0
YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQorUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vz
c1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdvcmtlclR5cGUgd29ya2VyVHlwZSwgV2ViUHJvY2Vz
c1Bvb2wmIHByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWlu
LCBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQogewogICAgIGF1dG8gcHJveHkg
PSBhZG9wdFJlZigqbmV3IFdlYlByb2Nlc3NQcm94eShwcm9jZXNzUG9vbCwgJndlYnNpdGVEYXRh
U3RvcmUsIElzUHJld2FybWVkOjpObywgQ3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQsIENhcHRpdmVQ
b3J0YWxNb2RlOjpEaXNhYmxlZCkpOwogICAgIHByb3h5LT5tX3JlZ2lzdHJhYmxlRG9tYWluID0g
V1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgcHJveHktPmVuYWJsZVNlcnZpY2VXb3Jr
ZXJzKHByb2Nlc3NQb29sLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2aWNl
V29ya2VycygpKTsKKyAgICBwcm94eS0+ZW5hYmxlV29ya2Vycyh3b3JrZXJUeXBlLCBwcm9jZXNz
UG9vbC51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpKTsKICAgICBw
cm94eS0+Y29ubmVjdCgpOwogICAgIHJldHVybiBwcm94eTsKIH0KQEAgLTk5NSwxMCArOTk2LDEw
IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUoKQogICAgIGZv
ciAoYXV0byYgY2FsbGJhY2sgOiBpc1Jlc3BvbnNpdmVDYWxsYmFja3MpCiAgICAgICAgIGNhbGxi
YWNrKGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUpOwogCi0gICAgLy8gSWYgdGhlIHdlYiBwcm9jZXNz
IGJlY29tZXMgdW5yZXNwb25zaXZlIGFuZCBvbmx5IHJ1bnMgc2VydmljZSB3b3JrZXJzLCBraWxs
IGl0IG91cnNlbHZlcyBzaW5jZSB0aGVyZSBhcmUgbm8gbmF0aXZlIGNsaWVudHMgdG8gZG8gaXQu
Ci0gICAgaWYgKGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkgJiYgbV9wYWdlTWFwLmlzRW1wdHko
KSkgewotICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUGVyZm9ybWFu
Y2VMb2dnaW5nLCAiZGlkQmVjb21lVW5yZXNwb25zaXZlOiBUZXJtaW5hdGluZyBzZXJ2aWNlIHdv
cmtlci1vbmx5IHdlYiBwcm9jZXNzIGJlY2F1c2UgaXQgaXMgdW5yZXNwb25zaXZlIik7Ci0gICAg
ICAgIGRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgIC8vIElmIHRoZSB3ZWIgcHJvY2VzcyBi
ZWNvbWVzIHVucmVzcG9uc2l2ZSBhbmQgb25seSBydW5zIHNlcnZpY2Uvc2hhcmVkIHdvcmtlcnMs
IGtpbGwgaXQgb3Vyc2VsdmVzIHNpbmNlIHRoZXJlIGFyZSBubyBuYXRpdmUgY2xpZW50cyB0byBk
byBpdC4KKyAgICBpZiAoaXNSdW5uaW5nV29ya2VycygpICYmIG1fcGFnZU1hcC5pc0VtcHR5KCkp
IHsKKyAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HX0VSUk9SKFBlcmZvcm1hbmNl
TG9nZ2luZywgImRpZEJlY29tZVVucmVzcG9uc2l2ZTogVGVybWluYXRpbmcgd29ya2VyLW9ubHkg
d2ViIHByb2Nlc3MgYmVjYXVzZSBpdCBpcyB1bnJlc3BvbnNpdmUiKTsKKyAgICAgICAgZGlzYWJs
ZVdvcmtlcnMoeyBXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBXb3JrZXJUeXBlOjpTaGFyZWRX
b3JrZXIgfSk7CiAgICAgICAgIHRlcm1pbmF0ZSgpOwogICAgIH0KIH0KQEAgLTE2OTQsOCArMTY5
NSw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvck1h
aW5GcmFtZShjb25zdCBVUkwmIHVybCkKICAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfTsKICAgICBpZiAobV9yZWdpc3RyYWJsZURv
bWFpbiAmJiAqbV9yZWdpc3RyYWJsZURvbWFpbiAhPSByZWdpc3RyYWJsZURvbWFpbikgewogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICAgICAgZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7
CisgICAgICAgIGRpc2FibGVXb3JrZXJzKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogI2Vu
ZGlmCisKICAgICAgICAgLy8gTnVsbCBvdXQgcmVnaXN0cmFibGUgZG9tYWluIHNpbmNlIHRoaXMg
cHJvY2VzcyBoYXMgbm93IGJlZW4gdXNlZCBmb3Igc2V2ZXJhbCBkb21haW5zLgogICAgICAgICBt
X3JlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB9OwogICAg
ICAgICByZXR1cm47CkBAIC0xODYxLDYzICsxODYzLDg1IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjplbmRCYWNrZ3JvdW5kQWN0aXZpdHlGb3JGdWxsc2NyZWVuSW5wdXQoKQogCiAjZW5kaWYKIAot
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxp
c2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFs
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsK
LSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImVzdGFibGlzaFNlcnZp
Y2VXb3JrZXJDb250ZXh0OiBTdGFydGVkIik7Ci0gICAgbWFya1Byb2Nlc3NBc1JlY2VudGx5VXNl
ZCgpOwotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RXN0YWJs
aXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bvb2wo
KS5kZWZhdWx0UGFnZUdyb3VwKCkucGFnZUdyb3VwSUQoKSwgbV9zZXJ2aWNlV29ya2VySW5mb3Jt
YXRpb24tPnNlcnZpY2VXb3JrZXJQYWdlUHJveHlJRCwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24tPnNlcnZpY2VXb3JrZXJQYWdlSUQsIHN0b3JlLCByZWdpc3RyYWJsZURvbWFpbiwgc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+aW5pdGlh
bGl6YXRpb25EYXRhIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewot
ICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFT
RV9MT0coTG9hZGluZywgImVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0OiBGaW5pc2hlZCIp
OwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotICAgIH0sIDApOwotfQotCi12b2lkIFdl
YlByb2Nlc3NQcm94eTo6c2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRXb3JrZXJVc2VyQWdlbnQoY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQpCiB7Ci0gICAgQVNTRVJUKG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
U2V0VXNlckFnZW50IHsgdXNlckFnZW50IH0sIDApOworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2Vy
QWdlbnQgfSwgMCk7CisjZW5kaWYKKyAgICBpZiAobV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbikK
KyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2VyQWdlbnQgfSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJv
Y2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVXb3Jr
ZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogewot
ICAgIEFTU0VSVChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbik7Ci0gICAgc2VuZChNZXNzYWdl
czo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZVByZWZlcmVuY2VzU3RvcmUg
eyBzdG9yZSB9LCAwKTsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYgKG1fc2Vy
dmljZVdvcmtlckluZm9ybWF0aW9uKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDAp
OworI2VuZGlmCisgICAgaWYgKG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24pCisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBk
YXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDApOwogfQogCi12b2lkIFdlYlByb2Nlc3NQ
cm94eTo6dXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKQorLy8gRklYTUU6IENs
aWVudHMgZG8gbm90IHByb3Blcmx5IGdldCBwb3B1bGF0ZWQgaW4gbV9zaGFyZWRXb3JrZXJJbmZv
cm1hdGlvbi4KK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0
aW9uKFdvcmtlclR5cGUgd29ya2VyVHlwZSkKIHsKLSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFT
RV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2Vy
dGlvbjoiKTsKLSAgICBBU1NFUlQobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pOwotICAgIGlm
ICghbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAgYXV0byYgd29ya2VySW5mb3JtYXRp
b24gPSB3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/IG1fc2hhcmVkV29y
a2VySW5mb3JtYXRpb24gOiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsKKyAgICBBU1NFUlQo
d29ya2VySW5mb3JtYXRpb24pOworICAgIGlmICghd29ya2VySW5mb3JtYXRpb24pCiAgICAgICAg
IHJldHVybjsKIAotICAgIGJvb2wgc2hvdWxkVGFrZUZvcmVncm91bmRBY3Rpdml0eSA9IFdURjo6
YW55T2YobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3NlcywgWyZdKGF1
dG8mIHByb2Nlc3MpIHsKKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1
c3BlbnNpb24sICJ1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uOiB3b3JrZXJUeXBlPSV7cHVi
bGljfXMiLCB3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/ICJzaGFyZWQi
IDogInNlcnZpY2UiKTsKKworICAgIGJvb2wgc2hvdWxkVGFrZUZvcmVncm91bmRBY3Rpdml0eSA9
IFdURjo6YW55T2Yod29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3NlcywgWyZdKGF1dG8m
IHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuICZwcm9jZXNzICE9IHRoaXMgJiYgISFwcm9jZXNz
Lm1fZm9yZWdyb3VuZFRva2VuOwogICAgIH0pOwogICAgIGlmIChzaG91bGRUYWtlRm9yZWdyb3Vu
ZEFjdGl2aXR5KSB7Ci0gICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEZvcmVn
cm91bmRBY3Rpdml0eShtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQotICAg
ICAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRs
ZXIuZm9yZWdyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3IgZm9yZWdyb3VuZCB2aWV3
KHMpIl9zKTsKKyAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkRm9yZWdyb3Vu
ZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCisgICAgICAgICAgICB3b3Jr
ZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5mb3JlZ3JvdW5kQWN0aXZpdHko
IldvcmtlciBmb3IgZm9yZWdyb3VuZCB2aWV3KHMpIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGJvb2wgc2hvdWxkVGFrZUJhY2tncm91bmRBY3Rpdml0eSA9IFdURjo6YW55T2Yo
bV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3NlcywgWyZdKGF1dG8mIHBy
b2Nlc3MpIHsKKyAgICBib29sIHNob3VsZFRha2VCYWNrZ3JvdW5kQWN0aXZpdHkgPSBXVEY6OmFu
eU9mKHdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMsIFsmXShhdXRvJiBwcm9jZXNz
KSB7CiAgICAgICAgIHJldHVybiAmcHJvY2VzcyAhPSB0aGlzICYmICEhcHJvY2Vzcy5tX2JhY2tn
cm91bmRUb2tlbjsKICAgICB9KTsKICAgICBpZiAoc2hvdWxkVGFrZUJhY2tncm91bmRBY3Rpdml0
eSkgewotICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0
aXZpdHkobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKLSAgICAgICAgICAg
IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmJhY2tn
cm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tncm91bmQgdmlldyhzKSJfcyk7
CisgICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEJhY2tncm91bmRBY3Rpdml0
eSh3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQorICAgICAgICAgICAgd29ya2VySW5mb3Jt
YXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5KCJXb3JrZXIg
Zm9yIGJhY2tncm91bmQgdmlldyhzKSJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBpZiAobV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcpIHsKKyAgICBpZiAo
d29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyICYmIG1faGFzU2VydmljZVdv
cmtlckJhY2tncm91bmRQcm9jZXNzaW5nKSB7CiAgICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxF
QVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlNlcnZpY2UgV29ya2VyIGZvciBiYWNrZ3JvdW5k
IHByb2Nlc3NpbmciKTsKLSAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkQmFj
a2dyb3VuZEFjdGl2aXR5KG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCi0g
ICAgICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90
dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2VyIGZvciBiYWNrZ3JvdW5kIHBy
b2Nlc3NpbmciX3MpOworICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRCYWNr
Z3JvdW5kQWN0aXZpdHkod29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKKyAgICAgICAgICAg
IHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rp
dml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tncm91bmQgcHJvY2Vzc2luZyJfcyk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0
aXZpdHkgPSBudWxscHRyOworICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG51bGxw
dHI7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250
ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgcmVnaXN0cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2hhcmVk
V29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dDogU3RhcnRlZCIpOworICAgIG1h
cmtQcm9jZXNzQXNSZWNlbnRseVVzZWQoKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVsdFBhZ2VHcm91cCgpLnBhZ2VHcm91
cElEKCksIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24tPndvcmtlclBhZ2VQcm94eUlELCBtX3No
YXJlZFdvcmtlckluZm9ybWF0aW9uLT53b3JrZXJQYWdlSUQsIHN0b3JlLCByZWdpc3RyYWJsZURv
bWFpbiwgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbi0+aW5pdGlhbGl6YXRpb25EYXRhIH0sIFt0
aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBpZiAod2Vha1Ro
aXMpCisgICAgICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2hhcmVkV29ya2Vy
LCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dDogRmluaXNoZWQiKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKKyAgICB9LCAwKTsKK30KKworI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4
dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBXRUJQUk9DRVNTUFJPWFlf
UkVMRUFTRV9MT0coTG9hZGluZywgImVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0OiBTdGFy
dGVkIik7CisgICAgbWFya1Byb2Nlc3NBc1JlY2VudGx5VXNlZCgpOworICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVsdFBhZ2VH
cm91cCgpLnBhZ2VHcm91cElEKCksIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT53b3JrZXJQ
YWdlUHJveHlJRCwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPndvcmtlclBhZ2VJRCwgc3Rv
cmUsIHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIG1fc2Vy
dmljZVdvcmtlckluZm9ybWF0aW9uLT5pbml0aWFsaXphdGlvbkRhdGEgfSwgW3RoaXMsIHdlYWtU
aGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAg
ICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZXN0YWJsaXNoU2Vy
dmljZVdvcmtlckNvbnRleHQ6IEZpbmlzaGVkIik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CisgICAgfSwgMCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCkBAIC0xOTI3LDcg
KzE5NTEsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xp
ZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb3h5KQogCiAgICAgV0VCUFJPQ0VTU1BST1hZ
X1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQ
cm9jZXNzOiBjbGllbnRQcm9jZXNzPSVwLCBjbGllbnRQSUQ9JWQiLCAmcHJveHksIHByb3h5LnBy
b2Nlc3NJZGVudGlmaWVyKCkpOwogICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5jbGll
bnRQcm9jZXNzZXMuYWRkKHByb3h5KTsKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fz
c2VydGlvbigpOworICAgIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6
U2VydmljZVdvcmtlcik7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1bnJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKQEAgLTE5Mzcs
NyArMTk2MSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1bnJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94CiAKICAgICBXRUJQUk9DRVNTUFJP
WFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgInVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xp
ZW50UHJvY2VzczogY2xpZW50UHJvY2Vzcz0lcCwgY2xpZW50UElEPSVkIiwgJnByb3h5LCBwcm94
eS5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+
Y2xpZW50UHJvY2Vzc2VzLnJlbW92ZShwcm94eSk7Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclBy
b2Nlc3NBc3NlcnRpb24oKTsKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtl
clR5cGU6OlNlcnZpY2VXb3JrZXIpOwogfQogCiBib29sIFdlYlByb2Nlc3NQcm94eTo6aGFzU2Vy
dmljZVdvcmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdApAQCAtMTk1Nyw3
ICsxOTgxLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnN0YXJ0U2VydmljZVdvcmtlckJhY2tn
cm91bmRQcm9jZXNzaW5nKCkKIAogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9j
ZXNzU3VzcGVuc2lvbiwgInN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nIik7
CiAgICAgbV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcgPSB0cnVlOwotICAg
IHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBkYXRlV29ya2Vy
UHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KIAogdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZygpCkBA
IC0xOTY3LDIzICsxOTkxLDM5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmRTZXJ2aWNlV29y
a2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoKQogCiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0Vf
TE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNz
aW5nIik7CiAgICAgbV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcgPSBmYWxz
ZTsKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOworICAgIHVwZGF0
ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAj
ZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6
ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaXNhYmxlV29y
a2VycyhPcHRpb25TZXQ8V29ya2VyVHlwZT4gd29ya2VyVHlwZSkKIHsKLSAgICBpZiAoIW1fc2Vy
dmljZVdvcmtlckluZm9ybWF0aW9uKQorICAgIEFTU0VSVCghd29ya2VyVHlwZS5pc0VtcHR5KCkp
OworCisgICAgYm9vbCBkaWRDaGFuZ2UgPSBmYWxzZTsKKyAgICBpZiAod29ya2VyVHlwZS5jb250
YWlucyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSAmJiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1h
dGlvbikgeworICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiA9IHsgfTsKKyAgICAg
ICAgZGlkQ2hhbmdlID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMo
V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSAmJiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uKSB7
CisgICAgICAgIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gPSB7IH07CisgICAgICAgIGRpZENo
YW5nZSA9IHRydWU7CisgICAgfQorICAgIGlmICghZGlkQ2hhbmdlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgImRpc2Fi
bGVTZXJ2aWNlV29ya2VyczoiKTsKLSAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiA9IHsg
fTsKKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2VzcywgImRpc2FibGVXb3Jr
ZXJzOiBEaXNhYmxpbmcgd29ya2VycyAoU2hhcmVkV29ya2Vycz0lZCwgU2VydmljZVdvcmtlcnM9
JWQpIiwgd29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpLCB3b3Jr
ZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpKTsKKwogICAgIHVwZGF0
ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiAKKyAgICBpZiAoIWlzUnVubmluZ1dv
cmtlcnMoKSkKKyAgICAgICAgcHJvY2Vzc1Bvb2woKS5yZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2Vz
KCp0aGlzKTsKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBwcm9jZXNzUG9vbCgp
LnJlbW92ZUZyb21TZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCp0aGlzKTsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q2xvc2UgeyB9LCAwKTsKKyAgICBp
ZiAod29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSkKKyAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNsb3NlIHsg
fSwgMCk7CiAjZW5kaWYKKyAgICBpZiAod29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpT
aGFyZWRXb3JrZXIpKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNsb3NlIHsgfSwgMCk7CiAKICAgICBtYXliZVNodXREb3du
KCk7CiB9CkBAIC0yMDA0LDExICsyMDQ0LDEzIEBAIHN0YXRpYyBWZWN0b3I8c3RkOjpwYWlyPFdl
YkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YSwgVVJMPj4gY29udGVudFJ1bGVMaXN0c0ZyCiB9
CiAjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVNlcnZpY2VXb3JrZXJzKGNv
bnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImIHVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXIpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlV29ya2VycyhXb3JrZXJU
eXBlIHdvcmtlclR5cGUsIGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImIHVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpCiB7Ci0gICAgQVNTRVJUKCFtX3NlcnZpY2VX
b3JrZXJJbmZvcm1hdGlvbik7Ci0gICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNlcnZp
Y2VXb3JrZXIsICJlbmFibGVTZXJ2aWNlV29ya2VyczoiKTsKLSAgICBtX3NlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbiA9IFNlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiB7CisgICAgV0VCUFJPQ0VTU1BS
T1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJlbmFibGVXb3JrZXJzOiB3b3JrZXJUeXBl
PSV1Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHdvcmtlclR5cGUpKTsKKyAgICBhdXRvJiB3b3Jr
ZXJJbmZvcm1hdGlvbiA9IHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8g
bV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA6IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOwor
ICAgIEFTU0VSVCghd29ya2VySW5mb3JtYXRpb24pOworCisgICAgd29ya2VySW5mb3JtYXRpb24g
PSBXb3JrZXJJbmZvcm1hdGlvbiB7CiAgICAgICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXI6Omdl
bmVyYXRlKCksCiAgICAgICAgIFBhZ2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLAogICAgICAgICBT
ZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhIHsKQEAgLTIwMjEsOSArMjA2Myw4IEBAIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVTZXJ2aWNlV29ya2Vycyhjb25zdCBVc2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyCiAgICAgICAgIHsgfQogICAgIH07CiAgICAgdXBkYXRlQmFj
a2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKLSNlbmRpZgorCisg
ICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbih3b3JrZXJUeXBlKTsKIH0KIAogdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OmRpZENyZWF0ZVNsZWVwRGlzYWJsZXIoU2xlZXBEaXNhYmxlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiByZWFzb24sIGJvb2wgZGlzcGxheSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggZjUxNGI5OTE2YWQ0
Li4xOTJkNWQyYjZmOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oCkBAIC0xMzYsOSArMTM2LDEzIEBAIHB1YmxpYzoKIAogICAgIGVudW0gY2xhc3MgU2hvdWxk
TGF1bmNoUHJvY2VzcyA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgZW51bSBjbGFzcyBDYXB0aXZl
UG9ydGFsTW9kZSA6IGJvb2wgeyBEaXNhYmxlZCwgRW5hYmxlZCB9OworICAgIGVudW0gY2xhc3Mg
V29ya2VyVHlwZSA6IHVpbnQzMl90IHsKKyAgICAgICAgU2VydmljZVdvcmtlciA9IDEgPDwgMCwK
KyAgICAgICAgU2hhcmVkV29ya2VyID0gMSA8PCAxCisgICAgfTsKIAogICAgIHN0YXRpYyBSZWY8
V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmLCBXZWJzaXRlRGF0YVN0b3Jl
KiwgQ2FwdGl2ZVBvcnRhbE1vZGUsIElzUHJld2FybWVkLCBXZWJDb3JlOjpDcm9zc09yaWdpbk1v
ZGUgPSBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGU6OlNoYXJlZCwgU2hvdWxkTGF1bmNoUHJvY2Vz
cyA9IFNob3VsZExhdW5jaFByb2Nlc3M6Olllcyk7Ci0gICAgc3RhdGljIFJlZjxXZWJQcm9jZXNz
UHJveHk+IGNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKFdlYlByb2Nlc3NQb29sJiwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiwgV2Vic2l0ZURhdGFTdG9yZSYpOworICAgIHN0YXRpYyBSZWY8
V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGVGb3JXb3JrZXJzKFdvcmtlclR5cGUsIFdlYlByb2Nlc3NQ
b29sJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgV2Vic2l0ZURhdGFTdG9yZSYpOwog
CiAgICAgfldlYlByb2Nlc3NQcm94eSgpOwogCkBAIC0xNjEsOCArMTY1LDggQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0SXNJblByb2Nlc3NDYWNoZShib29sLCBXaWxsU2h1dERvd24gPSBXaWxsU2h1
dERvd246Ok5vKTsKICAgICBib29sIGlzSW5Qcm9jZXNzQ2FjaGUoKSBjb25zdCB7IHJldHVybiBt
X2lzSW5Qcm9jZXNzQ2FjaGU7IH0KIAotICAgIHZvaWQgZW5hYmxlU2VydmljZVdvcmtlcnMoY29u
c3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYpOwotICAgIHZvaWQgZGlzYWJsZVNl
cnZpY2VXb3JrZXJzKCk7CisgICAgdm9pZCBlbmFibGVXb3JrZXJzKFdvcmtlclR5cGUsIGNvbnN0
IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImKTsKKyAgICB2b2lkIGRpc2FibGVXb3Jr
ZXJzKE9wdGlvblNldDxXb3JrZXJUeXBlPik7CiAKICAgICBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJz
aXRlRGF0YVN0b3JlKCkgY29uc3QgeyBBU1NFUlQobV93ZWJzaXRlRGF0YVN0b3JlKTsgcmV0dXJu
ICptX3dlYnNpdGVEYXRhU3RvcmU7IH0KICAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vi
c2l0ZURhdGFTdG9yZSYpOwpAQCAtMTk0LDYgKzE5OCw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
aXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSBjb25zdCB7IHJldHVybiAhIW1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uOyB9CiAgICAgYm9vbCBpc1N0YW5kYWxvbmVTZXJ2aWNlV29ya2VyUHJvY2Vz
cygpIGNvbnN0IHsgcmV0dXJuIGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkgJiYgIXBhZ2VDb3Vu
dCgpOyB9CisgICAgYm9vbCBpc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkgY29uc3QgeyByZXR1cm4g
ISFtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uOyB9CisgICAgYm9vbCBpc1N0YW5kYWxvbmVTaGFy
ZWRXb3JrZXJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gaXNSdW5uaW5nU2hhcmVkV29ya2Vycygp
ICYmICFwYWdlQ291bnQoKTsgfQorICAgIGJvb2wgaXNSdW5uaW5nV29ya2VycygpIGNvbnN0IHsg
cmV0dXJuIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gfHwgbV9zZXJ2aWNlV29ya2VySW5mb3Jt
YXRpb247IH0KIAogICAgIGJvb2wgaXNEdW1teVByb2Nlc3NQcm94eSgpIGNvbnN0OwogCkBAIC0z
NTksMTIgKzM2NiwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZUF1ZGlibGVNZWRpYUFz
c2VydGlvbnMoKTsKIAorICAgIHZvaWQgc2V0V29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYp
OworICAgIHZvaWQgdXBkYXRlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJl
bmNlc1N0b3JlJik7CisgICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0KGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCB1cGRhdGVXb3JrZXJQcm9j
ZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGUpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2Vz
U3RvcmUmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQ
YWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNl
dFNlcnZpY2VXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCB1cGRhdGVT
ZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7
Ci0gICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyUGFnZVByb3h5KFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgcGFnZVByb3h5SUQpIHsgcmV0dXJuIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uICYmIG1f
c2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZVByb3h5SUQgPT0gcGFn
ZVByb3h5SUQ7IH0KLSAgICB2b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9u
KCk7CisgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyUGFnZVByb3h5KFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgcGFnZVByb3h5SUQpIHsgcmV0dXJuIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uICYm
IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT53b3JrZXJQYWdlUHJveHlJRCA9PSBwYWdlUHJv
eHlJRDsgfQogICAgIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQ
cm9jZXNzUHJveHkmKTsKICAgICB2b2lkIHVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJv
Y2VzcyhXZWJQcm9jZXNzUHJveHkmKTsKICAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJGb3JlZ3Jv
dW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3Q7CkBAIC02NDgsMTQgKzY1NiwxNSBAQCBwcml2
YXRlOgogI2VuZGlmCiAgICAgUmVmUHRyPExvZ2dlcj4gbV9sb2dnZXI7CiAKLSAgICBzdHJ1Y3Qg
U2VydmljZVdvcmtlckluZm9ybWF0aW9uIHsKLSAgICAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VyUGFnZVByb3h5SUQ7Ci0gICAgICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJQYWdlSUQ7CisgICAgc3RydWN0IFdvcmtlckluZm9ybWF0aW9uIHsK
KyAgICAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3b3JrZXJQYWdlUHJveHlJRDsKKyAgICAg
ICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd29ya2VyUGFnZUlEOwogICAgICAgICBTZXJ2aWNl
V29ya2VySW5pdGlhbGl6YXRpb25EYXRhIGluaXRpYWxpemF0aW9uRGF0YTsKICAgICAgICAgUHJv
Y2Vzc1Rocm90dGxlcjo6QWN0aXZpdHlWYXJpYW50IGFjdGl2aXR5OwogICAgICAgICBXZWFrSGFz
aFNldDxXZWJQcm9jZXNzUHJveHk+IGNsaWVudFByb2Nlc3NlczsKICAgICB9OwotICAgIHN0ZDo6
b3B0aW9uYWw8U2VydmljZVdvcmtlckluZm9ybWF0aW9uPiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1h
dGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdvcmtlckluZm9ybWF0aW9uPiBtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdvcmtlckluZm9ybWF0aW9uPiBtX3No
YXJlZFdvcmtlckluZm9ybWF0aW9uOwogICAgIGJvb2wgbV9oYXNTZXJ2aWNlV29ya2VyQmFja2dy
b3VuZFByb2Nlc3NpbmcgeyBmYWxzZSB9OwogCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpTbGVlcERp
c2FibGVySWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNsZWVwRGlzYWJsZXI+
PiBtX3NsZWVwRGlzYWJsZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggYmI5YmUyYzBmZjE1Li43ZTI2ZDg3NTIxZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODgxLDYg
Kzg4MSw3IEBACiAJCTQ2MTRGMTMyMjVERUQ4NzUwMDcwMDZFNyAvKiBHUFVQcm9jZXNzQ29ubmVj
dGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2QUM1MzI0MjVERUQ4MUUwMDNCNTdFQyAvKiBHUFVQcm9jZXNzQ29ubmVjdGlvblBh
cmFtZXRlcnMuaCAqLzsgfTsKIAkJNDYxQ0NDQTUyMzE0ODVBNzAwQjY1OUI5IC8qIFVJUmVtb3Rl
T2JqZWN0UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2MzIzNjg1MjMxNDgzM0YwMEE0OEZBNyAvKiBVSVJlbW90ZU9iamVjdFJlZ2lzdHJ5
LmggKi87IH07CiAJCTQ2MUNDQ0E2MjMxNDg1QUEwMEI2NTlCOSAvKiBXZWJSZW1vdGVPYmplY3RS
ZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDYzMjM2ODMyMzE0ODFFRjAwQTQ4RkE3IC8qIFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggKi87
IH07CisJCTQ2MUUxQkYyMjc5QTAxMTYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2MUUxQkVGMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCAqLzsgfTsKIAkJNDYzRkQ0ODAxRUI5NDU5NjAwQTI5ODJD
IC8qIFdLUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjNGRDQ3RjFFQjk0NTg0MDBBMjk4MkMgLyogV0tQcm9j
ZXNzVGVybWluYXRpb25SZWFzb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0NjNGRDQ4MjFFQjk0RUMwMDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1p
bmF0aW9uUmVhc29uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NjNGRDQ4MTFFQjk0RUFEMDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29u
LmggKi87IH07CiAJCTQ2NTlGMjVGMjc1RkY2QjIwMEJCQjM2OSAvKiBDYXB0aXZlUG9ydGFsTW9k
ZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NjU5RjI1RTI3NUZGNkIyMDBCQkIzNjkgLyogQ2FwdGl2ZVBvcnRhbE1vZGVPYnNlcnZlci5o
ICovOyB9OwpAQCAtODkwLDYgKzg5MSw4IEBACiAJCTQ2NzFGRjFGMjMyMTdFRkYwMDFCNjRDNyAv
KiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDY3MUZGMUQyMzIxN0VGRjAwMUI2NEM3IC8qIFdlYlJlc291cmNl
TG9hZE9ic2VydmVyLmggKi87IH07CiAJCTQ2N0U0M0U4MjI0M0ZGN0QwMEIxMzkyNCAvKiBXZWJQ
cm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDY3RTQzRTcyMjQzRkY2RDAwQjEzOTI0IC8qIFdlYlByb2Nlc3NE
YXRhU3RvcmVQYXJhbWV0ZXJzLmggKi87IH07CiAJCTQ2ODA5QTdDMjNEOTIyNUUwMEMyOTdEMCAv
KiBXZWJDb29raWVDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDY4MDlBN0EyM0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggKi87
IH07CisJCTQ2OTQzREQwMjc2M0Y4M0EwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJQcm92aWRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5NDNE
Q0YyNzYzRjgzNTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmggKi87IH07CisJ
CTQ2OTQzREQxMjc2M0Y4M0YwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0
M0RDRDI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5o
ICovOyB9OwogCQk0NkEyQjYwOTFFNTY3NkE2MDBDM0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NS
ZXNwb25zaXZlbmVzc1RpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkEyQjYwNzFFNTY3NUEyMDBDM0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NS
ZXNwb25zaXZlbmVzc1RpbWVyLmggKi87IH07CiAJCTQ2QjA1MjQ3MjI2NjhEODUwMDI2NUI5NyAv
KiBXZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjA1MjQ0MjI2NjhEMjMw
MDI2NUI5NyAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIu
aCAqLzsgfTsKIAkJNDZCRUI2RDcyMkZCOUJENzAwMjY5ODY3IC8qIFN0b3JhZ2VBcmVhLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkJFQjZENTIyRkI5
QkQ2MDAyNjk4NjcgLyogU3RvcmFnZUFyZWEuaCAqLzsgfTsKQEAgLTg5NywxMCArOTAwLDEzIEBA
CiAJCTQ2QkVCNkRGMjJGQkIxNkIwMDI2OTg2NyAvKiBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRUI2REQy
MkZCQjE2QjAwMjY5ODY3IC8qIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmggKi87IH07CiAJCTQ2
QkVCNkUzMjJGQkIyMUEwMDI2OTg2NyAvKiBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkVCNkUx
MjJGQkIyMUEwMDI2OTg2NyAvKiBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaCAqLzsg
fTsKIAkJNDZDMzkyMjkyMzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzM5MjI4
MjMxNkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmggKi87IH07CisJCTQ2
QzkxNkFBMjc5OUQwQTIwMDFBNEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzkxNkE5Mjc5OUQwOUQw
MDFBNEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCAqLzsgfTsKIAkJNDZDRTNCMTEyM0Q4
Qzg0OTAwMTZBOTZBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDRTNCMTAyM0Q4QzgzRDAwMTZBOTZB
IC8qIFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oICovOyB9OworCQk0NkQ0OEZDRTI3OTlEN0Ux
MDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZENDhGQ0QyNzk5
RDdERTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aCAqLzsgfTsKIAkJNDZERjA2M0MxRjM5MDVGODAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
ci5oICovOyB9OwogCQk0NkVFMjg0OTI2OUUwNEFDMDBERDQ4QUIgLyogV2ViQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NkVFMjg0ODI2OUUwNDlCMDBERDQ4QUIgLyogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lz
dHJ5LmggKi87IH07CiAJCTQ2RUUyODREMjY5RTA1MjUwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRj
YXN0Q2hhbm5lbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkVFMjg0QzI2OUUwNTE3MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeS5oICovOyB9OworCQk0NkVFM0U4QjI3NjNGRDJGMDA2MEM3MEYgLyogV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4Mzg2NjcyNzYzRkFCMTAwQ0Y5MTgyIC8qIFdlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCAqLzsgfTsKIAkJNDZGMzhFOEMyNDE2RTY3MzAwNTkz
NzVBIC8qIFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkYzOEU4QjI0MTZFNjZEMDA1OTM3NUEgLyogUnVubmlu
Z0JvYXJkU2VydmljZXNTUEkuaCAqLzsgfTsKIAkJNDZGOUIyNjMyMzUyNkVGMzAwNkZFNUZBIC8q
IFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZGOUIyNjIyMzUyNkVEMDAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3
YXJkQ2FjaGVFbnRyeS5oICovOyB9OwogCQk0OTMxMDJCRDI2ODNGM0QwMDAyQkI4ODUgLyogQXBw
UHJpdmFjeVJlcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDkzMTAyQkMyNjgzRjNBNTAwMkJCODg1IC8qIEFwcFByaXZhY3lSZXBvcnQuaCAqLzsg
fTsKQEAgLTEyNzQsNiArMTI4MCw3IEBACiAJCTZCRTk2OUMxMUU1NEQ0NTIwMDhCNzQ4MyAvKiBj
b3JlUHJlZGljdGlvbl9tb2RlbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkJFOTY5QzAxRTU0RDQ1MjAwOEI3NDgzIC8qIGNvcmVQcmVkaWN0aW9uX21v
ZGVsICovOyB9OwogCQk2QkU5NjlDQjFFNTRENENGMDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0NsYXNzaWZpZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNkJFOTY5QzkxRTU0RDRDRjAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuaCAqLzsgfTsKIAkJNkJFOTY5Q0QxRTU0RTA1NDAwOEI3
NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkU5NjlDQzFFNTRFMDU0MDA4Qjc0ODMg
LyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuaCAqLzsgfTsKKwkJNkNBRUNCNjYy
NzQ2NUFFNDAwQUI3OEQwIC8qIFVuaWZpZWRTb3VyY2UxMTYuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkNBRUNCNUUyNzQ2NUFFMzAwQUI3OEQwIC8q
IFVuaWZpZWRTb3VyY2UxMTYuY3BwICovOyB9OwogCQk2RUU4NDlDODEzNjhEOTM5MDAzOEQ0ODEg
LyogV0tJbnNwZWN0b3JQcml2YXRlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2RUU4NDlDNjEzNjhEOTJEMDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQ
cml2YXRlTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNzExNzI1QTkyMjhENTY0MzAwMDE4NTE0IC8qIFdlYnNpdGVMZWdhY3lPdmVyZmxvd1Nj
cm9sbGluZ1RvdWNoUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MTE3MjVBODIyOEQ1NjNBMDAwMTg1MTQgLyogV2Vic2l0ZUxlZ2FjeU92ZXJm
bG93U2Nyb2xsaW5nVG91Y2hQb2xpY3kuaCAqLzsgfTsKIAkJNzEzNEEzREEyNjAzQjkyNTAwNjI0
QkQzIC8qIFdLTW9kZWxJbnRlcmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTM0QTNEOTI2MDNCODBFMDA2MjRC
RDMgLyogV0tNb2RlbEludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaCAqLzsgfTsKQEAgLTEz
NTEsNiArMTM1OCw3IEBACiAJCTdDOUQxNTM3MTg0NTg0REEwMDlEMzkxOCAvKiBXS0Jyb3dzaW5n
Q29udGV4dEdyb3VwSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDOUQxNTM2MTg0NTg0REEwMDlEMzkxOCAvKiBXS0Jyb3dzaW5nQ29udGV4
dEdyb3VwSW50ZXJuYWwuaCAqLzsgfTsKIAkJN0NBMjU0RUIxODI5OTNDRTAwRkM4QTQxIC8qIFdL
QnJvd3NpbmdDb250ZXh0UG9saWN5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQTI1NEVBMTgyOTkzQ0UwMEZDOEE0MSAvKiBXS0Jyb3dz
aW5nQ29udGV4dFBvbGljeURlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0NBMzc5M0UxQUMzNzhCMzAwNzlEQzM3IC8qIF9XS1VzZXJD
b250ZW50RXh0ZW5zaW9uU3RvcmVQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0EzNzkzRDFBQzM3OEIzMDA3OURDMzcgLyogX1dLVXNlckNv
bnRlbnRFeHRlbnNpb25TdG9yZVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk3Q0FFQ0I2NjI3NDY1QUU0MDBBQjc4RDAgLyogVW5pZmll
ZFNvdXJjZTExNy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3Q0FFQ0I1RTI3NDY1QUUzMDBBQjc4RDAgLyogVW5pZmllZFNvdXJjZTExNy5jcHAgKi87
IH07CiAJCTdDQjEwMEYxMUZBMzg1OEEwMDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNlc0tleXMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NCMTAwRUUx
RkEyRDc0QTAwMTcyOUVFIC8qIFdlYlByZWZlcmVuY2VzS2V5cy5jcHAgKi87IH07CiAJCTdDQjEw
MEYyMUZBMzg1OEUwMDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0RFNzNBMzFGOURBQjY1
MDAzOTAzMTIgLyogV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oICovOyB9OwogCQk3Q0IxMDBG
MzFGQTM4NThFMDAxNzI5RUUgLyogV2ViUHJlZmVyZW5jZXNLZXlzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0IxMDBFRjFGQTJENzRCMDAxNzI5RUUg
LyogV2ViUHJlZmVyZW5jZXNLZXlzLmggKi87IH07CkBAIC00MjE4LDYgKzQyMjYsOSBAQAogCQk0
NjA4ODlGRjI2MUZBOEE5MDBFMjUwMEQgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9u
UGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRp
b25QYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MEY0ODhEMUY5
OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNl
aXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291
cmNlcy9XZWJLaXQvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk0NjBGNDg4RTFGOTk2
RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbk1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OworCQk0NjFFMUJFQzI3OUEwMTBFMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MUUxQkVGMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MUUxQkYwMjc5QTAxMEYwMDZBRjUzQiAv
KiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjIxMDdENzFG
MzhEQkQzMDBERDc4MTAgLyogUGluZ0xvYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUGluZ0xvYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjMyMzY4MzIzMTQ4MUVGMDBBNDhGQTcgLyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDYzMjM2ODQyMzE0ODI1QzAwQTQ4RkE3IC8qIFdlYlJlbW90ZU9iamVjdFJl
Z2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyNDUsOCArNDI1NiwxNSBAQAogCQk0
NjgwOUE3QjIzRDkyMjUzMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29va2llQ2FjaGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NjgzNTY5QTIxRTgxQ0M3MDA2RTI3QTMgLyogUHJvdmlzaW9u
YWxQYWdlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvdmlzaW9u
YWxQYWdlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzU2OUIyMUU4
MUNDNzAwNkUyN0EzIC8qIFByb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4Mzg2NjcyNzYzRkFCMTAwQ0Y5MTgyIC8qIFdlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjgzODY2
ODI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OUI5MEYyNzU2RDE0MzAwMDdDNjUxIC8q
IFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVXZWJMb2NrUmVn
aXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OUI5MTAyNzU2RDE0MzAw
MDdDNjUxIC8qIFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVXZWJMb2NrUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
Njk0M0RDQjI3NjNGODM0MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RDQzI3NjNGODM1MDA0
QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0Njk0M0RDRDI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzRENFMjc2M0Y4MzUwMDRCNjEwRSAv
KiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0Njk0M0RDRjI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyUHJv
dmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5REU4MDIyNzNFQ0M1RDAwOTMwMjc2IC8qIFByb2Nl
c3NMYXVuY2hlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUHJvY2Vzc0xhdW5jaGVyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2QTJCNjA2MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVu
ZXNzVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFja2dy
b3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDZBMkI2MDcxRTU2NzVBMjAwQzNERURBIC8qIEJhY2tncm91bmRQcm9jZXNzUmVz
cG9uc2l2ZW5lc3NUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYWNr
Z3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTQyNjIsNyArNDI4MCwxMSBAQAogCQk0NkJFQjZFMTIyRkJCMjFBMDAyNjk4Njcg
LyogVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NkJFQjZFMjIyRkJCMjFBMDAyNjk4NjcgLyogVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzM5MjI4MjMxNkVDNEQwMDhF
RUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZDOTE2QTgy
Nzk5RDA5RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0NkM5MTZBOTI3OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NkNFM0IxMDIzRDhDODNEMDAxNkE5NkEgLyogV2ViQmFja0Zvcndh
cmRMaXN0Q291bnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tG
b3J3YXJkTGlzdENvdW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkQ0OEZD
QzI3OTlEN0REMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZENDhGQ0Qy
Nzk5RDdERTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRGMDYzOTFGMzkwNUU1MDAx
OTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2REYwNjNBMUYzOTA1RTUwMDE5ODBCQiAvKiBO
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2RTk3NjBBMjc1N0Y2QzkwMEFDREQzNyAvKiBXZWJCcm9hZGNhc3RDaGFubmVs
UmVnaXN0cnkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViQnJvYWRjYXN0
Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNDI3Miw2ICs0Mjk0LDcgQEAKIAkJNDZFRTI4NEEyNjlFMDUxNzAwREQ0OEFCIC8qIE5ldHdv
cmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZFRTI4NEIyNjlFMDUxNzAwREQ0OEFCIC8qIE5ldHdv
cmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RUUyODRDMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3Jr
QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDZFRTNFOEEyNzYzRkQyQTAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtlclNl
cnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZGMzhF
OEIyNDE2RTY2RDAwNTkzNzVBIC8qIFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RjlCMjYyMjM1MjZFRDAwMDZGRTVGQSAvKiBXZWJC
YWNrRm9yd2FyZENhY2hlRW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ5MzEwMkJDMjY4M0YzQTUwMDJCQjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFwcFByaXZhY3lSZXBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTQ5OTAsNiArNTAxMyw3IEBACiAJCTZCRTk2OUM4MUU1NEQ0Q0YwMDhCNzQ4MyAvKiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QkU5NjlDOTFFNTRENENGMDA4Qjc0ODMg
LyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29h
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCRTk2OUNDMUU1NEUwNTQwMDhCNzQ4
MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2Q0FFQ0I1RTI3NDY1QUUzMDBBQjc4RDAgLyogVW5p
ZmllZFNvdXJjZTExNi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTE2LmNw
cDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9XZWJLaXQvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRT
b3VyY2UxMTYuY3BwIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNkQ4
QTkxQTUxMUYwRUZEMTAwREQwMUZFIC8qIGNvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgbmFtZSA9IGNvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluOyBwYXRoID0gV2Vi
UHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNkVFODQ5QzYxMzY4RDkyRDAwMzhENDgxIC8qIFdLSW5zcGVjdG9yUHJpdmF0ZU1h
Yy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0luc3BlY3RvclByaXZhdGVN
YWMuaDsgcGF0aCA9IG1hYy9XS0luc3BlY3RvclByaXZhdGVNYWMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzExNzI1QTgyMjhENTYzQTAwMDE4NTE0IC8qIFdlYnNpdGVMZWdhY3lP
dmVyZmxvd1Njcm9sbGluZ1RvdWNoUG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYnNpdGVMZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoUG9saWN5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MTU0LDYgKzUxNzgsNyBAQAogCQk3QzlEMTUzNjE4
NDU4NERBMDA5RDM5MTggLyogV0tCcm93c2luZ0NvbnRleHRHcm91cEludGVybmFsLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnJvd3NpbmdDb250ZXh0R3JvdXBJbnRlcm5h
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0EyNTRFQTE4Mjk5M0NFMDBGQzhB
NDEgLyogV0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXS0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVnYXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQTM3OTNEMUFDMzc4QjMwMDc5REMzNyAvKiBfV0tV
c2VyQ29udGVudEV4dGVuc2lvblN0b3JlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUHJpdmF0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3Q0FFQ0I1RTI3NDY1QUUzMDBBQjc4RDAgLyogVW5pZmll
ZFNvdXJjZTExNy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTE3LmNwcDsg
cGF0aCA9ICJEZXJpdmVkU291cmNlcy9XZWJLaXQvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3Vy
Y2UxMTcuY3BwIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJN0NCMTAw
RUUxRkEyRDc0QTAwMTcyOUVFIC8qIFdlYlByZWZlcmVuY2VzS2V5cy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBXZWJQcmVmZXJlbmNlc0tleXMuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0L1dlYlByZWZlcmVuY2VzS2V5cy5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTdDQjEwMEVGMUZBMkQ3NEIwMDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNlc0tleXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gV2ViUHJlZmVyZW5jZXNLZXlzLmg7IHBhdGggPSBEZXJpdmVkU291
cmNlcy9XZWJLaXQvV2ViUHJlZmVyZW5jZXNLZXlzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCTdDQjEwMEYwMUZBMkQ3ODQwMDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNl
c1N0b3JlRGVmYXVsdHNNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViUHJlZmVyZW5jZXNT
dG9yZURlZmF1bHRzTWFwLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJQcmVm
ZXJlbmNlc1N0b3JlRGVmYXVsdHNNYXAuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwpAQCAtOTI3Nyw2ICs5MzAyLDIwIEBACiAJCQlwYXRoID0gY29jb2E7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk0NjgzODY2NTI3NjNGQTFCMDBDRjkxODIgLyog
U2hhcmVkV29ya2VyICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQk0NkQ0OEZDQzI3OTlEN0REMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5jcHAgKi8sCisJCQkJNDZENDhGQ0QyNzk5RDdERTAwN0QyMDE0IC8q
IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCAqLywKKwkJCQk0NkM5
MTZBODI3OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcCAqLywKKwkJ
CQk0NkM5MTZBOTI3OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggKi8s
CisJCQkJNDZFRTNFOEEyNzYzRkQyQTAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCisJCQkJNDY4Mzg2NjcyNzYzRkFCMTAwQ0Y5MTgyIC8q
IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCAqLywKKwkJCQk0NjgzODY2ODI3NjNG
QUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAgKi8sCisJ
CQkpOworCQkJcGF0aCA9IFNoYXJlZFdvcmtlcjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CisJCX07CiAJCTQ2OURFODAxMjczRUNDNUQwMDkzMDI3NiAvKiBjb2NvYSAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC05MzI4LDYgKzkzNjcsNyBAQAogCQk1
MTBDQzdEQTE2MTM4RTAxMDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3MgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQ2ODM4NjY1Mjc2M0ZBMUIwMENGOTE4
MiAvKiBTaGFyZWRXb3JrZXIgKi8sCiAJCQkJRTQ4OUQyODIxQTBBMkJFODAwNzhDMDZBIC8qIGNh
Y2hlICovLAogCQkJCTdBODQzQTFEMjFFNDFGRDkwMERFRjY2MyAvKiBDbGFzc2lmaWVyICovLAog
CQkJCTdFQzRGMEY4MThFNEE5MjIwMDgwNTZBRiAvKiBjb2NvYSAqLywKQEAgLTk0MzYsNiArOTQ3
NiwxNCBAQAogCQk1MTE4RTk5ODFGMjk1MjU5MDAzRUY5RjUgLyogU3RvcmFnZSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDYxRTFCRUMyNzlBMDEwRTAw
NkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgKi8s
CisJCQkJNDYxRTFCRUYyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5oICovLAorCQkJCTQ2MUUxQkYwMjc5QTAxMEYwMDZBRjUzQiAvKiBX
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCisJ
CQkJNDY5NDNEQ0UyNzYzRjgzNTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24uY3BwICovLAorCQkJCTQ2OTQzRENEMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uLmggKi8sCisJCQkJNDY5NDNEQ0IyNzYzRjgzNDAwNEI2MTBF
IC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCisJCQkJ
NDY5NDNEQ0MyNzYzRjgzNTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmNwcCAq
LywKKwkJCQk0Njk0M0RDRjI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyUHJvdmlk
ZXIuaCAqLywKIAkJCQk0MTMxRjNFMDFGOTg3MTJDMDA1OTk5NUEgLyogV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5jcHAgKi8sCiAJCQkJNDE5QUNGOUIxRjk4MUQyNjAwOUYxQTgzIC8q
IFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCAqLywKIAkJCQk1MUJFQjYyOTFGM0E1
QUNEMDA1MDI5QjkgLyogV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcCAqLywKQEAgLTEyNzYx
LDYgKzEyODA5LDcgQEAKIAkJCQk0OUZCRjAwMDIzOUIxRjc1MDBCRDAzMkYgLyogX1dLUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RkJGMDA5
MjM5RjA4RTAwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUlu
dGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzYzMTFGRDFBM0ZCNUY3MDA1QTJFNTEgLyog
X1dLU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2MUUx
QkYyMjc5QTAxMTYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTM3NjMxMUZFMUEzRkI2MDAwMDVBMkU1MSAvKiBf
V0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTAwMkQ0NDE5NkIzMzg5MDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTAwMkQ0MzE5NkIzMzcwMDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlSW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAtMTI5MjUsNiArMTI5NzQsNyBAQAogCQkJCUUxNzA4
NzZDMTZENkNBNjkwMEY5OTIyNiAvKiBCbG9iUmVnaXN0cnlQcm94eS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNEY2MDE0MzIxNTVDNUFBMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9uc2VNYXAuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBNTcwNTExMUJFNDEwRTYwMDg3NEFGMSAvKiBCbG9ja1NQSS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDZDOTE2QUEyNzk5RDBBMjAwMUE0RTdDIC8qIFdlYlNoYXJl
ZFdvcmtlclNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzMDY1RkExMjU5MzQ0RTAwRTcx
Mjc4IC8qIENhY2hlTW9kZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxODk3RUQ4MUY0MTVEOEEw
MDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRkFC
RDJBMUY0REUwMDEwMDZBNkM5NyAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMzM5MCw2ICsxMzQ0MCw3IEBACiAJCQkJMUFDMTMzNjgxODU2NUI1NzAwRjNF
QzA1IC8qIFVzZXJEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDQ5MUIwODFFNzBEMDVGMDAw
MDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
NDkxQjBFMUU3MzJFNEQwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2Vz
LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkVFM0U4QjI3NjNGRDJGMDA2MEM3MEYgLyogV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q0OTFCMTMx
RTczNDgyMTAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUNENDkxQjE4MUU3MzUyNTUwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJl
TWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3Mjk3RjlGMUMxN0JC
RUEwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMzQ3Niw2ICsxMzUyNyw3IEBACiAJCQkJMzMwOTM0NEExMzE1QjkyMjAwOTdBN0JD
IC8qIFdlYkNvb2tpZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzFERDdCMjExNERDMzk2MDA1QURBRjMgLyogV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTJGNTg5QjEyQTg4Mzg4MDA2Mjk1MzAgLyogV2ViQ3JlZGVudGlhbC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDY5NDNERDAyNzYzRjgzQTAwNEI2MTBFIC8qIFdlYlNoYXJl
ZFdvcmtlclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE4M0Y2RDFBNUI2M0ZGMDAw
MjZFQzYgLyogV2ViRGF0YWJhc2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTUyQ0Y1
NTIyMEEzNUMzQTAwREFEQTI3IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTU2OEI5MUYyMEEzQUIyRjAwRTNDODU2IC8qIFdlYkRhdGFMaXN0U3Vn
Z2VzdGlvbnNEcm9wZG93bi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzUxMCw2ICsxMzU2Miw3IEBA
CiAJCQkJQkMwMzJEN0YxMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkZyYW1lTG9hZGVyQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzkxRjJDQjEyMUI2N0FEMDBFQkY3RTggLyogV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCOUY2QTAxMTIzQTg0QjAw
QTEzN0UwIC8qIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNDY5NDNERDEyNzYzRjgzRjAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOUIzOEExMTBGNTM4QkUwMDQ0M0ExNSAvKiBX
ZWJGcmFtZVByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVCRTFBQjFENTU1QUEwMDBERDdD
NjggLyogV2ViR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1QkUxNzkxRDUzRkU4RjAw
REQ3QzY4IC8qIFdlYkdhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzYzNiw2
ICsxMzY4OSw3IEBACiAJCQkJMUE0ODMyRDcxQTlDREY5NjAwOEI0REZFIC8qIFdlYnNpdGVEYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTQ4MzJEMTFBOUJEQzJGMDA4QjRERkUgLyogV2Vic2l0
ZURhdGFSZWNvcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTNDMkFBMUEzMjU3MzAwMDRFOEM3
MCAvKiBXZWJzaXRlRGF0YVN0b3JlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkQ0OEZDRTI3OTlE
N0UxMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTExRjdENDExRUIxQkNGNTAwRTQ3QjgzIC8qIFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTE3MjVBOTIyOEQ1NjQz
MDAwMTg1MTQgLyogV2Vic2l0ZUxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3kuaCBp
biBIZWFkZXJzICovLAogCQkJCUY0Q0IwOUU1MjI1RDVBMDkwMDg5MTQ4NyAvKiBXZWJzaXRlTWVk
aWFTb3VyY2VQb2xpY3kuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAK
aW5kZXggOGQzYjU3YmQxOGRjLi5iYjM1NDdmNDZhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmNwcApAQCAtNTcsNiArNTcsMTAgQEAKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJX
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUg
IldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRDaGFu
bmVsLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViU29ja2V0U3RyZWFtLmgiCkBAIC0xNzMsNiArMTc3LDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQCiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKKyAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBzaGFyZWRXb3JrZXJD
b25uZWN0aW9uKCkuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgp
ID09IE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBBU1NFUlQoU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSk7CisgICAgICAgIGlmIChhdXRvKiBj
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24gPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2lu
Z2xldG9uKCkuY29ubmVjdGlvbigpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uJj4oKmNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bikuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKICAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGlu
YXRvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CkBAIC0zMDcsNiArMzIxLDEzIEBAIFdlYlNX
Q2xpZW50Q29ubmVjdGlvbiYgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpzZXJ2aWNlV29ya2Vy
Q29ubmVjdGlvbigpCiB9CiAjZW5kaWYKIAorV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
biYgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCkKK3sK
KyAgICBpZiAoIW1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbikKKyAgICAgICAgbV9zaGFyZWRXb3Jr
ZXJDb25uZWN0aW9uID0gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6Y3JlYXRlKCk7
CisgICAgcmV0dXJuICptX3NoYXJlZFdvcmtlckNvbm5lY3Rpb247Cit9CisKIHZvaWQgTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjptZXNzYWdlc0F2YWlsYWJsZUZvclBvcnQoY29uc3QgV2ViQ29y
ZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBtZXNzYWdlUG9ydElkZW50aWZpZXIpCiB7CiAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0KG1lc3NhZ2VQ
b3J0SWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IGQ2MmRmZTRkZjVhYS4u
NWYwNTA0MDlhYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtNDgsNiArNDgsNyBAQCBl
bnVtIGNsYXNzIEhUVFBDb29raWVBY2NlcHRQb2xpY3kgOiB1aW50OF90OwogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjsKK2NsYXNzIFdlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb247CiBjbGFzcyBXZWJTV0NsaWVudENvbm5lY3Rpb247CiAK
IGNsYXNzIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbj4sIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKQEAgLTcwLDYg
KzcxLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBXZWJTV0Ns
aWVudENvbm5lY3Rpb24mIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCk7CiAjZW5kaWYKKyAgICBX
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uJiBzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7
CiAKICNpZiBIQVZFKEFVRElUX1RPS0VOKQogICAgIHZvaWQgc2V0TmV0d29ya1Byb2Nlc3NBdWRp
dFRva2VuKHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbikgeyBtX25ldHdv
cmtQcm9jZXNzQXVkaXRUb2tlbiA9IGF1ZGl0VG9rZW47IH0KQEAgLTEyMyw2ICsxMjUsNyBAQCBw
cml2YXRlOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBSZWZQdHI8V2ViU1dDbGll
bnRDb25uZWN0aW9uPiBtX3N3Q29ubmVjdGlvbjsKICNlbmRpZgorICAgIFJlZlB0cjxXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uPiBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb247CiAgICAg
V2ViQ29yZTo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSBtX2Nvb2tpZUFjY2VwdFBvbGljeTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYmZlMGJiNjg2NTc2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDExOCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxl
ci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRW1wdHlDbGllbnRzLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVk
V29ya2VyVGhyZWFkUHJveHkuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlckZldGNoUmVzdWx0
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8
SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQYWdlR3JvdXBJZGVudGlmaWVy
IHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHBy
ZWZlcmVuY2VzU3RvcmUsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFs
aXphdGlvbkRhdGEpCisgICAgOiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUo
Y29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpKQorICAgICwgbV9yZWdpc3RyYWJsZURvbWFpbihX
VEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAsIG1fcGFnZUdyb3VwSUQocGFnZUdyb3Vw
SUQpCisgICAgLCBtX3dlYlBhZ2VQcm94eUlEKHdlYlBhZ2VQcm94eUlEKQorICAgICwgbV9wYWdl
SUQocGFnZUlEKQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICwgbV91c2VyQWdlbnQoc3RhbmRh
cmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKHsgfSkpCisjZWxzZQorICAgICwgbV91c2Vy
QWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkKKyNlbmRpZgorICAgICwgbV91c2VyQ29udGVudENv
bnRyb2xsZXIoV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpnZXRPckNyZWF0ZShpbml0aWFsaXph
dGlvbkRhdGEudXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikpCit7CisjaWYgRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkQ29u
dGVudFJ1bGVMaXN0cyhXVEZNb3ZlKGluaXRpYWxpemF0aW9uRGF0YS5jb250ZW50UnVsZUxpc3Rz
KSk7CisjZW5kaWYKKworICAgIHVwZGF0ZVByZWZlcmVuY2VzU3RvcmUocHJlZmVyZW5jZXNTdG9y
ZSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZGlzYWJsZVRlcm1pbmF0aW9uKCk7Cit9
CisKK1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6fldlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbigpID0gZGVmYXVsdDsKKwordm9pZCBXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmVzdGFibGlzaENvbm5lY3Rpb24oQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fY29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uIHsgbV93ZWJQYWdlUHJveHlJRCwgbV9yZWdpc3RyYWJsZURvbWFpbiB9LCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgMCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29y
ZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OlBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdCB7IHNoYXJlZFdvcmtlcklkZW50aWZpZXIs
IGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwgfSwgMCk7
Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp1cGRh
dGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQorewor
ICAgIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzR2VuZXJhdGVkKHN0b3JlKTsKKyAgICBtX3By
ZWZlcmVuY2VzU3RvcmUgPSBzdG9yZTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OmxhdW5jaFNoYXJlZFdvcmtlcihXZWJDb3JlOjpDbGllbnRPcmln
aW4mJiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2Vy
SWRlbnRpZmllciwgVVJMJiYgdXJsLCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0
aW9ucywgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJiB3b3JrZXJGZXRjaFJlc3VsdCkKK3sK
KyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OmxhdW5jaFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmll
cj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgYXV0
byBwYWdlQ29uZmlndXJhdGlvbiA9IHBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cyhX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXNzaW9uSUQoKSk7CisKKyAgICBwYWdlQ29uZmlndXJh
dGlvbi5kYXRhYmFzZVByb3ZpZGVyID0gV2ViRGF0YWJhc2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUo
bV9wYWdlR3JvdXBJRCk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uc29ja2V0UHJvdmlkZXIgPSBX
ZWJTb2NrZXRQcm92aWRlcjo6Y3JlYXRlKG1fd2ViUGFnZVByb3h5SUQpOworICAgIHBhZ2VDb25m
aWd1cmF0aW9uLmJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSgpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLndl
YkxvY2tSZWdpc3RyeSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvY2tSZWdpc3RyeSgp
OworICAgIHBhZ2VDb25maWd1cmF0aW9uLnVzZXJDb250ZW50UHJvdmlkZXIgPSBtX3VzZXJDb250
ZW50Q29udHJvbGxlcjsKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICBwYWdlQ29uZmlndXJhdGlv
bi5saWJXZWJSVENQcm92aWRlciA9IG1ha2VVbmlxdWVSZWY8U2VydmljZVdvcmtlckxpYldlYlJU
Q1Byb3ZpZGVyPigpOworI2VuZGlmCisKKyAgICAvLyBGSVhNRTogU2VydmljZVdvcmtlckZyYW1l
TG9hZGVyQ2xpZW50IHNob3VsZCBiZSByZW5hbWVkIGlmIHVzZWQgYnkgU2hhcmVkV29ya2Vycy4K
KyAgICBwYWdlQ29uZmlndXJhdGlvbi5sb2FkZXJDbGllbnRGb3JNYWluRnJhbWUgPSBtYWtlVW5p
cXVlUmVmPFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudD4obV93ZWJQYWdlUHJveHlJRCwg
bV9wYWdlSUQsIEZyYW1lSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgbV91c2VyQWdlbnQpOworCisg
ICAgYXV0byBwYWdlID0gbWFrZVVuaXF1ZVJlZjxQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0
aW9uKSk7CisgICAgaWYgKG1fcHJlZmVyZW5jZXNTdG9yZSkgeworICAgICAgICBXZWJQYWdlOjp1
cGRhdGVTZXR0aW5nc0dlbmVyYXRlZCgqbV9wcmVmZXJlbmNlc1N0b3JlLCBwYWdlLT5zZXR0aW5n
cygpKTsKKyAgICAgICAgcGFnZS0+c2V0dGluZ3MoKS5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3ko
c3RhdGljX2Nhc3Q8U3RvcmFnZUJsb2NraW5nUG9saWN5PihtX3ByZWZlcmVuY2VzU3RvcmUtPmdl
dFVJbnQzMlZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpzdG9yYWdlQmxvY2tpbmdQb2xp
Y3lLZXkoKSkpKTsKKyAgICB9CisgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6
OnNldHVwUGFnZUZvclNoYXJlZFdvcmtlcihwYWdlLmdldCgpLCB1cmwsIG9yaWdpbiwgd29ya2Vy
RmV0Y2hSZXN1bHQpOworICAgIGF1dG8gc2hhcmVkV29ya2VyVGhyZWFkUHJveHkgPSBXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlKFdURk1vdmUocGFnZSksIHNoYXJlZFdv
cmtlcklkZW50aWZpZXIsIG9yaWdpbiwgdXJsLCBXVEZNb3ZlKHdvcmtlckZldGNoUmVzdWx0KSwg
V1RGTW92ZSh3b3JrZXJPcHRpb25zKSwgbV91c2VyQWdlbnQsIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmNhY2hlU3RvcmFnZVByb3ZpZGVyKCkpOworCisgICAgV2ViQ29yZTo6U2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnJlZ2lzdGVyU2hhcmVkV29ya2VyVGhyZWFkKFdU
Rk1vdmUoc2hhcmVkV29ya2VyVGhyZWFkUHJveHkpKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmNsb3NlKCkKK3sKKyAgICBSRUxFQVNFX0xPRyhT
aGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmNs
b3NlOiBTaGFyZWQgd29ya2VyIHByb2Nlc3MgaXMgcmVxdWVzdGVkIHRvIHN0b3AgYWxsIHNoYXJl
ZCB3b3JrZXJzIik7CisgICAgc2V0QXNDbG9zZWQoKTsKKworICAgIG1fY29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpDbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uIHsgfSwgMCk7CisgICAgV2ViQ29y
ZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnN0b3BBbGxTaGFyZWRX
b3JrZXJzKCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5hYmxlVGVybWluYXRpb24o
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uZWQ5MWY5N2MxYjE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIklkZW50aWZpZXJUeXBlcy5oIgorI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIK
KyNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdl
SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVnaXN0cmFibGVEb21haW47CitzdHJ1Y3QgV29ya2Vy
RmV0Y2hSZXN1bHQ7CitzdHJ1Y3QgV29ya2VyT3B0aW9uczsKK30KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjsKK3N0cnVjdCBTZXJ2aWNlV29y
a2VySW5pdGlhbGl6YXRpb25EYXRhOworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJs
aWM6CisgICAgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6
OkNvbm5lY3Rpb24+JiYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBhZ2VHcm91cElk
ZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9u
RGF0YSYmKTsKKyAgICB+V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKCk7
CisKKyAgICB2b2lkIGVzdGFibGlzaENvbm5lY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKSBmaW5hbDsKKyAgICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSBm
aW5hbDsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJikgZmluYWw7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDIE1lc3NhZ2VzLgorICAg
IHZvaWQgbGF1bmNoU2hhcmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYm
LCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmKTsKKyAgICB2b2lkIHVwZGF0ZVByZWZlcmVu
Y2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOworICAgIHZvaWQgc2V0VXNlckFn
ZW50KFN0cmluZyYmIHVzZXJBZ2VudCkgeyBtX3VzZXJBZ2VudCA9IFdURk1vdmUodXNlckFnZW50
KTsgfQorICAgIHZvaWQgY2xvc2UoKTsKKworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3M7CisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
bV9yZWdpc3RyYWJsZURvbWFpbjsKKyAgICBQYWdlR3JvdXBJZGVudGlmaWVyIG1fcGFnZUdyb3Vw
SUQ7CisgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBtX3dlYlBhZ2VQcm94eUlEOworICAgIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOworICAgIFN0cmluZyBtX3VzZXJBZ2VudDsK
KyAgICBSZWY8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyPiBtX3VzZXJDb250ZW50Q29udHJvbGxl
cjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYlByZWZlcmVuY2VzU3RvcmU+IG1fcHJlZmVyZW5jZXNT
dG9yZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDgyYTRhZGE1M2ZkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzAgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gV2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgeworICAgIExh
dW5jaFNoYXJlZFdvcmtlcihzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgV2Vi
Q29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBVUkwg
dXJsLCBzdHJ1Y3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyB3b3JrZXJPcHRpb25zLCBzdHJ1Y3Qg
V2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQgd29ya2VyRmV0Y2hSZXN1bHQpCisgICAgUG9zdENv
bm5lY3RFdmVudChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklk
ZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQgcG9ydCwgU3RyaW5nIHNv
dXJjZU9yaWdpbikKKyAgICBUZXJtaW5hdGVTaGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hhcmVkV29y
a2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyKQorICAgIFVwZGF0ZVByZWZlcmVu
Y2VzU3RvcmUoc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSkKKyAgICBT
ZXRVc2VyQWdlbnQoU3RyaW5nIHVzZXJBZ2VudCkKKyAgICBDbG9zZSgpCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uZDdkOTk0ZGUxZjc3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAK
QEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
V2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25N
ZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1dvcmtlck9wdGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNk
ZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVk
V29ya2VyLCAiJXAgLSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb246OiIgZm10LCB0aGlzLCBXZWJDb3JlOjpQcm9jZXNzOjpp
ZGVudGlmaWVyKCkudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKKworV2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbjo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpCit7Cisg
ICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bjoiKTsKK30KKworV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6fldlYlNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24oKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coIn5X
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOiIpOworfQorCitJUEM6OkNvbm5lY3Rpb24q
IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9u
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKK30KKwordm9pZCBXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpyZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBXZWJD
b3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgcG9ydCwgY29uc3QgV2ViQ29yZTo6V29ya2Vy
T3B0aW9ucyYgd29ya2VyT3B0aW9ucykKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJy
ZXF1ZXN0U2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGlj
fXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6
UmVxdWVzdFNoYXJlZFdvcmtlciB7IG9yaWdpbiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciwgdXJsLCBXVEZNb3ZlKHBvcnQpLCB3b3JrZXJPcHRpb25zIH0pOworfQorCit2b2lkIFdlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5
KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcikKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJzaGFyZWRXb3JrZXJP
YmplY3RJc0dvaW5nQXdheTogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31z
Iiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OlNo
YXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5IHsgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciB9KTsKK30KKworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0cKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lY2JmNDJmNjc2MmEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw1NCBAQAorCisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciwg
cHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdl
YlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbik7IH0KKyAgICB+V2ViU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbigpOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBX
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCk7CisKKyAgICAvLyBXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLgorICAgIHZvaWQgcmVxdWVzdFNoYXJlZFdvcmtlcihj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYs
IGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmKSBmaW5hbDsKKyAgICB2b2lkIHNoYXJlZFdv
cmtlck9iamVjdElzR29pbmdBd2F5KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIpIGZpbmFsOworCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlv
bigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklE
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjFjZWExOTMyZTlmNgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNyBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIHsKKyAgICBGZXRjaFNjcmlwdEluQ2xpZW50KFVSTCB1
cmwsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMgd29ya2VyT3B0aW9u
cykgLT4gKHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCBmZXRjaFJlc3VsdCkgQXN5
bmMKKyAgICBOb3RpZnlXb3JrZXJPYmplY3RPZkxvYWRGYWlsdXJlKFdlYkNvcmU6OlNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKKyAgICBQ
b3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBTdHJpbmcgZXJyb3JNZXNzYWdl
LCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgU3RyaW5nIHNvdXJjZVVSTCkKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdv
cmtlclByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNo
YXJlZFdvcmtlclByb3ZpZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjQ0OTVhNDIyNWU2MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmNwcApAQCAtMCwwICsxLDQ4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJl
ZFdvcmtlclByb3ZpZGVyLmgiCisKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
aCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU2hhcmVkV29ya2Vy
UHJvdmlkZXImIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxXZWJTaGFyZWRXb3JrZXJQcm92aWRlcj4gcHJvdmlkZXI7Cisg
ICAgcmV0dXJuIHByb3ZpZGVyOworfQorCitXZWJTaGFyZWRXb3JrZXJQcm92aWRlcjo6V2ViU2hh
cmVkV29ya2VyUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CisKK1dlYkNvcmU6OlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24qIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyOjpzaGFyZWRXb3JrZXJDb25u
ZWN0aW9uKCkKK3sKKyAgICByZXR1cm4gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLnNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg2ZTNkMmZlNzBhMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlclByb3ZpZGVy
LmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJQcm92aWRlci5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViU2hhcmVk
V29ya2VyUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U2hhcmVkV29ya2VyUHJvdmlk
ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBXZWJTaGFyZWRXb3JrZXJQcm92aWRlciYgc2luZ2xl
dG9uKCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPFdlYlNoYXJlZFdv
cmtlclByb3ZpZGVyPjsKKyAgICBXZWJTaGFyZWRXb3JrZXJQcm92aWRlcigpOworCisgICAgV2Vi
Q29yZTo6U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiogc2hhcmVkV29ya2VyQ29ubmVjdGlv
bigpIGZpbmFsOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZTI1ZDhmM2U2OTE2Li44Yzc0YzdjYmNhNDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTg0LDYgKzg0LDkgQEAK
ICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTZXJ2
aWNlV29ya2VyUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclByb3ZpZGVy
LmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFtLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEu
aCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgpAQCAtMTMzLDYgKzEz
Niw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0
aW5ncy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAjaW5jbHVkZSA8cGFs
L0xvZ2dpbmcuaD4KICNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgpAQCAtNTY5LDYgKzU3Myw3
IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
ICAgIFNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2V0U2hhcmVkUHJvdmlkZXIoV2ViU2VydmljZVdv
cmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKSk7CiAjZW5kaWYKKyAgICBTaGFyZWRXb3JrZXJQcm92
aWRlcjo6c2V0U2hhcmVkUHJvdmlkZXIoV2ViU2hhcmVkV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRv
bigpKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBKU0M6Oldhc206OmVuYWJsZUZh
c3RNZW1vcnkoKTsKQEAgLTkwMiw3ICs5MDcsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OmRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZQog
ICAgIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICAvLyBGSVhNRTogUmVtb3Zl
PwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAg
ICAgICBBU1NFUlQoU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKTsK
ICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiA9IFNXQ29udGV4dE1h
bmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKQEAgLTkxMSw2ICs5MTUsMTMgQEAgdm9p
ZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGUKICAgICB9CiAjZW5kaWYKIAorICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgQVNTRVJU
KFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpOwor
ICAgICAgICBpZiAoYXV0byogY29udGV4dE1hbmFnZXJDb25uZWN0aW9uID0gU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAgICAgIHN0
YXRpY19jYXN0PFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiY+KCpjb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24pLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgTE9HX0VSUk9SKCJVbmhhbmRsZWQg
d2ViIHByb2Nlc3MgbWVzc2FnZSAnJXMnIChkZXN0aW5hdGlvbjogJSIgUFJJdTY0ICIgcGlkOiAl
ZCkiLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpLCBkZWNvZGVyLmRlc3RpbmF0
aW9uSUQoKSwgc3RhdGljX2Nhc3Q8aW50PihnZXRDdXJyZW50UHJvY2Vzc0lEKCkpKTsKIH0KIApA
QCAtMTkxNyw4ICsxOTI4LDE4IEBAIExpYldlYlJUQ05ldHdvcmsmIFdlYlByb2Nlc3M6OmxpYldl
YlJUQ05ldHdvcmsoKQogICAgIHJldHVybiAqbV9saWJXZWJSVENOZXR3b3JrOwogfQogCit2b2lk
IFdlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxl
RG9tYWluLCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYgaW5pdGlhbGl6YXRpb25E
YXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgLy8gV2UgYXJlIGluIHRoZSBTaGFyZWQgV29ya2VyIGNvbnRleHQgcHJvY2VzcyBhbmQgdGhl
IGNhbGwgYmVsb3cgZXN0YWJsaXNoZXMgb3VyIGNvbm5lY3Rpb24gdG8gdGhlIE5ldHdvcmsgUHJv
Y2VzcworICAgIC8vIGJ5IGNhbGxpbmcgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLiBT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlciBuZWVkcyB0byB1c2UgdGhlIHNhbWUgdW5kZXJseWlu
ZyBJUEM6OkNvbm5lY3Rpb24gYXMgdGhlCisgICAgLy8gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
IGZvciBzeW5jaHJvbml6YXRpb24gcHVycG9zZXMuCisgICAgYXV0byYgaXBjQ29ubmVjdGlvbiA9
IGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKKyAgICBTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0Q29ubmVjdGlvbihtYWtlVW5p
cXVlPFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVjdGlv
biwgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHBhZ2VHcm91cElELCB3ZWJQYWdlUHJveHlJ
RCwgcGFnZUlELCBzdG9yZSwgV1RGTW92ZShpbml0aWFsaXphdGlvbkRhdGEpKSk7CisgICAgU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKS0+ZXN0YWJs
aXNoQ29ubmVjdGlvbihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91
cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJsZURv
bWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXphdGlvbkRhdGEsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJs
aXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3Jv
dXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQ
cm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
IHN0b3JlLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlv
bmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlk
ZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXphdGlv
bkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICAvLyBXZSBhcmUgaW4gdGhlIFNlcnZpY2UgV29ya2VyIGNvbnRleHQgcHJvY2VzcyBhbmQg
dGhlIGNhbGwgYmVsb3cgZXN0YWJsaXNoZXMgb3VyIGNvbm5lY3Rpb24gdG8gdGhlIE5ldHdvcmsg
UHJvY2VzcwogICAgIC8vIGJ5IGNhbGxpbmcgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LiBTV0NvbnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0aGUgc2FtZSB1bmRlcmx5aW5nIElQQzo6
Q29ubmVjdGlvbiBhcyB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4
IGI4MDMyZmJlOGUyMC4uNjVmNzczMjAxYTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgKQEAgLTQ2OSw4ICs0NjksOSBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2FtZXBhZERp
c2Nvbm5lY3RlZCh1bnNpZ25lZCBpbmRleCk7CiAjZW5kaWYKIAorICAgIHZvaWQgZXN0YWJsaXNo
U2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElk
ZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
JiwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB2b2lkIGVzdGFibGlz
aFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlm
aWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29u
c3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNl
cnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0
YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZXN0YWJsaXNoU2Vy
dmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVu
dGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
Y29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYs
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+
IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9u
RGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAKICAgICB2b2lk
IGZldGNoV2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2Vic2l0ZURhdGEmJik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA0MmQ3NWEzOTRhOWMuLmU1NTI5NmI5
MDRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KQEAgLTEwMCw4ICsxMDAsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lS
ZWNlaXZlciBOb3RSZWZDb3VudGVkIHsKICAgICBHYW1lcGFkRGlzY29ubmVjdGVkKHVuc2lnbmVk
IGluZGV4KQogI2VuZGlmCiAKKyAgICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91
cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNT
dG9yZSBzdG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBzdHJ1Y3QgV2Vi
S2l0OjpTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhIGluaXRpYWxpemF0aW9uRGF0YSkg
LT4gKCkgQXN5bmMKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBFc3RhYmxpc2hX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJ
ZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2Vi
UGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktp
dDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
ZG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlNlcnZp
Y2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRhKSAtPiAoKSBBc3lu
YworICAgIEVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJLaXQ6Oldl
YlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZp
ZXIsIHN0cnVjdCBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlh
bGl6YXRpb25EYXRhKSAtPiAoKSBBc3luYwogI2VuZGlmCiAKICAgICBTZXRIYXNTdXNwZW5kZWRQ
YWdlUHJveHkoYm9vbCBoYXNTdXNwZW5kZWRQYWdlUHJveHkpOwo=
</data>
<flag name="commit-queue"
          id="477034"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450602</attachid>
            <date>2022-02-01 19:04:54 -0800</date>
            <delta_ts>2022-02-01 22:09:56 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>235958_SharedWorker_multiProcess_wip.patch</filename>
            <type>text/plain</type>
            <size>321757</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDQwYjI5NmM3MWQzNy4uMzZhMDczMTE3NjBlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTQ2Myw3ICs0NjMsNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYi1sb2Nrcy9zdGVhbC50ZW50YXRpdmUuaHR0cHMuYW55Lmh0bWwgWyBEdW1wSgog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3Ro
ZS1hbmFseXNlcm5vZGUtaW50ZXJmYWNlL3Rlc3QtYW5hbHlzZXItbWluaW11bS5odG1sIFsgRHVt
cEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUt
ZGlzY29ubmVjdC1hdWRpb3BhcmFtLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NhbWUtb3JpZ2luLWNoZWNr
LnN1Yi5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMuaHRt
bCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCiBmYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWJh
Y2stZm9yd2FyZC1jYWNoZS5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGZhc3Qv
aGlzdG9yeS9wYWdlLWNhY2hlLWNyZWF0ZUltYWdlQml0bWFwLmh0bWwgWyBEdW1wSlNDb25zb2xl
TG9nSW5TdGRFcnIgXQogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLWluLWxv
YWRpbmctaWZyYW1lLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQpAQCAtNTE1NCw2
ICs1MTUzLDEwIEBAIHdlYmtpdC5vcmcvYi8xODM5OTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3Nzb20vY3NzLXN0eWxlLWF0dHItZGVjCiAjIFRlc3QgaXMgY3Jhc2hpbmcg
aW4gRGVidWcgYnVpbGRzIHNpbmNlIGltcG9ydC4KIHdlYmtpdC5vcmcvYi8yMzQ5NzcgWyBEZWJ1
ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9mb2N1cy1ldmVu
dC1kb2N1bWVudC1tb3ZlLmh0bWwgWyBTa2lwIF0KIAorIyBUZXN0IGlzIGZsYWt5IGJlY2F1c2Ug
TWVzc2FnZVBvcnQgbWVzc2FnZXMgbWF5IGdldCByZWNlaXZlZCBpbiBhIGRpZmZlcmVudCBvcmRl
ciB3aGVuIHNldmVyYWwgTWVzc2FnZVBvcnRzIGFyZSBpbnZvbHZlZCwKKyMgZHVlIHRvIGhvdyBN
ZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpIGlzIGltcGxlbWVudGVkLgoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0
aW9ucy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIEZhaWx1cmUgUGFzcyBdCisKICMg
UGx1Z2lucwogIyBGSVhNRTogUmVtb3ZlIHRoZXNlIHRlc3RzLgogcGx1Z2lucy8gWyBTa2lwIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0
LW9ubHkuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3
b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dAppbmRleCAwZTk5NzI0Yjg2NGIuLjY4
OThiNTRhYWI2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdv
cmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRl
LXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSw2
ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2Nh
bGhvc3Q6OTQ0NC9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zdXBwb3J0L3Jlc291cmNlLnB5P2Ny
b3NzLW9yaWdpbi1mZXRjaAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8v
d3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQvcmVzb3Vy
Y2UucHk/Y3Jvc3Mtb3JpZ2luLXhocgotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0
dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQv
cmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLWZldGNoCiAKIFBBU1MgU2FtZS1vcmlnaW4gJ2ZldGNo
KCknLgogUEFTUyBTYW1lLW9yaWdpbiBYSFIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lk
ZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWItZXhwZWN0ZWQu
dHh0CmluZGV4IDk3OTEwNjMwMzc4NS4uYmI2NDUyZjQ0YTBhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMu
c3ViLWV4cGVjdGVkLnR4dApAQCAtMiwxMCArMiw5IEBACiBIYXJuZXNzIEVycm9yIChUSU1FT1VU
KSwgbWVzc2FnZSA9IG51bGwKIAogVElNRU9VVCBzaGFyZWR3b3JrZXItc2NyaXB0LXNyYyBUZXN0
IHRpbWVkIG91dAotRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgbm90IGJsb2Nr
ZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgIEEgbmV0d29yayBlcnJvciBvY2N1cnJlZC4KLUZBSUwg
YGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AgUmVmdXNlZCB0byBldmFs
dWF0ZSBhIHN0cmluZyBhcyBKYXZhU2NyaXB0IGJlY2F1c2UgJ3Vuc2FmZS1ldmFsJyBpcyBub3Qg
YW4gYWxsb3dlZCBzb3VyY2Ugb2Ygc2NyaXB0IGluIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1
cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAic2NyaXB0LXNyYyAnc2VsZicgJ25vbmNlLWEnIGJsb2I6
IGZpbGVzeXN0ZW06Ii4KLQotRkFJTCBgc2V0VGltZW91dChbc3RyaW5nXSlgIG5vdCBibG9ja2Vk
IGluIGh0dHA6IHdpdGhvdXQgQ1NQIGFzc2VydF91bnJlYWNoZWQ6IGNhbGxiYWNrIG5vdCBjYWxs
ZWQuIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNj
cmlwdHMoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgTG9hZCBmYWlsZWQKK1BB
U1MgYGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AKK1BBU1MgYHNldFRp
bWVvdXQoW3N0cmluZ10pYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3V0IENTUAogVElNRU9V
VCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgYmxvY2tlZCBpbiBodHRwOiB3aXRoIHNj
cmlwdC1zcmMgJ3NlbGYnIFRlc3QgdGltZWQgb3V0CiBOT1RSVU4gYGV2YWwoKWAgYmxvY2tlZCBp
biBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCiBOT1RSVU4gYHNldFRpbWVvdXQoW3N0cmlu
Z10pYCBibG9ja2VkIGluIGh0dHA6IHdpdGggc2NyaXB0LXNyYyAnc2VsZicKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVk
LnR4dAppbmRleCA0ZWFjMWNjYzA1MjYuLmI4ZWUxM2IwZmZjZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBv
bGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91dC5zdWItZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4
dApAQCAtMSw0ICsxLDQgQEAKIAogRkFJTCBEZWRpY2F0ZWQgd29ya2VyIGluaGVyaXRzIENTUCBm
cm9tIG1haW4gZG9jdW1lbnQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgInNldFRpbWVvdXQgYWxs
b3dlZCIgYnV0IGdvdCAic2V0VGltZW91dCBibG9ja2VkIgotRkFJTCBTaGFyZWQgd29ya2VyIGRl
bGl2ZXJzIGl0cyBvd24gQ1NQIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJzZXRUaW1lb3V0IGJs
b2NrZWQiIGJ1dCBnb3QgInNldFRpbWVvdXQgYWxsb3dlZCIKK1BBU1MgU2hhcmVkIHdvcmtlciBk
ZWxpdmVycyBpdHMgb3duIENTUAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3Jr
ZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNo
ZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggYzEwNzEz
NjU1MjgwLi42Zjg0NGRkNWQ5NDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtl
cnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBj
YWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKQEAgLTUsNyAr
NSw3IEBAIEhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAogUEFTUyBEZWRp
Y2F0ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0CiBQQVNTIERlZGljYXRlZCB3b3JrZXIg
b2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0CiBQQVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIG5v
dC1pbi1jYWNoZSBzY3JpcHQKLVBBU1MgU2hhcmVkIHdvcmtlciBvZiB0aGUgY2FjaGVkIHNjcmlw
dAotUEFTUyBTaGFyZWQgd29ya2VyIG9mIHRoZSBmYWxsYmFja2VkIHNjcmlwdAorRkFJTCBTaGFy
ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJE
b25lOiBjYWNoZWQiIGJ1dCBnb3QgIkVycm9yOiBJbXBvcnRpbmcgYSBub24tY2FjaGVkIHNjcmlw
dCBtdXN0IGZhaWwuIgorRkFJTCBTaGFyZWQgd29ya2VyIG9mIHRoZSBmYWxsYmFja2VkIHNjcmlw
dCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiRG9uZTogZmFsbGJhY2tlZCIgYnV0IGdvdCAiRXJy
b3I6IEltcG9ydGluZyBhIG5vbi1jYWNoZWQgc2NyaXB0IG11c3QgZmFpbC4iCiBUSU1FT1VUIFNo
YXJlZCB3b3JrZXIgb2YgdGhlIG5vdC1pbi1jYWNoZSBzY3JpcHQgVGVzdCB0aW1lZCBvdXQKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3
b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9y
aWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3b3JrZXItcGFydGl0
aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0CmluZGV4IDRlZDg3NDc0
NzZjNy4uZjFlYjBiMjE3ZjM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9hbm9u
eW1vdXMtaWZyYW1lL3NoYXJlZHdvcmtlci1wYXJ0aXRpb25pbmcudGVudGF0aXZlLmh0dHBzLndp
bmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlm
cmFtZS9zaGFyZWR3b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhw
ZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIEFub255bW91cyBpZnJhbWVzIGdldCBw
YXJ0aXRpb25lZCBzaGFyZWQgd29ya2Vycy4gYXNzZXJ0X3RydWU6IFRoZSAibm9ybWFsIiBpZnJh
bWUncyBzaGFyZWR3b3JrZXIgc2hvdWxkIHJldHVybiB7Im5vcm1hbCI6IHRydWUsICJub3JtYWxf
Y29udHJvbCI6IHRydWV9LCBidXQgaW5zdGVhZCByZXR1cm5lZCB7Im5vcm1hbCI6dHJ1ZX0gZXhw
ZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK0ZBSUwgQW5vbnltb3VzIGlmcmFtZXMgZ2V0IHBhcnRpdGlv
bmVkIHNoYXJlZCB3b3JrZXJzLiBhc3NlcnRfdHJ1ZTogVGhlICJub3JtYWwiIGlmcmFtZSdzIHNo
YXJlZHdvcmtlciBzaG91bGQgcmV0dXJuIHsibm9ybWFsIjogdHJ1ZSwgIm5vcm1hbF9jb250cm9s
IjogdHJ1ZX0sIGJ1dCBpbnN0ZWFkIHJldHVybmVkIHsiYW5vbnltb3VzIjp0cnVlLCJub3JtYWxf
Y29udHJvbCI6dHJ1ZSwibm9ybWFsIjp0cnVlLCJhbm9ueW1vdXNfY29udHJvbCI6dHJ1ZX0gZXhw
ZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kv
Y3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdp
bi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMt
ZXhwZWN0ZWQudHh0CmluZGV4IDYzNTViNjhkZTcwYi4uYzhiZjc1ZTdlYTg1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mt
b3JpZ2luLWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5o
dHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2lu
LWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0yMCw3ICsyMCw3IEBA
IFBBU1MgZGVkaWNhdGVkIHdvcmtlcjogc2NoZW1lID0gYmxvYiwgdmFsdWUgPSAqCiBQQVNTIGRl
ZGljYXRlZCB3b3JrZXI6IHNjaGVtZSA9IGJsb2IsIHZhbHVlID0gc2VsZgogRkFJTCBkZWRpY2F0
ZWQgd29ya2VyOiBzY2hlbWUgPSBibG9iLCB2YWx1ZSA9IChcKSBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCBmYWxzZSBidXQgZ290IHRydWUKIFBBU1Mgc2hhcmVkIHdvcmtlcjogd2l0aENvb3BDb2Vw
ID0gZmFsc2UKLVBBU1Mgc2hhcmVkIHdvcmtlcjogd2l0aENvb3BDb2VwID0gdHJ1ZQorRkFJTCBz
aGFyZWQgd29ya2VyOiB3aXRoQ29vcENvZXAgPSB0cnVlIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
IHRydWUgYnV0IGdvdCBmYWxzZQogUEFTUyBzZXJ2aWNlIHdvcmtlcjogd2l0aENvb3BDb2VwID0g
ZmFsc2UKIEZBSUwgc2VydmljZSB3b3JrZXI6IHdpdGhDb29wQ29lcCA9IHRydWUgYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1i
ZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1i
ZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAzMzk4
YmQ4ODkzMWIuLjRjODY2ZWIyOTI2MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kv
c2hhcmVkLXdvcmtlcnMuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9s
aWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMiw3ICsyLDcgQEAgVmVy
aWZ5IHRoZSBDcm9zcy1PcmlnaW4gRW1iZWRkZXIgUG9saWN5IGZvciBTaGFyZWQgV29ya2VycyBi
eSBwZXJmb3JtaW5nIGEgY3Jvc3MKIAogCiBQQVNTIGRlZmF1bHQgcG9saWN5IChkZXJpdmVkIGZy
b20gcmVzcG9uc2UpCi1GQUlMICJyZXF1aXJlLWNvcnAiIChkZXJpdmVkIGZyb20gcmVzcG9uc2Up
IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJmYWlsdXJlIiBidXQgZ290ICJzdWNjZXNzIgorUEFT
UyAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIHJlc3BvbnNlKQogUEFTUyBkZWZhdWx0IHBv
bGljeSAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBkdWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAt
IGJsb2IgVVJMKQogRkFJTCAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBk
dWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAtIGJsb2IgVVJMKSBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCAiZmFpbHVyZSIgYnV0IGdvdCAic3VjY2VzcyIKIFBBU1MgZGVmYXVsdCBwb2xpY3kgKGRl
cml2ZWQgZnJvbSBvd25lciBzZXQgZHVlIHRvIHVzZSBvZiBsb2NhbCBzY2hlbWUgLSBkYXRhIFVS
TCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5jZS5z
dWIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVy
aXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggNzViMWQzM2U1MjYwLi5iMmJmMmUz
YmZmM2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5j
ZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtl
ci1pbmhlcml0YW5jZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNiBAQAogQmxv
Y2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2Nv
bW1vbi9ibGFuay5odG1sCiBCbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93
d3cubG9jYWxob3N0Ojk0NDQvY29tbW9uL2JsYW5rLmh0bWwKIEJsb2NrZWQgYWNjZXNzIHRvIGV4
dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2NhbGhvc3Q6OTQ0NC9jb21tb24vYmxhbmsuaHRtbAot
QmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0
L2NvbW1vbi9ibGFuay5odG1sCiAKIFBBU1MgVGVzdCB0aGF0IGxvY2FsIHNjaGVtZSB3b3JrZXJz
IGluaGVyaXQgQ09FUDogcmVxdWlyZS1jb3JwIGZyb20gdGhlIGNyZWF0aW5nIGRvY3VtZW50CiBQ
QVNTIGJsb2IgVVJMIGRlZGljYXRlZCB3b3JrZXI6IFNhbWUgb3JpZ2luIHNob3VsZCBiZSBhbGxv
d2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJf
ZGF0YVVybC1leHBlY3RlZC50eHQKaW5kZXggOTk1YTA2MDE5Yjg0Li45YjU4MjBhYWU4Y2IgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9TaGFyZWRXb3JrZXJfZGF0YVVybC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRh
VXJsLWV4cGVjdGVkLnR4dApAQCAtMSwxMyArMSw1IEBACi1DT05TT0xFIE1FU1NBR0U6IEVycm9y
OiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3QgMQogCiAKLUhhcm5lc3MgRXJyb3Ig
KEZBSUwpLCBtZXNzYWdlID0gRXJyb3I6IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDIgYnV0IGdv
dCAxCi0KLVBBU1MgRGF0YSBVUkwgbm90IHNoYXJlZCBieSBjcm9zcy1vcmlnaW4gU2hhcmVkV29y
a2VycwotVElNRU9VVCBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtl
cnMgVGVzdCB0aW1lZCBvdXQKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBFcnJv
cjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290IDEKLQogUEFTUyBEYXRhIFVSTCBu
b3Qgc2hhcmVkIGJ5IGNyb3NzLW9yaWdpbiBTaGFyZWRXb3JrZXJzCi1USU1FT1VUIERhdGEgVVJM
cyBzaGFyZWQgYnkgc2FtZS1vcmlnaW4gU2hhcmVkV29ya2VycyBUZXN0IHRpbWVkIG91dAorUEFT
UyBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtlcnMKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQK
aW5kZXggNTc2ZTZkMmI3ZWQyLi40YTI2YmU5MjlhOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13
b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVk
LXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMg
QEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0
Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkK
IAogUEFTUyBTdGF0aWMgaW1wb3J0LgogRkFJTCBTdGF0aWMgaW1wb3J0IChjcm9zcy1vcmlnaW4p
LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogIkltcG9ydGlu
ZyBhIG1vZHVsZSBzY3JpcHQgZmFpbGVkLiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXIt
aW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29y
a2VyLWltcG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CmluZGV4IDRmODY0
MWU1MTQ4MC4uMjk5N2Y3ZTFmMzA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9y
dC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3Jr
ZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwz
IEBACi1DT05TT0xFIE1FU1NBR0U6IE9yaWdpbiBudWxsIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vz
cy1Db250cm9sLUFsbG93LU9yaWdpbi4gU3RhdHVzIGNvZGU6IDIwMAogCiBIYXJuZXNzIEVycm9y
IChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtl
ci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXIt
aW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQKaW5kZXggZWFjN2Y5NWRlNmYyLi5j
YmMwNDI5ZTBjNzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJs
LndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11
cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRv
IGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVz
L3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkKIAogSGFybmVzcyBFcnJvciAoVElN
RU9VVCksIG1lc3NhZ2UgPSBudWxsCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ct
ZXhwZWN0ZWQudHh0CmluZGV4IDU3NmU2ZDJiN2VkMi4uNGEyNmJlOTI5YThkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9k
dWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3No
YXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1C
bG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQz
L3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LW9uLWxvYWQtc2NyaXB0LnB5CiAKIFBB
U1MgU3RhdGljIGltcG9ydC4KIEZBSUwgU3RhdGljIGltcG9ydCAoY3Jvc3Mtb3JpZ2luKS4gcHJv
bWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6ICJJbXBvcnRpbmcgYSBt
b2R1bGUgc2NyaXB0IGZhaWxlZC4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlv
bnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNy
ZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAppbmRleCBlMWJlZGY1NDMwZWYuLmE3MGYwNWFmNTRmNCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQu
dHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHA6
Ly93d3cxLmxvY2FsaG9zdDo4ODAwL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LWNy
ZWRlbnRpYWxzLnB5CiAKIEhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRp
Y3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhwZWN0ZWQudHh0CmluZGV4IDAxOGRiNjA0NTY5ZC4u
Y2ZlNDY1NTY3NWNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVkLnR4dApAQCAt
MSw1ICsxLDMgQEAKIAotSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0K
LU5PVFJVTiBzaGFyZWQgd29ya2VyIHdpdGggbXVsdGlwbGUgZG9jdW1lbnRzCitQQVNTIHNoYXJl
ZCB3b3JrZXIgd2l0aCBtdWx0aXBsZSBkb2N1bWVudHMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA4
LWV4cGVjdGVkLnR4dAppbmRleCA5N2E0ZTdhNzNhNjMuLjA5ZjY3MmQxYzYyMSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3Nl
bWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSwzIEBACiAKLUhhcm5lc3Mg
RXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1USU1FT1VUIG1lc3NhZ2VjaGFubmVs
IGluIHNoYXJlZCB3b3JrZXIgVGVzdCB0aW1lZCBvdXQKK1BBU1MgbWVzc2FnZWNoYW5uZWwgaW4g
c2hhcmVkIHdvcmtlcgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRv
dy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50
eHQKaW5kZXggYTA4OWMyMjQ4OWUyLi5kMzlhNTUwODRkYzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2Vy
LWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJs
b2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw3IEBACiAKIEhhcm5lc3MgRXJy
b3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAogCi1GQUlMIENyZWF0aW5nIGEgc2hhcmVkIHdv
cmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJ3b3Jr
ZXJfT0tfMiIgYnV0IGdvdCAid29ya2VyX09LXzEiCi1QQVNTIENyZWF0aW5nIGEgc2hhcmVkIHdv
cmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MgaW1tZWRpYXRlbHkgYmVmb3JlIHJldm9raW5nLgot
VElNRU9VVCBDb25uZWN0aW5nIHRvIGEgc2hhcmVkIHdvcmtlciBvbiBhIHJldm9rZWQgYmxvYiBV
Ukwgd29ya3MuIFRlc3QgdGltZWQgb3V0CitQQVNTIENyZWF0aW5nIGEgc2hhcmVkIHdvcmtlciBm
cm9tIGEgYmxvYiBVUkwgd29ya3MuCitUSU1FT1VUIENyZWF0aW5nIGEgc2hhcmVkIHdvcmtlciBm
cm9tIGEgYmxvYiBVUkwgd29ya3MgaW1tZWRpYXRlbHkgYmVmb3JlIHJldm9raW5nLiBUZXN0IHRp
bWVkIG91dAorTk9UUlVOIENvbm5lY3RpbmcgdG8gYSBzaGFyZWQgd29ya2VyIG9uIGEgcmV2b2tl
ZCBibG9iIFVSTCB3b3Jrcy4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9u
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25zLWV4cGVjdGVkLnR4dApp
bmRleCA2ZmZlZTI3MzkwZDkuLmFlNDViNGQyNzM5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFt
ZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9u
cy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgVGVzdCB0aGUgbmFtZSBwcm9w
ZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBtaXhpbmcgY29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29u
c3RydWN0b3Igc3RyaW5ncyBFcnJvcjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290
IDEKK1BBU1MgVGVzdCB0aGUgbmFtZSBwcm9wZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBtaXhpbmcg
Y29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29uc3RydWN0b3Igc3RyaW5ncwogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW9wdGlv
bnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CmluZGV4IGY2NTY5NDYxNTBkYi4uNGY5OWExMzQwOWU3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dApAQCAtMSwyOCArMSwyNiBA
QAogCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKLQotVElNRU9VVCBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogZGVmYXVsdCB0byBtb2R1bGUgVGVzdCB0aW1lZCBvdXQKLU5PVFJVTiBDb25u
ZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUg
YmxvY2tlZDogbW9kdWxlIHRvIGRlZmF1bHQKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3
b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogY2xhc3NpYyB0
byBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJl
bnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGNsYXNzaWMKLU5PVFJVTiBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogZGVmYXVsdCB0byBvbWl0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogZGVmYXVsdCB0byBpbmNsdWRlIGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNo
YXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21p
dCB0byBkZWZhdWx0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3Jr
ZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBzYW1l
LW9yaWdpbiBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdp
dGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVkZSBp
biBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVy
ZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIG9taXQgaW4gY2xh
c3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIGNsYXNz
aWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGluIGNsYXNzaWMKLU5P
VFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBz
aG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBvbWl0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25u
ZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUg
YmxvY2tlZDogaW5jbHVkZSB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IGRlZmF1bHQgdG8gb21pdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNo
YXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVm
YXVsdCB0byBpbmNsdWRlIGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRl
ZmF1bHQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGgg
ZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gc2FtZS1vcmlnaW4g
aW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVy
ZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVkZSBpbiBtb2R1bGUK
LU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9u
cyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBtb2R1bGUKLU5PVFJV
TiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91
bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gaW5jbHVkZSBpbiBtb2R1bGUKLU5PVFJVTiBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3Rp
bmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9j
a2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1
ZGUgdG8gc2FtZS1vcmlnaW4gaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRv
IG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQg
b3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGRlZmF1bHQKK1BBU1MgQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IGNsYXNzaWMgdG8gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBtb2R1bGUgdG8gY2xh
c3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBvbWl0IGluIGNsYXNzaWMKK1BBU1Mg
Q29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxk
IGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gaW5jbHVkZSBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3Rp
bmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9j
a2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJl
ZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0
byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGluY2x1
ZGUgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZm
ZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBj
bGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIGNsYXNz
aWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlv
bnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gZGVmYXVsdCBpbiBjbGFzc2ljCitQQVNT
IENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3Vs
ZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogaW5jbHVkZSB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8g
c2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBk
ZWZhdWx0IHRvIG9taXQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIGlu
Y2x1ZGUgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRp
ZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4gbW9k
dWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIHNhbWUtb3JpZ2luIGluIG1vZHVsZQorUEFT
UyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91
bGQgYmUgYmxvY2tlZDogb21pdCB0byBpbmNsdWRlIGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUt
b3JpZ2luIHRvIGluY2x1ZGUgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRv
IGRlZmF1bHQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4g
bW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIHNhbWUtb3JpZ2luIGluIG1vZHVs
ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Bl
bi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dAppbmRleCAx
ZTJkMzk5MmY2ZDUuLjU5Y2FjYTQ4NmY4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3
b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1v
cmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0
ZXJuYWwgVVJMIGh0dHA6Ly93d3cyLmxvY2FsaG9zdDo4ODAwL3hoci9yZXNvdXJjZXMvaW5zcGVj
dC1oZWFkZXJzLnB5P2ZpbHRlcl9uYW1lPW9yaWdpbiZjb3JzCiAKIEZBSUwgUmVmZXJlciBoZWFk
ZXIgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIlJlZmVyZXI6IGh0dHA6Ly9sb2NhbGhvc3Q6ODgw
MC94aHIvcmVzb3VyY2VzL3dvcmtlcnhoci1vcmlnaW4tcmVmZXJyZXIuanNcbiIgYnV0IGdvdCAi
UmVmZXJlcjogaHR0cDovL2xvY2FsaG9zdDo4ODAwL3hoci9yZXNvdXJjZXMvcmVkaXJlY3QucHk/
bG9jYXRpb249d29ya2VyeGhyLW9yaWdpbi1yZWZlcnJlci5qc1xuIgogRkFJTCBPcmlnaW4gaGVh
ZGVyIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJPcmlnaW46IGh0dHA6Ly9sb2NhbGhvc3Q6ODgw
MFxuIiBidXQgZ290ICIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sx
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggODZkZjI3ZDViYWJiLi5mMjY5MDk0NGQ2MGYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTY2LDYgKzY2LDEwNiBA
QCBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS1nZXRVc2VyTWVkaWEtcGVuZGluZy1w
cm9taXNlLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNhY2hlLW1l
ZGlhc3RyZWFtLmh0bWwgWyBTa2lwIF0KIG1lZGlhL2F1ZGlvLXNlc3Npb24tY2F0ZWdvcnkuaHRt
bCBbIFNraXAgXQogCisjIFNoYXJlZCB3b3JrZXJzIGFyZSBvbmx5IGltcGxlbWVudGVkIGZvciBX
ZWJLaXQyLgoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5
LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFz
c2ljLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
b250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy1zZWxmL3No
YXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3Nj
cmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4v
dG9wLmh0dHAtcnAvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRw
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVk
d29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0
LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4v
dG9wLmh0dHAtcnAvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHAuaHRt
bCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3Vy
aXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1j
bGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtc2Vs
Zi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAv
d29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWNsYXNz
aWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
b250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNyYy1zZWxmL3NoYXJl
ZHdvcmtlci1jbGFzc2ljLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNy
Yy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5t
ZXRhL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5o
dHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVk
d29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNy
Yy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1l
dGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAu
aHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1t
b2R1bGUuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy13aWxkY2Fy
ZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dv
cmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItbW9kdWxlLmh0
dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50
LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3
b3JrZXItbW9kdWxlLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3Jr
ZXItY29ubmVjdC1zcmMuc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3Jr
ZXItcmVwb3J0LW9ubHkuc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3Jr
ZXItc2NyaXB0LXNyYy5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zYW5kYm94L3NoYXJlZC13b3JrZXItc2Fu
ZGJveC5odG1sICBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1kYXRhLXNldC10aW1lb3V0LnN1
Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLWNoaWxkLnN1Yi5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2dlbi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRh
Lmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy1zZWxmL3NoYXJl
ZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC9z
Y3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tpcCBdCitp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dl
bi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0
YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtd2lsZGNhcmQv
c2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRw
LXJwL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsg
U2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHkt
cG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLW5vbmUvc2hhcmVkd29ya2VyLWNsYXNz
aWMuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nv
bnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLW5vbmUvc2hh
cmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29y
a2VyLXNyYy1ub25lL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
Z2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtbm9uZS9zaGFyZWR3b3JrZXItaW1wb3J0LWRhdGEu
aHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1ub25lL3NoYXJl
ZHdvcmtlci1tb2R1bGUuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXIt
c3JjLW5vbmUvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3Au
aHR0cC1ycC93b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHAuaHRt
bCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3Vy
aXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1p
bXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3Jj
LXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0
cC1ycC93b3JrZXItc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0
bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29y
a2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtl
ci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lwIF0KK2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2Vu
L3RvcC5odHRwLXJwL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRw
cy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2Vy
LWltcG9ydC1kYXRhLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNyYy1z
ZWxmL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3Au
bWV0YS9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tp
cCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1pbXBvcnQt
ZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtd2lsZGNhcmQv
c2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRh
L3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5o
dHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLW5vbmUvc2hhcmVkd29y
a2VyLWNsYXNzaWMuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLW5v
bmUvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEv
d29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtbm9uZS9zaGFyZWR3b3JrZXItaW1wb3J0LWRhdGEu
aHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLW5vbmUvc2hhcmVkd29y
a2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1z
cmMtbm9uZS9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1l
dGEvd29ya2VyLXNyYy1ub25lL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cHMuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5o
dHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLXdpbGRjYXJkL3NoYXJl
ZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtl
ci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvd29ya2VyLXNyYy9zaGFyZWQtZmFsbGJhY2suc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvd29ya2VyLXNy
Yy9zaGFyZWQtbGlzdC5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS93b3JrZXItc3JjL3NoYXJlZC1ub25lLnN1
Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXNlbGYuc3ViLmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
d29ya2VyLXNyYy9zaGFyZWQtd29ya2VyLXNyYy1jaGlsZC1mYWxsYmFjay1ibG9ja2VkLnN1Yi5o
dG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXdvcmtlci1zcmMtY2hpbGQtZmFsbGJhY2su
c3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvd29ya2VyLXNyYy9zaGFyZWQtd29ya2VyLXNyYy1kZWZhdWx0LWZh
bGxiYWNrLnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXdvcmtlci1zcmMtc2Ny
aXB0LWZhbGxiYWNrLnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXdvcmtlci1z
cmMtc2VsZi1mYWxsYmFjay5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29ycy9kYXRhLXVybC1zaGFyZWQtd29ya2VyLmh0bWwgWyBT
a2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZs
aW5lL25vLWFwcGNhY2hlLWluLXNoYXJlZC13b3JrZXJzLWhpc3RvcmljYWwuaHR0cHMuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9z
Y3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvbW9kdWxlL2V2YWx1YXRpb24tb3JkZXItMS1u
b3Rocm93LXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudC9t
b2R1bGUvZXZhbHVhdGlvbi1vcmRlci0xLXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3Ro
ZS1zY3JpcHQtZWxlbWVudC9tb2R1bGUvZXZhbHVhdGlvbi1vcmRlci0yLWltcG9ydC1zaGFyZWR3
b3JrZXIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvbW9kdWxlL2V2YWx1YXRp
b24tb3JkZXItMy1keW5hbWljLXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3Jp
cHQtZWxlbWVudC9ldmFsdWF0aW9uLW9yZGVyLTEtbm90aHJvdy1zaGFyZWR3b3JrZXIuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9z
Y3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvZXZhbHVhdGlvbi1vcmRlci0xLXNoYXJlZHdv
cmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
d2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL3VuaGFuZGxlZC1wcm9taXNl
LXJlamVjdGlvbnMvcHJvbWlzZS1yZWplY3Rpb24tZXZlbnRzLnNoYXJlZHdvcmtlci5odG1sIFsg
U2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vc2VyaWFsaXphdGlv
bi9tb2R1bGUvYnJvYWRjYXN0Y2hhbm5lbC1zdWNjZXNzLWFuZC1mYWlsdXJlLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJQ
ZXJmb3JtYW5jZU5vdy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvYmFzZXVybC9hbHBoYS9pbXBvcnRTY3JpcHRzLWluLXNoYXJlZHdvcmtlci5o
dG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvYmFz
ZXVybC9hbHBoYS94aHItaW4tc2hhcmVkd29ya2VyLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9pbnRlcmZhY2VzL1NoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
aW50ZXJmYWNlcy9Xb3JrZXJHbG9iYWxTY29wZS9sb2NhdGlvbi9yZWRpcmVjdC1zaGFyZWR3b3Jr
ZXIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93Lmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJl
ZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi5odG1sIFsgU2tpcCBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2Vy
LWltcG9ydC1kYXRhLXVybC53aW5kb3cuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZmFpbHVy
ZS5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
bW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1tZXRhLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LndpbmRvdy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMv
c2hhcmVkLXdvcmtlci1vcHRpb25zLXR5cGUuaHRtbCBbIFNraXAgXQorCiBodHRwL3dwdC9tZWRp
YXJlY29yZGVyIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlh
Y2FwdHVyZS1yZWNvcmQgWyBTa2lwIF0KIGZhc3QvaGlzdG9yeS9wYWdlLWNhY2hlLW1lZGlhLXJl
Y29yZGVyLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBv
bGljeS9zY3JpcHQtc3JjL3dvcmtlci1pbXBvcnRzY3JpcHRzLnN1Yi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItaW1wb3J0c2NyaXB0
cy5zdWItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uNmVlYTFiZWFiNWIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHkt
cG9saWN5L3NjcmlwdC1zcmMvd29ya2VyLWltcG9ydHNjcmlwdHMuc3ViLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDQgQEAKKworRkFJTCBEZWRpY2F0ZWQgd29ya2VyIGluaGVyaXRzIENTUCBmcm9t
IG1haW4gZG9jdW1lbnQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImltcG9ydFNjcmlwdHMgYWxs
b3dlZCIgYnV0IGdvdCAiaW1wb3J0U2NyaXB0cyBibG9ja2VkIgorRkFJTCBTaGFyZWQgd29ya2Vy
IGRlbGl2ZXJzIGl0cyBvd24gQ1NQIFNoYXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtl
ci1zZXQtdGltZW91dC5zdWItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L3NjcmlwdC1zcmMvd29ya2VyLXNldC10aW1lb3V0LnN1Yi1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42NzVhM2E4ZTBmMGIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXIt
c2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworRkFJTCBEZWRp
Y2F0ZWQgd29ya2VyIGluaGVyaXRzIENTUCBmcm9tIG1haW4gZG9jdW1lbnQgYXNzZXJ0X2VxdWFs
czogZXhwZWN0ZWQgInNldFRpbWVvdXQgYWxsb3dlZCIgYnV0IGdvdCAic2V0VGltZW91dCBibG9j
a2VkIgorRkFJTCBTaGFyZWQgd29ya2VyIGRlbGl2ZXJzIGl0cyBvd24gQ1NQIFNoYXJlZCB3b3Jr
ZXJzIGFyZSBub3Qgc3VwcG9ydGVkCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29m
ZmxpbmUvYXBwY2FjaGUvd29ya2Vycy9hcHBjYWNoZS13b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdv
cmtlci5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi43ZjJjZDUxOGM3ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vy
cy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDkgQEAKK0NPTlNPTEUgTUVTU0FHRTogQXBwbGljYXRpb25DYWNoZSBp
cyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIFNlcnZpY2VXb3JrZXJzIGluc3RlYWQuCisKK1BBU1Mg
RGVkaWNhdGVkIHdvcmtlciBvZiB0aGUgY2FjaGVkIHNjcmlwdAorUEFTUyBEZWRpY2F0ZWQgd29y
a2VyIG9mIHRoZSBmYWxsYmFja2VkIHNjcmlwdAorUEFTUyBEZWRpY2F0ZWQgd29ya2VyIG9mIHRo
ZSBub3QtaW4tY2FjaGUgc2NyaXB0CitGQUlMIFNoYXJlZCB3b3JrZXIgb2YgdGhlIGNhY2hlZCBz
Y3JpcHQgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVj
dCAiTm90U3VwcG9ydGVkRXJyb3I6IFNoYXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkIgor
RkFJTCBTaGFyZWQgd29ya2VyIG9mIHRoZSBmYWxsYmFja2VkIHNjcmlwdCBwcm9taXNlX3Rlc3Q6
IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJv
cjogU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQiCitGQUlMIFNoYXJlZCB3b3JrZXIg
b2YgdGhlIG5vdC1pbi1jYWNoZSBzY3JpcHQgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0
aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IFNoYXJlZCB3b3JrZXJz
IGFyZSBub3Qgc3VwcG9ydGVkIgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mvc2Ny
aXB0aW5nLTEvdGhlLXNjcmlwdC1lbGVtZW50L21vZHVsZS9pbXBvcnQtbWV0YS9pbXBvcnQtbWV0
YS11cmwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1z
Y3JpcHQtZWxlbWVudC9tb2R1bGUvaW1wb3J0LW1ldGEvaW1wb3J0LW1ldGEtdXJsLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmIyNDk5ZmFkY2I2
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUt
c2NyaXB0LWVsZW1lbnQvbW9kdWxlL2ltcG9ydC1tZXRhL2ltcG9ydC1tZXRhLXVybC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMSBAQAorCitQQVNTIGltcG9ydC5tZXRhLnVybCBpbiBhIHJvb3Qg
ZXh0ZXJuYWwgc2NyaXB0CitQQVNTIGltcG9ydC5tZXRhLnVybCBpbiBhIGRlcGVuZGVudCBleHRl
cm5hbCBzY3JpcHQKK1BBU1MgaW1wb3J0Lm1ldGEgaXMgYW4gb2JqZWN0CitQQVNTIGltcG9ydC5t
ZXRhIGlzIGV4dGVuc2libGUKK1BBU1MgaW1wb3J0Lm1ldGEncyBwcm9wZXJ0aWVzIGFyZSB3cml0
YWJsZSwgY29uZmlndXJhYmxlLCBhbmQgZW51bWVyYWJsZQorUEFTUyBpbXBvcnQubWV0YS51cmwg
d2hlbiBpbXBvcnRpbmcgdGhlIG1vZHVsZSB3aXRoIGRpZmZlcmVudCBmcmFnbWVudHMKK1BBU1Mg
aW1wb3J0Lm1ldGEudXJsIGluIGEgcm9vdCBpbmxpbmUgc2NyaXB0CitQQVNTIGltcG9ydC5tZXRh
LnVybCBhdCB0b3AtbGV2ZWwgbW9kdWxlIERlZGljYXRlZFdvcmtlcgorRkFJTCBpbXBvcnQubWV0
YS51cmwgYXQgdG9wLWxldmVsIG1vZHVsZSBTaGFyZWRXb3JrZXIgcHJvbWlzZV90ZXN0OiBVbmhh
bmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IFNo
YXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkIgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4
IDc5MmEwMGY5ZWExYS4uNDU3YzRhYTliMWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTc5
LDYgKzE3OSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAg
ICIke1dFQkNPUkVfRElSfS93b3JrZXJzL3NlcnZpY2UvY29udGV4dCIKICAgICAiJHtXRUJDT1JF
X0RJUn0vd29ya2Vycy9zZXJ2aWNlL3NlcnZlciIKICAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2Vy
cy9zaGFyZWQiCisgICAgIiR7V0VCQ09SRV9ESVJ9L3dvcmtlcnMvc2hhcmVkL2NvbnRleHQiCiAg
ICAgIiR7V0VCQ09SRV9ESVJ9L3dvcmtsZXRzIgogICAgICIke1dFQkNPUkVfRElSfS94bWwiCiAg
ICAgIiR7V0VCQ09SRV9ESVJ9L3htbC9wYXJzZXIiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA4OWI4
MmExM2Y3ZTQuLjBmMDM5MjA3NzA2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xOTU1LDkgKzE5
NTUsMTIgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHdvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKICAgICB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3Bl
LmgKICAgICB3b3JrZXJzL1dvcmtlckxvYWRlclByb3h5LmgKKyAgICB3b3JrZXJzL1dvcmtlck9i
amVjdFByb3h5LmgKKyAgICB3b3JrZXJzL1dvcmtlck9wdGlvbnMuaAogICAgIHdvcmtlcnMvV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaAogICAgIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlci5oCiAgICAgd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaAorICAg
IHdvcmtlcnMvV29ya2VyUmVwb3J0aW5nUHJveHkuaAogICAgIHdvcmtlcnMvV29ya2VyUnVuTG9v
cC5oCiAgICAgd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAogICAgIHdvcmtlcnMvV29ya2Vy
U2NyaXB0TG9hZGVyQ2xpZW50LmgKQEAgLTIwMDAsNiArMjAwMywxNSBAQCBzZXQoV2ViQ29yZV9Q
UklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAogICAgIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuaAogCisgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VySWRlbnRpZmll
ci5oCisgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyS2V5LmgKKyAgICB3b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKKyAgICB3b3JrZXJzL3NoYXJlZC9T
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgKKyAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXJQcm92aWRlci5oCisKKyAgICB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyLmgKKyAgICB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtl
clRocmVhZFByb3h5LmgKKwogICAgIHhtbC9DdXN0b21YUGF0aE5TUmVzb2x2ZXIuaAogICAgIHht
bC9YUGF0aEV4cHJlc3Npb24uaAogICAgIHhtbC9YUGF0aE5TUmVzb2x2ZXIuaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAppbmRleCBmNjZjY2Y4ZjA2YTUuLjlhYjg2MDRjOWQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTI3
ODYsMTAgKzI3ODYsMTIgQEAgd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNw
cAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyR2xvYmFsU2NvcGUuY3BwCi13b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2Vy
LmNwcAotd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJveHkuY3BwCit3b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcAord29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyUHJvdmlkZXIuY3BwCiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXIuY3BwCiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJUaHJlYWQuY3BwCit3b3JrZXJzL3No
YXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcAord29ya2Vycy9zaGFy
ZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAKIHdvcmtsZXRzL1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmNwcAogd29ya2xldHMvV29ya2xldC5jcHAKIHdvcmtsZXRzL1dvcmts
ZXRHbG9iYWxTY29wZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA1ZmQxZDY2OWNkYjguLjRlZDMxZjU4YmU0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
OTAzLDcgKzkwMyw3IEBACiAJCTJFNDM0NjRCMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9i
YWxTY29wZVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRTQzNDYzOTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGVQcm94eS5o
ICovOyB9OwogCQkyRTQzNDY0RDBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyTG9jYXRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjNCMEY1
NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJMb2NhdGlvbi5oICovOyB9OwogCQkyRTQzNDY1MDBGNTQ2
QTgyMDBCMEYxQkEgLyogV29ya2VyTWVzc2FnaW5nUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjNFMEY1NDZBODIwMEIwRjFCQSAvKiBX
b3JrZXJNZXNzYWdpbmdQcm94eS5oICovOyB9OwotCQkyRTQzNDY1MTBGNTQ2QTgyMDBCMEYxQkEg
LyogV29ya2VyT2JqZWN0UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJFNDM0NjNGMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94
eS5oICovOyB9OworCQkyRTQzNDY1MTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyT2JqZWN0UHJv
eHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0
NjNGMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94eS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFNDM0NjUzMEY1NDZBODIwMEIw
RjFCQSAvKiBXb3JrZXJSdW5Mb29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRTQzNDY0MTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyUnVuTG9vcC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFNDM0
NjU1MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjQzMEY1NDZBODIwMEIwRjFCQSAvKiBX
b3JrZXJUaHJlYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkyRTc1ODQxRTEyNzc5QURBMDA2MjYyOEIgLyogRmlsZVJlYWRlckxvYWRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU3NTg0MUIxMjc3
OUFEQTAwNjI2MjhCIC8qIEZpbGVSZWFkZXJMb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTEyNSw3ICsxMTI1LDcgQEAKIAkJNDE2QTA2
QTEyM0NDQUQwMzAwMzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZBMDY5NjIzQ0NB
QTlGMDAzNDcxMDkgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZENzVBMjIwQzY1MUE1
MDBEMDJEMkMgLyogTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RDc1OUYyMEM2NDQxMzAwRDAyRDJDIC8qIE5l
dHdvcmtMb2FkSW5mb3JtYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0MTZFMEIzQTIwOUJDM0NCMDA0QTk1RDkgLyogRmV0Y2hJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZF
MEIzNzIwOUJDM0MyMDA0QTk1RDkgLyogRmV0Y2hJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDE2RTI5QTYxMDJGQTk2MjAwN0ZD
MTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFMjlBNTEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVw
b3J0aW5nUHJveHkuaCAqLzsgfTsKKwkJNDE2RTI5QTYxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtl
clJlcG9ydGluZ1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTZFMjlBNTEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZF
NkZFODFCQkQxMkRGMDAwQTNGNjQgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYx
QkIzMTEwRDAwQjc2NEQ5IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFODFC
QkQxMkRGMDAwQTNGNjUgLyogSlNET01CaW5kaW5nSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQw
MEI3NjREQSAvKiBKU0RPTUJpbmRpbmdJbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU4MUJCRDEyREYwMDBB
M0Y3NCAvKiBUcmFuc2Zvcm1TdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEVB
IC8qIFRyYW5zZm9ybVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzMjEsNiArMTMyMSw4IEBACiAJCTQ2
MEUzMDc3MjIyRjRGMDMwMDlBMDYwNiAvKiBEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlz
c2lvblN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NjVFREQ5RjIyMkY0RUMzMDBCNDZFMTYgLyogRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBl
cm1pc3Npb25TdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQ2MjE4QUNCMUY3MkQ2NEUwMDU3NEZCRSAvKiBET01IaWdoUmVzVGltZVN0YW1w
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkUwMTZB
RDFGNzJENjFFMDAyODJCMkMgLyogRE9NSGlnaFJlc1RpbWVTdGFtcC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2MjczQ0FGMjYwRTU5RUYwMDZG
QUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2MjczQ0FDMjYwRTU5REYwMDZGQUE5MSAvKiBTV1NjcmlwdFN0b3Jh
Z2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0
NjI3RkY1OTI3OUI4MjQ5MDBBQTM5MTYgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MjdGRjU4Mjc5Qjgy
NDYwMEFBMzkxNiAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2MjdGRjVCMjc5Qjg3QUYwMEFBMzkx
NiAvKiBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjI3RkY1QTI3OUI4N0EyMDBBQTM5MTYgLyogU2hhcmVkV29y
a2VySWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQ2MkM3RjQxMjc1NkRCRTQwMEQwODNDOCAvKiBXZWJMb2NrSWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3ODAyQjIy
NzQ3MTE4NTAwREE5RkI2IC8qIFdlYkxvY2tJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYyRTRDNTAyNjE2QTgxMTAwM0EyQzY3
IC8qIFNjcmlwdEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDYyRTRDNEQyNjE2QTgwMTAwM0EyQzY3IC8qIFNjcmlwdEJ1ZmZlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2MzRDNzJDMjc1
N0RBQjIwMDI2QTgxNSAvKiBXZWJMb2NrTWFuYWdlclNuYXBzaG90LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njc4MDJCMDI3NDcxMTdCMDBEQTlGQjYg
LyogV2ViTG9ja01hbmFnZXJTbmFwc2hvdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0xMzQyLDE1ICsxMzQ0LDE4IEBACiAJCTQ2NzMwMjAyMUM0
RUZFNzgwMEJDQjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzMwMjAx
MUM0RUZFNjYwMEJDQjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50
ZXIuaCAqLzsgfTsKIAkJNDY3QTY4RDcyNzVFQTk5MTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRo
cmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3
QTY4RDQyNzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5oICovOyB9OwogCQk0
NjdBNjhEODI3NUVBOTk1MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdBNjhENTI3NUVB
OThDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmggKi87IH07Ci0JCTQ2N0E2
OEQ5Mjc1RUE5OTgwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJQcm94eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3QTY4RDYyNzVFQTk4QzAwOUIzMUM1
IC8qIFNoYXJlZFdvcmtlclByb3h5LmggKi87IH07Ci0JCTQ2N0E2OERBMjc1RUE5OUMwMDlCMzFD
NSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NjdBNjhEMjI3NUVBOThBMDA5QjMxQzUgLyogU2hhcmVkV29ya2Vy
TWFuYWdlci5oICovOyB9OwogCQk0NjgyRDIwMDFGNzk3ODMwMDBDODYzREIgLyogU3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2ODJEMUZGMUY3OTc4MjMwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2
ODM0NEUwMUVEREZBQUEwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MzQ0REUxRURERkE1RjAwQjc3OTVCIC8q
IERPTVJlY3RMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDY4M0RGNDAyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxT
Y29wZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2ODNERjNFMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNl
LmggKi87IH07CiAJCTQ2ODNERjQxMjc2N0U5MUEwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2Jh
bFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjgzREYzQjI3NjdERjI2MDA3RDAwQzggLyogU2hhZG93UmVhbG1HbG9iYWxTY29wZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODhFRTNDMjZE
RDI2MTAwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODhFRTNBMjZERDI2MEMwMDJBRjVDNCAvKiBDcm9z
c09yaWdpbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk0Njk0M0RDODI3NjNGODEyMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDY5NDNEQzUyNzYzRjgwRDAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0Njk0
M0RDOTI3NjNGODE3MDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5NDNEQzcyNzYz
RjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0Njk0M0RDQTI3NjNGODFD
MDA0QjYxMEUgLyogU2hhcmVkV29ya2VyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTQzREM0Mjc2M0Y4MEQwMDRCNjEwRSAvKiBTaGFy
ZWRXb3JrZXJQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTQ2OTg1RjIzMjdBNEE2QUQwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTg1RjIy
MjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjlDQ0NGRTI2OUQwMjFDMDA2RTAzMTQg
LyogQnJvYWRjYXN0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDY5Q0NDRkMyNjlEMDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjlE
NzdCODI3MDE2MjUxMDAxNDJGQTYgLyogTmF2aWdhdGlvblJlcXVlc3Rlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5RDc3QjYyNzAxNjI1MDAwMTQy
RkE2IC8qIE5hdmlnYXRpb25SZXF1ZXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk0NkE3OEIzNDI3OTlCRDcxMDAxMTU0RkUgLyogV29ya2Vy
T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUMxQjFEMjYyNkYxOEE0QjAwODgyREEyIC8qIFdvcmtlck9wdGlvbnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkFBQUEzRDI1RDM2MzIwMDBC
QUY0MkYgLyogQXVkaW9GaWxlUmVhZGVyQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QUFBQTNBMjVEMzYzMTQwMEJBRjQyRiAvKiBBdWRpb0Zp
bGVSZWFkZXJDb2NvYS5oICovOyB9OwogCQk0NkI2M0Y2QzFDNkU4RDE5MDAyRTkxNEIgLyogSlNF
dmVudFRhcmdldEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZCNjNGNkIxQzZFOENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI2
NTBERDIyOTYyNjI3MDBGRDhBQTQgLyogUGFnZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjY1MERCMjI5NjI2MjcwMEZEOEFBNCAv
KiBQYWdlSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0xMzY3LDYgKzEzNzIsNyBAQAogCQk0NkJEMDVDNjI1QkI2RTZDMDAyMjVG
MzAgLyogRXZlbnRMaXN0ZW5lck9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkQwNUMzMjVCQjZFNEUwMDIyNUYzMCAvKiBFdmVudExpc3Rl
bmVyT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQ2QzA5NjIxMjNENzhERDYwMDY1N0MwOSAvKiBIVFRQQ29va2llQWNjZXB0UG9saWN5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkMwOTYy
MDIzRDc4REQ2MDA2NTdDMDkgLyogSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QzM3NjYyMjA4NTE3N0Qw
MEM3MzgyOSAvKiBKU1JlbW90ZURPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDMzc2NjEyMDg1MTc2RDAwQzczODI5IC8qIEpTUmVtb3Rl
RE9NV2luZG93LmggKi87IH07CisJCTQ2QzQxNjlCMjc5QTA0QzcwMDI1MkMzQiAvKiBTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDYyNkI0NzUyNzlBMDNEMjAwQUVGMEIyIC8qIFNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDZDNjk2Q0IxRTcyMDVGNzAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5NkM5MUU3MjA1RTQwMDU5
NzkzNyAvKiBDUFVNb25pdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDZDNjk2Q0MxRTcyMDVGQzAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNjk2Q0Ex
RTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwICovOyB9OwogCQk0NkM4M0VGRTFBOUJC
RTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzgzRUZDMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmll
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05
MTgxLDkgKzkxODcsMTMgQEAKIAkJNDYwQ0JGMzMxRDRCQ0NGRTAwOTJFODhFIC8qIEpTRE9NV2lu
ZG93UHJvcGVydGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0RPTVdpbmRvd1Byb3BlcnRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjBDQkYzNDFENEJDQ0ZFMDA5MkU4OEUgLyogSlNET01XaW5kb3dQcm9wZXJ0aWVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NV2luZG93UHJvcGVydGllcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBEMTk0NDFGQ0UyMUREMDBDM0RCODUgLyogSlNT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjI2QjQ3NTI3OUEwM0QyMDBBRUYwQjIgLyogU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYyNzNDMjEyN0Ex
Q0JDNzAwNkExNUI5IC8qIEpTQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ3VzdG9tLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYyNzNDQUMyNjBFNTlERjAwNkZBQTkxIC8qIFNXU2NyaXB0
U3RvcmFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTV1NjcmlwdFN0b3Jh
Z2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYyNzNDQUUyNjBFNTlERjAwNkZB
QTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTV1NjcmlwdFN0b3JhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0NjI3RkY1NzI3OUI4MjQ1MDBBQTM5MTYgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFk
UHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjI3RkY1ODI3OUI4MjQ2
MDBBQTM5MTYgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDYyN0ZGNUEyNzlCODdBMjAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlcklk
ZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2Vy
SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjJFNEM0RDI2MTZB
ODAxMDAzQTJDNjcgLyogU2NyaXB0QnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNjcmlwdEJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjJF
NEM0RjI2MTZBODAxMDAzQTJDNjcgLyogU2NyaXB0QnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcxQyAvKiBQb3dlck9ic2VydmVyTWFj
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvd2VyT2JzZXJ2ZXJN
YWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTIzMCwxNCArOTI0MCwxMCBA
QAogCQk0NjczMDIwMTFDNEVGRTY2MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRD
b3VudEluY3JlbWVudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElnbm9y
ZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0Njc4MDJCMDI3NDcxMTdCMDBEQTlGQjYgLyogV2ViTG9ja01hbmFnZXJTbmFw
c2hvdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJMb2NrTWFuYWdlclNu
YXBzaG90Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NzgwMkIyMjc0NzExODUw
MERBOUZCNiAvKiBXZWJMb2NrSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJMb2NrSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk0NjdBNjhDRjI3NUVBOTg5MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyUHJveHkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NjdBNjhEMDI3NUVBOTg5MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFk
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlclRocmVhZC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2N0E2OEQxMjc1RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRX
b3JrZXJTY3JpcHRMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyU2Ny
aXB0TG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDY3QTY4RDIyNzVF
QTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hh
cmVkV29ya2VyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NjdBNjhE
MzI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDY3QTY4RDQyNzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDY3QTY4RDUyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExv
YWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDY3QTY4RDYyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJl
ZFdvcmtlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb3h5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODJEMUZGMUY3OTc4MjMwMEM4NjNEQiAvKiBTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dG9yZWRDcmVkZW50aWFsc1BvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjgzNDREQzFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTVJlY3RM
aXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzQ0REQxRURERkE1RjAw
Qjc3OTVCIC8qIERPTVJlY3RMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVJlY3RMaXN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkyNTAsNiArOTI1NiwxMiBAQAog
CQk0NjgzREYzRTI3NjdERjk4MDA3RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFz
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NoYWRvd1JlYWxtR2xvYmFs
U2NvcGVCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODhFRTNBMjZERDI2
MEMwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NPcmln
aW5Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OEI4QkRFMjVDQzg0OTMw
MEY2NzgyMiAvKiBKU0Jhc2VBdWRpb0NvbnRleHRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNCYXNlQXVkaW9Db250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDY5NDNEQzIyNzYzRjgwQzAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlclByb3ZpZGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb3ZpZGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQzQyNzYzRjgwRDAwNEI2MTBFIC8qIFNoYXJlZFdv
cmtlclByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb3ZpZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzREM1Mjc2M0Y4MEQwMDRCNjEwRSAvKiBT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNE
QzYyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzREM3Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5ODVGMjIy
N0E0QTY4NjAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktleS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDY5Q0NDRkEyNjlEMDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQnJvYWRjYXN0Q2hhbm5lbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2OUNDQ0ZDMjY5RDAyMDIwMDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFubmVs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEJyb2FkY2FzdENoYW5uZWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDY5Q0NDRkQyNjlEMDIwMzAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEJyb2FkY2FzdENoYW5uZWwuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtOTI4NCw2ICs5Mjk2LDcgQEAKIAkJNDZDMzc2NUYyMDg1MTc2QzAwQzczODI5IC8qIEpT
UmVtb3RlRE9NV2luZG93LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTUmVtb3RlRE9NV2luZG93LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZD
Mzc2NjEyMDg1MTc2RDAwQzczODI5IC8qIEpTUmVtb3RlRE9NV2luZG93LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUmVtb3RlRE9NV2luZG93Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2QzNBOEQzMjU0OEQ0QjcwMEM4QzUzQSAvKiBKU0F1ZGlvQnVmZmVy
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXVkaW9CdWZmZXJDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkM0MTY5RDI3OUEwNEQyMDAyNTJDM0IgLyog
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NkM2OTZDOTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDUFVNb25pdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzY5NkNBMUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25p
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENQVU1vbml0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkM4M0VGQjFBOUJCRTI5MDBBNzlB
NDEgLyogR2VvTm90aWZpZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR2VvTm90aWZpZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE1MTcs
NiArMjE1MzAsMTcgQEAKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwogCQl9OworCQk0NjI2QjQ3MzI3OUEwM0IxMDBBRUYwQjIgLyogY29udGV4dCAqLyA9IHsKKwkJ
CWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNDYyN0ZGNTcyNzlCODI0NTAw
QUEzOTE2IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcCAqLywKKwkJCQk0NjI3RkY1ODI3
OUI4MjQ2MDBBQTM5MTYgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCAqLywKKwkJCQk0NkM0
MTY5RDI3OUEwNEQyMDAyNTJDM0IgLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwICov
LAorCQkJCTQ2MjZCNDc1Mjc5QTAzRDIwMEFFRjBCMiAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlci5oICovLAorCQkJKTsKKwkJCXBhdGggPSBjb250ZXh0OworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKIAkJNDY0MjQwNDQyMEVBRjBCRDAwQjI5RkQyIC8qIGNvY29hICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTIxNTUxLDE2ICsyMTU3
NSwyMCBAQAogCQk0NjY5NENERTI3NTk0NDZEMDBFMzE1MEUgLyogc2hhcmVkICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0NjI2QjQ3MzI3OUEwM0IxMDBB
RUYwQjIgLyogY29udGV4dCAqLywKIAkJCQk0NjY5NENFMzI3NTk0NDhEMDBFMzE1MEUgLyogU2hh
cmVkV29ya2VyLmNwcCAqLywKIAkJCQk0NjY5NENFMjI3NTk0NDhEMDBFMzE1MEUgLyogU2hhcmVk
V29ya2VyLmggKi8sCiAJCQkJNDY2OTRDRTUyNzU5NDQ4RTAwRTMxNTBFIC8qIFNoYXJlZFdvcmtl
ci5pZGwgKi8sCiAJCQkJNDY2OTRDRTQyNzU5NDQ4RTAwRTMxNTBFIC8qIFNoYXJlZFdvcmtlckds
b2JhbFNjb3BlLmNwcCAqLywKIAkJCQk0NjY5NENFMTI3NTk0NDhDMDBFMzE1MEUgLyogU2hhcmVk
V29ya2VyR2xvYmFsU2NvcGUuaCAqLywKIAkJCQk0NjY5NENFMDI3NTk0NDhDMDBFMzE1MEUgLyog
U2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaWRsICovLAotCQkJCTQ2N0E2OEQzMjc1RUE5OEIwMDlC
MzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcCAqLywKLQkJCQk0NjdBNjhEMjI3NUVBOThB
MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oICovLAotCQkJCTQ2N0E2OENGMjc1RUE5
ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJQcm94eS5jcHAgKi8sCi0JCQkJNDY3QTY4RDYyNzVF
QTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclByb3h5LmggKi8sCisJCQkJNDYyN0ZGNUEyNzlC
ODdBMjAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlcklkZW50aWZpZXIuaCAqLywKKwkJCQk0Njk4NUYy
MjI3QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggKi8sCisJCQkJNDY5NDNEQzYy
NzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwICovLAor
CQkJCTQ2OTQzREM1Mjc2M0Y4MEQwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uLmggKi8sCisJCQkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIuaCAqLywKKwkJCQk0Njk0M0RDMjI3NjNGODBDMDA0QjYxMEUgLyogU2hh
cmVkV29ya2VyUHJvdmlkZXIuY3BwICovLAorCQkJCTQ2OTQzREM0Mjc2M0Y4MEQwMDRCNjEwRSAv
KiBTaGFyZWRXb3JrZXJQcm92aWRlci5oICovLAogCQkJCTQ2N0E2OEQxMjc1RUE5OEEwMDlCMzFD
NSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwICovLAogCQkJCTQ2N0E2OEQ1Mjc1RUE5
OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCAqLywKIAkJCQk0NjdBNjhE
MDI3NUVBOTg5MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmNwcCAqLywKQEAgLTMzODY2
LDYgKzMzODk0LDcgQEAKIAkJCQkyRDQ4MUYwMjE0NkI1QzU1MDBBQTc4MzQgLyogQ3Jvc3NmYWRl
R2VuZXJhdGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQzQxNjEyMEY2NTYyRkQwMDky
RDJGQiAvKiBDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2
NzJBQTk4MjZCMDk0MzMwMEU2RUMzOCAvKiBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LmggaW4g
SGVhZGVycyAqLywKKwkJCQk0NkE3OEIzNDI3OTlCRDcxMDAxMTU0RkUgLyogV29ya2VyT3B0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY4OEVFM0MyNkREMjYxMDAwMkFGNUM0IC8qIENyb3Nz
T3JpZ2luTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY3MkFBOTkyNkIwOTQzRjAwRTZFQzM4
IC8qIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUFCRTY3
QjFEMDU4MERCMDA2RDg2MkQgLyogQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmggaW4gSGVh
ZGVycyAqLywKQEAgLTMzOTA0LDYgKzMzOTMzLDcgQEAKIAkJCQk1N0ZFREQzRjFEQjZENTkyMDBF
Qjk2RjUgLyogQ3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1NzA2QTY5NjFEREU1Qzk1MDBBMDNCMTQgLyogQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBh
cmFtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcyMUE5OEIxRUNFNTcwNDAwODEyOTVBIC8qIENy
eXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDYyN0ZGNTky
NzlCODI0OTAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMUJEMzMxQTE4MkQ4REREMDBDMDVEOUYgLyogQ3J5cHRvQWxnb3JpdGhtUlNBU1NB
X1BLQ1MxX3YxXzUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMjVGODJDMTgyMkNGRUMwMEQ4NENE
OSAvKiBDcnlwdG9BbGdvcml0aG1TSEExLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTlBQzNFRjE4
MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmggaW4gSGVhZGVycyAqLywK
QEAgLTM0ODkwLDYgKzM0OTIwLDcgQEAKIAkJCQlDRDNFMjFERDIxODM0NDRBMDBFNjZGNTUgLyog
SW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDRFRUExMDAyNzQ3
NTdGMTAwNTk0QTgzIC8qIEltYWdlQ29udHJvbHNNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
Nzk3OTFBMEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTQ2QzQxNjlCMjc5QTA0QzcwMDI1MkMzQiAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBMDg4RjUyNjRFMUMwODAwM0UyQTZDIC8qIEltYWdlRGF0
YVNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDE5RkVBODFGNTczOTcyMDAwQzQyRkIg
LyogSW1hZ2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDE5RkVBRTFGNTc0QjZEMDAw
QzQyRkIgLyogSW1hZ2VEZWNvZGVyQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNTUxOCw2
ICszNTU0OSw3IEBACiAJCQkJMUE3NTBEOEUwQTkwRTUyMTAwMEZGMjE1IC8qIEpTTm9kZUl0ZXJh
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Q5QzJDMzBDMTdCNjlFMDA1QzkwQTIgLyogSlNO
b2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyMEIxOEQxOEU5RDIzNzAwNUE4MDgzIC8q
IEpTTm9kZUxpc3RDdXN0b20uaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2OTQzREM5Mjc2M0Y4MTcw
MDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkzMzUwM0NBNDEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxMEUyRjMzMjc2QkY2ODUwMDgwOTMzMyAvKiBKU05vdGlmaWNhdGlvbkRp
cmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwRTJGMkIyNzZCQ0ZFODAwODA5MzMzIC8q
IEpTTm90aWZpY2F0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzY2NjksNiArMzY3MDEs
NyBAQAogCQkJCTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA0MyAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0
aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTI5QzlBOTFGNTlDNTZCMDA5RDc0MDMgLyogUmVh
ZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2RTZG
RTgxQkJEMTJERjAwMEEzRjY0IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBp
biBIZWFkZXJzICovLAorCQkJCTQ2OTQzREM4Mjc2M0Y4MTIwMDRCNjEwRSAvKiBTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTI5QzlBRjFGNTlDRjVC
MDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1TaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTI5
QzlBQjFGNTlDNTczMDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1Tb3VyY2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZEMzE2MDNDMTJCMDI2NzYwMEMxQTM1OSAvKiBSZWFsdGltZUFuYWx5c2VyLmgg
aW4gSGVhZGVycyAqLywKQEAgLTM3MDQ2LDYgKzM3MDc5LDcgQEAKIAkJCQkwRjYwNUFFRDE1Rjk0
ODQ4MDA0REYwQzAgLyogU2Nyb2xsaW5nQ29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBRjYyRUU4MTREQTIyQTcwMDQxNTU2QyAvKiBTY3JvbGxpbmdDb29yZGluYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTM5MUE5OTExNjI3NDZDQjAwMjk3MzMwIC8qIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yTWFjLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjI3RkY1QjI3OUI4N0FGMDBBQTM5MTYg
LyogU2hhcmVkV29ya2VySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzEyREJBNDky
MUY4QUQ4MzAwOEYzNkIyIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9yVHlwZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVCNDY2NTYzMjVEMTRDMEEwMDBDRkUxNCAvKiBTY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5OTA1OUEyNkY2QkU4NTAwNTRGQkUwIC8q
IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNzE3MSw4
ICszNzIwNSw2IEBACiAJCQkJQ0QzNkMxNkIyNjBBNjVDQzAwQzhDNTI5IC8qIFNoYXJlZFJvdXRp
bmdBcmJpdHJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzRERkFEMDFGN0RBRTVEMDBDMjcy
NUIgLyogU2hhcmVkU3RyaW5nSGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFQTMwOTlF
Qjc4QzAwNTZFNTgxIC8qIFNoYXJlZFRpbWVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0NjdBNjhE
QTI3NUVBOTlDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJNDY3QTY4RDkyNzVFQTk5ODAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclByb3h5LmggaW4g
SGVhZGVycyAqLywKIAkJCQk0NjdBNjhEODI3NUVBOTk1MDA5QjMxQzUgLyogU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjdBNjhENzI3NUVBOTkxMDA5QjMx
QzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzREQjAyNjI3
MzM5RkUwMDA3QjBBRDEgLyogU2hvdWxkTG9jYWxpemVBeGlzTmFtZXMuaCBpbiBIZWFkZXJzICov
LApAQCAtMzc0MDYsNiArMzc0MzgsNyBAQAogCQkJCUIyMjI3OUMwMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdFbGxpcHNlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5QzgwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR0ZFQmxlbmRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIy
NzlDQjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQ2OTg1RjIzMjdBNEE2QUQwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXku
aCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUNFMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNv
bXBvbmVudFRyYW5zZmVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5RDEwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR0ZFQ29tcG9zaXRlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTkyMTMyNzUxMUMwRTZCQjAwNDU2MjM4IC8qIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKQEAgLTM4MDUzLDYgKzM4MDg2LDcgQEAKIAkJCQk4M0FDRDAxMzI1
MjI5RTEwMDAwRDEyNEUgLyogV29ya2xldE9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
NEE2QTNBMjUyNjg0NEEwMDc0N0Y1RCAvKiBXb3JrbGV0UGFyYW1ldGVycy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODMzQkQ4MTcyNTI0RDRGMjAwNkU3MkIzIC8qIFdvcmtsZXRQZW5kaW5nVGFza3Mu
aCBpbiBIZWFkZXJzICovLAorCQkJCTQ2OTQzRENBMjc2M0Y4MUMwMDRCNjEwRSAvKiBTaGFyZWRX
b3JrZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMjQwOTlFNjQ5MjAwNTZF
NTgxIC8qIFdyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDE2RTZGRTgxQkJEMTJERjAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVp
bHRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCQUYzQjI0MTJDMUEzOTgwMDAxNEJGMSAvKiBX
cml0aW5nRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcu
aAppbmRleCBkYzBmNTA5OGI4N2YuLmZhN2QyMzAyZWMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xv
Z2dpbmcuaApAQCAtMTA5LDYgKzEwOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBNKFNl
bGVjdGlvbikgXAogICAgIE0oU2VydmljZXMpIFwKICAgICBNKFNlcnZpY2VXb3JrZXIpIFwKKyAg
ICBNKFNoYXJlZFdvcmtlcikgXAogICAgIE0oU3BlbGxpbmdBbmRHcmFtbWFyKSBcCiAgICAgTShT
UUxEYXRhYmFzZSkgXAogICAgIE0oU3RvcmFnZSkgXApAQCAtMTI2LDYgKzEyNyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBNKFdlYkdMKSBcCiAgICAgTShXZWJSVEMpIFwKICAgICBNKFdl
YlJUQ1N0YXRzKSBcCisgICAgTShXb3JrZXIpIFwKICAgICBNKFhSKSBcCiAgICAgTShXaGVlbEV2
ZW50VGVzdE1vbml0b3IpIFwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9wdGlvbnMuaApp
bmRleCBmYmRhZWFiZThhYjcuLjc3MzM5NWI3OWExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJPcHRpb25zLmgKQEAgLTM0LDYgKzM0LDM2IEBAIHN0cnVjdCBXb3JrZXJPcHRpb25zIHsK
ICAgICBXb3JrZXJUeXBlIHR5cGUgeyBXb3JrZXJUeXBlOjpDbGFzc2ljIH07CiAgICAgRmV0Y2hS
ZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVudGlhbHMgeyBGZXRjaFJlcXVlc3RDcmVkZW50aWFsczo6
U2FtZU9yaWdpbiB9OwogICAgIFN0cmluZyBuYW1lOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdvcmtlck9wdGlvbnM+IGRlY29kZShEZWNvZGVy
Jik7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBXb3JrZXJPcHRpb25zOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHR5cGUgPDwg
Y3JlZGVudGlhbHMgPDwgbmFtZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6
b3B0aW9uYWw8V29ya2VyT3B0aW9ucz4gV29ya2VyT3B0aW9uczo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxXb3JrZXJUeXBlPiB3b3JrZXJUeXBlOworICAg
IGRlY29kZXIgPj4gd29ya2VyVHlwZTsKKyAgICBpZiAoIXdvcmtlclR5cGUpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPEZldGNoUmVxdWVzdENyZWRl
bnRpYWxzPiBjcmVkZW50aWFsczsKKyAgICBkZWNvZGVyID4+IGNyZWRlbnRpYWxzOworICAgIGlm
ICghY3JlZGVudGlhbHMpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gbmFtZTsKKyAgICBkZWNvZGVyID4+IG5hbWU7CisgICAgaWYgKCFu
YW1lKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyAqd29y
a2VyVHlwZSwgKmNyZWRlbnRpYWxzLCBXVEZNb3ZlKCpuYW1lKSB9IH07Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAppbmRl
eCA0MDY3MTczYTg5YTUuLmI3MTg1YTVlZGE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyVGhyZWFkLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIldvcmtlclRocmVhZC5o
IgogCiAjaW5jbHVkZSAiSURCQ29ubmVjdGlvblByb3h5LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgogI2luY2x1ZGUgIlNvY2tldFByb3ZpZGVyLmgiCkBAIC0xNjMsNiArMTY0LDExIEBAIHZv
aWQgV29ya2VyVGhyZWFkOjpldmFsdWF0ZVNjcmlwdElmTmVjZXNzYXJ5KFN0cmluZyYgZXhjZXB0
aW9uTWVzc2FnZSkKICAgICBpZiAoc291cmNlUHJvdmlkZXIpCiAgICAgICAgIGdsb2JhbFNjb3Bl
KCktPnNldE1haW5TY3JpcHRTb3VyY2VQcm92aWRlcigqc291cmNlUHJvdmlkZXIpOwogCisgICAg
aWYgKGV4Y2VwdGlvbk1lc3NhZ2UuaXNFbXB0eSgpKQorICAgICAgICBSRUxFQVNFX0xPRyhXb3Jr
ZXIsICJXb3JrZXJUaHJlYWQ6OmV2YWx1YXRlU2NyaXB0SWZOZWNlc3NhcnkoKSBTVUNDRVNTIik7
CisgICAgZWxzZQorICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXb3JrZXIsICJXb3JrZXJUaHJl
YWQ6OmV2YWx1YXRlU2NyaXB0SWZOZWNlc3NhcnkoKSBGQUlMVVJFICgle3ByaXZhdGV9cykiLCBl
eGNlcHRpb25NZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworCiAgICAgLy8gRnJlZSB0aGUgc3RhcnR1
cCBkYXRhIHRvIGNhdXNlIGl0cyBtZW1iZXIgdmFyaWFibGUgZGVyZWYncyBoYXBwZW4gb24gdGhl
IHdvcmtlcidzIHRocmVhZCAoc2luY2UKICAgICAvLyBhbGwgcmVmL2RlcmVmcyBvZiB0aGVzZSBv
YmplY3RzIGFyZSBoYXBwZW5pbmcgb24gdGhlIHRocmVhZCBhdCB0aGlzIHBvaW50KS4gTm90ZSB0
aGF0CiAgICAgLy8gV29ya2VyVGhyZWFkOjp+V29ya2VyVGhyZWFkIGhhcHBlbnMgb24gYSBkaWZm
ZXJlbnQgdGhyZWFkIHdoZXJlIGl0IHdhcyBjcmVhdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAKaW5kZXggNmE1OWIyZWZlOWExLi45MjZkMzU3
MDc4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yNiwxMyArMjYsMTcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFy
ZWRXb3JrZXIuaCIKIAorI2luY2x1ZGUgIkNsaWVudE9yaWdpbi5oIgogI2luY2x1ZGUgIkNvbnRl
bnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZXNzYWdlQ2hhbm5l
bC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyTWFu
YWdlci5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb3h5LmgiCisjaW5jbHVkZSAiU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb3ZpZGVy
LmgiCiAjaW5jbHVkZSAiV29ya2VyT3B0aW9ucy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0lkZW50aWZpZXJzRmFjdG9yeS5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+
CkBAIC00MSw4ICs0NSwzMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChTaGFyZWRXb3JrZXIpOwogCi1FeGNlcHRpb25PcjxSZWY8U2hhcmVkV29y
a2VyPj4gU2hhcmVkV29ya2VyOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBKU0M6OlJ1bnRp
bWVGbGFncyBydW50aW1lRmxhZ3MsIFN0cmluZyYmIHNjcmlwdFVSTFN0cmluZywgc3RkOjpvcHRp
b25hbDxzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4mJiBtYXliZU9wdGlvbnMp
CisjZGVmaW5lIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9H
KFNoYXJlZFdvcmtlciwgIiVwIC0gW2lkZW50aWZpZXI9JXtwdWJsaWN9c10gU2hhcmVkV29ya2Vy
OjoiIGZtdCwgdGhpcywgbV9pZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgIyNf
X1ZBX0FSR1NfXykKKyNkZWZpbmUgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPR19FUlJPUihmbXQs
IC4uLikgUkVMRUFTRV9MT0dfRVJST1IoU2hhcmVkV29ya2VyLCAiJXAgLSBbaWRlbnRpZmllcj0l
e3B1YmxpY31zXSBTaGFyZWRXb3JrZXI6OiIgZm10LCB0aGlzLCBtX2lkZW50aWZpZXIudG9TdHJp
bmcoKS51dGY4KCkuZGF0YSgpLCAjI19fVkFfQVJHU19fKQorCitzdGF0aWMgSGFzaE1hcDxTaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBTaGFyZWRXb3JrZXIqPiYgYWxsU2hhcmVkV29ya2Vy
cygpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8SGFzaE1hcDxTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBTaGFyZWRXb3JrZXIq
Pj4gYWxsU2hhcmVkV29ya2VyczsKKyAgICByZXR1cm4gYWxsU2hhcmVkV29ya2VyczsKK30KKwor
U2hhcmVkV29ya2VyKiBTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVyKFNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gYWxsU2hhcmVkV29ya2Vy
cygpLmdldChpZGVudGlmaWVyKTsKK30KKworc3RhdGljIGlubGluZSBTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uKiBtYWluVGhyZWFkQ29ubmVjdGlvbigpCiB7CisgICAgcmV0dXJuIFNoYXJl
ZFdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5zaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7Cit9
CisKK0V4Y2VwdGlvbk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBTaGFyZWRXb3JrZXI6OmNyZWF0ZShE
b2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZyYmIHNjcmlwdFVSTFN0cmluZywgc3RkOjpvcHRpb25h
bDxzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4mJiBtYXliZU9wdGlvbnMpCit7
CisgICAgaWYgKCFtYWluVGhyZWFkQ29ubmVjdGlvbigpKQorICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJTaGFyZWQgd29ya2VycyBhcmUgbm90IHN1cHBvcnRl
ZCIgfTsKKwogICAgIGlmICghZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3NTaGFy
ZWRXb3JrZXJzKGRvY3VtZW50LnRvcE9yaWdpbigpKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFNlY3VyaXR5RXJyb3IsICJUaGlzIGlmcmFtZSBkb2Vzbid0IGhhdmUgc3RvcmFnZSBhY2Nl
c3MiX3MgfTsKIApAQCAtNjcsMjYgKzk0LDMwIEBAIEV4Y2VwdGlvbk9yPFJlZjxTaGFyZWRXb3Jr
ZXI+PiBTaGFyZWRXb3JrZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIEpTQzo6UnVuCiAg
ICAgYXV0byBjaGFubmVsID0gTWVzc2FnZUNoYW5uZWw6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAg
YXV0byB0cmFuc2ZlcnJlZFBvcnQgPSBjaGFubmVsLT5wb3J0MigpLmRpc2VudGFuZ2xlKCk7CiAK
LSAgICBhdXRvIHNoYXJlZFdvcmtlciA9IGFkb3B0UmVmKCpuZXcgU2hhcmVkV29ya2VyKGRvY3Vt
ZW50LCBjaGFubmVsLT5wb3J0MSgpLCBydW50aW1lRmxhZ3MpKTsKKyAgICBhdXRvIHNoYXJlZFdv
cmtlciA9IGFkb3B0UmVmKCpuZXcgU2hhcmVkV29ya2VyKGRvY3VtZW50LCBjaGFubmVsLT5wb3J0
MSgpKSk7CiAgICAgc2hhcmVkV29ya2VyLT5zdXNwZW5kSWZOZWVkZWQoKTsKIAotICAgIFNoYXJl
ZFdvcmtlck1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3QodXJsLCBzaGFyZWRXb3JrZXIuZ2V0
KCksIFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwgV1RGTW92ZShvcHRpb25zKSk7CisgICAgQ2xp
ZW50T3JpZ2luIGNsaWVudE9yaWdpbiB7IGRvY3VtZW50LnRvcERvY3VtZW50KCkuc2VjdXJpdHlP
cmlnaW4oKS5kYXRhKCksIGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpIH07CisgICAg
bWFpblRocmVhZENvbm5lY3Rpb24oKS0+cmVxdWVzdFNoYXJlZFdvcmtlcihjbGllbnRPcmlnaW4s
IHNoYXJlZFdvcmtlci0+aWRlbnRpZmllcigpLCB1cmwsIFdURk1vdmUodHJhbnNmZXJyZWRQb3J0
KSwgb3B0aW9ucyk7CiAgICAgcmV0dXJuIHNoYXJlZFdvcmtlcjsKIH0KIAotU2hhcmVkV29ya2Vy
OjpTaGFyZWRXb3JrZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8TWVzc2FnZVBvcnQ+JiYgcG9y
dCwgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKQorU2hhcmVkV29ya2VyOjpTaGFyZWRX
b3JrZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8TWVzc2FnZVBvcnQ+JiYgcG9ydCkKICAgICA6
IEFjdGl2ZURPTU9iamVjdCgmZG9jdW1lbnQpCisgICAgLCBtX2lkZW50aWZpZXIoU2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKICAgICAsIG1fcG9ydChXVEZNb3ZlKHBv
cnQpKQogICAgICwgbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yKCJTaGFyZWRXb3JrZXI6IiArIElu
c3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCkpCi0gICAgLCBt
X3J1bnRpbWVGbGFncyhydW50aW1lRmxhZ3MpCi0gICAgLCBtX2NyZWF0aW9uVGltZShNb25vdG9u
aWNUaW1lOjpub3coKSkKLSAgICAsIG1fcHJveHkoU2hhcmVkV29ya2VyUHJveHk6OmNyZWF0ZSgq
dGhpcykpCiB7CisgICAgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRygiU2hhcmVkV29ya2VyOiIp
OworICAgIGFsbFNoYXJlZFdvcmtlcnMoKS5hZGQobV9pZGVudGlmaWVyLCB0aGlzKTsKIH0KIAog
U2hhcmVkV29ya2VyOjp+U2hhcmVkV29ya2VyKCkKIHsKLSAgICBtX3Byb3h5Lndvcmtlck9iamVj
dERlc3Ryb3llZCgpOworICAgIEFTU0VSVChhbGxTaGFyZWRXb3JrZXJzKCkuZ2V0KG1faWRlbnRp
ZmllcikgPT0gdGhpcyk7CisgICAgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRygiflNoYXJlZFdv
cmtlcjoiKTsKKyAgICBhbGxTaGFyZWRXb3JrZXJzKCkucmVtb3ZlKG1faWRlbnRpZmllcik7Cisg
ICAgQVNTRVJUKCFtX2lzQWN0aXZlKTsKIH0KIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogU2hh
cmVkV29ya2VyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKQEAgLTEwNCwxOSArMTM1
LDI2IEBAIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIFNoYXJlZFdvcmtlcjo6ZXZlbnRUYXJnZXRJbnRl
cmZhY2UoKSBjb25zdAogICAgIHJldHVybiBTaGFyZWRXb3JrZXJFdmVudFRhcmdldEludGVyZmFj
ZVR5cGU7CiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyOjpzdG9wKCkKK3ZvaWQgU2hhcmVkV29ya2Vy
OjpkaWRGYWlsTG9hZGluZygpCiB7Ci0gICAgdGVybWluYXRlKCk7CisgICAgU0hBUkVEX1dPUktF
Ul9SRUxFQVNFX0xPR19FUlJPUigifmRpZEZhaWxMb2FkaW5nOiIpOworICAgIHF1ZXVlVGFza1Rv
RGlzcGF0Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZl
bnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7CisgICAgbV9pc0FjdGl2ZSA9IGZhbHNlOwogfQogCiBi
b29sIFNoYXJlZFdvcmtlcjo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fcHJveHkuaGFzUGVuZGluZ0FjdGl2aXR5KCkgfHwgbV9pc0xvYWRpbmc7Cisg
ICAgcmV0dXJuIG1faXNBY3RpdmU7CiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyOjp0ZXJtaW5hdGUo
KQordm9pZCBTaGFyZWRXb3JrZXI6OnN0b3AoKQogewotICAgIG1fcHJveHkudGVybWluYXRlV29y
a2VyR2xvYmFsU2NvcGUoKTsKKyAgICBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HKCJzdG9wOiIp
OworICAgIG1faXNBY3RpdmUgPSBmYWxzZTsKKyAgICBtYWluVGhyZWFkQ29ubmVjdGlvbigpLT5z
aGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShtX2lkZW50aWZpZXIpOwogfQogCisjdW5kZWYg
U0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRworI3VuZGVmIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9M
T0dfRVJST1IKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaAppbmRleCA1MzI2ZWU1NDJjODguLjg3Y2M3NWVmYmU4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcs
MzkgKzI3LDM1IEBACiAKICNpbmNsdWRlICJBYnN0cmFjdFdvcmtlci5oIgogI2luY2x1ZGUgIkFj
dGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1bnRpbWVGbGFncy5o
PgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3
dGYvTW9ub3RvbmljVGltZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lc3Nh
Z2VQb3J0OwotY2xhc3MgU2hhcmVkV29ya2VyUHJveHk7CitjbGFzcyBSZXNvdXJjZUVycm9yOwog
CiBzdHJ1Y3QgV29ya2VyT3B0aW9uczsKIAogY2xhc3MgU2hhcmVkV29ya2VyIGZpbmFsIDogcHVi
bGljIEFic3RyYWN0V29ya2VyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKFNoYXJlZFdvcmtlcik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEV4Y2Vw
dGlvbk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBjcmVhdGUoRG9jdW1lbnQmLCBKU0M6OlJ1bnRpbWVG
bGFncywgU3RyaW5nJiYgc2NyaXB0VVJMLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxTdHJp
bmcsIFdvcmtlck9wdGlvbnM+PiYmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFNoYXJl
ZFdvcmtlcj4+IGNyZWF0ZShEb2N1bWVudCYsIFN0cmluZyYmIHNjcmlwdFVSTCwgc3RkOjpvcHRp
b25hbDxzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4mJik7CiAgICAgflNoYXJl
ZFdvcmtlcigpOwogCisgICAgc3RhdGljIFNoYXJlZFdvcmtlciogZnJvbUlkZW50aWZpZXIoU2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgTWVz
c2FnZVBvcnQmIHBvcnQoKSBjb25zdCB7IHJldHVybiBtX3BvcnQuZ2V0KCk7IH0KLSAgICBKU0M6
OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MoKSB7IHJldHVybiBtX3J1bnRpbWVGbGFnczsgfQog
CiAgICAgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyRm9ySW5zcGVjdG9yKCkgY29uc3QgeyByZXR1
cm4gbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yOyB9Ci0gICAgTW9ub3RvbmljVGltZSBjcmVhdGlv
blRpbWUoKSBjb25zdCB7IHJldHVybiBtX2NyZWF0aW9uVGltZTsgfQogCi0gICAgU2hhcmVkV29y
a2VyUHJveHkmIHByb3h5KCkgeyByZXR1cm4gbV9wcm94eTsgfQotCi0gICAgdm9pZCBzZXRJc0xv
YWRpbmcoYm9vbCBpc0xvYWRpbmcpIHsgbV9pc0xvYWRpbmcgPSBpc0xvYWRpbmc7IH0KKyAgICB2
b2lkIGRpZEZhaWxMb2FkaW5nKCk7CiAKICAgICAvLyBFdmVudFRhcmdldC4KICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWw7CiAK
IHByaXZhdGU6Ci0gICAgU2hhcmVkV29ya2VyKERvY3VtZW50JiwgUmVmPE1lc3NhZ2VQb3J0PiYm
LCBKU0M6OlJ1bnRpbWVGbGFncyk7Ci0KLSAgICB2b2lkIHRlcm1pbmF0ZSgpOworICAgIFNoYXJl
ZFdvcmtlcihEb2N1bWVudCYsIFJlZjxNZXNzYWdlUG9ydD4mJik7CiAKICAgICAvLyBFdmVudFRh
cmdldC4KICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNv
bnN0IGZpbmFsOwpAQCAtNzAsMTIgKzY2LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCB2aXJ0dWFs
SGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAKIAorICAgIFNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFJlZjxNZXNzYWdlUG9ydD4gbV9wb3J0
OwogICAgIFN0cmluZyBtX2lkZW50aWZpZXJGb3JJbnNwZWN0b3I7Ci0gICAgSlNDOjpSdW50aW1l
RmxhZ3MgbV9ydW50aW1lRmxhZ3M7Ci0gICAgTW9ub3RvbmljVGltZSBtX2NyZWF0aW9uVGltZTsK
LSAgICBTaGFyZWRXb3JrZXJQcm94eSYgbV9wcm94eTsgLy8gVGhlIHByb3h5IG91dGxpdmVzIHRo
ZSB3b3JrZXIgdG8gcGVyZm9ybSB0aHJlYWQgc2h1dGRvd24uCi0gICAgYm9vbCBtX2lzTG9hZGlu
ZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzQWN0aXZlIHsgdHJ1ZSB9OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlci5pZGwKaW5kZXggYjE3MWM5ZWRmODFiLi40Yzc0MTU0ZDgyMDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmlkbApAQCAtMjgsNyArMjgs
NyBAQAogICAgIEV4cG9zZWQ9V2luZG93CiBdCiBpbnRlcmZhY2UgU2hhcmVkV29ya2VyIDogRXZl
bnRUYXJnZXQgewotICBbQ2FsbFdpdGg9RG9jdW1lbnQmUnVudGltZUZsYWdzXSBjb25zdHJ1Y3Rv
cihVU1ZTdHJpbmcgc2NyaXB0VVJMLCBvcHRpb25hbCAoRE9NU3RyaW5nIG9yIFdvcmtlck9wdGlv
bnMpIG9wdGlvbnMpOworICBbQ2FsbFdpdGg9RG9jdW1lbnRdIGNvbnN0cnVjdG9yKFVTVlN0cmlu
ZyBzY3JpcHRVUkwsIG9wdGlvbmFsIChET01TdHJpbmcgb3IgV29ya2VyT3B0aW9ucykgb3B0aW9u
cyk7CiAKICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lc3NhZ2VQb3J0IHBvcnQ7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFsU2Nv
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFs
U2NvcGUuY3BwCmluZGV4IDQxMjFlYjU4YzIwNS4uM2M1NWE2ODdiZjg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFsU2Nv
cGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI2LDYgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hh
cmVkV29ya2VyR2xvYmFsU2NvcGUuaCIKIAorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNs
dWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlICJXb3JrZXJU
aHJlYWQuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCkBAIC0zMywxNyAr
MzksNDQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUpOwogCisjZGVmaW5lIFNDT1BFX1JFTEVBU0VfTE9H
KGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFtzaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTo6IiBmbXQsIHRo
aXMsIHRoaXMtPnRocmVhZCgpLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19f
KQorCiBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTo6U2hhcmVkV29ya2VyR2xvYmFsU2NvcGUoY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbXMsIFJlZjxTZWN1
cml0eU9yaWdpbj4mJiBvcmlnaW4sIFdvcmtlclRocmVhZCYgdGhyZWFkLCBSZWY8U2VjdXJpdHlP
cmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVj
dGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIpCiAgICAgOiBXb3JrZXJH
bG9iYWxTY29wZShXb3JrZXJUaHJlYWRUeXBlOjpTaGFyZWRXb3JrZXIsIHBhcmFtcywgV1RGTW92
ZShvcmlnaW4pLCB0aHJlYWQsIFdURk1vdmUodG9wT3JpZ2luKSwgY29ubmVjdGlvblByb3h5LCBz
b2NrZXRQcm92aWRlcikKICAgICAsIG1fbmFtZShuYW1lKQogeworICAgIFNDT1BFX1JFTEVBU0Vf
TE9HKCJTaGFyZWRXb3JrZXJHbG9iYWxTY29wZToiKTsKICAgICByZWxheEFkb3B0aW9uUmVxdWly
ZW1lbnQoKTsKICAgICBhcHBseUNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyhw
YXJhbXMuY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzKTsKIH0KIAorU2hhcmVk
V29ya2VyVGhyZWFkJiBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTo6dGhyZWFkKCkKK3sKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8U2hhcmVkV29ya2VyVGhyZWFkJj4oV29ya2VyR2xvYmFsU2NvcGU6
OnRocmVhZCgpKTsKK30KKwogdm9pZCBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTo6Y2xvc2UoKQog
eworICAgIFNDT1BFX1JFTEVBU0VfTE9HKCJjbG9zZToiKTsKICAgICB0aHJlYWQoKS5zdG9wKG51
bGxwdHIpOwogfQogCisvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93
b3JrZXJzLmh0bWwjZG9tLXNoYXJlZHdvcmtlciBzdGVwIDExLjUKK3ZvaWQgU2hhcmVkV29ya2Vy
R2xvYmFsU2NvcGU6OnBvc3RDb25uZWN0RXZlbnQoVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHRy
YW5zZmVycmVkUG9ydCwgU3RyaW5nJiYgc291cmNlT3JpZ2luKQoreworICAgIFNDT1BFX1JFTEVB
U0VfTE9HKCJwb3N0Q29ubmVjdEV2ZW50OiIpOworICAgIGF1dG8gc2VyaWFsaXplZFNjcmlwdFZh
bHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoIiIpOworICAgIEFTU0VSVChzZXJp
YWxpemVkU2NyaXB0VmFsdWUpOworICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5n
bGVQb3J0cygqdGhpcywgeyBXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCkgfSk7CisgICAgQVNTRVJU
KHBvcnRzLnNpemUoKSA9PSAxKTsKKyAgICBhdXRvIHBvcnQgPSBwb3J0c1swXTsKKyAgICBBU1NF
UlQocG9ydCk7CisgICAgYXV0byBldmVudCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUo
cG9ydHMpLCBzZXJpYWxpemVkU2NyaXB0VmFsdWUucmVsZWFzZU5vbk51bGwoKSwgc291cmNlT3Jp
Z2luLCB7IH0sIHBvcnQpOworICAgIGV2ZW50LT5pbml0RXZlbnQoZXZlbnROYW1lcygpLmNvbm5l
Y3RFdmVudCwgZmFsc2UsIGZhbHNlKTsKKworICAgIGRpc3BhdGNoRXZlbnQoV1RGTW92ZShldmVu
dCkpOworfQorCisjdW5kZWYgU0NPUEVfUkVMRUFTRV9MT0cKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlckdsb2JhbFNjb3BlLmgKaW5kZXggZjM3NzliODRkMTUwLi4xNWRkYzUzOGRiNmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2JhbFNj
b3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xv
YmFsU2NvcGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNSwxMSArMjUsMTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJN
ZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgi
CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIFNoYXJlZFdvcmtlclRocmVhZDsKIHN0cnVjdCBXb3JrZXJQYXJhbWV0ZXJzOwogCiBjbGFz
cyBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSBmaW5hbCA6IHB1YmxpYyBXb3JrZXJHbG9iYWxTY29w
ZSB7CkBAIC0zOSw3ICs0MSwxMSBAQCBwdWJsaWM6CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBUeXBlOjpTaGFyZWRXb3JrZXI7IH0KICAgICBjb25zdCBTdHJpbmcmIG5h
bWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICBTaGFyZWRXb3JrZXJUaHJlYWQmIHRo
cmVhZCgpOworCisgICAgdm9pZCBwb3N0Q29ubmVjdEV2ZW50KFRyYW5zZmVycmVkTWVzc2FnZVBv
cnQmJiwgU3RyaW5nJiYgc291cmNlT3JpZ2luKTsKICAgICB2b2lkIGNsb3NlKCk7CisKIHByaXZh
dGU6CiAgICAgU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBXb3JrZXJQYXJhbWV0ZXJzJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmLCBXb3JrZXJUaHJlYWQm
LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rp
b25Qcm94eSosIFNvY2tldFByb3ZpZGVyKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg3YTk3MjEwNDg3OQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaApA
QCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3
dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gU2hh
cmVkV29ya2VySWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgU2hhcmVkV29ya2VySWRlbnRpZmll
ciA9IE9iamVjdElkZW50aWZpZXI8U2hhcmVkV29ya2VySWRlbnRpZmllclR5cGU+OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1No
YXJlZFdvcmtlcktleS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
NWY5ZTZkYzkwYmE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyS2V5LmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ2xpZW50T3JpZ2luLmgiCisjaW5jbHVkZSA8d3RmL0hh
c2hlci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgU2hhcmVkV29ya2VyS2V5IHsK
KyAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luOworICAgIFVSTCB1cmw7CisgICAgU3Ry
aW5nIG5hbWU7CisKKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7Cit9OworCitpbmxpbmUgdW5z
aWduZWQgU2hhcmVkV29ya2VyS2V5OjpoYXNoKCkgY29uc3QKK3sKKyAgICBIYXNoZXIgaGFzaGVy
OworICAgIGFkZChoYXNoZXIsIG9yaWdpbi5oYXNoKCkpOworICAgIGFkZChoYXNoZXIsIHVybCk7
CisgICAgYWRkKGhhc2hlciwgbmFtZSk7CisgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7Cit9CisK
K2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkV29ya2VyS2V5JiBhLCBjb25zdCBT
aGFyZWRXb3JrZXJLZXkmIGIpCit7CisgICAgcmV0dXJuIGEub3JpZ2luID09IGIub3JpZ2luICYm
IGEudXJsID09IGIudXJsICYmIGEubmFtZSA9PSBiLm5hbWU7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRI
YXNoPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleT4geworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNo
KGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYga2V5KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGtleS5oYXNoKCk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2Vi
Q29yZTo6U2hhcmVkV29ya2VyS2V5JiBhLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkm
IGIpCisgICAgeworICAgICAgICByZXR1cm4gYSA9PSBiOworICAgIH0KKworICAgIHN0YXRpYyBj
b25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Cit9OworCit0
ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleT4gOiBH
ZW5lcmljSGFzaFRyYWl0czxXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk+IHsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNlOworICAgIHN0YXRpYyB2b2lk
IGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIHNsb3QpIHsg
bmV3IChOb3ROdWxsLCAmc2xvdC51cmwpIFVSTChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7
IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJDb3JlOjpTaGFyZWRX
b3JrZXJLZXkmIHNsb3QpIHsgcmV0dXJuIHNsb3QudXJsLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVl
KCk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDEyNmJjNGZlZDg3Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSwxMjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJTaGFyZWRXb3JrZXJNYW5hZ2VyLmgiCi0KLSNpbmNsdWRlICJDb250ZW50U2VjdXJp
dHlQb2xpY3kuaCIKLSNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiTG9hZGVyU3Ry
YXRlZ3kuaCIKLSNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRX
b3JrZXJHbG9iYWxTY29wZS5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb3h5LmgiCi0jaW5j
bHVkZSAiU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2Vy
VGhyZWFkLmgiCi0jaW5jbHVkZSAiV29ya2VyUnVuTG9vcC5oIgotI2luY2x1ZGUgIldvcmtlclNj
cmlwdExvYWRlci5oIgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUg
PHd0Zi9SdW5Mb29wLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU2hhcmVkV29ya2VyTWFu
YWdlciYgU2hhcmVkV29ya2VyTWFuYWdlcjo6c2luZ2xldG9uKCkKLXsKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8U2hhcmVkV29ya2VyTWFuYWdlcj4gaW5zdGFuY2U7Ci0gICAgcmV0dXJuIGlu
c3RhbmNlLmdldCgpOwotfQotCi12b2lkIFNoYXJlZFdvcmtlck1hbmFnZXI6OmNvbm5lY3QoY29u
c3QgVVJMJiB1cmwsIFNoYXJlZFdvcmtlciYgd29ya2VyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0
JiYgbWVzc2FnZVBvcnQsIFdvcmtlck9wdGlvbnMmJiBvcHRpb25zKQotewotICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7Ci0gICAgLy8gRklYTUU6IEhhbmRsZSB3b3JrZXJzIGZyb20gb3Ro
ZXIgcHJvY2Vzc2VzLCB3aGljaCB3aWxsIHByb2JhYmx5IHJlcXVpcmUgbW92aW5nIGNvbm5lY3Qg
dG8gdGhlIEZyYW1lTG9hZGVyQ2xpZW50IG9yIHNvbWV0aGluZy4KLSAgICAvLyBNYXliZSBzb21l
dGhpbmcgbW9yZSBsaWtlIHdoYXQgU2VydmljZVdvcmtlcnMgZG9lcy4KLQotICAgIC8vIEZJWE1F
OiBDaGVjayBpZiB3ZSBhbHJlYWR5IG1hZGUgYSB0aHJlYWQuCi0gICAgLy8gRklYTUU6IENoZWNr
IGlmIHRoZXJlJ3MgYWxyZWFkeSBhIHNoYXJlZCB3b3JrZXIgYW5kIHVzZSB0aGF0IGlmIHRoZXJl
IGlzLgotCi0gICAgYXV0byBsb2FkZXIgPSBtYWtlVW5pcXVlUmVmPFNoYXJlZFdvcmtlclNjcmlw
dExvYWRlcj4odXJsLCB3b3JrZXIsIFdURk1vdmUobWVzc2FnZVBvcnQpLCBXVEZNb3ZlKG9wdGlv
bnMpKTsKLSAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkZXItPmlkZW50aWZpZXIoKTsKLSAgICBt
X2xvYWRlcnMuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUobG9hZGVyKSk7Ci19Ci0KLXZvaWQgU2hh
cmVkV29ya2VyTWFuYWdlcjo6c2NyaXB0TG9hZEZhaWxlZChTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXImIGxvYWRlcikKLXsKLSAgICBBY3RpdmVET01PYmplY3Q6OnF1ZXVlVGFza1RvRGlzcGF0Y2hF
dmVudChsb2FkZXIud29ya2VyKCksIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2
ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOwotICAgIG1fbG9hZGVycy5yZW1vdmUobG9hZGVyLmlk
ZW50aWZpZXIoKSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyTWFuYWdlcjo6c2NyaXB0TG9hZGVk
U3VjY2Vzc2Z1bGx5KFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYgbG9hZGVyLCBjb25zdCBTY3Jp
cHRCdWZmZXImIHNjcmlwdEJ1ZmZlciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgU2hhcmVkV29ya2VyJiBzaGFyZWRXb3JrZXIsIFRyYW5zZmVycmVkTWVz
c2FnZVBvcnQmJiB0cmFuc2ZlcnJlZFBvcnQpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKLSAgICBhdXRvJiB3b3JrZXIgPSBsb2FkZXIud29ya2VyKCk7Ci0gICAgYXV0byYgb3B0
aW9ucyA9IGxvYWRlci5vcHRpb25zKCk7Ci0KLSAgICBhdXRvJiBwcm94eSA9IHNoYXJlZFdvcmtl
ci5wcm94eSgpOwotCi0gICAgcHJveHkuc3RhcnRXb3JrZXJHbG9iYWxTY29wZSgKLSAgICAgICAg
bG9hZGVyLnVybCgpLAotICAgICAgICBvcHRpb25zLm5hbWUsCi0gICAgICAgIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQudXNlckFnZW50KGxvYWRlci51cmwoKSksCi0gICAgICAgIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5pc09uTGluZSgpLAotICAgICAgICBzY3JpcHRC
dWZmZXIsCi0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY29udGVudFNlY3VyaXR5UG9s
aWN5KCktPnJlc3BvbnNlSGVhZGVycygpLAotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LnNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgpLAotICAgICAgICBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3koKSwKLSAgICAg
ICAgd29ya2VyLmNyZWF0aW9uVGltZSgpLAotICAgICAgICBSZWZlcnJlclBvbGljeTo6RW1wdHlT
dHJpbmcsCi0gICAgICAgIG9wdGlvbnMudHlwZSwKLSAgICAgICAgb3B0aW9ucy5jcmVkZW50aWFs
cywKLSAgICAgICAgd29ya2VyLnJ1bnRpbWVGbGFncygpCi0gICAgKTsKLSAgICBpZiAoIXByb3h5
LnRocmVhZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKGlzPERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7
Ci0gICAgYXV0byBzb3VyY2VPcmlnaW4gPSBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCkuc2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpOwotCi0gICAgcHJveHkudGhy
ZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFzayhbdHJhbnNmZXJyZWRQb3J0ID0gV1RGTW92ZSh0cmFu
c2ZlcnJlZFBvcnQpLCBzb3VyY2VPcmlnaW4gPSBXVEZNb3ZlKHNvdXJjZU9yaWdpbikuaXNvbGF0
ZWRDb3B5KCldIChhdXRvJiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSBtdXRhYmxlIHsKLSAgICAg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICAgICAgLy8gaHR0cHM6Ly9odG1s
LnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvd29ya2Vycy5odG1sI2RvbS1zaGFyZWR3b3JrZXIg
c3RlcCAxMS41Ci0gICAgICAgIGF1dG8gc2VyaWFsaXplZFNjcmlwdFZhbHVlID0gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUoIiIpOwotICAgICAgICBBU1NFUlQoc2VyaWFsaXplZFNjcmlw
dFZhbHVlKTsKLSAgICAgICAgYXV0byBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRz
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHsgV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpIH0pOwot
ICAgICAgICBBU1NFUlQocG9ydHMuc2l6ZSgpID09IDEpOwotICAgICAgICBhdXRvIHBvcnQgPSBw
b3J0c1swXTsKLSAgICAgICAgQVNTRVJUKHBvcnQpOwotICAgICAgICBhdXRvIGV2ZW50ID0gTWVz
c2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5y
ZWxlYXNlTm9uTnVsbCgpLCBzb3VyY2VPcmlnaW4sIHsgfSwgcG9ydCk7Ci0gICAgICAgIGV2ZW50
LT5pbml0RXZlbnQoZXZlbnROYW1lcygpLmNvbm5lY3RFdmVudCwgZmFsc2UsIGZhbHNlKTsKLQot
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzPFNoYXJl
ZFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7Ci0gICAgICAgIGF1
dG8mIHdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8U2hhcmVkV29ya2VyR2xvYmFsU2NvcGU+
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS5kaXNw
YXRjaEV2ZW50KFdURk1vdmUoZXZlbnQpKTsKLSAgICB9KTsKLQotICAgIG1fbG9hZGVycy5yZW1v
dmUobG9hZGVyLmlkZW50aWZpZXIoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi5kYmQzODE1OTJmMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcApAQCAtMCwwICsx
LDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5o
IgorI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVk
ZSAiU2NyaXB0QnVmZmVyLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCisjaW5jbHVkZSAi
U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgiCisjaW5jbHVkZSAiV29ya2VyRmV0Y2hSZXN1bHQu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjZGVmaW5lIENPTk5FQ1RJT05fUkVMRUFTRV9M
T0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCisjZGVmaW5lIENP
Tk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKFNo
YXJlZFdvcmtlciwgIiVwIC0gU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6IiBmbXQsIHRo
aXMsICMjX19WQV9BUkdTX18pCisKK3N0YXRpYyB1aW50NjRfdCBsb2FkZXJJZGVudGlmaWVyU2Vl
ZCA9IDA7CisKK1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OlNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CisKK1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246
On5TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCkgPSBkZWZhdWx0OworCit2b2lkIFNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb246OmZldGNoU2NyaXB0SW5DbGllbnQoVVJMJiYgdXJsLCBX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIsIFdvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFdvcmtlckZldGNoUmVzdWx0Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGF1dG8qIHdvcmtlck9iamVjdCA9
IFNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
cik7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiZmV0Y2hTY3JpcHRJbkNsaWVudDogc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zLCB3b3JrZXI9JXAiLCBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgd29ya2VyT2Jq
ZWN0KTsKKyAgICBpZiAoIXdvcmtlck9iamVjdCkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKHsgfSk7CisKKyAgICBhdXRvIGxvYWRlcklkZW50aWZpZXIgPSArK2xvYWRlcklkZW50
aWZpZXJTZWVkOworICAgIGF1dG8gbG9hZGVyID0gbWFrZVVuaXF1ZVJlZjxTaGFyZWRXb3JrZXJT
Y3JpcHRMb2FkZXI+KFdURk1vdmUodXJsKSwgKndvcmtlck9iamVjdCwgV1RGTW92ZSh3b3JrZXJP
cHRpb25zKSk7CisgICAgYXV0byBsb2FkZXJQdHIgPSBsb2FkZXIucHRyKCk7CisgICAgbV9sb2Fk
ZXJzLmFkZChsb2FkZXJJZGVudGlmaWVyLCBXVEZNb3ZlKGxvYWRlcikpOworCisgICAgbG9hZGVy
UHRyLT5sb2FkKFt0aGlzLCBsb2FkZXJJZGVudGlmaWVyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYgZmV0Y2hS
ZXN1bHQpIG11dGFibGUgeworICAgICAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJmZXRjaFNj
cmlwdEluQ2xpZW50OiBmaW5pc2hlZCBzY3JpcHQgbG9hZCwgc3VjY2Vzcz0lZCIsIGZldGNoUmVz
dWx0LmVycm9yLmlzTnVsbCgpKTsKKyAgICAgICAgYXV0byBsb2FkZXIgPSBtX2xvYWRlcnMudGFr
ZShsb2FkZXJJZGVudGlmaWVyKTsKKyAgICAgICAgQVNTRVJUKGxvYWRlcik7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGZldGNoUmVzdWx0KTsKKyAgICB9KTsKK30KKwordm9pZCBTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uOjpub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRGYWlsdXJlKFdl
YkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8qIHdvcmtl
ck9iamVjdCA9IFNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIoc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcik7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUigibm90aWZ5V29y
a2VyT2JqZWN0T2ZMb2FkRmFpbHVyZTogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1
YmxpY31zLCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSwgd29ya2VyT2JqZWN0KTsKKyAgICBpZiAod29ya2VyT2JqZWN0KQor
ICAgICAgICB3b3JrZXJPYmplY3QtPmRpZEZhaWxMb2FkaW5nKCk7Cit9CisKK3ZvaWQgU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIGF1dG8qIHdvcmtlck9iamVjdCA9IFNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIo
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xP
R19FUlJPUigicG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0OiBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyPSV7cHVibGljfXMsIHdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB3b3JrZXJPYmplY3QpOworICAgIGlmICh3
b3JrZXJPYmplY3QpCisgICAgICAgIEFjdGl2ZURPTU9iamVjdDo6cXVldWVUYXNrVG9EaXNwYXRj
aEV2ZW50KCp3b3JrZXJPYmplY3QsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgRXJyb3JF
dmVudDo6Y3JlYXRlKGVycm9yTWVzc2FnZSwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIsIHsgfSkpOworfQorCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPRworI3VuZGVm
IENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uNTE5MTFkNGExNjdkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNjIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIgor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1l
c3NhZ2VQb3J0OworY2xhc3MgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOworCitzdHJ1Y3QgQ2xp
ZW50T3JpZ2luOworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0Oworc3RydWN0IFdvcmtlck9wdGlv
bnM7CisKK2NsYXNzIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291
bnRlZDxTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uPiB7CitwdWJsaWM6CisgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB+U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpOworCisgICAg
dmlydHVhbCB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoY29uc3QgQ2xpZW50T3JpZ2luJiwgU2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgVVJMJiwgVHJhbnNmZXJyZWRNZXNzYWdl
UG9ydCYmLCBjb25zdCBXb3JrZXJPcHRpb25zJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzaGFy
ZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKSA9
IDA7CisKK3Byb3RlY3RlZDoKKyAgICAvLyBJUEMgbWVzc2FnZXMuCisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBmZXRjaFNjcmlwdEluQ2xpZW50KFVSTCYmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLCBXb3JrZXJPcHRpb25zJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBu
b3RpZnlXb3JrZXJPYmplY3RPZkxvYWRGYWlsdXJlKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29y
a2VyT2JqZWN0KFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwpOworCisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbigpOworCitwcml2YXRlOgorICAgIEhhc2hNYXA8dWludDY0X3QsIFVuaXF1ZVJlZjxT
aGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+PiBtX2xvYWRlcnM7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi5lYmNkNGE3YWU4N2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgKQEAg
LTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUHJv
Y2Vzc1F1YWxpZmllZC5oIgorI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyVHlw
ZSB7IH07Cit1c2luZyBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyID0gUHJvY2Vzc1F1YWxp
ZmllZDxPYmplY3RJZGVudGlmaWVyPFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXJUeXBlPj47
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLmZkOGUxOTdmYTI0MgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmNwcApAQCAt
MCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlNoYXJlZFdvcmtlclByb3ZpZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGlj
IFNoYXJlZFdvcmtlclByb3ZpZGVyKiBzaGFyZWRQcm92aWRlcjsKKworLy8gRm9yIFdlYktpdExl
Z2FjeS4KK2NsYXNzIER1bW15U2hhcmVkV29ya2VyUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgU2hh
cmVkV29ya2VyUHJvdmlkZXIgeworcHVibGljOgorICAgIFNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24qIHNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9
Cit9OworCitTaGFyZWRXb3JrZXJQcm92aWRlciYgU2hhcmVkV29ya2VyUHJvdmlkZXI6OnNpbmds
ZXRvbigpCit7CisgICAgaWYgKCFzaGFyZWRQcm92aWRlcikKKyAgICAgICAgc2hhcmVkUHJvdmlk
ZXIgPSBuZXcgRHVtbXlTaGFyZWRXb3JrZXJQcm92aWRlcjsKKyAgICByZXR1cm4gKnNoYXJlZFBy
b3ZpZGVyOworfQorCit2b2lkIFNoYXJlZFdvcmtlclByb3ZpZGVyOjpzZXRTaGFyZWRQcm92aWRl
cihTaGFyZWRXb3JrZXJQcm92aWRlciYgbmV3UHJvdmlkZXIpCit7CisgICAgUkVMRUFTRV9BU1NF
UlQoIXNoYXJlZFByb3ZpZGVyKTsKKyAgICBzaGFyZWRQcm92aWRlciA9ICZuZXdQcm92aWRlcjsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJvdmlkZXIuaApzaW1pbGFyaXR5IGluZGV4IDY0JQpy
ZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5h
Z2VyLmgKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
clByb3ZpZGVyLmgKaW5kZXggYWVmODI3OTAzNTg0Li5jYjU3Y2MxZTdiNWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSwyNiAr
MjUsMTcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJNZXNzYWdlUG9ydElkZW50aWZp
ZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCIKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRXb3JrZXI7Ci1jbGFzcyBTY3JpcHRCdWZmZXI7Ci1z
dHJ1Y3QgV29ya2VyT3B0aW9uczsKLXVzaW5nIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQgPSBzdGQ6
OnBhaXI8V2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlUG9y
dElkZW50aWZpZXI+OworY2xhc3MgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjsKIAotY2xh
c3MgU2hhcmVkV29ya2VyTWFuYWdlciB7CitjbGFzcyBTaGFyZWRXb3JrZXJQcm92aWRlciB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFNoYXJlZFdvcmtlck1hbmFnZXImIHNpbmdsZXRvbigpOwotICAg
IHZvaWQgY29ubmVjdChjb25zdCBVUkwmLCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJlZE1lc3Nh
Z2VQb3J0JiYsIFdvcmtlck9wdGlvbnMmJik7Ci0KLSAgICB2b2lkIHNjcmlwdExvYWRGYWlsZWQo
U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJik7Ci0gICAgdm9pZCBzY3JpcHRMb2FkZWRTdWNjZXNz
ZnVsbHkoU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIFNoYXJlZFdvcmtlciYsIFRyYW5zZmVycmVkTWVzc2FnZVBv
cnQmJik7CisgICAgc3RhdGljIFNoYXJlZFdvcmtlclByb3ZpZGVyJiBzaW5nbGV0b24oKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRTaGFyZWRQcm92aWRlcihTaGFyZWRXb3Jr
ZXJQcm92aWRlciYpOwogCi1wcml2YXRlOgotICAgIEhhc2hNYXA8U2hhcmVkV29ya2VyU2NyaXB0
TG9hZGVySWRlbnRpZmllciwgVW5pcXVlUmVmPFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj4+IG1f
bG9hZGVyczsKKyAgICB2aXJ0dWFsIH5TaGFyZWRXb3JrZXJQcm92aWRlcigpIHsgfQorICAgIHZp
cnR1YWwgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiogc2hhcmVkV29ya2VyQ29ubmVjdGlv
bigpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3h5LmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggM2JlMDc1M2Y4OTFkLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJveHkuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMjMzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiU2hhcmVkV29ya2VyUHJveHkuaCIKLQotI2luY2x1ZGUgIkNhY2hlU3RvcmFnZVBy
b3ZpZGVyLmgiCi0jaW5jbHVkZSAiRXJyb3JFdmVudC5oIgotI2luY2x1ZGUgIkV2ZW50TmFtZXMu
aCIKLSNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgotI2luY2x1ZGUgIk1lc3NhZ2VFdmVu
dC5oIgotI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1
ZGUgIlJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJT
aGFyZWRXb3JrZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oIgotI2lu
Y2x1ZGUgIlNoYXJlZFdvcmtlclRocmVhZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVNo
YXJlZFdvcmtlclByb3h5OjpTaGFyZWRXb3JrZXJQcm94eShTaGFyZWRXb3JrZXImIHNoYXJlZFdv
cmtlcikKLSAgICA6IG1fc2hhcmVkV29ya2VyKHNoYXJlZFdvcmtlcikKLSAgICAsIG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dChzaGFyZWRXb3JrZXIuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQot
ICAgICwgbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yKHNoYXJlZFdvcmtlci5pZGVudGlmaWVyRm9y
SW5zcGVjdG9yKCkpCi17Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnN0YXJ0V29ya2Vy
R2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUsIGNvbnN0IFNjcmlwdEJ1ZmZlciYg
c2NyaXB0QnVmZmVyLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMm
IGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywgYm9vbCBzaG91bGRCeXBhc3NN
YWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnN0IENyb3NzT3JpZ2luRW1iZWRkZXJQ
b2xpY3kmIGNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ksIE1vbm90b25pY1RpbWUgdGltZU9yaWdp
biwgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUgd29ya2VyVHlwZSwg
RmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVudGlhbHMsIEpTQzo6UnVudGltZUZsYWdzIHJ1
bnRpbWVGbGFncykKLXsKLSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBhdXRvIHBhcmFtZXRlcnMgPSBXb3JrZXJQYXJhbWV0ZXJzIHsKLSAgICAgICAg
c2NyaXB0VVJMLAotICAgICAgICBuYW1lLAotICAgICAgICBtX2lkZW50aWZpZXJGb3JJbnNwZWN0
b3IsCi0gICAgICAgIHVzZXJBZ2VudCwKLSAgICAgICAgaXNPbmxpbmUsCi0gICAgICAgIGNvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywKLSAgICAgICAgc2hvdWxkQnlwYXNzTWFp
bldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LAotICAgICAgICBjcm9zc09yaWdpbkVtYmVkZGVy
UG9saWN5LAotICAgICAgICB0aW1lT3JpZ2luLAotICAgICAgICByZWZlcnJlclBvbGljeSwKLSAg
ICAgICAgd29ya2VyVHlwZSwKLSAgICAgICAgY3JlZGVudGlhbHMsCi0gICAgICAgIG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+c2V0dGluZ3NWYWx1ZXMoKQotICAgIH07Ci0KLSAgICBpZiAoIW1f
d29ya2VyVGhyZWFkKSB7Ci0gICAgICAgIG1fd29ya2VyVGhyZWFkID0gU2hhcmVkV29ya2VyVGhy
ZWFkOjpjcmVhdGUocGFyYW1ldGVycywgc2NyaXB0QnVmZmVyLCAqdGhpcywgKnRoaXMsICp0aGlz
LCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LT50b3BPcmlnaW4oKSwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pZGJDb25uZWN0aW9uUHJv
eHkoKSwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zb2NrZXRQcm92aWRlcigpLCBydW50aW1l
RmxhZ3MpOwotICAgICAgICBtX3dvcmtlclRocmVhZC0+c3RhcnQoKTsKLSAgICB9Ci19Ci0KLXZv
aWQgU2hhcmVkV29ya2VyUHJveHk6OnRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCkKLXsKLSAg
ICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2Fza2Vk
VG9UZXJtaW5hdGUgPSB0cnVlOwotICAgIGlmIChtX3dvcmtlclRocmVhZCkKLSAgICAgICAgbV93
b3JrZXJUaHJlYWQtPnN0b3AobnVsbHB0cik7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6
OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYm
IG1lc3NhZ2UpCi17Ci0gICAgLy8gRklYTUU6IFNoYXJlZFdvcmtlciBkb2Vzbid0IGhhdmUgcG9z
dE1lc3NhZ2UsIHNvIHRoaXMgbWlnaHQgbm90IGJlIG5lY2Vzc2FyeS4KLSAgICBwb3N0VGFza1Rv
V29ya2VyR2xvYmFsU2NvcGUoW21lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpXShhdXRvJiBzY3Jp
cHRDb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byYgY29udGV4dCA9IGRvd25jYXN0PFNo
YXJlZFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRDb250ZXh0KTsKLSAgICAgICAgYXV0byBwb3J0
cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKHNjcmlwdENvbnRleHQsIFdURk1vdmUobWVz
c2FnZS50cmFuc2ZlcnJlZFBvcnRzKSk7Ci0gICAgICAgIGNvbnRleHQuZGlzcGF0Y2hFdmVudChN
ZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgbWVzc2FnZS5tZXNzYWdlLnJlbGVh
c2VOb25OdWxsKCkpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6cG9z
dFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYpPiYmIHRhc2spCi17Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKLSAgICAgICAg
cmV0dXJuOwotICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soV1RGTW92ZSh0
YXNrKSk7Ci19Ci0KLWJvb2wgU2hhcmVkV29ya2VyUHJveHk6Omhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faGFzUGVuZGluZ0FjdGl2aXR5ICYmICFtX2Fza2VkVG9U
ZXJtaW5hdGU7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6Ondvcmtlck9iamVjdERlc3Ry
b3llZCgpCi17Ci0gICAgbV9zaGFyZWRXb3JrZXIgPSBudWxscHRyOwotICAgIG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXNdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikg
ewotICAgICAgICBtX21heUJlRGVzdHJveWVkID0gdHJ1ZTsKLSAgICAgICAgaWYgKG1fd29ya2Vy
VGhyZWFkKQotICAgICAgICAgICAgdGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgp
OwotICAgIH0pOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5Ojpub3RpZnlOZXR3b3JrU3Rh
dGVDaGFuZ2UoYm9vbCBpc09ubGluZSkKLXsKLSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1fd29ya2VyVGhyZWFkKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFtpc09ubGluZV0g
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgYXV0byYgZ2xvYmFs
U2NvcGUgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCk7Ci0gICAgICAgIGds
b2JhbFNjb3BlLnNldElzT25saW5lKGlzT25saW5lKTsKLSAgICAgICAgZ2xvYmFsU2NvcGUuZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGlzT25saW5lID8gZXZlbnROYW1lcygpLm9ubGluZUV2
ZW50IDogZXZlbnROYW1lcygpLm9mZmxpbmVFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2
ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2Vy
UHJveHk6OnN1c3BlbmRGb3JCYWNrRm9yd2FyZENhY2hlKCkKLXsKLQotfQotCi12b2lkIFNoYXJl
ZFdvcmtlclByb3h5OjpyZXN1bWVGb3JCYWNrRm9yd2FyZENhY2hlKCkKLXsKLQotfQotCi12b2lk
IFNoYXJlZFdvcmtlclByb3h5Ojpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCkKLXsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBv
c3RUYXNrKFt0aGlzLCBlcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCks
IHNvdXJjZVVSTCA9IHNvdXJjZVVSTC5pc29sYXRlZENvcHkoKSwgbGluZU51bWJlciwgY29sdW1u
TnVtYmVyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKLSAgICAgICAgaWYgKCFtX3NoYXJl
ZFdvcmtlcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBXZSBkb24ndCBib3Ro
ZXIgY2hlY2tpbmcgdGhlIGFza2VkVG9UZXJtaW5hdGUoKSBmbGFnIGhlcmUsIGJlY2F1c2UgZXhj
ZXB0aW9ucyBzaG91bGQgKmFsd2F5cyogYmUgcmVwb3J0ZWQgZXZlbiBpZiB0aGUgdGhyZWFkIGlz
IHRlcm1pbmF0ZWQuCi0gICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBkaWZmZXJlbnQg
dGhhbiB0aGUgYmVoYXZpb3IgaW4gTWVzc2FnZVdvcmtlclRhc2ssIGJlY2F1c2UgdGVybWluYXRl
ZCB3b3JrZXJzIG5vIGxvbmdlciBkZWxpdmVyIG1lc3NhZ2VzIChzZWN0aW9uIDQuNiBvZiB0aGUg
V2ViV29ya2VyIHNwZWMpLCBidXQgdGhleSBkbyByZXBvcnQgZXhjZXB0aW9ucy4KLSAgICAgICAg
QWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKm1fc2hhcmVkV29ya2Vy
LCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIEVycm9yRXZlbnQ6OmNyZWF0ZShlcnJvck1l
c3NhZ2UsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB7IH0pKTsKLSAgICB9
KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6d29ya2VyR2xvYmFsU2NvcGVEZXN0cm95
ZWQoKQotewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXNdIChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JikgewotICAgICAgICB3b3JrZXJHbG9iYWxTY29wZURlc3Ry
b3llZEludGVybmFsKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnBv
c3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJikKLXsKLQot
fQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5Ojpjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmpl
Y3QoYm9vbCkKLXsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6cmVwb3J0UGVuZGluZ0Fj
dGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KQotewotICAgIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+cG9zdFRhc2soW3RoaXMsIGhhc1BlbmRpbmdBY3Rpdml0eV0gKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKSB7Ci0gICAgICAgIG1faGFzUGVuZGluZ0FjdGl2aXR5ID0gaGFzUGVuZGlu
Z0FjdGl2aXR5OwotICAgIH0pOwotfQotCi1SZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4g
U2hhcmVkV29ya2VyUHJveHk6OmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKQotewotICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxE
b2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgcmV0dXJuIGRvY3VtZW50
LnBhZ2UoKS0+Y2FjaGVTdG9yYWdlUHJvdmlkZXIoKS5jcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uKCk7Ci19Ci0KLVJlZlB0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9u
PiBTaGFyZWRXb3JrZXJQcm94eTo6Y3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29u
bmVjdGlvbigpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRvJiBkb2N1
bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAg
ICBpZiAoIWRvY3VtZW50LnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0
dXJuIGRvY3VtZW50LnBhZ2UoKS0+bGliV2ViUlRDUHJvdmlkZXIoKS5jcmVhdGVSVENEYXRhQ2hh
bm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJv
eHk6OnBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2sp
Ci17Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhXVEZNb3ZlKHRhc2sp
KTsKLX0KLQotYm9vbCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaywg
Y29uc3QgU3RyaW5nJiBtb2RlKQotewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRh
c2tGb3JNb2RlKFdURk1vdmUodGFzayksIG1vZGUpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12
b2lkIFNoYXJlZFdvcmtlclByb3h5Ojpwb3N0TWVzc2FnZVRvRGVidWdnZXIoY29uc3QgU3RyaW5n
JikKLXsKLQotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5OjpzZXRSZXNvdXJjZUNhY2hpbmdE
aXNhYmxlZEJ5V2ViSW5zcGVjdG9yKGJvb2wpCi17Ci0KLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQ
cm94eTo6d29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpCi17Ci0gICAgLy8gVGhp
cyBpcyBhbHdheXMgdGhlIGxhc3QgdGFzayB0byBiZSBwZXJmb3JtZWQsIHNvIHRoZSBwcm94eSBp
cyBub3QgbmVlZGVkIGZvciBjb21tdW5pY2F0aW9uCi0gICAgLy8gaW4gZWl0aGVyIHNpZGUgYW55
IG1vcmUuIEhvd2V2ZXIsIHRoZSBXb3JrZXIgb2JqZWN0IG1heSBzdGlsbCBleGlzdCwgYW5kIGl0
IGFzc3VtZXMgdGhhdCB0aGUgcHJveHkgZXhpc3RzLCB0b28uCi0gICAgbV9hc2tlZFRvVGVybWlu
YXRlID0gdHJ1ZTsKLSAgICBtX3dvcmtlclRocmVhZCA9IG51bGxwdHI7Ci0KLSAgICAvLyBUaGlz
IGJhbGFuY2VzIHRoZSBvcmlnaW5hbCByZWYgaW4gY29uc3RydWN0aW9uLgotICAgIGlmIChtX21h
eUJlRGVzdHJveWVkKQotICAgICAgICBkZXJlZigpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRleCAzMTFlYmQ2MDc4YmMuLmVhMmUwNDhjNzYyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2Ny
aXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDIzICsyOSwyNiBAQAogI2luY2x1ZGUgIkV2ZW50TmFt
ZXMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJT
aGFyZWRXb3JrZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJNYW5hZ2VyLmgiCisjaW5jbHVk
ZSAiV29ya2VyRmV0Y2hSZXN1bHQuaCIKICNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCiAjaW5j
bHVkZSAiV29ya2VyU2NyaXB0TG9hZGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hh
cmVkV29ya2VyU2NyaXB0TG9hZGVyOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIoY29uc3QgVVJM
JiB1cmwsIFNoYXJlZFdvcmtlciYgd29ya2VyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgcG9y
dCwgV29ya2VyT3B0aW9ucyYmIG9wdGlvbnMpCi0gICAgOiBtX2lkZW50aWZpZXIoU2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKLSAgICAsIG1fb3B0aW9ucyhX
VEZNb3ZlKG9wdGlvbnMpKQorU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpTaGFyZWRXb3JrZXJT
Y3JpcHRMb2FkZXIoVVJMJiYgdXJsLCBTaGFyZWRXb3JrZXImIHdvcmtlciwgV29ya2VyT3B0aW9u
cyYmIG9wdGlvbnMpCisgICAgOiBtX29wdGlvbnMoV1RGTW92ZShvcHRpb25zKSkKICAgICAsIG1f
d29ya2VyKHdvcmtlcikKLSAgICAsIG1fcG9ydChXVEZNb3ZlKHBvcnQpKQogICAgICwgbV9sb2Fk
ZXIoV29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGUoKSkKLSAgICAsIG1fcGVuZGluZ0FjdGl2aXR5
KHdvcmtlci5tYWtlUGVuZGluZ0FjdGl2aXR5KHdvcmtlcikpCi0gICAgLCBtX3VybCh1cmwpCisg
ICAgLCBtX3VybChXVEZNb3ZlKHVybCkpCiB7Ci0gICAgbV93b3JrZXItPnNldElzTG9hZGluZyh0
cnVlKTsKLSAgICBtX2xvYWRlci0+bG9hZEFzeW5jaHJvbm91c2x5KCp3b3JrZXIuc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBSZXNvdXJjZVJlcXVlc3QodXJsKSwgd29ya2VyLndvcmtlckZldGNo
T3B0aW9ucyhvcHRpb25zLCBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpTaGFyZWR3b3JrZXIp
LCBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6RW5mb3JjZVdvcmtlclNyY0RpcmVj
dGl2ZSwgU2VydmljZVdvcmtlcnNNb2RlOjpBbGwsICp0aGlzLCBXb3JrZXJSdW5Mb29wOjpkZWZh
dWx0TW9kZSgpKTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWQoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIEFTU0VSVCghbV9jb21wbGV0aW9uSGFuZGxlcik7CisgICAgbV9j
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgbV9s
b2FkZXItPmxvYWRBc3luY2hyb25vdXNseSgqbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgUmVzb3VyY2VSZXF1ZXN0KG1fdXJsKSwgbV93b3JrZXItPndvcmtlckZldGNoT3B0aW9u
cyhtX29wdGlvbnMsIEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OlNoYXJlZHdvcmtlciksIENv
bnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50OjpFbmZvcmNlV29ya2VyU3JjRGlyZWN0aXZl
LCBTZXJ2aWNlV29ya2Vyc01vZGU6OkFsbCwgKnRoaXMsIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRN
b2RlKCkpOwogfQogCiB2b2lkIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikKQEAgLTU1LDE2ICs1OCwxMiBAQCB2b2lkIFNoYXJlZFdvcmtlclNjcmlwdExv
YWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudAog
CiB2b2lkIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6bm90aWZ5RmluaXNoZWQoKQogewotICAg
IG1fd29ya2VyLT5zZXRJc0xvYWRpbmcoZmFsc2UpOworICAgIGlmIChtX2xvYWRlci0+ZmFpbGVk
KCkpCisgICAgICAgIHJldHVybiBtX2NvbXBsZXRpb25IYW5kbGVyKHdvcmtlckZldGNoRXJyb3Io
bV9sb2FkZXItPmVycm9yKCkpKTsKIAotICAgIGF1dG8qIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQg
PSBtX3dvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmIChtX2xvYWRlci0+
ZmFpbGVkKCkgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIHsKLSAgICAgICAgbV93b3JrZXIt
PmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZl
bnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOwotICAgICAgICBT
aGFyZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5zY3JpcHRMb2FkRmFpbGVkKCp0aGlzKTsg
Ly8gZGVsZXRlcyB0aGlzLgotICAgIH0gZWxzZSB7CisgICAgaWYgKGF1dG8qIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgPSBtX3dvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkKCpzY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBtX2xvYWRlci0+aWRlbnRpZmllcigpLCBtX2xvYWRlci0+c2NyaXB0KCkudG9T
dHJpbmcoKSk7Ci0gICAgICAgIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNpbmdsZXRvbigpLnNjcmlw
dExvYWRlZFN1Y2Nlc3NmdWxseSgqdGhpcywgbV9sb2FkZXItPnNjcmlwdCgpLCAqbV93b3JrZXIt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV93b3JrZXIuZ2V0KCksIHN0ZDo6ZXhjaGFuZ2Uo
bV9wb3J0LCB7IH0pKTsgLy8gZGVsZXRlcyB0aGlzLgotICAgIH0KKyAgICBtX2NvbXBsZXRpb25I
YW5kbGVyKHsgbV9sb2FkZXItPnNjcmlwdCgpLCBtX2xvYWRlci0+Y2VydGlmaWNhdGVJbmZvKCks
IG1fbG9hZGVyLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSwgbV9sb2FkZXItPmNyb3NzT3JpZ2lu
RW1iZWRkZXJQb2xpY3koKSwgbV9sb2FkZXItPnJlZmVycmVyUG9saWN5KCksIHsgfSB9KTsgLy8g
ZGVsZXRlcyB0aGlzLgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5o
CmluZGV4IGJmMWQ0YWVmM2EwOS4uZWIwYjcxNDViZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw3
ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiTWVzc2FnZVBvcnRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgpAQCAtMzgs
MzMgKzM3LDI4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2hhcmVkV29ya2VyOwog
Y2xhc3MgV29ya2VyU2NyaXB0TG9hZGVyOwotCi1jbGFzcyBTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXI7Ci11c2luZyBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXJJZGVudGlmaWVyID0gT2JqZWN0SWRl
bnRpZmllcjxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+OwotCi11c2luZyBUcmFuc2ZlcnJlZE1l
c3NhZ2VQb3J0ID0gc3RkOjpwYWlyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciwgV2Vi
Q29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyPjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsK
IAogY2xhc3MgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyIDogcHJpdmF0ZSBXb3JrZXJTY3JpcHRM
b2FkZXJDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcihjb25zdCBVUkwmLCBTaGFyZWRXb3JrZXImLCBUcmFu
c2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdvcmtlck9wdGlvbnMmJik7CisgICAgU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyKFVSTCYmLCBTaGFyZWRXb3JrZXImLCBXb3JrZXJPcHRpb25zJiYpOworCisg
ICAgdm9pZCBsb2FkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1
bHQmKT4mJik7CiAKLSAgICBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBjb25zdCBVUkwmIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgU2hhcmVkV29ya2VyJiB3b3JrZXIoKSB7
IHJldHVybiBtX3dvcmtlci5nZXQoKTsgfQotICAgIGNvbnN0IFdvcmtlck9wdGlvbnMmIG9wdGlv
bnMoKSB7IHJldHVybiBtX29wdGlvbnM7IH0KKyAgICBjb25zdCBXb3JrZXJPcHRpb25zJiBvcHRp
b25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZCgpIGZpbmFsOwogCi0g
ICAgY29uc3QgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7
CiAgICAgY29uc3QgV29ya2VyT3B0aW9ucyBtX29wdGlvbnM7CiAgICAgY29uc3QgUmVmPFNoYXJl
ZFdvcmtlcj4gbV93b3JrZXI7Ci0gICAgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBtX3BvcnQ7CiAg
ICAgY29uc3QgUmVmPFdvcmtlclNjcmlwdExvYWRlcj4gbV9sb2FkZXI7Ci0gICAgY29uc3QgUmVm
PEFjdGl2ZURPTU9iamVjdDo6UGVuZGluZ0FjdGl2aXR5PFNoYXJlZFdvcmtlcj4+IG1fcGVuZGlu
Z0FjdGl2aXR5OwogICAgIGNvbnN0IFVSTCBtX3VybDsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFdvcmtlckZldGNoUmVzdWx0Jik+IG1fY29tcGxldGlvbkhhbmRsZXI7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zaGFyZWQvU2hhcmVkV29ya2VyVGhyZWFkLmNwcAppbmRleCA5ZWQ1NTg4ZmJkNzkuLmVmZTA1
ZTI3YzE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXJUaHJlYWQuY3BwCkBAIC0zMSwxNCArMzEsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1TaGFyZWRXb3JrZXJUaHJlYWQ6OlNoYXJlZFdvcmtlclRocmVhZChjb25zdCBXb3Jr
ZXJQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBTY3JpcHRCdWZmZXImIHNvdXJjZUNvZGUs
IFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQcm94eSwgV29ya2VyRGVidWdnZXJQcm94eSYgZGVi
dWdnZXJQcm94eSwgV29ya2VyT2JqZWN0UHJveHkmIG9iamVjdFByb3h5LCBXb3JrZXJUaHJlYWRT
dGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBJREJD
bGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRl
ciogc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncykKK1NoYXJl
ZFdvcmtlclRocmVhZDo6U2hhcmVkV29ya2VyVGhyZWFkKFNoYXJlZFdvcmtlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgU2Ny
aXB0QnVmZmVyJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFdv
cmtlckRlYnVnZ2VyUHJveHkmIGRlYnVnZ2VyUHJveHksIFdvcmtlck9iamVjdFByb3h5JiBvYmpl
Y3RQcm94eSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlP
cmlnaW4mIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rp
b25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFn
cyBydW50aW1lRmxhZ3MpCiAgICAgOiBXb3JrZXJUaHJlYWQocGFyYW1ldGVycywgc291cmNlQ29k
ZSwgbG9hZGVyUHJveHksIGRlYnVnZ2VyUHJveHksIG9iamVjdFByb3h5LCBzdGFydE1vZGUsIHRv
cE9yaWdpbiwgY29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlciwgcnVudGltZUZsYWdzKQor
ICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX25hbWUocGFyYW1ldGVycy5u
YW1lLmlzb2xhdGVkQ29weSgpKQogeworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVw
IC0gU2hhcmVkV29ya2VyVGhyZWFkOjpTaGFyZWRXb3JrZXJUaHJlYWQ6IiwgdGhpcyk7CiB9CiAK
IFJlZjxXb3JrZXJHbG9iYWxTY29wZT4gU2hhcmVkV29ya2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJH
bG9iYWxTY29wZShjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBSZWY8U2VjdXJp
dHlPcmlnaW4+JiYgb3JpZ2luLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luKQogewor
ICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gU2hhcmVkV29ya2VyVGhyZWFkOjpj
cmVhdGVXb3JrZXJHbG9iYWxTY29wZToiLCB0aGlzKTsKICAgICByZXR1cm4gU2hhcmVkV29ya2Vy
R2xvYmFsU2NvcGU6OmNyZWF0ZShzdGQ6OmV4Y2hhbmdlKG1fbmFtZSwgeyB9KSwgcGFyYW1ldGVy
cywgV1RGTW92ZShvcmlnaW4pLCAqdGhpcywgV1RGTW92ZSh0b3BPcmlnaW4pLCBpZGJDb25uZWN0
aW9uUHJveHkoKSwgc29ja2V0UHJvdmlkZXIoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyVGhyZWFkLmgKaW5kZXggMmYwNTZmOWQ1OWJi
Li45ZWEyNDg0N2QzOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlclRocmVhZC5oCkBAIC0yNSwyMSArMjUsMjcgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV29ya2Vy
VGhyZWFkLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV29ya2VyT2JqZWN0UHJv
eHk7CiAKKy8vIEZJWE1FOiBNb3ZlIHRvIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQuCiBjbGFzcyBT
aGFyZWRXb3JrZXJUaHJlYWQgOiBwdWJsaWMgV29ya2VyVGhyZWFkIHsKIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmPFNoYXJlZFdvcmtlclRocmVhZD4g
Y3JlYXRlKEFyZ3MmJi4uLiBhcmdzKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZFdvcmtl
clRocmVhZChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsgfQorCisgICAgU2hhcmVkV29y
a2VySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9
CisKIHByaXZhdGU6Ci0gICAgU2hhcmVkV29ya2VyVGhyZWFkKGNvbnN0IFdvcmtlclBhcmFtZXRl
cnMmLCBjb25zdCBTY3JpcHRCdWZmZXImIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5Jiwg
V29ya2VyRGVidWdnZXJQcm94eSYsIFdvcmtlck9iamVjdFByb3h5JiwgV29ya2VyVGhyZWFkU3Rh
cnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNv
bm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKiwgSlNDOjpSdW50aW1lRmxhZ3MpOworICAg
IFNoYXJlZFdvcmtlclRocmVhZChTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXb3JrZXJQ
YXJhbWV0ZXJzJiwgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQ
cm94eSYsIFdvcmtlckRlYnVnZ2VyUHJveHkmLCBXb3JrZXJPYmplY3RQcm94eSYsIFdvcmtlclRo
cmVhZFN0YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgSURCQ2xpZW50
OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciosIEpTQzo6UnVudGltZUZsYWdz
KTsKIAogICAgIFJlZjxXb3JrZXJHbG9iYWxTY29wZT4gY3JlYXRlV29ya2VyR2xvYmFsU2NvcGUo
Y29uc3QgV29ya2VyUGFyYW1ldGVycyYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiwgUmVmPFNlY3Vy
aXR5T3JpZ2luPiYmIHRvcE9yaWdpbikgZmluYWw7CiAgICAgQVNDSUlMaXRlcmFsIHRocmVhZE5h
bWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiV2ViQ29yZTogU2hhcmVkV29ya2VyIl9zOyB9CiAK
KyAgICBTaGFyZWRXb3JrZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBTdHJpbmcgbV9u
YW1lOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29u
dGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjA3YTkwZDk4MDUxMgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgi
CisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkUHJv
eHkuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlciYgU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyPiBzaGFyZWRNYW5hZ2VyOworICAgIHJldHVybiBzaGFyZWRNYW5h
Z2VyOworfQorCitTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSogU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXI6OnNoYXJlZFdvcmtlcihTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklk
ZW50aWZpZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd29ya2VyTWFwLmdldChzaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyKTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c3Rv
cFNoYXJlZFdvcmtlcihTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZp
ZXIpCit7CisgICAgYXV0byB3b3JrZXIgPSBtX3dvcmtlck1hcC50YWtlKHNoYXJlZFdvcmtlcklk
ZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyOjpzdG9wU2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUi
IFBSSXU2NCAiLCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCks
IHdvcmtlci5nZXQoKSk7CisgICAgaWYgKCF3b3JrZXIpCisgICAgICAgIHJldHVybjsKKworICAg
IHdvcmtlci0+c2V0QXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCgpOworCisgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBiZSBhYmxlIHRvIGRlYWwgd2l0aCB0aGUgdGhyZWFkIGJlaW5nIHVucmVzcG9u
c2l2ZSBoZXJlLgorCisgICAgYXV0byYgdGhyZWFkID0gd29ya2VyLT50aHJlYWQoKTsKKyAgICB0
aHJlYWQuc3RvcChbd29ya2VyID0gV1RGTW92ZSh3b3JrZXIpXSgpIG11dGFibGUgeworICAgICAg
ICAvLyBTcGluIHRoZSBydW5sb29wIGJlZm9yZSByZWxlYXNpbmcgdGhlIHNoYXJlZCB3b3JrZXIg
dGhyZWFkIHByb3h5LCBhcyB0aGVyZSB3b3VsZCBvdGhlcndpc2UgYmUKKyAgICAgICAgLy8gYSBy
YWNlIHRvd2FyZHMgaXRzIGRlc3RydWN0aW9uLgorICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3
b3JrZXIgPSBXVEZNb3ZlKHdvcmtlcildIHsgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXI6OnN0b3BBbGxTaGFyZWRXb3JrZXJzKCkKK3sKKyAgICB3aGls
ZSAoIW1fd29ya2VyTWFwLmlzRW1wdHkoKSkKKyAgICAgICAgc3RvcFNoYXJlZFdvcmtlcihtX3dv
cmtlck1hcC5iZWdpbigpLT5rZXkpOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyOjpzZXRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYmIGNvbm5lY3Rp
b24pCit7CisgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24gfHwgbV9jb25uZWN0aW9uLT5pc0Nsb3Nl
ZCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24gPSBXVEZNb3ZlKGNvbm5lY3Rpb24pOworfQorCithdXRv
IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpjb25uZWN0aW9uKCkgY29uc3QgLT4gQ29ubmVj
dGlvbioKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOworfQorCit2b2lkIFNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpyZWdpc3RlclNoYXJlZFdvcmtlclRocmVhZChSZWY8U2hh
cmVkV29ya2VyVGhyZWFkUHJveHk+JiYgcHJveHkpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlcjo6cmVnaXN0ZXJTaGFyZWRXb3JrZXJUaHJlYWQ6IHNoYXJlZFdvcmtlcklkZW50aWZp
ZXI9JSIgUFJJdTY0LCBwcm94eS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworCisgICAgYXV0
byByZXN1bHQgPSBtX3dvcmtlck1hcC5hZGQocHJveHktPmlkZW50aWZpZXIoKSwgcHJveHkuY29w
eVJlZigpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwor
CisgICAgcHJveHktPnRocmVhZCgpLnN0YXJ0KFtdKGNvbnN0IFN0cmluZyYgLypleGNlcHRpb25N
ZXNzYWdlKi8pIHsgfSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNv
bm5lY3Rpb246OnBvc3RDb25uZWN0RXZlbnQoU2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRX
b3JrZXJJZGVudGlmaWVyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgdHJhbnNmZXJyZWRQb3J0
LCBTdHJpbmcmJiBzb3VyY2VPcmlnaW4pCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICBhdXRvKiBwcm94eSA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24o
KS5zaGFyZWRXb3JrZXIoc2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0co
U2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb246OnBv
c3RDb25uZWN0RXZlbnQ6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHByb3h5
PSVwIiwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpLCBwcm94eSk7CisgICAgaWYg
KCFwcm94eSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJveHktPnRocmVhZCgpLnJ1bkxvb3Ao
KS5wb3N0VGFzayhbdHJhbnNmZXJyZWRQb3J0ID0gV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBz
b3VyY2VPcmlnaW4gPSBXVEZNb3ZlKHNvdXJjZU9yaWdpbikuaXNvbGF0ZWRDb3B5KCldIChhdXRv
JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CisgICAgICAgIGRvd25jYXN0PFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlPihz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KS5wb3N0Q29ubmVjdEV2ZW50KFdURk1vdmUodHJhbnNmZXJy
ZWRQb3J0KSwgV1RGTW92ZShzb3VyY2VPcmlnaW4pKTsKKyAgICB9KTsKK30KKwordm9pZCBTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6dGVybWluYXRlU2hhcmVkV29ya2Vy
KFNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uOjp0ZXJtaW5hdGVTaGFyZWRXb3Jr
ZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVudGlm
aWVyLnRvVUludDY0KCkpOworICAgIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0
b24oKS5zdG9wU2hhcmVkV29ya2VyKHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3No
YXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wNDc5MzdjOTFlNmIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaCIKKyNpbmNs
dWRlICJTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTsK
KworY2xhc3MgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIgeworcHVibGljOgorICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlciYgc2luZ2xldG9uKCk7
CisKKyAgICBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSogc2hhcmVkV29ya2VyKFNoYXJlZFdvcmtl
cklkZW50aWZpZXIpIGNvbnN0OworICAgIHZvaWQgc3RvcFNoYXJlZFdvcmtlcihTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BBbGxTaGFyZWRXb3Jr
ZXJzKCk7CisKKyAgICBjbGFzcyBDb25uZWN0aW9uIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5Db25uZWN0aW9uKCkgeyB9
CisgICAgICAgIHZpcnR1YWwgdm9pZCBlc3RhYmxpc2hDb25uZWN0aW9uKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdEV4Y2VwdGlvblRv
V29ya2VyT2JqZWN0KFNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkwpID0gMDsKKyAgICAgICAgYm9vbCBpc0Nsb3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNDbG9zZWQ7IH0KKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgdm9pZCBzZXRBc0Nsb3NlZCgp
IHsgbV9pc0Nsb3NlZCA9IHRydWU7IH0KKworICAgICAgICAvLyBJUEMgbWVzc2FnZSBoYW5kbGVy
cy4KKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0Q29ubmVjdEV2ZW50KFNoYXJlZFdv
cmtlcklkZW50aWZpZXIsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgU3RyaW5nJiYgc291cmNl
T3JpZ2luKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0ZXJtaW5hdGVTaGFyZWRXb3Jr
ZXIoU2hhcmVkV29ya2VySWRlbnRpZmllcik7CisKKyAgICBwcml2YXRlOgorICAgICAgICBib29s
IG1faXNDbG9zZWQgeyBmYWxzZSB9OworICAgIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldENvbm5lY3Rpb24oc3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+JiYpOworICAgIFdFQkNP
UkVfRVhQT1JUIENvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKSBjb25zdDsKKworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcmVnaXN0ZXJTaGFyZWRXb3JrZXJUaHJlYWQoUmVmPFNoYXJlZFdvcmtlclRo
cmVhZFByb3h5PiYmKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95
ZWQ8U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI+OworCisgICAgU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVjdGlvbj4g
bV9jb25uZWN0aW9uOworICAgIEhhc2hNYXA8U2hhcmVkV29ya2VySWRlbnRpZmllciwgUmVmPFNo
YXJlZFdvcmtlclRocmVhZFByb3h5Pj4gbV93b3JrZXJNYXA7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250
ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzlkZjkwNmE1ZGVjCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJl
YWRQcm94eS5jcHAKQEAgLTAsMCArMSwxOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEt
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIgorCisjaW5j
bHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJFcnJvckV2ZW50LmgiCisj
aW5jbHVkZSAiRXZlbnRMb29wLmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUg
IkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENQ
cm92aWRlci5oIgorI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCisjaW5jbHVkZSAiTWVzc2Fn
ZUV2ZW50LmgiCisjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxS
ZW1vdGVIYW5kbGVyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgorI2lu
Y2x1ZGUgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgiCisjaW5jbHVkZSAiU2hhcmVkV29y
a2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKKyNpbmNs
dWRlICJXb3JrZXJGZXRjaFJlc3VsdC5oIgorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXJzRmFjdG9yeS5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3N0YXRpYyBIYXNoU2V0PFNoYXJlZFdvcmtlclRocmVhZFByb3h5Kj4mIGFs
bFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxIYXNoU2V0PFNoYXJlZFdvcmtlclRocmVhZFByb3h5Kj4+IHNldDsKKyAgICByZXR1cm4gc2V0
OworfQorCitzdGF0aWMgV29ya2VyUGFyYW1ldGVycyBnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMo
Y29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFdvcmtlckZldGNoUmVzdWx0JiB3b3JrZXJGZXRj
aFJlc3VsdCwgV29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMsIGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50LCBEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgcmV0dXJuIFdvcmtlclBhcmFtZXRl
cnMgeworICAgICAgICBzY3JpcHRVUkwsCisgICAgICAgIHdvcmtlck9wdGlvbnMubmFtZSwKKyAg
ICAgICAgInNoYXJlZHdvcmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNy
ZWF0ZUlkZW50aWZpZXIoKSwKKyAgICAgICAgdXNlckFnZW50LAorICAgICAgICBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+aXNPbkxpbmUoKSwKKyAgICAgICAgd29ya2Vy
RmV0Y2hSZXN1bHQuY29udGVudFNlY3VyaXR5UG9saWN5LAorICAgICAgICBmYWxzZSwKKyAgICAg
ICAgd29ya2VyRmV0Y2hSZXN1bHQuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwKKyAgICAgICAg
TW9ub3RvbmljVGltZTo6bm93KCksCisgICAgICAgIHsgfSwKKyAgICAgICAgd29ya2VyT3B0aW9u
cy50eXBlLAorICAgICAgICB3b3JrZXJPcHRpb25zLmNyZWRlbnRpYWxzLAorICAgICAgICBkb2N1
bWVudC5zZXR0aW5nc1ZhbHVlcygpCisgICAgfTsKK30KKworU2hhcmVkV29ya2VyVGhyZWFkUHJv
eHk6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5KFVuaXF1ZVJlZjxQYWdlPiYmIHBhZ2UsIFNoYXJl
ZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgQ2xpZW50T3Jp
Z2luJiBjbGllbnRPcmlnaW4sIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBXb3JrZXJGZXRjaFJlc3Vs
dCYmIHdvcmtlckZldGNoUmVzdWx0LCBXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucywgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQsIENhY2hlU3RvcmFnZVByb3ZpZGVyJiBjYWNoZVN0b3JhZ2VQ
cm92aWRlcikKKyAgICA6IG1fcGFnZShXVEZNb3ZlKHBhZ2UpKQorICAgICwgbV9kb2N1bWVudCgq
bV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQorICAgICwgbV93b3JrZXJUaHJlYWQoU2hh
cmVkV29ya2VyVGhyZWFkOjpjcmVhdGUoc2hhcmVkV29ya2VySWRlbnRpZmllciwgZ2VuZXJhdGVX
b3JrZXJQYXJhbWV0ZXJzKHNjcmlwdFVSTCwgd29ya2VyRmV0Y2hSZXN1bHQsIFdURk1vdmUod29y
a2VyT3B0aW9ucyksIHVzZXJBZ2VudCwgbV9kb2N1bWVudCksIFdURk1vdmUod29ya2VyRmV0Y2hS
ZXN1bHQuc2NyaXB0KSwgKnRoaXMsICp0aGlzLCAqdGhpcywgV29ya2VyVGhyZWFkU3RhcnRNb2Rl
OjpOb3JtYWwsIGNsaWVudE9yaWdpbi50b3BPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSwgbV9kb2N1
bWVudC0+aWRiQ29ubmVjdGlvblByb3h5KCksIG1fZG9jdW1lbnQtPnNvY2tldFByb3ZpZGVyKCks
IEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVkKCkpKQorICAgICwgbV9jYWNoZVN0
b3JhZ2VQcm92aWRlcihjYWNoZVN0b3JhZ2VQcm92aWRlcikKK3sKKyAgICBBU1NFUlQoIWFsbFNo
YXJlZFdvcmtlclRocmVhZFByb3hpZXMoKS5jb250YWlucyh0aGlzKSk7CisgICAgYWxsU2hhcmVk
V29ya2VyVGhyZWFkUHJveGllcygpLmFkZCh0aGlzKTsKKworICAgIHN0YXRpYyBib29sIGFkZGVk
TGlzdGVuZXI7CisgICAgaWYgKCFhZGRlZExpc3RlbmVyKSB7CisgICAgICAgIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5hZGRPbmxpbmVTdGF0ZUNoYW5nZUxpc3RlbmVy
KCZuZXR3b3JrU3RhdGVDaGFuZ2VkKTsKKyAgICAgICAgYWRkZWRMaXN0ZW5lciA9IHRydWU7Cisg
ICAgfQorfQorCitTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6flNoYXJlZFdvcmtlclRocmVhZFBy
b3h5KCkKK3sKKyAgICBBU1NFUlQoYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGllcygpLmNvbnRh
aW5zKHRoaXMpKTsKKyAgICBhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkucmVtb3ZlKHRo
aXMpOworfQorCitTaGFyZWRXb3JrZXJJZGVudGlmaWVyIFNoYXJlZFdvcmtlclRocmVhZFByb3h5
OjppZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93b3JrZXJUaHJlYWQtPmlkZW50
aWZpZXIoKTsKK30KKworUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IFNoYXJlZFdvcmtl
clRocmVhZFByb3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmICghbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uKQor
ICAgICAgICBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24gPSBtX2NhY2hlU3RvcmFnZVByb3ZpZGVy
LmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKTsKKyAgICByZXR1cm4gbV9jYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOworfQorCitSZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29u
bmVjdGlvbj4gU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlckNvbm5lY3Rpb24oKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Cisg
ICAgcmV0dXJuIG1fcGFnZS0+bGliV2ViUlRDUHJvdmlkZXIoKS5jcmVhdGVSVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyVGhyZWFk
UHJveHk6OnBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRh
c2spCit7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGFzayA9IFdURk1vdmUodGFzayksIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgdGFzay5wZXJm
b3JtVGFzayhwcm90ZWN0ZWRUaGlzLT5tX2RvY3VtZW50LmdldCgpKTsKKyAgICB9KTsKK30KKwor
Ym9vbCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaywgY29u
c3QgU3RyaW5nJiBtb2RlKQoreworICAgIGlmIChtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCku
cG9zdFRhc2tGb3JNb2RlKFdURk1vdmUodGFzayksIG1vZGUpOworICAgIHJldHVybiB0cnVlOwor
fQorCit2b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0TWVzc2FnZVRvRGVidWdnZXIo
Y29uc3QgU3RyaW5nJikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorfQorCit2b2lkIFNo
YXJlZFdvcmtlclRocmVhZFByb3h5OjpzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEJ5V2ViSW5z
cGVjdG9yKGJvb2wpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4KK30KKwordm9pZCBTaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eTo6bmV0d29ya1N0YXRlQ2hhbmdlZChib29sIGlzT25MaW5lKQor
eworICAgIGZvciAoYXV0byogcHJveHkgOiBhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkp
CisgICAgICAgIHByb3h5LT5ub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoaXNPbkxpbmUpOworfQor
Cit2b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2Uo
Ym9vbCBpc09ubGluZSkKK3sKKyAgICBpZiAobV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKFtpc09ubGluZV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsK
KyAgICAgICAgYXV0byYgZ2xvYmFsU2NvcGUgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4o
Y29udGV4dCk7CisgICAgICAgIGdsb2JhbFNjb3BlLnNldElzT25saW5lKGlzT25saW5lKTsKKyAg
ICAgICAgZ2xvYmFsU2NvcGUuZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1h
bmlwdWxhdGlvbiwgW2dsb2JhbFNjb3BlID0gUmVmIHsgZ2xvYmFsU2NvcGUgfSwgaXNPbmxpbmVd
IHsKKyAgICAgICAgICAgIGdsb2JhbFNjb3BlLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUo
aXNPbmxpbmUgPyBldmVudE5hbWVzKCkub25saW5lRXZlbnQgOiBldmVudE5hbWVzKCkub2ZmbGlu
ZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsK
KyAgICAgICAgfSk7CisgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7Cit9CisK
Ky8vIEZJWE1FOiBUcnkgYW5kIHNoYXJlIGNvZGUgd2l0aCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHkuY3BwLgordm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6c2V0dXBQYWdlRm9yU2hhcmVk
V29ya2VyKFBhZ2UmIHBhZ2UsIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBDbGllbnRPcmln
aW4mIGNsaWVudE9yaWdpbiwgY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmIHdvcmtlckZldGNoUmVz
dWx0KQoreworICAgIGF1dG8mIG1haW5GcmFtZSA9IHBhZ2UubWFpbkZyYW1lKCk7CisgICAgbWFp
bkZyYW1lLmxvYWRlcigpLmluaXRGb3JTeW50aGVzaXplZERvY3VtZW50KHsgfSk7CisgICAgYXV0
byBkb2N1bWVudCA9IERvY3VtZW50OjpjcmVhdGVOb25SZW5kZXJlZFBsYWNlaG9sZGVyKG1haW5G
cmFtZSwgc2NyaXB0VVJMKTsKKyAgICBkb2N1bWVudC0+Y3JlYXRlRE9NV2luZG93KCk7CisKKyAg
ICBkb2N1bWVudC0+c3RvcmFnZUJsb2NraW5nU3RhdGVEaWRDaGFuZ2UoKTsKKworICAgIGF1dG8g
b3JpZ2luID0gY2xpZW50T3JpZ2luLnRvcE9yaWdpbi5zZWN1cml0eU9yaWdpbigpOworICAgIG9y
aWdpbi0+c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KHBhZ2Uuc2V0dGluZ3MoKS5zdG9yYWdlQmxv
Y2tpbmdQb2xpY3koKSk7CisKKyAgICBhdXRvIG9yaWdpbkFzVVJMID0gb3JpZ2luLT50b1VSTCgp
OworICAgIGRvY3VtZW50LT5zZXRTaXRlRm9yQ29va2llcyhvcmlnaW5Bc1VSTCk7CisgICAgZG9j
dW1lbnQtPnNldEZpcnN0UGFydHlGb3JDb29raWVzKG9yaWdpbkFzVVJMKTsKKyAgICBkb2N1bWVu
dC0+c2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24ob3JpZ2luLT5kb21haW5Gb3JDYWNoZVBhcnRp
dGlvbigpKTsKKworICAgIGlmIChhdXRvIHBvbGljeSA9IHBhcnNlUmVmZXJyZXJQb2xpY3kod29y
a2VyRmV0Y2hSZXN1bHQucmVmZXJyZXJQb2xpY3ksIFJlZmVycmVyUG9saWN5U291cmNlOjpIVFRQ
SGVhZGVyKSkKKyAgICAgICAgZG9jdW1lbnQtPnNldFJlZmVycmVyUG9saWN5KCpwb2xpY3kpOwor
CisgICAgbWFpbkZyYW1lLnNldERvY3VtZW50KFdURk1vdmUoZG9jdW1lbnQpKTsKK30KKwordm9p
ZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgY2FsbE9uTWFpblRocmVhZChbc2hh
cmVkV29ya2VySWRlbnRpZmllciA9IG1fd29ya2VyVGhyZWFkLT5pZGVudGlmaWVyKCksIGVycm9y
TWVzc2FnZSA9IGVycm9yTWVzc2FnZS5pc29sYXRlZENvcHkoKSwgbGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAg
aWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkuY29ubmVjdGlvbigpKQorICAgICAgICAgICAgY29ubmVjdGlvbi0+cG9zdEV4Y2VwdGlv
blRvV29ya2VyT2JqZWN0KHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGVycm9yTWVzc2FnZSwgbGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwpOworICAgIH0pOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29u
dGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oCnNpbWlsYXJpdHkgaW5kZXggNTQlCnJlbmFt
ZSBmcm9tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3h5LmgK
cmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29y
a2VyVGhyZWFkUHJveHkuaAppbmRleCBkYjdiODUwOWRmNWEuLmY3YjI5MjRkYmUzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRo
cmVhZFByb3h5LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjUsOCArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlNo
YXJlZFdvcmtlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXb3JrZXJEZWJ1Z2dlclByb3h5Lmgi
Ci0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlckxv
YWRlclByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyT2JqZWN0UHJveHkuaCIKICNpbmNsdWRlICJX
b3JrZXJPcHRpb25zLmgiCkBAIC0zNCwyOSArMzQsMjcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBDYWNoZVN0b3JhZ2VQcm92aWRlcjsKK2NsYXNzIFBhZ2U7CiBjbGFzcyBTaGFy
ZWRXb3JrZXI7CiBjbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWQ7CiAKLWNsYXNzIFNoYXJlZFdvcmtl
clByb3h5IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZFdvcmtlclByb3h5Piwg
cHVibGljIFdvcmtlckdsb2JhbFNjb3BlUHJveHksIHB1YmxpYyBXb3JrZXJPYmplY3RQcm94eSwg
cHVibGljIFdvcmtlckxvYWRlclByb3h5LCBwdWJsaWMgV29ya2VyRGVidWdnZXJQcm94eSB7Citz
dHJ1Y3QgQ2xpZW50T3JpZ2luOworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0OworCitjbGFzcyBT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eT4sIHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94eSwgcHVibGljIFdv
cmtlckRlYnVnZ2VyUHJveHksIHB1YmxpYyBXb3JrZXJPYmplY3RQcm94eSB7CiBwdWJsaWM6Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFNoYXJlZFdvcmtlclByb3h5JiBj
cmVhdGUoQXJncyYmLi4uIGFyZ3MpIHsgcmV0dXJuICpuZXcgU2hhcmVkV29ya2VyUHJveHkoc3Rk
Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIHNldHVwUGFnZUZvclNoYXJlZFdvcmtlcihQYWdlJiwgY29uc3QgVVJMJiwgY29uc3QgQ2xp
ZW50T3JpZ2luJiwgY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKTsKIAotICAgIFNoYXJlZFdvcmtl
clRocmVhZCogdGhyZWFkKCkgeyByZXR1cm4gbV93b3JrZXJUaHJlYWQuZ2V0KCk7IH0KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmPFNoYXJlZFdvcmtlclRocmVhZFBy
b3h5PiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVk
V29ya2VyVGhyZWFkUHJveHkoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7IH0KKyAgICB+
U2hhcmVkV29ya2VyVGhyZWFkUHJveHkoKTsKKworICAgIFNoYXJlZFdvcmtlcklkZW50aWZpZXIg
aWRlbnRpZmllcigpIGNvbnN0OworICAgIFNoYXJlZFdvcmtlclRocmVhZCYgdGhyZWFkKCkgeyBy
ZXR1cm4gbV93b3JrZXJUaHJlYWQuZ2V0KCk7IH0KKworICAgIGJvb2wgaXNUZXJtaW5hdGluZ09y
VGVybWluYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZDsg
fQorICAgIHZvaWQgc2V0QXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCgpIHsgbV9pc1Rlcm1pbmF0
aW5nT3JUZXJtaW5hdGVkID0gdHJ1ZTsgfQogCi0gICAgdm9pZCBzdGFydFdvcmtlckdsb2JhbFNj
b3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgdXNlckFnZW50LCBib29sIGlzT25saW5lLCBjb25zdCBTY3JpcHRCdWZmZXImIHNvdXJjZUNv
ZGUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGJvb2wgc2hv
dWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBDcm9zc09yaWdp
bkVtYmVkZGVyUG9saWN5JiwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBSZWZlcnJlclBvbGlj
eSwgV29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMsIEpTQzo6UnVudGltZUZsYWdz
KSBmaW5hbDsKLSAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCkgZmluYWw7Ci0g
ICAgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUoTWVzc2FnZVdpdGhNZXNzYWdl
UG9ydHMmJikgZmluYWw7Ci0gICAgdm9pZCBwb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUoRnVu
Y3Rpb248dm9pZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+JiYpIGZpbmFsOwotICAgIGJvb2wg
aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCB3b3JrZXJPYmplY3RE
ZXN0cm95ZWQoKSBmaW5hbDsKLSAgICB2b2lkIG5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29s
IGlzT25saW5lKSBmaW5hbDsKLSAgICB2b2lkIHN1c3BlbmRGb3JCYWNrRm9yd2FyZENhY2hlKCkg
ZmluYWw7Ci0gICAgdm9pZCByZXN1bWVGb3JCYWNrRm9yd2FyZENhY2hlKCkgZmluYWw7Ci0gICAg
dm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCkgZmluYWw7Ci0gICAgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgpIGZpbmFs
OwotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0cyYmKSBmaW5hbDsKLSAgICB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChi
b29sIGhhc1BlbmRpbmdBY3Rpdml0eSkgZmluYWw7Ci0gICAgdm9pZCByZXBvcnRQZW5kaW5nQWN0
aXZpdHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpIGZpbmFsOwogICAgIFJlZlB0cjxDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uPiBjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkgZmluYWw7CiAg
ICAgUmVmUHRyPFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24+IGNyZWF0ZVJU
Q0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24oKSBmaW5hbDsKICAgICB2b2lkIHBv
c3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmKSBmaW5hbDsKQEAg
LTY0LDE4ICs2MiwyNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvRGVidWdnZXIo
Y29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxl
ZEJ5V2ViSW5zcGVjdG9yKGJvb2wpIGZpbmFsOwogCisgICAgLy8gV29ya2VyT2JqZWN0UHJveHkK
KyAgICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlVVJMKSBmaW5hbDsKKyAgICB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkKCkg
ZmluYWwgeyB9CisgICAgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzJiYpIGZpbmFsIHsgfQorICAgIHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29y
a2VyT2JqZWN0KGJvb2wpIGZpbmFsIHsgfQorICAgIHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5
KGJvb2wpIGZpbmFsIHsgfQorCiBwcml2YXRlOgotICAgIFNoYXJlZFdvcmtlclByb3h5KFNoYXJl
ZFdvcmtlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZFdvcmtlclRocmVhZFByb3h5KFVu
aXF1ZVJlZjxQYWdlPiYmLCBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmln
aW4mLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgV29ya2VyRmV0Y2hSZXN1bHQmJiwgV29ya2VyT3B0
aW9ucyYmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImKTsK
IAotICAgIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpOworICAgIHN0
YXRpYyB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoYm9vbCBpc09uTGluZSk7CisgICAgdm9pZCBu
b3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9vbCBpc09ubGluZSk7CiAKLSAgICBXZWFrUHRyPFNo
YXJlZFdvcmtlcj4gbV9zaGFyZWRXb3JrZXI7Ci0gICAgUmVmUHRyPFNoYXJlZFdvcmtlclRocmVh
ZD4gbV93b3JrZXJUaHJlYWQ7Ci0gICAgY29uc3QgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ+IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLSAgICBjb25zdCBTdHJpbmcgbV9pZGVudGlm
aWVyRm9ySW5zcGVjdG9yOwotICAgIGJvb2wgbV9hc2tlZFRvVGVybWluYXRlIHsgZmFsc2UgfTsK
LSAgICBib29sIG1faGFzUGVuZGluZ0FjdGl2aXR5IHsgZmFsc2UgfTsKLSAgICBib29sIG1fbWF5
QmVEZXN0cm95ZWQgeyBmYWxzZSB9OworICAgIFVuaXF1ZVJlZjxQYWdlPiBtX3BhZ2U7CisgICAg
UmVmPERvY3VtZW50PiBtX2RvY3VtZW50OworICAgIFJlZjxTaGFyZWRXb3JrZXJUaHJlYWQ+IG1f
d29ya2VyVGhyZWFkOworICAgIENhY2hlU3RvcmFnZVByb3ZpZGVyJiBtX2NhY2hlU3RvcmFnZVBy
b3ZpZGVyOworICAgIFJlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBtX2NhY2hlU3RvcmFn
ZUNvbm5lY3Rpb247CisgICAgYm9vbCBtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQgeyBmYWxz
ZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXgg
NzU2ZGE4OGI0NWY3Li4yOWY0Yzc4MTgxODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMjgsNiAr
MjgsNyBAQCBzZXQoV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVRfRElS
fS9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zIgogICAgICIke1dFQktJVF9ESVJ9L05ldHdv
cmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50IgogICAgICIke1dFQktJVF9ESVJ9L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIiCisgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1By
b2Nlc3MvU2hhcmVkV29ya2VyIgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvY2FjaGUiCiAgICAg
IiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZSIKQEAgLTIwMiw2ICsyMDMsOSBA
QCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24KICAgICBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbgogCisgICAgTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24KKyAgICBOZXR3
b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbgorCiAgICAgTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNl
dAogCiAgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlv
bgpAQCAtMzA1LDYgKzMwOSw4IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKIAogICAg
IFdlYlByb2Nlc3MvU3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1h
bmFnZXIKIAorICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24KKyAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbgogICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rp
b24KICAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4
IDRjNjYyMjBjZjEyMi4uNzIyOWMxYjk4NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC05MSw2ICs5MSw4IEBAICQoUFJPSkVDVF9ESVIp
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5t
ZXNzYWdlcy5pCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMu
aW4KKyQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmlu
CiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9tYWMv
Y29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbgpAQCAtMjE3LDYgKzIxOSw4IEBA
ICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFs
dGltZU1lZGlhU291cmNlTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhuUHJvY2Vzc0Nv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0CmluZGV4IGUzYjU1ODQwYWUxZS4uYTg2MzI4MTQ3YjU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBi
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTYwNyw2
ICs2MDcsMTggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9X
ZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVz
c2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdC9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3Nh
Z2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZXMuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3Nh
Z2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNz
YWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTb2NrZXRDaGFubmVsTWVzc2FnZVJl
Y2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9X
ZWJTb2NrZXRDaGFubmVsTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdC9XZWJTb2NrZXRDaGFubmVsTWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMubWFrZQppbmRleCA3YWQ0OWUzNzM1ZjQuLjM1MWZmYWUwYTU4NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTMzLDYgKzEzMyw4IEBAIE1FU1NBR0VfUkVDRUlW
RVJTID0gXAogCU5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25s
b2FkVGFzayBcCiAJTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrIFwKIAlOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbiBcCisJTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb24gXAorCU5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIFwKIAlOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0U3RyZWFtIFwKIAlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2VzcyBcCiAJ
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyIFwKQEAgLTIyNSw2ICsyMjcsOCBA
QCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvU3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIgXAorCVdlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gXAorCVdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvV2ViUHJvY2VzcyBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDY4N2M4ZGI2OTEyYy4uYzdiMTdmZDcwNzg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNjYsNiArNjYsMTEgQEAKICNpbmNs
dWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgi
CisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
IldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1l
bnRTdG9yYWdlQWNjZXNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVFRQQ29va2llQWNjZXB0UG9s
aWN5Lmg+CkBAIC0xMzIsNiArMTM3LDcgQEAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtQcm9jZXNzJiBuZXQKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKCk7
CiAjZW5kaWYKKyAgICBlc3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCk7CiB9
CiAKIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoKQpAQCAtMTY2LDYgKzE3Miw3IEBAIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7CiAjZW5kaWYKKyAgICB1bnJl
Z2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpoYXNVcGxvYWRTdGF0ZUNoYW5nZWQoYm9vbCBoYXNVcGxvYWQpCkBA
IC0yNzUsNiArMjgyLDE3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvCiAgICAgfQogI2VuZGlm
CiAKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6Oldl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewor
ICAgICAgICBpZiAobV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uKQorICAgICAgICAgICAgbV9zaGFy
ZWRXb3JrZXJDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBpZiAobV9zaGFyZWRXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvbikKKyAgICAgICAgICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENv
bm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAg
aWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKQogICAgICAgICByZXR1cm4g
cGF5bWVudENvb3JkaW5hdG9yKCkuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rl
cik7CkBAIC0zOTgsOSArNDE2LDggQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwotI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAjZW5kaWYKKyAgICBtX3NoYXJlZFdv
cmtlckNvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKIAogICAgIC8vIFByb3RlY3Qgb3Vyc2Vs
ZiBhcyB3ZSBtaWdodCBiZSBvdGhlcndpc2UgYmUgZGVsZXRlZCBkdXJpbmcgdGhpcyBmdW5jdGlv
bi4KICAgICBSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IHByb3RlY3RvcigqdGhp
cyk7CkBAIC00NDEsNiArNDU4LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKICAgICB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7CiAjZW5kaWYKKyAgICB1
bnJlZ2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOwogCiAjaWYgRU5BQkxFKEFQUExFX1BB
WV9SRU1PVEVfVUkpCiAgICAgbV9wYXltZW50Q29vcmRpbmF0b3IgPSBudWxscHRyOwpAQCAtMTE4
Niw2ICsxMjA0LDYxIEBAIHNpemVfdCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Zmlu
ZE5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoV2ViQ29yZTo6UmVzb3VyCiAgICAgICAgIHJldHVybiBp
dGVtLnJlc291cmNlSUQgPT0gcmVzb3VyY2VJRDsKICAgICB9KTsKIH0KKwordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
JiByZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAi
ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb246Iik7CisgICAgYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7CisgICAgaWYgKGF1dG8qIHN3U2VydmVyID0gc2Vzc2lv
biA/IHNlc3Npb24tPnNoYXJlZFdvcmtlclNlcnZlcigpIDogbnVsbHB0cikKKyAgICAgICAgbV9z
aGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4oKnRoaXMsIFdURk1vdmUocmVnaXN0cmFibGVEb21h
aW4pLCAqc3dTZXJ2ZXIpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKK3ZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb24oKQoreworICAgIGlmIChtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOworICAgIGlm
ICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xP
RyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOiIp
OworCisgICAgYXV0byYgc2VydmVyID0gc2Vzc2lvbi0+ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVy
KCk7CisgICAgYXV0byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uPihtX25ldHdvcmtQcm9jZXNzLCBzZXJ2ZXIsIG1fY29ubmVjdGlvbi5nZXQo
KSwgbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7CisKKyAgICBtX3NoYXJlZFdvcmtlckNvbm5lY3Rp
b24gPSAqY29ubmVjdGlvbjsKKyAgICBzZXJ2ZXIuYWRkQ29ubmVjdGlvbihXVEZNb3ZlKGNvbm5l
Y3Rpb24pKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xvc2VT
aGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNF
X0xPRyhTaGFyZWRXb3JrZXIsICJjbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uOiIp
OworICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOworfQorCit2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU2hhcmVkV29ya2Vy
Q29ubmVjdGlvbigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIs
ICJ1bnJlZ2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbjoiKTsKKyAgICBpZiAobV9zaGFyZWRX
b3JrZXJDb25uZWN0aW9uKQorICAgICAgICBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24tPnNlcnZl
cigpLnJlbW92ZUNvbm5lY3Rpb24obV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uLT53ZWJQcm9jZXNz
SWRlbnRpZmllcigpKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
c2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKQor
eworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAic2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQ6Iik7CisgICAgbV9uZXR3
b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6U2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5l
ZWRlZCB7IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CisKKyAgICBtX3NoYXJlZFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbiogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNoYXJlZFdvcmtlckNv
bm5lY3Rpb24oKQoreworICAgIGlmICghbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uKQorICAgICAg
ICBlc3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCk7CisgICAgcmV0dXJuIG1f
c2hhcmVkV29ya2VyQ29ubmVjdGlvbi5nZXQoKTsKK30KICAgICAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVy
U1dDb25uZWN0aW9uKCkKQEAgLTEyMjMsOSArMTI5Niw5IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmNsb3NlU1dDb250ZXh0Q29ubmVjdGlvbigpCiAgICAgbV9zd0NvbnRl
eHRDb25uZWN0aW9uID0gbnVsbHB0cjsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCkKK3ZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNlcnZpY2VXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKQogewotICAgIENPTk5FQ1RJT05fUkVMRUFTRV9M
T0coU2VydmljZVdvcmtlciwgInNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRl
ZDogV2ViUHJvY2VzcyBubyBsb25nZXIgdXNlZnVsIGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2Vy
cyIpOworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgInNlcnZpY2VX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQ6IFdlYlByb2Nlc3Mg
bm8gbG9uZ2VyIHVzZWZ1bCBmb3IgcnVubmluZyBzZXJ2aWNlIHdvcmtlcnMiKTsKICAgICBtX25l
dHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdl
ck5lZWRlZCB7IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CiAKICAgICBtX3N3Q29udGV4
dENvbm5lY3Rpb24gPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDNhMWUx
NDA0MzM4Zi4uZDBhYTRlZjc0NTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC05Miw2
ICs5Miw4IEBAIGNsYXNzIE5ldHdvcmtTb2NrZXRTdHJlYW07CiBjbGFzcyBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwogY2xhc3MgV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CiAK
IG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogc3RydWN0IERhdGFLZXk7CkBAIC0xODEsMTAgKzE4
MywxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0
eShjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSk+
JiYpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQgc2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCk7CisgICAgdm9pZCBzZXJ2aWNlV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCk7CiAgICAgV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uKiBzd0Nvbm5lY3Rpb24oKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdv
cmtlckZldGNoVGFzaz4gY3JlYXRlRmV0Y2hUYXNrKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlmCisgICAgdm9pZCBzaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOworCisgICAg
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbiogc2hhcmVkV29ya2VyQ29ubmVjdGlvbigp
OwogCiAgICAgTmV0d29ya1NjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSgpIHsgcmV0dXJu
IG1fc2NoZW1lUmVnaXN0cnkuZ2V0KCk7IH0KIApAQCAtMjUzLDYgKzI1OCw5IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjcmVhdGVTb2NrZXRDaGFubmVsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIFdlYkNvcmU6OldlYlNvY2tldElkZW50aWZp
ZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYp
OwogICAgIHZvaWQgdXBkYXRlUXVvdGFCYXNlZE9uU3BhY2VVc2FnZUZvclRlc3RpbmcoY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb24oKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25u
ZWN0aW9uKCk7CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxp
c2hTV1NlcnZlckNvbm5lY3Rpb24oKTsKICAgICB2b2lkIGVzdGFibGlzaFNXQ29udGV4dENvbm5l
Y3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
Jiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmll
cj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwpAQCAtMjYwLDYgKzI2OCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bnJlZ2lzdGVyU1dD
b25uZWN0aW9uKCk7CiAjZW5kaWYKIAorICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29u
dGV4dENvbm5lY3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGNsb3Nl
U2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24oKTsKKwogICAgIHZvaWQgY3JlYXRlUlRDUHJv
dmlkZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNpZiBFTkFCTEUoV0VCX1JUQykK
ICAgICB2b2lkIGNvbm5lY3RUb1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlKFdlYkNvcmU6OlJU
Q0RhdGFDaGFubmVsSWRlbnRpZmllciBzb3VyY2UsIFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRl
bnRpZmllciBoYW5kbGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8Ym9v
bD4pPiYmKTsKQEAgLTQwNCw2ICs0MTUsOCBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8V2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uPiBtX3N3Q29ubmVjdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiBtX3N3Q29udGV4dENvbm5lY3Rpb247CiAjZW5k
aWYKKyAgICBXZWFrUHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24+IG1fc2hhcmVk
V29ya2VyQ29ubmVjdGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbj4gbV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbjsK
IAogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIGJvb2wgbV9pc1JlZ2lzdGVyZWRUb1JUQ0RhdGFD
aGFubmVsUHJveHkgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KaW5kZXggMjQyODM1MDUwYjI0Li5iOTdjYTM0NzliNGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtODgsNiArODgsOSBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAg
Q2xvc2VTV0NvbnRleHRDb25uZWN0aW9uKCkKICNlbmRpZgogCisgICAgRXN0YWJsaXNoU2hhcmVk
V29ya2VyQ29udGV4dENvbm5lY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdl
YlBhZ2VQcm94eUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pIC0+ICgpIEFz
eW5jCisgICAgQ2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpCisKICAgICBDcmVh
dGVSVENQcm92aWRlcigpIC0+ICgpIEFzeW5jCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgQ29u
bmVjdFRvUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2Uoc3RydWN0IFdlYkNvcmU6OlJUQ0RhdGFD
aGFubmVsSWRlbnRpZmllciBzb3VyY2UsIHN0cnVjdCBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElk
ZW50aWZpZXIgaGFuZGxlcikgLT4gKHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcmVzdWx0KSBBc3luYwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRl
eCBlMmIyNGQ4MzIyYjYuLmQ3NjE2Mjg1MGNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRl
ICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgog
I2luY2x1ZGUgIldlYlNXT3JpZ2luU3RvcmUuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRUYXNrLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9D
b29raWVKYXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgpAQCAtNjUz
LDYgKzY1NCwxMyBAQCBib29sIE5ldHdvcmtTZXNzaW9uOjpoYXNTZXJ2aWNlV29ya2VyRGF0YWJh
c2VQYXRoKCkgY29uc3QKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorV2Vi
U2hhcmVkV29ya2VyU2VydmVyJiBOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlU2hhcmVkV29ya2VyU2Vy
dmVyKCkKK3sKKyAgICBpZiAoIW1fc2hhcmVkV29ya2VyU2VydmVyKQorICAgICAgICBtX3NoYXJl
ZFdvcmtlclNlcnZlciA9IG1ha2VVbmlxdWU8V2ViU2hhcmVkV29ya2VyU2VydmVyPigqdGhpcyk7
CisgICAgcmV0dXJuICptX3NoYXJlZFdvcmtlclNlcnZlcjsKK30KKwogV2ViSURCU2VydmVyJiBO
ZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlV2ViSURCU2VydmVyKCkKIHsKICAgICBpZiAoIW1fd2ViSURC
U2VydmVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
LmgKaW5kZXggMTkzMDdjZjQwYmUzLi4zZjlkNmM5NTUwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTc5LDYgKzc5LDcgQEAgY2xhc3Mg
U2VydmljZVdvcmtlckZldGNoVGFzazsKIGNsYXNzIFdlYklEQlNlcnZlcjsKIGNsYXNzIFdlYlBh
Z2VOZXR3b3JrUGFyYW1ldGVyczsKIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlcjsKIGNsYXNzIFdlYlNvY2tldFRhc2s7CiBj
bGFzcyBXZWJTV09yaWdpblN0b3JlOwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwpAQCAt
MjEwLDYgKzIxMSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9u
KGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcmJiBzZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
KTsKICNlbmRpZgogCisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyKiBzaGFyZWRXb3JrZXJTZXJ2
ZXIoKSB7IHJldHVybiBtX3NoYXJlZFdvcmtlclNlcnZlci5nZXQoKTsgfQorICAgIFdlYlNoYXJl
ZFdvcmtlclNlcnZlciYgZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCk7CisKICAgICBXZWJJREJT
ZXJ2ZXIqIHdlYklEQlNlcnZlcigpIHsgcmV0dXJuIG1fd2ViSURCU2VydmVyLmdldCgpOyB9CiAg
ICAgV2ViSURCU2VydmVyJiBlbnN1cmVXZWJJREJTZXJ2ZXIoKTsKICAgICB2b2lkIGNsb3NlSURC
U2VydmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0zMTgsNiArMzIyLDcgQEAg
cHJvdGVjdGVkOgogICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckluZm8+IG1fc2Vydmlj
ZVdvcmtlckluZm87CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNXU2VydmVyPiBtX3N3
U2VydmVyOwogI2VuZGlmCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNoYXJlZFdvcmtlclNlcnZl
cj4gbV9zaGFyZWRXb3JrZXJTZXJ2ZXI7CiAKICAgICBTdHJpbmcgbV9pZGJEYXRhYmFzZVBhdGg7
CiAgICAgUmVmUHRyPFdlYklEQlNlcnZlcj4gbV93ZWJJREJTZXJ2ZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IDVhODcwM2Vm
ZDZkNS4uMjdmNmU4ZGE1ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQgV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptYXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllCiAKIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0
aW9uSXNOb0xvbmdlck5lZWRlZCgpCiB7Ci0gICAgbV9jb25uZWN0aW9uLnNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCgpOworICAgIG1fY29ubmVjdGlvbi5zZXJ2aWNlV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCk7CiB9CiAKIHZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzZXRUaHJvdHRsZVN0YXRlKGJvb2wgaXNU
aHJvdHRsZWFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1No
YXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjNjNjM2NGFhNTQwOAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNo
YXJlZFdvcmtlclNlcnZlci5jcHAKQEAgLTAsMCArMSwyOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgiCisKKyNp
bmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU2hhcmVkV29y
a2VyU2VydmVyOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24p
CisgICAgOiBtX3Nlc3Npb24oc2Vzc2lvbikKK3sKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVy
Ojp+V2ViU2hhcmVkV29ya2VyU2VydmVyKCkgPSBkZWZhdWx0OworCitQQUw6OlNlc3Npb25JRCBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNlc3Npb25JRCgpCit7CisgICAgcmV0dXJuIG1fc2Vzc2lv
bi5zZXNzaW9uSUQoKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RT
aGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCBXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFVS
TCYmIHVybCwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBvcnQsIFdlYkNvcmU6
Oldvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zKQoreworICAgIFdlYkNvcmU6OlNoYXJlZFdv
cmtlcktleSBrZXkgeyBvcmlnaW4sIHVybCwgd29ya2VyT3B0aW9ucy5uYW1lIH07CisgICAgYXV0
byYgc2hhcmVkV29ya2VyID0gbV9zaGFyZWRXb3JrZXJzLmVuc3VyZShrZXksIFsmXSB7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFNoYXJlZFdvcmtlcj4ob3JpZ2luLCB1cmwsIHdvcmtlck9w
dGlvbnMpOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRX
b3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwcml2YXRlfXMsIHNoYXJlZFdvcmtlcklkZW50aWZp
ZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSwgc2hhcmVkV29ya2VyLT5pZGVudGlmaWVyLnRvVUludDY0KCkpOworCisgICAg
aWYgKHNoYXJlZFdvcmtlci0+d29ya2VyT3B0aW9ucy50eXBlICE9IHdvcmtlck9wdGlvbnMudHlw
ZSB8fCBzaGFyZWRXb3JrZXItPndvcmtlck9wdGlvbnMuY3JlZGVudGlhbHMgIT0gd29ya2VyT3B0
aW9ucy5jcmVkZW50aWFscykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3Jr
ZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6IEEgd29ya2Vy
IGFscmVhZHkgZXhpc3RzIHdpdGggdGhpcyBuYW1lIGJ1dCBoYXMgZGlmZmVyZW50IHR5cGUgLyBj
cmVkZW50aWFscyIpOworICAgICAgICBpZiAoYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1fY29u
bmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZp
ZXIoKSkpCisgICAgICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uLT5ub3RpZnlXb3JrZXJPYmplY3RP
ZkxvYWRGYWlsdXJlKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzLmFkZChz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBwb3J0KTsKKworICAgIGlmIChzaGFyZWRXb3Jr
ZXItPnNoYXJlZFdvcmtlck9iamVjdHMuc2l6ZSgpID4gMSkgeworICAgICAgICBSRUxFQVNFX0xP
RyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3Jr
ZXI6IEEgc2hhcmVkIHdvcmtlciB3aXRoIHRoaXMgVVJMIGFscmVhZHkgZXhpc3RzIChub3cgc2hh
cmVkIGJ5ICV1IHNoYXJlZCB3b3JrZXIgb2JqZWN0cykiLCBzaGFyZWRXb3JrZXItPnNoYXJlZFdv
cmtlck9iamVjdHMuc2l6ZSgpKTsKKyAgICAgICAgaWYgKHNoYXJlZFdvcmtlci0+aXNSdW5uaW5n
KSB7CisgICAgICAgICAgICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IG1fY29udGV4dENvbm5l
Y3Rpb25zLmdldChzaGFyZWRXb3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgICAgICAg
ICAgQVNTRVJUKGNvbnRleHRDb25uZWN0aW9uKTsKKyAgICAgICAgICAgIGlmIChjb250ZXh0Q29u
bmVjdGlvbikKKyAgICAgICAgICAgICAgICBwb3N0Q29ubmVjdEV2ZW50KCpjb250ZXh0Q29ubmVj
dGlvbiwgc2hhcmVkV29ya2VyLT5pZGVudGlmaWVyLCBwb3J0LCBvcmlnaW4uY2xpZW50T3JpZ2lu
LnRvU3RyaW5nKCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNT
RVJUKCFzaGFyZWRXb3JrZXItPmlzUnVubmluZyk7CisKKyAgICBhdXRvKiBzZXJ2ZXJDb25uZWN0
aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9j
ZXNzSWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlQoc2VydmVyQ29ubmVjdGlvbik7CisKKyAgICBS
RUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RT
aGFyZWRXb3JrZXI6IEZldGNoaW5nIHNoYXJlZCB3b3JrZXIgc2NyaXB0IGluIGNsaWVudCIpOwor
ICAgIHNlcnZlckNvbm5lY3Rpb24tPmZldGNoU2NyaXB0SW5DbGllbnQodXJsLCBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLCB3b3JrZXJPcHRpb25zLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfSwgc2hhcmVkV29ya2VyID0gV2Vha1B0ciB7ICpzaGFyZWRXb3JrZXIgfV0oV2ViQ29y
ZTo6V29ya2VyRmV0Y2hSZXN1bHQmJiBmZXRjaFJlc3VsdCkgeworICAgICAgICBpZiAod2Vha1Ro
aXMgJiYgc2hhcmVkV29ya2VyKQorICAgICAgICAgICAgd2Vha1RoaXMtPmRpZEZpbmlzaEZldGNo
aW5nU2hhcmVkV29ya2VyU2NyaXB0KCpzaGFyZWRXb3JrZXIsIFdURk1vdmUoZmV0Y2hSZXN1bHQp
KTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmxhdW5jaFNoYXJl
ZFdvcmtlcihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0
Q29ubmVjdGlvbiwgU2hhcmVkV29ya2VyJiBzaGFyZWRXb3JrZXIpCit7CisgICAgUkVMRUFTRV9M
T0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpsYXVuY2hTaGFyZWRXb3Jr
ZXI6IGNvbnRleHRDb25uZWN0aW9uPSVwLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2
NCwgJmNvbnRleHRDb25uZWN0aW9uLCBzaGFyZWRXb3JrZXIuaWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKKyAgICBjb250ZXh0Q29ubmVjdGlvbi5sYXVuY2hTaGFyZWRXb3JrZXIoc2hhcmVkV29ya2Vy
Lm9yaWdpbiwgc2hhcmVkV29ya2VyLmlkZW50aWZpZXIsIHNoYXJlZFdvcmtlci51cmwsIHNoYXJl
ZFdvcmtlci53b3JrZXJPcHRpb25zLCBzaGFyZWRXb3JrZXIuZmV0Y2hSZXN1bHQpOworICAgIHNo
YXJlZFdvcmtlci5pc1J1bm5pbmcgPSB0cnVlOworICAgIGF1dG8gc291cmNlT3JpZ2luID0gc2hh
cmVkV29ya2VyLm9yaWdpbi5jbGllbnRPcmlnaW4udG9TdHJpbmcoKTsKKyAgICBmb3IgKGF1dG8m
IHBvcnQgOiBzaGFyZWRXb3JrZXIuc2hhcmVkV29ya2VyT2JqZWN0cy52YWx1ZXMoKSkKKyAgICAg
ICAgcG9zdENvbm5lY3RFdmVudChjb250ZXh0Q29ubmVjdGlvbiwgc2hhcmVkV29ya2VyLmlkZW50
aWZpZXIsIHBvcnQsIHNvdXJjZU9yaWdpbik7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyOjpwb3N0Q29ubmVjdEV2ZW50KFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24mIGNvbnRleHRDb25uZWN0aW9uLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVy
IHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2Fn
ZVBvcnQmIHNvdXJjZVBvcnQsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQoreworICAgIFJF
TEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cG9zdENvbm5l
Y3RFdmVudDogY29udGV4dENvbm5lY3Rpb249JXAsIHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIg
UFJJdTY0LCAmY29udGV4dENvbm5lY3Rpb24sIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50
NjQoKSk7CisgICAgY29udGV4dENvbm5lY3Rpb24ucG9zdENvbm5lY3RFdmVudChzaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyLCBzb3VyY2VQb3J0LCBzb3VyY2VPcmlnaW4pOworfQorCit2b2lkIFdlYlNo
YXJlZFdvcmtlclNlcnZlcjo6ZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRXb3JrZXJTY3JpcHQoU2hh
cmVkV29ya2VyJiB3b3JrZXIsIFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYgZmV0Y2hSZXN1
bHQpCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2Vy
dmVyOjpkaWRGaW5pc2hGZXRjaGluZ1NoYXJlZFdvcmtlclNjcmlwdCBzaGFyZWRXb3JrZXJJZGVu
dGlmaWVyPSUiIFBSSXU2NCAiLCB3b3JrZXI9JXAsIHN1Y2Nlc3M9JWQiLCB3b3JrZXIuaWRlbnRp
Zmllci50b1VJbnQ2NCgpLCAmd29ya2VyLCBmZXRjaFJlc3VsdC5lcnJvci5pc051bGwoKSk7Cisg
ICAgaWYgKCFmZXRjaFJlc3VsdC5lcnJvci5pc051bGwoKSkgeworICAgICAgICAvLyBGZXRjaCBm
YWlsZWQsIG5vdGlmeSB0aGUgU2hhcmVkV29ya2VyIG9iamVjdHMuCisgICAgICAgIGZvciAoYXV0
byBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIDogd29ya2VyLnNoYXJlZFdvcmtlck9iamVj
dHMua2V5cygpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1f
Y29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50
aWZpZXIoKSkpCisgICAgICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlvbi0+bm90aWZ5V29ya2Vy
T2JqZWN0T2ZMb2FkRmFpbHVyZShzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICAg
ICAgfQorICAgICAgICBtX3NoYXJlZFdvcmtlcnMucmVtb3ZlKHdvcmtlci5rZXkoKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3b3JrZXIuZmV0Y2hSZXN1bHQgPSBXVEZNb3ZlKGZl
dGNoUmVzdWx0KTsKKworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSB3b3JrZXIucmVnaXN0
cmFibGVEb21haW4oKTsKKyAgICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IGNvbnRleHRDb25u
ZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pOworICAgIGlmICgh
Y29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAgICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24ocmVn
aXN0cmFibGVEb21haW4pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbGF1bmNoU2hh
cmVkV29ya2VyKCpjb250ZXh0Q29ubmVjdGlvbiwgd29ya2VyKTsKK30KKworYm9vbCBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6Om5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFp
bihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pIGNv
bnN0Cit7CisgICAgZm9yIChhdXRvJiBzaGFyZWRXb3JrZXIgOiBtX3NoYXJlZFdvcmtlcnMudmFs
dWVzKCkpIHsKKyAgICAgICAgaWYgKHJlZ2lzdHJhYmxlRG9tYWluLm1hdGNoZXMoc2hhcmVkV29y
a2VyLT51cmwpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBm
YWxzZTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNyZWF0ZUNvbnRleHRDb25u
ZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFp
bikKK3sKKyAgICBBU1NFUlQoIW1fY29udGV4dENvbm5lY3Rpb25zLmNvbnRhaW5zKHJlZ2lzdHJh
YmxlRG9tYWluKSk7CisgICAgaWYgKG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWlucy5j
b250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgIHJldHVybjsKKworICAgIFJFTEVB
U0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y3JlYXRlQ29udGV4
dENvbm5lY3Rpb24gd2lsbCBjcmVhdGUgYSBjb25uZWN0aW9uIik7CisKKyAgICBtX3BlbmRpbmdD
b250ZXh0Q29ubmVjdGlvbkRvbWFpbnMuYWRkKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBtX3Nl
c3Npb24ubmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFNoYXJl
ZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHJlZ2lzdHJhYmxlRG9t
YWluLCBtX3Nlc3Npb24uc2Vzc2lvbklEKCkgfSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH0sIHJlZ2lzdHJhYmxlRG9tYWluXSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAi
V2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbiBzaG91bGQgbm93
IGhhdmUgY3JlYXRlZCBhIGNvbm5lY3Rpb24iKTsKKworICAgICAgICBBU1NFUlQobV9wZW5kaW5n
Q29udGV4dENvbm5lY3Rpb25Eb21haW5zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSk7Cisg
ICAgICAgIG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWlucy5yZW1vdmUocmVnaXN0cmFi
bGVEb21haW4pOworCisgICAgICAgIGlmIChtX2NvbnRleHRDb25uZWN0aW9ucy5jb250YWlucyhy
ZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKG5l
ZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFp
bikpCisgICAgICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFp
bik7CisgICAgfSwgMCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjphZGRDb250
ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBj
b250ZXh0Q29ubmVjdGlvbikKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI6OmFkZENvbnRleHRDb25uZWN0aW9uKCVwKSB3ZWJQcm9jZXNzSWRl
bnRpZmllcj0lIiBQUkl1NjQsICZjb250ZXh0Q29ubmVjdGlvbiwgY29udGV4dENvbm5lY3Rpb24u
d2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKworICAgIEFTU0VSVCghbV9jb250
ZXh0Q29ubmVjdGlvbnMuY29udGFpbnMoY29udGV4dENvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21h
aW4oKSkpOworCisgICAgbV9jb250ZXh0Q29ubmVjdGlvbnMuYWRkKGNvbnRleHRDb25uZWN0aW9u
LnJlZ2lzdHJhYmxlRG9tYWluKCksICZjb250ZXh0Q29ubmVjdGlvbik7CisKKyAgICBjb250ZXh0
Q29ubmVjdGlvbkNyZWF0ZWQoY29udGV4dENvbm5lY3Rpb24pOworfQorCit2b2lkIFdlYlNoYXJl
ZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24pCit7CisgICAgUkVMRUFT
RV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1vdmVDb250ZXh0
Q29ubmVjdGlvbiglcCkgd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCAmY29udGV4dENv
bm5lY3Rpb24sIGNvbnRleHRDb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50
NjQoKSk7CisKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gY29udGV4dENvbm5lY3Rpb24u
cmVnaXN0cmFibGVEb21haW4oKTsKKworICAgIEFTU0VSVChtX2NvbnRleHRDb25uZWN0aW9ucy5n
ZXQocmVnaXN0cmFibGVEb21haW4pID09ICZjb250ZXh0Q29ubmVjdGlvbik7CisKKyAgICBtX2Nv
bnRleHRDb25uZWN0aW9ucy5yZW1vdmUocmVnaXN0cmFibGVEb21haW4pOworCisgICAgaWYgKG5l
ZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFp
bikpCisgICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluKTsK
K30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRl
ZChXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVj
dGlvbikKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZCglcCkgd2ViUHJvY2Vzc0lkZW50aWZpZXI9
JSIgUFJJdTY0LCAmY29udGV4dENvbm5lY3Rpb24sIGNvbnRleHRDb25uZWN0aW9uLndlYlByb2Nl
c3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgYXV0byYgcmVnaXN0cmFibGVEb21haW4g
PSBjb250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpOworICAgIGZvciAoYXV0byYg
d29ya2VyIDogbV9zaGFyZWRXb3JrZXJzLnZhbHVlcygpKSB7CisgICAgICAgIGlmICh3b3JrZXIt
PmRpZEZpbmlzaEZldGNoaW5nKCkgJiYgcmVnaXN0cmFibGVEb21haW4ubWF0Y2hlcyh3b3JrZXIt
PnVybCkpCisgICAgICAgICAgICBsYXVuY2hTaGFyZWRXb3JrZXIoY29udGV4dENvbm5lY3Rpb24s
ICp3b3JrZXIpOworICAgIH0KK30KKworYXV0byBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNoYXJl
ZFdvcmtlckJ5SWRlbnRpZmllcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJl
ZFdvcmtlcklkZW50aWZpZXIpIC0+IFNoYXJlZFdvcmtlcioKK3sKKyAgICBmb3IgKGF1dG8mIHdv
cmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAod29ya2VyLT5p
ZGVudGlmaWVyID09IHNoYXJlZFdvcmtlcklkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4g
d29ya2VyLmdldCgpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworYXV0byBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI6OnNoYXJlZFdvcmtlckJ5T2JqZWN0SWRlbnRpZmllcihXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIpIC0+IFNoYXJlZFdvcmtlcioKK3sKKyAgICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fc2hhcmVk
V29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAod29ya2VyLT5zaGFyZWRXb3JrZXJPYmpl
Y3RzLmNvbnRhaW5zKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpKQorICAgICAgICAgICAg
cmV0dXJuIHdvcmtlci5nZXQoKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3Zv
aWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIpCit7CisgICAgYXV0byogd29ya2VyID0gc2hhcmVkV29ya2VyQnlPYmplY3RJZGVu
dGlmaWVyKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HKFNo
YXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hhcmVkV29ya2VyT2JqZWN0SXNH
b2luZ0F3YXk6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cywgd29ya2Vy
PSVwIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRh
KCksIHdvcmtlcik7CisgICAgaWYgKCF3b3JrZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHdv
cmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5yZW1vdmUoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllcik7CisgICAgaWYgKCF3b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBzaHV0RG93blNoYXJlZFdvcmtlcih3b3JrZXItPmtleSgp
KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNodXREb3duU2hhcmVkV29ya2Vy
KGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYga2V5KQoreworICAgIGF1dG8gd29ya2Vy
ID0gbV9zaGFyZWRXb3JrZXJzLnRha2Uoa2V5KTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3Jr
ZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNodXREb3duU2hhcmVkV29ya2VyOiBzaGFyZWRX
b3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCAiLCB3b3JrZXI9JXAiLCB3b3JrZXIgPyB3b3JrZXIt
PmlkZW50aWZpZXIudG9VSW50NjQoKSA6IDAsIHdvcmtlci5nZXQoKSk7CisgICAgaWYgKCF3b3Jr
ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gY29u
dGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbih3b3JrZXItPnJlZ2lzdHJhYmxlRG9t
YWluKCkpOworICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKwor
ICAgIGNvbnRleHRDb25uZWN0aW9uLT50ZXJtaW5hdGVTaGFyZWRXb3JrZXIod29ya2VyLT5pZGVu
dGlmaWVyKTsKKworICAgIGlmICghbmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxl
RG9tYWluKHdvcmtlci0+cmVnaXN0cmFibGVEb21haW4oKSkpCisgICAgICAgIGNvbnRleHRDb25u
ZWN0aW9uLT5jb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOworfQorCit2b2lkIFdlYlNoYXJl
ZFdvcmtlclNlcnZlcjo6YWRkQ29ubmVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQoreworICAgIGF1dG8gcHJvY2Vzc0lk
ZW50aWZpZXIgPSBjb25uZWN0aW9uLT53ZWJQcm9jZXNzSWRlbnRpZmllcigpOworICAgIFJFTEVB
U0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29ubmVjdGlv
biglcCk6IHByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgY29ubmVjdGlvbi5nZXQoKSwgcHJv
Y2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb25zLmNv
bnRhaW5zKHByb2Nlc3NJZGVudGlmaWVyKSk7CisgICAgbV9jb25uZWN0aW9ucy5hZGQocHJvY2Vz
c0lkZW50aWZpZXIsIFdURk1vdmUoY29ubmVjdGlvbikpOworfQorCit2b2lkIFdlYlNoYXJlZFdv
cmtlclNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlvbihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBw
cm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25z
LnRha2UocHJvY2Vzc0lkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwg
IldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlvbiglcCk6IHByb2Nlc3NJZGVu
dGlmaWVyPSUiIFBSSXU2NCwgY29ubmVjdGlvbi5nZXQoKSwgcHJvY2Vzc0lkZW50aWZpZXIudG9V
SW50NjQoKSk7CisgICAgQVNTRVJUKGNvbm5lY3Rpb24pOworCisgICAgVmVjdG9yPFdlYkNvcmU6
OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI+IHNoYXJlZFdvcmtlck9iamVjdHNHb2luZ0F3
YXk7CisgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3NoYXJlZFdvcmtlcnMudmFsdWVzKCkpIHsK
KyAgICAgICAgZm9yIChhdXRvJiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIDogd29ya2Vy
LT5zaGFyZWRXb3JrZXJPYmplY3RzLmtleXMoKSkgeworICAgICAgICAgICAgaWYgKHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBwcm9jZXNzSWRlbnRp
ZmllcikKKyAgICAgICAgICAgICAgICBzaGFyZWRXb3JrZXJPYmplY3RzR29pbmdBd2F5LmFwcGVu
ZChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBm
b3IgKGF1dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA6IHNoYXJlZFdvcmtlck9iamVj
dHNHb2luZ0F3YXkpCisgICAgICAgIHNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworfQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OlNo
YXJlZFdvcmtlcjo6U2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3Jp
Z2luLCBjb25zdCBVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYgd29ya2Vy
T3B0aW9ucykKKyAgICA6IGlkZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmll
cjo6Z2VuZXJhdGUoKSkKKyAgICAsIG9yaWdpbihvcmlnaW4pCisgICAgLCB1cmwodXJsKQorICAg
ICwgd29ya2VyT3B0aW9ucyh3b3JrZXJPcHRpb25zKQoreworfQorCit2b2lkIFdlYlNoYXJlZFdv
cmtlclNlcnZlcjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdv
cmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCkKK3sKKyAgICBhdXRvKiB3b3JrZXIgPSBzaGFyZWRXb3JrZXJCeUlkZW50aWZp
ZXIoc2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0dfRVJST1IoU2hhcmVk
V29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmpl
Y3Q6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHdvcmtlcj0lcCIsIHNoYXJl
ZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSwgd29ya2VyKTsKKyAgICBpZiAoIXdvcmtlcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvIHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIgOiB3b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMua2V5cygpKSB7CisgICAgICAgIGlm
IChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIHNlcnZl
ckNvbm5lY3Rpb24tPnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291
cmNlVVJMKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2Vy
U2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJT
aGFyZWRXb3JrZXJTZXJ2ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmM4MzFlMGE0MmFiNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5oCkBAIC0wLDAgKzEs
MTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL1By
b2Nlc3NJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1NoYXJlZFdvcmtlcktleS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyRmV0Y2hSZXN1bHQu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlck9wdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworfQor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya1Nlc3Npb247CitjbGFzcyBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyIDogcHVi
bGljIENhbk1ha2VXZWFrUHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlcj4geworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYlNoYXJlZFdvcmtlclNl
cnZlcihOZXR3b3JrU2Vzc2lvbiYpOworICAgIH5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIoKTsKKwor
ICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpOworCisgICAgdm9pZCByZXF1ZXN0U2hhcmVk
V29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBX
ZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYpOworICAgIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0SXNH
b2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisKKyAgICB2
b2lkIGFkZENvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24mKTsKKyAgICB2b2lkIHJlbW92ZUNvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKKworICAgIHZvaWQgYWRkQ29ubmVjdGlv
bihzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4mJik7Cisg
ICAgdm9pZCByZW1vdmVDb25uZWN0aW9uKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKKwor
ICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIGNvbnRleHRDb25u
ZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mIGRvbWFpbikgeyByZXR1cm4gbV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0KGRvbWFpbik7IH0K
KworICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdv
cmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCitwcml2YXRl
OgorICAgIHZvaWQgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mKTsKKworICAgIGJvb2wgbmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lz
dHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7Cisg
ICAgdm9pZCBjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbiYpOworCisgICAgc3RydWN0IFNoYXJlZFdvcmtlciA6IENhbk1ha2VX
ZWFrUHRyPFNoYXJlZFdvcmtlcj4geworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExP
Q0FURUQ7CisKKyAgICAgICAgU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYsIGNvbnN0IFVSTCYsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmKTsKKworICAgICAg
ICBib29sIGRpZEZpbmlzaEZldGNoaW5nKCkgY29uc3QgeyByZXR1cm4gISFmZXRjaFJlc3VsdC5z
Y3JpcHQ7IH0KKyAgICAgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5IGtleSgpIGNvbnN0IHsg
cmV0dXJuIHsgb3JpZ2luLCB1cmwsIHdvcmtlck9wdGlvbnMubmFtZSB9OyB9CisgICAgICAgIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1
cm4gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfTsgfQorCisgICAgICAgIFdlYkNv
cmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICAgICAgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luIG9yaWdpbjsKKyAgICAgICAgVVJMIHVybDsKKyAgICAgICAgV2ViQ29yZTo6
V29ya2VyT3B0aW9ucyB3b3JrZXJPcHRpb25zOworICAgICAgICBIYXNoTWFwPFdlYkNvcmU6OlNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBv
cnQ+IHNoYXJlZFdvcmtlck9iamVjdHM7CisgICAgICAgIFdlYkNvcmU6OldvcmtlckZldGNoUmVz
dWx0IGZldGNoUmVzdWx0OworICAgICAgICBib29sIGlzUnVubmluZyB7IGZhbHNlIH07CisgICAg
fTsKKworICAgIFNoYXJlZFdvcmtlciogc2hhcmVkV29ya2VyQnlJZGVudGlmaWVyKFdlYkNvcmU6
OlNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworICAgIFNoYXJlZFdvcmtlciogc2hhcmVkV29ya2Vy
QnlPYmplY3RJZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIp
OworICAgIHZvaWQgZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRXb3JrZXJTY3JpcHQoU2hhcmVkV29y
a2VyJiwgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJik7CisgICAgdm9pZCBsYXVuY2hTaGFy
ZWRXb3JrZXIoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYsIFNoYXJl
ZFdvcmtlciYpOworICAgIHZvaWQgcG9zdENvbm5lY3RFdmVudChXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYsIGNvbnN0IFN0cmluZyYgc291
cmNlT3JpZ2luKTsKKyAgICB2b2lkIHNodXREb3duU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6
OlNoYXJlZFdvcmtlcktleSYpOworCisgICAgTmV0d29ya1Nlc3Npb24mIG1fc2Vzc2lvbjsKKyAg
ICBIYXNoTWFwPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4+IG1fY29ubmVjdGlvbnM7CisgICAgSGFzaE1h
cDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbio+IG1fY29udGV4dENvbm5lY3Rpb25zOworICAgIEhhc2hTZXQ8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4+IG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWluczsK
KyAgICBIYXNoTWFwPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSwgc3RkOjp1bmlxdWVfcHRyPFNo
YXJlZFdvcmtlcj4+IG1fc2hhcmVkV29ya2VyczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjNjZjYxMGI2YmI4YQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29y
a2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTA2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9j
ZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbk1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Xb3JrZXJGZXRjaFJlc3VsdC5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxF
QVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1
NjQgIl0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsIG1fd2Vi
UHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgQ09O
TkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoU2hh
cmVkV29ya2VyLCAiJXAgLSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OiIgZm10LCB0aGlzLCBtX3dlYlByb2Nlc3NJZGVu
dGlmaWVyLnRvVUludDY0KCksICMjX19WQV9BUkdTX18pCisKK1dlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb246OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oTmV0d29ya1Byb2Nl
c3MmIG5ldHdvcmtQcm9jZXNzLCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlciwgSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9j
ZXNzSWRlbnRpZmllcikKKyAgICA6IG1fY29udGVudENvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAg
ICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCisgICAgLCBtX3NlcnZlcihzZXJ2
ZXIpCisgICAgLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKHdlYlByb2Nlc3NJZGVudGlmaWVyKQor
eworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb246Iik7Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246On5XZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9H
KCJ+V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjoiKTsKK30KKworSVBDOjpDb25uZWN0
aW9uKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGVudENvbm5lY3Rpb24ucHRyKCk7Cit9
CisKK1BBTDo6U2Vzc2lvbklEIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OnNlc3Np
b25JRCgpCit7CisgICAgcmV0dXJuIHNlcnZlcigpLnNlc3Npb25JRCgpOworfQorCitOZXR3b3Jr
U2Vzc2lvbiogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2Vzc2lvbigpCit7Cisg
ICAgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKTsK
K30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpyZXF1ZXN0U2hhcmVk
V29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBVUkwmJiB1
cmwsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBXZWJDb3JlOjpXb3Jr
ZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucykKK3sKKyAgICBBU1NFUlQoc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fd2ViUHJvY2Vzc0lkZW50aWZp
ZXIpOyAvLyBGSVhNRTogU2hvdWxkIGJlIGEgTUVTU0FHRV9DSEVDSygpLgorICAgIENPTk5FQ1RJ
T05fUkVMRUFTRV9MT0coInJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHRoaXMtPnNlc3Np
b24oKSkKKyAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCkucmVxdWVz
dFNoYXJlZFdvcmtlcihXVEZNb3ZlKG9yaWdpbiksIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIsIFdURk1vdmUodXJsKSwgV1RGTW92ZShwb3J0KSwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSk7
Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6ZmV0Y2hTY3JpcHRJ
bkNsaWVudChjb25zdCBVUkwmIHVybCwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJP
cHRpb25zJiB3b3JrZXJPcHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Oldv
cmtlckZldGNoUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIENPTk5FQ1RJ
T05fUkVMRUFTRV9MT0coImZldGNoU2NyaXB0SW5DbGllbnQ6IHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OkZldGNoU2NyaXB0SW5DbGllbnQgeyB1cmws
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHdvcmtlck9wdGlvbnMgfSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb246Om5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZhaWx1cmUoV2ViQ29yZTo6U2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQoreworICAg
IENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IoIm5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZh
aWx1cmU6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpOb3RpZnlXb3JrZXJP
YmplY3RPZkxvYWRGYWlsdXJlIHsgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciB9KTsKK30K
Kwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0RXhjZXB0aW9uVG9X
b3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQorewor
ICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IoInBvc3RFeGNlcHRpb25Ub1dvcmtlck9i
amVjdDogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OlBvc3RFeGNlcHRpb25U
b1dvcmtlck9iamVjdCB7IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGVycm9yTWVzc2Fn
ZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwgfSk7Cit9CisKK3ZvaWQgV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3
YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyKQoreworICAgIEFTU0VSVChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7IC8vIEZJWE1F
OiBTaG91bGQgYmUgYSBNRVNTQUdFX0NIRUNLKCkuCisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xP
Rygic2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXk6IHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHRoaXMtPnNlc3Npb24o
KSkKKyAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCkuc2hhcmVkV29y
a2VyT2JqZWN0SXNHb2luZ0F3YXkoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7Cit9CisK
KyN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNF
X0xPR19FUlJPUgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLmM2ODQ5YWIwMmVhYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb24uaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CitzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7CitzdHJ1Y3QgV29ya2VyT3B0aW9uczsKK30KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtQcm9jZXNzOworY2xhc3MgV2ViU2hh
cmVkV29ya2VyU2VydmVyOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbiA6IHB1Ymxp
YyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbihOZXR3b3JrUHJvY2VzcyYsIFdlYlNoYXJlZFdvcmtlclNlcnZlciYsIElQ
Qzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICB+V2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpOworCisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVy
JiBzZXJ2ZXIoKSB7IHJldHVybiBtX3NlcnZlcjsgfQorICAgIGNvbnN0IFdlYlNoYXJlZFdvcmtl
clNlcnZlciYgc2VydmVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXI7IH0KKworICAgIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCgpOworICAgIE5ldHdvcmtTZXNzaW9uKiBzZXNzaW9uKCk7Cisg
ICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOyB9CisKKyAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAg
dm9pZCBmZXRjaFNjcmlwdEluQ2xpZW50KGNvbnN0IFVSTCYsIFdlYkNvcmU6OlNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYpPiYmKTsKKyAgICB2
b2lkIG5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZhaWx1cmUoV2ViQ29yZTo6U2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllcik7CisgICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qo
V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCk7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyLgorICAg
IElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsK
KyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIDA7IH0KKworICAgIC8vIElQQyBtZXNzYWdlcy4KKyAgICB2b2lkIHJlcXVlc3RTaGFy
ZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYs
IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJik7CisgICAgdm9pZCBzaGFyZWRXb3JrZXJPYmplY3RJ
c0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKworICAg
IFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29udGVudENvbm5lY3Rpb247CisgICAgUmVmPE5ldHdv
cmtQcm9jZXNzPiBtX25ldHdvcmtQcm9jZXNzOworICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlciYg
bV9zZXJ2ZXI7CisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV93ZWJQcm9jZXNzSWRl
bnRpZmllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hh
cmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mYWU0YTA4MDM3NzkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjYg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4g
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKKyAgICBSZXF1
ZXN0U2hhcmVkV29ya2VyKHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCBXZWJD
b3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIsIFVSTCB1cmwsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQgcG9ydCwgc3Ry
dWN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMgd29ya2VyT3B0aW9ucykKKyAgICBTaGFyZWRXb3Jr
ZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVk
V29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDljMTEyNDE1MjE4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSwxMDcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5o
IgorI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAi
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNs
dWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNk
ZWZpbmUgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xP
RyhTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQgIl0g
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsIHdl
YlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKKworV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVj
dGlvbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWlu
LCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlcikKKyAgICA6IG1fY29ubmVjdGlvbihjb25u
ZWN0aW9uKQorICAgICwgbV9zZXJ2ZXIoc2VydmVyKQorICAgICwgbV9yZWdpc3RyYWJsZURvbWFp
bihyZWdpc3RyYWJsZURvbWFpbikKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9M
T0coIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Iik7CisgICAgc2Vy
dmVyLmFkZENvbnRleHRDb25uZWN0aW9uKCp0aGlzKTsKK30KKworV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24oKQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygifldlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Iik7CisgICAgaWYgKG1fc2VydmVy
ICYmIG1fc2VydmVyLT5jb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lz
dHJhYmxlRG9tYWluKCkpID09IHRoaXMpCisgICAgICAgIG1fc2VydmVyLT5yZW1vdmVDb250ZXh0
Q29ubmVjdGlvbigqdGhpcyk7Cit9CisKK1dlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIFdlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OndlYlByb2Nlc3NJZGVudGlmaWVy
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVy
KCk7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiYgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6aXBjQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29ubmVj
dGlvbi5jb25uZWN0aW9uKCk7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiogV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25z
dAoreworICAgIHJldHVybiAmaXBjQ29ubmVjdGlvbigpOworfQorCit1aW50NjRfdCBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyRGVzdGluYXRp
b25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKQor
eworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiY29ubmVjdGlvbklzTm9Mb25n
ZXJOZWVkZWQ6Iik7CisgICAgbV9jb25uZWN0aW9uLnNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdl
YkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVM
RUFTRV9MT0coInBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdDogc2hhcmVkV29ya2VySWRlbnRp
Zmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAg
aWYgKG1fc2VydmVyKQorICAgICAgICBtX3NlcnZlci0+cG9zdEV4Y2VwdGlvblRvV29ya2VyT2Jq
ZWN0KHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCBzb3VyY2VVUkwpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246OmxhdW5jaFNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0
aW9ucyYgd29ya2VyT3B0aW9ucywgY29uc3QgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmIGZl
dGNoUmVzdWx0KQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygibGF1bmNo
U2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29y
a2VySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkxhdW5jaFNoYXJlZFdvcmtlciB7IG9yaWdp
biwgc2hhcmVkV29ya2VySWRlbnRpZmllciwgdXJsLCB3b3JrZXJPcHRpb25zLCBmZXRjaFJlc3Vs
dCB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Ojpwb3N0Q29ubmVjdEV2ZW50KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVk
V29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYg
cG9ydCwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit7CisgICAgQ09OVEVYVF9DT05ORUNU
SU9OX1JFTEVBU0VfTE9HKCJwb3N0Q29ubmVjdEV2ZW50OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVy
PSUiIFBSSXU2NCwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlBvc3RD
b25uZWN0RXZlbnQgeyBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBwb3J0LCBzb3VyY2VPcmlnaW4g
fSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
dGVybWluYXRlU2hhcmVkV29ya2VyKFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hh
cmVkV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9M
T0coInRlcm1pbmF0ZVNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1
NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpUZXJtaW5hdGVTaGFy
ZWRXb3JrZXIgeyBzaGFyZWRXb3JrZXJJZGVudGlmaWVyIH0pOworfQorCisjdW5kZWYgQ09OVEVY
VF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjA3ZmYwM2Ez
M2Q0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFy
ZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC0w
LDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlV2l0aE1lc3Nh
Z2VQb3J0cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgUmVnaXN0cmFibGVEb21haW47CitjbGFzcyBTY3JpcHRCdWZmZXI7CitzdHJ1
Y3QgQ2xpZW50T3JpZ2luOworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0Oworc3RydWN0IFdvcmtl
ck9wdGlvbnM7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzczsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlcjsKKworY2xhc3Mg
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2ViU2hhcmVkV29ya2VyU2VydmVyJik7Cisg
ICAgfldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKKworICAgIFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3Q7Cisg
ICAgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKCkg
Y29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQorICAgIElQQzo6Q29ubmVjdGlv
biYgaXBjQ29ubmVjdGlvbigpIGNvbnN0OworCisgICAgdm9pZCBsYXVuY2hTaGFyZWRXb3JrZXIo
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRp
ZmllciwgY29uc3QgVVJMJiwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYsIGNvbnN0IFdl
YkNvcmU6OldvcmtlckZldGNoUmVzdWx0Jik7CisgICAgdm9pZCBwb3N0Q29ubmVjdEV2ZW50KFdl
YkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVk
TWVzc2FnZVBvcnQmLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CisgICAgdm9pZCB0ZXJt
aW5hdGVTaGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllcik7CisKKyAg
ICB2b2lkIGNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7CisKKyAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCitwcml2
YXRlOgorICAgIC8vIElQQyBtZXNzYWdlcy4KKyAgICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtl
ck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlci4KKyAgICBJUEM6OkNv
bm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWlu
dDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKKworICAgIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2Nvbm5lY3Rpb247CisgICAgV2Vha1B0cjxX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI+IG1fc2VydmVyOworICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIG1fcmVnaXN0cmFibGVEb21haW47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uYWU0N2MxMjJjYmFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI1IEBACisjIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFdlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CisgICAgUG9zdEV4
Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hh
cmVkV29ya2VySWRlbnRpZmllciwgU3RyaW5nIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIFN0cmluZyBzb3VyY2VVUkwpCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9n
Z2luZy5oCmluZGV4IDQ0ZTBhN2FjYjdiNS4uN2I3Y2M5YmFjNGEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0xvZ2dpbmcuaApAQCAtOTcsNiArOTcsNyBAQCBleHRlcm4gIkMiIHsKICAgICBNKFNlcnZpY2VX
b3JrZXIpIFwKICAgICBNKFNlc3Npb25TdGF0ZSkgXAogICAgIE0oU2hhcmVkRGlzcGxheUxpc3Rz
KSBcCisgICAgTShTaGFyZWRXb3JrZXIpIFwKICAgICBNKFN0b3JhZ2UpIFwKICAgICBNKFN0b3Jh
Z2VBUEkpIFwKICAgICBNKFRleHRJbnB1dCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKaW5kZXggN2ViZmE1MTZiNTAzLi4xYTI2MWUwYjEwZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMzAzLDEwICszMDMsMTMgQEAgZGVm
IHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYkNv
cmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6
U2hhcmVkU3RyaW5nSGFzaCcsCisgICAgICAgICdXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlm
aWVyJywKKyAgICAgICAgJ1dlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXInLAog
ICAgICAgICAnV2ViQ29yZTo6U2xlZXBEaXNhYmxlcklkZW50aWZpZXInLAogICAgICAgICAnV2Vi
Q29yZTo6U291cmNlQnVmZmVyQXBwZW5kTW9kZScsCiAgICAgICAgICdXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6
OlN0b3JhZ2VUeXBlJywKKyAgICAgICAgJ1dlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQn
LAogICAgICAgICAnV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdElkZW50aWZpZXInLAogICAgICAg
ICAnV2ViQ29yZTo6V2ViTG9ja0lkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6V2ViU29j
a2V0SWRlbnRpZmllcicsCkBAIC04NTEsNiArODU0LDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUo
dHlwZSk6CiAgICAgICAgICdXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlJzogWyc8V2ViQ29yZS9U
ZXh0Q2hlY2tpbmcuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhJzog
Wyc8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlJzogWyc8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
aD4nXSwKKyAgICAgICAgJ1dlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQnOiBbJzxXZWJD
b3JlL01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpVc2Vk
TGVnYWN5VExTJzogWyc8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oPiddLAogICAgICAg
ICAnV2ViQ29yZTo6VmlkZW9QcmVzZXREYXRhJzogWyc8V2ViQ29yZS9WaWRlb1ByZXNldC5oPidd
LAogICAgICAgICAnV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJzogWyc8V2ViQ29yZS9WaWV3
cG9ydEFyZ3VtZW50cy5oPiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggZGY0N2M3ODZjOGRlLi5lNGMwNzg3
NTJmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMTQxLDYgKzE0MSwxMCBAQCBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuY3BwIEBuby11bmlmeQogTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIEBuby11bmlmeQogTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwIEBuby11bmlmeQogCitOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29y
a2VyU2VydmVyLmNwcAorTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb24uY3BwCitOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKwogTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9G
aWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5LmNwcApAQCAtNzgyLDYgKzc4Niw5IEBAIFdl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV09yaWdpblRhYmxlLmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlclByb3ZpZGVyLmNwcAorV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKK1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcAorV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNo
YXJlZFdvcmtlclByb3ZpZGVyLmNwcAogCiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlci5jcHAKIApAQCAtODg0LDMgKzg5MSw3IEBAIFJlbW90ZVdlYkxvY2tS
ZWdpc3RyeU1lc3NhZ2VSZWNlaXZlci5jcHAKIFNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2tNZXNz
YWdlUmVjZWl2ZXIuY3BwCiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnlNZXNzYWdlUmVjZWl2
ZXIuY3BwCiBXZWJMb2NrUmVnaXN0cnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKK1dlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKK1dlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CmluZGV4IGE2NzgzNjdhNzc1YS4uMzMwMjBiZDVjM2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTUy
OSw3ICs1MjksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVdlYlByb2Nl
c3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvYwogdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5Ojp0ZXJtaW5hdGVVbnJlc3BvbnNpdmVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQogewogICAgIGlmIChSZWZQ
dHIgcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIocHJvY2Vz
c0lkZW50aWZpZXIpKSB7Ci0gICAgICAgIHByb2Nlc3MtPmRpc2FibGVTZXJ2aWNlV29ya2Vycygp
OworICAgICAgICBwcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6Oldvcmtl
clR5cGU6OlNlcnZpY2VXb3JrZXIpOwogICAgICAgICBwcm9jZXNzLT5yZXF1ZXN0VGVybWluYXRp
b24oUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpFeGNlZWRlZENQVUxpbWl0KTsKICAgICB9CiB9
CkBAIC0xNDE1LDE2ICsxNDE1LDIxIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRGVz
dHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50CiB9CiAjZW5k
aWYKIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
JiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgV2ViUHJvY2Vzc1Bv
b2w6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyhXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7Cit9CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3Rk
OjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtl
clBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBXZWJQcm9jZXNzUG9vbDo6
ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcygq
dGhpcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRp
Zmllciwgc2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgV2ViUHJv
Y2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MoV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQYWdlSWRl
bnRpZmllciwgc2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9M
b25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAg
ICBpZiAoYXV0byogcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZp
ZXIoaWRlbnRpZmllcikpCi0gICAgICAgIHByb2Nlc3MtPmRpc2FibGVTZXJ2aWNlV29ya2Vycygp
OworICAgICAgICBwcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6Oldvcmtl
clR5cGU6OlNlcnZpY2VXb3JrZXIpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJl
Z2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZp
Y2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikKQEAgLTE0NjAsNiArMTQ2NSwxMiBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhX
ZWJDb3JlOjpQcm9jZXNzSQogfQogI2VuZGlmCiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
c2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvKiBwcm9jZXNzID0gV2Vi
UHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihpZGVudGlmaWVyKSkKKyAgICAgICAg
cHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTaGFy
ZWRXb3JrZXIpOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdl
U3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4mIG9yaWdpbiwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwg
dWludDY0X3Qgc3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBxdW90YSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUkVMRUFT
RV9MT0coU3RvcmFnZSwgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VT
cGFjZSIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBhNGUzNjQ1ZWJhYWUuLjY4NDFhMzRmZTA5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgKQEAgLTMzNCw2ICszMzQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRT
ZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKICAgICB2b2lkIGVuZFNlcnZpY2VX
b3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2
aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogI2VuZGlmCisgICAgdm9pZCBzaGFyZWRXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyKTsKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25J
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgdGVybWluYXRlV2Vi
UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbgppbmRleCAxMmQwNmNlYmQ2MmEuLjE1NzU3ZWQ5YTI1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNjAsNiArNjAsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3Jr
UHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBTdGFydFNlcnZpY2VXb3JrZXJCYWNr
Z3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2Vy
UHJvY2Vzc0lkZW50aWZpZXIpCiAgICAgRW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNz
aW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRp
ZmllcikKICNlbmRpZgorICAgIEVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURv
bWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYworICAgIFNoYXJlZFdv
cmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIgaWRlbnRpZmllcikKIAogICAgIFNldFdlYlByb2Nlc3NIYXNVcGxvYWRzKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJRCwgYm9vbCBoYXNVcGxvYWQpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGU0OTkzNWMzMjVmNi4uMWFjYjM0
NDRhZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM2
OTEsMTEgKzM2OTEsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlckFnZW50KFN0cmluZyYm
IHVzZXJBZ2VudCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fdXNlckFnZW50ID0gV1RGTW92ZSh1
c2VyQWdlbnQpOwogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIC8vIFdlIHVwZGF0
ZSB0aGUgc2VydmljZSB3b3JrZXIgdGhlcmUgYXQgdGhlIG1vbWVudCB0byBiZSBzdXJlIHdlIHVz
ZSB2YWx1ZXMgdXNlZCBieSBhY3R1YWwgd2ViIHBhZ2VzLgogICAgIC8vIEZJWE1FOiBSZWZhY3Rv
ciB0aGlzIHdoZW4gd2UgaGF2ZSBhIGJldHRlciBVc2VyLUFnZW50IHN0b3J5LgotICAgIHByb2Nl
c3MoKS5wcm9jZXNzUG9vbCgpLnVwZGF0ZVNlcnZpY2VXb3JrZXJVc2VyQWdlbnQobV91c2VyQWdl
bnQpOwotI2VuZGlmCisgICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCkudXBkYXRlV29ya2VyVXNl
ckFnZW50KG1fdXNlckFnZW50KTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CmluZGV4IGFmYzIzZWU1M2YxMi4uNGIxOWIwZDFkM2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC01MjksNyArNTI5LDcgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6Z2V0V2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdl
YlByb2Nlc3NQcm8KIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6OnNfdXNlU2VwYXJhdGVTZXJ2aWNlV29y
a2VyUHJvY2VzcyA9IGZhbHNlOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiBwcm94eSwgUmVnaXN0cmFibGVEb21h
aW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250
ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURv
bWFpbiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2Vy
dmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiB3
ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JT
ZXNzaW9uSUQoc2Vzc2lvbklEKTsKICAgICBpZiAoIXdlYnNpdGVEYXRhU3RvcmUpCkBAIC01NDYs
NyArNTQ2LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXQKICAgICBpZiAoc2VydmljZVdvcmtl
clBhZ2VJZGVudGlmaWVyKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgYSBzZXJ2aWNlIHdvcmtlciBm
b3IgYSBzZXJ2aWNlIHdvcmtlciBwYWdlIHNvIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIHVzZSB1
c2UgdGhlIHBhZ2UncyBXZWJQcm9jZXNzIGZvciB0aGUgc2VydmljZSB3b3JrZXIuCiAgICAgICAg
IGlmICgoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vz
c0ZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLT5wcm9jZXNzSWRlbnRp
ZmllcigpKSkpIHsKLSAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJs
ZVNlcnZpY2VXb3JrZXJzKHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyRm9yU2VydmljZVdvcmtlcnMoKSk7CisgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5LT5lbmFibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2Vydmlj
ZVdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JX
b3JrZXJzKCkpOwogICAgICAgICAgICAgaWYgKHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmlz
SW5Qcm9jZXNzQ2FjaGUoKSkgewogICAgICAgICAgICAgICAgIHByb2Nlc3NQb29sLT53ZWJQcm9j
ZXNzQ2FjaGUoKS5yZW1vdmVQcm9jZXNzKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBXZWJQ
cm9jZXNzQ2FjaGU6OlNob3VsZFNodXREb3duUHJvY2Vzczo6Tm8pOwogICAgICAgICAgICAgICAg
IEFTU0VSVCghc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKTsK
QEAgLTU2NCw3ICs1NjQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNl
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldAogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0g
cHJvY2Vzcy5wdHIoKTsKLSAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVu
YWJsZVNlcnZpY2VXb3JrZXJzKHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKSk7CisgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5LT5lbmFibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2Vy
dmljZVdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJG
b3JXb3JrZXJzKCkpOwogCiAgICAgICAgICAgICBpZiAoc2VydmljZVdvcmtlclByb2Nlc3NQcm94
eS0+aXNJblByb2Nlc3NDYWNoZSgpKSB7CiAgICAgICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPndl
YlByb2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nlc3MoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHks
IFdlYlByb2Nlc3NDYWNoZTo6U2hvdWxkU2h1dERvd25Qcm9jZXNzOjpObyk7CkBAIC01NzcsNyAr
NTc3LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXQKICAgICB9CiAKICAgICBpZiAoIXNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHkpIHsKLSAgICAgICAgYXV0byBuZXdQcm9jZXNzUHJveHkgPSBX
ZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKCpwcm9jZXNzUG9vbCwgUmVn
aXN0cmFibGVEb21haW4gIHsgcmVnaXN0cmFibGVEb21haW4gfSwgKndlYnNpdGVEYXRhU3RvcmUp
OworICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRl
Rm9yV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsICpw
cm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21haW4gIHsgcmVnaXN0cmFibGVEb21haW4gfSwgKndl
YnNpdGVEYXRhU3RvcmUpOwogICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gbmV3
UHJvY2Vzc1Byb3h5LnB0cigpOwogCiAgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9H
X1NUQVRJQyhTZXJ2aWNlV29ya2VyLCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyBjcmVhdGluZyBhIG5ldyBzZXJ2aWNlIHdvcmtlciBwcm9j
ZXNzIChwcm9jZXM9JXAsIFBJRD0lZCkiLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBzZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKQEAgLTU4NiwyMCAr
NTg2LDcwIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0CiAgICAgICAgIHByb2Nlc3NQb29sLT5t
X3Byb2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdQcm9jZXNzUHJveHkpKTsKICAgICB9CiAKLSAg
ICBBU1NFUlQoIXNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb250YWlucygqc2VydmljZVdvcmtl
clByb2Nlc3NQcm94eSkpOwotICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHkpOworICAgIHdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eSk7CiAKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5l
c3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2Vy
UHJlZmVyZW5jZXMgPyBwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMudmFs
dWUoKSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3Rv
cmUoKSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fc2Vydmlj
ZVdvcmtlclVzZXJBZ2VudC5pc051bGwoKSkKLSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eS0+c2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29y
a2VyVXNlckFnZW50KTsKKyAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hT
ZXJ2aWNlV29ya2VyQ29udGV4dChwcm9jZXNzUG9vbC0+bV93b3JrZXJQcmVmZXJlbmNlcyA/IHBy
b2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBwcm9jZXNzUG9vbC0+bV9k
ZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3JlKCksIHJlZ2lzdHJhYmxlRG9tYWlu
LCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICBpZiAoIXByb2Nlc3NQb29sLT5tX3dvcmtlclVzZXJBZ2VudC5pc051bGwoKSkKKyAg
ICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+c2V0V29ya2VyVXNlckFnZW50KHByb2Nl
c3NQb29sLT5tX3dvcmtlclVzZXJBZ2VudCk7CiB9CisjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNz
UG9vbDo6cmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jZXNzKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlRnJvbVdvcmtlclByb2Nlc3NlcyhX
ZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7Ci0gICAgQVNTRVJUKHNlcnZpY2VXb3JrZXJQcm9j
ZXNzZXMoKS5jb250YWlucyhwcm9jZXNzKSk7Ci0gICAgc2VydmljZVdvcmtlclByb2Nlc3Nlcygp
LnJlbW92ZShwcm9jZXNzKTsKKyAgICBBU1NFUlQod29ya2VyUHJvY2Vzc2VzKCkuY29udGFpbnMo
cHJvY2VzcykpOworICAgIHdvcmtlclByb2Nlc3NlcygpLnJlbW92ZShwcm9jZXNzKTsKK30KKwor
dm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFi
bGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8qIHdlYnNpdGVEYXRhU3RvcmUg
PSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChzZXNzaW9u
SUQpOworICAgIGlmICghd2Vic2l0ZURhdGFTdG9yZSkKKyAgICAgICAgd2Vic2l0ZURhdGFTdG9y
ZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS5wdHIoKTsKKyAgICBpZiAo
IXByb2Nlc3NQb29scygpLnNpemUoKSkKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
ZjxXZWJQcm9jZXNzUG9vbD4+IHNoYXJlZFdvcmtlclByb2Nlc3NQb29sKFdlYlByb2Nlc3NQb29s
OjpjcmVhdGUoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpLmdldCgpKSk7
CisKKyAgICAvLyBBcmJpdHJhcmlseSBjaG9vc2UgdGhlIGZpcnN0IHByb2Nlc3MgcG9vbCB0byBo
b3N0IHRoZSBzaGFyZWQgd29ya2VyIHByb2Nlc3MuCisgICAgYXV0byogcHJvY2Vzc1Bvb2wgPSBw
cm9jZXNzUG9vbHMoKVswXTsKKyAgICBBU1NFUlQocHJvY2Vzc1Bvb2wpOworCisgICAgV2ViUHJv
Y2Vzc1Byb3h5KiBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkgeyBudWxscHRyIH07CisKKyAgICBm
b3IgKGF1dG8mIHByb2Nlc3MgOiBwcm9jZXNzUG9vbC0+bV9wcm9jZXNzZXMpIHsKKyAgICAgICAg
aWYgKHByb2Nlc3MucHRyKCkgPT0gcHJvY2Vzc1Bvb2wtPm1fcHJld2FybWVkUHJvY2Vzcy5nZXQo
KSB8fCBwcm9jZXNzLT5pc0R1bW15UHJvY2Vzc1Byb3h5KCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgaWYgKCZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gd2Vic2l0ZURh
dGFTdG9yZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoIXByb2Nlc3MtPmlz
TWF0Y2hpbmdSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkgPSBwcm9jZXNz
LnB0cigpOworICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVdvcmtlcnMo
V2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIsIHByb2Nlc3NQb29sLT51
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpKTsKKworICAgICAgICBp
ZiAoc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpIHsKKyAgICAg
ICAgICAgIHByb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5yZW1vdmVQcm9jZXNzKCpzaGFy
ZWRXb3JrZXJQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NDYWNoZTo6U2hvdWxkU2h1dERvd25Qcm9j
ZXNzOjpObyk7CisgICAgICAgICAgICBBU1NFUlQoIXNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+
aXNJblByb2Nlc3NDYWNoZSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIFdFQlBST0NFU1NQT09M
X1JFTEVBU0VfTE9HX1NUQVRJQyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgcmV1c2luZyBhbiBleGlzdGluZyB3ZWIg
cHJvY2VzcyAocHJvY2Vzcz0lcCwgUElEPSVkKSIsIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSwg
c2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgaWYgKCFzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkpIHsKKyAg
ICAgICAgYXV0byBuZXdQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvcldv
cmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIsICpwcm9jZXNz
UG9vbCwgUmVnaXN0cmFibGVEb21haW4gIHsgcmVnaXN0cmFibGVEb21haW4gfSwgKndlYnNpdGVE
YXRhU3RvcmUpOworICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkgPSBuZXdQcm9jZXNz
UHJveHkucHRyKCk7CisKKyAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElD
KFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyBjcmVhdGluZyBhIG5ldyBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzIChwcm9j
ZXNzPSVwLCBQSUQ9JWQpIiwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LCBzaGFyZWRXb3JrZXJQ
cm9jZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOworCisgICAgICAgIHByb2Nlc3NQb29s
LT5pbml0aWFsaXplTmV3V2ViUHJvY2VzcyhuZXdQcm9jZXNzUHJveHksIHdlYnNpdGVEYXRhU3Rv
cmUpOworICAgICAgICBwcm9jZXNzUG9vbC0+bV9wcm9jZXNzZXMuYXBwZW5kKFdURk1vdmUobmV3
UHJvY2Vzc1Byb3h5KSk7CisgICAgfQorCisgICAgd29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpzaGFy
ZWRXb3JrZXJQcm9jZXNzUHJveHkpOworCisgICAgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5l
c3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0KHByb2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVu
Y2VzID8gcHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQ
b29sLT5tX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFi
bGVEb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBpZiAoIXByb2Nlc3NQ
b29sLT5tX3dvcmtlclVzZXJBZ2VudC5pc051bGwoKSkKKyAgICAgICAgc2hhcmVkV29ya2VyUHJv
Y2Vzc1Byb3h5LT5zZXRXb3JrZXJVc2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFn
ZW50KTsKIH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp3aW5kb3dTZXJ2ZXJDb25u
ZWN0aW9uU3RhdGVDaGFuZ2VkKCkKIHsKQEAgLTEwMDMsMTAgKzEwNTMsOCBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiAK
ICAgICBtX2JhY2tGb3J3YXJkQ2FjaGUtPnJlbW92ZUVudHJpZXNGb3JQcm9jZXNzKHByb2Nlc3Mp
OwogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmIChwcm9jZXNzLmlzUnVubmlu
Z1NlcnZpY2VXb3JrZXJzKCkpCi0gICAgICAgIHJlbW92ZUZyb21TZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzKHByb2Nlc3MpOwotI2VuZGlmCisgICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nV29ya2Vycygp
KQorICAgICAgICByZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKHByb2Nlc3MpOwogCiAgICAgc3Rh
dGljX2Nhc3Q8V2ViQ29udGV4dFN1cHBsZW1lbnQqPihzdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5PigpKS0+cHJvY2Vzc0RpZENsb3NlKCZwcm9jZXNzKTsKIApAQCAtMTA2Nywx
MiArMTExNSwxMiBAQCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vz
c0ZvclJlZ2lzdHJhYmxlRG9tYWluKFdlYnNpdGVEYXRhU3RvcgogfQogCiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQotVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBXZWJQcm9jZXNz
UG9vbDo6dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvclNlcnZpY2VXb3JrZXJzKCkK
K1VzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgV2ViUHJvY2Vzc1Bvb2w6OnVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkKIHsKLSAgICBpZiAoIW1fdXNlckNv
bnRlbnRDb250cm9sbGVyRm9yU2VydmljZVdvcmtlcikKLSAgICAgICAgbV91c2VyQ29udGVudENv
bnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
OmNyZWF0ZSgpOworICAgIGlmICghbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JXb3JrZXJzKQor
ICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtlcnMgPSBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKCk7CiAKLSAgICByZXR1cm4gbV91c2VyQ29udGVudENv
bnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyLT5pZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIG1fdXNl
ckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2Vycy0+aWRlbnRpZmllcigpOwogfQogI2VuZGlmCiAK
QEAgLTExMTksMTUgKzExNjcsMTMgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6
OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSToKIAogICAgIGF1
dG8gcGFnZSA9IHByb2Nlc3MtPmNyZWF0ZVdlYlBhZ2UocGFnZUNsaWVudCwgV1RGTW92ZShwYWdl
Q29uZmlndXJhdGlvbikpOwogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmICgh
bV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMpIHsKLSAgICAgICAgbV9zZXJ2aWNlV29ya2VyUHJl
ZmVyZW5jZXMgPSBwYWdlLT5wcmVmZXJlbmNlc1N0b3JlKCk7Ci0gICAgICAgIGZvciAoYXV0byYg
c2VydmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkpCi0gICAgICAg
ICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy51cGRhdGVTZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXNT
dG9yZSgqbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMpOworICAgIGlmICghbV93b3JrZXJQcmVm
ZXJlbmNlcykgeworICAgICAgICBtX3dvcmtlclByZWZlcmVuY2VzID0gcGFnZS0+cHJlZmVyZW5j
ZXNTdG9yZSgpOworICAgICAgICBmb3IgKGF1dG8mIHdvcmtlclByb2Nlc3MgOiB3b3JrZXJQcm9j
ZXNzZXMoKSkKKyAgICAgICAgICAgIHdvcmtlclByb2Nlc3MudXBkYXRlV29ya2VyUHJlZmVyZW5j
ZXNTdG9yZSgqbV93b3JrZXJQcmVmZXJlbmNlcyk7CiAgICAgfQogICAgIGlmICh1c2VyQ29udGVu
dENvbnRyb2xsZXIpCi0gICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yU2VydmljZVdv
cmtlciA9IHVzZXJDb250ZW50Q29udHJvbGxlcjsKLSNlbmRpZgorICAgICAgICBtX3VzZXJDb250
ZW50Q29udHJvbGxlckZvcldvcmtlcnMgPSB1c2VyQ29udGVudENvbnRyb2xsZXI7CiAKICAgICBi
b29sIGVuYWJsZVByb2Nlc3NTd2FwT25Dcm9zc1NpdGVOYXZpZ2F0aW9uID0gcGFnZS0+cHJlZmVy
ZW5jZXMoKS5wcm9jZXNzU3dhcE9uQ3Jvc3NTaXRlTmF2aWdhdGlvbkVuYWJsZWQoKTsKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQpAQCAtMTE1MCwxNiArMTE5NiwxNCBAQCBSZWY8V2ViUGFnZVBy
b3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50
LCBSZWY8QVBJOgogICAgIHJldHVybiBwYWdlOwogfQogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlU2VydmljZVdvcmtlclVzZXJBZ2VudChj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVdvcmtl
clVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKIHsKLSAgICBpZiAobV9zZXJ2aWNl
V29ya2VyVXNlckFnZW50ID09IHVzZXJBZ2VudCkKKyAgICBpZiAobV93b3JrZXJVc2VyQWdlbnQg
PT0gdXNlckFnZW50KQogICAgICAgICByZXR1cm47Ci0gICAgbV9zZXJ2aWNlV29ya2VyVXNlckFn
ZW50ID0gdXNlckFnZW50OwotICAgIGZvciAoYXV0byYgc2VydmljZVdvcmtlclByb2Nlc3MgOiBz
ZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkpCi0gICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzLnNl
dFNlcnZpY2VXb3JrZXJVc2VyQWdlbnQobV9zZXJ2aWNlV29ya2VyVXNlckFnZW50KTsKKyAgICBt
X3dvcmtlclVzZXJBZ2VudCA9IHVzZXJBZ2VudDsKKyAgICBmb3IgKGF1dG8mIHdvcmtlclByb2Nl
c3MgOiB3b3JrZXJQcm9jZXNzZXMoKSkKKyAgICAgICAgd29ya2VyUHJvY2Vzcy5zZXRXb3JrZXJV
c2VyQWdlbnQobV93b3JrZXJVc2VyQWdlbnQpOwogfQotI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHBhZ2VJRCwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQogewpAQCAtMTUzOCw4ICsx
NTgyLDEzIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzKCkK
IHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAq
dGhpcyB9OwotICAgIHdoaWxlIChzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkuY29tcHV0ZVNpemUo
KSkKLSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmJlZ2luKCktPmRpc2FibGVTZXJ2
aWNlV29ya2VycygpOworICAgIFZlY3RvcjxSZWY8V2ViUHJvY2Vzc1Byb3h5Pj4gc2VydmljZVdv
cmtlclByb2Nlc3NlczsKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFsmXShhdXRvJiBw
cm9jZXNzKSB7CisgICAgICAgIGlmIChwcm9jZXNzLmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkp
CisgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFwcGVuZChwcm9jZXNzKTsKKyAg
ICB9KTsKKyAgICBmb3IgKGF1dG8mIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogc2VydmljZVdvcmtl
clByb2Nlc3NlcykKKyAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3MtPmRpc2FibGVXb3JrZXJz
KFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiAjZW5kaWYKIH0K
IApAQCAtMTc2NywxMyArMTgxNiwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXBvcnRXZWJD
b250ZW50Q1BVVGltZShTZWNvbmRzIGNwdVRpbWUsIHVpbnQ2NF90IGFjdGl2aXR5UwogI2VuZGlm
CiB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1XZWFrSGFzaFNldDxXZWJQcm9jZXNz
UHJveHk+JiBXZWJQcm9jZXNzUG9vbDo6c2VydmljZVdvcmtlclByb2Nlc3NlcygpCitXZWFrSGFz
aFNldDxXZWJQcm9jZXNzUHJveHk+JiBXZWJQcm9jZXNzUG9vbDo6d29ya2VyUHJvY2Vzc2VzKCkK
IHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5
Pj4gcHJvY2Vzc2VzOwogICAgIHJldHVybiBwcm9jZXNzZXM7CiB9Ci0jZW5kaWYKIAogdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKQogewpAQCAtMTc4NSwyMCAr
MTgzMiwyNSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygp
CiAgICAgaWYgKGF1dG8qIGdwdVByb2Nlc3MgPSBHUFVQcm9jZXNzUHJveHk6OnNpbmdsZXRvbklm
Q3JlYXRlZCgpKQogICAgICAgICBncHVQcm9jZXNzLT51cGRhdGVQcm9jZXNzQXNzZXJ0aW9uKCk7
CiAjZW5kaWYKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKICAgICAvLyBDaGVjayBvbiBu
ZXh0IHJ1biBsb29wIHNpbmNlIHRoZSB3ZWIgcHJvY2VzcyBwcm94eSB0b2tlbnMgYXJlIHByb2Jh
Ymx5IGJlaW5nIHVwZGF0ZWQuCiAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW10gewotICAgICAgICBm
b3IgKGF1dG8mIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogc2VydmljZVdvcmtlclByb2Nlc3Nlcygp
KQotICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3MudXBkYXRlU2VydmljZVdvcmtlclBy
b2Nlc3NBc3NlcnRpb24oKTsKLSAgICB9KTsKKyAgICAgICAgd29ya2VyUHJvY2Vzc2VzKCkuZm9y
RWFjaChbXShhdXRvJiB3b3JrZXJQcm9jZXNzKSB7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQorICAgICAgICAgICAgaWYgKHdvcmtlclByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMo
KSkKKyAgICAgICAgICAgICAgICB3b3JrZXJQcm9jZXNzLnVwZGF0ZVdvcmtlclByb2Nlc3NBc3Nl
cnRpb24oV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICNlbmRp
ZgorICAgICAgICAgICAgaWYgKHdvcmtlclByb2Nlc3MuaXNSdW5uaW5nU2hhcmVkV29ya2Vycygp
KQorICAgICAgICAgICAgICAgIHdvcmtlclByb2Nlc3MudXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2Vy
dGlvbihXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlcik7CisgICAgICAg
IH0pOworICAgIH0pOwogfQogCiBib29sIFdlYlByb2Nlc3NQb29sOjppc1NlcnZpY2VXb3JrZXJQ
YWdlSUQoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpIGNvbnN0CiB7CiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGluZWZmaWNpZW50LgotICAg
IHJldHVybiBXVEY6OmFueU9mKHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSwgW3BhZ2VJRF0oYXV0
byYgcHJvY2VzcykgeworICAgIHJldHVybiBXVEY6OmFueU9mKHdvcmtlclByb2Nlc3NlcygpLCBb
cGFnZUlEXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiBwcm9jZXNzLmhhc1NlcnZp
Y2VXb3JrZXJQYWdlUHJveHkocGFnZUlEKTsKICAgICB9KTsKICNlbmRpZgpAQCAtMjEyNCwxNiAr
MjE3NiwyNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRVc2VTZXBhcmF0ZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzKGJvb2wgdXNlU2VwYXJhdGVTZXJ2aWNlVwogfQogCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQorc2l6ZV90IFdlYlByb2Nlc3NQb29sOjpzZXJ2aWNlV29ya2VyUHJveGllc0Nv
dW50KCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBjb3VudCA9IDA7CisgICAgd29ya2VyUHJvY2Vz
c2VzKCkuZm9yRWFjaChbJl0oYXV0byYgcHJvY2VzcykgeworICAgICAgICBpZiAocHJvY2Vzcy5p
c1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQorICAgICAgICAgICAgKytjb3VudDsKKyAgICB9KTsK
KyAgICByZXR1cm4gY291bnQ7Cit9CisKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6Omhhc1NlcnZpY2VX
b3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
V1RGOjphbnlPZihzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsK
KyAgICByZXR1cm4gV1RGOjphbnlPZih3b3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2Vz
cykgewogICAgICAgICByZXR1cm4gcHJvY2Vzcy5oYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFj
dGl2aXR5Rm9yVGVzdGluZygpOwogICAgIH0pOwogfQogCiBib29sIFdlYlByb2Nlc3NQb29sOjpo
YXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIFdURjo6YW55T2Yoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBw
cm9jZXNzKSB7CisgICAgcmV0dXJuIFdURjo6YW55T2Yod29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1
dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuIHByb2Nlc3MuaGFzU2VydmljZVdvcmtlckJh
Y2tncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGViNjZkODk0OTBkZi4uZTcwYjZmNDI5Zjdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTM3NCwxNyAr
Mzc0LDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIG5ldHdvcmtQcm9jZXNzRGlkVGVybWluYXRlKE5l
dHdvcmtQcm9jZXNzUHJveHkmLCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJtaW5hdGlvblJlYXNv
bik7CiAKICAgICBib29sIGlzU2VydmljZVdvcmtlclBhZ2VJRChXZWJQYWdlUHJveHlJZGVudGlm
aWVyKSBjb25zdDsKKyAgICB2b2lkIHJlbW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vz
c1Byb3h5Jik7CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgc3RhdGljIHZvaWQg
ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhO
ZXR3b3JrUHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKLSAgICB2b2lkIHJlbW92ZUZyb21TZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKFdl
YlByb2Nlc3NQcm94eSYpOwotICAgIHNpemVfdCBzZXJ2aWNlV29ya2VyUHJveGllc0NvdW50KCkg
Y29uc3QgeyByZXR1cm4gc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmNvbXB1dGVTaXplKCk7IH0K
LSAgICB2b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2Vy
QWdlbnQpOwotICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgdXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllckZvclNlcnZpY2VXb3JrZXJzKCk7CisgICAgc3RhdGljIHZvaWQg
ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIs
IFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHNpemVf
dCBzZXJ2aWNlV29ya2VyUHJveGllc0NvdW50KCkgY29uc3Q7CisgICAgVXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllciB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2Vy
cygpOwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3Rp
bmcoKSBjb25zdDsKICAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kQWN0aXZpdHlG
b3JUZXN0aW5nKCkgY29uc3Q7CiAjZW5kaWYKICAgICB2b2lkIHNlcnZpY2VXb3JrZXJQcm9jZXNz
Q3Jhc2hlZChXZWJQcm9jZXNzUHJveHkmKTsKIAorICAgIHZvaWQgdXBkYXRlV29ya2VyVXNlckFn
ZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKKyAgICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hT
aGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CisKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIHByb2Nlc3NTdXBwcmVzc2lv
bkVuYWJsZWQoKSBjb25zdDsKICNlbmRpZgpAQCAtNjE4LDEzICs2MjEsMTEgQEAgcHJpdmF0ZToK
IAogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFdlYWtQdHI8V2ViUHJvY2Vzc1Byb3h5Pj4g
bV9kdW1teVByb2Nlc3NQcm94aWVzOyAvLyBMaWdodHdlaWdodCBXZWJQcm9jZXNzUHJveHkgb2Jq
ZWN0cyB3aXRob3V0IGJhY2tpbmcgcHJvY2Vzcy4KIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKLSAgICBzdGF0aWMgV2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5PiYgc2VydmljZVdvcmtl
clByb2Nlc3NlcygpOwotICAgIGJvb2wgbV93YWl0aW5nRm9yV29ya2VyQ29udGV4dFByb2Nlc3ND
b25uZWN0aW9uIHsgZmFsc2UgfTsKLSAgICBTdHJpbmcgbV9zZXJ2aWNlV29ya2VyVXNlckFnZW50
OwotICAgIHN0ZDo6b3B0aW9uYWw8V2ViUHJlZmVyZW5jZXNTdG9yZT4gbV9zZXJ2aWNlV29ya2Vy
UHJlZmVyZW5jZXM7Ci0gICAgUmVmUHRyPFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5PiBt
X3VzZXJDb250ZW50Q29udHJvbGxlckZvclNlcnZpY2VXb3JrZXI7Ci0jZW5kaWYKKyAgICBzdGF0
aWMgV2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5PiYgd29ya2VyUHJvY2Vzc2VzKCk7CisKKyAg
ICBzdGQ6Om9wdGlvbmFsPFdlYlByZWZlcmVuY2VzU3RvcmU+IG1fd29ya2VyUHJlZmVyZW5jZXM7
CisgICAgUmVmUHRyPFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5PiBtX3VzZXJDb250ZW50
Q29udHJvbGxlckZvcldvcmtlcnM7CisgICAgU3RyaW5nIG1fd29ya2VyVXNlckFnZW50OwogCiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIFJlZlB0cjxHUFVQcm9jZXNzUHJveHk+IG1fZ3B1
UHJvY2VzczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmlu
ZGV4IGNhYzM2N2YxMTE5Zi4uZGU5NGM1OGViODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJXZWJQ
cm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUg
IldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJzaXRl
RGF0YS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKQEAgLTE4MiwxMSAr
MTgzLDExIEBAIFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKFdl
YlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2Vic2l0CiB9CiAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi1SZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZv
clNlcnZpY2VXb3JrZXJzKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVE
b21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFT
dG9yZSkKK1JlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yV29y
a2VycyhXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwg
UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYg
d2Vic2l0ZURhdGFTdG9yZSkKIHsKICAgICBhdXRvIHByb3h5ID0gYWRvcHRSZWYoKm5ldyBXZWJQ
cm9jZXNzUHJveHkocHJvY2Vzc1Bvb2wsICZ3ZWJzaXRlRGF0YVN0b3JlLCBJc1ByZXdhcm1lZDo6
Tm8sIENyb3NzT3JpZ2luTW9kZTo6U2hhcmVkLCBDYXB0aXZlUG9ydGFsTW9kZTo6RGlzYWJsZWQp
KTsKICAgICBwcm94eS0+bV9yZWdpc3RyYWJsZURvbWFpbiA9IFdURk1vdmUocmVnaXN0cmFibGVE
b21haW4pOwotICAgIHByb3h5LT5lbmFibGVTZXJ2aWNlV29ya2Vycyhwcm9jZXNzUG9vbC51c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKSk7CisgICAgcHJv
eHktPmVuYWJsZVdvcmtlcnMod29ya2VyVHlwZSwgcHJvY2Vzc1Bvb2wudXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CiAgICAgcHJveHktPmNvbm5lY3QoKTsKICAg
ICByZXR1cm4gcHJveHk7CiB9CkBAIC05OTUsMTAgKzk5NiwxMCBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6ZGlkQmVjb21lVW5yZXNwb25zaXZlKCkKICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDog
aXNSZXNwb25zaXZlQ2FsbGJhY2tzKQogICAgICAgICBjYWxsYmFjayhpc1dlYlByb2Nlc3NSZXNw
b25zaXZlKTsKIAotICAgIC8vIElmIHRoZSB3ZWIgcHJvY2VzcyBiZWNvbWVzIHVucmVzcG9uc2l2
ZSBhbmQgb25seSBydW5zIHNlcnZpY2Ugd29ya2Vycywga2lsbCBpdCBvdXJzZWx2ZXMgc2luY2Ug
dGhlcmUgYXJlIG5vIG5hdGl2ZSBjbGllbnRzIHRvIGRvIGl0LgotICAgIGlmIChpc1J1bm5pbmdT
ZXJ2aWNlV29ya2VycygpICYmIG1fcGFnZU1hcC5pc0VtcHR5KCkpIHsKLSAgICAgICAgV0VCUFJP
Q0VTU1BST1hZX1JFTEVBU0VfTE9HX0VSUk9SKFBlcmZvcm1hbmNlTG9nZ2luZywgImRpZEJlY29t
ZVVucmVzcG9uc2l2ZTogVGVybWluYXRpbmcgc2VydmljZSB3b3JrZXItb25seSB3ZWIgcHJvY2Vz
cyBiZWNhdXNlIGl0IGlzIHVucmVzcG9uc2l2ZSIpOwotICAgICAgICBkaXNhYmxlU2VydmljZVdv
cmtlcnMoKTsKKyAgICAvLyBJZiB0aGUgd2ViIHByb2Nlc3MgYmVjb21lcyB1bnJlc3BvbnNpdmUg
YW5kIG9ubHkgcnVucyBzZXJ2aWNlL3NoYXJlZCB3b3JrZXJzLCBraWxsIGl0IG91cnNlbHZlcyBz
aW5jZSB0aGVyZSBhcmUgbm8gbmF0aXZlIGNsaWVudHMgdG8gZG8gaXQuCisgICAgaWYgKGlzUnVu
bmluZ1dvcmtlcnMoKSAmJiBtX3BhZ2VNYXAuaXNFbXB0eSgpKSB7CisgICAgICAgIFdFQlBST0NF
U1NQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQZXJmb3JtYW5jZUxvZ2dpbmcsICJkaWRCZWNvbWVV
bnJlc3BvbnNpdmU6IFRlcm1pbmF0aW5nIHdvcmtlci1vbmx5IHdlYiBwcm9jZXNzIGJlY2F1c2Ug
aXQgaXMgdW5yZXNwb25zaXZlIik7CisgICAgICAgIGRpc2FibGVXb3JrZXJzKHsgV29ya2VyVHlw
ZTo6U2VydmljZVdvcmtlciwgV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyIH0pOwogICAgICAgICB0
ZXJtaW5hdGUoKTsKICAgICB9CiB9CkBAIC0xNjk0LDggKzE2OTUsOSBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUoY29uc3QgVVJMJiB1
cmwpCiAgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHsgdXJsIH07CiAgICAgaWYgKG1fcmVnaXN0cmFibGVEb21haW4gJiYgKm1fcmVnaXN0cmFi
bGVEb21haW4gIT0gcmVnaXN0cmFibGVEb21haW4pIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi0gICAgICAgIGRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgICAgICBkaXNhYmxlV29y
a2VycyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgorCiAgICAgICAgIC8vIE51
bGwgb3V0IHJlZ2lzdHJhYmxlIGRvbWFpbiBzaW5jZSB0aGlzIHByb2Nlc3MgaGFzIG5vdyBiZWVu
IHVzZWQgZm9yIHNldmVyYWwgZG9tYWlucy4KICAgICAgICAgbV9yZWdpc3RyYWJsZURvbWFpbiA9
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgfTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTg3
Miw1MiArMTg3NCw4NyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2VydmljZVdv
cmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgcwogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwogICAgIH0sIDApOwogfQorI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpzZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQor
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldFdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCkKIHsKLSAgICBBU1NFUlQobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pOwotICAg
IHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTZXRVc2VyQWdl
bnQgeyB1c2VyQWdlbnQgfSwgMCk7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIGlm
IChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlNldFVzZXJBZ2VudCB7IHVzZXJBZ2VudCB9LCAw
KTsKKyNlbmRpZgorICAgIGlmIChtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uKQorICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlNl
dFVzZXJBZ2VudCB7IHVzZXJBZ2VudCB9LCAwKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6
OnVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2Vz
U3RvcmUmIHN0b3JlKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByZWZlcmVu
Y2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiB7Ci0gICAgQVNTRVJU
KG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0s
IDApOworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBpZiAobV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb24pCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpVcGRhdGVQcmVmZXJlbmNlc1N0b3JlIHsgc3RvcmUgfSwgMCk7CisjZW5kaWYK
KyAgICBpZiAobV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbikKKyAgICAgICAgc2VuZChNZXNzYWdl
czo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpVcGRhdGVQcmVmZXJl
bmNlc1N0b3JlIHsgc3RvcmUgfSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRh
dGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpCisvLyBGSVhNRTogQ2xpZW50cyBkbyBu
b3QgcHJvcGVybHkgZ2V0IHBvcHVsYXRlZCBpbiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uLgor
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2Vy
VHlwZSB3b3JrZXJUeXBlKQogewotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9j
ZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uOiIpOwot
ICAgIEFTU0VSVChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbik7Ci0gICAgaWYgKCFtX3NlcnZp
Y2VXb3JrZXJJbmZvcm1hdGlvbikKKyAgICBhdXRvJiB3b3JrZXJJbmZvcm1hdGlvbiA9IHdvcmtl
clR5cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8gbV9zaGFyZWRXb3JrZXJJbmZvcm1h
dGlvbiA6IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOworICAgIEFTU0VSVCh3b3JrZXJJbmZv
cm1hdGlvbik7CisgICAgaWYgKCF3b3JrZXJJbmZvcm1hdGlvbikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYm9vbCBzaG91bGRUYWtlRm9yZWdyb3VuZEFjdGl2aXR5ID0gV1RGOjphbnlPZihtX3Nl
cnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2VzLCBbJl0oYXV0byYgcHJvY2Vz
cykgeworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwg
InVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb246IHdvcmtlclR5cGU9JXtwdWJsaWN9cyIsIHdv
cmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8gInNoYXJlZCIgOiAic2Vydmlj
ZSIpOworCisgICAgYm9vbCBzaG91bGRUYWtlRm9yZWdyb3VuZEFjdGl2aXR5ID0gV1RGOjphbnlP
Zih3b3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2VzLCBbJl0oYXV0byYgcHJvY2Vzcykg
ewogICAgICAgICByZXR1cm4gJnByb2Nlc3MgIT0gdGhpcyAmJiAhIXByb2Nlc3MubV9mb3JlZ3Jv
dW5kVG9rZW47CiAgICAgfSk7CiAgICAgaWYgKHNob3VsZFRha2VGb3JlZ3JvdW5kQWN0aXZpdHkp
IHsKLSAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkRm9yZWdyb3VuZEFjdGl2
aXR5KG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCi0gICAgICAgICAgICBt
X3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5mb3JlZ3Jv
dW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2VyIGZvciBmb3JlZ3JvdW5kIHZpZXcocykiX3MpOwor
ICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRGb3JlZ3JvdW5kQWN0aXZpdHko
d29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKKyAgICAgICAgICAgIHdvcmtlckluZm9ybWF0
aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmZvcmVncm91bmRBY3Rpdml0eSgiV29ya2VyIGZv
ciBmb3JlZ3JvdW5kIHZpZXcocykiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
Ym9vbCBzaG91bGRUYWtlQmFja2dyb3VuZEFjdGl2aXR5ID0gV1RGOjphbnlPZihtX3NlcnZpY2VX
b3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2VzLCBbJl0oYXV0byYgcHJvY2Vzcykgewor
ICAgIGJvb2wgc2hvdWxkVGFrZUJhY2tncm91bmRBY3Rpdml0eSA9IFdURjo6YW55T2Yod29ya2Vy
SW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3NlcywgWyZdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAg
ICAgcmV0dXJuICZwcm9jZXNzICE9IHRoaXMgJiYgISFwcm9jZXNzLm1fYmFja2dyb3VuZFRva2Vu
OwogICAgIH0pOwogICAgIGlmIChzaG91bGRUYWtlQmFja2dyb3VuZEFjdGl2aXR5KSB7Ci0gICAg
ICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEJhY2tncm91bmRBY3Rpdml0eShtX3Nl
cnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQotICAgICAgICAgICAgbV9zZXJ2aWNl
V29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2
aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3IgYmFja2dyb3VuZCB2aWV3KHMpIl9zKTsKKyAgICAgICAg
aWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5KHdvcmtlcklu
Zm9ybWF0aW9uLT5hY3Rpdml0eSkpCisgICAgICAgICAgICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0
aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIldvcmtlciBmb3IgYmFja2dy
b3VuZCB2aWV3KHMpIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChtX2hh
c1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZykgeworICAgIGlmICh3b3JrZXJUeXBl
ID09IFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIgJiYgbV9oYXNTZXJ2aWNlV29ya2VyQmFja2dy
b3VuZFByb2Nlc3NpbmcpIHsKICAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFBy
b2Nlc3NTdXNwZW5zaW9uLCAiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tncm91bmQgcHJvY2Vzc2lu
ZyIpOwotICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0
aXZpdHkobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKLSAgICAgICAgICAg
IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmJhY2tn
cm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tncm91bmQgcHJvY2Vzc2luZyJf
cyk7CisgICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEJhY2tncm91bmRBY3Rp
dml0eSh3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQorICAgICAgICAgICAgd29ya2VySW5m
b3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5KCJTZXJ2
aWNlIFdvcmtlciBmb3IgYmFja2dyb3VuZCBwcm9jZXNzaW5nIl9zKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG51
bGxwdHI7CisgICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbnVsbHB0cjsKK30KKwor
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHQoY29uc3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdp
c3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJl
c3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0OiBTdGFydGVkIik7CisgICAgbWFya1Byb2Nlc3NB
c1JlY2VudGx5VXNlZCgpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJv
Y2Vzczo6RXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzIHsgcHJvY2Vzc1Bvb2woKS5kZWZhdWx0UGFnZUdyb3VwKCkucGFnZUdyb3VwSUQoKSwgbV9z
aGFyZWRXb3JrZXJJbmZvcm1hdGlvbi0+d29ya2VyUGFnZVByb3h5SUQsIG1fc2hhcmVkV29ya2Vy
SW5mb3JtYXRpb24tPndvcmtlclBhZ2VJRCwgc3RvcmUsIHJlZ2lzdHJhYmxlRG9tYWluLCBtX3No
YXJlZFdvcmtlckluZm9ybWF0aW9uLT5pbml0aWFsaXphdGlvbkRhdGEgfSwgW3RoaXMsIHdlYWtU
aGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAg
ICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJlc3RhYmxp
c2hTaGFyZWRXb3JrZXJDb250ZXh0OiBGaW5pc2hlZCIpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOworICAgIH0sIDApOworfQorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQordm9p
ZCBXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0
cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xP
RyhMb2FkaW5nLCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQ6IFN0YXJ0ZWQiKTsKKyAg
ICBtYXJrUHJvY2Vzc0FzUmVjZW50bHlVc2VkKCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bvb2woKS5kZWZhdWx0UGFnZUdyb3VwKCkucGFn
ZUdyb3VwSUQoKSwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPndvcmtlclBhZ2VQcm94eUlE
LCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+d29ya2VyUGFnZUlELCBzdG9yZSwgcmVnaXN0
cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgbV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb24tPmluaXRpYWxpemF0aW9uRGF0YSB9LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFr
UHRyIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgV0VC
UFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJlc3RhYmxpc2hTZXJ2aWNlV29ya2Vy
Q29udGV4dDogRmluaXNoZWQiKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9
LCAwKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNs
aWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKQEAgLTE5MjcsNyArMTk2NCw3IEBA
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNz
KFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCiAKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9M
T0coU2VydmljZVdvcmtlciwgInJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3M6IGNs
aWVudFByb2Nlc3M9JXAsIGNsaWVudFBJRD0lZCIsICZwcm94eSwgcHJveHkucHJvY2Vzc0lkZW50
aWZpZXIoKSk7CiAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3Nl
cy5hZGQocHJveHkpOwotICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7
CisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlOjpTZXJ2aWNlV29y
a2VyKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
Q2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb3h5KQpAQCAtMTkzNyw3ICsxOTc0LDcg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJv
Y2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb3gKIAogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNF
X0xPRyhTZXJ2aWNlV29ya2VyLCAidW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNz
OiBjbGllbnRQcm9jZXNzPSVwLCBjbGllbnRQSUQ9JWQiLCAmcHJveHksIHByb3h5LnByb2Nlc3NJ
ZGVudGlmaWVyKCkpOwogICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9j
ZXNzZXMucmVtb3ZlKHByb3h5KTsKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2Vy
dGlvbigpOworICAgIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6U2Vy
dmljZVdvcmtlcik7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpoYXNTZXJ2aWNlV29ya2Vy
Rm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0CkBAIC0xOTU3LDcgKzE5OTQsNyBA
QCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nl
c3NpbmcoKQogCiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5z
aW9uLCAic3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmciKTsKICAgICBtX2hh
c1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyA9IHRydWU7Ci0gICAgdXBkYXRlU2Vy
dmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNz
ZXJ0aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6ZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKCkKQEAgLTE5NjcsMjMg
KzIwMDQsMzkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3Jv
dW5kUHJvY2Vzc2luZygpCiAKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vz
c1N1c3BlbnNpb24sICJlbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmciKTsKICAg
ICBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyA9IGZhbHNlOwotICAgIHVw
ZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBkYXRlV29ya2VyUHJv
Y2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KICNlbmRpZiAvLyBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaXNhYmxlU2Vy
dmljZVdvcmtlcnMoKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpc2FibGVXb3JrZXJzKE9wdGlv
blNldDxXb3JrZXJUeXBlPiB3b3JrZXJUeXBlKQogewotICAgIGlmICghbV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb24pCisgICAgQVNTRVJUKCF3b3JrZXJUeXBlLmlzRW1wdHkoKSk7CisKKyAgICBi
b29sIGRpZENoYW5nZSA9IGZhbHNlOworICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtl
clR5cGU6OlNlcnZpY2VXb3JrZXIpICYmIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKSB7Cisg
ICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uID0geyB9OworICAgICAgICBkaWRDaGFu
Z2UgPSB0cnVlOworICAgIH0KKyAgICBpZiAod29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBl
OjpTaGFyZWRXb3JrZXIpICYmIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24pIHsKKyAgICAgICAg
bV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA9IHsgfTsKKyAgICAgICAgZGlkQ2hhbmdlID0gdHJ1
ZTsKKyAgICB9CisgICAgaWYgKCFkaWRDaGFuZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdF
QlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiZGlzYWJsZVNlcnZpY2VX
b3JrZXJzOiIpOwotICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uID0geyB9OworICAgIFdF
QlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzLCAiZGlzYWJsZVdvcmtlcnM6IERpc2Fi
bGluZyB3b3JrZXJzIChTaGFyZWRXb3JrZXJzPSVkLCBTZXJ2aWNlV29ya2Vycz0lZCkiLCB3b3Jr
ZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciksIHdvcmtlclR5cGUuY29u
dGFpbnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikpOworCiAgICAgdXBkYXRlQmFja2dyb3Vu
ZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKIAorICAgIGlmICghaXNSdW5uaW5nV29ya2VycygpKQor
ICAgICAgICBwcm9jZXNzUG9vbCgpLnJlbW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMoKnRoaXMpOwor
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHByb2Nlc3NQb29sKCkucmVtb3ZlRnJv
bVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKnRoaXMpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9zZSB7IH0sIDApOworICAgIGlmICh3b3JrZXJU
eXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpKQorICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q2xvc2UgeyB9LCAwKTsKICNl
bmRpZgorICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNoYXJlZFdvcmtl
cikpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6Q2xvc2UgeyB9LCAwKTsKIAogICAgIG1heWJlU2h1dERvd24oKTsKIH0KQEAg
LTIwMDQsMTEgKzIwNTcsMTMgQEAgc3RhdGljIFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29tcGlsZWRD
b250ZW50UnVsZUxpc3REYXRhLCBVUkw+PiBjb250ZW50UnVsZUxpc3RzRnIKIH0KICNlbmRpZgog
Ci12b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlU2VydmljZVdvcmtlcnMoY29uc3QgVXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllciYgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
cikKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVXb3JrZXJzKFdvcmtlclR5cGUgd29ya2Vy
VHlwZSwgY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYgdXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllcikKIHsKLSAgICBBU1NFUlQoIW1fc2VydmljZVdvcmtlckluZm9y
bWF0aW9uKTsKLSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwg
ImVuYWJsZVNlcnZpY2VXb3JrZXJzOiIpOwotICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9u
ID0gU2VydmljZVdvcmtlckluZm9ybWF0aW9uIHsKKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFT
RV9MT0coU2VydmljZVdvcmtlciwgImVuYWJsZVdvcmtlcnM6IHdvcmtlclR5cGU9JXUiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4od29ya2VyVHlwZSkpOworICAgIGF1dG8mIHdvcmtlckluZm9ybWF0
aW9uID0gd29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyBtX3NoYXJlZFdv
cmtlckluZm9ybWF0aW9uIDogbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247CisgICAgQVNTRVJU
KCF3b3JrZXJJbmZvcm1hdGlvbik7CisKKyAgICB3b3JrZXJJbmZvcm1hdGlvbiA9IFdvcmtlcklu
Zm9ybWF0aW9uIHsKICAgICAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwK
ICAgICAgICAgUGFnZUlkZW50aWZpZXI6OmdlbmVyYXRlKCksCiAgICAgICAgIFNlcnZpY2VXb3Jr
ZXJJbml0aWFsaXphdGlvbkRhdGEgewpAQCAtMjAyMSw5ICsyMDc2LDggQEAgdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OmVuYWJsZVNlcnZpY2VXb3JrZXJzKGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXIKICAgICAgICAgeyB9CiAgICAgfTsKICAgICB1cGRhdGVCYWNrZ3JvdW5kUmVz
cG9uc2l2ZW5lc3NUaW1lcigpOwotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB1cGRh
dGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOwotI2VuZGlmCisKKyAgICB1cGRhdGVX
b3JrZXJQcm9jZXNzQXNzZXJ0aW9uKHdvcmtlclR5cGUpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6ZGlkQ3JlYXRlU2xlZXBEaXNhYmxlcihTbGVlcERpc2FibGVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgYm9vbCBkaXNwbGF5KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCBmNTE0Yjk5MTZhZDQuLjE5MmQ1ZDJi
NmY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTEz
Niw5ICsxMzYsMTMgQEAgcHVibGljOgogCiAgICAgZW51bSBjbGFzcyBTaG91bGRMYXVuY2hQcm9j
ZXNzIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBlbnVtIGNsYXNzIENhcHRpdmVQb3J0YWxNb2Rl
IDogYm9vbCB7IERpc2FibGVkLCBFbmFibGVkIH07CisgICAgZW51bSBjbGFzcyBXb3JrZXJUeXBl
IDogdWludDMyX3QgeworICAgICAgICBTZXJ2aWNlV29ya2VyID0gMSA8PCAwLAorICAgICAgICBT
aGFyZWRXb3JrZXIgPSAxIDw8IDEKKyAgICB9OwogCiAgICAgc3RhdGljIFJlZjxXZWJQcm9jZXNz
UHJveHk+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRhU3RvcmUqLCBDYXB0aXZl
UG9ydGFsTW9kZSwgSXNQcmV3YXJtZWQsIFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZSA9IFdlYkNv
cmU6OkNyb3NzT3JpZ2luTW9kZTo6U2hhcmVkLCBTaG91bGRMYXVuY2hQcm9jZXNzID0gU2hvdWxk
TGF1bmNoUHJvY2Vzczo6WWVzKTsKLSAgICBzdGF0aWMgUmVmPFdlYlByb2Nlc3NQcm94eT4gY3Jl
YXRlRm9yU2VydmljZVdvcmtlcnMoV2ViUHJvY2Vzc1Bvb2wmLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmLCBXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgc3RhdGljIFJlZjxXZWJQcm9jZXNz
UHJveHk+IGNyZWF0ZUZvcldvcmtlcnMoV29ya2VyVHlwZSwgV2ViUHJvY2Vzc1Bvb2wmLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBXZWJzaXRlRGF0YVN0b3JlJik7CiAKICAgICB+V2Vi
UHJvY2Vzc1Byb3h5KCk7CiAKQEAgLTE2MSw4ICsxNjUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRJc0luUHJvY2Vzc0NhY2hlKGJvb2wsIFdpbGxTaHV0RG93biA9IFdpbGxTaHV0RG93bjo6Tm8p
OwogICAgIGJvb2wgaXNJblByb2Nlc3NDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblByb2Nl
c3NDYWNoZTsgfQogCi0gICAgdm9pZCBlbmFibGVTZXJ2aWNlV29ya2Vycyhjb25zdCBVc2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyJik7Ci0gICAgdm9pZCBkaXNhYmxlU2VydmljZVdvcmtl
cnMoKTsKKyAgICB2b2lkIGVuYWJsZVdvcmtlcnMoV29ya2VyVHlwZSwgY29uc3QgVXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllciYpOworICAgIHZvaWQgZGlzYWJsZVdvcmtlcnMoT3B0aW9u
U2V0PFdvcmtlclR5cGU+KTsKIAogICAgIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3Rv
cmUoKSBjb25zdCB7IEFTU0VSVChtX3dlYnNpdGVEYXRhU3RvcmUpOyByZXR1cm4gKm1fd2Vic2l0
ZURhdGFTdG9yZTsgfQogICAgIHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0
b3JlJik7CkBAIC0xOTQsNiArMTk4LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1J1bm5pbmdT
ZXJ2aWNlV29ya2VycygpIGNvbnN0IHsgcmV0dXJuICEhbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b247IH0KICAgICBib29sIGlzU3RhbmRhbG9uZVNlcnZpY2VXb3JrZXJQcm9jZXNzKCkgY29uc3Qg
eyByZXR1cm4gaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSAmJiAhcGFnZUNvdW50KCk7IH0KKyAg
ICBib29sIGlzUnVubmluZ1NoYXJlZFdvcmtlcnMoKSBjb25zdCB7IHJldHVybiAhIW1fc2hhcmVk
V29ya2VySW5mb3JtYXRpb247IH0KKyAgICBib29sIGlzU3RhbmRhbG9uZVNoYXJlZFdvcmtlclBy
b2Nlc3MoKSBjb25zdCB7IHJldHVybiBpc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkgJiYgIXBhZ2VD
b3VudCgpOyB9CisgICAgYm9vbCBpc1J1bm5pbmdXb3JrZXJzKCkgY29uc3QgeyByZXR1cm4gbV9z
aGFyZWRXb3JrZXJJbmZvcm1hdGlvbiB8fCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsgfQog
CiAgICAgYm9vbCBpc0R1bW15UHJvY2Vzc1Byb3h5KCkgY29uc3Q7CiAKQEAgLTM1OSwxMiArMzY2
LDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlQXVkaWJsZU1lZGlhQXNzZXJ0aW9ucygp
OwogCisgICAgdm9pZCBzZXRXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7CisgICAgdm9p
ZCB1cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
KTsKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVy
ZW5jZXNTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRp
b24oV29ya2VyVHlwZSk7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZXN0
YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIGNv
bnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0U2VydmljZVdv
cmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHVwZGF0ZVNlcnZpY2VXb3Jr
ZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKLSAgICBib29s
IGhhc1NlcnZpY2VXb3JrZXJQYWdlUHJveHkoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJv
eHlJRCkgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gJiYgbV9zZXJ2aWNlV29y
a2VySW5mb3JtYXRpb24tPnNlcnZpY2VXb3JrZXJQYWdlUHJveHlJRCA9PSBwYWdlUHJveHlJRDsg
fQotICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKKyAgICBi
b29sIGhhc1NlcnZpY2VXb3JrZXJQYWdlUHJveHkoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdl
UHJveHlJRCkgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gJiYgbV9zZXJ2aWNl
V29ya2VySW5mb3JtYXRpb24tPndvcmtlclBhZ2VQcm94eUlEID09IHBhZ2VQcm94eUlEOyB9CiAg
ICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94
eSYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlBy
b2Nlc3NQcm94eSYpOwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlckZvcmVncm91bmRBY3Rpdml0
eUZvclRlc3RpbmcoKSBjb25zdDsKQEAgLTY0OCwxNCArNjU2LDE1IEBAIHByaXZhdGU6CiAjZW5k
aWYKICAgICBSZWZQdHI8TG9nZ2VyPiBtX2xvZ2dlcjsKIAotICAgIHN0cnVjdCBTZXJ2aWNlV29y
a2VySW5mb3JtYXRpb24gewotICAgICAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJQYWdlUHJveHlJRDsKLSAgICAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgc2Vydmlj
ZVdvcmtlclBhZ2VJRDsKKyAgICBzdHJ1Y3QgV29ya2VySW5mb3JtYXRpb24geworICAgICAgICBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHdvcmtlclBhZ2VQcm94eUlEOworICAgICAgICBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciB3b3JrZXJQYWdlSUQ7CiAgICAgICAgIFNlcnZpY2VXb3JrZXJJbml0
aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRhOwogICAgICAgICBQcm9jZXNzVGhyb3R0
bGVyOjpBY3Rpdml0eVZhcmlhbnQgYWN0aXZpdHk7CiAgICAgICAgIFdlYWtIYXNoU2V0PFdlYlBy
b2Nlc3NQcm94eT4gY2xpZW50UHJvY2Vzc2VzOwogICAgIH07Ci0gICAgc3RkOjpvcHRpb25hbDxT
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24+IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOworICAg
IHN0ZDo6b3B0aW9uYWw8V29ya2VySW5mb3JtYXRpb24+IG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8V29ya2VySW5mb3JtYXRpb24+IG1fc2hhcmVkV29ya2Vy
SW5mb3JtYXRpb247CiAgICAgYm9vbCBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vz
c2luZyB7IGZhbHNlIH07CiAKICAgICBIYXNoTWFwPFdlYkNvcmU6OlNsZWVwRGlzYWJsZXJJZGVu
dGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U2xlZXBEaXNhYmxlcj4+IG1fc2xlZXBE
aXNhYmxlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBiYjliZTJjMGZmMTUuLjdlMjZkODc1MjFkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04ODEsNiArODgxLDcgQEAK
IAkJNDYxNEYxMzIyNURFRDg3NTAwNzAwNkU3IC8qIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1l
dGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZB
QzUzMjQyNURFRDgxRTAwM0I1N0VDIC8qIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5o
ICovOyB9OwogCQk0NjFDQ0NBNTIzMTQ4NUE3MDBCNjU5QjkgLyogVUlSZW1vdGVPYmplY3RSZWdp
c3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYz
MjM2ODUyMzE0ODMzRjAwQTQ4RkE3IC8qIFVJUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAqLzsgfTsK
IAkJNDYxQ0NDQTYyMzE0ODVBQTAwQjY1OUI5IC8qIFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjMyMzY4MzIz
MTQ4MUVGMDBBNDhGQTcgLyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAqLzsgfTsKKwkJNDYx
RTFCRjIyNzlBMDExNjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDYxRTFCRUYyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5oICovOyB9OwogCQk0NjNGRDQ4MDFFQjk0NTk2MDBBMjk4MkMgLyogV0tQcm9j
ZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2M0ZENDdGMUVCOTQ1ODQwMEEyOTgyQyAvKiBXS1Byb2Nlc3NUZXJtaW5h
dGlvblJlYXNvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQ2M0ZENDgyMUVCOTRFQzAwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFz
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0ZE
NDgxMUVCOTRFQUQwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCAqLzsgfTsK
IAkJNDY1OUYyNUYyNzVGRjZCMjAwQkJCMzY5IC8qIENhcHRpdmVQb3J0YWxNb2RlT2JzZXJ2ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NTlGMjVF
Mjc1RkY2QjIwMEJCQjM2OSAvKiBDYXB0aXZlUG9ydGFsTW9kZU9ic2VydmVyLmggKi87IH07CkBA
IC04OTAsNiArODkxLDggQEAKIAkJNDY3MUZGMUYyMzIxN0VGRjAwMUI2NEM3IC8qIFdlYlJlc291
cmNlTG9hZE9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjcxRkYxRDIzMjE3RUZGMDAxQjY0QzcgLyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuaCAqLzsgfTsKIAkJNDY3RTQzRTgyMjQzRkY3RDAwQjEzOTI0IC8qIFdlYlByb2Nlc3NEYXRh
U3RvcmVQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjdFNDNFNzIyNDNGRjZEMDBCMTM5MjQgLyogV2ViUHJvY2Vzc0RhdGFTdG9yZVBh
cmFtZXRlcnMuaCAqLzsgfTsKIAkJNDY4MDlBN0MyM0Q5MjI1RTAwQzI5N0QwIC8qIFdlYkNvb2tp
ZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjgwOUE3QTIzRDkyMjUzMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuaCAqLzsgfTsKKwkJNDY5
NDNERDAyNzYzRjgzQTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0M0RDRjI3NjNGODM1
MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaCAqLzsgfTsKKwkJNDY5NDNERDEy
NzYzRjgzRjAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTQzRENEMjc2M0Y4
MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggKi87IH07CiAJ
CTQ2QTJCNjA5MUU1Njc2QTYwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVu
ZXNzVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2QTJCNjA3MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVu
ZXNzVGltZXIuaCAqLzsgfTsKIAkJNDZCMDUyNDcyMjY2OEQ4NTAwMjY1Qjk3IC8qIFdlYkRldmlj
ZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCMDUyNDQyMjY2OEQyMzAwMjY1Qjk3IC8q
IFdlYkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlci5oICovOyB9Owog
CQk0NkJFQjZENzIyRkI5QkQ3MDAyNjk4NjcgLyogU3RvcmFnZUFyZWEuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkVCNkQ1MjJGQjlCRDYwMDI2OTg2
NyAvKiBTdG9yYWdlQXJlYS5oICovOyB9OwpAQCAtODk3LDEwICs5MDAsMTMgQEAKIAkJNDZCRUI2
REYyMkZCQjE2QjAwMjY5ODY3IC8qIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkJFQjZERDIyRkJCMTZCMDAy
Njk4NjcgLyogU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuaCAqLzsgfTsKIAkJNDZCRUI2RTMyMkZC
QjIxQTAwMjY5ODY3IC8qIFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRUI2RTEyMkZCQjIxQTAw
MjY5ODY3IC8qIFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oICovOyB9OwogCQk0NkMz
OTIyOTIzMTZFQzREMDA4RUVEOUIgLyogV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDMzkyMjgyMzE2RUM0RDAw
OEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCAqLzsgfTsKKwkJNDZDOTE2QUEyNzk5
RDBBMjAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDOTE2QTkyNzk5RDA5RDAwMUE0RTdDIC8q
IFdlYlNoYXJlZFdvcmtlclNlcnZlci5oICovOyB9OwogCQk0NkNFM0IxMTIzRDhDODQ5MDAxNkE5
NkEgLyogV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkNFM0IxMDIzRDhDODNEMDAxNkE5NkEgLyogV2ViQmFj
a0ZvcndhcmRMaXN0Q291bnRzLmggKi87IH07CisJCTQ2RDQ4RkNFMjc5OUQ3RTEwMDdEMjAxNCAv
KiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkQ0OEZDRDI3OTlEN0RFMDA3RDIw
MTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oICovOyB9Owog
CQk0NkRGMDYzQzFGMzkwNUY4MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRGMDYz
QTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggKi87IH07
CiAJCTQ2RUUyODQ5MjY5RTA0QUMwMERENDhBQiAvKiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0
cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUUy
ODQ4MjY5RTA0OUIwMERENDhBQiAvKiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCAqLzsg
fTsKIAkJNDZFRTI4NEQyNjlFMDUyNTAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVs
UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2RUUyODRDMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lz
dHJ5LmggKi87IH07CisJCTQ2RUUzRThCMjc2M0ZEMkYwMDYwQzcwRiAvKiBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NjgzODY2NzI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbi5oICovOyB9OwogCQk0NkYzOEU4QzI0MTZFNjczMDA1OTM3NUEgLyogUnVu
bmluZ0JvYXJkU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2RjM4RThCMjQxNkU2NkQwMDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2
aWNlc1NQSS5oICovOyB9OwogCQk0NkY5QjI2MzIzNTI2RUYzMDA2RkU1RkEgLyogV2ViQmFja0Zv
cndhcmRDYWNoZUVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkY5QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVu
dHJ5LmggKi87IH07CiAJCTQ5MzEwMkJEMjY4M0YzRDAwMDJCQjg4NSAvKiBBcHBQcml2YWN5UmVw
b3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTMx
MDJCQzI2ODNGM0E1MDAyQkI4ODUgLyogQXBwUHJpdmFjeVJlcG9ydC5oICovOyB9OwpAQCAtMTI3
NCw2ICsxMjgwLDcgQEAKIAkJNkJFOTY5QzExRTU0RDQ1MjAwOEI3NDgzIC8qIGNvcmVQcmVkaWN0
aW9uX21vZGVsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2QkU5NjlDMDFFNTRENDUyMDA4Qjc0ODMgLyogY29yZVByZWRpY3Rpb25fbW9kZWwgKi87IH07
CiAJCTZCRTk2OUNCMUU1NEQ0Q0YwMDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xh
c3NpZmllckNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2QkU5NjlDOTFFNTRENENGMDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Ns
YXNzaWZpZXJDb2NvYS5oICovOyB9OwogCQk2QkU5NjlDRDFFNTRFMDU0MDA4Qjc0ODMgLyogUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCRTk2OUNDMUU1NEUwNTQwMDhCNzQ4MyAvKiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5oICovOyB9OworCQk2Q0FFQ0I2NjI3NDY1QUU0MDBB
Qjc4RDAgLyogVW5pZmllZFNvdXJjZTExNi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2Q0FFQ0I1RTI3NDY1QUUzMDBBQjc4RDAgLyogVW5pZmllZFNv
dXJjZTExNi5jcHAgKi87IH07CiAJCTZFRTg0OUM4MTM2OEQ5MzkwMDM4RDQ4MSAvKiBXS0luc3Bl
Y3RvclByaXZhdGVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDZFRTg0OUM2MTM2OEQ5MkQwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MTE3
MjVBOTIyOEQ1NjQzMDAwMTg1MTQgLyogV2Vic2l0ZUxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91
Y2hQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcxMTcyNUE4MjI4RDU2M0EwMDAxODUxNCAvKiBXZWJzaXRlTGVnYWN5T3ZlcmZsb3dTY3JvbGxp
bmdUb3VjaFBvbGljeS5oICovOyB9OwogCQk3MTM0QTNEQTI2MDNCOTI1MDA2MjRCRDMgLyogV0tN
b2RlbEludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMzRBM0Q5MjYwM0I4MEUwMDYyNEJEMyAvKiBXS01v
ZGVsSW50ZXJhY3Rpb25HZXN0dXJlUmVjb2duaXplci5oICovOyB9OwpAQCAtMTM1MSw2ICsxMzU4
LDcgQEAKIAkJN0M5RDE1MzcxODQ1ODREQTAwOUQzOTE4IC8qIFdLQnJvd3NpbmdDb250ZXh0R3Jv
dXBJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0M5RDE1MzYxODQ1ODREQTAwOUQzOTE4IC8qIFdLQnJvd3NpbmdDb250ZXh0R3JvdXBJbnRl
cm5hbC5oICovOyB9OwogCQk3Q0EyNTRFQjE4Mjk5M0NFMDBGQzhBNDEgLyogV0tCcm93c2luZ0Nv
bnRleHRQb2xpY3lEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0NBMjU0RUExODI5OTNDRTAwRkM4QTQxIC8qIFdLQnJvd3NpbmdDb250ZXh0
UG9saWN5RGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3Q0EzNzkzRTFBQzM3OEIzMDA3OURDMzcgLyogX1dLVXNlckNvbnRlbnRFeHRl
bnNpb25TdG9yZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDQTM3OTNEMUFDMzc4QjMwMDc5REMzNyAvKiBfV0tVc2VyQ29udGVudEV4dGVu
c2lvblN0b3JlUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTdDQUVDQjY2Mjc0NjVBRTQwMEFCNzhEMCAvKiBVbmlmaWVkU291cmNlMTE3
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQUVD
QjVFMjc0NjVBRTMwMEFCNzhEMCAvKiBVbmlmaWVkU291cmNlMTE3LmNwcCAqLzsgfTsKIAkJN0NC
MTAwRjExRkEzODU4QTAwMTcyOUVFIC8qIFdlYlByZWZlcmVuY2VzS2V5cy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0IxMDBFRTFGQTJENzRBMDAx
NzI5RUUgLyogV2ViUHJlZmVyZW5jZXNLZXlzLmNwcCAqLzsgfTsKIAkJN0NCMTAwRjIxRkEzODU4
RTAwMTcyOUVFIC8qIFdlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDREU3M0EzMUY5REFCNjUwMDM5MDMxMiAv
KiBXZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmggKi87IH07CiAJCTdDQjEwMEYzMUZBMzg1OEUw
MDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNlc0tleXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQjEwMEVGMUZBMkQ3NEIwMDE3MjlFRSAvKiBXZWJQcmVm
ZXJlbmNlc0tleXMuaCAqLzsgfTsKQEAgLTQyMTgsNiArNDIyNiw5IEBACiAJCTQ2MDg4OUZGMjYx
RkE4QTkwMEUyNTAwRCAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRl
cnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYwRjQ4OEQxRjk5NkY2QzAwQ0Y0
Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktp
dC9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTQ2MEY0ODhFMUY5OTZGNkMwMENGNEI4
NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2Fn
ZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJ
CTQ2MUUxQkVDMjc5QTAxMEUwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDYxRTFCRUYyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYxRTFCRjAyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MjEwN0Q3MUYzOERCRDMwMERE
NzgxMCAvKiBQaW5nTG9hZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQaW5nTG9hZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MzIzNjgzMjMx
NDgxRUYwMEE0OEZBNyAvKiBXZWJSZW1vdGVPYmplY3RSZWdpc3RyeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJSZW1vdGVPYmplY3RSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjMyMzY4NDIzMTQ4MjVDMDBBNDhGQTcgLyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI0NSw4ICs0MjU2LDE1IEBACiAJCTQ2ODA5QTdCMjNE
OTIyNTMwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJDb29raWVDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2ODM1NjlBMjFFODFDQzcwMDZFMjdBMyAvKiBQcm92aXNpb25hbFBhZ2VQcm94
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm92aXNpb25hbFBhZ2VQcm94
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgzNTY5QjIxRTgxQ0M3MDA2RTI3
QTMgLyogUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0NjgzODY2NzI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2ODM4NjY4Mjc2M0ZBQjEw
MENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0Njg5QjkwRjI3NTZEMTQzMDAwN0M2NTEgLyogUmVtb3RlV2Vi
TG9ja1JlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njg5QjkxMDI3NTZEMTQzMDAwN0M2NTEgLyog
UmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVdlYkxv
Y2tSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzRENCMjc2
M0Y4MzQwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzRENDMjc2M0Y4MzUwMDRCNjEwRSAvKiBX
ZWJTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRX
b3JrZXJQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzRENE
Mjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQ0UyNzYzRjgzNTAwNEI2MTBFIC8qIFdlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQ2OTQzRENGMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NjlERTgwMjI3M0VDQzVEMDA5MzAyNzYgLyogUHJvY2Vzc0xhdW5jaGVy
Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcm9jZXNz
TGF1bmNoZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZBMkI2MDYx
RTU2NzVBMjAwQzNERURBIC8qIEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYWNrZ3JvdW5kUHJvY2Vz
c1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NkEyQjYwNzFFNTY3NUEyMDBDM0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVz
c1RpbWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhY2tncm91bmRQcm9j
ZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NDI2Miw3ICs0MjgwLDExIEBACiAJCTQ2QkVCNkUxMjJGQkIyMUEwMDI2OTg2NyAvKiBUcmFuc2ll
bnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJhbnNpZW50TG9jYWxT
dG9yYWdlTmFtZXNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QkVCNkUy
MjJGQkIyMUEwMDI2OTg2NyAvKiBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDMzkyMjgyMzE2RUM0RDAwOEVFRDlCIC8qIFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGFnZVByb3h5SWRlbnRp
Zmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkM5MTZBODI3OTlEMDlEMDAx
QTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YlNoYXJlZFdvcmtlclNlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2
QzkxNkE5Mjc5OUQwOUQwMDFBNEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2Q0UzQjEwMjNEOEM4M0QwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3Vu
dHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0ZvcndhcmRMaXN0
Q291bnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2RDQ4RkNDMjc5OUQ3REQw
MDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkQ0OEZDRDI3OTlEN0RFMDA3
RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2REYwNjM5MUYzOTA1RTUwMDE5ODBCQiAvKiBO
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDZFOTc2MEEyNzU3RjZDOTAwQUNERDM3IC8qIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5t
ZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJCcm9hZGNhc3RDaGFubmVsUmVn
aXN0cnkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MjcyLDYg
KzQyOTQsNyBAQAogCQk0NkVFMjg0QTI2OUUwNTE3MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2Fz
dENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOZXR3
b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NkVFMjg0QjI2OUUwNTE3MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2Fz
dENoYW5uZWxSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDZFRTI4NEMyNjlFMDUxNzAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNhc3RD
aGFubmVsUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29y
a0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0NkVFM0U4QTI3NjNGRDJBMDA2MEM3MEYgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1l
c3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkYzOEU4QjI0MTZFNjZE
MDA1OTM3NUEgLyogUnVubmluZ0JvYXJkU2VydmljZXNTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUnVubmluZ0JvYXJkU2VydmljZXNTUEkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDZGOUIyNjIyMzUyNkVEMDAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJk
Q2FjaGVFbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrRm9y
d2FyZENhY2hlRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDkzMTAyQkMy
NjgzRjNBNTAwMkJCODg1IC8qIEFwcFByaXZhY3lSZXBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBw
UHJpdmFjeVJlcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDk5MCw2ICs1
MDEzLDcgQEAKIAkJNkJFOTY5QzgxRTU0RDRDRjAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NDbGFzc2lmaWVyQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCRTk2OUM5MUU1NEQ0Q0YwMDhCNzQ4MyAvKiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkJFOTY5Q0MxRTU0RTA1NDAwOEI3NDgzIC8qIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTZDQUVDQjVFMjc0NjVBRTMwMEFCNzhEMCAvKiBVbmlmaWVkU291cmNl
MTE2LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UxMTYuY3BwOyBwYXRoID0g
IkRlcml2ZWRTb3VyY2VzL1dlYktpdC91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTExNi5j
cHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk2RDhBOTFBNTExRjBF
RkQxMDBERDAxRkUgLyogY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBuYW1lID0gY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW47IHBhdGggPSBXZWJQcm9jZXNzL2Nv
bS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
RUU4NDlDNjEzNjhEOTJEMDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2YXRlTWFjLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oOyBwYXRo
ID0gbWFjL1dLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MTE3MjVBODIyOEQ1NjNBMDAwMTg1MTQgLyogV2Vic2l0ZUxlZ2FjeU92ZXJmbG93U2Ny
b2xsaW5nVG91Y2hQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
c2l0ZUxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTUxNTQsNiArNTE3OCw3IEBACiAJCTdDOUQxNTM2MTg0NTg0REEwMDlE
MzkxOCAvKiBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tCcm93c2luZ0NvbnRleHRHcm91cEludGVybmFsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQTI1NEVBMTgyOTkzQ0UwMEZDOEE0MSAvKiBXS0Jy
b3dzaW5nQ29udGV4dFBvbGljeURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLQnJvd3NpbmdDb250ZXh0UG9saWN5RGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0NBMzc5M0QxQUMzNzhCMzAwNzlEQzM3IC8qIF9XS1VzZXJDb250ZW50
RXh0ZW5zaW9uU3RvcmVQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IF9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdDQUVDQjVFMjc0NjVBRTMwMEFCNzhEMCAvKiBVbmlmaWVkU291cmNlMTE3
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UxMTcuY3BwOyBwYXRoID0gIkRl
cml2ZWRTb3VyY2VzL1dlYktpdC91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTExNy5jcHAi
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk3Q0IxMDBFRTFGQTJENzRB
MDAxNzI5RUUgLyogV2ViUHJlZmVyZW5jZXNLZXlzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdl
YlByZWZlcmVuY2VzS2V5cy5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViUHJl
ZmVyZW5jZXNLZXlzLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJ
N0NCMTAwRUYxRkEyRDc0QjAwMTcyOUVFIC8qIFdlYlByZWZlcmVuY2VzS2V5cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBXZWJQcmVmZXJlbmNlc0tleXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktp
dC9XZWJQcmVmZXJlbmNlc0tleXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKIAkJN0NCMTAwRjAxRkEyRDc4NDAwMTcyOUVFIC8qIFdlYlByZWZlcmVuY2VzU3RvcmVEZWZh
dWx0c01hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJQcmVmZXJlbmNlc1N0b3JlRGVmYXVs
dHNNYXAuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlByZWZlcmVuY2VzU3Rv
cmVEZWZhdWx0c01hcC5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBA
IC05Mjc3LDYgKzkzMDIsMjAgQEAKIAkJCXBhdGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CiAJCX07CisJCTQ2ODM4NjY1Mjc2M0ZBMUIwMENGOTE4MiAvKiBTaGFyZWRXb3Jr
ZXIgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTQ2RDQ4
RkNDMjc5OUQ3REQwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcCAqLywKKwkJCQk0NkQ0OEZDRDI3OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oICovLAorCQkJCTQ2QzkxNkE4Mjc5OUQw
OUQwMDFBNEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwICovLAorCQkJCTQ2QzkxNkE5
Mjc5OUQwOUQwMDFBNEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCAqLywKKwkJCQk0NkVF
M0U4QTI3NjNGRDJBMDA2MEM3MEYgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbiAqLywKKwkJCQk0NjgzODY2NzI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbi5oICovLAorCQkJCTQ2ODM4NjY4Mjc2M0ZBQjEwMENGOTE4
MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLywKKwkJCSk7CisJCQlw
YXRoID0gU2hhcmVkV29ya2VyOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJ
NDY5REU4MDEyNzNFQ0M1RDAwOTMwMjc2IC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTkzMjgsNiArOTM2Nyw3IEBACiAJCTUxMENDN0RBMTYx
MzhFMDEwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2VzcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDY4Mzg2NjUyNzYzRkExQjAwQ0Y5MTgyIC8qIFNoYXJl
ZFdvcmtlciAqLywKIAkJCQlFNDg5RDI4MjFBMEEyQkU4MDA3OEMwNkEgLyogY2FjaGUgKi8sCiAJ
CQkJN0E4NDNBMUQyMUU0MUZEOTAwREVGNjYzIC8qIENsYXNzaWZpZXIgKi8sCiAJCQkJN0VDNEYw
RjgxOEU0QTkyMjAwODA1NkFGIC8qIGNvY29hICovLApAQCAtOTQzNiw2ICs5NDc2LDE0IEBACiAJ
CTUxMThFOTk4MUYyOTUyNTkwMDNFRjlGNSAvKiBTdG9yYWdlICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0NjFFMUJFQzI3OUEwMTBFMDA2QUY1M0IgLyog
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk0NjFF
MUJFRjI3OUEwMTBGMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmggKi8sCisJCQkJNDYxRTFCRjAyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKKwkJCQk0Njk0M0RD
RTI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAg
Ki8sCisJCQkJNDY5NDNEQ0QyNzYzRjgzNTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24uaCAqLywKKwkJCQk0Njk0M0RDQjI3NjNGODM0MDA0QjYxMEUgLyogV2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKKwkJCQk0Njk0M0RDQzI3
NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwICovLAorCQkJCTQ2
OTQzRENGMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oICovLAog
CQkJCTQxMzFGM0UwMUY5ODcxMkMwMDU5OTk1QSAvKiBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50LmNwcCAqLywKIAkJCQk0MTlBQ0Y5QjFGOTgxRDI2MDA5RjFBODMgLyogV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudC5oICovLAogCQkJCTUxQkVCNjI5MUYzQTVBQ0QwMDUwMjlC
OSAvKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwICovLApAQCAtMTI3NjEsNiArMTI4MDks
NyBAQAogCQkJCTQ5RkJGMDAwMjM5QjFGNzUwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVGhpcmRQYXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlGQkYwMDkyMzlGMDhFMDAw
QkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5SW50ZXJuYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTM3NjMxMUZEMUEzRkI1RjcwMDVBMkU1MSAvKiBfV0tTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uVHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDYxRTFCRjIyNzlBMDEx
NjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzc2MzExRkUxQTNGQjYwMDAwNUEyRTUxIC8qIF9XS1NhbWVEb2N1
bWVudE5hdmlnYXRpb25UeXBlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDAyRDQ0
MTk2QjMzODkwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBMDAyRDQzMTk2QjMzNzAwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGVJbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xMjkyNSw2ICsxMjk3NCw3IEBACiAJCQkJRTE3MDg3NkMxNkQ2Q0E2
OTAwRjk5MjI2IC8qIEJsb2JSZWdpc3RyeVByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0RjYw
MTQzMjE1NUM1QUEyMDAxRkJERTAgLyogQmxvY2tpbmdSZXNwb25zZU1hcC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUE1NzA1MTExQkU0MTBFNjAwODc0QUYxIC8qIEJsb2NrU1BJLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk0NkM5MTZBQTI3OTlEMEEyMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2Vy
dmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzMwNjVGQTEyNTkzNDRFMDBFNzEyNzggLyogQ2Fj
aGVNb2RlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE4OTdFRDgxRjQxNUQ4QTAwMTZGQTQyIC8q
IENhY2hlU3RvcmFnZUVuZ2luZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGQUJEMkExRjRERTAw
MTAwNkE2Qzk3IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmggaW4gSGVhZGVycyAqLywKQEAg
LTEzMzkwLDYgKzEzNDQwLDcgQEAKIAkJCQkxQUMxMzM2ODE4NTY1QjU3MDBGM0VDMDUgLyogVXNl
ckRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENDkxQjA4MUU3MEQwNUYwMDAwOTA2NiAvKiBV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q0OTFCMEUxRTcz
MkU0RDAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQ2RUUzRThCMjc2M0ZEMkYwMDYwQzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDQ5MUIxMzFFNzM0ODIxMDAw
MDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0Q0OTFCMTgxRTczNTI1NTAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcyOTdGOUYxQzE3QkJFQTAwM0YwNzM1
IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmggaW4gSGVhZGVycyAqLywKQEAgLTEz
NDc2LDYgKzEzNTI3LDcgQEAKIAkJCQkzMzA5MzQ0QTEzMTVCOTIyMDA5N0E3QkMgLyogV2ViQ29v
a2llTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMUREN0IyMTE0
REMzOTYwMDVBREFGMyAvKiBXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxMkY1ODlCMTJBODgzODgwMDYyOTUzMCAvKiBXZWJDcmVkZW50aWFsLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk0Njk0M0REMDI3NjNGODNBMDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyUHJv
dmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQTgzRjZEMUE1QjYzRkYwMDAyNkVDNiAvKiBX
ZWJEYXRhYmFzZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNTJDRjU1MjIwQTM1QzNB
MDBEQURBMjcgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFNTY4QjkxRjIwQTNBQjJGMDBFM0M4NTYgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ry
b3Bkb3duLmggaW4gSGVhZGVycyAqLywKQEAgLTEzNTEwLDYgKzEzNTYyLDcgQEAKIAkJCQlCQzAz
MkQ3RjEwRjQzNzhEMDA1OEMxNUEgLyogV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTkzOTFGMkNCMTIxQjY3QUQwMEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0I5RjZBMDExMjNBODRCMDBBMTM3RTAgLyog
V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQk0Njk0M0RE
MTI3NjNGODNGMDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkM5QjM4QTExMEY1MzhCRTAwNDQzQTE1IC8qIFdlYkZyYW1lUHJv
eHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMUFCMUQ1NTVBQTAwMEREN0M2OCAvKiBXZWJH
YW1lcGFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVCRTE3OTFENTNGRThGMDBERDdDNjggLyog
V2ViR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTEzNjM2LDYgKzEzNjg5LDcg
QEAKIAkJCQkxQTQ4MzJENzFBOUNERjk2MDA4QjRERkUgLyogV2Vic2l0ZURhdGEuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBNDgzMkQxMUE5QkRDMkYwMDhCNERGRSAvKiBXZWJzaXRlRGF0YVJlY29y
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1M0MyQUExQTMyNTczMDAwNEU4QzcwIC8qIFdlYnNp
dGVEYXRhU3RvcmUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2RDQ4RkNFMjc5OUQ3RTEwMDdEMjAx
NCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTFGN0Q0MTFFQjFCQ0Y1MDBFNDdCODMgLyogV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTcxMTcyNUE5MjI4RDU2NDMwMDAxODUxNCAv
KiBXZWJzaXRlTGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaFBvbGljeS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRjRDQjA5RTUyMjVENUEwOTAwODkxNDg3IC8qIFdlYnNpdGVNZWRpYVNvdXJjZVBv
bGljeS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA4ZDNi
NTdiZDE4ZGMuLmJiMzU0N2Y0NmFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC01
Nyw2ICs1NywxMCBAQAogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgi
CiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIKICNp
bmNsdWRlICJXZWJTb2NrZXRDaGFubmVsTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRT
dHJlYW0uaCIKQEAgLTE3Myw2ICsxNzcsMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVAKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNl
aXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIHNoYXJlZFdvcmtlckNvbm5lY3Rpb24o
KS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2Fn
ZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpKSB7CisgICAgICAgIEFTU0VSVChTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6
c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKTsKKyAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbiA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5j
b25uZWN0aW9uKCkpCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxXZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24mPigqY29udGV4dE1hbmFnZXJDb25uZWN0aW9uKS5kaWRSZWNl
aXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
IAogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQogICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCkpIHsKQEAgLTMwNyw2ICszMjEsMTMgQEAgV2ViU1dDbGllbnRDb25u
ZWN0aW9uJiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OnNlcnZpY2VXb3JrZXJDb25uZWN0aW9u
KCkKIH0KICNlbmRpZgogCitXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uJiBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb246OnNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKQoreworICAgIGlmICgh
bV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uKQorICAgICAgICBtX3NoYXJlZFdvcmtlckNvbm5lY3Rp
b24gPSBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpjcmVhdGUoKTsKKyAgICByZXR1
cm4gKm1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbjsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb246Om1lc3NhZ2VzQXZhaWxhYmxlRm9yUG9ydChjb25zdCBXZWJDb3JlOjpNZXNzYWdl
UG9ydElkZW50aWZpZXImIG1lc3NhZ2VQb3J0SWRlbnRpZmllcikKIHsKICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5tZXNzYWdlc0F2YWlsYWJsZUZvclBvcnQobWVzc2FnZVBvcnRJZGVudGlm
aWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggZDYyZGZlNGRmNWFhLi41ZjA1MDQwOWFj
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC00OCw2ICs0OCw3IEBAIGVudW0gY2xhc3Mg
SFRUUENvb2tpZUFjY2VwdFBvbGljeSA6IHVpbnQ4X3Q7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOworY2xhc3MgV2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbjsKIGNsYXNzIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjsKIAogY2xhc3MgTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uPiwgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQgewpAQCAtNzAsNiArNzEsNyBAQCBw
dWJsaWM6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIFdlYlNXQ2xpZW50Q29ubmVj
dGlvbiYgc2VydmljZVdvcmtlckNvbm5lY3Rpb24oKTsKICNlbmRpZgorICAgIFdlYlNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24mIHNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKIAogI2lmIEhB
VkUoQVVESVRfVE9LRU4pCiAgICAgdm9pZCBzZXROZXR3b3JrUHJvY2Vzc0F1ZGl0VG9rZW4oc3Rk
OjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuKSB7IG1fbmV0d29ya1Byb2Nlc3NB
dWRpdFRva2VuID0gYXVkaXRUb2tlbjsgfQpAQCAtMTIzLDYgKzEyNSw3IEBAIHByaXZhdGU6CiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIFJlZlB0cjxXZWJTV0NsaWVudENvbm5lY3Rp
b24+IG1fc3dDb25uZWN0aW9uOwogI2VuZGlmCisgICAgUmVmUHRyPFdlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24+IG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbjsKICAgICBXZWJDb3JlOjpI
VFRQQ29va2llQWNjZXB0UG9saWN5IG1fY29va2llQWNjZXB0UG9saWN5OwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iZmUwYmI2ODY1NzYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQcm9j
ZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9FbXB0eUNsaWVudHMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJUaHJl
YWRQcm94eS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyRmV0Y2hSZXN1bHQuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5l
Y3Rpb24+JiYgY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MsIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3Vw
SUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgcHJlZmVyZW5jZXNT
dG9yZSwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmIGluaXRpYWxpemF0aW9uRGF0
YSkKKyAgICA6IG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV1RGTW92ZShjb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcykpCisgICAgLCBtX3JlZ2lzdHJhYmxlRG9tYWluKFdURk1vdmUocmVn
aXN0cmFibGVEb21haW4pKQorICAgICwgbV9wYWdlR3JvdXBJRChwYWdlR3JvdXBJRCkKKyAgICAs
IG1fd2ViUGFnZVByb3h5SUQod2ViUGFnZVByb3h5SUQpCisgICAgLCBtX3BhZ2VJRChwYWdlSUQp
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgLCBtX3VzZXJBZ2VudChzdGFuZGFyZFVzZXJBZ2Vu
dFdpdGhBcHBsaWNhdGlvbk5hbWUoeyB9KSkKKyNlbHNlCisgICAgLCBtX3VzZXJBZ2VudChzdGFu
ZGFyZFVzZXJBZ2VudCgpKQorI2VuZGlmCisgICAgLCBtX3VzZXJDb250ZW50Q29udHJvbGxlcihX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmdldE9yQ3JlYXRlKGluaXRpYWxpemF0aW9uRGF0YS51
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKSkKK3sKKyNpZiBFTkFCTEUoQ09OVEVOVF9F
WFRFTlNJT05TKQorICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRDb250ZW50UnVsZUxp
c3RzKFdURk1vdmUoaW5pdGlhbGl6YXRpb25EYXRhLmNvbnRlbnRSdWxlTGlzdHMpKTsKKyNlbmRp
ZgorCisgICAgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShwcmVmZXJlbmNlc1N0b3JlKTsKKyAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5kaXNhYmxlVGVybWluYXRpb24oKTsKK30KKworV2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp+V2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uKCkgPSBkZWZhdWx0OworCit2b2lkIFdlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZXN0YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9jb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2Vzcy0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6RXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24g
eyBtX3dlYlBhZ2VQcm94eUlELCBtX3JlZ2lzdHJhYmxlRG9tYWluIH0sIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCAwKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRX
b3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwpCit7CisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6UG9zdEV4
Y2VwdGlvblRvV29ya2VyT2JqZWN0IHsgc2hhcmVkV29ya2VySWRlbnRpZmllciwgZXJyb3JNZXNz
YWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCB9LCAwKTsKK30KKwordm9p
ZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnVwZGF0ZVByZWZlcmVu
Y2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCit7CisgICAgV2ViUGFn
ZTo6dXBkYXRlUHJlZmVyZW5jZXNHZW5lcmF0ZWQoc3RvcmUpOworICAgIG1fcHJlZmVyZW5jZXNT
dG9yZSA9IHN0b3JlOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6bGF1bmNoU2hhcmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdp
biwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVy
LCBVUkwmJiB1cmwsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zLCBXZWJD
b3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmIHdvcmtlckZldGNoUmVzdWx0KQoreworICAgIFJFTEVB
U0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6bGF1bmNoU2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2
NCwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBhdXRvIHBhZ2VDb25m
aWd1cmF0aW9uID0gcGFnZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnNlc3Npb25JRCgpKTsKKworICAgIHBhZ2VDb25maWd1cmF0aW9uLmRhdGFi
YXNlUHJvdmlkZXIgPSBXZWJEYXRhYmFzZVByb3ZpZGVyOjpnZXRPckNyZWF0ZShtX3BhZ2VHcm91
cElEKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5zb2NrZXRQcm92aWRlciA9IFdlYlNvY2tldFBy
b3ZpZGVyOjpjcmVhdGUobV93ZWJQYWdlUHJveHlJRCk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24u
YnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYnJvYWRj
YXN0Q2hhbm5lbFJlZ2lzdHJ5KCk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24ud2ViTG9ja1JlZ2lz
dHJ5ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9ja1JlZ2lzdHJ5KCk7CisgICAgcGFn
ZUNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRQcm92aWRlciA9IG1fdXNlckNvbnRlbnRDb250cm9s
bGVyOworI2lmIEVOQUJMRShXRUJfUlRDKQorICAgIHBhZ2VDb25maWd1cmF0aW9uLmxpYldlYlJU
Q1Byb3ZpZGVyID0gbWFrZVVuaXF1ZVJlZjxTZXJ2aWNlV29ya2VyTGliV2ViUlRDUHJvdmlkZXI+
KCk7CisjZW5kaWYKKworICAgIC8vIEZJWE1FOiBTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGll
bnQgc2hvdWxkIGJlIHJlbmFtZWQgaWYgdXNlZCBieSBTaGFyZWRXb3JrZXJzLgorICAgIHBhZ2VD
b25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSA9IG1ha2VVbmlxdWVSZWY8U2Vy
dmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50PihtX3dlYlBhZ2VQcm94eUlELCBtX3BhZ2VJRCwg
RnJhbWVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBtX3VzZXJBZ2VudCk7CisKKyAgICBhdXRvIHBh
Z2UgPSBtYWtlVW5pcXVlUmVmPFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKKyAg
ICBpZiAobV9wcmVmZXJlbmNlc1N0b3JlKSB7CisgICAgICAgIFdlYlBhZ2U6OnVwZGF0ZVNldHRp
bmdzR2VuZXJhdGVkKCptX3ByZWZlcmVuY2VzU3RvcmUsIHBhZ2UtPnNldHRpbmdzKCkpOworICAg
ICAgICBwYWdlLT5zZXR0aW5ncygpLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShzdGF0aWNfY2Fz
dDxTdG9yYWdlQmxvY2tpbmdQb2xpY3k+KG1fcHJlZmVyZW5jZXNTdG9yZS0+Z2V0VUludDMyVmFs
dWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnN0b3JhZ2VCbG9ja2luZ1BvbGljeUtleSgpKSkp
OworICAgIH0KKyAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6c2V0dXBQYWdl
Rm9yU2hhcmVkV29ya2VyKHBhZ2UuZ2V0KCksIHVybCwgb3JpZ2luLCB3b3JrZXJGZXRjaFJlc3Vs
dCk7CisgICAgYXV0byBzaGFyZWRXb3JrZXJUaHJlYWRQcm94eSA9IFdlYkNvcmU6OlNoYXJlZFdv
cmtlclRocmVhZFByb3h5OjpjcmVhdGUoV1RGTW92ZShwYWdlKSwgc2hhcmVkV29ya2VySWRlbnRp
Zmllciwgb3JpZ2luLCB1cmwsIFdURk1vdmUod29ya2VyRmV0Y2hSZXN1bHQpLCBXVEZNb3ZlKHdv
cmtlck9wdGlvbnMpLCBtX3VzZXJBZ2VudCwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FjaGVT
dG9yYWdlUHJvdmlkZXIoKSk7CisKKyAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlcjo6c2luZ2xldG9uKCkucmVnaXN0ZXJTaGFyZWRXb3JrZXJUaHJlYWQoV1RGTW92ZShzaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eSkpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6Y2xvc2UoKQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtl
ciwgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Y2xvc2U6IFNoYXJl
ZCB3b3JrZXIgcHJvY2VzcyBpcyByZXF1ZXN0ZWQgdG8gc3RvcCBhbGwgc2hhcmVkIHdvcmtlcnMi
KTsKKyAgICBzZXRBc0Nsb3NlZCgpOworCisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNsb3NlU2hh
cmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24geyB9LCAwKTsKKyAgICBXZWJDb3JlOjpTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc3RvcEFsbFNoYXJlZFdvcmtlcnMoKTsK
KyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbmFibGVUZXJtaW5hdGlvbigpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5l
ZDkxZjk3YzFiMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAtMCww
ICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCisjaW5jbHVkZSAiSWRlbnRpZmllclR5cGVzLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgorI2luY2x1ZGUg
IldlYlByZWZlcmVuY2VzU3RvcmUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVy
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VySWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3Vs
dDsKK3N0cnVjdCBXb3JrZXJPcHRpb25zOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOworc3RydWN0IFNlcnZpY2VXb3JrZXJJbml0aWFs
aXphdGlvbkRhdGE7CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6
Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBX
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlv
bj4mJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUGFnZUdyb3VwSWRlbnRpZmllciwg
V2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmLCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYpOwor
ICAgIH5XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oKTsKKworICAgIHZv
aWQgZXN0YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFs
OworICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdv
cmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpIGZpbmFsOworCisg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICAvLyBJUEMgTWVzc2FnZXMuCisgICAgdm9pZCBsYXVu
Y2hTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFdlYkNvcmU6OlNoYXJlZFdv
cmtlcklkZW50aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYsIFdlYkNvcmU6
OldvcmtlckZldGNoUmVzdWx0JiYpOworICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShj
b25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CisgICAgdm9pZCBzZXRVc2VyQWdlbnQoU3RyaW5n
JiYgdXNlckFnZW50KSB7IG1fdXNlckFnZW50ID0gV1RGTW92ZSh1c2VyQWdlbnQpOyB9CisgICAg
dm9pZCBjbG9zZSgpOworCisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzczsKKyAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBtX3JlZ2lzdHJh
YmxlRG9tYWluOworICAgIFBhZ2VHcm91cElkZW50aWZpZXIgbV9wYWdlR3JvdXBJRDsKKyAgICBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIG1fd2ViUGFnZVByb3h5SUQ7CisgICAgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgbV9wYWdlSUQ7CisgICAgU3RyaW5nIG1fdXNlckFnZW50OworICAgIFJlZjxX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXI+IG1fdXNlckNvbnRlbnRDb250cm9sbGVyOworICAgIHN0
ZDo6b3B0aW9uYWw8V2ViUHJlZmVyZW5jZXNTdG9yZT4gbV9wcmVmZXJlbmNlc1N0b3JlOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kODJhNGFkYTUzZmQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMCBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgor
IyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBXZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CisgICAgTGF1bmNoU2hhcmVk
V29ya2VyKHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCBXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFVSTCB1cmwsIHN0cnVj
dCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdvcmtlck9wdGlvbnMsIHN0cnVjdCBXZWJDb3JlOjpX
b3JrZXJGZXRjaFJlc3VsdCB3b3JrZXJGZXRjaFJlc3VsdCkKKyAgICBQb3N0Q29ubmVjdEV2ZW50
KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwg
V2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBwb3J0LCBTdHJpbmcgc291cmNlT3JpZ2lu
KQorICAgIFRlcm1pbmF0ZVNoYXJlZFdvcmtlcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlm
aWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIpCisgICAgVXBkYXRlUHJlZmVyZW5jZXNTdG9yZShz
dHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlKQorICAgIFNldFVzZXJBZ2Vu
dChTdHJpbmcgdXNlckFnZW50KQorICAgIENsb3NlKCkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li5kN2Q5OTRkZTFmNzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcApAQCAtMCwwICsx
LDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNp
bmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNz
LmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvV29ya2VyT3B0aW9ucy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworI2RlZmluZSBDT05O
RUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIl
cCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gV2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsIFdlYkNvcmU6OlByb2Nlc3M6OmlkZW50aWZpZXIo
KS50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQorCitXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNU
SU9OX1JFTEVBU0VfTE9HKCJXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOiIpOworfQor
CitXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjp+V2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygifldlYlNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb246Iik7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiogV2ViU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAor
eworICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb246OnJlcXVlc3RTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwsIFdlYkNvcmU6OlRyYW5z
ZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiB3
b3JrZXJPcHRpb25zKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coInJlcXVlc3RTaGFy
ZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpSZXF1ZXN0U2hh
cmVkV29ya2VyIHsgb3JpZ2luLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCB1cmwsIFdU
Rk1vdmUocG9ydCksIHdvcmtlck9wdGlvbnMgfSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbjo6c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
KQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coInNoYXJlZFdvcmtlck9iamVjdElzR29p
bmdBd2F5OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMiLCBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6U2hhcmVkV29ya2Vy
T2JqZWN0SXNHb2luZ0F3YXkgeyBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIH0pOworfQor
CisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPRworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLmVjYmY0MmY2NzYyYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b24uaApAQCAtMCwwICsxLDU0IEBACisKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNs
dWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb24sIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V2ViU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKTsgfQorICAgIH5XZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uKCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCitwcml2YXRlOgorICAgIFdlYlNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24oKTsKKworICAgIC8vIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24uCisgICAgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIs
IGNvbnN0IFVSTCYsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgY29uc3QgV2Vi
Q29yZTo6V29ya2VyT3B0aW9ucyYpIGZpbmFsOworICAgIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0
SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikgZmluYWw7
CisKKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Qg
ZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiAwOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMWNlYTE5MzJlOWY2Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI3IEBACisjIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisj
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFdlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24geworICAgIEZldGNoU2NyaXB0SW5DbGllbnQoVVJMIHVybCwgV2ViQ29y
ZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyLCBzdHJ1Y3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyB3b3JrZXJPcHRpb25zKSAtPiAoc3Ry
dWN0IFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0IGZldGNoUmVzdWx0KSBBc3luYworICAgIE5v
dGlmeVdvcmtlck9iamVjdE9mTG9hZEZhaWx1cmUoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQorICAgIFBvc3RFeGNlcHRp
b25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFN0cmluZyBlcnJvck1lc3NhZ2UsIGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTdHJpbmcgc291cmNlVVJMKQorfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlk
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2Vy
UHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDQ5
NWE0MjI1ZTYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyUHJv
dmlkZXIuaCIKKworI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1
ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJTaGFyZWRXb3JrZXJQcm92aWRlciYg
V2ViU2hhcmVkV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyPiBwcm92aWRlcjsKKyAgICByZXR1cm4g
cHJvdmlkZXI7Cit9CisKK1dlYlNoYXJlZFdvcmtlclByb3ZpZGVyOjpXZWJTaGFyZWRXb3JrZXJQ
cm92aWRlcigpID0gZGVmYXVsdDsKKworV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbiogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXI6OnNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKQor
eworICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuc2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uODZlM2QyZmU3MGEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaApAQCAtMCww
ICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3Jl
L1NoYXJlZFdvcmtlclByb3ZpZGVyLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b247Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJQcm92
aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTaGFyZWRXb3JrZXJQcm92aWRlciB7CitwdWJs
aWM6CisgICAgc3RhdGljIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyJiBzaW5nbGV0b24oKTsKKwor
cHJpdmF0ZToKKyAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8V2ViU2hhcmVkV29ya2VyUHJvdmlk
ZXI+OworICAgIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyKCk7CisKKyAgICBXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKiBzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCkgZmluYWw7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAppbmRleCAwMmRhOTExNDdmOGEuLjhjNzRjN2NiY2E0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtODQsNiArODQsOSBAQAogI2luY2x1ZGUg
IldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNlcnZpY2VXb3JrZXJQ
cm92aWRlci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaCIKICNpbmNs
dWRlICJXZWJTb2NrZXRTdHJlYW0uaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1
ZGUgIldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCkBAIC0xMzMsNiArMTM2LDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvVXNlckdlc3R1cmVJbmRpY2F0b3IuaD4KICNpbmNsdWRlIDxwYWwvTG9nZ2luZy5o
PgogI2luY2x1ZGUgPHd0Zi9BbGdvcml0aG1zLmg+CkBAIC01NjksNiArNTczLDcgQEAgdm9pZCBX
ZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzJiYgcGFyYW1ldGVycykKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgU2Vydmlj
ZVdvcmtlclByb3ZpZGVyOjpzZXRTaGFyZWRQcm92aWRlcihXZWJTZXJ2aWNlV29ya2VyUHJvdmlk
ZXI6OnNpbmdsZXRvbigpKTsKICNlbmRpZgorICAgIFNoYXJlZFdvcmtlclByb3ZpZGVyOjpzZXRT
aGFyZWRQcm92aWRlcihXZWJTaGFyZWRXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkpOwogCiAj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIEpTQzo6V2FzbTo6ZW5hYmxlRmFzdE1lbW9yeSgp
OwpAQCAtOTAyLDcgKzkwNyw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlCiAgICAgfQogCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIC8vIEZJWE1FOiBSZW1vdmU/CiAgICAgaWYg
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIEFTU0VS
VChTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpOwogICAgICAgICBp
ZiAoYXV0byogY29udGV4dE1hbmFnZXJDb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2lu
Z2xldG9uKCkuY29ubmVjdGlvbigpKQpAQCAtOTExLDYgKzkxNSwxMyBAQCB2b2lkIFdlYlByb2Nl
c3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpE
ZWNvZGVyJiBkZQogICAgIH0KICNlbmRpZgogCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBBU1NFUlQoU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSk7CisgICAgICAgIGlm
IChhdXRvKiBjb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uJj4oKmNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbikuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKICAgICBMT0dfRVJST1IoIlVuaGFuZGxlZCB3ZWIgcHJvY2Vz
cyBtZXNzYWdlICclcycgKGRlc3RpbmF0aW9uOiAlIiBQUkl1NjQgIiBwaWQ6ICVkKSIsIGRlc2Ny
aXB0aW9uKGRlY29kZXIubWVzc2FnZU5hbWUoKSksIGRlY29kZXIuZGVzdGluYXRpb25JRCgpLCBz
dGF0aWNfY2FzdDxpbnQ+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSkpOwogfQogCkBAIC0xOTE3LDYg
KzE5MjgsMTYgQEAgTGliV2ViUlRDTmV0d29yayYgV2ViUHJvY2Vzczo6bGliV2ViUlRDTmV0d29y
aygpCiAgICAgcmV0dXJuICptX2xpYldlYlJUQ05ldHdvcms7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vz
czo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KFBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
d2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZSYgc3RvcmUsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFNl
cnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXphdGlvbkRhdGEsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICAvLyBXZSBh
cmUgaW4gdGhlIFNoYXJlZCBXb3JrZXIgY29udGV4dCBwcm9jZXNzIGFuZCB0aGUgY2FsbCBiZWxv
dyBlc3RhYmxpc2hlcyBvdXIgY29ubmVjdGlvbiB0byB0aGUgTmV0d29yayBQcm9jZXNzCisgICAg
Ly8gYnkgY2FsbGluZyBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uIFNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0aGUgc2FtZSB1bmRlcmx5aW5nIElQQzo6Q29u
bmVjdGlvbiBhcyB0aGUKKyAgICAvLyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gZm9yIHN5bmNo
cm9uaXphdGlvbiBwdXJwb3Nlcy4KKyAgICBhdXRvJiBpcGNDb25uZWN0aW9uID0gZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworICAgIFNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDb25uZWN0aW9uKG1ha2VVbmlxdWU8V2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uPihpcGNDb25uZWN0aW9uLCBXVEZNb3Zl
KHJlZ2lzdHJhYmxlRG9tYWluKSwgcGFnZUdyb3VwSUQsIHdlYlBhZ2VQcm94eUlELCBwYWdlSUQs
IHN0b3JlLCBXVEZNb3ZlKGluaXRpYWxpemF0aW9uRGF0YSkpKTsKKyAgICBTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpLT5lc3RhYmxpc2hDb25uZWN0
aW9uKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKIHZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElE
LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBw
YWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJsZURvbWFp
biYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJ
bml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXphdGlvbkRhdGEsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCmluZGV4IGRkOGQ3NGZmZjI2OS4uNjVmNzczMjAxYTczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTQ2OSw2ICs0NjksNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZ2FtZXBhZERpc2Nvbm5lY3RlZCh1bnNpZ25lZCBpbmRleCk7CiAjZW5kaWYKIAorICAg
IHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKFBhZ2VHcm91cElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJiwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFNlcnZpY2VX
b3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgppbmRleCBkZmQzMDY0NTYzZjkuLmU1NTI5NmI5MDRkYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTEwMCw2ICsxMDAsOCBA
QCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewog
ICAgIEdhbWVwYWREaXNjb25uZWN0ZWQodW5zaWduZWQgaW5kZXgpCiAjZW5kaWYKIAorICAgIEVz
dGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJL
aXQ6OlBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5
SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiBkb21haW4sIHN0cnVjdCBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJJbml0aWFs
aXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRhKSAtPiAoKSBBc3luYworCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgIEVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91
cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNT
dG9yZSBzdG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJJbml0aWFsaXph
dGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRhKSAtPiAoKSBBc3luYwogI2VuZGlmCg==
</data>
<flag name="commit-queue"
          id="477048"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450610</attachid>
            <date>2022-02-01 22:09:56 -0800</date>
            <delta_ts>2022-02-02 09:53:53 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>235958_SharedWorker_multiProcess_wip.patch</filename>
            <type>text/plain</type>
            <size>321955</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDQwYjI5NmM3MWQzNy4uMzZhMDczMTE3NjBlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTQ2Myw3ICs0NjMsNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYi1sb2Nrcy9zdGVhbC50ZW50YXRpdmUuaHR0cHMuYW55Lmh0bWwgWyBEdW1wSgog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3Ro
ZS1hbmFseXNlcm5vZGUtaW50ZXJmYWNlL3Rlc3QtYW5hbHlzZXItbWluaW11bS5odG1sIFsgRHVt
cEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUt
ZGlzY29ubmVjdC1hdWRpb3BhcmFtLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NhbWUtb3JpZ2luLWNoZWNr
LnN1Yi5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMuaHRt
bCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCiBmYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWJh
Y2stZm9yd2FyZC1jYWNoZS5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGZhc3Qv
aGlzdG9yeS9wYWdlLWNhY2hlLWNyZWF0ZUltYWdlQml0bWFwLmh0bWwgWyBEdW1wSlNDb25zb2xl
TG9nSW5TdGRFcnIgXQogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLWluLWxv
YWRpbmctaWZyYW1lLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQpAQCAtNTE1NCw2
ICs1MTUzLDEwIEBAIHdlYmtpdC5vcmcvYi8xODM5OTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3Nzb20vY3NzLXN0eWxlLWF0dHItZGVjCiAjIFRlc3QgaXMgY3Jhc2hpbmcg
aW4gRGVidWcgYnVpbGRzIHNpbmNlIGltcG9ydC4KIHdlYmtpdC5vcmcvYi8yMzQ5NzcgWyBEZWJ1
ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9mb2N1cy1ldmVu
dC1kb2N1bWVudC1tb3ZlLmh0bWwgWyBTa2lwIF0KIAorIyBUZXN0IGlzIGZsYWt5IGJlY2F1c2Ug
TWVzc2FnZVBvcnQgbWVzc2FnZXMgbWF5IGdldCByZWNlaXZlZCBpbiBhIGRpZmZlcmVudCBvcmRl
ciB3aGVuIHNldmVyYWwgTWVzc2FnZVBvcnRzIGFyZSBpbnZvbHZlZCwKKyMgZHVlIHRvIGhvdyBN
ZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpIGlzIGltcGxlbWVudGVkLgoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0
aW9ucy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIEZhaWx1cmUgUGFzcyBdCisKICMg
UGx1Z2lucwogIyBGSVhNRTogUmVtb3ZlIHRoZXNlIHRlc3RzLgogcGx1Z2lucy8gWyBTa2lwIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0
LW9ubHkuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3
b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dAppbmRleCAwZTk5NzI0Yjg2NGIuLjY4
OThiNTRhYWI2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdv
cmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRl
LXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSw2
ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2Nh
bGhvc3Q6OTQ0NC9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zdXBwb3J0L3Jlc291cmNlLnB5P2Ny
b3NzLW9yaWdpbi1mZXRjaAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8v
d3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQvcmVzb3Vy
Y2UucHk/Y3Jvc3Mtb3JpZ2luLXhocgotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0
dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQv
cmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLWZldGNoCiAKIFBBU1MgU2FtZS1vcmlnaW4gJ2ZldGNo
KCknLgogUEFTUyBTYW1lLW9yaWdpbiBYSFIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lk
ZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWItZXhwZWN0ZWQu
dHh0CmluZGV4IDk3OTEwNjMwMzc4NS4uYmI2NDUyZjQ0YTBhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMu
c3ViLWV4cGVjdGVkLnR4dApAQCAtMiwxMCArMiw5IEBACiBIYXJuZXNzIEVycm9yIChUSU1FT1VU
KSwgbWVzc2FnZSA9IG51bGwKIAogVElNRU9VVCBzaGFyZWR3b3JrZXItc2NyaXB0LXNyYyBUZXN0
IHRpbWVkIG91dAotRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgbm90IGJsb2Nr
ZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgIEEgbmV0d29yayBlcnJvciBvY2N1cnJlZC4KLUZBSUwg
YGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AgUmVmdXNlZCB0byBldmFs
dWF0ZSBhIHN0cmluZyBhcyBKYXZhU2NyaXB0IGJlY2F1c2UgJ3Vuc2FmZS1ldmFsJyBpcyBub3Qg
YW4gYWxsb3dlZCBzb3VyY2Ugb2Ygc2NyaXB0IGluIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1
cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAic2NyaXB0LXNyYyAnc2VsZicgJ25vbmNlLWEnIGJsb2I6
IGZpbGVzeXN0ZW06Ii4KLQotRkFJTCBgc2V0VGltZW91dChbc3RyaW5nXSlgIG5vdCBibG9ja2Vk
IGluIGh0dHA6IHdpdGhvdXQgQ1NQIGFzc2VydF91bnJlYWNoZWQ6IGNhbGxiYWNrIG5vdCBjYWxs
ZWQuIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNj
cmlwdHMoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgTG9hZCBmYWlsZWQKK1BB
U1MgYGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AKK1BBU1MgYHNldFRp
bWVvdXQoW3N0cmluZ10pYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3V0IENTUAogVElNRU9V
VCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgYmxvY2tlZCBpbiBodHRwOiB3aXRoIHNj
cmlwdC1zcmMgJ3NlbGYnIFRlc3QgdGltZWQgb3V0CiBOT1RSVU4gYGV2YWwoKWAgYmxvY2tlZCBp
biBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCiBOT1RSVU4gYHNldFRpbWVvdXQoW3N0cmlu
Z10pYCBibG9ja2VkIGluIGh0dHA6IHdpdGggc2NyaXB0LXNyYyAnc2VsZicKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVk
LnR4dAppbmRleCA0ZWFjMWNjYzA1MjYuLmI4ZWUxM2IwZmZjZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBv
bGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91dC5zdWItZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4
dApAQCAtMSw0ICsxLDQgQEAKIAogRkFJTCBEZWRpY2F0ZWQgd29ya2VyIGluaGVyaXRzIENTUCBm
cm9tIG1haW4gZG9jdW1lbnQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgInNldFRpbWVvdXQgYWxs
b3dlZCIgYnV0IGdvdCAic2V0VGltZW91dCBibG9ja2VkIgotRkFJTCBTaGFyZWQgd29ya2VyIGRl
bGl2ZXJzIGl0cyBvd24gQ1NQIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJzZXRUaW1lb3V0IGJs
b2NrZWQiIGJ1dCBnb3QgInNldFRpbWVvdXQgYWxsb3dlZCIKK1BBU1MgU2hhcmVkIHdvcmtlciBk
ZWxpdmVycyBpdHMgb3duIENTUAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3Jr
ZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNo
ZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggYzEwNzEz
NjU1MjgwLi42Zjg0NGRkNWQ5NDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtl
cnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBj
YWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKQEAgLTUsNyAr
NSw3IEBAIEhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAogUEFTUyBEZWRp
Y2F0ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0CiBQQVNTIERlZGljYXRlZCB3b3JrZXIg
b2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0CiBQQVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIG5v
dC1pbi1jYWNoZSBzY3JpcHQKLVBBU1MgU2hhcmVkIHdvcmtlciBvZiB0aGUgY2FjaGVkIHNjcmlw
dAotUEFTUyBTaGFyZWQgd29ya2VyIG9mIHRoZSBmYWxsYmFja2VkIHNjcmlwdAorRkFJTCBTaGFy
ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJE
b25lOiBjYWNoZWQiIGJ1dCBnb3QgIkVycm9yOiBJbXBvcnRpbmcgYSBub24tY2FjaGVkIHNjcmlw
dCBtdXN0IGZhaWwuIgorRkFJTCBTaGFyZWQgd29ya2VyIG9mIHRoZSBmYWxsYmFja2VkIHNjcmlw
dCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiRG9uZTogZmFsbGJhY2tlZCIgYnV0IGdvdCAiRXJy
b3I6IEltcG9ydGluZyBhIG5vbi1jYWNoZWQgc2NyaXB0IG11c3QgZmFpbC4iCiBUSU1FT1VUIFNo
YXJlZCB3b3JrZXIgb2YgdGhlIG5vdC1pbi1jYWNoZSBzY3JpcHQgVGVzdCB0aW1lZCBvdXQKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3
b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9y
aWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3b3JrZXItcGFydGl0
aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0CmluZGV4IDRlZDg3NDc0
NzZjNy4uZjFlYjBiMjE3ZjM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9hbm9u
eW1vdXMtaWZyYW1lL3NoYXJlZHdvcmtlci1wYXJ0aXRpb25pbmcudGVudGF0aXZlLmh0dHBzLndp
bmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlm
cmFtZS9zaGFyZWR3b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhw
ZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIEFub255bW91cyBpZnJhbWVzIGdldCBw
YXJ0aXRpb25lZCBzaGFyZWQgd29ya2Vycy4gYXNzZXJ0X3RydWU6IFRoZSAibm9ybWFsIiBpZnJh
bWUncyBzaGFyZWR3b3JrZXIgc2hvdWxkIHJldHVybiB7Im5vcm1hbCI6IHRydWUsICJub3JtYWxf
Y29udHJvbCI6IHRydWV9LCBidXQgaW5zdGVhZCByZXR1cm5lZCB7Im5vcm1hbCI6dHJ1ZX0gZXhw
ZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK0ZBSUwgQW5vbnltb3VzIGlmcmFtZXMgZ2V0IHBhcnRpdGlv
bmVkIHNoYXJlZCB3b3JrZXJzLiBhc3NlcnRfdHJ1ZTogVGhlICJub3JtYWwiIGlmcmFtZSdzIHNo
YXJlZHdvcmtlciBzaG91bGQgcmV0dXJuIHsibm9ybWFsIjogdHJ1ZSwgIm5vcm1hbF9jb250cm9s
IjogdHJ1ZX0sIGJ1dCBpbnN0ZWFkIHJldHVybmVkIHsiYW5vbnltb3VzIjp0cnVlLCJub3JtYWxf
Y29udHJvbCI6dHJ1ZSwibm9ybWFsIjp0cnVlLCJhbm9ueW1vdXNfY29udHJvbCI6dHJ1ZX0gZXhw
ZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kv
Y3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdp
bi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMt
ZXhwZWN0ZWQudHh0CmluZGV4IDYzNTViNjhkZTcwYi4uYzhiZjc1ZTdlYTg1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mt
b3JpZ2luLWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5o
dHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2lu
LWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0yMCw3ICsyMCw3IEBA
IFBBU1MgZGVkaWNhdGVkIHdvcmtlcjogc2NoZW1lID0gYmxvYiwgdmFsdWUgPSAqCiBQQVNTIGRl
ZGljYXRlZCB3b3JrZXI6IHNjaGVtZSA9IGJsb2IsIHZhbHVlID0gc2VsZgogRkFJTCBkZWRpY2F0
ZWQgd29ya2VyOiBzY2hlbWUgPSBibG9iLCB2YWx1ZSA9IChcKSBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCBmYWxzZSBidXQgZ290IHRydWUKIFBBU1Mgc2hhcmVkIHdvcmtlcjogd2l0aENvb3BDb2Vw
ID0gZmFsc2UKLVBBU1Mgc2hhcmVkIHdvcmtlcjogd2l0aENvb3BDb2VwID0gdHJ1ZQorRkFJTCBz
aGFyZWQgd29ya2VyOiB3aXRoQ29vcENvZXAgPSB0cnVlIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
IHRydWUgYnV0IGdvdCBmYWxzZQogUEFTUyBzZXJ2aWNlIHdvcmtlcjogd2l0aENvb3BDb2VwID0g
ZmFsc2UKIEZBSUwgc2VydmljZSB3b3JrZXI6IHdpdGhDb29wQ29lcCA9IHRydWUgYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1i
ZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1i
ZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAzMzk4
YmQ4ODkzMWIuLjRjODY2ZWIyOTI2MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kv
c2hhcmVkLXdvcmtlcnMuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9s
aWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMiw3ICsyLDcgQEAgVmVy
aWZ5IHRoZSBDcm9zcy1PcmlnaW4gRW1iZWRkZXIgUG9saWN5IGZvciBTaGFyZWQgV29ya2VycyBi
eSBwZXJmb3JtaW5nIGEgY3Jvc3MKIAogCiBQQVNTIGRlZmF1bHQgcG9saWN5IChkZXJpdmVkIGZy
b20gcmVzcG9uc2UpCi1GQUlMICJyZXF1aXJlLWNvcnAiIChkZXJpdmVkIGZyb20gcmVzcG9uc2Up
IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJmYWlsdXJlIiBidXQgZ290ICJzdWNjZXNzIgorUEFT
UyAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIHJlc3BvbnNlKQogUEFTUyBkZWZhdWx0IHBv
bGljeSAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBkdWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAt
IGJsb2IgVVJMKQogRkFJTCAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBk
dWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAtIGJsb2IgVVJMKSBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCAiZmFpbHVyZSIgYnV0IGdvdCAic3VjY2VzcyIKIFBBU1MgZGVmYXVsdCBwb2xpY3kgKGRl
cml2ZWQgZnJvbSBvd25lciBzZXQgZHVlIHRvIHVzZSBvZiBsb2NhbCBzY2hlbWUgLSBkYXRhIFVS
TCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5jZS5z
dWIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVy
aXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggNzViMWQzM2U1MjYwLi5iMmJmMmUz
YmZmM2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5j
ZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtl
ci1pbmhlcml0YW5jZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNiBAQAogQmxv
Y2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2Nv
bW1vbi9ibGFuay5odG1sCiBCbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93
d3cubG9jYWxob3N0Ojk0NDQvY29tbW9uL2JsYW5rLmh0bWwKIEJsb2NrZWQgYWNjZXNzIHRvIGV4
dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2NhbGhvc3Q6OTQ0NC9jb21tb24vYmxhbmsuaHRtbAot
QmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0
L2NvbW1vbi9ibGFuay5odG1sCiAKIFBBU1MgVGVzdCB0aGF0IGxvY2FsIHNjaGVtZSB3b3JrZXJz
IGluaGVyaXQgQ09FUDogcmVxdWlyZS1jb3JwIGZyb20gdGhlIGNyZWF0aW5nIGRvY3VtZW50CiBQ
QVNTIGJsb2IgVVJMIGRlZGljYXRlZCB3b3JrZXI6IFNhbWUgb3JpZ2luIHNob3VsZCBiZSBhbGxv
d2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJf
ZGF0YVVybC1leHBlY3RlZC50eHQKaW5kZXggOTk1YTA2MDE5Yjg0Li45YjU4MjBhYWU4Y2IgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9TaGFyZWRXb3JrZXJfZGF0YVVybC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRh
VXJsLWV4cGVjdGVkLnR4dApAQCAtMSwxMyArMSw1IEBACi1DT05TT0xFIE1FU1NBR0U6IEVycm9y
OiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3QgMQogCiAKLUhhcm5lc3MgRXJyb3Ig
KEZBSUwpLCBtZXNzYWdlID0gRXJyb3I6IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDIgYnV0IGdv
dCAxCi0KLVBBU1MgRGF0YSBVUkwgbm90IHNoYXJlZCBieSBjcm9zcy1vcmlnaW4gU2hhcmVkV29y
a2VycwotVElNRU9VVCBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtl
cnMgVGVzdCB0aW1lZCBvdXQKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBFcnJv
cjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290IDEKLQogUEFTUyBEYXRhIFVSTCBu
b3Qgc2hhcmVkIGJ5IGNyb3NzLW9yaWdpbiBTaGFyZWRXb3JrZXJzCi1USU1FT1VUIERhdGEgVVJM
cyBzaGFyZWQgYnkgc2FtZS1vcmlnaW4gU2hhcmVkV29ya2VycyBUZXN0IHRpbWVkIG91dAorUEFT
UyBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtlcnMKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQK
aW5kZXggNTc2ZTZkMmI3ZWQyLi40YTI2YmU5MjlhOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13
b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVk
LXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMg
QEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0
Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkK
IAogUEFTUyBTdGF0aWMgaW1wb3J0LgogRkFJTCBTdGF0aWMgaW1wb3J0IChjcm9zcy1vcmlnaW4p
LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogIkltcG9ydGlu
ZyBhIG1vZHVsZSBzY3JpcHQgZmFpbGVkLiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXIt
aW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29y
a2VyLWltcG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CmluZGV4IDRmODY0
MWU1MTQ4MC4uMjk5N2Y3ZTFmMzA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9y
dC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3Jr
ZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwz
IEBACi1DT05TT0xFIE1FU1NBR0U6IE9yaWdpbiBudWxsIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vz
cy1Db250cm9sLUFsbG93LU9yaWdpbi4gU3RhdHVzIGNvZGU6IDIwMAogCiBIYXJuZXNzIEVycm9y
IChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtl
ci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXIt
aW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQKaW5kZXggZWFjN2Y5NWRlNmYyLi5j
YmMwNDI5ZTBjNzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJs
LndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11
cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRv
IGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVz
L3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkKIAogSGFybmVzcyBFcnJvciAoVElN
RU9VVCksIG1lc3NhZ2UgPSBudWxsCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ct
ZXhwZWN0ZWQudHh0CmluZGV4IDU3NmU2ZDJiN2VkMi4uNGEyNmJlOTI5YThkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9k
dWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3No
YXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1C
bG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQz
L3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LW9uLWxvYWQtc2NyaXB0LnB5CiAKIFBB
U1MgU3RhdGljIGltcG9ydC4KIEZBSUwgU3RhdGljIGltcG9ydCAoY3Jvc3Mtb3JpZ2luKS4gcHJv
bWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6ICJJbXBvcnRpbmcgYSBt
b2R1bGUgc2NyaXB0IGZhaWxlZC4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlv
bnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNy
ZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAppbmRleCBlMWJlZGY1NDMwZWYuLmE3MGYwNWFmNTRmNCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQu
dHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHA6
Ly93d3cxLmxvY2FsaG9zdDo4ODAwL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LWNy
ZWRlbnRpYWxzLnB5CiAKIEhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRp
Y3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhwZWN0ZWQudHh0CmluZGV4IDAxOGRiNjA0NTY5ZC4u
Y2ZlNDY1NTY3NWNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVkLnR4dApAQCAt
MSw1ICsxLDMgQEAKIAotSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0K
LU5PVFJVTiBzaGFyZWQgd29ya2VyIHdpdGggbXVsdGlwbGUgZG9jdW1lbnRzCitQQVNTIHNoYXJl
ZCB3b3JrZXIgd2l0aCBtdWx0aXBsZSBkb2N1bWVudHMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA4
LWV4cGVjdGVkLnR4dAppbmRleCA5N2E0ZTdhNzNhNjMuLjA5ZjY3MmQxYzYyMSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3Nl
bWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSwzIEBACiAKLUhhcm5lc3Mg
RXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1USU1FT1VUIG1lc3NhZ2VjaGFubmVs
IGluIHNoYXJlZCB3b3JrZXIgVGVzdCB0aW1lZCBvdXQKK1BBU1MgbWVzc2FnZWNoYW5uZWwgaW4g
c2hhcmVkIHdvcmtlcgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRv
dy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50
eHQKaW5kZXggYTA4OWMyMjQ4OWUyLi5kMzlhNTUwODRkYzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2Vy
LWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJs
b2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw3IEBACiAKIEhhcm5lc3MgRXJy
b3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAogCi1GQUlMIENyZWF0aW5nIGEgc2hhcmVkIHdv
cmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJ3b3Jr
ZXJfT0tfMiIgYnV0IGdvdCAid29ya2VyX09LXzEiCi1QQVNTIENyZWF0aW5nIGEgc2hhcmVkIHdv
cmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MgaW1tZWRpYXRlbHkgYmVmb3JlIHJldm9raW5nLgot
VElNRU9VVCBDb25uZWN0aW5nIHRvIGEgc2hhcmVkIHdvcmtlciBvbiBhIHJldm9rZWQgYmxvYiBV
Ukwgd29ya3MuIFRlc3QgdGltZWQgb3V0CitQQVNTIENyZWF0aW5nIGEgc2hhcmVkIHdvcmtlciBm
cm9tIGEgYmxvYiBVUkwgd29ya3MuCitUSU1FT1VUIENyZWF0aW5nIGEgc2hhcmVkIHdvcmtlciBm
cm9tIGEgYmxvYiBVUkwgd29ya3MgaW1tZWRpYXRlbHkgYmVmb3JlIHJldm9raW5nLiBUZXN0IHRp
bWVkIG91dAorTk9UUlVOIENvbm5lY3RpbmcgdG8gYSBzaGFyZWQgd29ya2VyIG9uIGEgcmV2b2tl
ZCBibG9iIFVSTCB3b3Jrcy4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9u
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25zLWV4cGVjdGVkLnR4dApp
bmRleCA2ZmZlZTI3MzkwZDkuLmFlNDViNGQyNzM5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFt
ZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9u
cy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgVGVzdCB0aGUgbmFtZSBwcm9w
ZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBtaXhpbmcgY29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29u
c3RydWN0b3Igc3RyaW5ncyBFcnJvcjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290
IDEKK1BBU1MgVGVzdCB0aGUgbmFtZSBwcm9wZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBtaXhpbmcg
Y29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29uc3RydWN0b3Igc3RyaW5ncwogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW9wdGlv
bnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CmluZGV4IGY2NTY5NDYxNTBkYi4uNGY5OWExMzQwOWU3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dApAQCAtMSwyOCArMSwyNiBA
QAogCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKLQotVElNRU9VVCBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogZGVmYXVsdCB0byBtb2R1bGUgVGVzdCB0aW1lZCBvdXQKLU5PVFJVTiBDb25u
ZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUg
YmxvY2tlZDogbW9kdWxlIHRvIGRlZmF1bHQKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3
b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogY2xhc3NpYyB0
byBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJl
bnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGNsYXNzaWMKLU5PVFJVTiBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogZGVmYXVsdCB0byBvbWl0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogZGVmYXVsdCB0byBpbmNsdWRlIGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNo
YXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21p
dCB0byBkZWZhdWx0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3Jr
ZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBzYW1l
LW9yaWdpbiBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdp
dGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVkZSBp
biBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVy
ZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIG9taXQgaW4gY2xh
c3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIGNsYXNz
aWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGluIGNsYXNzaWMKLU5P
VFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBz
aG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBvbWl0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25u
ZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUg
YmxvY2tlZDogaW5jbHVkZSB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IGRlZmF1bHQgdG8gb21pdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNo
YXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVm
YXVsdCB0byBpbmNsdWRlIGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRl
ZmF1bHQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGgg
ZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gc2FtZS1vcmlnaW4g
aW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVy
ZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVkZSBpbiBtb2R1bGUK
LU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9u
cyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBtb2R1bGUKLU5PVFJV
TiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91
bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gaW5jbHVkZSBpbiBtb2R1bGUKLU5PVFJVTiBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3Rp
bmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9j
a2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1
ZGUgdG8gc2FtZS1vcmlnaW4gaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRv
IG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQg
b3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGRlZmF1bHQKK1BBU1MgQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IGNsYXNzaWMgdG8gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBtb2R1bGUgdG8gY2xh
c3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBvbWl0IGluIGNsYXNzaWMKK1BBU1Mg
Q29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxk
IGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gaW5jbHVkZSBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3Rp
bmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9j
a2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJl
ZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0
byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGluY2x1
ZGUgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZm
ZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBj
bGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIGNsYXNz
aWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlv
bnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gZGVmYXVsdCBpbiBjbGFzc2ljCitQQVNT
IENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3Vs
ZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogaW5jbHVkZSB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8g
c2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBk
ZWZhdWx0IHRvIG9taXQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIGlu
Y2x1ZGUgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRp
ZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4gbW9k
dWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIHNhbWUtb3JpZ2luIGluIG1vZHVsZQorUEFT
UyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91
bGQgYmUgYmxvY2tlZDogb21pdCB0byBpbmNsdWRlIGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUt
b3JpZ2luIHRvIGluY2x1ZGUgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRv
IGRlZmF1bHQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4g
bW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIHNhbWUtb3JpZ2luIGluIG1vZHVs
ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Bl
bi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dAppbmRleCAx
ZTJkMzk5MmY2ZDUuLjU5Y2FjYTQ4NmY4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3
b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1v
cmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0
ZXJuYWwgVVJMIGh0dHA6Ly93d3cyLmxvY2FsaG9zdDo4ODAwL3hoci9yZXNvdXJjZXMvaW5zcGVj
dC1oZWFkZXJzLnB5P2ZpbHRlcl9uYW1lPW9yaWdpbiZjb3JzCiAKIEZBSUwgUmVmZXJlciBoZWFk
ZXIgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIlJlZmVyZXI6IGh0dHA6Ly9sb2NhbGhvc3Q6ODgw
MC94aHIvcmVzb3VyY2VzL3dvcmtlcnhoci1vcmlnaW4tcmVmZXJyZXIuanNcbiIgYnV0IGdvdCAi
UmVmZXJlcjogaHR0cDovL2xvY2FsaG9zdDo4ODAwL3hoci9yZXNvdXJjZXMvcmVkaXJlY3QucHk/
bG9jYXRpb249d29ya2VyeGhyLW9yaWdpbi1yZWZlcnJlci5qc1xuIgogRkFJTCBPcmlnaW4gaGVh
ZGVyIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJPcmlnaW46IGh0dHA6Ly9sb2NhbGhvc3Q6ODgw
MFxuIiBidXQgZ290ICIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sx
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggODZkZjI3ZDViYWJiLi5mMjY5MDk0NGQ2MGYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTY2LDYgKzY2LDEwNiBA
QCBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS1nZXRVc2VyTWVkaWEtcGVuZGluZy1w
cm9taXNlLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNhY2hlLW1l
ZGlhc3RyZWFtLmh0bWwgWyBTa2lwIF0KIG1lZGlhL2F1ZGlvLXNlc3Npb24tY2F0ZWdvcnkuaHRt
bCBbIFNraXAgXQogCisjIFNoYXJlZCB3b3JrZXJzIGFyZSBvbmx5IGltcGxlbWVudGVkIGZvciBX
ZWJLaXQyLgoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5
LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFz
c2ljLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
b250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy1zZWxmL3No
YXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3Nj
cmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4v
dG9wLmh0dHAtcnAvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRw
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVk
d29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0
LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4v
dG9wLmh0dHAtcnAvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHAuaHRt
bCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3Vy
aXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1j
bGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtc2Vs
Zi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAv
d29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWNsYXNz
aWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
b250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNyYy1zZWxmL3NoYXJl
ZHdvcmtlci1jbGFzc2ljLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNy
Yy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5t
ZXRhL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5o
dHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVk
d29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNy
Yy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1l
dGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAu
aHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1t
b2R1bGUuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy13aWxkY2Fy
ZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dv
cmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItbW9kdWxlLmh0
dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50
LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3
b3JrZXItbW9kdWxlLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3Jr
ZXItY29ubmVjdC1zcmMuc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3Jr
ZXItcmVwb3J0LW9ubHkuc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3Jr
ZXItc2NyaXB0LXNyYy5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zYW5kYm94L3NoYXJlZC13b3JrZXItc2Fu
ZGJveC5odG1sICBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1kYXRhLXNldC10aW1lb3V0LnN1
Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLWNoaWxkLnN1Yi5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2dlbi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRh
Lmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy1zZWxmL3NoYXJl
ZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC9z
Y3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tpcCBdCitp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dl
bi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0
YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtd2lsZGNhcmQv
c2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRw
LXJwL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsg
U2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHkt
cG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLW5vbmUvc2hhcmVkd29ya2VyLWNsYXNz
aWMuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nv
bnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLW5vbmUvc2hh
cmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29y
a2VyLXNyYy1ub25lL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
Z2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtbm9uZS9zaGFyZWR3b3JrZXItaW1wb3J0LWRhdGEu
aHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1ub25lL3NoYXJl
ZHdvcmtlci1tb2R1bGUuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXIt
c3JjLW5vbmUvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3Au
aHR0cC1ycC93b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHAuaHRt
bCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3Vy
aXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1p
bXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3Jj
LXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0
cC1ycC93b3JrZXItc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0
bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29y
a2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtl
ci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lwIF0KK2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2Vu
L3RvcC5odHRwLXJwL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRw
cy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2Vy
LWltcG9ydC1kYXRhLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNyYy1z
ZWxmL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3Au
bWV0YS9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tp
cCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1pbXBvcnQt
ZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtd2lsZGNhcmQv
c2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRh
L3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5o
dHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLW5vbmUvc2hhcmVkd29y
a2VyLWNsYXNzaWMuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLW5v
bmUvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEv
d29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtbm9uZS9zaGFyZWR3b3JrZXItaW1wb3J0LWRhdGEu
aHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLW5vbmUvc2hhcmVkd29y
a2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1z
cmMtbm9uZS9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1l
dGEvd29ya2VyLXNyYy1ub25lL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cHMuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5o
dHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLXdpbGRjYXJkL3NoYXJl
ZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtl
ci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvd29ya2VyLXNyYy9zaGFyZWQtZmFsbGJhY2suc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvd29ya2VyLXNy
Yy9zaGFyZWQtbGlzdC5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS93b3JrZXItc3JjL3NoYXJlZC1ub25lLnN1
Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXNlbGYuc3ViLmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
d29ya2VyLXNyYy9zaGFyZWQtd29ya2VyLXNyYy1jaGlsZC1mYWxsYmFjay1ibG9ja2VkLnN1Yi5o
dG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXdvcmtlci1zcmMtY2hpbGQtZmFsbGJhY2su
c3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvd29ya2VyLXNyYy9zaGFyZWQtd29ya2VyLXNyYy1kZWZhdWx0LWZh
bGxiYWNrLnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXdvcmtlci1zcmMtc2Ny
aXB0LWZhbGxiYWNrLnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXdvcmtlci1z
cmMtc2VsZi1mYWxsYmFjay5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29ycy9kYXRhLXVybC1zaGFyZWQtd29ya2VyLmh0bWwgWyBT
a2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZs
aW5lL25vLWFwcGNhY2hlLWluLXNoYXJlZC13b3JrZXJzLWhpc3RvcmljYWwuaHR0cHMuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9z
Y3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvbW9kdWxlL2V2YWx1YXRpb24tb3JkZXItMS1u
b3Rocm93LXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudC9t
b2R1bGUvZXZhbHVhdGlvbi1vcmRlci0xLXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3Ro
ZS1zY3JpcHQtZWxlbWVudC9tb2R1bGUvZXZhbHVhdGlvbi1vcmRlci0yLWltcG9ydC1zaGFyZWR3
b3JrZXIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvbW9kdWxlL2V2YWx1YXRp
b24tb3JkZXItMy1keW5hbWljLXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3Jp
cHQtZWxlbWVudC9ldmFsdWF0aW9uLW9yZGVyLTEtbm90aHJvdy1zaGFyZWR3b3JrZXIuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9z
Y3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvZXZhbHVhdGlvbi1vcmRlci0xLXNoYXJlZHdv
cmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
d2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL3VuaGFuZGxlZC1wcm9taXNl
LXJlamVjdGlvbnMvcHJvbWlzZS1yZWplY3Rpb24tZXZlbnRzLnNoYXJlZHdvcmtlci5odG1sIFsg
U2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vc2VyaWFsaXphdGlv
bi9tb2R1bGUvYnJvYWRjYXN0Y2hhbm5lbC1zdWNjZXNzLWFuZC1mYWlsdXJlLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJQ
ZXJmb3JtYW5jZU5vdy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvYmFzZXVybC9hbHBoYS9pbXBvcnRTY3JpcHRzLWluLXNoYXJlZHdvcmtlci5o
dG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvYmFz
ZXVybC9hbHBoYS94aHItaW4tc2hhcmVkd29ya2VyLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9pbnRlcmZhY2VzL1NoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
aW50ZXJmYWNlcy9Xb3JrZXJHbG9iYWxTY29wZS9sb2NhdGlvbi9yZWRpcmVjdC1zaGFyZWR3b3Jr
ZXIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93Lmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJl
ZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi5odG1sIFsgU2tpcCBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2Vy
LWltcG9ydC1kYXRhLXVybC53aW5kb3cuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZmFpbHVy
ZS5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
bW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1tZXRhLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LndpbmRvdy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMv
c2hhcmVkLXdvcmtlci1vcHRpb25zLXR5cGUuaHRtbCBbIFNraXAgXQorCiBodHRwL3dwdC9tZWRp
YXJlY29yZGVyIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlh
Y2FwdHVyZS1yZWNvcmQgWyBTa2lwIF0KIGZhc3QvaGlzdG9yeS9wYWdlLWNhY2hlLW1lZGlhLXJl
Y29yZGVyLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBv
bGljeS9zY3JpcHQtc3JjL3dvcmtlci1pbXBvcnRzY3JpcHRzLnN1Yi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItaW1wb3J0c2NyaXB0
cy5zdWItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uNmVlYTFiZWFiNWIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHkt
cG9saWN5L3NjcmlwdC1zcmMvd29ya2VyLWltcG9ydHNjcmlwdHMuc3ViLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDQgQEAKKworRkFJTCBEZWRpY2F0ZWQgd29ya2VyIGluaGVyaXRzIENTUCBmcm9t
IG1haW4gZG9jdW1lbnQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImltcG9ydFNjcmlwdHMgYWxs
b3dlZCIgYnV0IGdvdCAiaW1wb3J0U2NyaXB0cyBibG9ja2VkIgorRkFJTCBTaGFyZWQgd29ya2Vy
IGRlbGl2ZXJzIGl0cyBvd24gQ1NQIFNoYXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtl
ci1zZXQtdGltZW91dC5zdWItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L3NjcmlwdC1zcmMvd29ya2VyLXNldC10aW1lb3V0LnN1Yi1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42NzVhM2E4ZTBmMGIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXIt
c2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworRkFJTCBEZWRp
Y2F0ZWQgd29ya2VyIGluaGVyaXRzIENTUCBmcm9tIG1haW4gZG9jdW1lbnQgYXNzZXJ0X2VxdWFs
czogZXhwZWN0ZWQgInNldFRpbWVvdXQgYWxsb3dlZCIgYnV0IGdvdCAic2V0VGltZW91dCBibG9j
a2VkIgorRkFJTCBTaGFyZWQgd29ya2VyIGRlbGl2ZXJzIGl0cyBvd24gQ1NQIFNoYXJlZCB3b3Jr
ZXJzIGFyZSBub3Qgc3VwcG9ydGVkCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29m
ZmxpbmUvYXBwY2FjaGUvd29ya2Vycy9hcHBjYWNoZS13b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdv
cmtlci5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi43ZjJjZDUxOGM3ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vy
cy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDkgQEAKK0NPTlNPTEUgTUVTU0FHRTogQXBwbGljYXRpb25DYWNoZSBp
cyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIFNlcnZpY2VXb3JrZXJzIGluc3RlYWQuCisKK1BBU1Mg
RGVkaWNhdGVkIHdvcmtlciBvZiB0aGUgY2FjaGVkIHNjcmlwdAorUEFTUyBEZWRpY2F0ZWQgd29y
a2VyIG9mIHRoZSBmYWxsYmFja2VkIHNjcmlwdAorUEFTUyBEZWRpY2F0ZWQgd29ya2VyIG9mIHRo
ZSBub3QtaW4tY2FjaGUgc2NyaXB0CitGQUlMIFNoYXJlZCB3b3JrZXIgb2YgdGhlIGNhY2hlZCBz
Y3JpcHQgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVj
dCAiTm90U3VwcG9ydGVkRXJyb3I6IFNoYXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkIgor
RkFJTCBTaGFyZWQgd29ya2VyIG9mIHRoZSBmYWxsYmFja2VkIHNjcmlwdCBwcm9taXNlX3Rlc3Q6
IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJv
cjogU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQiCitGQUlMIFNoYXJlZCB3b3JrZXIg
b2YgdGhlIG5vdC1pbi1jYWNoZSBzY3JpcHQgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0
aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IFNoYXJlZCB3b3JrZXJz
IGFyZSBub3Qgc3VwcG9ydGVkIgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mvc2Ny
aXB0aW5nLTEvdGhlLXNjcmlwdC1lbGVtZW50L21vZHVsZS9pbXBvcnQtbWV0YS9pbXBvcnQtbWV0
YS11cmwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1z
Y3JpcHQtZWxlbWVudC9tb2R1bGUvaW1wb3J0LW1ldGEvaW1wb3J0LW1ldGEtdXJsLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmIyNDk5ZmFkY2I2
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUt
c2NyaXB0LWVsZW1lbnQvbW9kdWxlL2ltcG9ydC1tZXRhL2ltcG9ydC1tZXRhLXVybC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMSBAQAorCitQQVNTIGltcG9ydC5tZXRhLnVybCBpbiBhIHJvb3Qg
ZXh0ZXJuYWwgc2NyaXB0CitQQVNTIGltcG9ydC5tZXRhLnVybCBpbiBhIGRlcGVuZGVudCBleHRl
cm5hbCBzY3JpcHQKK1BBU1MgaW1wb3J0Lm1ldGEgaXMgYW4gb2JqZWN0CitQQVNTIGltcG9ydC5t
ZXRhIGlzIGV4dGVuc2libGUKK1BBU1MgaW1wb3J0Lm1ldGEncyBwcm9wZXJ0aWVzIGFyZSB3cml0
YWJsZSwgY29uZmlndXJhYmxlLCBhbmQgZW51bWVyYWJsZQorUEFTUyBpbXBvcnQubWV0YS51cmwg
d2hlbiBpbXBvcnRpbmcgdGhlIG1vZHVsZSB3aXRoIGRpZmZlcmVudCBmcmFnbWVudHMKK1BBU1Mg
aW1wb3J0Lm1ldGEudXJsIGluIGEgcm9vdCBpbmxpbmUgc2NyaXB0CitQQVNTIGltcG9ydC5tZXRh
LnVybCBhdCB0b3AtbGV2ZWwgbW9kdWxlIERlZGljYXRlZFdvcmtlcgorRkFJTCBpbXBvcnQubWV0
YS51cmwgYXQgdG9wLWxldmVsIG1vZHVsZSBTaGFyZWRXb3JrZXIgcHJvbWlzZV90ZXN0OiBVbmhh
bmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IFNo
YXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkIgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4
IDc5MmEwMGY5ZWExYS4uNDU3YzRhYTliMWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTc5
LDYgKzE3OSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAg
ICIke1dFQkNPUkVfRElSfS93b3JrZXJzL3NlcnZpY2UvY29udGV4dCIKICAgICAiJHtXRUJDT1JF
X0RJUn0vd29ya2Vycy9zZXJ2aWNlL3NlcnZlciIKICAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2Vy
cy9zaGFyZWQiCisgICAgIiR7V0VCQ09SRV9ESVJ9L3dvcmtlcnMvc2hhcmVkL2NvbnRleHQiCiAg
ICAgIiR7V0VCQ09SRV9ESVJ9L3dvcmtsZXRzIgogICAgICIke1dFQkNPUkVfRElSfS94bWwiCiAg
ICAgIiR7V0VCQ09SRV9ESVJ9L3htbC9wYXJzZXIiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA4OWI4
MmExM2Y3ZTQuLjBmMDM5MjA3NzA2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xOTU1LDkgKzE5
NTUsMTIgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHdvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKICAgICB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3Bl
LmgKICAgICB3b3JrZXJzL1dvcmtlckxvYWRlclByb3h5LmgKKyAgICB3b3JrZXJzL1dvcmtlck9i
amVjdFByb3h5LmgKKyAgICB3b3JrZXJzL1dvcmtlck9wdGlvbnMuaAogICAgIHdvcmtlcnMvV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaAogICAgIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlci5oCiAgICAgd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaAorICAg
IHdvcmtlcnMvV29ya2VyUmVwb3J0aW5nUHJveHkuaAogICAgIHdvcmtlcnMvV29ya2VyUnVuTG9v
cC5oCiAgICAgd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAogICAgIHdvcmtlcnMvV29ya2Vy
U2NyaXB0TG9hZGVyQ2xpZW50LmgKQEAgLTIwMDAsNiArMjAwMywxNSBAQCBzZXQoV2ViQ29yZV9Q
UklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAogICAgIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuaAogCisgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VySWRlbnRpZmll
ci5oCisgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyS2V5LmgKKyAgICB3b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKKyAgICB3b3JrZXJzL3NoYXJlZC9T
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgKKyAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXJQcm92aWRlci5oCisKKyAgICB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyLmgKKyAgICB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtl
clRocmVhZFByb3h5LmgKKwogICAgIHhtbC9DdXN0b21YUGF0aE5TUmVzb2x2ZXIuaAogICAgIHht
bC9YUGF0aEV4cHJlc3Npb24uaAogICAgIHhtbC9YUGF0aE5TUmVzb2x2ZXIuaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAppbmRleCBmNjZjY2Y4ZjA2YTUuLjlhYjg2MDRjOWQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTI3
ODYsMTAgKzI3ODYsMTIgQEAgd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNw
cAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyR2xvYmFsU2NvcGUuY3BwCi13b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2Vy
LmNwcAotd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJveHkuY3BwCit3b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcAord29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyUHJvdmlkZXIuY3BwCiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXIuY3BwCiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJUaHJlYWQuY3BwCit3b3JrZXJzL3No
YXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcAord29ya2Vycy9zaGFy
ZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAKIHdvcmtsZXRzL1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmNwcAogd29ya2xldHMvV29ya2xldC5jcHAKIHdvcmtsZXRzL1dvcmts
ZXRHbG9iYWxTY29wZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA1ZmQxZDY2OWNkYjguLjRlZDMxZjU4YmU0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
OTAzLDcgKzkwMyw3IEBACiAJCTJFNDM0NjRCMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9i
YWxTY29wZVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRTQzNDYzOTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGVQcm94eS5o
ICovOyB9OwogCQkyRTQzNDY0RDBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyTG9jYXRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjNCMEY1
NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJMb2NhdGlvbi5oICovOyB9OwogCQkyRTQzNDY1MDBGNTQ2
QTgyMDBCMEYxQkEgLyogV29ya2VyTWVzc2FnaW5nUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjNFMEY1NDZBODIwMEIwRjFCQSAvKiBX
b3JrZXJNZXNzYWdpbmdQcm94eS5oICovOyB9OwotCQkyRTQzNDY1MTBGNTQ2QTgyMDBCMEYxQkEg
LyogV29ya2VyT2JqZWN0UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJFNDM0NjNGMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94
eS5oICovOyB9OworCQkyRTQzNDY1MTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyT2JqZWN0UHJv
eHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0
NjNGMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94eS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFNDM0NjUzMEY1NDZBODIwMEIw
RjFCQSAvKiBXb3JrZXJSdW5Mb29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRTQzNDY0MTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyUnVuTG9vcC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFNDM0
NjU1MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjQzMEY1NDZBODIwMEIwRjFCQSAvKiBX
b3JrZXJUaHJlYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkyRTc1ODQxRTEyNzc5QURBMDA2MjYyOEIgLyogRmlsZVJlYWRlckxvYWRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU3NTg0MUIxMjc3
OUFEQTAwNjI2MjhCIC8qIEZpbGVSZWFkZXJMb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTEyNSw3ICsxMTI1LDcgQEAKIAkJNDE2QTA2
QTEyM0NDQUQwMzAwMzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZBMDY5NjIzQ0NB
QTlGMDAzNDcxMDkgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZENzVBMjIwQzY1MUE1
MDBEMDJEMkMgLyogTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RDc1OUYyMEM2NDQxMzAwRDAyRDJDIC8qIE5l
dHdvcmtMb2FkSW5mb3JtYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0MTZFMEIzQTIwOUJDM0NCMDA0QTk1RDkgLyogRmV0Y2hJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZF
MEIzNzIwOUJDM0MyMDA0QTk1RDkgLyogRmV0Y2hJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDE2RTI5QTYxMDJGQTk2MjAwN0ZD
MTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFMjlBNTEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVw
b3J0aW5nUHJveHkuaCAqLzsgfTsKKwkJNDE2RTI5QTYxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtl
clJlcG9ydGluZ1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTZFMjlBNTEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZF
NkZFODFCQkQxMkRGMDAwQTNGNjQgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYx
QkIzMTEwRDAwQjc2NEQ5IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFODFC
QkQxMkRGMDAwQTNGNjUgLyogSlNET01CaW5kaW5nSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQw
MEI3NjREQSAvKiBKU0RPTUJpbmRpbmdJbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU4MUJCRDEyREYwMDBB
M0Y3NCAvKiBUcmFuc2Zvcm1TdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEVB
IC8qIFRyYW5zZm9ybVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzMjEsNiArMTMyMSw4IEBACiAJCTQ2
MEUzMDc3MjIyRjRGMDMwMDlBMDYwNiAvKiBEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlz
c2lvblN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NjVFREQ5RjIyMkY0RUMzMDBCNDZFMTYgLyogRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBl
cm1pc3Npb25TdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQ2MjE4QUNCMUY3MkQ2NEUwMDU3NEZCRSAvKiBET01IaWdoUmVzVGltZVN0YW1w
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkUwMTZB
RDFGNzJENjFFMDAyODJCMkMgLyogRE9NSGlnaFJlc1RpbWVTdGFtcC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2MjczQ0FGMjYwRTU5RUYwMDZG
QUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2MjczQ0FDMjYwRTU5REYwMDZGQUE5MSAvKiBTV1NjcmlwdFN0b3Jh
Z2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0
NjI3RkY1OTI3OUI4MjQ5MDBBQTM5MTYgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MjdGRjU4Mjc5Qjgy
NDYwMEFBMzkxNiAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2MjdGRjVCMjc5Qjg3QUYwMEFBMzkx
NiAvKiBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjI3RkY1QTI3OUI4N0EyMDBBQTM5MTYgLyogU2hhcmVkV29y
a2VySWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQ2MkM3RjQxMjc1NkRCRTQwMEQwODNDOCAvKiBXZWJMb2NrSWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3ODAyQjIy
NzQ3MTE4NTAwREE5RkI2IC8qIFdlYkxvY2tJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYyRTRDNTAyNjE2QTgxMTAwM0EyQzY3
IC8qIFNjcmlwdEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDYyRTRDNEQyNjE2QTgwMTAwM0EyQzY3IC8qIFNjcmlwdEJ1ZmZlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2MzRDNzJDMjc1
N0RBQjIwMDI2QTgxNSAvKiBXZWJMb2NrTWFuYWdlclNuYXBzaG90LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njc4MDJCMDI3NDcxMTdCMDBEQTlGQjYg
LyogV2ViTG9ja01hbmFnZXJTbmFwc2hvdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0xMzQyLDE1ICsxMzQ0LDE4IEBACiAJCTQ2NzMwMjAyMUM0
RUZFNzgwMEJDQjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzMwMjAx
MUM0RUZFNjYwMEJDQjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50
ZXIuaCAqLzsgfTsKIAkJNDY3QTY4RDcyNzVFQTk5MTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRo
cmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3
QTY4RDQyNzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5oICovOyB9OwogCQk0
NjdBNjhEODI3NUVBOTk1MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdBNjhENTI3NUVB
OThDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmggKi87IH07Ci0JCTQ2N0E2
OEQ5Mjc1RUE5OTgwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJQcm94eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3QTY4RDYyNzVFQTk4QzAwOUIzMUM1
IC8qIFNoYXJlZFdvcmtlclByb3h5LmggKi87IH07Ci0JCTQ2N0E2OERBMjc1RUE5OUMwMDlCMzFD
NSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NjdBNjhEMjI3NUVBOThBMDA5QjMxQzUgLyogU2hhcmVkV29ya2Vy
TWFuYWdlci5oICovOyB9OwogCQk0NjgyRDIwMDFGNzk3ODMwMDBDODYzREIgLyogU3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2ODJEMUZGMUY3OTc4MjMwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2
ODM0NEUwMUVEREZBQUEwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MzQ0REUxRURERkE1RjAwQjc3OTVCIC8q
IERPTVJlY3RMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDY4M0RGNDAyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxT
Y29wZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2ODNERjNFMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNl
LmggKi87IH07CiAJCTQ2ODNERjQxMjc2N0U5MUEwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2Jh
bFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjgzREYzQjI3NjdERjI2MDA3RDAwQzggLyogU2hhZG93UmVhbG1HbG9iYWxTY29wZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODhFRTNDMjZE
RDI2MTAwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODhFRTNBMjZERDI2MEMwMDJBRjVDNCAvKiBDcm9z
c09yaWdpbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk0Njk0M0RDODI3NjNGODEyMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDY5NDNEQzUyNzYzRjgwRDAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0Njk0
M0RDOTI3NjNGODE3MDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5NDNEQzcyNzYz
RjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0Njk0M0RDQTI3NjNGODFD
MDA0QjYxMEUgLyogU2hhcmVkV29ya2VyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTQzREM0Mjc2M0Y4MEQwMDRCNjEwRSAvKiBTaGFy
ZWRXb3JrZXJQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTQ2OTg1RjIzMjdBNEE2QUQwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTg1RjIy
MjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjlDQ0NGRTI2OUQwMjFDMDA2RTAzMTQg
LyogQnJvYWRjYXN0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDY5Q0NDRkMyNjlEMDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjlE
NzdCODI3MDE2MjUxMDAxNDJGQTYgLyogTmF2aWdhdGlvblJlcXVlc3Rlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5RDc3QjYyNzAxNjI1MDAwMTQy
RkE2IC8qIE5hdmlnYXRpb25SZXF1ZXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk0NkE3OEIzNDI3OTlCRDcxMDAxMTU0RkUgLyogV29ya2Vy
T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUMxQjFEMjYyNkYxOEE0QjAwODgyREEyIC8qIFdvcmtlck9wdGlvbnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkFBQUEzRDI1RDM2MzIwMDBC
QUY0MkYgLyogQXVkaW9GaWxlUmVhZGVyQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QUFBQTNBMjVEMzYzMTQwMEJBRjQyRiAvKiBBdWRpb0Zp
bGVSZWFkZXJDb2NvYS5oICovOyB9OwogCQk0NkI2M0Y2QzFDNkU4RDE5MDAyRTkxNEIgLyogSlNF
dmVudFRhcmdldEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZCNjNGNkIxQzZFOENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI2
NTBERDIyOTYyNjI3MDBGRDhBQTQgLyogUGFnZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjY1MERCMjI5NjI2MjcwMEZEOEFBNCAv
KiBQYWdlSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0xMzY3LDYgKzEzNzIsNyBAQAogCQk0NkJEMDVDNjI1QkI2RTZDMDAyMjVG
MzAgLyogRXZlbnRMaXN0ZW5lck9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkQwNUMzMjVCQjZFNEUwMDIyNUYzMCAvKiBFdmVudExpc3Rl
bmVyT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQ2QzA5NjIxMjNENzhERDYwMDY1N0MwOSAvKiBIVFRQQ29va2llQWNjZXB0UG9saWN5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkMwOTYy
MDIzRDc4REQ2MDA2NTdDMDkgLyogSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QzM3NjYyMjA4NTE3N0Qw
MEM3MzgyOSAvKiBKU1JlbW90ZURPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDMzc2NjEyMDg1MTc2RDAwQzczODI5IC8qIEpTUmVtb3Rl
RE9NV2luZG93LmggKi87IH07CisJCTQ2QzQxNjlCMjc5QTA0QzcwMDI1MkMzQiAvKiBTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDYyNkI0NzUyNzlBMDNEMjAwQUVGMEIyIC8qIFNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDZDNjk2Q0IxRTcyMDVGNzAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5NkM5MUU3MjA1RTQwMDU5
NzkzNyAvKiBDUFVNb25pdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDZDNjk2Q0MxRTcyMDVGQzAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNjk2Q0Ex
RTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwICovOyB9OwogCQk0NkM4M0VGRTFBOUJC
RTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzgzRUZDMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmll
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05
MTgxLDkgKzkxODcsMTMgQEAKIAkJNDYwQ0JGMzMxRDRCQ0NGRTAwOTJFODhFIC8qIEpTRE9NV2lu
ZG93UHJvcGVydGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0RPTVdpbmRvd1Byb3BlcnRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjBDQkYzNDFENEJDQ0ZFMDA5MkU4OEUgLyogSlNET01XaW5kb3dQcm9wZXJ0aWVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NV2luZG93UHJvcGVydGllcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBEMTk0NDFGQ0UyMUREMDBDM0RCODUgLyogSlNT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjI2QjQ3NTI3OUEwM0QyMDBBRUYwQjIgLyogU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYyNzNDMjEyN0Ex
Q0JDNzAwNkExNUI5IC8qIEpTQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ3VzdG9tLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYyNzNDQUMyNjBFNTlERjAwNkZBQTkxIC8qIFNXU2NyaXB0
U3RvcmFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTV1NjcmlwdFN0b3Jh
Z2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYyNzNDQUUyNjBFNTlERjAwNkZB
QTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTV1NjcmlwdFN0b3JhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0NjI3RkY1NzI3OUI4MjQ1MDBBQTM5MTYgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFk
UHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjI3RkY1ODI3OUI4MjQ2
MDBBQTM5MTYgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDYyN0ZGNUEyNzlCODdBMjAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlcklk
ZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2Vy
SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjJFNEM0RDI2MTZB
ODAxMDAzQTJDNjcgLyogU2NyaXB0QnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNjcmlwdEJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjJF
NEM0RjI2MTZBODAxMDAzQTJDNjcgLyogU2NyaXB0QnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcxQyAvKiBQb3dlck9ic2VydmVyTWFj
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvd2VyT2JzZXJ2ZXJN
YWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTIzMCwxNCArOTI0MCwxMCBA
QAogCQk0NjczMDIwMTFDNEVGRTY2MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRD
b3VudEluY3JlbWVudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElnbm9y
ZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0Njc4MDJCMDI3NDcxMTdCMDBEQTlGQjYgLyogV2ViTG9ja01hbmFnZXJTbmFw
c2hvdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJMb2NrTWFuYWdlclNu
YXBzaG90Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NzgwMkIyMjc0NzExODUw
MERBOUZCNiAvKiBXZWJMb2NrSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJMb2NrSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk0NjdBNjhDRjI3NUVBOTg5MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyUHJveHkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NjdBNjhEMDI3NUVBOTg5MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFk
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlclRocmVhZC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2N0E2OEQxMjc1RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRX
b3JrZXJTY3JpcHRMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyU2Ny
aXB0TG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDY3QTY4RDIyNzVF
QTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hh
cmVkV29ya2VyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NjdBNjhE
MzI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDY3QTY4RDQyNzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDY3QTY4RDUyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExv
YWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDY3QTY4RDYyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJl
ZFdvcmtlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb3h5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODJEMUZGMUY3OTc4MjMwMEM4NjNEQiAvKiBTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dG9yZWRDcmVkZW50aWFsc1BvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjgzNDREQzFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTVJlY3RM
aXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzQ0REQxRURERkE1RjAw
Qjc3OTVCIC8qIERPTVJlY3RMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVJlY3RMaXN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkyNTAsNiArOTI1NiwxMiBAQAog
CQk0NjgzREYzRTI3NjdERjk4MDA3RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFz
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NoYWRvd1JlYWxtR2xvYmFs
U2NvcGVCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODhFRTNBMjZERDI2
MEMwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NPcmln
aW5Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OEI4QkRFMjVDQzg0OTMw
MEY2NzgyMiAvKiBKU0Jhc2VBdWRpb0NvbnRleHRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNCYXNlQXVkaW9Db250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDY5NDNEQzIyNzYzRjgwQzAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlclByb3ZpZGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb3ZpZGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQzQyNzYzRjgwRDAwNEI2MTBFIC8qIFNoYXJlZFdv
cmtlclByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb3ZpZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzREM1Mjc2M0Y4MEQwMDRCNjEwRSAvKiBT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNE
QzYyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzREM3Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5ODVGMjIy
N0E0QTY4NjAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktleS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDY5Q0NDRkEyNjlEMDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQnJvYWRjYXN0Q2hhbm5lbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2OUNDQ0ZDMjY5RDAyMDIwMDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFubmVs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEJyb2FkY2FzdENoYW5uZWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDY5Q0NDRkQyNjlEMDIwMzAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEJyb2FkY2FzdENoYW5uZWwuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtOTI4NCw2ICs5Mjk2LDcgQEAKIAkJNDZDMzc2NUYyMDg1MTc2QzAwQzczODI5IC8qIEpT
UmVtb3RlRE9NV2luZG93LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTUmVtb3RlRE9NV2luZG93LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZD
Mzc2NjEyMDg1MTc2RDAwQzczODI5IC8qIEpTUmVtb3RlRE9NV2luZG93LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUmVtb3RlRE9NV2luZG93Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2QzNBOEQzMjU0OEQ0QjcwMEM4QzUzQSAvKiBKU0F1ZGlvQnVmZmVy
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXVkaW9CdWZmZXJDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkM0MTY5RDI3OUEwNEQyMDAyNTJDM0IgLyog
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NkM2OTZDOTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDUFVNb25pdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzY5NkNBMUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25p
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENQVU1vbml0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkM4M0VGQjFBOUJCRTI5MDBBNzlB
NDEgLyogR2VvTm90aWZpZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR2VvTm90aWZpZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE1MTcs
NiArMjE1MzAsMTcgQEAKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwogCQl9OworCQk0NjI2QjQ3MzI3OUEwM0IxMDBBRUYwQjIgLyogY29udGV4dCAqLyA9IHsKKwkJ
CWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNDYyN0ZGNTcyNzlCODI0NTAw
QUEzOTE2IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcCAqLywKKwkJCQk0NjI3RkY1ODI3
OUI4MjQ2MDBBQTM5MTYgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCAqLywKKwkJCQk0NkM0
MTY5RDI3OUEwNEQyMDAyNTJDM0IgLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwICov
LAorCQkJCTQ2MjZCNDc1Mjc5QTAzRDIwMEFFRjBCMiAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlci5oICovLAorCQkJKTsKKwkJCXBhdGggPSBjb250ZXh0OworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKIAkJNDY0MjQwNDQyMEVBRjBCRDAwQjI5RkQyIC8qIGNvY29hICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTIxNTUxLDE2ICsyMTU3
NSwyMCBAQAogCQk0NjY5NENERTI3NTk0NDZEMDBFMzE1MEUgLyogc2hhcmVkICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0NjI2QjQ3MzI3OUEwM0IxMDBB
RUYwQjIgLyogY29udGV4dCAqLywKIAkJCQk0NjY5NENFMzI3NTk0NDhEMDBFMzE1MEUgLyogU2hh
cmVkV29ya2VyLmNwcCAqLywKIAkJCQk0NjY5NENFMjI3NTk0NDhEMDBFMzE1MEUgLyogU2hhcmVk
V29ya2VyLmggKi8sCiAJCQkJNDY2OTRDRTUyNzU5NDQ4RTAwRTMxNTBFIC8qIFNoYXJlZFdvcmtl
ci5pZGwgKi8sCiAJCQkJNDY2OTRDRTQyNzU5NDQ4RTAwRTMxNTBFIC8qIFNoYXJlZFdvcmtlckds
b2JhbFNjb3BlLmNwcCAqLywKIAkJCQk0NjY5NENFMTI3NTk0NDhDMDBFMzE1MEUgLyogU2hhcmVk
V29ya2VyR2xvYmFsU2NvcGUuaCAqLywKIAkJCQk0NjY5NENFMDI3NTk0NDhDMDBFMzE1MEUgLyog
U2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaWRsICovLAotCQkJCTQ2N0E2OEQzMjc1RUE5OEIwMDlC
MzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcCAqLywKLQkJCQk0NjdBNjhEMjI3NUVBOThB
MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oICovLAotCQkJCTQ2N0E2OENGMjc1RUE5
ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJQcm94eS5jcHAgKi8sCi0JCQkJNDY3QTY4RDYyNzVF
QTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclByb3h5LmggKi8sCisJCQkJNDYyN0ZGNUEyNzlC
ODdBMjAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlcklkZW50aWZpZXIuaCAqLywKKwkJCQk0Njk4NUYy
MjI3QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggKi8sCisJCQkJNDY5NDNEQzYy
NzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwICovLAor
CQkJCTQ2OTQzREM1Mjc2M0Y4MEQwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uLmggKi8sCisJCQkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIuaCAqLywKKwkJCQk0Njk0M0RDMjI3NjNGODBDMDA0QjYxMEUgLyogU2hh
cmVkV29ya2VyUHJvdmlkZXIuY3BwICovLAorCQkJCTQ2OTQzREM0Mjc2M0Y4MEQwMDRCNjEwRSAv
KiBTaGFyZWRXb3JrZXJQcm92aWRlci5oICovLAogCQkJCTQ2N0E2OEQxMjc1RUE5OEEwMDlCMzFD
NSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwICovLAogCQkJCTQ2N0E2OEQ1Mjc1RUE5
OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCAqLywKIAkJCQk0NjdBNjhE
MDI3NUVBOTg5MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmNwcCAqLywKQEAgLTMzODY2
LDYgKzMzODk0LDcgQEAKIAkJCQkyRDQ4MUYwMjE0NkI1QzU1MDBBQTc4MzQgLyogQ3Jvc3NmYWRl
R2VuZXJhdGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQzQxNjEyMEY2NTYyRkQwMDky
RDJGQiAvKiBDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2
NzJBQTk4MjZCMDk0MzMwMEU2RUMzOCAvKiBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LmggaW4g
SGVhZGVycyAqLywKKwkJCQk0NkE3OEIzNDI3OTlCRDcxMDAxMTU0RkUgLyogV29ya2VyT3B0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY4OEVFM0MyNkREMjYxMDAwMkFGNUM0IC8qIENyb3Nz
T3JpZ2luTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY3MkFBOTkyNkIwOTQzRjAwRTZFQzM4
IC8qIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUFCRTY3
QjFEMDU4MERCMDA2RDg2MkQgLyogQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmggaW4gSGVh
ZGVycyAqLywKQEAgLTMzOTA0LDYgKzMzOTMzLDcgQEAKIAkJCQk1N0ZFREQzRjFEQjZENTkyMDBF
Qjk2RjUgLyogQ3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1NzA2QTY5NjFEREU1Qzk1MDBBMDNCMTQgLyogQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBh
cmFtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcyMUE5OEIxRUNFNTcwNDAwODEyOTVBIC8qIENy
eXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDYyN0ZGNTky
NzlCODI0OTAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMUJEMzMxQTE4MkQ4REREMDBDMDVEOUYgLyogQ3J5cHRvQWxnb3JpdGhtUlNBU1NB
X1BLQ1MxX3YxXzUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMjVGODJDMTgyMkNGRUMwMEQ4NENE
OSAvKiBDcnlwdG9BbGdvcml0aG1TSEExLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTlBQzNFRjE4
MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmggaW4gSGVhZGVycyAqLywK
QEAgLTM0ODkwLDYgKzM0OTIwLDcgQEAKIAkJCQlDRDNFMjFERDIxODM0NDRBMDBFNjZGNTUgLyog
SW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDRFRUExMDAyNzQ3
NTdGMTAwNTk0QTgzIC8qIEltYWdlQ29udHJvbHNNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
Nzk3OTFBMEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTQ2QzQxNjlCMjc5QTA0QzcwMDI1MkMzQiAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBMDg4RjUyNjRFMUMwODAwM0UyQTZDIC8qIEltYWdlRGF0
YVNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDE5RkVBODFGNTczOTcyMDAwQzQyRkIg
LyogSW1hZ2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDE5RkVBRTFGNTc0QjZEMDAw
QzQyRkIgLyogSW1hZ2VEZWNvZGVyQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNTUxOCw2
ICszNTU0OSw3IEBACiAJCQkJMUE3NTBEOEUwQTkwRTUyMTAwMEZGMjE1IC8qIEpTTm9kZUl0ZXJh
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Q5QzJDMzBDMTdCNjlFMDA1QzkwQTIgLyogSlNO
b2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyMEIxOEQxOEU5RDIzNzAwNUE4MDgzIC8q
IEpTTm9kZUxpc3RDdXN0b20uaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2OTQzREM5Mjc2M0Y4MTcw
MDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkzMzUwM0NBNDEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxMEUyRjMzMjc2QkY2ODUwMDgwOTMzMyAvKiBKU05vdGlmaWNhdGlvbkRp
cmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwRTJGMkIyNzZCQ0ZFODAwODA5MzMzIC8q
IEpTTm90aWZpY2F0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzY2NjksNiArMzY3MDEs
NyBAQAogCQkJCTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA0MyAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0
aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTI5QzlBOTFGNTlDNTZCMDA5RDc0MDMgLyogUmVh
ZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2RTZG
RTgxQkJEMTJERjAwMEEzRjY0IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBp
biBIZWFkZXJzICovLAorCQkJCTQ2OTQzREM4Mjc2M0Y4MTIwMDRCNjEwRSAvKiBTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTI5QzlBRjFGNTlDRjVC
MDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1TaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTI5
QzlBQjFGNTlDNTczMDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1Tb3VyY2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZEMzE2MDNDMTJCMDI2NzYwMEMxQTM1OSAvKiBSZWFsdGltZUFuYWx5c2VyLmgg
aW4gSGVhZGVycyAqLywKQEAgLTM3MDQ2LDYgKzM3MDc5LDcgQEAKIAkJCQkwRjYwNUFFRDE1Rjk0
ODQ4MDA0REYwQzAgLyogU2Nyb2xsaW5nQ29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBRjYyRUU4MTREQTIyQTcwMDQxNTU2QyAvKiBTY3JvbGxpbmdDb29yZGluYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTM5MUE5OTExNjI3NDZDQjAwMjk3MzMwIC8qIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yTWFjLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjI3RkY1QjI3OUI4N0FGMDBBQTM5MTYg
LyogU2hhcmVkV29ya2VySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzEyREJBNDky
MUY4QUQ4MzAwOEYzNkIyIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9yVHlwZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVCNDY2NTYzMjVEMTRDMEEwMDBDRkUxNCAvKiBTY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5OTA1OUEyNkY2QkU4NTAwNTRGQkUwIC8q
IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNzE3MSw4
ICszNzIwNSw2IEBACiAJCQkJQ0QzNkMxNkIyNjBBNjVDQzAwQzhDNTI5IC8qIFNoYXJlZFJvdXRp
bmdBcmJpdHJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzRERkFEMDFGN0RBRTVEMDBDMjcy
NUIgLyogU2hhcmVkU3RyaW5nSGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFQTMwOTlF
Qjc4QzAwNTZFNTgxIC8qIFNoYXJlZFRpbWVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0NjdBNjhE
QTI3NUVBOTlDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJNDY3QTY4RDkyNzVFQTk5ODAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclByb3h5LmggaW4g
SGVhZGVycyAqLywKIAkJCQk0NjdBNjhEODI3NUVBOTk1MDA5QjMxQzUgLyogU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjdBNjhENzI3NUVBOTkxMDA5QjMx
QzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzREQjAyNjI3
MzM5RkUwMDA3QjBBRDEgLyogU2hvdWxkTG9jYWxpemVBeGlzTmFtZXMuaCBpbiBIZWFkZXJzICov
LApAQCAtMzc0MDYsNiArMzc0MzgsNyBAQAogCQkJCUIyMjI3OUMwMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdFbGxpcHNlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5QzgwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR0ZFQmxlbmRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIy
NzlDQjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQ2OTg1RjIzMjdBNEE2QUQwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXku
aCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUNFMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNv
bXBvbmVudFRyYW5zZmVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5RDEwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR0ZFQ29tcG9zaXRlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTkyMTMyNzUxMUMwRTZCQjAwNDU2MjM4IC8qIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKQEAgLTM4MDUzLDYgKzM4MDg2LDcgQEAKIAkJCQk4M0FDRDAxMzI1
MjI5RTEwMDAwRDEyNEUgLyogV29ya2xldE9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
NEE2QTNBMjUyNjg0NEEwMDc0N0Y1RCAvKiBXb3JrbGV0UGFyYW1ldGVycy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODMzQkQ4MTcyNTI0RDRGMjAwNkU3MkIzIC8qIFdvcmtsZXRQZW5kaW5nVGFza3Mu
aCBpbiBIZWFkZXJzICovLAorCQkJCTQ2OTQzRENBMjc2M0Y4MUMwMDRCNjEwRSAvKiBTaGFyZWRX
b3JrZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMjQwOTlFNjQ5MjAwNTZF
NTgxIC8qIFdyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDE2RTZGRTgxQkJEMTJERjAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVp
bHRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCQUYzQjI0MTJDMUEzOTgwMDAxNEJGMSAvKiBX
cml0aW5nRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcu
aAppbmRleCBkYzBmNTA5OGI4N2YuLmZhN2QyMzAyZWMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xv
Z2dpbmcuaApAQCAtMTA5LDYgKzEwOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBNKFNl
bGVjdGlvbikgXAogICAgIE0oU2VydmljZXMpIFwKICAgICBNKFNlcnZpY2VXb3JrZXIpIFwKKyAg
ICBNKFNoYXJlZFdvcmtlcikgXAogICAgIE0oU3BlbGxpbmdBbmRHcmFtbWFyKSBcCiAgICAgTShT
UUxEYXRhYmFzZSkgXAogICAgIE0oU3RvcmFnZSkgXApAQCAtMTI2LDYgKzEyNyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBNKFdlYkdMKSBcCiAgICAgTShXZWJSVEMpIFwKICAgICBNKFdl
YlJUQ1N0YXRzKSBcCisgICAgTShXb3JrZXIpIFwKICAgICBNKFhSKSBcCiAgICAgTShXaGVlbEV2
ZW50VGVzdE1vbml0b3IpIFwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9wdGlvbnMuaApp
bmRleCBmYmRhZWFiZThhYjcuLjc3MzM5NWI3OWExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJPcHRpb25zLmgKQEAgLTM0LDYgKzM0LDM2IEBAIHN0cnVjdCBXb3JrZXJPcHRpb25zIHsK
ICAgICBXb3JrZXJUeXBlIHR5cGUgeyBXb3JrZXJUeXBlOjpDbGFzc2ljIH07CiAgICAgRmV0Y2hS
ZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVudGlhbHMgeyBGZXRjaFJlcXVlc3RDcmVkZW50aWFsczo6
U2FtZU9yaWdpbiB9OwogICAgIFN0cmluZyBuYW1lOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdvcmtlck9wdGlvbnM+IGRlY29kZShEZWNvZGVy
Jik7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBXb3JrZXJPcHRpb25zOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHR5cGUgPDwg
Y3JlZGVudGlhbHMgPDwgbmFtZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6
b3B0aW9uYWw8V29ya2VyT3B0aW9ucz4gV29ya2VyT3B0aW9uczo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxXb3JrZXJUeXBlPiB3b3JrZXJUeXBlOworICAg
IGRlY29kZXIgPj4gd29ya2VyVHlwZTsKKyAgICBpZiAoIXdvcmtlclR5cGUpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPEZldGNoUmVxdWVzdENyZWRl
bnRpYWxzPiBjcmVkZW50aWFsczsKKyAgICBkZWNvZGVyID4+IGNyZWRlbnRpYWxzOworICAgIGlm
ICghY3JlZGVudGlhbHMpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gbmFtZTsKKyAgICBkZWNvZGVyID4+IG5hbWU7CisgICAgaWYgKCFu
YW1lKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyAqd29y
a2VyVHlwZSwgKmNyZWRlbnRpYWxzLCBXVEZNb3ZlKCpuYW1lKSB9IH07Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAppbmRl
eCA0MDY3MTczYTg5YTUuLmI3MTg1YTVlZGE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyVGhyZWFkLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIldvcmtlclRocmVhZC5o
IgogCiAjaW5jbHVkZSAiSURCQ29ubmVjdGlvblByb3h5LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgogI2luY2x1ZGUgIlNvY2tldFByb3ZpZGVyLmgiCkBAIC0xNjMsNiArMTY0LDExIEBAIHZv
aWQgV29ya2VyVGhyZWFkOjpldmFsdWF0ZVNjcmlwdElmTmVjZXNzYXJ5KFN0cmluZyYgZXhjZXB0
aW9uTWVzc2FnZSkKICAgICBpZiAoc291cmNlUHJvdmlkZXIpCiAgICAgICAgIGdsb2JhbFNjb3Bl
KCktPnNldE1haW5TY3JpcHRTb3VyY2VQcm92aWRlcigqc291cmNlUHJvdmlkZXIpOwogCisgICAg
aWYgKGV4Y2VwdGlvbk1lc3NhZ2UuaXNFbXB0eSgpKQorICAgICAgICBSRUxFQVNFX0xPRyhXb3Jr
ZXIsICJXb3JrZXJUaHJlYWQ6OmV2YWx1YXRlU2NyaXB0SWZOZWNlc3NhcnkoKSBTVUNDRVNTIik7
CisgICAgZWxzZQorICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXb3JrZXIsICJXb3JrZXJUaHJl
YWQ6OmV2YWx1YXRlU2NyaXB0SWZOZWNlc3NhcnkoKSBGQUlMVVJFICgle3ByaXZhdGV9cykiLCBl
eGNlcHRpb25NZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworCiAgICAgLy8gRnJlZSB0aGUgc3RhcnR1
cCBkYXRhIHRvIGNhdXNlIGl0cyBtZW1iZXIgdmFyaWFibGUgZGVyZWYncyBoYXBwZW4gb24gdGhl
IHdvcmtlcidzIHRocmVhZCAoc2luY2UKICAgICAvLyBhbGwgcmVmL2RlcmVmcyBvZiB0aGVzZSBv
YmplY3RzIGFyZSBoYXBwZW5pbmcgb24gdGhlIHRocmVhZCBhdCB0aGlzIHBvaW50KS4gTm90ZSB0
aGF0CiAgICAgLy8gV29ya2VyVGhyZWFkOjp+V29ya2VyVGhyZWFkIGhhcHBlbnMgb24gYSBkaWZm
ZXJlbnQgdGhyZWFkIHdoZXJlIGl0IHdhcyBjcmVhdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAKaW5kZXggNmE1OWIyZWZlOWExLi45MjZkMzU3
MDc4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yNiwxMyArMjYsMTcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFy
ZWRXb3JrZXIuaCIKIAorI2luY2x1ZGUgIkNsaWVudE9yaWdpbi5oIgogI2luY2x1ZGUgIkNvbnRl
bnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZXNzYWdlQ2hhbm5l
bC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyTWFu
YWdlci5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb3h5LmgiCisjaW5jbHVkZSAiU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb3ZpZGVy
LmgiCiAjaW5jbHVkZSAiV29ya2VyT3B0aW9ucy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0lkZW50aWZpZXJzRmFjdG9yeS5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+
CkBAIC00MSw4ICs0NSwzMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChTaGFyZWRXb3JrZXIpOwogCi1FeGNlcHRpb25PcjxSZWY8U2hhcmVkV29y
a2VyPj4gU2hhcmVkV29ya2VyOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBKU0M6OlJ1bnRp
bWVGbGFncyBydW50aW1lRmxhZ3MsIFN0cmluZyYmIHNjcmlwdFVSTFN0cmluZywgc3RkOjpvcHRp
b25hbDxzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4mJiBtYXliZU9wdGlvbnMp
CisjZGVmaW5lIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9H
KFNoYXJlZFdvcmtlciwgIiVwIC0gW2lkZW50aWZpZXI9JXtwdWJsaWN9c10gU2hhcmVkV29ya2Vy
OjoiIGZtdCwgdGhpcywgbV9pZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgIyNf
X1ZBX0FSR1NfXykKKyNkZWZpbmUgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPR19FUlJPUihmbXQs
IC4uLikgUkVMRUFTRV9MT0dfRVJST1IoU2hhcmVkV29ya2VyLCAiJXAgLSBbaWRlbnRpZmllcj0l
e3B1YmxpY31zXSBTaGFyZWRXb3JrZXI6OiIgZm10LCB0aGlzLCBtX2lkZW50aWZpZXIudG9TdHJp
bmcoKS51dGY4KCkuZGF0YSgpLCAjI19fVkFfQVJHU19fKQorCitzdGF0aWMgSGFzaE1hcDxTaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBTaGFyZWRXb3JrZXIqPiYgYWxsU2hhcmVkV29ya2Vy
cygpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8SGFzaE1hcDxTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBTaGFyZWRXb3JrZXIq
Pj4gYWxsU2hhcmVkV29ya2VyczsKKyAgICByZXR1cm4gYWxsU2hhcmVkV29ya2VyczsKK30KKwor
U2hhcmVkV29ya2VyKiBTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVyKFNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gYWxsU2hhcmVkV29ya2Vy
cygpLmdldChpZGVudGlmaWVyKTsKK30KKworc3RhdGljIGlubGluZSBTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uKiBtYWluVGhyZWFkQ29ubmVjdGlvbigpCiB7CisgICAgcmV0dXJuIFNoYXJl
ZFdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5zaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7Cit9
CisKK0V4Y2VwdGlvbk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBTaGFyZWRXb3JrZXI6OmNyZWF0ZShE
b2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZyYmIHNjcmlwdFVSTFN0cmluZywgc3RkOjpvcHRpb25h
bDxzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4mJiBtYXliZU9wdGlvbnMpCit7
CisgICAgaWYgKCFtYWluVGhyZWFkQ29ubmVjdGlvbigpKQorICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJTaGFyZWQgd29ya2VycyBhcmUgbm90IHN1cHBvcnRl
ZCIgfTsKKwogICAgIGlmICghZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3NTaGFy
ZWRXb3JrZXJzKGRvY3VtZW50LnRvcE9yaWdpbigpKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFNlY3VyaXR5RXJyb3IsICJUaGlzIGlmcmFtZSBkb2Vzbid0IGhhdmUgc3RvcmFnZSBhY2Nl
c3MiX3MgfTsKIApAQCAtNjcsMjYgKzk0LDMwIEBAIEV4Y2VwdGlvbk9yPFJlZjxTaGFyZWRXb3Jr
ZXI+PiBTaGFyZWRXb3JrZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIEpTQzo6UnVuCiAg
ICAgYXV0byBjaGFubmVsID0gTWVzc2FnZUNoYW5uZWw6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAg
YXV0byB0cmFuc2ZlcnJlZFBvcnQgPSBjaGFubmVsLT5wb3J0MigpLmRpc2VudGFuZ2xlKCk7CiAK
LSAgICBhdXRvIHNoYXJlZFdvcmtlciA9IGFkb3B0UmVmKCpuZXcgU2hhcmVkV29ya2VyKGRvY3Vt
ZW50LCBjaGFubmVsLT5wb3J0MSgpLCBydW50aW1lRmxhZ3MpKTsKKyAgICBhdXRvIHNoYXJlZFdv
cmtlciA9IGFkb3B0UmVmKCpuZXcgU2hhcmVkV29ya2VyKGRvY3VtZW50LCBjaGFubmVsLT5wb3J0
MSgpKSk7CiAgICAgc2hhcmVkV29ya2VyLT5zdXNwZW5kSWZOZWVkZWQoKTsKIAotICAgIFNoYXJl
ZFdvcmtlck1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3QodXJsLCBzaGFyZWRXb3JrZXIuZ2V0
KCksIFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwgV1RGTW92ZShvcHRpb25zKSk7CisgICAgQ2xp
ZW50T3JpZ2luIGNsaWVudE9yaWdpbiB7IGRvY3VtZW50LnRvcERvY3VtZW50KCkuc2VjdXJpdHlP
cmlnaW4oKS5kYXRhKCksIGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpIH07CisgICAg
bWFpblRocmVhZENvbm5lY3Rpb24oKS0+cmVxdWVzdFNoYXJlZFdvcmtlcihjbGllbnRPcmlnaW4s
IHNoYXJlZFdvcmtlci0+aWRlbnRpZmllcigpLCB1cmwsIFdURk1vdmUodHJhbnNmZXJyZWRQb3J0
KSwgb3B0aW9ucyk7CiAgICAgcmV0dXJuIHNoYXJlZFdvcmtlcjsKIH0KIAotU2hhcmVkV29ya2Vy
OjpTaGFyZWRXb3JrZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8TWVzc2FnZVBvcnQ+JiYgcG9y
dCwgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKQorU2hhcmVkV29ya2VyOjpTaGFyZWRX
b3JrZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8TWVzc2FnZVBvcnQ+JiYgcG9ydCkKICAgICA6
IEFjdGl2ZURPTU9iamVjdCgmZG9jdW1lbnQpCisgICAgLCBtX2lkZW50aWZpZXIoU2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKICAgICAsIG1fcG9ydChXVEZNb3ZlKHBv
cnQpKQogICAgICwgbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yKCJTaGFyZWRXb3JrZXI6IiArIElu
c3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCkpCi0gICAgLCBt
X3J1bnRpbWVGbGFncyhydW50aW1lRmxhZ3MpCi0gICAgLCBtX2NyZWF0aW9uVGltZShNb25vdG9u
aWNUaW1lOjpub3coKSkKLSAgICAsIG1fcHJveHkoU2hhcmVkV29ya2VyUHJveHk6OmNyZWF0ZSgq
dGhpcykpCiB7CisgICAgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRygiU2hhcmVkV29ya2VyOiIp
OworICAgIGFsbFNoYXJlZFdvcmtlcnMoKS5hZGQobV9pZGVudGlmaWVyLCB0aGlzKTsKIH0KIAog
U2hhcmVkV29ya2VyOjp+U2hhcmVkV29ya2VyKCkKIHsKLSAgICBtX3Byb3h5Lndvcmtlck9iamVj
dERlc3Ryb3llZCgpOworICAgIEFTU0VSVChhbGxTaGFyZWRXb3JrZXJzKCkuZ2V0KG1faWRlbnRp
ZmllcikgPT0gdGhpcyk7CisgICAgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRygiflNoYXJlZFdv
cmtlcjoiKTsKKyAgICBhbGxTaGFyZWRXb3JrZXJzKCkucmVtb3ZlKG1faWRlbnRpZmllcik7Cisg
ICAgQVNTRVJUKCFtX2lzQWN0aXZlKTsKIH0KIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogU2hh
cmVkV29ya2VyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKQEAgLTEwNCwxOSArMTM1
LDI2IEBAIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIFNoYXJlZFdvcmtlcjo6ZXZlbnRUYXJnZXRJbnRl
cmZhY2UoKSBjb25zdAogICAgIHJldHVybiBTaGFyZWRXb3JrZXJFdmVudFRhcmdldEludGVyZmFj
ZVR5cGU7CiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyOjpzdG9wKCkKK3ZvaWQgU2hhcmVkV29ya2Vy
OjpkaWRGYWlsTG9hZGluZygpCiB7Ci0gICAgdGVybWluYXRlKCk7CisgICAgU0hBUkVEX1dPUktF
Ul9SRUxFQVNFX0xPR19FUlJPUigifmRpZEZhaWxMb2FkaW5nOiIpOworICAgIHF1ZXVlVGFza1Rv
RGlzcGF0Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZl
bnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7CisgICAgbV9pc0FjdGl2ZSA9IGZhbHNlOwogfQogCiBi
b29sIFNoYXJlZFdvcmtlcjo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fcHJveHkuaGFzUGVuZGluZ0FjdGl2aXR5KCkgfHwgbV9pc0xvYWRpbmc7Cisg
ICAgcmV0dXJuIG1faXNBY3RpdmU7CiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyOjp0ZXJtaW5hdGUo
KQordm9pZCBTaGFyZWRXb3JrZXI6OnN0b3AoKQogewotICAgIG1fcHJveHkudGVybWluYXRlV29y
a2VyR2xvYmFsU2NvcGUoKTsKKyAgICBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HKCJzdG9wOiIp
OworICAgIG1faXNBY3RpdmUgPSBmYWxzZTsKKyAgICBtYWluVGhyZWFkQ29ubmVjdGlvbigpLT5z
aGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShtX2lkZW50aWZpZXIpOwogfQogCisjdW5kZWYg
U0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRworI3VuZGVmIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9M
T0dfRVJST1IKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaAppbmRleCA1MzI2ZWU1NDJjODguLjg3Y2M3NWVmYmU4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcs
MzkgKzI3LDM1IEBACiAKICNpbmNsdWRlICJBYnN0cmFjdFdvcmtlci5oIgogI2luY2x1ZGUgIkFj
dGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1bnRpbWVGbGFncy5o
PgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3
dGYvTW9ub3RvbmljVGltZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lc3Nh
Z2VQb3J0OwotY2xhc3MgU2hhcmVkV29ya2VyUHJveHk7CitjbGFzcyBSZXNvdXJjZUVycm9yOwog
CiBzdHJ1Y3QgV29ya2VyT3B0aW9uczsKIAogY2xhc3MgU2hhcmVkV29ya2VyIGZpbmFsIDogcHVi
bGljIEFic3RyYWN0V29ya2VyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKFNoYXJlZFdvcmtlcik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEV4Y2Vw
dGlvbk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBjcmVhdGUoRG9jdW1lbnQmLCBKU0M6OlJ1bnRpbWVG
bGFncywgU3RyaW5nJiYgc2NyaXB0VVJMLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxTdHJp
bmcsIFdvcmtlck9wdGlvbnM+PiYmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFNoYXJl
ZFdvcmtlcj4+IGNyZWF0ZShEb2N1bWVudCYsIFN0cmluZyYmIHNjcmlwdFVSTCwgc3RkOjpvcHRp
b25hbDxzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4mJik7CiAgICAgflNoYXJl
ZFdvcmtlcigpOwogCisgICAgc3RhdGljIFNoYXJlZFdvcmtlciogZnJvbUlkZW50aWZpZXIoU2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgTWVz
c2FnZVBvcnQmIHBvcnQoKSBjb25zdCB7IHJldHVybiBtX3BvcnQuZ2V0KCk7IH0KLSAgICBKU0M6
OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MoKSB7IHJldHVybiBtX3J1bnRpbWVGbGFnczsgfQog
CiAgICAgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyRm9ySW5zcGVjdG9yKCkgY29uc3QgeyByZXR1
cm4gbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yOyB9Ci0gICAgTW9ub3RvbmljVGltZSBjcmVhdGlv
blRpbWUoKSBjb25zdCB7IHJldHVybiBtX2NyZWF0aW9uVGltZTsgfQogCi0gICAgU2hhcmVkV29y
a2VyUHJveHkmIHByb3h5KCkgeyByZXR1cm4gbV9wcm94eTsgfQotCi0gICAgdm9pZCBzZXRJc0xv
YWRpbmcoYm9vbCBpc0xvYWRpbmcpIHsgbV9pc0xvYWRpbmcgPSBpc0xvYWRpbmc7IH0KKyAgICB2
b2lkIGRpZEZhaWxMb2FkaW5nKCk7CiAKICAgICAvLyBFdmVudFRhcmdldC4KICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWw7CiAK
IHByaXZhdGU6Ci0gICAgU2hhcmVkV29ya2VyKERvY3VtZW50JiwgUmVmPE1lc3NhZ2VQb3J0PiYm
LCBKU0M6OlJ1bnRpbWVGbGFncyk7Ci0KLSAgICB2b2lkIHRlcm1pbmF0ZSgpOworICAgIFNoYXJl
ZFdvcmtlcihEb2N1bWVudCYsIFJlZjxNZXNzYWdlUG9ydD4mJik7CiAKICAgICAvLyBFdmVudFRh
cmdldC4KICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNv
bnN0IGZpbmFsOwpAQCAtNzAsMTIgKzY2LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCB2aXJ0dWFs
SGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAKIAorICAgIFNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFJlZjxNZXNzYWdlUG9ydD4gbV9wb3J0
OwogICAgIFN0cmluZyBtX2lkZW50aWZpZXJGb3JJbnNwZWN0b3I7Ci0gICAgSlNDOjpSdW50aW1l
RmxhZ3MgbV9ydW50aW1lRmxhZ3M7Ci0gICAgTW9ub3RvbmljVGltZSBtX2NyZWF0aW9uVGltZTsK
LSAgICBTaGFyZWRXb3JrZXJQcm94eSYgbV9wcm94eTsgLy8gVGhlIHByb3h5IG91dGxpdmVzIHRo
ZSB3b3JrZXIgdG8gcGVyZm9ybSB0aHJlYWQgc2h1dGRvd24uCi0gICAgYm9vbCBtX2lzTG9hZGlu
ZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzQWN0aXZlIHsgdHJ1ZSB9OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlci5pZGwKaW5kZXggYjE3MWM5ZWRmODFiLi40Yzc0MTU0ZDgyMDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmlkbApAQCAtMjgsNyArMjgs
NyBAQAogICAgIEV4cG9zZWQ9V2luZG93CiBdCiBpbnRlcmZhY2UgU2hhcmVkV29ya2VyIDogRXZl
bnRUYXJnZXQgewotICBbQ2FsbFdpdGg9RG9jdW1lbnQmUnVudGltZUZsYWdzXSBjb25zdHJ1Y3Rv
cihVU1ZTdHJpbmcgc2NyaXB0VVJMLCBvcHRpb25hbCAoRE9NU3RyaW5nIG9yIFdvcmtlck9wdGlv
bnMpIG9wdGlvbnMpOworICBbQ2FsbFdpdGg9RG9jdW1lbnRdIGNvbnN0cnVjdG9yKFVTVlN0cmlu
ZyBzY3JpcHRVUkwsIG9wdGlvbmFsIChET01TdHJpbmcgb3IgV29ya2VyT3B0aW9ucykgb3B0aW9u
cyk7CiAKICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lc3NhZ2VQb3J0IHBvcnQ7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFsU2Nv
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFs
U2NvcGUuY3BwCmluZGV4IDQxMjFlYjU4YzIwNS4uM2M1NWE2ODdiZjg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFsU2Nv
cGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI2LDYgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hh
cmVkV29ya2VyR2xvYmFsU2NvcGUuaCIKIAorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNs
dWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlICJXb3JrZXJU
aHJlYWQuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCkBAIC0zMywxNyAr
MzksNDQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUpOwogCisjZGVmaW5lIFNDT1BFX1JFTEVBU0VfTE9H
KGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFtzaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTo6IiBmbXQsIHRo
aXMsIHRoaXMtPnRocmVhZCgpLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19f
KQorCiBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTo6U2hhcmVkV29ya2VyR2xvYmFsU2NvcGUoY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbXMsIFJlZjxTZWN1
cml0eU9yaWdpbj4mJiBvcmlnaW4sIFdvcmtlclRocmVhZCYgdGhyZWFkLCBSZWY8U2VjdXJpdHlP
cmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVj
dGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIpCiAgICAgOiBXb3JrZXJH
bG9iYWxTY29wZShXb3JrZXJUaHJlYWRUeXBlOjpTaGFyZWRXb3JrZXIsIHBhcmFtcywgV1RGTW92
ZShvcmlnaW4pLCB0aHJlYWQsIFdURk1vdmUodG9wT3JpZ2luKSwgY29ubmVjdGlvblByb3h5LCBz
b2NrZXRQcm92aWRlcikKICAgICAsIG1fbmFtZShuYW1lKQogeworICAgIFNDT1BFX1JFTEVBU0Vf
TE9HKCJTaGFyZWRXb3JrZXJHbG9iYWxTY29wZToiKTsKICAgICByZWxheEFkb3B0aW9uUmVxdWly
ZW1lbnQoKTsKICAgICBhcHBseUNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyhw
YXJhbXMuY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzKTsKIH0KIAorU2hhcmVk
V29ya2VyVGhyZWFkJiBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTo6dGhyZWFkKCkKK3sKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8U2hhcmVkV29ya2VyVGhyZWFkJj4oV29ya2VyR2xvYmFsU2NvcGU6
OnRocmVhZCgpKTsKK30KKwogdm9pZCBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTo6Y2xvc2UoKQog
eworICAgIFNDT1BFX1JFTEVBU0VfTE9HKCJjbG9zZToiKTsKICAgICB0aHJlYWQoKS5zdG9wKG51
bGxwdHIpOwogfQogCisvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93
b3JrZXJzLmh0bWwjZG9tLXNoYXJlZHdvcmtlciBzdGVwIDExLjUKK3ZvaWQgU2hhcmVkV29ya2Vy
R2xvYmFsU2NvcGU6OnBvc3RDb25uZWN0RXZlbnQoVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHRy
YW5zZmVycmVkUG9ydCwgU3RyaW5nJiYgc291cmNlT3JpZ2luKQoreworICAgIFNDT1BFX1JFTEVB
U0VfTE9HKCJwb3N0Q29ubmVjdEV2ZW50OiIpOworICAgIGF1dG8gc2VyaWFsaXplZFNjcmlwdFZh
bHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoIiIpOworICAgIEFTU0VSVChzZXJp
YWxpemVkU2NyaXB0VmFsdWUpOworICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5n
bGVQb3J0cygqdGhpcywgeyBXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCkgfSk7CisgICAgQVNTRVJU
KHBvcnRzLnNpemUoKSA9PSAxKTsKKyAgICBhdXRvIHBvcnQgPSBwb3J0c1swXTsKKyAgICBBU1NF
UlQocG9ydCk7CisgICAgYXV0byBldmVudCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUo
cG9ydHMpLCBzZXJpYWxpemVkU2NyaXB0VmFsdWUucmVsZWFzZU5vbk51bGwoKSwgc291cmNlT3Jp
Z2luLCB7IH0sIHBvcnQpOworICAgIGV2ZW50LT5pbml0RXZlbnQoZXZlbnROYW1lcygpLmNvbm5l
Y3RFdmVudCwgZmFsc2UsIGZhbHNlKTsKKworICAgIGRpc3BhdGNoRXZlbnQoV1RGTW92ZShldmVu
dCkpOworfQorCisjdW5kZWYgU0NPUEVfUkVMRUFTRV9MT0cKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlckdsb2JhbFNjb3BlLmgKaW5kZXggZjM3NzliODRkMTUwLi4xNWRkYzUzOGRiNmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2JhbFNj
b3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xv
YmFsU2NvcGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNSwxMSArMjUsMTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJN
ZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgi
CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIFNoYXJlZFdvcmtlclRocmVhZDsKIHN0cnVjdCBXb3JrZXJQYXJhbWV0ZXJzOwogCiBjbGFz
cyBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSBmaW5hbCA6IHB1YmxpYyBXb3JrZXJHbG9iYWxTY29w
ZSB7CkBAIC0zOSw3ICs0MSwxMSBAQCBwdWJsaWM6CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBUeXBlOjpTaGFyZWRXb3JrZXI7IH0KICAgICBjb25zdCBTdHJpbmcmIG5h
bWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICBTaGFyZWRXb3JrZXJUaHJlYWQmIHRo
cmVhZCgpOworCisgICAgdm9pZCBwb3N0Q29ubmVjdEV2ZW50KFRyYW5zZmVycmVkTWVzc2FnZVBv
cnQmJiwgU3RyaW5nJiYgc291cmNlT3JpZ2luKTsKICAgICB2b2lkIGNsb3NlKCk7CisKIHByaXZh
dGU6CiAgICAgU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBXb3JrZXJQYXJhbWV0ZXJzJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmLCBXb3JrZXJUaHJlYWQm
LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rp
b25Qcm94eSosIFNvY2tldFByb3ZpZGVyKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg3YTk3MjEwNDg3OQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaApA
QCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3
dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gU2hh
cmVkV29ya2VySWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgU2hhcmVkV29ya2VySWRlbnRpZmll
ciA9IE9iamVjdElkZW50aWZpZXI8U2hhcmVkV29ya2VySWRlbnRpZmllclR5cGU+OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1No
YXJlZFdvcmtlcktleS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
NWY5ZTZkYzkwYmE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyS2V5LmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ2xpZW50T3JpZ2luLmgiCisjaW5jbHVkZSA8d3RmL0hh
c2hlci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgU2hhcmVkV29ya2VyS2V5IHsK
KyAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luOworICAgIFVSTCB1cmw7CisgICAgU3Ry
aW5nIG5hbWU7CisKKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7Cit9OworCitpbmxpbmUgdW5z
aWduZWQgU2hhcmVkV29ya2VyS2V5OjpoYXNoKCkgY29uc3QKK3sKKyAgICBIYXNoZXIgaGFzaGVy
OworICAgIGFkZChoYXNoZXIsIG9yaWdpbi5oYXNoKCkpOworICAgIGFkZChoYXNoZXIsIHVybCk7
CisgICAgYWRkKGhhc2hlciwgbmFtZSk7CisgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7Cit9CisK
K2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkV29ya2VyS2V5JiBhLCBjb25zdCBT
aGFyZWRXb3JrZXJLZXkmIGIpCit7CisgICAgcmV0dXJuIGEub3JpZ2luID09IGIub3JpZ2luICYm
IGEudXJsID09IGIudXJsICYmIGEubmFtZSA9PSBiLm5hbWU7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRI
YXNoPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleT4geworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNo
KGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYga2V5KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGtleS5oYXNoKCk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2Vi
Q29yZTo6U2hhcmVkV29ya2VyS2V5JiBhLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkm
IGIpCisgICAgeworICAgICAgICByZXR1cm4gYSA9PSBiOworICAgIH0KKworICAgIHN0YXRpYyBj
b25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Cit9OworCit0
ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleT4gOiBH
ZW5lcmljSGFzaFRyYWl0czxXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk+IHsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNlOworICAgIHN0YXRpYyB2b2lk
IGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIHNsb3QpIHsg
bmV3IChOb3ROdWxsLCAmc2xvdC51cmwpIFVSTChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7
IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJDb3JlOjpTaGFyZWRX
b3JrZXJLZXkmIHNsb3QpIHsgcmV0dXJuIHNsb3QudXJsLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVl
KCk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDEyNmJjNGZlZDg3Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSwxMjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJTaGFyZWRXb3JrZXJNYW5hZ2VyLmgiCi0KLSNpbmNsdWRlICJDb250ZW50U2VjdXJp
dHlQb2xpY3kuaCIKLSNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiTG9hZGVyU3Ry
YXRlZ3kuaCIKLSNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRX
b3JrZXJHbG9iYWxTY29wZS5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb3h5LmgiCi0jaW5j
bHVkZSAiU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2Vy
VGhyZWFkLmgiCi0jaW5jbHVkZSAiV29ya2VyUnVuTG9vcC5oIgotI2luY2x1ZGUgIldvcmtlclNj
cmlwdExvYWRlci5oIgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUg
PHd0Zi9SdW5Mb29wLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU2hhcmVkV29ya2VyTWFu
YWdlciYgU2hhcmVkV29ya2VyTWFuYWdlcjo6c2luZ2xldG9uKCkKLXsKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8U2hhcmVkV29ya2VyTWFuYWdlcj4gaW5zdGFuY2U7Ci0gICAgcmV0dXJuIGlu
c3RhbmNlLmdldCgpOwotfQotCi12b2lkIFNoYXJlZFdvcmtlck1hbmFnZXI6OmNvbm5lY3QoY29u
c3QgVVJMJiB1cmwsIFNoYXJlZFdvcmtlciYgd29ya2VyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0
JiYgbWVzc2FnZVBvcnQsIFdvcmtlck9wdGlvbnMmJiBvcHRpb25zKQotewotICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7Ci0gICAgLy8gRklYTUU6IEhhbmRsZSB3b3JrZXJzIGZyb20gb3Ro
ZXIgcHJvY2Vzc2VzLCB3aGljaCB3aWxsIHByb2JhYmx5IHJlcXVpcmUgbW92aW5nIGNvbm5lY3Qg
dG8gdGhlIEZyYW1lTG9hZGVyQ2xpZW50IG9yIHNvbWV0aGluZy4KLSAgICAvLyBNYXliZSBzb21l
dGhpbmcgbW9yZSBsaWtlIHdoYXQgU2VydmljZVdvcmtlcnMgZG9lcy4KLQotICAgIC8vIEZJWE1F
OiBDaGVjayBpZiB3ZSBhbHJlYWR5IG1hZGUgYSB0aHJlYWQuCi0gICAgLy8gRklYTUU6IENoZWNr
IGlmIHRoZXJlJ3MgYWxyZWFkeSBhIHNoYXJlZCB3b3JrZXIgYW5kIHVzZSB0aGF0IGlmIHRoZXJl
IGlzLgotCi0gICAgYXV0byBsb2FkZXIgPSBtYWtlVW5pcXVlUmVmPFNoYXJlZFdvcmtlclNjcmlw
dExvYWRlcj4odXJsLCB3b3JrZXIsIFdURk1vdmUobWVzc2FnZVBvcnQpLCBXVEZNb3ZlKG9wdGlv
bnMpKTsKLSAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkZXItPmlkZW50aWZpZXIoKTsKLSAgICBt
X2xvYWRlcnMuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUobG9hZGVyKSk7Ci19Ci0KLXZvaWQgU2hh
cmVkV29ya2VyTWFuYWdlcjo6c2NyaXB0TG9hZEZhaWxlZChTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXImIGxvYWRlcikKLXsKLSAgICBBY3RpdmVET01PYmplY3Q6OnF1ZXVlVGFza1RvRGlzcGF0Y2hF
dmVudChsb2FkZXIud29ya2VyKCksIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2
ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOwotICAgIG1fbG9hZGVycy5yZW1vdmUobG9hZGVyLmlk
ZW50aWZpZXIoKSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyTWFuYWdlcjo6c2NyaXB0TG9hZGVk
U3VjY2Vzc2Z1bGx5KFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYgbG9hZGVyLCBjb25zdCBTY3Jp
cHRCdWZmZXImIHNjcmlwdEJ1ZmZlciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgU2hhcmVkV29ya2VyJiBzaGFyZWRXb3JrZXIsIFRyYW5zZmVycmVkTWVz
c2FnZVBvcnQmJiB0cmFuc2ZlcnJlZFBvcnQpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKLSAgICBhdXRvJiB3b3JrZXIgPSBsb2FkZXIud29ya2VyKCk7Ci0gICAgYXV0byYgb3B0
aW9ucyA9IGxvYWRlci5vcHRpb25zKCk7Ci0KLSAgICBhdXRvJiBwcm94eSA9IHNoYXJlZFdvcmtl
ci5wcm94eSgpOwotCi0gICAgcHJveHkuc3RhcnRXb3JrZXJHbG9iYWxTY29wZSgKLSAgICAgICAg
bG9hZGVyLnVybCgpLAotICAgICAgICBvcHRpb25zLm5hbWUsCi0gICAgICAgIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQudXNlckFnZW50KGxvYWRlci51cmwoKSksCi0gICAgICAgIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5pc09uTGluZSgpLAotICAgICAgICBzY3JpcHRC
dWZmZXIsCi0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY29udGVudFNlY3VyaXR5UG9s
aWN5KCktPnJlc3BvbnNlSGVhZGVycygpLAotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LnNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgpLAotICAgICAgICBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3koKSwKLSAgICAg
ICAgd29ya2VyLmNyZWF0aW9uVGltZSgpLAotICAgICAgICBSZWZlcnJlclBvbGljeTo6RW1wdHlT
dHJpbmcsCi0gICAgICAgIG9wdGlvbnMudHlwZSwKLSAgICAgICAgb3B0aW9ucy5jcmVkZW50aWFs
cywKLSAgICAgICAgd29ya2VyLnJ1bnRpbWVGbGFncygpCi0gICAgKTsKLSAgICBpZiAoIXByb3h5
LnRocmVhZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKGlzPERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7
Ci0gICAgYXV0byBzb3VyY2VPcmlnaW4gPSBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCkuc2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpOwotCi0gICAgcHJveHkudGhy
ZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFzayhbdHJhbnNmZXJyZWRQb3J0ID0gV1RGTW92ZSh0cmFu
c2ZlcnJlZFBvcnQpLCBzb3VyY2VPcmlnaW4gPSBXVEZNb3ZlKHNvdXJjZU9yaWdpbikuaXNvbGF0
ZWRDb3B5KCldIChhdXRvJiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSBtdXRhYmxlIHsKLSAgICAg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICAgICAgLy8gaHR0cHM6Ly9odG1s
LnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvd29ya2Vycy5odG1sI2RvbS1zaGFyZWR3b3JrZXIg
c3RlcCAxMS41Ci0gICAgICAgIGF1dG8gc2VyaWFsaXplZFNjcmlwdFZhbHVlID0gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUoIiIpOwotICAgICAgICBBU1NFUlQoc2VyaWFsaXplZFNjcmlw
dFZhbHVlKTsKLSAgICAgICAgYXV0byBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRz
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHsgV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpIH0pOwot
ICAgICAgICBBU1NFUlQocG9ydHMuc2l6ZSgpID09IDEpOwotICAgICAgICBhdXRvIHBvcnQgPSBw
b3J0c1swXTsKLSAgICAgICAgQVNTRVJUKHBvcnQpOwotICAgICAgICBhdXRvIGV2ZW50ID0gTWVz
c2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5y
ZWxlYXNlTm9uTnVsbCgpLCBzb3VyY2VPcmlnaW4sIHsgfSwgcG9ydCk7Ci0gICAgICAgIGV2ZW50
LT5pbml0RXZlbnQoZXZlbnROYW1lcygpLmNvbm5lY3RFdmVudCwgZmFsc2UsIGZhbHNlKTsKLQot
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzPFNoYXJl
ZFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7Ci0gICAgICAgIGF1
dG8mIHdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8U2hhcmVkV29ya2VyR2xvYmFsU2NvcGU+
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS5kaXNw
YXRjaEV2ZW50KFdURk1vdmUoZXZlbnQpKTsKLSAgICB9KTsKLQotICAgIG1fbG9hZGVycy5yZW1v
dmUobG9hZGVyLmlkZW50aWZpZXIoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi5kYmQzODE1OTJmMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcApAQCAtMCwwICsx
LDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5o
IgorI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVk
ZSAiU2NyaXB0QnVmZmVyLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCisjaW5jbHVkZSAi
U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgiCisjaW5jbHVkZSAiV29ya2VyRmV0Y2hSZXN1bHQu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjZGVmaW5lIENPTk5FQ1RJT05fUkVMRUFTRV9M
T0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCisjZGVmaW5lIENP
Tk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKFNo
YXJlZFdvcmtlciwgIiVwIC0gU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6IiBmbXQsIHRo
aXMsICMjX19WQV9BUkdTX18pCisKK3N0YXRpYyB1aW50NjRfdCBsb2FkZXJJZGVudGlmaWVyU2Vl
ZCA9IDA7CisKK1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OlNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CisKK1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246
On5TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCkgPSBkZWZhdWx0OworCit2b2lkIFNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb246OmZldGNoU2NyaXB0SW5DbGllbnQoVVJMJiYgdXJsLCBX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIsIFdvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFdvcmtlckZldGNoUmVzdWx0Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGF1dG8qIHdvcmtlck9iamVjdCA9
IFNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
cik7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiZmV0Y2hTY3JpcHRJbkNsaWVudDogc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zLCB3b3JrZXI9JXAiLCBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgd29ya2VyT2Jq
ZWN0KTsKKyAgICBpZiAoIXdvcmtlck9iamVjdCkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKHsgfSk7CisKKyAgICBhdXRvIGxvYWRlcklkZW50aWZpZXIgPSArK2xvYWRlcklkZW50
aWZpZXJTZWVkOworICAgIGF1dG8gbG9hZGVyID0gbWFrZVVuaXF1ZVJlZjxTaGFyZWRXb3JrZXJT
Y3JpcHRMb2FkZXI+KFdURk1vdmUodXJsKSwgKndvcmtlck9iamVjdCwgV1RGTW92ZSh3b3JrZXJP
cHRpb25zKSk7CisgICAgYXV0byBsb2FkZXJQdHIgPSBsb2FkZXIucHRyKCk7CisgICAgbV9sb2Fk
ZXJzLmFkZChsb2FkZXJJZGVudGlmaWVyLCBXVEZNb3ZlKGxvYWRlcikpOworCisgICAgbG9hZGVy
UHRyLT5sb2FkKFt0aGlzLCBsb2FkZXJJZGVudGlmaWVyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYgZmV0Y2hS
ZXN1bHQpIG11dGFibGUgeworICAgICAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJmZXRjaFNj
cmlwdEluQ2xpZW50OiBmaW5pc2hlZCBzY3JpcHQgbG9hZCwgc3VjY2Vzcz0lZCIsIGZldGNoUmVz
dWx0LmVycm9yLmlzTnVsbCgpKTsKKyAgICAgICAgYXV0byBsb2FkZXIgPSBtX2xvYWRlcnMudGFr
ZShsb2FkZXJJZGVudGlmaWVyKTsKKyAgICAgICAgQVNTRVJUKGxvYWRlcik7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGZldGNoUmVzdWx0KTsKKyAgICB9KTsKK30KKwordm9pZCBTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uOjpub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRGYWlsdXJlKFdl
YkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8qIHdvcmtl
ck9iamVjdCA9IFNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIoc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcik7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUigibm90aWZ5V29y
a2VyT2JqZWN0T2ZMb2FkRmFpbHVyZTogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1
YmxpY31zLCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSwgd29ya2VyT2JqZWN0KTsKKyAgICBpZiAod29ya2VyT2JqZWN0KQor
ICAgICAgICB3b3JrZXJPYmplY3QtPmRpZEZhaWxMb2FkaW5nKCk7Cit9CisKK3ZvaWQgU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIGF1dG8qIHdvcmtlck9iamVjdCA9IFNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIo
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xP
R19FUlJPUigicG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0OiBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyPSV7cHVibGljfXMsIHdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB3b3JrZXJPYmplY3QpOworICAgIGlmICh3
b3JrZXJPYmplY3QpCisgICAgICAgIEFjdGl2ZURPTU9iamVjdDo6cXVldWVUYXNrVG9EaXNwYXRj
aEV2ZW50KCp3b3JrZXJPYmplY3QsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgRXJyb3JF
dmVudDo6Y3JlYXRlKGVycm9yTWVzc2FnZSwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIsIHsgfSkpOworfQorCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPRworI3VuZGVm
IENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uNTE5MTFkNGExNjdkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNjIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIgor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1l
c3NhZ2VQb3J0OworY2xhc3MgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOworCitzdHJ1Y3QgQ2xp
ZW50T3JpZ2luOworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0Oworc3RydWN0IFdvcmtlck9wdGlv
bnM7CisKK2NsYXNzIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291
bnRlZDxTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uPiB7CitwdWJsaWM6CisgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB+U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpOworCisgICAg
dmlydHVhbCB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoY29uc3QgQ2xpZW50T3JpZ2luJiwgU2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgVVJMJiwgVHJhbnNmZXJyZWRNZXNzYWdl
UG9ydCYmLCBjb25zdCBXb3JrZXJPcHRpb25zJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzaGFy
ZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKSA9
IDA7CisKK3Byb3RlY3RlZDoKKyAgICAvLyBJUEMgbWVzc2FnZXMuCisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBmZXRjaFNjcmlwdEluQ2xpZW50KFVSTCYmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLCBXb3JrZXJPcHRpb25zJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBu
b3RpZnlXb3JrZXJPYmplY3RPZkxvYWRGYWlsdXJlKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29y
a2VyT2JqZWN0KFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwpOworCisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbigpOworCitwcml2YXRlOgorICAgIEhhc2hNYXA8dWludDY0X3QsIFVuaXF1ZVJlZjxT
aGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+PiBtX2xvYWRlcnM7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi5lYmNkNGE3YWU4N2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgKQEAg
LTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUHJv
Y2Vzc1F1YWxpZmllZC5oIgorI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyVHlw
ZSB7IH07Cit1c2luZyBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyID0gUHJvY2Vzc1F1YWxp
ZmllZDxPYmplY3RJZGVudGlmaWVyPFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXJUeXBlPj47
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLmZkOGUxOTdmYTI0MgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmNwcApAQCAt
MCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlNoYXJlZFdvcmtlclByb3ZpZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGlj
IFNoYXJlZFdvcmtlclByb3ZpZGVyKiBzaGFyZWRQcm92aWRlcjsKKworLy8gRm9yIFdlYktpdExl
Z2FjeS4KK2NsYXNzIER1bW15U2hhcmVkV29ya2VyUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgU2hh
cmVkV29ya2VyUHJvdmlkZXIgeworcHVibGljOgorICAgIFNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24qIHNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9
Cit9OworCitTaGFyZWRXb3JrZXJQcm92aWRlciYgU2hhcmVkV29ya2VyUHJvdmlkZXI6OnNpbmds
ZXRvbigpCit7CisgICAgaWYgKCFzaGFyZWRQcm92aWRlcikKKyAgICAgICAgc2hhcmVkUHJvdmlk
ZXIgPSBuZXcgRHVtbXlTaGFyZWRXb3JrZXJQcm92aWRlcjsKKyAgICByZXR1cm4gKnNoYXJlZFBy
b3ZpZGVyOworfQorCit2b2lkIFNoYXJlZFdvcmtlclByb3ZpZGVyOjpzZXRTaGFyZWRQcm92aWRl
cihTaGFyZWRXb3JrZXJQcm92aWRlciYgbmV3UHJvdmlkZXIpCit7CisgICAgUkVMRUFTRV9BU1NF
UlQoIXNoYXJlZFByb3ZpZGVyKTsKKyAgICBzaGFyZWRQcm92aWRlciA9ICZuZXdQcm92aWRlcjsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJvdmlkZXIuaApzaW1pbGFyaXR5IGluZGV4IDY0JQpy
ZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5h
Z2VyLmgKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
clByb3ZpZGVyLmgKaW5kZXggYWVmODI3OTAzNTg0Li5jYjU3Y2MxZTdiNWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSwyNiAr
MjUsMTcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJNZXNzYWdlUG9ydElkZW50aWZp
ZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCIKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRXb3JrZXI7Ci1jbGFzcyBTY3JpcHRCdWZmZXI7Ci1z
dHJ1Y3QgV29ya2VyT3B0aW9uczsKLXVzaW5nIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQgPSBzdGQ6
OnBhaXI8V2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlUG9y
dElkZW50aWZpZXI+OworY2xhc3MgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjsKIAotY2xh
c3MgU2hhcmVkV29ya2VyTWFuYWdlciB7CitjbGFzcyBTaGFyZWRXb3JrZXJQcm92aWRlciB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFNoYXJlZFdvcmtlck1hbmFnZXImIHNpbmdsZXRvbigpOwotICAg
IHZvaWQgY29ubmVjdChjb25zdCBVUkwmLCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJlZE1lc3Nh
Z2VQb3J0JiYsIFdvcmtlck9wdGlvbnMmJik7Ci0KLSAgICB2b2lkIHNjcmlwdExvYWRGYWlsZWQo
U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJik7Ci0gICAgdm9pZCBzY3JpcHRMb2FkZWRTdWNjZXNz
ZnVsbHkoU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIFNoYXJlZFdvcmtlciYsIFRyYW5zZmVycmVkTWVzc2FnZVBv
cnQmJik7CisgICAgc3RhdGljIFNoYXJlZFdvcmtlclByb3ZpZGVyJiBzaW5nbGV0b24oKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRTaGFyZWRQcm92aWRlcihTaGFyZWRXb3Jr
ZXJQcm92aWRlciYpOwogCi1wcml2YXRlOgotICAgIEhhc2hNYXA8U2hhcmVkV29ya2VyU2NyaXB0
TG9hZGVySWRlbnRpZmllciwgVW5pcXVlUmVmPFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj4+IG1f
bG9hZGVyczsKKyAgICB2aXJ0dWFsIH5TaGFyZWRXb3JrZXJQcm92aWRlcigpIHsgfQorICAgIHZp
cnR1YWwgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiogc2hhcmVkV29ya2VyQ29ubmVjdGlv
bigpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3h5LmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggM2JlMDc1M2Y4OTFkLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJveHkuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMjMzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiU2hhcmVkV29ya2VyUHJveHkuaCIKLQotI2luY2x1ZGUgIkNhY2hlU3RvcmFnZVBy
b3ZpZGVyLmgiCi0jaW5jbHVkZSAiRXJyb3JFdmVudC5oIgotI2luY2x1ZGUgIkV2ZW50TmFtZXMu
aCIKLSNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgotI2luY2x1ZGUgIk1lc3NhZ2VFdmVu
dC5oIgotI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1
ZGUgIlJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJT
aGFyZWRXb3JrZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oIgotI2lu
Y2x1ZGUgIlNoYXJlZFdvcmtlclRocmVhZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVNo
YXJlZFdvcmtlclByb3h5OjpTaGFyZWRXb3JrZXJQcm94eShTaGFyZWRXb3JrZXImIHNoYXJlZFdv
cmtlcikKLSAgICA6IG1fc2hhcmVkV29ya2VyKHNoYXJlZFdvcmtlcikKLSAgICAsIG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dChzaGFyZWRXb3JrZXIuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQot
ICAgICwgbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yKHNoYXJlZFdvcmtlci5pZGVudGlmaWVyRm9y
SW5zcGVjdG9yKCkpCi17Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnN0YXJ0V29ya2Vy
R2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUsIGNvbnN0IFNjcmlwdEJ1ZmZlciYg
c2NyaXB0QnVmZmVyLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMm
IGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywgYm9vbCBzaG91bGRCeXBhc3NN
YWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnN0IENyb3NzT3JpZ2luRW1iZWRkZXJQ
b2xpY3kmIGNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ksIE1vbm90b25pY1RpbWUgdGltZU9yaWdp
biwgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUgd29ya2VyVHlwZSwg
RmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVudGlhbHMsIEpTQzo6UnVudGltZUZsYWdzIHJ1
bnRpbWVGbGFncykKLXsKLSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBhdXRvIHBhcmFtZXRlcnMgPSBXb3JrZXJQYXJhbWV0ZXJzIHsKLSAgICAgICAg
c2NyaXB0VVJMLAotICAgICAgICBuYW1lLAotICAgICAgICBtX2lkZW50aWZpZXJGb3JJbnNwZWN0
b3IsCi0gICAgICAgIHVzZXJBZ2VudCwKLSAgICAgICAgaXNPbmxpbmUsCi0gICAgICAgIGNvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywKLSAgICAgICAgc2hvdWxkQnlwYXNzTWFp
bldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LAotICAgICAgICBjcm9zc09yaWdpbkVtYmVkZGVy
UG9saWN5LAotICAgICAgICB0aW1lT3JpZ2luLAotICAgICAgICByZWZlcnJlclBvbGljeSwKLSAg
ICAgICAgd29ya2VyVHlwZSwKLSAgICAgICAgY3JlZGVudGlhbHMsCi0gICAgICAgIG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+c2V0dGluZ3NWYWx1ZXMoKQotICAgIH07Ci0KLSAgICBpZiAoIW1f
d29ya2VyVGhyZWFkKSB7Ci0gICAgICAgIG1fd29ya2VyVGhyZWFkID0gU2hhcmVkV29ya2VyVGhy
ZWFkOjpjcmVhdGUocGFyYW1ldGVycywgc2NyaXB0QnVmZmVyLCAqdGhpcywgKnRoaXMsICp0aGlz
LCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LT50b3BPcmlnaW4oKSwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pZGJDb25uZWN0aW9uUHJv
eHkoKSwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zb2NrZXRQcm92aWRlcigpLCBydW50aW1l
RmxhZ3MpOwotICAgICAgICBtX3dvcmtlclRocmVhZC0+c3RhcnQoKTsKLSAgICB9Ci19Ci0KLXZv
aWQgU2hhcmVkV29ya2VyUHJveHk6OnRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCkKLXsKLSAg
ICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2Fza2Vk
VG9UZXJtaW5hdGUgPSB0cnVlOwotICAgIGlmIChtX3dvcmtlclRocmVhZCkKLSAgICAgICAgbV93
b3JrZXJUaHJlYWQtPnN0b3AobnVsbHB0cik7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6
OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYm
IG1lc3NhZ2UpCi17Ci0gICAgLy8gRklYTUU6IFNoYXJlZFdvcmtlciBkb2Vzbid0IGhhdmUgcG9z
dE1lc3NhZ2UsIHNvIHRoaXMgbWlnaHQgbm90IGJlIG5lY2Vzc2FyeS4KLSAgICBwb3N0VGFza1Rv
V29ya2VyR2xvYmFsU2NvcGUoW21lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpXShhdXRvJiBzY3Jp
cHRDb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byYgY29udGV4dCA9IGRvd25jYXN0PFNo
YXJlZFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRDb250ZXh0KTsKLSAgICAgICAgYXV0byBwb3J0
cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKHNjcmlwdENvbnRleHQsIFdURk1vdmUobWVz
c2FnZS50cmFuc2ZlcnJlZFBvcnRzKSk7Ci0gICAgICAgIGNvbnRleHQuZGlzcGF0Y2hFdmVudChN
ZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgbWVzc2FnZS5tZXNzYWdlLnJlbGVh
c2VOb25OdWxsKCkpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6cG9z
dFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYpPiYmIHRhc2spCi17Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKLSAgICAgICAg
cmV0dXJuOwotICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soV1RGTW92ZSh0
YXNrKSk7Ci19Ci0KLWJvb2wgU2hhcmVkV29ya2VyUHJveHk6Omhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faGFzUGVuZGluZ0FjdGl2aXR5ICYmICFtX2Fza2VkVG9U
ZXJtaW5hdGU7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6Ondvcmtlck9iamVjdERlc3Ry
b3llZCgpCi17Ci0gICAgbV9zaGFyZWRXb3JrZXIgPSBudWxscHRyOwotICAgIG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXNdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikg
ewotICAgICAgICBtX21heUJlRGVzdHJveWVkID0gdHJ1ZTsKLSAgICAgICAgaWYgKG1fd29ya2Vy
VGhyZWFkKQotICAgICAgICAgICAgdGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgp
OwotICAgIH0pOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5Ojpub3RpZnlOZXR3b3JrU3Rh
dGVDaGFuZ2UoYm9vbCBpc09ubGluZSkKLXsKLSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1fd29ya2VyVGhyZWFkKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFtpc09ubGluZV0g
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgYXV0byYgZ2xvYmFs
U2NvcGUgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCk7Ci0gICAgICAgIGds
b2JhbFNjb3BlLnNldElzT25saW5lKGlzT25saW5lKTsKLSAgICAgICAgZ2xvYmFsU2NvcGUuZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGlzT25saW5lID8gZXZlbnROYW1lcygpLm9ubGluZUV2
ZW50IDogZXZlbnROYW1lcygpLm9mZmxpbmVFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2
ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2Vy
UHJveHk6OnN1c3BlbmRGb3JCYWNrRm9yd2FyZENhY2hlKCkKLXsKLQotfQotCi12b2lkIFNoYXJl
ZFdvcmtlclByb3h5OjpyZXN1bWVGb3JCYWNrRm9yd2FyZENhY2hlKCkKLXsKLQotfQotCi12b2lk
IFNoYXJlZFdvcmtlclByb3h5Ojpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCkKLXsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBv
c3RUYXNrKFt0aGlzLCBlcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCks
IHNvdXJjZVVSTCA9IHNvdXJjZVVSTC5pc29sYXRlZENvcHkoKSwgbGluZU51bWJlciwgY29sdW1u
TnVtYmVyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKLSAgICAgICAgaWYgKCFtX3NoYXJl
ZFdvcmtlcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBXZSBkb24ndCBib3Ro
ZXIgY2hlY2tpbmcgdGhlIGFza2VkVG9UZXJtaW5hdGUoKSBmbGFnIGhlcmUsIGJlY2F1c2UgZXhj
ZXB0aW9ucyBzaG91bGQgKmFsd2F5cyogYmUgcmVwb3J0ZWQgZXZlbiBpZiB0aGUgdGhyZWFkIGlz
IHRlcm1pbmF0ZWQuCi0gICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBkaWZmZXJlbnQg
dGhhbiB0aGUgYmVoYXZpb3IgaW4gTWVzc2FnZVdvcmtlclRhc2ssIGJlY2F1c2UgdGVybWluYXRl
ZCB3b3JrZXJzIG5vIGxvbmdlciBkZWxpdmVyIG1lc3NhZ2VzIChzZWN0aW9uIDQuNiBvZiB0aGUg
V2ViV29ya2VyIHNwZWMpLCBidXQgdGhleSBkbyByZXBvcnQgZXhjZXB0aW9ucy4KLSAgICAgICAg
QWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKm1fc2hhcmVkV29ya2Vy
LCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIEVycm9yRXZlbnQ6OmNyZWF0ZShlcnJvck1l
c3NhZ2UsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB7IH0pKTsKLSAgICB9
KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6d29ya2VyR2xvYmFsU2NvcGVEZXN0cm95
ZWQoKQotewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXNdIChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JikgewotICAgICAgICB3b3JrZXJHbG9iYWxTY29wZURlc3Ry
b3llZEludGVybmFsKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnBv
c3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJikKLXsKLQot
fQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5Ojpjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmpl
Y3QoYm9vbCkKLXsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6cmVwb3J0UGVuZGluZ0Fj
dGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KQotewotICAgIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+cG9zdFRhc2soW3RoaXMsIGhhc1BlbmRpbmdBY3Rpdml0eV0gKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKSB7Ci0gICAgICAgIG1faGFzUGVuZGluZ0FjdGl2aXR5ID0gaGFzUGVuZGlu
Z0FjdGl2aXR5OwotICAgIH0pOwotfQotCi1SZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4g
U2hhcmVkV29ya2VyUHJveHk6OmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKQotewotICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxE
b2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgcmV0dXJuIGRvY3VtZW50
LnBhZ2UoKS0+Y2FjaGVTdG9yYWdlUHJvdmlkZXIoKS5jcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uKCk7Ci19Ci0KLVJlZlB0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9u
PiBTaGFyZWRXb3JrZXJQcm94eTo6Y3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29u
bmVjdGlvbigpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRvJiBkb2N1
bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAg
ICBpZiAoIWRvY3VtZW50LnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0
dXJuIGRvY3VtZW50LnBhZ2UoKS0+bGliV2ViUlRDUHJvdmlkZXIoKS5jcmVhdGVSVENEYXRhQ2hh
bm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJv
eHk6OnBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2sp
Ci17Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhXVEZNb3ZlKHRhc2sp
KTsKLX0KLQotYm9vbCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaywg
Y29uc3QgU3RyaW5nJiBtb2RlKQotewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRh
c2tGb3JNb2RlKFdURk1vdmUodGFzayksIG1vZGUpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12
b2lkIFNoYXJlZFdvcmtlclByb3h5Ojpwb3N0TWVzc2FnZVRvRGVidWdnZXIoY29uc3QgU3RyaW5n
JikKLXsKLQotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5OjpzZXRSZXNvdXJjZUNhY2hpbmdE
aXNhYmxlZEJ5V2ViSW5zcGVjdG9yKGJvb2wpCi17Ci0KLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQ
cm94eTo6d29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpCi17Ci0gICAgLy8gVGhp
cyBpcyBhbHdheXMgdGhlIGxhc3QgdGFzayB0byBiZSBwZXJmb3JtZWQsIHNvIHRoZSBwcm94eSBp
cyBub3QgbmVlZGVkIGZvciBjb21tdW5pY2F0aW9uCi0gICAgLy8gaW4gZWl0aGVyIHNpZGUgYW55
IG1vcmUuIEhvd2V2ZXIsIHRoZSBXb3JrZXIgb2JqZWN0IG1heSBzdGlsbCBleGlzdCwgYW5kIGl0
IGFzc3VtZXMgdGhhdCB0aGUgcHJveHkgZXhpc3RzLCB0b28uCi0gICAgbV9hc2tlZFRvVGVybWlu
YXRlID0gdHJ1ZTsKLSAgICBtX3dvcmtlclRocmVhZCA9IG51bGxwdHI7Ci0KLSAgICAvLyBUaGlz
IGJhbGFuY2VzIHRoZSBvcmlnaW5hbCByZWYgaW4gY29uc3RydWN0aW9uLgotICAgIGlmIChtX21h
eUJlRGVzdHJveWVkKQotICAgICAgICBkZXJlZigpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRleCAzMTFlYmQ2MDc4YmMuLmVhMmUwNDhjNzYyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2Ny
aXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDIzICsyOSwyNiBAQAogI2luY2x1ZGUgIkV2ZW50TmFt
ZXMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJT
aGFyZWRXb3JrZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJNYW5hZ2VyLmgiCisjaW5jbHVk
ZSAiV29ya2VyRmV0Y2hSZXN1bHQuaCIKICNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCiAjaW5j
bHVkZSAiV29ya2VyU2NyaXB0TG9hZGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hh
cmVkV29ya2VyU2NyaXB0TG9hZGVyOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIoY29uc3QgVVJM
JiB1cmwsIFNoYXJlZFdvcmtlciYgd29ya2VyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgcG9y
dCwgV29ya2VyT3B0aW9ucyYmIG9wdGlvbnMpCi0gICAgOiBtX2lkZW50aWZpZXIoU2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKLSAgICAsIG1fb3B0aW9ucyhX
VEZNb3ZlKG9wdGlvbnMpKQorU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpTaGFyZWRXb3JrZXJT
Y3JpcHRMb2FkZXIoVVJMJiYgdXJsLCBTaGFyZWRXb3JrZXImIHdvcmtlciwgV29ya2VyT3B0aW9u
cyYmIG9wdGlvbnMpCisgICAgOiBtX29wdGlvbnMoV1RGTW92ZShvcHRpb25zKSkKICAgICAsIG1f
d29ya2VyKHdvcmtlcikKLSAgICAsIG1fcG9ydChXVEZNb3ZlKHBvcnQpKQogICAgICwgbV9sb2Fk
ZXIoV29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGUoKSkKLSAgICAsIG1fcGVuZGluZ0FjdGl2aXR5
KHdvcmtlci5tYWtlUGVuZGluZ0FjdGl2aXR5KHdvcmtlcikpCi0gICAgLCBtX3VybCh1cmwpCisg
ICAgLCBtX3VybChXVEZNb3ZlKHVybCkpCiB7Ci0gICAgbV93b3JrZXItPnNldElzTG9hZGluZyh0
cnVlKTsKLSAgICBtX2xvYWRlci0+bG9hZEFzeW5jaHJvbm91c2x5KCp3b3JrZXIuc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBSZXNvdXJjZVJlcXVlc3QodXJsKSwgd29ya2VyLndvcmtlckZldGNo
T3B0aW9ucyhvcHRpb25zLCBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpTaGFyZWR3b3JrZXIp
LCBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6RW5mb3JjZVdvcmtlclNyY0RpcmVj
dGl2ZSwgU2VydmljZVdvcmtlcnNNb2RlOjpBbGwsICp0aGlzLCBXb3JrZXJSdW5Mb29wOjpkZWZh
dWx0TW9kZSgpKTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWQoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIEFTU0VSVCghbV9jb21wbGV0aW9uSGFuZGxlcik7CisgICAgbV9j
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgbV9s
b2FkZXItPmxvYWRBc3luY2hyb25vdXNseSgqbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgUmVzb3VyY2VSZXF1ZXN0KG1fdXJsKSwgbV93b3JrZXItPndvcmtlckZldGNoT3B0aW9u
cyhtX29wdGlvbnMsIEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OlNoYXJlZHdvcmtlciksIENv
bnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50OjpFbmZvcmNlV29ya2VyU3JjRGlyZWN0aXZl
LCBTZXJ2aWNlV29ya2Vyc01vZGU6OkFsbCwgKnRoaXMsIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRN
b2RlKCkpOwogfQogCiB2b2lkIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikKQEAgLTU1LDE2ICs1OCwxMiBAQCB2b2lkIFNoYXJlZFdvcmtlclNjcmlwdExv
YWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudAog
CiB2b2lkIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6bm90aWZ5RmluaXNoZWQoKQogewotICAg
IG1fd29ya2VyLT5zZXRJc0xvYWRpbmcoZmFsc2UpOworICAgIGlmIChtX2xvYWRlci0+ZmFpbGVk
KCkpCisgICAgICAgIHJldHVybiBtX2NvbXBsZXRpb25IYW5kbGVyKHdvcmtlckZldGNoRXJyb3Io
bV9sb2FkZXItPmVycm9yKCkpKTsKIAotICAgIGF1dG8qIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQg
PSBtX3dvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmIChtX2xvYWRlci0+
ZmFpbGVkKCkgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIHsKLSAgICAgICAgbV93b3JrZXIt
PmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZl
bnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOwotICAgICAgICBT
aGFyZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5zY3JpcHRMb2FkRmFpbGVkKCp0aGlzKTsg
Ly8gZGVsZXRlcyB0aGlzLgotICAgIH0gZWxzZSB7CisgICAgaWYgKGF1dG8qIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgPSBtX3dvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkKCpzY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBtX2xvYWRlci0+aWRlbnRpZmllcigpLCBtX2xvYWRlci0+c2NyaXB0KCkudG9T
dHJpbmcoKSk7Ci0gICAgICAgIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNpbmdsZXRvbigpLnNjcmlw
dExvYWRlZFN1Y2Nlc3NmdWxseSgqdGhpcywgbV9sb2FkZXItPnNjcmlwdCgpLCAqbV93b3JrZXIt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV93b3JrZXIuZ2V0KCksIHN0ZDo6ZXhjaGFuZ2Uo
bV9wb3J0LCB7IH0pKTsgLy8gZGVsZXRlcyB0aGlzLgotICAgIH0KKyAgICBtX2NvbXBsZXRpb25I
YW5kbGVyKHsgbV9sb2FkZXItPnNjcmlwdCgpLCBtX2xvYWRlci0+Y2VydGlmaWNhdGVJbmZvKCks
IG1fbG9hZGVyLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSwgbV9sb2FkZXItPmNyb3NzT3JpZ2lu
RW1iZWRkZXJQb2xpY3koKSwgbV9sb2FkZXItPnJlZmVycmVyUG9saWN5KCksIHsgfSB9KTsgLy8g
ZGVsZXRlcyB0aGlzLgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5o
CmluZGV4IGJmMWQ0YWVmM2EwOS4uZWIwYjcxNDViZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw3
ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiTWVzc2FnZVBvcnRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgpAQCAtMzgs
MzMgKzM3LDI4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2hhcmVkV29ya2VyOwog
Y2xhc3MgV29ya2VyU2NyaXB0TG9hZGVyOwotCi1jbGFzcyBTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXI7Ci11c2luZyBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXJJZGVudGlmaWVyID0gT2JqZWN0SWRl
bnRpZmllcjxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+OwotCi11c2luZyBUcmFuc2ZlcnJlZE1l
c3NhZ2VQb3J0ID0gc3RkOjpwYWlyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciwgV2Vi
Q29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyPjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsK
IAogY2xhc3MgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyIDogcHJpdmF0ZSBXb3JrZXJTY3JpcHRM
b2FkZXJDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcihjb25zdCBVUkwmLCBTaGFyZWRXb3JrZXImLCBUcmFu
c2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdvcmtlck9wdGlvbnMmJik7CisgICAgU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyKFVSTCYmLCBTaGFyZWRXb3JrZXImLCBXb3JrZXJPcHRpb25zJiYpOworCisg
ICAgdm9pZCBsb2FkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1
bHQmKT4mJik7CiAKLSAgICBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBjb25zdCBVUkwmIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgU2hhcmVkV29ya2VyJiB3b3JrZXIoKSB7
IHJldHVybiBtX3dvcmtlci5nZXQoKTsgfQotICAgIGNvbnN0IFdvcmtlck9wdGlvbnMmIG9wdGlv
bnMoKSB7IHJldHVybiBtX29wdGlvbnM7IH0KKyAgICBjb25zdCBXb3JrZXJPcHRpb25zJiBvcHRp
b25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZCgpIGZpbmFsOwogCi0g
ICAgY29uc3QgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7
CiAgICAgY29uc3QgV29ya2VyT3B0aW9ucyBtX29wdGlvbnM7CiAgICAgY29uc3QgUmVmPFNoYXJl
ZFdvcmtlcj4gbV93b3JrZXI7Ci0gICAgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBtX3BvcnQ7CiAg
ICAgY29uc3QgUmVmPFdvcmtlclNjcmlwdExvYWRlcj4gbV9sb2FkZXI7Ci0gICAgY29uc3QgUmVm
PEFjdGl2ZURPTU9iamVjdDo6UGVuZGluZ0FjdGl2aXR5PFNoYXJlZFdvcmtlcj4+IG1fcGVuZGlu
Z0FjdGl2aXR5OwogICAgIGNvbnN0IFVSTCBtX3VybDsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFdvcmtlckZldGNoUmVzdWx0Jik+IG1fY29tcGxldGlvbkhhbmRsZXI7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zaGFyZWQvU2hhcmVkV29ya2VyVGhyZWFkLmNwcAppbmRleCA5ZWQ1NTg4ZmJkNzkuLmVmZTA1
ZTI3YzE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXJUaHJlYWQuY3BwCkBAIC0zMSwxNCArMzEsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1TaGFyZWRXb3JrZXJUaHJlYWQ6OlNoYXJlZFdvcmtlclRocmVhZChjb25zdCBXb3Jr
ZXJQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBTY3JpcHRCdWZmZXImIHNvdXJjZUNvZGUs
IFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQcm94eSwgV29ya2VyRGVidWdnZXJQcm94eSYgZGVi
dWdnZXJQcm94eSwgV29ya2VyT2JqZWN0UHJveHkmIG9iamVjdFByb3h5LCBXb3JrZXJUaHJlYWRT
dGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBJREJD
bGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRl
ciogc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncykKK1NoYXJl
ZFdvcmtlclRocmVhZDo6U2hhcmVkV29ya2VyVGhyZWFkKFNoYXJlZFdvcmtlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgU2Ny
aXB0QnVmZmVyJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFdv
cmtlckRlYnVnZ2VyUHJveHkmIGRlYnVnZ2VyUHJveHksIFdvcmtlck9iamVjdFByb3h5JiBvYmpl
Y3RQcm94eSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlP
cmlnaW4mIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rp
b25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFn
cyBydW50aW1lRmxhZ3MpCiAgICAgOiBXb3JrZXJUaHJlYWQocGFyYW1ldGVycywgc291cmNlQ29k
ZSwgbG9hZGVyUHJveHksIGRlYnVnZ2VyUHJveHksIG9iamVjdFByb3h5LCBzdGFydE1vZGUsIHRv
cE9yaWdpbiwgY29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlciwgcnVudGltZUZsYWdzKQor
ICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX25hbWUocGFyYW1ldGVycy5u
YW1lLmlzb2xhdGVkQ29weSgpKQogeworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVw
IC0gU2hhcmVkV29ya2VyVGhyZWFkOjpTaGFyZWRXb3JrZXJUaHJlYWQ6IiwgdGhpcyk7CiB9CiAK
IFJlZjxXb3JrZXJHbG9iYWxTY29wZT4gU2hhcmVkV29ya2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJH
bG9iYWxTY29wZShjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBSZWY8U2VjdXJp
dHlPcmlnaW4+JiYgb3JpZ2luLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luKQogewor
ICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gU2hhcmVkV29ya2VyVGhyZWFkOjpj
cmVhdGVXb3JrZXJHbG9iYWxTY29wZToiLCB0aGlzKTsKICAgICByZXR1cm4gU2hhcmVkV29ya2Vy
R2xvYmFsU2NvcGU6OmNyZWF0ZShzdGQ6OmV4Y2hhbmdlKG1fbmFtZSwgeyB9KSwgcGFyYW1ldGVy
cywgV1RGTW92ZShvcmlnaW4pLCAqdGhpcywgV1RGTW92ZSh0b3BPcmlnaW4pLCBpZGJDb25uZWN0
aW9uUHJveHkoKSwgc29ja2V0UHJvdmlkZXIoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyVGhyZWFkLmgKaW5kZXggMmYwNTZmOWQ1OWJi
Li45ZWEyNDg0N2QzOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlclRocmVhZC5oCkBAIC0yNSwyMSArMjUsMjcgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV29ya2Vy
VGhyZWFkLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV29ya2VyT2JqZWN0UHJv
eHk7CiAKKy8vIEZJWE1FOiBNb3ZlIHRvIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQuCiBjbGFzcyBT
aGFyZWRXb3JrZXJUaHJlYWQgOiBwdWJsaWMgV29ya2VyVGhyZWFkIHsKIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmPFNoYXJlZFdvcmtlclRocmVhZD4g
Y3JlYXRlKEFyZ3MmJi4uLiBhcmdzKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZFdvcmtl
clRocmVhZChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsgfQorCisgICAgU2hhcmVkV29y
a2VySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9
CisKIHByaXZhdGU6Ci0gICAgU2hhcmVkV29ya2VyVGhyZWFkKGNvbnN0IFdvcmtlclBhcmFtZXRl
cnMmLCBjb25zdCBTY3JpcHRCdWZmZXImIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5Jiwg
V29ya2VyRGVidWdnZXJQcm94eSYsIFdvcmtlck9iamVjdFByb3h5JiwgV29ya2VyVGhyZWFkU3Rh
cnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNv
bm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKiwgSlNDOjpSdW50aW1lRmxhZ3MpOworICAg
IFNoYXJlZFdvcmtlclRocmVhZChTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXb3JrZXJQ
YXJhbWV0ZXJzJiwgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQ
cm94eSYsIFdvcmtlckRlYnVnZ2VyUHJveHkmLCBXb3JrZXJPYmplY3RQcm94eSYsIFdvcmtlclRo
cmVhZFN0YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgSURCQ2xpZW50
OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciosIEpTQzo6UnVudGltZUZsYWdz
KTsKIAogICAgIFJlZjxXb3JrZXJHbG9iYWxTY29wZT4gY3JlYXRlV29ya2VyR2xvYmFsU2NvcGUo
Y29uc3QgV29ya2VyUGFyYW1ldGVycyYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiwgUmVmPFNlY3Vy
aXR5T3JpZ2luPiYmIHRvcE9yaWdpbikgZmluYWw7CiAgICAgQVNDSUlMaXRlcmFsIHRocmVhZE5h
bWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiV2ViQ29yZTogU2hhcmVkV29ya2VyIl9zOyB9CiAK
KyAgICBTaGFyZWRXb3JrZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBTdHJpbmcgbV9u
YW1lOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29u
dGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjA3YTkwZDk4MDUxMgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgi
CisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkUHJv
eHkuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlciYgU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyPiBzaGFyZWRNYW5hZ2VyOworICAgIHJldHVybiBzaGFyZWRNYW5h
Z2VyOworfQorCitTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSogU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXI6OnNoYXJlZFdvcmtlcihTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklk
ZW50aWZpZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd29ya2VyTWFwLmdldChzaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyKTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c3Rv
cFNoYXJlZFdvcmtlcihTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZp
ZXIpCit7CisgICAgYXV0byB3b3JrZXIgPSBtX3dvcmtlck1hcC50YWtlKHNoYXJlZFdvcmtlcklk
ZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyOjpzdG9wU2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUi
IFBSSXU2NCAiLCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCks
IHdvcmtlci5nZXQoKSk7CisgICAgaWYgKCF3b3JrZXIpCisgICAgICAgIHJldHVybjsKKworICAg
IHdvcmtlci0+c2V0QXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCgpOworCisgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBiZSBhYmxlIHRvIGRlYWwgd2l0aCB0aGUgdGhyZWFkIGJlaW5nIHVucmVzcG9u
c2l2ZSBoZXJlLgorCisgICAgYXV0byYgdGhyZWFkID0gd29ya2VyLT50aHJlYWQoKTsKKyAgICB0
aHJlYWQuc3RvcChbd29ya2VyID0gV1RGTW92ZSh3b3JrZXIpXSgpIG11dGFibGUgeworICAgICAg
ICAvLyBTcGluIHRoZSBydW5sb29wIGJlZm9yZSByZWxlYXNpbmcgdGhlIHNoYXJlZCB3b3JrZXIg
dGhyZWFkIHByb3h5LCBhcyB0aGVyZSB3b3VsZCBvdGhlcndpc2UgYmUKKyAgICAgICAgLy8gYSBy
YWNlIHRvd2FyZHMgaXRzIGRlc3RydWN0aW9uLgorICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3
b3JrZXIgPSBXVEZNb3ZlKHdvcmtlcildIHsgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXI6OnN0b3BBbGxTaGFyZWRXb3JrZXJzKCkKK3sKKyAgICB3aGls
ZSAoIW1fd29ya2VyTWFwLmlzRW1wdHkoKSkKKyAgICAgICAgc3RvcFNoYXJlZFdvcmtlcihtX3dv
cmtlck1hcC5iZWdpbigpLT5rZXkpOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyOjpzZXRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYmIGNvbm5lY3Rp
b24pCit7CisgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24gfHwgbV9jb25uZWN0aW9uLT5pc0Nsb3Nl
ZCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24gPSBXVEZNb3ZlKGNvbm5lY3Rpb24pOworfQorCithdXRv
IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpjb25uZWN0aW9uKCkgY29uc3QgLT4gQ29ubmVj
dGlvbioKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOworfQorCit2b2lkIFNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpyZWdpc3RlclNoYXJlZFdvcmtlclRocmVhZChSZWY8U2hh
cmVkV29ya2VyVGhyZWFkUHJveHk+JiYgcHJveHkpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlcjo6cmVnaXN0ZXJTaGFyZWRXb3JrZXJUaHJlYWQ6IHNoYXJlZFdvcmtlcklkZW50aWZp
ZXI9JSIgUFJJdTY0LCBwcm94eS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworCisgICAgYXV0
byByZXN1bHQgPSBtX3dvcmtlck1hcC5hZGQocHJveHktPmlkZW50aWZpZXIoKSwgcHJveHkuY29w
eVJlZigpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwor
CisgICAgcHJveHktPnRocmVhZCgpLnN0YXJ0KFtdKGNvbnN0IFN0cmluZyYgLypleGNlcHRpb25N
ZXNzYWdlKi8pIHsgfSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNv
bm5lY3Rpb246OnBvc3RDb25uZWN0RXZlbnQoU2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRX
b3JrZXJJZGVudGlmaWVyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgdHJhbnNmZXJyZWRQb3J0
LCBTdHJpbmcmJiBzb3VyY2VPcmlnaW4pCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICBhdXRvKiBwcm94eSA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24o
KS5zaGFyZWRXb3JrZXIoc2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0co
U2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb246OnBv
c3RDb25uZWN0RXZlbnQ6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHByb3h5
PSVwIiwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpLCBwcm94eSk7CisgICAgaWYg
KCFwcm94eSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJveHktPnRocmVhZCgpLnJ1bkxvb3Ao
KS5wb3N0VGFzayhbdHJhbnNmZXJyZWRQb3J0ID0gV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBz
b3VyY2VPcmlnaW4gPSBXVEZNb3ZlKHNvdXJjZU9yaWdpbikuaXNvbGF0ZWRDb3B5KCldIChhdXRv
JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CisgICAgICAgIGRvd25jYXN0PFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlPihz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KS5wb3N0Q29ubmVjdEV2ZW50KFdURk1vdmUodHJhbnNmZXJy
ZWRQb3J0KSwgV1RGTW92ZShzb3VyY2VPcmlnaW4pKTsKKyAgICB9KTsKK30KKwordm9pZCBTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6dGVybWluYXRlU2hhcmVkV29ya2Vy
KFNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uOjp0ZXJtaW5hdGVTaGFyZWRXb3Jr
ZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVudGlm
aWVyLnRvVUludDY0KCkpOworICAgIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0
b24oKS5zdG9wU2hhcmVkV29ya2VyKHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3No
YXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wNDc5MzdjOTFlNmIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaCIKKyNpbmNs
dWRlICJTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTsK
KworY2xhc3MgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIgeworcHVibGljOgorICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlciYgc2luZ2xldG9uKCk7
CisKKyAgICBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSogc2hhcmVkV29ya2VyKFNoYXJlZFdvcmtl
cklkZW50aWZpZXIpIGNvbnN0OworICAgIHZvaWQgc3RvcFNoYXJlZFdvcmtlcihTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BBbGxTaGFyZWRXb3Jr
ZXJzKCk7CisKKyAgICBjbGFzcyBDb25uZWN0aW9uIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5Db25uZWN0aW9uKCkgeyB9
CisgICAgICAgIHZpcnR1YWwgdm9pZCBlc3RhYmxpc2hDb25uZWN0aW9uKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdEV4Y2VwdGlvblRv
V29ya2VyT2JqZWN0KFNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkwpID0gMDsKKyAgICAgICAgYm9vbCBpc0Nsb3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNDbG9zZWQ7IH0KKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgdm9pZCBzZXRBc0Nsb3NlZCgp
IHsgbV9pc0Nsb3NlZCA9IHRydWU7IH0KKworICAgICAgICAvLyBJUEMgbWVzc2FnZSBoYW5kbGVy
cy4KKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0Q29ubmVjdEV2ZW50KFNoYXJlZFdv
cmtlcklkZW50aWZpZXIsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgU3RyaW5nJiYgc291cmNl
T3JpZ2luKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0ZXJtaW5hdGVTaGFyZWRXb3Jr
ZXIoU2hhcmVkV29ya2VySWRlbnRpZmllcik7CisKKyAgICBwcml2YXRlOgorICAgICAgICBib29s
IG1faXNDbG9zZWQgeyBmYWxzZSB9OworICAgIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldENvbm5lY3Rpb24oc3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+JiYpOworICAgIFdFQkNP
UkVfRVhQT1JUIENvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKSBjb25zdDsKKworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcmVnaXN0ZXJTaGFyZWRXb3JrZXJUaHJlYWQoUmVmPFNoYXJlZFdvcmtlclRo
cmVhZFByb3h5PiYmKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95
ZWQ8U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI+OworCisgICAgU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVjdGlvbj4g
bV9jb25uZWN0aW9uOworICAgIEhhc2hNYXA8U2hhcmVkV29ya2VySWRlbnRpZmllciwgUmVmPFNo
YXJlZFdvcmtlclRocmVhZFByb3h5Pj4gbV93b3JrZXJNYXA7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250
ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzlkZjkwNmE1ZGVjCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJl
YWRQcm94eS5jcHAKQEAgLTAsMCArMSwxOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEt
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIgorCisjaW5j
bHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJFcnJvckV2ZW50LmgiCisj
aW5jbHVkZSAiRXZlbnRMb29wLmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUg
IkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENQ
cm92aWRlci5oIgorI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCisjaW5jbHVkZSAiTWVzc2Fn
ZUV2ZW50LmgiCisjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxS
ZW1vdGVIYW5kbGVyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgorI2lu
Y2x1ZGUgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgiCisjaW5jbHVkZSAiU2hhcmVkV29y
a2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKKyNpbmNs
dWRlICJXb3JrZXJGZXRjaFJlc3VsdC5oIgorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXJzRmFjdG9yeS5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3N0YXRpYyBIYXNoU2V0PFNoYXJlZFdvcmtlclRocmVhZFByb3h5Kj4mIGFs
bFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxIYXNoU2V0PFNoYXJlZFdvcmtlclRocmVhZFByb3h5Kj4+IHNldDsKKyAgICByZXR1cm4gc2V0
OworfQorCitzdGF0aWMgV29ya2VyUGFyYW1ldGVycyBnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMo
Y29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFdvcmtlckZldGNoUmVzdWx0JiB3b3JrZXJGZXRj
aFJlc3VsdCwgV29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMsIGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50LCBEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgcmV0dXJuIFdvcmtlclBhcmFtZXRl
cnMgeworICAgICAgICBzY3JpcHRVUkwsCisgICAgICAgIHdvcmtlck9wdGlvbnMubmFtZSwKKyAg
ICAgICAgInNoYXJlZHdvcmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNy
ZWF0ZUlkZW50aWZpZXIoKSwKKyAgICAgICAgdXNlckFnZW50LAorICAgICAgICBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+aXNPbkxpbmUoKSwKKyAgICAgICAgd29ya2Vy
RmV0Y2hSZXN1bHQuY29udGVudFNlY3VyaXR5UG9saWN5LAorICAgICAgICBmYWxzZSwKKyAgICAg
ICAgd29ya2VyRmV0Y2hSZXN1bHQuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwKKyAgICAgICAg
TW9ub3RvbmljVGltZTo6bm93KCksCisgICAgICAgIHsgfSwKKyAgICAgICAgd29ya2VyT3B0aW9u
cy50eXBlLAorICAgICAgICB3b3JrZXJPcHRpb25zLmNyZWRlbnRpYWxzLAorICAgICAgICBkb2N1
bWVudC5zZXR0aW5nc1ZhbHVlcygpCisgICAgfTsKK30KKworU2hhcmVkV29ya2VyVGhyZWFkUHJv
eHk6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5KFVuaXF1ZVJlZjxQYWdlPiYmIHBhZ2UsIFNoYXJl
ZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgQ2xpZW50T3Jp
Z2luJiBjbGllbnRPcmlnaW4sIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBXb3JrZXJGZXRjaFJlc3Vs
dCYmIHdvcmtlckZldGNoUmVzdWx0LCBXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucywgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQsIENhY2hlU3RvcmFnZVByb3ZpZGVyJiBjYWNoZVN0b3JhZ2VQ
cm92aWRlcikKKyAgICA6IG1fcGFnZShXVEZNb3ZlKHBhZ2UpKQorICAgICwgbV9kb2N1bWVudCgq
bV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQorICAgICwgbV93b3JrZXJUaHJlYWQoU2hh
cmVkV29ya2VyVGhyZWFkOjpjcmVhdGUoc2hhcmVkV29ya2VySWRlbnRpZmllciwgZ2VuZXJhdGVX
b3JrZXJQYXJhbWV0ZXJzKHNjcmlwdFVSTCwgd29ya2VyRmV0Y2hSZXN1bHQsIFdURk1vdmUod29y
a2VyT3B0aW9ucyksIHVzZXJBZ2VudCwgbV9kb2N1bWVudCksIFdURk1vdmUod29ya2VyRmV0Y2hS
ZXN1bHQuc2NyaXB0KSwgKnRoaXMsICp0aGlzLCAqdGhpcywgV29ya2VyVGhyZWFkU3RhcnRNb2Rl
OjpOb3JtYWwsIGNsaWVudE9yaWdpbi50b3BPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSwgbV9kb2N1
bWVudC0+aWRiQ29ubmVjdGlvblByb3h5KCksIG1fZG9jdW1lbnQtPnNvY2tldFByb3ZpZGVyKCks
IEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVkKCkpKQorICAgICwgbV9jYWNoZVN0
b3JhZ2VQcm92aWRlcihjYWNoZVN0b3JhZ2VQcm92aWRlcikKK3sKKyAgICBBU1NFUlQoIWFsbFNo
YXJlZFdvcmtlclRocmVhZFByb3hpZXMoKS5jb250YWlucyh0aGlzKSk7CisgICAgYWxsU2hhcmVk
V29ya2VyVGhyZWFkUHJveGllcygpLmFkZCh0aGlzKTsKKworICAgIHN0YXRpYyBib29sIGFkZGVk
TGlzdGVuZXI7CisgICAgaWYgKCFhZGRlZExpc3RlbmVyKSB7CisgICAgICAgIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5hZGRPbmxpbmVTdGF0ZUNoYW5nZUxpc3RlbmVy
KCZuZXR3b3JrU3RhdGVDaGFuZ2VkKTsKKyAgICAgICAgYWRkZWRMaXN0ZW5lciA9IHRydWU7Cisg
ICAgfQorfQorCitTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6flNoYXJlZFdvcmtlclRocmVhZFBy
b3h5KCkKK3sKKyAgICBBU1NFUlQoYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGllcygpLmNvbnRh
aW5zKHRoaXMpKTsKKyAgICBhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkucmVtb3ZlKHRo
aXMpOworfQorCitTaGFyZWRXb3JrZXJJZGVudGlmaWVyIFNoYXJlZFdvcmtlclRocmVhZFByb3h5
OjppZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93b3JrZXJUaHJlYWQtPmlkZW50
aWZpZXIoKTsKK30KKworUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IFNoYXJlZFdvcmtl
clRocmVhZFByb3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmICghbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uKQor
ICAgICAgICBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24gPSBtX2NhY2hlU3RvcmFnZVByb3ZpZGVy
LmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKTsKKyAgICByZXR1cm4gbV9jYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOworfQorCitSZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29u
bmVjdGlvbj4gU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlckNvbm5lY3Rpb24oKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Cisg
ICAgcmV0dXJuIG1fcGFnZS0+bGliV2ViUlRDUHJvdmlkZXIoKS5jcmVhdGVSVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyVGhyZWFk
UHJveHk6OnBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRh
c2spCit7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGFzayA9IFdURk1vdmUodGFzayksIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgdGFzay5wZXJm
b3JtVGFzayhwcm90ZWN0ZWRUaGlzLT5tX2RvY3VtZW50LmdldCgpKTsKKyAgICB9KTsKK30KKwor
Ym9vbCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaywgY29u
c3QgU3RyaW5nJiBtb2RlKQoreworICAgIGlmIChtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCku
cG9zdFRhc2tGb3JNb2RlKFdURk1vdmUodGFzayksIG1vZGUpOworICAgIHJldHVybiB0cnVlOwor
fQorCit2b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0TWVzc2FnZVRvRGVidWdnZXIo
Y29uc3QgU3RyaW5nJikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorfQorCit2b2lkIFNo
YXJlZFdvcmtlclRocmVhZFByb3h5OjpzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEJ5V2ViSW5z
cGVjdG9yKGJvb2wpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4KK30KKwordm9pZCBTaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eTo6bmV0d29ya1N0YXRlQ2hhbmdlZChib29sIGlzT25MaW5lKQor
eworICAgIGZvciAoYXV0byogcHJveHkgOiBhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkp
CisgICAgICAgIHByb3h5LT5ub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoaXNPbkxpbmUpOworfQor
Cit2b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2Uo
Ym9vbCBpc09ubGluZSkKK3sKKyAgICBpZiAobV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKFtpc09ubGluZV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsK
KyAgICAgICAgYXV0byYgZ2xvYmFsU2NvcGUgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4o
Y29udGV4dCk7CisgICAgICAgIGdsb2JhbFNjb3BlLnNldElzT25saW5lKGlzT25saW5lKTsKKyAg
ICAgICAgZ2xvYmFsU2NvcGUuZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1h
bmlwdWxhdGlvbiwgW2dsb2JhbFNjb3BlID0gUmVmIHsgZ2xvYmFsU2NvcGUgfSwgaXNPbmxpbmVd
IHsKKyAgICAgICAgICAgIGdsb2JhbFNjb3BlLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUo
aXNPbmxpbmUgPyBldmVudE5hbWVzKCkub25saW5lRXZlbnQgOiBldmVudE5hbWVzKCkub2ZmbGlu
ZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsK
KyAgICAgICAgfSk7CisgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7Cit9CisK
Ky8vIEZJWE1FOiBUcnkgYW5kIHNoYXJlIGNvZGUgd2l0aCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHkuY3BwLgordm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6c2V0dXBQYWdlRm9yU2hhcmVk
V29ya2VyKFBhZ2UmIHBhZ2UsIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBDbGllbnRPcmln
aW4mIGNsaWVudE9yaWdpbiwgY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmIHdvcmtlckZldGNoUmVz
dWx0KQoreworICAgIGF1dG8mIG1haW5GcmFtZSA9IHBhZ2UubWFpbkZyYW1lKCk7CisgICAgbWFp
bkZyYW1lLmxvYWRlcigpLmluaXRGb3JTeW50aGVzaXplZERvY3VtZW50KHsgfSk7CisgICAgYXV0
byBkb2N1bWVudCA9IERvY3VtZW50OjpjcmVhdGVOb25SZW5kZXJlZFBsYWNlaG9sZGVyKG1haW5G
cmFtZSwgc2NyaXB0VVJMKTsKKyAgICBkb2N1bWVudC0+Y3JlYXRlRE9NV2luZG93KCk7CisKKyAg
ICBkb2N1bWVudC0+c3RvcmFnZUJsb2NraW5nU3RhdGVEaWRDaGFuZ2UoKTsKKworICAgIGF1dG8g
b3JpZ2luID0gY2xpZW50T3JpZ2luLnRvcE9yaWdpbi5zZWN1cml0eU9yaWdpbigpOworICAgIG9y
aWdpbi0+c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KHBhZ2Uuc2V0dGluZ3MoKS5zdG9yYWdlQmxv
Y2tpbmdQb2xpY3koKSk7CisKKyAgICBhdXRvIG9yaWdpbkFzVVJMID0gb3JpZ2luLT50b1VSTCgp
OworICAgIGRvY3VtZW50LT5zZXRTaXRlRm9yQ29va2llcyhvcmlnaW5Bc1VSTCk7CisgICAgZG9j
dW1lbnQtPnNldEZpcnN0UGFydHlGb3JDb29raWVzKG9yaWdpbkFzVVJMKTsKKyAgICBkb2N1bWVu
dC0+c2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24ob3JpZ2luLT5kb21haW5Gb3JDYWNoZVBhcnRp
dGlvbigpKTsKKworICAgIGlmIChhdXRvIHBvbGljeSA9IHBhcnNlUmVmZXJyZXJQb2xpY3kod29y
a2VyRmV0Y2hSZXN1bHQucmVmZXJyZXJQb2xpY3ksIFJlZmVycmVyUG9saWN5U291cmNlOjpIVFRQ
SGVhZGVyKSkKKyAgICAgICAgZG9jdW1lbnQtPnNldFJlZmVycmVyUG9saWN5KCpwb2xpY3kpOwor
CisgICAgbWFpbkZyYW1lLnNldERvY3VtZW50KFdURk1vdmUoZG9jdW1lbnQpKTsKK30KKwordm9p
ZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgY2FsbE9uTWFpblRocmVhZChbc2hh
cmVkV29ya2VySWRlbnRpZmllciA9IG1fd29ya2VyVGhyZWFkLT5pZGVudGlmaWVyKCksIGVycm9y
TWVzc2FnZSA9IGVycm9yTWVzc2FnZS5pc29sYXRlZENvcHkoKSwgbGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAg
aWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkuY29ubmVjdGlvbigpKQorICAgICAgICAgICAgY29ubmVjdGlvbi0+cG9zdEV4Y2VwdGlv
blRvV29ya2VyT2JqZWN0KHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGVycm9yTWVzc2FnZSwgbGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwpOworICAgIH0pOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29u
dGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oCnNpbWlsYXJpdHkgaW5kZXggNTQlCnJlbmFt
ZSBmcm9tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3h5LmgK
cmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29y
a2VyVGhyZWFkUHJveHkuaAppbmRleCBkYjdiODUwOWRmNWEuLmY3YjI5MjRkYmUzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRo
cmVhZFByb3h5LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjUsOCArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlNo
YXJlZFdvcmtlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXb3JrZXJEZWJ1Z2dlclByb3h5Lmgi
Ci0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlckxv
YWRlclByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyT2JqZWN0UHJveHkuaCIKICNpbmNsdWRlICJX
b3JrZXJPcHRpb25zLmgiCkBAIC0zNCwyOSArMzQsMjcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBDYWNoZVN0b3JhZ2VQcm92aWRlcjsKK2NsYXNzIFBhZ2U7CiBjbGFzcyBTaGFy
ZWRXb3JrZXI7CiBjbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWQ7CiAKLWNsYXNzIFNoYXJlZFdvcmtl
clByb3h5IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZFdvcmtlclByb3h5Piwg
cHVibGljIFdvcmtlckdsb2JhbFNjb3BlUHJveHksIHB1YmxpYyBXb3JrZXJPYmplY3RQcm94eSwg
cHVibGljIFdvcmtlckxvYWRlclByb3h5LCBwdWJsaWMgV29ya2VyRGVidWdnZXJQcm94eSB7Citz
dHJ1Y3QgQ2xpZW50T3JpZ2luOworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0OworCitjbGFzcyBT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eT4sIHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94eSwgcHVibGljIFdv
cmtlckRlYnVnZ2VyUHJveHksIHB1YmxpYyBXb3JrZXJPYmplY3RQcm94eSB7CiBwdWJsaWM6Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFNoYXJlZFdvcmtlclByb3h5JiBj
cmVhdGUoQXJncyYmLi4uIGFyZ3MpIHsgcmV0dXJuICpuZXcgU2hhcmVkV29ya2VyUHJveHkoc3Rk
Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIHNldHVwUGFnZUZvclNoYXJlZFdvcmtlcihQYWdlJiwgY29uc3QgVVJMJiwgY29uc3QgQ2xp
ZW50T3JpZ2luJiwgY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKTsKIAotICAgIFNoYXJlZFdvcmtl
clRocmVhZCogdGhyZWFkKCkgeyByZXR1cm4gbV93b3JrZXJUaHJlYWQuZ2V0KCk7IH0KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmPFNoYXJlZFdvcmtlclRocmVhZFBy
b3h5PiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVk
V29ya2VyVGhyZWFkUHJveHkoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7IH0KKyAgICB+
U2hhcmVkV29ya2VyVGhyZWFkUHJveHkoKTsKKworICAgIFNoYXJlZFdvcmtlcklkZW50aWZpZXIg
aWRlbnRpZmllcigpIGNvbnN0OworICAgIFNoYXJlZFdvcmtlclRocmVhZCYgdGhyZWFkKCkgeyBy
ZXR1cm4gbV93b3JrZXJUaHJlYWQuZ2V0KCk7IH0KKworICAgIGJvb2wgaXNUZXJtaW5hdGluZ09y
VGVybWluYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZDsg
fQorICAgIHZvaWQgc2V0QXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCgpIHsgbV9pc1Rlcm1pbmF0
aW5nT3JUZXJtaW5hdGVkID0gdHJ1ZTsgfQogCi0gICAgdm9pZCBzdGFydFdvcmtlckdsb2JhbFNj
b3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgdXNlckFnZW50LCBib29sIGlzT25saW5lLCBjb25zdCBTY3JpcHRCdWZmZXImIHNvdXJjZUNv
ZGUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGJvb2wgc2hv
dWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBDcm9zc09yaWdp
bkVtYmVkZGVyUG9saWN5JiwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBSZWZlcnJlclBvbGlj
eSwgV29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMsIEpTQzo6UnVudGltZUZsYWdz
KSBmaW5hbDsKLSAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCkgZmluYWw7Ci0g
ICAgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUoTWVzc2FnZVdpdGhNZXNzYWdl
UG9ydHMmJikgZmluYWw7Ci0gICAgdm9pZCBwb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUoRnVu
Y3Rpb248dm9pZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+JiYpIGZpbmFsOwotICAgIGJvb2wg
aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCB3b3JrZXJPYmplY3RE
ZXN0cm95ZWQoKSBmaW5hbDsKLSAgICB2b2lkIG5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29s
IGlzT25saW5lKSBmaW5hbDsKLSAgICB2b2lkIHN1c3BlbmRGb3JCYWNrRm9yd2FyZENhY2hlKCkg
ZmluYWw7Ci0gICAgdm9pZCByZXN1bWVGb3JCYWNrRm9yd2FyZENhY2hlKCkgZmluYWw7Ci0gICAg
dm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCkgZmluYWw7Ci0gICAgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgpIGZpbmFs
OwotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0cyYmKSBmaW5hbDsKLSAgICB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChi
b29sIGhhc1BlbmRpbmdBY3Rpdml0eSkgZmluYWw7Ci0gICAgdm9pZCByZXBvcnRQZW5kaW5nQWN0
aXZpdHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpIGZpbmFsOwogICAgIFJlZlB0cjxDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uPiBjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkgZmluYWw7CiAg
ICAgUmVmUHRyPFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24+IGNyZWF0ZVJU
Q0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24oKSBmaW5hbDsKICAgICB2b2lkIHBv
c3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmKSBmaW5hbDsKQEAg
LTY0LDE4ICs2MiwyNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvRGVidWdnZXIo
Y29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxl
ZEJ5V2ViSW5zcGVjdG9yKGJvb2wpIGZpbmFsOwogCisgICAgLy8gV29ya2VyT2JqZWN0UHJveHkK
KyAgICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlVVJMKSBmaW5hbDsKKyAgICB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkKCkg
ZmluYWwgeyB9CisgICAgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzJiYpIGZpbmFsIHsgfQorICAgIHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29y
a2VyT2JqZWN0KGJvb2wpIGZpbmFsIHsgfQorICAgIHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5
KGJvb2wpIGZpbmFsIHsgfQorCiBwcml2YXRlOgotICAgIFNoYXJlZFdvcmtlclByb3h5KFNoYXJl
ZFdvcmtlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZFdvcmtlclRocmVhZFByb3h5KFVu
aXF1ZVJlZjxQYWdlPiYmLCBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmln
aW4mLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgV29ya2VyRmV0Y2hSZXN1bHQmJiwgV29ya2VyT3B0
aW9ucyYmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImKTsK
IAotICAgIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpOworICAgIHN0
YXRpYyB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoYm9vbCBpc09uTGluZSk7CisgICAgdm9pZCBu
b3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9vbCBpc09ubGluZSk7CiAKLSAgICBXZWFrUHRyPFNo
YXJlZFdvcmtlcj4gbV9zaGFyZWRXb3JrZXI7Ci0gICAgUmVmUHRyPFNoYXJlZFdvcmtlclRocmVh
ZD4gbV93b3JrZXJUaHJlYWQ7Ci0gICAgY29uc3QgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ+IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLSAgICBjb25zdCBTdHJpbmcgbV9pZGVudGlm
aWVyRm9ySW5zcGVjdG9yOwotICAgIGJvb2wgbV9hc2tlZFRvVGVybWluYXRlIHsgZmFsc2UgfTsK
LSAgICBib29sIG1faGFzUGVuZGluZ0FjdGl2aXR5IHsgZmFsc2UgfTsKLSAgICBib29sIG1fbWF5
QmVEZXN0cm95ZWQgeyBmYWxzZSB9OworICAgIFVuaXF1ZVJlZjxQYWdlPiBtX3BhZ2U7CisgICAg
UmVmPERvY3VtZW50PiBtX2RvY3VtZW50OworICAgIFJlZjxTaGFyZWRXb3JrZXJUaHJlYWQ+IG1f
d29ya2VyVGhyZWFkOworICAgIENhY2hlU3RvcmFnZVByb3ZpZGVyJiBtX2NhY2hlU3RvcmFnZVBy
b3ZpZGVyOworICAgIFJlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBtX2NhY2hlU3RvcmFn
ZUNvbm5lY3Rpb247CisgICAgYm9vbCBtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQgeyBmYWxz
ZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXgg
NzU2ZGE4OGI0NWY3Li4yOWY0Yzc4MTgxODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMjgsNiAr
MjgsNyBAQCBzZXQoV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVRfRElS
fS9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zIgogICAgICIke1dFQktJVF9ESVJ9L05ldHdv
cmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50IgogICAgICIke1dFQktJVF9ESVJ9L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIiCisgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1By
b2Nlc3MvU2hhcmVkV29ya2VyIgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvY2FjaGUiCiAgICAg
IiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZSIKQEAgLTIwMiw2ICsyMDMsOSBA
QCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24KICAgICBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbgogCisgICAgTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24KKyAgICBOZXR3
b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbgorCiAgICAgTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNl
dAogCiAgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlv
bgpAQCAtMzA1LDYgKzMwOSw4IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKIAogICAg
IFdlYlByb2Nlc3MvU3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1h
bmFnZXIKIAorICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24KKyAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbgogICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rp
b24KICAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4
IDRjNjYyMjBjZjEyMi4uNzIyOWMxYjk4NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC05MSw2ICs5MSw4IEBAICQoUFJPSkVDVF9ESVIp
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5t
ZXNzYWdlcy5pCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMu
aW4KKyQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmlu
CiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9tYWMv
Y29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbgpAQCAtMjE3LDYgKzIxOSw4IEBA
ICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFs
dGltZU1lZGlhU291cmNlTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhuUHJvY2Vzc0Nv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0CmluZGV4IGUzYjU1ODQwYWUxZS4uYTg2MzI4MTQ3YjU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBi
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTYwNyw2
ICs2MDcsMTggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9X
ZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVz
c2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdC9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3Nh
Z2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZXMuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3Nh
Z2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNz
YWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTb2NrZXRDaGFubmVsTWVzc2FnZVJl
Y2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9X
ZWJTb2NrZXRDaGFubmVsTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdC9XZWJTb2NrZXRDaGFubmVsTWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMubWFrZQppbmRleCA3YWQ0OWUzNzM1ZjQuLjM1MWZmYWUwYTU4NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTMzLDYgKzEzMyw4IEBAIE1FU1NBR0VfUkVDRUlW
RVJTID0gXAogCU5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25s
b2FkVGFzayBcCiAJTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrIFwKIAlOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbiBcCisJTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb24gXAorCU5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIFwKIAlOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0U3RyZWFtIFwKIAlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2VzcyBcCiAJ
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyIFwKQEAgLTIyNSw2ICsyMjcsOCBA
QCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvU3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIgXAorCVdlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gXAorCVdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvV2ViUHJvY2VzcyBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDY4N2M4ZGI2OTEyYy4uYzdiMTdmZDcwNzg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNjYsNiArNjYsMTEgQEAKICNpbmNs
dWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgi
CisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
IldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1l
bnRTdG9yYWdlQWNjZXNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVFRQQ29va2llQWNjZXB0UG9s
aWN5Lmg+CkBAIC0xMzIsNiArMTM3LDcgQEAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtQcm9jZXNzJiBuZXQKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKCk7
CiAjZW5kaWYKKyAgICBlc3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCk7CiB9
CiAKIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoKQpAQCAtMTY2LDYgKzE3Miw3IEBAIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7CiAjZW5kaWYKKyAgICB1bnJl
Z2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpoYXNVcGxvYWRTdGF0ZUNoYW5nZWQoYm9vbCBoYXNVcGxvYWQpCkBA
IC0yNzUsNiArMjgyLDE3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvCiAgICAgfQogI2VuZGlm
CiAKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6Oldl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewor
ICAgICAgICBpZiAobV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uKQorICAgICAgICAgICAgbV9zaGFy
ZWRXb3JrZXJDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBpZiAobV9zaGFyZWRXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvbikKKyAgICAgICAgICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENv
bm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAg
aWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKQogICAgICAgICByZXR1cm4g
cGF5bWVudENvb3JkaW5hdG9yKCkuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rl
cik7CkBAIC0zOTgsOSArNDE2LDggQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwotI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAjZW5kaWYKKyAgICBtX3NoYXJlZFdv
cmtlckNvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKIAogICAgIC8vIFByb3RlY3Qgb3Vyc2Vs
ZiBhcyB3ZSBtaWdodCBiZSBvdGhlcndpc2UgYmUgZGVsZXRlZCBkdXJpbmcgdGhpcyBmdW5jdGlv
bi4KICAgICBSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IHByb3RlY3RvcigqdGhp
cyk7CkBAIC00NDEsNiArNDU4LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKICAgICB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7CiAjZW5kaWYKKyAgICB1
bnJlZ2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOwogCiAjaWYgRU5BQkxFKEFQUExFX1BB
WV9SRU1PVEVfVUkpCiAgICAgbV9wYXltZW50Q29vcmRpbmF0b3IgPSBudWxscHRyOwpAQCAtMTE4
Niw2ICsxMjA0LDYxIEBAIHNpemVfdCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Zmlu
ZE5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoV2ViQ29yZTo6UmVzb3VyCiAgICAgICAgIHJldHVybiBp
dGVtLnJlc291cmNlSUQgPT0gcmVzb3VyY2VJRDsKICAgICB9KTsKIH0KKwordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
JiByZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAi
ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb246Iik7CisgICAgYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7CisgICAgaWYgKGF1dG8qIHN3U2VydmVyID0gc2Vzc2lv
biA/IHNlc3Npb24tPnNoYXJlZFdvcmtlclNlcnZlcigpIDogbnVsbHB0cikKKyAgICAgICAgbV9z
aGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4oKnRoaXMsIFdURk1vdmUocmVnaXN0cmFibGVEb21h
aW4pLCAqc3dTZXJ2ZXIpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKK3ZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb24oKQoreworICAgIGlmIChtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOworICAgIGlm
ICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xP
RyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOiIp
OworCisgICAgYXV0byYgc2VydmVyID0gc2Vzc2lvbi0+ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVy
KCk7CisgICAgYXV0byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uPihtX25ldHdvcmtQcm9jZXNzLCBzZXJ2ZXIsIG1fY29ubmVjdGlvbi5nZXQo
KSwgbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7CisKKyAgICBtX3NoYXJlZFdvcmtlckNvbm5lY3Rp
b24gPSAqY29ubmVjdGlvbjsKKyAgICBzZXJ2ZXIuYWRkQ29ubmVjdGlvbihXVEZNb3ZlKGNvbm5l
Y3Rpb24pKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xvc2VT
aGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNF
X0xPRyhTaGFyZWRXb3JrZXIsICJjbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uOiIp
OworICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOworfQorCit2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU2hhcmVkV29ya2Vy
Q29ubmVjdGlvbigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIs
ICJ1bnJlZ2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbjoiKTsKKyAgICBpZiAobV9zaGFyZWRX
b3JrZXJDb25uZWN0aW9uKQorICAgICAgICBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24tPnNlcnZl
cigpLnJlbW92ZUNvbm5lY3Rpb24obV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uLT53ZWJQcm9jZXNz
SWRlbnRpZmllcigpKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
c2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKQor
eworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAic2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQ6Iik7CisgICAgbV9uZXR3
b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6U2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5l
ZWRlZCB7IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CisKKyAgICBtX3NoYXJlZFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbiogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNoYXJlZFdvcmtlckNv
bm5lY3Rpb24oKQoreworICAgIGlmICghbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uKQorICAgICAg
ICBlc3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCk7CisgICAgcmV0dXJuIG1f
c2hhcmVkV29ya2VyQ29ubmVjdGlvbi5nZXQoKTsKK30KICAgICAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVy
U1dDb25uZWN0aW9uKCkKQEAgLTEyMjMsOSArMTI5Niw5IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmNsb3NlU1dDb250ZXh0Q29ubmVjdGlvbigpCiAgICAgbV9zd0NvbnRl
eHRDb25uZWN0aW9uID0gbnVsbHB0cjsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCkKK3ZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNlcnZpY2VXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKQogewotICAgIENPTk5FQ1RJT05fUkVMRUFTRV9M
T0coU2VydmljZVdvcmtlciwgInNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRl
ZDogV2ViUHJvY2VzcyBubyBsb25nZXIgdXNlZnVsIGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2Vy
cyIpOworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgInNlcnZpY2VX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQ6IFdlYlByb2Nlc3Mg
bm8gbG9uZ2VyIHVzZWZ1bCBmb3IgcnVubmluZyBzZXJ2aWNlIHdvcmtlcnMiKTsKICAgICBtX25l
dHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdl
ck5lZWRlZCB7IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CiAKICAgICBtX3N3Q29udGV4
dENvbm5lY3Rpb24gPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDNhMWUx
NDA0MzM4Zi4uZDBhYTRlZjc0NTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC05Miw2
ICs5Miw4IEBAIGNsYXNzIE5ldHdvcmtTb2NrZXRTdHJlYW07CiBjbGFzcyBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwogY2xhc3MgV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CiAK
IG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogc3RydWN0IERhdGFLZXk7CkBAIC0xODEsMTAgKzE4
MywxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0
eShjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSk+
JiYpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQgc2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCk7CisgICAgdm9pZCBzZXJ2aWNlV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCk7CiAgICAgV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uKiBzd0Nvbm5lY3Rpb24oKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdv
cmtlckZldGNoVGFzaz4gY3JlYXRlRmV0Y2hUYXNrKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlmCisgICAgdm9pZCBzaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOworCisgICAg
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbiogc2hhcmVkV29ya2VyQ29ubmVjdGlvbigp
OwogCiAgICAgTmV0d29ya1NjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSgpIHsgcmV0dXJu
IG1fc2NoZW1lUmVnaXN0cnkuZ2V0KCk7IH0KIApAQCAtMjUzLDYgKzI1OCw5IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjcmVhdGVTb2NrZXRDaGFubmVsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIFdlYkNvcmU6OldlYlNvY2tldElkZW50aWZp
ZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYp
OwogICAgIHZvaWQgdXBkYXRlUXVvdGFCYXNlZE9uU3BhY2VVc2FnZUZvclRlc3RpbmcoY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb24oKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25u
ZWN0aW9uKCk7CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxp
c2hTV1NlcnZlckNvbm5lY3Rpb24oKTsKICAgICB2b2lkIGVzdGFibGlzaFNXQ29udGV4dENvbm5l
Y3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
Jiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmll
cj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwpAQCAtMjYwLDYgKzI2OCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bnJlZ2lzdGVyU1dD
b25uZWN0aW9uKCk7CiAjZW5kaWYKIAorICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29u
dGV4dENvbm5lY3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGNsb3Nl
U2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24oKTsKKwogICAgIHZvaWQgY3JlYXRlUlRDUHJv
dmlkZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNpZiBFTkFCTEUoV0VCX1JUQykK
ICAgICB2b2lkIGNvbm5lY3RUb1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlKFdlYkNvcmU6OlJU
Q0RhdGFDaGFubmVsSWRlbnRpZmllciBzb3VyY2UsIFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRl
bnRpZmllciBoYW5kbGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8Ym9v
bD4pPiYmKTsKQEAgLTQwNCw2ICs0MTUsOCBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8V2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uPiBtX3N3Q29ubmVjdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiBtX3N3Q29udGV4dENvbm5lY3Rpb247CiAjZW5k
aWYKKyAgICBXZWFrUHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24+IG1fc2hhcmVk
V29ya2VyQ29ubmVjdGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbj4gbV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbjsK
IAogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIGJvb2wgbV9pc1JlZ2lzdGVyZWRUb1JUQ0RhdGFD
aGFubmVsUHJveHkgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KaW5kZXggMjQyODM1MDUwYjI0Li5iOTdjYTM0NzliNGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtODgsNiArODgsOSBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAg
Q2xvc2VTV0NvbnRleHRDb25uZWN0aW9uKCkKICNlbmRpZgogCisgICAgRXN0YWJsaXNoU2hhcmVk
V29ya2VyQ29udGV4dENvbm5lY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdl
YlBhZ2VQcm94eUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pIC0+ICgpIEFz
eW5jCisgICAgQ2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpCisKICAgICBDcmVh
dGVSVENQcm92aWRlcigpIC0+ICgpIEFzeW5jCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgQ29u
bmVjdFRvUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2Uoc3RydWN0IFdlYkNvcmU6OlJUQ0RhdGFD
aGFubmVsSWRlbnRpZmllciBzb3VyY2UsIHN0cnVjdCBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElk
ZW50aWZpZXIgaGFuZGxlcikgLT4gKHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcmVzdWx0KSBBc3luYwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRl
eCBlMmIyNGQ4MzIyYjYuLmQ3NjE2Mjg1MGNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRl
ICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgog
I2luY2x1ZGUgIldlYlNXT3JpZ2luU3RvcmUuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRUYXNrLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9D
b29raWVKYXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgpAQCAtNjUz
LDYgKzY1NCwxMyBAQCBib29sIE5ldHdvcmtTZXNzaW9uOjpoYXNTZXJ2aWNlV29ya2VyRGF0YWJh
c2VQYXRoKCkgY29uc3QKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorV2Vi
U2hhcmVkV29ya2VyU2VydmVyJiBOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlU2hhcmVkV29ya2VyU2Vy
dmVyKCkKK3sKKyAgICBpZiAoIW1fc2hhcmVkV29ya2VyU2VydmVyKQorICAgICAgICBtX3NoYXJl
ZFdvcmtlclNlcnZlciA9IG1ha2VVbmlxdWU8V2ViU2hhcmVkV29ya2VyU2VydmVyPigqdGhpcyk7
CisgICAgcmV0dXJuICptX3NoYXJlZFdvcmtlclNlcnZlcjsKK30KKwogV2ViSURCU2VydmVyJiBO
ZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlV2ViSURCU2VydmVyKCkKIHsKICAgICBpZiAoIW1fd2ViSURC
U2VydmVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
LmgKaW5kZXggMTkzMDdjZjQwYmUzLi4zZjlkNmM5NTUwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTc5LDYgKzc5LDcgQEAgY2xhc3Mg
U2VydmljZVdvcmtlckZldGNoVGFzazsKIGNsYXNzIFdlYklEQlNlcnZlcjsKIGNsYXNzIFdlYlBh
Z2VOZXR3b3JrUGFyYW1ldGVyczsKIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlcjsKIGNsYXNzIFdlYlNvY2tldFRhc2s7CiBj
bGFzcyBXZWJTV09yaWdpblN0b3JlOwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwpAQCAt
MjEwLDYgKzIxMSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9u
KGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcmJiBzZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
KTsKICNlbmRpZgogCisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyKiBzaGFyZWRXb3JrZXJTZXJ2
ZXIoKSB7IHJldHVybiBtX3NoYXJlZFdvcmtlclNlcnZlci5nZXQoKTsgfQorICAgIFdlYlNoYXJl
ZFdvcmtlclNlcnZlciYgZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCk7CisKICAgICBXZWJJREJT
ZXJ2ZXIqIHdlYklEQlNlcnZlcigpIHsgcmV0dXJuIG1fd2ViSURCU2VydmVyLmdldCgpOyB9CiAg
ICAgV2ViSURCU2VydmVyJiBlbnN1cmVXZWJJREJTZXJ2ZXIoKTsKICAgICB2b2lkIGNsb3NlSURC
U2VydmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0zMTgsNiArMzIyLDcgQEAg
cHJvdGVjdGVkOgogICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckluZm8+IG1fc2Vydmlj
ZVdvcmtlckluZm87CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNXU2VydmVyPiBtX3N3
U2VydmVyOwogI2VuZGlmCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNoYXJlZFdvcmtlclNlcnZl
cj4gbV9zaGFyZWRXb3JrZXJTZXJ2ZXI7CiAKICAgICBTdHJpbmcgbV9pZGJEYXRhYmFzZVBhdGg7
CiAgICAgUmVmUHRyPFdlYklEQlNlcnZlcj4gbV93ZWJJREJTZXJ2ZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IDVhODcwM2Vm
ZDZkNS4uMjdmNmU4ZGE1ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQgV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptYXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllCiAKIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0
aW9uSXNOb0xvbmdlck5lZWRlZCgpCiB7Ci0gICAgbV9jb25uZWN0aW9uLnNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCgpOworICAgIG1fY29ubmVjdGlvbi5zZXJ2aWNlV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCk7CiB9CiAKIHZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzZXRUaHJvdHRsZVN0YXRlKGJvb2wgaXNU
aHJvdHRsZWFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1No
YXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjNjNjM2NGFhNTQwOAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNo
YXJlZFdvcmtlclNlcnZlci5jcHAKQEAgLTAsMCArMSwyOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgiCisKKyNp
bmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU2hhcmVkV29y
a2VyU2VydmVyOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24p
CisgICAgOiBtX3Nlc3Npb24oc2Vzc2lvbikKK3sKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVy
Ojp+V2ViU2hhcmVkV29ya2VyU2VydmVyKCkgPSBkZWZhdWx0OworCitQQUw6OlNlc3Npb25JRCBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNlc3Npb25JRCgpCit7CisgICAgcmV0dXJuIG1fc2Vzc2lv
bi5zZXNzaW9uSUQoKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RT
aGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCBXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFVS
TCYmIHVybCwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBvcnQsIFdlYkNvcmU6
Oldvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zKQoreworICAgIFdlYkNvcmU6OlNoYXJlZFdv
cmtlcktleSBrZXkgeyBvcmlnaW4sIHVybCwgd29ya2VyT3B0aW9ucy5uYW1lIH07CisgICAgYXV0
byYgc2hhcmVkV29ya2VyID0gbV9zaGFyZWRXb3JrZXJzLmVuc3VyZShrZXksIFsmXSB7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFNoYXJlZFdvcmtlcj4ob3JpZ2luLCB1cmwsIHdvcmtlck9w
dGlvbnMpOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRX
b3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwcml2YXRlfXMsIHNoYXJlZFdvcmtlcklkZW50aWZp
ZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSwgc2hhcmVkV29ya2VyLT5pZGVudGlmaWVyLnRvVUludDY0KCkpOworCisgICAg
aWYgKHNoYXJlZFdvcmtlci0+d29ya2VyT3B0aW9ucy50eXBlICE9IHdvcmtlck9wdGlvbnMudHlw
ZSB8fCBzaGFyZWRXb3JrZXItPndvcmtlck9wdGlvbnMuY3JlZGVudGlhbHMgIT0gd29ya2VyT3B0
aW9ucy5jcmVkZW50aWFscykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3Jr
ZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6IEEgd29ya2Vy
IGFscmVhZHkgZXhpc3RzIHdpdGggdGhpcyBuYW1lIGJ1dCBoYXMgZGlmZmVyZW50IHR5cGUgLyBj
cmVkZW50aWFscyIpOworICAgICAgICBpZiAoYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1fY29u
bmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZp
ZXIoKSkpCisgICAgICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uLT5ub3RpZnlXb3JrZXJPYmplY3RP
ZkxvYWRGYWlsdXJlKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzLmFkZChz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBwb3J0KTsKKworICAgIGlmIChzaGFyZWRXb3Jr
ZXItPnNoYXJlZFdvcmtlck9iamVjdHMuc2l6ZSgpID4gMSkgeworICAgICAgICBSRUxFQVNFX0xP
RyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3Jr
ZXI6IEEgc2hhcmVkIHdvcmtlciB3aXRoIHRoaXMgVVJMIGFscmVhZHkgZXhpc3RzIChub3cgc2hh
cmVkIGJ5ICV1IHNoYXJlZCB3b3JrZXIgb2JqZWN0cykiLCBzaGFyZWRXb3JrZXItPnNoYXJlZFdv
cmtlck9iamVjdHMuc2l6ZSgpKTsKKyAgICAgICAgaWYgKHNoYXJlZFdvcmtlci0+aXNSdW5uaW5n
KSB7CisgICAgICAgICAgICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IG1fY29udGV4dENvbm5l
Y3Rpb25zLmdldChzaGFyZWRXb3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgICAgICAg
ICAgQVNTRVJUKGNvbnRleHRDb25uZWN0aW9uKTsKKyAgICAgICAgICAgIGlmIChjb250ZXh0Q29u
bmVjdGlvbikKKyAgICAgICAgICAgICAgICBwb3N0Q29ubmVjdEV2ZW50KCpjb250ZXh0Q29ubmVj
dGlvbiwgc2hhcmVkV29ya2VyLT5pZGVudGlmaWVyLCBwb3J0LCBvcmlnaW4uY2xpZW50T3JpZ2lu
LnRvU3RyaW5nKCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNT
RVJUKCFzaGFyZWRXb3JrZXItPmlzUnVubmluZyk7CisKKyAgICBhdXRvKiBzZXJ2ZXJDb25uZWN0
aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9j
ZXNzSWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlQoc2VydmVyQ29ubmVjdGlvbik7CisKKyAgICBS
RUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RT
aGFyZWRXb3JrZXI6IEZldGNoaW5nIHNoYXJlZCB3b3JrZXIgc2NyaXB0IGluIGNsaWVudCIpOwor
ICAgIHNlcnZlckNvbm5lY3Rpb24tPmZldGNoU2NyaXB0SW5DbGllbnQodXJsLCBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLCB3b3JrZXJPcHRpb25zLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfSwgc2hhcmVkV29ya2VyID0gV2Vha1B0ciB7ICpzaGFyZWRXb3JrZXIgfV0oV2ViQ29y
ZTo6V29ya2VyRmV0Y2hSZXN1bHQmJiBmZXRjaFJlc3VsdCkgeworICAgICAgICBpZiAod2Vha1Ro
aXMgJiYgc2hhcmVkV29ya2VyKQorICAgICAgICAgICAgd2Vha1RoaXMtPmRpZEZpbmlzaEZldGNo
aW5nU2hhcmVkV29ya2VyU2NyaXB0KCpzaGFyZWRXb3JrZXIsIFdURk1vdmUoZmV0Y2hSZXN1bHQp
KTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmxhdW5jaFNoYXJl
ZFdvcmtlcihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0
Q29ubmVjdGlvbiwgU2hhcmVkV29ya2VyJiBzaGFyZWRXb3JrZXIpCit7CisgICAgUkVMRUFTRV9M
T0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpsYXVuY2hTaGFyZWRXb3Jr
ZXI6IGNvbnRleHRDb25uZWN0aW9uPSVwLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2
NCwgJmNvbnRleHRDb25uZWN0aW9uLCBzaGFyZWRXb3JrZXIuaWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKKyAgICBjb250ZXh0Q29ubmVjdGlvbi5sYXVuY2hTaGFyZWRXb3JrZXIoc2hhcmVkV29ya2Vy
Lm9yaWdpbiwgc2hhcmVkV29ya2VyLmlkZW50aWZpZXIsIHNoYXJlZFdvcmtlci51cmwsIHNoYXJl
ZFdvcmtlci53b3JrZXJPcHRpb25zLCBzaGFyZWRXb3JrZXIuZmV0Y2hSZXN1bHQpOworICAgIHNo
YXJlZFdvcmtlci5pc1J1bm5pbmcgPSB0cnVlOworICAgIGF1dG8gc291cmNlT3JpZ2luID0gc2hh
cmVkV29ya2VyLm9yaWdpbi5jbGllbnRPcmlnaW4udG9TdHJpbmcoKTsKKyAgICBmb3IgKGF1dG8m
IHBvcnQgOiBzaGFyZWRXb3JrZXIuc2hhcmVkV29ya2VyT2JqZWN0cy52YWx1ZXMoKSkKKyAgICAg
ICAgcG9zdENvbm5lY3RFdmVudChjb250ZXh0Q29ubmVjdGlvbiwgc2hhcmVkV29ya2VyLmlkZW50
aWZpZXIsIHBvcnQsIHNvdXJjZU9yaWdpbik7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyOjpwb3N0Q29ubmVjdEV2ZW50KFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24mIGNvbnRleHRDb25uZWN0aW9uLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVy
IHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2Fn
ZVBvcnQmIHNvdXJjZVBvcnQsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQoreworICAgIFJF
TEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cG9zdENvbm5l
Y3RFdmVudDogY29udGV4dENvbm5lY3Rpb249JXAsIHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIg
UFJJdTY0LCAmY29udGV4dENvbm5lY3Rpb24sIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50
NjQoKSk7CisgICAgY29udGV4dENvbm5lY3Rpb24ucG9zdENvbm5lY3RFdmVudChzaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyLCBzb3VyY2VQb3J0LCBzb3VyY2VPcmlnaW4pOworfQorCit2b2lkIFdlYlNo
YXJlZFdvcmtlclNlcnZlcjo6ZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRXb3JrZXJTY3JpcHQoU2hh
cmVkV29ya2VyJiB3b3JrZXIsIFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYgZmV0Y2hSZXN1
bHQpCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2Vy
dmVyOjpkaWRGaW5pc2hGZXRjaGluZ1NoYXJlZFdvcmtlclNjcmlwdCBzaGFyZWRXb3JrZXJJZGVu
dGlmaWVyPSUiIFBSSXU2NCAiLCB3b3JrZXI9JXAsIHN1Y2Nlc3M9JWQiLCB3b3JrZXIuaWRlbnRp
Zmllci50b1VJbnQ2NCgpLCAmd29ya2VyLCBmZXRjaFJlc3VsdC5lcnJvci5pc051bGwoKSk7Cisg
ICAgaWYgKCFmZXRjaFJlc3VsdC5lcnJvci5pc051bGwoKSkgeworICAgICAgICAvLyBGZXRjaCBm
YWlsZWQsIG5vdGlmeSB0aGUgU2hhcmVkV29ya2VyIG9iamVjdHMuCisgICAgICAgIGZvciAoYXV0
byBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIDogd29ya2VyLnNoYXJlZFdvcmtlck9iamVj
dHMua2V5cygpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1f
Y29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50
aWZpZXIoKSkpCisgICAgICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlvbi0+bm90aWZ5V29ya2Vy
T2JqZWN0T2ZMb2FkRmFpbHVyZShzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICAg
ICAgfQorICAgICAgICBtX3NoYXJlZFdvcmtlcnMucmVtb3ZlKHdvcmtlci5rZXkoKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3b3JrZXIuZmV0Y2hSZXN1bHQgPSBXVEZNb3ZlKGZl
dGNoUmVzdWx0KTsKKworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSB3b3JrZXIucmVnaXN0
cmFibGVEb21haW4oKTsKKyAgICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IGNvbnRleHRDb25u
ZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pOworICAgIGlmICgh
Y29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAgICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24ocmVn
aXN0cmFibGVEb21haW4pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbGF1bmNoU2hh
cmVkV29ya2VyKCpjb250ZXh0Q29ubmVjdGlvbiwgd29ya2VyKTsKK30KKworYm9vbCBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6Om5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFp
bihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pIGNv
bnN0Cit7CisgICAgZm9yIChhdXRvJiBzaGFyZWRXb3JrZXIgOiBtX3NoYXJlZFdvcmtlcnMudmFs
dWVzKCkpIHsKKyAgICAgICAgaWYgKHJlZ2lzdHJhYmxlRG9tYWluLm1hdGNoZXMoc2hhcmVkV29y
a2VyLT51cmwpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBm
YWxzZTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNyZWF0ZUNvbnRleHRDb25u
ZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFp
bikKK3sKKyAgICBBU1NFUlQoIW1fY29udGV4dENvbm5lY3Rpb25zLmNvbnRhaW5zKHJlZ2lzdHJh
YmxlRG9tYWluKSk7CisgICAgaWYgKG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWlucy5j
b250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgIHJldHVybjsKKworICAgIFJFTEVB
U0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y3JlYXRlQ29udGV4
dENvbm5lY3Rpb24gd2lsbCBjcmVhdGUgYSBjb25uZWN0aW9uIik7CisKKyAgICBtX3BlbmRpbmdD
b250ZXh0Q29ubmVjdGlvbkRvbWFpbnMuYWRkKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBtX3Nl
c3Npb24ubmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFNoYXJl
ZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHJlZ2lzdHJhYmxlRG9t
YWluLCBtX3Nlc3Npb24uc2Vzc2lvbklEKCkgfSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH0sIHJlZ2lzdHJhYmxlRG9tYWluXSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAi
V2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbiBzaG91bGQgbm93
IGhhdmUgY3JlYXRlZCBhIGNvbm5lY3Rpb24iKTsKKworICAgICAgICBBU1NFUlQobV9wZW5kaW5n
Q29udGV4dENvbm5lY3Rpb25Eb21haW5zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSk7Cisg
ICAgICAgIG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWlucy5yZW1vdmUocmVnaXN0cmFi
bGVEb21haW4pOworCisgICAgICAgIGlmIChtX2NvbnRleHRDb25uZWN0aW9ucy5jb250YWlucyhy
ZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKG5l
ZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFp
bikpCisgICAgICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFp
bik7CisgICAgfSwgMCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjphZGRDb250
ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBj
b250ZXh0Q29ubmVjdGlvbikKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI6OmFkZENvbnRleHRDb25uZWN0aW9uKCVwKSB3ZWJQcm9jZXNzSWRl
bnRpZmllcj0lIiBQUkl1NjQsICZjb250ZXh0Q29ubmVjdGlvbiwgY29udGV4dENvbm5lY3Rpb24u
d2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKworICAgIEFTU0VSVCghbV9jb250
ZXh0Q29ubmVjdGlvbnMuY29udGFpbnMoY29udGV4dENvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21h
aW4oKSkpOworCisgICAgbV9jb250ZXh0Q29ubmVjdGlvbnMuYWRkKGNvbnRleHRDb25uZWN0aW9u
LnJlZ2lzdHJhYmxlRG9tYWluKCksICZjb250ZXh0Q29ubmVjdGlvbik7CisKKyAgICBjb250ZXh0
Q29ubmVjdGlvbkNyZWF0ZWQoY29udGV4dENvbm5lY3Rpb24pOworfQorCit2b2lkIFdlYlNoYXJl
ZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24pCit7CisgICAgUkVMRUFT
RV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1vdmVDb250ZXh0
Q29ubmVjdGlvbiglcCkgd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCAmY29udGV4dENv
bm5lY3Rpb24sIGNvbnRleHRDb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50
NjQoKSk7CisKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gY29udGV4dENvbm5lY3Rpb24u
cmVnaXN0cmFibGVEb21haW4oKTsKKworICAgIEFTU0VSVChtX2NvbnRleHRDb25uZWN0aW9ucy5n
ZXQocmVnaXN0cmFibGVEb21haW4pID09ICZjb250ZXh0Q29ubmVjdGlvbik7CisKKyAgICBtX2Nv
bnRleHRDb25uZWN0aW9ucy5yZW1vdmUocmVnaXN0cmFibGVEb21haW4pOworCisgICAgaWYgKG5l
ZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFp
bikpCisgICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluKTsK
K30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRl
ZChXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVj
dGlvbikKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZCglcCkgd2ViUHJvY2Vzc0lkZW50aWZpZXI9
JSIgUFJJdTY0LCAmY29udGV4dENvbm5lY3Rpb24sIGNvbnRleHRDb25uZWN0aW9uLndlYlByb2Nl
c3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgYXV0byYgcmVnaXN0cmFibGVEb21haW4g
PSBjb250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpOworICAgIGZvciAoYXV0byYg
d29ya2VyIDogbV9zaGFyZWRXb3JrZXJzLnZhbHVlcygpKSB7CisgICAgICAgIGlmICh3b3JrZXIt
PmRpZEZpbmlzaEZldGNoaW5nKCkgJiYgcmVnaXN0cmFibGVEb21haW4ubWF0Y2hlcyh3b3JrZXIt
PnVybCkpCisgICAgICAgICAgICBsYXVuY2hTaGFyZWRXb3JrZXIoY29udGV4dENvbm5lY3Rpb24s
ICp3b3JrZXIpOworICAgIH0KK30KKworYXV0byBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNoYXJl
ZFdvcmtlckJ5SWRlbnRpZmllcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJl
ZFdvcmtlcklkZW50aWZpZXIpIC0+IFNoYXJlZFdvcmtlcioKK3sKKyAgICBmb3IgKGF1dG8mIHdv
cmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAod29ya2VyLT5p
ZGVudGlmaWVyID09IHNoYXJlZFdvcmtlcklkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4g
d29ya2VyLmdldCgpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworYXV0byBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI6OnNoYXJlZFdvcmtlckJ5T2JqZWN0SWRlbnRpZmllcihXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIpIC0+IFNoYXJlZFdvcmtlcioKK3sKKyAgICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fc2hhcmVk
V29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAod29ya2VyLT5zaGFyZWRXb3JrZXJPYmpl
Y3RzLmNvbnRhaW5zKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpKQorICAgICAgICAgICAg
cmV0dXJuIHdvcmtlci5nZXQoKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3Zv
aWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIpCit7CisgICAgYXV0byogd29ya2VyID0gc2hhcmVkV29ya2VyQnlPYmplY3RJZGVu
dGlmaWVyKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HKFNo
YXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hhcmVkV29ya2VyT2JqZWN0SXNH
b2luZ0F3YXk6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cywgd29ya2Vy
PSVwIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRh
KCksIHdvcmtlcik7CisgICAgaWYgKCF3b3JrZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHdv
cmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5yZW1vdmUoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllcik7CisgICAgaWYgKCF3b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBzaHV0RG93blNoYXJlZFdvcmtlcih3b3JrZXItPmtleSgp
KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNodXREb3duU2hhcmVkV29ya2Vy
KGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYga2V5KQoreworICAgIGF1dG8gd29ya2Vy
ID0gbV9zaGFyZWRXb3JrZXJzLnRha2Uoa2V5KTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3Jr
ZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNodXREb3duU2hhcmVkV29ya2VyOiBzaGFyZWRX
b3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCAiLCB3b3JrZXI9JXAiLCB3b3JrZXIgPyB3b3JrZXIt
PmlkZW50aWZpZXIudG9VSW50NjQoKSA6IDAsIHdvcmtlci5nZXQoKSk7CisgICAgaWYgKCF3b3Jr
ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gY29u
dGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbih3b3JrZXItPnJlZ2lzdHJhYmxlRG9t
YWluKCkpOworICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKwor
ICAgIGNvbnRleHRDb25uZWN0aW9uLT50ZXJtaW5hdGVTaGFyZWRXb3JrZXIod29ya2VyLT5pZGVu
dGlmaWVyKTsKKworICAgIGlmICghbmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxl
RG9tYWluKHdvcmtlci0+cmVnaXN0cmFibGVEb21haW4oKSkpCisgICAgICAgIGNvbnRleHRDb25u
ZWN0aW9uLT5jb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOworfQorCit2b2lkIFdlYlNoYXJl
ZFdvcmtlclNlcnZlcjo6YWRkQ29ubmVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQoreworICAgIGF1dG8gcHJvY2Vzc0lk
ZW50aWZpZXIgPSBjb25uZWN0aW9uLT53ZWJQcm9jZXNzSWRlbnRpZmllcigpOworICAgIFJFTEVB
U0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29ubmVjdGlv
biglcCk6IHByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgY29ubmVjdGlvbi5nZXQoKSwgcHJv
Y2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb25zLmNv
bnRhaW5zKHByb2Nlc3NJZGVudGlmaWVyKSk7CisgICAgbV9jb25uZWN0aW9ucy5hZGQocHJvY2Vz
c0lkZW50aWZpZXIsIFdURk1vdmUoY29ubmVjdGlvbikpOworfQorCit2b2lkIFdlYlNoYXJlZFdv
cmtlclNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlvbihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBw
cm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25z
LnRha2UocHJvY2Vzc0lkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwg
IldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlvbiglcCk6IHByb2Nlc3NJZGVu
dGlmaWVyPSUiIFBSSXU2NCwgY29ubmVjdGlvbi5nZXQoKSwgcHJvY2Vzc0lkZW50aWZpZXIudG9V
SW50NjQoKSk7CisgICAgQVNTRVJUKGNvbm5lY3Rpb24pOworCisgICAgVmVjdG9yPFdlYkNvcmU6
OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI+IHNoYXJlZFdvcmtlck9iamVjdHNHb2luZ0F3
YXk7CisgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3NoYXJlZFdvcmtlcnMudmFsdWVzKCkpIHsK
KyAgICAgICAgZm9yIChhdXRvJiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIDogd29ya2Vy
LT5zaGFyZWRXb3JrZXJPYmplY3RzLmtleXMoKSkgeworICAgICAgICAgICAgaWYgKHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBwcm9jZXNzSWRlbnRp
ZmllcikKKyAgICAgICAgICAgICAgICBzaGFyZWRXb3JrZXJPYmplY3RzR29pbmdBd2F5LmFwcGVu
ZChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBm
b3IgKGF1dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA6IHNoYXJlZFdvcmtlck9iamVj
dHNHb2luZ0F3YXkpCisgICAgICAgIHNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworfQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OlNo
YXJlZFdvcmtlcjo6U2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3Jp
Z2luLCBjb25zdCBVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYgd29ya2Vy
T3B0aW9ucykKKyAgICA6IGlkZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmll
cjo6Z2VuZXJhdGUoKSkKKyAgICAsIG9yaWdpbihvcmlnaW4pCisgICAgLCB1cmwodXJsKQorICAg
ICwgd29ya2VyT3B0aW9ucyh3b3JrZXJPcHRpb25zKQoreworfQorCit2b2lkIFdlYlNoYXJlZFdv
cmtlclNlcnZlcjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdv
cmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCkKK3sKKyAgICBhdXRvKiB3b3JrZXIgPSBzaGFyZWRXb3JrZXJCeUlkZW50aWZp
ZXIoc2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0dfRVJST1IoU2hhcmVk
V29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmpl
Y3Q6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHdvcmtlcj0lcCIsIHNoYXJl
ZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSwgd29ya2VyKTsKKyAgICBpZiAoIXdvcmtlcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvIHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIgOiB3b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMua2V5cygpKSB7CisgICAgICAgIGlm
IChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIHNlcnZl
ckNvbm5lY3Rpb24tPnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291
cmNlVVJMKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2Vy
U2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJT
aGFyZWRXb3JrZXJTZXJ2ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmM4MzFlMGE0MmFiNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5oCkBAIC0wLDAgKzEs
MTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL1By
b2Nlc3NJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1NoYXJlZFdvcmtlcktleS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyRmV0Y2hSZXN1bHQu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlck9wdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworfQor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya1Nlc3Npb247CitjbGFzcyBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyIDogcHVi
bGljIENhbk1ha2VXZWFrUHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlcj4geworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYlNoYXJlZFdvcmtlclNl
cnZlcihOZXR3b3JrU2Vzc2lvbiYpOworICAgIH5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIoKTsKKwor
ICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpOworCisgICAgdm9pZCByZXF1ZXN0U2hhcmVk
V29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBX
ZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYpOworICAgIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0SXNH
b2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisKKyAgICB2
b2lkIGFkZENvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24mKTsKKyAgICB2b2lkIHJlbW92ZUNvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKKworICAgIHZvaWQgYWRkQ29ubmVjdGlv
bihzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4mJik7Cisg
ICAgdm9pZCByZW1vdmVDb25uZWN0aW9uKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKKwor
ICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIGNvbnRleHRDb25u
ZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mIGRvbWFpbikgeyByZXR1cm4gbV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0KGRvbWFpbik7IH0K
KworICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdv
cmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCitwcml2YXRl
OgorICAgIHZvaWQgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mKTsKKworICAgIGJvb2wgbmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lz
dHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7Cisg
ICAgdm9pZCBjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbiYpOworCisgICAgc3RydWN0IFNoYXJlZFdvcmtlciA6IENhbk1ha2VX
ZWFrUHRyPFNoYXJlZFdvcmtlcj4geworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExP
Q0FURUQ7CisKKyAgICAgICAgU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYsIGNvbnN0IFVSTCYsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmKTsKKworICAgICAg
ICBib29sIGRpZEZpbmlzaEZldGNoaW5nKCkgY29uc3QgeyByZXR1cm4gISFmZXRjaFJlc3VsdC5z
Y3JpcHQ7IH0KKyAgICAgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5IGtleSgpIGNvbnN0IHsg
cmV0dXJuIHsgb3JpZ2luLCB1cmwsIHdvcmtlck9wdGlvbnMubmFtZSB9OyB9CisgICAgICAgIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1
cm4gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfTsgfQorCisgICAgICAgIFdlYkNv
cmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICAgICAgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luIG9yaWdpbjsKKyAgICAgICAgVVJMIHVybDsKKyAgICAgICAgV2ViQ29yZTo6
V29ya2VyT3B0aW9ucyB3b3JrZXJPcHRpb25zOworICAgICAgICBIYXNoTWFwPFdlYkNvcmU6OlNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBv
cnQ+IHNoYXJlZFdvcmtlck9iamVjdHM7CisgICAgICAgIFdlYkNvcmU6OldvcmtlckZldGNoUmVz
dWx0IGZldGNoUmVzdWx0OworICAgICAgICBib29sIGlzUnVubmluZyB7IGZhbHNlIH07CisgICAg
fTsKKworICAgIFNoYXJlZFdvcmtlciogc2hhcmVkV29ya2VyQnlJZGVudGlmaWVyKFdlYkNvcmU6
OlNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworICAgIFNoYXJlZFdvcmtlciogc2hhcmVkV29ya2Vy
QnlPYmplY3RJZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIp
OworICAgIHZvaWQgZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRXb3JrZXJTY3JpcHQoU2hhcmVkV29y
a2VyJiwgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJik7CisgICAgdm9pZCBsYXVuY2hTaGFy
ZWRXb3JrZXIoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYsIFNoYXJl
ZFdvcmtlciYpOworICAgIHZvaWQgcG9zdENvbm5lY3RFdmVudChXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYsIGNvbnN0IFN0cmluZyYgc291
cmNlT3JpZ2luKTsKKyAgICB2b2lkIHNodXREb3duU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6
OlNoYXJlZFdvcmtlcktleSYpOworCisgICAgTmV0d29ya1Nlc3Npb24mIG1fc2Vzc2lvbjsKKyAg
ICBIYXNoTWFwPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4+IG1fY29ubmVjdGlvbnM7CisgICAgSGFzaE1h
cDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbio+IG1fY29udGV4dENvbm5lY3Rpb25zOworICAgIEhhc2hTZXQ8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4+IG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWluczsK
KyAgICBIYXNoTWFwPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSwgc3RkOjp1bmlxdWVfcHRyPFNo
YXJlZFdvcmtlcj4+IG1fc2hhcmVkV29ya2VyczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjNjZjYxMGI2YmI4YQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29y
a2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTA2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9j
ZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbk1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Xb3JrZXJGZXRjaFJlc3VsdC5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxF
QVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1
NjQgIl0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsIG1fd2Vi
UHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgQ09O
TkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoU2hh
cmVkV29ya2VyLCAiJXAgLSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OiIgZm10LCB0aGlzLCBtX3dlYlByb2Nlc3NJZGVu
dGlmaWVyLnRvVUludDY0KCksICMjX19WQV9BUkdTX18pCisKK1dlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb246OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oTmV0d29ya1Byb2Nl
c3MmIG5ldHdvcmtQcm9jZXNzLCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlciwgSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9j
ZXNzSWRlbnRpZmllcikKKyAgICA6IG1fY29udGVudENvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAg
ICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCisgICAgLCBtX3NlcnZlcihzZXJ2
ZXIpCisgICAgLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKHdlYlByb2Nlc3NJZGVudGlmaWVyKQor
eworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb246Iik7Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246On5XZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9H
KCJ+V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjoiKTsKK30KKworSVBDOjpDb25uZWN0
aW9uKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGVudENvbm5lY3Rpb24ucHRyKCk7Cit9
CisKK1BBTDo6U2Vzc2lvbklEIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OnNlc3Np
b25JRCgpCit7CisgICAgcmV0dXJuIHNlcnZlcigpLnNlc3Npb25JRCgpOworfQorCitOZXR3b3Jr
U2Vzc2lvbiogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2Vzc2lvbigpCit7Cisg
ICAgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKTsK
K30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpyZXF1ZXN0U2hhcmVk
V29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBVUkwmJiB1
cmwsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBXZWJDb3JlOjpXb3Jr
ZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucykKK3sKKyAgICBBU1NFUlQoc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fd2ViUHJvY2Vzc0lkZW50aWZp
ZXIpOyAvLyBGSVhNRTogU2hvdWxkIGJlIGEgTUVTU0FHRV9DSEVDSygpLgorICAgIENPTk5FQ1RJ
T05fUkVMRUFTRV9MT0coInJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHRoaXMtPnNlc3Np
b24oKSkKKyAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCkucmVxdWVz
dFNoYXJlZFdvcmtlcihXVEZNb3ZlKG9yaWdpbiksIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIsIFdURk1vdmUodXJsKSwgV1RGTW92ZShwb3J0KSwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSk7
Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6ZmV0Y2hTY3JpcHRJ
bkNsaWVudChjb25zdCBVUkwmIHVybCwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJP
cHRpb25zJiB3b3JrZXJPcHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Oldv
cmtlckZldGNoUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIENPTk5FQ1RJ
T05fUkVMRUFTRV9MT0coImZldGNoU2NyaXB0SW5DbGllbnQ6IHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OkZldGNoU2NyaXB0SW5DbGllbnQgeyB1cmws
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHdvcmtlck9wdGlvbnMgfSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb246Om5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZhaWx1cmUoV2ViQ29yZTo6U2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQoreworICAg
IENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IoIm5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZh
aWx1cmU6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpOb3RpZnlXb3JrZXJP
YmplY3RPZkxvYWRGYWlsdXJlIHsgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciB9KTsKK30K
Kwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0RXhjZXB0aW9uVG9X
b3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQorewor
ICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IoInBvc3RFeGNlcHRpb25Ub1dvcmtlck9i
amVjdDogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OlBvc3RFeGNlcHRpb25U
b1dvcmtlck9iamVjdCB7IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGVycm9yTWVzc2Fn
ZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwgfSk7Cit9CisKK3ZvaWQgV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3
YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyKQoreworICAgIEFTU0VSVChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7IC8vIEZJWE1F
OiBTaG91bGQgYmUgYSBNRVNTQUdFX0NIRUNLKCkuCisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xP
Rygic2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXk6IHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHRoaXMtPnNlc3Npb24o
KSkKKyAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCkuc2hhcmVkV29y
a2VyT2JqZWN0SXNHb2luZ0F3YXkoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7Cit9CisK
KyN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNF
X0xPR19FUlJPUgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLmM2ODQ5YWIwMmVhYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb24uaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CitzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7CitzdHJ1Y3QgV29ya2VyT3B0aW9uczsKK30KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtQcm9jZXNzOworY2xhc3MgV2ViU2hh
cmVkV29ya2VyU2VydmVyOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbiA6IHB1Ymxp
YyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbihOZXR3b3JrUHJvY2VzcyYsIFdlYlNoYXJlZFdvcmtlclNlcnZlciYsIElQ
Qzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICB+V2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpOworCisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVy
JiBzZXJ2ZXIoKSB7IHJldHVybiBtX3NlcnZlcjsgfQorICAgIGNvbnN0IFdlYlNoYXJlZFdvcmtl
clNlcnZlciYgc2VydmVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXI7IH0KKworICAgIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCgpOworICAgIE5ldHdvcmtTZXNzaW9uKiBzZXNzaW9uKCk7Cisg
ICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOyB9CisKKyAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAg
dm9pZCBmZXRjaFNjcmlwdEluQ2xpZW50KGNvbnN0IFVSTCYsIFdlYkNvcmU6OlNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYpPiYmKTsKKyAgICB2
b2lkIG5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZhaWx1cmUoV2ViQ29yZTo6U2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllcik7CisgICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qo
V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCk7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyLgorICAg
IElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsK
KyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIDA7IH0KKworICAgIC8vIElQQyBtZXNzYWdlcy4KKyAgICB2b2lkIHJlcXVlc3RTaGFy
ZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYs
IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJik7CisgICAgdm9pZCBzaGFyZWRXb3JrZXJPYmplY3RJ
c0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKworICAg
IFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29udGVudENvbm5lY3Rpb247CisgICAgUmVmPE5ldHdv
cmtQcm9jZXNzPiBtX25ldHdvcmtQcm9jZXNzOworICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlciYg
bV9zZXJ2ZXI7CisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV93ZWJQcm9jZXNzSWRl
bnRpZmllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hh
cmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mYWU0YTA4MDM3NzkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjYg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4g
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKKyAgICBSZXF1
ZXN0U2hhcmVkV29ya2VyKHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCBXZWJD
b3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIsIFVSTCB1cmwsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQgcG9ydCwgc3Ry
dWN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMgd29ya2VyT3B0aW9ucykKKyAgICBTaGFyZWRXb3Jr
ZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVk
V29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDljMTEyNDE1MjE4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSwxMDcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5o
IgorI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAi
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNs
dWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNk
ZWZpbmUgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xP
RyhTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQgIl0g
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsIHdl
YlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKKworV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVj
dGlvbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWlu
LCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlcikKKyAgICA6IG1fY29ubmVjdGlvbihjb25u
ZWN0aW9uKQorICAgICwgbV9zZXJ2ZXIoc2VydmVyKQorICAgICwgbV9yZWdpc3RyYWJsZURvbWFp
bihyZWdpc3RyYWJsZURvbWFpbikKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9M
T0coIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Iik7CisgICAgc2Vy
dmVyLmFkZENvbnRleHRDb25uZWN0aW9uKCp0aGlzKTsKK30KKworV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24oKQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygifldlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Iik7CisgICAgaWYgKG1fc2VydmVy
ICYmIG1fc2VydmVyLT5jb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lz
dHJhYmxlRG9tYWluKCkpID09IHRoaXMpCisgICAgICAgIG1fc2VydmVyLT5yZW1vdmVDb250ZXh0
Q29ubmVjdGlvbigqdGhpcyk7Cit9CisKK1dlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIFdlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OndlYlByb2Nlc3NJZGVudGlmaWVy
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVy
KCk7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiYgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6aXBjQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29ubmVj
dGlvbi5jb25uZWN0aW9uKCk7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiogV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25z
dAoreworICAgIHJldHVybiAmaXBjQ29ubmVjdGlvbigpOworfQorCit1aW50NjRfdCBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyRGVzdGluYXRp
b25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKQor
eworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiY29ubmVjdGlvbklzTm9Mb25n
ZXJOZWVkZWQ6Iik7CisgICAgbV9jb25uZWN0aW9uLnNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdl
YkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVM
RUFTRV9MT0coInBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdDogc2hhcmVkV29ya2VySWRlbnRp
Zmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAg
aWYgKG1fc2VydmVyKQorICAgICAgICBtX3NlcnZlci0+cG9zdEV4Y2VwdGlvblRvV29ya2VyT2Jq
ZWN0KHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCBzb3VyY2VVUkwpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246OmxhdW5jaFNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0
aW9ucyYgd29ya2VyT3B0aW9ucywgY29uc3QgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmIGZl
dGNoUmVzdWx0KQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygibGF1bmNo
U2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29y
a2VySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkxhdW5jaFNoYXJlZFdvcmtlciB7IG9yaWdp
biwgc2hhcmVkV29ya2VySWRlbnRpZmllciwgdXJsLCB3b3JrZXJPcHRpb25zLCBmZXRjaFJlc3Vs
dCB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Ojpwb3N0Q29ubmVjdEV2ZW50KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVk
V29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYg
cG9ydCwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit7CisgICAgQ09OVEVYVF9DT05ORUNU
SU9OX1JFTEVBU0VfTE9HKCJwb3N0Q29ubmVjdEV2ZW50OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVy
PSUiIFBSSXU2NCwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlBvc3RD
b25uZWN0RXZlbnQgeyBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBwb3J0LCBzb3VyY2VPcmlnaW4g
fSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
dGVybWluYXRlU2hhcmVkV29ya2VyKFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hh
cmVkV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9M
T0coInRlcm1pbmF0ZVNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1
NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpUZXJtaW5hdGVTaGFy
ZWRXb3JrZXIgeyBzaGFyZWRXb3JrZXJJZGVudGlmaWVyIH0pOworfQorCisjdW5kZWYgQ09OVEVY
VF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjA3ZmYwM2Ez
M2Q0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFy
ZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC0w
LDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlV2l0aE1lc3Nh
Z2VQb3J0cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgUmVnaXN0cmFibGVEb21haW47CitjbGFzcyBTY3JpcHRCdWZmZXI7CitzdHJ1
Y3QgQ2xpZW50T3JpZ2luOworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0Oworc3RydWN0IFdvcmtl
ck9wdGlvbnM7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzczsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlcjsKKworY2xhc3Mg
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2ViU2hhcmVkV29ya2VyU2VydmVyJik7Cisg
ICAgfldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKKworICAgIFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3Q7Cisg
ICAgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKCkg
Y29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQorICAgIElQQzo6Q29ubmVjdGlv
biYgaXBjQ29ubmVjdGlvbigpIGNvbnN0OworCisgICAgdm9pZCBsYXVuY2hTaGFyZWRXb3JrZXIo
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRp
ZmllciwgY29uc3QgVVJMJiwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYsIGNvbnN0IFdl
YkNvcmU6OldvcmtlckZldGNoUmVzdWx0Jik7CisgICAgdm9pZCBwb3N0Q29ubmVjdEV2ZW50KFdl
YkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVk
TWVzc2FnZVBvcnQmLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CisgICAgdm9pZCB0ZXJt
aW5hdGVTaGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllcik7CisKKyAg
ICB2b2lkIGNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7CisKKyAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCitwcml2
YXRlOgorICAgIC8vIElQQyBtZXNzYWdlcy4KKyAgICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtl
ck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlci4KKyAgICBJUEM6OkNv
bm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWlu
dDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKKworICAgIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2Nvbm5lY3Rpb247CisgICAgV2Vha1B0cjxX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI+IG1fc2VydmVyOworICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIG1fcmVnaXN0cmFibGVEb21haW47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uYWU0N2MxMjJjYmFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI1IEBACisjIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFdlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CisgICAgUG9zdEV4
Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hh
cmVkV29ya2VySWRlbnRpZmllciwgU3RyaW5nIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIFN0cmluZyBzb3VyY2VVUkwpCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9n
Z2luZy5oCmluZGV4IDQ0ZTBhN2FjYjdiNS4uN2I3Y2M5YmFjNGEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0xvZ2dpbmcuaApAQCAtOTcsNiArOTcsNyBAQCBleHRlcm4gIkMiIHsKICAgICBNKFNlcnZpY2VX
b3JrZXIpIFwKICAgICBNKFNlc3Npb25TdGF0ZSkgXAogICAgIE0oU2hhcmVkRGlzcGxheUxpc3Rz
KSBcCisgICAgTShTaGFyZWRXb3JrZXIpIFwKICAgICBNKFN0b3JhZ2UpIFwKICAgICBNKFN0b3Jh
Z2VBUEkpIFwKICAgICBNKFRleHRJbnB1dCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKaW5kZXggN2ViZmE1MTZiNTAzLi4xYTI2MWUwYjEwZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMzAzLDEwICszMDMsMTMgQEAgZGVm
IHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYkNv
cmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6
U2hhcmVkU3RyaW5nSGFzaCcsCisgICAgICAgICdXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlm
aWVyJywKKyAgICAgICAgJ1dlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXInLAog
ICAgICAgICAnV2ViQ29yZTo6U2xlZXBEaXNhYmxlcklkZW50aWZpZXInLAogICAgICAgICAnV2Vi
Q29yZTo6U291cmNlQnVmZmVyQXBwZW5kTW9kZScsCiAgICAgICAgICdXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6
OlN0b3JhZ2VUeXBlJywKKyAgICAgICAgJ1dlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQn
LAogICAgICAgICAnV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdElkZW50aWZpZXInLAogICAgICAg
ICAnV2ViQ29yZTo6V2ViTG9ja0lkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6V2ViU29j
a2V0SWRlbnRpZmllcicsCkBAIC04NTEsNiArODU0LDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUo
dHlwZSk6CiAgICAgICAgICdXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlJzogWyc8V2ViQ29yZS9U
ZXh0Q2hlY2tpbmcuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhJzog
Wyc8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlJzogWyc8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
aD4nXSwKKyAgICAgICAgJ1dlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQnOiBbJzxXZWJD
b3JlL01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpVc2Vk
TGVnYWN5VExTJzogWyc8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oPiddLAogICAgICAg
ICAnV2ViQ29yZTo6VmlkZW9QcmVzZXREYXRhJzogWyc8V2ViQ29yZS9WaWRlb1ByZXNldC5oPidd
LAogICAgICAgICAnV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJzogWyc8V2ViQ29yZS9WaWV3
cG9ydEFyZ3VtZW50cy5oPiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggZGY0N2M3ODZjOGRlLi5lNGMwNzg3
NTJmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMTQxLDYgKzE0MSwxMCBAQCBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuY3BwIEBuby11bmlmeQogTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIEBuby11bmlmeQogTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwIEBuby11bmlmeQogCitOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29y
a2VyU2VydmVyLmNwcAorTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb24uY3BwCitOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKwogTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9G
aWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5LmNwcApAQCAtNzgyLDYgKzc4Niw5IEBAIFdl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV09yaWdpblRhYmxlLmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlclByb3ZpZGVyLmNwcAorV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKK1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcAorV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNo
YXJlZFdvcmtlclByb3ZpZGVyLmNwcAogCiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlci5jcHAKIApAQCAtODg0LDMgKzg5MSw3IEBAIFJlbW90ZVdlYkxvY2tS
ZWdpc3RyeU1lc3NhZ2VSZWNlaXZlci5jcHAKIFNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2tNZXNz
YWdlUmVjZWl2ZXIuY3BwCiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnlNZXNzYWdlUmVjZWl2
ZXIuY3BwCiBXZWJMb2NrUmVnaXN0cnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKK1dlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKK1dlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CmluZGV4IGE2NzgzNjdhNzc1YS4uMzMwMjBiZDVjM2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTUy
OSw3ICs1MjksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVdlYlByb2Nl
c3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvYwogdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5Ojp0ZXJtaW5hdGVVbnJlc3BvbnNpdmVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQogewogICAgIGlmIChSZWZQ
dHIgcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIocHJvY2Vz
c0lkZW50aWZpZXIpKSB7Ci0gICAgICAgIHByb2Nlc3MtPmRpc2FibGVTZXJ2aWNlV29ya2Vycygp
OworICAgICAgICBwcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6Oldvcmtl
clR5cGU6OlNlcnZpY2VXb3JrZXIpOwogICAgICAgICBwcm9jZXNzLT5yZXF1ZXN0VGVybWluYXRp
b24oUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpFeGNlZWRlZENQVUxpbWl0KTsKICAgICB9CiB9
CkBAIC0xNDE1LDE2ICsxNDE1LDIxIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRGVz
dHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50CiB9CiAjZW5k
aWYKIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
JiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgV2ViUHJvY2Vzc1Bv
b2w6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyhXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7Cit9CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3Rk
OjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtl
clBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBXZWJQcm9jZXNzUG9vbDo6
ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcygq
dGhpcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRp
Zmllciwgc2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgV2ViUHJv
Y2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MoV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQYWdlSWRl
bnRpZmllciwgc2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9M
b25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAg
ICBpZiAoYXV0byogcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZp
ZXIoaWRlbnRpZmllcikpCi0gICAgICAgIHByb2Nlc3MtPmRpc2FibGVTZXJ2aWNlV29ya2Vycygp
OworICAgICAgICBwcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6Oldvcmtl
clR5cGU6OlNlcnZpY2VXb3JrZXIpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJl
Z2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZp
Y2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikKQEAgLTE0NjAsNiArMTQ2NSwxMiBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhX
ZWJDb3JlOjpQcm9jZXNzSQogfQogI2VuZGlmCiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
c2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvKiBwcm9jZXNzID0gV2Vi
UHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihpZGVudGlmaWVyKSkKKyAgICAgICAg
cHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTaGFy
ZWRXb3JrZXIpOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdl
U3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4mIG9yaWdpbiwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwg
dWludDY0X3Qgc3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBxdW90YSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUkVMRUFT
RV9MT0coU3RvcmFnZSwgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VT
cGFjZSIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBhNGUzNjQ1ZWJhYWUuLjY4NDFhMzRmZTA5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgKQEAgLTMzNCw2ICszMzQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRT
ZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKICAgICB2b2lkIGVuZFNlcnZpY2VX
b3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2
aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogI2VuZGlmCisgICAgdm9pZCBzaGFyZWRXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyKTsKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25J
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgdGVybWluYXRlV2Vi
UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbgppbmRleCAxMmQwNmNlYmQ2MmEuLjE1NzU3ZWQ5YTI1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNjAsNiArNjAsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3Jr
UHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBTdGFydFNlcnZpY2VXb3JrZXJCYWNr
Z3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2Vy
UHJvY2Vzc0lkZW50aWZpZXIpCiAgICAgRW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNz
aW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRp
ZmllcikKICNlbmRpZgorICAgIEVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURv
bWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYworICAgIFNoYXJlZFdv
cmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIgaWRlbnRpZmllcikKIAogICAgIFNldFdlYlByb2Nlc3NIYXNVcGxvYWRzKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJRCwgYm9vbCBoYXNVcGxvYWQpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGU0OTkzNWMzMjVmNi4uMWFjYjM0
NDRhZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM2
OTEsMTEgKzM2OTEsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlckFnZW50KFN0cmluZyYm
IHVzZXJBZ2VudCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fdXNlckFnZW50ID0gV1RGTW92ZSh1
c2VyQWdlbnQpOwogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIC8vIFdlIHVwZGF0
ZSB0aGUgc2VydmljZSB3b3JrZXIgdGhlcmUgYXQgdGhlIG1vbWVudCB0byBiZSBzdXJlIHdlIHVz
ZSB2YWx1ZXMgdXNlZCBieSBhY3R1YWwgd2ViIHBhZ2VzLgogICAgIC8vIEZJWE1FOiBSZWZhY3Rv
ciB0aGlzIHdoZW4gd2UgaGF2ZSBhIGJldHRlciBVc2VyLUFnZW50IHN0b3J5LgotICAgIHByb2Nl
c3MoKS5wcm9jZXNzUG9vbCgpLnVwZGF0ZVNlcnZpY2VXb3JrZXJVc2VyQWdlbnQobV91c2VyQWdl
bnQpOwotI2VuZGlmCisgICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCkudXBkYXRlV29ya2VyVXNl
ckFnZW50KG1fdXNlckFnZW50KTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CmluZGV4IGFmYzIzZWU1M2YxMi4uNGIxOWIwZDFkM2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC01MjksNyArNTI5LDcgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6Z2V0V2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdl
YlByb2Nlc3NQcm8KIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6OnNfdXNlU2VwYXJhdGVTZXJ2aWNlV29y
a2VyUHJvY2VzcyA9IGZhbHNlOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiBwcm94eSwgUmVnaXN0cmFibGVEb21h
aW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250
ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURv
bWFpbiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2Vy
dmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiB3
ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JT
ZXNzaW9uSUQoc2Vzc2lvbklEKTsKICAgICBpZiAoIXdlYnNpdGVEYXRhU3RvcmUpCkBAIC01NDYs
NyArNTQ2LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXQKICAgICBpZiAoc2VydmljZVdvcmtl
clBhZ2VJZGVudGlmaWVyKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgYSBzZXJ2aWNlIHdvcmtlciBm
b3IgYSBzZXJ2aWNlIHdvcmtlciBwYWdlIHNvIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIHVzZSB1
c2UgdGhlIHBhZ2UncyBXZWJQcm9jZXNzIGZvciB0aGUgc2VydmljZSB3b3JrZXIuCiAgICAgICAg
IGlmICgoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vz
c0ZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLT5wcm9jZXNzSWRlbnRp
ZmllcigpKSkpIHsKLSAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJs
ZVNlcnZpY2VXb3JrZXJzKHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyRm9yU2VydmljZVdvcmtlcnMoKSk7CisgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5LT5lbmFibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2Vydmlj
ZVdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JX
b3JrZXJzKCkpOwogICAgICAgICAgICAgaWYgKHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmlz
SW5Qcm9jZXNzQ2FjaGUoKSkgewogICAgICAgICAgICAgICAgIHByb2Nlc3NQb29sLT53ZWJQcm9j
ZXNzQ2FjaGUoKS5yZW1vdmVQcm9jZXNzKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBXZWJQ
cm9jZXNzQ2FjaGU6OlNob3VsZFNodXREb3duUHJvY2Vzczo6Tm8pOwogICAgICAgICAgICAgICAg
IEFTU0VSVCghc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKTsK
QEAgLTU2NCw3ICs1NjQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNl
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldAogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0g
cHJvY2Vzcy5wdHIoKTsKLSAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVu
YWJsZVNlcnZpY2VXb3JrZXJzKHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKSk7CisgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5LT5lbmFibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2Vy
dmljZVdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJG
b3JXb3JrZXJzKCkpOwogCiAgICAgICAgICAgICBpZiAoc2VydmljZVdvcmtlclByb2Nlc3NQcm94
eS0+aXNJblByb2Nlc3NDYWNoZSgpKSB7CiAgICAgICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPndl
YlByb2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nlc3MoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHks
IFdlYlByb2Nlc3NDYWNoZTo6U2hvdWxkU2h1dERvd25Qcm9jZXNzOjpObyk7CkBAIC01NzcsNyAr
NTc3LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXQKICAgICB9CiAKICAgICBpZiAoIXNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHkpIHsKLSAgICAgICAgYXV0byBuZXdQcm9jZXNzUHJveHkgPSBX
ZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKCpwcm9jZXNzUG9vbCwgUmVn
aXN0cmFibGVEb21haW4gIHsgcmVnaXN0cmFibGVEb21haW4gfSwgKndlYnNpdGVEYXRhU3RvcmUp
OworICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRl
Rm9yV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsICpw
cm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21haW4gIHsgcmVnaXN0cmFibGVEb21haW4gfSwgKndl
YnNpdGVEYXRhU3RvcmUpOwogICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gbmV3
UHJvY2Vzc1Byb3h5LnB0cigpOwogCiAgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9H
X1NUQVRJQyhTZXJ2aWNlV29ya2VyLCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyBjcmVhdGluZyBhIG5ldyBzZXJ2aWNlIHdvcmtlciBwcm9j
ZXNzIChwcm9jZXM9JXAsIFBJRD0lZCkiLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBzZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKQEAgLTU4NiwyMCAr
NTg2LDcwIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0CiAgICAgICAgIHByb2Nlc3NQb29sLT5t
X3Byb2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdQcm9jZXNzUHJveHkpKTsKICAgICB9CiAKLSAg
ICBBU1NFUlQoIXNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb250YWlucygqc2VydmljZVdvcmtl
clByb2Nlc3NQcm94eSkpOwotICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHkpOworICAgIHdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eSk7CiAKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5l
c3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2Vy
UHJlZmVyZW5jZXMgPyBwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMudmFs
dWUoKSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3Rv
cmUoKSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fc2Vydmlj
ZVdvcmtlclVzZXJBZ2VudC5pc051bGwoKSkKLSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eS0+c2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29y
a2VyVXNlckFnZW50KTsKKyAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hT
ZXJ2aWNlV29ya2VyQ29udGV4dChwcm9jZXNzUG9vbC0+bV93b3JrZXJQcmVmZXJlbmNlcyA/IHBy
b2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBwcm9jZXNzUG9vbC0+bV9k
ZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3JlKCksIHJlZ2lzdHJhYmxlRG9tYWlu
LCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICBpZiAoIXByb2Nlc3NQb29sLT5tX3dvcmtlclVzZXJBZ2VudC5pc051bGwoKSkKKyAg
ICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+c2V0V29ya2VyVXNlckFnZW50KHByb2Nl
c3NQb29sLT5tX3dvcmtlclVzZXJBZ2VudCk7CiB9CisjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNz
UG9vbDo6cmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jZXNzKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlRnJvbVdvcmtlclByb2Nlc3NlcyhX
ZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7Ci0gICAgQVNTRVJUKHNlcnZpY2VXb3JrZXJQcm9j
ZXNzZXMoKS5jb250YWlucyhwcm9jZXNzKSk7Ci0gICAgc2VydmljZVdvcmtlclByb2Nlc3Nlcygp
LnJlbW92ZShwcm9jZXNzKTsKKyAgICBBU1NFUlQod29ya2VyUHJvY2Vzc2VzKCkuY29udGFpbnMo
cHJvY2VzcykpOworICAgIHdvcmtlclByb2Nlc3NlcygpLnJlbW92ZShwcm9jZXNzKTsKK30KKwor
dm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFi
bGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8qIHdlYnNpdGVEYXRhU3RvcmUg
PSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChzZXNzaW9u
SUQpOworICAgIGlmICghd2Vic2l0ZURhdGFTdG9yZSkKKyAgICAgICAgd2Vic2l0ZURhdGFTdG9y
ZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS5wdHIoKTsKKyAgICBpZiAo
IXByb2Nlc3NQb29scygpLnNpemUoKSkKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
ZjxXZWJQcm9jZXNzUG9vbD4+IHNoYXJlZFdvcmtlclByb2Nlc3NQb29sKFdlYlByb2Nlc3NQb29s
OjpjcmVhdGUoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpLmdldCgpKSk7
CisKKyAgICAvLyBBcmJpdHJhcmlseSBjaG9vc2UgdGhlIGZpcnN0IHByb2Nlc3MgcG9vbCB0byBo
b3N0IHRoZSBzaGFyZWQgd29ya2VyIHByb2Nlc3MuCisgICAgYXV0byogcHJvY2Vzc1Bvb2wgPSBw
cm9jZXNzUG9vbHMoKVswXTsKKyAgICBBU1NFUlQocHJvY2Vzc1Bvb2wpOworCisgICAgV2ViUHJv
Y2Vzc1Byb3h5KiBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkgeyBudWxscHRyIH07CisKKyAgICBm
b3IgKGF1dG8mIHByb2Nlc3MgOiBwcm9jZXNzUG9vbC0+bV9wcm9jZXNzZXMpIHsKKyAgICAgICAg
aWYgKHByb2Nlc3MucHRyKCkgPT0gcHJvY2Vzc1Bvb2wtPm1fcHJld2FybWVkUHJvY2Vzcy5nZXQo
KSB8fCBwcm9jZXNzLT5pc0R1bW15UHJvY2Vzc1Byb3h5KCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgaWYgKCZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gd2Vic2l0ZURh
dGFTdG9yZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoIXByb2Nlc3MtPmlz
TWF0Y2hpbmdSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkgPSBwcm9jZXNz
LnB0cigpOworICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVdvcmtlcnMo
V2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIsIHByb2Nlc3NQb29sLT51
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpKTsKKworICAgICAgICBp
ZiAoc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpIHsKKyAgICAg
ICAgICAgIHByb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5yZW1vdmVQcm9jZXNzKCpzaGFy
ZWRXb3JrZXJQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NDYWNoZTo6U2hvdWxkU2h1dERvd25Qcm9j
ZXNzOjpObyk7CisgICAgICAgICAgICBBU1NFUlQoIXNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+
aXNJblByb2Nlc3NDYWNoZSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIFdFQlBST0NFU1NQT09M
X1JFTEVBU0VfTE9HX1NUQVRJQyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgcmV1c2luZyBhbiBleGlzdGluZyB3ZWIg
cHJvY2VzcyAocHJvY2Vzcz0lcCwgUElEPSVkKSIsIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSwg
c2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgaWYgKCFzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkpIHsKKyAg
ICAgICAgYXV0byBuZXdQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvcldv
cmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIsICpwcm9jZXNz
UG9vbCwgUmVnaXN0cmFibGVEb21haW4gIHsgcmVnaXN0cmFibGVEb21haW4gfSwgKndlYnNpdGVE
YXRhU3RvcmUpOworICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkgPSBuZXdQcm9jZXNz
UHJveHkucHRyKCk7CisKKyAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElD
KFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyBjcmVhdGluZyBhIG5ldyBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzIChwcm9j
ZXNzPSVwLCBQSUQ9JWQpIiwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LCBzaGFyZWRXb3JrZXJQ
cm9jZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOworCisgICAgICAgIHByb2Nlc3NQb29s
LT5pbml0aWFsaXplTmV3V2ViUHJvY2VzcyhuZXdQcm9jZXNzUHJveHksIHdlYnNpdGVEYXRhU3Rv
cmUpOworICAgICAgICBwcm9jZXNzUG9vbC0+bV9wcm9jZXNzZXMuYXBwZW5kKFdURk1vdmUobmV3
UHJvY2Vzc1Byb3h5KSk7CisgICAgfQorCisgICAgd29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpzaGFy
ZWRXb3JrZXJQcm9jZXNzUHJveHkpOworCisgICAgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5l
c3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0KHByb2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVu
Y2VzID8gcHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQ
b29sLT5tX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFi
bGVEb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBpZiAoIXByb2Nlc3NQ
b29sLT5tX3dvcmtlclVzZXJBZ2VudC5pc051bGwoKSkKKyAgICAgICAgc2hhcmVkV29ya2VyUHJv
Y2Vzc1Byb3h5LT5zZXRXb3JrZXJVc2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFn
ZW50KTsKIH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp3aW5kb3dTZXJ2ZXJDb25u
ZWN0aW9uU3RhdGVDaGFuZ2VkKCkKIHsKQEAgLTEwMDMsMTAgKzEwNTMsOCBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiAK
ICAgICBtX2JhY2tGb3J3YXJkQ2FjaGUtPnJlbW92ZUVudHJpZXNGb3JQcm9jZXNzKHByb2Nlc3Mp
OwogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmIChwcm9jZXNzLmlzUnVubmlu
Z1NlcnZpY2VXb3JrZXJzKCkpCi0gICAgICAgIHJlbW92ZUZyb21TZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzKHByb2Nlc3MpOwotI2VuZGlmCisgICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nV29ya2Vycygp
KQorICAgICAgICByZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKHByb2Nlc3MpOwogCiAgICAgc3Rh
dGljX2Nhc3Q8V2ViQ29udGV4dFN1cHBsZW1lbnQqPihzdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5PigpKS0+cHJvY2Vzc0RpZENsb3NlKCZwcm9jZXNzKTsKIApAQCAtMTA2Nywx
MiArMTExNSwxMiBAQCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vz
c0ZvclJlZ2lzdHJhYmxlRG9tYWluKFdlYnNpdGVEYXRhU3RvcgogfQogCiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQotVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBXZWJQcm9jZXNz
UG9vbDo6dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvclNlcnZpY2VXb3JrZXJzKCkK
K1VzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgV2ViUHJvY2Vzc1Bvb2w6OnVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkKIHsKLSAgICBpZiAoIW1fdXNlckNv
bnRlbnRDb250cm9sbGVyRm9yU2VydmljZVdvcmtlcikKLSAgICAgICAgbV91c2VyQ29udGVudENv
bnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
OmNyZWF0ZSgpOworICAgIGlmICghbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JXb3JrZXJzKQor
ICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtlcnMgPSBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKCk7CiAKLSAgICByZXR1cm4gbV91c2VyQ29udGVudENv
bnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyLT5pZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIG1fdXNl
ckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2Vycy0+aWRlbnRpZmllcigpOwogfQogI2VuZGlmCiAK
QEAgLTExMTksMTUgKzExNjcsMTMgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6
OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSToKIAogICAgIGF1
dG8gcGFnZSA9IHByb2Nlc3MtPmNyZWF0ZVdlYlBhZ2UocGFnZUNsaWVudCwgV1RGTW92ZShwYWdl
Q29uZmlndXJhdGlvbikpOwogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmICgh
bV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMpIHsKLSAgICAgICAgbV9zZXJ2aWNlV29ya2VyUHJl
ZmVyZW5jZXMgPSBwYWdlLT5wcmVmZXJlbmNlc1N0b3JlKCk7Ci0gICAgICAgIGZvciAoYXV0byYg
c2VydmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkpCi0gICAgICAg
ICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy51cGRhdGVTZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXNT
dG9yZSgqbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMpOworICAgIGlmICghbV93b3JrZXJQcmVm
ZXJlbmNlcykgeworICAgICAgICBtX3dvcmtlclByZWZlcmVuY2VzID0gcGFnZS0+cHJlZmVyZW5j
ZXNTdG9yZSgpOworICAgICAgICBmb3IgKGF1dG8mIHdvcmtlclByb2Nlc3MgOiB3b3JrZXJQcm9j
ZXNzZXMoKSkKKyAgICAgICAgICAgIHdvcmtlclByb2Nlc3MudXBkYXRlV29ya2VyUHJlZmVyZW5j
ZXNTdG9yZSgqbV93b3JrZXJQcmVmZXJlbmNlcyk7CiAgICAgfQogICAgIGlmICh1c2VyQ29udGVu
dENvbnRyb2xsZXIpCi0gICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yU2VydmljZVdv
cmtlciA9IHVzZXJDb250ZW50Q29udHJvbGxlcjsKLSNlbmRpZgorICAgICAgICBtX3VzZXJDb250
ZW50Q29udHJvbGxlckZvcldvcmtlcnMgPSB1c2VyQ29udGVudENvbnRyb2xsZXI7CiAKICAgICBi
b29sIGVuYWJsZVByb2Nlc3NTd2FwT25Dcm9zc1NpdGVOYXZpZ2F0aW9uID0gcGFnZS0+cHJlZmVy
ZW5jZXMoKS5wcm9jZXNzU3dhcE9uQ3Jvc3NTaXRlTmF2aWdhdGlvbkVuYWJsZWQoKTsKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQpAQCAtMTE1MCwxNiArMTE5NiwxNCBAQCBSZWY8V2ViUGFnZVBy
b3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50
LCBSZWY8QVBJOgogICAgIHJldHVybiBwYWdlOwogfQogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlU2VydmljZVdvcmtlclVzZXJBZ2VudChj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVdvcmtl
clVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKIHsKLSAgICBpZiAobV9zZXJ2aWNl
V29ya2VyVXNlckFnZW50ID09IHVzZXJBZ2VudCkKKyAgICBpZiAobV93b3JrZXJVc2VyQWdlbnQg
PT0gdXNlckFnZW50KQogICAgICAgICByZXR1cm47Ci0gICAgbV9zZXJ2aWNlV29ya2VyVXNlckFn
ZW50ID0gdXNlckFnZW50OwotICAgIGZvciAoYXV0byYgc2VydmljZVdvcmtlclByb2Nlc3MgOiBz
ZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkpCi0gICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzLnNl
dFNlcnZpY2VXb3JrZXJVc2VyQWdlbnQobV9zZXJ2aWNlV29ya2VyVXNlckFnZW50KTsKKyAgICBt
X3dvcmtlclVzZXJBZ2VudCA9IHVzZXJBZ2VudDsKKyAgICBmb3IgKGF1dG8mIHdvcmtlclByb2Nl
c3MgOiB3b3JrZXJQcm9jZXNzZXMoKSkKKyAgICAgICAgd29ya2VyUHJvY2Vzcy5zZXRXb3JrZXJV
c2VyQWdlbnQobV93b3JrZXJVc2VyQWdlbnQpOwogfQotI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHBhZ2VJRCwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQogewpAQCAtMTUzOCw4ICsx
NTgyLDEzIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzKCkK
IHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAq
dGhpcyB9OwotICAgIHdoaWxlIChzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkuY29tcHV0ZVNpemUo
KSkKLSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmJlZ2luKCktPmRpc2FibGVTZXJ2
aWNlV29ya2VycygpOworICAgIFZlY3RvcjxSZWY8V2ViUHJvY2Vzc1Byb3h5Pj4gc2VydmljZVdv
cmtlclByb2Nlc3NlczsKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFsmXShhdXRvJiBw
cm9jZXNzKSB7CisgICAgICAgIGlmIChwcm9jZXNzLmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkp
CisgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFwcGVuZChwcm9jZXNzKTsKKyAg
ICB9KTsKKyAgICBmb3IgKGF1dG8mIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogc2VydmljZVdvcmtl
clByb2Nlc3NlcykKKyAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3MtPmRpc2FibGVXb3JrZXJz
KFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiAjZW5kaWYKIH0K
IApAQCAtMTc2NywxMyArMTgxNiwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXBvcnRXZWJD
b250ZW50Q1BVVGltZShTZWNvbmRzIGNwdVRpbWUsIHVpbnQ2NF90IGFjdGl2aXR5UwogI2VuZGlm
CiB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1XZWFrSGFzaFNldDxXZWJQcm9jZXNz
UHJveHk+JiBXZWJQcm9jZXNzUG9vbDo6c2VydmljZVdvcmtlclByb2Nlc3NlcygpCitXZWFrSGFz
aFNldDxXZWJQcm9jZXNzUHJveHk+JiBXZWJQcm9jZXNzUG9vbDo6d29ya2VyUHJvY2Vzc2VzKCkK
IHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5
Pj4gcHJvY2Vzc2VzOwogICAgIHJldHVybiBwcm9jZXNzZXM7CiB9Ci0jZW5kaWYKIAogdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKQogewpAQCAtMTc4NSwyMCAr
MTgzMiwyNSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygp
CiAgICAgaWYgKGF1dG8qIGdwdVByb2Nlc3MgPSBHUFVQcm9jZXNzUHJveHk6OnNpbmdsZXRvbklm
Q3JlYXRlZCgpKQogICAgICAgICBncHVQcm9jZXNzLT51cGRhdGVQcm9jZXNzQXNzZXJ0aW9uKCk7
CiAjZW5kaWYKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKICAgICAvLyBDaGVjayBvbiBu
ZXh0IHJ1biBsb29wIHNpbmNlIHRoZSB3ZWIgcHJvY2VzcyBwcm94eSB0b2tlbnMgYXJlIHByb2Jh
Ymx5IGJlaW5nIHVwZGF0ZWQuCiAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW10gewotICAgICAgICBm
b3IgKGF1dG8mIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogc2VydmljZVdvcmtlclByb2Nlc3Nlcygp
KQotICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3MudXBkYXRlU2VydmljZVdvcmtlclBy
b2Nlc3NBc3NlcnRpb24oKTsKLSAgICB9KTsKKyAgICAgICAgd29ya2VyUHJvY2Vzc2VzKCkuZm9y
RWFjaChbXShhdXRvJiB3b3JrZXJQcm9jZXNzKSB7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQorICAgICAgICAgICAgaWYgKHdvcmtlclByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMo
KSkKKyAgICAgICAgICAgICAgICB3b3JrZXJQcm9jZXNzLnVwZGF0ZVdvcmtlclByb2Nlc3NBc3Nl
cnRpb24oV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICNlbmRp
ZgorICAgICAgICAgICAgaWYgKHdvcmtlclByb2Nlc3MuaXNSdW5uaW5nU2hhcmVkV29ya2Vycygp
KQorICAgICAgICAgICAgICAgIHdvcmtlclByb2Nlc3MudXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2Vy
dGlvbihXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlcik7CisgICAgICAg
IH0pOworICAgIH0pOwogfQogCiBib29sIFdlYlByb2Nlc3NQb29sOjppc1NlcnZpY2VXb3JrZXJQ
YWdlSUQoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpIGNvbnN0CiB7CiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGluZWZmaWNpZW50LgotICAg
IHJldHVybiBXVEY6OmFueU9mKHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSwgW3BhZ2VJRF0oYXV0
byYgcHJvY2VzcykgeworICAgIHJldHVybiBXVEY6OmFueU9mKHdvcmtlclByb2Nlc3NlcygpLCBb
cGFnZUlEXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiBwcm9jZXNzLmhhc1NlcnZp
Y2VXb3JrZXJQYWdlUHJveHkocGFnZUlEKTsKICAgICB9KTsKICNlbmRpZgpAQCAtMjEyNCwxNiAr
MjE3NiwyNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRVc2VTZXBhcmF0ZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzKGJvb2wgdXNlU2VwYXJhdGVTZXJ2aWNlVwogfQogCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQorc2l6ZV90IFdlYlByb2Nlc3NQb29sOjpzZXJ2aWNlV29ya2VyUHJveGllc0Nv
dW50KCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBjb3VudCA9IDA7CisgICAgd29ya2VyUHJvY2Vz
c2VzKCkuZm9yRWFjaChbJl0oYXV0byYgcHJvY2VzcykgeworICAgICAgICBpZiAocHJvY2Vzcy5p
c1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQorICAgICAgICAgICAgKytjb3VudDsKKyAgICB9KTsK
KyAgICByZXR1cm4gY291bnQ7Cit9CisKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6Omhhc1NlcnZpY2VX
b3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
V1RGOjphbnlPZihzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsK
KyAgICByZXR1cm4gV1RGOjphbnlPZih3b3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2Vz
cykgewogICAgICAgICByZXR1cm4gcHJvY2Vzcy5oYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFj
dGl2aXR5Rm9yVGVzdGluZygpOwogICAgIH0pOwogfQogCiBib29sIFdlYlByb2Nlc3NQb29sOjpo
YXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIFdURjo6YW55T2Yoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBw
cm9jZXNzKSB7CisgICAgcmV0dXJuIFdURjo6YW55T2Yod29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1
dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuIHByb2Nlc3MuaGFzU2VydmljZVdvcmtlckJh
Y2tncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGViNjZkODk0OTBkZi4uZTcwYjZmNDI5Zjdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTM3NCwxNyAr
Mzc0LDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIG5ldHdvcmtQcm9jZXNzRGlkVGVybWluYXRlKE5l
dHdvcmtQcm9jZXNzUHJveHkmLCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJtaW5hdGlvblJlYXNv
bik7CiAKICAgICBib29sIGlzU2VydmljZVdvcmtlclBhZ2VJRChXZWJQYWdlUHJveHlJZGVudGlm
aWVyKSBjb25zdDsKKyAgICB2b2lkIHJlbW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vz
c1Byb3h5Jik7CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgc3RhdGljIHZvaWQg
ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhO
ZXR3b3JrUHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKLSAgICB2b2lkIHJlbW92ZUZyb21TZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKFdl
YlByb2Nlc3NQcm94eSYpOwotICAgIHNpemVfdCBzZXJ2aWNlV29ya2VyUHJveGllc0NvdW50KCkg
Y29uc3QgeyByZXR1cm4gc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmNvbXB1dGVTaXplKCk7IH0K
LSAgICB2b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2Vy
QWdlbnQpOwotICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgdXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllckZvclNlcnZpY2VXb3JrZXJzKCk7CisgICAgc3RhdGljIHZvaWQg
ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIs
IFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHNpemVf
dCBzZXJ2aWNlV29ya2VyUHJveGllc0NvdW50KCkgY29uc3Q7CisgICAgVXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllciB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2Vy
cygpOwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3Rp
bmcoKSBjb25zdDsKICAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kQWN0aXZpdHlG
b3JUZXN0aW5nKCkgY29uc3Q7CiAjZW5kaWYKICAgICB2b2lkIHNlcnZpY2VXb3JrZXJQcm9jZXNz
Q3Jhc2hlZChXZWJQcm9jZXNzUHJveHkmKTsKIAorICAgIHZvaWQgdXBkYXRlV29ya2VyVXNlckFn
ZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKKyAgICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hT
aGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CisKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIHByb2Nlc3NTdXBwcmVzc2lv
bkVuYWJsZWQoKSBjb25zdDsKICNlbmRpZgpAQCAtNjE4LDEzICs2MjEsMTEgQEAgcHJpdmF0ZToK
IAogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFdlYWtQdHI8V2ViUHJvY2Vzc1Byb3h5Pj4g
bV9kdW1teVByb2Nlc3NQcm94aWVzOyAvLyBMaWdodHdlaWdodCBXZWJQcm9jZXNzUHJveHkgb2Jq
ZWN0cyB3aXRob3V0IGJhY2tpbmcgcHJvY2Vzcy4KIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKLSAgICBzdGF0aWMgV2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5PiYgc2VydmljZVdvcmtl
clByb2Nlc3NlcygpOwotICAgIGJvb2wgbV93YWl0aW5nRm9yV29ya2VyQ29udGV4dFByb2Nlc3ND
b25uZWN0aW9uIHsgZmFsc2UgfTsKLSAgICBTdHJpbmcgbV9zZXJ2aWNlV29ya2VyVXNlckFnZW50
OwotICAgIHN0ZDo6b3B0aW9uYWw8V2ViUHJlZmVyZW5jZXNTdG9yZT4gbV9zZXJ2aWNlV29ya2Vy
UHJlZmVyZW5jZXM7Ci0gICAgUmVmUHRyPFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5PiBt
X3VzZXJDb250ZW50Q29udHJvbGxlckZvclNlcnZpY2VXb3JrZXI7Ci0jZW5kaWYKKyAgICBzdGF0
aWMgV2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5PiYgd29ya2VyUHJvY2Vzc2VzKCk7CisKKyAg
ICBzdGQ6Om9wdGlvbmFsPFdlYlByZWZlcmVuY2VzU3RvcmU+IG1fd29ya2VyUHJlZmVyZW5jZXM7
CisgICAgUmVmUHRyPFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5PiBtX3VzZXJDb250ZW50
Q29udHJvbGxlckZvcldvcmtlcnM7CisgICAgU3RyaW5nIG1fd29ya2VyVXNlckFnZW50OwogCiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIFJlZlB0cjxHUFVQcm9jZXNzUHJveHk+IG1fZ3B1
UHJvY2VzczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmlu
ZGV4IGNhYzM2N2YxMTE5Zi4uNWNmODZjYzc4NmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJXZWJQ
cm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUg
IldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJzaXRl
RGF0YS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKQEAgLTE4MiwxMSAr
MTgzLDExIEBAIFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKFdl
YlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2Vic2l0CiB9CiAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi1SZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZv
clNlcnZpY2VXb3JrZXJzKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVE
b21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFT
dG9yZSkKK1JlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yV29y
a2VycyhXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwg
UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYg
d2Vic2l0ZURhdGFTdG9yZSkKIHsKICAgICBhdXRvIHByb3h5ID0gYWRvcHRSZWYoKm5ldyBXZWJQ
cm9jZXNzUHJveHkocHJvY2Vzc1Bvb2wsICZ3ZWJzaXRlRGF0YVN0b3JlLCBJc1ByZXdhcm1lZDo6
Tm8sIENyb3NzT3JpZ2luTW9kZTo6U2hhcmVkLCBDYXB0aXZlUG9ydGFsTW9kZTo6RGlzYWJsZWQp
KTsKICAgICBwcm94eS0+bV9yZWdpc3RyYWJsZURvbWFpbiA9IFdURk1vdmUocmVnaXN0cmFibGVE
b21haW4pOwotICAgIHByb3h5LT5lbmFibGVTZXJ2aWNlV29ya2Vycyhwcm9jZXNzUG9vbC51c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKSk7CisgICAgcHJv
eHktPmVuYWJsZVdvcmtlcnMod29ya2VyVHlwZSwgcHJvY2Vzc1Bvb2wudXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CiAgICAgcHJveHktPmNvbm5lY3QoKTsKICAg
ICByZXR1cm4gcHJveHk7CiB9CkBAIC05OTUsMTAgKzk5NiwxMCBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6ZGlkQmVjb21lVW5yZXNwb25zaXZlKCkKICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDog
aXNSZXNwb25zaXZlQ2FsbGJhY2tzKQogICAgICAgICBjYWxsYmFjayhpc1dlYlByb2Nlc3NSZXNw
b25zaXZlKTsKIAotICAgIC8vIElmIHRoZSB3ZWIgcHJvY2VzcyBiZWNvbWVzIHVucmVzcG9uc2l2
ZSBhbmQgb25seSBydW5zIHNlcnZpY2Ugd29ya2Vycywga2lsbCBpdCBvdXJzZWx2ZXMgc2luY2Ug
dGhlcmUgYXJlIG5vIG5hdGl2ZSBjbGllbnRzIHRvIGRvIGl0LgotICAgIGlmIChpc1J1bm5pbmdT
ZXJ2aWNlV29ya2VycygpICYmIG1fcGFnZU1hcC5pc0VtcHR5KCkpIHsKLSAgICAgICAgV0VCUFJP
Q0VTU1BST1hZX1JFTEVBU0VfTE9HX0VSUk9SKFBlcmZvcm1hbmNlTG9nZ2luZywgImRpZEJlY29t
ZVVucmVzcG9uc2l2ZTogVGVybWluYXRpbmcgc2VydmljZSB3b3JrZXItb25seSB3ZWIgcHJvY2Vz
cyBiZWNhdXNlIGl0IGlzIHVucmVzcG9uc2l2ZSIpOwotICAgICAgICBkaXNhYmxlU2VydmljZVdv
cmtlcnMoKTsKKyAgICAvLyBJZiB0aGUgd2ViIHByb2Nlc3MgYmVjb21lcyB1bnJlc3BvbnNpdmUg
YW5kIG9ubHkgcnVucyBzZXJ2aWNlL3NoYXJlZCB3b3JrZXJzLCBraWxsIGl0IG91cnNlbHZlcyBz
aW5jZSB0aGVyZSBhcmUgbm8gbmF0aXZlIGNsaWVudHMgdG8gZG8gaXQuCisgICAgaWYgKGlzUnVu
bmluZ1dvcmtlcnMoKSAmJiBtX3BhZ2VNYXAuaXNFbXB0eSgpKSB7CisgICAgICAgIFdFQlBST0NF
U1NQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQZXJmb3JtYW5jZUxvZ2dpbmcsICJkaWRCZWNvbWVV
bnJlc3BvbnNpdmU6IFRlcm1pbmF0aW5nIHdvcmtlci1vbmx5IHdlYiBwcm9jZXNzIGJlY2F1c2Ug
aXQgaXMgdW5yZXNwb25zaXZlIik7CisgICAgICAgIGRpc2FibGVXb3JrZXJzKHsgV29ya2VyVHlw
ZTo6U2VydmljZVdvcmtlciwgV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyIH0pOwogICAgICAgICB0
ZXJtaW5hdGUoKTsKICAgICB9CiB9CkBAIC0xNjk0LDggKzE2OTUsOSBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUoY29uc3QgVVJMJiB1
cmwpCiAgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHsgdXJsIH07CiAgICAgaWYgKG1fcmVnaXN0cmFibGVEb21haW4gJiYgKm1fcmVnaXN0cmFi
bGVEb21haW4gIT0gcmVnaXN0cmFibGVEb21haW4pIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi0gICAgICAgIGRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgICAgICBkaXNhYmxlV29y
a2VycyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgorCiAgICAgICAgIC8vIE51
bGwgb3V0IHJlZ2lzdHJhYmxlIGRvbWFpbiBzaW5jZSB0aGlzIHByb2Nlc3MgaGFzIG5vdyBiZWVu
IHVzZWQgZm9yIHNldmVyYWwgZG9tYWlucy4KICAgICAgICAgbV9yZWdpc3RyYWJsZURvbWFpbiA9
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgfTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTg2
Niw2MCArMTg2OCw4NSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2VydmljZVdv
cmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgcwogewogICAgIFdFQlBST0NF
U1NQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRl
eHQ6IFN0YXJ0ZWQiKTsKICAgICBtYXJrUHJvY2Vzc0FzUmVjZW50bHlVc2VkKCk7Ci0gICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hTZXJ2aWNlV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bvb2woKS5kZWZh
dWx0UGFnZUdyb3VwKCkucGFnZUdyb3VwSUQoKSwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24t
PnNlcnZpY2VXb3JrZXJQYWdlUHJveHlJRCwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnNl
cnZpY2VXb3JrZXJQYWdlSUQsIHN0b3JlLCByZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtl
clBhZ2VJZGVudGlmaWVyLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+aW5pdGlhbGl6YXRp
b25EYXRhIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RXN0YWJsaXNoU2VydmljZVdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVm
YXVsdFBhZ2VHcm91cCgpLnBhZ2VHcm91cElEKCksIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9u
LT53b3JrZXJQYWdlUHJveHlJRCwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPndvcmtlclBh
Z2VJRCwgc3RvcmUsIHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZp
ZXIsIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5pbml0aWFsaXphdGlvbkRhdGEgfSwgW3Ro
aXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICh3ZWFrVGhp
cykKICAgICAgICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZXN0
YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQ6IEZpbmlzaGVkIik7CiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CiAgICAgfSwgMCk7CiB9CisjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OnNldFNlcnZpY2VXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCit2
b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0V29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50KQogewotICAgIEFTU0VSVChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbik7Ci0gICAg
c2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlNldFVzZXJBZ2Vu
dCB7IHVzZXJBZ2VudCB9LCAwKTsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYg
KG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U2V0VXNlckFnZW50IHsgdXNlckFnZW50IH0sIDAp
OworI2VuZGlmCisgICAgaWYgKG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24pCisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U2V0
VXNlckFnZW50IHsgdXNlckFnZW50IH0sIDApOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6
dXBkYXRlU2VydmljZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNT
dG9yZSYgc3RvcmUpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlV29ya2VyUHJlZmVyZW5j
ZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKIHsKLSAgICBBU1NFUlQo
bV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpVcGRhdGVQcmVmZXJlbmNlc1N0b3JlIHsgc3RvcmUgfSwg
MCk7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIGlmIChtX3NlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbikKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OlVwZGF0ZVByZWZlcmVuY2VzU3RvcmUgeyBzdG9yZSB9LCAwKTsKKyNlbmRpZgor
ICAgIGlmIChtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uKQorICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZVByZWZlcmVu
Y2VzU3RvcmUgeyBzdG9yZSB9LCAwKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCkKKy8vIEZJWE1FOiBDbGllbnRzIGRvIG5v
dCBwcm9wZXJseSBnZXQgcG9wdWxhdGVkIGluIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24uCit2
b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJU
eXBlIHdvcmtlclR5cGUpCiB7Ci0gICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nl
c3NTdXNwZW5zaW9uLCAidXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb246Iik7Ci0g
ICAgQVNTRVJUKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsKLSAgICBpZiAoIW1fc2Vydmlj
ZVdvcmtlckluZm9ybWF0aW9uKQorICAgIGF1dG8mIHdvcmtlckluZm9ybWF0aW9uID0gd29ya2Vy
VHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyBtX3NoYXJlZFdvcmtlckluZm9ybWF0
aW9uIDogbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247CisgICAgQVNTRVJUKHdvcmtlckluZm9y
bWF0aW9uKTsKKyAgICBpZiAoIXdvcmtlckluZm9ybWF0aW9uKQogICAgICAgICByZXR1cm47CiAK
LSAgICBib29sIHNob3VsZFRha2VGb3JlZ3JvdW5kQWN0aXZpdHkgPSBXVEY6OmFueU9mKG1fc2Vy
dmljZVdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMsIFsmXShhdXRvJiBwcm9jZXNz
KSB7CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAi
dXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbjogd29ya2VyVHlwZT0le3B1YmxpY31zIiwgd29y
a2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyAic2hhcmVkIiA6ICJzZXJ2aWNl
Iik7CisKKyAgICBib29sIHNob3VsZFRha2VGb3JlZ3JvdW5kQWN0aXZpdHkgPSBXVEY6OmFueU9m
KHdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMsIFsmXShhdXRvJiBwcm9jZXNzKSB7
CiAgICAgICAgIHJldHVybiAmcHJvY2VzcyAhPSB0aGlzICYmICEhcHJvY2Vzcy5tX2ZvcmVncm91
bmRUb2tlbjsKICAgICB9KTsKICAgICBpZiAoc2hvdWxkVGFrZUZvcmVncm91bmRBY3Rpdml0eSkg
ewotICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRGb3JlZ3JvdW5kQWN0aXZp
dHkobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKLSAgICAgICAgICAgIG1f
c2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmZvcmVncm91
bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGZvcmVncm91bmQgdmlldyhzKSJfcyk7Cisg
ICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEZvcmVncm91bmRBY3Rpdml0eSh3
b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQorICAgICAgICAgICAgd29ya2VySW5mb3JtYXRp
b24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuZm9yZWdyb3VuZEFjdGl2aXR5KCJXb3JrZXIgZm9y
IGZvcmVncm91bmQgdmlldyhzKSJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBi
b29sIHNob3VsZFRha2VCYWNrZ3JvdW5kQWN0aXZpdHkgPSBXVEY6OmFueU9mKG1fc2VydmljZVdv
cmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMsIFsmXShhdXRvJiBwcm9jZXNzKSB7Cisg
ICAgYm9vbCBzaG91bGRUYWtlQmFja2dyb3VuZEFjdGl2aXR5ID0gV1RGOjphbnlPZih3b3JrZXJJ
bmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2VzLCBbJl0oYXV0byYgcHJvY2VzcykgewogICAgICAg
ICByZXR1cm4gJnByb2Nlc3MgIT0gdGhpcyAmJiAhIXByb2Nlc3MubV9iYWNrZ3JvdW5kVG9rZW47
CiAgICAgfSk7CiAgICAgaWYgKHNob3VsZFRha2VCYWNrZ3JvdW5kQWN0aXZpdHkpIHsKLSAgICAg
ICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5KG1fc2Vy
dmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCi0gICAgICAgICAgICBtX3NlcnZpY2VX
b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZp
dHkoIlNlcnZpY2UgV29ya2VyIGZvciBiYWNrZ3JvdW5kIHZpZXcocykiX3MpOworICAgICAgICBp
ZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkod29ya2VySW5m
b3JtYXRpb24tPmFjdGl2aXR5KSkKKyAgICAgICAgICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rp
dml0eSA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiV29ya2VyIGZvciBiYWNrZ3Jv
dW5kIHZpZXcocykiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1faGFz
U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKSB7CisgICAgaWYgKHdvcmtlclR5cGUg
PT0gV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciAmJiBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3Jv
dW5kUHJvY2Vzc2luZykgewogICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJv
Y2Vzc1N1c3BlbnNpb24sICJTZXJ2aWNlIFdvcmtlciBmb3IgYmFja2dyb3VuZCBwcm9jZXNzaW5n
Iik7Ci0gICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEJhY2tncm91bmRBY3Rp
dml0eShtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQotICAgICAgICAgICAg
bV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuYmFja2dy
b3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3IgYmFja2dyb3VuZCBwcm9jZXNzaW5nIl9z
KTsKKyAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFjdGl2
aXR5KHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCisgICAgICAgICAgICB3b3JrZXJJbmZv
cm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIlNlcnZp
Y2UgV29ya2VyIGZvciBiYWNrZ3JvdW5kIHByb2Nlc3NpbmciX3MpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbnVs
bHB0cjsKKyAgICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBudWxscHRyOwogfQogCit2
b2lkIFdlYlByb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dChjb25zdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lz
dHJhYmxlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImVz
dGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHQ6IFN0YXJ0ZWQiKTsKKyAgICBtYXJrUHJvY2Vzc0Fz
UmVjZW50bHlVc2VkKCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzOjpFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MgeyBwcm9jZXNzUG9vbCgpLmRlZmF1bHRQYWdlR3JvdXAoKS5wYWdlR3JvdXBJRCgpLCBtX3No
YXJlZFdvcmtlckluZm9ybWF0aW9uLT53b3JrZXJQYWdlUHJveHlJRCwgbV9zaGFyZWRXb3JrZXJJ
bmZvcm1hdGlvbi0+d29ya2VyUGFnZUlELCBzdG9yZSwgcmVnaXN0cmFibGVEb21haW4sIG1fc2hh
cmVkV29ya2VySW5mb3JtYXRpb24tPmluaXRpYWxpemF0aW9uRGF0YSB9LCBbdGhpcywgd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAg
ICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImVzdGFibGlz
aFNoYXJlZFdvcmtlckNvbnRleHQ6IEZpbmlzaGVkIik7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CisgICAgfSwgMCk7Cit9CisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdl
YlByb2Nlc3NQcm94eSYgcHJveHkpCiB7CiAgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1h
dGlvbikKQEAgLTE5MjcsNyArMTk1NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZWdpc3Rl
clNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCiAKICAg
ICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgInJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudFByb2Nlc3M6IGNsaWVudFByb2Nlc3M9JXAsIGNsaWVudFBJRD0lZCIs
ICZwcm94eSwgcHJveHkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgbV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3Nlcy5hZGQocHJveHkpOwotICAgIHVwZGF0ZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2Vy
dGlvbihXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkm
IHByb3h5KQpAQCAtMTkzNyw3ICsxOTY0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVucmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb3gKIAog
ICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAidW5yZWdpc3Rl
clNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzOiBjbGllbnRQcm9jZXNzPSVwLCBjbGllbnRQSUQ9
JWQiLCAmcHJveHksIHByb3h5LnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgIG1fc2VydmljZVdv
cmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMucmVtb3ZlKHByb3h5KTsKLSAgICB1cGRh
dGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOworICAgIHVwZGF0ZVdvcmtlclByb2Nl
c3NBc3NlcnRpb24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAKIGJvb2wgV2ViUHJv
Y2Vzc1Byb3h5OjpoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygp
IGNvbnN0CkBAIC0xOTU3LDcgKzE5ODQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c3RhcnRT
ZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoKQogCiAgICAgV0VCUFJPQ0VTU1BST1hZ
X1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAic3RhcnRTZXJ2aWNlV29ya2VyQmFja2dy
b3VuZFByb2Nlc3NpbmciKTsKICAgICBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vz
c2luZyA9IHRydWU7Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsK
KyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VXb3Jr
ZXIpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5kU2VydmljZVdvcmtlckJhY2tncm91
bmRQcm9jZXNzaW5nKCkKQEAgLTE5NjcsMjMgKzE5OTQsMzkgQEAgdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZygpCiAKICAgICBXRUJQUk9D
RVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJlbmRTZXJ2aWNlV29ya2Vy
QmFja2dyb3VuZFByb2Nlc3NpbmciKTsKICAgICBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5k
UHJvY2Vzc2luZyA9IGZhbHNlOwotICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0
aW9uKCk7CisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlOjpTZXJ2
aWNlV29ya2VyKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKLXZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpkaXNhYmxlU2VydmljZVdvcmtlcnMoKQordm9pZCBXZWJQcm9jZXNz
UHJveHk6OmRpc2FibGVXb3JrZXJzKE9wdGlvblNldDxXb3JrZXJUeXBlPiB3b3JrZXJUeXBlKQog
ewotICAgIGlmICghbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAgQVNTRVJUKCF3b3Jr
ZXJUeXBlLmlzRW1wdHkoKSk7CisKKyAgICBib29sIGRpZENoYW5nZSA9IGZhbHNlOworICAgIGlm
ICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpICYmIG1fc2Vy
dmljZVdvcmtlckluZm9ybWF0aW9uKSB7CisgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uID0geyB9OworICAgICAgICBkaWRDaGFuZ2UgPSB0cnVlOworICAgIH0KKyAgICBpZiAod29y
a2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpICYmIG1fc2hhcmVkV29y
a2VySW5mb3JtYXRpb24pIHsKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA9IHsg
fTsKKyAgICAgICAgZGlkQ2hhbmdlID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKCFkaWRDaGFuZ2Up
CiAgICAgICAgIHJldHVybjsKIAotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2
aWNlV29ya2VyLCAiZGlzYWJsZVNlcnZpY2VXb3JrZXJzOiIpOwotICAgIG1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uID0geyB9OworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9j
ZXNzLCAiZGlzYWJsZVdvcmtlcnM6IERpc2FibGluZyB3b3JrZXJzIChTaGFyZWRXb3JrZXJzPSVk
LCBTZXJ2aWNlV29ya2Vycz0lZCkiLCB3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNo
YXJlZFdvcmtlciksIHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtl
cikpOworCiAgICAgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKIAorICAg
IGlmICghaXNSdW5uaW5nV29ya2VycygpKQorICAgICAgICBwcm9jZXNzUG9vbCgpLnJlbW92ZUZy
b21Xb3JrZXJQcm9jZXNzZXMoKnRoaXMpOworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQot
ICAgIHByb2Nlc3NQb29sKCkucmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKnRoaXMp
OwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9z
ZSB7IH0sIDApOworICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNlcnZp
Y2VXb3JrZXIpKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6Q2xvc2UgeyB9LCAwKTsKICNlbmRpZgorICAgIGlmICh3b3JrZXJUeXBlLmNvbnRh
aW5zKFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlcikpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q2xvc2UgeyB9LCAwKTsKIAog
ICAgIG1heWJlU2h1dERvd24oKTsKIH0KQEAgLTIwMDQsMTEgKzIwNDcsMTMgQEAgc3RhdGljIFZl
Y3RvcjxzdGQ6OnBhaXI8V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLCBVUkw+PiBjb250
ZW50UnVsZUxpc3RzRnIKIH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxl
U2VydmljZVdvcmtlcnMoY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYgdXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFi
bGVXb3JrZXJzKFdvcmtlclR5cGUgd29ya2VyVHlwZSwgY29uc3QgVXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllciYgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKIHsKLSAgICBB
U1NFUlQoIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsKLSAgICBXRUJQUk9DRVNTUFJPWFlf
UkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgImVuYWJsZVNlcnZpY2VXb3JrZXJzOiIpOwotICAg
IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uID0gU2VydmljZVdvcmtlckluZm9ybWF0aW9uIHsK
KyAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgImVuYWJsZVdv
cmtlcnM6IHdvcmtlclR5cGU9JXUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4od29ya2VyVHlwZSkp
OworICAgIGF1dG8mIHdvcmtlckluZm9ybWF0aW9uID0gd29ya2VyVHlwZSA9PSBXb3JrZXJUeXBl
OjpTaGFyZWRXb3JrZXIgPyBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIDogbV9zZXJ2aWNlV29y
a2VySW5mb3JtYXRpb247CisgICAgQVNTRVJUKCF3b3JrZXJJbmZvcm1hdGlvbik7CisKKyAgICB3
b3JrZXJJbmZvcm1hdGlvbiA9IFdvcmtlckluZm9ybWF0aW9uIHsKICAgICAgICAgV2ViUGFnZVBy
b3h5SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwKICAgICAgICAgUGFnZUlkZW50aWZpZXI6OmdlbmVy
YXRlKCksCiAgICAgICAgIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgewpAQCAtMjAy
MSw5ICsyMDY2LDggQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVNlcnZpY2VXb3JrZXJz
KGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIKICAgICAgICAgeyB9CiAgICAg
fTsKICAgICB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwotI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlv
bigpOwotI2VuZGlmCisKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKHdvcmtlclR5
cGUpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlU2xlZXBEaXNhYmxlcihT
bGVlcERpc2FibGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwg
Ym9vbCBkaXNwbGF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApp
bmRleCBmNTE0Yjk5MTZhZDQuLjE5MmQ1ZDJiNmY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTEzNiw5ICsxMzYsMTMgQEAgcHVibGljOgogCiAgICAg
ZW51bSBjbGFzcyBTaG91bGRMYXVuY2hQcm9jZXNzIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBl
bnVtIGNsYXNzIENhcHRpdmVQb3J0YWxNb2RlIDogYm9vbCB7IERpc2FibGVkLCBFbmFibGVkIH07
CisgICAgZW51bSBjbGFzcyBXb3JrZXJUeXBlIDogdWludDMyX3QgeworICAgICAgICBTZXJ2aWNl
V29ya2VyID0gMSA8PCAwLAorICAgICAgICBTaGFyZWRXb3JrZXIgPSAxIDw8IDEKKyAgICB9Owog
CiAgICAgc3RhdGljIFJlZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCYs
IFdlYnNpdGVEYXRhU3RvcmUqLCBDYXB0aXZlUG9ydGFsTW9kZSwgSXNQcmV3YXJtZWQsIFdlYkNv
cmU6OkNyb3NzT3JpZ2luTW9kZSA9IFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZTo6U2hhcmVkLCBT
aG91bGRMYXVuY2hQcm9jZXNzID0gU2hvdWxkTGF1bmNoUHJvY2Vzczo6WWVzKTsKLSAgICBzdGF0
aWMgUmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlRm9yU2VydmljZVdvcmtlcnMoV2ViUHJvY2Vz
c1Bvb2wmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBXZWJzaXRlRGF0YVN0b3JlJik7
CisgICAgc3RhdGljIFJlZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZUZvcldvcmtlcnMoV29ya2Vy
VHlwZSwgV2ViUHJvY2Vzc1Bvb2wmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBXZWJz
aXRlRGF0YVN0b3JlJik7CiAKICAgICB+V2ViUHJvY2Vzc1Byb3h5KCk7CiAKQEAgLTE2MSw4ICsx
NjUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc0luUHJvY2Vzc0NhY2hlKGJvb2wsIFdpbGxT
aHV0RG93biA9IFdpbGxTaHV0RG93bjo6Tm8pOwogICAgIGJvb2wgaXNJblByb2Nlc3NDYWNoZSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNJblByb2Nlc3NDYWNoZTsgfQogCi0gICAgdm9pZCBlbmFibGVT
ZXJ2aWNlV29ya2Vycyhjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJik7Ci0g
ICAgdm9pZCBkaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICB2b2lkIGVuYWJsZVdvcmtlcnMo
V29ya2VyVHlwZSwgY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYpOworICAg
IHZvaWQgZGlzYWJsZVdvcmtlcnMoT3B0aW9uU2V0PFdvcmtlclR5cGU+KTsKIAogICAgIFdlYnNp
dGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IEFTU0VSVChtX3dlYnNpdGVE
YXRhU3RvcmUpOyByZXR1cm4gKm1fd2Vic2l0ZURhdGFTdG9yZTsgfQogICAgIHZvaWQgc2V0V2Vi
c2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlJik7CkBAIC0xOTQsNiArMTk4LDkgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpIGNvbnN0IHsgcmV0dXJu
ICEhbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247IH0KICAgICBib29sIGlzU3RhbmRhbG9uZVNl
cnZpY2VXb3JrZXJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gaXNSdW5uaW5nU2VydmljZVdvcmtl
cnMoKSAmJiAhcGFnZUNvdW50KCk7IH0KKyAgICBib29sIGlzUnVubmluZ1NoYXJlZFdvcmtlcnMo
KSBjb25zdCB7IHJldHVybiAhIW1fc2hhcmVkV29ya2VySW5mb3JtYXRpb247IH0KKyAgICBib29s
IGlzU3RhbmRhbG9uZVNoYXJlZFdvcmtlclByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBpc1J1bm5p
bmdTaGFyZWRXb3JrZXJzKCkgJiYgIXBhZ2VDb3VudCgpOyB9CisgICAgYm9vbCBpc1J1bm5pbmdX
b3JrZXJzKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiB8fCBtX3Nl
cnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsgfQogCiAgICAgYm9vbCBpc0R1bW15UHJvY2Vzc1Byb3h5
KCkgY29uc3Q7CiAKQEAgLTM1OSwxMiArMzY2LDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBk
YXRlQXVkaWJsZU1lZGlhQXNzZXJ0aW9ucygpOwogCisgICAgdm9pZCBzZXRXb3JrZXJVc2VyQWdl
bnQoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCB1cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3Jl
KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdv
cmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lk
IHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZSk7CiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQoY29u
c3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
Jiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmll
cj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwotICAgIHZvaWQgc2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsK
LSAgICB2b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmKTsKLSAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJQYWdlUHJveHkoV2Vi
UGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCkgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb24gJiYgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnNlcnZpY2VXb3JrZXJQ
YWdlUHJveHlJRCA9PSBwYWdlUHJveHlJRDsgfQotICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtl
clByb2Nlc3NBc3NlcnRpb24oKTsKKyAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJQYWdlUHJveHko
V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCkgeyByZXR1cm4gbV9zZXJ2aWNlV29y
a2VySW5mb3JtYXRpb24gJiYgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPndvcmtlclBhZ2VQ
cm94eUlEID09IHBhZ2VQcm94eUlEOyB9CiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYpOwogICAgIGJvb2wgaGFzU2Vy
dmljZVdvcmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdDsKQEAgLTY0OCwx
NCArNjU2LDE1IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBSZWZQdHI8TG9nZ2VyPiBtX2xvZ2dl
cjsKIAotICAgIHN0cnVjdCBTZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gewotICAgICAgICBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQYWdlUHJveHlJRDsKLSAgICAgICAgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgc2VydmljZVdvcmtlclBhZ2VJRDsKKyAgICBzdHJ1Y3QgV29y
a2VySW5mb3JtYXRpb24geworICAgICAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdvcmtlclBh
Z2VQcm94eUlEOworICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3b3JrZXJQYWdlSUQ7
CiAgICAgICAgIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25E
YXRhOwogICAgICAgICBQcm9jZXNzVGhyb3R0bGVyOjpBY3Rpdml0eVZhcmlhbnQgYWN0aXZpdHk7
CiAgICAgICAgIFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4gY2xpZW50UHJvY2Vzc2VzOwog
ICAgIH07Ci0gICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySW5mb3JtYXRpb24+IG1fc2Vy
dmljZVdvcmtlckluZm9ybWF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8V29ya2VySW5mb3JtYXRp
b24+IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8V29ya2Vy
SW5mb3JtYXRpb24+IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb247CiAgICAgYm9vbCBtX2hhc1Nl
cnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyB7IGZhbHNlIH07CiAKICAgICBIYXNoTWFw
PFdlYkNvcmU6OlNsZWVwRGlzYWJsZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6U2xlZXBEaXNhYmxlcj4+IG1fc2xlZXBEaXNhYmxlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiYjliZTJjMGZmMTUuLjdlMjZk
ODc1MjFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC04ODEsNiArODgxLDcgQEAKIAkJNDYxNEYxMzIyNURFRDg3NTAwNzAwNkU3IC8q
IEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZBQzUzMjQyNURFRDgxRTAwM0I1N0VDIC8qIEdQVVBy
b2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5oICovOyB9OwogCQk0NjFDQ0NBNTIzMTQ4NUE3MDBC
NjU5QjkgLyogVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzMjM2ODUyMzE0ODMzRjAwQTQ4RkE3IC8qIFVJUmVt
b3RlT2JqZWN0UmVnaXN0cnkuaCAqLzsgfTsKIAkJNDYxQ0NDQTYyMzE0ODVBQTAwQjY1OUI5IC8q
IFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NjMyMzY4MzIzMTQ4MUVGMDBBNDhGQTcgLyogV2ViUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkuaCAqLzsgfTsKKwkJNDYxRTFCRjIyNzlBMDExNjAwNkFGNTNCIC8qIFdlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYxRTFCRUYyNzlBMDEwRjAwNkFGNTNCIC8qIFdl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICovOyB9OwogCQk0NjNGRDQ4
MDFFQjk0NTk2MDBBMjk4MkMgLyogV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0ZENDdGMUVCOTQ1ODQw
MEEyOTgyQyAvKiBXS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2M0ZENDgyMUVCOTRFQzAwMEEyOTgy
QyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0ZENDgxMUVCOTRFQUQwMEEyOTgyQyAvKiBQcm9jZXNz
VGVybWluYXRpb25SZWFzb24uaCAqLzsgfTsKIAkJNDY1OUYyNUYyNzVGRjZCMjAwQkJCMzY5IC8q
IENhcHRpdmVQb3J0YWxNb2RlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NTlGMjVFMjc1RkY2QjIwMEJCQjM2OSAvKiBDYXB0aXZlUG9y
dGFsTW9kZU9ic2VydmVyLmggKi87IH07CkBAIC04OTAsNiArODkxLDggQEAKIAkJNDY3MUZGMUYy
MzIxN0VGRjAwMUI2NEM3IC8qIFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjcxRkYxRDIzMjE3RUZGMDAxQjY0
QzcgLyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCAqLzsgfTsKIAkJNDY3RTQzRTgyMjQzRkY3
RDAwQjEzOTI0IC8qIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdFNDNFNzIyNDNGRjZEMDBCMTM5
MjQgLyogV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaCAqLzsgfTsKIAkJNDY4MDlBN0My
M0Q5MjI1RTAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgwOUE3QTIzRDkyMjUzMDBDMjk3RDAgLyogV2Vi
Q29va2llQ2FjaGUuaCAqLzsgfTsKKwkJNDY5NDNERDAyNzYzRjgzQTAwNEI2MTBFIC8qIFdlYlNo
YXJlZFdvcmtlclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0Njk0M0RDRjI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyUHJv
dmlkZXIuaCAqLzsgfTsKKwkJNDY5NDNERDEyNzYzRjgzRjAwNEI2MTBFIC8qIFdlYlNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2OTQzRENEMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2QTJCNjA5MUU1Njc2QTYwMEMzREVEQSAvKiBC
YWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QTJCNjA3MUU1Njc1QTIwMEMzREVEQSAvKiBC
YWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaCAqLzsgfTsKIAkJNDZCMDUyNDcy
MjY2OEQ4NTAwMjY1Qjk3IC8qIFdlYkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDZCMDUyNDQyMjY2OEQyMzAwMjY1Qjk3IC8qIFdlYkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9u
QWNjZXNzQ29udHJvbGxlci5oICovOyB9OwogCQk0NkJFQjZENzIyRkI5QkQ3MDAyNjk4NjcgLyog
U3RvcmFnZUFyZWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2QkVCNkQ1MjJGQjlCRDYwMDI2OTg2NyAvKiBTdG9yYWdlQXJlYS5oICovOyB9OwpAQCAt
ODk3LDEwICs5MDAsMTMgQEAKIAkJNDZCRUI2REYyMkZCQjE2QjAwMjY5ODY3IC8qIFNlc3Npb25T
dG9yYWdlTmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkJFQjZERDIyRkJCMTZCMDAyNjk4NjcgLyogU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UuaCAqLzsgfTsKIAkJNDZCRUI2RTMyMkZCQjIxQTAwMjY5ODY3IC8qIFRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZCRUI2RTEyMkZCQjIxQTAwMjY5ODY3IC8qIFRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZS5oICovOyB9OwogCQk0NkMzOTIyOTIzMTZFQzREMDA4RUVEOUIgLyogV2ViUGFn
ZVByb3h5SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZDMzkyMjgyMzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIuaCAqLzsgfTsKKwkJNDZDOTE2QUEyNzk5RDBBMjAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtl
clNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDZDOTE2QTkyNzk5RDA5RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5oICovOyB9
OwogCQk0NkNFM0IxMTIzRDhDODQ5MDAxNkE5NkEgLyogV2ViQmFja0ZvcndhcmRMaXN0Q291bnRz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkNFM0Ix
MDIzRDhDODNEMDAxNkE5NkEgLyogV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmggKi87IH07CisJ
CTQ2RDQ4RkNFMjc5OUQ3RTEwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NkQ0OEZDRDI3OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oICovOyB9OwogCQk0NkRGMDYzQzFGMzkwNUY4MDAxOTgwQkIgLyog
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmggKi87IH07CiAJCTQ2RUUyODQ5MjY5RTA0QUMwMERENDhBQiAv
KiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUUyODQ4MjY5RTA0OUIwMERENDhBQiAvKiBXZWJCcm9h
ZGNhc3RDaGFubmVsUmVnaXN0cnkuaCAqLzsgfTsKIAkJNDZFRTI4NEQyNjlFMDUyNTAwREQ0OEFC
IC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUUyODRDMjY5RTA1MTcwMERENDhBQiAvKiBO
ZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggKi87IH07CisJCTQ2RUUzRThCMjc2M0ZE
MkYwMDYwQzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzODY2NzI3NjNGQUIxMDBD
RjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oICovOyB9OwogCQk0NkYz
OEU4QzI0MTZFNjczMDA1OTM3NUEgLyogUnVubmluZ0JvYXJkU2VydmljZXNTUEkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjM4RThCMjQxNkU2NkQw
MDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oICovOyB9OwogCQk0NkY5QjI2MzIz
NTI2RUYzMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkY5QjI2MjIzNTI2RUQwMDA2RkU1
RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggKi87IH07CiAJCTQ5MzEwMkJEMjY4M0Yz
RDAwMDJCQjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTMxMDJCQzI2ODNGM0E1MDAyQkI4ODUgLyogQXBwUHJp
dmFjeVJlcG9ydC5oICovOyB9OwpAQCAtMTI3NCw2ICsxMjgwLDcgQEAKIAkJNkJFOTY5QzExRTU0
RDQ1MjAwOEI3NDgzIC8qIGNvcmVQcmVkaWN0aW9uX21vZGVsIGluIFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkU5NjlDMDFFNTRENDUyMDA4Qjc0ODMgLyog
Y29yZVByZWRpY3Rpb25fbW9kZWwgKi87IH07CiAJCTZCRTk2OUNCMUU1NEQ0Q0YwMDhCNzQ4MyAv
KiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkU5NjlDOTFFNTRENENGMDA4Qjc0ODMg
LyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5oICovOyB9OwogCQk2QkU5
NjlDRDFFNTRFMDU0MDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCRTk2OUND
MUU1NEUwNTQwMDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5oICov
OyB9OworCQk2Q0FFQ0I2NjI3NDY1QUU0MDBBQjc4RDAgLyogVW5pZmllZFNvdXJjZTExNi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2Q0FFQ0I1RTI3
NDY1QUUzMDBBQjc4RDAgLyogVW5pZmllZFNvdXJjZTExNi5jcHAgKi87IH07CiAJCTZFRTg0OUM4
MTM2OEQ5MzkwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFRTg0OUM2MTM2OEQ5MkQwMDM4RDQ4
MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3MTE3MjVBOTIyOEQ1NjQzMDAwMTg1MTQgLyogV2Vic2l0
ZUxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMTcyNUE4MjI4RDU2M0EwMDAxODUxNCAvKiBX
ZWJzaXRlTGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaFBvbGljeS5oICovOyB9OwogCQk3MTM0
QTNEQTI2MDNCOTI1MDA2MjRCRDMgLyogV0tNb2RlbEludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMzRB
M0Q5MjYwM0I4MEUwMDYyNEJEMyAvKiBXS01vZGVsSW50ZXJhY3Rpb25HZXN0dXJlUmVjb2duaXpl
ci5oICovOyB9OwpAQCAtMTM1MSw2ICsxMzU4LDcgQEAKIAkJN0M5RDE1MzcxODQ1ODREQTAwOUQz
OTE4IC8qIFdLQnJvd3NpbmdDb250ZXh0R3JvdXBJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M5RDE1MzYxODQ1ODREQTAwOUQzOTE4IC8q
IFdLQnJvd3NpbmdDb250ZXh0R3JvdXBJbnRlcm5hbC5oICovOyB9OwogCQk3Q0EyNTRFQjE4Mjk5
M0NFMDBGQzhBNDEgLyogV0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NBMjU0RUExODI5OTNDRTAw
RkM4QTQxIC8qIFdLQnJvd3NpbmdDb250ZXh0UG9saWN5RGVsZWdhdGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Q0EzNzkzRTFBQzM3OEIzMDA3
OURDMzcgLyogX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVByaXZhdGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQTM3OTNEMUFDMzc4QjMwMDc5
REMzNyAvKiBfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUHJpdmF0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdDQUVDQjY2Mjc0NjVBRTQw
MEFCNzhEMCAvKiBVbmlmaWVkU291cmNlMTE3LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQUVDQjVFMjc0NjVBRTMwMEFCNzhEMCAvKiBVbmlmaWVk
U291cmNlMTE3LmNwcCAqLzsgfTsKIAkJN0NCMTAwRjExRkEzODU4QTAwMTcyOUVFIC8qIFdlYlBy
ZWZlcmVuY2VzS2V5cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3Q0IxMDBFRTFGQTJENzRBMDAxNzI5RUUgLyogV2ViUHJlZmVyZW5jZXNLZXlzLmNw
cCAqLzsgfTsKIAkJN0NCMTAwRjIxRkEzODU4RTAwMTcyOUVFIC8qIFdlYlByZWZlcmVuY2VzRGVm
aW5pdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDREU3M0EzMUY5REFCNjUwMDM5MDMxMiAvKiBXZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmgg
Ki87IH07CiAJCTdDQjEwMEYzMUZBMzg1OEUwMDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNlc0tleXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQjEwMEVG
MUZBMkQ3NEIwMDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNlc0tleXMuaCAqLzsgfTsKQEAgLTQyMTgs
NiArNDIyNiw5IEBACiAJCTQ2MDg4OUZGMjYxRkE4QTkwMEUyNTAwRCAvKiBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDYwRjQ4OEQxRjk5NkY2QzAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsg
cGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07
CiAJCTQ2MEY0ODhFMUY5OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dl
YktpdC9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTQ2MUUxQkVDMjc5QTAxMEUwMDZBRjUzQiAvKiBX
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYxRTFCRUYyNzlBMDEw
RjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYxRTFCRjAy
NzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2MjEwN0Q3MUYzOERCRDMwMERENzgxMCAvKiBQaW5nTG9hZC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQaW5nTG9hZC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2MzIzNjgzMjMxNDgxRUYwMEE0OEZBNyAvKiBXZWJSZW1vdGVPYmpl
Y3RSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZW1vdGVPYmplY3RSZWdpc3RyeS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjMyMzY4NDIzMTQ4MjVDMDBBNDhGQTcgLyog
V2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUmVtb3Rl
T2JqZWN0UmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI0NSw4
ICs0MjU2LDE1IEBACiAJCTQ2ODA5QTdCMjNEOTIyNTMwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNo
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb29raWVDYWNo
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM1NjlBMjFFODFDQzcwMDZF
MjdBMyAvKiBQcm92aXNpb25hbFBhZ2VQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQcm92aXNpb25hbFBhZ2VQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NjgzNTY5QjIxRTgxQ0M3MDA2RTI3QTMgLyogUHJvdmlzaW9uYWxQYWdlUHJveHkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvdmlzaW9uYWxQYWdlUHJv
eHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjgzODY2NzI3NjNGQUIxMDBD
RjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ2ODM4NjY4Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njg5QjkwRjI3
NTZEMTQzMDAwN0M2NTEgLyogUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
Njg5QjkxMDI3NTZEMTQzMDAwN0M2NTEgLyogUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ2OTQzRENCMjc2M0Y4MzQwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2
OTQzRENDMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzRENEMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQ0Uy
NzYzRjgzNTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzRENGMjc2M0Y4MzUwMDRCNjEwRSAvKiBX
ZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJQ
cm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlERTgwMjI3M0VDQzVE
MDA5MzAyNzYgLyogUHJvY2Vzc0xhdW5jaGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBQcm9jZXNzTGF1bmNoZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDZBMkI2MDYxRTU2NzVBMjAwQzNERURBIC8qIEJhY2tncm91bmRQ
cm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkEyQjYwNzFFNTY3NUEyMDBDM0RFREEgLyogQmFj
a2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI2Miw3ICs0MjgwLDExIEBACiAJCTQ2QkVCNkUx
MjJGQkIyMUEwMDI2OTg2NyAvKiBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2QkVCNkUyMjJGQkIyMUEwMDI2OTg2NyAvKiBUcmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZD
MzkyMjgyMzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViUGFnZVByb3h5SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0NkM5MTZBODI3OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2QzkxNkE5Mjc5OUQwOUQwMDFBNEU3QyAvKiBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2Q0UzQjEwMjNEOEM4M0QwMDE2QTk2
QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ2RDQ4RkNDMjc5OUQ3REQwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0NkQ0OEZDRDI3OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
REYwNjM5MUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZERjA2M0ExRjM5
MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZFOTc2MEEyNzU3RjZDOTAwQUNERDM3IC8qIFdl
YkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC00MjcyLDYgKzQyOTQsNyBAQAogCQk0NkVFMjg0QTI2OUUwNTE3
MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1l
c3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkVFMjg0QjI2OUUwNTE3
MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lz
dHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZFRTI4NEMyNjlFMDUxNzAw
REQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkVFM0U4QTI3NjNGRDJBMDA2MEM3MEYgLyog
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NkYzOEU4QjI0MTZFNjZEMDA1OTM3NUEgLyogUnVubmluZ0JvYXJkU2Vydmlj
ZXNTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVubmluZ0JvYXJkU2Vy
dmljZXNTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZGOUIyNjIyMzUyNkVE
MDAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDkzMTAyQkMyNjgzRjNBNTAwMkJCODg1IC8qIEFwcFByaXZhY3lS
ZXBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBwUHJpdmFjeVJlcG9ydC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNDk5MCw2ICs1MDEzLDcgQEAKIAkJNkJFOTY5QzgxRTU0RDRDRjAw
OEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Ns
YXNzaWZpZXJDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCRTk2OUM5
MUU1NEQ0Q0YwMDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29h
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NDbGFzc2lmaWVyQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkJFOTY5
Q0MxRTU0RTA1NDAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3ND
bGFzc2lmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDQUVDQjVFMjc0NjVB
RTMwMEFCNzhEMCAvKiBVbmlmaWVkU291cmNlMTE2LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVu
aWZpZWRTb3VyY2UxMTYuY3BwOyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzL1dlYktpdC91bmlmaWVk
LXNvdXJjZXMvVW5pZmllZFNvdXJjZTExNi5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwogCQk2RDhBOTFBNTExRjBFRkQxMDBERDAxRkUgLyogY29tLmFwcGxlLldlYlBy
b2Nlc3Muc2IuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gY29tLmFwcGxlLldlYlByb2Nlc3Mu
c2IuaW47IHBhdGggPSBXZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RUU4NDlDNjEzNjhEOTJEMDAzOEQ0ODEgLyogV0tJ
bnNwZWN0b3JQcml2YXRlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdL
SW5zcGVjdG9yUHJpdmF0ZU1hYy5oOyBwYXRoID0gbWFjL1dLSW5zcGVjdG9yUHJpdmF0ZU1hYy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTE3MjVBODIyOEQ1NjNBMDAwMTg1MTQg
LyogV2Vic2l0ZUxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3kuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZUxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91
Y2hQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUxNTQsNiArNTE3OCw3
IEBACiAJCTdDOUQxNTM2MTg0NTg0REEwMDlEMzkxOCAvKiBXS0Jyb3dzaW5nQ29udGV4dEdyb3Vw
SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCcm93c2luZ0Nv
bnRleHRHcm91cEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQTI1
NEVBMTgyOTkzQ0UwMEZDOEE0MSAvKiBXS0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVnYXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnJvd3NpbmdDb250ZXh0UG9saWN5
RGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NBMzc5M0QxQUMzNzhC
MzAwNzlEQzM3IC8qIF9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVQcml2YXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVQ
cml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDQUVDQjVFMjc0NjVBRTMw
MEFCNzhEMCAvKiBVbmlmaWVkU291cmNlMTE3LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZp
ZWRTb3VyY2UxMTcuY3BwOyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzL1dlYktpdC91bmlmaWVkLXNv
dXJjZXMvVW5pZmllZFNvdXJjZTExNy5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwogCQk3Q0IxMDBFRTFGQTJENzRBMDAxNzI5RUUgLyogV2ViUHJlZmVyZW5jZXNLZXlz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlByZWZlcmVuY2VzS2V5cy5jcHA7IHBhdGggPSBE
ZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViUHJlZmVyZW5jZXNLZXlzLmNwcDsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJN0NCMTAwRUYxRkEyRDc0QjAwMTcyOUVFIC8qIFdl
YlByZWZlcmVuY2VzS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJQcmVmZXJlbmNlc0tleXMuaDsg
cGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJQcmVmZXJlbmNlc0tleXMuaDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJN0NCMTAwRjAxRkEyRDc4NDAwMTcyOUVF
IC8qIFdlYlByZWZlcmVuY2VzU3RvcmVEZWZhdWx0c01hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBXZWJQcmVmZXJlbmNlc1N0b3JlRGVmYXVsdHNNYXAuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0L1dlYlByZWZlcmVuY2VzU3RvcmVEZWZhdWx0c01hcC5jcHA7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC05Mjc3LDYgKzkzMDIsMjAgQEAKIAkJCXBhdGgg
PSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTQ2ODM4NjY1Mjc2
M0ZBMUIwMENGOTE4MiAvKiBTaGFyZWRXb3JrZXIgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsK
KwkJCWNoaWxkcmVuID0gKAorCQkJCTQ2RDQ4RkNDMjc5OUQ3REQwMDdEMjAxNCAvKiBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk0NkQ0OEZDRDI3
OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oICovLAorCQkJCTQ2QzkxNkE4Mjc5OUQwOUQwMDFBNEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXIuY3BwICovLAorCQkJCTQ2QzkxNkE5Mjc5OUQwOUQwMDFBNEU3QyAvKiBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXIuaCAqLywKKwkJCQk0NkVFM0U4QTI3NjNGRDJBMDA2MEM3MEYgLyogV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKKwkJCQk0NjgzODY2NzI3
NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oICovLAor
CQkJCTQ2ODM4NjY4Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uLmNwcCAqLywKKwkJCSk7CisJCQlwYXRoID0gU2hhcmVkV29ya2VyOworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNDY5REU4MDEyNzNFQ0M1RDAwOTMwMjc2IC8qIGNv
Y29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTkzMjgs
NiArOTM2Nyw3IEBACiAJCTUxMENDN0RBMTYxMzhFMDEwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vz
cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDY4Mzg2
NjUyNzYzRkExQjAwQ0Y5MTgyIC8qIFNoYXJlZFdvcmtlciAqLywKIAkJCQlFNDg5RDI4MjFBMEEy
QkU4MDA3OEMwNkEgLyogY2FjaGUgKi8sCiAJCQkJN0E4NDNBMUQyMUU0MUZEOTAwREVGNjYzIC8q
IENsYXNzaWZpZXIgKi8sCiAJCQkJN0VDNEYwRjgxOEU0QTkyMjAwODA1NkFGIC8qIGNvY29hICov
LApAQCAtOTQzNiw2ICs5NDc2LDE0IEBACiAJCTUxMThFOTk4MUYyOTUyNTkwMDNFRjlGNSAvKiBT
dG9yYWdlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0
NjFFMUJFQzI3OUEwMTBFMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmNwcCAqLywKKwkJCQk0NjFFMUJFRjI3OUEwMTBGMDA2QUY1M0IgLyogV2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggKi8sCisJCQkJNDYxRTFCRjAyNzlB
MDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbiAqLywKKwkJCQk0Njk0M0RDRTI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgKi8sCisJCQkJNDY5NDNEQ0QyNzYzRjgzNTAwNEI2
MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAqLywKKwkJCQk0Njk0M0RD
QjI3NjNGODM0MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNz
YWdlcy5pbiAqLywKKwkJCQk0Njk0M0RDQzI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29y
a2VyUHJvdmlkZXIuY3BwICovLAorCQkJCTQ2OTQzRENGMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJT
aGFyZWRXb3JrZXJQcm92aWRlci5oICovLAogCQkJCTQxMzFGM0UwMUY5ODcxMkMwMDU5OTk1QSAv
KiBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCAqLywKIAkJCQk0MTlBQ0Y5QjFG
OTgxRDI2MDA5RjFBODMgLyogV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oICovLAog
CQkJCTUxQkVCNjI5MUYzQTVBQ0QwMDUwMjlCOSAvKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIu
Y3BwICovLApAQCAtMTI3NjEsNiArMTI4MDksNyBAQAogCQkJCTQ5RkJGMDAwMjM5QjFGNzUwMEJE
MDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDlGQkYwMDkyMzlGMDhFMDAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NUaGlyZFBhcnR5SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3NjMxMUZEMUEz
RkI1RjcwMDVBMkU1MSAvKiBfV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNDYxRTFCRjIyNzlBMDExNjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc2MzExRkUxQTNG
QjYwMDAwNUEyRTUxIC8qIF9XS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlSW50ZXJuYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBMDAyRDQ0MTk2QjMzODkwMEI5QUQ0NCAvKiBfV0tTZXNzaW9u
U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDAyRDQzMTk2QjMzNzAwMEI5QUQ0NCAvKiBf
V0tTZXNzaW9uU3RhdGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjkyNSw2ICsxMjk3
NCw3IEBACiAJCQkJRTE3MDg3NkMxNkQ2Q0E2OTAwRjk5MjI2IC8qIEJsb2JSZWdpc3RyeVByb3h5
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0RjYwMTQzMjE1NUM1QUEyMDAxRkJERTAgLyogQmxvY2tp
bmdSZXNwb25zZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NzA1MTExQkU0MTBFNjAwODc0
QUYxIC8qIEJsb2NrU1BJLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkM5MTZBQTI3OTlEMEEyMDAx
QTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzMw
NjVGQTEyNTkzNDRFMDBFNzEyNzggLyogQ2FjaGVNb2RlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDE4OTdFRDgxRjQxNUQ4QTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDFGQUJEMkExRjRERTAwMTAwNkE2Qzk3IC8qIENhY2hlU3RvcmFnZUVuZ2lu
ZUNhY2hlLmggaW4gSGVhZGVycyAqLywKQEAgLTEzMzkwLDYgKzEzNDQwLDcgQEAKIAkJCQkxQUMx
MzM2ODE4NTY1QjU3MDBGM0VDMDUgLyogVXNlckRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
NDkxQjA4MUU3MEQwNUYwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0Q0OTFCMEUxRTczMkU0RDAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2RUUzRThCMjc2M0ZEMkYw
MDYwQzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDRDQ5MUIxMzFFNzM0ODIxMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q0OTFCMTgxRTczNTI1NTAwMDA5MDY2IC8q
IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDcyOTdGOUYxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1By
b3h5LmggaW4gSGVhZGVycyAqLywKQEAgLTEzNDc2LDYgKzEzNTI3LDcgQEAKIAkJCQkzMzA5MzQ0
QTEzMTVCOTIyMDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMUREN0IyMTE0REMzOTYwMDVBREFGMyAvKiBXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkY1ODlCMTJBODgzODgwMDYyOTUzMCAv
KiBXZWJDcmVkZW50aWFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk0Njk0M0REMDI3NjNGODNBMDA0
QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
QTgzRjZEMUE1QjYzRkYwMDAyNkVDNiAvKiBXZWJEYXRhYmFzZVByb3ZpZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFNTJDRjU1MjIwQTM1QzNBMDBEQURBMjcgLyogV2ViRGF0YUxpc3RTdWdnZXN0
aW9uUGlja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNTY4QjkxRjIwQTNBQjJGMDBFM0M4NTYg
LyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duLmggaW4gSGVhZGVycyAqLywKQEAgLTEz
NTEwLDYgKzEzNTYyLDcgQEAKIAkJCQlCQzAzMkQ3RjEwRjQzNzhEMDA1OEMxNUEgLyogV2ViRnJh
bWVMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTFGMkNCMTIxQjY3QUQwMEVC
RjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0I5RjZBMDExMjNBODRCMDBBMTM3RTAgLyogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0Njk0M0REMTI3NjNGODNGMDA0QjYxMEUgLyogV2ViU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5QjM4QTExMEY1
MzhCRTAwNDQzQTE1IC8qIFdlYkZyYW1lUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJF
MUFCMUQ1NTVBQTAwMEREN0M2OCAvKiBXZWJHYW1lcGFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MTVCRTE3OTFENTNGRThGMDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVy
cyAqLywKQEAgLTEzNjM2LDYgKzEzNjg5LDcgQEAKIAkJCQkxQTQ4MzJENzFBOUNERjk2MDA4QjRE
RkUgLyogV2Vic2l0ZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDgzMkQxMUE5QkRDMkYw
MDhCNERGRSAvKiBXZWJzaXRlRGF0YVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1M0My
QUExQTMyNTczMDAwNEU4QzcwIC8qIFdlYnNpdGVEYXRhU3RvcmUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTQ2RDQ4RkNFMjc5OUQ3RTEwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTFGN0Q0MTFFQjFCQ0Y1MDBF
NDdCODMgLyogV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTcxMTcyNUE5MjI4RDU2NDMwMDAxODUxNCAvKiBXZWJzaXRlTGVnYWN5T3ZlcmZsb3dTY3JvbGxp
bmdUb3VjaFBvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjRDQjA5RTUyMjVENUEwOTAwODkx
NDg3IC8qIFdlYnNpdGVNZWRpYVNvdXJjZVBvbGljeS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmNwcAppbmRleCA4ZDNiNTdiZDE4ZGMuLmJiMzU0N2Y0NmFkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC01Nyw2ICs1NywxMCBAQAogI2luY2x1ZGUgIldlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNlcnZpY2VXb3JrZXJQcm92aWRl
ci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3Nh
Z2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIgorI2lu
Y2x1ZGUgIldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1
ZGUgIldlYlNvY2tldENoYW5uZWwuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRTdHJlYW0uaCIKQEAgLTE3Myw2ICsxNzcsMTYgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVAKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgor
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAg
ICAgIHNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIEFTU0VSVChT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKTsKKyAg
ICAgICAgaWYgKGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiA9IFNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCisgICAgICAgICAgICBzdGF0
aWNfY2FzdDxXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24mPigqY29udGV4
dE1hbmFnZXJDb25uZWN0aW9uKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RF
X1VJKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6
V2ViUGF5bWVudENvb3JkaW5hdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKQEAgLTMwNyw2
ICszMjEsMTMgQEAgV2ViU1dDbGllbnRDb25uZWN0aW9uJiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b246OnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCkKIH0KICNlbmRpZgogCitXZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uJiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OnNoYXJlZFdvcmtl
ckNvbm5lY3Rpb24oKQoreworICAgIGlmICghbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uKQorICAg
ICAgICBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24gPSBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uOjpjcmVhdGUoKTsKKyAgICByZXR1cm4gKm1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbjsK
K30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246Om1lc3NhZ2VzQXZhaWxhYmxlRm9y
UG9ydChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIG1lc3NhZ2VQb3J0SWRl
bnRpZmllcikKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5tZXNzYWdlc0F2YWlsYWJs
ZUZvclBvcnQobWVzc2FnZVBvcnRJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5k
ZXggZDYyZGZlNGRmNWFhLi41ZjA1MDQwOWFjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCkBA
IC00OCw2ICs0OCw3IEBAIGVudW0gY2xhc3MgSFRUUENvb2tpZUFjY2VwdFBvbGljeSA6IHVpbnQ4
X3Q7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViSURCQ29ubmVjdGlvblRvU2VydmVy
OworY2xhc3MgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjsKIGNsYXNzIFdlYlNXQ2xp
ZW50Q29ubmVjdGlvbjsKIAogY2xhc3MgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIDogcHVibGlj
IFJlZkNvdW50ZWQ8TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uPiwgSVBDOjpDb25uZWN0aW9uOjpD
bGllbnQgewpAQCAtNzAsNiArNzEsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQogICAgIFdlYlNXQ2xpZW50Q29ubmVjdGlvbiYgc2VydmljZVdvcmtlckNvbm5lY3Rpb24o
KTsKICNlbmRpZgorICAgIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24mIHNoYXJlZFdv
cmtlckNvbm5lY3Rpb24oKTsKIAogI2lmIEhBVkUoQVVESVRfVE9LRU4pCiAgICAgdm9pZCBzZXRO
ZXR3b3JrUHJvY2Vzc0F1ZGl0VG9rZW4oc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRp
dFRva2VuKSB7IG1fbmV0d29ya1Byb2Nlc3NBdWRpdFRva2VuID0gYXVkaXRUb2tlbjsgfQpAQCAt
MTIzLDYgKzEyNSw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IFJlZlB0cjxXZWJTV0NsaWVudENvbm5lY3Rpb24+IG1fc3dDb25uZWN0aW9uOwogI2VuZGlmCisg
ICAgUmVmUHRyPFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24+IG1fc2hhcmVkV29ya2Vy
Q29ubmVjdGlvbjsKICAgICBXZWJDb3JlOjpIVFRQQ29va2llQWNjZXB0UG9saWN5IG1fY29va2ll
QWNjZXB0UG9saWN5OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li5iZmUwYmI2ODY1NzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBA
IC0wLDAgKzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIgorCisjaW5jbHVk
ZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldl
YlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9FbXB0eUNsaWVudHMuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
V29ya2VyRmV0Y2hSZXN1bHQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBh
Z2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2Vi
UGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYgcHJlZmVyZW5jZXNTdG9yZSwgU2VydmljZVdvcmtlckluaXRpYWxpemF0
aW9uRGF0YSYmIGluaXRpYWxpemF0aW9uRGF0YSkKKyAgICA6IG1fY29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MoV1RGTW92ZShjb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcykpCisgICAgLCBtX3Jl
Z2lzdHJhYmxlRG9tYWluKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pKQorICAgICwgbV9wYWdl
R3JvdXBJRChwYWdlR3JvdXBJRCkKKyAgICAsIG1fd2ViUGFnZVByb3h5SUQod2ViUGFnZVByb3h5
SUQpCisgICAgLCBtX3BhZ2VJRChwYWdlSUQpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgLCBt
X3VzZXJBZ2VudChzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoeyB9KSkKKyNl
bHNlCisgICAgLCBtX3VzZXJBZ2VudChzdGFuZGFyZFVzZXJBZ2VudCgpKQorI2VuZGlmCisgICAg
LCBtX3VzZXJDb250ZW50Q29udHJvbGxlcihXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmdldE9y
Q3JlYXRlKGluaXRpYWxpemF0aW9uRGF0YS51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
KSkKK3sKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIG1fdXNlckNvbnRlbnRD
b250cm9sbGVyLT5hZGRDb250ZW50UnVsZUxpc3RzKFdURk1vdmUoaW5pdGlhbGl6YXRpb25EYXRh
LmNvbnRlbnRSdWxlTGlzdHMpKTsKKyNlbmRpZgorCisgICAgdXBkYXRlUHJlZmVyZW5jZXNTdG9y
ZShwcmVmZXJlbmNlc1N0b3JlKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5kaXNhYmxl
VGVybWluYXRpb24oKTsKK30KKworV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjp+V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKCkgPSBkZWZhdWx0
OworCit2b2lkIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZXN0YWJs
aXNoQ29ubmVjdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0YWJsaXNoU2hh
cmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24geyBtX3dlYlBhZ2VQcm94eUlELCBtX3JlZ2lzdHJh
YmxlRG9tYWluIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCAwKTsKK30KKwordm9pZCBX
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnBvc3RFeGNlcHRpb25Ub1dv
cmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgbV9jb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6UG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0IHsgc2hhcmVk
V29ya2VySWRlbnRpZmllciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IHNvdXJjZVVSTCB9LCAwKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OnVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNT
dG9yZSYgc3RvcmUpCit7CisgICAgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXNHZW5lcmF0ZWQo
c3RvcmUpOworICAgIG1fcHJlZmVyZW5jZXNTdG9yZSA9IHN0b3JlOworfQorCit2b2lkIFdlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bGF1bmNoU2hhcmVkV29ya2VyKFdl
YkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRp
ZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiB1cmwsIFdlYkNvcmU6Oldvcmtlck9w
dGlvbnMmJiB3b3JrZXJPcHRpb25zLCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmIHdvcmtl
ckZldGNoUmVzdWx0KQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bGF1bmNoU2hhcmVkV29ya2VyOiBzaGFy
ZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJ
bnQ2NCgpKTsKKyAgICBhdXRvIHBhZ2VDb25maWd1cmF0aW9uID0gcGFnZUNvbmZpZ3VyYXRpb25X
aXRoRW1wdHlDbGllbnRzKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNlc3Npb25JRCgpKTsKKwor
ICAgIHBhZ2VDb25maWd1cmF0aW9uLmRhdGFiYXNlUHJvdmlkZXIgPSBXZWJEYXRhYmFzZVByb3Zp
ZGVyOjpnZXRPckNyZWF0ZShtX3BhZ2VHcm91cElEKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5z
b2NrZXRQcm92aWRlciA9IFdlYlNvY2tldFByb3ZpZGVyOjpjcmVhdGUobV93ZWJQYWdlUHJveHlJ
RCk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uYnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5ID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuYnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5KCk7CisgICAgcGFn
ZUNvbmZpZ3VyYXRpb24ud2ViTG9ja1JlZ2lzdHJ5ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViTG9ja1JlZ2lzdHJ5KCk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRQcm92
aWRlciA9IG1fdXNlckNvbnRlbnRDb250cm9sbGVyOworI2lmIEVOQUJMRShXRUJfUlRDKQorICAg
IHBhZ2VDb25maWd1cmF0aW9uLmxpYldlYlJUQ1Byb3ZpZGVyID0gbWFrZVVuaXF1ZVJlZjxTZXJ2
aWNlV29ya2VyTGliV2ViUlRDUHJvdmlkZXI+KCk7CisjZW5kaWYKKworICAgIC8vIEZJWE1FOiBT
ZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQgc2hvdWxkIGJlIHJlbmFtZWQgaWYgdXNlZCBi
eSBTaGFyZWRXb3JrZXJzLgorICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1h
aW5GcmFtZSA9IG1ha2VVbmlxdWVSZWY8U2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50Piht
X3dlYlBhZ2VQcm94eUlELCBtX3BhZ2VJRCwgRnJhbWVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBt
X3VzZXJBZ2VudCk7CisKKyAgICBhdXRvIHBhZ2UgPSBtYWtlVW5pcXVlUmVmPFBhZ2U+KFdURk1v
dmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKKyAgICBpZiAobV9wcmVmZXJlbmNlc1N0b3JlKSB7Cisg
ICAgICAgIFdlYlBhZ2U6OnVwZGF0ZVNldHRpbmdzR2VuZXJhdGVkKCptX3ByZWZlcmVuY2VzU3Rv
cmUsIHBhZ2UtPnNldHRpbmdzKCkpOworICAgICAgICBwYWdlLT5zZXR0aW5ncygpLnNldFN0b3Jh
Z2VCbG9ja2luZ1BvbGljeShzdGF0aWNfY2FzdDxTdG9yYWdlQmxvY2tpbmdQb2xpY3k+KG1fcHJl
ZmVyZW5jZXNTdG9yZS0+Z2V0VUludDMyVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnN0
b3JhZ2VCbG9ja2luZ1BvbGljeUtleSgpKSkpOworICAgIH0KKyAgICBXZWJDb3JlOjpTaGFyZWRX
b3JrZXJUaHJlYWRQcm94eTo6c2V0dXBQYWdlRm9yU2hhcmVkV29ya2VyKHBhZ2UuZ2V0KCksIHVy
bCwgb3JpZ2luLCB3b3JrZXJGZXRjaFJlc3VsdCk7CisgICAgYXV0byBzaGFyZWRXb3JrZXJUaHJl
YWRQcm94eSA9IFdlYkNvcmU6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpjcmVhdGUoV1RGTW92
ZShwYWdlKSwgc2hhcmVkV29ya2VySWRlbnRpZmllciwgb3JpZ2luLCB1cmwsIFdURk1vdmUod29y
a2VyRmV0Y2hSZXN1bHQpLCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMpLCBtX3VzZXJBZ2VudCwgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuY2FjaGVTdG9yYWdlUHJvdmlkZXIoKSk7CisKKyAgICBXZWJD
b3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkucmVnaXN0ZXJTaGFy
ZWRXb3JrZXJUaHJlYWQoV1RGTW92ZShzaGFyZWRXb3JrZXJUaHJlYWRQcm94eSkpOworfQorCit2
b2lkIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Y2xvc2UoKQorewor
ICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6Y2xvc2U6IFNoYXJlZCB3b3JrZXIgcHJvY2VzcyBpcyByZXF1ZXN0ZWQg
dG8gc3RvcCBhbGwgc2hhcmVkIHdvcmtlcnMiKTsKKyAgICBzZXRBc0Nsb3NlZCgpOworCisgICAg
bV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkNsb3NlU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24geyB9
LCAwKTsKKyAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9u
KCkuc3RvcEFsbFNoYXJlZFdvcmtlcnMoKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bmFibGVUZXJtaW5hdGlvbigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lZDkxZjk3YzFiMTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiSWRlbnRpZmllclR5
cGVzLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VySWRl
bnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZWdpc3RyYWJsZURvbWFp
bjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKK3N0cnVjdCBXb3JrZXJPcHRpb25zOworfQor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOwor
c3RydWN0IFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGE7CisKK2NsYXNzIFdlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mJiwgUGFnZUdyb3VwSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBTZXJ2aWNlV29y
a2VySW5pdGlhbGl6YXRpb25EYXRhJiYpOworICAgIH5XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24oKTsKKworICAgIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29y
a2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VVUkwpIGZpbmFsOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICAvLyBJ
UEMgTWVzc2FnZXMuCisgICAgdm9pZCBsYXVuY2hTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFVSTCYmLCBXZWJDb3Jl
OjpXb3JrZXJPcHRpb25zJiYsIFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYpOworICAgIHZv
aWQgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7Cisg
ICAgdm9pZCBzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KSB7IG1fdXNlckFnZW50ID0g
V1RGTW92ZSh1c2VyQWdlbnQpOyB9CisgICAgdm9pZCBjbG9zZSgpOworCisgICAgUmVmPElQQzo6
Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzczsKKyAgICBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluOworICAgIFBhZ2VHcm91cElkZW50
aWZpZXIgbV9wYWdlR3JvdXBJRDsKKyAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIG1fd2ViUGFn
ZVByb3h5SUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CisgICAgU3Ry
aW5nIG1fdXNlckFnZW50OworICAgIFJlZjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXI+IG1fdXNl
ckNvbnRlbnRDb250cm9sbGVyOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViUHJlZmVyZW5jZXNTdG9y
ZT4gbV9wcmVmZXJlbmNlc1N0b3JlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kODJhNGFk
YTUzZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAg
LTAsMCArMSwzMCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitt
ZXNzYWdlcyAtPiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gTm90UmVm
Q291bnRlZCB7CisgICAgTGF1bmNoU2hhcmVkV29ya2VyKHN0cnVjdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4gb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtl
cklkZW50aWZpZXIsIFVSTCB1cmwsIHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdvcmtl
ck9wdGlvbnMsIHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCB3b3JrZXJGZXRjaFJl
c3VsdCkKKyAgICBQb3N0Q29ubmVjdEV2ZW50KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZp
ZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9y
dCBwb3J0LCBTdHJpbmcgc291cmNlT3JpZ2luKQorICAgIFRlcm1pbmF0ZVNoYXJlZFdvcmtlcihX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIpCisg
ICAgVXBkYXRlUHJlZmVyZW5jZXNTdG9yZShzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0
b3JlIHN0b3JlKQorICAgIFNldFVzZXJBZ2VudChTdHJpbmcgdXNlckFnZW50KQorICAgIENsb3Nl
KCkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kN2Q5OTRkZTFmNzcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCIK
KworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRl
bnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyT3B0aW9ucy5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBS
RUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQ
Ukl1NjQgIl0gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsIFdl
YkNvcmU6OlByb2Nlc3M6OmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQor
CitXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJXZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uOiIpOworfQorCitXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uOjp+V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpCit7CisgICAgQ09OTkVDVElP
Tl9SRUxFQVNFX0xPRygifldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Iik7Cit9CisK
K0lQQzo6Q29ubmVjdGlvbiogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6bWVzc2Fn
ZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwor
fQorCit2b2lkIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnJlcXVlc3RTaGFyZWRX
b3JrZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29u
c3QgVVJMJiB1cmwsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBjb25z
dCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25zKQoreworICAgIENPTk5FQ1RJ
T05fUkVMRUFTRV9MT0coInJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uOjpSZXF1ZXN0U2hhcmVkV29ya2VyIHsgb3JpZ2luLCBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLCB1cmwsIFdURk1vdmUocG9ydCksIHdvcmtlck9wdGlvbnMgfSk7
Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6c2hhcmVkV29ya2Vy
T2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9M
T0coInNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyPSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbjo6U2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkgeyBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyIH0pOworfQorCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xP
RworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmVjYmY0MmY2NzYy
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDU0IEBACisKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRl
ICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24sIHByaXZhdGUgSVBD
OjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgor
ICAgIHN0YXRpYyBSZWY8V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbj4gY3JlYXRlKCkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKTsg
fQorICAgIH5XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCk7CisKKyAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwor
Citwcml2YXRlOgorICAgIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKTsKKworICAg
IC8vIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uCisgICAgdm9pZCByZXF1
ZXN0U2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFdlYkNvcmU6OlNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OlRyYW5zZmVy
cmVkTWVzc2FnZVBvcnQmJiwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYpIGZpbmFsOwor
ICAgIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllcikgZmluYWw7CisKKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3Nh
Z2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNl
bmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
MWNlYTE5MzJlOWY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAt
MCwwICsxLDI3IEBACisjIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21l
c3NhZ2VzIC0+IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24geworICAgIEZldGNoU2Ny
aXB0SW5DbGllbnQoVVJMIHVybCwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6V29ya2VyT3B0
aW9ucyB3b3JrZXJPcHRpb25zKSAtPiAoc3RydWN0IFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0
IGZldGNoUmVzdWx0KSBBc3luYworICAgIE5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZhaWx1cmUo
V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyKQorICAgIFBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFN0
cmluZyBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTdHJp
bmcgc291cmNlVVJMKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDQ5NWE0MjI1ZTYwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIu
Y3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaCIKKworI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJX
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitXZWJTaGFyZWRXb3JrZXJQcm92aWRlciYgV2ViU2hhcmVkV29ya2VyUHJvdmlkZXI6OnNpbmds
ZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdlYlNoYXJlZFdvcmtlclByb3Zp
ZGVyPiBwcm92aWRlcjsKKyAgICByZXR1cm4gcHJvdmlkZXI7Cit9CisKK1dlYlNoYXJlZFdvcmtl
clByb3ZpZGVyOjpXZWJTaGFyZWRXb3JrZXJQcm92aWRlcigpID0gZGVmYXVsdDsKKworV2ViQ29y
ZTo6U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXI6
OnNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKQoreworICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuc2hhcmVkV29ya2VyQ29u
bmVjdGlvbigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJQcm92aWRlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODZlM2QyZmU3MGEwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hh
cmVkV29ya2VyUHJvdmlkZXIuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlclByb3ZpZGVyLmg+CisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb247Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpT
aGFyZWRXb3JrZXJQcm92aWRlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFdlYlNoYXJlZFdvcmtl
clByb3ZpZGVyJiBzaW5nbGV0b24oKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgTmV2ZXJEZXN0
cm95ZWQ8V2ViU2hhcmVkV29ya2VyUHJvdmlkZXI+OworICAgIFdlYlNoYXJlZFdvcmtlclByb3Zp
ZGVyKCk7CisKKyAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKiBzaGFy
ZWRXb3JrZXJDb25uZWN0aW9uKCkgZmluYWw7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAwMmRhOTExNDdmOGEu
LjhjNzRjN2NiY2E0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApA
QCAtODQsNiArODQsOSBAQAogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hh
cmVkV29ya2VyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRTdHJlYW0uaCIKICNpbmNs
dWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
LmgiCkBAIC0xMzMsNiArMTM2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2lu
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckdlc3R1cmVJbmRpY2F0b3Iu
aD4KICNpbmNsdWRlIDxwYWwvTG9nZ2luZy5oPgogI2luY2x1ZGUgPHd0Zi9BbGdvcml0aG1zLmg+
CkBAIC01NjksNiArNTczLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vz
cyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAgICAgU2VydmljZVdvcmtlclByb3ZpZGVyOjpzZXRTaGFyZWRQcm92
aWRlcihXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpKTsKICNlbmRpZgorICAg
IFNoYXJlZFdvcmtlclByb3ZpZGVyOjpzZXRTaGFyZWRQcm92aWRlcihXZWJTaGFyZWRXb3JrZXJQ
cm92aWRlcjo6c2luZ2xldG9uKCkpOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIEpT
Qzo6V2FzbTo6ZW5hYmxlRmFzdE1lbW9yeSgpOwpAQCAtOTAyLDcgKzkwNyw2IEBAIHZvaWQgV2Vi
UHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEM6OkRlY29kZXImIGRlCiAgICAgfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAg
IC8vIEZJWE1FOiBSZW1vdmU/CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgp
ID09IE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpKSB7CiAgICAgICAgIEFTU0VSVChTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24o
KS5jb25uZWN0aW9uKCkpOwogICAgICAgICBpZiAoYXV0byogY29udGV4dE1hbmFnZXJDb25uZWN0
aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKQpAQCAtOTEx
LDYgKzkxNSwxMyBAQCB2b2lkIFdlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZQogICAgIH0KICNlbmRpZgogCisg
ICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkg
eworICAgICAgICBBU1NFUlQoU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigp
LmNvbm5lY3Rpb24oKSk7CisgICAgICAgIGlmIChhdXRvKiBjb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24gPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigp
KQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uJj4oKmNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbikuZGlkUmVjZWl2ZU1lc3NhZ2Uo
Y29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBMT0df
RVJST1IoIlVuaGFuZGxlZCB3ZWIgcHJvY2VzcyBtZXNzYWdlICclcycgKGRlc3RpbmF0aW9uOiAl
IiBQUkl1NjQgIiBwaWQ6ICVkKSIsIGRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2FnZU5hbWUoKSks
IGRlY29kZXIuZGVzdGluYXRpb25JRCgpLCBzdGF0aWNfY2FzdDxpbnQ+KGdldEN1cnJlbnRQcm9j
ZXNzSUQoKSkpOwogfQogCkBAIC0xOTE3LDYgKzE5MjgsMTYgQEAgTGliV2ViUlRDTmV0d29yayYg
V2ViUHJvY2Vzczo6bGliV2ViUlRDTmV0d29yaygpCiAgICAgcmV0dXJuICptX2xpYldlYlJUQ05l
dHdvcms7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3Vw
SUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFJlZ2lzdHJhYmxlRG9t
YWluJiYgcmVnaXN0cmFibGVEb21haW4sIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEm
JiBpbml0aWFsaXphdGlvbkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICAvLyBXZSBhcmUgaW4gdGhlIFNoYXJlZCBXb3JrZXIgY29udGV4
dCBwcm9jZXNzIGFuZCB0aGUgY2FsbCBiZWxvdyBlc3RhYmxpc2hlcyBvdXIgY29ubmVjdGlvbiB0
byB0aGUgTmV0d29yayBQcm9jZXNzCisgICAgLy8gYnkgY2FsbGluZyBlbnN1cmVOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0
aGUgc2FtZSB1bmRlcmx5aW5nIElQQzo6Q29ubmVjdGlvbiBhcyB0aGUKKyAgICAvLyBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24gZm9yIHN5bmNocm9uaXphdGlvbiBwdXJwb3Nlcy4KKyAgICBhdXRv
JiBpcGNDb25uZWN0aW9uID0gZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpOworICAgIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRD
b25uZWN0aW9uKG1ha2VVbmlxdWU8V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uPihpcGNDb25uZWN0aW9uLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgcGFnZUdyb3Vw
SUQsIHdlYlBhZ2VQcm94eUlELCBwYWdlSUQsIHN0b3JlLCBXVEZNb3ZlKGluaXRpYWxpemF0aW9u
RGF0YSkpKTsKKyAgICBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29u
bmVjdGlvbigpLT5lc3RhYmxpc2hDb25uZWN0aW9uKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKK30KKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgV2ViUHJvY2Vzczo6ZXN0
YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdl
R3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBh
Z2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmIHN0b3JlLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9w
dGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXph
dGlvbkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGRkOGQ3NGZmZjI2OS4u
NjVmNzczMjAxYTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTQ2
OSw2ICs0NjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2FtZXBhZERpc2Nvbm5lY3RlZCh1bnNp
Z25lZCBpbmRleCk7CiAjZW5kaWYKIAorICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZpZXIsIFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVm
ZXJlbmNlc1N0b3JlJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgU2VydmljZVdvcmtl
ckluaXRpYWxpemF0aW9uRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmllciwgV2Vi
UGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBkZmQzMDY0NTYzZjkuLmU1NTI5
NmI5MDRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KQEAgLTEwMCw2ICsxMDAsOCBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2Fj
eVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewogICAgIEdhbWVwYWREaXNjb25uZWN0ZWQodW5zaWdu
ZWQgaW5kZXgpCiAjZW5kaWYKIAorICAgIEVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJLaXQ6OlBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdy
b3VwSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNl
c1N0b3JlIHN0b3JlLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIHN0cnVjdCBX
ZWJLaXQ6OlNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRh
KSAtPiAoKSBBc3luYworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIEVzdGFibGlz
aFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpQ
YWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50
aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3Ry
dWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gZG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJL
aXQ6OlNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRhKSAt
PiAoKSBBc3luYwogI2VuZGlmCg==
</data>
<flag name="commit-queue"
          id="477076"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450662</attachid>
            <date>2022-02-02 09:53:53 -0800</date>
            <delta_ts>2022-02-02 11:54:53 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>235958_SharedWorker_multiProcess_wip.patch</filename>
            <type>text/plain</type>
            <size>330151</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDQwYjI5NmM3MWQzNy4uMzZhMDczMTE3NjBlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTQ2Myw3ICs0NjMsNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYi1sb2Nrcy9zdGVhbC50ZW50YXRpdmUuaHR0cHMuYW55Lmh0bWwgWyBEdW1wSgog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3Ro
ZS1hbmFseXNlcm5vZGUtaW50ZXJmYWNlL3Rlc3QtYW5hbHlzZXItbWluaW11bS5odG1sIFsgRHVt
cEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUt
ZGlzY29ubmVjdC1hdWRpb3BhcmFtLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NhbWUtb3JpZ2luLWNoZWNr
LnN1Yi5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMuaHRt
bCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCiBmYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWJh
Y2stZm9yd2FyZC1jYWNoZS5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGZhc3Qv
aGlzdG9yeS9wYWdlLWNhY2hlLWNyZWF0ZUltYWdlQml0bWFwLmh0bWwgWyBEdW1wSlNDb25zb2xl
TG9nSW5TdGRFcnIgXQogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLWluLWxv
YWRpbmctaWZyYW1lLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQpAQCAtNTE1NCw2
ICs1MTUzLDEwIEBAIHdlYmtpdC5vcmcvYi8xODM5OTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3Nzb20vY3NzLXN0eWxlLWF0dHItZGVjCiAjIFRlc3QgaXMgY3Jhc2hpbmcg
aW4gRGVidWcgYnVpbGRzIHNpbmNlIGltcG9ydC4KIHdlYmtpdC5vcmcvYi8yMzQ5NzcgWyBEZWJ1
ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9mb2N1cy1ldmVu
dC1kb2N1bWVudC1tb3ZlLmh0bWwgWyBTa2lwIF0KIAorIyBUZXN0IGlzIGZsYWt5IGJlY2F1c2Ug
TWVzc2FnZVBvcnQgbWVzc2FnZXMgbWF5IGdldCByZWNlaXZlZCBpbiBhIGRpZmZlcmVudCBvcmRl
ciB3aGVuIHNldmVyYWwgTWVzc2FnZVBvcnRzIGFyZSBpbnZvbHZlZCwKKyMgZHVlIHRvIGhvdyBN
ZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpIGlzIGltcGxlbWVudGVkLgoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0
aW9ucy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIEZhaWx1cmUgUGFzcyBdCisKICMg
UGx1Z2lucwogIyBGSVhNRTogUmVtb3ZlIHRoZXNlIHRlc3RzLgogcGx1Z2lucy8gWyBTa2lwIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0
LW9ubHkuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3
b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dAppbmRleCAwZTk5NzI0Yjg2NGIuLjY4
OThiNTRhYWI2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdv
cmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRl
LXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSw2
ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2Nh
bGhvc3Q6OTQ0NC9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zdXBwb3J0L3Jlc291cmNlLnB5P2Ny
b3NzLW9yaWdpbi1mZXRjaAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8v
d3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQvcmVzb3Vy
Y2UucHk/Y3Jvc3Mtb3JpZ2luLXhocgotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0
dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQv
cmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLWZldGNoCiAKIFBBU1MgU2FtZS1vcmlnaW4gJ2ZldGNo
KCknLgogUEFTUyBTYW1lLW9yaWdpbiBYSFIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lk
ZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWItZXhwZWN0ZWQu
dHh0CmluZGV4IDk3OTEwNjMwMzc4NS4uYmI2NDUyZjQ0YTBhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMu
c3ViLWV4cGVjdGVkLnR4dApAQCAtMiwxMCArMiw5IEBACiBIYXJuZXNzIEVycm9yIChUSU1FT1VU
KSwgbWVzc2FnZSA9IG51bGwKIAogVElNRU9VVCBzaGFyZWR3b3JrZXItc2NyaXB0LXNyYyBUZXN0
IHRpbWVkIG91dAotRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgbm90IGJsb2Nr
ZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgIEEgbmV0d29yayBlcnJvciBvY2N1cnJlZC4KLUZBSUwg
YGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AgUmVmdXNlZCB0byBldmFs
dWF0ZSBhIHN0cmluZyBhcyBKYXZhU2NyaXB0IGJlY2F1c2UgJ3Vuc2FmZS1ldmFsJyBpcyBub3Qg
YW4gYWxsb3dlZCBzb3VyY2Ugb2Ygc2NyaXB0IGluIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1
cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAic2NyaXB0LXNyYyAnc2VsZicgJ25vbmNlLWEnIGJsb2I6
IGZpbGVzeXN0ZW06Ii4KLQotRkFJTCBgc2V0VGltZW91dChbc3RyaW5nXSlgIG5vdCBibG9ja2Vk
IGluIGh0dHA6IHdpdGhvdXQgQ1NQIGFzc2VydF91bnJlYWNoZWQ6IGNhbGxiYWNrIG5vdCBjYWxs
ZWQuIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNj
cmlwdHMoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgTG9hZCBmYWlsZWQKK1BB
U1MgYGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AKK1BBU1MgYHNldFRp
bWVvdXQoW3N0cmluZ10pYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3V0IENTUAogVElNRU9V
VCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgYmxvY2tlZCBpbiBodHRwOiB3aXRoIHNj
cmlwdC1zcmMgJ3NlbGYnIFRlc3QgdGltZWQgb3V0CiBOT1RSVU4gYGV2YWwoKWAgYmxvY2tlZCBp
biBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCiBOT1RSVU4gYHNldFRpbWVvdXQoW3N0cmlu
Z10pYCBibG9ja2VkIGluIGh0dHA6IHdpdGggc2NyaXB0LXNyYyAnc2VsZicKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVk
LnR4dAppbmRleCA0ZWFjMWNjYzA1MjYuLmI4ZWUxM2IwZmZjZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBv
bGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91dC5zdWItZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4
dApAQCAtMSw0ICsxLDQgQEAKIAogRkFJTCBEZWRpY2F0ZWQgd29ya2VyIGluaGVyaXRzIENTUCBm
cm9tIG1haW4gZG9jdW1lbnQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgInNldFRpbWVvdXQgYWxs
b3dlZCIgYnV0IGdvdCAic2V0VGltZW91dCBibG9ja2VkIgotRkFJTCBTaGFyZWQgd29ya2VyIGRl
bGl2ZXJzIGl0cyBvd24gQ1NQIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJzZXRUaW1lb3V0IGJs
b2NrZWQiIGJ1dCBnb3QgInNldFRpbWVvdXQgYWxsb3dlZCIKK1BBU1MgU2hhcmVkIHdvcmtlciBk
ZWxpdmVycyBpdHMgb3duIENTUAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3Jr
ZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNo
ZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggYzEwNzEz
NjU1MjgwLi42Zjg0NGRkNWQ5NDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtl
cnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBj
YWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKQEAgLTUsNyAr
NSw3IEBAIEhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAogUEFTUyBEZWRp
Y2F0ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0CiBQQVNTIERlZGljYXRlZCB3b3JrZXIg
b2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0CiBQQVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIG5v
dC1pbi1jYWNoZSBzY3JpcHQKLVBBU1MgU2hhcmVkIHdvcmtlciBvZiB0aGUgY2FjaGVkIHNjcmlw
dAotUEFTUyBTaGFyZWQgd29ya2VyIG9mIHRoZSBmYWxsYmFja2VkIHNjcmlwdAorRkFJTCBTaGFy
ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJE
b25lOiBjYWNoZWQiIGJ1dCBnb3QgIkVycm9yOiBJbXBvcnRpbmcgYSBub24tY2FjaGVkIHNjcmlw
dCBtdXN0IGZhaWwuIgorRkFJTCBTaGFyZWQgd29ya2VyIG9mIHRoZSBmYWxsYmFja2VkIHNjcmlw
dCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiRG9uZTogZmFsbGJhY2tlZCIgYnV0IGdvdCAiRXJy
b3I6IEltcG9ydGluZyBhIG5vbi1jYWNoZWQgc2NyaXB0IG11c3QgZmFpbC4iCiBUSU1FT1VUIFNo
YXJlZCB3b3JrZXIgb2YgdGhlIG5vdC1pbi1jYWNoZSBzY3JpcHQgVGVzdCB0aW1lZCBvdXQKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3
b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9y
aWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3b3JrZXItcGFydGl0
aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0CmluZGV4IDRlZDg3NDc0
NzZjNy4uNTg2ZDEwMTUyYTM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9hbm9u
eW1vdXMtaWZyYW1lL3NoYXJlZHdvcmtlci1wYXJ0aXRpb25pbmcudGVudGF0aXZlLmh0dHBzLndp
bmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlm
cmFtZS9zaGFyZWR3b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhw
ZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIEFub255bW91cyBpZnJhbWVzIGdldCBw
YXJ0aXRpb25lZCBzaGFyZWQgd29ya2Vycy4gYXNzZXJ0X3RydWU6IFRoZSAibm9ybWFsIiBpZnJh
bWUncyBzaGFyZWR3b3JrZXIgc2hvdWxkIHJldHVybiB7Im5vcm1hbCI6IHRydWUsICJub3JtYWxf
Y29udHJvbCI6IHRydWV9LCBidXQgaW5zdGVhZCByZXR1cm5lZCB7Im5vcm1hbCI6dHJ1ZX0gZXhw
ZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK0ZBSUwgQW5vbnltb3VzIGlmcmFtZXMgZ2V0IHBhcnRpdGlv
bmVkIHNoYXJlZCB3b3JrZXJzLiBhc3NlcnRfdHJ1ZTogVGhlICJub3JtYWwiIGlmcmFtZSdzIHNo
YXJlZHdvcmtlciBzaG91bGQgcmV0dXJuIHsibm9ybWFsIjogdHJ1ZSwgIm5vcm1hbF9jb250cm9s
IjogdHJ1ZX0sIGJ1dCBpbnN0ZWFkIHJldHVybmVkIHsibm9ybWFsX2NvbnRyb2wiOnRydWUsIm5v
cm1hbCI6dHJ1ZSwiYW5vbnltb3VzIjp0cnVlLCJhbm9ueW1vdXNfY29udHJvbCI6dHJ1ZX0gZXhw
ZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kv
Y3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdp
bi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMt
ZXhwZWN0ZWQudHh0CmluZGV4IDYzNTViNjhkZTcwYi4uYzhiZjc1ZTdlYTg1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mt
b3JpZ2luLWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5o
dHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2lu
LWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0yMCw3ICsyMCw3IEBA
IFBBU1MgZGVkaWNhdGVkIHdvcmtlcjogc2NoZW1lID0gYmxvYiwgdmFsdWUgPSAqCiBQQVNTIGRl
ZGljYXRlZCB3b3JrZXI6IHNjaGVtZSA9IGJsb2IsIHZhbHVlID0gc2VsZgogRkFJTCBkZWRpY2F0
ZWQgd29ya2VyOiBzY2hlbWUgPSBibG9iLCB2YWx1ZSA9IChcKSBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCBmYWxzZSBidXQgZ290IHRydWUKIFBBU1Mgc2hhcmVkIHdvcmtlcjogd2l0aENvb3BDb2Vw
ID0gZmFsc2UKLVBBU1Mgc2hhcmVkIHdvcmtlcjogd2l0aENvb3BDb2VwID0gdHJ1ZQorRkFJTCBz
aGFyZWQgd29ya2VyOiB3aXRoQ29vcENvZXAgPSB0cnVlIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
IHRydWUgYnV0IGdvdCBmYWxzZQogUEFTUyBzZXJ2aWNlIHdvcmtlcjogd2l0aENvb3BDb2VwID0g
ZmFsc2UKIEZBSUwgc2VydmljZSB3b3JrZXI6IHdpdGhDb29wQ29lcCA9IHRydWUgYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1i
ZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1i
ZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAzMzk4
YmQ4ODkzMWIuLjRjODY2ZWIyOTI2MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kv
c2hhcmVkLXdvcmtlcnMuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9s
aWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMiw3ICsyLDcgQEAgVmVy
aWZ5IHRoZSBDcm9zcy1PcmlnaW4gRW1iZWRkZXIgUG9saWN5IGZvciBTaGFyZWQgV29ya2VycyBi
eSBwZXJmb3JtaW5nIGEgY3Jvc3MKIAogCiBQQVNTIGRlZmF1bHQgcG9saWN5IChkZXJpdmVkIGZy
b20gcmVzcG9uc2UpCi1GQUlMICJyZXF1aXJlLWNvcnAiIChkZXJpdmVkIGZyb20gcmVzcG9uc2Up
IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJmYWlsdXJlIiBidXQgZ290ICJzdWNjZXNzIgorUEFT
UyAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIHJlc3BvbnNlKQogUEFTUyBkZWZhdWx0IHBv
bGljeSAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBkdWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAt
IGJsb2IgVVJMKQogRkFJTCAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBk
dWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAtIGJsb2IgVVJMKSBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCAiZmFpbHVyZSIgYnV0IGdvdCAic3VjY2VzcyIKIFBBU1MgZGVmYXVsdCBwb2xpY3kgKGRl
cml2ZWQgZnJvbSBvd25lciBzZXQgZHVlIHRvIHVzZSBvZiBsb2NhbCBzY2hlbWUgLSBkYXRhIFVS
TCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5jZS5z
dWIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVy
aXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggNzViMWQzM2U1MjYwLi5iMmJmMmUz
YmZmM2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5j
ZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtl
ci1pbmhlcml0YW5jZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNiBAQAogQmxv
Y2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2Nv
bW1vbi9ibGFuay5odG1sCiBCbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93
d3cubG9jYWxob3N0Ojk0NDQvY29tbW9uL2JsYW5rLmh0bWwKIEJsb2NrZWQgYWNjZXNzIHRvIGV4
dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2NhbGhvc3Q6OTQ0NC9jb21tb24vYmxhbmsuaHRtbAot
QmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0
L2NvbW1vbi9ibGFuay5odG1sCiAKIFBBU1MgVGVzdCB0aGF0IGxvY2FsIHNjaGVtZSB3b3JrZXJz
IGluaGVyaXQgQ09FUDogcmVxdWlyZS1jb3JwIGZyb20gdGhlIGNyZWF0aW5nIGRvY3VtZW50CiBQ
QVNTIGJsb2IgVVJMIGRlZGljYXRlZCB3b3JrZXI6IFNhbWUgb3JpZ2luIHNob3VsZCBiZSBhbGxv
d2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJf
ZGF0YVVybC1leHBlY3RlZC50eHQKaW5kZXggOTk1YTA2MDE5Yjg0Li45YjU4MjBhYWU4Y2IgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9TaGFyZWRXb3JrZXJfZGF0YVVybC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRh
VXJsLWV4cGVjdGVkLnR4dApAQCAtMSwxMyArMSw1IEBACi1DT05TT0xFIE1FU1NBR0U6IEVycm9y
OiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3QgMQogCiAKLUhhcm5lc3MgRXJyb3Ig
KEZBSUwpLCBtZXNzYWdlID0gRXJyb3I6IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDIgYnV0IGdv
dCAxCi0KLVBBU1MgRGF0YSBVUkwgbm90IHNoYXJlZCBieSBjcm9zcy1vcmlnaW4gU2hhcmVkV29y
a2VycwotVElNRU9VVCBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtl
cnMgVGVzdCB0aW1lZCBvdXQKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBFcnJv
cjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290IDEKLQogUEFTUyBEYXRhIFVSTCBu
b3Qgc2hhcmVkIGJ5IGNyb3NzLW9yaWdpbiBTaGFyZWRXb3JrZXJzCi1USU1FT1VUIERhdGEgVVJM
cyBzaGFyZWQgYnkgc2FtZS1vcmlnaW4gU2hhcmVkV29ya2VycyBUZXN0IHRpbWVkIG91dAorUEFT
UyBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtlcnMKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQK
aW5kZXggNTc2ZTZkMmI3ZWQyLi40YTI2YmU5MjlhOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13
b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVk
LXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMg
QEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0
Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkK
IAogUEFTUyBTdGF0aWMgaW1wb3J0LgogRkFJTCBTdGF0aWMgaW1wb3J0IChjcm9zcy1vcmlnaW4p
LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogIkltcG9ydGlu
ZyBhIG1vZHVsZSBzY3JpcHQgZmFpbGVkLiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXIt
aW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29y
a2VyLWltcG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CmluZGV4IDRmODY0
MWU1MTQ4MC4uMjk5N2Y3ZTFmMzA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9y
dC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3Jr
ZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwz
IEBACi1DT05TT0xFIE1FU1NBR0U6IE9yaWdpbiBudWxsIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vz
cy1Db250cm9sLUFsbG93LU9yaWdpbi4gU3RhdHVzIGNvZGU6IDIwMAogCiBIYXJuZXNzIEVycm9y
IChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtl
ci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXIt
aW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQKaW5kZXggZWFjN2Y5NWRlNmYyLi5j
YmMwNDI5ZTBjNzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJs
LndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11
cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRv
IGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVz
L3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkKIAogSGFybmVzcyBFcnJvciAoVElN
RU9VVCksIG1lc3NhZ2UgPSBudWxsCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ct
ZXhwZWN0ZWQudHh0CmluZGV4IDU3NmU2ZDJiN2VkMi4uNGEyNmJlOTI5YThkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9k
dWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3No
YXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1C
bG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQz
L3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LW9uLWxvYWQtc2NyaXB0LnB5CiAKIFBB
U1MgU3RhdGljIGltcG9ydC4KIEZBSUwgU3RhdGljIGltcG9ydCAoY3Jvc3Mtb3JpZ2luKS4gcHJv
bWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6ICJJbXBvcnRpbmcgYSBt
b2R1bGUgc2NyaXB0IGZhaWxlZC4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlv
bnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNy
ZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAppbmRleCBlMWJlZGY1NDMwZWYuLmE3MGYwNWFmNTRmNCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQu
dHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHA6
Ly93d3cxLmxvY2FsaG9zdDo4ODAwL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LWNy
ZWRlbnRpYWxzLnB5CiAKIEhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRp
Y3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhwZWN0ZWQudHh0CmluZGV4IDAxOGRiNjA0NTY5ZC4u
Y2ZlNDY1NTY3NWNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVkLnR4dApAQCAt
MSw1ICsxLDMgQEAKIAotSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0K
LU5PVFJVTiBzaGFyZWQgd29ya2VyIHdpdGggbXVsdGlwbGUgZG9jdW1lbnRzCitQQVNTIHNoYXJl
ZCB3b3JrZXIgd2l0aCBtdWx0aXBsZSBkb2N1bWVudHMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA4
LWV4cGVjdGVkLnR4dAppbmRleCA5N2E0ZTdhNzNhNjMuLjA5ZjY3MmQxYzYyMSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3Nl
bWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSwzIEBACiAKLUhhcm5lc3Mg
RXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1USU1FT1VUIG1lc3NhZ2VjaGFubmVs
IGluIHNoYXJlZCB3b3JrZXIgVGVzdCB0aW1lZCBvdXQKK1BBU1MgbWVzc2FnZWNoYW5uZWwgaW4g
c2hhcmVkIHdvcmtlcgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRv
dy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50
eHQKaW5kZXggYTA4OWMyMjQ4OWUyLi5kMzlhNTUwODRkYzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2Vy
LWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJs
b2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw3IEBACiAKIEhhcm5lc3MgRXJy
b3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAogCi1GQUlMIENyZWF0aW5nIGEgc2hhcmVkIHdv
cmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJ3b3Jr
ZXJfT0tfMiIgYnV0IGdvdCAid29ya2VyX09LXzEiCi1QQVNTIENyZWF0aW5nIGEgc2hhcmVkIHdv
cmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MgaW1tZWRpYXRlbHkgYmVmb3JlIHJldm9raW5nLgot
VElNRU9VVCBDb25uZWN0aW5nIHRvIGEgc2hhcmVkIHdvcmtlciBvbiBhIHJldm9rZWQgYmxvYiBV
Ukwgd29ya3MuIFRlc3QgdGltZWQgb3V0CitQQVNTIENyZWF0aW5nIGEgc2hhcmVkIHdvcmtlciBm
cm9tIGEgYmxvYiBVUkwgd29ya3MuCitUSU1FT1VUIENyZWF0aW5nIGEgc2hhcmVkIHdvcmtlciBm
cm9tIGEgYmxvYiBVUkwgd29ya3MgaW1tZWRpYXRlbHkgYmVmb3JlIHJldm9raW5nLiBUZXN0IHRp
bWVkIG91dAorTk9UUlVOIENvbm5lY3RpbmcgdG8gYSBzaGFyZWQgd29ya2VyIG9uIGEgcmV2b2tl
ZCBibG9iIFVSTCB3b3Jrcy4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9u
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25zLWV4cGVjdGVkLnR4dApp
bmRleCA2ZmZlZTI3MzkwZDkuLmFlNDViNGQyNzM5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFt
ZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9u
cy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgVGVzdCB0aGUgbmFtZSBwcm9w
ZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBtaXhpbmcgY29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29u
c3RydWN0b3Igc3RyaW5ncyBFcnJvcjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290
IDEKK1BBU1MgVGVzdCB0aGUgbmFtZSBwcm9wZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBtaXhpbmcg
Y29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29uc3RydWN0b3Igc3RyaW5ncwogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW9wdGlv
bnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CmluZGV4IGY2NTY5NDYxNTBkYi4uNGY5OWExMzQwOWU3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dApAQCAtMSwyOCArMSwyNiBA
QAogCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKLQotVElNRU9VVCBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogZGVmYXVsdCB0byBtb2R1bGUgVGVzdCB0aW1lZCBvdXQKLU5PVFJVTiBDb25u
ZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUg
YmxvY2tlZDogbW9kdWxlIHRvIGRlZmF1bHQKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3
b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogY2xhc3NpYyB0
byBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJl
bnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGNsYXNzaWMKLU5PVFJVTiBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogZGVmYXVsdCB0byBvbWl0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogZGVmYXVsdCB0byBpbmNsdWRlIGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNo
YXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21p
dCB0byBkZWZhdWx0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3Jr
ZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBzYW1l
LW9yaWdpbiBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdp
dGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVkZSBp
biBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVy
ZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIG9taXQgaW4gY2xh
c3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIGNsYXNz
aWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGluIGNsYXNzaWMKLU5P
VFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBz
aG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBvbWl0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25u
ZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUg
YmxvY2tlZDogaW5jbHVkZSB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IGRlZmF1bHQgdG8gb21pdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNo
YXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVm
YXVsdCB0byBpbmNsdWRlIGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRl
ZmF1bHQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGgg
ZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gc2FtZS1vcmlnaW4g
aW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVy
ZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVkZSBpbiBtb2R1bGUK
LU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9u
cyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBtb2R1bGUKLU5PVFJV
TiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91
bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gaW5jbHVkZSBpbiBtb2R1bGUKLU5PVFJVTiBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3Rp
bmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9j
a2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1
ZGUgdG8gc2FtZS1vcmlnaW4gaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRv
IG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQg
b3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGRlZmF1bHQKK1BBU1MgQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IGNsYXNzaWMgdG8gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBtb2R1bGUgdG8gY2xh
c3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBvbWl0IGluIGNsYXNzaWMKK1BBU1Mg
Q29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxk
IGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gaW5jbHVkZSBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3Rp
bmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9j
a2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJl
ZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0
byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGluY2x1
ZGUgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZm
ZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBj
bGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIGNsYXNz
aWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlv
bnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gZGVmYXVsdCBpbiBjbGFzc2ljCitQQVNT
IENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3Vs
ZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogaW5jbHVkZSB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8g
c2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBk
ZWZhdWx0IHRvIG9taXQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIGlu
Y2x1ZGUgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRp
ZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4gbW9k
dWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIHNhbWUtb3JpZ2luIGluIG1vZHVsZQorUEFT
UyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91
bGQgYmUgYmxvY2tlZDogb21pdCB0byBpbmNsdWRlIGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUt
b3JpZ2luIHRvIGluY2x1ZGUgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRv
IGRlZmF1bHQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4g
bW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIHNhbWUtb3JpZ2luIGluIG1vZHVs
ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Bl
bi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dAppbmRleCAx
ZTJkMzk5MmY2ZDUuLjU5Y2FjYTQ4NmY4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3
b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1v
cmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0
ZXJuYWwgVVJMIGh0dHA6Ly93d3cyLmxvY2FsaG9zdDo4ODAwL3hoci9yZXNvdXJjZXMvaW5zcGVj
dC1oZWFkZXJzLnB5P2ZpbHRlcl9uYW1lPW9yaWdpbiZjb3JzCiAKIEZBSUwgUmVmZXJlciBoZWFk
ZXIgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIlJlZmVyZXI6IGh0dHA6Ly9sb2NhbGhvc3Q6ODgw
MC94aHIvcmVzb3VyY2VzL3dvcmtlcnhoci1vcmlnaW4tcmVmZXJyZXIuanNcbiIgYnV0IGdvdCAi
UmVmZXJlcjogaHR0cDovL2xvY2FsaG9zdDo4ODAwL3hoci9yZXNvdXJjZXMvcmVkaXJlY3QucHk/
bG9jYXRpb249d29ya2VyeGhyLW9yaWdpbi1yZWZlcnJlci5qc1xuIgogRkFJTCBPcmlnaW4gaGVh
ZGVyIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJPcmlnaW46IGh0dHA6Ly9sb2NhbGhvc3Q6ODgw
MFxuIiBidXQgZ290ICIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sx
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggODZkZjI3ZDViYWJiLi42MDExYmMzMjRmYmIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTY2LDYgKzY2LDEyNCBA
QCBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS1nZXRVc2VyTWVkaWEtcGVuZGluZy1w
cm9taXNlLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNhY2hlLW1l
ZGlhc3RyZWFtLmh0bWwgWyBTa2lwIF0KIG1lZGlhL2F1ZGlvLXNlc3Npb24tY2F0ZWdvcnkuaHRt
bCBbIFNraXAgXQogCisjIFNoYXJlZCB3b3JrZXJzIGFyZSBvbmx5IGltcGxlbWVudGVkIGZvciBX
ZWJLaXQyLgoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5
LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFz
c2ljLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
b250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy1zZWxmL3No
YXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3Nj
cmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4v
dG9wLmh0dHAtcnAvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRw
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVk
d29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0
LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4v
dG9wLmh0dHAtcnAvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHAuaHRt
bCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3Vy
aXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1j
bGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtc2Vs
Zi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAv
d29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWNsYXNz
aWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
b250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNyYy1zZWxmL3NoYXJl
ZHdvcmtlci1jbGFzc2ljLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNy
Yy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5t
ZXRhL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5o
dHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVk
d29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNy
Yy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1l
dGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAu
aHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1t
b2R1bGUuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy13aWxkY2Fy
ZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dv
cmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItbW9kdWxlLmh0
dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50
LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3
b3JrZXItbW9kdWxlLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3Jr
ZXItY29ubmVjdC1zcmMuc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3Jr
ZXItcmVwb3J0LW9ubHkuc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3Jr
ZXItc2NyaXB0LXNyYy5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zYW5kYm94L3NoYXJlZC13b3JrZXItc2Fu
ZGJveC5odG1sICBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1kYXRhLXNldC10aW1lb3V0LnN1
Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLWNoaWxkLnN1Yi5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2dlbi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRh
Lmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy1zZWxmL3NoYXJl
ZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC9z
Y3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tpcCBdCitp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dl
bi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0
YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtd2lsZGNhcmQv
c2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRw
LXJwL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsg
U2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHkt
cG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLW5vbmUvc2hhcmVkd29ya2VyLWNsYXNz
aWMuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nv
bnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLW5vbmUvc2hh
cmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29y
a2VyLXNyYy1ub25lL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
Z2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtbm9uZS9zaGFyZWR3b3JrZXItaW1wb3J0LWRhdGEu
aHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1ub25lL3NoYXJl
ZHdvcmtlci1tb2R1bGUuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXIt
c3JjLW5vbmUvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3Au
aHR0cC1ycC93b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHAuaHRt
bCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3Vy
aXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1p
bXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3Jj
LXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0
cC1ycC93b3JrZXItc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0
bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29y
a2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtl
ci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lwIF0KK2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2Vu
L3RvcC5odHRwLXJwL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRw
cy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2Vy
LWltcG9ydC1kYXRhLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNyYy1z
ZWxmL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3Au
bWV0YS9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tp
cCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1pbXBvcnQt
ZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtd2lsZGNhcmQv
c2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRh
L3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5o
dHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLW5vbmUvc2hhcmVkd29y
a2VyLWNsYXNzaWMuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLW5v
bmUvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEv
d29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtbm9uZS9zaGFyZWR3b3JrZXItaW1wb3J0LWRhdGEu
aHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLW5vbmUvc2hhcmVkd29y
a2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1z
cmMtbm9uZS9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1l
dGEvd29ya2VyLXNyYy1ub25lL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cHMuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5o
dHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLXdpbGRjYXJkL3NoYXJl
ZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtl
ci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvd29ya2VyLXNyYy9zaGFyZWQtZmFsbGJhY2suc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvd29ya2VyLXNy
Yy9zaGFyZWQtbGlzdC5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS93b3JrZXItc3JjL3NoYXJlZC1ub25lLnN1
Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXNlbGYuc3ViLmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
d29ya2VyLXNyYy9zaGFyZWQtd29ya2VyLXNyYy1jaGlsZC1mYWxsYmFjay1ibG9ja2VkLnN1Yi5o
dG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXdvcmtlci1zcmMtY2hpbGQtZmFsbGJhY2su
c3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvd29ya2VyLXNyYy9zaGFyZWQtd29ya2VyLXNyYy1kZWZhdWx0LWZh
bGxiYWNrLnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXdvcmtlci1zcmMtc2Ny
aXB0LWZhbGxiYWNrLnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXdvcmtlci1z
cmMtc2VsZi1mYWxsYmFjay5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29ycy9kYXRhLXVybC1zaGFyZWQtd29ya2VyLmh0bWwgWyBT
a2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZs
aW5lL25vLWFwcGNhY2hlLWluLXNoYXJlZC13b3JrZXJzLWhpc3RvcmljYWwuaHR0cHMuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9z
Y3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvbW9kdWxlL2V2YWx1YXRpb24tb3JkZXItMS1u
b3Rocm93LXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudC9t
b2R1bGUvZXZhbHVhdGlvbi1vcmRlci0xLXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3Ro
ZS1zY3JpcHQtZWxlbWVudC9tb2R1bGUvZXZhbHVhdGlvbi1vcmRlci0yLWltcG9ydC1zaGFyZWR3
b3JrZXIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvbW9kdWxlL2V2YWx1YXRp
b24tb3JkZXItMy1keW5hbWljLXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3Jp
cHQtZWxlbWVudC9ldmFsdWF0aW9uLW9yZGVyLTEtbm90aHJvdy1zaGFyZWR3b3JrZXIuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9z
Y3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvZXZhbHVhdGlvbi1vcmRlci0xLXNoYXJlZHdv
cmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
d2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL3VuaGFuZGxlZC1wcm9taXNl
LXJlamVjdGlvbnMvcHJvbWlzZS1yZWplY3Rpb24tZXZlbnRzLnNoYXJlZHdvcmtlci5odG1sIFsg
U2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vc2VyaWFsaXphdGlv
bi9tb2R1bGUvYnJvYWRjYXN0Y2hhbm5lbC1zdWNjZXNzLWFuZC1mYWlsdXJlLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJQ
ZXJmb3JtYW5jZU5vdy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvYmFzZXVybC9hbHBoYS9pbXBvcnRTY3JpcHRzLWluLXNoYXJlZHdvcmtlci5o
dG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvYmFz
ZXVybC9hbHBoYS94aHItaW4tc2hhcmVkd29ya2VyLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9pbnRlcmZhY2VzL1NoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
aW50ZXJmYWNlcy9Xb3JrZXJHbG9iYWxTY29wZS9sb2NhdGlvbi9yZWRpcmVjdC1zaGFyZWR3b3Jr
ZXIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93Lmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJl
ZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi5odG1sIFsgU2tpcCBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2Vy
LWltcG9ydC1kYXRhLXVybC53aW5kb3cuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZmFpbHVy
ZS5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
bW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1tZXRhLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LndpbmRvdy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMv
c2hhcmVkLXdvcmtlci1vcHRpb25zLXR5cGUuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJl
ZC13b3JrZXItcGFyc2UtZXJyb3ItZmFpbHVyZS5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL2VuY29kaW5ncy8wMDIuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGlj
cy9lbmNvZGluZ3MvMDA0Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDQuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwOC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3JlcG9ydGluZy1lcnJvcnMvMDAxLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvcmVw
b3J0aW5nLWVycm9ycy8wMDIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9yZXBvcnRpbmctZXJyb3JzLzAwMy5odG1sIFsgU2tp
cCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3Jl
cG9ydGluZy1lcnJvcnMvMDA0Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvcnVuLWEtd29ya2VyLzAwMi5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3N0cnVj
dHVyZWQtY2xvbmUvc2hhcmVkLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MveGhyLzAwMy5odG1sIFsgU2tpcCBdCitpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3hoci8wMDQuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGlj
cy94aHIvMDA2Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93Lmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW9w
dGlvbnMtbWlzbWF0Y2guaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItcGFyc2UtZXJyb3ItZmFpbHVyZS5odG1sIFsgU2tp
cCBdCisKIGh0dHAvd3B0L21lZGlhcmVjb3JkZXIgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJlY29yZCBbIFNraXAgXQogZmFzdC9oaXN0b3J5
L3BhZ2UtY2FjaGUtbWVkaWEtcmVjb3JkZXIuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3NjcmlwdC1zcmMvd29ya2VyLWltcG9ydHNjcmlwdHMu
c3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3Jj
L3dvcmtlci1pbXBvcnRzY3JpcHRzLnN1Yi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42ZWVhMWJlYWI1YjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItaW1wb3J0c2NyaXB0
cy5zdWItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitGQUlMIERlZGljYXRlZCB3b3Jr
ZXIgaW5oZXJpdHMgQ1NQIGZyb20gbWFpbiBkb2N1bWVudCBhc3NlcnRfZXF1YWxzOiBleHBlY3Rl
ZCAiaW1wb3J0U2NyaXB0cyBhbGxvd2VkIiBidXQgZ290ICJpbXBvcnRTY3JpcHRzIGJsb2NrZWQi
CitGQUlMIFNoYXJlZCB3b3JrZXIgZGVsaXZlcnMgaXRzIG93biBDU1AgU2hhcmVkIHdvcmtlcnMg
YXJlIG5vdCBzdXBwb3J0ZWQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L3NjcmlwdC1zcmMvd29ya2VyLXNldC10aW1lb3V0LnN1Yi1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3Vi
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjY3
NWEzYThlMGYwYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91dC5zdWItZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNCBAQAorCitGQUlMIERlZGljYXRlZCB3b3JrZXIgaW5oZXJpdHMgQ1NQIGZyb20gbWFpbiBk
b2N1bWVudCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAic2V0VGltZW91dCBhbGxvd2VkIiBidXQg
Z290ICJzZXRUaW1lb3V0IGJsb2NrZWQiCitGQUlMIFNoYXJlZCB3b3JrZXIgZGVsaXZlcnMgaXRz
IG93biBDU1AgU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtl
ci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hl
L3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdmMmNkNTE4YzdlNwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Jyb3dzZXJzL29mZmxpbmUvYXBwY2FjaGUvd29ya2Vycy9hcHBjYWNoZS13
b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorQ09OU09MRSBNRVNTQUdF
OiBBcHBsaWNhdGlvbkNhY2hlIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgU2VydmljZVdvcmtl
cnMgaW5zdGVhZC4KKworUEFTUyBEZWRpY2F0ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0
CitQQVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0CitQQVNTIERl
ZGljYXRlZCB3b3JrZXIgb2YgdGhlIG5vdC1pbi1jYWNoZSBzY3JpcHQKK0ZBSUwgU2hhcmVkIHdv
cmtlciBvZiB0aGUgY2FjaGVkIHNjcmlwdCBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rp
b24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogU2hhcmVkIHdvcmtlcnMg
YXJlIG5vdCBzdXBwb3J0ZWQiCitGQUlMIFNoYXJlZCB3b3JrZXIgb2YgdGhlIGZhbGxiYWNrZWQg
c2NyaXB0IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmpl
Y3QgIk5vdFN1cHBvcnRlZEVycm9yOiBTaGFyZWQgd29ya2VycyBhcmUgbm90IHN1cHBvcnRlZCIK
K0ZBSUwgU2hhcmVkIHdvcmtlciBvZiB0aGUgbm90LWluLWNhY2hlIHNjcmlwdCBwcm9taXNlX3Rl
c3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRF
cnJvcjogU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQiCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvbW9kdWxlL2lt
cG9ydC1tZXRhL2ltcG9ydC1tZXRhLXVybC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3Mvc2NyaXB0aW5nLTEvdGhlLXNjcmlwdC1lbGVtZW50L21vZHVsZS9pbXBvcnQtbWV0YS9pbXBv
cnQtbWV0YS11cmwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uYjI0OTlmYWRjYjZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudC9tb2R1bGUvaW1wb3J0LW1ldGEvaW1w
b3J0LW1ldGEtdXJsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACisKK1BBU1MgaW1wb3J0
Lm1ldGEudXJsIGluIGEgcm9vdCBleHRlcm5hbCBzY3JpcHQKK1BBU1MgaW1wb3J0Lm1ldGEudXJs
IGluIGEgZGVwZW5kZW50IGV4dGVybmFsIHNjcmlwdAorUEFTUyBpbXBvcnQubWV0YSBpcyBhbiBv
YmplY3QKK1BBU1MgaW1wb3J0Lm1ldGEgaXMgZXh0ZW5zaWJsZQorUEFTUyBpbXBvcnQubWV0YSdz
IHByb3BlcnRpZXMgYXJlIHdyaXRhYmxlLCBjb25maWd1cmFibGUsIGFuZCBlbnVtZXJhYmxlCitQ
QVNTIGltcG9ydC5tZXRhLnVybCB3aGVuIGltcG9ydGluZyB0aGUgbW9kdWxlIHdpdGggZGlmZmVy
ZW50IGZyYWdtZW50cworUEFTUyBpbXBvcnQubWV0YS51cmwgaW4gYSByb290IGlubGluZSBzY3Jp
cHQKK1BBU1MgaW1wb3J0Lm1ldGEudXJsIGF0IHRvcC1sZXZlbCBtb2R1bGUgRGVkaWNhdGVkV29y
a2VyCitGQUlMIGltcG9ydC5tZXRhLnVybCBhdCB0b3AtbGV2ZWwgbW9kdWxlIFNoYXJlZFdvcmtl
ciBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJO
b3RTdXBwb3J0ZWRFcnJvcjogU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQiCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvdGhlLXdpbmRvd29yd29ya2VyZ2xvYmFsc2Nv
cGUtbWl4aW4vV29ya2VyX1NlbGZfT3JpZ2luLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFw
cGFwaXMvdGhlLXdpbmRvd29yd29ya2VyZ2xvYmFsc2NvcGUtbWl4aW4vV29ya2VyX1NlbGZfT3Jp
Z2luLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LmYzOWY2ZmVkMWYzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvdGhl
LXdpbmRvd29yd29ya2VyZ2xvYmFsc2NvcGUtbWl4aW4vV29ya2VyX1NlbGZfT3JpZ2luLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDggQEAKKworUEFTUyBTYW1lIE9yaWdpbiBXb3JrZXIKK0ZBSUwg
U2FtZSBPcmlnaW4gU2hhcmVkV29ya2VyIFNoYXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVk
CitQQVNTIERhdGEgVXJsIFdvcmtlcgorRkFJTCBEYXRhIFVybCBTaGFyZWRXb3JrZXIgU2hhcmVk
IHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQKK1BBU1MgQmxvYiBVcmwgV29ya2VyCitGQUlMIEJs
b2IgVXJsIFNoYXJlZFdvcmtlciBTaGFyZWQgd29ya2VycyBhcmUgbm90IHN1cHBvcnRlZAorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvd29ya2Vycy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvd29ya2Vycy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xM2VkMTZk
ODcxOTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5u
ZWwvd29ya2Vycy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorCitQQVNTIEJyb2FkY2Fz
dENoYW5uZWwgd29ya3MgaW4gd29ya2VycworRkFJTCBCcm9hZGNhc3RDaGFubmVsIHdvcmtzIGlu
IHNoYXJlZCB3b3JrZXJzIFNoYXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkCitQQVNTIENs
b3NpbmcgYW5kIHJlLW9wZW5pbmcgYSBjaGFubmVsIHdvcmtzLgorUEFTUyBCcm9hZGNhc3RDaGFu
bmVsIGNyZWF0ZWQgYWZ0ZXIgYSB3b3JrZXIgc2VsZi5jbG9zZSgpCitQQVNTIEJyb2FkY2FzdENo
YW5uZWwgbWVzc2FnZXMgZnJvbSBjbG9zZWQgd29ya2VyIHRvIHBhcmVudCBzaG91bGQgYmUgaWdu
b3JlZCAoQkMgY3JlYXRlZCBiZWZvcmUgY2xvc2luZykKK1BBU1MgQnJvYWRjYXN0Q2hhbm5lbCBt
ZXNzYWdlcyBmcm9tIGNsb3NlZCB3b3JrZXIgdG8gcGFyZW50IHNob3VsZCBiZSBpZ25vcmVkIChC
QyBjcmVhdGVkIGFmdGVyIGNsb3NpbmcpCitQQVNTIEJyb2FkY2FzdENoYW5uZWwgbWVzc2FnZXMg
ZnJvbSBwYXJlbnQgdG8gY2xvc2VkIHdvcmtlciBzaG91bGQgYmUgaWdub3JlZCAoQkMgY3JlYXRl
ZCBiZWZvcmUgY2xvc2luZykKK1BBU1MgQnJvYWRjYXN0Q2hhbm5lbCBtZXNzYWdlcyBmcm9tIHBh
cmVudCB0byBjbG9zZWQgd29ya2VyIHNob3VsZCBiZSBpZ25vcmVkIChCQyBjcmVhdGVkIGFmdGVy
IGNsb3NpbmcpCitQQVNTIEJyb2FkY2FzdENoYW5uZWwgbWVzc2FnZXMgd2l0aGluIGNsb3NlZCB3
b3JrZXIgc2hvdWxkIGJlIGlnbm9yZWQgKEJDcyBjcmVhdGVkIGJlZm9yZSBjbG9zaW5nKQorUEFT
UyBCcm9hZGNhc3RDaGFubmVsIG1lc3NhZ2VzIHdpdGhpbiBjbG9zZWQgd29ya2VyIHNob3VsZCBi
ZSBpZ25vcmVkIChCQ3MgY3JlYXRlZCBhZnRlciBjbG9zaW5nKQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9hYnJ1cHQtY29tcGxldGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9hYnJ1
cHQtY29tcGxldGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5kMDE1NmMwYjIxOWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9h
YnJ1cHQtY29tcGxldGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgRGVk
aWNhdGVkV29ya2VyIHNob3VsZCBjb3JyZWN0bHkgaGFuZGxlIGFicnVwdCBjb21wbGV0aW9uCitG
QUlMIFNoYXJlZFdvcmtlciBzaG91bGQgY29ycmVjdGx5IGhhbmRsZSBhYnJ1cHQgY29tcGxldGlv
biBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJO
b3RTdXBwb3J0ZWRFcnJvcjogU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQiCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwMS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDEtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2YyYTky
NzhjNWYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxl
LXdvcmtlcnMvMDAxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBkZWRpY2F0
ZWQKK0ZBSUwgc2hhcmVkIFNoYXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9ydW4tYS13b3JrZXIvMDAzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9ydW4tYS13b3JrZXIvMDAzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFmN2ZhMDg0Yzc0ZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9ydW4tYS13b3JrZXIvMDAzLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyB3b3JrZXIKK0ZBSUwgc2hhcmVkIFNo
YXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
NzkyYTAwZjllYTFhLi40NTdjNGFhOWIxYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNzks
NiArMTc5LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAg
IiR7V0VCQ09SRV9ESVJ9L3dvcmtlcnMvc2VydmljZS9jb250ZXh0IgogICAgICIke1dFQkNPUkVf
RElSfS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyIgogICAgICIke1dFQkNPUkVfRElSfS93b3JrZXJz
L3NoYXJlZCIKKyAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2Vycy9zaGFyZWQvY29udGV4dCIKICAg
ICAiJHtXRUJDT1JFX0RJUn0vd29ya2xldHMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3htbCIKICAg
ICAiJHtXRUJDT1JFX0RJUn0veG1sL3BhcnNlciIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDg5Yjgy
YTEzZjdlNC4uMGYwMzkyMDc3MDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTE5NTUsOSArMTk1
NSwxMiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAogICAgIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
aAogICAgIHdvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaAorICAgIHdvcmtlcnMvV29ya2VyT2Jq
ZWN0UHJveHkuaAorICAgIHdvcmtlcnMvV29ya2VyT3B0aW9ucy5oCiAgICAgd29ya2Vycy9Xb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCiAgICAgd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmgKICAgICB3b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5oCisgICAg
d29ya2Vycy9Xb3JrZXJSZXBvcnRpbmdQcm94eS5oCiAgICAgd29ya2Vycy9Xb3JrZXJSdW5Mb29w
LmgKICAgICB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCiAgICAgd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXJDbGllbnQuaApAQCAtMjAwMCw2ICsyMDAzLDE1IEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCiAgICAgd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlcldvcmtlci5oCiAKKyAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJJZGVudGlmaWVy
LmgKKyAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaAorICAgIHdvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaAorICAgIHdvcmtlcnMvc2hhcmVkL1No
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaAorICAgIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlclByb3ZpZGVyLmgKKworICAgIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXIuaAorICAgIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHkuaAorCiAgICAgeG1sL0N1c3RvbVhQYXRoTlNSZXNvbHZlci5oCiAgICAgeG1s
L1hQYXRoRXhwcmVzc2lvbi5oCiAgICAgeG1sL1hQYXRoTlNSZXNvbHZlci5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CmluZGV4IGY2NmNjZjhmMDZhNS4uOWFiODYwNGM5ZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjc4
NiwxMCArMjc4NiwxMiBAQCB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3Bw
CiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXJHbG9iYWxTY29wZS5jcHAKLXdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIu
Y3BwCi13b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm94eS5jcHAKK3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCit3b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXJQcm92aWRlci5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRl
ci5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclRocmVhZC5jcHAKK3dvcmtlcnMvc2hh
cmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwCit3b3JrZXJzL3NoYXJl
ZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcAogd29ya2xldHMvUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwCiB3b3JrbGV0cy9Xb3JrbGV0LmNwcAogd29ya2xldHMvV29ya2xl
dEdsb2JhbFNjb3BlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGJmYWM4NmU3ZGMxYi4uMDBmY2I2OWMzNWJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05
MDMsNyArOTAzLDcgQEAKIAkJMkU0MzQ2NEIwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2Jh
bFNjb3BlUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJFNDM0NjM5MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZVByb3h5Lmgg
Ki87IH07CiAJCTJFNDM0NjREMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJMb2NhdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2M0IwRjU0
NkE4MjAwQjBGMUJBIC8qIFdvcmtlckxvY2F0aW9uLmggKi87IH07CiAJCTJFNDM0NjUwMEY1NDZB
ODIwMEIwRjFCQSAvKiBXb3JrZXJNZXNzYWdpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2M0UwRjU0NkE4MjAwQjBGMUJBIC8qIFdv
cmtlck1lc3NhZ2luZ1Byb3h5LmggKi87IH07Ci0JCTJFNDM0NjUxMEY1NDZBODIwMEIwRjFCQSAv
KiBXb3JrZXJPYmplY3RQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkU0MzQ2M0YwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5
LmggKi87IH07CisJCTJFNDM0NjUxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2
M0YwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2NTMwRjU0NkE4MjAwQjBG
MUJBIC8qIFdvcmtlclJ1bkxvb3AuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJFNDM0NjQxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJSdW5Mb29wLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2
NTUwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2NDMwRjU0NkE4MjAwQjBGMUJBIC8qIFdv
cmtlclRocmVhZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTJFNzU4NDFFMTI3NzlBREEwMDYyNjI4QiAvKiBGaWxlUmVhZGVyTG9hZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTc1ODQxQjEyNzc5
QURBMDA2MjYyOEIgLyogRmlsZVJlYWRlckxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTI1LDcgKzExMjUsNyBAQAogCQk0MTZBMDZB
MTIzQ0NBRDAzMDAzNDcxMDkgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkEwNjk2MjNDQ0FB
OUYwMDM0NzEwOSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkQ3NUEyMjBDNjUxQTUw
MEQwMkQyQyAvKiBOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZENzU5RjIwQzY0NDEzMDBEMDJEMkMgLyogTmV0
d29ya0xvYWRJbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQxNkUwQjNBMjA5QkMzQ0IwMDRBOTVEOSAvKiBGZXRjaElkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkUw
QjM3MjA5QkMzQzIwMDRBOTVEOSAvKiBGZXRjaElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk0MTZFMjlBNjEwMkZBOTYyMDA3RkMx
NEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkUyOUE1MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBv
cnRpbmdQcm94eS5oICovOyB9OworCQk0MTZFMjlBNjEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2Vy
UmVwb3J0aW5nUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxNkUyOUE1MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2
RkU4MUJCRDEyREYwMDBBM0Y2NCAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFC
QjMxMTBEMDBCNzY0RDkgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU4MUJC
RDEyREYwMDBBM0Y2NSAvKiBKU0RPTUJpbmRpbmdJbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAw
Qjc2NERBIC8qIEpTRE9NQmluZGluZ0ludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgxQkJEMTJERjAwMEEz
Rjc0IC8qIFRyYW5zZm9ybVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RUEg
LyogVHJhbnNmb3JtU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTMyMyw2ICsxMzIzLDggQEAKIAkJNDYw
RTMwNzcyMjJGNEYwMzAwOUEwNjA2IC8qIERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNz
aW9uU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2NUVERDlGMjIyRjRFQzMwMEI0NkUxNiAvKiBEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVy
bWlzc2lvblN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDYyMThBQ0IxRjcyRDY0RTAwNTc0RkJFIC8qIERPTUhpZ2hSZXNUaW1lU3RhbXAu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RTAxNkFE
MUY3MkQ2MUUwMDI4MkIyQyAvKiBET01IaWdoUmVzVGltZVN0YW1wLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYyNzNDQUYyNjBFNTlFRjAwNkZB
QTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDYyNzNDQUMyNjBFNTlERjAwNkZBQTkxIC8qIFNXU2NyaXB0U3RvcmFn
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2
MjdGRjU5Mjc5QjgyNDkwMEFBMzkxNiAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYyN0ZGNTgyNzlCODI0
NjAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDYyN0ZGNUIyNzlCODdBRjAwQUEzOTE2
IC8qIFNoYXJlZFdvcmtlcklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MjdGRjVBMjc5Qjg3QTIwMEFBMzkxNiAvKiBTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDYyQzdGNDEyNzU2REJFNDAwRDA4M0M4IC8qIFdlYkxvY2tJZGVudGlmaWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njc4MDJCMjI3
NDcxMTg1MDBEQTlGQjYgLyogV2ViTG9ja0lkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjJFNEM1MDI2MTZBODExMDAzQTJDNjcg
LyogU2NyaXB0QnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjJFNEM0RDI2MTZBODAxMDAzQTJDNjcgLyogU2NyaXB0QnVmZmVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYzNEM3MkMyNzU3
REFCMjAwMjZBODE1IC8qIFdlYkxvY2tNYW5hZ2VyU25hcHNob3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzgwMkIwMjc0NzExN0IwMERBOUZCNiAv
KiBXZWJMb2NrTWFuYWdlclNuYXBzaG90LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzNDQsMTUgKzEzNDYsMTggQEAKIAkJNDY3MzAyMDIxQzRF
RkU3ODAwQkNCMzU3IC8qIElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3MzAyMDEx
QzRFRkU2NjAwQkNCMzU3IC8qIElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRl
ci5oICovOyB9OwogCQk0NjdBNjhENzI3NUVBOTkxMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhy
ZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdB
NjhENDI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggKi87IH07CiAJCTQ2
N0E2OEQ4Mjc1RUE5OTUwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0E2OEQ1Mjc1RUE5
OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCAqLzsgfTsKLQkJNDY3QTY4
RDkyNzVFQTk5ODAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclByb3h5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdBNjhENjI3NUVBOThDMDA5QjMxQzUg
LyogU2hhcmVkV29ya2VyUHJveHkuaCAqLzsgfTsKLQkJNDY3QTY4REEyNzVFQTk5QzAwOUIzMUM1
IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2N0E2OEQyMjc1RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJN
YW5hZ2VyLmggKi87IH07CiAJCTQ2ODJEMjAwMUY3OTc4MzAwMEM4NjNEQiAvKiBTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY4MkQxRkYxRjc5NzgyMzAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4
MzQ0RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyog
RE9NUmVjdExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0NjgzREY0MDI3NjdERjk4MDA3RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNj
b3BlQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDY4M0RGM0UyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2Uu
aCAqLzsgfTsKIAkJNDY4M0RGNDEyNzY3RTkxQTAwN0QwMEM4IC8qIFNoYWRvd1JlYWxtR2xvYmFs
U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
ODNERjNCMjc2N0RGMjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4OEVFM0MyNkRE
MjYxMDAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4OEVFM0EyNkREMjYwQzAwMkFGNUM0IC8qIENyb3Nz
T3JpZ2luTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTQ2OTQzREM4Mjc2M0Y4MTIwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
Njk0M0RDNTI3NjNGODBEMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2OTQz
REM5Mjc2M0Y4MTcwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0M0RDNzI3NjNG
ODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2OTQzRENBMjc2M0Y4MUMw
MDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5NDNEQzQyNzYzRjgwRDAwNEI2MTBFIC8qIFNoYXJl
ZFdvcmtlclByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNDY5ODVGMjMyN0E0QTZBRDAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktleS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5ODVGMjIy
N0E0QTY4NjAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktleS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2OUNDQ0ZFMjY5RDAyMUMwMDZFMDMxNCAv
KiBCcm9hZGNhc3RDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NjlDQ0NGQzI2OUQwMjAyMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2OUQ3
N0I4MjcwMTYyNTEwMDE0MkZBNiAvKiBOYXZpZ2F0aW9uUmVxdWVzdGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjlENzdCNjI3MDE2MjUwMDAxNDJG
QTYgLyogTmF2aWdhdGlvblJlcXVlc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTQ2QTc4QjM0Mjc5OUJENzEwMDExNTRGRSAvKiBXb3JrZXJP
cHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
QzFCMUQyNjI2RjE4QTRCMDA4ODJEQTIgLyogV29ya2VyT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QUFBQTNEMjVEMzYzMjAwMEJB
RjQyRiAvKiBBdWRpb0ZpbGVSZWFkZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZBQUFBM0EyNUQzNjMxNDAwQkFGNDJGIC8qIEF1ZGlvRmls
ZVJlYWRlckNvY29hLmggKi87IH07CiAJCTQ2QjYzRjZDMUM2RThEMTkwMDJFOTE0QiAvKiBKU0V2
ZW50VGFyZ2V0Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QjY1
MEREMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjUwREIyMjk2MjYyNzAwRkQ4QUE0IC8q
IFBhZ2VJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTEzNjksNiArMTM3NCw3IEBACiAJCTQ2QkQwNUM2MjVCQjZFNkMwMDIyNUYz
MCAvKiBFdmVudExpc3RlbmVyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZCRDA1QzMyNUJCNkU0RTAwMjI1RjMwIC8qIEV2ZW50TGlzdGVu
ZXJPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDZDMDk2MjEyM0Q3OERENjAwNjU3QzA5IC8qIEhUVFBDb29raWVBY2NlcHRQb2xpY3ku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzA5NjIw
MjNENzhERDYwMDY1N0MwOSAvKiBIVFRQQ29va2llQWNjZXB0UG9saWN5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZDMzc2NjIyMDg1MTc3RDAw
QzczODI5IC8qIEpTUmVtb3RlRE9NV2luZG93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NkMzNzY2MTIwODUxNzZEMDBDNzM4MjkgLyogSlNSZW1vdGVE
T01XaW5kb3cuaCAqLzsgfTsKKwkJNDZDNDE2OUIyNzlBMDRDNzAwMjUyQzNCIC8qIFNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NjI2QjQ3NTI3OUEwM0QyMDBBRUYwQjIgLyogU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NkM2OTZDQjFFNzIwNUY3MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNjk2QzkxRTcyMDVFNDAwNTk3
OTM3IC8qIENQVU1vbml0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0NkM2OTZDQzFFNzIwNUZDMDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM2OTZDQTFF
NzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgKi87IH07CiAJCTQ2QzgzRUZFMUE5QkJF
MjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZDODNFRkMxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTkx
ODUsOSArOTE5MSwxMyBAQAogCQk0NjBDQkYzMzFENEJDQ0ZFMDA5MkU4OEUgLyogSlNET01XaW5k
b3dQcm9wZXJ0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
RE9NV2luZG93UHJvcGVydGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
MENCRjM0MUQ0QkNDRkUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01XaW5kb3dQcm9wZXJ0aWVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MEQxOTQ0MUZDRTIxREQwMEMzREI4NSAvKiBKU1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MjZCNDc1Mjc5QTAzRDIwMEFFRjBCMiAvKiBTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjI3M0MyMTI3QTFD
QkM3MDA2QTE1QjkgLyogSlNBdWRpb1dvcmtsZXRQcm9jZXNzb3JDdXN0b20uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNBdWRpb1dvcmtsZXRQcm9jZXNzb3JDdXN0b20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NjI3M0NBQzI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRT
dG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNXU2NyaXB0U3RvcmFn
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjI3M0NBRTI2MEU1OURGMDA2RkFB
OTEgLyogU1dTY3JpcHRTdG9yYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNXU2NyaXB0U3RvcmFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQ2MjdGRjU3Mjc5QjgyNDUwMEFBMzkxNiAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MjdGRjU4Mjc5QjgyNDYw
MEFBMzkxNiAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0NjI3RkY1QTI3OUI4N0EyMDBBQTM5MTYgLyogU2hhcmVkV29ya2VySWRl
bnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MkU0QzREMjYxNkE4
MDEwMDNBMkM2NyAvKiBTY3JpcHRCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2NyaXB0QnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MkU0
QzRGMjYxNkE4MDEwMDNBMkM2NyAvKiBTY3JpcHRCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0QnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDYzNDU5MkIxQUMyMjcxMDAwRUNCNzFDIC8qIFBvd2VyT2JzZXJ2ZXJNYWMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG93ZXJPYnNlcnZlck1h
Yy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MjM0LDE0ICs5MjQ0LDEwIEBA
CiAJCTQ2NzMwMjAxMUM0RUZFNjYwMEJDQjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENv
dW50SW5jcmVtZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWdub3Jl
T3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2NzgwMkIwMjc0NzExN0IwMERBOUZCNiAvKiBXZWJMb2NrTWFuYWdlclNuYXBz
aG90LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkxvY2tNYW5hZ2VyU25h
cHNob3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3ODAyQjIyNzQ3MTE4NTAw
REE5RkI2IC8qIFdlYkxvY2tJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkxvY2tJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTQ2N0E2OENGMjc1RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJQcm94eS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2N0E2OEQwMjc1RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFkLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3QTY4RDEyNzVFQTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdv
cmtlclNjcmlwdExvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NjdBNjhEMjI3NUVB
OThBMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFy
ZWRXb3JrZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2N0E2OEQz
Mjc1RUE5OEIwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNoYXJlZFdvcmtlck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NjdBNjhENDI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjdBNjhENTI3NUVBOThDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk0NjdBNjhENjI3NUVBOThDMDA5QjMxQzUgLyogU2hhcmVk
V29ya2VyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyUHJveHkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MkQxRkYxRjc5NzgyMzAwQzg2M0RCIC8qIFN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
b3JlZENyZWRlbnRpYWxzUG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
ODM0NERDMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NUmVjdExp
c3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgzNDRERDFFRERGQTVGMDBC
Nzc5NUIgLyogRE9NUmVjdExpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NUmVjdExpc3Qu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTI1NCw2ICs5MjYwLDEyIEBACiAJ
CTQ2ODNERjNFMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2hhZG93UmVhbG1HbG9iYWxT
Y29wZUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OEVFM0EyNkREMjYw
QzAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcm9zc09yaWdp
bk1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4QjhCREUyNUNDODQ5MzAw
RjY3ODIyIC8qIEpTQmFzZUF1ZGlvQ29udGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0Jhc2VBdWRpb0NvbnRleHRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0Njk0M0RDMjI3NjNGODBDMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyUHJvdmlkZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RDNDI3NjNGODBEMDA0QjYxMEUgLyogU2hhcmVkV29y
a2VyUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyUHJvdmlkZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQzUyNzYzRjgwRDAwNEI2MTBFIC8qIFNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RD
NjI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk4NUYyMjI3
QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlcktleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NjlDQ0NGQTI2OUQwMjAyMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBCcm9hZGNhc3RDaGFubmVsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDY5Q0NDRkMyNjlEMDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQnJvYWRjYXN0Q2hhbm5lbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NjlDQ0NGRDI2OUQwMjAzMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gQnJvYWRjYXN0Q2hhbm5lbC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC05Mjg4LDYgKzkzMDAsNyBAQAogCQk0NkMzNzY1RjIwODUxNzZDMDBDNzM4MjkgLyogSlNS
ZW1vdGVET01XaW5kb3cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNSZW1vdGVET01XaW5kb3cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkMz
NzY2MTIwODUxNzZEMDBDNzM4MjkgLyogSlNSZW1vdGVET01XaW5kb3cuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNSZW1vdGVET01XaW5kb3cuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDZDM0E4RDMyNTQ4RDRCNzAwQzhDNTNBIC8qIEpTQXVkaW9CdWZmZXJD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdWRpb0J1ZmZlckN1c3RvbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2QzQxNjlEMjc5QTA0RDIwMDI1MkMzQiAvKiBT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2QzY5NkM5MUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENQVU1vbml0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDNjk2Q0ExRTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1BVTW9uaXRvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzgzRUZCMUE5QkJFMjkwMEE3OUE0
MSAvKiBHZW9Ob3RpZmllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBHZW9Ob3RpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTUyMSw2
ICsyMTUzNCwxNyBAQAogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CiAJCX07CisJCTQ2MjZCNDczMjc5QTAzQjEwMEFFRjBCMiAvKiBjb250ZXh0ICovID0geworCQkJ
aXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk0NjI3RkY1NzI3OUI4MjQ1MDBB
QTM5MTYgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3BwICovLAorCQkJCTQ2MjdGRjU4Mjc5
QjgyNDYwMEFBMzkxNiAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oICovLAorCQkJCTQ2QzQx
NjlEMjc5QTA0RDIwMDI1MkMzQiAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAgKi8s
CisJCQkJNDYyNkI0NzUyNzlBMDNEMjAwQUVGMEIyIC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyLmggKi8sCisJCQkpOworCQkJcGF0aCA9IGNvbnRleHQ7CisJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOworCQl9OwogCQk0NjQyNDA0NDIwRUFGMEJEMDBCMjlGRDIgLyogY29jb2EgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjE1NTUsMTYgKzIxNTc5
LDIwIEBACiAJCTQ2Njk0Q0RFMjc1OTQ0NkQwMEUzMTUwRSAvKiBzaGFyZWQgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQ2MjZCNDczMjc5QTAzQjEwMEFF
RjBCMiAvKiBjb250ZXh0ICovLAogCQkJCTQ2Njk0Q0UzMjc1OTQ0OEQwMEUzMTUwRSAvKiBTaGFy
ZWRXb3JrZXIuY3BwICovLAogCQkJCTQ2Njk0Q0UyMjc1OTQ0OEQwMEUzMTUwRSAvKiBTaGFyZWRX
b3JrZXIuaCAqLywKIAkJCQk0NjY5NENFNTI3NTk0NDhFMDBFMzE1MEUgLyogU2hhcmVkV29ya2Vy
LmlkbCAqLywKIAkJCQk0NjY5NENFNDI3NTk0NDhFMDBFMzE1MEUgLyogU2hhcmVkV29ya2VyR2xv
YmFsU2NvcGUuY3BwICovLAogCQkJCTQ2Njk0Q0UxMjc1OTQ0OEMwMEUzMTUwRSAvKiBTaGFyZWRX
b3JrZXJHbG9iYWxTY29wZS5oICovLAogCQkJCTQ2Njk0Q0UwMjc1OTQ0OEMwMEUzMTUwRSAvKiBT
aGFyZWRXb3JrZXJHbG9iYWxTY29wZS5pZGwgKi8sCi0JCQkJNDY3QTY4RDMyNzVFQTk4QjAwOUIz
MUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuY3BwICovLAotCQkJCTQ2N0E2OEQyMjc1RUE5OEEw
MDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggKi8sCi0JCQkJNDY3QTY4Q0YyNzVFQTk4
OTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclByb3h5LmNwcCAqLywKLQkJCQk0NjdBNjhENjI3NUVB
OThDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyUHJveHkuaCAqLywKKwkJCQk0NjI3RkY1QTI3OUI4
N0EyMDBBQTM5MTYgLyogU2hhcmVkV29ya2VySWRlbnRpZmllci5oICovLAorCQkJCTQ2OTg1RjIy
MjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCAqLywKKwkJCQk0Njk0M0RDNjI3
NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgKi8sCisJ
CQkJNDY5NDNEQzUyNzYzRjgwRDAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b24uaCAqLywKKwkJCQk0Njk0M0RDNzI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllci5oICovLAorCQkJCTQ2OTQzREMyMjc2M0Y4MEMwMDRCNjEwRSAvKiBTaGFy
ZWRXb3JrZXJQcm92aWRlci5jcHAgKi8sCisJCQkJNDY5NDNEQzQyNzYzRjgwRDAwNEI2MTBFIC8q
IFNoYXJlZFdvcmtlclByb3ZpZGVyLmggKi8sCiAJCQkJNDY3QTY4RDEyNzVFQTk4QTAwOUIzMUM1
IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAgKi8sCiAJCQkJNDY3QTY4RDUyNzVFQTk4
QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oICovLAogCQkJCTQ2N0E2OEQw
Mjc1RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuY3BwICovLApAQCAtMzM4NzIs
NiArMzM5MDAsNyBAQAogCQkJCTJENDgxRjAyMTQ2QjVDNTUwMEFBNzgzNCAvKiBDcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFDNDE2MTIwRjY1NjJGRDAwOTJE
MkZCIC8qIENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY3
MkFBOTgyNkIwOTQzMzAwRTZFQzM4IC8qIENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTQ2QTc4QjM0Mjc5OUJENzEwMDExNTRGRSAvKiBXb3JrZXJPcHRpb25z
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0Njg4RUUzQzI2REQyNjEwMDAyQUY1QzQgLyogQ3Jvc3NP
cmlnaW5Nb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjcyQUE5OTI2QjA5NDNGMDBFNkVDMzgg
LyogQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQUJFNjdC
MUQwNTgwREIwMDZEODYyRCAvKiBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuaCBpbiBIZWFk
ZXJzICovLApAQCAtMzM5MTAsNiArMzM5MzksNyBAQAogCQkJCTU3RkVERDNGMURCNkQ1OTIwMEVC
OTZGNSAvKiBDcnlwdG9BbGdvcml0aG1Sc2FLZXlHZW5QYXJhbXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTU3MDZBNjk2MURERTVDOTUwMEEwM0IxNCAvKiBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFy
YW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzIxQTk4QjFFQ0U1NzA0MDA4MTI5NUEgLyogQ3J5
cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjI3RkY1OTI3
OUI4MjQ5MDBBQTM5MTYgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUxQkQzMzFBMTgyRDhEREQwMEMwNUQ5RiAvKiBDcnlwdG9BbGdvcml0aG1SU0FTU0Ff
UEtDUzFfdjFfNS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEyNUY4MkMxODIyQ0ZFQzAwRDg0Q0Q5
IC8qIENyeXB0b0FsZ29yaXRobVNIQTEuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxOUFDM0VGMTgy
NERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyMjQuaCBpbiBIZWFkZXJzICovLApA
QCAtMzQ4OTYsNiArMzQ5MjYsNyBAQAogCQkJCUNEM0UyMUREMjE4MzQ0NEEwMEU2NkY1NSAvKiBJ
bWFnZUJ1ZmZlclV0aWxpdGllc0NHLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NEVFQTEwMDI3NDc1
N0YxMDA1OTRBODMgLyogSW1hZ2VDb250cm9sc01hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3
OTc5MUEwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NDZDNDE2OUIyNzlBMDRDNzAwMjUyQzNCIC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQ0EwODhGNTI2NEUxQzA4MDAzRTJBNkMgLyogSW1hZ2VEYXRh
U2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMTlGRUE4MUY1NzM5NzIwMDBDNDJGQiAv
KiBJbWFnZURlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMTlGRUFFMUY1NzRCNkQwMDBD
NDJGQiAvKiBJbWFnZURlY29kZXJBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKQEAgLTM1NTI0LDYg
KzM1NTU1LDcgQEAKIAkJCQkxQTc1MEQ4RTBBOTBFNTIxMDAwRkYyMTUgLyogSlNOb2RlSXRlcmF0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDlDMkMzMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05v
ZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDIwQjE4RDE4RTlEMjM3MDA1QTgwODMgLyog
SlNOb2RlTGlzdEN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY5NDNEQzkyNzYzRjgxNzAw
NEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTMzNTAzQ0E0MTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTEwRTJGMzMyNzZCRjY4NTAwODA5MzMzIC8qIEpTTm90aWZpY2F0aW9uRGly
ZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTBFMkYyQjI3NkJDRkU4MDA4MDkzMzMgLyog
SlNOb3RpZmljYXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNjY3NSw2ICszNjcwNyw3
IEBACiAJCQkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2MDQzIC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRp
bnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMjlDOUE5MUY1OUM1NkIwMDlENzQwMyAvKiBSZWFk
YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTZFNkZF
ODFCQkQxMkRGMDAwQTNGNjQgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDY5NDNEQzgyNzYzRjgxMjAwNEI2MTBFIC8qIFNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMjlDOUFGMUY1OUNGNUIw
MDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMjlD
OUFCMUY1OUM1NzMwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNvdXJjZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkQzMTYwM0MxMkIwMjY3NjAwQzFBMzU5IC8qIFJlYWx0aW1lQW5hbHlzZXIuaCBp
biBIZWFkZXJzICovLApAQCAtMzcwNTIsNiArMzcwODUsNyBAQAogCQkJCTBGNjA1QUVEMTVGOTQ4
NDgwMDRERjBDMCAvKiBTY3JvbGxpbmdDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFGNjJFRTgxNERBMjJBNzAwNDE1NTZDIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5MzkxQTk5MTE2Mjc0NkNCMDAyOTczMzAgLyogU2Nyb2xsaW5nQ29vcmRp
bmF0b3JNYWMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2MjdGRjVCMjc5Qjg3QUYwMEFBMzkxNiAv
KiBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTJEQkE0OTIx
RjhBRDgzMDA4RjM2QjIgLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3JUeXBlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNUI0NjY1NjMyNUQxNEMwQTAwMENGRTE0IC8qIFNjcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk5MDU5QTI2RjZCRTg1MDA1NEZCRTAgLyog
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTM3MTc4LDgg
KzM3MjEyLDYgQEAKIAkJCQk4MzRERkFEMDFGN0RBRTVEMDBDMjcyNUIgLyogU2hhcmVkU3RyaW5n
SGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFQTMwOTlFQjc4QzAwNTZFNTgxIC8qIFNo
YXJlZFRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURDMDRGRTI3QTgzQzkzMDA4Q0Y5Njgg
LyogU2hhcmVkVmlkZW9GcmFtZUluZm8uaCBpbiBIZWFkZXJzICovLAotCQkJCTQ2N0E2OERBMjc1
RUE5OUMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk0NjdBNjhEOTI3NUVBOTk4MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyUHJveHkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ2N0E2OEQ4Mjc1RUE5OTUwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2N0E2OEQ3Mjc1RUE5OTEwMDlCMzFDNSAv
KiBTaGFyZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDNERCMDI2MjczMzlG
RTAwMDdCMEFEMSAvKiBTaG91bGRMb2NhbGl6ZUF4aXNOYW1lcy5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zNzQxMyw2ICszNzQ0NSw3IEBACiAJCQkJQjIyMjc5QzAwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R0VsbGlwc2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlDODBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHRkVCbGVuZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUNC
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDY5ODVGMjMyN0E0QTZBRDAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktleS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5Q0UwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFQ29tcG9u
ZW50VHJhbnNmZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlEMTBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHRkVDb21wb3NpdGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkx
OTIxMzI3NTExQzBFNkJCMDA0NTYyMzggLyogU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaCBp
biBIZWFkZXJzICovLApAQCAtMzgwNjAsNiArMzgwOTMsNyBAQAogCQkJCTgzQUNEMDEzMjUyMjlF
MTAwMDBEMTI0RSAvKiBXb3JrbGV0T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM0QTZB
M0EyNTI2ODQ0QTAwNzQ3RjVEIC8qIFdvcmtsZXRQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4MzNCRDgxNzI1MjRENEYyMDA2RTcyQjMgLyogV29ya2xldFBlbmRpbmdUYXNrcy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDY5NDNEQ0EyNzYzRjgxQzAwNEI2MTBFIC8qIFNoYXJlZFdvcmtl
clByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUyNDA5OUU2NDkyMDA1NkU1ODEg
LyogV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTZFNkZFODFCQkQxMkRGMDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlu
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUJBRjNCMjQxMkMxQTM5ODAwMDE0QkYxIC8qIFdyaXRp
bmdEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCmlu
ZGV4IGRjMGY1MDk4Yjg3Zi4uZmE3ZDIzMDJlYzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2lu
Zy5oCkBAIC0xMDksNiArMTA5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIE0oU2VsZWN0
aW9uKSBcCiAgICAgTShTZXJ2aWNlcykgXAogICAgIE0oU2VydmljZVdvcmtlcikgXAorICAgIE0o
U2hhcmVkV29ya2VyKSBcCiAgICAgTShTcGVsbGluZ0FuZEdyYW1tYXIpIFwKICAgICBNKFNRTERh
dGFiYXNlKSBcCiAgICAgTShTdG9yYWdlKSBcCkBAIC0xMjYsNiArMTI3LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIE0oV2ViR0wpIFwKICAgICBNKFdlYlJUQykgXAogICAgIE0oV2ViUlRD
U3RhdHMpIFwKKyAgICBNKFdvcmtlcikgXAogICAgIE0oWFIpIFwKICAgICBNKFdoZWVsRXZlbnRU
ZXN0TW9uaXRvcikgXAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGVQcm94eS5oCmluZGV4IDE5MjE2NjBlN2M0OS4uMmJhYjI2NzM1ZGUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaApAQCAtNDQsNyAr
NDQsNyBAQCBjbGFzcyBTY3JpcHRCdWZmZXI7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwogY2xhc3MgV29ya2VyOwogZW51bSBjbGFzcyBSZWZlcnJlclBvbGljeSA6IHVpbnQ4X3Q7Ci1l
bnVtIGNsYXNzIFdvcmtlclR5cGUgOiB1aW50OF90OworZW51bSBjbGFzcyBXb3JrZXJUeXBlIDog
Ym9vbDsKIAogLy8gQSBwcm94eSB0byB0YWxrIHRvIHRoZSB3b3JrZXIgY29udGV4dC4KIGNsYXNz
IFdvcmtlckdsb2JhbFNjb3BlUHJveHkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9wdGlv
bnMuaAppbmRleCBmYmRhZWFiZThhYjcuLjc3MzM5NWI3OWExYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJPcHRpb25zLmgKQEAgLTM0LDYgKzM0LDM2IEBAIHN0cnVjdCBXb3JrZXJPcHRp
b25zIHsKICAgICBXb3JrZXJUeXBlIHR5cGUgeyBXb3JrZXJUeXBlOjpDbGFzc2ljIH07CiAgICAg
RmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVudGlhbHMgeyBGZXRjaFJlcXVlc3RDcmVkZW50
aWFsczo6U2FtZU9yaWdpbiB9OwogICAgIFN0cmluZyBuYW1lOworCisgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdvcmtlck9wdGlvbnM+IGRlY29kZShE
ZWNvZGVyJik7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBXb3JrZXJPcHRp
b25zOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHR5
cGUgPDwgY3JlZGVudGlhbHMgPDwgbmFtZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
K3N0ZDo6b3B0aW9uYWw8V29ya2VyT3B0aW9ucz4gV29ya2VyT3B0aW9uczo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxXb3JrZXJUeXBlPiB3b3JrZXJUeXBl
OworICAgIGRlY29kZXIgPj4gd29ya2VyVHlwZTsKKyAgICBpZiAoIXdvcmtlclR5cGUpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPEZldGNoUmVxdWVz
dENyZWRlbnRpYWxzPiBjcmVkZW50aWFsczsKKyAgICBkZWNvZGVyID4+IGNyZWRlbnRpYWxzOwor
ICAgIGlmICghY3JlZGVudGlhbHMpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmFtZTsKKyAgICBkZWNvZGVyID4+IG5hbWU7CisgICAg
aWYgKCFuYW1lKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsg
eyAqd29ya2VyVHlwZSwgKmNyZWRlbnRpYWxzLCBXVEZNb3ZlKCpuYW1lKSB9IH07Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNw
cAppbmRleCA0MDY3MTczYTg5YTUuLmI3MTg1YTVlZGE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyVGhyZWFkLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIldvcmtlclRo
cmVhZC5oIgogCiAjaW5jbHVkZSAiSURCQ29ubmVjdGlvblByb3h5LmgiCisjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNvY2tldFByb3ZpZGVyLmgiCkBAIC0xNjMsNiArMTY0LDEx
IEBAIHZvaWQgV29ya2VyVGhyZWFkOjpldmFsdWF0ZVNjcmlwdElmTmVjZXNzYXJ5KFN0cmluZyYg
ZXhjZXB0aW9uTWVzc2FnZSkKICAgICBpZiAoc291cmNlUHJvdmlkZXIpCiAgICAgICAgIGdsb2Jh
bFNjb3BlKCktPnNldE1haW5TY3JpcHRTb3VyY2VQcm92aWRlcigqc291cmNlUHJvdmlkZXIpOwog
CisgICAgaWYgKGV4Y2VwdGlvbk1lc3NhZ2UuaXNFbXB0eSgpKQorICAgICAgICBSRUxFQVNFX0xP
RyhXb3JrZXIsICJXb3JrZXJUaHJlYWQ6OmV2YWx1YXRlU2NyaXB0SWZOZWNlc3NhcnkoKSBTVUND
RVNTIik7CisgICAgZWxzZQorICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXb3JrZXIsICJXb3Jr
ZXJUaHJlYWQ6OmV2YWx1YXRlU2NyaXB0SWZOZWNlc3NhcnkoKSBGQUlMVVJFICgle3ByaXZhdGV9
cykiLCBleGNlcHRpb25NZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworCiAgICAgLy8gRnJlZSB0aGUg
c3RhcnR1cCBkYXRhIHRvIGNhdXNlIGl0cyBtZW1iZXIgdmFyaWFibGUgZGVyZWYncyBoYXBwZW4g
b24gdGhlIHdvcmtlcidzIHRocmVhZCAoc2luY2UKICAgICAvLyBhbGwgcmVmL2RlcmVmcyBvZiB0
aGVzZSBvYmplY3RzIGFyZSBoYXBwZW5pbmcgb24gdGhlIHRocmVhZCBhdCB0aGlzIHBvaW50KS4g
Tm90ZSB0aGF0CiAgICAgLy8gV29ya2VyVGhyZWFkOjp+V29ya2VyVGhyZWFkIGhhcHBlbnMgb24g
YSBkaWZmZXJlbnQgdGhyZWFkIHdoZXJlIGl0IHdhcyBjcmVhdGVkLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclR5cGUuaAppbmRleCAxYzFiYjk0NDg2N2EuLjhlMDRjM2E5YTAxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUeXBlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJUeXBlLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1lbnVtIGNsYXNzIFdvcmtlclR5cGUgOiB1aW50OF90IHsKK2VudW0gY2xhc3Mg
V29ya2VyVHlwZSA6IGJvb2wgewogICAgIENsYXNzaWMsCiAgICAgTW9kdWxlLAogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFp
bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRh
aW5lci5oCmluZGV4IDc5M2EyZjlhNDU4ZS4uMjhmNWNiYzFmZWU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgK
QEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgTmF2aWdhdG9yQmFzZTsKIGNsYXNzIFNlcnZpY2VXb3Jr
ZXI7CiAKIGVudW0gY2xhc3MgU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlIDogdWludDhfdDsK
LWVudW0gY2xhc3MgV29ya2VyVHlwZSA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIFdvcmtlclR5cGUg
OiBib29sOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBET01Qcm9taXNlUHJv
eHk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zLmgKaW5kZXggYzhkNzcxOGRlZTc1
Li45ZTM2OTBlYTczZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9ucy5oCkBAIC0z
Miw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgU2VydmljZVdv
cmtlclVwZGF0ZVZpYUNhY2hlIDogdWludDhfdDsKLWVudW0gY2xhc3MgV29ya2VyVHlwZSA6IHVp
bnQ4X3Q7CitlbnVtIGNsYXNzIFdvcmtlclR5cGUgOiBib29sOwogCiBzdHJ1Y3QgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbk9wdGlvbnMgewogICAgIFN0cmluZyBzY29wZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaApp
bmRleCAxZTgzMWZjNGNhODIuLjExMDg2ZDE5MjMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaApAQCAtNTMsNyAr
NTMsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9uczsKIHN0cnVjdCBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVu
dGlmaWVyOwogZW51bSBjbGFzcyBXb3JrZXJUaHJlYWRNb2RlIDogYm9vbDsKLWVudW0gY2xhc3Mg
V29ya2VyVHlwZSA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIFdvcmtlclR5cGUgOiBib29sOwogCiBj
bGFzcyBTV1NlcnZlcldvcmtlciA6IHB1YmxpYyBSZWZDb3VudGVkPFNXU2VydmVyV29ya2VyPiB7
CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
LmNwcAppbmRleCA2YTU5YjJlZmU5YTEuLjkyNmQzNTcwNzg1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDEzICsyNiwxNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgogCisjaW5jbHVkZSAi
Q2xpZW50T3JpZ2luLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VDaGFubmVsLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBv
cnQuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVk
V29ya2VyUHJveHkuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSAiU2hhcmVkV29ya2VyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXb3JrZXJPcHRp
b25zLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllcnNGYWN0b3J5Lmg+CiAj
aW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTQxLDggKzQ1LDMxIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFNoYXJlZFdvcmtl
cik7CiAKLUV4Y2VwdGlvbk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBTaGFyZWRXb3JrZXI6OmNyZWF0
ZShEb2N1bWVudCYgZG9jdW1lbnQsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncywgU3Ry
aW5nJiYgc2NyaXB0VVJMU3RyaW5nLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxTdHJpbmcs
IFdvcmtlck9wdGlvbnM+PiYmIG1heWJlT3B0aW9ucykKKyNkZWZpbmUgU0hBUkVEX1dPUktFUl9S
RUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBbaWRl
bnRpZmllcj0le3B1YmxpY31zXSBTaGFyZWRXb3JrZXI6OiIgZm10LCB0aGlzLCBtX2lkZW50aWZp
ZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBTSEFS
RURfV09SS0VSX1JFTEVBU0VfTE9HX0VSUk9SKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihT
aGFyZWRXb3JrZXIsICIlcCAtIFtpZGVudGlmaWVyPSV7cHVibGljfXNdIFNoYXJlZFdvcmtlcjo6
IiBmbXQsIHRoaXMsIG1faWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksICMjX19W
QV9BUkdTX18pCisKK3N0YXRpYyBIYXNoTWFwPFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIs
IFNoYXJlZFdvcmtlcio+JiBhbGxTaGFyZWRXb3JrZXJzKCkKK3sKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIsIFNoYXJlZFdvcmtlcio+PiBhbGxTaGFyZWRXb3JrZXJzOworICAg
IHJldHVybiBhbGxTaGFyZWRXb3JrZXJzOworfQorCitTaGFyZWRXb3JrZXIqIFNoYXJlZFdvcmtl
cjo6ZnJvbUlkZW50aWZpZXIoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBpZGVudGlmaWVy
KQoreworICAgIHJldHVybiBhbGxTaGFyZWRXb3JrZXJzKCkuZ2V0KGlkZW50aWZpZXIpOworfQor
CitzdGF0aWMgaW5saW5lIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24qIG1haW5UaHJlYWRD
b25uZWN0aW9uKCkKIHsKKyAgICByZXR1cm4gU2hhcmVkV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRv
bigpLnNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPFNoYXJl
ZFdvcmtlcj4+IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5n
JiYgc2NyaXB0VVJMU3RyaW5nLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxTdHJpbmcsIFdv
cmtlck9wdGlvbnM+PiYmIG1heWJlT3B0aW9ucykKK3sKKyAgICBpZiAoIW1haW5UaHJlYWRDb25u
ZWN0aW9uKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwg
IlNoYXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkIiB9OworCiAgICAgaWYgKCFkb2N1bWVu
dC5zZWN1cml0eU9yaWdpbigpLmNhbkFjY2Vzc1NoYXJlZFdvcmtlcnMoZG9jdW1lbnQudG9wT3Jp
Z2luKCkpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIlRoaXMg
aWZyYW1lIGRvZXNuJ3QgaGF2ZSBzdG9yYWdlIGFjY2VzcyJfcyB9OwogCkBAIC02NywyNiArOTQs
MzAgQEAgRXhjZXB0aW9uT3I8UmVmPFNoYXJlZFdvcmtlcj4+IFNoYXJlZFdvcmtlcjo6Y3JlYXRl
KERvY3VtZW50JiBkb2N1bWVudCwgSlNDOjpSdW4KICAgICBhdXRvIGNoYW5uZWwgPSBNZXNzYWdl
Q2hhbm5lbDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBhdXRvIHRyYW5zZmVycmVkUG9ydCA9IGNo
YW5uZWwtPnBvcnQyKCkuZGlzZW50YW5nbGUoKTsKIAotICAgIGF1dG8gc2hhcmVkV29ya2VyID0g
YWRvcHRSZWYoKm5ldyBTaGFyZWRXb3JrZXIoZG9jdW1lbnQsIGNoYW5uZWwtPnBvcnQxKCksIHJ1
bnRpbWVGbGFncykpOworICAgIGF1dG8gc2hhcmVkV29ya2VyID0gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRXb3JrZXIoZG9jdW1lbnQsIGNoYW5uZWwtPnBvcnQxKCkpKTsKICAgICBzaGFyZWRXb3JrZXIt
PnN1c3BlbmRJZk5lZWRlZCgpOwogCi0gICAgU2hhcmVkV29ya2VyTWFuYWdlcjo6c2luZ2xldG9u
KCkuY29ubmVjdCh1cmwsIHNoYXJlZFdvcmtlci5nZXQoKSwgV1RGTW92ZSh0cmFuc2ZlcnJlZFBv
cnQpLCBXVEZNb3ZlKG9wdGlvbnMpKTsKKyAgICBDbGllbnRPcmlnaW4gY2xpZW50T3JpZ2luIHsg
ZG9jdW1lbnQudG9wRG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSwgZG9jdW1lbnQu
c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkgfTsKKyAgICBtYWluVGhyZWFkQ29ubmVjdGlvbigpLT5y
ZXF1ZXN0U2hhcmVkV29ya2VyKGNsaWVudE9yaWdpbiwgc2hhcmVkV29ya2VyLT5pZGVudGlmaWVy
KCksIHVybCwgV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBvcHRpb25zKTsKICAgICByZXR1cm4g
c2hhcmVkV29ya2VyOwogfQogCi1TaGFyZWRXb3JrZXI6OlNoYXJlZFdvcmtlcihEb2N1bWVudCYg
ZG9jdW1lbnQsIFJlZjxNZXNzYWdlUG9ydD4mJiBwb3J0LCBKU0M6OlJ1bnRpbWVGbGFncyBydW50
aW1lRmxhZ3MpCitTaGFyZWRXb3JrZXI6OlNoYXJlZFdvcmtlcihEb2N1bWVudCYgZG9jdW1lbnQs
IFJlZjxNZXNzYWdlUG9ydD4mJiBwb3J0KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZkb2N1bWVu
dCkKKyAgICAsIG1faWRlbnRpZmllcihTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyOjpnZW5l
cmF0ZSgpKQogICAgICwgbV9wb3J0KFdURk1vdmUocG9ydCkpCiAgICAgLCBtX2lkZW50aWZpZXJG
b3JJbnNwZWN0b3IoIlNoYXJlZFdvcmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rv
cnk6OmNyZWF0ZUlkZW50aWZpZXIoKSkKLSAgICAsIG1fcnVudGltZUZsYWdzKHJ1bnRpbWVGbGFn
cykKLSAgICAsIG1fY3JlYXRpb25UaW1lKE1vbm90b25pY1RpbWU6Om5vdygpKQotICAgICwgbV9w
cm94eShTaGFyZWRXb3JrZXJQcm94eTo6Y3JlYXRlKCp0aGlzKSkKIHsKKyAgICBTSEFSRURfV09S
S0VSX1JFTEVBU0VfTE9HKCJTaGFyZWRXb3JrZXI6Iik7CisgICAgYWxsU2hhcmVkV29ya2Vycygp
LmFkZChtX2lkZW50aWZpZXIsIHRoaXMpOwogfQogCiBTaGFyZWRXb3JrZXI6On5TaGFyZWRXb3Jr
ZXIoKQogewotICAgIG1fcHJveHkud29ya2VyT2JqZWN0RGVzdHJveWVkKCk7CisgICAgQVNTRVJU
KGFsbFNoYXJlZFdvcmtlcnMoKS5nZXQobV9pZGVudGlmaWVyKSA9PSB0aGlzKTsKKyAgICBTSEFS
RURfV09SS0VSX1JFTEVBU0VfTE9HKCJ+U2hhcmVkV29ya2VyOiIpOworICAgIGFsbFNoYXJlZFdv
cmtlcnMoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKKyAgICBBU1NFUlQoIW1faXNBY3RpdmUpOwog
fQogCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBTaGFyZWRXb3JrZXI6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSBjb25zdApAQCAtMTA0LDE5ICsxMzUsMjYgQEAgRXZlbnRUYXJnZXRJbnRlcmZh
Y2UgU2hhcmVkV29ya2VyOjpldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0CiAgICAgcmV0dXJu
IFNoYXJlZFdvcmtlckV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsKIH0KIAotdm9pZCBTaGFyZWRX
b3JrZXI6OnN0b3AoKQordm9pZCBTaGFyZWRXb3JrZXI6OmRpZEZhaWxMb2FkaW5nKCkKIHsKLSAg
ICB0ZXJtaW5hdGUoKTsKKyAgICBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HX0VSUk9SKCJ+ZGlk
RmFpbExvYWRpbmc6Iik7CisgICAgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCp0aGlzLCBUYXNr
U291cmNlOjpET01NYW5pcHVsYXRpb24sIEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9y
RXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsK
KyAgICBtX2lzQWN0aXZlID0gZmFsc2U7CiB9CiAKIGJvb2wgU2hhcmVkV29ya2VyOjp2aXJ0dWFs
SGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcm94eS5oYXNQZW5k
aW5nQWN0aXZpdHkoKSB8fCBtX2lzTG9hZGluZzsKKyAgICByZXR1cm4gbV9pc0FjdGl2ZTsKIH0K
IAotdm9pZCBTaGFyZWRXb3JrZXI6OnRlcm1pbmF0ZSgpCit2b2lkIFNoYXJlZFdvcmtlcjo6c3Rv
cCgpCiB7Ci0gICAgbV9wcm94eS50ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpOworICAgIFNI
QVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coInN0b3A6Iik7CisgICAgbV9pc0FjdGl2ZSA9IGZhbHNl
OworICAgIG1haW5UaHJlYWRDb25uZWN0aW9uKCktPnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdB
d2F5KG1faWRlbnRpZmllcik7CiB9CiAKKyN1bmRlZiBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9H
CisjdW5kZWYgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPR19FUlJPUgorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5o
CmluZGV4IDUzMjZlZTU0MmM4OC4uODdjYzc1ZWZiZTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNywzOSArMjcsMzUgQEAKIAogI2luY2x1ZGUg
IkFic3RyYWN0V29ya2VyLmgiCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0jaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvUnVudGltZUZsYWdzLmg+CisjaW5jbHVkZSAiU2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVzc2FnZVBvcnQ7Ci1jbGFzcyBTaGFyZWRXb3Jr
ZXJQcm94eTsKK2NsYXNzIFJlc291cmNlRXJyb3I7CiAKIHN0cnVjdCBXb3JrZXJPcHRpb25zOwog
CiBjbGFzcyBTaGFyZWRXb3JrZXIgZmluYWwgOiBwdWJsaWMgQWJzdHJhY3RXb3JrZXIsIHB1Ymxp
YyBBY3RpdmVET01PYmplY3QgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoU2hhcmVkV29y
a2VyKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFNoYXJlZFdvcmtlcj4+
IGNyZWF0ZShEb2N1bWVudCYsIEpTQzo6UnVudGltZUZsYWdzLCBTdHJpbmcmJiBzY3JpcHRVUkws
IHN0ZDo6b3B0aW9uYWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYpOwor
ICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8U2hhcmVkV29ya2VyPj4gY3JlYXRlKERvY3VtZW50
JiwgU3RyaW5nJiYgc2NyaXB0VVJMLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxTdHJpbmcs
IFdvcmtlck9wdGlvbnM+PiYmKTsKICAgICB+U2hhcmVkV29ya2VyKCk7CiAKKyAgICBzdGF0aWMg
U2hhcmVkV29ya2VyKiBmcm9tSWRlbnRpZmllcihTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
KTsKKyAgICBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBNZXNzYWdlUG9ydCYgcG9ydCgpIGNvbnN0IHsg
cmV0dXJuIG1fcG9ydC5nZXQoKTsgfQotICAgIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFn
cygpIHsgcmV0dXJuIG1fcnVudGltZUZsYWdzOyB9CiAKICAgICBjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXJGb3JJbnNwZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXJGb3JJbnNwZWN0
b3I7IH0KLSAgICBNb25vdG9uaWNUaW1lIGNyZWF0aW9uVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y3JlYXRpb25UaW1lOyB9CiAKLSAgICBTaGFyZWRXb3JrZXJQcm94eSYgcHJveHkoKSB7IHJldHVy
biBtX3Byb3h5OyB9Ci0KLSAgICB2b2lkIHNldElzTG9hZGluZyhib29sIGlzTG9hZGluZykgeyBt
X2lzTG9hZGluZyA9IGlzTG9hZGluZzsgfQorICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoKTsKIAog
ICAgIC8vIEV2ZW50VGFyZ2V0LgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBTaGFyZWRXb3Jr
ZXIoRG9jdW1lbnQmLCBSZWY8TWVzc2FnZVBvcnQ+JiYsIEpTQzo6UnVudGltZUZsYWdzKTsKLQot
ICAgIHZvaWQgdGVybWluYXRlKCk7CisgICAgU2hhcmVkV29ya2VyKERvY3VtZW50JiwgUmVmPE1l
c3NhZ2VQb3J0PiYmKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0LgogICAgIEV2ZW50VGFyZ2V0SW50
ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWw7CkBAIC03MCwxMiArNjYs
MTAgQEAgcHJpdmF0ZToKICAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25z
dCBmaW5hbDsKIAogCisgICAgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBtX2lkZW50aWZp
ZXI7CiAgICAgUmVmPE1lc3NhZ2VQb3J0PiBtX3BvcnQ7CiAgICAgU3RyaW5nIG1faWRlbnRpZmll
ckZvckluc3BlY3RvcjsKLSAgICBKU0M6OlJ1bnRpbWVGbGFncyBtX3J1bnRpbWVGbGFnczsKLSAg
ICBNb25vdG9uaWNUaW1lIG1fY3JlYXRpb25UaW1lOwotICAgIFNoYXJlZFdvcmtlclByb3h5JiBt
X3Byb3h5OyAvLyBUaGUgcHJveHkgb3V0bGl2ZXMgdGhlIHdvcmtlciB0byBwZXJmb3JtIHRocmVh
ZCBzaHV0ZG93bi4KLSAgICBib29sIG1faXNMb2FkaW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1f
aXNBY3RpdmUgeyB0cnVlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaWRsIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmlkbAppbmRleCBiMTcxYzll
ZGY4MWIuLjRjNzQxNTRkODIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXIuaWRsCkBAIC0yOCw3ICsyOCw3IEBACiAgICAgRXhwb3NlZD1XaW5kb3cK
IF0KIGludGVyZmFjZSBTaGFyZWRXb3JrZXIgOiBFdmVudFRhcmdldCB7Ci0gIFtDYWxsV2l0aD1E
b2N1bWVudCZSdW50aW1lRmxhZ3NdIGNvbnN0cnVjdG9yKFVTVlN0cmluZyBzY3JpcHRVUkwsIG9w
dGlvbmFsIChET01TdHJpbmcgb3IgV29ya2VyT3B0aW9ucykgb3B0aW9ucyk7CisgIFtDYWxsV2l0
aD1Eb2N1bWVudF0gY29uc3RydWN0b3IoVVNWU3RyaW5nIHNjcmlwdFVSTCwgb3B0aW9uYWwgKERP
TVN0cmluZyBvciBXb3JrZXJPcHRpb25zKSBvcHRpb25zKTsKIAogICByZWFkb25seSBhdHRyaWJ1
dGUgTWVzc2FnZVBvcnQgcG9ydDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggNDEyMWViNThj
MjA1Li4zYzU1YTY4N2JmODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjYsMTIgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oIgog
CisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNp
bmNsdWRlICJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIgorI2luY2x1ZGUgIlNoYXJlZFdv
cmtlclRocmVhZC5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPHd0Zi9J
c29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTMzLDE3ICszOSw0NCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChTaGFyZWRXb3JrZXJHbG9iYWxTY29w
ZSk7CiAKKyNkZWZpbmUgU0NPUEVfUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNo
YXJlZFdvcmtlciwgIiVwIC0gW3NoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFNo
YXJlZFdvcmtlckdsb2JhbFNjb3BlOjoiIGZtdCwgdGhpcywgdGhpcy0+dGhyZWFkKCkuaWRlbnRp
ZmllcigpLnRvVUludDY0KCksICMjX19WQV9BUkdTX18pCisKIFNoYXJlZFdvcmtlckdsb2JhbFNj
b3BlOjpTaGFyZWRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdv
cmtlclBhcmFtZXRlcnMmIHBhcmFtcywgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwgV29y
a2VyVGhyZWFkJiB0aHJlYWQsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNs
aWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBjb25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVy
KiBzb2NrZXRQcm92aWRlcikKICAgICA6IFdvcmtlckdsb2JhbFNjb3BlKFdvcmtlclRocmVhZFR5
cGU6OlNoYXJlZFdvcmtlciwgcGFyYW1zLCBXVEZNb3ZlKG9yaWdpbiksIHRocmVhZCwgV1RGTW92
ZSh0b3BPcmlnaW4pLCBjb25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyKQogICAgICwgbV9u
YW1lKG5hbWUpCiB7CisgICAgU0NPUEVfUkVMRUFTRV9MT0coIlNoYXJlZFdvcmtlckdsb2JhbFNj
b3BlOiIpOwogICAgIHJlbGF4QWRvcHRpb25SZXF1aXJlbWVudCgpOwogICAgIGFwcGx5Q29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzKHBhcmFtcy5jb250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnMpOwogfQogCitTaGFyZWRXb3JrZXJUaHJlYWQmIFNoYXJlZFdvcmtl
ckdsb2JhbFNjb3BlOjp0aHJlYWQoKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTaGFyZWRX
b3JrZXJUaHJlYWQmPihXb3JrZXJHbG9iYWxTY29wZTo6dGhyZWFkKCkpOworfQorCiB2b2lkIFNo
YXJlZFdvcmtlckdsb2JhbFNjb3BlOjpjbG9zZSgpCiB7CisgICAgU0NPUEVfUkVMRUFTRV9MT0co
ImNsb3NlOiIpOwogICAgIHRocmVhZCgpLnN0b3AobnVsbHB0cik7CiB9CiAKKy8vIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dvcmtlcnMuaHRtbCNkb20tc2hhcmVkd29y
a2VyIHN0ZXAgMTEuNQordm9pZCBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTo6cG9zdENvbm5lY3RF
dmVudChUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgdHJhbnNmZXJyZWRQb3J0LCBTdHJpbmcmJiBz
b3VyY2VPcmlnaW4pCit7CisgICAgU0NPUEVfUkVMRUFTRV9MT0coInBvc3RDb25uZWN0RXZlbnQ6
Iik7CisgICAgYXV0byBzZXJpYWxpemVkU2NyaXB0VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZSgiIik7CisgICAgQVNTRVJUKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CisgICAg
YXV0byBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCp0aGlzLCB7IFdURk1vdmUo
dHJhbnNmZXJyZWRQb3J0KSB9KTsKKyAgICBBU1NFUlQocG9ydHMuc2l6ZSgpID09IDEpOworICAg
IGF1dG8gcG9ydCA9IHBvcnRzWzBdOworICAgIEFTU0VSVChwb3J0KTsKKyAgICBhdXRvIGV2ZW50
ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIHNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5yZWxlYXNlTm9uTnVsbCgpLCBzb3VyY2VPcmlnaW4sIHsgfSwgcG9ydCk7CisgICAgZXZl
bnQtPmluaXRFdmVudChldmVudE5hbWVzKCkuY29ubmVjdEV2ZW50LCBmYWxzZSwgZmFsc2UpOwor
CisgICAgZGlzcGF0Y2hFdmVudChXVEZNb3ZlKGV2ZW50KSk7Cit9CisKKyN1bmRlZiBTQ09QRV9S
RUxFQVNFX0xPRworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCBm
Mzc3OWI4NGQxNTAuLjE1ZGRjNTM4ZGI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDExICsyNSwxMyBA
QAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIk1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmgi
CiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9j
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkOwog
c3RydWN0IFdvcmtlclBhcmFtZXRlcnM7CiAKIGNsYXNzIFNoYXJlZFdvcmtlckdsb2JhbFNjb3Bl
IGZpbmFsIDogcHVibGljIFdvcmtlckdsb2JhbFNjb3BlIHsKQEAgLTM5LDcgKzQxLDExIEBAIHB1
YmxpYzoKIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5cGU6OlNoYXJl
ZFdvcmtlcjsgfQogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFt
ZTsgfQorICAgIFNoYXJlZFdvcmtlclRocmVhZCYgdGhyZWFkKCk7CisKKyAgICB2b2lkIHBvc3RD
b25uZWN0RXZlbnQoVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBTdHJpbmcmJiBzb3VyY2VPcmln
aW4pOwogICAgIHZvaWQgY2xvc2UoKTsKKwogcHJpdmF0ZToKICAgICBTaGFyZWRXb3JrZXJHbG9i
YWxTY29wZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBSZWY8
U2VjdXJpdHlPcmlnaW4+JiYsIFdvcmtlclRocmVhZCYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0
b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIq
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VySWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VySWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
ODdhOTcyMTA0ODc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VySWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBTaGFyZWRXb3JrZXJJZGVudGlmaWVyVHlwZSB7
IH07Cit1c2luZyBTaGFyZWRXb3JrZXJJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlcktleS5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyS2V5LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41ZjllNmRjOTBiYTkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaApA
QCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJD
bGllbnRPcmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3N0cnVjdCBTaGFyZWRXb3JrZXJLZXkgeworICAgIFdlYkNvcmU6OkNsaWVudE9yaWdp
biBvcmlnaW47CisgICAgVVJMIHVybDsKKyAgICBTdHJpbmcgbmFtZTsKKworICAgIHVuc2lnbmVk
IGhhc2goKSBjb25zdDsKK307CisKK2lubGluZSB1bnNpZ25lZCBTaGFyZWRXb3JrZXJLZXk6Omhh
c2goKSBjb25zdAoreworICAgIEhhc2hlciBoYXNoZXI7CisgICAgYWRkKGhhc2hlciwgb3JpZ2lu
Lmhhc2goKSk7CisgICAgYWRkKGhhc2hlciwgdXJsKTsKKyAgICBhZGQoaGFzaGVyLCBuYW1lKTsK
KyAgICByZXR1cm4gaGFzaGVyLmhhc2goKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTaGFyZWRXb3JrZXJLZXkmIGEsIGNvbnN0IFNoYXJlZFdvcmtlcktleSYgYikKK3sKKyAg
ICByZXR1cm4gYS5vcmlnaW4gPT0gYi5vcmlnaW4gJiYgYS51cmwgPT0gYi51cmwgJiYgYS5uYW1l
ID09IGIubmFtZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RG
IHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6U2hhcmVkV29ya2Vy
S2V5PiB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViQ29yZTo6U2hhcmVkV29y
a2VyS2V5JiBrZXkpCisgICAgeworICAgICAgICByZXR1cm4ga2V5Lmhhc2goKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIGEs
IGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgYikKKyAgICB7CisgICAgICAgIHJldHVy
biBhID09IGI7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRv
RW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFp
dHM8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5PiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYkNvcmU6
OlNoYXJlZFdvcmtlcktleT4geworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBlbXB0eVZhbHVl
SXNaZXJvID0gZmFsc2U7CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdl
YkNvcmU6OlNoYXJlZFdvcmtlcktleSYgc2xvdCkgeyBuZXcgKE5vdE51bGwsICZzbG90LnVybCkg
VVJMKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVs
ZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgc2xvdCkgeyByZXR1cm4g
c2xvdC51cmwuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlck1hbmFnZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTI2YmM0ZmVk
ODcuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXJNYW5hZ2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlck1hbmFn
ZXIuaCIKLQotI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgotI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgotI2luY2x1ZGUgIk1lc3Nh
Z2VFdmVudC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgotI2luY2x1ZGUgIlNo
YXJlZFdvcmtlci5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgiCi0jaW5j
bHVkZSAiU2hhcmVkV29ya2VyUHJveHkuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJTY3JpcHRM
b2FkZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKLSNpbmNsdWRlICJXb3Jr
ZXJSdW5Mb29wLmgiCi0jaW5jbHVkZSAiV29ya2VyU2NyaXB0TG9hZGVyLmgiCi0jaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1TaGFyZWRXb3JrZXJNYW5hZ2VyJiBTaGFyZWRXb3JrZXJNYW5hZ2Vy
OjpzaW5nbGV0b24oKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFyZWRXb3JrZXJN
YW5hZ2VyPiBpbnN0YW5jZTsKLSAgICByZXR1cm4gaW5zdGFuY2UuZ2V0KCk7Ci19Ci0KLXZvaWQg
U2hhcmVkV29ya2VyTWFuYWdlcjo6Y29ubmVjdChjb25zdCBVUkwmIHVybCwgU2hhcmVkV29ya2Vy
JiB3b3JrZXIsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBtZXNzYWdlUG9ydCwgV29ya2VyT3B0
aW9ucyYmIG9wdGlvbnMpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAv
LyBGSVhNRTogSGFuZGxlIHdvcmtlcnMgZnJvbSBvdGhlciBwcm9jZXNzZXMsIHdoaWNoIHdpbGwg
cHJvYmFibHkgcmVxdWlyZSBtb3ZpbmcgY29ubmVjdCB0byB0aGUgRnJhbWVMb2FkZXJDbGllbnQg
b3Igc29tZXRoaW5nLgotICAgIC8vIE1heWJlIHNvbWV0aGluZyBtb3JlIGxpa2Ugd2hhdCBTZXJ2
aWNlV29ya2VycyBkb2VzLgotCi0gICAgLy8gRklYTUU6IENoZWNrIGlmIHdlIGFscmVhZHkgbWFk
ZSBhIHRocmVhZC4KLSAgICAvLyBGSVhNRTogQ2hlY2sgaWYgdGhlcmUncyBhbHJlYWR5IGEgc2hh
cmVkIHdvcmtlciBhbmQgdXNlIHRoYXQgaWYgdGhlcmUgaXMuCi0KLSAgICBhdXRvIGxvYWRlciA9
IG1ha2VVbmlxdWVSZWY8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPih1cmwsIHdvcmtlciwgV1RG
TW92ZShtZXNzYWdlUG9ydCksIFdURk1vdmUob3B0aW9ucykpOwotICAgIGF1dG8gaWRlbnRpZmll
ciA9IGxvYWRlci0+aWRlbnRpZmllcigpOwotICAgIG1fbG9hZGVycy5hZGQoaWRlbnRpZmllciwg
V1RGTW92ZShsb2FkZXIpKTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzY3JpcHRM
b2FkRmFpbGVkKFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYgbG9hZGVyKQotewotICAgIEFjdGl2
ZURPTU9iamVjdDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KGxvYWRlci53b3JrZXIoKSwgVGFz
a1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJv
ckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7
Ci0gICAgbV9sb2FkZXJzLnJlbW92ZShsb2FkZXIuaWRlbnRpZmllcigpKTsKLX0KLQotdm9pZCBT
aGFyZWRXb3JrZXJNYW5hZ2VyOjpzY3JpcHRMb2FkZWRTdWNjZXNzZnVsbHkoU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyJiBsb2FkZXIsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc2NyaXB0QnVmZmVyLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBTaGFyZWRXb3Jr
ZXImIHNoYXJlZFdvcmtlciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHRyYW5zZmVycmVkUG9y
dCkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8mIHdvcmtlciA9
IGxvYWRlci53b3JrZXIoKTsKLSAgICBhdXRvJiBvcHRpb25zID0gbG9hZGVyLm9wdGlvbnMoKTsK
LQotICAgIGF1dG8mIHByb3h5ID0gc2hhcmVkV29ya2VyLnByb3h5KCk7Ci0KLSAgICBwcm94eS5z
dGFydFdvcmtlckdsb2JhbFNjb3BlKAotICAgICAgICBsb2FkZXIudXJsKCksCi0gICAgICAgIG9w
dGlvbnMubmFtZSwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC51c2VyQWdlbnQobG9h
ZGVyLnVybCgpKSwKLSAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5
KCktPmlzT25MaW5lKCksCi0gICAgICAgIHNjcmlwdEJ1ZmZlciwKLSAgICAgICAgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+cmVzcG9uc2VIZWFkZXJzKCks
Ci0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29u
dGVudFNlY3VyaXR5UG9saWN5KCksCi0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3Jv
c3NPcmlnaW5FbWJlZGRlclBvbGljeSgpLAotICAgICAgICB3b3JrZXIuY3JlYXRpb25UaW1lKCks
Ci0gICAgICAgIFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZywKLSAgICAgICAgb3B0aW9ucy50
eXBlLAotICAgICAgICBvcHRpb25zLmNyZWRlbnRpYWxzLAotICAgICAgICB3b3JrZXIucnVudGlt
ZUZsYWdzKCkKLSAgICApOwotICAgIGlmICghcHJveHkudGhyZWFkKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaXM8RG9j
dW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsKLSAgICBhdXRvIHNvdXJjZU9yaWdpbiA9
IGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5zZWN1cml0eU9yaWdp
bigpLnRvU3RyaW5nKCk7Ci0KLSAgICBwcm94eS50aHJlYWQoKS0+cnVuTG9vcCgpLnBvc3RUYXNr
KFt0cmFuc2ZlcnJlZFBvcnQgPSBXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCksIHNvdXJjZU9yaWdp
biA9IFdURk1vdmUoc291cmNlT3JpZ2luKS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQpIG11dGFibGUgewotICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKLQotICAgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFn
ZS93b3JrZXJzLmh0bWwjZG9tLXNoYXJlZHdvcmtlciBzdGVwIDExLjUKLSAgICAgICAgYXV0byBz
ZXJpYWxpemVkU2NyaXB0VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgiIik7
Ci0gICAgICAgIEFTU0VSVChzZXJpYWxpemVkU2NyaXB0VmFsdWUpOwotICAgICAgICBhdXRvIHBv
cnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
eyBXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCkgfSk7Ci0gICAgICAgIEFTU0VSVChwb3J0cy5zaXpl
KCkgPT0gMSk7Ci0gICAgICAgIGF1dG8gcG9ydCA9IHBvcnRzWzBdOwotICAgICAgICBBU1NFUlQo
cG9ydCk7Ci0gICAgICAgIGF1dG8gZXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3Zl
KHBvcnRzKSwgc2VyaWFsaXplZFNjcmlwdFZhbHVlLnJlbGVhc2VOb25OdWxsKCksIHNvdXJjZU9y
aWdpbiwgeyB9LCBwb3J0KTsKLSAgICAgICAgZXZlbnQtPmluaXRFdmVudChldmVudE5hbWVzKCku
Y29ubmVjdEV2ZW50LCBmYWxzZSwgZmFsc2UpOwotCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaXM8U2hhcmVkV29ya2VyR2xvYmFsU2NvcGU+KHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpKTsKLSAgICAgICAgYXV0byYgd29ya2VyR2xvYmFsU2NvcGUgPSBk
b3duY2FzdDxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7
Ci0gICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLmRpc3BhdGNoRXZlbnQoV1RGTW92ZShldmVudCkp
OwotICAgIH0pOwotCi0gICAgbV9sb2FkZXJzLnJlbW92ZShsb2FkZXIuaWRlbnRpZmllcigpKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmRiZDM4MTU5MmYyNgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5o
IgorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXJyb3JFdmVudC5o
IgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRCdWZmZXIuaCIKKyNpbmNs
dWRlICJTaGFyZWRXb3JrZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIu
aCIKKyNpbmNsdWRlICJXb3JrZXJGZXRjaFJlc3VsdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKKyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0co
U2hhcmVkV29ya2VyLCAiJXAgLSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjoiIGZtdCwg
dGhpcywgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJP
UihmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoU2hhcmVkV29ya2VyLCAiJXAgLSBTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKworc3Rh
dGljIHVpbnQ2NF90IGxvYWRlcklkZW50aWZpZXJTZWVkID0gMDsKKworU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbjo6U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpID0gZGVmYXVsdDsK
KworU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6flNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24oKSA9IGRlZmF1bHQ7CisKK3ZvaWQgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6
ZmV0Y2hTY3JpcHRJbkNsaWVudChVUkwmJiB1cmwsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV29ya2VyT3B0aW9ucyYm
IHdvcmtlck9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hS
ZXN1bHQmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworCisgICAgYXV0byogd29ya2VyT2JqZWN0ID0gU2hhcmVkV29ya2VyOjpmcm9tSWRlbnRp
ZmllcihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBDT05ORUNUSU9OX1JFTEVB
U0VfTE9HKCJmZXRjaFNjcmlwdEluQ2xpZW50OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
PSV7cHVibGljfXMsIHdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9T
dHJpbmcoKS51dGY4KCkuZGF0YSgpLCB3b3JrZXJPYmplY3QpOworICAgIGlmICghd29ya2VyT2Jq
ZWN0KQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKworICAgIGF1dG8g
bG9hZGVySWRlbnRpZmllciA9ICsrbG9hZGVySWRlbnRpZmllclNlZWQ7CisgICAgYXV0byBsb2Fk
ZXIgPSBtYWtlVW5pcXVlUmVmPFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj4oV1RGTW92ZSh1cmwp
LCAqd29ya2VyT2JqZWN0LCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMpKTsKKyAgICBhdXRvIGxvYWRl
clB0ciA9IGxvYWRlci5wdHIoKTsKKyAgICBtX2xvYWRlcnMuYWRkKGxvYWRlcklkZW50aWZpZXIs
IFdURk1vdmUobG9hZGVyKSk7CisKKyAgICBsb2FkZXJQdHItPmxvYWQoW3RoaXMsIGxvYWRlcklk
ZW50aWZpZXIsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KGNvbnN0IFdvcmtlckZldGNoUmVzdWx0JiBmZXRjaFJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAg
IENPTk5FQ1RJT05fUkVMRUFTRV9MT0coImZldGNoU2NyaXB0SW5DbGllbnQ6IGZpbmlzaGVkIHNj
cmlwdCBsb2FkLCBzdWNjZXNzPSVkIiwgZmV0Y2hSZXN1bHQuZXJyb3IuaXNOdWxsKCkpOworICAg
ICAgICBhdXRvIGxvYWRlciA9IG1fbG9hZGVycy50YWtlKGxvYWRlcklkZW50aWZpZXIpOworICAg
ICAgICBBU1NFUlQobG9hZGVyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmV0Y2hSZXN1
bHQpOworICAgIH0pOworfQorCit2b2lkIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Om5v
dGlmeVdvcmtlck9iamVjdE9mTG9hZEZhaWx1cmUoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgYXV0byogd29ya2VyT2JqZWN0ID0gU2hhcmVkV29ya2VyOjpm
cm9tSWRlbnRpZmllcihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBDT05ORUNU
SU9OX1JFTEVBU0VfTE9HX0VSUk9SKCJub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRGYWlsdXJlOiBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMsIHdvcmtlcj0lcCIsIHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB3b3JrZXJP
YmplY3QpOworICAgIGlmICh3b3JrZXJPYmplY3QpCisgICAgICAgIHdvcmtlck9iamVjdC0+ZGlk
RmFpbExvYWRpbmcoKTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpw
b3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwg
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgYXV0byogd29ya2VyT2JqZWN0
ID0gU2hhcmVkV29ya2VyOjpmcm9tSWRlbnRpZmllcihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyKTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKCJwb3N0RXhjZXB0aW9uVG9X
b3JrZXJPYmplY3Q6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cywgd29y
a2VyPSVwIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5k
YXRhKCksIHdvcmtlck9iamVjdCk7CisgICAgaWYgKHdvcmtlck9iamVjdCkKKyAgICAgICAgQWN0
aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKndvcmtlck9iamVjdCwgVGFz
a1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFcnJvckV2ZW50OjpjcmVhdGUoZXJyb3JNZXNzYWdl
LCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgeyB9KSk7Cit9CisKKyN1bmRl
ZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19F
UlJPUgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41MTkxMWQ0YTE2N2QKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaCIKKyNpbmNsdWRlICJT
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVzc2FnZVBvcnQ7CitjbGFzcyBTaGFyZWRX
b3JrZXJTY3JpcHRMb2FkZXI7CisKK3N0cnVjdCBDbGllbnRPcmlnaW47CitzdHJ1Y3QgV29ya2Vy
RmV0Y2hSZXN1bHQ7CitzdHJ1Y3QgV29ya2VyT3B0aW9uczsKKworY2xhc3MgU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24+IHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5TaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFNoYXJl
ZFdvcmtlcihjb25zdCBDbGllbnRPcmlnaW4mLCBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LCBjb25zdCBVUkwmLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIGNvbnN0IFdvcmtlck9wdGlv
bnMmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5
KFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpID0gMDsKKworcHJvdGVjdGVkOgorICAgIC8v
IElQQyBtZXNzYWdlcy4KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZldGNoU2NyaXB0SW5DbGll
bnQoVVJMJiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdvcmtlck9w
dGlvbnMmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYp
PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZh
aWx1cmUoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoU2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisKKyAgICBXRUJD
T1JFX0VYUE9SVCBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCk7CisKK3ByaXZhdGU6Cisg
ICAgSGFzaE1hcDx1aW50NjRfdCwgVW5pcXVlUmVmPFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj4+
IG1fbG9hZGVyczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmViY2Q0YTdh
ZTg3YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1No
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJQcm9jZXNzUXVhbGlmaWVkLmgiCisjaW5jbHVk
ZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVt
IFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIgPSBQcm9jZXNzUXVhbGlmaWVkPE9iamVjdElkZW50aWZpZXI8U2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllclR5cGU+PjsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
UHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
UHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmQ4
ZTE5N2ZhMjQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyUHJvdmlkZXIuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgU2hhcmVkV29ya2VyUHJvdmlkZXIqIHNo
YXJlZFByb3ZpZGVyOworCisvLyBGb3IgV2ViS2l0TGVnYWN5LgorY2xhc3MgRHVtbXlTaGFyZWRX
b3JrZXJQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBTaGFyZWRXb3JrZXJQcm92aWRlciB7CitwdWJs
aWM6CisgICAgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiogc2hhcmVkV29ya2VyQ29ubmVj
dGlvbigpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KK307CisKK1NoYXJlZFdvcmtlclByb3Zp
ZGVyJiBTaGFyZWRXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBpZiAoIXNoYXJl
ZFByb3ZpZGVyKQorICAgICAgICBzaGFyZWRQcm92aWRlciA9IG5ldyBEdW1teVNoYXJlZFdvcmtl
clByb3ZpZGVyOworICAgIHJldHVybiAqc2hhcmVkUHJvdmlkZXI7Cit9CisKK3ZvaWQgU2hhcmVk
V29ya2VyUHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKFNoYXJlZFdvcmtlclByb3ZpZGVyJiBu
ZXdQcm92aWRlcikKK3sKKyAgICBSRUxFQVNFX0FTU0VSVCghc2hhcmVkUHJvdmlkZXIpOworICAg
IHNoYXJlZFByb3ZpZGVyID0gJm5ld1Byb3ZpZGVyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQ
cm92aWRlci5oCnNpbWlsYXJpdHkgaW5kZXggNjQlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuaApyZW5hbWUgdG8gU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJvdmlkZXIuaAppbmRleCBhZWY4Mjc5
MDM1ODQuLmNiNTdjYzFlN2I1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDI2ICsyNSwxNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIk1lc3NhZ2VQb3J0SWRlbnRpZmllci5oIgotI2luY2x1ZGUgIlNoYXJlZFdv
cmtlclNjcmlwdExvYWRlci5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJl
ZFdvcmtlcjsKLWNsYXNzIFNjcmlwdEJ1ZmZlcjsKLXN0cnVjdCBXb3JrZXJPcHRpb25zOwotdXNp
bmcgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpNZXNzYWdlUG9y
dElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllcj47CitjbGFzcyBTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOwogCi1jbGFzcyBTaGFyZWRXb3JrZXJNYW5hZ2VyIHsK
K2NsYXNzIFNoYXJlZFdvcmtlclByb3ZpZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgU2hhcmVk
V29ya2VyTWFuYWdlciYgc2luZ2xldG9uKCk7Ci0gICAgdm9pZCBjb25uZWN0KGNvbnN0IFVSTCYs
IFNoYXJlZFdvcmtlciYsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgV29ya2VyT3B0aW9ucyYm
KTsKLQotICAgIHZvaWQgc2NyaXB0TG9hZEZhaWxlZChTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIm
KTsKLSAgICB2b2lkIHNjcmlwdExvYWRlZFN1Y2Nlc3NmdWxseShTaGFyZWRXb3JrZXJTY3JpcHRM
b2FkZXImLCBjb25zdCBTY3JpcHRCdWZmZXImLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgU2hh
cmVkV29ya2VyJiwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmKTsKKyAgICBzdGF0aWMgU2hhcmVk
V29ya2VyUHJvdmlkZXImIHNpbmdsZXRvbigpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIHNldFNoYXJlZFByb3ZpZGVyKFNoYXJlZFdvcmtlclByb3ZpZGVyJik7CiAKLXByaXZhdGU6
Ci0gICAgSGFzaE1hcDxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXJJZGVudGlmaWVyLCBVbmlxdWVS
ZWY8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPj4gbV9sb2FkZXJzOworICAgIHZpcnR1YWwgflNo
YXJlZFdvcmtlclByb3ZpZGVyKCkgeyB9CisgICAgdmlydHVhbCBTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uKiBzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCkgPSAwOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VyUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyUHJveHkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYmUwNzUz
Zjg5MWQuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9T
aGFyZWRXb3JrZXJQcm94eS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzMgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJQcm94
eS5oIgotCi0jaW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKLSNpbmNsdWRlICJFcnJv
ckV2ZW50LmgiCi0jaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkxpYldlYlJUQ1By
b3ZpZGVyLmgiCi0jaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCi0jaW5jbHVkZSAiTWVzc2FnZVBv
cnQuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgotI2luY2x1ZGUg
IlNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFk
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU2hhcmVkV29ya2VyUHJveHk6OlNoYXJlZFdv
cmtlclByb3h5KFNoYXJlZFdvcmtlciYgc2hhcmVkV29ya2VyKQotICAgIDogbV9zaGFyZWRXb3Jr
ZXIoc2hhcmVkV29ya2VyKQotICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KHNoYXJlZFdv
cmtlci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgLCBtX2lkZW50aWZpZXJGb3JJbnNw
ZWN0b3Ioc2hhcmVkV29ya2VyLmlkZW50aWZpZXJGb3JJbnNwZWN0b3IoKSkKLXsKLX0KLQotdm9p
ZCBTaGFyZWRXb3JrZXJQcm94eTo6c3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNj
cmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9v
bCBpc09ubGluZSwgY29uc3QgU2NyaXB0QnVmZmVyJiBzY3JpcHRCdWZmZXIsIGNvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBv
bGljeSwgY29uc3QgQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSYgY3Jvc3NPcmlnaW5FbWJlZGRl
clBvbGljeSwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBSZWZlcnJlclBvbGljeSByZWZlcnJl
clBvbGljeSwgV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RDcmVkZW50aWFscyBj
cmVkZW50aWFscywgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKQotewotICAgIGlmICht
X2Fza2VkVG9UZXJtaW5hdGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gcGFyYW1ldGVy
cyA9IFdvcmtlclBhcmFtZXRlcnMgewotICAgICAgICBzY3JpcHRVUkwsCi0gICAgICAgIG5hbWUs
Ci0gICAgICAgIG1faWRlbnRpZmllckZvckluc3BlY3RvciwKLSAgICAgICAgdXNlckFnZW50LAot
ICAgICAgICBpc09ubGluZSwKLSAgICAgICAgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VI
ZWFkZXJzLAotICAgICAgICBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xp
Y3ksCi0gICAgICAgIGNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ksCi0gICAgICAgIHRpbWVPcmln
aW4sCi0gICAgICAgIHJlZmVycmVyUG9saWN5LAotICAgICAgICB3b3JrZXJUeXBlLAotICAgICAg
ICBjcmVkZW50aWFscywKLSAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZXR0aW5n
c1ZhbHVlcygpCi0gICAgfTsKLQotICAgIGlmICghbV93b3JrZXJUaHJlYWQpIHsKLSAgICAgICAg
bV93b3JrZXJUaHJlYWQgPSBTaGFyZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBz
Y3JpcHRCdWZmZXIsICp0aGlzLCAqdGhpcywgKnRoaXMsIFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6
Tm9ybWFsLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnRvcE9yaWdpbigpLCBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmlkYkNvbm5lY3Rpb25Qcm94eSgpLCBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPnNvY2tldFByb3ZpZGVyKCksIHJ1bnRpbWVGbGFncyk7Ci0gICAgICAgIG1fd29ya2Vy
VGhyZWFkLT5zdGFydCgpOwotICAgIH0KLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6dGVy
bWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKQotewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIG1fYXNrZWRUb1Rlcm1pbmF0ZSA9IHRydWU7Ci0gICAg
aWYgKG1fd29ya2VyVGhyZWFkKQotICAgICAgICBtX3dvcmtlclRocmVhZC0+c3RvcChudWxscHRy
KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2Jh
bFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSkKLXsKLSAgICAvLyBGSVhN
RTogU2hhcmVkV29ya2VyIGRvZXNuJ3QgaGF2ZSBwb3N0TWVzc2FnZSwgc28gdGhpcyBtaWdodCBu
b3QgYmUgbmVjZXNzYXJ5LgotICAgIHBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShbbWVzc2Fn
ZSA9IFdURk1vdmUobWVzc2FnZSldKGF1dG8mIHNjcmlwdENvbnRleHQpIG11dGFibGUgewotICAg
ICAgICBhdXRvJiBjb250ZXh0ID0gZG93bmNhc3Q8U2hhcmVkV29ya2VyR2xvYmFsU2NvcGU+KHNj
cmlwdENvbnRleHQpOwotICAgICAgICBhdXRvIHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xl
UG9ydHMoc2NyaXB0Q29udGV4dCwgV1RGTW92ZShtZXNzYWdlLnRyYW5zZmVycmVkUG9ydHMpKTsK
LSAgICAgICAgY29udGV4dC5kaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1v
dmUocG9ydHMpLCBtZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSkpOwotICAgIH0pOwot
fQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5Ojpwb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUo
RnVuY3Rpb248dm9pZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+JiYgdGFzaykKLXsKLSAgICBp
ZiAobV9hc2tlZFRvVGVybWluYXRlKQotICAgICAgICByZXR1cm47Ci0gICAgbV93b3JrZXJUaHJl
YWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhXVEZNb3ZlKHRhc2spKTsKLX0KLQotYm9vbCBTaGFyZWRX
b3JrZXJQcm94eTo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9o
YXNQZW5kaW5nQWN0aXZpdHkgJiYgIW1fYXNrZWRUb1Rlcm1pbmF0ZTsKLX0KLQotdm9pZCBTaGFy
ZWRXb3JrZXJQcm94eTo6d29ya2VyT2JqZWN0RGVzdHJveWVkKCkKLXsKLSAgICBtX3NoYXJlZFdv
cmtlciA9IG51bGxwdHI7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhb
dGhpc10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0gICAgICAgIG1fbWF5QmVEZXN0cm95
ZWQgPSB0cnVlOwotICAgICAgICBpZiAobV93b3JrZXJUaHJlYWQpCi0gICAgICAgICAgICB0ZXJt
aW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB3b3Jr
ZXJHbG9iYWxTY29wZURlc3Ryb3llZEludGVybmFsKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2hh
cmVkV29ya2VyUHJveHk6Om5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25saW5lKQot
ewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
ICghbV93b3JrZXJUaHJlYWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fd29ya2VyVGhyZWFk
LT5ydW5Mb29wKCkucG9zdFRhc2soW2lzT25saW5lXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgewotICAgICAgICBhdXRvJiBnbG9iYWxTY29wZSA9IGRvd25jYXN0PFdvcmtlckds
b2JhbFNjb3BlPihjb250ZXh0KTsKLSAgICAgICAgZ2xvYmFsU2NvcGUuc2V0SXNPbmxpbmUoaXNP
bmxpbmUpOwotICAgICAgICBnbG9iYWxTY29wZS5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUo
aXNPbmxpbmUgPyBldmVudE5hbWVzKCkub25saW5lRXZlbnQgOiBldmVudE5hbWVzKCkub2ZmbGlu
ZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsK
LSAgICB9KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6c3VzcGVuZEZvckJhY2tGb3J3
YXJkQ2FjaGUoKQotewotCi19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnJlc3VtZUZvckJh
Y2tGb3J3YXJkQ2FjaGUoKQotewotCi19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnBvc3RF
eGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQotewot
ICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXMsIGVycm9yTWVzc2Fn
ZSA9IGVycm9yTWVzc2FnZS5pc29sYXRlZENvcHkoKSwgc291cmNlVVJMID0gc291cmNlVVJMLmlz
b2xhdGVkQ29weSgpLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXJdIChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JikgewotICAgICAgICBpZiAoIW1fc2hhcmVkV29ya2VyKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIC8vIFdlIGRvbid0IGJvdGhlciBjaGVja2luZyB0aGUgYXNrZWRUb1Rl
cm1pbmF0ZSgpIGZsYWcgaGVyZSwgYmVjYXVzZSBleGNlcHRpb25zIHNob3VsZCAqYWx3YXlzKiBi
ZSByZXBvcnRlZCBldmVuIGlmIHRoZSB0aHJlYWQgaXMgdGVybWluYXRlZC4KLSAgICAgICAgLy8g
VGhpcyBpcyBpbnRlbnRpb25hbGx5IGRpZmZlcmVudCB0aGFuIHRoZSBiZWhhdmlvciBpbiBNZXNz
YWdlV29ya2VyVGFzaywgYmVjYXVzZSB0ZXJtaW5hdGVkIHdvcmtlcnMgbm8gbG9uZ2VyIGRlbGl2
ZXIgbWVzc2FnZXMgKHNlY3Rpb24gNC42IG9mIHRoZSBXZWJXb3JrZXIgc3BlYyksIGJ1dCB0aGV5
IGRvIHJlcG9ydCBleGNlcHRpb25zLgotICAgICAgICBBY3RpdmVET01PYmplY3Q6OnF1ZXVlVGFz
a1RvRGlzcGF0Y2hFdmVudCgqbV9zaGFyZWRXb3JrZXIsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxh
dGlvbiwgRXJyb3JFdmVudDo6Y3JlYXRlKGVycm9yTWVzc2FnZSwgc291cmNlVVJMLCBsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIHsgfSkpOwotICAgIH0pOwotfQotCi12b2lkIFNoYXJlZFdvcmtl
clByb3h5Ojp3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgpCi17Ci0gICAgbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpc10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7
Ci0gICAgICAgIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwoKTsKLSAgICB9KTsK
LX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChN
ZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKQotewotCi19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJv
eHk6OmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sKQotewotfQotCi12b2lkIFNo
YXJlZFdvcmtlclByb3h5OjpyZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCBoYXNQZW5kaW5nQWN0
aXZpdHkpCi17Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpcywg
aGFzUGVuZGluZ0FjdGl2aXR5XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKLSAgICAgICAg
bV9oYXNQZW5kaW5nQWN0aXZpdHkgPSBoYXNQZW5kaW5nQWN0aXZpdHk7Ci0gICAgfSk7Ci19Ci0K
LVJlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBTaGFyZWRXb3JrZXJQcm94eTo6Y3JlYXRl
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0KTsKLSAgICByZXR1cm4gZG9jdW1lbnQucGFnZSgpLT5jYWNoZVN0b3JhZ2VQcm92
aWRlcigpLmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKTsKLX0KLQotUmVmUHRyPFJUQ0Rh
dGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24+IFNoYXJlZFdvcmtlclByb3h5OjpjcmVh
dGVSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCkKLXsKLSAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+
KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIGlmICghZG9jdW1lbnQucGFnZSgpKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gZG9jdW1lbnQucGFnZSgpLT5saWJX
ZWJSVENQcm92aWRlcigpLmNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rp
b24oKTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdFRhc2tUb0xvYWRlcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykKLXsKLSAgICBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPnBvc3RUYXNrKFdURk1vdmUodGFzaykpOwotfQotCi1ib29sIFNoYXJlZFdvcmtl
clByb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCi17Ci0g
ICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
bV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoV1RGTW92ZSh0YXNrKSwg
bW9kZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnBv
c3RNZXNzYWdlVG9EZWJ1Z2dlcihjb25zdCBTdHJpbmcmKQotewotCi19Ci0KLXZvaWQgU2hhcmVk
V29ya2VyUHJveHk6OnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNwZWN0b3IoYm9v
bCkKLXsKLQotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5Ojp3b3JrZXJHbG9iYWxTY29wZURl
c3Ryb3llZEludGVybmFsKCkKLXsKLSAgICAvLyBUaGlzIGlzIGFsd2F5cyB0aGUgbGFzdCB0YXNr
IHRvIGJlIHBlcmZvcm1lZCwgc28gdGhlIHByb3h5IGlzIG5vdCBuZWVkZWQgZm9yIGNvbW11bmlj
YXRpb24KLSAgICAvLyBpbiBlaXRoZXIgc2lkZSBhbnkgbW9yZS4gSG93ZXZlciwgdGhlIFdvcmtl
ciBvYmplY3QgbWF5IHN0aWxsIGV4aXN0LCBhbmQgaXQgYXNzdW1lcyB0aGF0IHRoZSBwcm94eSBl
eGlzdHMsIHRvby4KLSAgICBtX2Fza2VkVG9UZXJtaW5hdGUgPSB0cnVlOwotICAgIG1fd29ya2Vy
VGhyZWFkID0gbnVsbHB0cjsKLQotICAgIC8vIFRoaXMgYmFsYW5jZXMgdGhlIG9yaWdpbmFsIHJl
ZiBpbiBjb25zdHJ1Y3Rpb24uCi0gICAgaWYgKG1fbWF5QmVEZXN0cm95ZWQpCi0gICAgICAgIGRl
cmVmKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmlu
ZGV4IDMxMWViZDYwNzhiYy4uZWEyZTA0OGM3NjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjks
MjMgKzI5LDI2IEBACiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgotI2luY2x1ZGUg
IlNoYXJlZFdvcmtlck1hbmFnZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJGZXRjaFJlc3VsdC5oIgog
I2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRMb2FkZXIu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OlNo
YXJlZFdvcmtlclNjcmlwdExvYWRlcihjb25zdCBVUkwmIHVybCwgU2hhcmVkV29ya2VyJiB3b3Jr
ZXIsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBXb3JrZXJPcHRpb25zJiYgb3B0aW9u
cykKLSAgICA6IG1faWRlbnRpZmllcihTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXJJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpKQotICAgICwgbV9vcHRpb25zKFdURk1vdmUob3B0aW9ucykpCitTaGFyZWRX
b3JrZXJTY3JpcHRMb2FkZXI6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRlcihVUkwmJiB1cmwsIFNo
YXJlZFdvcmtlciYgd29ya2VyLCBXb3JrZXJPcHRpb25zJiYgb3B0aW9ucykKKyAgICA6IG1fb3B0
aW9ucyhXVEZNb3ZlKG9wdGlvbnMpKQogICAgICwgbV93b3JrZXIod29ya2VyKQotICAgICwgbV9w
b3J0KFdURk1vdmUocG9ydCkpCiAgICAgLCBtX2xvYWRlcihXb3JrZXJTY3JpcHRMb2FkZXI6OmNy
ZWF0ZSgpKQotICAgICwgbV9wZW5kaW5nQWN0aXZpdHkod29ya2VyLm1ha2VQZW5kaW5nQWN0aXZp
dHkod29ya2VyKSkKLSAgICAsIG1fdXJsKHVybCkKKyAgICAsIG1fdXJsKFdURk1vdmUodXJsKSkK
IHsKLSAgICBtX3dvcmtlci0+c2V0SXNMb2FkaW5nKHRydWUpOwotICAgIG1fbG9hZGVyLT5sb2Fk
QXN5bmNocm9ub3VzbHkoKndvcmtlci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFJlc291cmNl
UmVxdWVzdCh1cmwpLCB3b3JrZXIud29ya2VyRmV0Y2hPcHRpb25zKG9wdGlvbnMsIEZldGNoT3B0
aW9uczo6RGVzdGluYXRpb246OlNoYXJlZHdvcmtlciksIENvbnRlbnRTZWN1cml0eVBvbGljeUVu
Zm9yY2VtZW50OjpFbmZvcmNlV29ya2VyU3JjRGlyZWN0aXZlLCBTZXJ2aWNlV29ya2Vyc01vZGU6
OkFsbCwgKnRoaXMsIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOworfQorCit2b2lkIFNo
YXJlZFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFdvcmtlckZldGNoUmVzdWx0Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJU
KCFtX2NvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBtX2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBtX2xvYWRlci0+bG9hZEFzeW5jaHJvbm91c2x5
KCptX3dvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBSZXNvdXJjZVJlcXVlc3QobV91
cmwpLCBtX3dvcmtlci0+d29ya2VyRmV0Y2hPcHRpb25zKG1fb3B0aW9ucywgRmV0Y2hPcHRpb25z
OjpEZXN0aW5hdGlvbjo6U2hhcmVkd29ya2VyKSwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3Jj
ZW1lbnQ6OkVuZm9yY2VXb3JrZXJTcmNEaXJlY3RpdmUsIFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxs
LCAqdGhpcywgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiB9CiAKIHZvaWQgU2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQpAQCAtNTUsMTYgKzU4
LDEyIEBAIHZvaWQgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50CiAKIHZvaWQgU2hhcmVkV29ya2VyU2NyaXB0
TG9hZGVyOjpub3RpZnlGaW5pc2hlZCgpCiB7Ci0gICAgbV93b3JrZXItPnNldElzTG9hZGluZyhm
YWxzZSk7CisgICAgaWYgKG1fbG9hZGVyLT5mYWlsZWQoKSkKKyAgICAgICAgcmV0dXJuIG1fY29t
cGxldGlvbkhhbmRsZXIod29ya2VyRmV0Y2hFcnJvcihtX2xvYWRlci0+ZXJyb3IoKSkpOwogCi0g
ICAgYXV0byogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IG1fd29ya2VyLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7Ci0gICAgaWYgKG1fbG9hZGVyLT5mYWlsZWQoKSB8fCAhc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCkgewotICAgICAgICBtX3dvcmtlci0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6
OklzQ2FuY2VsYWJsZTo6WWVzKSk7Ci0gICAgICAgIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNpbmds
ZXRvbigpLnNjcmlwdExvYWRGYWlsZWQoKnRoaXMpOyAvLyBkZWxldGVzIHRoaXMuCi0gICAgfSBl
bHNlIHsKKyAgICBpZiAoYXV0byogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IG1fd29ya2VyLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6c2NyaXB0SW1wb3J0ZWQoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG1fbG9hZGVyLT5pZGVu
dGlmaWVyKCksIG1fbG9hZGVyLT5zY3JpcHQoKS50b1N0cmluZygpKTsKLSAgICAgICAgU2hhcmVk
V29ya2VyTWFuYWdlcjo6c2luZ2xldG9uKCkuc2NyaXB0TG9hZGVkU3VjY2Vzc2Z1bGx5KCp0aGlz
LCBtX2xvYWRlci0+c2NyaXB0KCksICptX3dvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBtX3dvcmtlci5nZXQoKSwgc3RkOjpleGNoYW5nZShtX3BvcnQsIHsgfSkpOyAvLyBkZWxldGVz
IHRoaXMuCi0gICAgfQorICAgIG1fY29tcGxldGlvbkhhbmRsZXIoeyBtX2xvYWRlci0+c2NyaXB0
KCksIG1fbG9hZGVyLT5jZXJ0aWZpY2F0ZUluZm8oKSwgbV9sb2FkZXItPmNvbnRlbnRTZWN1cml0
eVBvbGljeSgpLCBtX2xvYWRlci0+Y3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSgpLCBtX2xvYWRl
ci0+cmVmZXJyZXJQb2xpY3koKSwgeyB9IH0pOyAvLyBkZWxldGVzIHRoaXMuCiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgKaW5kZXggYmYxZDRhZWYzYTA5Li5lYjBi
NzE0NWJmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlclNjcmlwdExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydElk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCkBAIC0zOCwzMyArMzcsMjggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBTaGFyZWRXb3JrZXI7CiBjbGFzcyBXb3JrZXJTY3JpcHRMb2FkZXI7
Ci0KLWNsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjsKLXVzaW5nIFNoYXJlZFdvcmtlclNj
cmlwdExvYWRlcklkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFNoYXJlZFdvcmtlclNjcmlw
dExvYWRlcj47Ci0KLXVzaW5nIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQgPSBzdGQ6OnBhaXI8V2Vi
Q29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZp
ZXI+Oworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0OwogCiBjbGFzcyBTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXIgOiBwcml2YXRlIFdvcmtlclNjcmlwdExvYWRlckNsaWVudCB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVy
KGNvbnN0IFVSTCYsIFNoYXJlZFdvcmtlciYsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgV29y
a2VyT3B0aW9ucyYmKTsKKyAgICBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIoVVJMJiYsIFNoYXJl
ZFdvcmtlciYsIFdvcmtlck9wdGlvbnMmJik7CisKKyAgICB2b2lkIGxvYWQoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYpPiYmKTsKIAotICAgIFNoYXJlZFdv
cmtlclNjcmlwdExvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
aWRlbnRpZmllcjsgfQogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7
IH0KICAgICBTaGFyZWRXb3JrZXImIHdvcmtlcigpIHsgcmV0dXJuIG1fd29ya2VyLmdldCgpOyB9
Ci0gICAgY29uc3QgV29ya2VyT3B0aW9ucyYgb3B0aW9ucygpIHsgcmV0dXJuIG1fb3B0aW9uczsg
fQorICAgIGNvbnN0IFdvcmtlck9wdGlvbnMmIG9wdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX29w
dGlvbnM7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKICAgICB2
b2lkIG5vdGlmeUZpbmlzaGVkKCkgZmluYWw7CiAKLSAgICBjb25zdCBTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBjb25zdCBXb3JrZXJPcHRpb25z
IG1fb3B0aW9uczsKICAgICBjb25zdCBSZWY8U2hhcmVkV29ya2VyPiBtX3dvcmtlcjsKLSAgICBU
cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0IG1fcG9ydDsKICAgICBjb25zdCBSZWY8V29ya2VyU2NyaXB0
TG9hZGVyPiBtX2xvYWRlcjsKLSAgICBjb25zdCBSZWY8QWN0aXZlRE9NT2JqZWN0OjpQZW5kaW5n
QWN0aXZpdHk8U2hhcmVkV29ya2VyPj4gbV9wZW5kaW5nQWN0aXZpdHk7CiAgICAgY29uc3QgVVJM
IG1fdXJsOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1
bHQmKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclRo
cmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJUaHJl
YWQuY3BwCmluZGV4IDllZDU1ODhmYmQ3OS4uZWZlMDVlMjdjMTVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclRocmVhZC5jcHAKQEAgLTMx
LDE0ICszMSwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZFdvcmtlclRocmVh
ZDo6U2hhcmVkV29ya2VyVGhyZWFkKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFtZXRlcnMs
IGNvbnN0IFNjcmlwdEJ1ZmZlciYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmIGxvYWRl
clByb3h5LCBXb3JrZXJEZWJ1Z2dlclByb3h5JiBkZWJ1Z2dlclByb3h5LCBXb3JrZXJPYmplY3RQ
cm94eSYgb2JqZWN0UHJveHksIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0
IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5
KiBjb25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlciwgSlNDOjpS
dW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKQorU2hhcmVkV29ya2VyVGhyZWFkOjpTaGFyZWRXb3Jr
ZXJUaHJlYWQoU2hhcmVkV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBXb3JrZXJQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBTY3JpcHRCdWZmZXImIHNvdXJjZUNvZGUsIFdv
cmtlckxvYWRlclByb3h5JiBsb2FkZXJQcm94eSwgV29ya2VyRGVidWdnZXJQcm94eSYgZGVidWdn
ZXJQcm94eSwgV29ya2VyT2JqZWN0UHJveHkmIG9iamVjdFByb3h5LCBXb3JrZXJUaHJlYWRTdGFy
dE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBJREJDbGll
bnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciog
c29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncykKICAgICA6IFdv
cmtlclRocmVhZChwYXJhbWV0ZXJzLCBzb3VyY2VDb2RlLCBsb2FkZXJQcm94eSwgZGVidWdnZXJQ
cm94eSwgb2JqZWN0UHJveHksIHN0YXJ0TW9kZSwgdG9wT3JpZ2luLCBjb25uZWN0aW9uUHJveHks
IHNvY2tldFByb3ZpZGVyLCBydW50aW1lRmxhZ3MpCisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRp
ZmllcikKICAgICAsIG1fbmFtZShwYXJhbWV0ZXJzLm5hbWUuaXNvbGF0ZWRDb3B5KCkpCiB7Cisg
ICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBTaGFyZWRXb3JrZXJUaHJlYWQ6OlNo
YXJlZFdvcmtlclRocmVhZDoiLCB0aGlzKTsKIH0KIAogUmVmPFdvcmtlckdsb2JhbFNjb3BlPiBT
aGFyZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFdvcmtlclBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIFJlZjxT
ZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4pCiB7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29y
a2VyLCAiJXAgLSBTaGFyZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlOiIs
IHRoaXMpOwogICAgIHJldHVybiBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlKHN0ZDo6
ZXhjaGFuZ2UobV9uYW1lLCB7IH0pLCBwYXJhbWV0ZXJzLCBXVEZNb3ZlKG9yaWdpbiksICp0aGlz
LCBXVEZNb3ZlKHRvcE9yaWdpbiksIGlkYkNvbm5lY3Rpb25Qcm94eSgpLCBzb2NrZXRQcm92aWRl
cigpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXJUaHJlYWQuaAppbmRleCAyZjA1NmY5ZDU5YmIuLjllYTI0ODQ3ZDM4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyVGhyZWFkLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyVGhyZWFkLmgKQEAg
LTI1LDIxICsyNSwyNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlNoYXJlZFdvcmtl
cklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBXb3JrZXJPYmplY3RQcm94eTsKIAorLy8gRklYTUU6IE1vdmUgdG8g
d29ya2Vycy9zaGFyZWQvY29udGV4dC4KIGNsYXNzIFNoYXJlZFdvcmtlclRocmVhZCA6IHB1Ymxp
YyBXb3JrZXJUaHJlYWQgewogcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+
IHN0YXRpYyBSZWY8U2hhcmVkV29ya2VyVGhyZWFkPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkV29ya2VyVGhyZWFkKHN0ZDo6Zm9yd2FyZDxBcmdz
PihhcmdzKS4uLikpOyB9CisKKyAgICBTaGFyZWRXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKwogcHJpdmF0ZToKLSAgICBTaGFyZWRX
b3JrZXJUaHJlYWQoY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYg
c291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmLCBXb3JrZXJEZWJ1Z2dlclByb3h5JiwgV29y
a2VyT2JqZWN0UHJveHkmLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUsIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJv
dmlkZXIqLCBKU0M6OlJ1bnRpbWVGbGFncyk7CisgICAgU2hhcmVkV29ya2VyVGhyZWFkKFNoYXJl
ZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBjb25zdCBTY3JpcHRC
dWZmZXImIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiwgV29ya2VyRGVidWdnZXJQcm94
eSYsIFdvcmtlck9iamVjdFByb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBTZWN1
cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNv
Y2tldFByb3ZpZGVyKiwgSlNDOjpSdW50aW1lRmxhZ3MpOwogCiAgICAgUmVmPFdvcmtlckdsb2Jh
bFNjb3BlPiBjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwg
UmVmPFNlY3VyaXR5T3JpZ2luPiYmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luKSBm
aW5hbDsKICAgICBBU0NJSUxpdGVyYWwgdGhyZWFkTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
ICJXZWJDb3JlOiBTaGFyZWRXb3JrZXIiX3M7IH0KIAorICAgIFNoYXJlZFdvcmtlcklkZW50aWZp
ZXIgbV9pZGVudGlmaWVyOwogICAgIFN0cmluZyBtX25hbWU7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uMDdhOTBkOTgwNTEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKQEAg
LTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KyNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyJiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkKK3sKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI+IHNoYXJl
ZE1hbmFnZXI7CisgICAgcmV0dXJuIHNoYXJlZE1hbmFnZXI7Cit9CisKK1NoYXJlZFdvcmtlclRo
cmVhZFByb3h5KiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2hhcmVkV29ya2VyKFNoYXJl
ZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV93b3JrZXJNYXAuZ2V0KHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworfQorCit2b2lk
IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzdG9wU2hhcmVkV29ya2VyKFNoYXJlZFdvcmtl
cklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHdvcmtlciA9
IG1fd29ya2VyTWFwLnRha2Uoc2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9M
T0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0b3BTaGFyZWRX
b3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHdvcmtlcj0lcCIsIHNo
YXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSwgd29ya2VyLmdldCgpKTsKKyAgICBpZiAo
IXdvcmtlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgd29ya2VyLT5zZXRBc1Rlcm1pbmF0aW5n
T3JUZXJtaW5hdGVkKCk7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gZGVh
bCB3aXRoIHRoZSB0aHJlYWQgYmVpbmcgdW5yZXNwb25zaXZlIGhlcmUuCisKKyAgICBhdXRvJiB0
aHJlYWQgPSB3b3JrZXItPnRocmVhZCgpOworICAgIHRocmVhZC5zdG9wKFt3b3JrZXIgPSBXVEZN
b3ZlKHdvcmtlcildKCkgbXV0YWJsZSB7CisgICAgICAgIC8vIFNwaW4gdGhlIHJ1bmxvb3AgYmVm
b3JlIHJlbGVhc2luZyB0aGUgc2hhcmVkIHdvcmtlciB0aHJlYWQgcHJveHksIGFzIHRoZXJlIHdv
dWxkIG90aGVyd2lzZSBiZQorICAgICAgICAvLyBhIHJhY2UgdG93YXJkcyBpdHMgZGVzdHJ1Y3Rp
b24uCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dvcmtlciA9IFdURk1vdmUod29ya2VyKV0g
eyB9KTsKKyAgICB9KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c3Rv
cEFsbFNoYXJlZFdvcmtlcnMoKQoreworICAgIHdoaWxlICghbV93b3JrZXJNYXAuaXNFbXB0eSgp
KQorICAgICAgICBzdG9wU2hhcmVkV29ya2VyKG1fd29ya2VyTWFwLmJlZ2luKCktPmtleSk7Cit9
CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNldENvbm5lY3Rpb24oc3RkOjp1
bmlxdWVfcHRyPENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlQoIW1fY29u
bmVjdGlvbiB8fCBtX2Nvbm5lY3Rpb24tPmlzQ2xvc2VkKCkpOworICAgIG1fY29ubmVjdGlvbiA9
IFdURk1vdmUoY29ubmVjdGlvbik7Cit9CisKK2F1dG8gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXI6OmNvbm5lY3Rpb24oKSBjb25zdCAtPiBDb25uZWN0aW9uKgoreworICAgIHJldHVybiBtX2Nv
bm5lY3Rpb24uZ2V0KCk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnJl
Z2lzdGVyU2hhcmVkV29ya2VyVGhyZWFkKFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4mJiBw
cm94eSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIFJFTEVBU0VfTE9HKFNo
YXJlZFdvcmtlciwgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpyZWdpc3RlclNoYXJlZFdv
cmtlclRocmVhZDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHByb3h5LT5pZGVu
dGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IG1fd29ya2VyTWFwLmFk
ZChwcm94eS0+aWRlbnRpZmllcigpLCBwcm94eS5jb3B5UmVmKCkpOworICAgIEFTU0VSVF9VTlVT
RUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICBwcm94eS0+dGhyZWFkKCkuc3Rh
cnQoW10oY29uc3QgU3RyaW5nJiAvKmV4Y2VwdGlvbk1lc3NhZ2UqLykgeyB9KTsKK30KKwordm9p
ZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVu
dChTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFRyYW5zZmVy
cmVkTWVzc2FnZVBvcnQmJiB0cmFuc2ZlcnJlZFBvcnQsIFN0cmluZyYmIHNvdXJjZU9yaWdpbikK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8qIHByb3h5ID0gU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNoYXJlZFdvcmtlcihzaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVudDogc2hhcmVkV29y
a2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgcHJveHk9JXAiLCBzaGFyZWRXb3JrZXJJZGVudGlm
aWVyLnRvVUludDY0KCksIHByb3h5KTsKKyAgICBpZiAoIXByb3h5KQorICAgICAgICByZXR1cm47
CisKKyAgICBwcm94eS0+dGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFt0cmFuc2ZlcnJlZFBv
cnQgPSBXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCksIHNvdXJjZU9yaWdpbiA9IFdURk1vdmUoc291
cmNlT3JpZ2luKS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
IG11dGFibGUgeworICAgICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgZG93
bmNhc3Q8U2hhcmVkV29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnBv
c3RDb25uZWN0RXZlbnQoV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBXVEZNb3ZlKHNvdXJjZU9y
aWdpbikpOworICAgIH0pOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpD
b25uZWN0aW9uOjp0ZXJtaW5hdGVTaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllciBz
aGFyZWRXb3JrZXJJZGVudGlmaWVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Cisg
ICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6
OkNvbm5lY3Rpb246OnRlcm1pbmF0ZVNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmll
cj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnN0b3BTaGFyZWRXb3JrZXIoc2hh
cmVkV29ya2VySWRlbnRpZmllcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQv
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLjA0NzkzN2M5MWU2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaApA
QCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJN
ZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlcklkZW50aWZp
ZXIuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OworCitjbGFzcyBTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlciB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyJiBzaW5nbGV0b24oKTsKKworICAgIFNoYXJlZFdvcmtlclRocmVh
ZFByb3h5KiBzaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllcikgY29uc3Q7CisgICAg
dm9pZCBzdG9wU2hhcmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc3RvcEFsbFNoYXJlZFdvcmtlcnMoKTsKKworICAgIGNsYXNzIENvbm5l
Y3Rpb24geworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIHZpcnR1YWwgfkNvbm5lY3Rpb24oKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGVz
dGFibGlzaENvbm5lY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoU2hhcmVkV29ya2Vy
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkgPSAwOworICAgICAgICBi
b29sIGlzQ2xvc2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Nsb3NlZDsgfQorCisgICAgcHJvdGVj
dGVkOgorICAgICAgICB2b2lkIHNldEFzQ2xvc2VkKCkgeyBtX2lzQ2xvc2VkID0gdHJ1ZTsgfQor
CisgICAgICAgIC8vIElQQyBtZXNzYWdlIGhhbmRsZXJzLgorICAgICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHBvc3RDb25uZWN0RXZlbnQoU2hhcmVkV29ya2VySWRlbnRpZmllciwgVHJhbnNmZXJy
ZWRNZXNzYWdlUG9ydCYmLCBTdHJpbmcmJiBzb3VyY2VPcmlnaW4pOworICAgICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHRlcm1pbmF0ZVNoYXJlZFdvcmtlcihTaGFyZWRXb3JrZXJJZGVudGlmaWVy
KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIGJvb2wgbV9pc0Nsb3NlZCB7IGZhbHNlIH07Cisg
ICAgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29ubmVjdGlvbihzdGQ6OnVuaXF1
ZV9wdHI8Q29ubmVjdGlvbj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29ubmVjdGlvbiogY29u
bmVjdGlvbigpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdpc3RlclNoYXJl
ZFdvcmtlclRocmVhZChSZWY8U2hhcmVkV29ya2VyVGhyZWFkUHJveHk+JiYpOworCitwcml2YXRl
OgorICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlcj47CisKKyAgICBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcigpID0gZGVmYXVsdDsKKwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAgSGFzaE1h
cDxTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2hhcmVkV29ya2VyVGhyZWFkUHJveHk+PiBt
X3dvcmtlck1hcDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJv
eHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3Jr
ZXJUaHJlYWRQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li5jOWRmOTA2YTVkZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcApAQCAtMCwwICsxLDE5
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNo
YXJlZFdvcmtlclRocmVhZFByb3h5LmgiCisKKyNpbmNsdWRlICJDYWNoZVN0b3JhZ2VQcm92aWRl
ci5oIgorI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIKKyNp
bmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFt
ZUxvYWRlci5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCisjaW5jbHVkZSAiTG9h
ZGVyU3RyYXRlZ3kuaCIKKyNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRlICJNZXNz
YWdlUG9ydC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaCIKKyNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1
ZGUgIlNoYXJlZFdvcmtlclRocmVhZC5oIgorI2luY2x1ZGUgIldvcmtlckZldGNoUmVzdWx0Lmgi
CisjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRl
bnRpZmllcnNGYWN0b3J5Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIEhhc2hT
ZXQ8U2hhcmVkV29ya2VyVGhyZWFkUHJveHkqPiYgYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGll
cygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkqPj4gc2V0OworICAgIHJldHVybiBzZXQ7Cit9CisKK3N0YXRpYyBXb3JrZXJQYXJh
bWV0ZXJzIGdlbmVyYXRlV29ya2VyUGFyYW1ldGVycyhjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29u
c3QgV29ya2VyRmV0Y2hSZXN1bHQmIHdvcmtlckZldGNoUmVzdWx0LCBXb3JrZXJPcHRpb25zJiYg
d29ya2VyT3B0aW9ucywgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIERvY3VtZW50JiBkb2N1bWVu
dCkKK3sKKyAgICByZXR1cm4gV29ya2VyUGFyYW1ldGVycyB7CisgICAgICAgIHNjcmlwdFVSTCwK
KyAgICAgICAgd29ya2VyT3B0aW9ucy5uYW1lLAorICAgICAgICAic2hhcmVkd29ya2VyOiIgKyBJ
bnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpLAorICAgICAg
ICB1c2VyQWdlbnQsCisgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVn
eSgpLT5pc09uTGluZSgpLAorICAgICAgICB3b3JrZXJGZXRjaFJlc3VsdC5jb250ZW50U2VjdXJp
dHlQb2xpY3ksCisgICAgICAgIGZhbHNlLAorICAgICAgICB3b3JrZXJGZXRjaFJlc3VsdC5jcm9z
c09yaWdpbkVtYmVkZGVyUG9saWN5LAorICAgICAgICBNb25vdG9uaWNUaW1lOjpub3coKSwKKyAg
ICAgICAgeyB9LAorICAgICAgICB3b3JrZXJPcHRpb25zLnR5cGUsCisgICAgICAgIHdvcmtlck9w
dGlvbnMuY3JlZGVudGlhbHMsCisgICAgICAgIGRvY3VtZW50LnNldHRpbmdzVmFsdWVzKCkKKyAg
ICB9OworfQorCitTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6U2hhcmVkV29ya2VyVGhyZWFkUHJv
eHkoVW5pcXVlUmVmPFBhZ2U+JiYgcGFnZSwgU2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgY29uc3Qg
VVJMJiBzY3JpcHRVUkwsIFdvcmtlckZldGNoUmVzdWx0JiYgd29ya2VyRmV0Y2hSZXN1bHQsIFdv
cmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgQ2Fj
aGVTdG9yYWdlUHJvdmlkZXImIGNhY2hlU3RvcmFnZVByb3ZpZGVyKQorICAgIDogbV9wYWdlKFdU
Rk1vdmUocGFnZSkpCisgICAgLCBtX2RvY3VtZW50KCptX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3Vt
ZW50KCkpCisgICAgLCBtX3dvcmtlclRocmVhZChTaGFyZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZShz
aGFyZWRXb3JrZXJJZGVudGlmaWVyLCBnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMoc2NyaXB0VVJM
LCB3b3JrZXJGZXRjaFJlc3VsdCwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSwgdXNlckFnZW50LCBt
X2RvY3VtZW50KSwgV1RGTW92ZSh3b3JrZXJGZXRjaFJlc3VsdC5zY3JpcHQpLCAqdGhpcywgKnRo
aXMsICp0aGlzLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgY2xpZW50T3JpZ2luLnRv
cE9yaWdpbi5zZWN1cml0eU9yaWdpbigpLCBtX2RvY3VtZW50LT5pZGJDb25uZWN0aW9uUHJveHko
KSwgbV9kb2N1bWVudC0+c29ja2V0UHJvdmlkZXIoKSwgSlNDOjpSdW50aW1lRmxhZ3M6OmNyZWF0
ZUFsbEVuYWJsZWQoKSkpCisgICAgLCBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyKGNhY2hlU3RvcmFn
ZVByb3ZpZGVyKQoreworICAgIEFTU0VSVCghYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGllcygp
LmNvbnRhaW5zKHRoaXMpKTsKKyAgICBhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkuYWRk
KHRoaXMpOworCisgICAgc3RhdGljIGJvb2wgYWRkZWRMaXN0ZW5lcjsKKyAgICBpZiAoIWFkZGVk
TGlzdGVuZXIpIHsKKyAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5
KCktPmFkZE9ubGluZVN0YXRlQ2hhbmdlTGlzdGVuZXIoJm5ldHdvcmtTdGF0ZUNoYW5nZWQpOwor
ICAgICAgICBhZGRlZExpc3RlbmVyID0gdHJ1ZTsKKyAgICB9Cit9CisKK1NoYXJlZFdvcmtlclRo
cmVhZFByb3h5Ojp+U2hhcmVkV29ya2VyVGhyZWFkUHJveHkoKQoreworICAgIEFTU0VSVChhbGxT
aGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkuY29udGFpbnModGhpcykpOworICAgIGFsbFNoYXJl
ZFdvcmtlclRocmVhZFByb3hpZXMoKS5yZW1vdmUodGhpcyk7Cit9CisKK1NoYXJlZFdvcmtlcklk
ZW50aWZpZXIgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OmlkZW50aWZpZXIoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3dvcmtlclRocmVhZC0+aWRlbnRpZmllcigpOworfQorCitSZWZQdHI8Q2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbj4gU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZUNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24oKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
aWYgKCFtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24pCisgICAgICAgIG1fY2FjaGVTdG9yYWdlQ29u
bmVjdGlvbiA9IG1fY2FjaGVTdG9yYWdlUHJvdmlkZXIuY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbigpOworICAgIHJldHVybiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247Cit9CisKK1JlZlB0
cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uPiBTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eTo6Y3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpCit7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICByZXR1cm4gbV9wYWdlLT5saWJXZWJS
VENQcm92aWRlcigpLmNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24o
KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tUb0xvYWRlcihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykKK3sKKyAgICBjYWxsT25NYWluVGhy
ZWFkKFt0YXNrID0gV1RGTW92ZSh0YXNrKSwgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1d
ICgpIG11dGFibGUgeworICAgICAgICB0YXNrLnBlcmZvcm1UYXNrKHByb3RlY3RlZFRoaXMtPm1f
ZG9jdW1lbnQuZ2V0KCkpOworICAgIH0pOworfQorCitib29sIFNoYXJlZFdvcmtlclRocmVhZFBy
b3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCit7CisgICAg
aWYgKG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoV1RGTW92ZSh0
YXNrKSwgbW9kZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHk6OnBvc3RNZXNzYWdlVG9EZWJ1Z2dlcihjb25zdCBTdHJpbmcmKQoreworICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQuCit9CisKK3ZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnNl
dFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNwZWN0b3IoYm9vbCkKK3sKKyAgICAvLyBG
SVhNRTogSW1wbGVtZW50LgorfQorCit2b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpuZXR3
b3JrU3RhdGVDaGFuZ2VkKGJvb2wgaXNPbkxpbmUpCit7CisgICAgZm9yIChhdXRvKiBwcm94eSA6
IGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKSkKKyAgICAgICAgcHJveHktPm5vdGlmeU5l
dHdvcmtTdGF0ZUNoYW5nZShpc09uTGluZSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyVGhyZWFk
UHJveHk6Om5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25saW5lKQoreworICAgIGlm
IChtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIHBv
c3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW2lzT25saW5lXSAoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICBhdXRvJiBnbG9iYWxTY29w
ZSA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KTsKKyAgICAgICAgZ2xvYmFs
U2NvcGUuc2V0SXNPbmxpbmUoaXNPbmxpbmUpOworICAgICAgICBnbG9iYWxTY29wZS5ldmVudExv
b3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbZ2xvYmFsU2NvcGUg
PSBSZWYgeyBnbG9iYWxTY29wZSB9LCBpc09ubGluZV0geworICAgICAgICAgICAgZ2xvYmFsU2Nv
cGUtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShpc09ubGluZSA/IGV2ZW50TmFtZXMoKS5v
bmxpbmVFdmVudCA6IGV2ZW50TmFtZXMoKS5vZmZsaW5lRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6
Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOworICAgICAgICB9KTsKKyAgICB9LCBXb3Jr
ZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKK30KKworLy8gRklYTUU6IFRyeSBhbmQgc2hhcmUg
Y29kZSB3aXRoIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAuCit2b2lkIFNoYXJlZFdvcmtl
clRocmVhZFByb3h5OjpzZXR1cFBhZ2VGb3JTaGFyZWRXb3JrZXIoUGFnZSYgcGFnZSwgY29uc3Qg
VVJMJiBzY3JpcHRVUkwsIGNvbnN0IENsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBjb25zdCBX
b3JrZXJGZXRjaFJlc3VsdCYgd29ya2VyRmV0Y2hSZXN1bHQpCit7CisgICAgYXV0byYgbWFpbkZy
YW1lID0gcGFnZS5tYWluRnJhbWUoKTsKKyAgICBtYWluRnJhbWUubG9hZGVyKCkuaW5pdEZvclN5
bnRoZXNpemVkRG9jdW1lbnQoeyB9KTsKKyAgICBhdXRvIGRvY3VtZW50ID0gRG9jdW1lbnQ6OmNy
ZWF0ZU5vblJlbmRlcmVkUGxhY2Vob2xkZXIobWFpbkZyYW1lLCBzY3JpcHRVUkwpOworICAgIGRv
Y3VtZW50LT5jcmVhdGVET01XaW5kb3coKTsKKworICAgIGRvY3VtZW50LT5zdG9yYWdlQmxvY2tp
bmdTdGF0ZURpZENoYW5nZSgpOworCisgICAgYXV0byBvcmlnaW4gPSBjbGllbnRPcmlnaW4udG9w
T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7CisgICAgb3JpZ2luLT5zZXRTdG9yYWdlQmxvY2tpbmdQ
b2xpY3kocGFnZS5zZXR0aW5ncygpLnN0b3JhZ2VCbG9ja2luZ1BvbGljeSgpKTsKKworICAgIGF1
dG8gb3JpZ2luQXNVUkwgPSBvcmlnaW4tPnRvVVJMKCk7CisgICAgZG9jdW1lbnQtPnNldFNpdGVG
b3JDb29raWVzKG9yaWdpbkFzVVJMKTsKKyAgICBkb2N1bWVudC0+c2V0Rmlyc3RQYXJ0eUZvckNv
b2tpZXMob3JpZ2luQXNVUkwpOworICAgIGRvY3VtZW50LT5zZXREb21haW5Gb3JDYWNoZVBhcnRp
dGlvbihvcmlnaW4tPmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkpOworCisgICAgaWYgKGF1dG8g
cG9saWN5ID0gcGFyc2VSZWZlcnJlclBvbGljeSh3b3JrZXJGZXRjaFJlc3VsdC5yZWZlcnJlclBv
bGljeSwgUmVmZXJyZXJQb2xpY3lTb3VyY2U6OkhUVFBIZWFkZXIpKQorICAgICAgICBkb2N1bWVu
dC0+c2V0UmVmZXJyZXJQb2xpY3koKnBvbGljeSk7CisKKyAgICBtYWluRnJhbWUuc2V0RG9jdW1l
bnQoV1RGTW92ZShkb2N1bWVudCkpOworfQorCit2b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5
Ojpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2Us
IGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCkKK3sKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzaGFyZWRXb3JrZXJJZGVudGlmaWVyID0gbV93
b3JrZXJUaHJlYWQtPmlkZW50aWZpZXIoKSwgZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlLmlz
b2xhdGVkQ29weSgpLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCA9IHNvdXJj
ZVVSTC5pc29sYXRlZENvcHkoKV0geworICAgICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IFNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCisgICAg
ICAgICAgICBjb25uZWN0aW9uLT5wb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qoc2hhcmVkV29y
a2VySWRlbnRpZmllciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNv
dXJjZVVSTCk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3h5LmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFBy
b3h5LmgKc2ltaWxhcml0eSBpbmRleCA1NCUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJveHkuaApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oCmluZGV4IGRi
N2I4NTA5ZGY1YS4uZjdiMjkyNGRiZTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw4ICsyNSw4IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiU2hhcmVkV29ya2VySWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIldvcmtlckRlYnVnZ2VyUHJveHkuaCIKLSNpbmNsdWRlICJXb3JrZXJHbG9iYWxT
Y29wZVByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyTG9hZGVyUHJveHkuaCIKICNpbmNsdWRlICJX
b3JrZXJPYmplY3RQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlck9wdGlvbnMuaCIKQEAgLTM0LDI5
ICszNCwyNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENhY2hlU3RvcmFnZVBy
b3ZpZGVyOworY2xhc3MgUGFnZTsKIGNsYXNzIFNoYXJlZFdvcmtlcjsKIGNsYXNzIFNoYXJlZFdv
cmtlclRocmVhZDsKIAotY2xhc3MgU2hhcmVkV29ya2VyUHJveHkgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8U2hhcmVkV29ya2VyUHJveHk+LCBwdWJsaWMgV29ya2VyR2xvYmFsU2NvcGVQ
cm94eSwgcHVibGljIFdvcmtlck9iamVjdFByb3h5LCBwdWJsaWMgV29ya2VyTG9hZGVyUHJveHks
IHB1YmxpYyBXb3JrZXJEZWJ1Z2dlclByb3h5IHsKK3N0cnVjdCBDbGllbnRPcmlnaW47CitzdHJ1
Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7CisKK2NsYXNzIFNoYXJlZFdvcmtlclRocmVhZFByb3h5IDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZFdvcmtlclRocmVhZFByb3h5PiwgcHVi
bGljIFdvcmtlckxvYWRlclByb3h5LCBwdWJsaWMgV29ya2VyRGVidWdnZXJQcm94eSwgcHVibGlj
IFdvcmtlck9iamVjdFByb3h5IHsKIHB1YmxpYzoKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBB
cmdzPiBzdGF0aWMgU2hhcmVkV29ya2VyUHJveHkmIGNyZWF0ZShBcmdzJiYuLi4gYXJncykgeyBy
ZXR1cm4gKm5ldyBTaGFyZWRXb3JrZXJQcm94eShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4p
OyB9CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0dXBQYWdlRm9yU2hhcmVkV29y
a2VyKFBhZ2UmLCBjb25zdCBVUkwmLCBjb25zdCBDbGllbnRPcmlnaW4mLCBjb25zdCBXb3JrZXJG
ZXRjaFJlc3VsdCYpOwogCi0gICAgU2hhcmVkV29ya2VyVGhyZWFkKiB0aHJlYWQoKSB7IHJldHVy
biBtX3dvcmtlclRocmVhZC5nZXQoKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+
IHN0YXRpYyBSZWY8U2hhcmVkV29ya2VyVGhyZWFkUHJveHk+IGNyZWF0ZShBcmdzJiYuLi4gYXJn
cykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShzdGQ6OmZv
cndhcmQ8QXJncz4oYXJncykuLi4pKTsgfQorICAgIH5TaGFyZWRXb3JrZXJUaHJlYWRQcm94eSgp
OworCisgICAgU2hhcmVkV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Q7CisgICAg
U2hhcmVkV29ya2VyVGhyZWFkJiB0aHJlYWQoKSB7IHJldHVybiBtX3dvcmtlclRocmVhZC5nZXQo
KTsgfQorCisgICAgYm9vbCBpc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkOyB9CisgICAgdm9pZCBzZXRBc1Rlcm1pbmF0
aW5nT3JUZXJtaW5hdGVkKCkgeyBtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQgPSB0cnVlOyB9
CiAKLSAgICB2b2lkIHN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkws
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxp
bmUsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc291cmNlQ29kZSwgY29uc3QgQ29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50
U2VjdXJpdHlQb2xpY3ksIGNvbnN0IENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kmLCBNb25vdG9u
aWNUaW1lIHRpbWVPcmlnaW4sIFJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBGZXRjaFJlcXVl
c3RDcmVkZW50aWFscywgSlNDOjpSdW50aW1lRmxhZ3MpIGZpbmFsOwotICAgIHZvaWQgdGVybWlu
YXRlV29ya2VyR2xvYmFsU2NvcGUoKSBmaW5hbDsKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3Jr
ZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKSBmaW5hbDsKLSAgICB2b2lk
IHBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKT4mJikgZmluYWw7Ci0gICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25z
dCBmaW5hbDsKLSAgICB2b2lkIHdvcmtlck9iamVjdERlc3Ryb3llZCgpIGZpbmFsOwotICAgIHZv
aWQgbm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpIGZpbmFsOwotICAgIHZv
aWQgc3VzcGVuZEZvckJhY2tGb3J3YXJkQ2FjaGUoKSBmaW5hbDsKLSAgICB2b2lkIHJlc3VtZUZv
ckJhY2tGb3J3YXJkQ2FjaGUoKSBmaW5hbDsKLSAgICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtl
ck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBj
b2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSBmaW5hbDsKLSAgICB2b2lkIHdv
cmtlckdsb2JhbFNjb3BlRGVzdHJveWVkKCkgZmluYWw7Ci0gICAgdm9pZCBwb3N0TWVzc2FnZVRv
V29ya2VyT2JqZWN0KE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpIGZpbmFsOwotICAgIHZvaWQg
Y29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KSBm
aW5hbDsKLSAgICB2b2lkIHJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGhhc1BlbmRpbmdBY3Rp
dml0eSkgZmluYWw7CiAgICAgUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IGNyZWF0ZUNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24oKSBmaW5hbDsKICAgICBSZWZQdHI8UlRDRGF0YUNoYW5uZWxS
ZW1vdGVIYW5kbGVyQ29ubmVjdGlvbj4gY3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVy
Q29ubmVjdGlvbigpIGZpbmFsOwogICAgIHZvaWQgcG9zdFRhc2tUb0xvYWRlcihTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrJiYpIGZpbmFsOwpAQCAtNjQsMTggKzYyLDI1IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHBvc3RNZXNzYWdlVG9EZWJ1Z2dlcihjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAg
ICB2b2lkIHNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNwZWN0b3IoYm9vbCkgZmlu
YWw7CiAKKyAgICAvLyBXb3JrZXJPYmplY3RQcm94eQorICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRv
V29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpIGZpbmFsOworICAgIHZv
aWQgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWQoKSBmaW5hbCB7IH0KKyAgICB2b2lkIHBvc3RN
ZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJikgZmluYWwgeyB9
CisgICAgdm9pZCBjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCkgZmluYWwgeyB9
CisgICAgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCkgZmluYWwgeyB9CisKIHByaXZh
dGU6Ci0gICAgU2hhcmVkV29ya2VyUHJveHkoU2hhcmVkV29ya2VyJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkoVW5pcXVlUmVmPFBhZ2U+JiYsIFNoYXJlZFdv
cmtlcklkZW50aWZpZXIsIGNvbnN0IENsaWVudE9yaWdpbiYsIGNvbnN0IFVSTCYgc2NyaXB0VVJM
LCBXb3JrZXJGZXRjaFJlc3VsdCYmLCBXb3JrZXJPcHRpb25zJiYsIGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50LCBDYWNoZVN0b3JhZ2VQcm92aWRlciYpOwogCi0gICAgdm9pZCB3b3JrZXJHbG9iYWxT
Y29wZURlc3Ryb3llZEludGVybmFsKCk7CisgICAgc3RhdGljIHZvaWQgbmV0d29ya1N0YXRlQ2hh
bmdlZChib29sIGlzT25MaW5lKTsKKyAgICB2b2lkIG5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShi
b29sIGlzT25saW5lKTsKIAotICAgIFdlYWtQdHI8U2hhcmVkV29ya2VyPiBtX3NoYXJlZFdvcmtl
cjsKLSAgICBSZWZQdHI8U2hhcmVkV29ya2VyVGhyZWFkPiBtX3dvcmtlclRocmVhZDsKLSAgICBj
b25zdCBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0OwotICAgIGNvbnN0IFN0cmluZyBtX2lkZW50aWZpZXJGb3JJbnNwZWN0b3I7Ci0gICAgYm9v
bCBtX2Fza2VkVG9UZXJtaW5hdGUgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9oYXNQZW5kaW5nQWN0
aXZpdHkgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9tYXlCZURlc3Ryb3llZCB7IGZhbHNlIH07Cisg
ICAgVW5pcXVlUmVmPFBhZ2U+IG1fcGFnZTsKKyAgICBSZWY8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7
CisgICAgUmVmPFNoYXJlZFdvcmtlclRocmVhZD4gbV93b3JrZXJUaHJlYWQ7CisgICAgQ2FjaGVT
dG9yYWdlUHJvdmlkZXImIG1fY2FjaGVTdG9yYWdlUHJvdmlkZXI7CisgICAgUmVmUHRyPENhY2hl
U3RvcmFnZUNvbm5lY3Rpb24+IG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKKyAgICBib29sIG1f
aXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCA3NTZkYTg4YjQ1ZjcuLjI5ZjRjNzgxODE4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0yOCw2ICsyOCw3IEBAIHNldChXZWJLaXRfSU5DTFVE
RV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL05vdGlmaWNh
dGlvbnMiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ciIKKyAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIiCiAgICAg
IiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZSIKICAgICAiJHtXRUJLSVRf
RElSfS9OZXR3b3JrUHJvY2Vzcy9jYWNoZSIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlIgpAQCAtMjAyLDYgKzIwMyw5IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5f
RklMRVMKICAgICBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbgogICAgIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uCiAKKyAgICBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbgorICAgIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCisKICAgICBOZXR3b3JrUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0CiAKICAgICBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uCkBAIC0zMDUsNiArMzA5LDggQEAgc2V0
KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogCiAgICAgV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNo
UmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcgogCisgICAgV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbgorICAgIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uCiAgICAgV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbgogICAgIFdlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggNGM2NjIyMGNmMTIyLi43MjI5YzFiOTg3
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QK
QEAgLTkxLDYgKzkxLDggQEAgJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLm1lc3NhZ2VzLmkKICQoUFJPSkVDVF9ESVIp
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCiskKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvTmV0d29y
a1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZU1hbmFnZXJTZXQubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQ
cm9jZXNzLnNiLmluCkBAIC0yMTcsNiArMjE5LDggQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL1NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRD
b25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIp
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3IubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vV2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBi
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggZTNi
NTU4NDBhZTFlLi5hODYzMjgxNDdiNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtNjA3LDYgKzYwNywxOCBAQCAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3Nh
Z2VzUmVwbGllcwogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbk1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1l
c3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0L1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb25NZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlc1Jl
cGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdC9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bk1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0L1dlYlNvY2tldENoYW5uZWxNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNvY2tldENoYW5uZWxNZXNzYWdlcy5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNvY2tldENo
YW5uZWxNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDdh
ZDQ5ZTM3MzVmNC4uMzUxZmZhZTBhNTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBA
IC0xMzMsNiArMTMzLDggQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrIFwKIAlOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2sgXAogCU5ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIFwKKwlOZXR3b3Jr
UHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbiBcCisJ
TmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24gXAogCU5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0gXAogCU5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzIFwKIAlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIgXApAQCAtMjI1LDYgKzIyNyw4IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAog
CVdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
IFwKIAlXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbiBcCiAJV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlh
U291cmNlTWFuYWdlciBcCisJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbiBcCisJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlv
biBcCiAJV2ViUHJvY2Vzcy9XZWJQcm9jZXNzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
aW5kZXggNjg3YzhkYjY5MTJjLi5jN2IxN2ZkNzA3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCkBAIC02Niw2ICs2NiwxMSBAQAogI2luY2x1ZGUgIldlYlNXU2VydmVyQ29ubmVjdGlv
bk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgi
CiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0hUVFBDb29raWVBY2NlcHRQb2xpY3kuaD4KQEAgLTEzMiw2ICsxMzcsNyBA
QCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoTmV0d29ya1Byb2Nlc3MmIG5ldAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICBlc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKTsKICNlbmRpZgorICAgIGVzdGFibGlzaFNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oKTsKIH0KIAogTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6On5OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCkBAIC0xNjYsNiArMTcy
LDcgQEAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcygpCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHVucmVnaXN0ZXJT
V0Nvbm5lY3Rpb24oKTsKICNlbmRpZgorICAgIHVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0
aW9uKCk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhhc1VwbG9h
ZFN0YXRlQ2hhbmdlZChib29sIGhhc1VwbG9hZCkKQEAgLTI3NSw2ICsyODIsMTcgQEAgdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW8KICAgICB9CiAjZW5kaWYKIAorICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGlmIChtX3NoYXJlZFdvcmtl
ckNvbm5lY3Rpb24pCisgICAgICAgICAgICBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24tPmRpZFJl
Y2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKSB7CisgICAgICAgIGlmIChtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKQorICAg
ICAgICAgICAgbV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3Nh
Z2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICNpZiBF
TkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCkpCiAgICAgICAgIHJldHVybiBwYXltZW50Q29vcmRpbmF0b3IoKS5kaWRS
ZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKQEAgLTM5OCw5ICs0MTYsOCBAQCB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24pCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIG1fc3dD
b250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShjb25u
ZWN0aW9uKTsKICNlbmRpZgorICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBu
dWxscHRyOwogCiAgICAgLy8gUHJvdGVjdCBvdXJzZWxmIGFzIHdlIG1pZ2h0IGJlIG90aGVyd2lz
ZSBiZSBkZWxldGVkIGR1cmluZyB0aGlzIGZ1bmN0aW9uLgogICAgIFJlZjxOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcz4gcHJvdGVjdG9yKCp0aGlzKTsKQEAgLTQ0MSw2ICs0NTgsNyBAQCB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24pCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHVucmVnaXN0
ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgorICAgIHVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25u
ZWN0aW9uKCk7CiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKICAgICBtX3BheW1l
bnRDb29yZGluYXRvciA9IG51bGxwdHI7CkBAIC0xMTg2LDYgKzEyMDQsNjEgQEAgc2l6ZV90IE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpmaW5kTmV0d29ya0FjdGl2aXR5VHJhY2tlcihX
ZWJDb3JlOjpSZXNvdXIKICAgICAgICAgcmV0dXJuIGl0ZW0ucmVzb3VyY2VJRCA9PSByZXNvdXJj
ZUlEOwogICAgIH0pOwogfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpl
c3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlm
aWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQ09OTkVD
VElPTl9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250
ZXh0Q29ubmVjdGlvbjoiKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsK
KyAgICBpZiAoYXV0byogc3dTZXJ2ZXIgPSBzZXNzaW9uID8gc2Vzc2lvbi0+c2hhcmVkV29ya2Vy
U2VydmVyKCkgOiBudWxscHRyKQorICAgICAgICBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0
aW9uID0gbWFrZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
PigqdGhpcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksICpzd1NlcnZlcik7CisgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpCit7CisgICAgaWYgKG1f
c2hhcmVkV29ya2VyQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1
cm47CisKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImVzdGFibGlz
aFNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Iik7CisKKyAgICBhdXRvJiBzZXJ2ZXIgPSBz
ZXNzaW9uLT5lbnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKTsKKyAgICBhdXRvIGNvbm5lY3Rpb24g
PSBtYWtlVW5pcXVlPFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29ya1By
b2Nlc3MsIHNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVy
KTsKKworICAgIG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbiA9ICpjb25uZWN0aW9uOworICAgIHNl
cnZlci5hZGRDb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpOworfQorCit2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0
aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImNsb3Nl
U2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb246Iik7CisgICAgbV9zaGFyZWRXb3JrZXJDb250
ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uKCkKK3sKKyAgICBDT05O
RUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgInVucmVnaXN0ZXJTaGFyZWRXb3JrZXJD
b25uZWN0aW9uOiIpOworICAgIGlmIChtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAg
IG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbi0+c2VydmVyKCkucmVtb3ZlQ29ubmVjdGlvbihtX3No
YXJlZFdvcmtlckNvbm5lY3Rpb24tPndlYlByb2Nlc3NJZGVudGlmaWVyKCkpOworfQorCit2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNF
X0xPRyhTaGFyZWRXb3JrZXIsICJzaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
SXNOb0xvbmdlck5lZWRlZDoiKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpTaGFyZWRX
b3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkIHsgd2ViUHJvY2Vzc0lkZW50aWZp
ZXIoKSB9LCAwKTsKKworICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBudWxs
cHRyOworfQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKiBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6c2hhcmVkV29ya2VyQ29ubmVjdGlvbigpCit7CisgICAgaWYgKCFt
X3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAgIGVzdGFibGlzaFNoYXJlZFdvcmtlclNl
cnZlckNvbm5lY3Rpb24oKTsKKyAgICByZXR1cm4gbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uLmdl
dCgpOworfQogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKQpAQCAtMTIyMyw5
ICsxMjk2LDkgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xvc2VTV0Nv
bnRleHRDb25uZWN0aW9uKCkKICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwog
fQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6c2VydmljZVdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRl
ZCgpCiB7Ci0gICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAic2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkOiBXZWJQcm9jZXNzIG5vIGxvbmdlciB1
c2VmdWwgZm9yIHJ1bm5pbmcgc2VydmljZSB3b3JrZXJzIik7CisgICAgQ09OTkVDVElPTl9SRUxF
QVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAic2VydmljZVdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb25Ob0xvbmdlck5lZWRlZDogV2ViUHJvY2VzcyBubyBsb25nZXIgdXNlZnVsIGZvciBydW5u
aW5nIHNlcnZpY2Ugd29ya2VycyIpOwogICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlNlcnZp
Y2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkIHsgd2ViUHJvY2Vzc0lkZW50
aWZpZXIoKSB9LCAwKTsKIAogICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggM2ExZTE0MDQzMzhmLi5kMGFhNGVmNzQ1MjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTkyLDYgKzkyLDggQEAgY2xhc3MgTmV0d29ya1Nv
Y2tldFN0cmVhbTsKIGNsYXNzIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s7CiBjbGFzcyBXZWJTV1Nl
cnZlckNvbm5lY3Rpb247CiBjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247Citj
bGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOworY2xhc3MgV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKIAogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7
CiBzdHJ1Y3QgRGF0YUtleTsKQEAgLTE4MSwxMCArMTgzLDEzIEBAIHB1YmxpYzoKICAgICB2b2lk
IGNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQ
b3J0SWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TWVzc2FnZVBv
cnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5KT4mJik7CiAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi0gICAgdm9pZCBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVk
ZWQoKTsKKyAgICB2b2lkIHNlcnZpY2VXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9M
b25nZXJOZWVkZWQoKTsKICAgICBXZWJTV1NlcnZlckNvbm5lY3Rpb24qIHN3Q29ubmVjdGlvbigp
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBjcmVhdGVGZXRj
aFRhc2soTmV0d29ya1Jlc291cmNlTG9hZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Jik7CiAjZW5kaWYKKyAgICB2b2lkIHNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7CisKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uKiBzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiAKICAgICBOZXR3b3JrU2NoZW1lUmVn
aXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9zY2hlbWVSZWdpc3RyeS5nZXQoKTsg
fQogCkBAIC0yNTMsNiArMjU4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZVNvY2tldENo
YW5uZWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90
b2NvbCwgV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAgICAgdm9pZCB1cGRhdGVRdW90YUJh
c2VkT25TcGFjZVVzYWdlRm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsK
IAorICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpOworICAg
IHZvaWQgdW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKKwogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigpOwog
ICAgIHZvaWQgZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlm
aWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0yNjAsNiArMjY4LDkgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgogCisg
ICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJv
eHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgY2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvbigpOworCiAgICAgdm9pZCBjcmVhdGVSVENQcm92aWRlcihDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIHZvaWQgY29ubmVjdFRvUlRDRGF0
YUNoYW5uZWxSZW1vdGVTb3VyY2UoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHNv
dXJjZSwgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGhhbmRsZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxib29sPik+JiYpOwpAQCAtNDA0LDYgKzQxNSw4
IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxXZWJTV1NlcnZlckNvbm5lY3Rpb24+IG1fc3dDb25u
ZWN0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24+IG1fc3dDb250ZXh0Q29ubmVjdGlvbjsKICNlbmRpZgorICAgIFdlYWtQdHI8V2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbj4gbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiBt
X3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uOwogCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAg
ICAgYm9vbCBtX2lzUmVnaXN0ZXJlZFRvUlRDRGF0YUNoYW5uZWxQcm94eSB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAyNDI4MzUwNTBi
MjQuLmI5N2NhMzQ3OWI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCkBAIC04OCw2ICs4OCw5IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBDbG9zZVNXQ29udGV4dENvbm5lY3Rpb24o
KQogI2VuZGlmCiAKKyAgICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihX
ZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIGRvbWFpbikgLT4gKCkgQXN5bmMKKyAgICBDbG9zZVNoYXJlZFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uKCkKKwogICAgIENyZWF0ZVJUQ1Byb3ZpZGVyKCkgLT4gKCkgQXN5
bmMKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICBDb25uZWN0VG9SVENEYXRhQ2hhbm5lbFJlbW90
ZVNvdXJjZShzdHJ1Y3QgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwg
c3RydWN0IFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBoYW5kbGVyKSAtPiAoc3Rk
OjpvcHRpb25hbDxib29sPiByZXN1bHQpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IGUyYjI0ZDgzMjJiNi4uZDc2MTYyODUw
Y2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
LmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2ViU1dPcmlnaW5TdG9y
ZS5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlci5oIgogI2luY2x1ZGUgIldlYlNv
Y2tldFRhc2suaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZUphci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CkBAIC02NTMsNiArNjU0LDEzIEBAIGJvb2wgTmV0d29y
a1Nlc3Npb246Omhhc1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBhdGgoKSBjb25zdAogCiAjZW5kaWYg
Ly8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIE5ldHdv
cmtTZXNzaW9uOjplbnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKQoreworICAgIGlmICghbV9zaGFy
ZWRXb3JrZXJTZXJ2ZXIpCisgICAgICAgIG1fc2hhcmVkV29ya2VyU2VydmVyID0gbWFrZVVuaXF1
ZTxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fc2hhcmVkV29y
a2VyU2VydmVyOworfQorCiBXZWJJREJTZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVXZWJJ
REJTZXJ2ZXIoKQogewogICAgIGlmICghbV93ZWJJREJTZXJ2ZXIpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAppbmRleCAxOTMwN2NmNDBiZTMuLjNm
OWQ2Yzk1NTBhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb24uaApAQCAtNzksNiArNzksNyBAQCBjbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOwog
Y2xhc3MgV2ViSURCU2VydmVyOwogY2xhc3MgV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzOwogY2xh
c3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOworY2xhc3MgV2ViU2hhcmVkV29ya2Vy
U2VydmVyOwogY2xhc3MgV2ViU29ja2V0VGFzazsKIGNsYXNzIFdlYlNXT3JpZ2luU3RvcmU7CiBj
bGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CkBAIC0yMTAsNiArMjExLDkgQEAgcHVibGljOgog
ICAgIHZvaWQgYWRkU2VydmljZVdvcmtlclNlc3Npb24oYm9vbCBwcm9jZXNzVGVybWluYXRpb25E
ZWxheUVuYWJsZWQsIFN0cmluZyYmIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnks
IGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogI2VuZGlmCiAKKyAgICBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXIqIHNoYXJlZFdvcmtlclNlcnZlcigpIHsgcmV0dXJuIG1fc2hhcmVkV29y
a2VyU2VydmVyLmdldCgpOyB9CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBlbnN1cmVTaGFy
ZWRXb3JrZXJTZXJ2ZXIoKTsKKwogICAgIFdlYklEQlNlcnZlciogd2ViSURCU2VydmVyKCkgeyBy
ZXR1cm4gbV93ZWJJREJTZXJ2ZXIuZ2V0KCk7IH0KICAgICBXZWJJREJTZXJ2ZXImIGVuc3VyZVdl
YklEQlNlcnZlcigpOwogICAgIHZvaWQgY2xvc2VJREJTZXJ2ZXIoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKQEAgLTMxOCw2ICszMjIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RkOjpvcHRp
b25hbDxTZXJ2aWNlV29ya2VySW5mbz4gbV9zZXJ2aWNlV29ya2VySW5mbzsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6U1dTZXJ2ZXI+IG1fc3dTZXJ2ZXI7CiAjZW5kaWYKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyPiBtX3NoYXJlZFdvcmtlclNlcnZlcjsK
IAogICAgIFN0cmluZyBtX2lkYkRhdGFiYXNlUGF0aDsKICAgICBSZWZQdHI8V2ViSURCU2VydmVy
PiBtX3dlYklEQlNlcnZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggNWE4NzAzZWZkNmQ1Li4yN2Y2ZThkYTVmNDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBA
IC0xNjIsNyArMTYyLDcgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1h
dGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWUKIAogdm9pZCBXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkKIHsK
LSAgICBtX2Nvbm5lY3Rpb24uc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVk
KCk7CisgICAgbV9jb25uZWN0aW9uLnNlcnZpY2VXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uTm9Mb25nZXJOZWVkZWQoKTsKIH0KIAogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OnNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxlYWJsZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtl
clNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uM2M2MzY0YWE1NDA4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcApAQCAt
MCwwICsxLDI5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNs
dWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrU2Vz
c2lvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OldlYlNoYXJlZFdvcmtl
clNlcnZlcihOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbikKKyAgICA6IG1fc2Vzc2lvbihzZXNzaW9u
KQoreworfQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6On5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIo
KSA9IGRlZmF1bHQ7CisKK1BBTDo6U2Vzc2lvbklEIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2Vz
c2lvbklEKCkKK3sKKyAgICByZXR1cm4gbV9zZXNzaW9uLnNlc3Npb25JRCgpOworfQorCit2b2lk
IFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtlcihXZWJDb3JlOjpDbGll
bnRPcmlnaW4mJiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIg
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgVVJMJiYgdXJsLCBXZWJDb3JlOjpUcmFuc2Zl
cnJlZE1lc3NhZ2VQb3J0JiYgcG9ydCwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmIHdvcmtlck9w
dGlvbnMpCit7CisgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5IGtleSB7IG9yaWdpbiwgdXJs
LCB3b3JrZXJPcHRpb25zLm5hbWUgfTsKKyAgICBhdXRvJiBzaGFyZWRXb3JrZXIgPSBtX3NoYXJl
ZFdvcmtlcnMuZW5zdXJlKGtleSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2hh
cmVkV29ya2VyPihvcmlnaW4sIHVybCwgd29ya2VyT3B0aW9ucyk7CisgICAgfSkuaXRlcmF0b3It
PnZhbHVlOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNl
cnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0l
e3ByaXZhdGV9cywgc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzaGFyZWRXb3JrZXIt
PmlkZW50aWZpZXIudG9VSW50NjQoKSk7CisKKyAgICBpZiAoc2hhcmVkV29ya2VyLT53b3JrZXJP
cHRpb25zLnR5cGUgIT0gd29ya2VyT3B0aW9ucy50eXBlIHx8IHNoYXJlZFdvcmtlci0+d29ya2Vy
T3B0aW9ucy5jcmVkZW50aWFscyAhPSB3b3JrZXJPcHRpb25zLmNyZWRlbnRpYWxzKSB7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZl
cjo6cmVxdWVzdFNoYXJlZFdvcmtlcjogQSB3b3JrZXIgYWxyZWFkeSBleGlzdHMgd2l0aCB0aGlz
IG5hbWUgYnV0IGhhcyBkaWZmZXJlbnQgdHlwZSAvIGNyZWRlbnRpYWxzIik7CisgICAgICAgIGlm
IChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIHNlcnZl
ckNvbm5lY3Rpb24tPm5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZhaWx1cmUoc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaGFyZWRX
b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMuYWRkKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIsIHBvcnQpOworCisgICAgaWYgKHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5z
aXplKCkgPiAxKSB7CisgICAgICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJl
ZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtlcjogQSBzaGFyZWQgd29ya2VyIHdpdGgg
dGhpcyBVUkwgYWxyZWFkeSBleGlzdHMgKG5vdyBzaGFyZWQgYnkgJXUgc2hhcmVkIHdvcmtlciBv
YmplY3RzKSIsIHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5zaXplKCkpOworICAg
ICAgICBpZiAoc2hhcmVkV29ya2VyLT5pc1J1bm5pbmcpIHsKKyAgICAgICAgICAgIGF1dG8qIGNv
bnRleHRDb25uZWN0aW9uID0gbV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtlci0+
cmVnaXN0cmFibGVEb21haW4oKSk7CisgICAgICAgICAgICBBU1NFUlQoY29udGV4dENvbm5lY3Rp
b24pOworICAgICAgICAgICAgaWYgKGNvbnRleHRDb25uZWN0aW9uKQorICAgICAgICAgICAgICAg
IHBvc3RDb25uZWN0RXZlbnQoKmNvbnRleHRDb25uZWN0aW9uLCBzaGFyZWRXb3JrZXItPmlkZW50
aWZpZXIsIHBvcnQsIG9yaWdpbi5jbGllbnRPcmlnaW4udG9TdHJpbmcoKSk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlQoIXNoYXJlZFdvcmtlci0+aXNSdW5u
aW5nKTsKKworICAgIGF1dG8qIHNlcnZlckNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgIEFT
U0VSVChzZXJ2ZXJDb25uZWN0aW9uKTsKKworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwg
IldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtlcjogRmV0Y2hpbmcgc2hh
cmVkIHdvcmtlciBzY3JpcHQgaW4gY2xpZW50Iik7CisgICAgc2VydmVyQ29ubmVjdGlvbi0+ZmV0
Y2hTY3JpcHRJbkNsaWVudCh1cmwsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHdvcmtl
ck9wdGlvbnMsIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBzaGFyZWRXb3JrZXIgPSBX
ZWFrUHRyIHsgKnNoYXJlZFdvcmtlciB9XShXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmIGZl
dGNoUmVzdWx0KSB7CisgICAgICAgIGlmICh3ZWFrVGhpcyAmJiBzaGFyZWRXb3JrZXIpCisgICAg
ICAgICAgICB3ZWFrVGhpcy0+ZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRXb3JrZXJTY3JpcHQoKnNo
YXJlZFdvcmtlciwgV1RGTW92ZShmZXRjaFJlc3VsdCkpOworICAgIH0pOworfQorCit2b2lkIFdl
YlNoYXJlZFdvcmtlclNlcnZlcjo6bGF1bmNoU2hhcmVkV29ya2VyKFdlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uLCBTaGFyZWRXb3JrZXIm
IHNoYXJlZFdvcmtlcikKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6OmxhdW5jaFNoYXJlZFdvcmtlcjogY29udGV4dENvbm5lY3Rpb249JXAs
IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCAmY29udGV4dENvbm5lY3Rpb24sIHNo
YXJlZFdvcmtlci5pZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIGNvbnRleHRDb25uZWN0aW9u
LmxhdW5jaFNoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXIub3JpZ2luLCBzaGFyZWRXb3JrZXIuaWRl
bnRpZmllciwgc2hhcmVkV29ya2VyLnVybCwgc2hhcmVkV29ya2VyLndvcmtlck9wdGlvbnMsIHNo
YXJlZFdvcmtlci5mZXRjaFJlc3VsdCk7CisgICAgc2hhcmVkV29ya2VyLmlzUnVubmluZyA9IHRy
dWU7CisgICAgYXV0byBzb3VyY2VPcmlnaW4gPSBzaGFyZWRXb3JrZXIub3JpZ2luLmNsaWVudE9y
aWdpbi50b1N0cmluZygpOworICAgIGZvciAoYXV0byYgcG9ydCA6IHNoYXJlZFdvcmtlci5zaGFy
ZWRXb3JrZXJPYmplY3RzLnZhbHVlcygpKQorICAgICAgICBwb3N0Q29ubmVjdEV2ZW50KGNvbnRl
eHRDb25uZWN0aW9uLCBzaGFyZWRXb3JrZXIuaWRlbnRpZmllciwgcG9ydCwgc291cmNlT3JpZ2lu
KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnBvc3RDb25uZWN0RXZlbnQoV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24s
IFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYgc291cmNlUG9ydCwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VPcmlnaW4pCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAi
V2ViU2hhcmVkV29ya2VyU2VydmVyOjpwb3N0Q29ubmVjdEV2ZW50OiBjb250ZXh0Q29ubmVjdGlv
bj0lcCwgc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsICZjb250ZXh0Q29ubmVjdGlv
biwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBjb250ZXh0Q29ubmVj
dGlvbi5wb3N0Q29ubmVjdEV2ZW50KHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIHNvdXJjZVBvcnQs
IHNvdXJjZU9yaWdpbik7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpkaWRGaW5p
c2hGZXRjaGluZ1NoYXJlZFdvcmtlclNjcmlwdChTaGFyZWRXb3JrZXImIHdvcmtlciwgV2ViQ29y
ZTo6V29ya2VyRmV0Y2hSZXN1bHQmJiBmZXRjaFJlc3VsdCkKK3sKKyAgICBSRUxFQVNFX0xPRyhT
aGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5nU2hh
cmVkV29ya2VyU2NyaXB0IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHdvcmtl
cj0lcCwgc3VjY2Vzcz0lZCIsIHdvcmtlci5pZGVudGlmaWVyLnRvVUludDY0KCksICZ3b3JrZXIs
IGZldGNoUmVzdWx0LmVycm9yLmlzTnVsbCgpKTsKKyAgICBpZiAoIWZldGNoUmVzdWx0LmVycm9y
LmlzTnVsbCgpKSB7CisgICAgICAgIC8vIEZldGNoIGZhaWxlZCwgbm90aWZ5IHRoZSBTaGFyZWRX
b3JrZXIgb2JqZWN0cy4KKyAgICAgICAgZm9yIChhdXRvIHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIgOiB3b3JrZXIuc2hhcmVkV29ya2VyT2JqZWN0cy5rZXlzKCkpIHsKKyAgICAgICAgICAg
IGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgICAg
ICBzZXJ2ZXJDb25uZWN0aW9uLT5ub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRGYWlsdXJlKHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgICAgICB9CisgICAgICAgIG1fc2hhcmVkV29y
a2Vycy5yZW1vdmUod29ya2VyLmtleSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IHdvcmtlci5mZXRjaFJlc3VsdCA9IFdURk1vdmUoZmV0Y2hSZXN1bHQpOworCisgICAgYXV0byBy
ZWdpc3RyYWJsZURvbWFpbiA9IHdvcmtlci5yZWdpc3RyYWJsZURvbWFpbigpOworICAgIGF1dG8q
IGNvbnRleHRDb25uZWN0aW9uID0gY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFp
bihyZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKCFjb250ZXh0Q29ubmVjdGlvbikgeworICAg
ICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBsYXVuY2hTaGFyZWRXb3JrZXIoKmNvbnRleHRDb25uZWN0
aW9uLCB3b3JrZXIpOworfQorCitib29sIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6bmVlZHNDb250
ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8mIHNo
YXJlZFdvcmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAocmVn
aXN0cmFibGVEb21haW4ubWF0Y2hlcyhzaGFyZWRXb3JrZXItPnVybCkpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFdlYlNoYXJl
ZFdvcmtlclNlcnZlcjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQoreworICAgIEFTU0VSVCghbV9jb250
ZXh0Q29ubmVjdGlvbnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKTsKKyAgICBpZiAobV9w
ZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWlu
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2Vi
U2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbiB3aWxsIGNyZWF0ZSBh
IGNvbm5lY3Rpb24iKTsKKworICAgIG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWlucy5h
ZGQocmVnaXN0cmFibGVEb21haW4pOworICAgIG1fc2Vzc2lvbi5uZXR3b3JrUHJvY2VzcygpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6RXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzIHsgcmVnaXN0cmFibGVEb21haW4sIG1fc2Vzc2lvbi5zZXNzaW9uSUQo
KSB9LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVnaXN0cmFibGVEb21h
aW5dIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNy
ZWF0ZUNvbnRleHRDb25uZWN0aW9uIHNob3VsZCBub3cgaGF2ZSBjcmVhdGVkIGEgY29ubmVjdGlv
biIpOworCisgICAgICAgIEFTU0VSVChtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnMu
Y29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKTsKKyAgICAgICAgbV9wZW5kaW5nQ29udGV4dENv
bm5lY3Rpb25Eb21haW5zLnJlbW92ZShyZWdpc3RyYWJsZURvbWFpbik7CisKKyAgICAgICAgaWYg
KG1fY29udGV4dENvbm5lY3Rpb25zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAobmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJl
Z2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgICAgIGNyZWF0ZUNv
bnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICB9LCAwKTsKK30KKwordm9p
ZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmFkZENvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uKQoreworICAg
IFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29u
dGV4dENvbm5lY3Rpb24oJXApIHdlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgJmNvbnRl
eHRDb25uZWN0aW9uLCBjb250ZXh0Q29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRv
VUludDY0KCkpOworCisgICAgQVNTRVJUKCFtX2NvbnRleHRDb25uZWN0aW9ucy5jb250YWlucyhj
b250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpKSk7CisKKyAgICBtX2NvbnRleHRD
b25uZWN0aW9ucy5hZGQoY29udGV4dENvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSwgJmNv
bnRleHRDb25uZWN0aW9uKTsKKworICAgIGNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChjb250ZXh0
Q29ubmVjdGlvbik7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1vdmVDb250
ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBj
b250ZXh0Q29ubmVjdGlvbikKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI6OnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKCVwKSB3ZWJQcm9jZXNz
SWRlbnRpZmllcj0lIiBQUkl1NjQsICZjb250ZXh0Q29ubmVjdGlvbiwgY29udGV4dENvbm5lY3Rp
b24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKworICAgIGF1dG8gcmVnaXN0
cmFibGVEb21haW4gPSBjb250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpOworCisg
ICAgQVNTRVJUKG1fY29udGV4dENvbm5lY3Rpb25zLmdldChyZWdpc3RyYWJsZURvbWFpbikgPT0g
JmNvbnRleHRDb25uZWN0aW9uKTsKKworICAgIG1fY29udGV4dENvbm5lY3Rpb25zLnJlbW92ZShy
ZWdpc3RyYWJsZURvbWFpbik7CisKKyAgICBpZiAobmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJl
Z2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgY3JlYXRlQ29udGV4
dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtl
clNlcnZlcjo6Y29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFdlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uKQoreworICAgIFJFTEVBU0VfTE9H
KFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y29udGV4dENvbm5lY3Rpb25D
cmVhdGVkKCVwKSB3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQsICZjb250ZXh0Q29ubmVj
dGlvbiwgY29udGV4dENvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgp
KTsKKyAgICBhdXRvJiByZWdpc3RyYWJsZURvbWFpbiA9IGNvbnRleHRDb25uZWN0aW9uLnJlZ2lz
dHJhYmxlRG9tYWluKCk7CisgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3NoYXJlZFdvcmtlcnMu
dmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHdvcmtlci0+ZGlkRmluaXNoRmV0Y2hpbmcoKSAmJiBy
ZWdpc3RyYWJsZURvbWFpbi5tYXRjaGVzKHdvcmtlci0+dXJsKSkKKyAgICAgICAgICAgIGxhdW5j
aFNoYXJlZFdvcmtlcihjb250ZXh0Q29ubmVjdGlvbiwgKndvcmtlcik7CisgICAgfQorfQorCith
dXRvIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hhcmVkV29ya2VyQnlJZGVudGlmaWVyKFdlYkNv
cmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikgLT4gU2hh
cmVkV29ya2VyKgoreworICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9zaGFyZWRXb3JrZXJzLnZh
bHVlcygpKSB7CisgICAgICAgIGlmICh3b3JrZXItPmlkZW50aWZpZXIgPT0gc2hhcmVkV29ya2Vy
SWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiB3b3JrZXIuZ2V0KCk7CisgICAgfQorICAg
IHJldHVybiBudWxscHRyOworfQorCithdXRvIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hhcmVk
V29ya2VyQnlPYmplY3RJZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikgLT4gU2hhcmVkV29ya2VyKgorewor
ICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9zaGFyZWRXb3JrZXJzLnZhbHVlcygpKSB7CisgICAg
ICAgIGlmICh3b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMuY29udGFpbnMoc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllcikpCisgICAgICAgICAgICByZXR1cm4gd29ya2VyLmdldCgpOworICAg
IH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6
OnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK3sKKyAgICBhdXRvKiB3
b3JrZXIgPSBzaGFyZWRXb3JrZXJCeU9iamVjdElkZW50aWZpZXIoc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29y
a2VyU2VydmVyOjpzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheTogc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllcj0le3B1YmxpY31zLCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgd29ya2VyKTsKKyAgICBpZiAoIXdv
cmtlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgd29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3Rz
LnJlbW92ZShzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBpZiAoIXdvcmtlci0+
c2hhcmVkV29ya2VyT2JqZWN0cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHNo
dXREb3duU2hhcmVkV29ya2VyKHdvcmtlci0+a2V5KCkpOworfQorCit2b2lkIFdlYlNoYXJlZFdv
cmtlclNlcnZlcjo6c2h1dERvd25TaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29y
a2VyS2V5JiBrZXkpCit7CisgICAgYXV0byB3b3JrZXIgPSBtX3NoYXJlZFdvcmtlcnMudGFrZShr
ZXkpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZl
cjo6c2h1dERvd25TaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0
ICIsIHdvcmtlcj0lcCIsIHdvcmtlciA/IHdvcmtlci0+aWRlbnRpZmllci50b1VJbnQ2NCgpIDog
MCwgd29ya2VyLmdldCgpKTsKKyAgICBpZiAoIXdvcmtlcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byogY29udGV4dENvbm5lY3Rpb24gPSBjb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJh
YmxlRG9tYWluKHdvcmtlci0+cmVnaXN0cmFibGVEb21haW4oKSk7CisgICAgaWYgKCFjb250ZXh0
Q29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgY29udGV4dENvbm5lY3Rpb24tPnRl
cm1pbmF0ZVNoYXJlZFdvcmtlcih3b3JrZXItPmlkZW50aWZpZXIpOworCisgICAgaWYgKCFuZWVk
c0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4od29ya2VyLT5yZWdpc3RyYWJs
ZURvbWFpbigpKSkKKyAgICAgICAgY29udGV4dENvbm5lY3Rpb24tPmNvbm5lY3Rpb25Jc05vTG9u
Z2VyTmVlZGVkKCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjphZGRDb25uZWN0
aW9uKHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uPiYmIGNv
bm5lY3Rpb24pCit7CisgICAgYXV0byBwcm9jZXNzSWRlbnRpZmllciA9IGNvbm5lY3Rpb24tPndl
YlByb2Nlc3NJZGVudGlmaWVyKCk7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2Vi
U2hhcmVkV29ya2VyU2VydmVyOjphZGRDb25uZWN0aW9uKCVwKTogcHJvY2Vzc0lkZW50aWZpZXI9
JSIgUFJJdTY0LCBjb25uZWN0aW9uLmdldCgpLCBwcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKKyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbnMuY29udGFpbnMocHJvY2Vzc0lkZW50aWZpZXIp
KTsKKyAgICBtX2Nvbm5lY3Rpb25zLmFkZChwcm9jZXNzSWRlbnRpZmllciwgV1RGTW92ZShjb25u
ZWN0aW9uKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1vdmVDb25uZWN0
aW9uKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQoreworICAg
IGF1dG8gY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMudGFrZShwcm9jZXNzSWRlbnRpZmllcik7
CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpy
ZW1vdmVDb25uZWN0aW9uKCVwKTogcHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCBjb25uZWN0
aW9uLmdldCgpLCBwcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBBU1NFUlQoY29u
bmVjdGlvbik7CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllcj4gc2hhcmVkV29ya2VyT2JqZWN0c0dvaW5nQXdheTsKKyAgICBmb3IgKGF1dG8mIHdvcmtl
ciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBmb3IgKGF1dG8mIHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIgOiB3b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMua2V5
cygpKSB7CisgICAgICAgICAgICBpZiAoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9j
ZXNzSWRlbnRpZmllcigpID09IHByb2Nlc3NJZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIHNo
YXJlZFdvcmtlck9iamVjdHNHb2luZ0F3YXkuYXBwZW5kKHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIpOworICAgICAgICB9CisgICAgfQorICAgIGZvciAoYXV0byBzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyIDogc2hhcmVkV29ya2VyT2JqZWN0c0dvaW5nQXdheSkKKyAgICAgICAgc2hh
cmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7
Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlcjo6U2hhcmVkV29ya2VyOjpTaGFyZWRXb3JrZXIo
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25zKQorICAgIDogaWRlbnRpZmll
cihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQorICAgICwgb3Jp
Z2luKG9yaWdpbikKKyAgICAsIHVybCh1cmwpCisgICAgLCB3b3JrZXJPcHRpb25zKHdvcmtlck9w
dGlvbnMpCit7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpwb3N0RXhjZXB0aW9u
VG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIGF1dG8q
IHdvcmtlciA9IHNoYXJlZFdvcmtlckJ5SWRlbnRpZmllcihzaGFyZWRXb3JrZXJJZGVudGlmaWVy
KTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXI6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdDogc2hhcmVkV29ya2VySWRlbnRpZmll
cj0lIiBQUkl1NjQgIiwgd29ya2VyPSVwIiwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2
NCgpLCB3b3JrZXIpOworICAgIGlmICghd29ya2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBm
b3IgKGF1dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA6IHdvcmtlci0+c2hhcmVkV29y
a2VyT2JqZWN0cy5rZXlzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHNlcnZlckNvbm5lY3Rpb24g
PSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJ
ZGVudGlmaWVyKCkpKQorICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlvbi0+cG9zdEV4Y2VwdGlv
blRvV29ya2VyT2JqZWN0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGVycm9yTWVzc2Fn
ZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwpOworICAgIH0KK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzgzMWUwYTQyYWI0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyLmgKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVk
V29ya2VySWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyS2V5Lmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9Xb3JrZXJGZXRjaFJlc3VsdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29y
a2VyT3B0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK3N0cnVjdCBDbGllbnRPcmlnaW47Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBOZXR3b3JrU2Vzc2lvbjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b247CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOworCitj
bGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViU2hh
cmVkV29ya2VyU2VydmVyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgZXhwbGljaXQgV2ViU2hhcmVkV29ya2VyU2VydmVyKE5ldHdvcmtTZXNzaW9uJik7Cisg
ICAgfldlYlNoYXJlZFdvcmtlclNlcnZlcigpOworCisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKCk7CisKKyAgICB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFVSTCYmLCBXZWJD
b3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJik7
CisgICAgdm9pZCBzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKworICAgIHZvaWQgYWRkQ29udGV4dENvbm5lY3Rpb24o
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOworICAgIHZvaWQgcmVt
b3ZlQ29udGV4dENvbm5lY3Rpb24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbiYpOworCisgICAgdm9pZCBhZGRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uPiYmKTsKKyAgICB2b2lkIHJlbW92ZUNvbm5lY3Rpb24o
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOworCisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiogY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFp
bihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSB7IHJldHVybiBtX2Nv
bnRleHRDb25uZWN0aW9ucy5nZXQoZG9tYWluKTsgfQorCisgICAgdm9pZCBwb3N0RXhjZXB0aW9u
VG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBjcmVhdGVDb250ZXh0
Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOworCisgICAgYm9v
bCBuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKKyAgICB2b2lkIGNvbnRleHRDb25uZWN0aW9u
Q3JlYXRlZChXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CisKKyAg
ICBzdHJ1Y3QgU2hhcmVkV29ya2VyIDogQ2FuTWFrZVdlYWtQdHI8U2hhcmVkV29ya2VyPiB7Cisg
ICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKworICAgICAgICBTaGFyZWRX
b3JrZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgY29uc3QgVVJMJiwgY29uc3QgV2Vi
Q29yZTo6V29ya2VyT3B0aW9ucyYpOworCisgICAgICAgIGJvb2wgZGlkRmluaXNoRmV0Y2hpbmco
KSBjb25zdCB7IHJldHVybiAhIWZldGNoUmVzdWx0LnNjcmlwdDsgfQorICAgICAgICBXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJLZXkga2V5KCkgY29uc3QgeyByZXR1cm4geyBvcmlnaW4sIHVybCwgd29y
a2VyT3B0aW9ucy5uYW1lIH07IH0KKyAgICAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
cmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiB7IHVybCB9OyB9CisKKyAgICAgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmll
ciBpZGVudGlmaWVyOworICAgICAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luOworICAg
ICAgICBVUkwgdXJsOworICAgICAgICBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdvcmtlck9wdGlv
bnM7CisgICAgICAgIEhhc2hNYXA8V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydD4gc2hhcmVkV29ya2VyT2JqZWN0czsK
KyAgICAgICAgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQgZmV0Y2hSZXN1bHQ7CisgICAgICAg
IGJvb2wgaXNSdW5uaW5nIHsgZmFsc2UgfTsKKyAgICB9OworCisgICAgU2hhcmVkV29ya2VyKiBz
aGFyZWRXb3JrZXJCeUlkZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllcik7
CisgICAgU2hhcmVkV29ya2VyKiBzaGFyZWRXb3JrZXJCeU9iamVjdElkZW50aWZpZXIoV2ViQ29y
ZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRGaW5pc2hGZXRj
aGluZ1NoYXJlZFdvcmtlclNjcmlwdChTaGFyZWRXb3JrZXImLCBXZWJDb3JlOjpXb3JrZXJGZXRj
aFJlc3VsdCYmKTsKKyAgICB2b2lkIGxhdW5jaFNoYXJlZFdvcmtlcihXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiwgU2hhcmVkV29ya2VyJik7CisgICAgdm9pZCBwb3N0
Q29ubmVjdEV2ZW50KFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mLCBX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpUcmFuc2ZlcnJl
ZE1lc3NhZ2VQb3J0JiwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOworICAgIHZvaWQgc2h1
dERvd25TaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5Jik7CisKKyAg
ICBOZXR3b3JrU2Vzc2lvbiYgbV9zZXNzaW9uOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uPj4gbV9jb25uZWN0aW9uczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluLCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4gbV9jb250ZXh0
Q29ubmVjdGlvbnM7CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9w
ZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5zOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2hh
cmVkV29ya2VyS2V5LCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcmVkV29ya2VyPj4gbV9zaGFyZWRXb3Jr
ZXJzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uM2NmNjEwYjZiYjhhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIgor
CisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1dv
cmtlckZldGNoUmVzdWx0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjZGVmaW5lIENPTk5F
Q1RJT05fUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVw
IC0gW3dlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgbV93ZWJQcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2
NCgpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9S
KGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9j
ZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlv
bjo6IiBmbXQsIHRoaXMsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSwgIyNfX1ZB
X0FSR1NfXykKKworV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6V2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFdlYlNo
YXJlZFdvcmtlclNlcnZlciYgc2VydmVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKQorICAgIDogbV9j
b250ZW50Q29ubmVjdGlvbihjb25uZWN0aW9uKQorICAgICwgbV9uZXR3b3JrUHJvY2VzcyhuZXR3
b3JrUHJvY2VzcykKKyAgICAsIG1fc2VydmVyKHNlcnZlcikKKyAgICAsIG1fd2ViUHJvY2Vzc0lk
ZW50aWZpZXIod2ViUHJvY2Vzc0lkZW50aWZpZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNF
X0xPRygiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjoiKTsKK30KKworV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24o
KQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coIn5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uOiIpOworfQorCitJUEM6OkNvbm5lY3Rpb24qIFdlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9jb250ZW50Q29ubmVjdGlvbi5wdHIoKTsKK30KKworUEFMOjpTZXNzaW9uSUQgV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2Vzc2lvbklEKCkKK3sKKyAgICByZXR1cm4gc2Vy
dmVyKCkuc2Vzc2lvbklEKCk7Cit9CisKK05ldHdvcmtTZXNzaW9uKiBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uOjpzZXNzaW9uKCkKK3sKKyAgICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vz
cy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb246OnJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiYgb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFVSTCYmIHVybCwgV2ViQ29yZTo6VHJhbnNmZXJyZWRN
ZXNzYWdlUG9ydCYmIHBvcnQsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25z
KQoreworICAgIEFTU0VSVChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVu
dGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7IC8vIEZJWE1FOiBTaG91bGQgYmUg
YSBNRVNTQUdFX0NIRUNLKCkuCisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygicmVxdWVzdFNo
YXJlZFdvcmtlcjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAg
IGlmIChhdXRvKiBzZXNzaW9uID0gdGhpcy0+c2Vzc2lvbigpKQorICAgICAgICBzZXNzaW9uLT5l
bnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKS5yZXF1ZXN0U2hhcmVkV29ya2VyKFdURk1vdmUob3Jp
Z2luKSwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV1RGTW92ZSh1cmwpLCBXVEZNb3Zl
KHBvcnQpLCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMpKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uOjpmZXRjaFNjcmlwdEluQ2xpZW50KGNvbnN0IFVSTCYgdXJsLCBX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiZmV0Y2hTY3Jp
cHRJbkNsaWVudDogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAg
IHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbjo6RmV0Y2hTY3JpcHRJbkNsaWVudCB7IHVybCwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllciwgd29ya2VyT3B0aW9ucyB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisK
K3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6bm90aWZ5V29ya2VyT2JqZWN0
T2ZMb2FkRmFpbHVyZShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19F
UlJPUigibm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkRmFpbHVyZTogc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb246Ok5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZhaWx1cmUgeyBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIH0pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNl
cnZlckNvbm5lY3Rpb246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xP
R19FUlJPUigicG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0OiBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyPSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbjo6UG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0IHsgc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIHNvdXJjZVVSTCB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uOjpzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7CisgICAgQVNT
RVJUKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBt
X3dlYlByb2Nlc3NJZGVudGlmaWVyKTsgLy8gRklYTUU6IFNob3VsZCBiZSBhIE1FU1NBR0VfQ0hF
Q0soKS4KKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJzaGFyZWRXb3JrZXJPYmplY3RJc0dv
aW5nQXdheTogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGlm
IChhdXRvKiBzZXNzaW9uID0gdGhpcy0+c2Vzc2lvbigpKQorICAgICAgICBzZXNzaW9uLT5lbnN1
cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKS5zaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKK30KKworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFT
RV9MT0cKKyN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SCisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFy
ZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzY4NDlhYjAy
ZWFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFy
ZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNzgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nl
c3NJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3Vs
dDsKK3N0cnVjdCBXb3JrZXJPcHRpb25zOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgTmV0d29ya1Byb2Nlc3M7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI7CitjbGFzcyBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOworCitjbGFzcyBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVi
bGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
K3B1YmxpYzoKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9j
ZXNzJiwgV2ViU2hhcmVkV29ya2VyU2VydmVyJiwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIpOworICAgIH5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
KCk7CisKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlcigpIHsgcmV0dXJuIG1fc2Vy
dmVyOyB9CisgICAgY29uc3QgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIoKSBjb25zdCB7
IHJldHVybiBtX3NlcnZlcjsgfQorCisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCk7Cisg
ICAgTmV0d29ya1Nlc3Npb24qIHNlc3Npb24oKTsKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUHJvY2Vzc0lk
ZW50aWZpZXI7IH0KKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAgICB2b2lkIGZldGNoU2NyaXB0SW5DbGllbnQo
Y29uc3QgVVJMJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6V29ya2VyT3B0aW9ucyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
V29ya2VyRmV0Y2hSZXN1bHQmJik+JiYpOworICAgIHZvaWQgbm90aWZ5V29ya2VyT2JqZWN0T2ZM
b2FkRmFpbHVyZShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICB2
b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKworcHJpdmF0ZToK
KyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdl
U2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5k
ZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQorCisgICAgLy8gSVBD
IG1lc3NhZ2VzLgorICAgIHZvaWQgcmVxdWVzdFNoYXJlZFdvcmtlcihXZWJDb3JlOjpDbGllbnRP
cmlnaW4mJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgVVJMJiYsIFdl
YkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYm
KTsKKyAgICB2b2lkIHNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KFdlYkNvcmU6OlNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworCisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9j
b250ZW50Q29ubmVjdGlvbjsKKyAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nl
c3M7CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBtX3NlcnZlcjsKKyAgICBXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1No
YXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLmZhZTRhMDgwMzc3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uIE5vdFJlZkNvdW50ZWQgeworICAgIFJlcXVlc3RTaGFyZWRXb3JrZXIoc3RydWN0IFdl
YkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgVVJMIHVybCwgV2ViQ29yZTo6
VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBwb3J0LCBzdHJ1Y3QgV2ViQ29yZTo6V29ya2VyT3B0aW9u
cyB3b3JrZXJPcHRpb25zKQorICAgIFNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KFdlYkNv
cmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllcikKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVk
V29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi40OWMxMTI0MTUyMTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZl
ci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworI2RlZmluZSBDT05URVhUX0NPTk5FQ1RJT05f
UkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gW3dl
YlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJ
bnQ2NCgpLCAjI19fVkFfQVJHU19fKQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIFdlYlNoYXJlZFdvcmtlclNlcnZlciYg
c2VydmVyKQorICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX3NlcnZlcihz
ZXJ2ZXIpCisgICAgLCBtX3JlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKQorewor
ICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjoiKTsKKyAgICBzZXJ2ZXIuYWRkQ29udGV4dENvbm5lY3Rpb24o
KnRoaXMpOworfQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp+
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpCit7CisgICAgQ09OVEVY
VF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJ+V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjoiKTsKKyAgICBpZiAobV9zZXJ2ZXIgJiYgbV9zZXJ2ZXItPmNvbnRleHRDb25u
ZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4oKSkgPT0gdGhpcykK
KyAgICAgICAgbV9zZXJ2ZXItPnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKCp0aGlzKTsKK30KKwor
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6d2ViUHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBt
X2Nvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKTsKK30KKworSVBDOjpDb25uZWN0aW9u
JiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjppcGNDb25uZWN0aW9u
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKTsKK30KKwor
SVBDOjpDb25uZWN0aW9uKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuICZpcGNDb25u
ZWN0aW9uKCk7Cit9CisKK3VpbnQ2NF90IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gMDsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Ojpjb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpCit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9O
X1JFTEVBU0VfTE9HKCJjb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZDoiKTsKKyAgICBtX2Nvbm5l
Y3Rpb24uc2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVk
ZWQoKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Ojpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRp
ZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwg
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
KQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygicG9zdEV4Y2VwdGlvblRv
V29ya2VyT2JqZWN0OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29y
a2VySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBpZiAobV9zZXJ2ZXIpCisgICAgICAgIG1f
c2VydmVyLT5wb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qoc2hhcmVkV29ya2VySWRlbnRpZmll
ciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCk7Cit9
CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bGF1bmNo
U2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25zLCBjb25z
dCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYgZmV0Y2hSZXN1bHQpCit7CisgICAgQ09OVEVY
VF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJsYXVuY2hTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtl
cklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6TGF1bmNoU2hhcmVkV29ya2VyIHsgb3JpZ2luLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVy
LCB1cmwsIHdvcmtlck9wdGlvbnMsIGZldGNoUmVzdWx0IH0pOworfQorCit2b2lkIFdlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnBvc3RDb25uZWN0RXZlbnQoV2ViQ29y
ZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiBwb3J0LCBjb25zdCBTdHJpbmcmIHNvdXJj
ZU9yaWdpbikKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coInBvc3RDb25u
ZWN0RXZlbnQ6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6UG9zdENvbm5lY3RFdmVudCB7IHNoYXJlZFdvcmtl
cklkZW50aWZpZXIsIHBvcnQsIHNvdXJjZU9yaWdpbiB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp0ZXJtaW5hdGVTaGFyZWRXb3JrZXIoV2Vi
Q29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyKQorewor
ICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygidGVybWluYXRlU2hhcmVkV29ya2Vy
OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VySWRlbnRpZmll
ci50b1VJbnQ2NCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OlRlcm1pbmF0ZVNoYXJlZFdvcmtlciB7IHNoYXJlZFdvcmtlcklk
ZW50aWZpZXIgfSk7Cit9CisKKyN1bmRlZiBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0cK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mMDdmZjAzYTMzZDQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAi
TWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2Vy
SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZWdpc3RyYWJsZURv
bWFpbjsKK2NsYXNzIFNjcmlwdEJ1ZmZlcjsKK3N0cnVjdCBDbGllbnRPcmlnaW47CitzdHJ1Y3Qg
V29ya2VyRmV0Y2hSZXN1bHQ7CitzdHJ1Y3QgV29ya2VyT3B0aW9uczsKK30KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworY2xhc3Mg
V2ViU2hhcmVkV29ya2VyU2VydmVyOworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGlj
IElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mLCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImKTsKKyAgICB+V2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbigpOworCisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIg
d2ViUHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdDsKKyAgICBjb25zdCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJh
YmxlRG9tYWluOyB9CisgICAgSVBDOjpDb25uZWN0aW9uJiBpcGNDb25uZWN0aW9uKCkgY29uc3Q7
CisKKyAgICB2b2lkIGxhdW5jaFNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4mLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBX
ZWJDb3JlOjpXb3JrZXJPcHRpb25zJiwgY29uc3QgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQm
KTsKKyAgICB2b2lkIHBvc3RDb25uZWN0RXZlbnQoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYsIGNvbnN0IFN0cmlu
ZyYgc291cmNlT3JpZ2luKTsKKyAgICB2b2lkIHRlcm1pbmF0ZVNoYXJlZFdvcmtlcihXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKKworICAgIHZvaWQgY29ubmVjdGlvbklzTm9Mb25n
ZXJOZWVkZWQoKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDIG1lc3NhZ2Vz
LgorICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdv
cmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCisgICAgLy8g
SVBDOjpNZXNzYWdlU2VuZGVyLgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGlu
YXRpb25JRCgpIGNvbnN0IGZpbmFsOworCisgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmIG1fY29ubmVjdGlvbjsKKyAgICBXZWFrUHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlcj4gbV9z
ZXJ2ZXI7CisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFp
bjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hZTQ3YzEy
MmNiYWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1No
YXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCkBAIC0wLDAgKzEsMjUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisj
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
KyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworbWVzc2FnZXMgLT4gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbiBOb3RSZWZDb3VudGVkIHsKKyAgICBQb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2Vi
Q29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBTdHJp
bmcgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgU3RyaW5n
IHNvdXJjZVVSTCkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2lu
Zy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKaW5kZXggNDRlMGE3YWNiN2I1
Li43YjdjYzliYWM0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2lu
Zy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCkBAIC05Nyw2ICs5Nyw3
IEBAIGV4dGVybiAiQyIgewogICAgIE0oU2VydmljZVdvcmtlcikgXAogICAgIE0oU2Vzc2lvblN0
YXRlKSBcCiAgICAgTShTaGFyZWREaXNwbGF5TGlzdHMpIFwKKyAgICBNKFNoYXJlZFdvcmtlcikg
XAogICAgIE0oU3RvcmFnZSkgXAogICAgIE0oU3RvcmFnZUFQSSkgXAogICAgIE0oVGV4dElucHV0
KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA3ZWJmYTUx
NmI1MDMuLjFhMjYxZTBiMTBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CkBAIC0zMDMsMTAgKzMwMywxMyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9y
d2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50
SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoJywKKyAgICAg
ICAgJ1dlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXInLAorICAgICAgICAnV2ViQ29yZTo6
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTbGVlcERp
c2FibGVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTb3VyY2VCdWZmZXJBcHBlbmRN
b2RlJywKICAgICAgICAgJ1dlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U3RvcmFnZVR5cGUnLAorICAgICAgICAn
V2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCcsCiAgICAgICAgICdXZWJDb3JlOjpVc2Vy
TWVkaWFSZXF1ZXN0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpXZWJMb2NrSWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpXZWJTb2NrZXRJZGVudGlmaWVyJywKQEAgLTg1MSw2
ICs4NTQsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6
OlRleHRDaGVja2luZ1R5cGUnOiBbJzxXZWJDb3JlL1RleHRDaGVja2luZy5oPiddLAogICAgICAg
ICAnV2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGEnOiBbJzxXZWJDb3JlL1RleHRJbmRpY2F0b3Iu
aD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUnOiBb
JzxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPiddLAorICAgICAgICAnV2ViQ29yZTo6
VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCc6IFsnPFdlYkNvcmUvTWVzc2FnZVdpdGhNZXNzYWdlUG9y
dHMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlVzZWRMZWdhY3lUTFMnOiBbJzxXZWJDb3JlL1Jl
c291cmNlUmVzcG9uc2VCYXNlLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpWaWRlb1ByZXNldERh
dGEnOiBbJzxXZWJDb3JlL1ZpZGVvUHJlc2V0Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpWaWV3
cG9ydEF0dHJpYnV0ZXMnOiBbJzxXZWJDb3JlL1ZpZXdwb3J0QXJndW1lbnRzLmg+J10sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dAppbmRleCBkZjQ3Yzc4NmM4ZGUuLmU0YzA3ODc1MmYzMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0x
NDEsNiArMTQxLDEwIEBAIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dPcmlnaW5T
dG9yZS5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyQ29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiAKK05ldHdvcmtQ
cm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwCitOZXR3b3JrUHJv
Y2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAKK05l
dHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcAorCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdl
TWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5k
bGUuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVn
aXN0cnkuY3BwCkBAIC03ODIsNiArNzg2LDkgQEAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2lu
VGFibGUuY3BwCiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudC5jcHAKIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3Bw
CitXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmNwcAorV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b24uY3BwCitXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwCiAK
IFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAogCkBA
IC04ODQsMyArODkxLDcgQEAgUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5TWVzc2FnZVJlY2VpdmVyLmNw
cAogU2VydmljZVdvcmtlckRvd25sb2FkVGFza01lc3NhZ2VSZWNlaXZlci5jcHAKIFdlYkJyb2Fk
Y2FzdENoYW5uZWxSZWdpc3RyeU1lc3NhZ2VSZWNlaXZlci5jcHAKIFdlYkxvY2tSZWdpc3RyeVBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bk1lc3NhZ2VSZWNlaXZlci5jcHAKK1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25NZXNz
YWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
TWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggYTY3ODM2N2E3NzVhLi4zMzAy
MGJkNWMzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTI5LDcgKzUyOSw3IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6dGVybWluYXRlV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciB3ZWJQcm9jCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVVucmVzcG9u
c2l2ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJv
Y2Vzc0lkZW50aWZpZXIpCiB7CiAgICAgaWYgKFJlZlB0ciBwcm9jZXNzID0gV2ViUHJvY2Vzc1By
b3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihwcm9jZXNzSWRlbnRpZmllcikpIHsKLSAgICAgICAg
cHJvY2Vzcy0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgICAgIHByb2Nlc3MtPmRpc2Fi
bGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiAg
ICAgICAgIHByb2Nlc3MtPnJlcXVlc3RUZXJtaW5hdGlvbihQcm9jZXNzVGVybWluYXRpb25SZWFz
b246OkV4Y2VlZGVkQ1BVTGltaXQpOwogICAgIH0KIH0KQEAgLTE0MTUsMTYgKzE0MTUsMjEgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkoV2ViVXNlckNvbnRlbnQKIH0KICNlbmRpZgogCit2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2hhcmVkV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUocmVnaXN0cmFibGVEb21h
aW4pLCBzZXNzaW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNo
U2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWdpc3RyYWJs
ZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewotICAgIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKCp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhYmxl
RG9tYWluKSwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBzZXNzaW9uSUQsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2Vydmlj
ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXVEZNb3ZlKHJlZ2lzdHJh
YmxlRG9tYWluKSwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBzZXNzaW9uSUQsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpz
ZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIGlmIChhdXRvKiBwcm9jZXNzID0gV2Vi
UHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihpZGVudGlmaWVyKSkKLSAgICAgICAg
cHJvY2Vzcy0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgICAgIHByb2Nlc3MtPmRpc2Fi
bGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50
UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwg
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVy
KQpAQCAtMTQ2MCw2ICsxNDY1LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZW5kU2Vy
dmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJCiB9CiAjZW5k
aWYKIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIp
Cit7CisgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJ
ZGVudGlmaWVyKGlkZW50aWZpZXIpKQorICAgICAgICBwcm9jZXNzLT5kaXNhYmxlV29ya2VycyhX
ZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlcik7Cit9CisKIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCBjdXJy
ZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVkLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHF1b3RhKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSRUxFQVNFX0xPRyhTdG9yYWdlLCAiJXAgLSBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlIiwgdGhpcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmlu
ZGV4IGE0ZTM2NDVlYmFhZS4uNjg0MWEzNGZlMDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMzM0LDYgKzMz
NCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJv
Y2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lk
ZW50aWZpZXIpOwogICAgIHZvaWQgZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5n
KFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmll
cik7CiAjZW5kaWYKKyAgICB2b2lkIHNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25n
ZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOworICAgIHZvaWQgZXN0YWJsaXNo
U2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogCiAgICAgdm9pZCB0ZXJtaW5hdGVXZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDEyZDA2Y2Vi
ZDYyYS4uMTU3NTdlZDlhMjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC02
MCw2ICs2MCw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2
ZXIgewogICAgIFN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikKICAgICBF
bmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQogI2VuZGlmCisgICAgRXN0YWJs
aXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpIC0+ICgpIEFzeW5jCisgICAgU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xv
bmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQogCiAgICAg
U2V0V2ViUHJvY2Vzc0hhc1VwbG9hZHMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vz
c0lELCBib29sIGhhc1VwbG9hZCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggZTQ5OTM1YzMyNWY2Li4xYWNiMzQ0NGFmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzY5MSwxMSArMzY5MSw5IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KQogICAgICAgICByZXR1
cm47CiAgICAgbV91c2VyQWdlbnQgPSBXVEZNb3ZlKHVzZXJBZ2VudCk7CiAKLSNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAgICAgLy8gV2UgdXBkYXRlIHRoZSBzZXJ2aWNlIHdvcmtlciB0aGVy
ZSBhdCB0aGUgbW9tZW50IHRvIGJlIHN1cmUgd2UgdXNlIHZhbHVlcyB1c2VkIGJ5IGFjdHVhbCB3
ZWIgcGFnZXMuCiAgICAgLy8gRklYTUU6IFJlZmFjdG9yIHRoaXMgd2hlbiB3ZSBoYXZlIGEgYmV0
dGVyIFVzZXItQWdlbnQgc3RvcnkuCi0gICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCkudXBkYXRl
U2VydmljZVdvcmtlclVzZXJBZ2VudChtX3VzZXJBZ2VudCk7Ci0jZW5kaWYKKyAgICBwcm9jZXNz
KCkucHJvY2Vzc1Bvb2woKS51cGRhdGVXb3JrZXJVc2VyQWdlbnQobV91c2VyQWdlbnQpOwogCiAg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggYWZjMjNlZTUzZjEyLi40YjE5
YjBkMWQzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
QEAgLTUyOSw3ICs1MjksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRXZWJBdXRoblByb2Nl
c3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1BybwogYm9vbCBXZWJQcm9j
ZXNzUG9vbDo6c191c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzID0gZmFsc2U7CiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hT
ZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9j
ZXNzUHJveHkmIHByb3h5LCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBz
dGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6
ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhS
ZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIs
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8qIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJzaXRl
RGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChzZXNzaW9uSUQpOwogICAg
IGlmICghd2Vic2l0ZURhdGFTdG9yZSkKQEAgLTU0Niw3ICs1NDYsNyBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKE5ldAogICAgIGlmIChzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIpIHsKICAgICAg
ICAgLy8gVGhpcyBpcyBhIHNlcnZpY2Ugd29ya2VyIGZvciBhIHNlcnZpY2Ugd29ya2VyIHBhZ2Ug
c28gd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgdXNlIHVzZSB0aGUgcGFnZSdzIFdlYlByb2Nlc3Mg
Zm9yIHRoZSBzZXJ2aWNlIHdvcmtlci4KICAgICAgICAgaWYgKChzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihzZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXItPnByb2Nlc3NJZGVudGlmaWVyKCkpKSkgewotICAgICAgICAgICAg
c2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlU2VydmljZVdvcmtlcnMocHJvY2Vzc1Bv
b2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2aWNlV29ya2VycygpKTsK
KyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVdvcmtlcnMoV2Vi
UHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBwcm9jZXNzUG9vbC0+dXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CiAgICAgICAgICAgICBp
ZiAoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKSB7CiAgICAg
ICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nlc3Mo
KnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NDYWNoZTo6U2hvdWxkU2h1dERv
d25Qcm9jZXNzOjpObyk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFzZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpOwpAQCAtNTY0LDcgKzU2NCw3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MoTmV0CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAg
ICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBwcm9jZXNzLnB0cigpOwotICAgICAgICAg
ICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlU2VydmljZVdvcmtlcnMocHJvY2Vz
c1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2aWNlV29ya2Vycygp
KTsKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVdvcmtlcnMo
V2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBwcm9jZXNzUG9vbC0+
dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CiAKICAgICAgICAg
ICAgIGlmIChzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpIHsK
ICAgICAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hlKCkucmVtb3ZlUHJv
Y2Vzcygqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0NhY2hlOjpTaG91bGRT
aHV0RG93blByb2Nlc3M6Ok5vKTsKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQ
b29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKE5ldAogICAgIH0KIAogICAgIGlmICghc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSkgewot
ICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9y
U2VydmljZVdvcmtlcnMoKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiAgeyByZWdpc3Ry
YWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIGF1dG8gbmV3UHJvY2Vz
c1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdlYlByb2Nlc3NQcm94
eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURv
bWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CiAgICAgICAg
IHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBuZXdQcm9jZXNzUHJveHkucHRyKCk7CiAKICAg
ICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElDKFNlcnZpY2VXb3JrZXIsICJl
c3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIGNy
ZWF0aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nlcz0lcCwgUElEPSVkKSIs
IHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPnBy
b2Nlc3NJZGVudGlmaWVyKCkpOwpAQCAtNTg2LDIwICs1ODYsNzAgQEAgdm9pZCBXZWJQcm9jZXNz
UG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhOZXQKICAgICAgICAgcHJvY2Vzc1Bvb2wtPm1fcHJvY2Vzc2VzLmFwcGVuZChXVEZNb3Zl
KG5ld1Byb2Nlc3NQcm94eSkpOwogICAgIH0KIAotICAgIEFTU0VSVCghc2VydmljZVdvcmtlclBy
b2Nlc3NlcygpLmNvbnRhaW5zKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KSk7Ci0gICAgc2Vy
dmljZVdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSk7Cisg
ICAgd29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KTsKIAot
ICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250
ZXh0KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQb29s
LT5tX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVm
YXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJsZURvbWFpbiwg
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Ci0gICAgaWYgKCFwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyVXNlckFnZW50LmlzTnVsbCgp
KQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRTZXJ2aWNlV29ya2VyVXNl
ckFnZW50KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQpOworICAgIHNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KHByb2Nl
c3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVy
ZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVu
Y2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRp
ZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmICghcHJvY2Vzc1Bvb2wt
Pm1fd29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQorICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5LT5zZXRXb3JrZXJVc2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFnZW50
KTsKIH0KKyNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVGcm9tU2VydmljZVdv
cmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCit2b2lkIFdlYlByb2Nlc3NQ
b29sOjpyZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykK
IHsKLSAgICBBU1NFUlQoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmNvbnRhaW5zKHByb2Nlc3Mp
KTsKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkucmVtb3ZlKHByb2Nlc3MpOworICAgIEFT
U0VSVCh3b3JrZXJQcm9jZXNzZXMoKS5jb250YWlucyhwcm9jZXNzKSk7CisgICAgd29ya2VyUHJv
Y2Vzc2VzKCkucmVtb3ZlKHByb2Nlc3MpOworfQorCit2b2lkIFdlYlByb2Nlc3NQb29sOjplc3Rh
Ymxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0
aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Npb25JRCk7CisgICAgaWYgKCF3ZWJzaXRlRGF0
YVN0b3JlKQorICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdERhdGFTdG9yZSgpLnB0cigpOworICAgIGlmICghcHJvY2Vzc1Bvb2xzKCkuc2l6ZSgpKQor
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPFdlYlByb2Nlc3NQb29sPj4gc2hhcmVk
V29ya2VyUHJvY2Vzc1Bvb2woV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6OlByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbjo6Y3JlYXRlKCkuZ2V0KCkpKTsKKworICAgIC8vIEFyYml0cmFyaWx5IGNo
b29zZSB0aGUgZmlyc3QgcHJvY2VzcyBwb29sIHRvIGhvc3QgdGhlIHNoYXJlZCB3b3JrZXIgcHJv
Y2Vzcy4KKyAgICBhdXRvKiBwcm9jZXNzUG9vbCA9IHByb2Nlc3NQb29scygpWzBdOworICAgIEFT
U0VSVChwcm9jZXNzUG9vbCk7CisKKyAgICBXZWJQcm9jZXNzUHJveHkqIHNoYXJlZFdvcmtlclBy
b2Nlc3NQcm94eSB7IG51bGxwdHIgfTsKKworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nl
c3NQb29sLT5tX3Byb2Nlc3NlcykgeworICAgICAgICBpZiAocHJvY2Vzcy5wdHIoKSA9PSBwcm9j
ZXNzUG9vbC0+bV9wcmV3YXJtZWRQcm9jZXNzLmdldCgpIHx8IHByb2Nlc3MtPmlzRHVtbXlQcm9j
ZXNzUHJveHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoJnByb2Nlc3Mt
PndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIGlmICghcHJvY2Vzcy0+aXNNYXRjaGluZ1JlZ2lzdHJhYmxlRG9tYWlu
KHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eSA9IHByb2Nlc3MucHRyKCk7CisgICAgICAgIHNoYXJlZFdv
cmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5
cGU6OlNoYXJlZFdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXJGb3JXb3JrZXJzKCkpOworCisgICAgICAgIGlmIChzaGFyZWRXb3JrZXJQcm9jZXNzUHJv
eHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSkgeworICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPndlYlBy
b2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nlc3MoKnNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSwgV2Vi
UHJvY2Vzc0NhY2hlOjpTaG91bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKKyAgICAgICAgICAgIEFT
U0VSVCghc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpOworICAg
ICAgICB9CisKKyAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElDKFNoYXJl
ZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcyByZXVzaW5nIGFuIGV4aXN0aW5nIHdlYiBwcm9jZXNzIChwcm9jZXNzPSVwLCBQSUQ9
JWQpIiwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LCBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkt
PnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAo
IXNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSkgeworICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94
eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yV29ya2VycyhXZWJQcm9jZXNzUHJveHk6Oldv
cmtlclR5cGU6OlNoYXJlZFdvcmtlciwgKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiAg
eyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIHNoYXJl
ZFdvcmtlclByb2Nlc3NQcm94eSA9IG5ld1Byb2Nlc3NQcm94eS5wdHIoKTsKKworICAgICAgICBX
RUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNo
U2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIGNyZWF0aW5nIGEg
bmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nlc3M9JXAsIFBJRD0lZCkiLCBzaGFyZWRX
b3JrZXJQcm9jZXNzUHJveHksIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50
aWZpZXIoKSk7CisKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmluaXRpYWxpemVOZXdXZWJQcm9jZXNz
KG5ld1Byb2Nlc3NQcm94eSwgd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIHByb2Nlc3NQb29s
LT5tX3Byb2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdQcm9jZXNzUHJveHkpKTsKKyAgICB9CisK
KyAgICB3b3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSk7CisK
KyAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRl
eHQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNzUG9vbC0+bV93b3Jr
ZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVsdFBhZ2VHcm91cC0+
cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJsZURvbWFpbiwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFnZW50Lmlz
TnVsbCgpKQorICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPnNldFdvcmtlclVzZXJB
Z2VudChwcm9jZXNzUG9vbC0+bV93b3JrZXJVc2VyQWdlbnQpOwogfQotI2VuZGlmCiAKIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKQogewpA
QCAtMTAwMywxMCArMTA1Myw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9j
ZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIAogICAgIG1fYmFja0ZvcndhcmRDYWNoZS0+
cmVtb3ZlRW50cmllc0ZvclByb2Nlc3MocHJvY2Vzcyk7CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCi0gICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKLSAgICAg
ICAgcmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7Ci0jZW5kaWYKKyAg
ICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdXb3JrZXJzKCkpCisgICAgICAgIHJlbW92ZUZyb21Xb3Jr
ZXJQcm9jZXNzZXMocHJvY2Vzcyk7CiAKICAgICBzdGF0aWNfY2FzdDxXZWJDb250ZXh0U3VwcGxl
bWVudCo+KHN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpLT5wcm9jZXNz
RGlkQ2xvc2UoJnByb2Nlc3MpOwogCkBAIC0xMDY3LDEyICsxMTE1LDEyIEBAIFJlZjxXZWJQcm9j
ZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4oV2Vi
c2l0ZURhdGFTdG9yCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1Vc2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyIFdlYlByb2Nlc3NQb29sOjp1c2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKQorVXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllciBXZWJQcm9jZXNzUG9vbDo6dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZv
cldvcmtlcnMoKQogewotICAgIGlmICghbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNl
V29ya2VyKQotICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclNlcnZpY2VXb3JrZXIg
PSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKCk7CisgICAgaWYgKCFtX3Vz
ZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtlcnMpCisgICAgICAgIG1fdXNlckNvbnRlbnRDb250
cm9sbGVyRm9yV29ya2VycyA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpjcmVhdGUo
KTsKIAotICAgIHJldHVybiBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclNlcnZpY2VXb3JrZXIt
PmlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JXb3Jr
ZXJzLT5pZGVudGlmaWVyKCk7CiB9CiAjZW5kaWYKIApAQCAtMTExOSwxNSArMTE2NywxMyBAQCBS
ZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50
JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogCiAgICAgYXV0byBwYWdlID0gcHJvY2Vzcy0+Y3JlYXRl
V2ViUGFnZShwYWdlQ2xpZW50LCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAKLSNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNl
cykgewotICAgICAgICBtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA9IHBhZ2UtPnByZWZlcmVu
Y2VzU3RvcmUoKTsKLSAgICAgICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IHNl
cnZpY2VXb3JrZXJQcm9jZXNzZXMoKSkKLSAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNz
LnVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKCptX3NlcnZpY2VXb3JrZXJQcmVm
ZXJlbmNlcyk7CisgICAgaWYgKCFtX3dvcmtlclByZWZlcmVuY2VzKSB7CisgICAgICAgIG1fd29y
a2VyUHJlZmVyZW5jZXMgPSBwYWdlLT5wcmVmZXJlbmNlc1N0b3JlKCk7CisgICAgICAgIGZvciAo
YXV0byYgd29ya2VyUHJvY2VzcyA6IHdvcmtlclByb2Nlc3NlcygpKQorICAgICAgICAgICAgd29y
a2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKCptX3dvcmtlclByZWZlcmVu
Y2VzKTsKICAgICB9CiAgICAgaWYgKHVzZXJDb250ZW50Q29udHJvbGxlcikKLSAgICAgICAgbV91
c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyID0gdXNlckNvbnRlbnRDb250cm9s
bGVyOwotI2VuZGlmCisgICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2VycyA9
IHVzZXJDb250ZW50Q29udHJvbGxlcjsKIAogICAgIGJvb2wgZW5hYmxlUHJvY2Vzc1N3YXBPbkNy
b3NzU2l0ZU5hdmlnYXRpb24gPSBwYWdlLT5wcmVmZXJlbmNlcygpLnByb2Nlc3NTd2FwT25Dcm9z
c1NpdGVOYXZpZ2F0aW9uRW5hYmxlZCgpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0x
MTUwLDE2ICsxMTk2LDE0IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVh
dGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAgICAgcmV0dXJuIHBh
Z2U7CiB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3NQb29s
Ojp1cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQor
dm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYg
dXNlckFnZW50KQogewotICAgIGlmIChtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQgPT0gdXNlckFn
ZW50KQorICAgIGlmIChtX3dvcmtlclVzZXJBZ2VudCA9PSB1c2VyQWdlbnQpCiAgICAgICAgIHJl
dHVybjsKLSAgICBtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQgPSB1c2VyQWdlbnQ7Ci0gICAgZm9y
IChhdXRvJiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSkK
LSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3Muc2V0U2VydmljZVdvcmtlclVzZXJBZ2VudCht
X3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQpOworICAgIG1fd29ya2VyVXNlckFnZW50ID0gdXNlckFn
ZW50OworICAgIGZvciAoYXV0byYgd29ya2VyUHJvY2VzcyA6IHdvcmtlclByb2Nlc3NlcygpKQor
ICAgICAgICB3b3JrZXJQcm9jZXNzLnNldFdvcmtlclVzZXJBZ2VudChtX3dvcmtlclVzZXJBZ2Vu
dCk7CiB9Ci0jZW5kaWYKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUJlZ2luVXNpbmdXZWJz
aXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0
b3JlJiBkYXRhU3RvcmUpCiB7CkBAIC0xNTM4LDggKzE1ODIsMTMgQEAgdm9pZCBXZWJQcm9jZXNz
UG9vbDo6dGVybWluYXRlU2VydmljZVdvcmtlcnMoKQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07Ci0gICAgd2hpbGUgKHNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMoKS5jb21wdXRlU2l6ZSgpKQotICAgICAgICBzZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzKCkuYmVnaW4oKS0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgVmVjdG9y
PFJlZjxXZWJQcm9jZXNzUHJveHk+PiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOworICAgIHdvcmtl
clByb2Nlc3NlcygpLmZvckVhY2goWyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICAgICAgaWYgKHBy
b2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKKyAgICAgICAgICAgIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzZXMuYXBwZW5kKHByb2Nlc3MpOworICAgIH0pOworICAgIGZvciAoYXV0byYgc2Vy
dmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKQorICAgICAgICBzZXJ2
aWNlV29ya2VyUHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJU
eXBlOjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgogfQogCkBAIC0xNzY3LDEzICsxODE2LDExIEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcG9ydFdlYkNvbnRlbnRDUFVUaW1lKFNlY29uZHMgY3B1
VGltZSwgdWludDY0X3QgYWN0aXZpdHlTCiAjZW5kaWYKIH0KIAotI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLVdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIFdlYlByb2Nlc3NQb29sOjpz
ZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkKK1dlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIFdl
YlByb2Nlc3NQb29sOjp3b3JrZXJQcm9jZXNzZXMoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+PiBwcm9jZXNzZXM7CiAgICAgcmV0dXJu
IHByb2Nlc3NlczsKIH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9j
ZXNzQXNzZXJ0aW9ucygpCiB7CkBAIC0xNzg1LDIwICsxODMyLDI1IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkKICAgICBpZiAoYXV0byogZ3B1UHJvY2Vz
cyA9IEdQVVByb2Nlc3NQcm94eTo6c2luZ2xldG9uSWZDcmVhdGVkKCkpCiAgICAgICAgIGdwdVBy
b2Nlc3MtPnVwZGF0ZVByb2Nlc3NBc3NlcnRpb24oKTsKICNlbmRpZgotI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKKwogICAgIC8vIENoZWNrIG9uIG5leHQgcnVuIGxvb3Agc2luY2UgdGhlIHdl
YiBwcm9jZXNzIHByb3h5IHRva2VucyBhcmUgcHJvYmFibHkgYmVpbmcgdXBkYXRlZC4KICAgICBj
YWxsT25NYWluUnVuTG9vcChbXSB7Ci0gICAgICAgIGZvciAoYXV0byYgc2VydmljZVdvcmtlclBy
b2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkpCi0gICAgICAgICAgICBzZXJ2aWNlV29y
a2VyUHJvY2Vzcy51cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOwotICAgIH0p
OworICAgICAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFtdKGF1dG8mIHdvcmtlclByb2Nl
c3MpIHsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgICAgICAgICBpZiAod29ya2Vy
UHJvY2Vzcy5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQorICAgICAgICAgICAgICAgIHdvcmtl
clByb2Nlc3MudXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXZWJQcm9jZXNzUHJveHk6Oldv
cmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogI2VuZGlmCisgICAgICAgICAgICBpZiAod29ya2Vy
UHJvY2Vzcy5pc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkpCisgICAgICAgICAgICAgICAgd29ya2Vy
UHJvY2Vzcy51cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdlYlByb2Nlc3NQcm94eTo6V29y
a2VyVHlwZTo6U2hhcmVkV29ya2VyKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIGJvb2wg
V2ViUHJvY2Vzc1Bvb2w6OmlzU2VydmljZVdvcmtlclBhZ2VJRChXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHBhZ2VJRCkgY29uc3QKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgLy8g
RklYTUU6IFRoaXMgaXMgaW5lZmZpY2llbnQuCi0gICAgcmV0dXJuIFdURjo6YW55T2Yoc2Vydmlj
ZVdvcmtlclByb2Nlc3NlcygpLCBbcGFnZUlEXShhdXRvJiBwcm9jZXNzKSB7CisgICAgcmV0dXJu
IFdURjo6YW55T2Yod29ya2VyUHJvY2Vzc2VzKCksIFtwYWdlSURdKGF1dG8mIHByb2Nlc3MpIHsK
ICAgICAgICAgcmV0dXJuIHByb2Nlc3MuaGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShwYWdlSUQp
OwogICAgIH0pOwogI2VuZGlmCkBAIC0yMTI0LDE2ICsyMTc2LDI2IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnNldFVzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoYm9vbCB1c2VTZXBhcmF0
ZVNlcnZpY2VXCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCitzaXplX3QgV2ViUHJv
Y2Vzc1Bvb2w6OnNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25zdAoreworICAgIHVuc2ln
bmVkIGNvdW50ID0gMDsKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFsmXShhdXRvJiBw
cm9jZXNzKSB7CisgICAgICAgIGlmIChwcm9jZXNzLmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkp
CisgICAgICAgICAgICArK2NvdW50OworICAgIH0pOworICAgIHJldHVybiBjb3VudDsKK30KKwog
Ym9vbCBXZWJQcm9jZXNzUG9vbDo6aGFzU2VydmljZVdvcmtlckZvcmVncm91bmRBY3Rpdml0eUZv
clRlc3RpbmcoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6OmFueU9mKHNlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2VzcykgeworICAgIHJldHVybiBXVEY6OmFueU9mKHdv
cmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiBwcm9j
ZXNzLmhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCk7CiAgICAg
fSk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6Omhhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5k
QWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjphbnlPZihzZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICByZXR1cm4gV1RG
OjphbnlPZih3b3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2VzcykgewogICAgICAgICBy
ZXR1cm4gcHJvY2Vzcy5oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9yVGVzdGlu
ZygpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgK
aW5kZXggZWI2NmQ4OTQ5MGRmLi5lNzBiNmY0MjlmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMzc0LDE3ICszNzQsMjAgQEAgcHVibGljOgogICAgIHZv
aWQgbmV0d29ya1Byb2Nlc3NEaWRUZXJtaW5hdGUoTmV0d29ya1Byb2Nlc3NQcm94eSYsIE5ldHdv
cmtQcm9jZXNzUHJveHk6OlRlcm1pbmF0aW9uUmVhc29uKTsKIAogICAgIGJvb2wgaXNTZXJ2aWNl
V29ya2VyUGFnZUlEKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpIGNvbnN0OworICAgIHZvaWQgcmVt
b3ZlRnJvbVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmKTsKKwogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKLSAgICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgcmVt
b3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5Jik7Ci0gICAgc2l6
ZV90IHNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25zdCB7IHJldHVybiBzZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzKCkuY29tcHV0ZVNpemUoKTsgfQotICAgIHZvaWQgdXBkYXRlU2VydmljZVdv
cmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCk7Ci0gICAgVXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllciB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2Vy
dmljZVdvcmtlcnMoKTsKKyAgICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgc2l6ZV90IHNlcnZpY2VXb3JrZXJQcm94aWVzQ291
bnQoKSBjb25zdDsKKyAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCk7CiAgICAgYm9vbCBoYXNTZXJ2aWNl
V29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0OwogICAgIGJvb2wgaGFz
U2VydmljZVdvcmtlckJhY2tncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdDsKICNlbmRp
ZgogICAgIHZvaWQgc2VydmljZVdvcmtlclByb2Nlc3NDcmFzaGVkKFdlYlByb2Nlc3NQcm94eSYp
OwogCisgICAgdm9pZCB1cGRhdGVXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQpOworICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNl
c3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKwogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgpIGNvbnN0OwogI2VuZGlm
CkBAIC02MTgsMTMgKzYyMSwxMSBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDxQQUw6OlNlc3Np
b25JRCwgV2Vha1B0cjxXZWJQcm9jZXNzUHJveHk+PiBtX2R1bW15UHJvY2Vzc1Byb3hpZXM7IC8v
IExpZ2h0d2VpZ2h0IFdlYlByb2Nlc3NQcm94eSBvYmplY3RzIHdpdGhvdXQgYmFja2luZyBwcm9j
ZXNzLgogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHN0YXRpYyBXZWFrSGFzaFNl
dDxXZWJQcm9jZXNzUHJveHk+JiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCk7Ci0gICAgYm9vbCBt
X3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24geyBmYWxzZSB9OwotICAg
IFN0cmluZyBtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQ7Ci0gICAgc3RkOjpvcHRpb25hbDxXZWJQ
cmVmZXJlbmNlc1N0b3JlPiBtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlczsKLSAgICBSZWZQdHI8
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+IG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9y
U2VydmljZVdvcmtlcjsKLSNlbmRpZgorICAgIHN0YXRpYyBXZWFrSGFzaFNldDxXZWJQcm9jZXNz
UHJveHk+JiB3b3JrZXJQcm9jZXNzZXMoKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8V2ViUHJlZmVy
ZW5jZXNTdG9yZT4gbV93b3JrZXJQcmVmZXJlbmNlczsKKyAgICBSZWZQdHI8V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk+IG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2VyczsKKyAg
ICBTdHJpbmcgbV93b3JrZXJVc2VyQWdlbnQ7CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAg
ICAgUmVmUHRyPEdQVVByb2Nlc3NQcm94eT4gbV9ncHVQcm9jZXNzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggY2FjMzY3ZjExMTlmLi41Y2Y4NmNj
Nzg2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApA
QCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0
ZURhdGFGZXRjaE9wdGlvbi5oIgpAQCAtMTgyLDExICsxODMsMTEgQEAgUmVmPFdlYlByb2Nlc3NQ
cm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29s
LCBXZWJzaXQKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLVJlZjxXZWJQcm9jZXNz
UHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMoV2ViUHJvY2Vz
c1Bvb2wmIHByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWlu
LCBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQorUmVmPFdlYlByb2Nlc3NQcm94
eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdvcmtlclR5cGUgd29ya2VyVHlw
ZSwgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lz
dHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQogewogICAg
IGF1dG8gcHJveHkgPSBhZG9wdFJlZigqbmV3IFdlYlByb2Nlc3NQcm94eShwcm9jZXNzUG9vbCwg
JndlYnNpdGVEYXRhU3RvcmUsIElzUHJld2FybWVkOjpObywgQ3Jvc3NPcmlnaW5Nb2RlOjpTaGFy
ZWQsIENhcHRpdmVQb3J0YWxNb2RlOjpEaXNhYmxlZCkpOwogICAgIHByb3h5LT5tX3JlZ2lzdHJh
YmxlRG9tYWluID0gV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgcHJveHktPmVuYWJs
ZVNlcnZpY2VXb3JrZXJzKHByb2Nlc3NQb29sLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXJGb3JTZXJ2aWNlV29ya2VycygpKTsKKyAgICBwcm94eS0+ZW5hYmxlV29ya2Vycyh3b3JrZXJU
eXBlLCBwcm9jZXNzUG9vbC51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2Vy
cygpKTsKICAgICBwcm94eS0+Y29ubmVjdCgpOwogICAgIHJldHVybiBwcm94eTsKIH0KQEAgLTk5
NSwxMCArOTk2LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNp
dmUoKQogICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBpc1Jlc3BvbnNpdmVDYWxsYmFja3MpCiAg
ICAgICAgIGNhbGxiYWNrKGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUpOwogCi0gICAgLy8gSWYgdGhl
IHdlYiBwcm9jZXNzIGJlY29tZXMgdW5yZXNwb25zaXZlIGFuZCBvbmx5IHJ1bnMgc2VydmljZSB3
b3JrZXJzLCBraWxsIGl0IG91cnNlbHZlcyBzaW5jZSB0aGVyZSBhcmUgbm8gbmF0aXZlIGNsaWVu
dHMgdG8gZG8gaXQuCi0gICAgaWYgKGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkgJiYgbV9wYWdl
TWFwLmlzRW1wdHkoKSkgewotICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0dfRVJS
T1IoUGVyZm9ybWFuY2VMb2dnaW5nLCAiZGlkQmVjb21lVW5yZXNwb25zaXZlOiBUZXJtaW5hdGlu
ZyBzZXJ2aWNlIHdvcmtlci1vbmx5IHdlYiBwcm9jZXNzIGJlY2F1c2UgaXQgaXMgdW5yZXNwb25z
aXZlIik7Ci0gICAgICAgIGRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgIC8vIElmIHRoZSB3
ZWIgcHJvY2VzcyBiZWNvbWVzIHVucmVzcG9uc2l2ZSBhbmQgb25seSBydW5zIHNlcnZpY2Uvc2hh
cmVkIHdvcmtlcnMsIGtpbGwgaXQgb3Vyc2VsdmVzIHNpbmNlIHRoZXJlIGFyZSBubyBuYXRpdmUg
Y2xpZW50cyB0byBkbyBpdC4KKyAgICBpZiAoaXNSdW5uaW5nV29ya2VycygpICYmIG1fcGFnZU1h
cC5pc0VtcHR5KCkpIHsKKyAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HX0VSUk9S
KFBlcmZvcm1hbmNlTG9nZ2luZywgImRpZEJlY29tZVVucmVzcG9uc2l2ZTogVGVybWluYXRpbmcg
d29ya2VyLW9ubHkgd2ViIHByb2Nlc3MgYmVjYXVzZSBpdCBpcyB1bnJlc3BvbnNpdmUiKTsKKyAg
ICAgICAgZGlzYWJsZVdvcmtlcnMoeyBXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBXb3JrZXJU
eXBlOjpTaGFyZWRXb3JrZXIgfSk7CiAgICAgICAgIHRlcm1pbmF0ZSgpOwogICAgIH0KIH0KQEAg
LTE2OTQsOCArMTY5NSw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvck1haW5GcmFtZShjb25zdCBVUkwmIHVybCkKICAgICBhdXRvIHJlZ2lzdHJhYmxl
RG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfTsKICAgICBpZiAobV9y
ZWdpc3RyYWJsZURvbWFpbiAmJiAqbV9yZWdpc3RyYWJsZURvbWFpbiAhPSByZWdpc3RyYWJsZURv
bWFpbikgewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICAgICAgZGlzYWJsZVNlcnZp
Y2VXb3JrZXJzKCk7CisgICAgICAgIGRpc2FibGVXb3JrZXJzKFdvcmtlclR5cGU6OlNlcnZpY2VX
b3JrZXIpOwogI2VuZGlmCisKICAgICAgICAgLy8gTnVsbCBvdXQgcmVnaXN0cmFibGUgZG9tYWlu
IHNpbmNlIHRoaXMgcHJvY2VzcyBoYXMgbm93IGJlZW4gdXNlZCBmb3Igc2V2ZXJhbCBkb21haW5z
LgogICAgICAgICBtX3JlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4geyB9OwogICAgICAgICByZXR1cm47CkBAIC0xODY2LDYwICsxODY4LDg1IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVm
ZXJlbmNlc1N0b3JlJiBzCiB7CiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKExvYWRp
bmcsICJlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dDogU3RhcnRlZCIpOwogICAgIG1hcmtQ
cm9jZXNzQXNSZWNlbnRseVVzZWQoKTsKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OldlYlByb2Nlc3M6OkVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRlZmF1bHRQYWdlR3JvdXAoKS5wYWdlR3JvdXBJ
RCgpLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VQcm94eUlE
LCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VJRCwgc3RvcmUs
IHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIG1fc2Vydmlj
ZVdvcmtlckluZm9ybWF0aW9uLT5pbml0aWFsaXphdGlvbkRhdGEgfSwgW3RoaXMsIHdlYWtUaGlz
ID0gV2Vha1B0ciB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bvb2woKS5kZWZhdWx0UGFnZUdyb3VwKCkucGFnZUdyb3Vw
SUQoKSwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPndvcmtlclBhZ2VQcm94eUlELCBtX3Nl
cnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+d29ya2VyUGFnZUlELCBzdG9yZSwgcmVnaXN0cmFibGVE
b21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgbV9zZXJ2aWNlV29ya2VySW5mb3Jt
YXRpb24tPmluaXRpYWxpemF0aW9uRGF0YSB9LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAgICAgICAgICAgV0VCUFJPQ0VT
U1BST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4
dDogRmluaXNoZWQiKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9LCAwKTsK
IH0KKyNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0U2VydmljZVdvcmtlclVzZXJB
Z2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRX
b3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiB7Ci0gICAgQVNTRVJUKG1f
c2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6U2V0VXNlckFnZW50IHsgdXNlckFnZW50IH0sIDApOworI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24pCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpTZXRVc2VyQWdlbnQgeyB1c2VyQWdlbnQgfSwgMCk7CisjZW5kaWYKKyAgICBpZiAobV9zaGFy
ZWRXb3JrZXJJbmZvcm1hdGlvbikKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2VyQWdlbnQgfSwg
MCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29ya2VyUHJlZmVy
ZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKK3ZvaWQgV2ViUHJv
Y2Vzc1Byb3h5Ojp1cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVu
Y2VzU3RvcmUmIHN0b3JlKQogewotICAgIEFTU0VSVChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlv
bik7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVw
ZGF0ZVByZWZlcmVuY2VzU3RvcmUgeyBzdG9yZSB9LCAwKTsKKyNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCisgICAgaWYgKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQorICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5j
ZXNTdG9yZSB7IHN0b3JlIH0sIDApOworI2VuZGlmCisgICAgaWYgKG1fc2hhcmVkV29ya2VySW5m
b3JtYXRpb24pCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDApOwog
fQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3Nl
cnRpb24oKQorLy8gRklYTUU6IENsaWVudHMgZG8gbm90IHByb3Blcmx5IGdldCBwb3B1bGF0ZWQg
aW4gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbi4KK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRh
dGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGUgd29ya2VyVHlwZSkKIHsKLSAgICBX
RUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVTZXJ2
aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbjoiKTsKLSAgICBBU1NFUlQobV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb24pOwotICAgIGlmICghbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAg
YXV0byYgd29ya2VySW5mb3JtYXRpb24gPSB3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNoYXJl
ZFdvcmtlciA/IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gOiBtX3NlcnZpY2VXb3JrZXJJbmZv
cm1hdGlvbjsKKyAgICBBU1NFUlQod29ya2VySW5mb3JtYXRpb24pOworICAgIGlmICghd29ya2Vy
SW5mb3JtYXRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgc2hvdWxkVGFrZUZvcmVn
cm91bmRBY3Rpdml0eSA9IFdURjo6YW55T2YobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNs
aWVudFByb2Nlc3NlcywgWyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICBXRUJQUk9DRVNTUFJPWFlf
UkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0
aW9uOiB3b3JrZXJUeXBlPSV7cHVibGljfXMiLCB3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNo
YXJlZFdvcmtlciA/ICJzaGFyZWQiIDogInNlcnZpY2UiKTsKKworICAgIGJvb2wgc2hvdWxkVGFr
ZUZvcmVncm91bmRBY3Rpdml0eSA9IFdURjo6YW55T2Yod29ya2VySW5mb3JtYXRpb24tPmNsaWVu
dFByb2Nlc3NlcywgWyZdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuICZwcm9jZXNz
ICE9IHRoaXMgJiYgISFwcm9jZXNzLm1fZm9yZWdyb3VuZFRva2VuOwogICAgIH0pOwogICAgIGlm
IChzaG91bGRUYWtlRm9yZWdyb3VuZEFjdGl2aXR5KSB7Ci0gICAgICAgIGlmICghUHJvY2Vzc1Ro
cm90dGxlcjo6aXNWYWxpZEZvcmVncm91bmRBY3Rpdml0eShtX3NlcnZpY2VXb3JrZXJJbmZvcm1h
dGlvbi0+YWN0aXZpdHkpKQotICAgICAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24t
PmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuZm9yZWdyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtl
ciBmb3IgZm9yZWdyb3VuZCB2aWV3KHMpIl9zKTsKKyAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0
bGVyOjppc1ZhbGlkRm9yZWdyb3VuZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0
eSkpCisgICAgICAgICAgICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxl
ci5mb3JlZ3JvdW5kQWN0aXZpdHkoIldvcmtlciBmb3IgZm9yZWdyb3VuZCB2aWV3KHMpIl9zKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGJvb2wgc2hvdWxkVGFrZUJhY2tncm91bmRB
Y3Rpdml0eSA9IFdURjo6YW55T2YobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNsaWVudFBy
b2Nlc3NlcywgWyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICBib29sIHNob3VsZFRha2VCYWNrZ3Jv
dW5kQWN0aXZpdHkgPSBXVEY6OmFueU9mKHdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNz
ZXMsIFsmXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiAmcHJvY2VzcyAhPSB0aGlz
ICYmICEhcHJvY2Vzcy5tX2JhY2tncm91bmRUb2tlbjsKICAgICB9KTsKICAgICBpZiAoc2hvdWxk
VGFrZUJhY2tncm91bmRBY3Rpdml0eSkgewotICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6
OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFj
dGl2aXR5KSkKLSAgICAgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0
eSA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJh
Y2tncm91bmQgdmlldyhzKSJfcyk7CisgICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNW
YWxpZEJhY2tncm91bmRBY3Rpdml0eSh3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQorICAg
ICAgICAgICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuYmFja2dy
b3VuZEFjdGl2aXR5KCJXb3JrZXIgZm9yIGJhY2tncm91bmQgdmlldyhzKSJfcyk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFBy
b2Nlc3NpbmcpIHsKKyAgICBpZiAod29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTZXJ2aWNlV29y
a2VyICYmIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKSB7CiAgICAgICAg
IFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlNlcnZpY2Ug
V29ya2VyIGZvciBiYWNrZ3JvdW5kIHByb2Nlc3NpbmciKTsKLSAgICAgICAgaWYgKCFQcm9jZXNz
VGhyb3R0bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5KG1fc2VydmljZVdvcmtlckluZm9y
bWF0aW9uLT5hY3Rpdml0eSkpCi0gICAgICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlv
bi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29y
a2VyIGZvciBiYWNrZ3JvdW5kIHByb2Nlc3NpbmciX3MpOworICAgICAgICBpZiAoIVByb2Nlc3NU
aHJvdHRsZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkod29ya2VySW5mb3JtYXRpb24tPmFj
dGl2aXR5KSkKKyAgICAgICAgICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhy
b3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tncm91bmQg
cHJvY2Vzc2luZyJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3NlcnZpY2VX
b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBudWxscHRyOworICAgIHdvcmtlckluZm9ybWF0
aW9uLT5hY3Rpdml0eSA9IG51bGxwdHI7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojplc3Rh
Ymxpc2hTaGFyZWRXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3Jl
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBXRUJQUk9DRVNTUFJP
WFlfUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4
dDogU3RhcnRlZCIpOworICAgIG1hcmtQcm9jZXNzQXNSZWNlbnRseVVzZWQoKTsKKyAgICBzZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFNoYXJlZFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVs
dFBhZ2VHcm91cCgpLnBhZ2VHcm91cElEKCksIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24tPndv
cmtlclBhZ2VQcm94eUlELCBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uLT53b3JrZXJQYWdlSUQs
IHN0b3JlLCByZWdpc3RyYWJsZURvbWFpbiwgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbi0+aW5p
dGlhbGl6YXRpb25EYXRhIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
eworICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVM
RUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dDogRmlu
aXNoZWQiKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9LCAwKTsKK30KKwor
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKwogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlZ2lz
dGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKIHsK
ICAgICBpZiAoIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQpAQCAtMTkyNyw3ICsxOTU0LDcg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nl
c3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKIAogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNF
X0xPRyhTZXJ2aWNlV29ya2VyLCAicmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2Vzczog
Y2xpZW50UHJvY2Vzcz0lcCwgY2xpZW50UElEPSVkIiwgJnByb3h5LCBwcm94eS5wcm9jZXNzSWRl
bnRpZmllcigpKTsKICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vz
c2VzLmFkZChwcm94eSk7Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24o
KTsKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VX
b3JrZXIpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dW5yZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCkBAIC0xOTM3LDcgKzE5NjQs
NyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQ
cm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveAogCiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVB
U0VfTE9HKFNlcnZpY2VXb3JrZXIsICJ1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nl
c3M6IGNsaWVudFByb2Nlc3M9JXAsIGNsaWVudFBJRD0lZCIsICZwcm94eSwgcHJveHkucHJvY2Vz
c0lkZW50aWZpZXIoKSk7CiAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNsaWVudFBy
b2Nlc3Nlcy5yZW1vdmUocHJveHkpOwotICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNz
ZXJ0aW9uKCk7CisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlOjpT
ZXJ2aWNlV29ya2VyKTsKIH0KIAogYm9vbCBXZWJQcm9jZXNzUHJveHk6Omhhc1NlcnZpY2VXb3Jr
ZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKQEAgLTE5NTcsNyArMTk4NCw3
IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJv
Y2Vzc2luZygpCiAKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3Bl
bnNpb24sICJzdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyIpOwogICAgIG1f
aGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nID0gdHJ1ZTsKLSAgICB1cGRhdGVT
ZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOworICAgIHVwZGF0ZVdvcmtlclByb2Nlc3NB
c3NlcnRpb24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAKIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjplbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoKQpAQCAtMTk2Nywy
MyArMTk5NCwzOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5kU2VydmljZVdvcmtlckJhY2tn
cm91bmRQcm9jZXNzaW5nKCkKIAogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9j
ZXNzU3VzcGVuc2lvbiwgImVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyIpOwog
ICAgIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nID0gZmFsc2U7Ci0gICAg
dXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKKyAgICB1cGRhdGVXb3JrZXJQ
cm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogfQogI2VuZGlmIC8v
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpc2FibGVT
ZXJ2aWNlV29ya2VycygpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlzYWJsZVdvcmtlcnMoT3B0
aW9uU2V0PFdvcmtlclR5cGU+IHdvcmtlclR5cGUpCiB7Ci0gICAgaWYgKCFtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbikKKyAgICBBU1NFUlQoIXdvcmtlclR5cGUuaXNFbXB0eSgpKTsKKworICAg
IGJvb2wgZGlkQ2hhbmdlID0gZmFsc2U7CisgICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMoV29y
a2VyVHlwZTo6U2VydmljZVdvcmtlcikgJiYgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pIHsK
KyAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gPSB7IH07CisgICAgICAgIGRpZENo
YW5nZSA9IHRydWU7CisgICAgfQorICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5
cGU6OlNoYXJlZFdvcmtlcikgJiYgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbikgeworICAgICAg
ICBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uID0geyB9OworICAgICAgICBkaWRDaGFuZ2UgPSB0
cnVlOworICAgIH0KKyAgICBpZiAoIWRpZENoYW5nZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
V0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJkaXNhYmxlU2Vydmlj
ZVdvcmtlcnM6Iik7Ci0gICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gPSB7IH07CisgICAg
V0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJkaXNhYmxlV29ya2VyczogRGlz
YWJsaW5nIHdvcmtlcnMgKFNoYXJlZFdvcmtlcnM9JWQsIFNlcnZpY2VXb3JrZXJzPSVkKSIsIHdv
cmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSwgd29ya2VyVHlwZS5j
b250YWlucyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSk7CisKICAgICB1cGRhdGVCYWNrZ3Jv
dW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwogCisgICAgaWYgKCFpc1J1bm5pbmdXb3JrZXJzKCkp
CisgICAgICAgIHByb2Nlc3NQb29sKCkucmVtb3ZlRnJvbVdvcmtlclByb2Nlc3NlcygqdGhpcyk7
CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgcHJvY2Vzc1Bvb2woKS5yZW1vdmVG
cm9tU2VydmljZVdvcmtlclByb2Nlc3NlcygqdGhpcyk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNsb3NlIHsgfSwgMCk7CisgICAgaWYgKHdvcmtl
clR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikpCisgICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9zZSB7IH0sIDApOwog
I2VuZGlmCisgICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2hhcmVkV29y
a2VyKSkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpDbG9zZSB7IH0sIDApOwogCiAgICAgbWF5YmVTaHV0RG93bigpOwogfQpA
QCAtMjAwNCwxMSArMjA0NywxMyBAQCBzdGF0aWMgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb21waWxl
ZENvbnRlbnRSdWxlTGlzdERhdGEsIFVSTD4+IGNvbnRlbnRSdWxlTGlzdHNGcgogfQogI2VuZGlm
CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVTZXJ2aWNlV29ya2Vycyhjb25zdCBVc2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVdvcmtlcnMoV29ya2VyVHlwZSB3b3Jr
ZXJUeXBlLCBjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJiB1c2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyKQogewotICAgIEFTU0VSVCghbV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb24pOwotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2Vy
LCAiZW5hYmxlU2VydmljZVdvcmtlcnM6Iik7Ci0gICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24gPSBTZXJ2aWNlV29ya2VySW5mb3JtYXRpb24geworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxF
QVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiZW5hYmxlV29ya2Vyczogd29ya2VyVHlwZT0ldSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPih3b3JrZXJUeXBlKSk7CisgICAgYXV0byYgd29ya2VySW5mb3Jt
YXRpb24gPSB3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/IG1fc2hhcmVk
V29ya2VySW5mb3JtYXRpb24gOiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsKKyAgICBBU1NF
UlQoIXdvcmtlckluZm9ybWF0aW9uKTsKKworICAgIHdvcmtlckluZm9ybWF0aW9uID0gV29ya2Vy
SW5mb3JtYXRpb24gewogICAgICAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
LAogICAgICAgICBQYWdlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwKICAgICAgICAgU2VydmljZVdv
cmtlckluaXRpYWxpemF0aW9uRGF0YSB7CkBAIC0yMDIxLDkgKzIwNjYsOCBAQCB2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6ZW5hYmxlU2VydmljZVdvcmtlcnMoY29uc3QgVXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllcgogICAgICAgICB7IH0KICAgICB9OwogICAgIHVwZGF0ZUJhY2tncm91bmRS
ZXNwb25zaXZlbmVzc1RpbWVyKCk7Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHVw
ZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKKworICAgIHVwZGF0
ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24od29ya2VyVHlwZSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpkaWRDcmVhdGVTbGVlcERpc2FibGVyKFNsZWVwRGlzYWJsZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcmVhc29uLCBib29sIGRpc3BsYXkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGY1MTRiOTkxNmFkNC4uMTkyZDVk
MmI2ZjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAt
MTM2LDkgKzEzNiwxMyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZExhdW5jaFBy
b2Nlc3MgOiBib29sIHsgTm8sIFllcyB9OwogICAgIGVudW0gY2xhc3MgQ2FwdGl2ZVBvcnRhbE1v
ZGUgOiBib29sIHsgRGlzYWJsZWQsIEVuYWJsZWQgfTsKKyAgICBlbnVtIGNsYXNzIFdvcmtlclR5
cGUgOiB1aW50MzJfdCB7CisgICAgICAgIFNlcnZpY2VXb3JrZXIgPSAxIDw8IDAsCisgICAgICAg
IFNoYXJlZFdvcmtlciA9IDEgPDwgMQorICAgIH07CiAKICAgICBzdGF0aWMgUmVmPFdlYlByb2Nl
c3NQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sJiwgV2Vic2l0ZURhdGFTdG9yZSosIENhcHRp
dmVQb3J0YWxNb2RlLCBJc1ByZXdhcm1lZCwgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlID0gV2Vi
Q29yZTo6Q3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQsIFNob3VsZExhdW5jaFByb2Nlc3MgPSBTaG91
bGRMYXVuY2hQcm9jZXNzOjpZZXMpOwotICAgIHN0YXRpYyBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBj
cmVhdGVGb3JTZXJ2aWNlV29ya2VycyhXZWJQcm9jZXNzUG9vbCYsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKKyAgICBzdGF0aWMgUmVmPFdlYlByb2Nl
c3NQcm94eT4gY3JlYXRlRm9yV29ya2VycyhXb3JrZXJUeXBlLCBXZWJQcm9jZXNzUG9vbCYsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKIAogICAgIH5X
ZWJQcm9jZXNzUHJveHkoKTsKIApAQCAtMTYxLDggKzE2NSw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldElzSW5Qcm9jZXNzQ2FjaGUoYm9vbCwgV2lsbFNodXREb3duID0gV2lsbFNodXREb3duOjpO
byk7CiAgICAgYm9vbCBpc0luUHJvY2Vzc0NhY2hlKCkgY29uc3QgeyByZXR1cm4gbV9pc0luUHJv
Y2Vzc0NhY2hlOyB9CiAKLSAgICB2b2lkIGVuYWJsZVNlcnZpY2VXb3JrZXJzKGNvbnN0IFVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXImKTsKLSAgICB2b2lkIGRpc2FibGVTZXJ2aWNlV29y
a2VycygpOworICAgIHZvaWQgZW5hYmxlV29ya2VycyhXb3JrZXJUeXBlLCBjb25zdCBVc2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyJik7CisgICAgdm9pZCBkaXNhYmxlV29ya2VycyhPcHRp
b25TZXQ8V29ya2VyVHlwZT4pOwogCiAgICAgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFT
dG9yZSgpIGNvbnN0IHsgQVNTRVJUKG1fd2Vic2l0ZURhdGFTdG9yZSk7IHJldHVybiAqbV93ZWJz
aXRlRGF0YVN0b3JlOyB9CiAgICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRh
U3RvcmUmKTsKQEAgLTE5NCw2ICsxOTgsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzUnVubmlu
Z1NlcnZpY2VXb3JrZXJzKCkgY29uc3QgeyByZXR1cm4gISFtX3NlcnZpY2VXb3JrZXJJbmZvcm1h
dGlvbjsgfQogICAgIGJvb2wgaXNTdGFuZGFsb25lU2VydmljZVdvcmtlclByb2Nlc3MoKSBjb25z
dCB7IHJldHVybiBpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpICYmICFwYWdlQ291bnQoKTsgfQor
ICAgIGJvb2wgaXNSdW5uaW5nU2hhcmVkV29ya2VycygpIGNvbnN0IHsgcmV0dXJuICEhbV9zaGFy
ZWRXb3JrZXJJbmZvcm1hdGlvbjsgfQorICAgIGJvb2wgaXNTdGFuZGFsb25lU2hhcmVkV29ya2Vy
UHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIGlzUnVubmluZ1NoYXJlZFdvcmtlcnMoKSAmJiAhcGFn
ZUNvdW50KCk7IH0KKyAgICBib29sIGlzUnVubmluZ1dvcmtlcnMoKSBjb25zdCB7IHJldHVybiBt
X3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIHx8IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOyB9
CiAKICAgICBib29sIGlzRHVtbXlQcm9jZXNzUHJveHkoKSBjb25zdDsKIApAQCAtMzU5LDEyICsz
NjYsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVBdWRpYmxlTWVkaWFBc3NlcnRpb25z
KCk7CiAKKyAgICB2b2lkIHNldFdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKKyAgICB2
b2lkIHVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZSYpOworICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVm
ZXJlbmNlc1N0b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2Vy
dGlvbihXb3JrZXJUeXBlKTsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBl
c3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwg
Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRTZXJ2aWNl
V29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgdXBkYXRlU2VydmljZVdv
cmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwotICAgIGJv
b2wgaGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQ
cm94eUlEKSB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiAmJiBtX3NlcnZpY2VX
b3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VQcm94eUlEID09IHBhZ2VQcm94eUlE
OyB9Ci0gICAgdm9pZCB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOworICAg
IGJvb2wgaGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBh
Z2VQcm94eUlEKSB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiAmJiBtX3NlcnZp
Y2VXb3JrZXJJbmZvcm1hdGlvbi0+d29ya2VyUGFnZVByb3h5SUQgPT0gcGFnZVByb3h5SUQ7IH0K
ICAgICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1By
b3h5Jik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2Vi
UHJvY2Vzc1Byb3h5Jik7CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2
aXR5Rm9yVGVzdGluZygpIGNvbnN0OwpAQCAtNjQ4LDE0ICs2NTYsMTUgQEAgcHJpdmF0ZToKICNl
bmRpZgogICAgIFJlZlB0cjxMb2dnZXI+IG1fbG9nZ2VyOwogCi0gICAgc3RydWN0IFNlcnZpY2VX
b3JrZXJJbmZvcm1hdGlvbiB7Ci0gICAgICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgc2Vydmlj
ZVdvcmtlclBhZ2VQcm94eUlEOwotICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBzZXJ2
aWNlV29ya2VyUGFnZUlEOworICAgIHN0cnVjdCBXb3JrZXJJbmZvcm1hdGlvbiB7CisgICAgICAg
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd29ya2VyUGFnZVByb3h5SUQ7CisgICAgICAgIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHdvcmtlclBhZ2VJRDsKICAgICAgICAgU2VydmljZVdvcmtlcklu
aXRpYWxpemF0aW9uRGF0YSBpbml0aWFsaXphdGlvbkRhdGE7CiAgICAgICAgIFByb2Nlc3NUaHJv
dHRsZXI6OkFjdGl2aXR5VmFyaWFudCBhY3Rpdml0eTsKICAgICAgICAgV2Vha0hhc2hTZXQ8V2Vi
UHJvY2Vzc1Byb3h5PiBjbGllbnRQcm9jZXNzZXM7CiAgICAgfTsKLSAgICBzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbj4gbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247Cisg
ICAgc3RkOjpvcHRpb25hbDxXb3JrZXJJbmZvcm1hdGlvbj4gbV9zZXJ2aWNlV29ya2VySW5mb3Jt
YXRpb247CisgICAgc3RkOjpvcHRpb25hbDxXb3JrZXJJbmZvcm1hdGlvbj4gbV9zaGFyZWRXb3Jr
ZXJJbmZvcm1hdGlvbjsKICAgICBib29sIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9j
ZXNzaW5nIHsgZmFsc2UgfTsKIAogICAgIEhhc2hNYXA8V2ViQ29yZTo6U2xlZXBEaXNhYmxlcklk
ZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTbGVlcERpc2FibGVyPj4gbV9zbGVl
cERpc2FibGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDdhOGMyYjgzYTJkMC4uMmQ4NGFlZjgyMWI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg4MSw2ICs4ODEsNyBA
QAogCQk0NjE0RjEzMjI1REVEODc1MDA3MDA2RTcgLyogR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJh
bWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NkFDNTMyNDI1REVEODFFMDAzQjU3RUMgLyogR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJz
LmggKi87IH07CiAJCTQ2MUNDQ0E1MjMxNDg1QTcwMEI2NTlCOSAvKiBVSVJlbW90ZU9iamVjdFJl
Z2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjMyMzY4NTIzMTQ4MzNGMDBBNDhGQTcgLyogVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5oICovOyB9
OwogCQk0NjFDQ0NBNjIzMTQ4NUFBMDBCNjU5QjkgLyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MzIzNjgz
MjMxNDgxRUYwMEE0OEZBNyAvKiBXZWJSZW1vdGVPYmplY3RSZWdpc3RyeS5oICovOyB9OworCQk0
NjFFMUJGMjI3OUEwMTE2MDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NjFFMUJFRjI3OUEwMTBGMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2M0ZENDgwMUVCOTQ1OTYwMEEyOTgyQyAvKiBXS1By
b2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDYzRkQ0N0YxRUI5NDU4NDAwQTI5ODJDIC8qIFdLUHJvY2Vzc1Rlcm1p
bmF0aW9uUmVhc29uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDYzRkQ0ODIxRUI5NEVDMDAwQTI5ODJDIC8qIFByb2Nlc3NUZXJtaW5hdGlvblJl
YXNvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYz
RkQ0ODExRUI5NEVBRDAwQTI5ODJDIC8qIFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oICovOyB9
OwogCQk0NjU5RjI1RjI3NUZGNkIyMDBCQkIzNjkgLyogQ2FwdGl2ZVBvcnRhbE1vZGVPYnNlcnZl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1OUYy
NUUyNzVGRjZCMjAwQkJCMzY5IC8qIENhcHRpdmVQb3J0YWxNb2RlT2JzZXJ2ZXIuaCAqLzsgfTsK
QEAgLTg5MCw2ICs4OTEsOCBAQAogCQk0NjcxRkYxRjIzMjE3RUZGMDAxQjY0QzcgLyogV2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2NzFGRjFEMjMyMTdFRkYwMDFCNjRDNyAvKiBXZWJSZXNvdXJjZUxvYWRPYnNl
cnZlci5oICovOyB9OwogCQk0NjdFNDNFODIyNDNGRjdEMDBCMTM5MjQgLyogV2ViUHJvY2Vzc0Rh
dGFTdG9yZVBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2N0U0M0U3MjI0M0ZGNkQwMEIxMzkyNCAvKiBXZWJQcm9jZXNzRGF0YVN0b3Jl
UGFyYW1ldGVycy5oICovOyB9OwogCQk0NjgwOUE3QzIzRDkyMjVFMDBDMjk3RDAgLyogV2ViQ29v
a2llQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2ODA5QTdBMjNEOTIyNTMwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5oICovOyB9OworCQk0
Njk0M0REMDI3NjNGODNBMDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTQzRENGMjc2M0Y4
MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oICovOyB9OworCQk0Njk0M0RE
MTI3NjNGODNGMDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5NDNEQ0QyNzYz
RjgzNTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAqLzsgfTsK
IAkJNDZBMkI2MDkxRTU2NzZBNjAwQzNERURBIC8qIEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2
ZW5lc3NUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZBMkI2MDcxRTU2NzVBMjAwQzNERURBIC8qIEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2
ZW5lc3NUaW1lci5oICovOyB9OwogCQk0NkIwNTI0NzIyNjY4RDg1MDAyNjVCOTcgLyogV2ViRGV2
aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkIwNTI0NDIyNjY4RDIzMDAyNjVCOTcg
LyogV2ViRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyLmggKi87IH07
CiAJCTQ2QkVCNkQ3MjJGQjlCRDcwMDI2OTg2NyAvKiBTdG9yYWdlQXJlYS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRUI2RDUyMkZCOUJENjAwMjY5
ODY3IC8qIFN0b3JhZ2VBcmVhLmggKi87IH07CkBAIC04OTcsMTAgKzkwMCwxMyBAQAogCQk0NkJF
QjZERjIyRkJCMTZCMDAyNjk4NjcgLyogU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkVCNkREMjJGQkIxNkIw
MDI2OTg2NyAvKiBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5oICovOyB9OwogCQk0NkJFQjZFMzIy
RkJCMjFBMDAyNjk4NjcgLyogVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkJFQjZFMTIyRkJCMjFB
MDAyNjk4NjcgLyogVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmggKi87IH07CiAJCTQ2
QzM5MjI5MjMxNkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkMzOTIyODIzMTZFQzRE
MDA4RUVEOUIgLyogV2ViUGFnZVByb3h5SWRlbnRpZmllci5oICovOyB9OworCQk0NkM5MTZBQTI3
OTlEMEEyMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM5MTZBOTI3OTlEMDlEMDAxQTRFN0Mg
LyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggKi87IH07CiAJCTQ2Q0UzQjExMjNEOEM4NDkwMDE2
QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Q0UzQjEwMjNEOEM4M0QwMDE2QTk2QSAvKiBXZWJC
YWNrRm9yd2FyZExpc3RDb3VudHMuaCAqLzsgfTsKKwkJNDZENDhGQ0UyNzk5RDdFMTAwN0QyMDE0
IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RDQ4RkNEMjc5OUQ3REUwMDdE
MjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi87IH07
CiAJCTQ2REYwNjNDMUYzOTA1RjgwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNr
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REYw
NjNBMUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCAqLzsg
fTsKIAkJNDZFRTI4NDkyNjlFMDRBQzAwREQ0OEFCIC8qIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdp
c3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZF
RTI4NDgyNjlFMDQ5QjAwREQ0OEFCIC8qIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oICov
OyB9OwogCQk0NkVFMjg0RDI2OUUwNTI1MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5u
ZWxSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZFRTI4NEMyNjlFMDUxNzAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVn
aXN0cnkuaCAqLzsgfTsKKwkJNDZFRTNFOEIyNzYzRkQyRjAwNjBDNzBGIC8qIFdlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2ODM4NjY3Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2RjM4RThDMjQxNkU2NzMwMDU5Mzc1QSAvKiBS
dW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDZGMzhFOEIyNDE2RTY2RDAwNTkzNzVBIC8qIFJ1bm5pbmdCb2FyZFNl
cnZpY2VzU1BJLmggKi87IH07CiAJCTQ2RjlCMjYzMjM1MjZFRjMwMDZGRTVGQSAvKiBXZWJCYWNr
Rm9yd2FyZENhY2hlRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2RjlCMjYyMjM1MjZFRDAwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hl
RW50cnkuaCAqLzsgfTsKIAkJNDkzMTAyQkQyNjgzRjNEMDAwMkJCODg1IC8qIEFwcFByaXZhY3lS
ZXBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5
MzEwMkJDMjY4M0YzQTUwMDJCQjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggKi87IH07CkBAIC0x
Mjc0LDYgKzEyODAsNyBAQAogCQk2QkU5NjlDMTFFNTRENDUyMDA4Qjc0ODMgLyogY29yZVByZWRp
Y3Rpb25fbW9kZWwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZCRTk2OUMwMUU1NEQ0NTIwMDhCNzQ4MyAvKiBjb3JlUHJlZGljdGlvbl9tb2RlbCAqLzsg
fTsKIAkJNkJFOTY5Q0IxRTU0RDRDRjAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3ND
bGFzc2lmaWVyQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDZCRTk2OUM5MUU1NEQ0Q0YwMDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Q2xhc3NpZmllckNvY29hLmggKi87IH07CiAJCTZCRTk2OUNEMUU1NEUwNTQwMDhCNzQ4MyAvKiBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkJFOTY5Q0MxRTU0RTA1NDAwOEI3NDgzIC8qIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmggKi87IH07CisJCTZDQUVDQjY2Mjc0NjVBRTQw
MEFCNzhEMCAvKiBVbmlmaWVkU291cmNlMTE2LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDQUVDQjVFMjc0NjVBRTMwMEFCNzhEMCAvKiBVbmlmaWVk
U291cmNlMTE2LmNwcCAqLzsgfTsKIAkJNkVFODQ5QzgxMzY4RDkzOTAwMzhENDgxIC8qIFdLSW5z
cGVjdG9yUHJpdmF0ZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNkVFODQ5QzYxMzY4RDkyRDAwMzhENDgxIC8qIFdLSW5zcGVjdG9yUHJpdmF0ZU1h
Yy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcx
MTcyNUE5MjI4RDU2NDMwMDAxODUxNCAvKiBXZWJzaXRlTGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdU
b3VjaFBvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzExNzI1QTgyMjhENTYzQTAwMDE4NTE0IC8qIFdlYnNpdGVMZWdhY3lPdmVyZmxvd1Njcm9s
bGluZ1RvdWNoUG9saWN5LmggKi87IH07CiAJCTcxMzRBM0RBMjYwM0I5MjUwMDYyNEJEMyAvKiBX
S01vZGVsSW50ZXJhY3Rpb25HZXN0dXJlUmVjb2duaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzEzNEEzRDkyNjAzQjgwRTAwNjI0QkQzIC8qIFdL
TW9kZWxJbnRlcmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmggKi87IH07CkBAIC0xMzUxLDYgKzEz
NTgsNyBAQAogCQk3QzlEMTUzNzE4NDU4NERBMDA5RDM5MTggLyogV0tCcm93c2luZ0NvbnRleHRH
cm91cEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzlEMTUzNjE4NDU4NERBMDA5RDM5MTggLyogV0tCcm93c2luZ0NvbnRleHRHcm91cElu
dGVybmFsLmggKi87IH07CiAJCTdDQTI1NEVCMTgyOTkzQ0UwMEZDOEE0MSAvKiBXS0Jyb3dzaW5n
Q29udGV4dFBvbGljeURlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3Q0EyNTRFQTE4Mjk5M0NFMDBGQzhBNDEgLyogV0tCcm93c2luZ0NvbnRl
eHRQb2xpY3lEZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTdDQTM3OTNFMUFDMzc4QjMwMDc5REMzNyAvKiBfV0tVc2VyQ29udGVudEV4
dGVuc2lvblN0b3JlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0NBMzc5M0QxQUMzNzhCMzAwNzlEQzM3IC8qIF9XS1VzZXJDb250ZW50RXh0
ZW5zaW9uU3RvcmVQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJN0NBRUNCNjYyNzQ2NUFFNDAwQUI3OEQwIC8qIFVuaWZpZWRTb3VyY2Ux
MTcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NB
RUNCNUUyNzQ2NUFFMzAwQUI3OEQwIC8qIFVuaWZpZWRTb3VyY2UxMTcuY3BwICovOyB9OwogCQk3
Q0IxMDBGMTFGQTM4NThBMDAxNzI5RUUgLyogV2ViUHJlZmVyZW5jZXNLZXlzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQjEwMEVFMUZBMkQ3NEEw
MDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNlc0tleXMuY3BwICovOyB9OwogCQk3Q0IxMDBGMjFGQTM4
NThFMDAxNzI5RUUgLyogV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NERTczQTMxRjlEQUI2NTAwMzkwMzEy
IC8qIFdlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaCAqLzsgfTsKIAkJN0NCMTAwRjMxRkEzODU4
RTAwMTcyOUVFIC8qIFdlYlByZWZlcmVuY2VzS2V5cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NCMTAwRUYxRkEyRDc0QjAwMTcyOUVFIC8qIFdlYlBy
ZWZlcmVuY2VzS2V5cy5oICovOyB9OwpAQCAtNDIyMCw2ICs0MjI4LDkgQEAKIAkJNDYwODg5RkYy
NjFGQThBOTAwRTI1MDBEIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRl
cnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1l
dGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBGNDg4RDFGOTk2RjZDMDBD
RjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNDYwRjQ4OEUxRjk5NkY2QzAwQ0Y0
Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNz
YWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
KwkJNDYxRTFCRUMyNzlBMDEwRTAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0NjFFMUJFRjI3OUEwMTBGMDA2QUY1M0IgLyogV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0NjFFMUJGMDI3OUEwMTBGMDA2QUY1M0IgLyogV2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYyMTA3RDcxRjM4REJEMzAw
REQ3ODEwIC8qIFBpbmdMb2FkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFBpbmdMb2FkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzMjM2ODMy
MzE0ODFFRjAwQTQ4RkE3IC8qIFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2MzIzNjg0MjMxNDgyNUMwMEE0OEZBNyAvKiBXZWJSZW1vdGVPYmplY3RSZWdpc3RyeS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJSZW1vdGVPYmplY3RSZWdpc3RyeS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MjQ3LDggKzQyNTgsMTUgQEAKIAkJNDY4MDlBN0Iy
M0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvb2tpZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDY4MzU2OUEyMUU4MUNDNzAwNkUyN0EzIC8qIFByb3Zpc2lvbmFsUGFnZVBy
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb3Zpc2lvbmFsUGFnZVBy
b3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM1NjlCMjFFODFDQzcwMDZF
MjdBMyAvKiBQcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQcm92aXNpb25hbFBhZ2VQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQ2ODM4NjY3Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4Mzg2NjgyNzYzRkFC
MTAwQ0Y5MTgyIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODlCOTBGMjc1NkQxNDMwMDA3QzY1MSAvKiBSZW1vdGVX
ZWJMb2NrUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODlCOTEwMjc1NkQxNDMwMDA3QzY1MSAv
KiBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlV2Vi
TG9ja1JlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQ0Iy
NzYzRjgzNDAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQ0MyNzYzRjgzNTAwNEI2MTBFIC8q
IFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJl
ZFdvcmtlclByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNE
Q0QyNzYzRjgzNTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RDRTI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDY5NDNEQ0YyNzYzRjgzNTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2OURFODAyMjczRUNDNUQwMDkzMDI3NiAvKiBQcm9jZXNzTGF1bmNo
ZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByb2Nl
c3NMYXVuY2hlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkEyQjYw
NjFFNTY3NUEyMDBDM0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhY2tncm91bmRQcm9j
ZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2QTJCNjA3MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVu
ZXNzVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFja2dyb3VuZFBy
b2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC00MjY0LDcgKzQyODIsMTEgQEAKIAkJNDZCRUI2RTEyMkZCQjIxQTAwMjY5ODY3IC8qIFRyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFuc2llbnRMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCRUI2
RTIyMkZCQjIxQTAwMjY5ODY3IC8qIFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkMzOTIyODIzMTZFQzREMDA4RUVEOUIgLyog
V2ViUGFnZVByb3h5SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQYWdlUHJveHlJZGVu
dGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2QzkxNkE4Mjc5OUQwOUQw
MDFBNEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDZDOTE2QTkyNzk5RDA5RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDZDRTNCMTAyM0Q4QzgzRDAwMTZBOTZBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENv
dW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZExp
c3RDb3VudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZENDhGQ0MyNzk5RDdE
RDAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2RDQ4RkNEMjc5OUQ3REUw
MDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZERjA2MzkxRjM5MDVFNTAwMTk4MEJCIC8q
IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NkU5NzYwQTI3NTdGNkM5MDBBQ0REMzcgLyogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5
Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkJyb2FkY2FzdENoYW5uZWxS
ZWdpc3RyeS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyNzQs
NiArNDI5Niw3IEBACiAJCTQ2RUUyODRBMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRj
YXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5l
dHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2RUUyODRCMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRj
YXN0Q2hhbm5lbFJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NkVFMjg0QzI2OUUwNTE3MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2Fz
dENoYW5uZWxSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3
b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQ2RUUzRThBMjc2M0ZEMkEwMDYwQzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24u
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RjM4RThCMjQxNkU2
NkQwMDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NkY5QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0Zvcndh
cmRDYWNoZUVudHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tG
b3J3YXJkQ2FjaGVFbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTMxMDJC
QzI2ODNGM0E1MDAyQkI4ODUgLyogQXBwUHJpdmFjeVJlcG9ydC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
cHBQcml2YWN5UmVwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00OTkyLDYg
KzUwMTUsNyBAQAogCQk2QkU5NjlDODFFNTRENENGMDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0NsYXNzaWZpZXJDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkJFOTY5QzkxRTU0RDRDRjAwOEI3NDgzIC8qIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QkU5NjlDQzFFNTRFMDU0MDA4Qjc0ODMgLyogUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNkNBRUNCNUUyNzQ2NUFFMzAwQUI3OEQwIC8qIFVuaWZpZWRTb3Vy
Y2UxMTYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVW5pZmllZFNvdXJjZTExNi5jcHA7IHBhdGgg
PSAiRGVyaXZlZFNvdXJjZXMvV2ViS2l0L3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlMTE2
LmNwcCI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTZEOEE5MUE1MTFG
MEVGRDEwMEREMDFGRSAvKiBjb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IG5hbWUgPSBjb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbjsgcGF0aCA9IFdlYlByb2Nlc3Mv
Y29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTZFRTg0OUM2MTM2OEQ5MkQwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tJbnNwZWN0b3JQcml2YXRlTWFjLmg7IHBh
dGggPSBtYWMvV0tJbnNwZWN0b3JQcml2YXRlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcxMTcyNUE4MjI4RDU2M0EwMDAxODUxNCAvKiBXZWJzaXRlTGVnYWN5T3ZlcmZsb3dT
Y3JvbGxpbmdUb3VjaFBvbGljeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJzaXRlTGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaFBvbGljeS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNTE1Niw2ICs1MTgwLDcgQEAKIAkJN0M5RDE1MzYxODQ1ODREQTAw
OUQzOTE4IC8qIFdLQnJvd3NpbmdDb250ZXh0R3JvdXBJbnRlcm5hbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NBMjU0RUExODI5OTNDRTAwRkM4QTQxIC8qIFdL
QnJvd3NpbmdDb250ZXh0UG9saWN5RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3Q0EzNzkzRDFBQzM3OEIzMDA3OURDMzcgLyogX1dLVXNlckNvbnRl
bnRFeHRlbnNpb25TdG9yZVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0NBRUNCNUUyNzQ2NUFFMzAwQUI3OEQwIC8qIFVuaWZpZWRTb3VyY2Ux
MTcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVW5pZmllZFNvdXJjZTExNy5jcHA7IHBhdGggPSAi
RGVyaXZlZFNvdXJjZXMvV2ViS2l0L3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlMTE3LmNw
cCI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTdDQjEwMEVFMUZBMkQ3
NEEwMDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNlc0tleXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
V2ViUHJlZmVyZW5jZXNLZXlzLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJQ
cmVmZXJlbmNlc0tleXMuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owog
CQk3Q0IxMDBFRjFGQTJENzRCMDAxNzI5RUUgLyogV2ViUHJlZmVyZW5jZXNLZXlzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFdlYlByZWZlcmVuY2VzS2V5cy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0L1dlYlByZWZlcmVuY2VzS2V5cy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OwogCQk3Q0IxMDBGMDFGQTJENzg0MDAxNzI5RUUgLyogV2ViUHJlZmVyZW5jZXNTdG9yZURl
ZmF1bHRzTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlByZWZlcmVuY2VzU3RvcmVEZWZh
dWx0c01hcC5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViUHJlZmVyZW5jZXNT
dG9yZURlZmF1bHRzTWFwLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
QEAgLTkyODEsNiArOTMwNiwyMCBAQAogCQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNDY4Mzg2NjUyNzYzRkExQjAwQ0Y5MTgyIC8qIFNoYXJlZFdv
cmtlciAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNDZE
NDhGQ0MyNzk5RDdERDAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uY3BwICovLAorCQkJCTQ2RDQ4RkNEMjc5OUQ3REUwMDdEMjAxNCAvKiBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi8sCisJCQkJNDZDOTE2QTgyNzk5
RDA5RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAgKi8sCisJCQkJNDZDOTE2
QTkyNzk5RDA5RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5oICovLAorCQkJCTQ2
RUUzRThBMjc2M0ZEMkEwMDYwQzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluICovLAorCQkJCTQ2ODM4NjY3Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggKi8sCisJCQkJNDY4Mzg2NjgyNzYzRkFCMTAwQ0Y5
MTgyIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwICovLAorCQkJKTsKKwkJ
CXBhdGggPSBTaGFyZWRXb3JrZXI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9Owog
CQk0NjlERTgwMTI3M0VDQzVEMDA5MzAyNzYgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtOTMzMiw2ICs5MzcxLDcgQEAKIAkJNTEwQ0M3REEx
NjEzOEUwMTAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0NjgzODY2NTI3NjNGQTFCMDBDRjkxODIgLyogU2hh
cmVkV29ya2VyICovLAogCQkJCUU0ODlEMjgyMUEwQTJCRTgwMDc4QzA2QSAvKiBjYWNoZSAqLywK
IAkJCQk3QTg0M0ExRDIxRTQxRkQ5MDBERUY2NjMgLyogQ2xhc3NpZmllciAqLywKIAkJCQk3RUM0
RjBGODE4RTRBOTIyMDA4MDU2QUYgLyogY29jb2EgKi8sCkBAIC05NDQwLDYgKzk0ODAsMTQgQEAK
IAkJNTExOEU5OTgxRjI5NTI1OTAwM0VGOUY1IC8qIFN0b3JhZ2UgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQ2MUUxQkVDMjc5QTAxMEUwMDZBRjUzQiAv
KiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwICovLAorCQkJCTQ2
MUUxQkVGMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uaCAqLywKKwkJCQk0NjFFMUJGMDI3OUEwMTBGMDA2QUY1M0IgLyogV2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovLAorCQkJCTQ2OTQz
RENFMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNw
cCAqLywKKwkJCQk0Njk0M0RDRDI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbi5oICovLAorCQkJCTQ2OTQzRENCMjc2M0Y4MzQwMDRCNjEwRSAvKiBXZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovLAorCQkJCTQ2OTQzREND
Mjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAgKi8sCisJCQkJ
NDY5NDNEQ0YyNzYzRjgzNTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmggKi8s
CiAJCQkJNDEzMUYzRTAxRjk4NzEyQzAwNTk5OTVBIC8qIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQuY3BwICovLAogCQkJCTQxOUFDRjlCMUY5ODFEMjYwMDlGMUE4MyAvKiBXZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggKi8sCiAJCQkJNTFCRUI2MjkxRjNBNUFDRDAwNTAy
OUI5IC8qIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAgKi8sCkBAIC0xMjc2NSw2ICsxMjgx
Myw3IEBACiAJCQkJNDlGQkYwMDAyMzlCMUY3NTAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NUaGlyZFBhcnR5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUZCRjAwOTIzOUYwOEUw
MDBCRDAzMkYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHlJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMzc2MzExRkQxQTNGQjVGNzAwNUEyRTUxIC8qIF9XS1NhbWVE
b2N1bWVudE5hdmlnYXRpb25UeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjFFMUJGMjI3OUEw
MTE2MDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzNzYzMTFGRTFBM0ZCNjAwMDA1QTJFNTEgLyogX1dLU2FtZURv
Y3VtZW50TmF2aWdhdGlvblR5cGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwMDJE
NDQxOTZCMzM4OTAwQjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUEwMDJENDMxOTZCMzM3MDAwQjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0ZUludGVybmFsLmgg
aW4gSGVhZGVycyAqLywKQEAgLTEyOTI5LDYgKzEyOTc4LDcgQEAKIAkJCQlFMTcwODc2QzE2RDZD
QTY5MDBGOTkyMjYgLyogQmxvYlJlZ2lzdHJ5UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTRG
NjAxNDMyMTU1QzVBQTIwMDFGQkRFMCAvKiBCbG9ja2luZ1Jlc3BvbnNlTWFwLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTU3MDUxMTFCRTQxMEU2MDA4NzRBRjEgLyogQmxvY2tTUEkuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQ2QzkxNkFBMjc5OUQwQTIwMDFBNEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMzA2NUZBMTI1OTM0NEUwMEU3MTI3OCAvKiBD
YWNoZU1vZGVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTg5N0VEODFGNDE1RDhBMDAxNkZBNDIg
LyogQ2FjaGVTdG9yYWdlRW5naW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUZBQkQyQTFGNERF
MDAxMDA2QTZDOTcgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaCBpbiBIZWFkZXJzICovLApA
QCAtMTMzOTQsNiArMTM0NDQsNyBAQAogCQkJCTFBQzEzMzY4MTg1NjVCNTcwMEYzRUMwNSAvKiBV
c2VyRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q0OTFCMDgxRTcwRDA1RjAwMDA5MDY2IC8q
IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDQ5MUIwRTFF
NzMyRTREMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNDZFRTNFOEIyNzYzRkQyRjAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUNENDkxQjEzMUU3MzQ4MjEw
MDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLywK
IAkJCQlDRDQ5MUIxODFFNzM1MjU1MDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQ
cm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzI5N0Y5RjFDMTdCQkVBMDAzRjA3
MzUgLyogVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuaCBpbiBIZWFkZXJzICovLApAQCAt
MTM0ODAsNiArMTM1MzEsNyBAQAogCQkJCTMzMDkzNDRBMTMxNUI5MjIwMDk3QTdCQyAvKiBXZWJD
b29raWVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxREQ3QjIx
MTREQzM5NjAwNUFEQUYzIC8qIFdlYkNvcmVBcmd1bWVudENvZGVycy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTEyRjU4OUIxMkE4ODM4ODAwNjI5NTMwIC8qIFdlYkNyZWRlbnRpYWwuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQ2OTQzREQwMjc2M0Y4M0EwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJQ
cm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBODNGNkQxQTVCNjNGRjAwMDI2RUM2IC8q
IFdlYkRhdGFiYXNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU1MkNGNTUyMjBBMzVD
M0EwMERBREEyNyAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUU1NjhCOTFGMjBBM0FCMkYwMEUzQzg1NiAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25z
RHJvcGRvd24uaCBpbiBIZWFkZXJzICovLApAQCAtMTM1MTQsNiArMTM1NjYsNyBAQAogCQkJCUJD
MDMyRDdGMTBGNDM3OEQwMDU4QzE1QSAvKiBXZWJGcmFtZUxvYWRlckNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTM5MUYyQ0IxMjFCNjdBRDAwRUJGN0U4IC8qIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQjlGNkEwMTEyM0E4NEIwMEExMzdFMCAv
KiBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2OTQz
REQxMjc2M0Y4M0YwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzlCMzhBMTEwRjUzOEJFMDA0NDNBMTUgLyogV2ViRnJhbWVQ
cm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1QkUxQUIxRDU1NUFBMDAwREQ3QzY4IC8qIFdl
YkdhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMTc5MUQ1M0ZFOEYwMEREN0M2OCAv
KiBXZWJHYW1lcGFkUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTM2NDAsNiArMTM2OTMs
NyBAQAogCQkJCTFBNDgzMkQ3MUE5Q0RGOTYwMDhCNERGRSAvKiBXZWJzaXRlRGF0YS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUE0ODMyRDExQTlCREMyRjAwOEI0REZFIC8qIFdlYnNpdGVEYXRhUmVj
b3JkLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTUzQzJBQTFBMzI1NzMwMDA0RThDNzAgLyogV2Vi
c2l0ZURhdGFTdG9yZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZENDhGQ0UyNzk5RDdFMTAwN0Qy
MDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxMUY3RDQxMUVCMUJDRjUwMEU0N0I4MyAvKiBXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzExNzI1QTkyMjhENTY0MzAwMDE4NTE0
IC8qIFdlYnNpdGVMZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoUG9saWN5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGNENCMDlFNTIyNUQ1QTA5MDA4OTE0ODcgLyogV2Vic2l0ZU1lZGlhU291cmNl
UG9saWN5LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDhk
M2I1N2JkMThkYy4uYmIzNTQ3ZjQ2YWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAg
LTU3LDYgKzU3LDEwIEBACiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5oIgog
I2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWxNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNvY2tl
dFN0cmVhbS5oIgpAQCAtMTczLDYgKzE3NywxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUAog
ICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgc2hhcmVkV29ya2VyQ29ubmVjdGlv
bigpLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNz
YWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgQVNTRVJUKFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpOworICAgICAgICBpZiAoYXV0byogY29udGV4dE1h
bmFnZXJDb25uZWN0aW9uID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigp
LmNvbm5lY3Rpb24oKSkKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFdlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbiY+KCpjb250ZXh0TWFuYWdlckNvbm5lY3Rpb24pLmRpZFJl
Y2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAg
fQogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAgaWYgKGRlY29kZXIubWVz
c2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSkgewpAQCAtMzA3LDYgKzMyMSwxMyBAQCBXZWJTV0NsaWVudENv
bm5lY3Rpb24mIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6c2VydmljZVdvcmtlckNvbm5lY3Rp
b24oKQogfQogI2VuZGlmCiAKK1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24mIE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbjo6c2hhcmVkV29ya2VyQ29ubmVjdGlvbigpCit7CisgICAgaWYg
KCFtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAgIG1fc2hhcmVkV29ya2VyQ29ubmVj
dGlvbiA9IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OmNyZWF0ZSgpOworICAgIHJl
dHVybiAqbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6bWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0KGNvbnN0IFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0SWRlbnRpZmllciYgbWVzc2FnZVBvcnRJZGVudGlmaWVyKQogewogICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLm1lc3NhZ2VzQXZhaWxhYmxlRm9yUG9ydChtZXNzYWdlUG9ydElkZW50
aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCBkNjJkZmU0ZGY1YWEuLjVmMDUwNDA5
YWM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgZW51bSBjbGFz
cyBIVFRQQ29va2llQWNjZXB0UG9saWN5IDogdWludDhfdDsKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uOwogY2xhc3MgV2ViU1dDbGllbnRDb25uZWN0aW9uOwogCiBjbGFzcyBO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24+LCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCB7CkBAIC03MCw2ICs3MSw3IEBA
IHB1YmxpYzoKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgV2ViU1dDbGllbnRDb25u
ZWN0aW9uJiBzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbigpOwogI2VuZGlmCisgICAgV2ViU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbiYgc2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOwogCiAjaWYg
SEFWRShBVURJVF9UT0tFTikKICAgICB2b2lkIHNldE5ldHdvcmtQcm9jZXNzQXVkaXRUb2tlbihz
dGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4pIHsgbV9uZXR3b3JrUHJvY2Vz
c0F1ZGl0VG9rZW4gPSBhdWRpdFRva2VuOyB9CkBAIC0xMjMsNiArMTI1LDcgQEAgcHJpdmF0ZToK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgUmVmUHRyPFdlYlNXQ2xpZW50Q29ubmVj
dGlvbj4gbV9zd0Nvbm5lY3Rpb247CiAjZW5kaWYKKyAgICBSZWZQdHI8V2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbj4gbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uOwogICAgIFdlYkNvcmU6
OkhUVFBDb29raWVBY2NlcHRQb2xpY3kgbV9jb29raWVBY2NlcHRQb2xpY3k7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmVkYjY3NmEyOTk2ZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSwxMjkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlBy
b2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRQcm92aWRlci5oIgorI2luY2x1ZGUg
IldlYlVzZXJDb250ZW50Q29udHJvbGxlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRW1wdHlDbGll
bnRzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1dvcmtlckZldGNoUmVzdWx0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjaWYg
RU5BQkxFKFdFQl9SVEMpCitjbGFzcyBTaGFyZWRXb3JrZXJMaWJXZWJSVENQcm92aWRlciBmaW5h
bCA6IHB1YmxpYyBXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlciB7CitwdWJsaWM6CisgICAgU2hh
cmVkV29ya2VyTGliV2ViUlRDUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6CisgICAg
UmVmUHRyPFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24+IGNy
ZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24oKSBmaW5hbCB7IHJldHVy
biAmUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVtb3RlSGFu
ZGxlckNvbm5lY3Rpb24oKTsgfQorfTsKKyNlbmRpZgorCitXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQYWdlR3JvdXBJZGVu
dGlmaWVyIHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlE
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmIHByZWZlcmVuY2VzU3RvcmUsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBp
bml0aWFsaXphdGlvbkRhdGEpCisgICAgOiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdU
Rk1vdmUoY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpKQorICAgICwgbV9yZWdpc3RyYWJsZURv
bWFpbihXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAsIG1fcGFnZUdyb3VwSUQocGFn
ZUdyb3VwSUQpCisgICAgLCBtX3dlYlBhZ2VQcm94eUlEKHdlYlBhZ2VQcm94eUlEKQorICAgICwg
bV9wYWdlSUQocGFnZUlEKQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICwgbV91c2VyQWdlbnQo
c3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKHsgfSkpCisjZWxzZQorICAgICwg
bV91c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkKKyNlbmRpZgorICAgICwgbV91c2VyQ29u
dGVudENvbnRyb2xsZXIoV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpnZXRPckNyZWF0ZShpbml0
aWFsaXphdGlvbkRhdGEudXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikpCit7CisjaWYg
RU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+
YWRkQ29udGVudFJ1bGVMaXN0cyhXVEZNb3ZlKGluaXRpYWxpemF0aW9uRGF0YS5jb250ZW50UnVs
ZUxpc3RzKSk7CisjZW5kaWYKKworICAgIHVwZGF0ZVByZWZlcmVuY2VzU3RvcmUocHJlZmVyZW5j
ZXNTdG9yZSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZGlzYWJsZVRlcm1pbmF0aW9u
KCk7Cit9CisKK1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6fldlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbigpID0gZGVmYXVsdDsKKwordm9pZCBX
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmVzdGFibGlzaENvbm5lY3Rp
b24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFibGlzaFNoYXJlZFdvcmtlckNv
bnRleHRDb25uZWN0aW9uIHsgbV93ZWJQYWdlUHJveHlJRCwgbV9yZWdpc3RyYWJsZURvbWFpbiB9
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgMCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qo
V2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIG1fY29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246OlBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdCB7IHNoYXJlZFdvcmtlcklkZW50
aWZpZXIsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwg
fSwgMCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
Ojp1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3Jl
KQoreworICAgIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzR2VuZXJhdGVkKHN0b3JlKTsKKyAg
ICBtX3ByZWZlcmVuY2VzU3RvcmUgPSBzdG9yZTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmxhdW5jaFNoYXJlZFdvcmtlcihXZWJDb3JlOjpDbGll
bnRPcmlnaW4mJiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVk
V29ya2VySWRlbnRpZmllciwgVVJMJiYgdXJsLCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYgd29y
a2VyT3B0aW9ucywgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJiB3b3JrZXJGZXRjaFJlc3Vs
dCkKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OmxhdW5jaFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRl
bnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7Cisg
ICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9IHBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xp
ZW50cyhXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXNzaW9uSUQoKSk7CisKKyAgICBwYWdlQ29u
ZmlndXJhdGlvbi5kYXRhYmFzZVByb3ZpZGVyID0gV2ViRGF0YWJhc2VQcm92aWRlcjo6Z2V0T3JD
cmVhdGUobV9wYWdlR3JvdXBJRCk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uc29ja2V0UHJvdmlk
ZXIgPSBXZWJTb2NrZXRQcm92aWRlcjo6Y3JlYXRlKG1fd2ViUGFnZVByb3h5SUQpOworICAgIHBh
Z2VDb25maWd1cmF0aW9uLmJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSgpOworICAgIHBhZ2VDb25maWd1cmF0
aW9uLndlYkxvY2tSZWdpc3RyeSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvY2tSZWdp
c3RyeSgpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnVzZXJDb250ZW50UHJvdmlkZXIgPSBtX3Vz
ZXJDb250ZW50Q29udHJvbGxlcjsKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICBwYWdlQ29uZmln
dXJhdGlvbi5saWJXZWJSVENQcm92aWRlciA9IG1ha2VVbmlxdWVSZWY8U2hhcmVkV29ya2VyTGli
V2ViUlRDUHJvdmlkZXI+KCk7CisjZW5kaWYKKworICAgIC8vIEZJWE1FOiBTZXJ2aWNlV29ya2Vy
RnJhbWVMb2FkZXJDbGllbnQgc2hvdWxkIGJlIHJlbmFtZWQgaWYgdXNlZCBieSBTaGFyZWRXb3Jr
ZXJzLgorICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSA9IG1h
a2VVbmlxdWVSZWY8U2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50PihtX3dlYlBhZ2VQcm94
eUlELCBtX3BhZ2VJRCwgRnJhbWVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBtX3VzZXJBZ2VudCk7
CisKKyAgICBhdXRvIHBhZ2UgPSBtYWtlVW5pcXVlUmVmPFBhZ2U+KFdURk1vdmUocGFnZUNvbmZp
Z3VyYXRpb24pKTsKKyAgICBpZiAobV9wcmVmZXJlbmNlc1N0b3JlKSB7CisgICAgICAgIFdlYlBh
Z2U6OnVwZGF0ZVNldHRpbmdzR2VuZXJhdGVkKCptX3ByZWZlcmVuY2VzU3RvcmUsIHBhZ2UtPnNl
dHRpbmdzKCkpOworICAgICAgICBwYWdlLT5zZXR0aW5ncygpLnNldFN0b3JhZ2VCbG9ja2luZ1Bv
bGljeShzdGF0aWNfY2FzdDxTdG9yYWdlQmxvY2tpbmdQb2xpY3k+KG1fcHJlZmVyZW5jZXNTdG9y
ZS0+Z2V0VUludDMyVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnN0b3JhZ2VCbG9ja2lu
Z1BvbGljeUtleSgpKSkpOworICAgIH0KKyAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eTo6c2V0dXBQYWdlRm9yU2hhcmVkV29ya2VyKHBhZ2UuZ2V0KCksIHVybCwgb3JpZ2luLCB3
b3JrZXJGZXRjaFJlc3VsdCk7CisgICAgYXV0byBzaGFyZWRXb3JrZXJUaHJlYWRQcm94eSA9IFdl
YkNvcmU6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpjcmVhdGUoV1RGTW92ZShwYWdlKSwgc2hh
cmVkV29ya2VySWRlbnRpZmllciwgb3JpZ2luLCB1cmwsIFdURk1vdmUod29ya2VyRmV0Y2hSZXN1
bHQpLCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMpLCBtX3VzZXJBZ2VudCwgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuY2FjaGVTdG9yYWdlUHJvdmlkZXIoKSk7CisKKyAgICBXZWJDb3JlOjpTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkucmVnaXN0ZXJTaGFyZWRXb3JrZXJUaHJl
YWQoV1RGTW92ZShzaGFyZWRXb3JrZXJUaHJlYWRQcm94eSkpOworfQorCit2b2lkIFdlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Y2xvc2UoKQoreworICAgIFJFTEVBU0Vf
TE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6Y2xvc2U6IFNoYXJlZCB3b3JrZXIgcHJvY2VzcyBpcyByZXF1ZXN0ZWQgdG8gc3RvcCBhbGwg
c2hhcmVkIHdvcmtlcnMiKTsKKyAgICBzZXRBc0Nsb3NlZCgpOworCisgICAgbV9jb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OkNsb3NlU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24geyB9LCAwKTsKKyAgICBX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc3RvcEFsbFNo
YXJlZFdvcmtlcnMoKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbmFibGVUZXJtaW5h
dGlvbigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi5lZDkxZjk3YzFiMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiSWRlbnRpZmllclR5cGVzLmgiCisjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VySWRlbnRpZmllci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKK3N0cnVjdCBX
b3JrZXJGZXRjaFJlc3VsdDsKK3N0cnVjdCBXb3JrZXJPcHRpb25zOworfQorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOworc3RydWN0IFNlcnZp
Y2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGE7CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsK
K3B1YmxpYzoKKyAgICBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVm
PElQQzo6Q29ubmVjdGlvbj4mJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUGFnZUdy
b3VwSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6
YXRpb25EYXRhJiYpOworICAgIH5XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24oKTsKKworICAgIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdl
YkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
LCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwpIGZpbmFsOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICAvLyBJUEMgTWVzc2FnZXMu
CisgICAgdm9pZCBsYXVuY2hTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFdl
YkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpXb3JrZXJPcHRp
b25zJiYsIFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYpOworICAgIHZvaWQgdXBkYXRlUHJl
ZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CisgICAgdm9pZCBzZXRV
c2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KSB7IG1fdXNlckFnZW50ID0gV1RGTW92ZSh1c2Vy
QWdlbnQpOyB9CisgICAgdm9pZCBjbG9zZSgpOworCisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4g
bV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzczsKKyAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluOworICAgIFBhZ2VHcm91cElkZW50aWZpZXIgbV9wYWdl
R3JvdXBJRDsKKyAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIG1fd2ViUGFnZVByb3h5SUQ7Cisg
ICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CisgICAgU3RyaW5nIG1fdXNlckFn
ZW50OworICAgIFJlZjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXI+IG1fdXNlckNvbnRlbnRDb250
cm9sbGVyOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViUHJlZmVyZW5jZXNTdG9yZT4gbV9wcmVmZXJl
bmNlc1N0b3JlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kODJhNGFkYTUzZmQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMCBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBX
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7Cisg
ICAgTGF1bmNoU2hhcmVkV29ya2VyKHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2lu
LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIs
IFVSTCB1cmwsIHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdvcmtlck9wdGlvbnMsIHN0
cnVjdCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCB3b3JrZXJGZXRjaFJlc3VsdCkKKyAgICBQ
b3N0Q29ubmVjdEV2ZW50KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29y
a2VySWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBwb3J0LCBTdHJp
bmcgc291cmNlT3JpZ2luKQorICAgIFRlcm1pbmF0ZVNoYXJlZFdvcmtlcihXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIpCisgICAgVXBkYXRlUHJl
ZmVyZW5jZXNTdG9yZShzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlKQor
ICAgIFNldFVzZXJBZ2VudChTdHJpbmcgdXNlckFnZW50KQorICAgIENsb3NlKCkKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi5kN2Q5OTRkZTFmNzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
LmNwcApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyT3B0aW9ucy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhT
aGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gV2Vi
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsIFdlYkNvcmU6OlByb2Nl
c3M6OmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQorCitXZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCkK
K3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uOiIpOworfQorCitXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjp+V2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xP
RygifldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Iik7Cit9CisKK0lQQzo6Q29ubmVj
dGlvbiogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworfQorCit2b2lkIFdl
YlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnJlcXVlc3RTaGFyZWRXb3JrZXIoY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmws
IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBjb25zdCBXZWJDb3JlOjpX
b3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25zKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9M
T0coInJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtw
dWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uOjpSZXF1ZXN0U2hhcmVkV29ya2VyIHsgb3JpZ2luLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLCB1cmwsIFdURk1vdmUocG9ydCksIHdvcmtlck9wdGlvbnMgfSk7Cit9CisKK3ZvaWQg
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6c2hhcmVkV29ya2VyT2JqZWN0SXNHb2lu
Z0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coInNoYXJlZFdv
cmtlck9iamVjdElzR29pbmdBd2F5OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVi
bGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlv
bjo6U2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkgeyBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyIH0pOworfQorCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPRworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmVjYmY0MmY2NzYyYQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDU0IEBACisKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9T
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNv
cmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24sIHByaXZhdGUgSVBDOjpNZXNzYWdlU2Vu
ZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBS
ZWY8V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKTsgfQorICAgIH5XZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCitwcml2YXRlOgor
ICAgIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKTsKKworICAgIC8vIFdlYkNvcmU6
OlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uCisgICAgdm9pZCByZXF1ZXN0U2hhcmVkV29y
a2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBv
cnQmJiwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYpIGZpbmFsOworICAgIHZvaWQgc2hh
cmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllcikgZmluYWw7CisKKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0
aW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMWNlYTE5MzJlOWY2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI3IEBA
CisjIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
CisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFdl
YlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24geworICAgIEZldGNoU2NyaXB0SW5DbGllbnQo
VVJMIHVybCwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyB3b3JrZXJP
cHRpb25zKSAtPiAoc3RydWN0IFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0IGZldGNoUmVzdWx0
KSBBc3luYworICAgIE5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZhaWx1cmUoV2ViQ29yZTo6U2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQor
ICAgIFBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFN0cmluZyBlcnJvck1l
c3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTdHJpbmcgc291cmNlVVJM
KQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hh
cmVkV29ya2VyUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uNDQ5NWE0MjI1ZTYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwCkBAIC0wLDAg
KzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vi
U2hhcmVkV29ya2VyUHJvdmlkZXIuaCIKKworI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJTaGFyZWRX
b3JrZXJQcm92aWRlciYgV2ViU2hhcmVkV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpCit7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyPiBwcm92aWRl
cjsKKyAgICByZXR1cm4gcHJvdmlkZXI7Cit9CisKK1dlYlNoYXJlZFdvcmtlclByb3ZpZGVyOjpX
ZWJTaGFyZWRXb3JrZXJQcm92aWRlcigpID0gZGVmYXVsdDsKKworV2ViQ29yZTo6U2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbiogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXI6OnNoYXJlZFdvcmtl
ckNvbm5lY3Rpb24oKQoreworICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuc2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODZlM2QyZmU3MGEwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJv
dmlkZXIuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlclByb3ZpZGVyLmg+CisjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb247Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJT
aGFyZWRXb3JrZXJQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTaGFyZWRXb3JrZXJQ
cm92aWRlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyJiBz
aW5nbGV0b24oKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8V2ViU2hh
cmVkV29ya2VyUHJvdmlkZXI+OworICAgIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyKCk7CisKKyAg
ICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKiBzaGFyZWRXb3JrZXJDb25u
ZWN0aW9uKCkgZmluYWw7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAwMmRhOTExNDdmOGEuLjhjNzRjN2NiY2E0
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtODQsNiArODQs
OSBAQAogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyUHJv
dmlkZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRTdHJlYW0uaCIKICNpbmNsdWRlICJXZWJzaXRl
RGF0YS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCkBAIC0xMzMs
NiArMTM2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NldHRpbmdzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckdlc3R1cmVJbmRpY2F0b3IuaD4KICNpbmNsdWRl
IDxwYWwvTG9nZ2luZy5oPgogI2luY2x1ZGUgPHd0Zi9BbGdvcml0aG1zLmg+CkBAIC01NjksNiAr
NTczLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAgICAgU2VydmljZVdvcmtlclByb3ZpZGVyOjpzZXRTaGFyZWRQcm92aWRlcihXZWJTZXJ2
aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpKTsKICNlbmRpZgorICAgIFNoYXJlZFdvcmtl
clByb3ZpZGVyOjpzZXRTaGFyZWRQcm92aWRlcihXZWJTaGFyZWRXb3JrZXJQcm92aWRlcjo6c2lu
Z2xldG9uKCkpOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIEpTQzo6V2FzbTo6ZW5h
YmxlRmFzdE1lbW9yeSgpOwpAQCAtOTAyLDcgKzkwNyw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXIm
IGRlCiAgICAgfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIC8vIEZJWE1FOiBS
ZW1vdmU/CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7
CiAgICAgICAgIEFTU0VSVChTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9u
KCkpOwogICAgICAgICBpZiAoYXV0byogY29udGV4dE1hbmFnZXJDb25uZWN0aW9uID0gU1dDb250
ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKQpAQCAtOTExLDYgKzkxNSwxMyBA
QCB2b2lkIFdlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZQogICAgIH0KICNlbmRpZgogCisgICAgaWYgKGRlY29k
ZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBB
U1NFUlQoU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24o
KSk7CisgICAgICAgIGlmIChhdXRvKiBjb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gPSBTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKQorICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uJj4o
KmNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbikuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwg
ZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBMT0dfRVJST1IoIlVuaGFu
ZGxlZCB3ZWIgcHJvY2VzcyBtZXNzYWdlICclcycgKGRlc3RpbmF0aW9uOiAlIiBQUkl1NjQgIiBw
aWQ6ICVkKSIsIGRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2FnZU5hbWUoKSksIGRlY29kZXIuZGVz
dGluYXRpb25JRCgpLCBzdGF0aWNfY2FzdDxpbnQ+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSkpOwog
fQogCkBAIC0xOTE3LDYgKzE5MjgsMTYgQEAgTGliV2ViUlRDTmV0d29yayYgV2ViUHJvY2Vzczo6
bGliV2ViUlRDTmV0d29yaygpCiAgICAgcmV0dXJuICptX2xpYldlYlJUQ05ldHdvcms7CiB9CiAK
K3ZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29u
c3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0
cmFibGVEb21haW4sIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXph
dGlvbkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICAvLyBXZSBhcmUgaW4gdGhlIFNoYXJlZCBXb3JrZXIgY29udGV4dCBwcm9jZXNzIGFu
ZCB0aGUgY2FsbCBiZWxvdyBlc3RhYmxpc2hlcyBvdXIgY29ubmVjdGlvbiB0byB0aGUgTmV0d29y
ayBQcm9jZXNzCisgICAgLy8gYnkgY2FsbGluZyBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0aGUgc2FtZSB1bmRl
cmx5aW5nIElQQzo6Q29ubmVjdGlvbiBhcyB0aGUKKyAgICAvLyBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24gZm9yIHN5bmNocm9uaXphdGlvbiBwdXJwb3Nlcy4KKyAgICBhdXRvJiBpcGNDb25uZWN0
aW9uID0gZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworICAg
IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDb25uZWN0aW9uKG1h
a2VVbmlxdWU8V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uPihpcGNDb25u
ZWN0aW9uLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgcGFnZUdyb3VwSUQsIHdlYlBhZ2VQ
cm94eUlELCBwYWdlSUQsIHN0b3JlLCBXVEZNb3ZlKGluaXRpYWxpemF0aW9uRGF0YSkpKTsKKyAg
ICBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpLT5l
c3RhYmxpc2hDb25uZWN0aW9uKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2Vydmlj
ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlm
aWVyIHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBS
ZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIs
IFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXphdGlvbkRhdGEsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGRkOGQ3NGZmZjI2OS4uNjVmNzczMjAxYTcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTQ2OSw2ICs0NjksNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZ2FtZXBhZERpc2Nvbm5lY3RlZCh1bnNpZ25lZCBpbmRleCk7
CiAjZW5kaWYKIAorICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3Jl
JiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgU2VydmljZVdvcmtlckluaXRpYWxpemF0
aW9uRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRl
bnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50
aWZpZXIsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBkZmQzMDY0NTYzZjkuLmU1NTI5NmI5MDRkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAg
LTEwMCw2ICsxMDAsOCBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5v
dFJlZkNvdW50ZWQgewogICAgIEdhbWVwYWREaXNjb25uZWN0ZWQodW5zaWduZWQgaW5kZXgpCiAj
ZW5kaWYKIAorICAgIEVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyhXZWJLaXQ6OlBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYktp
dDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3Jl
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIHN0cnVjdCBXZWJLaXQ6OlNlcnZp
Y2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRhKSAtPiAoKSBBc3lu
YworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIEVzdGFibGlzaFNlcnZpY2VXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJZGVu
dGlmaWVyIHBhZ2VHcm91cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFn
ZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6
V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9t
YWluLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlNlcnZpY2VX
b3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRhKSAtPiAoKSBBc3luYwog
I2VuZGlmCg==
</data>
<flag name="commit-queue"
          id="477156"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450683</attachid>
            <date>2022-02-02 11:48:53 -0800</date>
            <delta_ts>2022-02-02 11:53:11 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>235958_SharedWorker_multiProcess_wip.patch</filename>
            <type>text/plain</type>
            <size>329161</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDQwMjQ2NmU0OWYwZS4uNDNiYjdhYTNkNmJlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTQ2Myw3ICs0NjMsNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYi1sb2Nrcy9zdGVhbC50ZW50YXRpdmUuaHR0cHMuYW55Lmh0bWwgWyBEdW1wSgog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3Ro
ZS1hbmFseXNlcm5vZGUtaW50ZXJmYWNlL3Rlc3QtYW5hbHlzZXItbWluaW11bS5odG1sIFsgRHVt
cEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUt
ZGlzY29ubmVjdC1hdWRpb3BhcmFtLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NhbWUtb3JpZ2luLWNoZWNr
LnN1Yi5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMuaHRt
bCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCiBmYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWJh
Y2stZm9yd2FyZC1jYWNoZS5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGZhc3Qv
aGlzdG9yeS9wYWdlLWNhY2hlLWNyZWF0ZUltYWdlQml0bWFwLmh0bWwgWyBEdW1wSlNDb25zb2xl
TG9nSW5TdGRFcnIgXQogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLWluLWxv
YWRpbmctaWZyYW1lLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQpAQCAtNTE1Nyw2
ICs1MTU2LDEwIEBAIHdlYmtpdC5vcmcvYi8xODM5OTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3Nzb20vY3NzLXN0eWxlLWF0dHItZGVjCiAjIFRlc3QgaXMgY3Jhc2hpbmcg
aW4gRGVidWcgYnVpbGRzIHNpbmNlIGltcG9ydC4KIHdlYmtpdC5vcmcvYi8yMzQ5NzcgWyBEZWJ1
ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9mb2N1cy1ldmVu
dC1kb2N1bWVudC1tb3ZlLmh0bWwgWyBTa2lwIF0KIAorIyBUZXN0IGlzIGZsYWt5IGJlY2F1c2Ug
TWVzc2FnZVBvcnQgbWVzc2FnZXMgbWF5IGdldCByZWNlaXZlZCBpbiBhIGRpZmZlcmVudCBvcmRl
ciB3aGVuIHNldmVyYWwgTWVzc2FnZVBvcnRzIGFyZSBpbnZvbHZlZCwKKyMgZHVlIHRvIGhvdyBN
ZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpIGlzIGltcGxlbWVudGVkLgoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0
aW9ucy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIEZhaWx1cmUgUGFzcyBdCisKICMg
UGx1Z2lucwogIyBGSVhNRTogUmVtb3ZlIHRoZXNlIHRlc3RzLgogcGx1Z2lucy8gWyBTa2lwIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0
LW9ubHkuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3
b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dAppbmRleCAwZTk5NzI0Yjg2NGIuLjY4
OThiNTRhYWI2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdv
cmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRl
LXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSw2
ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2Nh
bGhvc3Q6OTQ0NC9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zdXBwb3J0L3Jlc291cmNlLnB5P2Ny
b3NzLW9yaWdpbi1mZXRjaAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8v
d3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQvcmVzb3Vy
Y2UucHk/Y3Jvc3Mtb3JpZ2luLXhocgotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0
dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQv
cmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLWZldGNoCiAKIFBBU1MgU2FtZS1vcmlnaW4gJ2ZldGNo
KCknLgogUEFTUyBTYW1lLW9yaWdpbiBYSFIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lk
ZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWItZXhwZWN0ZWQu
dHh0CmluZGV4IDk3OTEwNjMwMzc4NS4uYmI2NDUyZjQ0YTBhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMu
c3ViLWV4cGVjdGVkLnR4dApAQCAtMiwxMCArMiw5IEBACiBIYXJuZXNzIEVycm9yIChUSU1FT1VU
KSwgbWVzc2FnZSA9IG51bGwKIAogVElNRU9VVCBzaGFyZWR3b3JrZXItc2NyaXB0LXNyYyBUZXN0
IHRpbWVkIG91dAotRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgbm90IGJsb2Nr
ZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgIEEgbmV0d29yayBlcnJvciBvY2N1cnJlZC4KLUZBSUwg
YGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AgUmVmdXNlZCB0byBldmFs
dWF0ZSBhIHN0cmluZyBhcyBKYXZhU2NyaXB0IGJlY2F1c2UgJ3Vuc2FmZS1ldmFsJyBpcyBub3Qg
YW4gYWxsb3dlZCBzb3VyY2Ugb2Ygc2NyaXB0IGluIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1
cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAic2NyaXB0LXNyYyAnc2VsZicgJ25vbmNlLWEnIGJsb2I6
IGZpbGVzeXN0ZW06Ii4KLQotRkFJTCBgc2V0VGltZW91dChbc3RyaW5nXSlgIG5vdCBibG9ja2Vk
IGluIGh0dHA6IHdpdGhvdXQgQ1NQIGFzc2VydF91bnJlYWNoZWQ6IGNhbGxiYWNrIG5vdCBjYWxs
ZWQuIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNj
cmlwdHMoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgTG9hZCBmYWlsZWQKK1BB
U1MgYGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AKK1BBU1MgYHNldFRp
bWVvdXQoW3N0cmluZ10pYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3V0IENTUAogVElNRU9V
VCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgYmxvY2tlZCBpbiBodHRwOiB3aXRoIHNj
cmlwdC1zcmMgJ3NlbGYnIFRlc3QgdGltZWQgb3V0CiBOT1RSVU4gYGV2YWwoKWAgYmxvY2tlZCBp
biBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCiBOT1RSVU4gYHNldFRpbWVvdXQoW3N0cmlu
Z10pYCBibG9ja2VkIGluIGh0dHA6IHdpdGggc2NyaXB0LXNyYyAnc2VsZicKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVk
LnR4dAppbmRleCA0ZWFjMWNjYzA1MjYuLmI4ZWUxM2IwZmZjZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBv
bGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91dC5zdWItZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4
dApAQCAtMSw0ICsxLDQgQEAKIAogRkFJTCBEZWRpY2F0ZWQgd29ya2VyIGluaGVyaXRzIENTUCBm
cm9tIG1haW4gZG9jdW1lbnQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgInNldFRpbWVvdXQgYWxs
b3dlZCIgYnV0IGdvdCAic2V0VGltZW91dCBibG9ja2VkIgotRkFJTCBTaGFyZWQgd29ya2VyIGRl
bGl2ZXJzIGl0cyBvd24gQ1NQIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJzZXRUaW1lb3V0IGJs
b2NrZWQiIGJ1dCBnb3QgInNldFRpbWVvdXQgYWxsb3dlZCIKK1BBU1MgU2hhcmVkIHdvcmtlciBk
ZWxpdmVycyBpdHMgb3duIENTUAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3Jr
ZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNo
ZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggYzEwNzEz
NjU1MjgwLi42Zjg0NGRkNWQ5NDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtl
cnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBj
YWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKQEAgLTUsNyAr
NSw3IEBAIEhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAogUEFTUyBEZWRp
Y2F0ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0CiBQQVNTIERlZGljYXRlZCB3b3JrZXIg
b2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0CiBQQVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIG5v
dC1pbi1jYWNoZSBzY3JpcHQKLVBBU1MgU2hhcmVkIHdvcmtlciBvZiB0aGUgY2FjaGVkIHNjcmlw
dAotUEFTUyBTaGFyZWQgd29ya2VyIG9mIHRoZSBmYWxsYmFja2VkIHNjcmlwdAorRkFJTCBTaGFy
ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJE
b25lOiBjYWNoZWQiIGJ1dCBnb3QgIkVycm9yOiBJbXBvcnRpbmcgYSBub24tY2FjaGVkIHNjcmlw
dCBtdXN0IGZhaWwuIgorRkFJTCBTaGFyZWQgd29ya2VyIG9mIHRoZSBmYWxsYmFja2VkIHNjcmlw
dCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiRG9uZTogZmFsbGJhY2tlZCIgYnV0IGdvdCAiRXJy
b3I6IEltcG9ydGluZyBhIG5vbi1jYWNoZWQgc2NyaXB0IG11c3QgZmFpbC4iCiBUSU1FT1VUIFNo
YXJlZCB3b3JrZXIgb2YgdGhlIG5vdC1pbi1jYWNoZSBzY3JpcHQgVGVzdCB0aW1lZCBvdXQKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3
b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9y
aWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3b3JrZXItcGFydGl0
aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0CmluZGV4IDRlZDg3NDc0
NzZjNy4uNTg2ZDEwMTUyYTM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9hbm9u
eW1vdXMtaWZyYW1lL3NoYXJlZHdvcmtlci1wYXJ0aXRpb25pbmcudGVudGF0aXZlLmh0dHBzLndp
bmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlm
cmFtZS9zaGFyZWR3b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhw
ZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIEFub255bW91cyBpZnJhbWVzIGdldCBw
YXJ0aXRpb25lZCBzaGFyZWQgd29ya2Vycy4gYXNzZXJ0X3RydWU6IFRoZSAibm9ybWFsIiBpZnJh
bWUncyBzaGFyZWR3b3JrZXIgc2hvdWxkIHJldHVybiB7Im5vcm1hbCI6IHRydWUsICJub3JtYWxf
Y29udHJvbCI6IHRydWV9LCBidXQgaW5zdGVhZCByZXR1cm5lZCB7Im5vcm1hbCI6dHJ1ZX0gZXhw
ZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK0ZBSUwgQW5vbnltb3VzIGlmcmFtZXMgZ2V0IHBhcnRpdGlv
bmVkIHNoYXJlZCB3b3JrZXJzLiBhc3NlcnRfdHJ1ZTogVGhlICJub3JtYWwiIGlmcmFtZSdzIHNo
YXJlZHdvcmtlciBzaG91bGQgcmV0dXJuIHsibm9ybWFsIjogdHJ1ZSwgIm5vcm1hbF9jb250cm9s
IjogdHJ1ZX0sIGJ1dCBpbnN0ZWFkIHJldHVybmVkIHsibm9ybWFsX2NvbnRyb2wiOnRydWUsIm5v
cm1hbCI6dHJ1ZSwiYW5vbnltb3VzIjp0cnVlLCJhbm9ueW1vdXNfY29udHJvbCI6dHJ1ZX0gZXhw
ZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kv
Y3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdp
bi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMt
ZXhwZWN0ZWQudHh0CmluZGV4IDYzNTViNjhkZTcwYi4uYzhiZjc1ZTdlYTg1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mt
b3JpZ2luLWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5o
dHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2lu
LWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0yMCw3ICsyMCw3IEBA
IFBBU1MgZGVkaWNhdGVkIHdvcmtlcjogc2NoZW1lID0gYmxvYiwgdmFsdWUgPSAqCiBQQVNTIGRl
ZGljYXRlZCB3b3JrZXI6IHNjaGVtZSA9IGJsb2IsIHZhbHVlID0gc2VsZgogRkFJTCBkZWRpY2F0
ZWQgd29ya2VyOiBzY2hlbWUgPSBibG9iLCB2YWx1ZSA9IChcKSBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCBmYWxzZSBidXQgZ290IHRydWUKIFBBU1Mgc2hhcmVkIHdvcmtlcjogd2l0aENvb3BDb2Vw
ID0gZmFsc2UKLVBBU1Mgc2hhcmVkIHdvcmtlcjogd2l0aENvb3BDb2VwID0gdHJ1ZQorRkFJTCBz
aGFyZWQgd29ya2VyOiB3aXRoQ29vcENvZXAgPSB0cnVlIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
IHRydWUgYnV0IGdvdCBmYWxzZQogUEFTUyBzZXJ2aWNlIHdvcmtlcjogd2l0aENvb3BDb2VwID0g
ZmFsc2UKIEZBSUwgc2VydmljZSB3b3JrZXI6IHdpdGhDb29wQ29lcCA9IHRydWUgYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1i
ZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1i
ZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAzMzk4
YmQ4ODkzMWIuLjRjODY2ZWIyOTI2MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kv
c2hhcmVkLXdvcmtlcnMuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9s
aWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMiw3ICsyLDcgQEAgVmVy
aWZ5IHRoZSBDcm9zcy1PcmlnaW4gRW1iZWRkZXIgUG9saWN5IGZvciBTaGFyZWQgV29ya2VycyBi
eSBwZXJmb3JtaW5nIGEgY3Jvc3MKIAogCiBQQVNTIGRlZmF1bHQgcG9saWN5IChkZXJpdmVkIGZy
b20gcmVzcG9uc2UpCi1GQUlMICJyZXF1aXJlLWNvcnAiIChkZXJpdmVkIGZyb20gcmVzcG9uc2Up
IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJmYWlsdXJlIiBidXQgZ290ICJzdWNjZXNzIgorUEFT
UyAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIHJlc3BvbnNlKQogUEFTUyBkZWZhdWx0IHBv
bGljeSAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBkdWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAt
IGJsb2IgVVJMKQogRkFJTCAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBk
dWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAtIGJsb2IgVVJMKSBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCAiZmFpbHVyZSIgYnV0IGdvdCAic3VjY2VzcyIKIFBBU1MgZGVmYXVsdCBwb2xpY3kgKGRl
cml2ZWQgZnJvbSBvd25lciBzZXQgZHVlIHRvIHVzZSBvZiBsb2NhbCBzY2hlbWUgLSBkYXRhIFVS
TCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5jZS5z
dWIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVy
aXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggNzViMWQzM2U1MjYwLi5iMmJmMmUz
YmZmM2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5j
ZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtl
ci1pbmhlcml0YW5jZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNiBAQAogQmxv
Y2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2Nv
bW1vbi9ibGFuay5odG1sCiBCbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93
d3cubG9jYWxob3N0Ojk0NDQvY29tbW9uL2JsYW5rLmh0bWwKIEJsb2NrZWQgYWNjZXNzIHRvIGV4
dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2NhbGhvc3Q6OTQ0NC9jb21tb24vYmxhbmsuaHRtbAot
QmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0
L2NvbW1vbi9ibGFuay5odG1sCiAKIFBBU1MgVGVzdCB0aGF0IGxvY2FsIHNjaGVtZSB3b3JrZXJz
IGluaGVyaXQgQ09FUDogcmVxdWlyZS1jb3JwIGZyb20gdGhlIGNyZWF0aW5nIGRvY3VtZW50CiBQ
QVNTIGJsb2IgVVJMIGRlZGljYXRlZCB3b3JrZXI6IFNhbWUgb3JpZ2luIHNob3VsZCBiZSBhbGxv
d2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJf
ZGF0YVVybC1leHBlY3RlZC50eHQKaW5kZXggOTk1YTA2MDE5Yjg0Li45YjU4MjBhYWU4Y2IgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9TaGFyZWRXb3JrZXJfZGF0YVVybC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRh
VXJsLWV4cGVjdGVkLnR4dApAQCAtMSwxMyArMSw1IEBACi1DT05TT0xFIE1FU1NBR0U6IEVycm9y
OiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3QgMQogCiAKLUhhcm5lc3MgRXJyb3Ig
KEZBSUwpLCBtZXNzYWdlID0gRXJyb3I6IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDIgYnV0IGdv
dCAxCi0KLVBBU1MgRGF0YSBVUkwgbm90IHNoYXJlZCBieSBjcm9zcy1vcmlnaW4gU2hhcmVkV29y
a2VycwotVElNRU9VVCBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtl
cnMgVGVzdCB0aW1lZCBvdXQKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBFcnJv
cjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290IDEKLQogUEFTUyBEYXRhIFVSTCBu
b3Qgc2hhcmVkIGJ5IGNyb3NzLW9yaWdpbiBTaGFyZWRXb3JrZXJzCi1USU1FT1VUIERhdGEgVVJM
cyBzaGFyZWQgYnkgc2FtZS1vcmlnaW4gU2hhcmVkV29ya2VycyBUZXN0IHRpbWVkIG91dAorUEFT
UyBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtlcnMKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQK
aW5kZXggNTc2ZTZkMmI3ZWQyLi40YTI2YmU5MjlhOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13
b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVk
LXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMg
QEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0
Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkK
IAogUEFTUyBTdGF0aWMgaW1wb3J0LgogRkFJTCBTdGF0aWMgaW1wb3J0IChjcm9zcy1vcmlnaW4p
LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogIkltcG9ydGlu
ZyBhIG1vZHVsZSBzY3JpcHQgZmFpbGVkLiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXIt
aW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29y
a2VyLWltcG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CmluZGV4IDRmODY0
MWU1MTQ4MC4uMjk5N2Y3ZTFmMzA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9y
dC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3Jr
ZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwz
IEBACi1DT05TT0xFIE1FU1NBR0U6IE9yaWdpbiBudWxsIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vz
cy1Db250cm9sLUFsbG93LU9yaWdpbi4gU3RhdHVzIGNvZGU6IDIwMAogCiBIYXJuZXNzIEVycm9y
IChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtl
ci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXIt
aW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQKaW5kZXggZWFjN2Y5NWRlNmYyLi5j
YmMwNDI5ZTBjNzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJs
LndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11
cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRv
IGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVz
L3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkKIAogSGFybmVzcyBFcnJvciAoVElN
RU9VVCksIG1lc3NhZ2UgPSBudWxsCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ct
ZXhwZWN0ZWQudHh0CmluZGV4IDU3NmU2ZDJiN2VkMi4uNGEyNmJlOTI5YThkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9k
dWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3No
YXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1C
bG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQz
L3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LW9uLWxvYWQtc2NyaXB0LnB5CiAKIFBB
U1MgU3RhdGljIGltcG9ydC4KIEZBSUwgU3RhdGljIGltcG9ydCAoY3Jvc3Mtb3JpZ2luKS4gcHJv
bWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6ICJJbXBvcnRpbmcgYSBt
b2R1bGUgc2NyaXB0IGZhaWxlZC4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlv
bnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNy
ZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAppbmRleCBlMWJlZGY1NDMwZWYuLmE3MGYwNWFmNTRmNCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQu
dHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHA6
Ly93d3cxLmxvY2FsaG9zdDo4ODAwL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LWNy
ZWRlbnRpYWxzLnB5CiAKIEhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRp
Y3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhwZWN0ZWQudHh0CmluZGV4IDAxOGRiNjA0NTY5ZC4u
Y2ZlNDY1NTY3NWNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVkLnR4dApAQCAt
MSw1ICsxLDMgQEAKIAotSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0K
LU5PVFJVTiBzaGFyZWQgd29ya2VyIHdpdGggbXVsdGlwbGUgZG9jdW1lbnRzCitQQVNTIHNoYXJl
ZCB3b3JrZXIgd2l0aCBtdWx0aXBsZSBkb2N1bWVudHMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA4
LWV4cGVjdGVkLnR4dAppbmRleCA5N2E0ZTdhNzNhNjMuLjA5ZjY3MmQxYzYyMSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3Nl
bWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSwzIEBACiAKLUhhcm5lc3Mg
RXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1USU1FT1VUIG1lc3NhZ2VjaGFubmVs
IGluIHNoYXJlZCB3b3JrZXIgVGVzdCB0aW1lZCBvdXQKK1BBU1MgbWVzc2FnZWNoYW5uZWwgaW4g
c2hhcmVkIHdvcmtlcgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRv
dy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50
eHQKaW5kZXggYTA4OWMyMjQ4OWUyLi5kMzlhNTUwODRkYzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2Vy
LWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJs
b2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw3IEBACiAKIEhhcm5lc3MgRXJy
b3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAogCi1GQUlMIENyZWF0aW5nIGEgc2hhcmVkIHdv
cmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJ3b3Jr
ZXJfT0tfMiIgYnV0IGdvdCAid29ya2VyX09LXzEiCi1QQVNTIENyZWF0aW5nIGEgc2hhcmVkIHdv
cmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MgaW1tZWRpYXRlbHkgYmVmb3JlIHJldm9raW5nLgot
VElNRU9VVCBDb25uZWN0aW5nIHRvIGEgc2hhcmVkIHdvcmtlciBvbiBhIHJldm9rZWQgYmxvYiBV
Ukwgd29ya3MuIFRlc3QgdGltZWQgb3V0CitQQVNTIENyZWF0aW5nIGEgc2hhcmVkIHdvcmtlciBm
cm9tIGEgYmxvYiBVUkwgd29ya3MuCitUSU1FT1VUIENyZWF0aW5nIGEgc2hhcmVkIHdvcmtlciBm
cm9tIGEgYmxvYiBVUkwgd29ya3MgaW1tZWRpYXRlbHkgYmVmb3JlIHJldm9raW5nLiBUZXN0IHRp
bWVkIG91dAorTk9UUlVOIENvbm5lY3RpbmcgdG8gYSBzaGFyZWQgd29ya2VyIG9uIGEgcmV2b2tl
ZCBibG9iIFVSTCB3b3Jrcy4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9u
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25zLWV4cGVjdGVkLnR4dApp
bmRleCA2ZmZlZTI3MzkwZDkuLmFlNDViNGQyNzM5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFt
ZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9u
cy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgVGVzdCB0aGUgbmFtZSBwcm9w
ZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBtaXhpbmcgY29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29u
c3RydWN0b3Igc3RyaW5ncyBFcnJvcjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290
IDEKK1BBU1MgVGVzdCB0aGUgbmFtZSBwcm9wZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBtaXhpbmcg
Y29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29uc3RydWN0b3Igc3RyaW5ncwogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW9wdGlv
bnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CmluZGV4IGY2NTY5NDYxNTBkYi4uNGY5OWExMzQwOWU3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dApAQCAtMSwyOCArMSwyNiBA
QAogCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKLQotVElNRU9VVCBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogZGVmYXVsdCB0byBtb2R1bGUgVGVzdCB0aW1lZCBvdXQKLU5PVFJVTiBDb25u
ZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUg
YmxvY2tlZDogbW9kdWxlIHRvIGRlZmF1bHQKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3
b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogY2xhc3NpYyB0
byBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJl
bnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGNsYXNzaWMKLU5PVFJVTiBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogZGVmYXVsdCB0byBvbWl0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogZGVmYXVsdCB0byBpbmNsdWRlIGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNo
YXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21p
dCB0byBkZWZhdWx0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3Jr
ZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBzYW1l
LW9yaWdpbiBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdp
dGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVkZSBp
biBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVy
ZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIG9taXQgaW4gY2xh
c3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIGNsYXNz
aWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGluIGNsYXNzaWMKLU5P
VFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBz
aG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBvbWl0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25u
ZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUg
YmxvY2tlZDogaW5jbHVkZSB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IGRlZmF1bHQgdG8gb21pdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNo
YXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVm
YXVsdCB0byBpbmNsdWRlIGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRl
ZmF1bHQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGgg
ZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gc2FtZS1vcmlnaW4g
aW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVy
ZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVkZSBpbiBtb2R1bGUK
LU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9u
cyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBtb2R1bGUKLU5PVFJV
TiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91
bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gaW5jbHVkZSBpbiBtb2R1bGUKLU5PVFJVTiBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3Rp
bmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9j
a2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1
ZGUgdG8gc2FtZS1vcmlnaW4gaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRv
IG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQg
b3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGRlZmF1bHQKK1BBU1MgQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IGNsYXNzaWMgdG8gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBtb2R1bGUgdG8gY2xh
c3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBvbWl0IGluIGNsYXNzaWMKK1BBU1Mg
Q29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxk
IGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gaW5jbHVkZSBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3Rp
bmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9j
a2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJl
ZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0
byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGluY2x1
ZGUgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZm
ZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBj
bGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIGNsYXNz
aWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlv
bnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gZGVmYXVsdCBpbiBjbGFzc2ljCitQQVNT
IENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3Vs
ZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogaW5jbHVkZSB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8g
c2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBk
ZWZhdWx0IHRvIG9taXQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIGlu
Y2x1ZGUgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRp
ZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4gbW9k
dWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIHNhbWUtb3JpZ2luIGluIG1vZHVsZQorUEFT
UyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91
bGQgYmUgYmxvY2tlZDogb21pdCB0byBpbmNsdWRlIGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUt
b3JpZ2luIHRvIGluY2x1ZGUgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRv
IGRlZmF1bHQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4g
bW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIHNhbWUtb3JpZ2luIGluIG1vZHVs
ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Bl
bi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dAppbmRleCAx
ZTJkMzk5MmY2ZDUuLjU5Y2FjYTQ4NmY4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3
b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1v
cmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0
ZXJuYWwgVVJMIGh0dHA6Ly93d3cyLmxvY2FsaG9zdDo4ODAwL3hoci9yZXNvdXJjZXMvaW5zcGVj
dC1oZWFkZXJzLnB5P2ZpbHRlcl9uYW1lPW9yaWdpbiZjb3JzCiAKIEZBSUwgUmVmZXJlciBoZWFk
ZXIgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIlJlZmVyZXI6IGh0dHA6Ly9sb2NhbGhvc3Q6ODgw
MC94aHIvcmVzb3VyY2VzL3dvcmtlcnhoci1vcmlnaW4tcmVmZXJyZXIuanNcbiIgYnV0IGdvdCAi
UmVmZXJlcjogaHR0cDovL2xvY2FsaG9zdDo4ODAwL3hoci9yZXNvdXJjZXMvcmVkaXJlY3QucHk/
bG9jYXRpb249d29ya2VyeGhyLW9yaWdpbi1yZWZlcnJlci5qc1xuIgogRkFJTCBPcmlnaW4gaGVh
ZGVyIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJPcmlnaW46IGh0dHA6Ly9sb2NhbGhvc3Q6ODgw
MFxuIiBidXQgZ290ICIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sx
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggZTRlZDMxYWI2YWMzLi5lYTNiYzQ3ODhlZDIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTY2LDYgKzY2LDEyNCBA
QCBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS1nZXRVc2VyTWVkaWEtcGVuZGluZy1w
cm9taXNlLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNhY2hlLW1l
ZGlhc3RyZWFtLmh0bWwgWyBTa2lwIF0KIG1lZGlhL2F1ZGlvLXNlc3Npb24tY2F0ZWdvcnkuaHRt
bCBbIFNraXAgXQogCisjIFNoYXJlZCB3b3JrZXJzIGFyZSBvbmx5IGltcGxlbWVudGVkIGZvciBX
ZWJLaXQyLgoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5
LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFz
c2ljLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
b250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy1zZWxmL3No
YXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3Nj
cmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4v
dG9wLmh0dHAtcnAvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRw
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVk
d29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0
LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4v
dG9wLmh0dHAtcnAvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHAuaHRt
bCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3Vy
aXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1j
bGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtc2Vs
Zi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAv
d29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWNsYXNz
aWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
b250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNyYy1zZWxmL3NoYXJl
ZHdvcmtlci1jbGFzc2ljLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNy
Yy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5t
ZXRhL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5o
dHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVk
d29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNy
Yy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1l
dGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAu
aHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1t
b2R1bGUuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy13aWxkY2Fy
ZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dv
cmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItbW9kdWxlLmh0
dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50
LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3
b3JrZXItbW9kdWxlLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3Jr
ZXItY29ubmVjdC1zcmMuc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3Jr
ZXItcmVwb3J0LW9ubHkuc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3Jr
ZXItc2NyaXB0LXNyYy5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zYW5kYm94L3NoYXJlZC13b3JrZXItc2Fu
ZGJveC5odG1sICBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1kYXRhLXNldC10aW1lb3V0LnN1
Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLWNoaWxkLnN1Yi5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2dlbi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRh
Lmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy1zZWxmL3NoYXJl
ZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC9z
Y3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tpcCBdCitp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dl
bi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0
YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtd2lsZGNhcmQv
c2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRw
LXJwL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsg
U2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHkt
cG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLW5vbmUvc2hhcmVkd29ya2VyLWNsYXNz
aWMuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nv
bnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLW5vbmUvc2hh
cmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29y
a2VyLXNyYy1ub25lL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
Z2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtbm9uZS9zaGFyZWR3b3JrZXItaW1wb3J0LWRhdGEu
aHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1ub25lL3NoYXJl
ZHdvcmtlci1tb2R1bGUuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXIt
c3JjLW5vbmUvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3Au
aHR0cC1ycC93b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHAuaHRt
bCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3Vy
aXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1p
bXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3Jj
LXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0
cC1ycC93b3JrZXItc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0
bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29y
a2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtl
ci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lwIF0KK2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2Vu
L3RvcC5odHRwLXJwL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRw
cy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2Vy
LWltcG9ydC1kYXRhLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNyYy1z
ZWxmL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3Au
bWV0YS9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tp
cCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1pbXBvcnQt
ZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtd2lsZGNhcmQv
c2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRh
L3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5o
dHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLW5vbmUvc2hhcmVkd29y
a2VyLWNsYXNzaWMuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLW5v
bmUvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEv
d29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtbm9uZS9zaGFyZWR3b3JrZXItaW1wb3J0LWRhdGEu
aHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLW5vbmUvc2hhcmVkd29y
a2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1z
cmMtbm9uZS9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1l
dGEvd29ya2VyLXNyYy1ub25lL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cHMuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5o
dHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLXdpbGRjYXJkL3NoYXJl
ZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtl
ci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvd29ya2VyLXNyYy9zaGFyZWQtZmFsbGJhY2suc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvd29ya2VyLXNy
Yy9zaGFyZWQtbGlzdC5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS93b3JrZXItc3JjL3NoYXJlZC1ub25lLnN1
Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXNlbGYuc3ViLmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
d29ya2VyLXNyYy9zaGFyZWQtd29ya2VyLXNyYy1jaGlsZC1mYWxsYmFjay1ibG9ja2VkLnN1Yi5o
dG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXdvcmtlci1zcmMtY2hpbGQtZmFsbGJhY2su
c3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvd29ya2VyLXNyYy9zaGFyZWQtd29ya2VyLXNyYy1kZWZhdWx0LWZh
bGxiYWNrLnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXdvcmtlci1zcmMtc2Ny
aXB0LWZhbGxiYWNrLnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXdvcmtlci1z
cmMtc2VsZi1mYWxsYmFjay5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29ycy9kYXRhLXVybC1zaGFyZWQtd29ya2VyLmh0bWwgWyBT
a2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZs
aW5lL25vLWFwcGNhY2hlLWluLXNoYXJlZC13b3JrZXJzLWhpc3RvcmljYWwuaHR0cHMuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9z
Y3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvbW9kdWxlL2V2YWx1YXRpb24tb3JkZXItMS1u
b3Rocm93LXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudC9t
b2R1bGUvZXZhbHVhdGlvbi1vcmRlci0xLXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3Ro
ZS1zY3JpcHQtZWxlbWVudC9tb2R1bGUvZXZhbHVhdGlvbi1vcmRlci0yLWltcG9ydC1zaGFyZWR3
b3JrZXIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvbW9kdWxlL2V2YWx1YXRp
b24tb3JkZXItMy1keW5hbWljLXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3Jp
cHQtZWxlbWVudC9ldmFsdWF0aW9uLW9yZGVyLTEtbm90aHJvdy1zaGFyZWR3b3JrZXIuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9z
Y3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvZXZhbHVhdGlvbi1vcmRlci0xLXNoYXJlZHdv
cmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
d2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL3VuaGFuZGxlZC1wcm9taXNl
LXJlamVjdGlvbnMvcHJvbWlzZS1yZWplY3Rpb24tZXZlbnRzLnNoYXJlZHdvcmtlci5odG1sIFsg
U2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vc2VyaWFsaXphdGlv
bi9tb2R1bGUvYnJvYWRjYXN0Y2hhbm5lbC1zdWNjZXNzLWFuZC1mYWlsdXJlLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJQ
ZXJmb3JtYW5jZU5vdy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvYmFzZXVybC9hbHBoYS9pbXBvcnRTY3JpcHRzLWluLXNoYXJlZHdvcmtlci5o
dG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvYmFz
ZXVybC9hbHBoYS94aHItaW4tc2hhcmVkd29ya2VyLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9pbnRlcmZhY2VzL1NoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
aW50ZXJmYWNlcy9Xb3JrZXJHbG9iYWxTY29wZS9sb2NhdGlvbi9yZWRpcmVjdC1zaGFyZWR3b3Jr
ZXIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93Lmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJl
ZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi5odG1sIFsgU2tpcCBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2Vy
LWltcG9ydC1kYXRhLXVybC53aW5kb3cuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZmFpbHVy
ZS5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
bW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1tZXRhLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LndpbmRvdy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMv
c2hhcmVkLXdvcmtlci1vcHRpb25zLXR5cGUuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJl
ZC13b3JrZXItcGFyc2UtZXJyb3ItZmFpbHVyZS5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL2VuY29kaW5ncy8wMDIuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGlj
cy9lbmNvZGluZ3MvMDA0Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDQuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwOC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3JlcG9ydGluZy1lcnJvcnMvMDAxLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvcmVw
b3J0aW5nLWVycm9ycy8wMDIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9yZXBvcnRpbmctZXJyb3JzLzAwMy5odG1sIFsgU2tp
cCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3Jl
cG9ydGluZy1lcnJvcnMvMDA0Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvcnVuLWEtd29ya2VyLzAwMi5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3N0cnVj
dHVyZWQtY2xvbmUvc2hhcmVkLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MveGhyLzAwMy5odG1sIFsgU2tpcCBdCitpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3hoci8wMDQuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGlj
cy94aHIvMDA2Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93Lmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW9w
dGlvbnMtbWlzbWF0Y2guaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItcGFyc2UtZXJyb3ItZmFpbHVyZS5odG1sIFsgU2tp
cCBdCisKIGh0dHAvd3B0L21lZGlhcmVjb3JkZXIgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJlY29yZCBbIFNraXAgXQogZmFzdC9oaXN0b3J5
L3BhZ2UtY2FjaGUtbWVkaWEtcmVjb3JkZXIuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3NjcmlwdC1zcmMvd29ya2VyLWltcG9ydHNjcmlwdHMu
c3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3Jj
L3dvcmtlci1pbXBvcnRzY3JpcHRzLnN1Yi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42ZWVhMWJlYWI1YjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItaW1wb3J0c2NyaXB0
cy5zdWItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitGQUlMIERlZGljYXRlZCB3b3Jr
ZXIgaW5oZXJpdHMgQ1NQIGZyb20gbWFpbiBkb2N1bWVudCBhc3NlcnRfZXF1YWxzOiBleHBlY3Rl
ZCAiaW1wb3J0U2NyaXB0cyBhbGxvd2VkIiBidXQgZ290ICJpbXBvcnRTY3JpcHRzIGJsb2NrZWQi
CitGQUlMIFNoYXJlZCB3b3JrZXIgZGVsaXZlcnMgaXRzIG93biBDU1AgU2hhcmVkIHdvcmtlcnMg
YXJlIG5vdCBzdXBwb3J0ZWQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L3NjcmlwdC1zcmMvd29ya2VyLXNldC10aW1lb3V0LnN1Yi1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3Vi
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjY3
NWEzYThlMGYwYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91dC5zdWItZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNCBAQAorCitGQUlMIERlZGljYXRlZCB3b3JrZXIgaW5oZXJpdHMgQ1NQIGZyb20gbWFpbiBk
b2N1bWVudCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAic2V0VGltZW91dCBhbGxvd2VkIiBidXQg
Z290ICJzZXRUaW1lb3V0IGJsb2NrZWQiCitGQUlMIFNoYXJlZCB3b3JrZXIgZGVsaXZlcnMgaXRz
IG93biBDU1AgU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtl
ci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hl
L3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdmMmNkNTE4YzdlNwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Jyb3dzZXJzL29mZmxpbmUvYXBwY2FjaGUvd29ya2Vycy9hcHBjYWNoZS13
b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorQ09OU09MRSBNRVNTQUdF
OiBBcHBsaWNhdGlvbkNhY2hlIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgU2VydmljZVdvcmtl
cnMgaW5zdGVhZC4KKworUEFTUyBEZWRpY2F0ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0
CitQQVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0CitQQVNTIERl
ZGljYXRlZCB3b3JrZXIgb2YgdGhlIG5vdC1pbi1jYWNoZSBzY3JpcHQKK0ZBSUwgU2hhcmVkIHdv
cmtlciBvZiB0aGUgY2FjaGVkIHNjcmlwdCBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rp
b24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogU2hhcmVkIHdvcmtlcnMg
YXJlIG5vdCBzdXBwb3J0ZWQiCitGQUlMIFNoYXJlZCB3b3JrZXIgb2YgdGhlIGZhbGxiYWNrZWQg
c2NyaXB0IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmpl
Y3QgIk5vdFN1cHBvcnRlZEVycm9yOiBTaGFyZWQgd29ya2VycyBhcmUgbm90IHN1cHBvcnRlZCIK
K0ZBSUwgU2hhcmVkIHdvcmtlciBvZiB0aGUgbm90LWluLWNhY2hlIHNjcmlwdCBwcm9taXNlX3Rl
c3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRF
cnJvcjogU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQiCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvbW9kdWxlL2lt
cG9ydC1tZXRhL2ltcG9ydC1tZXRhLXVybC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3Mvc2NyaXB0aW5nLTEvdGhlLXNjcmlwdC1lbGVtZW50L21vZHVsZS9pbXBvcnQtbWV0YS9pbXBv
cnQtbWV0YS11cmwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uYjI0OTlmYWRjYjZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudC9tb2R1bGUvaW1wb3J0LW1ldGEvaW1w
b3J0LW1ldGEtdXJsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACisKK1BBU1MgaW1wb3J0
Lm1ldGEudXJsIGluIGEgcm9vdCBleHRlcm5hbCBzY3JpcHQKK1BBU1MgaW1wb3J0Lm1ldGEudXJs
IGluIGEgZGVwZW5kZW50IGV4dGVybmFsIHNjcmlwdAorUEFTUyBpbXBvcnQubWV0YSBpcyBhbiBv
YmplY3QKK1BBU1MgaW1wb3J0Lm1ldGEgaXMgZXh0ZW5zaWJsZQorUEFTUyBpbXBvcnQubWV0YSdz
IHByb3BlcnRpZXMgYXJlIHdyaXRhYmxlLCBjb25maWd1cmFibGUsIGFuZCBlbnVtZXJhYmxlCitQ
QVNTIGltcG9ydC5tZXRhLnVybCB3aGVuIGltcG9ydGluZyB0aGUgbW9kdWxlIHdpdGggZGlmZmVy
ZW50IGZyYWdtZW50cworUEFTUyBpbXBvcnQubWV0YS51cmwgaW4gYSByb290IGlubGluZSBzY3Jp
cHQKK1BBU1MgaW1wb3J0Lm1ldGEudXJsIGF0IHRvcC1sZXZlbCBtb2R1bGUgRGVkaWNhdGVkV29y
a2VyCitGQUlMIGltcG9ydC5tZXRhLnVybCBhdCB0b3AtbGV2ZWwgbW9kdWxlIFNoYXJlZFdvcmtl
ciBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJO
b3RTdXBwb3J0ZWRFcnJvcjogU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQiCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvdGhlLXdpbmRvd29yd29ya2VyZ2xvYmFsc2Nv
cGUtbWl4aW4vV29ya2VyX1NlbGZfT3JpZ2luLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFw
cGFwaXMvdGhlLXdpbmRvd29yd29ya2VyZ2xvYmFsc2NvcGUtbWl4aW4vV29ya2VyX1NlbGZfT3Jp
Z2luLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LmYzOWY2ZmVkMWYzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvdGhl
LXdpbmRvd29yd29ya2VyZ2xvYmFsc2NvcGUtbWl4aW4vV29ya2VyX1NlbGZfT3JpZ2luLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDggQEAKKworUEFTUyBTYW1lIE9yaWdpbiBXb3JrZXIKK0ZBSUwg
U2FtZSBPcmlnaW4gU2hhcmVkV29ya2VyIFNoYXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVk
CitQQVNTIERhdGEgVXJsIFdvcmtlcgorRkFJTCBEYXRhIFVybCBTaGFyZWRXb3JrZXIgU2hhcmVk
IHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQKK1BBU1MgQmxvYiBVcmwgV29ya2VyCitGQUlMIEJs
b2IgVXJsIFNoYXJlZFdvcmtlciBTaGFyZWQgd29ya2VycyBhcmUgbm90IHN1cHBvcnRlZAorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvd29ya2Vycy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvd29ya2Vycy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xM2VkMTZk
ODcxOTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5u
ZWwvd29ya2Vycy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorCitQQVNTIEJyb2FkY2Fz
dENoYW5uZWwgd29ya3MgaW4gd29ya2VycworRkFJTCBCcm9hZGNhc3RDaGFubmVsIHdvcmtzIGlu
IHNoYXJlZCB3b3JrZXJzIFNoYXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkCitQQVNTIENs
b3NpbmcgYW5kIHJlLW9wZW5pbmcgYSBjaGFubmVsIHdvcmtzLgorUEFTUyBCcm9hZGNhc3RDaGFu
bmVsIGNyZWF0ZWQgYWZ0ZXIgYSB3b3JrZXIgc2VsZi5jbG9zZSgpCitQQVNTIEJyb2FkY2FzdENo
YW5uZWwgbWVzc2FnZXMgZnJvbSBjbG9zZWQgd29ya2VyIHRvIHBhcmVudCBzaG91bGQgYmUgaWdu
b3JlZCAoQkMgY3JlYXRlZCBiZWZvcmUgY2xvc2luZykKK1BBU1MgQnJvYWRjYXN0Q2hhbm5lbCBt
ZXNzYWdlcyBmcm9tIGNsb3NlZCB3b3JrZXIgdG8gcGFyZW50IHNob3VsZCBiZSBpZ25vcmVkIChC
QyBjcmVhdGVkIGFmdGVyIGNsb3NpbmcpCitQQVNTIEJyb2FkY2FzdENoYW5uZWwgbWVzc2FnZXMg
ZnJvbSBwYXJlbnQgdG8gY2xvc2VkIHdvcmtlciBzaG91bGQgYmUgaWdub3JlZCAoQkMgY3JlYXRl
ZCBiZWZvcmUgY2xvc2luZykKK1BBU1MgQnJvYWRjYXN0Q2hhbm5lbCBtZXNzYWdlcyBmcm9tIHBh
cmVudCB0byBjbG9zZWQgd29ya2VyIHNob3VsZCBiZSBpZ25vcmVkIChCQyBjcmVhdGVkIGFmdGVy
IGNsb3NpbmcpCitQQVNTIEJyb2FkY2FzdENoYW5uZWwgbWVzc2FnZXMgd2l0aGluIGNsb3NlZCB3
b3JrZXIgc2hvdWxkIGJlIGlnbm9yZWQgKEJDcyBjcmVhdGVkIGJlZm9yZSBjbG9zaW5nKQorUEFT
UyBCcm9hZGNhc3RDaGFubmVsIG1lc3NhZ2VzIHdpdGhpbiBjbG9zZWQgd29ya2VyIHNob3VsZCBi
ZSBpZ25vcmVkIChCQ3MgY3JlYXRlZCBhZnRlciBjbG9zaW5nKQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9hYnJ1cHQtY29tcGxldGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9hYnJ1
cHQtY29tcGxldGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5kMDE1NmMwYjIxOWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9h
YnJ1cHQtY29tcGxldGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgRGVk
aWNhdGVkV29ya2VyIHNob3VsZCBjb3JyZWN0bHkgaGFuZGxlIGFicnVwdCBjb21wbGV0aW9uCitG
QUlMIFNoYXJlZFdvcmtlciBzaG91bGQgY29ycmVjdGx5IGhhbmRsZSBhYnJ1cHQgY29tcGxldGlv
biBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJO
b3RTdXBwb3J0ZWRFcnJvcjogU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQiCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwMS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDEtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2YyYTky
NzhjNWYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxl
LXdvcmtlcnMvMDAxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBkZWRpY2F0
ZWQKK0ZBSUwgc2hhcmVkIFNoYXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9ydW4tYS13b3JrZXIvMDAzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9ydW4tYS13b3JrZXIvMDAzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFmN2ZhMDg0Yzc0ZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9ydW4tYS13b3JrZXIvMDAzLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyB3b3JrZXIKK0ZBSUwgc2hhcmVkIFNo
YXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
NzkyYTAwZjllYTFhLi40NTdjNGFhOWIxYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNzks
NiArMTc5LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAg
IiR7V0VCQ09SRV9ESVJ9L3dvcmtlcnMvc2VydmljZS9jb250ZXh0IgogICAgICIke1dFQkNPUkVf
RElSfS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyIgogICAgICIke1dFQkNPUkVfRElSfS93b3JrZXJz
L3NoYXJlZCIKKyAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2Vycy9zaGFyZWQvY29udGV4dCIKICAg
ICAiJHtXRUJDT1JFX0RJUn0vd29ya2xldHMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3htbCIKICAg
ICAiJHtXRUJDT1JFX0RJUn0veG1sL3BhcnNlciIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDg5Yjgy
YTEzZjdlNC4uMGYwMzkyMDc3MDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTE5NTUsOSArMTk1
NSwxMiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAogICAgIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
aAogICAgIHdvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaAorICAgIHdvcmtlcnMvV29ya2VyT2Jq
ZWN0UHJveHkuaAorICAgIHdvcmtlcnMvV29ya2VyT3B0aW9ucy5oCiAgICAgd29ya2Vycy9Xb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCiAgICAgd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmgKICAgICB3b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5oCisgICAg
d29ya2Vycy9Xb3JrZXJSZXBvcnRpbmdQcm94eS5oCiAgICAgd29ya2Vycy9Xb3JrZXJSdW5Mb29w
LmgKICAgICB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCiAgICAgd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXJDbGllbnQuaApAQCAtMjAwMCw2ICsyMDAzLDE1IEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCiAgICAgd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlcldvcmtlci5oCiAKKyAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJJZGVudGlmaWVy
LmgKKyAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaAorICAgIHdvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaAorICAgIHdvcmtlcnMvc2hhcmVkL1No
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaAorICAgIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlclByb3ZpZGVyLmgKKworICAgIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXIuaAorICAgIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHkuaAorCiAgICAgeG1sL0N1c3RvbVhQYXRoTlNSZXNvbHZlci5oCiAgICAgeG1s
L1hQYXRoRXhwcmVzc2lvbi5oCiAgICAgeG1sL1hQYXRoTlNSZXNvbHZlci5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CmluZGV4IGY2NmNjZjhmMDZhNS4uOWFiODYwNGM5ZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjc4
NiwxMCArMjc4NiwxMiBAQCB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3Bw
CiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXJHbG9iYWxTY29wZS5jcHAKLXdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIu
Y3BwCi13b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm94eS5jcHAKK3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCit3b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXJQcm92aWRlci5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRl
ci5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclRocmVhZC5jcHAKK3dvcmtlcnMvc2hh
cmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwCit3b3JrZXJzL3NoYXJl
ZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcAogd29ya2xldHMvUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwCiB3b3JrbGV0cy9Xb3JrbGV0LmNwcAogd29ya2xldHMvV29ya2xl
dEdsb2JhbFNjb3BlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGJmYWM4NmU3ZGMxYi4uMDBmY2I2OWMzNWJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05
MDMsNyArOTAzLDcgQEAKIAkJMkU0MzQ2NEIwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2Jh
bFNjb3BlUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJFNDM0NjM5MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZVByb3h5Lmgg
Ki87IH07CiAJCTJFNDM0NjREMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJMb2NhdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2M0IwRjU0
NkE4MjAwQjBGMUJBIC8qIFdvcmtlckxvY2F0aW9uLmggKi87IH07CiAJCTJFNDM0NjUwMEY1NDZB
ODIwMEIwRjFCQSAvKiBXb3JrZXJNZXNzYWdpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2M0UwRjU0NkE4MjAwQjBGMUJBIC8qIFdv
cmtlck1lc3NhZ2luZ1Byb3h5LmggKi87IH07Ci0JCTJFNDM0NjUxMEY1NDZBODIwMEIwRjFCQSAv
KiBXb3JrZXJPYmplY3RQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkU0MzQ2M0YwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5
LmggKi87IH07CisJCTJFNDM0NjUxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2
M0YwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2NTMwRjU0NkE4MjAwQjBG
MUJBIC8qIFdvcmtlclJ1bkxvb3AuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJFNDM0NjQxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJSdW5Mb29wLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2
NTUwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2NDMwRjU0NkE4MjAwQjBGMUJBIC8qIFdv
cmtlclRocmVhZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTJFNzU4NDFFMTI3NzlBREEwMDYyNjI4QiAvKiBGaWxlUmVhZGVyTG9hZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTc1ODQxQjEyNzc5
QURBMDA2MjYyOEIgLyogRmlsZVJlYWRlckxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTI1LDcgKzExMjUsNyBAQAogCQk0MTZBMDZB
MTIzQ0NBRDAzMDAzNDcxMDkgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkEwNjk2MjNDQ0FB
OUYwMDM0NzEwOSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkQ3NUEyMjBDNjUxQTUw
MEQwMkQyQyAvKiBOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZENzU5RjIwQzY0NDEzMDBEMDJEMkMgLyogTmV0
d29ya0xvYWRJbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQxNkUwQjNBMjA5QkMzQ0IwMDRBOTVEOSAvKiBGZXRjaElkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkUw
QjM3MjA5QkMzQzIwMDRBOTVEOSAvKiBGZXRjaElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk0MTZFMjlBNjEwMkZBOTYyMDA3RkMx
NEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkUyOUE1MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBv
cnRpbmdQcm94eS5oICovOyB9OworCQk0MTZFMjlBNjEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2Vy
UmVwb3J0aW5nUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxNkUyOUE1MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2
RkU4MUJCRDEyREYwMDBBM0Y2NCAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFC
QjMxMTBEMDBCNzY0RDkgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU4MUJC
RDEyREYwMDBBM0Y2NSAvKiBKU0RPTUJpbmRpbmdJbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAw
Qjc2NERBIC8qIEpTRE9NQmluZGluZ0ludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgxQkJEMTJERjAwMEEz
Rjc0IC8qIFRyYW5zZm9ybVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RUEg
LyogVHJhbnNmb3JtU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTMyMyw2ICsxMzIzLDggQEAKIAkJNDYw
RTMwNzcyMjJGNEYwMzAwOUEwNjA2IC8qIERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNz
aW9uU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2NUVERDlGMjIyRjRFQzMwMEI0NkUxNiAvKiBEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVy
bWlzc2lvblN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDYyMThBQ0IxRjcyRDY0RTAwNTc0RkJFIC8qIERPTUhpZ2hSZXNUaW1lU3RhbXAu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RTAxNkFE
MUY3MkQ2MUUwMDI4MkIyQyAvKiBET01IaWdoUmVzVGltZVN0YW1wLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYyNzNDQUYyNjBFNTlFRjAwNkZB
QTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDYyNzNDQUMyNjBFNTlERjAwNkZBQTkxIC8qIFNXU2NyaXB0U3RvcmFn
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2
MjdGRjU5Mjc5QjgyNDkwMEFBMzkxNiAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYyN0ZGNTgyNzlCODI0
NjAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDYyN0ZGNUIyNzlCODdBRjAwQUEzOTE2
IC8qIFNoYXJlZFdvcmtlcklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MjdGRjVBMjc5Qjg3QTIwMEFBMzkxNiAvKiBTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDYyQzdGNDEyNzU2REJFNDAwRDA4M0M4IC8qIFdlYkxvY2tJZGVudGlmaWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njc4MDJCMjI3
NDcxMTg1MDBEQTlGQjYgLyogV2ViTG9ja0lkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjJFNEM1MDI2MTZBODExMDAzQTJDNjcg
LyogU2NyaXB0QnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjJFNEM0RDI2MTZBODAxMDAzQTJDNjcgLyogU2NyaXB0QnVmZmVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYzNEM3MkMyNzU3
REFCMjAwMjZBODE1IC8qIFdlYkxvY2tNYW5hZ2VyU25hcHNob3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzgwMkIwMjc0NzExN0IwMERBOUZCNiAv
KiBXZWJMb2NrTWFuYWdlclNuYXBzaG90LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzNDQsMTUgKzEzNDYsMTggQEAKIAkJNDY3MzAyMDIxQzRF
RkU3ODAwQkNCMzU3IC8qIElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3MzAyMDEx
QzRFRkU2NjAwQkNCMzU3IC8qIElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRl
ci5oICovOyB9OwogCQk0NjdBNjhENzI3NUVBOTkxMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhy
ZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdB
NjhENDI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggKi87IH07CiAJCTQ2
N0E2OEQ4Mjc1RUE5OTUwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0E2OEQ1Mjc1RUE5
OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCAqLzsgfTsKLQkJNDY3QTY4
RDkyNzVFQTk5ODAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclByb3h5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdBNjhENjI3NUVBOThDMDA5QjMxQzUg
LyogU2hhcmVkV29ya2VyUHJveHkuaCAqLzsgfTsKLQkJNDY3QTY4REEyNzVFQTk5QzAwOUIzMUM1
IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2N0E2OEQyMjc1RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJN
YW5hZ2VyLmggKi87IH07CiAJCTQ2ODJEMjAwMUY3OTc4MzAwMEM4NjNEQiAvKiBTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY4MkQxRkYxRjc5NzgyMzAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4
MzQ0RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyog
RE9NUmVjdExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0NjgzREY0MDI3NjdERjk4MDA3RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNj
b3BlQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDY4M0RGM0UyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2Uu
aCAqLzsgfTsKIAkJNDY4M0RGNDEyNzY3RTkxQTAwN0QwMEM4IC8qIFNoYWRvd1JlYWxtR2xvYmFs
U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
ODNERjNCMjc2N0RGMjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4OEVFM0MyNkRE
MjYxMDAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4OEVFM0EyNkREMjYwQzAwMkFGNUM0IC8qIENyb3Nz
T3JpZ2luTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTQ2OTQzREM4Mjc2M0Y4MTIwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
Njk0M0RDNTI3NjNGODBEMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2OTQz
REM5Mjc2M0Y4MTcwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0M0RDNzI3NjNG
ODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2OTQzRENBMjc2M0Y4MUMw
MDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5NDNEQzQyNzYzRjgwRDAwNEI2MTBFIC8qIFNoYXJl
ZFdvcmtlclByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNDY5ODVGMjMyN0E0QTZBRDAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktleS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5ODVGMjIy
N0E0QTY4NjAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktleS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2OUNDQ0ZFMjY5RDAyMUMwMDZFMDMxNCAv
KiBCcm9hZGNhc3RDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NjlDQ0NGQzI2OUQwMjAyMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2OUQ3
N0I4MjcwMTYyNTEwMDE0MkZBNiAvKiBOYXZpZ2F0aW9uUmVxdWVzdGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjlENzdCNjI3MDE2MjUwMDAxNDJG
QTYgLyogTmF2aWdhdGlvblJlcXVlc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTQ2QTc4QjM0Mjc5OUJENzEwMDExNTRGRSAvKiBXb3JrZXJP
cHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
QzFCMUQyNjI2RjE4QTRCMDA4ODJEQTIgLyogV29ya2VyT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QUFBQTNEMjVEMzYzMjAwMEJB
RjQyRiAvKiBBdWRpb0ZpbGVSZWFkZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZBQUFBM0EyNUQzNjMxNDAwQkFGNDJGIC8qIEF1ZGlvRmls
ZVJlYWRlckNvY29hLmggKi87IH07CiAJCTQ2QjYzRjZDMUM2RThEMTkwMDJFOTE0QiAvKiBKU0V2
ZW50VGFyZ2V0Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QjY1
MEREMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjUwREIyMjk2MjYyNzAwRkQ4QUE0IC8q
IFBhZ2VJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTEzNjksNiArMTM3NCw3IEBACiAJCTQ2QkQwNUM2MjVCQjZFNkMwMDIyNUYz
MCAvKiBFdmVudExpc3RlbmVyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZCRDA1QzMyNUJCNkU0RTAwMjI1RjMwIC8qIEV2ZW50TGlzdGVu
ZXJPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDZDMDk2MjEyM0Q3OERENjAwNjU3QzA5IC8qIEhUVFBDb29raWVBY2NlcHRQb2xpY3ku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzA5NjIw
MjNENzhERDYwMDY1N0MwOSAvKiBIVFRQQ29va2llQWNjZXB0UG9saWN5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZDMzc2NjIyMDg1MTc3RDAw
QzczODI5IC8qIEpTUmVtb3RlRE9NV2luZG93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NkMzNzY2MTIwODUxNzZEMDBDNzM4MjkgLyogSlNSZW1vdGVE
T01XaW5kb3cuaCAqLzsgfTsKKwkJNDZDNDE2OUIyNzlBMDRDNzAwMjUyQzNCIC8qIFNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NjI2QjQ3NTI3OUEwM0QyMDBBRUYwQjIgLyogU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NkM2OTZDQjFFNzIwNUY3MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNjk2QzkxRTcyMDVFNDAwNTk3
OTM3IC8qIENQVU1vbml0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0NkM2OTZDQzFFNzIwNUZDMDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM2OTZDQTFF
NzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgKi87IH07CiAJCTQ2QzgzRUZFMUE5QkJF
MjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZDODNFRkMxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTkx
ODUsOSArOTE5MSwxMyBAQAogCQk0NjBDQkYzMzFENEJDQ0ZFMDA5MkU4OEUgLyogSlNET01XaW5k
b3dQcm9wZXJ0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
RE9NV2luZG93UHJvcGVydGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
MENCRjM0MUQ0QkNDRkUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01XaW5kb3dQcm9wZXJ0aWVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MEQxOTQ0MUZDRTIxREQwMEMzREI4NSAvKiBKU1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MjZCNDc1Mjc5QTAzRDIwMEFFRjBCMiAvKiBTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjI3M0MyMTI3QTFD
QkM3MDA2QTE1QjkgLyogSlNBdWRpb1dvcmtsZXRQcm9jZXNzb3JDdXN0b20uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNBdWRpb1dvcmtsZXRQcm9jZXNzb3JDdXN0b20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NjI3M0NBQzI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRT
dG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNXU2NyaXB0U3RvcmFn
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjI3M0NBRTI2MEU1OURGMDA2RkFB
OTEgLyogU1dTY3JpcHRTdG9yYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNXU2NyaXB0U3RvcmFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQ2MjdGRjU3Mjc5QjgyNDUwMEFBMzkxNiAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MjdGRjU4Mjc5QjgyNDYw
MEFBMzkxNiAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0NjI3RkY1QTI3OUI4N0EyMDBBQTM5MTYgLyogU2hhcmVkV29ya2VySWRl
bnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MkU0QzREMjYxNkE4
MDEwMDNBMkM2NyAvKiBTY3JpcHRCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2NyaXB0QnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MkU0
QzRGMjYxNkE4MDEwMDNBMkM2NyAvKiBTY3JpcHRCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0QnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDYzNDU5MkIxQUMyMjcxMDAwRUNCNzFDIC8qIFBvd2VyT2JzZXJ2ZXJNYWMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG93ZXJPYnNlcnZlck1h
Yy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MjM0LDE0ICs5MjQ0LDEwIEBA
CiAJCTQ2NzMwMjAxMUM0RUZFNjYwMEJDQjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENv
dW50SW5jcmVtZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWdub3Jl
T3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2NzgwMkIwMjc0NzExN0IwMERBOUZCNiAvKiBXZWJMb2NrTWFuYWdlclNuYXBz
aG90LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkxvY2tNYW5hZ2VyU25h
cHNob3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3ODAyQjIyNzQ3MTE4NTAw
REE5RkI2IC8qIFdlYkxvY2tJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkxvY2tJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTQ2N0E2OENGMjc1RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJQcm94eS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2N0E2OEQwMjc1RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFkLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3QTY4RDEyNzVFQTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdv
cmtlclNjcmlwdExvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NjdBNjhEMjI3NUVB
OThBMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFy
ZWRXb3JrZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2N0E2OEQz
Mjc1RUE5OEIwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNoYXJlZFdvcmtlck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NjdBNjhENDI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjdBNjhENTI3NUVBOThDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk0NjdBNjhENjI3NUVBOThDMDA5QjMxQzUgLyogU2hhcmVk
V29ya2VyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyUHJveHkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MkQxRkYxRjc5NzgyMzAwQzg2M0RCIC8qIFN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
b3JlZENyZWRlbnRpYWxzUG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
ODM0NERDMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NUmVjdExp
c3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgzNDRERDFFRERGQTVGMDBC
Nzc5NUIgLyogRE9NUmVjdExpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NUmVjdExpc3Qu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTI1NCw2ICs5MjYwLDEyIEBACiAJ
CTQ2ODNERjNFMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2hhZG93UmVhbG1HbG9iYWxT
Y29wZUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OEVFM0EyNkREMjYw
QzAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcm9zc09yaWdp
bk1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4QjhCREUyNUNDODQ5MzAw
RjY3ODIyIC8qIEpTQmFzZUF1ZGlvQ29udGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0Jhc2VBdWRpb0NvbnRleHRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0Njk0M0RDMjI3NjNGODBDMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyUHJvdmlkZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RDNDI3NjNGODBEMDA0QjYxMEUgLyogU2hhcmVkV29y
a2VyUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyUHJvdmlkZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQzUyNzYzRjgwRDAwNEI2MTBFIC8qIFNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RD
NjI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk4NUYyMjI3
QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlcktleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NjlDQ0NGQTI2OUQwMjAyMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBCcm9hZGNhc3RDaGFubmVsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDY5Q0NDRkMyNjlEMDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQnJvYWRjYXN0Q2hhbm5lbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NjlDQ0NGRDI2OUQwMjAzMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gQnJvYWRjYXN0Q2hhbm5lbC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC05Mjg4LDYgKzkzMDAsNyBAQAogCQk0NkMzNzY1RjIwODUxNzZDMDBDNzM4MjkgLyogSlNS
ZW1vdGVET01XaW5kb3cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNSZW1vdGVET01XaW5kb3cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkMz
NzY2MTIwODUxNzZEMDBDNzM4MjkgLyogSlNSZW1vdGVET01XaW5kb3cuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNSZW1vdGVET01XaW5kb3cuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDZDM0E4RDMyNTQ4RDRCNzAwQzhDNTNBIC8qIEpTQXVkaW9CdWZmZXJD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdWRpb0J1ZmZlckN1c3RvbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2QzQxNjlEMjc5QTA0RDIwMDI1MkMzQiAvKiBT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2QzY5NkM5MUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENQVU1vbml0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDNjk2Q0ExRTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1BVTW9uaXRvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzgzRUZCMUE5QkJFMjkwMEE3OUE0
MSAvKiBHZW9Ob3RpZmllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBHZW9Ob3RpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTUyMSw2
ICsyMTUzNCwxNyBAQAogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CiAJCX07CisJCTQ2MjZCNDczMjc5QTAzQjEwMEFFRjBCMiAvKiBjb250ZXh0ICovID0geworCQkJ
aXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk0NjI3RkY1NzI3OUI4MjQ1MDBB
QTM5MTYgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3BwICovLAorCQkJCTQ2MjdGRjU4Mjc5
QjgyNDYwMEFBMzkxNiAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oICovLAorCQkJCTQ2QzQx
NjlEMjc5QTA0RDIwMDI1MkMzQiAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAgKi8s
CisJCQkJNDYyNkI0NzUyNzlBMDNEMjAwQUVGMEIyIC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyLmggKi8sCisJCQkpOworCQkJcGF0aCA9IGNvbnRleHQ7CisJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOworCQl9OwogCQk0NjQyNDA0NDIwRUFGMEJEMDBCMjlGRDIgLyogY29jb2EgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjE1NTUsMTYgKzIxNTc5
LDIwIEBACiAJCTQ2Njk0Q0RFMjc1OTQ0NkQwMEUzMTUwRSAvKiBzaGFyZWQgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQ2MjZCNDczMjc5QTAzQjEwMEFF
RjBCMiAvKiBjb250ZXh0ICovLAogCQkJCTQ2Njk0Q0UzMjc1OTQ0OEQwMEUzMTUwRSAvKiBTaGFy
ZWRXb3JrZXIuY3BwICovLAogCQkJCTQ2Njk0Q0UyMjc1OTQ0OEQwMEUzMTUwRSAvKiBTaGFyZWRX
b3JrZXIuaCAqLywKIAkJCQk0NjY5NENFNTI3NTk0NDhFMDBFMzE1MEUgLyogU2hhcmVkV29ya2Vy
LmlkbCAqLywKIAkJCQk0NjY5NENFNDI3NTk0NDhFMDBFMzE1MEUgLyogU2hhcmVkV29ya2VyR2xv
YmFsU2NvcGUuY3BwICovLAogCQkJCTQ2Njk0Q0UxMjc1OTQ0OEMwMEUzMTUwRSAvKiBTaGFyZWRX
b3JrZXJHbG9iYWxTY29wZS5oICovLAogCQkJCTQ2Njk0Q0UwMjc1OTQ0OEMwMEUzMTUwRSAvKiBT
aGFyZWRXb3JrZXJHbG9iYWxTY29wZS5pZGwgKi8sCi0JCQkJNDY3QTY4RDMyNzVFQTk4QjAwOUIz
MUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuY3BwICovLAotCQkJCTQ2N0E2OEQyMjc1RUE5OEEw
MDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggKi8sCi0JCQkJNDY3QTY4Q0YyNzVFQTk4
OTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclByb3h5LmNwcCAqLywKLQkJCQk0NjdBNjhENjI3NUVB
OThDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyUHJveHkuaCAqLywKKwkJCQk0NjI3RkY1QTI3OUI4
N0EyMDBBQTM5MTYgLyogU2hhcmVkV29ya2VySWRlbnRpZmllci5oICovLAorCQkJCTQ2OTg1RjIy
MjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCAqLywKKwkJCQk0Njk0M0RDNjI3
NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgKi8sCisJ
CQkJNDY5NDNEQzUyNzYzRjgwRDAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b24uaCAqLywKKwkJCQk0Njk0M0RDNzI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllci5oICovLAorCQkJCTQ2OTQzREMyMjc2M0Y4MEMwMDRCNjEwRSAvKiBTaGFy
ZWRXb3JrZXJQcm92aWRlci5jcHAgKi8sCisJCQkJNDY5NDNEQzQyNzYzRjgwRDAwNEI2MTBFIC8q
IFNoYXJlZFdvcmtlclByb3ZpZGVyLmggKi8sCiAJCQkJNDY3QTY4RDEyNzVFQTk4QTAwOUIzMUM1
IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAgKi8sCiAJCQkJNDY3QTY4RDUyNzVFQTk4
QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oICovLAogCQkJCTQ2N0E2OEQw
Mjc1RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuY3BwICovLApAQCAtMzM4NzIs
NiArMzM5MDAsNyBAQAogCQkJCTJENDgxRjAyMTQ2QjVDNTUwMEFBNzgzNCAvKiBDcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFDNDE2MTIwRjY1NjJGRDAwOTJE
MkZCIC8qIENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY3
MkFBOTgyNkIwOTQzMzAwRTZFQzM4IC8qIENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTQ2QTc4QjM0Mjc5OUJENzEwMDExNTRGRSAvKiBXb3JrZXJPcHRpb25z
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0Njg4RUUzQzI2REQyNjEwMDAyQUY1QzQgLyogQ3Jvc3NP
cmlnaW5Nb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjcyQUE5OTI2QjA5NDNGMDBFNkVDMzgg
LyogQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQUJFNjdC
MUQwNTgwREIwMDZEODYyRCAvKiBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuaCBpbiBIZWFk
ZXJzICovLApAQCAtMzM5MTAsNiArMzM5MzksNyBAQAogCQkJCTU3RkVERDNGMURCNkQ1OTIwMEVC
OTZGNSAvKiBDcnlwdG9BbGdvcml0aG1Sc2FLZXlHZW5QYXJhbXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTU3MDZBNjk2MURERTVDOTUwMEEwM0IxNCAvKiBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFy
YW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzIxQTk4QjFFQ0U1NzA0MDA4MTI5NUEgLyogQ3J5
cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjI3RkY1OTI3
OUI4MjQ5MDBBQTM5MTYgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUxQkQzMzFBMTgyRDhEREQwMEMwNUQ5RiAvKiBDcnlwdG9BbGdvcml0aG1SU0FTU0Ff
UEtDUzFfdjFfNS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEyNUY4MkMxODIyQ0ZFQzAwRDg0Q0Q5
IC8qIENyeXB0b0FsZ29yaXRobVNIQTEuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxOUFDM0VGMTgy
NERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyMjQuaCBpbiBIZWFkZXJzICovLApA
QCAtMzQ4OTYsNiArMzQ5MjYsNyBAQAogCQkJCUNEM0UyMUREMjE4MzQ0NEEwMEU2NkY1NSAvKiBJ
bWFnZUJ1ZmZlclV0aWxpdGllc0NHLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NEVFQTEwMDI3NDc1
N0YxMDA1OTRBODMgLyogSW1hZ2VDb250cm9sc01hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3
OTc5MUEwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NDZDNDE2OUIyNzlBMDRDNzAwMjUyQzNCIC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQ0EwODhGNTI2NEUxQzA4MDAzRTJBNkMgLyogSW1hZ2VEYXRh
U2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMTlGRUE4MUY1NzM5NzIwMDBDNDJGQiAv
KiBJbWFnZURlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMTlGRUFFMUY1NzRCNkQwMDBD
NDJGQiAvKiBJbWFnZURlY29kZXJBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKQEAgLTM1NTI0LDYg
KzM1NTU1LDcgQEAKIAkJCQkxQTc1MEQ4RTBBOTBFNTIxMDAwRkYyMTUgLyogSlNOb2RlSXRlcmF0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDlDMkMzMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05v
ZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDIwQjE4RDE4RTlEMjM3MDA1QTgwODMgLyog
SlNOb2RlTGlzdEN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY5NDNEQzkyNzYzRjgxNzAw
NEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTMzNTAzQ0E0MTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTEwRTJGMzMyNzZCRjY4NTAwODA5MzMzIC8qIEpTTm90aWZpY2F0aW9uRGly
ZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTBFMkYyQjI3NkJDRkU4MDA4MDkzMzMgLyog
SlNOb3RpZmljYXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNjY3NSw2ICszNjcwNyw3
IEBACiAJCQkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2MDQzIC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRp
bnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMjlDOUE5MUY1OUM1NkIwMDlENzQwMyAvKiBSZWFk
YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTZFNkZF
ODFCQkQxMkRGMDAwQTNGNjQgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDY5NDNEQzgyNzYzRjgxMjAwNEI2MTBFIC8qIFNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMjlDOUFGMUY1OUNGNUIw
MDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMjlD
OUFCMUY1OUM1NzMwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNvdXJjZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkQzMTYwM0MxMkIwMjY3NjAwQzFBMzU5IC8qIFJlYWx0aW1lQW5hbHlzZXIuaCBp
biBIZWFkZXJzICovLApAQCAtMzcwNTIsNiArMzcwODUsNyBAQAogCQkJCTBGNjA1QUVEMTVGOTQ4
NDgwMDRERjBDMCAvKiBTY3JvbGxpbmdDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFGNjJFRTgxNERBMjJBNzAwNDE1NTZDIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5MzkxQTk5MTE2Mjc0NkNCMDAyOTczMzAgLyogU2Nyb2xsaW5nQ29vcmRp
bmF0b3JNYWMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2MjdGRjVCMjc5Qjg3QUYwMEFBMzkxNiAv
KiBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTJEQkE0OTIx
RjhBRDgzMDA4RjM2QjIgLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3JUeXBlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNUI0NjY1NjMyNUQxNEMwQTAwMENGRTE0IC8qIFNjcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk5MDU5QTI2RjZCRTg1MDA1NEZCRTAgLyog
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTM3MTc4LDgg
KzM3MjEyLDYgQEAKIAkJCQk4MzRERkFEMDFGN0RBRTVEMDBDMjcyNUIgLyogU2hhcmVkU3RyaW5n
SGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFQTMwOTlFQjc4QzAwNTZFNTgxIC8qIFNo
YXJlZFRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURDMDRGRTI3QTgzQzkzMDA4Q0Y5Njgg
LyogU2hhcmVkVmlkZW9GcmFtZUluZm8uaCBpbiBIZWFkZXJzICovLAotCQkJCTQ2N0E2OERBMjc1
RUE5OUMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk0NjdBNjhEOTI3NUVBOTk4MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyUHJveHkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ2N0E2OEQ4Mjc1RUE5OTUwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2N0E2OEQ3Mjc1RUE5OTEwMDlCMzFDNSAv
KiBTaGFyZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDNERCMDI2MjczMzlG
RTAwMDdCMEFEMSAvKiBTaG91bGRMb2NhbGl6ZUF4aXNOYW1lcy5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zNzQxMyw2ICszNzQ0NSw3IEBACiAJCQkJQjIyMjc5QzAwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R0VsbGlwc2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlDODBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHRkVCbGVuZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUNC
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDY5ODVGMjMyN0E0QTZBRDAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktleS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5Q0UwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFQ29tcG9u
ZW50VHJhbnNmZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlEMTBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHRkVDb21wb3NpdGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkx
OTIxMzI3NTExQzBFNkJCMDA0NTYyMzggLyogU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaCBp
biBIZWFkZXJzICovLApAQCAtMzgwNjAsNiArMzgwOTMsNyBAQAogCQkJCTgzQUNEMDEzMjUyMjlF
MTAwMDBEMTI0RSAvKiBXb3JrbGV0T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM0QTZB
M0EyNTI2ODQ0QTAwNzQ3RjVEIC8qIFdvcmtsZXRQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4MzNCRDgxNzI1MjRENEYyMDA2RTcyQjMgLyogV29ya2xldFBlbmRpbmdUYXNrcy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDY5NDNEQ0EyNzYzRjgxQzAwNEI2MTBFIC8qIFNoYXJlZFdvcmtl
clByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUyNDA5OUU2NDkyMDA1NkU1ODEg
LyogV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTZFNkZFODFCQkQxMkRGMDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlu
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUJBRjNCMjQxMkMxQTM5ODAwMDE0QkYxIC8qIFdyaXRp
bmdEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCmlu
ZGV4IGRjMGY1MDk4Yjg3Zi4uZmE3ZDIzMDJlYzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2lu
Zy5oCkBAIC0xMDksNiArMTA5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIE0oU2VsZWN0
aW9uKSBcCiAgICAgTShTZXJ2aWNlcykgXAogICAgIE0oU2VydmljZVdvcmtlcikgXAorICAgIE0o
U2hhcmVkV29ya2VyKSBcCiAgICAgTShTcGVsbGluZ0FuZEdyYW1tYXIpIFwKICAgICBNKFNRTERh
dGFiYXNlKSBcCiAgICAgTShTdG9yYWdlKSBcCkBAIC0xMjYsNiArMTI3LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIE0oV2ViR0wpIFwKICAgICBNKFdlYlJUQykgXAogICAgIE0oV2ViUlRD
U3RhdHMpIFwKKyAgICBNKFdvcmtlcikgXAogICAgIE0oWFIpIFwKICAgICBNKFdoZWVsRXZlbnRU
ZXN0TW9uaXRvcikgXAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGVQcm94eS5oCmluZGV4IDE5MjE2NjBlN2M0OS4uMmJhYjI2NzM1ZGUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaApAQCAtNDQsNyAr
NDQsNyBAQCBjbGFzcyBTY3JpcHRCdWZmZXI7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwogY2xhc3MgV29ya2VyOwogZW51bSBjbGFzcyBSZWZlcnJlclBvbGljeSA6IHVpbnQ4X3Q7Ci1l
bnVtIGNsYXNzIFdvcmtlclR5cGUgOiB1aW50OF90OworZW51bSBjbGFzcyBXb3JrZXJUeXBlIDog
Ym9vbDsKIAogLy8gQSBwcm94eSB0byB0YWxrIHRvIHRoZSB3b3JrZXIgY29udGV4dC4KIGNsYXNz
IFdvcmtlckdsb2JhbFNjb3BlUHJveHkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9wdGlv
bnMuaAppbmRleCBmYmRhZWFiZThhYjcuLjc3MzM5NWI3OWExYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJPcHRpb25zLmgKQEAgLTM0LDYgKzM0LDM2IEBAIHN0cnVjdCBXb3JrZXJPcHRp
b25zIHsKICAgICBXb3JrZXJUeXBlIHR5cGUgeyBXb3JrZXJUeXBlOjpDbGFzc2ljIH07CiAgICAg
RmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVudGlhbHMgeyBGZXRjaFJlcXVlc3RDcmVkZW50
aWFsczo6U2FtZU9yaWdpbiB9OwogICAgIFN0cmluZyBuYW1lOworCisgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdvcmtlck9wdGlvbnM+IGRlY29kZShE
ZWNvZGVyJik7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBXb3JrZXJPcHRp
b25zOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHR5
cGUgPDwgY3JlZGVudGlhbHMgPDwgbmFtZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
K3N0ZDo6b3B0aW9uYWw8V29ya2VyT3B0aW9ucz4gV29ya2VyT3B0aW9uczo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxXb3JrZXJUeXBlPiB3b3JrZXJUeXBl
OworICAgIGRlY29kZXIgPj4gd29ya2VyVHlwZTsKKyAgICBpZiAoIXdvcmtlclR5cGUpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPEZldGNoUmVxdWVz
dENyZWRlbnRpYWxzPiBjcmVkZW50aWFsczsKKyAgICBkZWNvZGVyID4+IGNyZWRlbnRpYWxzOwor
ICAgIGlmICghY3JlZGVudGlhbHMpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmFtZTsKKyAgICBkZWNvZGVyID4+IG5hbWU7CisgICAg
aWYgKCFuYW1lKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsg
eyAqd29ya2VyVHlwZSwgKmNyZWRlbnRpYWxzLCBXVEZNb3ZlKCpuYW1lKSB9IH07Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUeXBlLmgKaW5kZXgg
MWMxYmI5NDQ4NjdhLi44ZTA0YzNhOWEwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVHlw
ZS5oCkBAIC0yNyw3ICsyNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBjbGFz
cyBXb3JrZXJUeXBlIDogdWludDhfdCB7CitlbnVtIGNsYXNzIFdvcmtlclR5cGUgOiBib29sIHsK
ICAgICBDbGFzc2ljLAogICAgIE1vZHVsZSwKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAppbmRleCA3OTNhMmY5
YTQ1OGUuLjI4ZjVjYmMxZmVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCkBAIC01MCw3ICs1MCw3IEBAIGNs
YXNzIE5hdmlnYXRvckJhc2U7CiBjbGFzcyBTZXJ2aWNlV29ya2VyOwogCiBlbnVtIGNsYXNzIFNl
cnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZSA6IHVpbnQ4X3Q7Ci1lbnVtIGNsYXNzIFdvcmtlclR5
cGUgOiB1aW50OF90OworZW51bSBjbGFzcyBXb3JrZXJUeXBlIDogYm9vbDsKIAogdGVtcGxhdGU8
dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZVByb3h5OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbk9w
dGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uT3B0aW9ucy5oCmluZGV4IGM4ZDc3MThkZWU3NS4uOWUzNjkwZWE3M2YzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbk9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlvbnMuaApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZSA6
IHVpbnQ4X3Q7Ci1lbnVtIGNsYXNzIFdvcmtlclR5cGUgOiB1aW50OF90OworZW51bSBjbGFzcyBX
b3JrZXJUeXBlIDogYm9vbDsKIAogc3RydWN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRp
b25zIHsKICAgICBTdHJpbmcgc2NvcGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKaW5kZXggMWU4MzFmYzRjYTgyLi4x
MTA4NmQxOTIzMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKQEAgLTUzLDcgKzUzLDcgQEAgc3RydWN0IFNlcnZp
Y2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnM7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhOwogc3RydWN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcjsKIGVudW0gY2xhc3Mg
V29ya2VyVGhyZWFkTW9kZSA6IGJvb2w7Ci1lbnVtIGNsYXNzIFdvcmtlclR5cGUgOiB1aW50OF90
OworZW51bSBjbGFzcyBXb3JrZXJUeXBlIDogYm9vbDsKIAogY2xhc3MgU1dTZXJ2ZXJXb3JrZXIg
OiBwdWJsaWMgUmVmQ291bnRlZDxTV1NlcnZlcldvcmtlcj4gewogcHVibGljOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAKaW5kZXggNmE1OWIyZWZl
OWExLi45MjZkMzU3MDc4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIx
LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yNiwxMyArMjYsMTcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKIAorI2luY2x1ZGUgIkNsaWVudE9yaWdpbi5oIgogI2lu
Y2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisj
aW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJN
ZXNzYWdlQ2hhbm5lbC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiUmVz
b3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAiU2hh
cmVkV29ya2VyTWFuYWdlci5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb3h5LmgiCisjaW5j
bHVkZSAiU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlNoYXJlZFdv
cmtlclByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyT3B0aW9ucy5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0lkZW50aWZpZXJzRmFjdG9yeS5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxs
b2NJbmxpbmVzLmg+CkBAIC00MSw4ICs0NSwzMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdU
Rl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChTaGFyZWRXb3JrZXIpOwogCi1FeGNlcHRpb25PcjxS
ZWY8U2hhcmVkV29ya2VyPj4gU2hhcmVkV29ya2VyOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50
LCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MsIFN0cmluZyYmIHNjcmlwdFVSTFN0cmlu
Zywgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4mJiBt
YXliZU9wdGlvbnMpCisjZGVmaW5lIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coZm10LCAuLi4p
IFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gW2lkZW50aWZpZXI9JXtwdWJsaWN9c10g
U2hhcmVkV29ya2VyOjoiIGZtdCwgdGhpcywgbV9pZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xP
R19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoU2hhcmVkV29ya2VyLCAiJXAgLSBb
aWRlbnRpZmllcj0le3B1YmxpY31zXSBTaGFyZWRXb3JrZXI6OiIgZm10LCB0aGlzLCBtX2lkZW50
aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAjI19fVkFfQVJHU19fKQorCitzdGF0aWMg
SGFzaE1hcDxTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBTaGFyZWRXb3JrZXIqPiYgYWxs
U2hhcmVkV29ya2VycygpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBT
aGFyZWRXb3JrZXIqPj4gYWxsU2hhcmVkV29ya2VyczsKKyAgICByZXR1cm4gYWxsU2hhcmVkV29y
a2VyczsKK30KKworU2hhcmVkV29ya2VyKiBTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVyKFNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gYWxs
U2hhcmVkV29ya2VycygpLmdldChpZGVudGlmaWVyKTsKK30KKworc3RhdGljIGlubGluZSBTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKiBtYWluVGhyZWFkQ29ubmVjdGlvbigpCiB7CisgICAg
cmV0dXJuIFNoYXJlZFdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5zaGFyZWRXb3JrZXJDb25u
ZWN0aW9uKCk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBTaGFyZWRXb3Jr
ZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZyYmIHNjcmlwdFVSTFN0cmluZywg
c3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4mJiBtYXli
ZU9wdGlvbnMpCit7CisgICAgaWYgKCFtYWluVGhyZWFkQ29ubmVjdGlvbigpKQorICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJTaGFyZWQgd29ya2VycyBhcmUg
bm90IHN1cHBvcnRlZCIgfTsKKwogICAgIGlmICghZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5j
YW5BY2Nlc3NTaGFyZWRXb3JrZXJzKGRvY3VtZW50LnRvcE9yaWdpbigpKSkKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJUaGlzIGlmcmFtZSBkb2Vzbid0IGhhdmUg
c3RvcmFnZSBhY2Nlc3MiX3MgfTsKIApAQCAtNjcsMjYgKzk0LDMwIEBAIEV4Y2VwdGlvbk9yPFJl
ZjxTaGFyZWRXb3JrZXI+PiBTaGFyZWRXb3JrZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQs
IEpTQzo6UnVuCiAgICAgYXV0byBjaGFubmVsID0gTWVzc2FnZUNoYW5uZWw6OmNyZWF0ZShkb2N1
bWVudCk7CiAgICAgYXV0byB0cmFuc2ZlcnJlZFBvcnQgPSBjaGFubmVsLT5wb3J0MigpLmRpc2Vu
dGFuZ2xlKCk7CiAKLSAgICBhdXRvIHNoYXJlZFdvcmtlciA9IGFkb3B0UmVmKCpuZXcgU2hhcmVk
V29ya2VyKGRvY3VtZW50LCBjaGFubmVsLT5wb3J0MSgpLCBydW50aW1lRmxhZ3MpKTsKKyAgICBh
dXRvIHNoYXJlZFdvcmtlciA9IGFkb3B0UmVmKCpuZXcgU2hhcmVkV29ya2VyKGRvY3VtZW50LCBj
aGFubmVsLT5wb3J0MSgpKSk7CiAgICAgc2hhcmVkV29ya2VyLT5zdXNwZW5kSWZOZWVkZWQoKTsK
IAotICAgIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3QodXJsLCBzaGFy
ZWRXb3JrZXIuZ2V0KCksIFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwgV1RGTW92ZShvcHRpb25z
KSk7CisgICAgQ2xpZW50T3JpZ2luIGNsaWVudE9yaWdpbiB7IGRvY3VtZW50LnRvcERvY3VtZW50
KCkuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCksIGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuZGF0
YSgpIH07CisgICAgbWFpblRocmVhZENvbm5lY3Rpb24oKS0+cmVxdWVzdFNoYXJlZFdvcmtlcihj
bGllbnRPcmlnaW4sIHNoYXJlZFdvcmtlci0+aWRlbnRpZmllcigpLCB1cmwsIFdURk1vdmUodHJh
bnNmZXJyZWRQb3J0KSwgb3B0aW9ucyk7CiAgICAgcmV0dXJuIHNoYXJlZFdvcmtlcjsKIH0KIAot
U2hhcmVkV29ya2VyOjpTaGFyZWRXb3JrZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8TWVzc2Fn
ZVBvcnQ+JiYgcG9ydCwgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKQorU2hhcmVkV29y
a2VyOjpTaGFyZWRXb3JrZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8TWVzc2FnZVBvcnQ+JiYg
cG9ydCkKICAgICA6IEFjdGl2ZURPTU9iamVjdCgmZG9jdW1lbnQpCisgICAgLCBtX2lkZW50aWZp
ZXIoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKICAgICAsIG1fcG9y
dChXVEZNb3ZlKHBvcnQpKQogICAgICwgbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yKCJTaGFyZWRX
b3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVy
KCkpCi0gICAgLCBtX3J1bnRpbWVGbGFncyhydW50aW1lRmxhZ3MpCi0gICAgLCBtX2NyZWF0aW9u
VGltZShNb25vdG9uaWNUaW1lOjpub3coKSkKLSAgICAsIG1fcHJveHkoU2hhcmVkV29ya2VyUHJv
eHk6OmNyZWF0ZSgqdGhpcykpCiB7CisgICAgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRygiU2hh
cmVkV29ya2VyOiIpOworICAgIGFsbFNoYXJlZFdvcmtlcnMoKS5hZGQobV9pZGVudGlmaWVyLCB0
aGlzKTsKIH0KIAogU2hhcmVkV29ya2VyOjp+U2hhcmVkV29ya2VyKCkKIHsKLSAgICBtX3Byb3h5
Lndvcmtlck9iamVjdERlc3Ryb3llZCgpOworICAgIEFTU0VSVChhbGxTaGFyZWRXb3JrZXJzKCku
Z2V0KG1faWRlbnRpZmllcikgPT0gdGhpcyk7CisgICAgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xP
RygiflNoYXJlZFdvcmtlcjoiKTsKKyAgICBhbGxTaGFyZWRXb3JrZXJzKCkucmVtb3ZlKG1faWRl
bnRpZmllcik7CisgICAgQVNTRVJUKCFtX2lzQWN0aXZlKTsKIH0KIAogU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogU2hhcmVkV29ya2VyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKQEAg
LTEwNCwxOSArMTM1LDI2IEBAIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIFNoYXJlZFdvcmtlcjo6ZXZl
bnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdAogICAgIHJldHVybiBTaGFyZWRXb3JrZXJFdmVudFRh
cmdldEludGVyZmFjZVR5cGU7CiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyOjpzdG9wKCkKK3ZvaWQg
U2hhcmVkV29ya2VyOjpkaWRGYWlsTG9hZGluZygpCiB7Ci0gICAgdGVybWluYXRlKCk7CisgICAg
U0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPR19FUlJPUigifmRpZEZhaWxMb2FkaW5nOiIpOworICAg
IHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0
aW9uLCBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnVi
YmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7CisgICAgbV9pc0FjdGl2ZSA9IGZh
bHNlOwogfQogCiBib29sIFNoYXJlZFdvcmtlcjo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJveHkuaGFzUGVuZGluZ0FjdGl2aXR5KCkgfHwgbV9p
c0xvYWRpbmc7CisgICAgcmV0dXJuIG1faXNBY3RpdmU7CiB9CiAKLXZvaWQgU2hhcmVkV29ya2Vy
Ojp0ZXJtaW5hdGUoKQordm9pZCBTaGFyZWRXb3JrZXI6OnN0b3AoKQogewotICAgIG1fcHJveHku
dGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKTsKKyAgICBTSEFSRURfV09SS0VSX1JFTEVBU0Vf
TE9HKCJzdG9wOiIpOworICAgIG1faXNBY3RpdmUgPSBmYWxzZTsKKyAgICBtYWluVGhyZWFkQ29u
bmVjdGlvbigpLT5zaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShtX2lkZW50aWZpZXIpOwog
fQogCisjdW5kZWYgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRworI3VuZGVmIFNIQVJFRF9XT1JL
RVJfUkVMRUFTRV9MT0dfRVJST1IKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaAppbmRleCA1MzI2ZWU1NDJjODgu
Ljg3Y2M3NWVmYmU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjcsMzkgKzI3LDM1IEBACiAKICNpbmNsdWRlICJBYnN0cmFjdFdvcmtlci5oIgog
I2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1
bnRpbWVGbGFncy5oPgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCIK
ICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIE1lc3NhZ2VQb3J0OwotY2xhc3MgU2hhcmVkV29ya2VyUHJveHk7CitjbGFzcyBSZXNv
dXJjZUVycm9yOwogCiBzdHJ1Y3QgV29ya2VyT3B0aW9uczsKIAogY2xhc3MgU2hhcmVkV29ya2Vy
IGZpbmFsIDogcHVibGljIEFic3RyYWN0V29ya2VyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsK
ICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNoYXJlZFdvcmtlcik7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBjcmVhdGUoRG9jdW1lbnQmLCBK
U0M6OlJ1bnRpbWVGbGFncywgU3RyaW5nJiYgc2NyaXB0VVJMLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6
dmFyaWFudDxTdHJpbmcsIFdvcmtlck9wdGlvbnM+PiYmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9u
T3I8UmVmPFNoYXJlZFdvcmtlcj4+IGNyZWF0ZShEb2N1bWVudCYsIFN0cmluZyYmIHNjcmlwdFVS
TCwgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4mJik7
CiAgICAgflNoYXJlZFdvcmtlcigpOwogCisgICAgc3RhdGljIFNoYXJlZFdvcmtlciogZnJvbUlk
ZW50aWZpZXIoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgU2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVy
OyB9CiAgICAgTWVzc2FnZVBvcnQmIHBvcnQoKSBjb25zdCB7IHJldHVybiBtX3BvcnQuZ2V0KCk7
IH0KLSAgICBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MoKSB7IHJldHVybiBtX3J1bnRp
bWVGbGFnczsgfQogCiAgICAgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyRm9ySW5zcGVjdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yOyB9Ci0gICAgTW9ub3Rvbmlj
VGltZSBjcmVhdGlvblRpbWUoKSBjb25zdCB7IHJldHVybiBtX2NyZWF0aW9uVGltZTsgfQogCi0g
ICAgU2hhcmVkV29ya2VyUHJveHkmIHByb3h5KCkgeyByZXR1cm4gbV9wcm94eTsgfQotCi0gICAg
dm9pZCBzZXRJc0xvYWRpbmcoYm9vbCBpc0xvYWRpbmcpIHsgbV9pc0xvYWRpbmcgPSBpc0xvYWRp
bmc7IH0KKyAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKCk7CiAKICAgICAvLyBFdmVudFRhcmdldC4K
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3QgZmluYWw7CiAKIHByaXZhdGU6Ci0gICAgU2hhcmVkV29ya2VyKERvY3VtZW50JiwgUmVmPE1l
c3NhZ2VQb3J0PiYmLCBKU0M6OlJ1bnRpbWVGbGFncyk7Ci0KLSAgICB2b2lkIHRlcm1pbmF0ZSgp
OworICAgIFNoYXJlZFdvcmtlcihEb2N1bWVudCYsIFJlZjxNZXNzYWdlUG9ydD4mJik7CiAKICAg
ICAvLyBFdmVudFRhcmdldC4KICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldElu
dGVyZmFjZSgpIGNvbnN0IGZpbmFsOwpAQCAtNzAsMTIgKzY2LDEwIEBAIHByaXZhdGU6CiAgICAg
Ym9vbCB2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAKIAorICAgIFNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFJlZjxNZXNzYWdl
UG9ydD4gbV9wb3J0OwogICAgIFN0cmluZyBtX2lkZW50aWZpZXJGb3JJbnNwZWN0b3I7Ci0gICAg
SlNDOjpSdW50aW1lRmxhZ3MgbV9ydW50aW1lRmxhZ3M7Ci0gICAgTW9ub3RvbmljVGltZSBtX2Ny
ZWF0aW9uVGltZTsKLSAgICBTaGFyZWRXb3JrZXJQcm94eSYgbV9wcm94eTsgLy8gVGhlIHByb3h5
IG91dGxpdmVzIHRoZSB3b3JrZXIgdG8gcGVyZm9ybSB0aHJlYWQgc2h1dGRvd24uCi0gICAgYm9v
bCBtX2lzTG9hZGluZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzQWN0aXZlIHsgdHJ1ZSB9Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlci5pZGwKaW5kZXggYjE3MWM5ZWRmODFiLi40Yzc0MTU0ZDgyMDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmlkbApA
QCAtMjgsNyArMjgsNyBAQAogICAgIEV4cG9zZWQ9V2luZG93CiBdCiBpbnRlcmZhY2UgU2hhcmVk
V29ya2VyIDogRXZlbnRUYXJnZXQgewotICBbQ2FsbFdpdGg9RG9jdW1lbnQmUnVudGltZUZsYWdz
XSBjb25zdHJ1Y3RvcihVU1ZTdHJpbmcgc2NyaXB0VVJMLCBvcHRpb25hbCAoRE9NU3RyaW5nIG9y
IFdvcmtlck9wdGlvbnMpIG9wdGlvbnMpOworICBbQ2FsbFdpdGg9RG9jdW1lbnRdIGNvbnN0cnVj
dG9yKFVTVlN0cmluZyBzY3JpcHRVUkwsIG9wdGlvbmFsIChET01TdHJpbmcgb3IgV29ya2VyT3B0
aW9ucykgb3B0aW9ucyk7CiAKICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lc3NhZ2VQb3J0IHBvcnQ7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDQxMjFlYjU4YzIwNS4uM2M1NWE2ODdiZjg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJHbG9i
YWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaCIKIAorI2luY2x1ZGUgIkV2ZW50TmFt
ZXMuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCisj
aW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKICNpbmNs
dWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgog
CkBAIC0zMywxNyArMzksNDQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0lNUEwoU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUpOwogCisjZGVmaW5lIFNDT1BF
X1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFtz
aGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBTaGFyZWRXb3JrZXJHbG9iYWxTY29w
ZTo6IiBmbXQsIHRoaXMsIHRoaXMtPnRocmVhZCgpLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAj
I19fVkFfQVJHU19fKQorCiBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTo6U2hhcmVkV29ya2VyR2xv
YmFsU2NvcGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJh
bXMsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIFdvcmtlclRocmVhZCYgdGhyZWFkLCBS
ZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Q
cm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIpCiAg
ICAgOiBXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJUaHJlYWRUeXBlOjpTaGFyZWRXb3JrZXIsIHBh
cmFtcywgV1RGTW92ZShvcmlnaW4pLCB0aHJlYWQsIFdURk1vdmUodG9wT3JpZ2luKSwgY29ubmVj
dGlvblByb3h5LCBzb2NrZXRQcm92aWRlcikKICAgICAsIG1fbmFtZShuYW1lKQogeworICAgIFND
T1BFX1JFTEVBU0VfTE9HKCJTaGFyZWRXb3JrZXJHbG9iYWxTY29wZToiKTsKICAgICByZWxheEFk
b3B0aW9uUmVxdWlyZW1lbnQoKTsKICAgICBhcHBseUNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycyhwYXJhbXMuY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzKTsK
IH0KIAorU2hhcmVkV29ya2VyVGhyZWFkJiBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTo6dGhyZWFk
KCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U2hhcmVkV29ya2VyVGhyZWFkJj4oV29ya2Vy
R2xvYmFsU2NvcGU6OnRocmVhZCgpKTsKK30KKwogdm9pZCBTaGFyZWRXb3JrZXJHbG9iYWxTY29w
ZTo6Y2xvc2UoKQogeworICAgIFNDT1BFX1JFTEVBU0VfTE9HKCJjbG9zZToiKTsKICAgICB0aHJl
YWQoKS5zdG9wKG51bGxwdHIpOwogfQogCisvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3Jn
L211bHRpcGFnZS93b3JrZXJzLmh0bWwjZG9tLXNoYXJlZHdvcmtlciBzdGVwIDExLjUKK3ZvaWQg
U2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OnBvc3RDb25uZWN0RXZlbnQoVHJhbnNmZXJyZWRNZXNz
YWdlUG9ydCYmIHRyYW5zZmVycmVkUG9ydCwgU3RyaW5nJiYgc291cmNlT3JpZ2luKQoreworICAg
IFNDT1BFX1JFTEVBU0VfTE9HKCJwb3N0Q29ubmVjdEV2ZW50OiIpOworICAgIGF1dG8gc2VyaWFs
aXplZFNjcmlwdFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoIiIpOworICAg
IEFTU0VSVChzZXJpYWxpemVkU2NyaXB0VmFsdWUpOworICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdl
UG9ydDo6ZW50YW5nbGVQb3J0cygqdGhpcywgeyBXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCkgfSk7
CisgICAgQVNTRVJUKHBvcnRzLnNpemUoKSA9PSAxKTsKKyAgICBhdXRvIHBvcnQgPSBwb3J0c1sw
XTsKKyAgICBBU1NFUlQocG9ydCk7CisgICAgYXV0byBldmVudCA9IE1lc3NhZ2VFdmVudDo6Y3Jl
YXRlKFdURk1vdmUocG9ydHMpLCBzZXJpYWxpemVkU2NyaXB0VmFsdWUucmVsZWFzZU5vbk51bGwo
KSwgc291cmNlT3JpZ2luLCB7IH0sIHBvcnQpOworICAgIGV2ZW50LT5pbml0RXZlbnQoZXZlbnRO
YW1lcygpLmNvbm5lY3RFdmVudCwgZmFsc2UsIGZhbHNlKTsKKworICAgIGRpc3BhdGNoRXZlbnQo
V1RGTW92ZShldmVudCkpOworfQorCisjdW5kZWYgU0NPUEVfUkVMRUFTRV9MT0cKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXggZjM3NzliODRkMTUwLi4xNWRkYzUz
OGRiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSwxMSArMjUsMTMgQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlICJNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oIgogI2luY2x1ZGUgIldvcmtlckds
b2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIFNoYXJlZFdvcmtlclRocmVhZDsKIHN0cnVjdCBXb3JrZXJQYXJhbWV0
ZXJzOwogCiBjbGFzcyBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSBmaW5hbCA6IHB1YmxpYyBXb3Jr
ZXJHbG9iYWxTY29wZSB7CkBAIC0zOSw3ICs0MSwxMSBAQCBwdWJsaWM6CiAKICAgICBUeXBlIHR5
cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBUeXBlOjpTaGFyZWRXb3JrZXI7IH0KICAgICBjb25z
dCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICBTaGFyZWRXb3Jr
ZXJUaHJlYWQmIHRocmVhZCgpOworCisgICAgdm9pZCBwb3N0Q29ubmVjdEV2ZW50KFRyYW5zZmVy
cmVkTWVzc2FnZVBvcnQmJiwgU3RyaW5nJiYgc291cmNlT3JpZ2luKTsKICAgICB2b2lkIGNsb3Nl
KCk7CisKIHByaXZhdGU6CiAgICAgU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmLCBX
b3JrZXJUaHJlYWQmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6
OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg3YTk3MjEwNDg3OQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlcklk
ZW50aWZpZXIuaApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2VudW0gU2hhcmVkV29ya2VySWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgU2hhcmVkV29y
a2VySWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8U2hhcmVkV29ya2VySWRlbnRpZmllclR5
cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlcktleS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uNWY5ZTZkYzkwYmE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyS2V5LmgKQEAgLTAsMCArMSw4MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ2xpZW50T3JpZ2luLmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hlci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgU2hhcmVk
V29ya2VyS2V5IHsKKyAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luOworICAgIFVSTCB1
cmw7CisgICAgU3RyaW5nIG5hbWU7CisKKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7Cit9Owor
CitpbmxpbmUgdW5zaWduZWQgU2hhcmVkV29ya2VyS2V5OjpoYXNoKCkgY29uc3QKK3sKKyAgICBI
YXNoZXIgaGFzaGVyOworICAgIGFkZChoYXNoZXIsIG9yaWdpbi5oYXNoKCkpOworICAgIGFkZCho
YXNoZXIsIHVybCk7CisgICAgYWRkKGhhc2hlciwgbmFtZSk7CisgICAgcmV0dXJuIGhhc2hlci5o
YXNoKCk7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkV29ya2VyS2V5
JiBhLCBjb25zdCBTaGFyZWRXb3JrZXJLZXkmIGIpCit7CisgICAgcmV0dXJuIGEub3JpZ2luID09
IGIub3JpZ2luICYmIGEudXJsID09IGIudXJsICYmIGEubmFtZSA9PSBiLm5hbWU7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IERlZmF1bHRIYXNoPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleT4geworICAgIHN0YXRpYyB1
bnNpZ25lZCBoYXNoKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYga2V5KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGtleS5oYXNoKCk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZXF1
YWwoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBhLCBjb25zdCBXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJLZXkmIGIpCisgICAgeworICAgICAgICByZXR1cm4gYSA9PSBiOworICAgIH0KKwor
ICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFs
c2U7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OlNoYXJlZFdv
cmtlcktleT4gOiBHZW5lcmljSGFzaFRyYWl0czxXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk+IHsK
KyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNlOworICAg
IHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpTaGFyZWRXb3JrZXJL
ZXkmIHNsb3QpIHsgbmV3IChOb3ROdWxsLCAmc2xvdC51cmwpIFVSTChXVEY6Okhhc2hUYWJsZURl
bGV0ZWRWYWx1ZSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJD
b3JlOjpTaGFyZWRXb3JrZXJLZXkmIHNsb3QpIHsgcmV0dXJuIHNsb3QudXJsLmlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKCk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDEyNmJjNGZlZDg3Li4wMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwxMjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJNYW5hZ2VyLmgiCi0KLSNpbmNsdWRlICJD
b250ZW50U2VjdXJpdHlQb2xpY3kuaCIKLSNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVk
ZSAiTG9hZGVyU3RyYXRlZ3kuaCIKLSNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKLSNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKLSNpbmNs
dWRlICJTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlclBy
b3h5LmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgiCi0jaW5jbHVkZSAi
U2hhcmVkV29ya2VyVGhyZWFkLmgiCi0jaW5jbHVkZSAiV29ya2VyUnVuTG9vcC5oIgotI2luY2x1
ZGUgIldvcmtlclNjcmlwdExvYWRlci5oIgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU2hh
cmVkV29ya2VyTWFuYWdlciYgU2hhcmVkV29ya2VyTWFuYWdlcjo6c2luZ2xldG9uKCkKLXsKLSAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhcmVkV29ya2VyTWFuYWdlcj4gaW5zdGFuY2U7Ci0g
ICAgcmV0dXJuIGluc3RhbmNlLmdldCgpOwotfQotCi12b2lkIFNoYXJlZFdvcmtlck1hbmFnZXI6
OmNvbm5lY3QoY29uc3QgVVJMJiB1cmwsIFNoYXJlZFdvcmtlciYgd29ya2VyLCBUcmFuc2ZlcnJl
ZE1lc3NhZ2VQb3J0JiYgbWVzc2FnZVBvcnQsIFdvcmtlck9wdGlvbnMmJiBvcHRpb25zKQotewot
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgLy8gRklYTUU6IEhhbmRsZSB3b3Jr
ZXJzIGZyb20gb3RoZXIgcHJvY2Vzc2VzLCB3aGljaCB3aWxsIHByb2JhYmx5IHJlcXVpcmUgbW92
aW5nIGNvbm5lY3QgdG8gdGhlIEZyYW1lTG9hZGVyQ2xpZW50IG9yIHNvbWV0aGluZy4KLSAgICAv
LyBNYXliZSBzb21ldGhpbmcgbW9yZSBsaWtlIHdoYXQgU2VydmljZVdvcmtlcnMgZG9lcy4KLQot
ICAgIC8vIEZJWE1FOiBDaGVjayBpZiB3ZSBhbHJlYWR5IG1hZGUgYSB0aHJlYWQuCi0gICAgLy8g
RklYTUU6IENoZWNrIGlmIHRoZXJlJ3MgYWxyZWFkeSBhIHNoYXJlZCB3b3JrZXIgYW5kIHVzZSB0
aGF0IGlmIHRoZXJlIGlzLgotCi0gICAgYXV0byBsb2FkZXIgPSBtYWtlVW5pcXVlUmVmPFNoYXJl
ZFdvcmtlclNjcmlwdExvYWRlcj4odXJsLCB3b3JrZXIsIFdURk1vdmUobWVzc2FnZVBvcnQpLCBX
VEZNb3ZlKG9wdGlvbnMpKTsKLSAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkZXItPmlkZW50aWZp
ZXIoKTsKLSAgICBtX2xvYWRlcnMuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUobG9hZGVyKSk7Ci19
Ci0KLXZvaWQgU2hhcmVkV29ya2VyTWFuYWdlcjo6c2NyaXB0TG9hZEZhaWxlZChTaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXImIGxvYWRlcikKLXsKLSAgICBBY3RpdmVET01PYmplY3Q6OnF1ZXVlVGFz
a1RvRGlzcGF0Y2hFdmVudChsb2FkZXIud29ya2VyKCksIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxh
dGlvbiwgRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1
YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOwotICAgIG1fbG9hZGVycy5yZW1v
dmUobG9hZGVyLmlkZW50aWZpZXIoKSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyTWFuYWdlcjo6
c2NyaXB0TG9hZGVkU3VjY2Vzc2Z1bGx5KFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYgbG9hZGVy
LCBjb25zdCBTY3JpcHRCdWZmZXImIHNjcmlwdEJ1ZmZlciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgU2hhcmVkV29ya2VyJiBzaGFyZWRXb3JrZXIsIFRy
YW5zZmVycmVkTWVzc2FnZVBvcnQmJiB0cmFuc2ZlcnJlZFBvcnQpCi17Ci0gICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKLSAgICBhdXRvJiB3b3JrZXIgPSBsb2FkZXIud29ya2VyKCk7Ci0g
ICAgYXV0byYgb3B0aW9ucyA9IGxvYWRlci5vcHRpb25zKCk7Ci0KLSAgICBhdXRvJiBwcm94eSA9
IHNoYXJlZFdvcmtlci5wcm94eSgpOwotCi0gICAgcHJveHkuc3RhcnRXb3JrZXJHbG9iYWxTY29w
ZSgKLSAgICAgICAgbG9hZGVyLnVybCgpLAotICAgICAgICBvcHRpb25zLm5hbWUsCi0gICAgICAg
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQudXNlckFnZW50KGxvYWRlci51cmwoKSksCi0gICAgICAg
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5pc09uTGluZSgpLAotICAg
ICAgICBzY3JpcHRCdWZmZXIsCi0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY29udGVu
dFNlY3VyaXR5UG9saWN5KCktPnJlc3BvbnNlSGVhZGVycygpLAotICAgICAgICBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LnNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgp
LAotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LmNyb3NzT3JpZ2luRW1iZWRkZXJQb2xp
Y3koKSwKLSAgICAgICAgd29ya2VyLmNyZWF0aW9uVGltZSgpLAotICAgICAgICBSZWZlcnJlclBv
bGljeTo6RW1wdHlTdHJpbmcsCi0gICAgICAgIG9wdGlvbnMudHlwZSwKLSAgICAgICAgb3B0aW9u
cy5jcmVkZW50aWFscywKLSAgICAgICAgd29ya2VyLnJ1bnRpbWVGbGFncygpCi0gICAgKTsKLSAg
ICBpZiAoIXByb3h5LnRocmVhZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSRUxFQVNFX0FT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzPERvY3VtZW50PihzY3JpcHRFeGVjdXRp
b25Db250ZXh0KSk7Ci0gICAgYXV0byBzb3VyY2VPcmlnaW4gPSBkb3duY2FzdDxEb2N1bWVudD4o
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkuc2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpOwotCi0g
ICAgcHJveHkudGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFzayhbdHJhbnNmZXJyZWRQb3J0ID0g
V1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBzb3VyY2VPcmlnaW4gPSBXVEZNb3ZlKHNvdXJjZU9y
aWdpbikuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSBtdXRh
YmxlIHsKLSAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICAgICAgLy8g
aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvd29ya2Vycy5odG1sI2RvbS1z
aGFyZWR3b3JrZXIgc3RlcCAxMS41Ci0gICAgICAgIGF1dG8gc2VyaWFsaXplZFNjcmlwdFZhbHVl
ID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoIiIpOwotICAgICAgICBBU1NFUlQoc2Vy
aWFsaXplZFNjcmlwdFZhbHVlKTsKLSAgICAgICAgYXV0byBwb3J0cyA9IE1lc3NhZ2VQb3J0Ojpl
bnRhbmdsZVBvcnRzKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHsgV1RGTW92ZSh0cmFuc2ZlcnJl
ZFBvcnQpIH0pOwotICAgICAgICBBU1NFUlQocG9ydHMuc2l6ZSgpID09IDEpOwotICAgICAgICBh
dXRvIHBvcnQgPSBwb3J0c1swXTsKLSAgICAgICAgQVNTRVJUKHBvcnQpOwotICAgICAgICBhdXRv
IGV2ZW50ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIHNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5yZWxlYXNlTm9uTnVsbCgpLCBzb3VyY2VPcmlnaW4sIHsgfSwgcG9ydCk7Ci0g
ICAgICAgIGV2ZW50LT5pbml0RXZlbnQoZXZlbnROYW1lcygpLmNvbm5lY3RFdmVudCwgZmFsc2Us
IGZhbHNlKTsKLQotICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKGlzPFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7
Ci0gICAgICAgIGF1dG8mIHdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8U2hhcmVkV29ya2Vy
R2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgICAgICB3b3JrZXJHbG9i
YWxTY29wZS5kaXNwYXRjaEV2ZW50KFdURk1vdmUoZXZlbnQpKTsKLSAgICB9KTsKLQotICAgIG1f
bG9hZGVycy5yZW1vdmUobG9hZGVyLmlkZW50aWZpZXIoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi5kYmQzODE1OTJmMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNw
cApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkFjdGl2
ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKKyNpbmNsdWRlICJMb2dnaW5n
LmgiCisjaW5jbHVkZSAiU2NyaXB0QnVmZmVyLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgi
CisjaW5jbHVkZSAiU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgiCisjaW5jbHVkZSAiV29ya2Vy
RmV0Y2hSZXN1bHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjZGVmaW5lIENPTk5FQ1RJ
T05fUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0g
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18p
CisjZGVmaW5lIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IoZm10LCAuLi4pIFJFTEVBU0Vf
TE9HX0VSUk9SKFNoYXJlZFdvcmtlciwgIiVwIC0gU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCisKK3N0YXRpYyB1aW50NjRfdCBsb2FkZXJJ
ZGVudGlmaWVyU2VlZCA9IDA7CisKK1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CisKK1NoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb246On5TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCkgPSBkZWZhdWx0Owor
Cit2b2lkIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OmZldGNoU2NyaXB0SW5DbGllbnQo
VVJMJiYgdXJsLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIsIFdvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdvcmtlckZldGNoUmVzdWx0Jik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGF1dG8qIHdv
cmtlck9iamVjdCA9IFNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIoc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllcik7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiZmV0Y2hTY3JpcHRJ
bkNsaWVudDogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zLCB3b3JrZXI9
JXAiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSwgd29ya2VyT2JqZWN0KTsKKyAgICBpZiAoIXdvcmtlck9iamVjdCkKKyAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisKKyAgICBhdXRvIGxvYWRlcklkZW50aWZpZXIgPSAr
K2xvYWRlcklkZW50aWZpZXJTZWVkOworICAgIGF1dG8gbG9hZGVyID0gbWFrZVVuaXF1ZVJlZjxT
aGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+KFdURk1vdmUodXJsKSwgKndvcmtlck9iamVjdCwgV1RG
TW92ZSh3b3JrZXJPcHRpb25zKSk7CisgICAgYXV0byBsb2FkZXJQdHIgPSBsb2FkZXIucHRyKCk7
CisgICAgbV9sb2FkZXJzLmFkZChsb2FkZXJJZGVudGlmaWVyLCBXVEZNb3ZlKGxvYWRlcikpOwor
CisgICAgbG9hZGVyUHRyLT5sb2FkKFt0aGlzLCBsb2FkZXJJZGVudGlmaWVyLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBXb3JrZXJGZXRjaFJl
c3VsdCYgZmV0Y2hSZXN1bHQpIG11dGFibGUgeworICAgICAgICBDT05ORUNUSU9OX1JFTEVBU0Vf
TE9HKCJmZXRjaFNjcmlwdEluQ2xpZW50OiBmaW5pc2hlZCBzY3JpcHQgbG9hZCwgc3VjY2Vzcz0l
ZCIsIGZldGNoUmVzdWx0LmVycm9yLmlzTnVsbCgpKTsKKyAgICAgICAgYXV0byBsb2FkZXIgPSBt
X2xvYWRlcnMudGFrZShsb2FkZXJJZGVudGlmaWVyKTsKKyAgICAgICAgQVNTRVJUKGxvYWRlcik7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZldGNoUmVzdWx0KTsKKyAgICB9KTsKK30KKwor
dm9pZCBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpub3RpZnlXb3JrZXJPYmplY3RPZkxv
YWRGYWlsdXJlKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IGF1dG8qIHdvcmtlck9iamVjdCA9IFNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIoc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJP
Uigibm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkRmFpbHVyZTogc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllcj0le3B1YmxpY31zLCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgd29ya2VyT2JqZWN0KTsKKyAgICBpZiAod29y
a2VyT2JqZWN0KQorICAgICAgICB3b3JrZXJPYmplY3QtPmRpZEZhaWxMb2FkaW5nKCk7Cit9CisK
K3ZvaWQgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2Vy
T2JqZWN0KFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIGF1dG8qIHdvcmtlck9iamVjdCA9IFNoYXJlZFdvcmtlcjo6ZnJv
bUlkZW50aWZpZXIoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgQ09OTkVDVElP
Tl9SRUxFQVNFX0xPR19FUlJPUigicG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0OiBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMsIHdvcmtlcj0lcCIsIHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB3b3JrZXJPYmplY3Qp
OworICAgIGlmICh3b3JrZXJPYmplY3QpCisgICAgICAgIEFjdGl2ZURPTU9iamVjdDo6cXVldWVU
YXNrVG9EaXNwYXRjaEV2ZW50KCp3b3JrZXJPYmplY3QsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxh
dGlvbiwgRXJyb3JFdmVudDo6Y3JlYXRlKGVycm9yTWVzc2FnZSwgc291cmNlVVJMLCBsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIHsgfSkpOworfQorCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNF
X0xPRworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uNTE5MTFkNGExNjdkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oCkBA
IC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1l
c3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIE1lc3NhZ2VQb3J0OworY2xhc3MgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOwor
CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0Oworc3RydWN0
IFdvcmtlck9wdGlvbnM7CisKK2NsYXNzIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24gOiBw
dWJsaWMgUmVmQ291bnRlZDxTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uPiB7CitwdWJsaWM6
CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bigpOworCisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoY29uc3QgQ2xpZW50
T3JpZ2luJiwgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgVVJMJiwgVHJhbnNm
ZXJyZWRNZXNzYWdlUG9ydCYmLCBjb25zdCBXb3JrZXJPcHRpb25zJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICAvLyBJUEMgbWVzc2FnZXMuCisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBmZXRjaFNjcmlwdEluQ2xpZW50KFVSTCYmLCBXZWJDb3JlOjpT
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXb3JrZXJPcHRpb25zJiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKT4mJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRGYWlsdXJlKFdlYkNvcmU6OlNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdEV4
Y2VwdGlvblRvV29ya2VyT2JqZWN0KFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbigpOworCitwcml2YXRlOgorICAgIEhhc2hNYXA8dWludDY0X3Qs
IFVuaXF1ZVJlZjxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+PiBtX2xvYWRlcnM7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lYmNkNGE3YWU4N2EKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiUHJvY2Vzc1F1YWxpZmllZC5oIgorI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlm
aWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyID0g
UHJvY2Vzc1F1YWxpZmllZDxPYmplY3RJZGVudGlmaWVyPFNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXJUeXBlPj47CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZkOGUxOTdmYTI0MgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3Zp
ZGVyLmNwcApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb3ZpZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworc3RhdGljIFNoYXJlZFdvcmtlclByb3ZpZGVyKiBzaGFyZWRQcm92aWRlcjsKKworLy8g
Rm9yIFdlYktpdExlZ2FjeS4KK2NsYXNzIER1bW15U2hhcmVkV29ya2VyUHJvdmlkZXIgZmluYWwg
OiBwdWJsaWMgU2hhcmVkV29ya2VyUHJvdmlkZXIgeworcHVibGljOgorICAgIFNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb24qIHNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKSBmaW5hbCB7IHJldHVy
biBudWxscHRyOyB9Cit9OworCitTaGFyZWRXb3JrZXJQcm92aWRlciYgU2hhcmVkV29ya2VyUHJv
dmlkZXI6OnNpbmdsZXRvbigpCit7CisgICAgaWYgKCFzaGFyZWRQcm92aWRlcikKKyAgICAgICAg
c2hhcmVkUHJvdmlkZXIgPSBuZXcgRHVtbXlTaGFyZWRXb3JrZXJQcm92aWRlcjsKKyAgICByZXR1
cm4gKnNoYXJlZFByb3ZpZGVyOworfQorCit2b2lkIFNoYXJlZFdvcmtlclByb3ZpZGVyOjpzZXRT
aGFyZWRQcm92aWRlcihTaGFyZWRXb3JrZXJQcm92aWRlciYgbmV3UHJvdmlkZXIpCit7CisgICAg
UkVMRUFTRV9BU1NFUlQoIXNoYXJlZFByb3ZpZGVyKTsKKyAgICBzaGFyZWRQcm92aWRlciA9ICZu
ZXdQcm92aWRlcjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJvdmlkZXIuaApzaW1pbGFyaXR5
IGluZGV4IDY0JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXJNYW5hZ2VyLmgKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlclByb3ZpZGVyLmgKaW5kZXggYWVmODI3OTAzNTg0Li5jYjU3Y2MxZTdiNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQ
cm92aWRlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yNSwyNiArMjUsMTcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJNZXNzYWdl
UG9ydElkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCIK
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRXb3JrZXI7Ci1jbGFzcyBTY3Jp
cHRCdWZmZXI7Ci1zdHJ1Y3QgV29ya2VyT3B0aW9uczsKLXVzaW5nIFRyYW5zZmVycmVkTWVzc2Fn
ZVBvcnQgPSBzdGQ6OnBhaXI8V2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyLCBXZWJDb3Jl
OjpNZXNzYWdlUG9ydElkZW50aWZpZXI+OworY2xhc3MgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbjsKIAotY2xhc3MgU2hhcmVkV29ya2VyTWFuYWdlciB7CitjbGFzcyBTaGFyZWRXb3JrZXJQ
cm92aWRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFNoYXJlZFdvcmtlck1hbmFnZXImIHNpbmds
ZXRvbigpOwotICAgIHZvaWQgY29ubmVjdChjb25zdCBVUkwmLCBTaGFyZWRXb3JrZXImLCBUcmFu
c2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdvcmtlck9wdGlvbnMmJik7Ci0KLSAgICB2b2lkIHNjcmlw
dExvYWRGYWlsZWQoU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJik7Ci0gICAgdm9pZCBzY3JpcHRM
b2FkZWRTdWNjZXNzZnVsbHkoU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJiwgY29uc3QgU2NyaXB0
QnVmZmVyJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFNoYXJlZFdvcmtlciYsIFRyYW5zZmVy
cmVkTWVzc2FnZVBvcnQmJik7CisgICAgc3RhdGljIFNoYXJlZFdvcmtlclByb3ZpZGVyJiBzaW5n
bGV0b24oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRTaGFyZWRQcm92aWRl
cihTaGFyZWRXb3JrZXJQcm92aWRlciYpOwogCi1wcml2YXRlOgotICAgIEhhc2hNYXA8U2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmllciwgVW5pcXVlUmVmPFNoYXJlZFdvcmtlclNjcmlw
dExvYWRlcj4+IG1fbG9hZGVyczsKKyAgICB2aXJ0dWFsIH5TaGFyZWRXb3JrZXJQcm92aWRlcigp
IHsgfQorICAgIHZpcnR1YWwgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiogc2hhcmVkV29y
a2VyQ29ubmVjdGlvbigpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3h5LmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2JlMDc1M2Y4OTFkLi4wMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJveHkuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMjMzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyUHJveHkuaCIKLQotI2luY2x1ZGUgIkNh
Y2hlU3RvcmFnZVByb3ZpZGVyLmgiCi0jaW5jbHVkZSAiRXJyb3JFdmVudC5oIgotI2luY2x1ZGUg
IkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgotI2luY2x1ZGUg
Ik1lc3NhZ2VFdmVudC5oIgotI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCi0jaW5jbHVkZSAiUGFn
ZS5oIgotI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24uaCIK
LSNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJHbG9iYWxT
Y29wZS5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlclRocmVhZC5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLVNoYXJlZFdvcmtlclByb3h5OjpTaGFyZWRXb3JrZXJQcm94eShTaGFyZWRXb3Jr
ZXImIHNoYXJlZFdvcmtlcikKLSAgICA6IG1fc2hhcmVkV29ya2VyKHNoYXJlZFdvcmtlcikKLSAg
ICAsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChzaGFyZWRXb3JrZXIuc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKQotICAgICwgbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yKHNoYXJlZFdvcmtlci5p
ZGVudGlmaWVyRm9ySW5zcGVjdG9yKCkpCi17Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6
OnN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUsIGNvbnN0IFNj
cmlwdEJ1ZmZlciYgc2NyaXB0QnVmZmVyLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywgYm9vbCBz
aG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnN0IENyb3NzT3Jp
Z2luRW1iZWRkZXJQb2xpY3kmIGNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ksIE1vbm90b25pY1Rp
bWUgdGltZU9yaWdpbiwgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUg
d29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVudGlhbHMsIEpTQzo6UnVu
dGltZUZsYWdzIHJ1bnRpbWVGbGFncykKLXsKLSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHBhcmFtZXRlcnMgPSBXb3JrZXJQYXJhbWV0ZXJz
IHsKLSAgICAgICAgc2NyaXB0VVJMLAotICAgICAgICBuYW1lLAotICAgICAgICBtX2lkZW50aWZp
ZXJGb3JJbnNwZWN0b3IsCi0gICAgICAgIHVzZXJBZ2VudCwKLSAgICAgICAgaXNPbmxpbmUsCi0g
ICAgICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywKLSAgICAgICAgc2hv
dWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LAotICAgICAgICBjcm9zc09y
aWdpbkVtYmVkZGVyUG9saWN5LAotICAgICAgICB0aW1lT3JpZ2luLAotICAgICAgICByZWZlcnJl
clBvbGljeSwKLSAgICAgICAgd29ya2VyVHlwZSwKLSAgICAgICAgY3JlZGVudGlhbHMsCi0gICAg
ICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2V0dGluZ3NWYWx1ZXMoKQotICAgIH07Ci0K
LSAgICBpZiAoIW1fd29ya2VyVGhyZWFkKSB7Ci0gICAgICAgIG1fd29ya2VyVGhyZWFkID0gU2hh
cmVkV29ya2VyVGhyZWFkOjpjcmVhdGUocGFyYW1ldGVycywgc2NyaXB0QnVmZmVyLCAqdGhpcywg
KnRoaXMsICp0aGlzLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT50b3BPcmlnaW4oKSwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pZGJD
b25uZWN0aW9uUHJveHkoKSwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zb2NrZXRQcm92aWRl
cigpLCBydW50aW1lRmxhZ3MpOwotICAgICAgICBtX3dvcmtlclRocmVhZC0+c3RhcnQoKTsKLSAg
ICB9Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnRlcm1pbmF0ZVdvcmtlckdsb2JhbFNj
b3BlKCkKLXsKLSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBtX2Fza2VkVG9UZXJtaW5hdGUgPSB0cnVlOwotICAgIGlmIChtX3dvcmtlclRocmVhZCkK
LSAgICAgICAgbV93b3JrZXJUaHJlYWQtPnN0b3AobnVsbHB0cik7Ci19Ci0KLXZvaWQgU2hhcmVk
V29ya2VyUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cyYmIG1lc3NhZ2UpCi17Ci0gICAgLy8gRklYTUU6IFNoYXJlZFdvcmtlciBkb2Vz
bid0IGhhdmUgcG9zdE1lc3NhZ2UsIHNvIHRoaXMgbWlnaHQgbm90IGJlIG5lY2Vzc2FyeS4KLSAg
ICBwb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUoW21lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2Up
XShhdXRvJiBzY3JpcHRDb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byYgY29udGV4dCA9
IGRvd25jYXN0PFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRDb250ZXh0KTsKLSAgICAg
ICAgYXV0byBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKHNjcmlwdENvbnRleHQs
IFdURk1vdmUobWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRzKSk7Ci0gICAgICAgIGNvbnRleHQuZGlz
cGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgbWVzc2FnZS5t
ZXNzYWdlLnJlbGVhc2VOb25OdWxsKCkpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTaGFyZWRXb3Jr
ZXJQcm94eTo6cG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1bmN0aW9uPHZvaWQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpPiYmIHRhc2spCi17Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0
ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRh
c2soV1RGTW92ZSh0YXNrKSk7Ci19Ci0KLWJvb2wgU2hhcmVkV29ya2VyUHJveHk6Omhhc1BlbmRp
bmdBY3Rpdml0eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faGFzUGVuZGluZ0FjdGl2aXR5ICYm
ICFtX2Fza2VkVG9UZXJtaW5hdGU7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6Ondvcmtl
ck9iamVjdERlc3Ryb3llZCgpCi17Ci0gICAgbV9zaGFyZWRXb3JrZXIgPSBudWxscHRyOwotICAg
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXNdIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JikgewotICAgICAgICBtX21heUJlRGVzdHJveWVkID0gdHJ1ZTsKLSAgICAgICAg
aWYgKG1fd29ya2VyVGhyZWFkKQotICAgICAgICAgICAgdGVybWluYXRlV29ya2VyR2xvYmFsU2Nv
cGUoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95
ZWRJbnRlcm5hbCgpOwotICAgIH0pOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5Ojpub3Rp
ZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9vbCBpc09ubGluZSkKLXsKLSAgICBpZiAobV9hc2tlZFRv
VGVybWluYXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1fd29ya2VyVGhyZWFkKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNr
KFtpc09ubGluZV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAg
YXV0byYgZ2xvYmFsU2NvcGUgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCk7
Ci0gICAgICAgIGdsb2JhbFNjb3BlLnNldElzT25saW5lKGlzT25saW5lKTsKLSAgICAgICAgZ2xv
YmFsU2NvcGUuZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGlzT25saW5lID8gZXZlbnROYW1l
cygpLm9ubGluZUV2ZW50IDogZXZlbnROYW1lcygpLm9mZmxpbmVFdmVudCwgRXZlbnQ6OkNhbkJ1
YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQg
U2hhcmVkV29ya2VyUHJveHk6OnN1c3BlbmRGb3JCYWNrRm9yd2FyZENhY2hlKCkKLXsKLQotfQot
Ci12b2lkIFNoYXJlZFdvcmtlclByb3h5OjpyZXN1bWVGb3JCYWNrRm9yd2FyZENhY2hlKCkKLXsK
LQotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5Ojpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmpl
Y3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKLXsKLSAgICBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzLCBlcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2UuaXNv
bGF0ZWRDb3B5KCksIHNvdXJjZVVSTCA9IHNvdXJjZVVSTC5pc29sYXRlZENvcHkoKSwgbGluZU51
bWJlciwgY29sdW1uTnVtYmVyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKLSAgICAgICAg
aWYgKCFtX3NoYXJlZFdvcmtlcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBX
ZSBkb24ndCBib3RoZXIgY2hlY2tpbmcgdGhlIGFza2VkVG9UZXJtaW5hdGUoKSBmbGFnIGhlcmUs
IGJlY2F1c2UgZXhjZXB0aW9ucyBzaG91bGQgKmFsd2F5cyogYmUgcmVwb3J0ZWQgZXZlbiBpZiB0
aGUgdGhyZWFkIGlzIHRlcm1pbmF0ZWQuCi0gICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxs
eSBkaWZmZXJlbnQgdGhhbiB0aGUgYmVoYXZpb3IgaW4gTWVzc2FnZVdvcmtlclRhc2ssIGJlY2F1
c2UgdGVybWluYXRlZCB3b3JrZXJzIG5vIGxvbmdlciBkZWxpdmVyIG1lc3NhZ2VzIChzZWN0aW9u
IDQuNiBvZiB0aGUgV2ViV29ya2VyIHNwZWMpLCBidXQgdGhleSBkbyByZXBvcnQgZXhjZXB0aW9u
cy4KLSAgICAgICAgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKm1f
c2hhcmVkV29ya2VyLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIEVycm9yRXZlbnQ6OmNy
ZWF0ZShlcnJvck1lc3NhZ2UsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB7
IH0pKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6d29ya2VyR2xvYmFs
U2NvcGVEZXN0cm95ZWQoKQotewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRh
c2soW3RoaXNdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewotICAgICAgICB3b3JrZXJHbG9i
YWxTY29wZURlc3Ryb3llZEludGVybmFsKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29y
a2VyUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVdpdGhNZXNzYWdlUG9y
dHMmJikKLXsKLQotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5Ojpjb25maXJtTWVzc2FnZUZy
b21Xb3JrZXJPYmplY3QoYm9vbCkKLXsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6cmVw
b3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KQotewotICAgIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXMsIGhhc1BlbmRpbmdBY3Rpdml0eV0g
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0gICAgICAgIG1faGFzUGVuZGluZ0FjdGl2aXR5
ID0gaGFzUGVuZGluZ0FjdGl2aXR5OwotICAgIH0pOwotfQotCi1SZWZQdHI8Q2FjaGVTdG9yYWdl
Q29ubmVjdGlvbj4gU2hhcmVkV29ya2VyUHJveHk6OmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rp
b24oKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byYgZG9jdW1lbnQg
PSBkb3duY2FzdDxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgcmV0
dXJuIGRvY3VtZW50LnBhZ2UoKS0+Y2FjaGVTdG9yYWdlUHJvdmlkZXIoKS5jcmVhdGVDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uKCk7Ci19Ci0KLVJlZlB0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRs
ZXJDb25uZWN0aW9uPiBTaGFyZWRXb3JrZXJQcm94eTo6Y3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyQ29ubmVjdGlvbigpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAg
ICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0KTsKLSAgICBpZiAoIWRvY3VtZW50LnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgcmV0dXJuIGRvY3VtZW50LnBhZ2UoKS0+bGliV2ViUlRDUHJvdmlkZXIoKS5jcmVh
dGVSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCk7Ci19Ci0KLXZvaWQgU2hh
cmVkV29ya2VyUHJveHk6OnBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzayYmIHRhc2spCi17Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhX
VEZNb3ZlKHRhc2spKTsKLX0KLQotYm9vbCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrJiYgdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQotewotICAgIGlmIChtX2Fza2VkVG9UZXJt
aW5hdGUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIG1fd29ya2VyVGhyZWFkLT5ydW5M
b29wKCkucG9zdFRhc2tGb3JNb2RlKFdURk1vdmUodGFzayksIG1vZGUpOwotICAgIHJldHVybiB0
cnVlOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5Ojpwb3N0TWVzc2FnZVRvRGVidWdnZXIo
Y29uc3QgU3RyaW5nJikKLXsKLQotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5OjpzZXRSZXNv
dXJjZUNhY2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yKGJvb2wpCi17Ci0KLX0KLQotdm9pZCBT
aGFyZWRXb3JrZXJQcm94eTo6d29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpCi17
Ci0gICAgLy8gVGhpcyBpcyBhbHdheXMgdGhlIGxhc3QgdGFzayB0byBiZSBwZXJmb3JtZWQsIHNv
IHRoZSBwcm94eSBpcyBub3QgbmVlZGVkIGZvciBjb21tdW5pY2F0aW9uCi0gICAgLy8gaW4gZWl0
aGVyIHNpZGUgYW55IG1vcmUuIEhvd2V2ZXIsIHRoZSBXb3JrZXIgb2JqZWN0IG1heSBzdGlsbCBl
eGlzdCwgYW5kIGl0IGFzc3VtZXMgdGhhdCB0aGUgcHJveHkgZXhpc3RzLCB0b28uCi0gICAgbV9h
c2tlZFRvVGVybWluYXRlID0gdHJ1ZTsKLSAgICBtX3dvcmtlclRocmVhZCA9IG51bGxwdHI7Ci0K
LSAgICAvLyBUaGlzIGJhbGFuY2VzIHRoZSBvcmlnaW5hbCByZWYgaW4gY29uc3RydWN0aW9uLgot
ICAgIGlmIChtX21heUJlRGVzdHJveWVkKQotICAgICAgICBkZXJlZigpOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRleCAzMTFlYmQ2MDc4YmMuLmVh
MmUwNDhjNzYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDIzICsyOSwyNiBAQAogI2luY2x1
ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIK
ICNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJNYW5hZ2Vy
LmgiCisjaW5jbHVkZSAiV29ya2VyRmV0Y2hSZXN1bHQuaCIKICNpbmNsdWRlICJXb3JrZXJSdW5M
b29wLmgiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0TG9hZGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXIoY29uc3QgVVJMJiB1cmwsIFNoYXJlZFdvcmtlciYgd29ya2VyLCBUcmFuc2ZlcnJlZE1lc3Nh
Z2VQb3J0JiYgcG9ydCwgV29ya2VyT3B0aW9ucyYmIG9wdGlvbnMpCi0gICAgOiBtX2lkZW50aWZp
ZXIoU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKLSAgICAs
IG1fb3B0aW9ucyhXVEZNb3ZlKG9wdGlvbnMpKQorU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpT
aGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIoVVJMJiYgdXJsLCBTaGFyZWRXb3JrZXImIHdvcmtlciwg
V29ya2VyT3B0aW9ucyYmIG9wdGlvbnMpCisgICAgOiBtX29wdGlvbnMoV1RGTW92ZShvcHRpb25z
KSkKICAgICAsIG1fd29ya2VyKHdvcmtlcikKLSAgICAsIG1fcG9ydChXVEZNb3ZlKHBvcnQpKQog
ICAgICwgbV9sb2FkZXIoV29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGUoKSkKLSAgICAsIG1fcGVu
ZGluZ0FjdGl2aXR5KHdvcmtlci5tYWtlUGVuZGluZ0FjdGl2aXR5KHdvcmtlcikpCi0gICAgLCBt
X3VybCh1cmwpCisgICAgLCBtX3VybChXVEZNb3ZlKHVybCkpCiB7Ci0gICAgbV93b3JrZXItPnNl
dElzTG9hZGluZyh0cnVlKTsKLSAgICBtX2xvYWRlci0+bG9hZEFzeW5jaHJvbm91c2x5KCp3b3Jr
ZXIuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBSZXNvdXJjZVJlcXVlc3QodXJsKSwgd29ya2Vy
LndvcmtlckZldGNoT3B0aW9ucyhvcHRpb25zLCBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpT
aGFyZWR3b3JrZXIpLCBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6RW5mb3JjZVdv
cmtlclNyY0RpcmVjdGl2ZSwgU2VydmljZVdvcmtlcnNNb2RlOjpBbGwsICp0aGlzLCBXb3JrZXJS
dW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXI6OmxvYWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVCghbV9jb21wbGV0aW9uSGFuZGxl
cik7CisgICAgbV9jb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
OworCisgICAgbV9sb2FkZXItPmxvYWRBc3luY2hyb25vdXNseSgqbV93b3JrZXItPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgUmVzb3VyY2VSZXF1ZXN0KG1fdXJsKSwgbV93b3JrZXItPndvcmtl
ckZldGNoT3B0aW9ucyhtX29wdGlvbnMsIEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OlNoYXJl
ZHdvcmtlciksIENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50OjpFbmZvcmNlV29ya2Vy
U3JjRGlyZWN0aXZlLCBTZXJ2aWNlV29ya2Vyc01vZGU6OkFsbCwgKnRoaXMsIFdvcmtlclJ1bkxv
b3A6OmRlZmF1bHRNb2RlKCkpOwogfQogCiB2b2lkIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJikKQEAgLTU1LDE2ICs1OCwxMiBAQCB2b2lkIFNoYXJlZFdv
cmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciBpZGVudAogCiB2b2lkIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6bm90aWZ5RmluaXNo
ZWQoKQogewotICAgIG1fd29ya2VyLT5zZXRJc0xvYWRpbmcoZmFsc2UpOworICAgIGlmIChtX2xv
YWRlci0+ZmFpbGVkKCkpCisgICAgICAgIHJldHVybiBtX2NvbXBsZXRpb25IYW5kbGVyKHdvcmtl
ckZldGNoRXJyb3IobV9sb2FkZXItPmVycm9yKCkpKTsKIAotICAgIGF1dG8qIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgPSBtX3dvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlm
IChtX2xvYWRlci0+ZmFpbGVkKCkgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIHsKLSAgICAg
ICAgbV93b3JrZXItPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJy
b3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Olllcykp
OwotICAgICAgICBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5zY3JpcHRMb2FkRmFp
bGVkKCp0aGlzKTsgLy8gZGVsZXRlcyB0aGlzLgotICAgIH0gZWxzZSB7CisgICAgaWYgKGF1dG8q
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBtX3dvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkKCpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBtX2xvYWRlci0+aWRlbnRpZmllcigpLCBtX2xvYWRlci0+
c2NyaXB0KCkudG9TdHJpbmcoKSk7Ci0gICAgICAgIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNpbmds
ZXRvbigpLnNjcmlwdExvYWRlZFN1Y2Nlc3NmdWxseSgqdGhpcywgbV9sb2FkZXItPnNjcmlwdCgp
LCAqbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV93b3JrZXIuZ2V0KCksIHN0
ZDo6ZXhjaGFuZ2UobV9wb3J0LCB7IH0pKTsgLy8gZGVsZXRlcyB0aGlzLgotICAgIH0KKyAgICBt
X2NvbXBsZXRpb25IYW5kbGVyKHsgbV9sb2FkZXItPnNjcmlwdCgpLCBtX2xvYWRlci0+Y2VydGlm
aWNhdGVJbmZvKCksIG1fbG9hZGVyLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSwgbV9sb2FkZXIt
PmNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3koKSwgbV9sb2FkZXItPnJlZmVycmVyUG9saWN5KCks
IHsgfSB9KTsgLy8gZGVsZXRlcyB0aGlzLgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNj
cmlwdExvYWRlci5oCmluZGV4IGJmMWQ0YWVmM2EwOS4uZWIwYjcxNDViZmExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRM
b2FkZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQWN0aXZl
RE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnRJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25z
ZS5oIgpAQCAtMzgsMzMgKzM3LDI4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2hh
cmVkV29ya2VyOwogY2xhc3MgV29ya2VyU2NyaXB0TG9hZGVyOwotCi1jbGFzcyBTaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXI7Ci11c2luZyBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXJJZGVudGlmaWVy
ID0gT2JqZWN0SWRlbnRpZmllcjxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+OwotCi11c2luZyBU
cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0ID0gc3RkOjpwYWlyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRl
bnRpZmllciwgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyPjsKK3N0cnVjdCBXb3JrZXJG
ZXRjaFJlc3VsdDsKIAogY2xhc3MgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyIDogcHJpdmF0ZSBX
b3JrZXJTY3JpcHRMb2FkZXJDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcihjb25zdCBVUkwmLCBTaGFyZWRX
b3JrZXImLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdvcmtlck9wdGlvbnMmJik7CisgICAg
U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyKFVSTCYmLCBTaGFyZWRXb3JrZXImLCBXb3JrZXJPcHRp
b25zJiYpOworCisgICAgdm9pZCBsb2FkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29y
a2VyRmV0Y2hSZXN1bHQmKT4mJik7CiAKLSAgICBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBj
b25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgU2hhcmVkV29ya2Vy
JiB3b3JrZXIoKSB7IHJldHVybiBtX3dvcmtlci5nZXQoKTsgfQotICAgIGNvbnN0IFdvcmtlck9w
dGlvbnMmIG9wdGlvbnMoKSB7IHJldHVybiBtX29wdGlvbnM7IH0KKyAgICBjb25zdCBXb3JrZXJP
cHRpb25zJiBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAKIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZCgp
IGZpbmFsOwogCi0gICAgY29uc3QgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmllciBt
X2lkZW50aWZpZXI7CiAgICAgY29uc3QgV29ya2VyT3B0aW9ucyBtX29wdGlvbnM7CiAgICAgY29u
c3QgUmVmPFNoYXJlZFdvcmtlcj4gbV93b3JrZXI7Ci0gICAgVHJhbnNmZXJyZWRNZXNzYWdlUG9y
dCBtX3BvcnQ7CiAgICAgY29uc3QgUmVmPFdvcmtlclNjcmlwdExvYWRlcj4gbV9sb2FkZXI7Ci0g
ICAgY29uc3QgUmVmPEFjdGl2ZURPTU9iamVjdDo6UGVuZGluZ0FjdGl2aXR5PFNoYXJlZFdvcmtl
cj4+IG1fcGVuZGluZ0FjdGl2aXR5OwogICAgIGNvbnN0IFVSTCBtX3VybDsKKyAgICBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdvcmtlckZldGNoUmVzdWx0Jik+IG1fY29tcGxldGlvbkhh
bmRsZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyVGhyZWFkLmNwcAppbmRleCA5ZWQ1NTg4
ZmJkNzkuLmVmZTA1ZTI3YzE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9TaGFyZWRXb3JrZXJUaHJlYWQuY3BwCkBAIC0zMSwxNCArMzEsMTcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRXb3JrZXJUaHJlYWQ6OlNoYXJlZFdvcmtlclRocmVh
ZChjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBTY3JpcHRCdWZmZXIm
IHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQcm94eSwgV29ya2VyRGVidWdn
ZXJQcm94eSYgZGVidWdnZXJQcm94eSwgV29ya2VyT2JqZWN0UHJveHkmIG9iamVjdFByb3h5LCBX
b3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9w
T3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBT
b2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVG
bGFncykKK1NoYXJlZFdvcmtlclRocmVhZDo6U2hhcmVkV29ya2VyVGhyZWFkKFNoYXJlZFdvcmtl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1ldGVy
cywgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgbG9h
ZGVyUHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkmIGRlYnVnZ2VyUHJveHksIFdvcmtlck9iamVj
dFByb3h5JiBvYmplY3RQcm94eSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29u
c3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJv
eHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyLCBKU0M6
OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MpCiAgICAgOiBXb3JrZXJUaHJlYWQocGFyYW1ldGVy
cywgc291cmNlQ29kZSwgbG9hZGVyUHJveHksIGRlYnVnZ2VyUHJveHksIG9iamVjdFByb3h5LCBz
dGFydE1vZGUsIHRvcE9yaWdpbiwgY29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlciwgcnVu
dGltZUZsYWdzKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX25hbWUo
cGFyYW1ldGVycy5uYW1lLmlzb2xhdGVkQ29weSgpKQogeworICAgIFJFTEVBU0VfTE9HKFNoYXJl
ZFdvcmtlciwgIiVwIC0gU2hhcmVkV29ya2VyVGhyZWFkOjpTaGFyZWRXb3JrZXJUaHJlYWQ6Iiwg
dGhpcyk7CiB9CiAKIFJlZjxXb3JrZXJHbG9iYWxTY29wZT4gU2hhcmVkV29ya2VyVGhyZWFkOjpj
cmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9w
T3JpZ2luKQogeworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gU2hhcmVkV29y
a2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29wZToiLCB0aGlzKTsKICAgICByZXR1cm4g
U2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZShzdGQ6OmV4Y2hhbmdlKG1fbmFtZSwgeyB9
KSwgcGFyYW1ldGVycywgV1RGTW92ZShvcmlnaW4pLCAqdGhpcywgV1RGTW92ZSh0b3BPcmlnaW4p
LCBpZGJDb25uZWN0aW9uUHJveHkoKSwgc29ja2V0UHJvdmlkZXIoKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclRocmVhZC5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyVGhyZWFkLmgKaW5kZXgg
MmYwNTZmOWQ1OWJiLi45ZWEyNDg0N2QzOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclRocmVhZC5oCkBAIC0yNSwyMSArMjUsMjcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiV29ya2VyVGhyZWFkLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV29y
a2VyT2JqZWN0UHJveHk7CiAKKy8vIEZJWE1FOiBNb3ZlIHRvIHdvcmtlcnMvc2hhcmVkL2NvbnRl
eHQuCiBjbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWQgOiBwdWJsaWMgV29ya2VyVGhyZWFkIHsKIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmPFNoYXJlZFdv
cmtlclRocmVhZD4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZFdvcmtlclRocmVhZChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsgfQorCisg
ICAgU2hhcmVkV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9p
ZGVudGlmaWVyOyB9CisKIHByaXZhdGU6Ci0gICAgU2hhcmVkV29ya2VyVGhyZWFkKGNvbnN0IFdv
cmtlclBhcmFtZXRlcnMmLCBjb25zdCBTY3JpcHRCdWZmZXImIHNvdXJjZUNvZGUsIFdvcmtlckxv
YWRlclByb3h5JiwgV29ya2VyRGVidWdnZXJQcm94eSYsIFdvcmtlck9iamVjdFByb3h5JiwgV29y
a2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBJREJD
bGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKiwgSlNDOjpSdW50aW1l
RmxhZ3MpOworICAgIFNoYXJlZFdvcmtlclRocmVhZChTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBj
b25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VDb2RlLCBX
b3JrZXJMb2FkZXJQcm94eSYsIFdvcmtlckRlYnVnZ2VyUHJveHkmLCBXb3JrZXJPYmplY3RQcm94
eSYsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdp
biwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciosIEpTQzo6
UnVudGltZUZsYWdzKTsKIAogICAgIFJlZjxXb3JrZXJHbG9iYWxTY29wZT4gY3JlYXRlV29ya2Vy
R2xvYmFsU2NvcGUoY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIFJlZjxTZWN1cml0eU9yaWdpbj4m
JiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbikgZmluYWw7CiAgICAgQVNDSUlMaXRl
cmFsIHRocmVhZE5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiV2ViQ29yZTogU2hhcmVkV29y
a2VyIl9zOyB9CiAKKyAgICBTaGFyZWRXb3JrZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAg
ICBTdHJpbmcgbV9uYW1lOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjA3YTkwZDk4MDUx
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRl
eHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTE0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiU2hhcmVkV29y
a2VyVGhyZWFkUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlciYgU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyPiBzaGFyZWRNYW5hZ2VyOworICAgIHJldHVy
biBzaGFyZWRNYW5hZ2VyOworfQorCitTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSogU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXI6OnNoYXJlZFdvcmtlcihTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNo
YXJlZFdvcmtlcklkZW50aWZpZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd29ya2VyTWFwLmdl
dChzaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlcjo6c3RvcFNoYXJlZFdvcmtlcihTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdv
cmtlcklkZW50aWZpZXIpCit7CisgICAgYXV0byB3b3JrZXIgPSBtX3dvcmtlck1hcC50YWtlKHNo
YXJlZFdvcmtlcklkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzdG9wU2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyPSUiIFBSSXU2NCAiLCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVy
LnRvVUludDY0KCksIHdvcmtlci5nZXQoKSk7CisgICAgaWYgKCF3b3JrZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIHdvcmtlci0+c2V0QXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCgpOworCisg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGRlYWwgd2l0aCB0aGUgdGhyZWFkIGJl
aW5nIHVucmVzcG9uc2l2ZSBoZXJlLgorCisgICAgYXV0byYgdGhyZWFkID0gd29ya2VyLT50aHJl
YWQoKTsKKyAgICB0aHJlYWQuc3RvcChbd29ya2VyID0gV1RGTW92ZSh3b3JrZXIpXSgpIG11dGFi
bGUgeworICAgICAgICAvLyBTcGluIHRoZSBydW5sb29wIGJlZm9yZSByZWxlYXNpbmcgdGhlIHNo
YXJlZCB3b3JrZXIgdGhyZWFkIHByb3h5LCBhcyB0aGVyZSB3b3VsZCBvdGhlcndpc2UgYmUKKyAg
ICAgICAgLy8gYSByYWNlIHRvd2FyZHMgaXRzIGRlc3RydWN0aW9uLgorICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFt3b3JrZXIgPSBXVEZNb3ZlKHdvcmtlcildIHsgfSk7CisgICAgfSk7Cit9CisK
K3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0b3BBbGxTaGFyZWRXb3JrZXJzKCkK
K3sKKyAgICB3aGlsZSAoIW1fd29ya2VyTWFwLmlzRW1wdHkoKSkKKyAgICAgICAgc3RvcFNoYXJl
ZFdvcmtlcihtX3dvcmtlck1hcC5iZWdpbigpLT5rZXkpOworfQorCit2b2lkIFNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyOjpzZXRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9u
PiYmIGNvbm5lY3Rpb24pCit7CisgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24gfHwgbV9jb25uZWN0
aW9uLT5pc0Nsb3NlZCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24gPSBXVEZNb3ZlKGNvbm5lY3Rpb24p
OworfQorCithdXRvIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpjb25uZWN0aW9uKCkgY29u
c3QgLT4gQ29ubmVjdGlvbioKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOworfQor
Cit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpyZWdpc3RlclNoYXJlZFdvcmtlclRo
cmVhZChSZWY8U2hhcmVkV29ya2VyVGhyZWFkUHJveHk+JiYgcHJveHkpCit7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlcjo6cmVnaXN0ZXJTaGFyZWRXb3JrZXJUaHJlYWQ6IHNoYXJlZFdv
cmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBwcm94eS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkp
OworCisgICAgYXV0byByZXN1bHQgPSBtX3dvcmtlck1hcC5hZGQocHJveHktPmlkZW50aWZpZXIo
KSwgcHJveHkuY29weVJlZigpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0Lmlz
TmV3RW50cnkpOworCisgICAgcHJveHktPnRocmVhZCgpLnN0YXJ0KFtdKGNvbnN0IFN0cmluZyYg
LypleGNlcHRpb25NZXNzYWdlKi8pIHsgfSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXI6OkNvbm5lY3Rpb246OnBvc3RDb25uZWN0RXZlbnQoU2hhcmVkV29ya2VySWRlbnRp
ZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgdHJh
bnNmZXJyZWRQb3J0LCBTdHJpbmcmJiBzb3VyY2VPcmlnaW4pCit7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBhdXRvKiBwcm94eSA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5zaGFyZWRXb3JrZXIoc2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAg
UkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNv
bm5lY3Rpb246OnBvc3RDb25uZWN0RXZlbnQ6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJ
dTY0ICIsIHByb3h5PSVwIiwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpLCBwcm94
eSk7CisgICAgaWYgKCFwcm94eSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJveHktPnRocmVh
ZCgpLnJ1bkxvb3AoKS5wb3N0VGFzayhbdHJhbnNmZXJyZWRQb3J0ID0gV1RGTW92ZSh0cmFuc2Zl
cnJlZFBvcnQpLCBzb3VyY2VPcmlnaW4gPSBXVEZNb3ZlKHNvdXJjZU9yaWdpbikuaXNvbGF0ZWRD
b3B5KCldIChhdXRvJiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgICAgIGRvd25jYXN0PFNoYXJlZFdvcmtlckds
b2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5wb3N0Q29ubmVjdEV2ZW50KFdURk1v
dmUodHJhbnNmZXJyZWRQb3J0KSwgV1RGTW92ZShzb3VyY2VPcmlnaW4pKTsKKyAgICB9KTsKK30K
Kwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6dGVybWluYXRl
U2hhcmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmll
cikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIFJFTEVBU0VfTE9HKFNoYXJl
ZFdvcmtlciwgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uOjp0ZXJtaW5h
dGVTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRX
b3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIFNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyOjpzaW5nbGV0b24oKS5zdG9wU2hhcmVkV29ya2VyKHNoYXJlZFdvcmtlcklkZW50aWZpZXIp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wNDc5Mzdj
OTFlNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9j
b250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgKQEAgLTAsMCArMSw3NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2FnZVdpdGhNZXNzYWdlUG9y
dHMuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTaGFyZWRXb3JrZXJU
aHJlYWRQcm94eTsKKworY2xhc3MgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIgeworcHVibGlj
OgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlciYg
c2luZ2xldG9uKCk7CisKKyAgICBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSogc2hhcmVkV29ya2Vy
KFNoYXJlZFdvcmtlcklkZW50aWZpZXIpIGNvbnN0OworICAgIHZvaWQgc3RvcFNoYXJlZFdvcmtl
cihTaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BB
bGxTaGFyZWRXb3JrZXJzKCk7CisKKyAgICBjbGFzcyBDb25uZWN0aW9uIHsKKyAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5Db25u
ZWN0aW9uKCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBlc3RhYmxpc2hDb25uZWN0aW9uKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcG9z
dEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkwpID0gMDsKKyAgICAgICAgYm9vbCBpc0Nsb3NlZCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNDbG9zZWQ7IH0KKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgdm9pZCBz
ZXRBc0Nsb3NlZCgpIHsgbV9pc0Nsb3NlZCA9IHRydWU7IH0KKworICAgICAgICAvLyBJUEMgbWVz
c2FnZSBoYW5kbGVycy4KKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0Q29ubmVjdEV2
ZW50KFNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgU3Ry
aW5nJiYgc291cmNlT3JpZ2luKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0ZXJtaW5h
dGVTaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllcik7CisKKyAgICBwcml2YXRlOgor
ICAgICAgICBib29sIG1faXNDbG9zZWQgeyBmYWxzZSB9OworICAgIH07CisKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldENvbm5lY3Rpb24oc3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+JiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIENvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKSBjb25zdDsKKwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVnaXN0ZXJTaGFyZWRXb3JrZXJUaHJlYWQoUmVmPFNo
YXJlZFdvcmtlclRocmVhZFByb3h5PiYmKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3Mg
TmV2ZXJEZXN0cm95ZWQ8U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI+OworCisgICAgU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIEhhc2hNYXA8U2hhcmVkV29ya2VySWRlbnRp
ZmllciwgUmVmPFNoYXJlZFdvcmtlclRocmVhZFByb3h5Pj4gbV93b3JrZXJNYXA7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzlkZjkwNmE1ZGVjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAKQEAgLTAsMCArMSwxOTYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eS5oIgorCisjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJFcnJv
ckV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnRMb29wLmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5o
IgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRl
ICJMaWJXZWJSVENQcm92aWRlci5oIgorI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCisjaW5j
bHVkZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRl
ICJQYWdlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCisjaW5jbHVkZSAiUlRD
RGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlNoYXJlZFdv
cmtlci5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgiCisjaW5jbHVk
ZSAiU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJl
YWQuaCIKKyNpbmNsdWRlICJXb3JrZXJGZXRjaFJlc3VsdC5oIgorI2luY2x1ZGUgIldvcmtlclRo
cmVhZC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXJzRmFjdG9yeS5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBIYXNoU2V0PFNoYXJlZFdvcmtlclRocmVh
ZFByb3h5Kj4mIGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKQoreworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxIYXNoU2V0PFNoYXJlZFdvcmtlclRocmVhZFByb3h5Kj4+IHNldDsKKyAg
ICByZXR1cm4gc2V0OworfQorCitzdGF0aWMgV29ya2VyUGFyYW1ldGVycyBnZW5lcmF0ZVdvcmtl
clBhcmFtZXRlcnMoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFdvcmtlckZldGNoUmVzdWx0
JiB3b3JrZXJGZXRjaFJlc3VsdCwgV29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMsIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50LCBEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgcmV0dXJuIFdv
cmtlclBhcmFtZXRlcnMgeworICAgICAgICBzY3JpcHRVUkwsCisgICAgICAgIHdvcmtlck9wdGlv
bnMubmFtZSwKKyAgICAgICAgInNoYXJlZHdvcmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVy
c0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKSwKKyAgICAgICAgdXNlckFnZW50LAorICAgICAg
ICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+aXNPbkxpbmUoKSwKKyAg
ICAgICAgd29ya2VyRmV0Y2hSZXN1bHQuY29udGVudFNlY3VyaXR5UG9saWN5LAorICAgICAgICBm
YWxzZSwKKyAgICAgICAgd29ya2VyRmV0Y2hSZXN1bHQuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGlj
eSwKKyAgICAgICAgTW9ub3RvbmljVGltZTo6bm93KCksCisgICAgICAgIHsgfSwKKyAgICAgICAg
d29ya2VyT3B0aW9ucy50eXBlLAorICAgICAgICB3b3JrZXJPcHRpb25zLmNyZWRlbnRpYWxzLAor
ICAgICAgICBkb2N1bWVudC5zZXR0aW5nc1ZhbHVlcygpCisgICAgfTsKK30KKworU2hhcmVkV29y
a2VyVGhyZWFkUHJveHk6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5KFVuaXF1ZVJlZjxQYWdlPiYm
IHBhZ2UsIFNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29u
c3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBXb3Jr
ZXJGZXRjaFJlc3VsdCYmIHdvcmtlckZldGNoUmVzdWx0LCBXb3JrZXJPcHRpb25zJiYgd29ya2Vy
T3B0aW9ucywgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIENhY2hlU3RvcmFnZVByb3ZpZGVyJiBj
YWNoZVN0b3JhZ2VQcm92aWRlcikKKyAgICA6IG1fcGFnZShXVEZNb3ZlKHBhZ2UpKQorICAgICwg
bV9kb2N1bWVudCgqbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQorICAgICwgbV93b3Jr
ZXJUaHJlYWQoU2hhcmVkV29ya2VyVGhyZWFkOjpjcmVhdGUoc2hhcmVkV29ya2VySWRlbnRpZmll
ciwgZ2VuZXJhdGVXb3JrZXJQYXJhbWV0ZXJzKHNjcmlwdFVSTCwgd29ya2VyRmV0Y2hSZXN1bHQs
IFdURk1vdmUod29ya2VyT3B0aW9ucyksIHVzZXJBZ2VudCwgbV9kb2N1bWVudCksIFdURk1vdmUo
d29ya2VyRmV0Y2hSZXN1bHQuc2NyaXB0KSwgKnRoaXMsICp0aGlzLCAqdGhpcywgV29ya2VyVGhy
ZWFkU3RhcnRNb2RlOjpOb3JtYWwsIGNsaWVudE9yaWdpbi50b3BPcmlnaW4uc2VjdXJpdHlPcmln
aW4oKSwgbV9kb2N1bWVudC0+aWRiQ29ubmVjdGlvblByb3h5KCksIG1fZG9jdW1lbnQtPnNvY2tl
dFByb3ZpZGVyKCksIEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVkKCkpKQorICAg
ICwgbV9jYWNoZVN0b3JhZ2VQcm92aWRlcihjYWNoZVN0b3JhZ2VQcm92aWRlcikKK3sKKyAgICBB
U1NFUlQoIWFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKS5jb250YWlucyh0aGlzKSk7Cisg
ICAgYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGllcygpLmFkZCh0aGlzKTsKKworICAgIHN0YXRp
YyBib29sIGFkZGVkTGlzdGVuZXI7CisgICAgaWYgKCFhZGRlZExpc3RlbmVyKSB7CisgICAgICAg
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5hZGRPbmxpbmVTdGF0ZUNo
YW5nZUxpc3RlbmVyKCZuZXR3b3JrU3RhdGVDaGFuZ2VkKTsKKyAgICAgICAgYWRkZWRMaXN0ZW5l
ciA9IHRydWU7CisgICAgfQorfQorCitTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6flNoYXJlZFdv
cmtlclRocmVhZFByb3h5KCkKK3sKKyAgICBBU1NFUlQoYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJv
eGllcygpLmNvbnRhaW5zKHRoaXMpKTsKKyAgICBhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVz
KCkucmVtb3ZlKHRoaXMpOworfQorCitTaGFyZWRXb3JrZXJJZGVudGlmaWVyIFNoYXJlZFdvcmtl
clRocmVhZFByb3h5OjppZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93b3JrZXJU
aHJlYWQtPmlkZW50aWZpZXIoKTsKK30KKworUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+
IFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmICghbV9jYWNoZVN0b3JhZ2VD
b25uZWN0aW9uKQorICAgICAgICBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24gPSBtX2NhY2hlU3Rv
cmFnZVByb3ZpZGVyLmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKTsKKyAgICByZXR1cm4g
bV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uOworfQorCitSZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyQ29ubmVjdGlvbj4gU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZVJUQ0Rh
dGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24oKQoreworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgcmV0dXJuIG1fcGFnZS0+bGliV2ViUlRDUHJvdmlkZXIoKS5jcmVhdGVS
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCk7Cit9CisKK3ZvaWQgU2hhcmVk
V29ya2VyVGhyZWFkUHJveHk6OnBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzayYmIHRhc2spCit7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGFzayA9IFdURk1vdmUo
dGFzayksIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSBtdXRhYmxlIHsKKyAgICAg
ICAgdGFzay5wZXJmb3JtVGFzayhwcm90ZWN0ZWRUaGlzLT5tX2RvY3VtZW50LmdldCgpKTsKKyAg
ICB9KTsKK30KKworYm9vbCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tGb3JNb2Rl
VG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
JiYgdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQoreworICAgIGlmIChtX2lzVGVybWluYXRpbmdP
clRlcm1pbmF0ZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fd29ya2VyVGhyZWFk
LT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFdURk1vdmUodGFzayksIG1vZGUpOworICAgIHJl
dHVybiB0cnVlOworfQorCit2b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0TWVzc2Fn
ZVRvRGVidWdnZXIoY29uc3QgU3RyaW5nJikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50Lgor
fQorCit2b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpzZXRSZXNvdXJjZUNhY2hpbmdEaXNh
YmxlZEJ5V2ViSW5zcGVjdG9yKGJvb2wpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4KK30K
Kwordm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6bmV0d29ya1N0YXRlQ2hhbmdlZChib29s
IGlzT25MaW5lKQoreworICAgIGZvciAoYXV0byogcHJveHkgOiBhbGxTaGFyZWRXb3JrZXJUaHJl
YWRQcm94aWVzKCkpCisgICAgICAgIHByb3h5LT5ub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoaXNP
bkxpbmUpOworfQorCit2b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpub3RpZnlOZXR3b3Jr
U3RhdGVDaGFuZ2UoYm9vbCBpc09ubGluZSkKK3sKKyAgICBpZiAobV9pc1Rlcm1pbmF0aW5nT3JU
ZXJtaW5hdGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBwb3N0VGFza0Zvck1vZGVUb1dvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlKFtpc09ubGluZV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIHsKKyAgICAgICAgYXV0byYgZ2xvYmFsU2NvcGUgPSBkb3duY2FzdDxXb3JrZXJH
bG9iYWxTY29wZT4oY29udGV4dCk7CisgICAgICAgIGdsb2JhbFNjb3BlLnNldElzT25saW5lKGlz
T25saW5lKTsKKyAgICAgICAgZ2xvYmFsU2NvcGUuZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tT
b3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW2dsb2JhbFNjb3BlID0gUmVmIHsgZ2xvYmFsU2NvcGUg
fSwgaXNPbmxpbmVdIHsKKyAgICAgICAgICAgIGdsb2JhbFNjb3BlLT5kaXNwYXRjaEV2ZW50KEV2
ZW50OjpjcmVhdGUoaXNPbmxpbmUgPyBldmVudE5hbWVzKCkub25saW5lRXZlbnQgOiBldmVudE5h
bWVzKCkub2ZmbGluZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6Tm8pKTsKKyAgICAgICAgfSk7CisgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1v
ZGUoKSk7Cit9CisKKy8vIEZJWE1FOiBUcnkgYW5kIHNoYXJlIGNvZGUgd2l0aCBTZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkuY3BwLgordm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6c2V0dXBQ
YWdlRm9yU2hhcmVkV29ya2VyKFBhZ2UmIHBhZ2UsIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25z
dCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmIHdv
cmtlckZldGNoUmVzdWx0KQoreworICAgIGF1dG8mIG1haW5GcmFtZSA9IHBhZ2UubWFpbkZyYW1l
KCk7CisgICAgbWFpbkZyYW1lLmxvYWRlcigpLmluaXRGb3JTeW50aGVzaXplZERvY3VtZW50KHsg
fSk7CisgICAgYXV0byBkb2N1bWVudCA9IERvY3VtZW50OjpjcmVhdGVOb25SZW5kZXJlZFBsYWNl
aG9sZGVyKG1haW5GcmFtZSwgc2NyaXB0VVJMKTsKKyAgICBkb2N1bWVudC0+Y3JlYXRlRE9NV2lu
ZG93KCk7CisKKyAgICBkb2N1bWVudC0+c3RvcmFnZUJsb2NraW5nU3RhdGVEaWRDaGFuZ2UoKTsK
KworICAgIGF1dG8gb3JpZ2luID0gY2xpZW50T3JpZ2luLnRvcE9yaWdpbi5zZWN1cml0eU9yaWdp
bigpOworICAgIG9yaWdpbi0+c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KHBhZ2Uuc2V0dGluZ3Mo
KS5zdG9yYWdlQmxvY2tpbmdQb2xpY3koKSk7CisKKyAgICBhdXRvIG9yaWdpbkFzVVJMID0gb3Jp
Z2luLT50b1VSTCgpOworICAgIGRvY3VtZW50LT5zZXRTaXRlRm9yQ29va2llcyhvcmlnaW5Bc1VS
TCk7CisgICAgZG9jdW1lbnQtPnNldEZpcnN0UGFydHlGb3JDb29raWVzKG9yaWdpbkFzVVJMKTsK
KyAgICBkb2N1bWVudC0+c2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24ob3JpZ2luLT5kb21haW5G
b3JDYWNoZVBhcnRpdGlvbigpKTsKKworICAgIGlmIChhdXRvIHBvbGljeSA9IHBhcnNlUmVmZXJy
ZXJQb2xpY3kod29ya2VyRmV0Y2hSZXN1bHQucmVmZXJyZXJQb2xpY3ksIFJlZmVycmVyUG9saWN5
U291cmNlOjpIVFRQSGVhZGVyKSkKKyAgICAgICAgZG9jdW1lbnQtPnNldFJlZmVycmVyUG9saWN5
KCpwb2xpY3kpOworCisgICAgbWFpbkZyYW1lLnNldERvY3VtZW50KFdURk1vdmUoZG9jdW1lbnQp
KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdEV4Y2VwdGlvblRvV29y
a2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgY2FsbE9uTWFp
blRocmVhZChbc2hhcmVkV29ya2VySWRlbnRpZmllciA9IG1fd29ya2VyVGhyZWFkLT5pZGVudGlm
aWVyKCksIGVycm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZS5pc29sYXRlZENvcHkoKSwgbGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCld
IHsKKyAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKQorICAgICAgICAgICAgY29ubmVjdGlvbi0+
cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGVycm9y
TWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwpOworICAgIH0pOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oCnNpbWlsYXJpdHkgaW5k
ZXggNTQlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlclByb3h5LmgKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRl
eHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaAppbmRleCBkYjdiODUwOWRmNWEuLmY3YjI5MjRk
YmUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1No
YXJlZFdvcmtlclRocmVhZFByb3h5LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsOCArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIlNoYXJlZFdvcmtlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXb3JrZXJEZWJ1
Z2dlclByb3h5LmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIgogI2luY2x1
ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyT2JqZWN0UHJveHkuaCIK
ICNpbmNsdWRlICJXb3JrZXJPcHRpb25zLmgiCkBAIC0zNCwyOSArMzQsMjcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitjbGFzcyBDYWNoZVN0b3JhZ2VQcm92aWRlcjsKK2NsYXNzIFBhZ2U7
CiBjbGFzcyBTaGFyZWRXb3JrZXI7CiBjbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWQ7CiAKLWNsYXNz
IFNoYXJlZFdvcmtlclByb3h5IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZFdv
cmtlclByb3h5PiwgcHVibGljIFdvcmtlckdsb2JhbFNjb3BlUHJveHksIHB1YmxpYyBXb3JrZXJP
YmplY3RQcm94eSwgcHVibGljIFdvcmtlckxvYWRlclByb3h5LCBwdWJsaWMgV29ya2VyRGVidWdn
ZXJQcm94eSB7CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0
OworCitjbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4sIHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94
eSwgcHVibGljIFdvcmtlckRlYnVnZ2VyUHJveHksIHB1YmxpYyBXb3JrZXJPYmplY3RQcm94eSB7
CiBwdWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFNoYXJlZFdv
cmtlclByb3h5JiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpIHsgcmV0dXJuICpuZXcgU2hhcmVkV29y
a2VyUHJveHkoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsgfQorICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB2b2lkIHNldHVwUGFnZUZvclNoYXJlZFdvcmtlcihQYWdlJiwgY29uc3QgVVJM
JiwgY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKTsKIAotICAg
IFNoYXJlZFdvcmtlclRocmVhZCogdGhyZWFkKCkgeyByZXR1cm4gbV93b3JrZXJUaHJlYWQuZ2V0
KCk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmPFNoYXJlZFdv
cmtlclRocmVhZFByb3h5PiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4u
KSk7IH0KKyAgICB+U2hhcmVkV29ya2VyVGhyZWFkUHJveHkoKTsKKworICAgIFNoYXJlZFdvcmtl
cklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0OworICAgIFNoYXJlZFdvcmtlclRocmVhZCYg
dGhyZWFkKCkgeyByZXR1cm4gbV93b3JrZXJUaHJlYWQuZ2V0KCk7IH0KKworICAgIGJvb2wgaXNU
ZXJtaW5hdGluZ09yVGVybWluYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNUZXJtaW5hdGluZ09y
VGVybWluYXRlZDsgfQorICAgIHZvaWQgc2V0QXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCgpIHsg
bV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkID0gdHJ1ZTsgfQogCi0gICAgdm9pZCBzdGFydFdv
cmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBib29sIGlzT25saW5lLCBjb25zdCBTY3JpcHRCdWZm
ZXImIHNvdXJjZUNvZGUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cyYsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBjb25z
dCBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5JiwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBS
ZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMsIEpTQzo6
UnVudGltZUZsYWdzKSBmaW5hbDsKLSAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3Bl
KCkgZmluYWw7Ci0gICAgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUoTWVzc2Fn
ZVdpdGhNZXNzYWdlUG9ydHMmJikgZmluYWw7Ci0gICAgdm9pZCBwb3N0VGFza1RvV29ya2VyR2xv
YmFsU2NvcGUoRnVuY3Rpb248dm9pZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+JiYpIGZpbmFs
OwotICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCB3
b3JrZXJPYmplY3REZXN0cm95ZWQoKSBmaW5hbDsKLSAgICB2b2lkIG5vdGlmeU5ldHdvcmtTdGF0
ZUNoYW5nZShib29sIGlzT25saW5lKSBmaW5hbDsKLSAgICB2b2lkIHN1c3BlbmRGb3JCYWNrRm9y
d2FyZENhY2hlKCkgZmluYWw7Ci0gICAgdm9pZCByZXN1bWVGb3JCYWNrRm9yd2FyZENhY2hlKCkg
ZmluYWw7Ci0gICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTCkgZmluYWw7Ci0gICAgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURlc3Ry
b3llZCgpIGZpbmFsOwotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdl
V2l0aE1lc3NhZ2VQb3J0cyYmKSBmaW5hbDsKLSAgICB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdv
cmtlck9iamVjdChib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkgZmluYWw7Ci0gICAgdm9pZCByZXBv
cnRQZW5kaW5nQWN0aXZpdHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpIGZpbmFsOwogICAgIFJl
ZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
KCkgZmluYWw7CiAgICAgUmVmUHRyPFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rp
b24+IGNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24oKSBmaW5hbDsK
ICAgICB2b2lkIHBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYm
KSBmaW5hbDsKQEAgLTY0LDE4ICs2MiwyNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwb3N0TWVzc2Fn
ZVRvRGVidWdnZXIoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUNh
Y2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yKGJvb2wpIGZpbmFsOwogCisgICAgLy8gV29ya2Vy
T2JqZWN0UHJveHkKKyAgICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBT
dHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMKSBmaW5hbDsKKyAgICB2b2lkIHdvcmtlckdsb2JhbFNjb3Bl
RGVzdHJveWVkKCkgZmluYWwgeyB9CisgICAgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0
KE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpIGZpbmFsIHsgfQorICAgIHZvaWQgY29uZmlybU1l
c3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wpIGZpbmFsIHsgfQorICAgIHZvaWQgcmVwb3J0UGVu
ZGluZ0FjdGl2aXR5KGJvb2wpIGZpbmFsIHsgfQorCiBwcml2YXRlOgotICAgIFNoYXJlZFdvcmtl
clByb3h5KFNoYXJlZFdvcmtlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZFdvcmtlclRo
cmVhZFByb3h5KFVuaXF1ZVJlZjxQYWdlPiYmLCBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25z
dCBDbGllbnRPcmlnaW4mLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgV29ya2VyRmV0Y2hSZXN1bHQm
JiwgV29ya2VyT3B0aW9ucyYmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgQ2FjaGVTdG9yYWdl
UHJvdmlkZXImKTsKIAotICAgIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5h
bCgpOworICAgIHN0YXRpYyB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoYm9vbCBpc09uTGluZSk7
CisgICAgdm9pZCBub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9vbCBpc09ubGluZSk7CiAKLSAg
ICBXZWFrUHRyPFNoYXJlZFdvcmtlcj4gbV9zaGFyZWRXb3JrZXI7Ci0gICAgUmVmUHRyPFNoYXJl
ZFdvcmtlclRocmVhZD4gbV93b3JrZXJUaHJlYWQ7Ci0gICAgY29uc3QgUmVmUHRyPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ+IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLSAgICBjb25zdCBTdHJp
bmcgbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yOwotICAgIGJvb2wgbV9hc2tlZFRvVGVybWluYXRl
IHsgZmFsc2UgfTsKLSAgICBib29sIG1faGFzUGVuZGluZ0FjdGl2aXR5IHsgZmFsc2UgfTsKLSAg
ICBib29sIG1fbWF5QmVEZXN0cm95ZWQgeyBmYWxzZSB9OworICAgIFVuaXF1ZVJlZjxQYWdlPiBt
X3BhZ2U7CisgICAgUmVmPERvY3VtZW50PiBtX2RvY3VtZW50OworICAgIFJlZjxTaGFyZWRXb3Jr
ZXJUaHJlYWQ+IG1fd29ya2VyVGhyZWFkOworICAgIENhY2hlU3RvcmFnZVByb3ZpZGVyJiBtX2Nh
Y2hlU3RvcmFnZVByb3ZpZGVyOworICAgIFJlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBt
X2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247CisgICAgYm9vbCBtX2lzVGVybWluYXRpbmdPclRlcm1p
bmF0ZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0
cy50eHQKaW5kZXggNzU2ZGE4OGI0NWY3Li4yOWY0Yzc4MTgxODAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4
dApAQCAtMjgsNiArMjgsNyBAQCBzZXQoV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAi
JHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zIgogICAgICIke1dFQktJ
VF9ESVJ9L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50IgogICAgICIke1dF
QktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIiCisgICAgIiR7V0VCS0lUX0RJ
Un0vTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyIgogICAgICIke1dFQktJVF9ESVJ9L05ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZSIKQEAgLTIw
Miw2ICsyMDMsOSBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24KICAgICBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbgogCisgICAg
TmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b24KKyAgICBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbgorCiAgICAgTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlTWFuYWdlclNldAogCiAgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbgpAQCAtMzA1LDYgKzMwOSw4IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5f
RklMRVMKIAogICAgIFdlYlByb2Nlc3MvU3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVN
ZWRpYVNvdXJjZU1hbmFnZXIKIAorICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24KKyAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbgogICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Ns
aWVudENvbm5lY3Rpb24KICAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1p
bnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0CmluZGV4IDRjNjYyMjBjZjEyMi4uNzIyOWMxYjk4NzA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC05MSw2ICs5MSw4IEBAICQo
UFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRv
d25sb2FkVGFzay5tZXNzYWdlcy5pCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikv
TmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtl
ci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3Jr
UHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbgpAQCAtMjE3
LDYgKzIxOSw4IEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVj
b2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBS
T0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLm1lc3Nh
Z2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1
dGhuUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IGUzYjU1ODQwYWUxZS4uYTg2MzI4MTQ3
YjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKQEAgLTYwNyw2ICs2MDcsMTggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9XZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdC9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVz
c2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVz
c2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25N
ZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTb2NrZXRDaGFu
bmVsTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9XZWJTb2NrZXRDaGFubmVsTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTb2NrZXRDaGFubmVsTWVzc2FnZXNSZXBsaWVz
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA3YWQ0OWUzNzM1ZjQuLjM1MWZmYWUw
YTU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBi
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTMzLDYgKzEzMyw4IEBAIE1F
U1NBR0VfUkVDRUlWRVJTID0gXAogCU5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckRvd25sb2FkVGFzayBcCiAJTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrIFwKIAlOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBcCisJTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2Vy
L1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24gXAorCU5ldHdvcmtQcm9jZXNzL1NoYXJl
ZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIFwKIAlOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtIFwKIAlOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2VzcyBcCiAJTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyIFwKQEAgLTIy
NSw2ICsyMjcsOCBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3Mv
U3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIgXAorCVdl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24g
XAorCVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIFwK
IAlXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gXAogCVdl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvV2Vi
UHJvY2VzcyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDY4N2M4ZGI2OTEyYy4u
YzdiMTdmZDcwNzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNjYsNiArNjYs
MTEgQEAKICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1
ZGUgIldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29y
a2VyU2VydmVyLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgor
I2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVFRQQ29v
a2llQWNjZXB0UG9saWN5Lmg+CkBAIC0xMzIsNiArMTM3LDcgQEAgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtQcm9jZXNz
JiBuZXQKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgZXN0YWJsaXNoU1dTZXJ2ZXJD
b25uZWN0aW9uKCk7CiAjZW5kaWYKKyAgICBlc3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uKCk7CiB9CiAKIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp+TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQpAQCAtMTY2LDYgKzE3Miw3IEBAIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKICAgICB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7CiAjZW5k
aWYKKyAgICB1bnJlZ2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOwogfQogCiB2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYXNVcGxvYWRTdGF0ZUNoYW5nZWQoYm9vbCBo
YXNVcGxvYWQpCkBAIC0yNzUsNiArMjgyLDE3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvCiAg
ICAgfQogI2VuZGlmCiAKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0g
TWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSkgeworICAgICAgICBpZiAobV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uKQorICAgICAg
ICAgICAgbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBpZiAo
bV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbikKKyAgICAgICAgICAgIG1fc2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1P
VEVfVUkpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKQogICAg
ICAgICByZXR1cm4gcGF5bWVudENvb3JkaW5hdG9yKCkuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2Rlcik7CkBAIC0zOTgsOSArNDE2LDggQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBu
dWxscHRyOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAjZW5kaWYKKyAg
ICBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKIAogICAgIC8vIFBy
b3RlY3Qgb3Vyc2VsZiBhcyB3ZSBtaWdodCBiZSBvdGhlcndpc2UgYmUgZGVsZXRlZCBkdXJpbmcg
dGhpcyBmdW5jdGlvbi4KICAgICBSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IHBy
b3RlY3RvcigqdGhpcyk7CkBAIC00NDEsNiArNDU4LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7CiAj
ZW5kaWYKKyAgICB1bnJlZ2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOwogCiAjaWYgRU5B
QkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAgbV9wYXltZW50Q29vcmRpbmF0b3IgPSBudWxs
cHRyOwpAQCAtMTE4Niw2ICsxMjA0LDYxIEBAIHNpemVfdCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6ZmluZE5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoV2ViQ29yZTo6UmVzb3VyCiAgICAg
ICAgIHJldHVybiBpdGVtLnJlc291cmNlSUQgPT0gcmVzb3VyY2VJRDsKICAgICB9KTsKIH0KKwor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2hhcmVkV29ya2Vy
Q29udGV4dENvbm5lY3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2hh
cmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb246Iik7Cisg
ICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7CisgICAgaWYgKGF1dG8qIHN3U2Vy
dmVyID0gc2Vzc2lvbiA/IHNlc3Npb24tPnNoYXJlZFdvcmtlclNlcnZlcigpIDogbnVsbHB0cikK
KyAgICAgICAgbV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4oKnRoaXMsIFdURk1vdmUocmVn
aXN0cmFibGVEb21haW4pLCAqc3dTZXJ2ZXIpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9
CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb24oKQoreworICAgIGlmIChtX3NoYXJlZFdvcmtlckNvbm5lY3Rp
b24pCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lv
bigpOworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgQ09OTkVDVElP
Tl9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uOiIpOworCisgICAgYXV0byYgc2VydmVyID0gc2Vzc2lvbi0+ZW5zdXJlU2hhcmVk
V29ya2VyU2VydmVyKCk7CisgICAgYXV0byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uPihtX25ldHdvcmtQcm9jZXNzLCBzZXJ2ZXIsIG1fY29u
bmVjdGlvbi5nZXQoKSwgbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7CisKKyAgICBtX3NoYXJlZFdv
cmtlckNvbm5lY3Rpb24gPSAqY29ubmVjdGlvbjsKKyAgICBzZXJ2ZXIuYWRkQ29ubmVjdGlvbihX
VEZNb3ZlKGNvbm5lY3Rpb24pKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Y2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpCit7CisgICAgQ09OTkVD
VElPTl9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJjbG9zZVNoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uOiIpOworICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBudWxs
cHRyOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVy
U2hhcmVkV29ya2VyQ29ubmVjdGlvbigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhT
aGFyZWRXb3JrZXIsICJ1bnJlZ2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbjoiKTsKKyAgICBp
ZiAobV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uKQorICAgICAgICBtX3NoYXJlZFdvcmtlckNvbm5l
Y3Rpb24tPnNlcnZlcigpLnJlbW92ZUNvbm5lY3Rpb24obV9zaGFyZWRXb3JrZXJDb25uZWN0aW9u
LT53ZWJQcm9jZXNzSWRlbnRpZmllcigpKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6c2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25n
ZXJOZWVkZWQoKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAi
c2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQ6Iik7
CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6U2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ob0xvbmdlck5lZWRlZCB7IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CisKKyAgICBt
X3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKK30KKworV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbiogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNo
YXJlZFdvcmtlckNvbm5lY3Rpb24oKQoreworICAgIGlmICghbV9zaGFyZWRXb3JrZXJDb25uZWN0
aW9uKQorICAgICAgICBlc3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCk7Cisg
ICAgcmV0dXJuIG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbi5nZXQoKTsKK30KICAgICAKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojp1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCkKQEAgLTEyMjMsOSArMTI5Niw5IEBAIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsb3NlU1dDb250ZXh0Q29ubmVjdGlvbigpCiAg
ICAgbV9zd0NvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKIH0KIAotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVl
ZGVkKCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNlcnZpY2VXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKQogewotICAgIENPTk5FQ1RJ
T05fUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgInNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25O
b0xvbmdlck5lZWRlZDogV2ViUHJvY2VzcyBubyBsb25nZXIgdXNlZnVsIGZvciBydW5uaW5nIHNl
cnZpY2Ugd29ya2VycyIpOworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2VydmljZVdvcmtl
ciwgInNlcnZpY2VXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQ6
IFdlYlByb2Nlc3Mgbm8gbG9uZ2VyIHVzZWZ1bCBmb3IgcnVubmluZyBzZXJ2aWNlIHdvcmtlcnMi
KTsKICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ob0xvbmdlck5lZWRlZCB7IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CiAKICAg
ICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CmluZGV4IDNhMWUxNDA0MzM4Zi4uZDBhYTRlZjc0NTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCkBAIC05Miw2ICs5Miw4IEBAIGNsYXNzIE5ldHdvcmtTb2NrZXRTdHJlYW07CiBjbGFzcyBT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwogY2xh
c3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb247CiAKIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogc3RydWN0IERhdGFLZXk7CkBA
IC0xODEsMTAgKzE4MywxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjaGVja1Byb2Nlc3NMb2NhbFBv
cnRGb3JBY3Rpdml0eShjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpI
YXNBY3Rpdml0eSk+JiYpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQg
c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCk7CisgICAgdm9pZCBzZXJ2
aWNlV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCk7CiAgICAg
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uKiBzd0Nvbm5lY3Rpb24oKTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gY3JlYXRlRmV0Y2hUYXNrKE5ldHdvcmtSZXNvdXJj
ZUxvYWRlciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlmCisgICAg
dm9pZCBzaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRl
ZCgpOworCisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbiogc2hhcmVkV29ya2Vy
Q29ubmVjdGlvbigpOwogCiAgICAgTmV0d29ya1NjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3Ry
eSgpIHsgcmV0dXJuIG1fc2NoZW1lUmVnaXN0cnkuZ2V0KCk7IH0KIApAQCAtMjUzLDYgKzI1OCw5
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVTb2NrZXRDaGFubmVsKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIFdlYkNvcmU6OldlYlNv
Y2tldElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYpOwogICAgIHZvaWQgdXBkYXRlUXVvdGFCYXNlZE9uU3BhY2VVc2FnZUZvclRl
c3RpbmcoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAKKyAgICB2b2lkIGVzdGFibGlz
aFNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJTaGFy
ZWRXb3JrZXJDb25uZWN0aW9uKCk7CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAg
dm9pZCBlc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKTsKICAgICB2b2lkIGVzdGFibGlzaFNX
Q29udGV4dENvbm5lY3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwpAQCAtMjYwLDYgKzI2OCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1
bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7CiAjZW5kaWYKIAorICAgIHZvaWQgZXN0YWJsaXNoU2hh
cmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAg
ICB2b2lkIGNsb3NlU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24oKTsKKwogICAgIHZvaWQg
Y3JlYXRlUlRDUHJvdmlkZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNpZiBFTkFC
TEUoV0VCX1JUQykKICAgICB2b2lkIGNvbm5lY3RUb1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNl
KFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBzb3VyY2UsIFdlYkNvcmU6OlJUQ0Rh
dGFDaGFubmVsSWRlbnRpZmllciBoYW5kbGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6
b3B0aW9uYWw8Ym9vbD4pPiYmKTsKQEAgLTQwNCw2ICs0MTUsOCBAQCBwcml2YXRlOgogICAgIFdl
YWtQdHI8V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPiBtX3N3Q29ubmVjdGlvbjsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiBtX3N3Q29udGV4dENvbm5l
Y3Rpb247CiAjZW5kaWYKKyAgICBXZWFrUHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b24+IG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4gbV9zaGFyZWRXb3JrZXJDb250ZXh0
Q29ubmVjdGlvbjsKIAogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIGJvb2wgbV9pc1JlZ2lzdGVy
ZWRUb1JUQ0RhdGFDaGFubmVsUHJveHkgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMjQyODM1MDUwYjI0Li5iOTdjYTM0NzliNGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtODgsNiArODgs
OSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNl
aXZlciB7CiAgICAgQ2xvc2VTV0NvbnRleHRDb25uZWN0aW9uKCkKICNlbmRpZgogCisgICAgRXN0
YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21h
aW4pIC0+ICgpIEFzeW5jCisgICAgQ2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigp
CisKICAgICBDcmVhdGVSVENQcm92aWRlcigpIC0+ICgpIEFzeW5jCiAjaWYgRU5BQkxFKFdFQl9S
VEMpCiAgICAgQ29ubmVjdFRvUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2Uoc3RydWN0IFdlYkNv
cmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBzb3VyY2UsIHN0cnVjdCBXZWJDb3JlOjpSVENE
YXRhQ2hhbm5lbElkZW50aWZpZXIgaGFuZGxlcikgLT4gKHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcmVz
dWx0KSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmNwcAppbmRleCBlMmIyNGQ4MzIyYjYuLmQ3NjE2Mjg1MGNhZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTQ3LDYgKzQ3LDcg
QEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3NQcm94eS5oIgogI2luY2x1ZGUgIldlYlNXT3JpZ2luU3RvcmUuaCIKKyNpbmNsdWRlICJXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRUYXNrLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9Db29raWVKYXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVz
dC5oPgpAQCAtNjUzLDYgKzY1NCwxMyBAQCBib29sIE5ldHdvcmtTZXNzaW9uOjpoYXNTZXJ2aWNl
V29ya2VyRGF0YWJhc2VQYXRoKCkgY29uc3QKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKIAorV2ViU2hhcmVkV29ya2VyU2VydmVyJiBOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlU2hh
cmVkV29ya2VyU2VydmVyKCkKK3sKKyAgICBpZiAoIW1fc2hhcmVkV29ya2VyU2VydmVyKQorICAg
ICAgICBtX3NoYXJlZFdvcmtlclNlcnZlciA9IG1ha2VVbmlxdWU8V2ViU2hhcmVkV29ya2VyU2Vy
dmVyPigqdGhpcyk7CisgICAgcmV0dXJuICptX3NoYXJlZFdvcmtlclNlcnZlcjsKK30KKwogV2Vi
SURCU2VydmVyJiBOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlV2ViSURCU2VydmVyKCkKIHsKICAgICBp
ZiAoIW1fd2ViSURCU2VydmVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmgKaW5kZXggMTkzMDdjZjQwYmUzLi4zZjlkNmM5NTUwYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTc5LDYgKzc5
LDcgQEAgY2xhc3MgU2VydmljZVdvcmtlckZldGNoVGFzazsKIGNsYXNzIFdlYklEQlNlcnZlcjsK
IGNsYXNzIFdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVyczsKIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlcjsKIGNsYXNzIFdlYlNv
Y2tldFRhc2s7CiBjbGFzcyBXZWJTV09yaWdpblN0b3JlOwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOwpAQCAtMjEwLDYgKzIxMSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFNlcnZpY2VX
b3JrZXJTZXNzaW9uKGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcm
JiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBjb25zdCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmKTsKICNlbmRpZgogCisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyKiBzaGFy
ZWRXb3JrZXJTZXJ2ZXIoKSB7IHJldHVybiBtX3NoYXJlZFdvcmtlclNlcnZlci5nZXQoKTsgfQor
ICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlciYgZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCk7CisK
ICAgICBXZWJJREJTZXJ2ZXIqIHdlYklEQlNlcnZlcigpIHsgcmV0dXJuIG1fd2ViSURCU2VydmVy
LmdldCgpOyB9CiAgICAgV2ViSURCU2VydmVyJiBlbnN1cmVXZWJJREJTZXJ2ZXIoKTsKICAgICB2
b2lkIGNsb3NlSURCU2VydmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0zMTgs
NiArMzIyLDcgQEAgcHJvdGVjdGVkOgogICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlcklu
Zm8+IG1fc2VydmljZVdvcmtlckluZm87CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNX
U2VydmVyPiBtX3N3U2VydmVyOwogI2VuZGlmCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNoYXJl
ZFdvcmtlclNlcnZlcj4gbV9zaGFyZWRXb3JrZXJTZXJ2ZXI7CiAKICAgICBTdHJpbmcgbV9pZGJE
YXRhYmFzZVBhdGg7CiAgICAgUmVmUHRyPFdlYklEQlNlcnZlcj4gbV93ZWJJREJTZXJ2ZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmlu
ZGV4IDVhODcwM2VmZDZkNS4uMjdmNmU4ZGE1ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMTYyLDcgKzE2Miw3IEBAIHZv
aWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptYXRjaEFsbENvbXBsZXRlZCh1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllCiAKIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjpjb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpCiB7Ci0gICAgbV9jb25uZWN0aW9uLnNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCgpOworICAgIG1fY29ubmVjdGlv
bi5zZXJ2aWNlV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCk7
CiB9CiAKIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzZXRUaHJvdHRsZVN0
YXRlKGJvb2wgaXNUaHJvdHRsZWFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjNjNjM2NGFhNTQw
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVk
V29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAKQEAgLTAsMCArMSwyOTQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2Vy
dmVyLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQ
cm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlICJX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
V2ViU2hhcmVkV29ya2VyU2VydmVyOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIoTmV0d29ya1Nlc3Np
b24mIHNlc3Npb24pCisgICAgOiBtX3Nlc3Npb24oc2Vzc2lvbikKK3sKK30KKworV2ViU2hhcmVk
V29ya2VyU2VydmVyOjp+V2ViU2hhcmVkV29ya2VyU2VydmVyKCkgPSBkZWZhdWx0OworCitQQUw6
OlNlc3Npb25JRCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNlc3Npb25JRCgpCit7CisgICAgcmV0
dXJuIG1fc2Vzc2lvbi5zZXNzaW9uSUQoKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCBX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIsIFVSTCYmIHVybCwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBv
cnQsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zKQoreworICAgIFdlYkNv
cmU6OlNoYXJlZFdvcmtlcktleSBrZXkgeyBvcmlnaW4sIHVybCwgd29ya2VyT3B0aW9ucy5uYW1l
IH07CisgICAgYXV0byYgc2hhcmVkV29ya2VyID0gbV9zaGFyZWRXb3JrZXJzLmVuc3VyZShrZXks
IFsmXSB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNoYXJlZFdvcmtlcj4ob3JpZ2luLCB1
cmwsIHdvcmtlck9wdGlvbnMpOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBSRUxFQVNF
X0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRX
b3JrZXI6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwcml2YXRlfXMsIHNoYXJlZFdv
cmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRv
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgc2hhcmVkV29ya2VyLT5pZGVudGlmaWVyLnRvVUludDY0
KCkpOworCisgICAgaWYgKHNoYXJlZFdvcmtlci0+d29ya2VyT3B0aW9ucy50eXBlICE9IHdvcmtl
ck9wdGlvbnMudHlwZSB8fCBzaGFyZWRXb3JrZXItPndvcmtlck9wdGlvbnMuY3JlZGVudGlhbHMg
IT0gd29ya2VyT3B0aW9ucy5jcmVkZW50aWFscykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3Jr
ZXI6IEEgd29ya2VyIGFscmVhZHkgZXhpc3RzIHdpdGggdGhpcyBuYW1lIGJ1dCBoYXMgZGlmZmVy
ZW50IHR5cGUgLyBjcmVkZW50aWFscyIpOworICAgICAgICBpZiAoYXV0byogc2VydmVyQ29ubmVj
dGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJv
Y2Vzc0lkZW50aWZpZXIoKSkpCisgICAgICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uLT5ub3RpZnlX
b3JrZXJPYmplY3RPZkxvYWRGYWlsdXJlKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJP
YmplY3RzLmFkZChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBwb3J0KTsKKworICAgIGlm
IChzaGFyZWRXb3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMuc2l6ZSgpID4gMSkgeworICAgICAg
ICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVl
c3RTaGFyZWRXb3JrZXI6IEEgc2hhcmVkIHdvcmtlciB3aXRoIHRoaXMgVVJMIGFscmVhZHkgZXhp
c3RzIChub3cgc2hhcmVkIGJ5ICV1IHNoYXJlZCB3b3JrZXIgb2JqZWN0cykiLCBzaGFyZWRXb3Jr
ZXItPnNoYXJlZFdvcmtlck9iamVjdHMuc2l6ZSgpKTsKKyAgICAgICAgaWYgKHNoYXJlZFdvcmtl
ci0+aXNSdW5uaW5nKSB7CisgICAgICAgICAgICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IG1f
Y29udGV4dENvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCkp
OworICAgICAgICAgICAgQVNTRVJUKGNvbnRleHRDb25uZWN0aW9uKTsKKyAgICAgICAgICAgIGlm
IChjb250ZXh0Q29ubmVjdGlvbikKKyAgICAgICAgICAgICAgICBwb3N0Q29ubmVjdEV2ZW50KCpj
b250ZXh0Q29ubmVjdGlvbiwgc2hhcmVkV29ya2VyLT5pZGVudGlmaWVyLCBwb3J0LCBvcmlnaW4u
Y2xpZW50T3JpZ2luLnRvU3RyaW5nKCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgQVNTRVJUKCFzaGFyZWRXb3JrZXItPmlzUnVubmluZyk7CisKKyAgICBhdXRvKiBz
ZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlQoc2VydmVyQ29ubmVjdGlv
bik7CisKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6IEZldGNoaW5nIHNoYXJlZCB3b3JrZXIgc2NyaXB0IGlu
IGNsaWVudCIpOworICAgIHNlcnZlckNvbm5lY3Rpb24tPmZldGNoU2NyaXB0SW5DbGllbnQodXJs
LCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCB3b3JrZXJPcHRpb25zLCBbd2Vha1RoaXMg
PSBXZWFrUHRyIHsgKnRoaXMgfSwgc2hhcmVkV29ya2VyID0gV2Vha1B0ciB7ICpzaGFyZWRXb3Jr
ZXIgfV0oV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJiBmZXRjaFJlc3VsdCkgeworICAgICAg
ICBpZiAod2Vha1RoaXMgJiYgc2hhcmVkV29ya2VyKQorICAgICAgICAgICAgd2Vha1RoaXMtPmRp
ZEZpbmlzaEZldGNoaW5nU2hhcmVkV29ya2VyU2NyaXB0KCpzaGFyZWRXb3JrZXIsIFdURk1vdmUo
ZmV0Y2hSZXN1bHQpKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6
OmxhdW5jaFNoYXJlZFdvcmtlcihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uJiBjb250ZXh0Q29ubmVjdGlvbiwgU2hhcmVkV29ya2VyJiBzaGFyZWRXb3JrZXIpCit7Cisg
ICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpsYXVu
Y2hTaGFyZWRXb3JrZXI6IGNvbnRleHRDb25uZWN0aW9uPSVwLCBzaGFyZWRXb3JrZXJJZGVudGlm
aWVyPSUiIFBSSXU2NCwgJmNvbnRleHRDb25uZWN0aW9uLCBzaGFyZWRXb3JrZXIuaWRlbnRpZmll
ci50b1VJbnQ2NCgpKTsKKyAgICBjb250ZXh0Q29ubmVjdGlvbi5sYXVuY2hTaGFyZWRXb3JrZXIo
c2hhcmVkV29ya2VyLm9yaWdpbiwgc2hhcmVkV29ya2VyLmlkZW50aWZpZXIsIHNoYXJlZFdvcmtl
ci51cmwsIHNoYXJlZFdvcmtlci53b3JrZXJPcHRpb25zLCBzaGFyZWRXb3JrZXIuZmV0Y2hSZXN1
bHQpOworICAgIHNoYXJlZFdvcmtlci5pc1J1bm5pbmcgPSB0cnVlOworICAgIGF1dG8gc291cmNl
T3JpZ2luID0gc2hhcmVkV29ya2VyLm9yaWdpbi5jbGllbnRPcmlnaW4udG9TdHJpbmcoKTsKKyAg
ICBmb3IgKGF1dG8mIHBvcnQgOiBzaGFyZWRXb3JrZXIuc2hhcmVkV29ya2VyT2JqZWN0cy52YWx1
ZXMoKSkKKyAgICAgICAgcG9zdENvbm5lY3RFdmVudChjb250ZXh0Q29ubmVjdGlvbiwgc2hhcmVk
V29ya2VyLmlkZW50aWZpZXIsIHBvcnQsIHNvdXJjZU9yaWdpbik7Cit9CisKK3ZvaWQgV2ViU2hh
cmVkV29ya2VyU2VydmVyOjpwb3N0Q29ubmVjdEV2ZW50KFdlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uLCBXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlRyYW5z
ZmVycmVkTWVzc2FnZVBvcnQmIHNvdXJjZVBvcnQsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2lu
KQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZl
cjo6cG9zdENvbm5lY3RFdmVudDogY29udGV4dENvbm5lY3Rpb249JXAsIHNoYXJlZFdvcmtlcklk
ZW50aWZpZXI9JSIgUFJJdTY0LCAmY29udGV4dENvbm5lY3Rpb24sIHNoYXJlZFdvcmtlcklkZW50
aWZpZXIudG9VSW50NjQoKSk7CisgICAgY29udGV4dENvbm5lY3Rpb24ucG9zdENvbm5lY3RFdmVu
dChzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBzb3VyY2VQb3J0LCBzb3VyY2VPcmlnaW4pOworfQor
Cit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6ZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRXb3Jr
ZXJTY3JpcHQoU2hhcmVkV29ya2VyJiB3b3JrZXIsIFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0
JiYgZmV0Y2hSZXN1bHQpCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hh
cmVkV29ya2VyU2VydmVyOjpkaWRGaW5pc2hGZXRjaGluZ1NoYXJlZFdvcmtlclNjcmlwdCBzaGFy
ZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCAiLCB3b3JrZXI9JXAsIHN1Y2Nlc3M9JWQiLCB3
b3JrZXIuaWRlbnRpZmllci50b1VJbnQ2NCgpLCAmd29ya2VyLCBmZXRjaFJlc3VsdC5lcnJvci5p
c051bGwoKSk7CisgICAgaWYgKCFmZXRjaFJlc3VsdC5lcnJvci5pc051bGwoKSkgeworICAgICAg
ICAvLyBGZXRjaCBmYWlsZWQsIG5vdGlmeSB0aGUgU2hhcmVkV29ya2VyIG9iamVjdHMuCisgICAg
ICAgIGZvciAoYXV0byBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIDogd29ya2VyLnNoYXJl
ZFdvcmtlck9iamVjdHMua2V5cygpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogc2VydmVyQ29u
bmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIu
cHJvY2Vzc0lkZW50aWZpZXIoKSkpCisgICAgICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlvbi0+
bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkRmFpbHVyZShzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyKTsKKyAgICAgICAgfQorICAgICAgICBtX3NoYXJlZFdvcmtlcnMucmVtb3ZlKHdvcmtlci5r
ZXkoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3b3JrZXIuZmV0Y2hSZXN1bHQg
PSBXVEZNb3ZlKGZldGNoUmVzdWx0KTsKKworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSB3
b3JrZXIucmVnaXN0cmFibGVEb21haW4oKTsKKyAgICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9
IGNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4p
OworICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAgICAgY3JlYXRlQ29udGV4dENv
bm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4pOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgbGF1bmNoU2hhcmVkV29ya2VyKCpjb250ZXh0Q29ubmVjdGlvbiwgd29ya2VyKTsKK30KKwor
Ym9vbCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6Om5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdp
c3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFi
bGVEb21haW4pIGNvbnN0Cit7CisgICAgZm9yIChhdXRvJiBzaGFyZWRXb3JrZXIgOiBtX3NoYXJl
ZFdvcmtlcnMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHJlZ2lzdHJhYmxlRG9tYWluLm1hdGNo
ZXMoc2hhcmVkV29ya2VyLT51cmwpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNyZWF0
ZUNvbnRleHRDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdp
c3RyYWJsZURvbWFpbikKK3sKKyAgICBBU1NFUlQoIW1fY29udGV4dENvbm5lY3Rpb25zLmNvbnRh
aW5zKHJlZ2lzdHJhYmxlRG9tYWluKSk7CisgICAgaWYgKG1fcGVuZGluZ0NvbnRleHRDb25uZWN0
aW9uRG9tYWlucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgIHJldHVybjsK
KworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6
Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24gd2lsbCBjcmVhdGUgYSBjb25uZWN0aW9uIik7CisKKyAg
ICBtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnMuYWRkKHJlZ2lzdHJhYmxlRG9tYWlu
KTsKKyAgICBtX3Nlc3Npb24ubmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVz
dGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHJl
Z2lzdHJhYmxlRG9tYWluLCBtX3Nlc3Npb24uc2Vzc2lvbklEKCkgfSwgW3RoaXMsIHdlYWtUaGlz
ID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlZ2lzdHJhYmxlRG9tYWluXSB7CisgICAgICAgIGlmICgh
d2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgUkVMRUFTRV9MT0coU2hh
cmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlv
biBzaG91bGQgbm93IGhhdmUgY3JlYXRlZCBhIGNvbm5lY3Rpb24iKTsKKworICAgICAgICBBU1NF
UlQobV9wZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5zLmNvbnRhaW5zKHJlZ2lzdHJhYmxl
RG9tYWluKSk7CisgICAgICAgIG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWlucy5yZW1v
dmUocmVnaXN0cmFibGVEb21haW4pOworCisgICAgICAgIGlmIChtX2NvbnRleHRDb25uZWN0aW9u
cy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgaWYgKG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdp
c3RyYWJsZURvbWFpbikpCisgICAgICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdp
c3RyYWJsZURvbWFpbik7CisgICAgfSwgMCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyOjphZGRDb250ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbikKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRX
b3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmFkZENvbnRleHRDb25uZWN0aW9uKCVwKSB3
ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQsICZjb250ZXh0Q29ubmVjdGlvbiwgY29udGV4
dENvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKworICAgIEFT
U0VSVCghbV9jb250ZXh0Q29ubmVjdGlvbnMuY29udGFpbnMoY29udGV4dENvbm5lY3Rpb24ucmVn
aXN0cmFibGVEb21haW4oKSkpOworCisgICAgbV9jb250ZXh0Q29ubmVjdGlvbnMuYWRkKGNvbnRl
eHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCksICZjb250ZXh0Q29ubmVjdGlvbik7CisK
KyAgICBjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoY29udGV4dENvbm5lY3Rpb24pOworfQorCit2
b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24pCit7
CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpy
ZW1vdmVDb250ZXh0Q29ubmVjdGlvbiglcCkgd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0
LCAmY29udGV4dENvbm5lY3Rpb24sIGNvbnRleHRDb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlm
aWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gY29udGV4
dENvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKTsKKworICAgIEFTU0VSVChtX2NvbnRleHRD
b25uZWN0aW9ucy5nZXQocmVnaXN0cmFibGVEb21haW4pID09ICZjb250ZXh0Q29ubmVjdGlvbik7
CisKKyAgICBtX2NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUocmVnaXN0cmFibGVEb21haW4pOwor
CisgICAgaWYgKG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdp
c3RyYWJsZURvbWFpbikpCisgICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJh
YmxlRG9tYWluKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNvbnRleHRDb25u
ZWN0aW9uQ3JlYXRlZChXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBj
b250ZXh0Q29ubmVjdGlvbikKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZCglcCkgd2ViUHJvY2Vz
c0lkZW50aWZpZXI9JSIgUFJJdTY0LCAmY29udGV4dENvbm5lY3Rpb24sIGNvbnRleHRDb25uZWN0
aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgYXV0byYgcmVnaXN0
cmFibGVEb21haW4gPSBjb250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpOworICAg
IGZvciAoYXV0byYgd29ya2VyIDogbV9zaGFyZWRXb3JrZXJzLnZhbHVlcygpKSB7CisgICAgICAg
IGlmICh3b3JrZXItPmRpZEZpbmlzaEZldGNoaW5nKCkgJiYgcmVnaXN0cmFibGVEb21haW4ubWF0
Y2hlcyh3b3JrZXItPnVybCkpCisgICAgICAgICAgICBsYXVuY2hTaGFyZWRXb3JrZXIoY29udGV4
dENvbm5lY3Rpb24sICp3b3JrZXIpOworICAgIH0KK30KKworYXV0byBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXI6OnNoYXJlZFdvcmtlckJ5SWRlbnRpZmllcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVu
dGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIpIC0+IFNoYXJlZFdvcmtlcioKK3sKKyAgICBm
b3IgKGF1dG8mIHdvcmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBp
ZiAod29ya2VyLT5pZGVudGlmaWVyID09IHNoYXJlZFdvcmtlcklkZW50aWZpZXIpCisgICAgICAg
ICAgICByZXR1cm4gd29ya2VyLmdldCgpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KworYXV0byBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNoYXJlZFdvcmtlckJ5T2JqZWN0SWRlbnRp
ZmllcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIpIC0+IFNoYXJlZFdvcmtlcioKK3sKKyAgICBmb3IgKGF1dG8mIHdvcmtl
ciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAod29ya2VyLT5zaGFy
ZWRXb3JrZXJPYmplY3RzLmNvbnRhaW5zKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpKQor
ICAgICAgICAgICAgcmV0dXJuIHdvcmtlci5nZXQoKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaGFyZWRXb3JrZXJPYmplY3RJ
c0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIpCit7CisgICAgYXV0byogd29ya2VyID0gc2hhcmVkV29ya2Vy
QnlPYmplY3RJZGVudGlmaWVyKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIFJF
TEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hhcmVkV29y
a2VyT2JqZWN0SXNHb2luZ0F3YXk6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJs
aWN9cywgd29ya2VyPSVwIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygp
LnV0ZjgoKS5kYXRhKCksIHdvcmtlcik7CisgICAgaWYgKCF3b3JrZXIpCisgICAgICAgIHJldHVy
bjsKKworICAgIHdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5yZW1vdmUoc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllcik7CisgICAgaWYgKCF3b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzaHV0RG93blNoYXJlZFdvcmtlcih3
b3JrZXItPmtleSgpKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNodXREb3du
U2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYga2V5KQoreworICAg
IGF1dG8gd29ya2VyID0gbV9zaGFyZWRXb3JrZXJzLnRha2Uoa2V5KTsKKyAgICBSRUxFQVNFX0xP
RyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNodXREb3duU2hhcmVkV29y
a2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCAiLCB3b3JrZXI9JXAiLCB3b3Jr
ZXIgPyB3b3JrZXItPmlkZW50aWZpZXIudG9VSW50NjQoKSA6IDAsIHdvcmtlci5nZXQoKSk7Cisg
ICAgaWYgKCF3b3JrZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIGNvbnRleHRDb25u
ZWN0aW9uID0gY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbih3b3JrZXItPnJl
Z2lzdHJhYmxlRG9tYWluKCkpOworICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pCisgICAgICAg
IHJldHVybjsKKworICAgIGNvbnRleHRDb25uZWN0aW9uLT50ZXJtaW5hdGVTaGFyZWRXb3JrZXIo
d29ya2VyLT5pZGVudGlmaWVyKTsKKworICAgIGlmICghbmVlZHNDb250ZXh0Q29ubmVjdGlvbkZv
clJlZ2lzdHJhYmxlRG9tYWluKHdvcmtlci0+cmVnaXN0cmFibGVEb21haW4oKSkpCisgICAgICAg
IGNvbnRleHRDb25uZWN0aW9uLT5jb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOworfQorCit2
b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29ubmVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQoreworICAgIGF1
dG8gcHJvY2Vzc0lkZW50aWZpZXIgPSBjb25uZWN0aW9uLT53ZWJQcm9jZXNzSWRlbnRpZmllcigp
OworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6
YWRkQ29ubmVjdGlvbiglcCk6IHByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgY29ubmVjdGlv
bi5nZXQoKSwgcHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgQVNTRVJUKCFtX2Nv
bm5lY3Rpb25zLmNvbnRhaW5zKHByb2Nlc3NJZGVudGlmaWVyKSk7CisgICAgbV9jb25uZWN0aW9u
cy5hZGQocHJvY2Vzc0lkZW50aWZpZXIsIFdURk1vdmUoY29ubmVjdGlvbikpOworfQorCit2b2lk
IFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlvbihXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBt
X2Nvbm5lY3Rpb25zLnRha2UocHJvY2Vzc0lkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HKFNo
YXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlvbiglcCk6
IHByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgY29ubmVjdGlvbi5nZXQoKSwgcHJvY2Vzc0lk
ZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgQVNTRVJUKGNvbm5lY3Rpb24pOworCisgICAgVmVj
dG9yPFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI+IHNoYXJlZFdvcmtlck9i
amVjdHNHb2luZ0F3YXk7CisgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3NoYXJlZFdvcmtlcnMu
dmFsdWVzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyIDogd29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzLmtleXMoKSkgeworICAgICAgICAgICAg
aWYgKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBw
cm9jZXNzSWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICBzaGFyZWRXb3JrZXJPYmplY3RzR29p
bmdBd2F5LmFwcGVuZChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBmb3IgKGF1dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA6IHNoYXJl
ZFdvcmtlck9iamVjdHNHb2luZ0F3YXkpCisgICAgICAgIHNoYXJlZFdvcmtlck9iamVjdElzR29p
bmdBd2F5KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworfQorCitXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXI6OlNoYXJlZFdvcmtlcjo6U2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYgb3JpZ2luLCBjb25zdCBVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0
aW9ucyYgd29ya2VyT3B0aW9ucykKKyAgICA6IGlkZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29y
a2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKKyAgICAsIG9yaWdpbihvcmlnaW4pCisgICAgLCB1
cmwodXJsKQorICAgICwgd29ya2VyT3B0aW9ucyh3b3JrZXJPcHRpb25zKQoreworfQorCit2b2lk
IFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNv
cmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBhdXRvKiB3b3JrZXIgPSBzaGFyZWRXb3Jr
ZXJCeUlkZW50aWZpZXIoc2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0df
RVJST1IoU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpwb3N0RXhjZXB0aW9u
VG9Xb3JrZXJPYmplY3Q6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHdvcmtl
cj0lcCIsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSwgd29ya2VyKTsKKyAgICBp
ZiAoIXdvcmtlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvIHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIgOiB3b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMua2V5cygpKSB7
CisgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQo
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkKKyAgICAg
ICAgICAgIHNlcnZlckNvbm5lY3Rpb24tPnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlciwgc291cmNlVVJMKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJl
ZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLmM4MzFlMGE0MmFiNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5o
CkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3Ry
YWJsZURvbWFpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcktleS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2Vy
RmV0Y2hSZXN1bHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlck9wdGlvbnMuaD4KKyNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgQ2xpZW50
T3JpZ2luOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya1Nlc3Npb247
CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOworY2xhc3MgV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKKworY2xhc3MgV2ViU2hhcmVkV29ya2Vy
U2VydmVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlcj4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYlNo
YXJlZFdvcmtlclNlcnZlcihOZXR3b3JrU2Vzc2lvbiYpOworICAgIH5XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXIoKTsKKworICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpOworCisgICAgdm9pZCBy
ZXF1ZXN0U2hhcmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNz
YWdlUG9ydCYmLCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYpOworICAgIHZvaWQgc2hhcmVkV29y
a2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
cik7CisKKyAgICB2b2lkIGFkZENvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24mKTsKKyAgICB2b2lkIHJlbW92ZUNvbnRleHRDb25uZWN0aW9u
KFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKKworICAgIHZvaWQg
YWRkQ29ubmVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbj4mJik7CisgICAgdm9pZCByZW1vdmVDb25uZWN0aW9uKFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyKTsKKworICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24q
IGNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mIGRvbWFpbikgeyByZXR1cm4gbV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0
KGRvbWFpbik7IH0KKworICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNv
cmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwp
OworCitwcml2YXRlOgorICAgIHZvaWQgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKKworICAgIGJvb2wgbmVlZHNDb250ZXh0Q29ubmVj
dGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JikgY29uc3Q7CisgICAgdm9pZCBjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOworCisgICAgc3RydWN0IFNoYXJlZFdvcmtl
ciA6IENhbk1ha2VXZWFrUHRyPFNoYXJlZFdvcmtlcj4geworICAgICAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURUQ7CisKKyAgICAgICAgU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMm
KTsKKworICAgICAgICBib29sIGRpZEZpbmlzaEZldGNoaW5nKCkgY29uc3QgeyByZXR1cm4gISFm
ZXRjaFJlc3VsdC5zY3JpcHQ7IH0KKyAgICAgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5IGtl
eSgpIGNvbnN0IHsgcmV0dXJuIHsgb3JpZ2luLCB1cmwsIHdvcmtlck9wdGlvbnMubmFtZSB9OyB9
CisgICAgICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKCkg
Y29uc3QgeyByZXR1cm4gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfTsgfQorCisg
ICAgICAgIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICAg
ICAgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbjsKKyAgICAgICAgVVJMIHVybDsKKyAgICAg
ICAgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyB3b3JrZXJPcHRpb25zOworICAgICAgICBIYXNoTWFw
PFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVy
cmVkTWVzc2FnZVBvcnQ+IHNoYXJlZFdvcmtlck9iamVjdHM7CisgICAgICAgIFdlYkNvcmU6Oldv
cmtlckZldGNoUmVzdWx0IGZldGNoUmVzdWx0OworICAgICAgICBib29sIGlzUnVubmluZyB7IGZh
bHNlIH07CisgICAgfTsKKworICAgIFNoYXJlZFdvcmtlciogc2hhcmVkV29ya2VyQnlJZGVudGlm
aWVyKFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworICAgIFNoYXJlZFdvcmtlciog
c2hhcmVkV29ya2VyQnlPYmplY3RJZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIpOworICAgIHZvaWQgZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRXb3JrZXJTY3Jp
cHQoU2hhcmVkV29ya2VyJiwgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJik7CisgICAgdm9p
ZCBsYXVuY2hTaGFyZWRXb3JrZXIoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbiYsIFNoYXJlZFdvcmtlciYpOworICAgIHZvaWQgcG9zdENvbm5lY3RFdmVudChXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiwgV2ViQ29yZTo6U2hhcmVkV29ya2Vy
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYsIGNvbnN0
IFN0cmluZyYgc291cmNlT3JpZ2luKTsKKyAgICB2b2lkIHNodXREb3duU2hhcmVkV29ya2VyKGNv
bnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYpOworCisgICAgTmV0d29ya1Nlc3Npb24mIG1f
c2Vzc2lvbjsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBzdGQ6OnVu
aXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4+IG1fY29ubmVjdGlvbnM7
CisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbio+IG1fY29udGV4dENvbm5lY3Rpb25zOworICAgIEhh
c2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fcGVuZGluZ0NvbnRleHRDb25uZWN0
aW9uRG9tYWluczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSwgc3RkOjp1
bmlxdWVfcHRyPFNoYXJlZFdvcmtlcj4+IG1fc2hhcmVkV29ya2VyczsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
aGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjNj
ZjYxMGI2YmI4YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0w
LDAgKzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUg
Ik5ldHdvcmtQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Xb3JrZXJGZXRjaFJlc3VsdC5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZt
dCwgLi4uKSBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRp
Zmllcj0lIiBQUkl1NjQgIl0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6IiBmbXQs
IHRoaXMsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykK
KyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9M
T0dfRVJST1IoU2hhcmVkV29ya2VyLCAiJXAgLSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJ
dTY0ICJdIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OiIgZm10LCB0aGlzLCBtX3dl
YlByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCksICMjX19WQV9BUkdTX18pCisKK1dlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24o
TmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNl
cnZlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllcikKKyAgICA6IG1fY29udGVudENvbm5lY3Rpb24oY29u
bmVjdGlvbikKKyAgICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCisgICAgLCBt
X3NlcnZlcihzZXJ2ZXIpCisgICAgLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKHdlYlByb2Nlc3NJ
ZGVudGlmaWVyKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coIldlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb246Iik7Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b246On5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9O
X1JFTEVBU0VfTE9HKCJ+V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjoiKTsKK30KKwor
SVBDOjpDb25uZWN0aW9uKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjptZXNzYWdl
U2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGVudENvbm5lY3Rp
b24ucHRyKCk7Cit9CisKK1BBTDo6U2Vzc2lvbklEIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb246OnNlc3Npb25JRCgpCit7CisgICAgcmV0dXJuIHNlcnZlcigpLnNlc3Npb25JRCgpOwor
fQorCitOZXR3b3JrU2Vzc2lvbiogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2Vz
c2lvbigpCit7CisgICAgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCgpKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpy
ZXF1ZXN0U2hhcmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgV2ViQ29y
ZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyLCBVUkwmJiB1cmwsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBX
ZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucykKK3sKKyAgICBBU1NFUlQoc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fd2ViUHJv
Y2Vzc0lkZW50aWZpZXIpOyAvLyBGSVhNRTogU2hvdWxkIGJlIGEgTUVTU0FHRV9DSEVDSygpLgor
ICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coInJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9
IHRoaXMtPnNlc3Npb24oKSkKKyAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU2hhcmVkV29ya2VyU2Vy
dmVyKCkucmVxdWVzdFNoYXJlZFdvcmtlcihXVEZNb3ZlKG9yaWdpbiksIHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIsIFdURk1vdmUodXJsKSwgV1RGTW92ZShwb3J0KSwgV1RGTW92ZSh3b3Jr
ZXJPcHRpb25zKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6
ZmV0Y2hTY3JpcHRJbkNsaWVudChjb25zdCBVUkwmIHVybCwgV2ViQ29yZTo6U2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coImZldGNoU2NyaXB0SW5DbGllbnQ6IHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OkZldGNoU2NyaXB0SW5D
bGllbnQgeyB1cmwsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHdvcmtlck9wdGlvbnMg
fSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb246Om5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZhaWx1cmUoV2ViQ29y
ZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IoIm5vdGlmeVdvcmtlck9i
amVjdE9mTG9hZEZhaWx1cmU6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9
cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpO
b3RpZnlXb3JrZXJPYmplY3RPZkxvYWRGYWlsdXJlIHsgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0
RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IoInBvc3RFeGNlcHRp
b25Ub1dvcmtlck9iamVjdDogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31z
Iiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OlBv
c3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdCB7IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIs
IGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwgfSk7Cit9
CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2hhcmVkV29ya2VyT2Jq
ZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQoreworICAgIEFTU0VSVChzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmll
cik7IC8vIEZJWE1FOiBTaG91bGQgYmUgYSBNRVNTQUdFX0NIRUNLKCkuCisgICAgQ09OTkVDVElP
Tl9SRUxFQVNFX0xPRygic2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXk6IHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHRo
aXMtPnNlc3Npb24oKSkKKyAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVy
KCkuc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllcik7Cit9CisKKyN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HCisjdW5kZWYgQ09OTkVD
VElPTl9SRUxFQVNFX0xPR19FUlJPUgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hh
cmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmM2ODQ5YWIwMmVhYQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb24uaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNz
YWdlU2VuZGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7CitzdHJ1Y3QgV29ya2VyT3B0
aW9uczsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtQcm9jZXNzOwor
Y2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbiA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbihOZXR3b3JrUHJvY2VzcyYsIFdlYlNoYXJlZFdvcmtl
clNlcnZlciYsIElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsK
KyAgICB+V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpOworCisgICAgV2ViU2hhcmVk
V29ya2VyU2VydmVyJiBzZXJ2ZXIoKSB7IHJldHVybiBtX3NlcnZlcjsgfQorICAgIGNvbnN0IFdl
YlNoYXJlZFdvcmtlclNlcnZlciYgc2VydmVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXI7IH0K
KworICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpOworICAgIE5ldHdvcmtTZXNzaW9uKiBz
ZXNzaW9uKCk7CisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOyB9CisKKyAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZp
bmFsOworCisgICAgdm9pZCBmZXRjaFNjcmlwdEluQ2xpZW50KGNvbnN0IFVSTCYsIFdlYkNvcmU6
OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlv
bnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYp
PiYmKTsKKyAgICB2b2lkIG5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZhaWx1cmUoV2ViQ29yZTo6
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9X
b3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDOjpNZXNzYWdl
U2VuZGVyLgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBj
b25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KKworICAgIC8vIElQQyBtZXNzYWdlcy4KKyAgICB2b2lk
IHJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFdlYkNvcmU6OlNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1l
c3NhZ2VQb3J0JiYsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJik7CisgICAgdm9pZCBzaGFyZWRX
b3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyKTsKKworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29udGVudENvbm5lY3Rpb247Cisg
ICAgUmVmPE5ldHdvcmtQcm9jZXNzPiBtX25ldHdvcmtQcm9jZXNzOworICAgIFdlYlNoYXJlZFdv
cmtlclNlcnZlciYgbV9zZXJ2ZXI7CisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV93
ZWJQcm9jZXNzSWRlbnRpZmllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mYWU0YTA4
MDM3NzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1No
YXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBA
IC0wLDAgKzEsMjYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
bWVzc2FnZXMgLT4gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbiBOb3RSZWZDb3VudGVk
IHsKKyAgICBSZXF1ZXN0U2hhcmVkV29ya2VyKHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4g
b3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIsIFVSTCB1cmwsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBv
cnQgcG9ydCwgc3RydWN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMgd29ya2VyT3B0aW9ucykKKyAg
ICBTaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDljMTEyNDE1
MjE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFy
ZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAg
LTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgorCisjaW5jbHVk
ZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgi
CisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKKyNkZWZpbmUgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4u
KSBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0l
IiBQUkl1NjQgIl0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6IiBm
bXQsIHRoaXMsIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1Nf
XykKKworV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lz
dHJhYmxlRG9tYWluLCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlcikKKyAgICA6IG1fY29u
bmVjdGlvbihjb25uZWN0aW9uKQorICAgICwgbV9zZXJ2ZXIoc2VydmVyKQorICAgICwgbV9yZWdp
c3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJ
T05fUkVMRUFTRV9MT0coIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
Iik7CisgICAgc2VydmVyLmFkZENvbnRleHRDb25uZWN0aW9uKCp0aGlzKTsKK30KKworV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24oKQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNF
X0xPRygifldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Iik7CisgICAg
aWYgKG1fc2VydmVyICYmIG1fc2VydmVyLT5jb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxl
RG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKCkpID09IHRoaXMpCisgICAgICAgIG1fc2VydmVyLT5y
ZW1vdmVDb250ZXh0Q29ubmVjdGlvbigqdGhpcyk7Cit9CisKK1dlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OndlYlByb2Nl
c3NJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLndlYlByb2Nl
c3NJZGVudGlmaWVyKCk7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiYgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6aXBjQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCk7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiogV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiAmaXBjQ29ubmVjdGlvbigpOworfQorCit1aW50
NjRfdCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlU2Vu
ZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbklzTm9Mb25n
ZXJOZWVkZWQoKQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiY29ubmVj
dGlvbklzTm9Mb25nZXJOZWVkZWQ6Iik7CisgICAgbV9jb25uZWN0aW9uLnNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7Cit9CisKK3ZvaWQgV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29y
a2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBDT05URVhUX0NP
Tk5FQ1RJT05fUkVMRUFTRV9MT0coInBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdDogc2hhcmVk
V29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50
NjQoKSk7CisgICAgaWYgKG1fc2VydmVyKQorICAgICAgICBtX3NlcnZlci0+cG9zdEV4Y2VwdGlv
blRvV29ya2VyT2JqZWN0KHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGVycm9yTWVzc2FnZSwgbGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwpOworfQorCit2b2lkIFdlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmxhdW5jaFNoYXJlZFdvcmtlcihjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRp
ZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwgY29uc3QgV2ViQ29y
ZTo6V29ya2VyT3B0aW9ucyYgd29ya2VyT3B0aW9ucywgY29uc3QgV2ViQ29yZTo6V29ya2VyRmV0
Y2hSZXN1bHQmIGZldGNoUmVzdWx0KQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNF
X0xPRygibGF1bmNoU2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2
NCwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkxhdW5jaFNoYXJlZFdv
cmtlciB7IG9yaWdpbiwgc2hhcmVkV29ya2VySWRlbnRpZmllciwgdXJsLCB3b3JrZXJPcHRpb25z
LCBmZXRjaFJlc3VsdCB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpwb3N0Q29ubmVjdEV2ZW50KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50
aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRN
ZXNzYWdlUG9ydCYgcG9ydCwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit7CisgICAgQ09O
VEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJwb3N0Q29ubmVjdEV2ZW50OiBzaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OlBvc3RDb25uZWN0RXZlbnQgeyBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBwb3J0LCBz
b3VyY2VPcmlnaW4gfSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6dGVybWluYXRlU2hhcmVkV29ya2VyKFdlYkNvcmU6OlNoYXJlZFdvcmtlcklk
ZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJ
T05fUkVMRUFTRV9MT0coInRlcm1pbmF0ZVNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRp
Zmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpU
ZXJtaW5hdGVTaGFyZWRXb3JrZXIgeyBzaGFyZWRXb3JrZXJJZGVudGlmaWVyIH0pOworfQorCisj
dW5kZWYgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HCisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uZjA3ZmYwM2EzM2Q0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNp
bmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21h
aW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVnaXN0cmFibGVEb21haW47CitjbGFzcyBTY3JpcHRC
dWZmZXI7CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0Owor
c3RydWN0IFdvcmtlck9wdGlvbnM7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZl
cjsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBmaW5h
bCA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2ViU2hhcmVkV29ya2Vy
U2VydmVyJik7CisgICAgfldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24o
KTsKKworICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVy
KCkgY29uc3Q7CisgICAgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJh
YmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQorICAgIElQ
Qzo6Q29ubmVjdGlvbiYgaXBjQ29ubmVjdGlvbigpIGNvbnN0OworCisgICAgdm9pZCBsYXVuY2hT
aGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgV2ViQ29yZTo6U2hhcmVk
V29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9u
cyYsIGNvbnN0IFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0Jik7CisgICAgdm9pZCBwb3N0Q29u
bmVjdEV2ZW50KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7Cisg
ICAgdm9pZCB0ZXJtaW5hdGVTaGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRp
Zmllcik7CisKKyAgICB2b2lkIGNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7CisKKyAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZp
bmFsOworCitwcml2YXRlOgorICAgIC8vIElQQyBtZXNzYWdlcy4KKyAgICB2b2lkIHBvc3RFeGNl
cHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlci4K
KyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmlu
YWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5h
bDsKKworICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2Nvbm5lY3Rpb247Cisg
ICAgV2Vha1B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI+IG1fc2VydmVyOworICAgIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIG1fcmVnaXN0cmFibGVEb21haW47Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hh
cmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWU0N2MxMjJjYmFjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI1
IEBACisjIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+
IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7
CisgICAgUG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklk
ZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgU3RyaW5nIGVycm9yTWVzc2FnZSwgaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFN0cmluZyBzb3VyY2VVUkwpCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDFjNDJkMDQwYzFhOS4uZGUzMmY4MTcxNzE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0xvZ2dpbmcuaApAQCAtOTcsNiArOTcsNyBAQCBleHRlcm4gIkMiIHsKICAg
ICBNKFNlcnZpY2VXb3JrZXIpIFwKICAgICBNKFNlc3Npb25TdGF0ZSkgXAogICAgIE0oU2hhcmVk
RGlzcGxheUxpc3RzKSBcCisgICAgTShTaGFyZWRXb3JrZXIpIFwKICAgICBNKFN0b3JhZ2UpIFwK
ICAgICBNKFN0b3JhZ2VBUEkpIFwKICAgICBNKFRleHRJbnB1dCkgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggN2ViZmE1MTZiNTAzLi4xYTI2MWUwYjEwZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysr
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMzAzLDEwICsz
MDMsMTMgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAg
ICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXInLAogICAgICAg
ICAnV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXInLAogICAgICAg
ICAnV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCcsCisgICAgICAgICdXZWJDb3JlOjpTaGFyZWRX
b3JrZXJJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U2xlZXBEaXNhYmxlcklkZW50aWZpZXInLAog
ICAgICAgICAnV2ViQ29yZTo6U291cmNlQnVmZmVyQXBwZW5kTW9kZScsCiAgICAgICAgICdXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyJywKICAgICAg
ICAgJ1dlYkNvcmU6OlN0b3JhZ2VUeXBlJywKKyAgICAgICAgJ1dlYkNvcmU6OlRyYW5zZmVycmVk
TWVzc2FnZVBvcnQnLAogICAgICAgICAnV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdElkZW50aWZp
ZXInLAogICAgICAgICAnV2ViQ29yZTo6V2ViTG9ja0lkZW50aWZpZXInLAogICAgICAgICAnV2Vi
Q29yZTo6V2ViU29ja2V0SWRlbnRpZmllcicsCkBAIC04NTEsNiArODU0LDcgQEAgZGVmIGhlYWRl
cnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlJzog
Wyc8V2ViQ29yZS9UZXh0Q2hlY2tpbmcuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlRleHRJbmRp
Y2F0b3JEYXRhJzogWyc8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+J10sCiAgICAgICAgICdXZWJD
b3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlJzogWyc8V2ViQ29yZS9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uaD4nXSwKKyAgICAgICAgJ1dlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBv
cnQnOiBbJzxXZWJDb3JlL01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmg+J10sCiAgICAgICAgICdX
ZWJDb3JlOjpVc2VkTGVnYWN5VExTJzogWyc8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlQmFzZS5o
PiddLAogICAgICAgICAnV2ViQ29yZTo6VmlkZW9QcmVzZXREYXRhJzogWyc8V2ViQ29yZS9WaWRl
b1ByZXNldC5oPiddLAogICAgICAgICAnV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJzogWyc8
V2ViQ29yZS9WaWV3cG9ydEFyZ3VtZW50cy5oPiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggNGYwYTIzNTQ0
MWIyLi5kOWU2MGNlNzg5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQK
KysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMTQxLDYgKzE0MSwxMCBAQCBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuY3BwIEBuby11bmlmeQog
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIEBu
by11bmlmeQogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwIEBuby11bmlmeQogCitOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcAorTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwCitOZXR3b3JrUHJvY2Vzcy9TaGFyZWRX
b3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKwogTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuY3BwCiBOZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmNwcAogTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5LmNwcApAQCAtNzgzLDYg
Kzc4Nyw5IEBAIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5jcHAKIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV09yaWdpblRhYmxlLmNwcAogV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCiBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcAorV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKK1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcAorV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmNwcAogCiBXZWJQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKIApAQCAtODg1LDMgKzg5Miw3IEBAIFJl
bW90ZVdlYkxvY2tSZWdpc3RyeU1lc3NhZ2VSZWNlaXZlci5jcHAKIFNlcnZpY2VXb3JrZXJEb3du
bG9hZFRhc2tNZXNzYWdlUmVjZWl2ZXIuY3BwCiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnlN
ZXNzYWdlUmVjZWl2ZXIuY3BwCiBXZWJMb2NrUmVnaXN0cnlQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAKK1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZl
ci5jcHAKK1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3Bw
CitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCmluZGV4IGE2NzgzNjdhNzc1YS4uMzMwMjBiZDVjM2NkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHAKQEAgLTUyOSw3ICs1MjksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1p
bmF0ZVdlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvYwogdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0ZXJtaW5hdGVVbnJlc3BvbnNpdmVTZXJ2aWNlV29ya2VyUHJv
Y2Vzc2VzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQogewog
ICAgIGlmIChSZWZQdHIgcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50
aWZpZXIocHJvY2Vzc0lkZW50aWZpZXIpKSB7Ci0gICAgICAgIHByb2Nlc3MtPmRpc2FibGVTZXJ2
aWNlV29ya2VycygpOworICAgICAgICBwcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNz
UHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogICAgICAgICBwcm9jZXNzLT5yZXF1
ZXN0VGVybWluYXRpb24oUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpFeGNlZWRlZENQVUxpbWl0
KTsKICAgICB9CiB9CkBAIC0xNDE1LDE2ICsxNDE1LDIxIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6ZGlkRGVzdHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250
ZW50CiB9CiAjZW5kaWYKIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTaGFy
ZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
V2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2Vzc2lvbklELCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJs
ZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4g
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBXZWJQ
cm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcygqdGhpcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3Jr
ZXJQYWdlSWRlbnRpZmllciwgc2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisgICAgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllciwgc2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2VydmljZVdvcmtlckNvbnRleHRD
b25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRp
ZmllcikKIHsKICAgICBpZiAoYXV0byogcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vz
c0ZvcklkZW50aWZpZXIoaWRlbnRpZmllcikpCi0gICAgICAgIHByb2Nlc3MtPmRpc2FibGVTZXJ2
aWNlV29ya2VycygpOworICAgICAgICBwcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNz
UHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikKQEAgLTE0NjAsNiArMTQ2NSwx
MiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5k
UHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSQogfQogI2VuZGlmCiAKK3ZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6c2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvKiBw
cm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihpZGVudGlmaWVy
KSkKKyAgICAgICAgcHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3Jr
ZXJUeXBlOjpTaGFyZWRXb3JrZXIpOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJl
cXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBj
dXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBxdW90YSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgUkVMRUFTRV9MT0coU3RvcmFnZSwgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVx
dWVzdFN0b3JhZ2VTcGFjZSIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBhNGUzNjQ1ZWJhYWUuLjY4
NDFhMzRmZTA5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTMzNCw2ICszMzQsOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgc3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKICAgICB2b2lk
IGVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogI2VuZGlmCisgICAgdm9p
ZCBzaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyKTsKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQ
QUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQg
dGVybWluYXRlV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCAxMmQwNmNlYmQ2MmEuLjE1NzU3ZWQ5YTI1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNjAsNiArNjAsOCBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBTdGFydFNlcnZp
Y2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBz
ZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpCiAgICAgRW5kU2VydmljZVdvcmtlckJhY2tn
cm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzSWRlbnRpZmllcikKICNlbmRpZgorICAgIEVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBy
ZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwor
ICAgIFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikKIAogICAgIFNldFdlYlByb2Nlc3NIYXNVcGxv
YWRzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJRCwgYm9vbCBoYXNVcGxvYWQp
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGU0OTkzNWMz
MjVmNi4uMWFjYjM0NDRhZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTM2OTEsMTEgKzM2OTEsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlckFn
ZW50KFN0cmluZyYmIHVzZXJBZ2VudCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fdXNlckFnZW50
ID0gV1RGTW92ZSh1c2VyQWdlbnQpOwogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IC8vIFdlIHVwZGF0ZSB0aGUgc2VydmljZSB3b3JrZXIgdGhlcmUgYXQgdGhlIG1vbWVudCB0byBi
ZSBzdXJlIHdlIHVzZSB2YWx1ZXMgdXNlZCBieSBhY3R1YWwgd2ViIHBhZ2VzLgogICAgIC8vIEZJ
WE1FOiBSZWZhY3RvciB0aGlzIHdoZW4gd2UgaGF2ZSBhIGJldHRlciBVc2VyLUFnZW50IHN0b3J5
LgotICAgIHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnVwZGF0ZVNlcnZpY2VXb3JrZXJVc2VyQWdl
bnQobV91c2VyQWdlbnQpOwotI2VuZGlmCisgICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCkudXBk
YXRlV29ya2VyVXNlckFnZW50KG1fdXNlckFnZW50KTsKIAogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCmluZGV4IGFmYzIzZWU1M2YxMi4uNGIxOWIwZDFkM2MxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC01MjksNyArNTI5LDcgQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0V2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9j
ZXNzUHJveHkmIHdlYlByb2Nlc3NQcm8KIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6OnNfdXNlU2VwYXJh
dGVTZXJ2aWNlV29ya2VyUHJvY2VzcyA9IGZhbHNlOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiBwcm94eSwgUmVn
aXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTY3JpcHRF
eGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBy
ZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBhdXRvKiB3ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdE
YXRhU3RvcmVGb3JTZXNzaW9uSUQoc2Vzc2lvbklEKTsKICAgICBpZiAoIXdlYnNpdGVEYXRhU3Rv
cmUpCkBAIC01NDYsNyArNTQ2LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2Vy
dmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXQKICAgICBpZiAo
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgYSBzZXJ2
aWNlIHdvcmtlciBmb3IgYSBzZXJ2aWNlIHdvcmtlciBwYWdlIHNvIHdlIG5lZWQgdG8gbWFrZSBz
dXJlIHdlIHVzZSB1c2UgdGhlIHBhZ2UncyBXZWJQcm9jZXNzIGZvciB0aGUgc2VydmljZSB3b3Jr
ZXIuCiAgICAgICAgIGlmICgoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQ
cm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLT5w
cm9jZXNzSWRlbnRpZmllcigpKSkpIHsKLSAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHktPmVuYWJsZVNlcnZpY2VXb3JrZXJzKHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRy
b2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKSk7CisgICAgICAgICAgICBzZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2Vy
VHlwZTo6U2VydmljZVdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXJGb3JXb3JrZXJzKCkpOwogICAgICAgICAgICAgaWYgKHNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSkgewogICAgICAgICAgICAgICAgIHByb2Nlc3NQ
b29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5yZW1vdmVQcm9jZXNzKCpzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5LCBXZWJQcm9jZXNzQ2FjaGU6OlNob3VsZFNodXREb3duUHJvY2Vzczo6Tm8pOwogICAg
ICAgICAgICAgICAgIEFTU0VSVCghc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nl
c3NDYWNoZSgpKTsKQEAgLTU2NCw3ICs1NjQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3Rh
Ymxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldAog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5ID0gcHJvY2Vzcy5wdHIoKTsKLSAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHktPmVuYWJsZVNlcnZpY2VXb3JrZXJzKHByb2Nlc3NQb29sLT51c2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKSk7CisgICAgICAgICAgICBzZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29y
a2VyVHlwZTo6U2VydmljZVdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOwogCiAgICAgICAgICAgICBpZiAoc2VydmljZVdvcmtl
clByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKSB7CiAgICAgICAgICAgICAgICAgcHJv
Y2Vzc1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nlc3MoKnNlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHksIFdlYlByb2Nlc3NDYWNoZTo6U2hvdWxkU2h1dERvd25Qcm9jZXNzOjpObyk7
CkBAIC01NzcsNyArNTc3LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2Vydmlj
ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXQKICAgICB9CiAKICAg
ICBpZiAoIXNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpIHsKLSAgICAgICAgYXV0byBuZXdQcm9j
ZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKCpwcm9j
ZXNzUG9vbCwgUmVnaXN0cmFibGVEb21haW4gIHsgcmVnaXN0cmFibGVEb21haW4gfSwgKndlYnNp
dGVEYXRhU3RvcmUpOworICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQ
cm94eTo6Y3JlYXRlRm9yV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZp
Y2VXb3JrZXIsICpwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21haW4gIHsgcmVnaXN0cmFibGVE
b21haW4gfSwgKndlYnNpdGVEYXRhU3RvcmUpOwogICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5ID0gbmV3UHJvY2Vzc1Byb3h5LnB0cigpOwogCiAgICAgICAgIFdFQlBST0NFU1NQT09M
X1JFTEVBU0VfTE9HX1NUQVRJQyhTZXJ2aWNlV29ya2VyLCAiZXN0YWJsaXNoU2VydmljZVdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyBjcmVhdGluZyBhIG5ldyBzZXJ2aWNl
IHdvcmtlciBwcm9jZXNzIChwcm9jZXM9JXAsIFBJRD0lZCkiLCBzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5LCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsK
QEAgLTU4NiwyMCArNTg2LDcwIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZp
Y2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0CiAgICAgICAgIHBy
b2Nlc3NQb29sLT5tX3Byb2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdQcm9jZXNzUHJveHkpKTsK
ICAgICB9CiAKLSAgICBBU1NFUlQoIXNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb250YWlucygq
c2VydmljZVdvcmtlclByb2Nlc3NQcm94eSkpOwotICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMo
KS5hZGQoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpOworICAgIHdvcmtlclByb2Nlc3Nlcygp
LmFkZCgqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSk7CiAKLSAgICBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5LT5lc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChwcm9jZXNzUG9vbC0+bV9z
ZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyUHJl
ZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZl
cmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRl
bnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIGlmICghcHJvY2Vzc1Bv
b2wtPm1fc2VydmljZVdvcmtlclVzZXJBZ2VudC5pc051bGwoKSkKLSAgICAgICAgc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eS0+c2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+
bV9zZXJ2aWNlV29ya2VyVXNlckFnZW50KTsKKyAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
LT5lc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChwcm9jZXNzUG9vbC0+bV93b3JrZXJQcmVm
ZXJlbmNlcyA/IHByb2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBwcm9j
ZXNzUG9vbC0+bV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3JlKCksIHJlZ2lz
dHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICBpZiAoIXByb2Nlc3NQb29sLT5tX3dvcmtlclVzZXJBZ2VudC5p
c051bGwoKSkKKyAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+c2V0V29ya2VyVXNl
ckFnZW50KHByb2Nlc3NQb29sLT5tX3dvcmtlclVzZXJBZ2VudCk7CiB9CisjZW5kaWYKIAotdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViUHJv
Y2Vzc1Byb3h5JiBwcm9jZXNzKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlRnJvbVdvcmtl
clByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7Ci0gICAgQVNTRVJUKHNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMoKS5jb250YWlucyhwcm9jZXNzKSk7Ci0gICAgc2VydmljZVdvcmtl
clByb2Nlc3NlcygpLnJlbW92ZShwcm9jZXNzKTsKKyAgICBBU1NFUlQod29ya2VyUHJvY2Vzc2Vz
KCkuY29udGFpbnMocHJvY2VzcykpOworICAgIHdvcmtlclByb2Nlc3NlcygpLnJlbW92ZShwcm9j
ZXNzKTsKK30KKwordm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8qIHdlYnNp
dGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Np
b25JRChzZXNzaW9uSUQpOworICAgIGlmICghd2Vic2l0ZURhdGFTdG9yZSkKKyAgICAgICAgd2Vi
c2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS5wdHIo
KTsKKyAgICBpZiAoIXByb2Nlc3NQb29scygpLnNpemUoKSkKKyAgICAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJlZjxXZWJQcm9jZXNzUG9vbD4+IHNoYXJlZFdvcmtlclByb2Nlc3NQb29sKFdl
YlByb2Nlc3NQb29sOjpjcmVhdGUoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0
ZSgpLmdldCgpKSk7CisKKyAgICAvLyBBcmJpdHJhcmlseSBjaG9vc2UgdGhlIGZpcnN0IHByb2Nl
c3MgcG9vbCB0byBob3N0IHRoZSBzaGFyZWQgd29ya2VyIHByb2Nlc3MuCisgICAgYXV0byogcHJv
Y2Vzc1Bvb2wgPSBwcm9jZXNzUG9vbHMoKVswXTsKKyAgICBBU1NFUlQocHJvY2Vzc1Bvb2wpOwor
CisgICAgV2ViUHJvY2Vzc1Byb3h5KiBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkgeyBudWxscHRy
IH07CisKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBwcm9jZXNzUG9vbC0+bV9wcm9jZXNzZXMp
IHsKKyAgICAgICAgaWYgKHByb2Nlc3MucHRyKCkgPT0gcHJvY2Vzc1Bvb2wtPm1fcHJld2FybWVk
UHJvY2Vzcy5nZXQoKSB8fCBwcm9jZXNzLT5pc0R1bW15UHJvY2Vzc1Byb3h5KCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkg
IT0gd2Vic2l0ZURhdGFTdG9yZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAo
IXByb2Nlc3MtPmlzTWF0Y2hpbmdSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikp
CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJv
eHkgPSBwcm9jZXNzLnB0cigpOworICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmVu
YWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIsIHBy
b2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpKTsK
KworICAgICAgICBpZiAoc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hl
KCkpIHsKKyAgICAgICAgICAgIHByb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5yZW1vdmVQ
cm9jZXNzKCpzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NDYWNoZTo6U2hvdWxk
U2h1dERvd25Qcm9jZXNzOjpObyk7CisgICAgICAgICAgICBBU1NFUlQoIXNoYXJlZFdvcmtlclBy
b2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIFdF
QlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hT
aGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgcmV1c2luZyBhbiBl
eGlzdGluZyB3ZWIgcHJvY2VzcyAocHJvY2Vzcz0lcCwgUElEPSVkKSIsIHNoYXJlZFdvcmtlclBy
b2Nlc3NQcm94eSwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKCFzaGFyZWRXb3JrZXJQcm9jZXNz
UHJveHkpIHsKKyAgICAgICAgYXV0byBuZXdQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6
OmNyZWF0ZUZvcldvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTaGFyZWRXb3Jr
ZXIsICpwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21haW4gIHsgcmVnaXN0cmFibGVEb21haW4g
fSwgKndlYnNpdGVEYXRhU3RvcmUpOworICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkg
PSBuZXdQcm9jZXNzUHJveHkucHRyKCk7CisKKyAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFT
RV9MT0dfU1RBVElDKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyBjcmVhdGluZyBhIG5ldyBzZXJ2aWNlIHdvcmtlciBw
cm9jZXNzIChwcm9jZXNzPSVwLCBQSUQ9JWQpIiwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LCBz
aGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOworCisgICAgICAg
IHByb2Nlc3NQb29sLT5pbml0aWFsaXplTmV3V2ViUHJvY2VzcyhuZXdQcm9jZXNzUHJveHksIHdl
YnNpdGVEYXRhU3RvcmUpOworICAgICAgICBwcm9jZXNzUG9vbC0+bV9wcm9jZXNzZXMuYXBwZW5k
KFdURk1vdmUobmV3UHJvY2Vzc1Byb3h5KSk7CisgICAgfQorCisgICAgd29ya2VyUHJvY2Vzc2Vz
KCkuYWRkKCpzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkpOworCisgICAgc2hhcmVkV29ya2VyUHJv
Y2Vzc1Byb3h5LT5lc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0KHByb2Nlc3NQb29sLT5tX3dv
cmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5jZXMudmFsdWUo
KSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUo
KSwgcmVnaXN0cmFibGVEb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBp
ZiAoIXByb2Nlc3NQb29sLT5tX3dvcmtlclVzZXJBZ2VudC5pc051bGwoKSkKKyAgICAgICAgc2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRXb3JrZXJVc2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1f
d29ya2VyVXNlckFnZW50KTsKIH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp3aW5k
b3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCkKIHsKQEAgLTEwMDMsMTAgKzEwNTMsOCBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkm
IHByb2Nlc3MpCiAKICAgICBtX2JhY2tGb3J3YXJkQ2FjaGUtPnJlbW92ZUVudHJpZXNGb3JQcm9j
ZXNzKHByb2Nlc3MpOwogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmIChwcm9j
ZXNzLmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCi0gICAgICAgIHJlbW92ZUZyb21TZXJ2aWNl
V29ya2VyUHJvY2Vzc2VzKHByb2Nlc3MpOwotI2VuZGlmCisgICAgaWYgKHByb2Nlc3MuaXNSdW5u
aW5nV29ya2VycygpKQorICAgICAgICByZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKHByb2Nlc3Mp
OwogCiAgICAgc3RhdGljX2Nhc3Q8V2ViQ29udGV4dFN1cHBsZW1lbnQqPihzdXBwbGVtZW50PFdl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5PigpKS0+cHJvY2Vzc0RpZENsb3NlKCZwcm9jZXNzKTsK
IApAQCAtMTA2NywxMiArMTExNSwxMiBAQCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNz
UG9vbDo6cHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKFdlYnNpdGVEYXRhU3RvcgogfQogCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
ciBXZWJQcm9jZXNzUG9vbDo6dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvclNlcnZp
Y2VXb3JrZXJzKCkKK1VzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgV2ViUHJvY2Vzc1Bv
b2w6OnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkKIHsKLSAgICBp
ZiAoIW1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yU2VydmljZVdvcmtlcikKLSAgICAgICAgbV91
c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyID0gV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OmNyZWF0ZSgpOworICAgIGlmICghbV91c2VyQ29udGVudENvbnRyb2xsZXJG
b3JXb3JrZXJzKQorICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtlcnMgPSBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKCk7CiAKLSAgICByZXR1cm4gbV91
c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyLT5pZGVudGlmaWVyKCk7CisgICAg
cmV0dXJuIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2Vycy0+aWRlbnRpZmllcigpOwog
fQogI2VuZGlmCiAKQEAgLTExMTksMTUgKzExNjcsMTMgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2Vi
UHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQ
SToKIAogICAgIGF1dG8gcGFnZSA9IHByb2Nlc3MtPmNyZWF0ZVdlYlBhZ2UocGFnZUNsaWVudCwg
V1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQotICAgIGlmICghbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMpIHsKLSAgICAgICAgbV9zZXJ2
aWNlV29ya2VyUHJlZmVyZW5jZXMgPSBwYWdlLT5wcmVmZXJlbmNlc1N0b3JlKCk7Ci0gICAgICAg
IGZvciAoYXV0byYgc2VydmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
KCkpCi0gICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy51cGRhdGVTZXJ2aWNlV29ya2Vy
UHJlZmVyZW5jZXNTdG9yZSgqbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMpOworICAgIGlmICgh
bV93b3JrZXJQcmVmZXJlbmNlcykgeworICAgICAgICBtX3dvcmtlclByZWZlcmVuY2VzID0gcGFn
ZS0+cHJlZmVyZW5jZXNTdG9yZSgpOworICAgICAgICBmb3IgKGF1dG8mIHdvcmtlclByb2Nlc3Mg
OiB3b3JrZXJQcm9jZXNzZXMoKSkKKyAgICAgICAgICAgIHdvcmtlclByb2Nlc3MudXBkYXRlV29y
a2VyUHJlZmVyZW5jZXNTdG9yZSgqbV93b3JrZXJQcmVmZXJlbmNlcyk7CiAgICAgfQogICAgIGlm
ICh1c2VyQ29udGVudENvbnRyb2xsZXIpCi0gICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVy
Rm9yU2VydmljZVdvcmtlciA9IHVzZXJDb250ZW50Q29udHJvbGxlcjsKLSNlbmRpZgorICAgICAg
ICBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtlcnMgPSB1c2VyQ29udGVudENvbnRyb2xs
ZXI7CiAKICAgICBib29sIGVuYWJsZVByb2Nlc3NTd2FwT25Dcm9zc1NpdGVOYXZpZ2F0aW9uID0g
cGFnZS0+cHJlZmVyZW5jZXMoKS5wcm9jZXNzU3dhcE9uQ3Jvc3NTaXRlTmF2aWdhdGlvbkVuYWJs
ZWQoKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMTE1MCwxNiArMTE5NiwxNCBAQCBS
ZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50
JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogICAgIHJldHVybiBwYWdlOwogfQogCi0jaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQotdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlU2VydmljZVdvcmtl
clVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnVwZGF0ZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKIHsKLSAgICBp
ZiAobV9zZXJ2aWNlV29ya2VyVXNlckFnZW50ID09IHVzZXJBZ2VudCkKKyAgICBpZiAobV93b3Jr
ZXJVc2VyQWdlbnQgPT0gdXNlckFnZW50KQogICAgICAgICByZXR1cm47Ci0gICAgbV9zZXJ2aWNl
V29ya2VyVXNlckFnZW50ID0gdXNlckFnZW50OwotICAgIGZvciAoYXV0byYgc2VydmljZVdvcmtl
clByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkpCi0gICAgICAgIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzLnNldFNlcnZpY2VXb3JrZXJVc2VyQWdlbnQobV9zZXJ2aWNlV29ya2VyVXNlckFn
ZW50KTsKKyAgICBtX3dvcmtlclVzZXJBZ2VudCA9IHVzZXJBZ2VudDsKKyAgICBmb3IgKGF1dG8m
IHdvcmtlclByb2Nlc3MgOiB3b3JrZXJQcm9jZXNzZXMoKSkKKyAgICAgICAgd29ya2VyUHJvY2Vz
cy5zZXRXb3JrZXJVc2VyQWdlbnQobV93b3JrZXJVc2VyQWdlbnQpOwogfQotI2VuZGlmCiAKIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQogewpA
QCAtMTUzOCw4ICsxNTgyLDEzIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnRlcm1pbmF0ZVNlcnZp
Y2VXb3JrZXJzKCkKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgUmVmIHByb3Rl
Y3RlZFRoaXMgeyAqdGhpcyB9OwotICAgIHdoaWxlIChzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCku
Y29tcHV0ZVNpemUoKSkKLSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmJlZ2luKCkt
PmRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgIFZlY3RvcjxSZWY8V2ViUHJvY2Vzc1Byb3h5
Pj4gc2VydmljZVdvcmtlclByb2Nlc3NlczsKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNo
KFsmXShhdXRvJiBwcm9jZXNzKSB7CisgICAgICAgIGlmIChwcm9jZXNzLmlzUnVubmluZ1NlcnZp
Y2VXb3JrZXJzKCkpCisgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFwcGVuZChw
cm9jZXNzKTsKKyAgICB9KTsKKyAgICBmb3IgKGF1dG8mIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDog
c2VydmljZVdvcmtlclByb2Nlc3NlcykKKyAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3MtPmRp
c2FibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7
CiAjZW5kaWYKIH0KIApAQCAtMTc2NywxMyArMTgxNiwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpyZXBvcnRXZWJDb250ZW50Q1BVVGltZShTZWNvbmRzIGNwdVRpbWUsIHVpbnQ2NF90IGFjdGl2
aXR5UwogI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1XZWFrSGFzaFNl
dDxXZWJQcm9jZXNzUHJveHk+JiBXZWJQcm9jZXNzUG9vbDo6c2VydmljZVdvcmtlclByb2Nlc3Nl
cygpCitXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+JiBXZWJQcm9jZXNzUG9vbDo6d29ya2Vy
UHJvY2Vzc2VzKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V2Vha0hhc2hTZXQ8V2Vi
UHJvY2Vzc1Byb3h5Pj4gcHJvY2Vzc2VzOwogICAgIHJldHVybiBwcm9jZXNzZXM7CiB9Ci0jZW5k
aWYKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKQogewpA
QCAtMTc4NSwyMCArMTgzMiwyNSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNz
QXNzZXJ0aW9ucygpCiAgICAgaWYgKGF1dG8qIGdwdVByb2Nlc3MgPSBHUFVQcm9jZXNzUHJveHk6
OnNpbmdsZXRvbklmQ3JlYXRlZCgpKQogICAgICAgICBncHVQcm9jZXNzLT51cGRhdGVQcm9jZXNz
QXNzZXJ0aW9uKCk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKICAgICAv
LyBDaGVjayBvbiBuZXh0IHJ1biBsb29wIHNpbmNlIHRoZSB3ZWIgcHJvY2VzcyBwcm94eSB0b2tl
bnMgYXJlIHByb2JhYmx5IGJlaW5nIHVwZGF0ZWQuCiAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW10g
ewotICAgICAgICBmb3IgKGF1dG8mIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogc2VydmljZVdvcmtl
clByb2Nlc3NlcygpKQotICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3MudXBkYXRlU2Vy
dmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKLSAgICB9KTsKKyAgICAgICAgd29ya2VyUHJv
Y2Vzc2VzKCkuZm9yRWFjaChbXShhdXRvJiB3b3JrZXJQcm9jZXNzKSB7CisjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQorICAgICAgICAgICAgaWYgKHdvcmtlclByb2Nlc3MuaXNSdW5uaW5nU2Vy
dmljZVdvcmtlcnMoKSkKKyAgICAgICAgICAgICAgICB3b3JrZXJQcm9jZXNzLnVwZGF0ZVdvcmtl
clByb2Nlc3NBc3NlcnRpb24oV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29y
a2VyKTsKICNlbmRpZgorICAgICAgICAgICAgaWYgKHdvcmtlclByb2Nlc3MuaXNSdW5uaW5nU2hh
cmVkV29ya2VycygpKQorICAgICAgICAgICAgICAgIHdvcmtlclByb2Nlc3MudXBkYXRlV29ya2Vy
UHJvY2Vzc0Fzc2VydGlvbihXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtl
cik7CisgICAgICAgIH0pOworICAgIH0pOwogfQogCiBib29sIFdlYlByb2Nlc3NQb29sOjppc1Nl
cnZpY2VXb3JrZXJQYWdlSUQoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpIGNvbnN0CiB7
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGluZWZm
aWNpZW50LgotICAgIHJldHVybiBXVEY6OmFueU9mKHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSwg
W3BhZ2VJRF0oYXV0byYgcHJvY2VzcykgeworICAgIHJldHVybiBXVEY6OmFueU9mKHdvcmtlclBy
b2Nlc3NlcygpLCBbcGFnZUlEXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiBwcm9j
ZXNzLmhhc1NlcnZpY2VXb3JrZXJQYWdlUHJveHkocGFnZUlEKTsKICAgICB9KTsKICNlbmRpZgpA
QCAtMjEyNCwxNiArMjE3NiwyNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRVc2VTZXBhcmF0
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKGJvb2wgdXNlU2VwYXJhdGVTZXJ2aWNlVwogfQogCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorc2l6ZV90IFdlYlByb2Nlc3NQb29sOjpzZXJ2aWNlV29y
a2VyUHJveGllc0NvdW50KCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBjb3VudCA9IDA7CisgICAg
d29ya2VyUHJvY2Vzc2VzKCkuZm9yRWFjaChbJl0oYXV0byYgcHJvY2VzcykgeworICAgICAgICBp
ZiAocHJvY2Vzcy5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQorICAgICAgICAgICAgKytjb3Vu
dDsKKyAgICB9KTsKKyAgICByZXR1cm4gY291bnQ7Cit9CisKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6
Omhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gV1RGOjphbnlPZihzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8m
IHByb2Nlc3MpIHsKKyAgICByZXR1cm4gV1RGOjphbnlPZih3b3JrZXJQcm9jZXNzZXMoKSwgW10o
YXV0byYgcHJvY2VzcykgewogICAgICAgICByZXR1cm4gcHJvY2Vzcy5oYXNTZXJ2aWNlV29ya2Vy
Rm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpOwogICAgIH0pOwogfQogCiBib29sIFdlYlBy
b2Nlc3NQb29sOjpoYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6YW55T2Yoc2VydmljZVdvcmtlclByb2Nlc3Nlcygp
LCBbXShhdXRvJiBwcm9jZXNzKSB7CisgICAgcmV0dXJuIFdURjo6YW55T2Yod29ya2VyUHJvY2Vz
c2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuIHByb2Nlc3MuaGFzU2Vy
dmljZVdvcmtlckJhY2tncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKTsKICAgICB9KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGViNjZkODk0OTBkZi4u
ZTcwYjZmNDI5ZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgK
QEAgLTM3NCwxNyArMzc0LDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIG5ldHdvcmtQcm9jZXNzRGlk
VGVybWluYXRlKE5ldHdvcmtQcm9jZXNzUHJveHkmLCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJt
aW5hdGlvblJlYXNvbik7CiAKICAgICBib29sIGlzU2VydmljZVdvcmtlclBhZ2VJRChXZWJQYWdl
UHJveHlJZGVudGlmaWVyKSBjb25zdDsKKyAgICB2b2lkIHJlbW92ZUZyb21Xb3JrZXJQcm9jZXNz
ZXMoV2ViUHJvY2Vzc1Byb3h5Jik7CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAg
c3RhdGljIHZvaWQgZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRp
Zmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHJlbW92ZUZyb21TZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYpOwotICAgIHNpemVfdCBzZXJ2aWNlV29ya2VyUHJv
eGllc0NvdW50KCkgY29uc3QgeyByZXR1cm4gc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmNvbXB1
dGVTaXplKCk7IH0KLSAgICB2b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJVc2VyQWdlbnQoY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQpOwotICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIg
dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvclNlcnZpY2VXb3JrZXJzKCk7CisgICAg
c3RhdGljIHZvaWQgZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OworICAgIHNpemVfdCBzZXJ2aWNlV29ya2VyUHJveGllc0NvdW50KCkgY29uc3Q7CisgICAgVXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyRm9yV29ya2VycygpOwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlckZvcmVncm91bmRBY3Rp
dml0eUZvclRlc3RpbmcoKSBjb25zdDsKICAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJCYWNrZ3Jv
dW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3Q7CiAjZW5kaWYKICAgICB2b2lkIHNlcnZpY2VX
b3JrZXJQcm9jZXNzQ3Jhc2hlZChXZWJQcm9jZXNzUHJveHkmKTsKIAorICAgIHZvaWQgdXBkYXRl
V29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKKyAgICBzdGF0aWMgdm9p
ZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIHByb2Nl
c3NTdXBwcmVzc2lvbkVuYWJsZWQoKSBjb25zdDsKICNlbmRpZgpAQCAtNjE4LDEzICs2MjEsMTEg
QEAgcHJpdmF0ZToKIAogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFdlYWtQdHI8V2ViUHJv
Y2Vzc1Byb3h5Pj4gbV9kdW1teVByb2Nlc3NQcm94aWVzOyAvLyBMaWdodHdlaWdodCBXZWJQcm9j
ZXNzUHJveHkgb2JqZWN0cyB3aXRob3V0IGJhY2tpbmcgcHJvY2Vzcy4KIAotI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKLSAgICBzdGF0aWMgV2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5PiYg
c2VydmljZVdvcmtlclByb2Nlc3NlcygpOwotICAgIGJvb2wgbV93YWl0aW5nRm9yV29ya2VyQ29u
dGV4dFByb2Nlc3NDb25uZWN0aW9uIHsgZmFsc2UgfTsKLSAgICBTdHJpbmcgbV9zZXJ2aWNlV29y
a2VyVXNlckFnZW50OwotICAgIHN0ZDo6b3B0aW9uYWw8V2ViUHJlZmVyZW5jZXNTdG9yZT4gbV9z
ZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXM7Ci0gICAgUmVmUHRyPFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5PiBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclNlcnZpY2VXb3JrZXI7Ci0jZW5k
aWYKKyAgICBzdGF0aWMgV2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5PiYgd29ya2VyUHJvY2Vz
c2VzKCk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYlByZWZlcmVuY2VzU3RvcmU+IG1fd29ya2Vy
UHJlZmVyZW5jZXM7CisgICAgUmVmUHRyPFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5PiBt
X3VzZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtlcnM7CisgICAgU3RyaW5nIG1fd29ya2VyVXNl
ckFnZW50OwogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIFJlZlB0cjxHUFVQcm9jZXNz
UHJveHk+IG1fZ3B1UHJvY2VzczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwCmluZGV4IGNhYzM2N2YxMTE5Zi4uNWNmODZjYzc4NmUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNp
bmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5o
IgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKICNpbmNs
dWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIK
QEAgLTE4MiwxMSArMTgzLDExIEBAIFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94
eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2Vic2l0CiB9CiAKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCi1SZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJv
eHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwg
UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYg
d2Vic2l0ZURhdGFTdG9yZSkKK1JlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6
Y3JlYXRlRm9yV29ya2VycyhXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFdlYlByb2Nlc3NQb29sJiBw
cm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0
ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSkKIHsKICAgICBhdXRvIHByb3h5ID0gYWRvcHRS
ZWYoKm5ldyBXZWJQcm9jZXNzUHJveHkocHJvY2Vzc1Bvb2wsICZ3ZWJzaXRlRGF0YVN0b3JlLCBJ
c1ByZXdhcm1lZDo6Tm8sIENyb3NzT3JpZ2luTW9kZTo6U2hhcmVkLCBDYXB0aXZlUG9ydGFsTW9k
ZTo6RGlzYWJsZWQpKTsKICAgICBwcm94eS0+bV9yZWdpc3RyYWJsZURvbWFpbiA9IFdURk1vdmUo
cmVnaXN0cmFibGVEb21haW4pOwotICAgIHByb3h5LT5lbmFibGVTZXJ2aWNlV29ya2Vycyhwcm9j
ZXNzUG9vbC51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMo
KSk7CisgICAgcHJveHktPmVuYWJsZVdvcmtlcnMod29ya2VyVHlwZSwgcHJvY2Vzc1Bvb2wudXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CiAgICAgcHJveHktPmNv
bm5lY3QoKTsKICAgICByZXR1cm4gcHJveHk7CiB9CkBAIC05OTUsMTAgKzk5NiwxMCBAQCB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6ZGlkQmVjb21lVW5yZXNwb25zaXZlKCkKICAgICBmb3IgKGF1dG8m
IGNhbGxiYWNrIDogaXNSZXNwb25zaXZlQ2FsbGJhY2tzKQogICAgICAgICBjYWxsYmFjayhpc1dl
YlByb2Nlc3NSZXNwb25zaXZlKTsKIAotICAgIC8vIElmIHRoZSB3ZWIgcHJvY2VzcyBiZWNvbWVz
IHVucmVzcG9uc2l2ZSBhbmQgb25seSBydW5zIHNlcnZpY2Ugd29ya2Vycywga2lsbCBpdCBvdXJz
ZWx2ZXMgc2luY2UgdGhlcmUgYXJlIG5vIG5hdGl2ZSBjbGllbnRzIHRvIGRvIGl0LgotICAgIGlm
IChpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpICYmIG1fcGFnZU1hcC5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HX0VSUk9SKFBlcmZvcm1hbmNlTG9nZ2lu
ZywgImRpZEJlY29tZVVucmVzcG9uc2l2ZTogVGVybWluYXRpbmcgc2VydmljZSB3b3JrZXItb25s
eSB3ZWIgcHJvY2VzcyBiZWNhdXNlIGl0IGlzIHVucmVzcG9uc2l2ZSIpOwotICAgICAgICBkaXNh
YmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICAvLyBJZiB0aGUgd2ViIHByb2Nlc3MgYmVjb21lcyB1
bnJlc3BvbnNpdmUgYW5kIG9ubHkgcnVucyBzZXJ2aWNlL3NoYXJlZCB3b3JrZXJzLCBraWxsIGl0
IG91cnNlbHZlcyBzaW5jZSB0aGVyZSBhcmUgbm8gbmF0aXZlIGNsaWVudHMgdG8gZG8gaXQuCisg
ICAgaWYgKGlzUnVubmluZ1dvcmtlcnMoKSAmJiBtX3BhZ2VNYXAuaXNFbXB0eSgpKSB7CisgICAg
ICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQZXJmb3JtYW5jZUxvZ2dpbmcs
ICJkaWRCZWNvbWVVbnJlc3BvbnNpdmU6IFRlcm1pbmF0aW5nIHdvcmtlci1vbmx5IHdlYiBwcm9j
ZXNzIGJlY2F1c2UgaXQgaXMgdW5yZXNwb25zaXZlIik7CisgICAgICAgIGRpc2FibGVXb3JrZXJz
KHsgV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyIH0p
OwogICAgICAgICB0ZXJtaW5hdGUoKTsKICAgICB9CiB9CkBAIC0xNjk0LDggKzE2OTUsOSBAQCB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUo
Y29uc3QgVVJMJiB1cmwpCiAgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHsgdXJsIH07CiAgICAgaWYgKG1fcmVnaXN0cmFibGVEb21haW4gJiYg
Km1fcmVnaXN0cmFibGVEb21haW4gIT0gcmVnaXN0cmFibGVEb21haW4pIHsKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCi0gICAgICAgIGRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgICAg
ICBkaXNhYmxlV29ya2VycyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgorCiAg
ICAgICAgIC8vIE51bGwgb3V0IHJlZ2lzdHJhYmxlIGRvbWFpbiBzaW5jZSB0aGlzIHByb2Nlc3Mg
aGFzIG5vdyBiZWVuIHVzZWQgZm9yIHNldmVyYWwgZG9tYWlucy4KICAgICAgICAgbV9yZWdpc3Ry
YWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgfTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMTg2Niw2MCArMTg2OCw4NSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZXN0YWJs
aXNoU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgcwogewog
ICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZXN0YWJsaXNoU2Vydmlj
ZVdvcmtlckNvbnRleHQ6IFN0YXJ0ZWQiKTsKICAgICBtYXJrUHJvY2Vzc0FzUmVjZW50bHlVc2Vk
KCk7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxp
c2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vz
c1Bvb2woKS5kZWZhdWx0UGFnZUdyb3VwKCkucGFnZUdyb3VwSUQoKSwgbV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb24tPnNlcnZpY2VXb3JrZXJQYWdlUHJveHlJRCwgbV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb24tPnNlcnZpY2VXb3JrZXJQYWdlSUQsIHN0b3JlLCByZWdpc3RyYWJsZURvbWFpbiwg
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+
aW5pdGlhbGl6YXRpb25EYXRhIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFi
bGUgeworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RXN0YWJs
aXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHByb2Nl
c3NQb29sKCkuZGVmYXVsdFBhZ2VHcm91cCgpLnBhZ2VHcm91cElEKCksIG1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uLT53b3JrZXJQYWdlUHJveHlJRCwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24tPndvcmtlclBhZ2VJRCwgc3RvcmUsIHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2Vy
UGFnZUlkZW50aWZpZXIsIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5pbml0aWFsaXphdGlv
bkRhdGEgfSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAg
IGlmICh3ZWFrVGhpcykKICAgICAgICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhM
b2FkaW5nLCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQ6IEZpbmlzaGVkIik7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSwgMCk7CiB9CisjZW5kaWYKIAotdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OnNldFNlcnZpY2VXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0V29ya2VyVXNlckFnZW50KGNvbnN0
IFN0cmluZyYgdXNlckFnZW50KQogewotICAgIEFTU0VSVChtX3NlcnZpY2VXb3JrZXJJbmZvcm1h
dGlvbik7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OlNldFVzZXJBZ2VudCB7IHVzZXJBZ2VudCB9LCAwKTsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisgICAgaWYgKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQorICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U2V0VXNlckFnZW50IHsgdXNl
ckFnZW50IH0sIDApOworI2VuZGlmCisgICAgaWYgKG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24p
CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6U2V0VXNlckFnZW50IHsgdXNlckFnZW50IH0sIDApOwogfQogCi12b2lkIFdlYlBy
b2Nlc3NQcm94eTo6dXBkYXRlU2VydmljZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2Vi
UHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlV29y
a2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKIHsK
LSAgICBBU1NFUlQobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pOwotICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpVcGRhdGVQcmVmZXJlbmNlc1N0b3Jl
IHsgc3RvcmUgfSwgMCk7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIGlmIChtX3Nl
cnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZVByZWZlcmVuY2VzU3RvcmUgeyBzdG9yZSB9LCAw
KTsKKyNlbmRpZgorICAgIGlmIChtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uKQorICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVw
ZGF0ZVByZWZlcmVuY2VzU3RvcmUgeyBzdG9yZSB9LCAwKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNz
UHJveHk6OnVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCkKKy8vIEZJWE1FOiBD
bGllbnRzIGRvIG5vdCBwcm9wZXJseSBnZXQgcG9wdWxhdGVkIGluIG1fc2hhcmVkV29ya2VySW5m
b3JtYXRpb24uCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2Vy
dGlvbihXb3JrZXJUeXBlIHdvcmtlclR5cGUpCiB7Ci0gICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVB
U0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3Nl
cnRpb246Iik7Ci0gICAgQVNTRVJUKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsKLSAgICBp
ZiAoIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQorICAgIGF1dG8mIHdvcmtlckluZm9ybWF0
aW9uID0gd29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyBtX3NoYXJlZFdv
cmtlckluZm9ybWF0aW9uIDogbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247CisgICAgQVNTRVJU
KHdvcmtlckluZm9ybWF0aW9uKTsKKyAgICBpZiAoIXdvcmtlckluZm9ybWF0aW9uKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBib29sIHNob3VsZFRha2VGb3JlZ3JvdW5kQWN0aXZpdHkgPSBXVEY6
OmFueU9mKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMsIFsmXShh
dXRvJiBwcm9jZXNzKSB7CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NT
dXNwZW5zaW9uLCAidXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbjogd29ya2VyVHlwZT0le3B1
YmxpY31zIiwgd29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyAic2hhcmVk
IiA6ICJzZXJ2aWNlIik7CisKKyAgICBib29sIHNob3VsZFRha2VGb3JlZ3JvdW5kQWN0aXZpdHkg
PSBXVEY6OmFueU9mKHdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMsIFsmXShhdXRv
JiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiAmcHJvY2VzcyAhPSB0aGlzICYmICEhcHJvY2Vz
cy5tX2ZvcmVncm91bmRUb2tlbjsKICAgICB9KTsKICAgICBpZiAoc2hvdWxkVGFrZUZvcmVncm91
bmRBY3Rpdml0eSkgewotICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRGb3Jl
Z3JvdW5kQWN0aXZpdHkobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKLSAg
ICAgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0
bGVyLmZvcmVncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGZvcmVncm91bmQgdmll
dyhzKSJfcyk7CisgICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEZvcmVncm91
bmRBY3Rpdml0eSh3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQorICAgICAgICAgICAgd29y
a2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuZm9yZWdyb3VuZEFjdGl2aXR5
KCJXb3JrZXIgZm9yIGZvcmVncm91bmQgdmlldyhzKSJfcyk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBib29sIHNob3VsZFRha2VCYWNrZ3JvdW5kQWN0aXZpdHkgPSBXVEY6OmFueU9m
KG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMsIFsmXShhdXRvJiBw
cm9jZXNzKSB7CisgICAgYm9vbCBzaG91bGRUYWtlQmFja2dyb3VuZEFjdGl2aXR5ID0gV1RGOjph
bnlPZih3b3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2VzLCBbJl0oYXV0byYgcHJvY2Vz
cykgewogICAgICAgICByZXR1cm4gJnByb2Nlc3MgIT0gdGhpcyAmJiAhIXByb2Nlc3MubV9iYWNr
Z3JvdW5kVG9rZW47CiAgICAgfSk7CiAgICAgaWYgKHNob3VsZFRha2VCYWNrZ3JvdW5kQWN0aXZp
dHkpIHsKLSAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFj
dGl2aXR5KG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCi0gICAgICAgICAg
ICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNr
Z3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2VyIGZvciBiYWNrZ3JvdW5kIHZpZXcocykiX3Mp
OworICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZp
dHkod29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKKyAgICAgICAgICAgIHdvcmtlckluZm9y
bWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiV29ya2Vy
IGZvciBiYWNrZ3JvdW5kIHZpZXcocykiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgaWYgKG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKSB7CisgICAgaWYg
KHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciAmJiBtX2hhc1NlcnZpY2VX
b3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZykgewogICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVM
RUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJTZXJ2aWNlIFdvcmtlciBmb3IgYmFja2dyb3Vu
ZCBwcm9jZXNzaW5nIik7Ci0gICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEJh
Y2tncm91bmRBY3Rpdml0eShtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQot
ICAgICAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJv
dHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3IgYmFja2dyb3VuZCBw
cm9jZXNzaW5nIl9zKTsKKyAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkQmFj
a2dyb3VuZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCisgICAgICAgICAg
ICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0
aXZpdHkoIlNlcnZpY2UgV29ya2VyIGZvciBiYWNrZ3JvdW5kIHByb2Nlc3NpbmciX3MpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFj
dGl2aXR5ID0gbnVsbHB0cjsKKyAgICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBudWxs
cHRyOwogfQogCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29u
dGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNoYXJl
ZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHQ6IFN0YXJ0ZWQiKTsKKyAgICBt
YXJrUHJvY2Vzc0FzUmVjZW50bHlVc2VkKCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRlZmF1bHRQYWdlR3JvdXAoKS5wYWdlR3Jv
dXBJRCgpLCBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uLT53b3JrZXJQYWdlUHJveHlJRCwgbV9z
aGFyZWRXb3JrZXJJbmZvcm1hdGlvbi0+d29ya2VyUGFnZUlELCBzdG9yZSwgcmVnaXN0cmFibGVE
b21haW4sIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24tPmluaXRpYWxpemF0aW9uRGF0YSB9LCBb
dGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHdlYWtU
aGlzKQorICAgICAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtl
ciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHQ6IEZpbmlzaGVkIik7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSwgMCk7Cit9CisKKyNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCisKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCiB7CiAgICAgaWYgKCFtX3NlcnZpY2VX
b3JrZXJJbmZvcm1hdGlvbikKQEAgLTE5MjcsNyArMTk1NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYg
cHJveHkpCiAKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwg
InJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3M6IGNsaWVudFByb2Nlc3M9JXAsIGNs
aWVudFBJRD0lZCIsICZwcm94eSwgcHJveHkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgbV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3Nlcy5hZGQocHJveHkpOwotICAg
IHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBkYXRlV29ya2Vy
UHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KIAogdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQ
cm9jZXNzUHJveHkmIHByb3h5KQpAQCAtMTkzNyw3ICsxOTY0LDcgQEAgdm9pZCBXZWJQcm9jZXNz
UHJveHk6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJv
eHkmIHByb3gKIAogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2Vy
LCAidW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzOiBjbGllbnRQcm9jZXNzPSVw
LCBjbGllbnRQSUQ9JWQiLCAmcHJveHksIHByb3h5LnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAg
IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMucmVtb3ZlKHByb3h5
KTsKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOworICAgIHVwZGF0
ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAK
IGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5
Rm9yVGVzdGluZygpIGNvbnN0CkBAIC0xOTU3LDcgKzE5ODQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6c3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoKQogCiAgICAgV0VC
UFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAic3RhcnRTZXJ2aWNl
V29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmciKTsKICAgICBtX2hhc1NlcnZpY2VXb3JrZXJCYWNr
Z3JvdW5kUHJvY2Vzc2luZyA9IHRydWU7Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NB
c3NlcnRpb24oKTsKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6
OlNlcnZpY2VXb3JrZXIpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5kU2VydmljZVdv
cmtlckJhY2tncm91bmRQcm9jZXNzaW5nKCkKQEAgLTE5NjcsMjMgKzE5OTQsMzkgQEAgdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZygpCiAK
ICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJlbmRT
ZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmciKTsKICAgICBtX2hhc1NlcnZpY2VXb3Jr
ZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyA9IGZhbHNlOwotICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3Jr
ZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaXNhYmxlU2VydmljZVdvcmtlcnMoKQordm9p
ZCBXZWJQcm9jZXNzUHJveHk6OmRpc2FibGVXb3JrZXJzKE9wdGlvblNldDxXb3JrZXJUeXBlPiB3
b3JrZXJUeXBlKQogewotICAgIGlmICghbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAg
QVNTRVJUKCF3b3JrZXJUeXBlLmlzRW1wdHkoKSk7CisKKyAgICBib29sIGRpZENoYW5nZSA9IGZh
bHNlOworICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNlcnZpY2VXb3Jr
ZXIpICYmIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKSB7CisgICAgICAgIG1fc2VydmljZVdv
cmtlckluZm9ybWF0aW9uID0geyB9OworICAgICAgICBkaWRDaGFuZ2UgPSB0cnVlOworICAgIH0K
KyAgICBpZiAod29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpICYm
IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24pIHsKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJJbmZv
cm1hdGlvbiA9IHsgfTsKKyAgICAgICAgZGlkQ2hhbmdlID0gdHJ1ZTsKKyAgICB9CisgICAgaWYg
KCFkaWRDaGFuZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxF
QVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiZGlzYWJsZVNlcnZpY2VXb3JrZXJzOiIpOwotICAgIG1f
c2VydmljZVdvcmtlckluZm9ybWF0aW9uID0geyB9OworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxF
QVNFX0xPRyhQcm9jZXNzLCAiZGlzYWJsZVdvcmtlcnM6IERpc2FibGluZyB3b3JrZXJzIChTaGFy
ZWRXb3JrZXJzPSVkLCBTZXJ2aWNlV29ya2Vycz0lZCkiLCB3b3JrZXJUeXBlLmNvbnRhaW5zKFdv
cmtlclR5cGU6OlNoYXJlZFdvcmtlciksIHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6
U2VydmljZVdvcmtlcikpOworCiAgICAgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGlt
ZXIoKTsKIAorICAgIGlmICghaXNSdW5uaW5nV29ya2VycygpKQorICAgICAgICBwcm9jZXNzUG9v
bCgpLnJlbW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMoKnRoaXMpOworCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQotICAgIHByb2Nlc3NQb29sKCkucmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9j
ZXNzZXMoKnRoaXMpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpDbG9zZSB7IH0sIDApOworICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtl
clR5cGU6OlNlcnZpY2VXb3JrZXIpKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q2xvc2UgeyB9LCAwKTsKICNlbmRpZgorICAgIGlmICh3b3Jr
ZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlcikpCisgICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q2xvc2Ug
eyB9LCAwKTsKIAogICAgIG1heWJlU2h1dERvd24oKTsKIH0KQEAgLTIwMDQsMTEgKzIwNDcsMTMg
QEAgc3RhdGljIFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRh
LCBVUkw+PiBjb250ZW50UnVsZUxpc3RzRnIKIH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQ
cm94eTo6ZW5hYmxlU2VydmljZVdvcmtlcnMoY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllciYgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKK3ZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjplbmFibGVXb3JrZXJzKFdvcmtlclR5cGUgd29ya2VyVHlwZSwgY29uc3QgVXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllciYgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
cikKIHsKLSAgICBBU1NFUlQoIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsKLSAgICBXRUJQ
Uk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgImVuYWJsZVNlcnZpY2VXb3Jr
ZXJzOiIpOwotICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uID0gU2VydmljZVdvcmtlcklu
Zm9ybWF0aW9uIHsKKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtl
ciwgImVuYWJsZVdvcmtlcnM6IHdvcmtlclR5cGU9JXUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
d29ya2VyVHlwZSkpOworICAgIGF1dG8mIHdvcmtlckluZm9ybWF0aW9uID0gd29ya2VyVHlwZSA9
PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIDog
bV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247CisgICAgQVNTRVJUKCF3b3JrZXJJbmZvcm1hdGlv
bik7CisKKyAgICB3b3JrZXJJbmZvcm1hdGlvbiA9IFdvcmtlckluZm9ybWF0aW9uIHsKICAgICAg
ICAgV2ViUGFnZVByb3h5SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwKICAgICAgICAgUGFnZUlkZW50
aWZpZXI6OmdlbmVyYXRlKCksCiAgICAgICAgIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRh
dGEgewpAQCAtMjAyMSw5ICsyMDY2LDggQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVNl
cnZpY2VXb3JrZXJzKGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIKICAgICAg
ICAgeyB9CiAgICAgfTsKICAgICB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigp
OwotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJv
Y2Vzc0Fzc2VydGlvbigpOwotI2VuZGlmCisKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0
aW9uKHdvcmtlclR5cGUpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlU2xl
ZXBEaXNhYmxlcihTbGVlcERpc2FibGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIHJlYXNvbiwgYm9vbCBkaXNwbGF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaAppbmRleCBmNTE0Yjk5MTZhZDQuLjE5MmQ1ZDJiNmY5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTEzNiw5ICsxMzYsMTMgQEAgcHVi
bGljOgogCiAgICAgZW51bSBjbGFzcyBTaG91bGRMYXVuY2hQcm9jZXNzIDogYm9vbCB7IE5vLCBZ
ZXMgfTsKICAgICBlbnVtIGNsYXNzIENhcHRpdmVQb3J0YWxNb2RlIDogYm9vbCB7IERpc2FibGVk
LCBFbmFibGVkIH07CisgICAgZW51bSBjbGFzcyBXb3JrZXJUeXBlIDogdWludDMyX3QgeworICAg
ICAgICBTZXJ2aWNlV29ya2VyID0gMSA8PCAwLAorICAgICAgICBTaGFyZWRXb3JrZXIgPSAxIDw8
IDEKKyAgICB9OwogCiAgICAgc3RhdGljIFJlZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZShXZWJQ
cm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRhU3RvcmUqLCBDYXB0aXZlUG9ydGFsTW9kZSwgSXNQcmV3
YXJtZWQsIFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZSA9IFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9k
ZTo6U2hhcmVkLCBTaG91bGRMYXVuY2hQcm9jZXNzID0gU2hvdWxkTGF1bmNoUHJvY2Vzczo6WWVz
KTsKLSAgICBzdGF0aWMgUmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlRm9yU2VydmljZVdvcmtl
cnMoV2ViUHJvY2Vzc1Bvb2wmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBXZWJzaXRl
RGF0YVN0b3JlJik7CisgICAgc3RhdGljIFJlZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZUZvcldv
cmtlcnMoV29ya2VyVHlwZSwgV2ViUHJvY2Vzc1Bvb2wmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYmLCBXZWJzaXRlRGF0YVN0b3JlJik7CiAKICAgICB+V2ViUHJvY2Vzc1Byb3h5KCk7CiAK
QEAgLTE2MSw4ICsxNjUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc0luUHJvY2Vzc0NhY2hl
KGJvb2wsIFdpbGxTaHV0RG93biA9IFdpbGxTaHV0RG93bjo6Tm8pOwogICAgIGJvb2wgaXNJblBy
b2Nlc3NDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblByb2Nlc3NDYWNoZTsgfQogCi0gICAg
dm9pZCBlbmFibGVTZXJ2aWNlV29ya2Vycyhjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyJik7Ci0gICAgdm9pZCBkaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICB2b2lkIGVu
YWJsZVdvcmtlcnMoV29ya2VyVHlwZSwgY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
ZmllciYpOworICAgIHZvaWQgZGlzYWJsZVdvcmtlcnMoT3B0aW9uU2V0PFdvcmtlclR5cGU+KTsK
IAogICAgIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IEFTU0VS
VChtX3dlYnNpdGVEYXRhU3RvcmUpOyByZXR1cm4gKm1fd2Vic2l0ZURhdGFTdG9yZTsgfQogICAg
IHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlJik7CkBAIC0xOTQsNiAr
MTk4LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpIGNv
bnN0IHsgcmV0dXJuICEhbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247IH0KICAgICBib29sIGlz
U3RhbmRhbG9uZVNlcnZpY2VXb3JrZXJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gaXNSdW5uaW5n
U2VydmljZVdvcmtlcnMoKSAmJiAhcGFnZUNvdW50KCk7IH0KKyAgICBib29sIGlzUnVubmluZ1No
YXJlZFdvcmtlcnMoKSBjb25zdCB7IHJldHVybiAhIW1fc2hhcmVkV29ya2VySW5mb3JtYXRpb247
IH0KKyAgICBib29sIGlzU3RhbmRhbG9uZVNoYXJlZFdvcmtlclByb2Nlc3MoKSBjb25zdCB7IHJl
dHVybiBpc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkgJiYgIXBhZ2VDb3VudCgpOyB9CisgICAgYm9v
bCBpc1J1bm5pbmdXb3JrZXJzKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRXb3JrZXJJbmZvcm1h
dGlvbiB8fCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsgfQogCiAgICAgYm9vbCBpc0R1bW15
UHJvY2Vzc1Byb3h5KCkgY29uc3Q7CiAKQEAgLTM1OSwxMiArMzY2LDEzIEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgdXBkYXRlQXVkaWJsZU1lZGlhQXNzZXJ0aW9ucygpOwogCisgICAgdm9pZCBzZXRX
b3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCB1cGRhdGVXb3JrZXJQcmVm
ZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKKyAgICB2b2lkIGVzdGFi
bGlzaFNoYXJlZFdvcmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICB2b2lkIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZSk7CiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZXN0YWJsaXNoU2VydmljZVdvcmtl
ckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChjb25z
dCBTdHJpbmcmKTsKLSAgICB2b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3Jl
KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKLSAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJQ
YWdlUHJveHkoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCkgeyByZXR1cm4gbV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gJiYgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnNl
cnZpY2VXb3JrZXJQYWdlUHJveHlJRCA9PSBwYWdlUHJveHlJRDsgfQotICAgIHZvaWQgdXBkYXRl
U2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKKyAgICBib29sIGhhc1NlcnZpY2VXb3Jr
ZXJQYWdlUHJveHkoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCkgeyByZXR1cm4g
bV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gJiYgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24t
PndvcmtlclBhZ2VQcm94eUlEID09IHBhZ2VQcm94eUlEOyB9CiAgICAgdm9pZCByZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYpOwogICAgIHZvaWQgdW5y
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYpOwogICAg
IGJvb2wgaGFzU2VydmljZVdvcmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25z
dDsKQEAgLTY0OCwxNCArNjU2LDE1IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBSZWZQdHI8TG9n
Z2VyPiBtX2xvZ2dlcjsKIAotICAgIHN0cnVjdCBTZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gewot
ICAgICAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQYWdlUHJveHlJRDsK
LSAgICAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgc2VydmljZVdvcmtlclBhZ2VJRDsKKyAg
ICBzdHJ1Y3QgV29ya2VySW5mb3JtYXRpb24geworICAgICAgICBXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHdvcmtlclBhZ2VQcm94eUlEOworICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3
b3JrZXJQYWdlSUQ7CiAgICAgICAgIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5p
dGlhbGl6YXRpb25EYXRhOwogICAgICAgICBQcm9jZXNzVGhyb3R0bGVyOjpBY3Rpdml0eVZhcmlh
bnQgYWN0aXZpdHk7CiAgICAgICAgIFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4gY2xpZW50
UHJvY2Vzc2VzOwogICAgIH07Ci0gICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySW5mb3Jt
YXRpb24+IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8V29y
a2VySW5mb3JtYXRpb24+IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOworICAgIHN0ZDo6b3B0
aW9uYWw8V29ya2VySW5mb3JtYXRpb24+IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb247CiAgICAg
Ym9vbCBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyB7IGZhbHNlIH07CiAK
ICAgICBIYXNoTWFwPFdlYkNvcmU6OlNsZWVwRGlzYWJsZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6U2xlZXBEaXNhYmxlcj4+IG1fc2xlZXBEaXNhYmxlcnM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2NGU0MDQ0
MGI4ZTMuLmE4OWUxYzNjZTA3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC04ODEsNiArODgxLDcgQEAKIAkJNDYxNEYxMzIyNURFRDg3
NTAwNzAwNkU3IC8qIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZBQzUzMjQyNURFRDgxRTAwM0I1
N0VDIC8qIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5oICovOyB9OwogCQk0NjFDQ0NB
NTIzMTQ4NUE3MDBCNjU5QjkgLyogVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzMjM2ODUyMzE0ODMzRjAwQTQ4
RkE3IC8qIFVJUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAqLzsgfTsKIAkJNDYxQ0NDQTYyMzE0ODVB
QTAwQjY1OUI5IC8qIFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjMyMzY4MzIzMTQ4MUVGMDBBNDhGQTcgLyog
V2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAqLzsgfTsKKwkJNDYxRTFCRjIyNzlBMDExNjAwNkFG
NTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYxRTFCRUYyNzlBMDEwRjAw
NkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICovOyB9
OwogCQk0NjNGRDQ4MDFFQjk0NTk2MDBBMjk4MkMgLyogV0tQcm9jZXNzVGVybWluYXRpb25SZWFz
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0ZE
NDdGMUVCOTQ1ODQwMEEyOTgyQyAvKiBXS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2M0ZENDgyMUVC
OTRFQzAwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0ZENDgxMUVCOTRFQUQwMEEyOTgy
QyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCAqLzsgfTsKIAkJNDY1OUYyNUYyNzVGRjZC
MjAwQkJCMzY5IC8qIENhcHRpdmVQb3J0YWxNb2RlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NTlGMjVFMjc1RkY2QjIwMEJCQjM2OSAv
KiBDYXB0aXZlUG9ydGFsTW9kZU9ic2VydmVyLmggKi87IH07CkBAIC04OTAsNiArODkxLDggQEAK
IAkJNDY3MUZGMUYyMzIxN0VGRjAwMUI2NEM3IC8qIFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjcxRkYxRDIz
MjE3RUZGMDAxQjY0QzcgLyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCAqLzsgfTsKIAkJNDY3
RTQzRTgyMjQzRkY3RDAwQjEzOTI0IC8qIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdFNDNFNzIy
NDNGRjZEMDBCMTM5MjQgLyogV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaCAqLzsgfTsK
IAkJNDY4MDlBN0MyM0Q5MjI1RTAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgwOUE3QTIzRDkyMjUzMDBD
Mjk3RDAgLyogV2ViQ29va2llQ2FjaGUuaCAqLzsgfTsKKwkJNDY5NDNERDAyNzYzRjgzQTAwNEI2
MTBFIC8qIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0M0RDRjI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hh
cmVkV29ya2VyUHJvdmlkZXIuaCAqLzsgfTsKKwkJNDY5NDNERDEyNzYzRjgzRjAwNEI2MTBFIC8q
IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTQzRENEMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2QTJCNjA5MUU1Njc2QTYw
MEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QTJCNjA3MUU1Njc1QTIw
MEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaCAqLzsgfTsK
IAkJNDZCMDUyNDcyMjY2OEQ4NTAwMjY1Qjk3IC8qIFdlYkRldmljZU9yaWVudGF0aW9uQW5kTW90
aW9uQWNjZXNzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDZCMDUyNDQyMjY2OEQyMzAwMjY1Qjk3IC8qIFdlYkRldmljZU9yaWVudGF0
aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlci5oICovOyB9OwogCQk0NkJFQjZENzIyRkI5QkQ3
MDAyNjk4NjcgLyogU3RvcmFnZUFyZWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2QkVCNkQ1MjJGQjlCRDYwMDI2OTg2NyAvKiBTdG9yYWdlQXJlYS5o
ICovOyB9OwpAQCAtODk5LDEwICs5MDIsMTMgQEAKIAkJNDZDMzkyMjkyMzE2RUM0RDAwOEVFRDlC
IC8qIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzM5MjI4MjMxNkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyLmggKi87IH07CiAJCTQ2QzVCN0NFMjdBQURERDMwMDBDNUI0NyAvKiBSZW1v
dGVXb3JrZXJGcmFtZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZDNUI3Q0QyN0FBRERCRTAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtl
ckZyYW1lTG9hZGVyQ2xpZW50LmggKi87IH07CiAJCTQ2QzVCN0NGMjdBQURERDYwMDBDNUI0NyAv
KiBSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNUI3Q0IyN0FBRERCRTAwMEM1QjQ3IC8qIFJlbW90
ZVdvcmtlckxpYldlYlJUQ1Byb3ZpZGVyLmggKi87IH07CisJCTQ2QzkxNkFBMjc5OUQwQTIwMDFB
NEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzkxNkE5Mjc5OUQwOUQwMDFBNEU3QyAvKiBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXIuaCAqLzsgfTsKIAkJNDZDRTNCMTEyM0Q4Qzg0OTAwMTZBOTZBIC8qIFdl
YkJhY2tGb3J3YXJkTGlzdENvdW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDZDRTNCMTAyM0Q4QzgzRDAwMTZBOTZBIC8qIFdlYkJhY2tGb3J3YXJk
TGlzdENvdW50cy5oICovOyB9OworCQk0NkQ0OEZDRTI3OTlEN0UxMDA3RDIwMTQgLyogV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZENDhGQ0QyNzk5RDdERTAwN0QyMDE0IC8qIFdl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCAqLzsgfTsKIAkJNDZERjA2
M0MxRjM5MDVGODAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZERjA2M0ExRjM5MDVF
NTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oICovOyB9OwogCQk0NkVF
Mjg0OTI2OUUwNEFDMDBERDQ4QUIgLyogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkVFMjg0ODI2OUUw
NDlCMDBERDQ4QUIgLyogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggKi87IH07CiAJCTQ2
RUUyODREMjY5RTA1MjUwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkVFMjg0
QzI2OUUwNTE3MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oICov
OyB9OworCQk0NkVFM0U4QjI3NjNGRDJGMDA2MEM3MEYgLyogV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY4Mzg2NjcyNzYzRkFCMTAwQ0Y5MTgyIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb24uaCAqLzsgfTsKIAkJNDZGMzhFOEMyNDE2RTY3MzAwNTkzNzVBIC8qIFJ1bm5pbmdCb2Fy
ZFNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NkYzOEU4QjI0MTZFNjZEMDA1OTM3NUEgLyogUnVubmluZ0JvYXJkU2VydmljZXNTUEku
aCAqLzsgfTsKIAkJNDZGOUIyNjMyMzUyNkVGMzAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2Fj
aGVFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDZGOUIyNjIyMzUyNkVEMDAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oICov
OyB9OwogCQk0OTMxMDJCRDI2ODNGM0QwMDAyQkI4ODUgLyogQXBwUHJpdmFjeVJlcG9ydC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDkzMTAyQkMyNjgz
RjNBNTAwMkJCODg1IC8qIEFwcFByaXZhY3lSZXBvcnQuaCAqLzsgfTsKQEAgLTEyNzYsNiArMTI4
Miw3IEBACiAJCTZCRTk2OUMxMUU1NEQ0NTIwMDhCNzQ4MyAvKiBjb3JlUHJlZGljdGlvbl9tb2Rl
bCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkJFOTY5
QzAxRTU0RDQ1MjAwOEI3NDgzIC8qIGNvcmVQcmVkaWN0aW9uX21vZGVsICovOyB9OwogCQk2QkU5
NjlDQjFFNTRENENGMDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJD
b2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkJF
OTY5QzkxRTU0RDRDRjAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVy
Q29jb2EuaCAqLzsgfTsKIAkJNkJFOTY5Q0QxRTU0RTA1NDAwOEI3NDgzIC8qIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2QkU5NjlDQzFFNTRFMDU0MDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0NsYXNzaWZpZXIuaCAqLzsgfTsKKwkJNkNBRUNCNjYyNzQ2NUFFNDAwQUI3OEQwIC8q
IFVuaWZpZWRTb3VyY2UxMTYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkNBRUNCNUUyNzQ2NUFFMzAwQUI3OEQwIC8qIFVuaWZpZWRTb3VyY2UxMTYu
Y3BwICovOyB9OwogCQk2RUU4NDlDODEzNjhEOTM5MDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2
YXRlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
RUU4NDlDNjEzNjhEOTJEMDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2YXRlTWFjLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzExNzI1QTkyMjhE
NTY0MzAwMDE4NTE0IC8qIFdlYnNpdGVMZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoUG9saWN5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTE3MjVB
ODIyOEQ1NjNBMDAwMTg1MTQgLyogV2Vic2l0ZUxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQ
b2xpY3kuaCAqLzsgfTsKIAkJNzEzNEEzREEyNjAzQjkyNTAwNjI0QkQzIC8qIFdLTW9kZWxJbnRl
cmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MTM0QTNEOTI2MDNCODBFMDA2MjRCRDMgLyogV0tNb2RlbEludGVy
YWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaCAqLzsgfTsKQEAgLTEzNTMsNiArMTM2MCw3IEBACiAJ
CTdDOUQxNTM3MTg0NTg0REEwMDlEMzkxOCAvKiBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOUQx
NTM2MTg0NTg0REEwMDlEMzkxOCAvKiBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaCAq
LzsgfTsKIAkJN0NBMjU0RUIxODI5OTNDRTAwRkM4QTQxIC8qIFdLQnJvd3NpbmdDb250ZXh0UG9s
aWN5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDQTI1NEVBMTgyOTkzQ0UwMEZDOEE0MSAvKiBXS0Jyb3dzaW5nQ29udGV4dFBvbGljeURl
bGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJN0NBMzc5M0UxQUMzNzhCMzAwNzlEQzM3IC8qIF9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3Rv
cmVQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3Q0EzNzkzRDFBQzM3OEIzMDA3OURDMzcgLyogX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9y
ZVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk3Q0FFQ0I2NjI3NDY1QUU0MDBBQjc4RDAgLyogVW5pZmllZFNvdXJjZTExNy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0FFQ0I1RTI3NDY1
QUUzMDBBQjc4RDAgLyogVW5pZmllZFNvdXJjZTExNy5jcHAgKi87IH07CiAJCTdDQjEwMEYxMUZB
Mzg1OEEwMDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNlc0tleXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NCMTAwRUUxRkEyRDc0QTAwMTcyOUVFIC8q
IFdlYlByZWZlcmVuY2VzS2V5cy5jcHAgKi87IH07CiAJCTdDQjEwMEYyMUZBMzg1OEUwMDE3MjlF
RSAvKiBXZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0RFNzNBMzFGOURBQjY1MDAzOTAzMTIgLyogV2ViUHJl
ZmVyZW5jZXNEZWZpbml0aW9ucy5oICovOyB9OwogCQk3Q0IxMDBGMzFGQTM4NThFMDAxNzI5RUUg
LyogV2ViUHJlZmVyZW5jZXNLZXlzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3Q0IxMDBFRjFGQTJENzRCMDAxNzI5RUUgLyogV2ViUHJlZmVyZW5jZXNL
ZXlzLmggKi87IH07CkBAIC00MjIyLDYgKzQyMzAsOSBAQAogCQk0NjA4ODlGRjI2MUZBOEE5MDBF
MjUwMEQgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MEY0ODhEMUY5OTZGNkMwMENGNEI4NyAvKiBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bk1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk0NjBGNDg4RTFGOTk2RjZDMDBDRjRCODcgLyogV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHBh
dGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25N
ZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk0NjFFMUJF
QzI3OUEwMTBFMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQ2MUUxQkVGMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQ2MUUxQkYwMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjIxMDdENzFGMzhEQkQzMDBERDc4MTAgLyog
UGluZ0xvYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGluZ0xv
YWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjMyMzY4MzIzMTQ4MUVGMDBB
NDhGQTcgLyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVt
b3RlT2JqZWN0UmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzMjM2
ODQyMzE0ODI1QzAwQTQ4RkE3IC8qIFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTQyNDksOCArNDI2MCwxNSBAQAogCQk0NjgwOUE3QjIzRDkyMjUzMDBD
Mjk3RDAgLyogV2ViQ29va2llQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViQ29va2llQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjgzNTY5QTIxRTgxQ0M3MDA2RTI3QTMgLyogUHJvdmlzaW9uYWxQYWdlUHJveHkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvdmlzaW9uYWxQYWdlUHJveHkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzU2OUIyMUU4MUNDNzAwNkUyN0EzIC8qIFBy
b3Zpc2lvbmFsUGFnZVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFByb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDY4Mzg2NjcyNzYzRkFCMTAwQ0Y5MTgyIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjgzODY2ODI3NjNGQUIxMDBDRjkxODIg
LyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDY4OUI5MEYyNzU2RDE0MzAwMDdDNjUxIC8qIFJlbW90ZVdlYkxvY2tSZWdp
c3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OUI5MTAyNzU2RDE0MzAwMDdDNjUxIC8qIFJlbW90ZVdl
YkxvY2tSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVXZWJMb2NrUmVnaXN0
cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RDQjI3NjNGODM0MDA0
QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RDQzI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVk
V29ya2VyUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyUHJv
dmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RDRDI3NjNGODM1
MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQ2OTQzRENFMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RD
RjI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDY5REU4MDIyNzNFQ0M1RDAwOTMwMjc2IC8qIFByb2Nlc3NMYXVuY2hlckNvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJvY2Vzc0xhdW5jaGVy
Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QTJCNjA2MUU1Njc1QTIw
MEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFja2dyb3VuZFByb2Nlc3NSZXNwb25z
aXZlbmVzc1RpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZBMkI2MDcx
RTU2NzVBMjAwQzNERURBIC8qIEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3Bv
bnNpdmVuZXNzVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyNjksNyAr
NDI4NywxMSBAQAogCQk0NkM1QjdDQjI3QUFEREJFMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyTGli
V2ViUlRDUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlV29ya2VyTGliV2ViUlRDUHJv
dmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDNUI3Q0MyN0FBRERCRTAw
MEM1QjQ3IC8qIFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDZDNUI3Q0QyN0FBRERCRTAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckZy
YW1lTG9hZGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVdvcmtlckZyYW1lTG9hZGVy
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2QzkxNkE4Mjc5OUQwOUQw
MDFBNEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDZDOTE2QTkyNzk5RDA5RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDZDRTNCMTAyM0Q4QzgzRDAwMTZBOTZBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENv
dW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZExp
c3RDb3VudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZENDhGQ0MyNzk5RDdE
RDAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2RDQ4RkNEMjc5OUQ3REUw
MDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZERjA2MzkxRjM5MDVFNTAwMTk4MEJCIC8q
IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NkU5NzYwQTI3NTdGNkM5MDBBQ0REMzcgLyogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5
Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkJyb2FkY2FzdENoYW5uZWxS
ZWdpc3RyeS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyNzks
NiArNDMwMSw3IEBACiAJCTQ2RUUyODRBMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRj
YXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5l
dHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2RUUyODRCMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRj
YXN0Q2hhbm5lbFJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NkVFMjg0QzI2OUUwNTE3MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2Fz
dENoYW5uZWxSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3
b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQ2RUUzRThBMjc2M0ZEMkEwMDYwQzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24u
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RjM4RThCMjQxNkU2
NkQwMDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NkY5QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0Zvcndh
cmRDYWNoZUVudHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tG
b3J3YXJkQ2FjaGVFbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTMxMDJC
QzI2ODNGM0E1MDAyQkI4ODUgLyogQXBwUHJpdmFjeVJlcG9ydC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
cHBQcml2YWN5UmVwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00OTk3LDYg
KzUwMjAsNyBAQAogCQk2QkU5NjlDODFFNTRENENGMDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0NsYXNzaWZpZXJDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkJFOTY5QzkxRTU0RDRDRjAwOEI3NDgzIC8qIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QkU5NjlDQzFFNTRFMDU0MDA4Qjc0ODMgLyogUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNkNBRUNCNUUyNzQ2NUFFMzAwQUI3OEQwIC8qIFVuaWZpZWRTb3Vy
Y2UxMTYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVW5pZmllZFNvdXJjZTExNi5jcHA7IHBhdGgg
PSAiRGVyaXZlZFNvdXJjZXMvV2ViS2l0L3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlMTE2
LmNwcCI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTZEOEE5MUE1MTFG
MEVGRDEwMEREMDFGRSAvKiBjb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IG5hbWUgPSBjb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbjsgcGF0aCA9IFdlYlByb2Nlc3Mv
Y29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTZFRTg0OUM2MTM2OEQ5MkQwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tJbnNwZWN0b3JQcml2YXRlTWFjLmg7IHBh
dGggPSBtYWMvV0tJbnNwZWN0b3JQcml2YXRlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcxMTcyNUE4MjI4RDU2M0EwMDAxODUxNCAvKiBXZWJzaXRlTGVnYWN5T3ZlcmZsb3dT
Y3JvbGxpbmdUb3VjaFBvbGljeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJzaXRlTGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaFBvbGljeS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNTE2MSw2ICs1MTg1LDcgQEAKIAkJN0M5RDE1MzYxODQ1ODREQTAw
OUQzOTE4IC8qIFdLQnJvd3NpbmdDb250ZXh0R3JvdXBJbnRlcm5hbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NBMjU0RUExODI5OTNDRTAwRkM4QTQxIC8qIFdL
QnJvd3NpbmdDb250ZXh0UG9saWN5RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3Q0EzNzkzRDFBQzM3OEIzMDA3OURDMzcgLyogX1dLVXNlckNvbnRl
bnRFeHRlbnNpb25TdG9yZVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0NBRUNCNUUyNzQ2NUFFMzAwQUI3OEQwIC8qIFVuaWZpZWRTb3VyY2Ux
MTcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVW5pZmllZFNvdXJjZTExNy5jcHA7IHBhdGggPSAi
RGVyaXZlZFNvdXJjZXMvV2ViS2l0L3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlMTE3LmNw
cCI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTdDQjEwMEVFMUZBMkQ3
NEEwMDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNlc0tleXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
V2ViUHJlZmVyZW5jZXNLZXlzLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJQ
cmVmZXJlbmNlc0tleXMuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owog
CQk3Q0IxMDBFRjFGQTJENzRCMDAxNzI5RUUgLyogV2ViUHJlZmVyZW5jZXNLZXlzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFdlYlByZWZlcmVuY2VzS2V5cy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0L1dlYlByZWZlcmVuY2VzS2V5cy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OwogCQk3Q0IxMDBGMDFGQTJENzg0MDAxNzI5RUUgLyogV2ViUHJlZmVyZW5jZXNTdG9yZURl
ZmF1bHRzTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlByZWZlcmVuY2VzU3RvcmVEZWZh
dWx0c01hcC5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViUHJlZmVyZW5jZXNT
dG9yZURlZmF1bHRzTWFwLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
QEAgLTkyODYsNiArOTMxMSwyMCBAQAogCQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNDY4Mzg2NjUyNzYzRkExQjAwQ0Y5MTgyIC8qIFNoYXJlZFdv
cmtlciAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNDZE
NDhGQ0MyNzk5RDdERDAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uY3BwICovLAorCQkJCTQ2RDQ4RkNEMjc5OUQ3REUwMDdEMjAxNCAvKiBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi8sCisJCQkJNDZDOTE2QTgyNzk5
RDA5RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAgKi8sCisJCQkJNDZDOTE2
QTkyNzk5RDA5RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5oICovLAorCQkJCTQ2
RUUzRThBMjc2M0ZEMkEwMDYwQzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluICovLAorCQkJCTQ2ODM4NjY3Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggKi8sCisJCQkJNDY4Mzg2NjgyNzYzRkFCMTAwQ0Y5
MTgyIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwICovLAorCQkJKTsKKwkJ
CXBhdGggPSBTaGFyZWRXb3JrZXI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9Owog
CQk0NjlERTgwMTI3M0VDQzVEMDA5MzAyNzYgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtOTMzNyw2ICs5Mzc2LDcgQEAKIAkJNTEwQ0M3REEx
NjEzOEUwMTAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0NjgzODY2NTI3NjNGQTFCMDBDRjkxODIgLyogU2hh
cmVkV29ya2VyICovLAogCQkJCUU0ODlEMjgyMUEwQTJCRTgwMDc4QzA2QSAvKiBjYWNoZSAqLywK
IAkJCQk3QTg0M0ExRDIxRTQxRkQ5MDBERUY2NjMgLyogQ2xhc3NpZmllciAqLywKIAkJCQk3RUM0
RjBGODE4RTRBOTIyMDA4MDU2QUYgLyogY29jb2EgKi8sCkBAIC05NDQ4LDYgKzk0ODgsMTQgQEAK
IAkJCQk0NkM1QjdDQzI3QUFEREJFMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJD
bGllbnQuY3BwICovLAogCQkJCTQ2QzVCN0NEMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1vdGVXb3Jr
ZXJGcmFtZUxvYWRlckNsaWVudC5oICovLAogCQkJCTQ2QzVCN0NCMjdBQUREQkUwMDBDNUI0NyAv
KiBSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92aWRlci5oICovLAorCQkJCTQ2MUUxQkVDMjc5QTAx
MEUwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3Bw
ICovLAorCQkJCTQ2MUUxQkVGMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCAqLywKKwkJCQk0NjFFMUJGMDI3OUEwMTBGMDA2QUY1M0Ig
LyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluICov
LAorCQkJCTQ2OTQzRENFMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLmNwcCAqLywKKwkJCQk0Njk0M0RDRDI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oICovLAorCQkJCTQ2OTQzRENCMjc2M0Y4MzQwMDRC
NjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovLAor
CQkJCTQ2OTQzRENDMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5j
cHAgKi8sCisJCQkJNDY5NDNEQ0YyNzYzRjgzNTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlclBy
b3ZpZGVyLmggKi8sCiAJCQkJNDEzMUYzRTAxRjk4NzEyQzAwNTk5OTVBIC8qIFdlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwICovLAogCQkJCTQxOUFDRjlCMUY5ODFEMjYwMDlGMUE4
MyAvKiBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggKi8sCiAJCQkJNTFCRUI2Mjkx
RjNBNUFDRDAwNTAyOUI5IC8qIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAgKi8sCkBAIC0x
Mjc3Myw2ICsxMjgyMSw3IEBACiAJCQkJNDlGQkYwMDAyMzlCMUY3NTAwQkQwMzJGIC8qIF9XS1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUZC
RjAwOTIzOUYwOEUwMDBCRDAzMkYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFy
dHlJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc2MzExRkQxQTNGQjVGNzAwNUEyRTUx
IC8qIF9XS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0
NjFFMUJGMjI3OUEwMTE2MDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzYzMTFGRTFBM0ZCNjAwMDA1QTJFNTEg
LyogX1dLU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUEwMDJENDQxOTZCMzM4OTAwQjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUEwMDJENDMxOTZCMzM3MDAwQjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0
ZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTEyOTM3LDYgKzEyOTg2LDcgQEAKIAkJCQlF
MTcwODc2QzE2RDZDQTY5MDBGOTkyMjYgLyogQmxvYlJlZ2lzdHJ5UHJveHkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTRGNjAxNDMyMTU1QzVBQTIwMDFGQkRFMCAvKiBCbG9ja2luZ1Jlc3BvbnNlTWFw
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU3MDUxMTFCRTQxMEU2MDA4NzRBRjEgLyogQmxvY2tT
UEkuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2QzkxNkFBMjc5OUQwQTIwMDFBNEU3QyAvKiBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMzA2NUZBMTI1OTM0NEUw
MEU3MTI3OCAvKiBDYWNoZU1vZGVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTg5N0VEODFGNDE1
RDhBMDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MUZBQkQyQTFGNERFMDAxMDA2QTZDOTcgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaCBpbiBI
ZWFkZXJzICovLApAQCAtMTM0MDQsNiArMTM0NTQsNyBAQAogCQkJCTFBQzEzMzY4MTg1NjVCNTcw
MEYzRUMwNSAvKiBVc2VyRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q0OTFCMDgxRTcwRDA1
RjAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDRDQ5MUIwRTFFNzMyRTREMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZFRTNFOEIyNzYzRkQyRjAwNjBDNzBGIC8qIFdl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUNENDkx
QjEzMUU3MzQ4MjEwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmggaW4g
SGVhZGVycyAqLywKIAkJCQlDRDQ5MUIxODFFNzM1MjU1MDAwMDkwNjYgLyogVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzI5N0Y5RjFD
MTdCQkVBMDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTM0OTAsNiArMTM1NDEsNyBAQAogCQkJCTMzMDkzNDRBMTMxNUI5MjIwMDk3
QTdCQyAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxREQ3QjIxMTREQzM5NjAwNUFEQUYzIC8qIFdlYkNvcmVBcmd1bWVudENvZGVycy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTEyRjU4OUIxMkE4ODM4ODAwNjI5NTMwIC8qIFdlYkNyZWRlbnRp
YWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2OTQzREQwMjc2M0Y4M0EwMDRCNjEwRSAvKiBXZWJT
aGFyZWRXb3JrZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBODNGNkQxQTVCNjNG
RjAwMDI2RUM2IC8qIFdlYkRhdGFiYXNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU1
MkNGNTUyMjBBMzVDM0EwMERBREEyNyAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUU1NjhCOTFGMjBBM0FCMkYwMEUzQzg1NiAvKiBXZWJEYXRhTGlz
dFN1Z2dlc3Rpb25zRHJvcGRvd24uaCBpbiBIZWFkZXJzICovLApAQCAtMTM1MjQsNiArMTM1NzYs
NyBAQAogCQkJCUJDMDMyRDdGMTBGNDM3OEQwMDU4QzE1QSAvKiBXZWJGcmFtZUxvYWRlckNsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5MUYyQ0IxMjFCNjdBRDAwRUJGN0U4IC8qIFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQjlGNkEwMTEyM0E4
NEIwMEExMzdFMCAvKiBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaCBpbiBIZWFkZXJzICov
LAorCQkJCTQ2OTQzREQxMjc2M0Y4M0YwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzlCMzhBMTEwRjUzOEJFMDA0NDNBMTUg
LyogV2ViRnJhbWVQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1QkUxQUIxRDU1NUFBMDAw
REQ3QzY4IC8qIFdlYkdhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMTc5MUQ1M0ZF
OEYwMEREN0M2OCAvKiBXZWJHYW1lcGFkUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTM2
NTAsNiArMTM3MDMsNyBAQAogCQkJCTFBNDgzMkQ3MUE5Q0RGOTYwMDhCNERGRSAvKiBXZWJzaXRl
RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0ODMyRDExQTlCREMyRjAwOEI0REZFIC8qIFdl
YnNpdGVEYXRhUmVjb3JkLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTUzQzJBQTFBMzI1NzMwMDA0
RThDNzAgLyogV2Vic2l0ZURhdGFTdG9yZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZENDhGQ0Uy
Nzk5RDdFMTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMUY3RDQxMUVCMUJDRjUwMEU0N0I4MyAvKiBXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzExNzI1QTkyMjhE
NTY0MzAwMDE4NTE0IC8qIFdlYnNpdGVMZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoUG9saWN5
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNENCMDlFNTIyNUQ1QTA5MDA4OTE0ODcgLyogV2Vic2l0
ZU1lZGlhU291cmNlUG9saWN5LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCmluZGV4IDhkM2I1N2JkMThkYy4uYmIzNTQ3ZjQ2YWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHAKQEAgLTU3LDYgKzU3LDEwIEBACiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmgiCisjaW5jbHVk
ZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNs
dWRlICJXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0
Q2hhbm5lbC5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWxNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIldlYlNvY2tldFN0cmVhbS5oIgpAQCAtMTczLDYgKzE3NywxNiBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBJUAogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCisgICAgaWYgKGRlY29k
ZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgc2hhcmVkV29y
a2VyQ29ubmVjdGlvbigpLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgQVNTRVJUKFNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpOworICAgICAgICBpZiAoYXV0
byogY29udGV4dE1hbmFnZXJDb25uZWN0aW9uID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6
OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFdlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiY+KCpjb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24pLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAgaWYg
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYXltZW50Q29v
cmRpbmF0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewpAQCAtMzA3LDYgKzMyMSwxMyBAQCBX
ZWJTV0NsaWVudENvbm5lY3Rpb24mIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6c2VydmljZVdv
cmtlckNvbm5lY3Rpb24oKQogfQogI2VuZGlmCiAKK1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24mIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6c2hhcmVkV29ya2VyQ29ubmVjdGlvbigp
Cit7CisgICAgaWYgKCFtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAgIG1fc2hhcmVk
V29ya2VyQ29ubmVjdGlvbiA9IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OmNyZWF0
ZSgpOworICAgIHJldHVybiAqbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uOworfQorCiB2b2lkIE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6bWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0KGNvbnN0IFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbWVzc2FnZVBvcnRJZGVudGlmaWVyKQogewog
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm1lc3NhZ2VzQXZhaWxhYmxlRm9yUG9ydChtZXNz
YWdlUG9ydElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCBkNjJkZmU0ZGY1
YWEuLjVmMDUwNDA5YWM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTQ4LDYgKzQ4LDcg
QEAgZW51bSBjbGFzcyBIVFRQQ29va2llQWNjZXB0UG9saWN5IDogdWludDhfdDsKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI7CitjbGFzcyBXZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOwogY2xhc3MgV2ViU1dDbGllbnRDb25uZWN0aW9u
OwogCiBjbGFzcyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24+LCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCB7CkBAIC03
MCw2ICs3MSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgV2Vi
U1dDbGllbnRDb25uZWN0aW9uJiBzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbigpOwogI2VuZGlmCisg
ICAgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiYgc2hhcmVkV29ya2VyQ29ubmVjdGlv
bigpOwogCiAjaWYgSEFWRShBVURJVF9UT0tFTikKICAgICB2b2lkIHNldE5ldHdvcmtQcm9jZXNz
QXVkaXRUb2tlbihzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4pIHsgbV9u
ZXR3b3JrUHJvY2Vzc0F1ZGl0VG9rZW4gPSBhdWRpdFRva2VuOyB9CkBAIC0xMjMsNiArMTI1LDcg
QEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgUmVmUHRyPFdlYlNX
Q2xpZW50Q29ubmVjdGlvbj4gbV9zd0Nvbm5lY3Rpb247CiAjZW5kaWYKKyAgICBSZWZQdHI8V2Vi
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbj4gbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uOwog
ICAgIFdlYkNvcmU6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kgbV9jb29raWVBY2NlcHRQb2xpY3k7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmM5MDAzNmUwYzU1
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSwxMjkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlV2ViTG9ja1Jl
Z2lzdHJ5LmgiCisjaW5jbHVkZSAiUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNp
bmNsdWRlICJSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYkJy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIgorI2luY2x1ZGUgIldlYkNhY2hlU3RvcmFnZVByb3Zp
ZGVyLmgiCisjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLmgiCisjaW5j
bHVkZSAiV2ViRGF0YWJhc2VQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNs
dWRlICJXZWJQcmVmZXJlbmNlc0tleXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5j
bHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiV2ViU29ja2V0UHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0VtcHR5Q2xpZW50cy5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvUGFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUNvbmZpZ3VyYXRpb24u
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvVXNlckFnZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Xb3JrZXJGZXRjaFJlc3VsdC5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6
Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcywgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgUGFnZUdyb3VwSWRlbnRpZmllciBwYWdl
R3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBwcmVmZXJl
bmNlc1N0b3JlLCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYgaW5pdGlhbGl6YXRp
b25EYXRhKQorICAgIDogbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXVEZNb3ZlKGNvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKSkKKyAgICAsIG1fcmVnaXN0cmFibGVEb21haW4oV1RGTW92
ZShyZWdpc3RyYWJsZURvbWFpbikpCisgICAgLCBtX3BhZ2VHcm91cElEKHBhZ2VHcm91cElEKQor
ICAgICwgbV93ZWJQYWdlUHJveHlJRCh3ZWJQYWdlUHJveHlJRCkKKyAgICAsIG1fcGFnZUlEKHBh
Z2VJRCkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAsIG1fdXNlckFnZW50KFdlYkNvcmU6OnN0
YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSh7IH0pKQorI2Vsc2UKKyAgICAsIG1f
dXNlckFnZW50KHN0YW5kYXJkVXNlckFnZW50KCkpCisjZW5kaWYKKyAgICAsIG1fdXNlckNvbnRl
bnRDb250cm9sbGVyKFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6Z2V0T3JDcmVhdGUoaW5pdGlh
bGl6YXRpb25EYXRhLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpKQoreworI2lmIEVO
QUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFk
ZENvbnRlbnRSdWxlTGlzdHMoV1RGTW92ZShpbml0aWFsaXphdGlvbkRhdGEuY29udGVudFJ1bGVM
aXN0cykpOworI2VuZGlmCisKKyAgICB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKHByZWZlcmVuY2Vz
U3RvcmUpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmRpc2FibGVUZXJtaW5hdGlvbigp
OworfQorCitXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246On5XZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CisKK3ZvaWQgV2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjplc3RhYmxpc2hDb25uZWN0aW9u
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBt
X2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250
ZXh0Q29ubmVjdGlvbiB7IG1fd2ViUGFnZVByb3h5SUQsIG1fcmVnaXN0cmFibGVEb21haW4gfSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIDApOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdl
YkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjpQb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QgeyBzaGFyZWRXb3JrZXJJZGVudGlm
aWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMIH0s
IDApOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
dXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkK
K3sKKyAgICBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlc0dlbmVyYXRlZChzdG9yZSk7CisgICAg
bV9wcmVmZXJlbmNlc1N0b3JlID0gc3RvcmU7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpsYXVuY2hTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiYgb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdv
cmtlcklkZW50aWZpZXIsIFVSTCYmIHVybCwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmIHdvcmtl
ck9wdGlvbnMsIFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYgd29ya2VyRmV0Y2hSZXN1bHQp
Cit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpsYXVuY2hTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50
aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAg
IGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBXZWJDb3JlOjpwYWdlQ29uZmlndXJhdGlvbldpdGhF
bXB0eUNsaWVudHMoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2Vzc2lvbklEKCkpOworCisgICAg
cGFnZUNvbmZpZ3VyYXRpb24uZGF0YWJhc2VQcm92aWRlciA9IFdlYkRhdGFiYXNlUHJvdmlkZXI6
OmdldE9yQ3JlYXRlKG1fcGFnZUdyb3VwSUQpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnNvY2tl
dFByb3ZpZGVyID0gV2ViU29ja2V0UHJvdmlkZXI6OmNyZWF0ZShtX3dlYlBhZ2VQcm94eUlEKTsK
KyAgICBwYWdlQ29uZmlndXJhdGlvbi5icm9hZGNhc3RDaGFubmVsUmVnaXN0cnkgPSBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5icm9hZGNhc3RDaGFubmVsUmVnaXN0cnkoKTsKKyAgICBwYWdlQ29u
ZmlndXJhdGlvbi53ZWJMb2NrUmVnaXN0cnkgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJM
b2NrUmVnaXN0cnkoKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudFByb3ZpZGVy
ID0gbV91c2VyQ29udGVudENvbnRyb2xsZXI7CisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAgcGFn
ZUNvbmZpZ3VyYXRpb24ubGliV2ViUlRDUHJvdmlkZXIgPSBtYWtlVW5pcXVlUmVmPFJlbW90ZVdv
cmtlckxpYldlYlJUQ1Byb3ZpZGVyPigpOworI2VuZGlmCisKKyAgICBwYWdlQ29uZmlndXJhdGlv
bi5sb2FkZXJDbGllbnRGb3JNYWluRnJhbWUgPSBtYWtlVW5pcXVlUmVmPFJlbW90ZVdvcmtlckZy
YW1lTG9hZGVyQ2xpZW50PihtX3dlYlBhZ2VQcm94eUlELCBtX3BhZ2VJRCwgV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBtX3VzZXJBZ2VudCk7CisKKyAgICBhdXRvIHBhZ2Ug
PSBtYWtlVW5pcXVlUmVmPFdlYkNvcmU6OlBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24p
KTsKKyAgICBpZiAobV9wcmVmZXJlbmNlc1N0b3JlKSB7CisgICAgICAgIFdlYlBhZ2U6OnVwZGF0
ZVNldHRpbmdzR2VuZXJhdGVkKCptX3ByZWZlcmVuY2VzU3RvcmUsIHBhZ2UtPnNldHRpbmdzKCkp
OworICAgICAgICBwYWdlLT5zZXR0aW5ncygpLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShzdGF0
aWNfY2FzdDxXZWJDb3JlOjpTdG9yYWdlQmxvY2tpbmdQb2xpY3k+KG1fcHJlZmVyZW5jZXNTdG9y
ZS0+Z2V0VUludDMyVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnN0b3JhZ2VCbG9ja2lu
Z1BvbGljeUtleSgpKSkpOworICAgIH0KKyAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eTo6c2V0dXBQYWdlRm9yU2hhcmVkV29ya2VyKHBhZ2UuZ2V0KCksIHVybCwgb3JpZ2luLCB3
b3JrZXJGZXRjaFJlc3VsdCk7CisgICAgYXV0byBzaGFyZWRXb3JrZXJUaHJlYWRQcm94eSA9IFdl
YkNvcmU6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpjcmVhdGUoV1RGTW92ZShwYWdlKSwgc2hh
cmVkV29ya2VySWRlbnRpZmllciwgb3JpZ2luLCB1cmwsIFdURk1vdmUod29ya2VyRmV0Y2hSZXN1
bHQpLCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMpLCBtX3VzZXJBZ2VudCwgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuY2FjaGVTdG9yYWdlUHJvdmlkZXIoKSk7CisKKyAgICBXZWJDb3JlOjpTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkucmVnaXN0ZXJTaGFyZWRXb3JrZXJUaHJl
YWQoV1RGTW92ZShzaGFyZWRXb3JrZXJUaHJlYWRQcm94eSkpOworfQorCit2b2lkIFdlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Y2xvc2UoKQoreworICAgIFJFTEVBU0Vf
TE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6Y2xvc2U6IFNoYXJlZCB3b3JrZXIgcHJvY2VzcyBpcyByZXF1ZXN0ZWQgdG8gc3RvcCBhbGwg
c2hhcmVkIHdvcmtlcnMiKTsKKyAgICBzZXRBc0Nsb3NlZCgpOworCisgICAgbV9jb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OkNsb3NlU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24geyB9LCAwKTsKKyAgICBX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc3RvcEFsbFNo
YXJlZFdvcmtlcnMoKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbmFibGVUZXJtaW5h
dGlvbigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi5hZTIzMjM2NTYyOGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uaApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiSWRlbnRpZmllclR5cGVzLmgiCisjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworc3RydWN0IENsaWVudE9yaWdpbjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKK3N0
cnVjdCBXb3JrZXJPcHRpb25zOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyOworc3RydWN0IFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlv
bkRhdGE7CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVj
dGlvbiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUGFnZUdyb3VwSWRlbnRpZmllciwgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUmLCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYpOworICAgIH5X
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oKTsKKworICAgIHZvaWQgZXN0
YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAg
IHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpIGZpbmFsOworCisgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5h
bDsKKworcHJpdmF0ZToKKyAgICAvLyBJUEMgTWVzc2FnZXMuCisgICAgdm9pZCBsYXVuY2hTaGFy
ZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklk
ZW50aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYsIFdlYkNvcmU6Oldvcmtl
ckZldGNoUmVzdWx0JiYpOworICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlJik7CisgICAgdm9pZCBzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNl
ckFnZW50KSB7IG1fdXNlckFnZW50ID0gV1RGTW92ZSh1c2VyQWdlbnQpOyB9CisgICAgdm9pZCBj
bG9zZSgpOworCisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzczsKKyAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9t
YWluOworICAgIFBhZ2VHcm91cElkZW50aWZpZXIgbV9wYWdlR3JvdXBJRDsKKyAgICBXZWJQYWdl
UHJveHlJZGVudGlmaWVyIG1fd2ViUGFnZVByb3h5SUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgbV9wYWdlSUQ7CisgICAgU3RyaW5nIG1fdXNlckFnZW50OworICAgIFJlZjxXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI+IG1fdXNlckNvbnRlbnRDb250cm9sbGVyOworICAgIHN0ZDo6b3B0
aW9uYWw8V2ViUHJlZmVyZW5jZXNTdG9yZT4gbV9wcmVmZXJlbmNlc1N0b3JlOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi5kODJhNGFkYTUzZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMCBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CisgICAgTGF1bmNoU2hhcmVkV29ya2Vy
KHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFVSTCB1cmwsIHN0cnVjdCBXZWJD
b3JlOjpXb3JrZXJPcHRpb25zIHdvcmtlck9wdGlvbnMsIHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJG
ZXRjaFJlc3VsdCB3b3JrZXJGZXRjaFJlc3VsdCkKKyAgICBQb3N0Q29ubmVjdEV2ZW50KFdlYkNv
cmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgV2ViQ29y
ZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBwb3J0LCBTdHJpbmcgc291cmNlT3JpZ2luKQorICAg
IFRlcm1pbmF0ZVNoYXJlZFdvcmtlcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNo
YXJlZFdvcmtlcklkZW50aWZpZXIpCisgICAgVXBkYXRlUHJlZmVyZW5jZXNTdG9yZShzdHJ1Y3Qg
V2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlKQorICAgIFNldFVzZXJBZ2VudChTdHJp
bmcgdXNlckFnZW50KQorICAgIENsb3NlKCkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kN2Q5
OTRkZTFmNzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDY5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisj
aW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29y
a2VyT3B0aW9ucy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworI2RlZmluZSBDT05ORUNUSU9O
X1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFt3
ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbjo6IiBmbXQsIHRoaXMsIFdlYkNvcmU6OlByb2Nlc3M6OmlkZW50aWZpZXIoKS50b1VJ
bnQ2NCgpLCAjI19fVkFfQVJHU19fKQorCitXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
OjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JF
TEVBU0VfTE9HKCJXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOiIpOworfQorCitXZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjp+V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygifldlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb246Iik7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiogV2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAoreworICAg
IHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb246OnJlcXVlc3RTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwsIFdlYkNvcmU6OlRyYW5zZmVycmVk
TWVzc2FnZVBvcnQmJiBwb3J0LCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJP
cHRpb25zKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coInJlcXVlc3RTaGFyZWRXb3Jr
ZXI6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpSZXF1ZXN0U2hhcmVkV29y
a2VyIHsgb3JpZ2luLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCB1cmwsIFdURk1vdmUo
cG9ydCksIHdvcmtlck9wdGlvbnMgfSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbjo6c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQorewor
ICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coInNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5
OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6U2hhcmVkV29ya2VyT2JqZWN0
SXNHb2luZ0F3YXkgeyBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIH0pOworfQorCisjdW5k
ZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPRworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLmVjYmY0MmY2NzYyYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApA
QCAtMCwwICsxLDU0IEBACisKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJN
ZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24sIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uKTsgfQorICAgIH5XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uKCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIGZpbmFsOworCitwcml2YXRlOgorICAgIFdlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24oKTsKKworICAgIC8vIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24uCisgICAgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0
IFVSTCYsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgY29uc3QgV2ViQ29yZTo6
V29ya2VyT3B0aW9ucyYpIGZpbmFsOworICAgIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2lu
Z0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikgZmluYWw7CisKKyAg
ICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7
CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiAwOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMWNlYTE5MzJlOWY2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI3IEBACisjIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFdlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24geworICAgIEZldGNoU2NyaXB0SW5DbGllbnQoVVJMIHVybCwgV2ViQ29yZTo6U2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBz
dHJ1Y3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyB3b3JrZXJPcHRpb25zKSAtPiAoc3RydWN0IFdl
YkNvcmU6OldvcmtlckZldGNoUmVzdWx0IGZldGNoUmVzdWx0KSBBc3luYworICAgIE5vdGlmeVdv
cmtlck9iamVjdE9mTG9hZEZhaWx1cmUoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQorICAgIFBvc3RFeGNlcHRpb25Ub1dv
cmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIsIFN0cmluZyBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBTdHJpbmcgc291cmNlVVJMKQorfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlk
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDQ5NWE0MjI1
ZTYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIu
aCIKKworI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldl
YlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgi
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJTaGFyZWRXb3JrZXJQcm92aWRlciYgV2ViU2hh
cmVkV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyPiBwcm92aWRlcjsKKyAgICByZXR1cm4gcHJvdmlk
ZXI7Cit9CisKK1dlYlNoYXJlZFdvcmtlclByb3ZpZGVyOjpXZWJTaGFyZWRXb3JrZXJQcm92aWRl
cigpID0gZGVmYXVsdDsKKworV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiog
V2ViU2hhcmVkV29ya2VyUHJvdmlkZXI6OnNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKQoreworICAg
IHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKCkuc2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNo
YXJlZFdvcmtlclByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uODZlM2QyZmU3MGEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaApAQCAtMCwwICsxLDQ4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJl
ZFdvcmtlclByb3ZpZGVyLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb247Cit9
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJQcm92aWRlciBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTaGFyZWRXb3JrZXJQcm92aWRlciB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyJiBzaW5nbGV0b24oKTsKKworcHJpdmF0
ZToKKyAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8V2ViU2hhcmVkV29ya2VyUHJvdmlkZXI+Owor
ICAgIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyKCk7CisKKyAgICBXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uKiBzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCkgZmluYWw7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAppbmRleCAwMmRhOTExNDdmOGEuLjhjNzRjN2NiY2E0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtODQsNiArODQsOSBAQAogI2luY2x1ZGUgIldlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNlcnZpY2VXb3JrZXJQcm92aWRl
ci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3Nh
Z2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJX
ZWJTb2NrZXRTdHJlYW0uaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUgIldl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCkBAIC0xMzMsNiArMTM2LDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvVXNlckdlc3R1cmVJbmRpY2F0b3IuaD4KICNpbmNsdWRlIDxwYWwvTG9nZ2luZy5oPgogI2lu
Y2x1ZGUgPHd0Zi9BbGdvcml0aG1zLmg+CkBAIC01NjksNiArNTczLDcgQEAgdm9pZCBXZWJQcm9j
ZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycykKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgU2VydmljZVdvcmtl
clByb3ZpZGVyOjpzZXRTaGFyZWRQcm92aWRlcihXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNp
bmdsZXRvbigpKTsKICNlbmRpZgorICAgIFNoYXJlZFdvcmtlclByb3ZpZGVyOjpzZXRTaGFyZWRQ
cm92aWRlcihXZWJTaGFyZWRXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkpOwogCiAjaWYgRU5B
QkxFKFdFQkFTU0VNQkxZKQogICAgIEpTQzo6V2FzbTo6ZW5hYmxlRmFzdE1lbW9yeSgpOwpAQCAt
OTAyLDcgKzkwNyw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlCiAgICAgfQogCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIC8vIEZJWE1FOiBSZW1vdmU/CiAgICAgaWYgKGRlY29k
ZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIEFTU0VSVChTV0Nv
bnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpOwogICAgICAgICBpZiAoYXV0
byogY29udGV4dE1hbmFnZXJDb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9u
KCkuY29ubmVjdGlvbigpKQpAQCAtOTExLDYgKzkxNSwxMyBAQCB2b2lkIFdlYlByb2Nlc3M6OmRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVy
JiBkZQogICAgIH0KICNlbmRpZgogCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFt
ZSgpID09IE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBBU1NFUlQoU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSk7CisgICAgICAgIGlmIChhdXRv
KiBjb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6
c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uJj4oKmNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbikuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKICAgICBMT0dfRVJST1IoIlVuaGFuZGxlZCB3ZWIgcHJvY2VzcyBtZXNz
YWdlICclcycgKGRlc3RpbmF0aW9uOiAlIiBQUkl1NjQgIiBwaWQ6ICVkKSIsIGRlc2NyaXB0aW9u
KGRlY29kZXIubWVzc2FnZU5hbWUoKSksIGRlY29kZXIuZGVzdGluYXRpb25JRCgpLCBzdGF0aWNf
Y2FzdDxpbnQ+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSkpOwogfQogCkBAIC0xOTE3LDYgKzE5Mjgs
MTYgQEAgTGliV2ViUlRDTmV0d29yayYgV2ViUHJvY2Vzczo6bGliV2ViUlRDTmV0d29yaygpCiAg
ICAgcmV0dXJuICptX2xpYldlYlJUQ05ldHdvcms7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6ZXN0
YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VH
cm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFn
ZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZSYgc3RvcmUsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFNlcnZpY2VX
b3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXphdGlvbkRhdGEsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICAvLyBXZSBhcmUgaW4g
dGhlIFNoYXJlZCBXb3JrZXIgY29udGV4dCBwcm9jZXNzIGFuZCB0aGUgY2FsbCBiZWxvdyBlc3Rh
Ymxpc2hlcyBvdXIgY29ubmVjdGlvbiB0byB0aGUgTmV0d29yayBQcm9jZXNzCisgICAgLy8gYnkg
Y2FsbGluZyBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uIFNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0aGUgc2FtZSB1bmRlcmx5aW5nIElQQzo6Q29ubmVjdGlv
biBhcyB0aGUKKyAgICAvLyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gZm9yIHN5bmNocm9uaXph
dGlvbiBwdXJwb3Nlcy4KKyAgICBhdXRvJiBpcGNDb25uZWN0aW9uID0gZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworICAgIFNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDb25uZWN0aW9uKG1ha2VVbmlxdWU8V2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uPihpcGNDb25uZWN0aW9uLCBXVEZNb3ZlKHJlZ2lz
dHJhYmxlRG9tYWluKSwgcGFnZUdyb3VwSUQsIHdlYlBhZ2VQcm94eUlELCBwYWdlSUQsIHN0b3Jl
LCBXVEZNb3ZlKGluaXRpYWxpemF0aW9uRGF0YSkpKTsKKyAgICBTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpLT5lc3RhYmxpc2hDb25uZWN0aW9uKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKIHZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQs
IGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJl
Z2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJbml0aWFs
aXphdGlvbkRhdGEmJiBpbml0aWFsaXphdGlvbkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oCmluZGV4IGRkOGQ3NGZmZjI2OS4uNjVmNzczMjAxYTczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTQ2OSw2ICs0NjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
Z2FtZXBhZERpc2Nvbm5lY3RlZCh1bnNpZ25lZCBpbmRleCk7CiAjZW5kaWYKIAorICAgIHZvaWQg
ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBh
Z2VHcm91cElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mJiwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lk
IGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
UGFnZUdyb3VwSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJ
bml0aWFsaXphdGlvbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpp
bmRleCBkZmQzMDY0NTYzZjkuLmU1NTI5NmI5MDRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTEwMCw2ICsxMDAsOCBAQCBtZXNz
YWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewogICAgIEdh
bWVwYWREaXNjb25uZWN0ZWQodW5zaWduZWQgaW5kZXgpCiAjZW5kaWYKIAorICAgIEVzdGFibGlz
aFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJLaXQ6OlBh
Z2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRp
ZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1
Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiBkb21haW4sIHN0cnVjdCBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlv
bkRhdGEgaW5pdGlhbGl6YXRpb25EYXRhKSAtPiAoKSBBc3luYworCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogICAgIEVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBX
ZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBz
dG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRh
dGEgaW5pdGlhbGl6YXRpb25EYXRhKSAtPiAoKSBBc3luYwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450684</attachid>
            <date>2022-02-02 11:53:11 -0800</date>
            <delta_ts>2022-02-02 12:47:11 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>235958_SharedWorker_multiProcess_wip.patch</filename>
            <type>text/plain</type>
            <size>325368</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDQwMjQ2NmU0OWYwZS4uNDNiYjdhYTNkNmJlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTQ2Myw3ICs0NjMsNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYi1sb2Nrcy9zdGVhbC50ZW50YXRpdmUuaHR0cHMuYW55Lmh0bWwgWyBEdW1wSgog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3Ro
ZS1hbmFseXNlcm5vZGUtaW50ZXJmYWNlL3Rlc3QtYW5hbHlzZXItbWluaW11bS5odG1sIFsgRHVt
cEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUt
ZGlzY29ubmVjdC1hdWRpb3BhcmFtLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NhbWUtb3JpZ2luLWNoZWNr
LnN1Yi5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMuaHRt
bCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCiBmYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWJh
Y2stZm9yd2FyZC1jYWNoZS5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGZhc3Qv
aGlzdG9yeS9wYWdlLWNhY2hlLWNyZWF0ZUltYWdlQml0bWFwLmh0bWwgWyBEdW1wSlNDb25zb2xl
TG9nSW5TdGRFcnIgXQogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLWluLWxv
YWRpbmctaWZyYW1lLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQpAQCAtNTE1Nyw2
ICs1MTU2LDEwIEBAIHdlYmtpdC5vcmcvYi8xODM5OTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3Nzb20vY3NzLXN0eWxlLWF0dHItZGVjCiAjIFRlc3QgaXMgY3Jhc2hpbmcg
aW4gRGVidWcgYnVpbGRzIHNpbmNlIGltcG9ydC4KIHdlYmtpdC5vcmcvYi8yMzQ5NzcgWyBEZWJ1
ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9mb2N1cy1ldmVu
dC1kb2N1bWVudC1tb3ZlLmh0bWwgWyBTa2lwIF0KIAorIyBUZXN0IGlzIGZsYWt5IGJlY2F1c2Ug
TWVzc2FnZVBvcnQgbWVzc2FnZXMgbWF5IGdldCByZWNlaXZlZCBpbiBhIGRpZmZlcmVudCBvcmRl
ciB3aGVuIHNldmVyYWwgTWVzc2FnZVBvcnRzIGFyZSBpbnZvbHZlZCwKKyMgZHVlIHRvIGhvdyBN
ZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpIGlzIGltcGxlbWVudGVkLgoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0
aW9ucy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIEZhaWx1cmUgUGFzcyBdCisKICMg
UGx1Z2lucwogIyBGSVhNRTogUmVtb3ZlIHRoZXNlIHRlc3RzLgogcGx1Z2lucy8gWyBTa2lwIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0
LW9ubHkuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3
b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dAppbmRleCAwZTk5NzI0Yjg2NGIuLjY4
OThiNTRhYWI2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdv
cmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRl
LXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSw2
ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2Nh
bGhvc3Q6OTQ0NC9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zdXBwb3J0L3Jlc291cmNlLnB5P2Ny
b3NzLW9yaWdpbi1mZXRjaAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8v
d3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQvcmVzb3Vy
Y2UucHk/Y3Jvc3Mtb3JpZ2luLXhocgotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0
dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQv
cmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLWZldGNoCiAKIFBBU1MgU2FtZS1vcmlnaW4gJ2ZldGNo
KCknLgogUEFTUyBTYW1lLW9yaWdpbiBYSFIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lk
ZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWItZXhwZWN0ZWQu
dHh0CmluZGV4IDk3OTEwNjMwMzc4NS4uYmI2NDUyZjQ0YTBhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMu
c3ViLWV4cGVjdGVkLnR4dApAQCAtMiwxMCArMiw5IEBACiBIYXJuZXNzIEVycm9yIChUSU1FT1VU
KSwgbWVzc2FnZSA9IG51bGwKIAogVElNRU9VVCBzaGFyZWR3b3JrZXItc2NyaXB0LXNyYyBUZXN0
IHRpbWVkIG91dAotRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgbm90IGJsb2Nr
ZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgIEEgbmV0d29yayBlcnJvciBvY2N1cnJlZC4KLUZBSUwg
YGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AgUmVmdXNlZCB0byBldmFs
dWF0ZSBhIHN0cmluZyBhcyBKYXZhU2NyaXB0IGJlY2F1c2UgJ3Vuc2FmZS1ldmFsJyBpcyBub3Qg
YW4gYWxsb3dlZCBzb3VyY2Ugb2Ygc2NyaXB0IGluIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1
cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAic2NyaXB0LXNyYyAnc2VsZicgJ25vbmNlLWEnIGJsb2I6
IGZpbGVzeXN0ZW06Ii4KLQotRkFJTCBgc2V0VGltZW91dChbc3RyaW5nXSlgIG5vdCBibG9ja2Vk
IGluIGh0dHA6IHdpdGhvdXQgQ1NQIGFzc2VydF91bnJlYWNoZWQ6IGNhbGxiYWNrIG5vdCBjYWxs
ZWQuIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNj
cmlwdHMoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgTG9hZCBmYWlsZWQKK1BB
U1MgYGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AKK1BBU1MgYHNldFRp
bWVvdXQoW3N0cmluZ10pYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3V0IENTUAogVElNRU9V
VCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgYmxvY2tlZCBpbiBodHRwOiB3aXRoIHNj
cmlwdC1zcmMgJ3NlbGYnIFRlc3QgdGltZWQgb3V0CiBOT1RSVU4gYGV2YWwoKWAgYmxvY2tlZCBp
biBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCiBOT1RSVU4gYHNldFRpbWVvdXQoW3N0cmlu
Z10pYCBibG9ja2VkIGluIGh0dHA6IHdpdGggc2NyaXB0LXNyYyAnc2VsZicKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVk
LnR4dAppbmRleCA0ZWFjMWNjYzA1MjYuLmI4ZWUxM2IwZmZjZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBv
bGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91dC5zdWItZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4
dApAQCAtMSw0ICsxLDQgQEAKIAogRkFJTCBEZWRpY2F0ZWQgd29ya2VyIGluaGVyaXRzIENTUCBm
cm9tIG1haW4gZG9jdW1lbnQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgInNldFRpbWVvdXQgYWxs
b3dlZCIgYnV0IGdvdCAic2V0VGltZW91dCBibG9ja2VkIgotRkFJTCBTaGFyZWQgd29ya2VyIGRl
bGl2ZXJzIGl0cyBvd24gQ1NQIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJzZXRUaW1lb3V0IGJs
b2NrZWQiIGJ1dCBnb3QgInNldFRpbWVvdXQgYWxsb3dlZCIKK1BBU1MgU2hhcmVkIHdvcmtlciBk
ZWxpdmVycyBpdHMgb3duIENTUAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3Jr
ZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNo
ZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggYzEwNzEz
NjU1MjgwLi42Zjg0NGRkNWQ5NDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtl
cnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBj
YWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKQEAgLTUsNyAr
NSw3IEBAIEhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAogUEFTUyBEZWRp
Y2F0ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0CiBQQVNTIERlZGljYXRlZCB3b3JrZXIg
b2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0CiBQQVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIG5v
dC1pbi1jYWNoZSBzY3JpcHQKLVBBU1MgU2hhcmVkIHdvcmtlciBvZiB0aGUgY2FjaGVkIHNjcmlw
dAotUEFTUyBTaGFyZWQgd29ya2VyIG9mIHRoZSBmYWxsYmFja2VkIHNjcmlwdAorRkFJTCBTaGFy
ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJE
b25lOiBjYWNoZWQiIGJ1dCBnb3QgIkVycm9yOiBJbXBvcnRpbmcgYSBub24tY2FjaGVkIHNjcmlw
dCBtdXN0IGZhaWwuIgorRkFJTCBTaGFyZWQgd29ya2VyIG9mIHRoZSBmYWxsYmFja2VkIHNjcmlw
dCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiRG9uZTogZmFsbGJhY2tlZCIgYnV0IGdvdCAiRXJy
b3I6IEltcG9ydGluZyBhIG5vbi1jYWNoZWQgc2NyaXB0IG11c3QgZmFpbC4iCiBUSU1FT1VUIFNo
YXJlZCB3b3JrZXIgb2YgdGhlIG5vdC1pbi1jYWNoZSBzY3JpcHQgVGVzdCB0aW1lZCBvdXQKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3
b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9y
aWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3b3JrZXItcGFydGl0
aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0CmluZGV4IDRlZDg3NDc0
NzZjNy4uNTg2ZDEwMTUyYTM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9hbm9u
eW1vdXMtaWZyYW1lL3NoYXJlZHdvcmtlci1wYXJ0aXRpb25pbmcudGVudGF0aXZlLmh0dHBzLndp
bmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlm
cmFtZS9zaGFyZWR3b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhw
ZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIEFub255bW91cyBpZnJhbWVzIGdldCBw
YXJ0aXRpb25lZCBzaGFyZWQgd29ya2Vycy4gYXNzZXJ0X3RydWU6IFRoZSAibm9ybWFsIiBpZnJh
bWUncyBzaGFyZWR3b3JrZXIgc2hvdWxkIHJldHVybiB7Im5vcm1hbCI6IHRydWUsICJub3JtYWxf
Y29udHJvbCI6IHRydWV9LCBidXQgaW5zdGVhZCByZXR1cm5lZCB7Im5vcm1hbCI6dHJ1ZX0gZXhw
ZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK0ZBSUwgQW5vbnltb3VzIGlmcmFtZXMgZ2V0IHBhcnRpdGlv
bmVkIHNoYXJlZCB3b3JrZXJzLiBhc3NlcnRfdHJ1ZTogVGhlICJub3JtYWwiIGlmcmFtZSdzIHNo
YXJlZHdvcmtlciBzaG91bGQgcmV0dXJuIHsibm9ybWFsIjogdHJ1ZSwgIm5vcm1hbF9jb250cm9s
IjogdHJ1ZX0sIGJ1dCBpbnN0ZWFkIHJldHVybmVkIHsibm9ybWFsX2NvbnRyb2wiOnRydWUsIm5v
cm1hbCI6dHJ1ZSwiYW5vbnltb3VzIjp0cnVlLCJhbm9ueW1vdXNfY29udHJvbCI6dHJ1ZX0gZXhw
ZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kv
Y3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdp
bi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMt
ZXhwZWN0ZWQudHh0CmluZGV4IDYzNTViNjhkZTcwYi4uYzhiZjc1ZTdlYTg1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mt
b3JpZ2luLWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5o
dHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2lu
LWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0yMCw3ICsyMCw3IEBA
IFBBU1MgZGVkaWNhdGVkIHdvcmtlcjogc2NoZW1lID0gYmxvYiwgdmFsdWUgPSAqCiBQQVNTIGRl
ZGljYXRlZCB3b3JrZXI6IHNjaGVtZSA9IGJsb2IsIHZhbHVlID0gc2VsZgogRkFJTCBkZWRpY2F0
ZWQgd29ya2VyOiBzY2hlbWUgPSBibG9iLCB2YWx1ZSA9IChcKSBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCBmYWxzZSBidXQgZ290IHRydWUKIFBBU1Mgc2hhcmVkIHdvcmtlcjogd2l0aENvb3BDb2Vw
ID0gZmFsc2UKLVBBU1Mgc2hhcmVkIHdvcmtlcjogd2l0aENvb3BDb2VwID0gdHJ1ZQorRkFJTCBz
aGFyZWQgd29ya2VyOiB3aXRoQ29vcENvZXAgPSB0cnVlIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
IHRydWUgYnV0IGdvdCBmYWxzZQogUEFTUyBzZXJ2aWNlIHdvcmtlcjogd2l0aENvb3BDb2VwID0g
ZmFsc2UKIEZBSUwgc2VydmljZSB3b3JrZXI6IHdpdGhDb29wQ29lcCA9IHRydWUgYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1i
ZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1i
ZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAzMzk4
YmQ4ODkzMWIuLjRjODY2ZWIyOTI2MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kv
c2hhcmVkLXdvcmtlcnMuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9s
aWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMiw3ICsyLDcgQEAgVmVy
aWZ5IHRoZSBDcm9zcy1PcmlnaW4gRW1iZWRkZXIgUG9saWN5IGZvciBTaGFyZWQgV29ya2VycyBi
eSBwZXJmb3JtaW5nIGEgY3Jvc3MKIAogCiBQQVNTIGRlZmF1bHQgcG9saWN5IChkZXJpdmVkIGZy
b20gcmVzcG9uc2UpCi1GQUlMICJyZXF1aXJlLWNvcnAiIChkZXJpdmVkIGZyb20gcmVzcG9uc2Up
IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJmYWlsdXJlIiBidXQgZ290ICJzdWNjZXNzIgorUEFT
UyAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIHJlc3BvbnNlKQogUEFTUyBkZWZhdWx0IHBv
bGljeSAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBkdWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAt
IGJsb2IgVVJMKQogRkFJTCAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBk
dWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAtIGJsb2IgVVJMKSBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCAiZmFpbHVyZSIgYnV0IGdvdCAic3VjY2VzcyIKIFBBU1MgZGVmYXVsdCBwb2xpY3kgKGRl
cml2ZWQgZnJvbSBvd25lciBzZXQgZHVlIHRvIHVzZSBvZiBsb2NhbCBzY2hlbWUgLSBkYXRhIFVS
TCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5jZS5z
dWIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVy
aXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggNzViMWQzM2U1MjYwLi5iMmJmMmUz
YmZmM2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5j
ZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtl
ci1pbmhlcml0YW5jZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNiBAQAogQmxv
Y2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2Nv
bW1vbi9ibGFuay5odG1sCiBCbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93
d3cubG9jYWxob3N0Ojk0NDQvY29tbW9uL2JsYW5rLmh0bWwKIEJsb2NrZWQgYWNjZXNzIHRvIGV4
dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2NhbGhvc3Q6OTQ0NC9jb21tb24vYmxhbmsuaHRtbAot
QmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0
L2NvbW1vbi9ibGFuay5odG1sCiAKIFBBU1MgVGVzdCB0aGF0IGxvY2FsIHNjaGVtZSB3b3JrZXJz
IGluaGVyaXQgQ09FUDogcmVxdWlyZS1jb3JwIGZyb20gdGhlIGNyZWF0aW5nIGRvY3VtZW50CiBQ
QVNTIGJsb2IgVVJMIGRlZGljYXRlZCB3b3JrZXI6IFNhbWUgb3JpZ2luIHNob3VsZCBiZSBhbGxv
d2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJf
ZGF0YVVybC1leHBlY3RlZC50eHQKaW5kZXggOTk1YTA2MDE5Yjg0Li45YjU4MjBhYWU4Y2IgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9TaGFyZWRXb3JrZXJfZGF0YVVybC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRh
VXJsLWV4cGVjdGVkLnR4dApAQCAtMSwxMyArMSw1IEBACi1DT05TT0xFIE1FU1NBR0U6IEVycm9y
OiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3QgMQogCiAKLUhhcm5lc3MgRXJyb3Ig
KEZBSUwpLCBtZXNzYWdlID0gRXJyb3I6IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDIgYnV0IGdv
dCAxCi0KLVBBU1MgRGF0YSBVUkwgbm90IHNoYXJlZCBieSBjcm9zcy1vcmlnaW4gU2hhcmVkV29y
a2VycwotVElNRU9VVCBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtl
cnMgVGVzdCB0aW1lZCBvdXQKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBFcnJv
cjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290IDEKLQogUEFTUyBEYXRhIFVSTCBu
b3Qgc2hhcmVkIGJ5IGNyb3NzLW9yaWdpbiBTaGFyZWRXb3JrZXJzCi1USU1FT1VUIERhdGEgVVJM
cyBzaGFyZWQgYnkgc2FtZS1vcmlnaW4gU2hhcmVkV29ya2VycyBUZXN0IHRpbWVkIG91dAorUEFT
UyBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtlcnMKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQK
aW5kZXggNTc2ZTZkMmI3ZWQyLi40YTI2YmU5MjlhOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13
b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVk
LXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMg
QEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0
Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkK
IAogUEFTUyBTdGF0aWMgaW1wb3J0LgogRkFJTCBTdGF0aWMgaW1wb3J0IChjcm9zcy1vcmlnaW4p
LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogIkltcG9ydGlu
ZyBhIG1vZHVsZSBzY3JpcHQgZmFpbGVkLiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXIt
aW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29y
a2VyLWltcG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CmluZGV4IDRmODY0
MWU1MTQ4MC4uMjk5N2Y3ZTFmMzA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9y
dC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3Jr
ZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwz
IEBACi1DT05TT0xFIE1FU1NBR0U6IE9yaWdpbiBudWxsIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vz
cy1Db250cm9sLUFsbG93LU9yaWdpbi4gU3RhdHVzIGNvZGU6IDIwMAogCiBIYXJuZXNzIEVycm9y
IChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtl
ci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXIt
aW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQKaW5kZXggZWFjN2Y5NWRlNmYyLi5j
YmMwNDI5ZTBjNzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJs
LndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11
cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRv
IGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVz
L3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkKIAogSGFybmVzcyBFcnJvciAoVElN
RU9VVCksIG1lc3NhZ2UgPSBudWxsCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ct
ZXhwZWN0ZWQudHh0CmluZGV4IDU3NmU2ZDJiN2VkMi4uNGEyNmJlOTI5YThkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9k
dWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3No
YXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1C
bG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQz
L3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LW9uLWxvYWQtc2NyaXB0LnB5CiAKIFBB
U1MgU3RhdGljIGltcG9ydC4KIEZBSUwgU3RhdGljIGltcG9ydCAoY3Jvc3Mtb3JpZ2luKS4gcHJv
bWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6ICJJbXBvcnRpbmcgYSBt
b2R1bGUgc2NyaXB0IGZhaWxlZC4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlv
bnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNy
ZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAppbmRleCBlMWJlZGY1NDMwZWYuLmE3MGYwNWFmNTRmNCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQu
dHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHA6
Ly93d3cxLmxvY2FsaG9zdDo4ODAwL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LWNy
ZWRlbnRpYWxzLnB5CiAKIEhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRp
Y3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhwZWN0ZWQudHh0CmluZGV4IDAxOGRiNjA0NTY5ZC4u
Y2ZlNDY1NTY3NWNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVkLnR4dApAQCAt
MSw1ICsxLDMgQEAKIAotSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0K
LU5PVFJVTiBzaGFyZWQgd29ya2VyIHdpdGggbXVsdGlwbGUgZG9jdW1lbnRzCitQQVNTIHNoYXJl
ZCB3b3JrZXIgd2l0aCBtdWx0aXBsZSBkb2N1bWVudHMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA4
LWV4cGVjdGVkLnR4dAppbmRleCA5N2E0ZTdhNzNhNjMuLjA5ZjY3MmQxYzYyMSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3Nl
bWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSwzIEBACiAKLUhhcm5lc3Mg
RXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1USU1FT1VUIG1lc3NhZ2VjaGFubmVs
IGluIHNoYXJlZCB3b3JrZXIgVGVzdCB0aW1lZCBvdXQKK1BBU1MgbWVzc2FnZWNoYW5uZWwgaW4g
c2hhcmVkIHdvcmtlcgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRv
dy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50
eHQKaW5kZXggYTA4OWMyMjQ4OWUyLi5kMzlhNTUwODRkYzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2Vy
LWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJs
b2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw3IEBACiAKIEhhcm5lc3MgRXJy
b3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAogCi1GQUlMIENyZWF0aW5nIGEgc2hhcmVkIHdv
cmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJ3b3Jr
ZXJfT0tfMiIgYnV0IGdvdCAid29ya2VyX09LXzEiCi1QQVNTIENyZWF0aW5nIGEgc2hhcmVkIHdv
cmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MgaW1tZWRpYXRlbHkgYmVmb3JlIHJldm9raW5nLgot
VElNRU9VVCBDb25uZWN0aW5nIHRvIGEgc2hhcmVkIHdvcmtlciBvbiBhIHJldm9rZWQgYmxvYiBV
Ukwgd29ya3MuIFRlc3QgdGltZWQgb3V0CitQQVNTIENyZWF0aW5nIGEgc2hhcmVkIHdvcmtlciBm
cm9tIGEgYmxvYiBVUkwgd29ya3MuCitUSU1FT1VUIENyZWF0aW5nIGEgc2hhcmVkIHdvcmtlciBm
cm9tIGEgYmxvYiBVUkwgd29ya3MgaW1tZWRpYXRlbHkgYmVmb3JlIHJldm9raW5nLiBUZXN0IHRp
bWVkIG91dAorTk9UUlVOIENvbm5lY3RpbmcgdG8gYSBzaGFyZWQgd29ya2VyIG9uIGEgcmV2b2tl
ZCBibG9iIFVSTCB3b3Jrcy4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9u
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25zLWV4cGVjdGVkLnR4dApp
bmRleCA2ZmZlZTI3MzkwZDkuLmFlNDViNGQyNzM5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFt
ZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9u
cy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgVGVzdCB0aGUgbmFtZSBwcm9w
ZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBtaXhpbmcgY29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29u
c3RydWN0b3Igc3RyaW5ncyBFcnJvcjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290
IDEKK1BBU1MgVGVzdCB0aGUgbmFtZSBwcm9wZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBtaXhpbmcg
Y29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29uc3RydWN0b3Igc3RyaW5ncwogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW9wdGlv
bnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CmluZGV4IGY2NTY5NDYxNTBkYi4uNGY5OWExMzQwOWU3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dApAQCAtMSwyOCArMSwyNiBA
QAogCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKLQotVElNRU9VVCBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogZGVmYXVsdCB0byBtb2R1bGUgVGVzdCB0aW1lZCBvdXQKLU5PVFJVTiBDb25u
ZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUg
YmxvY2tlZDogbW9kdWxlIHRvIGRlZmF1bHQKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3
b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogY2xhc3NpYyB0
byBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJl
bnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGNsYXNzaWMKLU5PVFJVTiBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogZGVmYXVsdCB0byBvbWl0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogZGVmYXVsdCB0byBpbmNsdWRlIGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNo
YXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21p
dCB0byBkZWZhdWx0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3Jr
ZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBzYW1l
LW9yaWdpbiBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdp
dGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVkZSBp
biBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVy
ZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIG9taXQgaW4gY2xh
c3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIGNsYXNz
aWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGluIGNsYXNzaWMKLU5P
VFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBz
aG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBvbWl0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25u
ZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUg
YmxvY2tlZDogaW5jbHVkZSB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IGRlZmF1bHQgdG8gb21pdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNo
YXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVm
YXVsdCB0byBpbmNsdWRlIGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRl
ZmF1bHQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGgg
ZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gc2FtZS1vcmlnaW4g
aW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVy
ZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVkZSBpbiBtb2R1bGUK
LU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9u
cyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBtb2R1bGUKLU5PVFJV
TiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91
bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gaW5jbHVkZSBpbiBtb2R1bGUKLU5PVFJVTiBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3Rp
bmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9j
a2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1
ZGUgdG8gc2FtZS1vcmlnaW4gaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRv
IG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQg
b3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGRlZmF1bHQKK1BBU1MgQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IGNsYXNzaWMgdG8gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBtb2R1bGUgdG8gY2xh
c3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBvbWl0IGluIGNsYXNzaWMKK1BBU1Mg
Q29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxk
IGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gaW5jbHVkZSBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3Rp
bmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9j
a2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJl
ZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0
byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGluY2x1
ZGUgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZm
ZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBj
bGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIGNsYXNz
aWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlv
bnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gZGVmYXVsdCBpbiBjbGFzc2ljCitQQVNT
IENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3Vs
ZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogaW5jbHVkZSB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8g
c2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBk
ZWZhdWx0IHRvIG9taXQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIGlu
Y2x1ZGUgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRp
ZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4gbW9k
dWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIHNhbWUtb3JpZ2luIGluIG1vZHVsZQorUEFT
UyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91
bGQgYmUgYmxvY2tlZDogb21pdCB0byBpbmNsdWRlIGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUt
b3JpZ2luIHRvIGluY2x1ZGUgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRv
IGRlZmF1bHQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4g
bW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIHNhbWUtb3JpZ2luIGluIG1vZHVs
ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Bl
bi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dAppbmRleCAx
ZTJkMzk5MmY2ZDUuLjU5Y2FjYTQ4NmY4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3
b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1v
cmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0
ZXJuYWwgVVJMIGh0dHA6Ly93d3cyLmxvY2FsaG9zdDo4ODAwL3hoci9yZXNvdXJjZXMvaW5zcGVj
dC1oZWFkZXJzLnB5P2ZpbHRlcl9uYW1lPW9yaWdpbiZjb3JzCiAKIEZBSUwgUmVmZXJlciBoZWFk
ZXIgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIlJlZmVyZXI6IGh0dHA6Ly9sb2NhbGhvc3Q6ODgw
MC94aHIvcmVzb3VyY2VzL3dvcmtlcnhoci1vcmlnaW4tcmVmZXJyZXIuanNcbiIgYnV0IGdvdCAi
UmVmZXJlcjogaHR0cDovL2xvY2FsaG9zdDo4ODAwL3hoci9yZXNvdXJjZXMvcmVkaXJlY3QucHk/
bG9jYXRpb249d29ya2VyeGhyLW9yaWdpbi1yZWZlcnJlci5qc1xuIgogRkFJTCBPcmlnaW4gaGVh
ZGVyIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJPcmlnaW46IGh0dHA6Ly9sb2NhbGhvc3Q6ODgw
MFxuIiBidXQgZ290ICIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sx
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggZTRlZDMxYWI2YWMzLi5lYTNiYzQ3ODhlZDIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTY2LDYgKzY2LDEyNCBA
QCBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS1nZXRVc2VyTWVkaWEtcGVuZGluZy1w
cm9taXNlLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNhY2hlLW1l
ZGlhc3RyZWFtLmh0bWwgWyBTa2lwIF0KIG1lZGlhL2F1ZGlvLXNlc3Npb24tY2F0ZWdvcnkuaHRt
bCBbIFNraXAgXQogCisjIFNoYXJlZCB3b3JrZXJzIGFyZSBvbmx5IGltcGxlbWVudGVkIGZvciBX
ZWJLaXQyLgoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5
LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFz
c2ljLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
b250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy1zZWxmL3No
YXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3Nj
cmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4v
dG9wLmh0dHAtcnAvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRw
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVk
d29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0
LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4v
dG9wLmh0dHAtcnAvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHAuaHRt
bCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3Vy
aXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1j
bGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtc2Vs
Zi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAv
d29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWNsYXNz
aWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
b250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNyYy1zZWxmL3NoYXJl
ZHdvcmtlci1jbGFzc2ljLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNy
Yy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5t
ZXRhL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5o
dHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVk
d29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNy
Yy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1l
dGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAu
aHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1t
b2R1bGUuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy13aWxkY2Fy
ZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dv
cmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItbW9kdWxlLmh0
dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50
LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3
b3JrZXItbW9kdWxlLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3Jr
ZXItY29ubmVjdC1zcmMuc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3Jr
ZXItcmVwb3J0LW9ubHkuc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3Jr
ZXItc2NyaXB0LXNyYy5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zYW5kYm94L3NoYXJlZC13b3JrZXItc2Fu
ZGJveC5odG1sICBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1kYXRhLXNldC10aW1lb3V0LnN1
Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLWNoaWxkLnN1Yi5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2dlbi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRh
Lmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy1zZWxmL3NoYXJl
ZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC9z
Y3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tpcCBdCitp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dl
bi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0
YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtd2lsZGNhcmQv
c2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRw
LXJwL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsg
U2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHkt
cG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLW5vbmUvc2hhcmVkd29ya2VyLWNsYXNz
aWMuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nv
bnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLW5vbmUvc2hh
cmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29y
a2VyLXNyYy1ub25lL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
Z2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtbm9uZS9zaGFyZWR3b3JrZXItaW1wb3J0LWRhdGEu
aHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1ub25lL3NoYXJl
ZHdvcmtlci1tb2R1bGUuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXIt
c3JjLW5vbmUvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3Au
aHR0cC1ycC93b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHAuaHRt
bCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3Vy
aXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1p
bXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3Jj
LXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0
cC1ycC93b3JrZXItc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0
bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29y
a2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtl
ci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lwIF0KK2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2Vu
L3RvcC5odHRwLXJwL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRw
cy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2Vy
LWltcG9ydC1kYXRhLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNyYy1z
ZWxmL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3Au
bWV0YS9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tp
cCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1pbXBvcnQt
ZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtd2lsZGNhcmQv
c2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRh
L3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5o
dHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLW5vbmUvc2hhcmVkd29y
a2VyLWNsYXNzaWMuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLW5v
bmUvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEv
d29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtbm9uZS9zaGFyZWR3b3JrZXItaW1wb3J0LWRhdGEu
aHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLW5vbmUvc2hhcmVkd29y
a2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1z
cmMtbm9uZS9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1l
dGEvd29ya2VyLXNyYy1ub25lL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cHMuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5o
dHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLXdpbGRjYXJkL3NoYXJl
ZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtl
ci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvd29ya2VyLXNyYy9zaGFyZWQtZmFsbGJhY2suc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvd29ya2VyLXNy
Yy9zaGFyZWQtbGlzdC5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS93b3JrZXItc3JjL3NoYXJlZC1ub25lLnN1
Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXNlbGYuc3ViLmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
d29ya2VyLXNyYy9zaGFyZWQtd29ya2VyLXNyYy1jaGlsZC1mYWxsYmFjay1ibG9ja2VkLnN1Yi5o
dG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXdvcmtlci1zcmMtY2hpbGQtZmFsbGJhY2su
c3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvd29ya2VyLXNyYy9zaGFyZWQtd29ya2VyLXNyYy1kZWZhdWx0LWZh
bGxiYWNrLnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXdvcmtlci1zcmMtc2Ny
aXB0LWZhbGxiYWNrLnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXdvcmtlci1z
cmMtc2VsZi1mYWxsYmFjay5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29ycy9kYXRhLXVybC1zaGFyZWQtd29ya2VyLmh0bWwgWyBT
a2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZs
aW5lL25vLWFwcGNhY2hlLWluLXNoYXJlZC13b3JrZXJzLWhpc3RvcmljYWwuaHR0cHMuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9z
Y3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvbW9kdWxlL2V2YWx1YXRpb24tb3JkZXItMS1u
b3Rocm93LXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudC9t
b2R1bGUvZXZhbHVhdGlvbi1vcmRlci0xLXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3Ro
ZS1zY3JpcHQtZWxlbWVudC9tb2R1bGUvZXZhbHVhdGlvbi1vcmRlci0yLWltcG9ydC1zaGFyZWR3
b3JrZXIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvbW9kdWxlL2V2YWx1YXRp
b24tb3JkZXItMy1keW5hbWljLXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3Jp
cHQtZWxlbWVudC9ldmFsdWF0aW9uLW9yZGVyLTEtbm90aHJvdy1zaGFyZWR3b3JrZXIuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9z
Y3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvZXZhbHVhdGlvbi1vcmRlci0xLXNoYXJlZHdv
cmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
d2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL3VuaGFuZGxlZC1wcm9taXNl
LXJlamVjdGlvbnMvcHJvbWlzZS1yZWplY3Rpb24tZXZlbnRzLnNoYXJlZHdvcmtlci5odG1sIFsg
U2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vc2VyaWFsaXphdGlv
bi9tb2R1bGUvYnJvYWRjYXN0Y2hhbm5lbC1zdWNjZXNzLWFuZC1mYWlsdXJlLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJQ
ZXJmb3JtYW5jZU5vdy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvYmFzZXVybC9hbHBoYS9pbXBvcnRTY3JpcHRzLWluLXNoYXJlZHdvcmtlci5o
dG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvYmFz
ZXVybC9hbHBoYS94aHItaW4tc2hhcmVkd29ya2VyLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9pbnRlcmZhY2VzL1NoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
aW50ZXJmYWNlcy9Xb3JrZXJHbG9iYWxTY29wZS9sb2NhdGlvbi9yZWRpcmVjdC1zaGFyZWR3b3Jr
ZXIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93Lmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJl
ZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi5odG1sIFsgU2tpcCBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2Vy
LWltcG9ydC1kYXRhLXVybC53aW5kb3cuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZmFpbHVy
ZS5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
bW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1tZXRhLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LndpbmRvdy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMv
c2hhcmVkLXdvcmtlci1vcHRpb25zLXR5cGUuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJl
ZC13b3JrZXItcGFyc2UtZXJyb3ItZmFpbHVyZS5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL2VuY29kaW5ncy8wMDIuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGlj
cy9lbmNvZGluZ3MvMDA0Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDQuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwOC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3JlcG9ydGluZy1lcnJvcnMvMDAxLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvcmVw
b3J0aW5nLWVycm9ycy8wMDIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9yZXBvcnRpbmctZXJyb3JzLzAwMy5odG1sIFsgU2tp
cCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3Jl
cG9ydGluZy1lcnJvcnMvMDA0Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvcnVuLWEtd29ya2VyLzAwMi5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3N0cnVj
dHVyZWQtY2xvbmUvc2hhcmVkLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MveGhyLzAwMy5odG1sIFsgU2tpcCBdCitpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3hoci8wMDQuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGlj
cy94aHIvMDA2Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93Lmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW9w
dGlvbnMtbWlzbWF0Y2guaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItcGFyc2UtZXJyb3ItZmFpbHVyZS5odG1sIFsgU2tp
cCBdCisKIGh0dHAvd3B0L21lZGlhcmVjb3JkZXIgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJlY29yZCBbIFNraXAgXQogZmFzdC9oaXN0b3J5
L3BhZ2UtY2FjaGUtbWVkaWEtcmVjb3JkZXIuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3NjcmlwdC1zcmMvd29ya2VyLWltcG9ydHNjcmlwdHMu
c3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3Jj
L3dvcmtlci1pbXBvcnRzY3JpcHRzLnN1Yi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42ZWVhMWJlYWI1YjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItaW1wb3J0c2NyaXB0
cy5zdWItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitGQUlMIERlZGljYXRlZCB3b3Jr
ZXIgaW5oZXJpdHMgQ1NQIGZyb20gbWFpbiBkb2N1bWVudCBhc3NlcnRfZXF1YWxzOiBleHBlY3Rl
ZCAiaW1wb3J0U2NyaXB0cyBhbGxvd2VkIiBidXQgZ290ICJpbXBvcnRTY3JpcHRzIGJsb2NrZWQi
CitGQUlMIFNoYXJlZCB3b3JrZXIgZGVsaXZlcnMgaXRzIG93biBDU1AgU2hhcmVkIHdvcmtlcnMg
YXJlIG5vdCBzdXBwb3J0ZWQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L3NjcmlwdC1zcmMvd29ya2VyLXNldC10aW1lb3V0LnN1Yi1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3Vi
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjY3
NWEzYThlMGYwYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91dC5zdWItZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNCBAQAorCitGQUlMIERlZGljYXRlZCB3b3JrZXIgaW5oZXJpdHMgQ1NQIGZyb20gbWFpbiBk
b2N1bWVudCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAic2V0VGltZW91dCBhbGxvd2VkIiBidXQg
Z290ICJzZXRUaW1lb3V0IGJsb2NrZWQiCitGQUlMIFNoYXJlZCB3b3JrZXIgZGVsaXZlcnMgaXRz
IG93biBDU1AgU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtl
ci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hl
L3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdmMmNkNTE4YzdlNwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Jyb3dzZXJzL29mZmxpbmUvYXBwY2FjaGUvd29ya2Vycy9hcHBjYWNoZS13
b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorQ09OU09MRSBNRVNTQUdF
OiBBcHBsaWNhdGlvbkNhY2hlIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgU2VydmljZVdvcmtl
cnMgaW5zdGVhZC4KKworUEFTUyBEZWRpY2F0ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0
CitQQVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0CitQQVNTIERl
ZGljYXRlZCB3b3JrZXIgb2YgdGhlIG5vdC1pbi1jYWNoZSBzY3JpcHQKK0ZBSUwgU2hhcmVkIHdv
cmtlciBvZiB0aGUgY2FjaGVkIHNjcmlwdCBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rp
b24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogU2hhcmVkIHdvcmtlcnMg
YXJlIG5vdCBzdXBwb3J0ZWQiCitGQUlMIFNoYXJlZCB3b3JrZXIgb2YgdGhlIGZhbGxiYWNrZWQg
c2NyaXB0IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmpl
Y3QgIk5vdFN1cHBvcnRlZEVycm9yOiBTaGFyZWQgd29ya2VycyBhcmUgbm90IHN1cHBvcnRlZCIK
K0ZBSUwgU2hhcmVkIHdvcmtlciBvZiB0aGUgbm90LWluLWNhY2hlIHNjcmlwdCBwcm9taXNlX3Rl
c3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRF
cnJvcjogU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQiCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvbW9kdWxlL2lt
cG9ydC1tZXRhL2ltcG9ydC1tZXRhLXVybC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3Mvc2NyaXB0aW5nLTEvdGhlLXNjcmlwdC1lbGVtZW50L21vZHVsZS9pbXBvcnQtbWV0YS9pbXBv
cnQtbWV0YS11cmwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uYjI0OTlmYWRjYjZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudC9tb2R1bGUvaW1wb3J0LW1ldGEvaW1w
b3J0LW1ldGEtdXJsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACisKK1BBU1MgaW1wb3J0
Lm1ldGEudXJsIGluIGEgcm9vdCBleHRlcm5hbCBzY3JpcHQKK1BBU1MgaW1wb3J0Lm1ldGEudXJs
IGluIGEgZGVwZW5kZW50IGV4dGVybmFsIHNjcmlwdAorUEFTUyBpbXBvcnQubWV0YSBpcyBhbiBv
YmplY3QKK1BBU1MgaW1wb3J0Lm1ldGEgaXMgZXh0ZW5zaWJsZQorUEFTUyBpbXBvcnQubWV0YSdz
IHByb3BlcnRpZXMgYXJlIHdyaXRhYmxlLCBjb25maWd1cmFibGUsIGFuZCBlbnVtZXJhYmxlCitQ
QVNTIGltcG9ydC5tZXRhLnVybCB3aGVuIGltcG9ydGluZyB0aGUgbW9kdWxlIHdpdGggZGlmZmVy
ZW50IGZyYWdtZW50cworUEFTUyBpbXBvcnQubWV0YS51cmwgaW4gYSByb290IGlubGluZSBzY3Jp
cHQKK1BBU1MgaW1wb3J0Lm1ldGEudXJsIGF0IHRvcC1sZXZlbCBtb2R1bGUgRGVkaWNhdGVkV29y
a2VyCitGQUlMIGltcG9ydC5tZXRhLnVybCBhdCB0b3AtbGV2ZWwgbW9kdWxlIFNoYXJlZFdvcmtl
ciBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJO
b3RTdXBwb3J0ZWRFcnJvcjogU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQiCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvdGhlLXdpbmRvd29yd29ya2VyZ2xvYmFsc2Nv
cGUtbWl4aW4vV29ya2VyX1NlbGZfT3JpZ2luLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFw
cGFwaXMvdGhlLXdpbmRvd29yd29ya2VyZ2xvYmFsc2NvcGUtbWl4aW4vV29ya2VyX1NlbGZfT3Jp
Z2luLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LmYzOWY2ZmVkMWYzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvdGhl
LXdpbmRvd29yd29ya2VyZ2xvYmFsc2NvcGUtbWl4aW4vV29ya2VyX1NlbGZfT3JpZ2luLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDggQEAKKworUEFTUyBTYW1lIE9yaWdpbiBXb3JrZXIKK0ZBSUwg
U2FtZSBPcmlnaW4gU2hhcmVkV29ya2VyIFNoYXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVk
CitQQVNTIERhdGEgVXJsIFdvcmtlcgorRkFJTCBEYXRhIFVybCBTaGFyZWRXb3JrZXIgU2hhcmVk
IHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQKK1BBU1MgQmxvYiBVcmwgV29ya2VyCitGQUlMIEJs
b2IgVXJsIFNoYXJlZFdvcmtlciBTaGFyZWQgd29ya2VycyBhcmUgbm90IHN1cHBvcnRlZAorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvd29ya2Vycy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvd29ya2Vycy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xM2VkMTZk
ODcxOTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5u
ZWwvd29ya2Vycy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorCitQQVNTIEJyb2FkY2Fz
dENoYW5uZWwgd29ya3MgaW4gd29ya2VycworRkFJTCBCcm9hZGNhc3RDaGFubmVsIHdvcmtzIGlu
IHNoYXJlZCB3b3JrZXJzIFNoYXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkCitQQVNTIENs
b3NpbmcgYW5kIHJlLW9wZW5pbmcgYSBjaGFubmVsIHdvcmtzLgorUEFTUyBCcm9hZGNhc3RDaGFu
bmVsIGNyZWF0ZWQgYWZ0ZXIgYSB3b3JrZXIgc2VsZi5jbG9zZSgpCitQQVNTIEJyb2FkY2FzdENo
YW5uZWwgbWVzc2FnZXMgZnJvbSBjbG9zZWQgd29ya2VyIHRvIHBhcmVudCBzaG91bGQgYmUgaWdu
b3JlZCAoQkMgY3JlYXRlZCBiZWZvcmUgY2xvc2luZykKK1BBU1MgQnJvYWRjYXN0Q2hhbm5lbCBt
ZXNzYWdlcyBmcm9tIGNsb3NlZCB3b3JrZXIgdG8gcGFyZW50IHNob3VsZCBiZSBpZ25vcmVkIChC
QyBjcmVhdGVkIGFmdGVyIGNsb3NpbmcpCitQQVNTIEJyb2FkY2FzdENoYW5uZWwgbWVzc2FnZXMg
ZnJvbSBwYXJlbnQgdG8gY2xvc2VkIHdvcmtlciBzaG91bGQgYmUgaWdub3JlZCAoQkMgY3JlYXRl
ZCBiZWZvcmUgY2xvc2luZykKK1BBU1MgQnJvYWRjYXN0Q2hhbm5lbCBtZXNzYWdlcyBmcm9tIHBh
cmVudCB0byBjbG9zZWQgd29ya2VyIHNob3VsZCBiZSBpZ25vcmVkIChCQyBjcmVhdGVkIGFmdGVy
IGNsb3NpbmcpCitQQVNTIEJyb2FkY2FzdENoYW5uZWwgbWVzc2FnZXMgd2l0aGluIGNsb3NlZCB3
b3JrZXIgc2hvdWxkIGJlIGlnbm9yZWQgKEJDcyBjcmVhdGVkIGJlZm9yZSBjbG9zaW5nKQorUEFT
UyBCcm9hZGNhc3RDaGFubmVsIG1lc3NhZ2VzIHdpdGhpbiBjbG9zZWQgd29ya2VyIHNob3VsZCBi
ZSBpZ25vcmVkIChCQ3MgY3JlYXRlZCBhZnRlciBjbG9zaW5nKQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9hYnJ1cHQtY29tcGxldGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9hYnJ1
cHQtY29tcGxldGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5kMDE1NmMwYjIxOWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9h
YnJ1cHQtY29tcGxldGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgRGVk
aWNhdGVkV29ya2VyIHNob3VsZCBjb3JyZWN0bHkgaGFuZGxlIGFicnVwdCBjb21wbGV0aW9uCitG
QUlMIFNoYXJlZFdvcmtlciBzaG91bGQgY29ycmVjdGx5IGhhbmRsZSBhYnJ1cHQgY29tcGxldGlv
biBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJO
b3RTdXBwb3J0ZWRFcnJvcjogU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQiCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwMS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDEtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2YyYTky
NzhjNWYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxl
LXdvcmtlcnMvMDAxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBkZWRpY2F0
ZWQKK0ZBSUwgc2hhcmVkIFNoYXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9ydW4tYS13b3JrZXIvMDAzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9ydW4tYS13b3JrZXIvMDAzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFmN2ZhMDg0Yzc0ZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9ydW4tYS13b3JrZXIvMDAzLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyB3b3JrZXIKK0ZBSUwgc2hhcmVkIFNo
YXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
NzkyYTAwZjllYTFhLi40NTdjNGFhOWIxYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNzks
NiArMTc5LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAg
IiR7V0VCQ09SRV9ESVJ9L3dvcmtlcnMvc2VydmljZS9jb250ZXh0IgogICAgICIke1dFQkNPUkVf
RElSfS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyIgogICAgICIke1dFQkNPUkVfRElSfS93b3JrZXJz
L3NoYXJlZCIKKyAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2Vycy9zaGFyZWQvY29udGV4dCIKICAg
ICAiJHtXRUJDT1JFX0RJUn0vd29ya2xldHMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3htbCIKICAg
ICAiJHtXRUJDT1JFX0RJUn0veG1sL3BhcnNlciIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDg5Yjgy
YTEzZjdlNC4uMGYwMzkyMDc3MDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTE5NTUsOSArMTk1
NSwxMiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAogICAgIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
aAogICAgIHdvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaAorICAgIHdvcmtlcnMvV29ya2VyT2Jq
ZWN0UHJveHkuaAorICAgIHdvcmtlcnMvV29ya2VyT3B0aW9ucy5oCiAgICAgd29ya2Vycy9Xb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCiAgICAgd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmgKICAgICB3b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5oCisgICAg
d29ya2Vycy9Xb3JrZXJSZXBvcnRpbmdQcm94eS5oCiAgICAgd29ya2Vycy9Xb3JrZXJSdW5Mb29w
LmgKICAgICB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCiAgICAgd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXJDbGllbnQuaApAQCAtMjAwMCw2ICsyMDAzLDE1IEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCiAgICAgd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlcldvcmtlci5oCiAKKyAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJJZGVudGlmaWVy
LmgKKyAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaAorICAgIHdvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaAorICAgIHdvcmtlcnMvc2hhcmVkL1No
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaAorICAgIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlclByb3ZpZGVyLmgKKworICAgIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXIuaAorICAgIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHkuaAorCiAgICAgeG1sL0N1c3RvbVhQYXRoTlNSZXNvbHZlci5oCiAgICAgeG1s
L1hQYXRoRXhwcmVzc2lvbi5oCiAgICAgeG1sL1hQYXRoTlNSZXNvbHZlci5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CmluZGV4IGY2NmNjZjhmMDZhNS4uOWFiODYwNGM5ZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjc4
NiwxMCArMjc4NiwxMiBAQCB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3Bw
CiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXJHbG9iYWxTY29wZS5jcHAKLXdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIu
Y3BwCi13b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm94eS5jcHAKK3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCit3b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXJQcm92aWRlci5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRl
ci5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclRocmVhZC5jcHAKK3dvcmtlcnMvc2hh
cmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwCit3b3JrZXJzL3NoYXJl
ZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcAogd29ya2xldHMvUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwCiB3b3JrbGV0cy9Xb3JrbGV0LmNwcAogd29ya2xldHMvV29ya2xl
dEdsb2JhbFNjb3BlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGJmYWM4NmU3ZGMxYi4uMDBmY2I2OWMzNWJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05
MDMsNyArOTAzLDcgQEAKIAkJMkU0MzQ2NEIwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2Jh
bFNjb3BlUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJFNDM0NjM5MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZVByb3h5Lmgg
Ki87IH07CiAJCTJFNDM0NjREMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJMb2NhdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2M0IwRjU0
NkE4MjAwQjBGMUJBIC8qIFdvcmtlckxvY2F0aW9uLmggKi87IH07CiAJCTJFNDM0NjUwMEY1NDZB
ODIwMEIwRjFCQSAvKiBXb3JrZXJNZXNzYWdpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2M0UwRjU0NkE4MjAwQjBGMUJBIC8qIFdv
cmtlck1lc3NhZ2luZ1Byb3h5LmggKi87IH07Ci0JCTJFNDM0NjUxMEY1NDZBODIwMEIwRjFCQSAv
KiBXb3JrZXJPYmplY3RQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkU0MzQ2M0YwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5
LmggKi87IH07CisJCTJFNDM0NjUxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2
M0YwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2NTMwRjU0NkE4MjAwQjBG
MUJBIC8qIFdvcmtlclJ1bkxvb3AuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJFNDM0NjQxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJSdW5Mb29wLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2
NTUwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2NDMwRjU0NkE4MjAwQjBGMUJBIC8qIFdv
cmtlclRocmVhZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTJFNzU4NDFFMTI3NzlBREEwMDYyNjI4QiAvKiBGaWxlUmVhZGVyTG9hZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTc1ODQxQjEyNzc5
QURBMDA2MjYyOEIgLyogRmlsZVJlYWRlckxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTI1LDcgKzExMjUsNyBAQAogCQk0MTZBMDZB
MTIzQ0NBRDAzMDAzNDcxMDkgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkEwNjk2MjNDQ0FB
OUYwMDM0NzEwOSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkQ3NUEyMjBDNjUxQTUw
MEQwMkQyQyAvKiBOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZENzU5RjIwQzY0NDEzMDBEMDJEMkMgLyogTmV0
d29ya0xvYWRJbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQxNkUwQjNBMjA5QkMzQ0IwMDRBOTVEOSAvKiBGZXRjaElkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkUw
QjM3MjA5QkMzQzIwMDRBOTVEOSAvKiBGZXRjaElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk0MTZFMjlBNjEwMkZBOTYyMDA3RkMx
NEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkUyOUE1MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBv
cnRpbmdQcm94eS5oICovOyB9OworCQk0MTZFMjlBNjEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2Vy
UmVwb3J0aW5nUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxNkUyOUE1MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2
RkU4MUJCRDEyREYwMDBBM0Y2NCAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFC
QjMxMTBEMDBCNzY0RDkgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU4MUJC
RDEyREYwMDBBM0Y2NSAvKiBKU0RPTUJpbmRpbmdJbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAw
Qjc2NERBIC8qIEpTRE9NQmluZGluZ0ludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgxQkJEMTJERjAwMEEz
Rjc0IC8qIFRyYW5zZm9ybVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RUEg
LyogVHJhbnNmb3JtU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTMyMyw2ICsxMzIzLDggQEAKIAkJNDYw
RTMwNzcyMjJGNEYwMzAwOUEwNjA2IC8qIERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNz
aW9uU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2NUVERDlGMjIyRjRFQzMwMEI0NkUxNiAvKiBEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVy
bWlzc2lvblN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDYyMThBQ0IxRjcyRDY0RTAwNTc0RkJFIC8qIERPTUhpZ2hSZXNUaW1lU3RhbXAu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RTAxNkFE
MUY3MkQ2MUUwMDI4MkIyQyAvKiBET01IaWdoUmVzVGltZVN0YW1wLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYyNzNDQUYyNjBFNTlFRjAwNkZB
QTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDYyNzNDQUMyNjBFNTlERjAwNkZBQTkxIC8qIFNXU2NyaXB0U3RvcmFn
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2
MjdGRjU5Mjc5QjgyNDkwMEFBMzkxNiAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYyN0ZGNTgyNzlCODI0
NjAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDYyN0ZGNUIyNzlCODdBRjAwQUEzOTE2
IC8qIFNoYXJlZFdvcmtlcklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MjdGRjVBMjc5Qjg3QTIwMEFBMzkxNiAvKiBTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDYyQzdGNDEyNzU2REJFNDAwRDA4M0M4IC8qIFdlYkxvY2tJZGVudGlmaWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njc4MDJCMjI3
NDcxMTg1MDBEQTlGQjYgLyogV2ViTG9ja0lkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjJFNEM1MDI2MTZBODExMDAzQTJDNjcg
LyogU2NyaXB0QnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjJFNEM0RDI2MTZBODAxMDAzQTJDNjcgLyogU2NyaXB0QnVmZmVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYzNEM3MkMyNzU3
REFCMjAwMjZBODE1IC8qIFdlYkxvY2tNYW5hZ2VyU25hcHNob3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzgwMkIwMjc0NzExN0IwMERBOUZCNiAv
KiBXZWJMb2NrTWFuYWdlclNuYXBzaG90LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzNDQsMTUgKzEzNDYsMTggQEAKIAkJNDY3MzAyMDIxQzRF
RkU3ODAwQkNCMzU3IC8qIElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3MzAyMDEx
QzRFRkU2NjAwQkNCMzU3IC8qIElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRl
ci5oICovOyB9OwogCQk0NjdBNjhENzI3NUVBOTkxMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhy
ZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdB
NjhENDI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggKi87IH07CiAJCTQ2
N0E2OEQ4Mjc1RUE5OTUwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0E2OEQ1Mjc1RUE5
OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCAqLzsgfTsKLQkJNDY3QTY4
RDkyNzVFQTk5ODAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclByb3h5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdBNjhENjI3NUVBOThDMDA5QjMxQzUg
LyogU2hhcmVkV29ya2VyUHJveHkuaCAqLzsgfTsKLQkJNDY3QTY4REEyNzVFQTk5QzAwOUIzMUM1
IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2N0E2OEQyMjc1RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJN
YW5hZ2VyLmggKi87IH07CiAJCTQ2ODJEMjAwMUY3OTc4MzAwMEM4NjNEQiAvKiBTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY4MkQxRkYxRjc5NzgyMzAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4
MzQ0RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyog
RE9NUmVjdExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0NjgzREY0MDI3NjdERjk4MDA3RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNj
b3BlQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDY4M0RGM0UyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2Uu
aCAqLzsgfTsKIAkJNDY4M0RGNDEyNzY3RTkxQTAwN0QwMEM4IC8qIFNoYWRvd1JlYWxtR2xvYmFs
U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
ODNERjNCMjc2N0RGMjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4OEVFM0MyNkRE
MjYxMDAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4OEVFM0EyNkREMjYwQzAwMkFGNUM0IC8qIENyb3Nz
T3JpZ2luTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTQ2OTQzREM4Mjc2M0Y4MTIwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
Njk0M0RDNTI3NjNGODBEMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2OTQz
REM5Mjc2M0Y4MTcwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0M0RDNzI3NjNG
ODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2OTQzRENBMjc2M0Y4MUMw
MDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5NDNEQzQyNzYzRjgwRDAwNEI2MTBFIC8qIFNoYXJl
ZFdvcmtlclByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNDY5ODVGMjMyN0E0QTZBRDAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktleS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5ODVGMjIy
N0E0QTY4NjAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktleS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2OUNDQ0ZFMjY5RDAyMUMwMDZFMDMxNCAv
KiBCcm9hZGNhc3RDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NjlDQ0NGQzI2OUQwMjAyMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2OUQ3
N0I4MjcwMTYyNTEwMDE0MkZBNiAvKiBOYXZpZ2F0aW9uUmVxdWVzdGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjlENzdCNjI3MDE2MjUwMDAxNDJG
QTYgLyogTmF2aWdhdGlvblJlcXVlc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTQ2QTc4QjM0Mjc5OUJENzEwMDExNTRGRSAvKiBXb3JrZXJP
cHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
QzFCMUQyNjI2RjE4QTRCMDA4ODJEQTIgLyogV29ya2VyT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QUFBQTNEMjVEMzYzMjAwMEJB
RjQyRiAvKiBBdWRpb0ZpbGVSZWFkZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZBQUFBM0EyNUQzNjMxNDAwQkFGNDJGIC8qIEF1ZGlvRmls
ZVJlYWRlckNvY29hLmggKi87IH07CiAJCTQ2QjYzRjZDMUM2RThEMTkwMDJFOTE0QiAvKiBKU0V2
ZW50VGFyZ2V0Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QjY1
MEREMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjUwREIyMjk2MjYyNzAwRkQ4QUE0IC8q
IFBhZ2VJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTEzNjksNiArMTM3NCw3IEBACiAJCTQ2QkQwNUM2MjVCQjZFNkMwMDIyNUYz
MCAvKiBFdmVudExpc3RlbmVyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZCRDA1QzMyNUJCNkU0RTAwMjI1RjMwIC8qIEV2ZW50TGlzdGVu
ZXJPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDZDMDk2MjEyM0Q3OERENjAwNjU3QzA5IC8qIEhUVFBDb29raWVBY2NlcHRQb2xpY3ku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzA5NjIw
MjNENzhERDYwMDY1N0MwOSAvKiBIVFRQQ29va2llQWNjZXB0UG9saWN5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZDMzc2NjIyMDg1MTc3RDAw
QzczODI5IC8qIEpTUmVtb3RlRE9NV2luZG93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NkMzNzY2MTIwODUxNzZEMDBDNzM4MjkgLyogSlNSZW1vdGVE
T01XaW5kb3cuaCAqLzsgfTsKKwkJNDZDNDE2OUIyNzlBMDRDNzAwMjUyQzNCIC8qIFNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NjI2QjQ3NTI3OUEwM0QyMDBBRUYwQjIgLyogU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NkM2OTZDQjFFNzIwNUY3MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNjk2QzkxRTcyMDVFNDAwNTk3
OTM3IC8qIENQVU1vbml0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0NkM2OTZDQzFFNzIwNUZDMDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM2OTZDQTFF
NzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgKi87IH07CiAJCTQ2QzgzRUZFMUE5QkJF
MjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZDODNFRkMxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTkx
ODUsOSArOTE5MSwxMyBAQAogCQk0NjBDQkYzMzFENEJDQ0ZFMDA5MkU4OEUgLyogSlNET01XaW5k
b3dQcm9wZXJ0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
RE9NV2luZG93UHJvcGVydGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
MENCRjM0MUQ0QkNDRkUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01XaW5kb3dQcm9wZXJ0aWVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MEQxOTQ0MUZDRTIxREQwMEMzREI4NSAvKiBKU1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MjZCNDc1Mjc5QTAzRDIwMEFFRjBCMiAvKiBTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjI3M0MyMTI3QTFD
QkM3MDA2QTE1QjkgLyogSlNBdWRpb1dvcmtsZXRQcm9jZXNzb3JDdXN0b20uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNBdWRpb1dvcmtsZXRQcm9jZXNzb3JDdXN0b20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NjI3M0NBQzI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRT
dG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNXU2NyaXB0U3RvcmFn
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjI3M0NBRTI2MEU1OURGMDA2RkFB
OTEgLyogU1dTY3JpcHRTdG9yYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNXU2NyaXB0U3RvcmFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQ2MjdGRjU3Mjc5QjgyNDUwMEFBMzkxNiAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MjdGRjU4Mjc5QjgyNDYw
MEFBMzkxNiAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0NjI3RkY1QTI3OUI4N0EyMDBBQTM5MTYgLyogU2hhcmVkV29ya2VySWRl
bnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MkU0QzREMjYxNkE4
MDEwMDNBMkM2NyAvKiBTY3JpcHRCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2NyaXB0QnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MkU0
QzRGMjYxNkE4MDEwMDNBMkM2NyAvKiBTY3JpcHRCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0QnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDYzNDU5MkIxQUMyMjcxMDAwRUNCNzFDIC8qIFBvd2VyT2JzZXJ2ZXJNYWMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG93ZXJPYnNlcnZlck1h
Yy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MjM0LDE0ICs5MjQ0LDEwIEBA
CiAJCTQ2NzMwMjAxMUM0RUZFNjYwMEJDQjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENv
dW50SW5jcmVtZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWdub3Jl
T3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2NzgwMkIwMjc0NzExN0IwMERBOUZCNiAvKiBXZWJMb2NrTWFuYWdlclNuYXBz
aG90LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkxvY2tNYW5hZ2VyU25h
cHNob3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3ODAyQjIyNzQ3MTE4NTAw
REE5RkI2IC8qIFdlYkxvY2tJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkxvY2tJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTQ2N0E2OENGMjc1RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJQcm94eS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2N0E2OEQwMjc1RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFkLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3QTY4RDEyNzVFQTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdv
cmtlclNjcmlwdExvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NjdBNjhEMjI3NUVB
OThBMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFy
ZWRXb3JrZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2N0E2OEQz
Mjc1RUE5OEIwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNoYXJlZFdvcmtlck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NjdBNjhENDI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjdBNjhENTI3NUVBOThDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk0NjdBNjhENjI3NUVBOThDMDA5QjMxQzUgLyogU2hhcmVk
V29ya2VyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyUHJveHkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MkQxRkYxRjc5NzgyMzAwQzg2M0RCIC8qIFN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
b3JlZENyZWRlbnRpYWxzUG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
ODM0NERDMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NUmVjdExp
c3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgzNDRERDFFRERGQTVGMDBC
Nzc5NUIgLyogRE9NUmVjdExpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NUmVjdExpc3Qu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTI1NCw2ICs5MjYwLDEyIEBACiAJ
CTQ2ODNERjNFMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2hhZG93UmVhbG1HbG9iYWxT
Y29wZUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OEVFM0EyNkREMjYw
QzAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcm9zc09yaWdp
bk1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4QjhCREUyNUNDODQ5MzAw
RjY3ODIyIC8qIEpTQmFzZUF1ZGlvQ29udGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0Jhc2VBdWRpb0NvbnRleHRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0Njk0M0RDMjI3NjNGODBDMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyUHJvdmlkZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RDNDI3NjNGODBEMDA0QjYxMEUgLyogU2hhcmVkV29y
a2VyUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyUHJvdmlkZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQzUyNzYzRjgwRDAwNEI2MTBFIC8qIFNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RD
NjI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk4NUYyMjI3
QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlcktleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NjlDQ0NGQTI2OUQwMjAyMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBCcm9hZGNhc3RDaGFubmVsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDY5Q0NDRkMyNjlEMDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQnJvYWRjYXN0Q2hhbm5lbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NjlDQ0NGRDI2OUQwMjAzMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gQnJvYWRjYXN0Q2hhbm5lbC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC05Mjg4LDYgKzkzMDAsNyBAQAogCQk0NkMzNzY1RjIwODUxNzZDMDBDNzM4MjkgLyogSlNS
ZW1vdGVET01XaW5kb3cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNSZW1vdGVET01XaW5kb3cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkMz
NzY2MTIwODUxNzZEMDBDNzM4MjkgLyogSlNSZW1vdGVET01XaW5kb3cuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNSZW1vdGVET01XaW5kb3cuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDZDM0E4RDMyNTQ4RDRCNzAwQzhDNTNBIC8qIEpTQXVkaW9CdWZmZXJD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdWRpb0J1ZmZlckN1c3RvbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2QzQxNjlEMjc5QTA0RDIwMDI1MkMzQiAvKiBT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2QzY5NkM5MUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENQVU1vbml0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDNjk2Q0ExRTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1BVTW9uaXRvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzgzRUZCMUE5QkJFMjkwMEE3OUE0
MSAvKiBHZW9Ob3RpZmllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBHZW9Ob3RpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTUyMSw2
ICsyMTUzNCwxNyBAQAogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CiAJCX07CisJCTQ2MjZCNDczMjc5QTAzQjEwMEFFRjBCMiAvKiBjb250ZXh0ICovID0geworCQkJ
aXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk0NjI3RkY1NzI3OUI4MjQ1MDBB
QTM5MTYgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3BwICovLAorCQkJCTQ2MjdGRjU4Mjc5
QjgyNDYwMEFBMzkxNiAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oICovLAorCQkJCTQ2QzQx
NjlEMjc5QTA0RDIwMDI1MkMzQiAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAgKi8s
CisJCQkJNDYyNkI0NzUyNzlBMDNEMjAwQUVGMEIyIC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyLmggKi8sCisJCQkpOworCQkJcGF0aCA9IGNvbnRleHQ7CisJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOworCQl9OwogCQk0NjQyNDA0NDIwRUFGMEJEMDBCMjlGRDIgLyogY29jb2EgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjE1NTUsMTYgKzIxNTc5
LDIwIEBACiAJCTQ2Njk0Q0RFMjc1OTQ0NkQwMEUzMTUwRSAvKiBzaGFyZWQgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQ2MjZCNDczMjc5QTAzQjEwMEFF
RjBCMiAvKiBjb250ZXh0ICovLAogCQkJCTQ2Njk0Q0UzMjc1OTQ0OEQwMEUzMTUwRSAvKiBTaGFy
ZWRXb3JrZXIuY3BwICovLAogCQkJCTQ2Njk0Q0UyMjc1OTQ0OEQwMEUzMTUwRSAvKiBTaGFyZWRX
b3JrZXIuaCAqLywKIAkJCQk0NjY5NENFNTI3NTk0NDhFMDBFMzE1MEUgLyogU2hhcmVkV29ya2Vy
LmlkbCAqLywKIAkJCQk0NjY5NENFNDI3NTk0NDhFMDBFMzE1MEUgLyogU2hhcmVkV29ya2VyR2xv
YmFsU2NvcGUuY3BwICovLAogCQkJCTQ2Njk0Q0UxMjc1OTQ0OEMwMEUzMTUwRSAvKiBTaGFyZWRX
b3JrZXJHbG9iYWxTY29wZS5oICovLAogCQkJCTQ2Njk0Q0UwMjc1OTQ0OEMwMEUzMTUwRSAvKiBT
aGFyZWRXb3JrZXJHbG9iYWxTY29wZS5pZGwgKi8sCi0JCQkJNDY3QTY4RDMyNzVFQTk4QjAwOUIz
MUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuY3BwICovLAotCQkJCTQ2N0E2OEQyMjc1RUE5OEEw
MDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggKi8sCi0JCQkJNDY3QTY4Q0YyNzVFQTk4
OTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclByb3h5LmNwcCAqLywKLQkJCQk0NjdBNjhENjI3NUVB
OThDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyUHJveHkuaCAqLywKKwkJCQk0NjI3RkY1QTI3OUI4
N0EyMDBBQTM5MTYgLyogU2hhcmVkV29ya2VySWRlbnRpZmllci5oICovLAorCQkJCTQ2OTg1RjIy
MjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCAqLywKKwkJCQk0Njk0M0RDNjI3
NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgKi8sCisJ
CQkJNDY5NDNEQzUyNzYzRjgwRDAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b24uaCAqLywKKwkJCQk0Njk0M0RDNzI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllci5oICovLAorCQkJCTQ2OTQzREMyMjc2M0Y4MEMwMDRCNjEwRSAvKiBTaGFy
ZWRXb3JrZXJQcm92aWRlci5jcHAgKi8sCisJCQkJNDY5NDNEQzQyNzYzRjgwRDAwNEI2MTBFIC8q
IFNoYXJlZFdvcmtlclByb3ZpZGVyLmggKi8sCiAJCQkJNDY3QTY4RDEyNzVFQTk4QTAwOUIzMUM1
IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAgKi8sCiAJCQkJNDY3QTY4RDUyNzVFQTk4
QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oICovLAogCQkJCTQ2N0E2OEQw
Mjc1RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuY3BwICovLApAQCAtMzM4NzIs
NiArMzM5MDAsNyBAQAogCQkJCTJENDgxRjAyMTQ2QjVDNTUwMEFBNzgzNCAvKiBDcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFDNDE2MTIwRjY1NjJGRDAwOTJE
MkZCIC8qIENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY3
MkFBOTgyNkIwOTQzMzAwRTZFQzM4IC8qIENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTQ2QTc4QjM0Mjc5OUJENzEwMDExNTRGRSAvKiBXb3JrZXJPcHRpb25z
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0Njg4RUUzQzI2REQyNjEwMDAyQUY1QzQgLyogQ3Jvc3NP
cmlnaW5Nb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjcyQUE5OTI2QjA5NDNGMDBFNkVDMzgg
LyogQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQUJFNjdC
MUQwNTgwREIwMDZEODYyRCAvKiBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuaCBpbiBIZWFk
ZXJzICovLApAQCAtMzM5MTAsNiArMzM5MzksNyBAQAogCQkJCTU3RkVERDNGMURCNkQ1OTIwMEVC
OTZGNSAvKiBDcnlwdG9BbGdvcml0aG1Sc2FLZXlHZW5QYXJhbXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTU3MDZBNjk2MURERTVDOTUwMEEwM0IxNCAvKiBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFy
YW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzIxQTk4QjFFQ0U1NzA0MDA4MTI5NUEgLyogQ3J5
cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjI3RkY1OTI3
OUI4MjQ5MDBBQTM5MTYgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUxQkQzMzFBMTgyRDhEREQwMEMwNUQ5RiAvKiBDcnlwdG9BbGdvcml0aG1SU0FTU0Ff
UEtDUzFfdjFfNS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEyNUY4MkMxODIyQ0ZFQzAwRDg0Q0Q5
IC8qIENyeXB0b0FsZ29yaXRobVNIQTEuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxOUFDM0VGMTgy
NERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyMjQuaCBpbiBIZWFkZXJzICovLApA
QCAtMzQ4OTYsNiArMzQ5MjYsNyBAQAogCQkJCUNEM0UyMUREMjE4MzQ0NEEwMEU2NkY1NSAvKiBJ
bWFnZUJ1ZmZlclV0aWxpdGllc0NHLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NEVFQTEwMDI3NDc1
N0YxMDA1OTRBODMgLyogSW1hZ2VDb250cm9sc01hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3
OTc5MUEwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NDZDNDE2OUIyNzlBMDRDNzAwMjUyQzNCIC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQ0EwODhGNTI2NEUxQzA4MDAzRTJBNkMgLyogSW1hZ2VEYXRh
U2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMTlGRUE4MUY1NzM5NzIwMDBDNDJGQiAv
KiBJbWFnZURlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMTlGRUFFMUY1NzRCNkQwMDBD
NDJGQiAvKiBJbWFnZURlY29kZXJBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKQEAgLTM1NTI0LDYg
KzM1NTU1LDcgQEAKIAkJCQkxQTc1MEQ4RTBBOTBFNTIxMDAwRkYyMTUgLyogSlNOb2RlSXRlcmF0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDlDMkMzMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05v
ZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDIwQjE4RDE4RTlEMjM3MDA1QTgwODMgLyog
SlNOb2RlTGlzdEN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY5NDNEQzkyNzYzRjgxNzAw
NEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTMzNTAzQ0E0MTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTEwRTJGMzMyNzZCRjY4NTAwODA5MzMzIC8qIEpTTm90aWZpY2F0aW9uRGly
ZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTBFMkYyQjI3NkJDRkU4MDA4MDkzMzMgLyog
SlNOb3RpZmljYXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNjY3NSw2ICszNjcwNyw3
IEBACiAJCQkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2MDQzIC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRp
bnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMjlDOUE5MUY1OUM1NkIwMDlENzQwMyAvKiBSZWFk
YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTZFNkZF
ODFCQkQxMkRGMDAwQTNGNjQgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDY5NDNEQzgyNzYzRjgxMjAwNEI2MTBFIC8qIFNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMjlDOUFGMUY1OUNGNUIw
MDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMjlD
OUFCMUY1OUM1NzMwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNvdXJjZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkQzMTYwM0MxMkIwMjY3NjAwQzFBMzU5IC8qIFJlYWx0aW1lQW5hbHlzZXIuaCBp
biBIZWFkZXJzICovLApAQCAtMzcwNTIsNiArMzcwODUsNyBAQAogCQkJCTBGNjA1QUVEMTVGOTQ4
NDgwMDRERjBDMCAvKiBTY3JvbGxpbmdDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFGNjJFRTgxNERBMjJBNzAwNDE1NTZDIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5MzkxQTk5MTE2Mjc0NkNCMDAyOTczMzAgLyogU2Nyb2xsaW5nQ29vcmRp
bmF0b3JNYWMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2MjdGRjVCMjc5Qjg3QUYwMEFBMzkxNiAv
KiBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTJEQkE0OTIx
RjhBRDgzMDA4RjM2QjIgLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3JUeXBlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNUI0NjY1NjMyNUQxNEMwQTAwMENGRTE0IC8qIFNjcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk5MDU5QTI2RjZCRTg1MDA1NEZCRTAgLyog
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTM3MTc4LDgg
KzM3MjEyLDYgQEAKIAkJCQk4MzRERkFEMDFGN0RBRTVEMDBDMjcyNUIgLyogU2hhcmVkU3RyaW5n
SGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFQTMwOTlFQjc4QzAwNTZFNTgxIC8qIFNo
YXJlZFRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURDMDRGRTI3QTgzQzkzMDA4Q0Y5Njgg
LyogU2hhcmVkVmlkZW9GcmFtZUluZm8uaCBpbiBIZWFkZXJzICovLAotCQkJCTQ2N0E2OERBMjc1
RUE5OUMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk0NjdBNjhEOTI3NUVBOTk4MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyUHJveHkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ2N0E2OEQ4Mjc1RUE5OTUwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2N0E2OEQ3Mjc1RUE5OTEwMDlCMzFDNSAv
KiBTaGFyZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDNERCMDI2MjczMzlG
RTAwMDdCMEFEMSAvKiBTaG91bGRMb2NhbGl6ZUF4aXNOYW1lcy5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zNzQxMyw2ICszNzQ0NSw3IEBACiAJCQkJQjIyMjc5QzAwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R0VsbGlwc2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlDODBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHRkVCbGVuZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUNC
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDY5ODVGMjMyN0E0QTZBRDAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktleS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5Q0UwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFQ29tcG9u
ZW50VHJhbnNmZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlEMTBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHRkVDb21wb3NpdGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkx
OTIxMzI3NTExQzBFNkJCMDA0NTYyMzggLyogU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaCBp
biBIZWFkZXJzICovLApAQCAtMzgwNjAsNiArMzgwOTMsNyBAQAogCQkJCTgzQUNEMDEzMjUyMjlF
MTAwMDBEMTI0RSAvKiBXb3JrbGV0T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM0QTZB
M0EyNTI2ODQ0QTAwNzQ3RjVEIC8qIFdvcmtsZXRQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4MzNCRDgxNzI1MjRENEYyMDA2RTcyQjMgLyogV29ya2xldFBlbmRpbmdUYXNrcy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDY5NDNEQ0EyNzYzRjgxQzAwNEI2MTBFIC8qIFNoYXJlZFdvcmtl
clByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUyNDA5OUU2NDkyMDA1NkU1ODEg
LyogV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTZFNkZFODFCQkQxMkRGMDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlu
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUJBRjNCMjQxMkMxQTM5ODAwMDE0QkYxIC8qIFdyaXRp
bmdEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCmlu
ZGV4IGRjMGY1MDk4Yjg3Zi4uZmE3ZDIzMDJlYzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2lu
Zy5oCkBAIC0xMDksNiArMTA5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIE0oU2VsZWN0
aW9uKSBcCiAgICAgTShTZXJ2aWNlcykgXAogICAgIE0oU2VydmljZVdvcmtlcikgXAorICAgIE0o
U2hhcmVkV29ya2VyKSBcCiAgICAgTShTcGVsbGluZ0FuZEdyYW1tYXIpIFwKICAgICBNKFNRTERh
dGFiYXNlKSBcCiAgICAgTShTdG9yYWdlKSBcCkBAIC0xMjYsNiArMTI3LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIE0oV2ViR0wpIFwKICAgICBNKFdlYlJUQykgXAogICAgIE0oV2ViUlRD
U3RhdHMpIFwKKyAgICBNKFdvcmtlcikgXAogICAgIE0oWFIpIFwKICAgICBNKFdoZWVsRXZlbnRU
ZXN0TW9uaXRvcikgXAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyLmNwcAppbmRleCA2YTU5YjJlZmU5YTEuLjkyNmQzNTcwNzg1MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDEzICsyNiwxNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgogCisjaW5j
bHVkZSAiQ2xpZW50T3JpZ2luLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5Lmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VDaGFubmVsLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVBvcnQuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJNYW5hZ2VyLmgiCi0jaW5jbHVkZSAi
U2hhcmVkV29ya2VyUHJveHkuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXb3Jr
ZXJPcHRpb25zLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllcnNGYWN0b3J5
Lmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTQxLDggKzQ1LDMxIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFNoYXJl
ZFdvcmtlcik7CiAKLUV4Y2VwdGlvbk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBTaGFyZWRXb3JrZXI6
OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFn
cywgU3RyaW5nJiYgc2NyaXB0VVJMU3RyaW5nLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxT
dHJpbmcsIFdvcmtlck9wdGlvbnM+PiYmIG1heWJlT3B0aW9ucykKKyNkZWZpbmUgU0hBUkVEX1dP
UktFUl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAg
LSBbaWRlbnRpZmllcj0le3B1YmxpY31zXSBTaGFyZWRXb3JrZXI6OiIgZm10LCB0aGlzLCBtX2lk
ZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAjI19fVkFfQVJHU19fKQorI2RlZmlu
ZSBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HX0VSUk9SKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19F
UlJPUihTaGFyZWRXb3JrZXIsICIlcCAtIFtpZGVudGlmaWVyPSV7cHVibGljfXNdIFNoYXJlZFdv
cmtlcjo6IiBmbXQsIHRoaXMsIG1faWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCks
ICMjX19WQV9BUkdTX18pCisKK3N0YXRpYyBIYXNoTWFwPFNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIsIFNoYXJlZFdvcmtlcio+JiBhbGxTaGFyZWRXb3JrZXJzKCkKK3sKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFNoYXJlZFdvcmtlcio+PiBhbGxTaGFyZWRXb3JrZXJz
OworICAgIHJldHVybiBhbGxTaGFyZWRXb3JrZXJzOworfQorCitTaGFyZWRXb3JrZXIqIFNoYXJl
ZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBpZGVu
dGlmaWVyKQoreworICAgIHJldHVybiBhbGxTaGFyZWRXb3JrZXJzKCkuZ2V0KGlkZW50aWZpZXIp
OworfQorCitzdGF0aWMgaW5saW5lIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24qIG1haW5U
aHJlYWRDb25uZWN0aW9uKCkKIHsKKyAgICByZXR1cm4gU2hhcmVkV29ya2VyUHJvdmlkZXI6OnNp
bmdsZXRvbigpLnNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKK30KKworRXhjZXB0aW9uT3I8UmVm
PFNoYXJlZFdvcmtlcj4+IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwg
U3RyaW5nJiYgc2NyaXB0VVJMU3RyaW5nLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxTdHJp
bmcsIFdvcmtlck9wdGlvbnM+PiYmIG1heWJlT3B0aW9ucykKK3sKKyAgICBpZiAoIW1haW5UaHJl
YWRDb25uZWN0aW9uKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRF
cnJvciwgIlNoYXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkIiB9OworCiAgICAgaWYgKCFk
b2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmNhbkFjY2Vzc1NoYXJlZFdvcmtlcnMoZG9jdW1lbnQu
dG9wT3JpZ2luKCkpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwg
IlRoaXMgaWZyYW1lIGRvZXNuJ3QgaGF2ZSBzdG9yYWdlIGFjY2VzcyJfcyB9OwogCkBAIC02Nywy
NiArOTQsMzAgQEAgRXhjZXB0aW9uT3I8UmVmPFNoYXJlZFdvcmtlcj4+IFNoYXJlZFdvcmtlcjo6
Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgSlNDOjpSdW4KICAgICBhdXRvIGNoYW5uZWwgPSBN
ZXNzYWdlQ2hhbm5lbDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBhdXRvIHRyYW5zZmVycmVkUG9y
dCA9IGNoYW5uZWwtPnBvcnQyKCkuZGlzZW50YW5nbGUoKTsKIAotICAgIGF1dG8gc2hhcmVkV29y
a2VyID0gYWRvcHRSZWYoKm5ldyBTaGFyZWRXb3JrZXIoZG9jdW1lbnQsIGNoYW5uZWwtPnBvcnQx
KCksIHJ1bnRpbWVGbGFncykpOworICAgIGF1dG8gc2hhcmVkV29ya2VyID0gYWRvcHRSZWYoKm5l
dyBTaGFyZWRXb3JrZXIoZG9jdW1lbnQsIGNoYW5uZWwtPnBvcnQxKCkpKTsKICAgICBzaGFyZWRX
b3JrZXItPnN1c3BlbmRJZk5lZWRlZCgpOwogCi0gICAgU2hhcmVkV29ya2VyTWFuYWdlcjo6c2lu
Z2xldG9uKCkuY29ubmVjdCh1cmwsIHNoYXJlZFdvcmtlci5nZXQoKSwgV1RGTW92ZSh0cmFuc2Zl
cnJlZFBvcnQpLCBXVEZNb3ZlKG9wdGlvbnMpKTsKKyAgICBDbGllbnRPcmlnaW4gY2xpZW50T3Jp
Z2luIHsgZG9jdW1lbnQudG9wRG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSwgZG9j
dW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkgfTsKKyAgICBtYWluVGhyZWFkQ29ubmVjdGlv
bigpLT5yZXF1ZXN0U2hhcmVkV29ya2VyKGNsaWVudE9yaWdpbiwgc2hhcmVkV29ya2VyLT5pZGVu
dGlmaWVyKCksIHVybCwgV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBvcHRpb25zKTsKICAgICBy
ZXR1cm4gc2hhcmVkV29ya2VyOwogfQogCi1TaGFyZWRXb3JrZXI6OlNoYXJlZFdvcmtlcihEb2N1
bWVudCYgZG9jdW1lbnQsIFJlZjxNZXNzYWdlUG9ydD4mJiBwb3J0LCBKU0M6OlJ1bnRpbWVGbGFn
cyBydW50aW1lRmxhZ3MpCitTaGFyZWRXb3JrZXI6OlNoYXJlZFdvcmtlcihEb2N1bWVudCYgZG9j
dW1lbnQsIFJlZjxNZXNzYWdlUG9ydD4mJiBwb3J0KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZk
b2N1bWVudCkKKyAgICAsIG1faWRlbnRpZmllcihTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpKQogICAgICwgbV9wb3J0KFdURk1vdmUocG9ydCkpCiAgICAgLCBtX2lkZW50
aWZpZXJGb3JJbnNwZWN0b3IoIlNoYXJlZFdvcmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVy
c0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKSkKLSAgICAsIG1fcnVudGltZUZsYWdzKHJ1bnRp
bWVGbGFncykKLSAgICAsIG1fY3JlYXRpb25UaW1lKE1vbm90b25pY1RpbWU6Om5vdygpKQotICAg
ICwgbV9wcm94eShTaGFyZWRXb3JrZXJQcm94eTo6Y3JlYXRlKCp0aGlzKSkKIHsKKyAgICBTSEFS
RURfV09SS0VSX1JFTEVBU0VfTE9HKCJTaGFyZWRXb3JrZXI6Iik7CisgICAgYWxsU2hhcmVkV29y
a2VycygpLmFkZChtX2lkZW50aWZpZXIsIHRoaXMpOwogfQogCiBTaGFyZWRXb3JrZXI6On5TaGFy
ZWRXb3JrZXIoKQogewotICAgIG1fcHJveHkud29ya2VyT2JqZWN0RGVzdHJveWVkKCk7CisgICAg
QVNTRVJUKGFsbFNoYXJlZFdvcmtlcnMoKS5nZXQobV9pZGVudGlmaWVyKSA9PSB0aGlzKTsKKyAg
ICBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HKCJ+U2hhcmVkV29ya2VyOiIpOworICAgIGFsbFNo
YXJlZFdvcmtlcnMoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKKyAgICBBU1NFUlQoIW1faXNBY3Rp
dmUpOwogfQogCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBTaGFyZWRXb3JrZXI6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdApAQCAtMTA0LDE5ICsxMzUsMjYgQEAgRXZlbnRUYXJnZXRJ
bnRlcmZhY2UgU2hhcmVkV29ya2VyOjpldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0CiAgICAg
cmV0dXJuIFNoYXJlZFdvcmtlckV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsKIH0KIAotdm9pZCBT
aGFyZWRXb3JrZXI6OnN0b3AoKQordm9pZCBTaGFyZWRXb3JrZXI6OmRpZEZhaWxMb2FkaW5nKCkK
IHsKLSAgICB0ZXJtaW5hdGUoKTsKKyAgICBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HX0VSUk9S
KCJ+ZGlkRmFpbExvYWRpbmc6Iik7CisgICAgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCp0aGlz
LCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmVycm9yRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZ
ZXMpKTsKKyAgICBtX2lzQWN0aXZlID0gZmFsc2U7CiB9CiAKIGJvb2wgU2hhcmVkV29ya2VyOjp2
aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcm94eS5o
YXNQZW5kaW5nQWN0aXZpdHkoKSB8fCBtX2lzTG9hZGluZzsKKyAgICByZXR1cm4gbV9pc0FjdGl2
ZTsKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXI6OnRlcm1pbmF0ZSgpCit2b2lkIFNoYXJlZFdvcmtl
cjo6c3RvcCgpCiB7Ci0gICAgbV9wcm94eS50ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpOwor
ICAgIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coInN0b3A6Iik7CisgICAgbV9pc0FjdGl2ZSA9
IGZhbHNlOworICAgIG1haW5UaHJlYWRDb25uZWN0aW9uKCktPnNoYXJlZFdvcmtlck9iamVjdElz
R29pbmdBd2F5KG1faWRlbnRpZmllcik7CiB9CiAKKyN1bmRlZiBTSEFSRURfV09SS0VSX1JFTEVB
U0VfTE9HCisjdW5kZWYgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPR19FUlJPUgorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlci5oCmluZGV4IDUzMjZlZTU0MmM4OC4uODdjYzc1ZWZiZTgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNywzOSArMjcsMzUgQEAKIAogI2lu
Y2x1ZGUgIkFic3RyYWN0V29ya2VyLmgiCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0j
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUnVudGltZUZsYWdzLmg+CisjaW5jbHVkZSAiU2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVzc2FnZVBvcnQ7Ci1jbGFzcyBTaGFy
ZWRXb3JrZXJQcm94eTsKK2NsYXNzIFJlc291cmNlRXJyb3I7CiAKIHN0cnVjdCBXb3JrZXJPcHRp
b25zOwogCiBjbGFzcyBTaGFyZWRXb3JrZXIgZmluYWwgOiBwdWJsaWMgQWJzdHJhY3RXb3JrZXIs
IHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoU2hh
cmVkV29ya2VyKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFNoYXJlZFdv
cmtlcj4+IGNyZWF0ZShEb2N1bWVudCYsIEpTQzo6UnVudGltZUZsYWdzLCBTdHJpbmcmJiBzY3Jp
cHRVUkwsIHN0ZDo6b3B0aW9uYWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+
JiYpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8U2hhcmVkV29ya2VyPj4gY3JlYXRlKERv
Y3VtZW50JiwgU3RyaW5nJiYgc2NyaXB0VVJMLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxT
dHJpbmcsIFdvcmtlck9wdGlvbnM+PiYmKTsKICAgICB+U2hhcmVkV29ya2VyKCk7CiAKKyAgICBz
dGF0aWMgU2hhcmVkV29ya2VyKiBmcm9tSWRlbnRpZmllcihTaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyKTsKKyAgICBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBNZXNzYWdlUG9ydCYgcG9ydCgpIGNv
bnN0IHsgcmV0dXJuIG1fcG9ydC5nZXQoKTsgfQotICAgIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRp
bWVGbGFncygpIHsgcmV0dXJuIG1fcnVudGltZUZsYWdzOyB9CiAKICAgICBjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXJGb3JJbnNwZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXJGb3JJ
bnNwZWN0b3I7IH0KLSAgICBNb25vdG9uaWNUaW1lIGNyZWF0aW9uVGltZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY3JlYXRpb25UaW1lOyB9CiAKLSAgICBTaGFyZWRXb3JrZXJQcm94eSYgcHJveHkoKSB7
IHJldHVybiBtX3Byb3h5OyB9Ci0KLSAgICB2b2lkIHNldElzTG9hZGluZyhib29sIGlzTG9hZGlu
ZykgeyBtX2lzTG9hZGluZyA9IGlzTG9hZGluZzsgfQorICAgIHZvaWQgZGlkRmFpbExvYWRpbmco
KTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0LgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBTaGFy
ZWRXb3JrZXIoRG9jdW1lbnQmLCBSZWY8TWVzc2FnZVBvcnQ+JiYsIEpTQzo6UnVudGltZUZsYWdz
KTsKLQotICAgIHZvaWQgdGVybWluYXRlKCk7CisgICAgU2hhcmVkV29ya2VyKERvY3VtZW50Jiwg
UmVmPE1lc3NhZ2VQb3J0PiYmKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0LgogICAgIEV2ZW50VGFy
Z2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWw7CkBAIC03MCwx
MiArNjYsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHko
KSBjb25zdCBmaW5hbDsKIAogCisgICAgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBtX2lk
ZW50aWZpZXI7CiAgICAgUmVmPE1lc3NhZ2VQb3J0PiBtX3BvcnQ7CiAgICAgU3RyaW5nIG1faWRl
bnRpZmllckZvckluc3BlY3RvcjsKLSAgICBKU0M6OlJ1bnRpbWVGbGFncyBtX3J1bnRpbWVGbGFn
czsKLSAgICBNb25vdG9uaWNUaW1lIG1fY3JlYXRpb25UaW1lOwotICAgIFNoYXJlZFdvcmtlclBy
b3h5JiBtX3Byb3h5OyAvLyBUaGUgcHJveHkgb3V0bGl2ZXMgdGhlIHdvcmtlciB0byBwZXJmb3Jt
IHRocmVhZCBzaHV0ZG93bi4KLSAgICBib29sIG1faXNMb2FkaW5nIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1faXNBY3RpdmUgeyB0cnVlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaWRs
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmlkbAppbmRleCBi
MTcxYzllZGY4MWIuLjRjNzQxNTRkODIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9TaGFyZWRXb3JrZXIuaWRsCkBAIC0yOCw3ICsyOCw3IEBACiAgICAgRXhwb3NlZD1X
aW5kb3cKIF0KIGludGVyZmFjZSBTaGFyZWRXb3JrZXIgOiBFdmVudFRhcmdldCB7Ci0gIFtDYWxs
V2l0aD1Eb2N1bWVudCZSdW50aW1lRmxhZ3NdIGNvbnN0cnVjdG9yKFVTVlN0cmluZyBzY3JpcHRV
UkwsIG9wdGlvbmFsIChET01TdHJpbmcgb3IgV29ya2VyT3B0aW9ucykgb3B0aW9ucyk7CisgIFtD
YWxsV2l0aD1Eb2N1bWVudF0gY29uc3RydWN0b3IoVVNWU3RyaW5nIHNjcmlwdFVSTCwgb3B0aW9u
YWwgKERPTVN0cmluZyBvciBXb3JrZXJPcHRpb25zKSBvcHRpb25zKTsKIAogICByZWFkb25seSBh
dHRyaWJ1dGUgTWVzc2FnZVBvcnQgcG9ydDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggNDEy
MWViNThjMjA1Li4zYzU1YTY4N2JmODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjYsMTIg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJHbG9iYWxTY29w
ZS5oIgogCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNp
bmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUu
aCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIgorI2luY2x1ZGUgIlNo
YXJlZFdvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUg
PHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTMzLDE3ICszOSw0NCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChTaGFyZWRXb3JrZXJHbG9i
YWxTY29wZSk7CiAKKyNkZWZpbmUgU0NPUEVfUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0Vf
TE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gW3NoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0
ICJdIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlOjoiIGZtdCwgdGhpcywgdGhpcy0+dGhyZWFkKCku
aWRlbnRpZmllcigpLnRvVUludDY0KCksICMjX19WQV9BUkdTX18pCisKIFNoYXJlZFdvcmtlckds
b2JhbFNjb3BlOjpTaGFyZWRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFtcywgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdp
biwgV29ya2VyVGhyZWFkJiB0aHJlYWQsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4s
IElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBjb25uZWN0aW9uUHJveHksIFNvY2tldFBy
b3ZpZGVyKiBzb2NrZXRQcm92aWRlcikKICAgICA6IFdvcmtlckdsb2JhbFNjb3BlKFdvcmtlclRo
cmVhZFR5cGU6OlNoYXJlZFdvcmtlciwgcGFyYW1zLCBXVEZNb3ZlKG9yaWdpbiksIHRocmVhZCwg
V1RGTW92ZSh0b3BPcmlnaW4pLCBjb25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyKQogICAg
ICwgbV9uYW1lKG5hbWUpCiB7CisgICAgU0NPUEVfUkVMRUFTRV9MT0coIlNoYXJlZFdvcmtlckds
b2JhbFNjb3BlOiIpOwogICAgIHJlbGF4QWRvcHRpb25SZXF1aXJlbWVudCgpOwogICAgIGFwcGx5
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzKHBhcmFtcy5jb250ZW50U2VjdXJp
dHlQb2xpY3lSZXNwb25zZUhlYWRlcnMpOwogfQogCitTaGFyZWRXb3JrZXJUaHJlYWQmIFNoYXJl
ZFdvcmtlckdsb2JhbFNjb3BlOjp0aHJlYWQoKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxT
aGFyZWRXb3JrZXJUaHJlYWQmPihXb3JrZXJHbG9iYWxTY29wZTo6dGhyZWFkKCkpOworfQorCiB2
b2lkIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlOjpjbG9zZSgpCiB7CisgICAgU0NPUEVfUkVMRUFT
RV9MT0coImNsb3NlOiIpOwogICAgIHRocmVhZCgpLnN0b3AobnVsbHB0cik7CiB9CiAKKy8vIGh0
dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dvcmtlcnMuaHRtbCNkb20tc2hh
cmVkd29ya2VyIHN0ZXAgMTEuNQordm9pZCBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTo6cG9zdENv
bm5lY3RFdmVudChUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgdHJhbnNmZXJyZWRQb3J0LCBTdHJp
bmcmJiBzb3VyY2VPcmlnaW4pCit7CisgICAgU0NPUEVfUkVMRUFTRV9MT0coInBvc3RDb25uZWN0
RXZlbnQ6Iik7CisgICAgYXV0byBzZXJpYWxpemVkU2NyaXB0VmFsdWUgPSBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZSgiIik7CisgICAgQVNTRVJUKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7
CisgICAgYXV0byBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCp0aGlzLCB7IFdU
Rk1vdmUodHJhbnNmZXJyZWRQb3J0KSB9KTsKKyAgICBBU1NFUlQocG9ydHMuc2l6ZSgpID09IDEp
OworICAgIGF1dG8gcG9ydCA9IHBvcnRzWzBdOworICAgIEFTU0VSVChwb3J0KTsKKyAgICBhdXRv
IGV2ZW50ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIHNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5yZWxlYXNlTm9uTnVsbCgpLCBzb3VyY2VPcmlnaW4sIHsgfSwgcG9ydCk7Cisg
ICAgZXZlbnQtPmluaXRFdmVudChldmVudE5hbWVzKCkuY29ubmVjdEV2ZW50LCBmYWxzZSwgZmFs
c2UpOworCisgICAgZGlzcGF0Y2hFdmVudChXVEZNb3ZlKGV2ZW50KSk7Cit9CisKKyN1bmRlZiBT
Q09QRV9SRUxFQVNFX0xPRworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaApp
bmRleCBmMzc3OWI4NGQxNTAuLjE1ZGRjNTM4ZGI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDExICsy
NSwxMyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIk1lc3NhZ2VXaXRoTWVzc2FnZVBv
cnRzLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDx3dGYvSXNv
TWFsbG9jLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVkV29ya2VyVGhy
ZWFkOwogc3RydWN0IFdvcmtlclBhcmFtZXRlcnM7CiAKIGNsYXNzIFNoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlIGZpbmFsIDogcHVibGljIFdvcmtlckdsb2JhbFNjb3BlIHsKQEAgLTM5LDcgKzQxLDEx
IEBAIHB1YmxpYzoKIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5cGU6
OlNoYXJlZFdvcmtlcjsgfQogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbmFtZTsgfQorICAgIFNoYXJlZFdvcmtlclRocmVhZCYgdGhyZWFkKCk7CisKKyAgICB2b2lk
IHBvc3RDb25uZWN0RXZlbnQoVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBTdHJpbmcmJiBzb3Vy
Y2VPcmlnaW4pOwogICAgIHZvaWQgY2xvc2UoKTsKKwogcHJpdmF0ZToKICAgICBTaGFyZWRXb3Jr
ZXJHbG9iYWxTY29wZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMm
LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIFdvcmtlclRocmVhZCYsIFJlZjxTZWN1cml0eU9yaWdp
bj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJv
dmlkZXIqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VySWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VySWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uODdhOTcyMTA0ODc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VySWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBTaGFyZWRXb3JrZXJJZGVudGlmaWVy
VHlwZSB7IH07Cit1c2luZyBTaGFyZWRXb3JrZXJJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmll
cjxTaGFyZWRXb3JrZXJJZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlcktl
eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyS2V5LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41ZjllNmRjOTBiYTkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJL
ZXkuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJDbGllbnRPcmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3N0cnVjdCBTaGFyZWRXb3JrZXJLZXkgeworICAgIFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiBvcmlnaW47CisgICAgVVJMIHVybDsKKyAgICBTdHJpbmcgbmFtZTsKKworICAgIHVu
c2lnbmVkIGhhc2goKSBjb25zdDsKK307CisKK2lubGluZSB1bnNpZ25lZCBTaGFyZWRXb3JrZXJL
ZXk6Omhhc2goKSBjb25zdAoreworICAgIEhhc2hlciBoYXNoZXI7CisgICAgYWRkKGhhc2hlciwg
b3JpZ2luLmhhc2goKSk7CisgICAgYWRkKGhhc2hlciwgdXJsKTsKKyAgICBhZGQoaGFzaGVyLCBu
YW1lKTsKKyAgICByZXR1cm4gaGFzaGVyLmhhc2goKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBTaGFyZWRXb3JrZXJLZXkmIGEsIGNvbnN0IFNoYXJlZFdvcmtlcktleSYgYikK
K3sKKyAgICByZXR1cm4gYS5vcmlnaW4gPT0gYi5vcmlnaW4gJiYgYS51cmwgPT0gYi51cmwgJiYg
YS5uYW1lID09IGIubmFtZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3Bh
Y2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6U2hhcmVk
V29ya2VyS2V5PiB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViQ29yZTo6U2hh
cmVkV29ya2VyS2V5JiBrZXkpCisgICAgeworICAgICAgICByZXR1cm4ga2V5Lmhhc2goKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJL
ZXkmIGEsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgYikKKyAgICB7CisgICAgICAg
IHJldHVybiBhID09IGI7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29t
cGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEhh
c2hUcmFpdHM8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5PiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdl
YkNvcmU6OlNoYXJlZFdvcmtlcktleT4geworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBlbXB0
eVZhbHVlSXNaZXJvID0gZmFsc2U7CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZh
bHVlKFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgc2xvdCkgeyBuZXcgKE5vdE51bGwsICZzbG90
LnVybCkgVVJMKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQorICAgIHN0YXRpYyBib29s
IGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgc2xvdCkgeyBy
ZXR1cm4gc2xvdC51cmwuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorfTsKKworfSAvLyBu
YW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9T
aGFyZWRXb3JrZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1No
YXJlZFdvcmtlck1hbmFnZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTI2
YmM0ZmVkODcuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtl
ck1hbmFnZXIuaCIKLQotI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgotI2luY2x1
ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgotI2luY2x1ZGUg
Ik1lc3NhZ2VFdmVudC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgotI2luY2x1
ZGUgIlNoYXJlZFdvcmtlci5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgi
Ci0jaW5jbHVkZSAiU2hhcmVkV29ya2VyUHJveHkuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJT
Y3JpcHRMb2FkZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKLSNpbmNsdWRl
ICJXb3JrZXJSdW5Mb29wLmgiCi0jaW5jbHVkZSAiV29ya2VyU2NyaXB0TG9hZGVyLmgiCi0jaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1TaGFyZWRXb3JrZXJNYW5hZ2VyJiBTaGFyZWRXb3JrZXJN
YW5hZ2VyOjpzaW5nbGV0b24oKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFyZWRX
b3JrZXJNYW5hZ2VyPiBpbnN0YW5jZTsKLSAgICByZXR1cm4gaW5zdGFuY2UuZ2V0KCk7Ci19Ci0K
LXZvaWQgU2hhcmVkV29ya2VyTWFuYWdlcjo6Y29ubmVjdChjb25zdCBVUkwmIHVybCwgU2hhcmVk
V29ya2VyJiB3b3JrZXIsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBtZXNzYWdlUG9ydCwgV29y
a2VyT3B0aW9ucyYmIG9wdGlvbnMpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
LSAgICAvLyBGSVhNRTogSGFuZGxlIHdvcmtlcnMgZnJvbSBvdGhlciBwcm9jZXNzZXMsIHdoaWNo
IHdpbGwgcHJvYmFibHkgcmVxdWlyZSBtb3ZpbmcgY29ubmVjdCB0byB0aGUgRnJhbWVMb2FkZXJD
bGllbnQgb3Igc29tZXRoaW5nLgotICAgIC8vIE1heWJlIHNvbWV0aGluZyBtb3JlIGxpa2Ugd2hh
dCBTZXJ2aWNlV29ya2VycyBkb2VzLgotCi0gICAgLy8gRklYTUU6IENoZWNrIGlmIHdlIGFscmVh
ZHkgbWFkZSBhIHRocmVhZC4KLSAgICAvLyBGSVhNRTogQ2hlY2sgaWYgdGhlcmUncyBhbHJlYWR5
IGEgc2hhcmVkIHdvcmtlciBhbmQgdXNlIHRoYXQgaWYgdGhlcmUgaXMuCi0KLSAgICBhdXRvIGxv
YWRlciA9IG1ha2VVbmlxdWVSZWY8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPih1cmwsIHdvcmtl
ciwgV1RGTW92ZShtZXNzYWdlUG9ydCksIFdURk1vdmUob3B0aW9ucykpOwotICAgIGF1dG8gaWRl
bnRpZmllciA9IGxvYWRlci0+aWRlbnRpZmllcigpOwotICAgIG1fbG9hZGVycy5hZGQoaWRlbnRp
ZmllciwgV1RGTW92ZShsb2FkZXIpKTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpz
Y3JpcHRMb2FkRmFpbGVkKFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYgbG9hZGVyKQotewotICAg
IEFjdGl2ZURPTU9iamVjdDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KGxvYWRlci53b3JrZXIo
KSwgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6
WWVzKSk7Ci0gICAgbV9sb2FkZXJzLnJlbW92ZShsb2FkZXIuaWRlbnRpZmllcigpKTsKLX0KLQot
dm9pZCBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzY3JpcHRMb2FkZWRTdWNjZXNzZnVsbHkoU2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyJiBsb2FkZXIsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc2NyaXB0QnVm
ZmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBTaGFy
ZWRXb3JrZXImIHNoYXJlZFdvcmtlciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHRyYW5zZmVy
cmVkUG9ydCkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8mIHdv
cmtlciA9IGxvYWRlci53b3JrZXIoKTsKLSAgICBhdXRvJiBvcHRpb25zID0gbG9hZGVyLm9wdGlv
bnMoKTsKLQotICAgIGF1dG8mIHByb3h5ID0gc2hhcmVkV29ya2VyLnByb3h5KCk7Ci0KLSAgICBw
cm94eS5zdGFydFdvcmtlckdsb2JhbFNjb3BlKAotICAgICAgICBsb2FkZXIudXJsKCksCi0gICAg
ICAgIG9wdGlvbnMubmFtZSwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC51c2VyQWdl
bnQobG9hZGVyLnVybCgpKSwKLSAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0
cmF0ZWd5KCktPmlzT25MaW5lKCksCi0gICAgICAgIHNjcmlwdEJ1ZmZlciwKLSAgICAgICAgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+cmVzcG9uc2VIZWFk
ZXJzKCksCi0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuc2hvdWxkQnlwYXNzTWFpbldv
cmxkQ29udGVudFNlY3VyaXR5UG9saWN5KCksCi0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSgpLAotICAgICAgICB3b3JrZXIuY3JlYXRpb25U
aW1lKCksCi0gICAgICAgIFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZywKLSAgICAgICAgb3B0
aW9ucy50eXBlLAotICAgICAgICBvcHRpb25zLmNyZWRlbnRpYWxzLAotICAgICAgICB3b3JrZXIu
cnVudGltZUZsYWdzKCkKLSAgICApOwotICAgIGlmICghcHJveHkudGhyZWFkKCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
aXM8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsKLSAgICBhdXRvIHNvdXJjZU9y
aWdpbiA9IGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5zZWN1cml0
eU9yaWdpbigpLnRvU3RyaW5nKCk7Ci0KLSAgICBwcm94eS50aHJlYWQoKS0+cnVuTG9vcCgpLnBv
c3RUYXNrKFt0cmFuc2ZlcnJlZFBvcnQgPSBXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCksIHNvdXJj
ZU9yaWdpbiA9IFdURk1vdmUoc291cmNlT3JpZ2luKS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpIG11dGFibGUgewotICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKLQotICAgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211
bHRpcGFnZS93b3JrZXJzLmh0bWwjZG9tLXNoYXJlZHdvcmtlciBzdGVwIDExLjUKLSAgICAgICAg
YXV0byBzZXJpYWxpemVkU2NyaXB0VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZSgiIik7Ci0gICAgICAgIEFTU0VSVChzZXJpYWxpemVkU2NyaXB0VmFsdWUpOwotICAgICAgICBh
dXRvIHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgeyBXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCkgfSk7Ci0gICAgICAgIEFTU0VSVChwb3J0
cy5zaXplKCkgPT0gMSk7Ci0gICAgICAgIGF1dG8gcG9ydCA9IHBvcnRzWzBdOwotICAgICAgICBB
U1NFUlQocG9ydCk7Ci0gICAgICAgIGF1dG8gZXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShX
VEZNb3ZlKHBvcnRzKSwgc2VyaWFsaXplZFNjcmlwdFZhbHVlLnJlbGVhc2VOb25OdWxsKCksIHNv
dXJjZU9yaWdpbiwgeyB9LCBwb3J0KTsKLSAgICAgICAgZXZlbnQtPmluaXRFdmVudChldmVudE5h
bWVzKCkuY29ubmVjdEV2ZW50LCBmYWxzZSwgZmFsc2UpOwotCi0gICAgICAgIFJFTEVBU0VfQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaXM8U2hhcmVkV29ya2VyR2xvYmFsU2NvcGU+
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsKLSAgICAgICAgYXV0byYgd29ya2VyR2xvYmFsU2Nv
cGUgPSBkb3duY2FzdDxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk7Ci0gICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLmRpc3BhdGNoRXZlbnQoV1RGTW92ZShl
dmVudCkpOwotICAgIH0pOwotCi0gICAgbV9sb2FkZXJzLnJlbW92ZShsb2FkZXIuaWRlbnRpZmll
cigpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmRiZDM4MTU5MmYy
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbi5oIgorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXJyb3JF
dmVudC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRCdWZmZXIuaCIK
KyNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJTY3JpcHRM
b2FkZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJGZXRjaFJlc3VsdC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKKyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFT
RV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjoi
IGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xP
R19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoU2hhcmVkV29ya2VyLCAiJXAgLSBT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykK
Kworc3RhdGljIHVpbnQ2NF90IGxvYWRlcklkZW50aWZpZXJTZWVkID0gMDsKKworU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbjo6U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpID0gZGVm
YXVsdDsKKworU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6flNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CisKK3ZvaWQgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbjo6ZmV0Y2hTY3JpcHRJbkNsaWVudChVUkwmJiB1cmwsIFdlYkNvcmU6OlNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV29ya2VyT3B0
aW9ucyYmIHdvcmtlck9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2Vy
RmV0Y2hSZXN1bHQmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworCisgICAgYXV0byogd29ya2VyT2JqZWN0ID0gU2hhcmVkV29ya2VyOjpmcm9t
SWRlbnRpZmllcihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBDT05ORUNUSU9O
X1JFTEVBU0VfTE9HKCJmZXRjaFNjcmlwdEluQ2xpZW50OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyPSV7cHVibGljfXMsIHdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB3b3JrZXJPYmplY3QpOworICAgIGlmICghd29y
a2VyT2JqZWN0KQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKworICAg
IGF1dG8gbG9hZGVySWRlbnRpZmllciA9ICsrbG9hZGVySWRlbnRpZmllclNlZWQ7CisgICAgYXV0
byBsb2FkZXIgPSBtYWtlVW5pcXVlUmVmPFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj4oV1RGTW92
ZSh1cmwpLCAqd29ya2VyT2JqZWN0LCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMpKTsKKyAgICBhdXRv
IGxvYWRlclB0ciA9IGxvYWRlci5wdHIoKTsKKyAgICBtX2xvYWRlcnMuYWRkKGxvYWRlcklkZW50
aWZpZXIsIFdURk1vdmUobG9hZGVyKSk7CisKKyAgICBsb2FkZXJQdHItPmxvYWQoW3RoaXMsIGxv
YWRlcklkZW50aWZpZXIsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKGNvbnN0IFdvcmtlckZldGNoUmVzdWx0JiBmZXRjaFJlc3VsdCkgbXV0YWJsZSB7Cisg
ICAgICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coImZldGNoU2NyaXB0SW5DbGllbnQ6IGZpbmlz
aGVkIHNjcmlwdCBsb2FkLCBzdWNjZXNzPSVkIiwgZmV0Y2hSZXN1bHQuZXJyb3IuaXNOdWxsKCkp
OworICAgICAgICBhdXRvIGxvYWRlciA9IG1fbG9hZGVycy50YWtlKGxvYWRlcklkZW50aWZpZXIp
OworICAgICAgICBBU1NFUlQobG9hZGVyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmV0
Y2hSZXN1bHQpOworICAgIH0pOworfQorCit2b2lkIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b246Om5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZhaWx1cmUoV2ViQ29yZTo6U2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQoreworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgYXV0byogd29ya2VyT2JqZWN0ID0gU2hhcmVkV29y
a2VyOjpmcm9tSWRlbnRpZmllcihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBD
T05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKCJub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRGYWls
dXJlOiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMsIHdvcmtlcj0lcCIs
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB3
b3JrZXJPYmplY3QpOworICAgIGlmICh3b3JrZXJPYmplY3QpCisgICAgICAgIHdvcmtlck9iamVj
dC0+ZGlkRmFpbExvYWRpbmcoKTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgYXV0byogd29ya2Vy
T2JqZWN0ID0gU2hhcmVkV29ya2VyOjpmcm9tSWRlbnRpZmllcihzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyKTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKCJwb3N0RXhjZXB0
aW9uVG9Xb3JrZXJPYmplY3Q6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9
cywgd29ya2VyPSVwIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0
ZjgoKS5kYXRhKCksIHdvcmtlck9iamVjdCk7CisgICAgaWYgKHdvcmtlck9iamVjdCkKKyAgICAg
ICAgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKndvcmtlck9iamVj
dCwgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFcnJvckV2ZW50OjpjcmVhdGUoZXJyb3JN
ZXNzYWdlLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgeyB9KSk7Cit9CisK
KyN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNF
X0xPR19FUlJPUgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41MTkxMWQ0YTE2N2QK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaCIKKyNpbmNs
dWRlICJTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVzc2FnZVBvcnQ7CitjbGFzcyBT
aGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI7CisKK3N0cnVjdCBDbGllbnRPcmlnaW47CitzdHJ1Y3Qg
V29ya2VyRmV0Y2hSZXN1bHQ7CitzdHJ1Y3QgV29ya2VyT3B0aW9uczsKKworY2xhc3MgU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24+IHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5T
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dFNoYXJlZFdvcmtlcihjb25zdCBDbGllbnRPcmlnaW4mLCBTaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLCBjb25zdCBVUkwmLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIGNvbnN0IFdvcmtl
ck9wdGlvbnMmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNoYXJlZFdvcmtlck9iamVjdElzR29p
bmdBd2F5KFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpID0gMDsKKworcHJvdGVjdGVkOgor
ICAgIC8vIElQQyBtZXNzYWdlcy4KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZldGNoU2NyaXB0
SW5DbGllbnQoVVJMJiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdv
cmtlck9wdGlvbnMmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXb3JrZXJGZXRjaFJl
c3VsdCYpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG5vdGlmeVdvcmtlck9iamVjdE9m
TG9hZEZhaWx1cmUoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoU2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCk7CisKK3ByaXZh
dGU6CisgICAgSGFzaE1hcDx1aW50NjRfdCwgVW5pcXVlUmVmPFNoYXJlZFdvcmtlclNjcmlwdExv
YWRlcj4+IG1fbG9hZGVyczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmVi
Y2Q0YTdhZTg3YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaApAQCAtMCwwICsxLDM2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJQcm9jZXNzUXVhbGlmaWVkLmgiCisj
aW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitlbnVtIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIgPSBQcm9jZXNzUXVhbGlmaWVkPE9iamVjdElkZW50aWZp
ZXI8U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllclR5cGU+PjsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyUHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uZmQ4ZTE5N2ZhMjQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zaGFyZWQvU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyUHJvdmlk
ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgU2hhcmVkV29ya2VyUHJvdmlk
ZXIqIHNoYXJlZFByb3ZpZGVyOworCisvLyBGb3IgV2ViS2l0TGVnYWN5LgorY2xhc3MgRHVtbXlT
aGFyZWRXb3JrZXJQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBTaGFyZWRXb3JrZXJQcm92aWRlciB7
CitwdWJsaWM6CisgICAgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiogc2hhcmVkV29ya2Vy
Q29ubmVjdGlvbigpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KK307CisKK1NoYXJlZFdvcmtl
clByb3ZpZGVyJiBTaGFyZWRXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBpZiAo
IXNoYXJlZFByb3ZpZGVyKQorICAgICAgICBzaGFyZWRQcm92aWRlciA9IG5ldyBEdW1teVNoYXJl
ZFdvcmtlclByb3ZpZGVyOworICAgIHJldHVybiAqc2hhcmVkUHJvdmlkZXI7Cit9CisKK3ZvaWQg
U2hhcmVkV29ya2VyUHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKFNoYXJlZFdvcmtlclByb3Zp
ZGVyJiBuZXdQcm92aWRlcikKK3sKKyAgICBSRUxFQVNFX0FTU0VSVCghc2hhcmVkUHJvdmlkZXIp
OworICAgIHNoYXJlZFByb3ZpZGVyID0gJm5ld1Byb3ZpZGVyOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXJQcm92aWRlci5oCnNpbWlsYXJpdHkgaW5kZXggNjQlCnJlbmFtZSBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuaApyZW5hbWUgdG8gU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJvdmlkZXIuaAppbmRleCBh
ZWY4Mjc5MDM1ODQuLmNiNTdjYzFlN2I1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDI2ICsyNSwxNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIk1lc3NhZ2VQb3J0SWRlbnRpZmllci5oIgotI2luY2x1ZGUgIlNo
YXJlZFdvcmtlclNjcmlwdExvYWRlci5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IFNoYXJlZFdvcmtlcjsKLWNsYXNzIFNjcmlwdEJ1ZmZlcjsKLXN0cnVjdCBXb3JrZXJPcHRpb25z
OwotdXNpbmcgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpNZXNz
YWdlUG9ydElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllcj47CitjbGFz
cyBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOwogCi1jbGFzcyBTaGFyZWRXb3JrZXJNYW5h
Z2VyIHsKK2NsYXNzIFNoYXJlZFdvcmtlclByb3ZpZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
U2hhcmVkV29ya2VyTWFuYWdlciYgc2luZ2xldG9uKCk7Ci0gICAgdm9pZCBjb25uZWN0KGNvbnN0
IFVSTCYsIFNoYXJlZFdvcmtlciYsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgV29ya2VyT3B0
aW9ucyYmKTsKLQotICAgIHZvaWQgc2NyaXB0TG9hZEZhaWxlZChTaGFyZWRXb3JrZXJTY3JpcHRM
b2FkZXImKTsKLSAgICB2b2lkIHNjcmlwdExvYWRlZFN1Y2Nlc3NmdWxseShTaGFyZWRXb3JrZXJT
Y3JpcHRMb2FkZXImLCBjb25zdCBTY3JpcHRCdWZmZXImLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgU2hhcmVkV29ya2VyJiwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmKTsKKyAgICBzdGF0aWMg
U2hhcmVkV29ya2VyUHJvdmlkZXImIHNpbmdsZXRvbigpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyB2b2lkIHNldFNoYXJlZFByb3ZpZGVyKFNoYXJlZFdvcmtlclByb3ZpZGVyJik7CiAKLXBy
aXZhdGU6Ci0gICAgSGFzaE1hcDxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXJJZGVudGlmaWVyLCBV
bmlxdWVSZWY8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPj4gbV9sb2FkZXJzOworICAgIHZpcnR1
YWwgflNoYXJlZFdvcmtlclByb3ZpZGVyKCkgeyB9CisgICAgdmlydHVhbCBTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uKiBzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCkgPSAwOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyUHJveHkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAz
YmUwNzUzZjg5MWQuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJQcm94eS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzMgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3Jr
ZXJQcm94eS5oIgotCi0jaW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKLSNpbmNsdWRl
ICJFcnJvckV2ZW50LmgiCi0jaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkxpYldl
YlJUQ1Byb3ZpZGVyLmgiCi0jaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCi0jaW5jbHVkZSAiTWVz
c2FnZVBvcnQuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxS
ZW1vdGVIYW5kbGVyQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgotI2lu
Y2x1ZGUgIlNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2Vy
VGhyZWFkLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU2hhcmVkV29ya2VyUHJveHk6OlNo
YXJlZFdvcmtlclByb3h5KFNoYXJlZFdvcmtlciYgc2hhcmVkV29ya2VyKQotICAgIDogbV9zaGFy
ZWRXb3JrZXIoc2hhcmVkV29ya2VyKQotICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KHNo
YXJlZFdvcmtlci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgLCBtX2lkZW50aWZpZXJG
b3JJbnNwZWN0b3Ioc2hhcmVkV29ya2VyLmlkZW50aWZpZXJGb3JJbnNwZWN0b3IoKSkKLXsKLX0K
LQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6c3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBV
UkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCwgYm9vbCBpc09ubGluZSwgY29uc3QgU2NyaXB0QnVmZmVyJiBzY3JpcHRCdWZmZXIsIGNvbnN0
IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1
cml0eVBvbGljeSwgY29uc3QgQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSYgY3Jvc3NPcmlnaW5F
bWJlZGRlclBvbGljeSwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBSZWZlcnJlclBvbGljeSBy
ZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RDcmVkZW50
aWFscyBjcmVkZW50aWFscywgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKQotewotICAg
IGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gcGFy
YW1ldGVycyA9IFdvcmtlclBhcmFtZXRlcnMgewotICAgICAgICBzY3JpcHRVUkwsCi0gICAgICAg
IG5hbWUsCi0gICAgICAgIG1faWRlbnRpZmllckZvckluc3BlY3RvciwKLSAgICAgICAgdXNlckFn
ZW50LAotICAgICAgICBpc09ubGluZSwKLSAgICAgICAgY29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzLAotICAgICAgICBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJp
dHlQb2xpY3ksCi0gICAgICAgIGNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ksCi0gICAgICAgIHRp
bWVPcmlnaW4sCi0gICAgICAgIHJlZmVycmVyUG9saWN5LAotICAgICAgICB3b3JrZXJUeXBlLAot
ICAgICAgICBjcmVkZW50aWFscywKLSAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5z
ZXR0aW5nc1ZhbHVlcygpCi0gICAgfTsKLQotICAgIGlmICghbV93b3JrZXJUaHJlYWQpIHsKLSAg
ICAgICAgbV93b3JrZXJUaHJlYWQgPSBTaGFyZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZShwYXJhbWV0
ZXJzLCBzY3JpcHRCdWZmZXIsICp0aGlzLCAqdGhpcywgKnRoaXMsIFdvcmtlclRocmVhZFN0YXJ0
TW9kZTo6Tm9ybWFsLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnRvcE9yaWdpbigpLCBtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlkYkNvbm5lY3Rpb25Qcm94eSgpLCBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPnNvY2tldFByb3ZpZGVyKCksIHJ1bnRpbWVGbGFncyk7Ci0gICAgICAgIG1f
d29ya2VyVGhyZWFkLT5zdGFydCgpOwotICAgIH0KLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94
eTo6dGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKQotewotICAgIGlmIChtX2Fza2VkVG9UZXJt
aW5hdGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fYXNrZWRUb1Rlcm1pbmF0ZSA9IHRydWU7
Ci0gICAgaWYgKG1fd29ya2VyVGhyZWFkKQotICAgICAgICBtX3dvcmtlclRocmVhZC0+c3RvcChu
dWxscHRyKTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtl
ckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSkKLXsKLSAgICAv
LyBGSVhNRTogU2hhcmVkV29ya2VyIGRvZXNuJ3QgaGF2ZSBwb3N0TWVzc2FnZSwgc28gdGhpcyBt
aWdodCBub3QgYmUgbmVjZXNzYXJ5LgotICAgIHBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShb
bWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSldKGF1dG8mIHNjcmlwdENvbnRleHQpIG11dGFibGUg
ewotICAgICAgICBhdXRvJiBjb250ZXh0ID0gZG93bmNhc3Q8U2hhcmVkV29ya2VyR2xvYmFsU2Nv
cGU+KHNjcmlwdENvbnRleHQpOwotICAgICAgICBhdXRvIHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVu
dGFuZ2xlUG9ydHMoc2NyaXB0Q29udGV4dCwgV1RGTW92ZShtZXNzYWdlLnRyYW5zZmVycmVkUG9y
dHMpKTsKLSAgICAgICAgY29udGV4dC5kaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRl
KFdURk1vdmUocG9ydHMpLCBtZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSkpOwotICAg
IH0pOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5Ojpwb3N0VGFza1RvV29ya2VyR2xvYmFs
U2NvcGUoRnVuY3Rpb248dm9pZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+JiYgdGFzaykKLXsK
LSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQotICAgICAgICByZXR1cm47Ci0gICAgbV93b3Jr
ZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhXVEZNb3ZlKHRhc2spKTsKLX0KLQotYm9vbCBT
aGFyZWRXb3JrZXJQcm94eTo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9oYXNQZW5kaW5nQWN0aXZpdHkgJiYgIW1fYXNrZWRUb1Rlcm1pbmF0ZTsKLX0KLQotdm9p
ZCBTaGFyZWRXb3JrZXJQcm94eTo6d29ya2VyT2JqZWN0RGVzdHJveWVkKCkKLXsKLSAgICBtX3No
YXJlZFdvcmtlciA9IG51bGxwdHI7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0
VGFzayhbdGhpc10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0gICAgICAgIG1fbWF5QmVE
ZXN0cm95ZWQgPSB0cnVlOwotICAgICAgICBpZiAobV93b3JrZXJUaHJlYWQpCi0gICAgICAgICAg
ICB0ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZEludGVybmFsKCk7Ci0gICAgfSk7Ci19Ci0KLXZv
aWQgU2hhcmVkV29ya2VyUHJveHk6Om5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25s
aW5lKQotewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmICghbV93b3JrZXJUaHJlYWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fd29ya2Vy
VGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soW2lzT25saW5lXSAoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgewotICAgICAgICBhdXRvJiBnbG9iYWxTY29wZSA9IGRvd25jYXN0PFdv
cmtlckdsb2JhbFNjb3BlPihjb250ZXh0KTsKLSAgICAgICAgZ2xvYmFsU2NvcGUuc2V0SXNPbmxp
bmUoaXNPbmxpbmUpOwotICAgICAgICBnbG9iYWxTY29wZS5kaXNwYXRjaEV2ZW50KEV2ZW50Ojpj
cmVhdGUoaXNPbmxpbmUgPyBldmVudE5hbWVzKCkub25saW5lRXZlbnQgOiBldmVudE5hbWVzKCku
b2ZmbGluZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6
Tm8pKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6c3VzcGVuZEZvckJh
Y2tGb3J3YXJkQ2FjaGUoKQotewotCi19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnJlc3Vt
ZUZvckJhY2tGb3J3YXJkQ2FjaGUoKQotewotCi19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6
OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwg
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
KQotewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXMsIGVycm9y
TWVzc2FnZSA9IGVycm9yTWVzc2FnZS5pc29sYXRlZENvcHkoKSwgc291cmNlVVJMID0gc291cmNl
VVJMLmlzb2xhdGVkQ29weSgpLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXJdIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JikgewotICAgICAgICBpZiAoIW1fc2hhcmVkV29ya2VyKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIC8vIFdlIGRvbid0IGJvdGhlciBjaGVja2luZyB0aGUgYXNr
ZWRUb1Rlcm1pbmF0ZSgpIGZsYWcgaGVyZSwgYmVjYXVzZSBleGNlcHRpb25zIHNob3VsZCAqYWx3
YXlzKiBiZSByZXBvcnRlZCBldmVuIGlmIHRoZSB0aHJlYWQgaXMgdGVybWluYXRlZC4KLSAgICAg
ICAgLy8gVGhpcyBpcyBpbnRlbnRpb25hbGx5IGRpZmZlcmVudCB0aGFuIHRoZSBiZWhhdmlvciBp
biBNZXNzYWdlV29ya2VyVGFzaywgYmVjYXVzZSB0ZXJtaW5hdGVkIHdvcmtlcnMgbm8gbG9uZ2Vy
IGRlbGl2ZXIgbWVzc2FnZXMgKHNlY3Rpb24gNC42IG9mIHRoZSBXZWJXb3JrZXIgc3BlYyksIGJ1
dCB0aGV5IGRvIHJlcG9ydCBleGNlcHRpb25zLgotICAgICAgICBBY3RpdmVET01PYmplY3Q6OnF1
ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqbV9zaGFyZWRXb3JrZXIsIFRhc2tTb3VyY2U6OkRPTU1h
bmlwdWxhdGlvbiwgRXJyb3JFdmVudDo6Y3JlYXRlKGVycm9yTWVzc2FnZSwgc291cmNlVVJMLCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHsgfSkpOwotICAgIH0pOwotfQotCi12b2lkIFNoYXJl
ZFdvcmtlclByb3h5Ojp3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgpCi17Ci0gICAgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpc10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKSB7Ci0gICAgICAgIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwoKTsKLSAg
ICB9KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlck9i
amVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKQotewotCi19Ci0KLXZvaWQgU2hhcmVkV29y
a2VyUHJveHk6OmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sKQotewotfQotCi12
b2lkIFNoYXJlZFdvcmtlclByb3h5OjpyZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCBoYXNQZW5k
aW5nQWN0aXZpdHkpCi17Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhb
dGhpcywgaGFzUGVuZGluZ0FjdGl2aXR5XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKLSAg
ICAgICAgbV9oYXNQZW5kaW5nQWN0aXZpdHkgPSBoYXNQZW5kaW5nQWN0aXZpdHk7Ci0gICAgfSk7
Ci19Ci0KLVJlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBTaGFyZWRXb3JrZXJQcm94eTo6
Y3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKLSAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0KTsKLSAgICByZXR1cm4gZG9jdW1lbnQucGFnZSgpLT5jYWNoZVN0b3Jh
Z2VQcm92aWRlcigpLmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKTsKLX0KLQotUmVmUHRy
PFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24+IFNoYXJlZFdvcmtlclByb3h5
OjpjcmVhdGVSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCkKLXsKLSAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9j
dW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIGlmICghZG9jdW1lbnQucGFn
ZSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gZG9jdW1lbnQucGFnZSgp
LT5saWJXZWJSVENQcm92aWRlcigpLmNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNv
bm5lY3Rpb24oKTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdFRhc2tUb0xvYWRl
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykKLXsKLSAgICBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFdURk1vdmUodGFzaykpOwotfQotCi1ib29sIFNoYXJl
ZFdvcmtlclByb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUp
Ci17Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoV1RGTW92ZSh0
YXNrKSwgbW9kZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJv
eHk6OnBvc3RNZXNzYWdlVG9EZWJ1Z2dlcihjb25zdCBTdHJpbmcmKQotewotCi19Ci0KLXZvaWQg
U2hhcmVkV29ya2VyUHJveHk6OnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNwZWN0
b3IoYm9vbCkKLXsKLQotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5Ojp3b3JrZXJHbG9iYWxT
Y29wZURlc3Ryb3llZEludGVybmFsKCkKLXsKLSAgICAvLyBUaGlzIGlzIGFsd2F5cyB0aGUgbGFz
dCB0YXNrIHRvIGJlIHBlcmZvcm1lZCwgc28gdGhlIHByb3h5IGlzIG5vdCBuZWVkZWQgZm9yIGNv
bW11bmljYXRpb24KLSAgICAvLyBpbiBlaXRoZXIgc2lkZSBhbnkgbW9yZS4gSG93ZXZlciwgdGhl
IFdvcmtlciBvYmplY3QgbWF5IHN0aWxsIGV4aXN0LCBhbmQgaXQgYXNzdW1lcyB0aGF0IHRoZSBw
cm94eSBleGlzdHMsIHRvby4KLSAgICBtX2Fza2VkVG9UZXJtaW5hdGUgPSB0cnVlOwotICAgIG1f
d29ya2VyVGhyZWFkID0gbnVsbHB0cjsKLQotICAgIC8vIFRoaXMgYmFsYW5jZXMgdGhlIG9yaWdp
bmFsIHJlZiBpbiBjb25zdHJ1Y3Rpb24uCi0gICAgaWYgKG1fbWF5QmVEZXN0cm95ZWQpCi0gICAg
ICAgIGRlcmVmKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIu
Y3BwCmluZGV4IDMxMWViZDYwNzhiYy4uZWEyZTA0OGM3NjIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjksMjMgKzI5LDI2IEBACiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgotI2lu
Y2x1ZGUgIlNoYXJlZFdvcmtlck1hbmFnZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJGZXRjaFJlc3Vs
dC5oIgogI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRM
b2FkZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXI6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRlcihjb25zdCBVUkwmIHVybCwgU2hhcmVkV29ya2Vy
JiB3b3JrZXIsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBXb3JrZXJPcHRpb25zJiYg
b3B0aW9ucykKLSAgICA6IG1faWRlbnRpZmllcihTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXJJZGVu
dGlmaWVyOjpnZW5lcmF0ZSgpKQotICAgICwgbV9vcHRpb25zKFdURk1vdmUob3B0aW9ucykpCitT
aGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRlcihVUkwmJiB1
cmwsIFNoYXJlZFdvcmtlciYgd29ya2VyLCBXb3JrZXJPcHRpb25zJiYgb3B0aW9ucykKKyAgICA6
IG1fb3B0aW9ucyhXVEZNb3ZlKG9wdGlvbnMpKQogICAgICwgbV93b3JrZXIod29ya2VyKQotICAg
ICwgbV9wb3J0KFdURk1vdmUocG9ydCkpCiAgICAgLCBtX2xvYWRlcihXb3JrZXJTY3JpcHRMb2Fk
ZXI6OmNyZWF0ZSgpKQotICAgICwgbV9wZW5kaW5nQWN0aXZpdHkod29ya2VyLm1ha2VQZW5kaW5n
QWN0aXZpdHkod29ya2VyKSkKLSAgICAsIG1fdXJsKHVybCkKKyAgICAsIG1fdXJsKFdURk1vdmUo
dXJsKSkKIHsKLSAgICBtX3dvcmtlci0+c2V0SXNMb2FkaW5nKHRydWUpOwotICAgIG1fbG9hZGVy
LT5sb2FkQXN5bmNocm9ub3VzbHkoKndvcmtlci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFJl
c291cmNlUmVxdWVzdCh1cmwpLCB3b3JrZXIud29ya2VyRmV0Y2hPcHRpb25zKG9wdGlvbnMsIEZl
dGNoT3B0aW9uczo6RGVzdGluYXRpb246OlNoYXJlZHdvcmtlciksIENvbnRlbnRTZWN1cml0eVBv
bGljeUVuZm9yY2VtZW50OjpFbmZvcmNlV29ya2VyU3JjRGlyZWN0aXZlLCBTZXJ2aWNlV29ya2Vy
c01vZGU6OkFsbCwgKnRoaXMsIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOworfQorCit2
b2lkIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZChDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFdvcmtlckZldGNoUmVzdWx0Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
QVNTRVJUKCFtX2NvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBtX2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBtX2xvYWRlci0+bG9hZEFzeW5jaHJv
bm91c2x5KCptX3dvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBSZXNvdXJjZVJlcXVl
c3QobV91cmwpLCBtX3dvcmtlci0+d29ya2VyRmV0Y2hPcHRpb25zKG1fb3B0aW9ucywgRmV0Y2hP
cHRpb25zOjpEZXN0aW5hdGlvbjo6U2hhcmVkd29ya2VyKSwgQ29udGVudFNlY3VyaXR5UG9saWN5
RW5mb3JjZW1lbnQ6OkVuZm9yY2VXb3JrZXJTcmNEaXJlY3RpdmUsIFNlcnZpY2VXb3JrZXJzTW9k
ZTo6QWxsLCAqdGhpcywgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiB9CiAKIHZvaWQg
U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQpAQCAtNTUs
MTYgKzU4LDEyIEBAIHZvaWQgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50CiAKIHZvaWQgU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyOjpub3RpZnlGaW5pc2hlZCgpCiB7Ci0gICAgbV93b3JrZXItPnNldElzTG9h
ZGluZyhmYWxzZSk7CisgICAgaWYgKG1fbG9hZGVyLT5mYWlsZWQoKSkKKyAgICAgICAgcmV0dXJu
IG1fY29tcGxldGlvbkhhbmRsZXIod29ya2VyRmV0Y2hFcnJvcihtX2xvYWRlci0+ZXJyb3IoKSkp
OwogCi0gICAgYXV0byogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IG1fd29ya2VyLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKG1fbG9hZGVyLT5mYWlsZWQoKSB8fCAhc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkgewotICAgICAgICBtX3dvcmtlci0+ZGlzcGF0Y2hFdmVudChFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywg
RXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7Ci0gICAgICAgIFNoYXJlZFdvcmtlck1hbmFnZXI6
OnNpbmdsZXRvbigpLnNjcmlwdExvYWRGYWlsZWQoKnRoaXMpOyAvLyBkZWxldGVzIHRoaXMuCi0g
ICAgfSBlbHNlIHsKKyAgICBpZiAoYXV0byogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IG1fd29y
a2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG1fbG9hZGVy
LT5pZGVudGlmaWVyKCksIG1fbG9hZGVyLT5zY3JpcHQoKS50b1N0cmluZygpKTsKLSAgICAgICAg
U2hhcmVkV29ya2VyTWFuYWdlcjo6c2luZ2xldG9uKCkuc2NyaXB0TG9hZGVkU3VjY2Vzc2Z1bGx5
KCp0aGlzLCBtX2xvYWRlci0+c2NyaXB0KCksICptX3dvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBtX3dvcmtlci5nZXQoKSwgc3RkOjpleGNoYW5nZShtX3BvcnQsIHsgfSkpOyAvLyBk
ZWxldGVzIHRoaXMuCi0gICAgfQorICAgIG1fY29tcGxldGlvbkhhbmRsZXIoeyBtX2xvYWRlci0+
c2NyaXB0KCksIG1fbG9hZGVyLT5jZXJ0aWZpY2F0ZUluZm8oKSwgbV9sb2FkZXItPmNvbnRlbnRT
ZWN1cml0eVBvbGljeSgpLCBtX2xvYWRlci0+Y3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSgpLCBt
X2xvYWRlci0+cmVmZXJyZXJQb2xpY3koKSwgeyB9IH0pOyAvLyBkZWxldGVzIHRoaXMuCiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgKaW5kZXggYmYxZDRhZWYzYTA5
Li5lYjBiNzE0NWJmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJNZXNzYWdl
UG9ydElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCkBAIC0zOCwzMyArMzcsMjggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBTaGFyZWRXb3JrZXI7CiBjbGFzcyBXb3JrZXJTY3JpcHRM
b2FkZXI7Ci0KLWNsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjsKLXVzaW5nIFNoYXJlZFdv
cmtlclNjcmlwdExvYWRlcklkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFNoYXJlZFdvcmtl
clNjcmlwdExvYWRlcj47Ci0KLXVzaW5nIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQgPSBzdGQ6OnBh
aXI8V2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlUG9ydElk
ZW50aWZpZXI+Oworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0OwogCiBjbGFzcyBTaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXIgOiBwcml2YXRlIFdvcmtlclNjcmlwdExvYWRlckNsaWVudCB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgU2hhcmVkV29ya2VyU2NyaXB0
TG9hZGVyKGNvbnN0IFVSTCYsIFNoYXJlZFdvcmtlciYsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQm
JiwgV29ya2VyT3B0aW9ucyYmKTsKKyAgICBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIoVVJMJiYs
IFNoYXJlZFdvcmtlciYsIFdvcmtlck9wdGlvbnMmJik7CisKKyAgICB2b2lkIGxvYWQoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYpPiYmKTsKIAotICAgIFNo
YXJlZFdvcmtlclNjcmlwdExvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4g
bV91cmw7IH0KICAgICBTaGFyZWRXb3JrZXImIHdvcmtlcigpIHsgcmV0dXJuIG1fd29ya2VyLmdl
dCgpOyB9Ci0gICAgY29uc3QgV29ya2VyT3B0aW9ucyYgb3B0aW9ucygpIHsgcmV0dXJuIG1fb3B0
aW9uczsgfQorICAgIGNvbnN0IFdvcmtlck9wdGlvbnMmIG9wdGlvbnMoKSBjb25zdCB7IHJldHVy
biBtX29wdGlvbnM7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsK
ICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKCkgZmluYWw7CiAKLSAgICBjb25zdCBTaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBjb25zdCBXb3JrZXJP
cHRpb25zIG1fb3B0aW9uczsKICAgICBjb25zdCBSZWY8U2hhcmVkV29ya2VyPiBtX3dvcmtlcjsK
LSAgICBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0IG1fcG9ydDsKICAgICBjb25zdCBSZWY8V29ya2Vy
U2NyaXB0TG9hZGVyPiBtX2xvYWRlcjsKLSAgICBjb25zdCBSZWY8QWN0aXZlRE9NT2JqZWN0OjpQ
ZW5kaW5nQWN0aXZpdHk8U2hhcmVkV29ya2VyPj4gbV9wZW5kaW5nQWN0aXZpdHk7CiAgICAgY29u
c3QgVVJMIG1fdXJsOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0
Y2hSZXN1bHQmKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJUaHJlYWQuY3BwCmluZGV4IDllZDU1ODhmYmQ3OS4uZWZlMDVlMjdjMTVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJUaHJlYWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclRocmVhZC5jcHAK
QEAgLTMxLDE0ICszMSwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZFdvcmtl
clRocmVhZDo6U2hhcmVkV29ya2VyVGhyZWFkKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkm
IGxvYWRlclByb3h5LCBXb3JrZXJEZWJ1Z2dlclByb3h5JiBkZWJ1Z2dlclByb3h5LCBXb3JrZXJP
YmplY3RQcm94eSYgb2JqZWN0UHJveHksIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUs
IGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlv
blByb3h5KiBjb25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlciwg
SlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKQorU2hhcmVkV29ya2VyVGhyZWFkOjpTaGFy
ZWRXb3JrZXJUaHJlYWQoU2hhcmVkV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBX
b3JrZXJQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBTY3JpcHRCdWZmZXImIHNvdXJjZUNv
ZGUsIFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQcm94eSwgV29ya2VyRGVidWdnZXJQcm94eSYg
ZGVidWdnZXJQcm94eSwgV29ya2VyT2JqZWN0UHJveHkmIG9iamVjdFByb3h5LCBXb3JrZXJUaHJl
YWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBJ
REJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92
aWRlciogc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncykKICAg
ICA6IFdvcmtlclRocmVhZChwYXJhbWV0ZXJzLCBzb3VyY2VDb2RlLCBsb2FkZXJQcm94eSwgZGVi
dWdnZXJQcm94eSwgb2JqZWN0UHJveHksIHN0YXJ0TW9kZSwgdG9wT3JpZ2luLCBjb25uZWN0aW9u
UHJveHksIHNvY2tldFByb3ZpZGVyLCBydW50aW1lRmxhZ3MpCisgICAgLCBtX2lkZW50aWZpZXIo
aWRlbnRpZmllcikKICAgICAsIG1fbmFtZShwYXJhbWV0ZXJzLm5hbWUuaXNvbGF0ZWRDb3B5KCkp
CiB7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBTaGFyZWRXb3JrZXJUaHJl
YWQ6OlNoYXJlZFdvcmtlclRocmVhZDoiLCB0aGlzKTsKIH0KIAogUmVmPFdvcmtlckdsb2JhbFNj
b3BlPiBTaGFyZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFdv
cmtlclBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4s
IFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4pCiB7CisgICAgUkVMRUFTRV9MT0coU2hh
cmVkV29ya2VyLCAiJXAgLSBTaGFyZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZVdvcmtlckdsb2JhbFNj
b3BlOiIsIHRoaXMpOwogICAgIHJldHVybiBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRl
KHN0ZDo6ZXhjaGFuZ2UobV9uYW1lLCB7IH0pLCBwYXJhbWV0ZXJzLCBXVEZNb3ZlKG9yaWdpbiks
ICp0aGlzLCBXVEZNb3ZlKHRvcE9yaWdpbiksIGlkYkNvbm5lY3Rpb25Qcm94eSgpLCBzb2NrZXRQ
cm92aWRlcigpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9T
aGFyZWRXb3JrZXJUaHJlYWQuaAppbmRleCAyZjA1NmY5ZDU5YmIuLjllYTI0ODQ3ZDM4ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyVGhyZWFk
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyVGhyZWFk
LmgKQEAgLTI1LDIxICsyNSwyNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlNoYXJl
ZFdvcmtlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBXb3JrZXJPYmplY3RQcm94eTsKIAorLy8gRklYTUU6IE1v
dmUgdG8gd29ya2Vycy9zaGFyZWQvY29udGV4dC4KIGNsYXNzIFNoYXJlZFdvcmtlclRocmVhZCA6
IHB1YmxpYyBXb3JrZXJUaHJlYWQgewogcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4u
IEFyZ3M+IHN0YXRpYyBSZWY8U2hhcmVkV29ya2VyVGhyZWFkPiBjcmVhdGUoQXJncyYmLi4uIGFy
Z3MpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkV29ya2VyVGhyZWFkKHN0ZDo6Zm9yd2Fy
ZDxBcmdzPihhcmdzKS4uLikpOyB9CisKKyAgICBTaGFyZWRXb3JrZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKwogcHJpdmF0ZToKLSAgICBT
aGFyZWRXb3JrZXJUaHJlYWQoY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIGNvbnN0IFNjcmlwdEJ1
ZmZlciYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmLCBXb3JrZXJEZWJ1Z2dlclByb3h5
JiwgV29ya2VyT2JqZWN0UHJveHkmLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUsIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29j
a2V0UHJvdmlkZXIqLCBKU0M6OlJ1bnRpbWVGbGFncyk7CisgICAgU2hhcmVkV29ya2VyVGhyZWFk
KFNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBjb25zdCBT
Y3JpcHRCdWZmZXImIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiwgV29ya2VyRGVidWdn
ZXJQcm94eSYsIFdvcmtlck9iamVjdFByb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25z
dCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94
eSosIFNvY2tldFByb3ZpZGVyKiwgSlNDOjpSdW50aW1lRmxhZ3MpOwogCiAgICAgUmVmPFdvcmtl
ckdsb2JhbFNjb3BlPiBjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBXb3JrZXJQYXJhbWV0
ZXJzJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3Jp
Z2luKSBmaW5hbDsKICAgICBBU0NJSUxpdGVyYWwgdGhyZWFkTmFtZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuICJXZWJDb3JlOiBTaGFyZWRXb3JrZXIiX3M7IH0KIAorICAgIFNoYXJlZFdvcmtlcklk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFN0cmluZyBtX25hbWU7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQv
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uMDdhOTBkOTgwNTEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5j
cHAKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCIKKworI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIgorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyJiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkK
K3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI+
IHNoYXJlZE1hbmFnZXI7CisgICAgcmV0dXJuIHNoYXJlZE1hbmFnZXI7Cit9CisKK1NoYXJlZFdv
cmtlclRocmVhZFByb3h5KiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2hhcmVkV29ya2Vy
KFNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikgY29uc3QKK3sK
KyAgICByZXR1cm4gbV93b3JrZXJNYXAuZ2V0KHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworfQor
Cit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzdG9wU2hhcmVkV29ya2VyKFNoYXJl
ZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHdv
cmtlciA9IG1fd29ya2VyTWFwLnRha2Uoc2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgUkVM
RUFTRV9MT0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0b3BT
aGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHdvcmtlcj0l
cCIsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSwgd29ya2VyLmdldCgpKTsKKyAg
ICBpZiAoIXdvcmtlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgd29ya2VyLT5zZXRBc1Rlcm1p
bmF0aW5nT3JUZXJtaW5hdGVkKCk7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUg
dG8gZGVhbCB3aXRoIHRoZSB0aHJlYWQgYmVpbmcgdW5yZXNwb25zaXZlIGhlcmUuCisKKyAgICBh
dXRvJiB0aHJlYWQgPSB3b3JrZXItPnRocmVhZCgpOworICAgIHRocmVhZC5zdG9wKFt3b3JrZXIg
PSBXVEZNb3ZlKHdvcmtlcildKCkgbXV0YWJsZSB7CisgICAgICAgIC8vIFNwaW4gdGhlIHJ1bmxv
b3AgYmVmb3JlIHJlbGVhc2luZyB0aGUgc2hhcmVkIHdvcmtlciB0aHJlYWQgcHJveHksIGFzIHRo
ZXJlIHdvdWxkIG90aGVyd2lzZSBiZQorICAgICAgICAvLyBhIHJhY2UgdG93YXJkcyBpdHMgZGVz
dHJ1Y3Rpb24uCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dvcmtlciA9IFdURk1vdmUod29y
a2VyKV0geyB9KTsKKyAgICB9KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
cjo6c3RvcEFsbFNoYXJlZFdvcmtlcnMoKQoreworICAgIHdoaWxlICghbV93b3JrZXJNYXAuaXNF
bXB0eSgpKQorICAgICAgICBzdG9wU2hhcmVkV29ya2VyKG1fd29ya2VyTWFwLmJlZ2luKCktPmtl
eSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNldENvbm5lY3Rpb24o
c3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlQo
IW1fY29ubmVjdGlvbiB8fCBtX2Nvbm5lY3Rpb24tPmlzQ2xvc2VkKCkpOworICAgIG1fY29ubmVj
dGlvbiA9IFdURk1vdmUoY29ubmVjdGlvbik7Cit9CisKK2F1dG8gU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXI6OmNvbm5lY3Rpb24oKSBjb25zdCAtPiBDb25uZWN0aW9uKgoreworICAgIHJldHVy
biBtX2Nvbm5lY3Rpb24uZ2V0KCk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXI6OnJlZ2lzdGVyU2hhcmVkV29ya2VyVGhyZWFkKFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eT4mJiBwcm94eSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIFJFTEVBU0Vf
TE9HKFNoYXJlZFdvcmtlciwgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpyZWdpc3RlclNo
YXJlZFdvcmtlclRocmVhZDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHByb3h5
LT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IG1fd29ya2Vy
TWFwLmFkZChwcm94eS0+aWRlbnRpZmllcigpLCBwcm94eS5jb3B5UmVmKCkpOworICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICBwcm94eS0+dGhyZWFk
KCkuc3RhcnQoW10oY29uc3QgU3RyaW5nJiAvKmV4Y2VwdGlvbk1lc3NhZ2UqLykgeyB9KTsKK30K
Kwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6cG9zdENvbm5l
Y3RFdmVudChTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFRy
YW5zZmVycmVkTWVzc2FnZVBvcnQmJiB0cmFuc2ZlcnJlZFBvcnQsIFN0cmluZyYmIHNvdXJjZU9y
aWdpbikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8qIHByb3h5ID0g
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNoYXJlZFdvcmtlcihzaGFy
ZWRXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVudDogc2hh
cmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgcHJveHk9JXAiLCBzaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLnRvVUludDY0KCksIHByb3h5KTsKKyAgICBpZiAoIXByb3h5KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBwcm94eS0+dGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFt0cmFuc2Zl
cnJlZFBvcnQgPSBXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCksIHNvdXJjZU9yaWdpbiA9IFdURk1v
dmUoc291cmNlT3JpZ2luKS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICAg
ICAgZG93bmNhc3Q8U2hhcmVkV29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpLnBvc3RDb25uZWN0RXZlbnQoV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBXVEZNb3ZlKHNv
dXJjZU9yaWdpbikpOworICAgIH0pOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyOjpDb25uZWN0aW9uOjp0ZXJtaW5hdGVTaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRp
ZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXI6OkNvbm5lY3Rpb246OnRlcm1pbmF0ZVNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRl
bnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7Cisg
ICAgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnN0b3BTaGFyZWRXb3Jr
ZXIoc2hhcmVkV29ya2VySWRlbnRpZmllcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2Nv
bnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjA0NzkzN2M5MWU2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXIuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlcklk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OworCitjbGFzcyBTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlciB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyJiBzaW5nbGV0b24oKTsKKworICAgIFNoYXJlZFdvcmtl
clRocmVhZFByb3h5KiBzaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllcikgY29uc3Q7
CisgICAgdm9pZCBzdG9wU2hhcmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcEFsbFNoYXJlZFdvcmtlcnMoKTsKKworICAgIGNsYXNz
IENvbm5lY3Rpb24geworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJs
aWM6CisgICAgICAgIHZpcnR1YWwgfkNvbm5lY3Rpb24oKSB7IH0KKyAgICAgICAgdmlydHVhbCB2
b2lkIGVzdGFibGlzaENvbm5lY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoU2hhcmVk
V29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkgPSAwOworICAg
ICAgICBib29sIGlzQ2xvc2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Nsb3NlZDsgfQorCisgICAg
cHJvdGVjdGVkOgorICAgICAgICB2b2lkIHNldEFzQ2xvc2VkKCkgeyBtX2lzQ2xvc2VkID0gdHJ1
ZTsgfQorCisgICAgICAgIC8vIElQQyBtZXNzYWdlIGhhbmRsZXJzLgorICAgICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHBvc3RDb25uZWN0RXZlbnQoU2hhcmVkV29ya2VySWRlbnRpZmllciwgVHJh
bnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBTdHJpbmcmJiBzb3VyY2VPcmlnaW4pOworICAgICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHRlcm1pbmF0ZVNoYXJlZFdvcmtlcihTaGFyZWRXb3JrZXJJZGVu
dGlmaWVyKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIGJvb2wgbV9pc0Nsb3NlZCB7IGZhbHNl
IH07CisgICAgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29ubmVjdGlvbihzdGQ6
OnVuaXF1ZV9wdHI8Q29ubmVjdGlvbj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29ubmVjdGlv
biogY29ubmVjdGlvbigpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdpc3Rl
clNoYXJlZFdvcmtlclRocmVhZChSZWY8U2hhcmVkV29ya2VyVGhyZWFkUHJveHk+JiYpOworCitw
cml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlcj47CisKKyAgICBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcigpID0gZGVmYXVs
dDsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAg
SGFzaE1hcDxTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2hhcmVkV29ya2VyVGhyZWFkUHJv
eHk+PiBtX3dvcmtlck1hcDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi5jOWRmOTA2YTVkZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcApAQCAtMCww
ICsxLDE5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlNoYXJlZFdvcmtlclRocmVhZFByb3h5LmgiCisKKyNpbmNsdWRlICJDYWNoZVN0b3JhZ2VQ
cm92aWRlci5oIgorI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudExvb3Au
aCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRl
ICJGcmFtZUxvYWRlci5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCisjaW5jbHVk
ZSAiTG9hZGVyU3RyYXRlZ3kuaCIKKyNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRl
ICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaCIKKyNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0
aW9uLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oIgor
I2luY2x1ZGUgIlNoYXJlZFdvcmtlclRocmVhZC5oIgorI2luY2x1ZGUgIldvcmtlckZldGNoUmVz
dWx0LmgiCisjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSWRlbnRpZmllcnNGYWN0b3J5Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGlj
IEhhc2hTZXQ8U2hhcmVkV29ya2VyVGhyZWFkUHJveHkqPiYgYWxsU2hhcmVkV29ya2VyVGhyZWFk
UHJveGllcygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U2hhcmVkV29y
a2VyVGhyZWFkUHJveHkqPj4gc2V0OworICAgIHJldHVybiBzZXQ7Cit9CisKK3N0YXRpYyBXb3Jr
ZXJQYXJhbWV0ZXJzIGdlbmVyYXRlV29ya2VyUGFyYW1ldGVycyhjb25zdCBVUkwmIHNjcmlwdFVS
TCwgY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmIHdvcmtlckZldGNoUmVzdWx0LCBXb3JrZXJPcHRp
b25zJiYgd29ya2VyT3B0aW9ucywgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIERvY3VtZW50JiBk
b2N1bWVudCkKK3sKKyAgICByZXR1cm4gV29ya2VyUGFyYW1ldGVycyB7CisgICAgICAgIHNjcmlw
dFVSTCwKKyAgICAgICAgd29ya2VyT3B0aW9ucy5uYW1lLAorICAgICAgICAic2hhcmVkd29ya2Vy
OiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpLAor
ICAgICAgICB1c2VyQWdlbnQsCisgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJT
dHJhdGVneSgpLT5pc09uTGluZSgpLAorICAgICAgICB3b3JrZXJGZXRjaFJlc3VsdC5jb250ZW50
U2VjdXJpdHlQb2xpY3ksCisgICAgICAgIGZhbHNlLAorICAgICAgICB3b3JrZXJGZXRjaFJlc3Vs
dC5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LAorICAgICAgICBNb25vdG9uaWNUaW1lOjpub3co
KSwKKyAgICAgICAgeyB9LAorICAgICAgICB3b3JrZXJPcHRpb25zLnR5cGUsCisgICAgICAgIHdv
cmtlck9wdGlvbnMuY3JlZGVudGlhbHMsCisgICAgICAgIGRvY3VtZW50LnNldHRpbmdzVmFsdWVz
KCkKKyAgICB9OworfQorCitTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6U2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkoVW5pcXVlUmVmPFBhZ2U+JiYgcGFnZSwgU2hhcmVkV29ya2VySWRlbnRpZmllciBz
aGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwg
Y29uc3QgVVJMJiBzY3JpcHRVUkwsIFdvcmtlckZldGNoUmVzdWx0JiYgd29ya2VyRmV0Y2hSZXN1
bHQsIFdvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImIGNhY2hlU3RvcmFnZVByb3ZpZGVyKQorICAgIDogbV9w
YWdlKFdURk1vdmUocGFnZSkpCisgICAgLCBtX2RvY3VtZW50KCptX3BhZ2UtPm1haW5GcmFtZSgp
LmRvY3VtZW50KCkpCisgICAgLCBtX3dvcmtlclRocmVhZChTaGFyZWRXb3JrZXJUaHJlYWQ6OmNy
ZWF0ZShzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMoc2Ny
aXB0VVJMLCB3b3JrZXJGZXRjaFJlc3VsdCwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSwgdXNlckFn
ZW50LCBtX2RvY3VtZW50KSwgV1RGTW92ZSh3b3JrZXJGZXRjaFJlc3VsdC5zY3JpcHQpLCAqdGhp
cywgKnRoaXMsICp0aGlzLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgY2xpZW50T3Jp
Z2luLnRvcE9yaWdpbi5zZWN1cml0eU9yaWdpbigpLCBtX2RvY3VtZW50LT5pZGJDb25uZWN0aW9u
UHJveHkoKSwgbV9kb2N1bWVudC0+c29ja2V0UHJvdmlkZXIoKSwgSlNDOjpSdW50aW1lRmxhZ3M6
OmNyZWF0ZUFsbEVuYWJsZWQoKSkpCisgICAgLCBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyKGNhY2hl
U3RvcmFnZVByb3ZpZGVyKQoreworICAgIEFTU0VSVCghYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJv
eGllcygpLmNvbnRhaW5zKHRoaXMpKTsKKyAgICBhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVz
KCkuYWRkKHRoaXMpOworCisgICAgc3RhdGljIGJvb2wgYWRkZWRMaXN0ZW5lcjsKKyAgICBpZiAo
IWFkZGVkTGlzdGVuZXIpIHsKKyAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0
cmF0ZWd5KCktPmFkZE9ubGluZVN0YXRlQ2hhbmdlTGlzdGVuZXIoJm5ldHdvcmtTdGF0ZUNoYW5n
ZWQpOworICAgICAgICBhZGRlZExpc3RlbmVyID0gdHJ1ZTsKKyAgICB9Cit9CisKK1NoYXJlZFdv
cmtlclRocmVhZFByb3h5Ojp+U2hhcmVkV29ya2VyVGhyZWFkUHJveHkoKQoreworICAgIEFTU0VS
VChhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkuY29udGFpbnModGhpcykpOworICAgIGFs
bFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKS5yZW1vdmUodGhpcyk7Cit9CisKK1NoYXJlZFdv
cmtlcklkZW50aWZpZXIgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OmlkZW50aWZpZXIoKSBjb25z
dAoreworICAgIHJldHVybiBtX3dvcmtlclRocmVhZC0+aWRlbnRpZmllcigpOworfQorCitSZWZQ
dHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0
ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgaWYgKCFtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24pCisgICAgICAgIG1fY2FjaGVTdG9y
YWdlQ29ubmVjdGlvbiA9IG1fY2FjaGVTdG9yYWdlUHJvdmlkZXIuY3JlYXRlQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbigpOworICAgIHJldHVybiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247Cit9CisK
K1JlZlB0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uPiBTaGFyZWRXb3Jr
ZXJUaHJlYWRQcm94eTo6Y3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlv
bigpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICByZXR1cm4gbV9wYWdlLT5s
aWJXZWJSVENQcm92aWRlcigpLmNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5l
Y3Rpb24oKTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tUb0xv
YWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykKK3sKKyAgICBjYWxsT25N
YWluVGhyZWFkKFt0YXNrID0gV1RGTW92ZSh0YXNrKSwgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH1dICgpIG11dGFibGUgeworICAgICAgICB0YXNrLnBlcmZvcm1UYXNrKHByb3RlY3RlZFRo
aXMtPm1fZG9jdW1lbnQuZ2V0KCkpOworICAgIH0pOworfQorCitib29sIFNoYXJlZFdvcmtlclRo
cmVhZFByb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCit7
CisgICAgaWYgKG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoV1RG
TW92ZSh0YXNrKSwgbW9kZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgU2hhcmVkV29y
a2VyVGhyZWFkUHJveHk6OnBvc3RNZXNzYWdlVG9EZWJ1Z2dlcihjb25zdCBTdHJpbmcmKQorewor
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCit9CisKK3ZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJv
eHk6OnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNwZWN0b3IoYm9vbCkKK3sKKyAg
ICAvLyBGSVhNRTogSW1wbGVtZW50LgorfQorCit2b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5
OjpuZXR3b3JrU3RhdGVDaGFuZ2VkKGJvb2wgaXNPbkxpbmUpCit7CisgICAgZm9yIChhdXRvKiBw
cm94eSA6IGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKSkKKyAgICAgICAgcHJveHktPm5v
dGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShpc09uTGluZSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHk6Om5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25saW5lKQorewor
ICAgIGlmIChtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW2lzT25saW5l
XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICBhdXRvJiBnbG9i
YWxTY29wZSA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KTsKKyAgICAgICAg
Z2xvYmFsU2NvcGUuc2V0SXNPbmxpbmUoaXNPbmxpbmUpOworICAgICAgICBnbG9iYWxTY29wZS5l
dmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbZ2xvYmFs
U2NvcGUgPSBSZWYgeyBnbG9iYWxTY29wZSB9LCBpc09ubGluZV0geworICAgICAgICAgICAgZ2xv
YmFsU2NvcGUtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShpc09ubGluZSA/IGV2ZW50TmFt
ZXMoKS5vbmxpbmVFdmVudCA6IGV2ZW50TmFtZXMoKS5vZmZsaW5lRXZlbnQsIEV2ZW50OjpDYW5C
dWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOworICAgICAgICB9KTsKKyAgICB9
LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKK30KKworLy8gRklYTUU6IFRyeSBhbmQg
c2hhcmUgY29kZSB3aXRoIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAuCit2b2lkIFNoYXJl
ZFdvcmtlclRocmVhZFByb3h5OjpzZXR1cFBhZ2VGb3JTaGFyZWRXb3JrZXIoUGFnZSYgcGFnZSwg
Y29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IENsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBj
b25zdCBXb3JrZXJGZXRjaFJlc3VsdCYgd29ya2VyRmV0Y2hSZXN1bHQpCit7CisgICAgYXV0byYg
bWFpbkZyYW1lID0gcGFnZS5tYWluRnJhbWUoKTsKKyAgICBtYWluRnJhbWUubG9hZGVyKCkuaW5p
dEZvclN5bnRoZXNpemVkRG9jdW1lbnQoeyB9KTsKKyAgICBhdXRvIGRvY3VtZW50ID0gRG9jdW1l
bnQ6OmNyZWF0ZU5vblJlbmRlcmVkUGxhY2Vob2xkZXIobWFpbkZyYW1lLCBzY3JpcHRVUkwpOwor
ICAgIGRvY3VtZW50LT5jcmVhdGVET01XaW5kb3coKTsKKworICAgIGRvY3VtZW50LT5zdG9yYWdl
QmxvY2tpbmdTdGF0ZURpZENoYW5nZSgpOworCisgICAgYXV0byBvcmlnaW4gPSBjbGllbnRPcmln
aW4udG9wT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7CisgICAgb3JpZ2luLT5zZXRTdG9yYWdlQmxv
Y2tpbmdQb2xpY3kocGFnZS5zZXR0aW5ncygpLnN0b3JhZ2VCbG9ja2luZ1BvbGljeSgpKTsKKwor
ICAgIGF1dG8gb3JpZ2luQXNVUkwgPSBvcmlnaW4tPnRvVVJMKCk7CisgICAgZG9jdW1lbnQtPnNl
dFNpdGVGb3JDb29raWVzKG9yaWdpbkFzVVJMKTsKKyAgICBkb2N1bWVudC0+c2V0Rmlyc3RQYXJ0
eUZvckNvb2tpZXMob3JpZ2luQXNVUkwpOworICAgIGRvY3VtZW50LT5zZXREb21haW5Gb3JDYWNo
ZVBhcnRpdGlvbihvcmlnaW4tPmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkpOworCisgICAgaWYg
KGF1dG8gcG9saWN5ID0gcGFyc2VSZWZlcnJlclBvbGljeSh3b3JrZXJGZXRjaFJlc3VsdC5yZWZl
cnJlclBvbGljeSwgUmVmZXJyZXJQb2xpY3lTb3VyY2U6OkhUVFBIZWFkZXIpKQorICAgICAgICBk
b2N1bWVudC0+c2V0UmVmZXJyZXJQb2xpY3koKnBvbGljeSk7CisKKyAgICBtYWluRnJhbWUuc2V0
RG9jdW1lbnQoV1RGTW92ZShkb2N1bWVudCkpOworfQorCit2b2lkIFNoYXJlZFdvcmtlclRocmVh
ZFByb3h5Ojpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCkKK3sKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzaGFyZWRXb3JrZXJJZGVudGlmaWVy
ID0gbV93b3JrZXJUaHJlYWQtPmlkZW50aWZpZXIoKSwgZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNz
YWdlLmlzb2xhdGVkQ29weSgpLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCA9
IHNvdXJjZVVSTC5pc29sYXRlZENvcHkoKV0geworICAgICAgICBpZiAoYXV0byogY29ubmVjdGlv
biA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkp
CisgICAgICAgICAgICBjb25uZWN0aW9uLT5wb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qoc2hh
cmVkV29ya2VySWRlbnRpZmllciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIHNvdXJjZVVSTCk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3h5
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRo
cmVhZFByb3h5LmgKc2ltaWxhcml0eSBpbmRleCA1NCUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJveHkuaApyZW5hbWUgdG8gU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oCmlu
ZGV4IGRiN2I4NTA5ZGY1YS4uZjdiMjkyNGRiZTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw4ICsy
NSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiU2hhcmVkV29ya2VySWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIldvcmtlckRlYnVnZ2VyUHJveHkuaCIKLSNpbmNsdWRlICJXb3JrZXJH
bG9iYWxTY29wZVByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyTG9hZGVyUHJveHkuaCIKICNpbmNs
dWRlICJXb3JrZXJPYmplY3RQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlck9wdGlvbnMuaCIKQEAg
LTM0LDI5ICszNCwyNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENhY2hlU3Rv
cmFnZVByb3ZpZGVyOworY2xhc3MgUGFnZTsKIGNsYXNzIFNoYXJlZFdvcmtlcjsKIGNsYXNzIFNo
YXJlZFdvcmtlclRocmVhZDsKIAotY2xhc3MgU2hhcmVkV29ya2VyUHJveHkgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkV29ya2VyUHJveHk+LCBwdWJsaWMgV29ya2VyR2xvYmFs
U2NvcGVQcm94eSwgcHVibGljIFdvcmtlck9iamVjdFByb3h5LCBwdWJsaWMgV29ya2VyTG9hZGVy
UHJveHksIHB1YmxpYyBXb3JrZXJEZWJ1Z2dlclByb3h5IHsKK3N0cnVjdCBDbGllbnRPcmlnaW47
CitzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7CisKK2NsYXNzIFNoYXJlZFdvcmtlclRocmVhZFBy
b3h5IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZFdvcmtlclRocmVhZFByb3h5
PiwgcHVibGljIFdvcmtlckxvYWRlclByb3h5LCBwdWJsaWMgV29ya2VyRGVidWdnZXJQcm94eSwg
cHVibGljIFdvcmtlck9iamVjdFByb3h5IHsKIHB1YmxpYzoKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBBcmdzPiBzdGF0aWMgU2hhcmVkV29ya2VyUHJveHkmIGNyZWF0ZShBcmdzJiYuLi4gYXJn
cykgeyByZXR1cm4gKm5ldyBTaGFyZWRXb3JrZXJQcm94eShzdGQ6OmZvcndhcmQ8QXJncz4oYXJn
cykuLi4pOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0dXBQYWdlRm9yU2hh
cmVkV29ya2VyKFBhZ2UmLCBjb25zdCBVUkwmLCBjb25zdCBDbGllbnRPcmlnaW4mLCBjb25zdCBX
b3JrZXJGZXRjaFJlc3VsdCYpOwogCi0gICAgU2hhcmVkV29ya2VyVGhyZWFkKiB0aHJlYWQoKSB7
IHJldHVybiBtX3dvcmtlclRocmVhZC5nZXQoKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4u
IEFyZ3M+IHN0YXRpYyBSZWY8U2hhcmVkV29ya2VyVGhyZWFkUHJveHk+IGNyZWF0ZShBcmdzJiYu
Li4gYXJncykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsgfQorICAgIH5TaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eSgpOworCisgICAgU2hhcmVkV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Q7
CisgICAgU2hhcmVkV29ya2VyVGhyZWFkJiB0aHJlYWQoKSB7IHJldHVybiBtX3dvcmtlclRocmVh
ZC5nZXQoKTsgfQorCisgICAgYm9vbCBpc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkOyB9CisgICAgdm9pZCBzZXRBc1Rl
cm1pbmF0aW5nT3JUZXJtaW5hdGVkKCkgeyBtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQgPSB0
cnVlOyB9CiAKLSAgICB2b2lkIHN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3Jp
cHRVUkwsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wg
aXNPbmxpbmUsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc291cmNlQ29kZSwgY29uc3QgQ29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRD
b250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnN0IENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kmLCBN
b25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIFJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBGZXRj
aFJlcXVlc3RDcmVkZW50aWFscywgSlNDOjpSdW50aW1lRmxhZ3MpIGZpbmFsOwotICAgIHZvaWQg
dGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKSBmaW5hbDsKLSAgICB2b2lkIHBvc3RNZXNzYWdl
VG9Xb3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKSBmaW5hbDsKLSAg
ICB2b2lkIHBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShGdW5jdGlvbjx2b2lkKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKT4mJikgZmluYWw7Ci0gICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHko
KSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHdvcmtlck9iamVjdERlc3Ryb3llZCgpIGZpbmFsOwot
ICAgIHZvaWQgbm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpIGZpbmFsOwot
ICAgIHZvaWQgc3VzcGVuZEZvckJhY2tGb3J3YXJkQ2FjaGUoKSBmaW5hbDsKLSAgICB2b2lkIHJl
c3VtZUZvckJhY2tGb3J3YXJkQ2FjaGUoKSBmaW5hbDsKLSAgICB2b2lkIHBvc3RFeGNlcHRpb25U
b1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSBmaW5hbDsKLSAgICB2
b2lkIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkKCkgZmluYWw7Ci0gICAgdm9pZCBwb3N0TWVz
c2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpIGZpbmFsOwotICAg
IHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wgaGFzUGVuZGluZ0FjdGl2
aXR5KSBmaW5hbDsKLSAgICB2b2lkIHJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGhhc1BlbmRp
bmdBY3Rpdml0eSkgZmluYWw7CiAgICAgUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IGNy
ZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKSBmaW5hbDsKICAgICBSZWZQdHI8UlRDRGF0YUNo
YW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbj4gY3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyQ29ubmVjdGlvbigpIGZpbmFsOwogICAgIHZvaWQgcG9zdFRhc2tUb0xvYWRlcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYpIGZpbmFsOwpAQCAtNjQsMTggKzYyLDI1IEBAIHB1
YmxpYzoKICAgICB2b2lkIHBvc3RNZXNzYWdlVG9EZWJ1Z2dlcihjb25zdCBTdHJpbmcmKSBmaW5h
bDsKICAgICB2b2lkIHNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNwZWN0b3IoYm9v
bCkgZmluYWw7CiAKKyAgICAvLyBXb3JrZXJPYmplY3RQcm94eQorICAgIHZvaWQgcG9zdEV4Y2Vw
dGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpIGZpbmFsOwor
ICAgIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWQoKSBmaW5hbCB7IH0KKyAgICB2b2lk
IHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJikgZmlu
YWwgeyB9CisgICAgdm9pZCBjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCkgZmlu
YWwgeyB9CisgICAgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCkgZmluYWwgeyB9CisK
IHByaXZhdGU6Ci0gICAgU2hhcmVkV29ya2VyUHJveHkoU2hhcmVkV29ya2VyJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkoVW5pcXVlUmVmPFBhZ2U+JiYsIFNo
YXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IENsaWVudE9yaWdpbiYsIGNvbnN0IFVSTCYgc2Ny
aXB0VVJMLCBXb3JrZXJGZXRjaFJlc3VsdCYmLCBXb3JrZXJPcHRpb25zJiYsIGNvbnN0IFN0cmlu
ZyYgdXNlckFnZW50LCBDYWNoZVN0b3JhZ2VQcm92aWRlciYpOwogCi0gICAgdm9pZCB3b3JrZXJH
bG9iYWxTY29wZURlc3Ryb3llZEludGVybmFsKCk7CisgICAgc3RhdGljIHZvaWQgbmV0d29ya1N0
YXRlQ2hhbmdlZChib29sIGlzT25MaW5lKTsKKyAgICB2b2lkIG5vdGlmeU5ldHdvcmtTdGF0ZUNo
YW5nZShib29sIGlzT25saW5lKTsKIAotICAgIFdlYWtQdHI8U2hhcmVkV29ya2VyPiBtX3NoYXJl
ZFdvcmtlcjsKLSAgICBSZWZQdHI8U2hhcmVkV29ya2VyVGhyZWFkPiBtX3dvcmtlclRocmVhZDsK
LSAgICBjb25zdCBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0OwotICAgIGNvbnN0IFN0cmluZyBtX2lkZW50aWZpZXJGb3JJbnNwZWN0b3I7Ci0g
ICAgYm9vbCBtX2Fza2VkVG9UZXJtaW5hdGUgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9oYXNQZW5k
aW5nQWN0aXZpdHkgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9tYXlCZURlc3Ryb3llZCB7IGZhbHNl
IH07CisgICAgVW5pcXVlUmVmPFBhZ2U+IG1fcGFnZTsKKyAgICBSZWY8RG9jdW1lbnQ+IG1fZG9j
dW1lbnQ7CisgICAgUmVmPFNoYXJlZFdvcmtlclRocmVhZD4gbV93b3JrZXJUaHJlYWQ7CisgICAg
Q2FjaGVTdG9yYWdlUHJvdmlkZXImIG1fY2FjaGVTdG9yYWdlUHJvdmlkZXI7CisgICAgUmVmUHRy
PENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKKyAgICBi
b29sIG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCA3NTZkYTg4YjQ1ZjcuLjI5ZjRj
NzgxODE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0yOCw2ICsyOCw3IEBAIHNldChXZWJLaXRf
SU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL05v
dGlmaWNhdGlvbnMiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlciIKKyAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIi
CiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZSIKICAgICAiJHtX
RUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9jYWNoZSIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlIgpAQCAtMjAyLDYgKzIwMyw5IEBAIHNldChXZWJLaXRfTUVTU0FH
RVNfSU5fRklMRVMKICAgICBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbgogICAgIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uCiAKKyAgICBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbgorICAgIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdv
cmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCisKICAgICBOZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0CiAKICAgICBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uCkBAIC0zMDUsNiArMzA5LDgg
QEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogCiAgICAgV2ViUHJvY2Vzcy9TcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcgogCisgICAgV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbgorICAg
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uCiAgICAg
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbgogICAgIFdlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggNGM2NjIyMGNmMTIyLi43MjI5
YzFiOTg3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3QKQEAgLTkxLDYgKzkxLDggQEAgJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLm1lc3NhZ2VzLmkKICQoUFJPSkVD
VF9ESVIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFz
ay5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikv
TmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMu
aW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0Lk5l
dHdvcmtQcm9jZXNzLnNiLmluCkBAIC0yMTcsNiArMjE5LDggQEAgJChQUk9KRUNUX0RJUikvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL1NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5h
Z2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
bGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5p
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxl
bGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5k
ZXggZTNiNTU4NDBhZTFlLi5hODYzMjgxNDdiNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtNjA3LDYgKzYwNywxOCBAQCAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXU2VydmVyQ29ubmVjdGlv
bk1lc3NhZ2VzUmVwbGllcwogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdC9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXNSZXBs
aWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIu
Y3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNz
YWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dC9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXNSZXBs
aWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0L1dlYlNvY2tldENoYW5uZWxNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNvY2tldENoYW5uZWxNZXNz
YWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNv
Y2tldENoYW5uZWxNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmlu
ZGV4IDdhZDQ5ZTM3MzVmNC4uMzUxZmZhZTBhNTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5t
YWtlCkBAIC0xMzMsNiArMTMzLDggQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrIFwKIAlOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2sgXAogCU5ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIFwKKwlO
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlv
biBcCisJTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24gXAogCU5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0g
XAogCU5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzIFwKIAlOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIgXApAQCAtMjI1LDYgKzIyNyw4IEBAIE1FU1NBR0VfUkVDRUlWRVJT
ID0gXAogCVdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25u
ZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGlt
ZU1lZGlhU291cmNlTWFuYWdlciBcCisJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBcCisJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29u
bmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9XZWJQcm9jZXNzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggNjg3YzhkYjY5MTJjLi5jN2IxN2ZkNzA3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCkBAIC02Niw2ICs2NiwxMSBAQAogI2luY2x1ZGUgIldlYlNXU2VydmVyQ29u
bmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIKKyNpbmNsdWRlICJXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBDb29raWVBY2NlcHRQb2xpY3kuaD4KQEAgLTEzMiw2ICsx
MzcsNyBAQCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmIG5ldAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKICAgICBlc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKTsKICNlbmRpZgorICAgIGVzdGFi
bGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oKTsKIH0KIAogTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6On5OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCkBAIC0xNjYs
NiArMTcyLDcgQEAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcygpCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHVucmVn
aXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgorICAgIHVucmVnaXN0ZXJTaGFyZWRXb3JrZXJD
b25uZWN0aW9uKCk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhh
c1VwbG9hZFN0YXRlQ2hhbmdlZChib29sIGhhc1VwbG9hZCkKQEAgLTI3NSw2ICsyODIsMTcgQEAg
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW8KICAgICB9CiAjZW5kaWYKIAorICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGlmIChtX3NoYXJl
ZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAgICAgICBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24t
PmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdl
czo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpKSB7CisgICAgICAgIGlmIChtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9u
KQorICAgICAgICAgICAgbV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbi0+ZGlkUmVjZWl2
ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
ICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
UmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkpCiAgICAgICAgIHJldHVybiBwYXltZW50Q29vcmRpbmF0b3Io
KS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKQEAgLTM5OCw5ICs0MTYs
OCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJB
TShjb25uZWN0aW9uKTsKICNlbmRpZgorICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rp
b24gPSBudWxscHRyOwogCiAgICAgLy8gUHJvdGVjdCBvdXJzZWxmIGFzIHdlIG1pZ2h0IGJlIG90
aGVyd2lzZSBiZSBkZWxldGVkIGR1cmluZyB0aGlzIGZ1bmN0aW9uLgogICAgIFJlZjxOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gcHJvdGVjdG9yKCp0aGlzKTsKQEAgLTQ0MSw2ICs0NTgs
NyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHVu
cmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgorICAgIHVucmVnaXN0ZXJTaGFyZWRXb3Jr
ZXJDb25uZWN0aW9uKCk7CiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKICAgICBt
X3BheW1lbnRDb29yZGluYXRvciA9IG51bGxwdHI7CkBAIC0xMTg2LDYgKzEyMDQsNjEgQEAgc2l6
ZV90IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpmaW5kTmV0d29ya0FjdGl2aXR5VHJh
Y2tlcihXZWJDb3JlOjpSZXNvdXIKICAgICAgICAgcmV0dXJuIGl0ZW0ucmVzb3VyY2VJRCA9PSBy
ZXNvdXJjZUlEOwogICAgIH0pOwogfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWlu
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
Q09OTkVDVElPTl9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvbjoiKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oKTsKKyAgICBpZiAoYXV0byogc3dTZXJ2ZXIgPSBzZXNzaW9uID8gc2Vzc2lvbi0+c2hhcmVk
V29ya2VyU2VydmVyKCkgOiBudWxscHRyKQorICAgICAgICBtX3NoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uPigqdGhpcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksICpzd1NlcnZlcik7Cisg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpCit7CisgICAg
aWYgKG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAg
ICByZXR1cm47CisKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImVz
dGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Iik7CisKKyAgICBhdXRvJiBzZXJ2
ZXIgPSBzZXNzaW9uLT5lbnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKTsKKyAgICBhdXRvIGNvbm5l
Y3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24+KG1fbmV0
d29ya1Byb2Nlc3MsIHNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBtX3dlYlByb2Nlc3NJZGVu
dGlmaWVyKTsKKworICAgIG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbiA9ICpjb25uZWN0aW9uOwor
ICAgIHNlcnZlci5hZGRDb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpOworfQorCit2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbG9zZVNoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwg
ImNsb3NlU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb246Iik7CisgICAgbV9zaGFyZWRXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uKCkKK3sKKyAg
ICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgInVucmVnaXN0ZXJTaGFyZWRX
b3JrZXJDb25uZWN0aW9uOiIpOworICAgIGlmIChtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisg
ICAgICAgIG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbi0+c2VydmVyKCkucmVtb3ZlQ29ubmVjdGlv
bihtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24tPndlYlByb2Nlc3NJZGVudGlmaWVyKCkpOworfQor
Cit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpCit7CisgICAgQ09OTkVDVElPTl9S
RUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJzaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uSXNOb0xvbmdlck5lZWRlZDoiKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpT
aGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkIHsgd2ViUHJvY2Vzc0lk
ZW50aWZpZXIoKSB9LCAwKTsKKworICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24g
PSBudWxscHRyOworfQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKiBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2hhcmVkV29ya2VyQ29ubmVjdGlvbigpCit7CisgICAg
aWYgKCFtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAgIGVzdGFibGlzaFNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb24oKTsKKyAgICByZXR1cm4gbV9zaGFyZWRXb3JrZXJDb25uZWN0
aW9uLmdldCgpOworfQogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKQpAQCAt
MTIyMyw5ICsxMjk2LDkgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xv
c2VTV0NvbnRleHRDb25uZWN0aW9uKCkKICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBudWxs
cHRyOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6c2VydmljZVdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdl
ck5lZWRlZCgpCiB7Ci0gICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAi
c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkOiBXZWJQcm9jZXNzIG5vIGxv
bmdlciB1c2VmdWwgZm9yIHJ1bm5pbmcgc2VydmljZSB3b3JrZXJzIik7CisgICAgQ09OTkVDVElP
Tl9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAic2VydmljZVdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZDogV2ViUHJvY2VzcyBubyBsb25nZXIgdXNlZnVsIGZv
ciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycyIpOwogICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6
OlNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkIHsgd2ViUHJvY2Vz
c0lkZW50aWZpZXIoKSB9LCAwKTsKIAogICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxw
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggM2ExZTE0MDQzMzhmLi5kMGFhNGVmNzQ1
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTkyLDYgKzkyLDggQEAgY2xhc3MgTmV0
d29ya1NvY2tldFN0cmVhbTsKIGNsYXNzIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s7CiBjbGFzcyBX
ZWJTV1NlcnZlckNvbm5lY3Rpb247CiBjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b247CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOworY2xhc3MgV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKIAogbmFtZXNwYWNlIE5ldHdvcmtD
YWNoZSB7CiBzdHJ1Y3QgRGF0YUtleTsKQEAgLTE4MSwxMCArMTgzLDEzIEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KGNvbnN0IFdlYkNvcmU6Ok1l
c3NhZ2VQb3J0SWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5KT4mJik7CiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCi0gICAgdm9pZCBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25n
ZXJOZWVkZWQoKTsKKyAgICB2b2lkIHNlcnZpY2VXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uTm9Mb25nZXJOZWVkZWQoKTsKICAgICBXZWJTV1NlcnZlckNvbm5lY3Rpb24qIHN3Q29ubmVj
dGlvbigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBjcmVh
dGVGZXRjaFRhc2soTmV0d29ya1Jlc291cmNlTG9hZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0Jik7CiAjZW5kaWYKKyAgICB2b2lkIHNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7CisKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uKiBzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiAKICAgICBOZXR3b3JrU2No
ZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9zY2hlbWVSZWdpc3RyeS5n
ZXQoKTsgfQogCkBAIC0yNTMsNiArMjU4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZVNv
Y2tldENoYW5uZWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5n
JiBwcm90b2NvbCwgV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAgICAgdm9pZCB1cGRhdGVR
dW90YUJhc2VkT25TcGFjZVVzYWdlRm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4mKTsKIAorICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigp
OworICAgIHZvaWQgdW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKKwogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlv
bigpOwogICAgIHZvaWQgZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0yNjAsNiArMjY4
LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRp
ZgogCisgICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgY2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0
Q29ubmVjdGlvbigpOworCiAgICAgdm9pZCBjcmVhdGVSVENQcm92aWRlcihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIHZvaWQgY29ubmVjdFRv
UlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlm
aWVyIHNvdXJjZSwgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGhhbmRsZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxib29sPik+JiYpOwpAQCAtNDA0LDYg
KzQxNSw4IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxXZWJTV1NlcnZlckNvbm5lY3Rpb24+IG1f
c3dDb25uZWN0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24+IG1fc3dDb250ZXh0Q29ubmVjdGlvbjsKICNlbmRpZgorICAgIFdlYWtQdHI8V2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4gbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uPiBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uOwogCiAjaWYgRU5BQkxFKFdFQl9S
VEMpCiAgICAgYm9vbCBtX2lzUmVnaXN0ZXJlZFRvUlRDRGF0YUNoYW5uZWxQcm94eSB7IGZhbHNl
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAyNDI4
MzUwNTBiMjQuLmI5N2NhMzQ3OWI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCkBAIC04OCw2ICs4OCw5IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBDbG9zZVNXQ29udGV4dENvbm5l
Y3Rpb24oKQogI2VuZGlmCiAKKyAgICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikgLT4gKCkgQXN5bmMKKyAgICBDbG9zZVNoYXJl
ZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKCkKKwogICAgIENyZWF0ZVJUQ1Byb3ZpZGVyKCkgLT4g
KCkgQXN5bmMKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICBDb25uZWN0VG9SVENEYXRhQ2hhbm5l
bFJlbW90ZVNvdXJjZShzdHJ1Y3QgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHNv
dXJjZSwgc3RydWN0IFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBoYW5kbGVyKSAt
PiAoc3RkOjpvcHRpb25hbDxib29sPiByZXN1bHQpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IGUyYjI0ZDgzMjJiNi4uZDc2
MTYyODUwY2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2ViU1dPcmln
aW5TdG9yZS5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlci5oIgogI2luY2x1ZGUg
IldlYlNvY2tldFRhc2suaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZUphci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CkBAIC02NTMsNiArNjU0LDEzIEBAIGJvb2wg
TmV0d29ya1Nlc3Npb246Omhhc1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBhdGgoKSBjb25zdAogCiAj
ZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIm
IE5ldHdvcmtTZXNzaW9uOjplbnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKQoreworICAgIGlmICgh
bV9zaGFyZWRXb3JrZXJTZXJ2ZXIpCisgICAgICAgIG1fc2hhcmVkV29ya2VyU2VydmVyID0gbWFr
ZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fc2hh
cmVkV29ya2VyU2VydmVyOworfQorCiBXZWJJREJTZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1
cmVXZWJJREJTZXJ2ZXIoKQogewogICAgIGlmICghbV93ZWJJREJTZXJ2ZXIpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAppbmRleCAxOTMwN2NmNDBi
ZTMuLjNmOWQ2Yzk1NTBhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uaApAQCAtNzksNiArNzksNyBAQCBjbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOwogY2xhc3MgV2ViSURCU2VydmVyOwogY2xhc3MgV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJz
OwogY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOworY2xhc3MgV2ViU2hhcmVk
V29ya2VyU2VydmVyOwogY2xhc3MgV2ViU29ja2V0VGFzazsKIGNsYXNzIFdlYlNXT3JpZ2luU3Rv
cmU7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CkBAIC0yMTAsNiArMjExLDkgQEAgcHVi
bGljOgogICAgIHZvaWQgYWRkU2VydmljZVdvcmtlclNlc3Npb24oYm9vbCBwcm9jZXNzVGVybWlu
YXRpb25EZWxheUVuYWJsZWQsIFN0cmluZyYmIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnksIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogI2VuZGlmCiAKKyAgICBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXIqIHNoYXJlZFdvcmtlclNlcnZlcigpIHsgcmV0dXJuIG1fc2hh
cmVkV29ya2VyU2VydmVyLmdldCgpOyB9CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBlbnN1
cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKTsKKwogICAgIFdlYklEQlNlcnZlciogd2ViSURCU2VydmVy
KCkgeyByZXR1cm4gbV93ZWJJREJTZXJ2ZXIuZ2V0KCk7IH0KICAgICBXZWJJREJTZXJ2ZXImIGVu
c3VyZVdlYklEQlNlcnZlcigpOwogICAgIHZvaWQgY2xvc2VJREJTZXJ2ZXIoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKQEAgLTMxOCw2ICszMjIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3Rk
OjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySW5mbz4gbV9zZXJ2aWNlV29ya2VySW5mbzsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1dTZXJ2ZXI+IG1fc3dTZXJ2ZXI7CiAjZW5kaWYKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyPiBtX3NoYXJlZFdvcmtlclNl
cnZlcjsKIAogICAgIFN0cmluZyBtX2lkYkRhdGFiYXNlUGF0aDsKICAgICBSZWZQdHI8V2ViSURC
U2VydmVyPiBtX3dlYklEQlNlcnZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggNWE4NzAzZWZkNmQ1Li4yN2Y2ZThkYTVmNDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwCkBAIC0xNjIsNyArMTYyLDcgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246Om1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWUKIAogdm9pZCBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVk
KCkKIHsKLSAgICBtX2Nvbm5lY3Rpb24uc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2Vy
TmVlZGVkKCk7CisgICAgbV9jb25uZWN0aW9uLnNlcnZpY2VXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKTsKIH0KIAogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OnNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxlYWJsZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJl
ZFdvcmtlclNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdv
cmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uM2M2MzY0YWE1NDA4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNw
cApAQCAtMCwwICsxLDI5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3
b3JrU2Vzc2lvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24u
aCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgi
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OldlYlNoYXJl
ZFdvcmtlclNlcnZlcihOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbikKKyAgICA6IG1fc2Vzc2lvbihz
ZXNzaW9uKQoreworfQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6On5XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXIoKSA9IGRlZmF1bHQ7CisKK1BBTDo6U2Vzc2lvbklEIFdlYlNoYXJlZFdvcmtlclNlcnZl
cjo6c2Vzc2lvbklEKCkKK3sKKyAgICByZXR1cm4gbV9zZXNzaW9uLnNlc3Npb25JRCgpOworfQor
Cit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtlcihXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mJiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgVVJMJiYgdXJsLCBXZWJDb3JlOjpU
cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgcG9ydCwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmIHdv
cmtlck9wdGlvbnMpCit7CisgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5IGtleSB7IG9yaWdp
biwgdXJsLCB3b3JrZXJPcHRpb25zLm5hbWUgfTsKKyAgICBhdXRvJiBzaGFyZWRXb3JrZXIgPSBt
X3NoYXJlZFdvcmtlcnMuZW5zdXJlKGtleSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8U2hhcmVkV29ya2VyPihvcmlnaW4sIHVybCwgd29ya2VyT3B0aW9ucyk7CisgICAgfSkuaXRl
cmF0b3ItPnZhbHVlOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdv
cmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllcj0le3ByaXZhdGV9cywgc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzaGFyZWRX
b3JrZXItPmlkZW50aWZpZXIudG9VSW50NjQoKSk7CisKKyAgICBpZiAoc2hhcmVkV29ya2VyLT53
b3JrZXJPcHRpb25zLnR5cGUgIT0gd29ya2VyT3B0aW9ucy50eXBlIHx8IHNoYXJlZFdvcmtlci0+
d29ya2VyT3B0aW9ucy5jcmVkZW50aWFscyAhPSB3b3JrZXJPcHRpb25zLmNyZWRlbnRpYWxzKSB7
CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtl
clNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtlcjogQSB3b3JrZXIgYWxyZWFkeSBleGlzdHMgd2l0
aCB0aGlzIG5hbWUgYnV0IGhhcyBkaWZmZXJlbnQgdHlwZSAvIGNyZWRlbnRpYWxzIik7CisgICAg
ICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkKKyAgICAgICAgICAg
IHNlcnZlckNvbm5lY3Rpb24tPm5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZhaWx1cmUoc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBz
aGFyZWRXb3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMuYWRkKHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIsIHBvcnQpOworCisgICAgaWYgKHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2Jq
ZWN0cy5zaXplKCkgPiAxKSB7CisgICAgICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldl
YlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtlcjogQSBzaGFyZWQgd29ya2Vy
IHdpdGggdGhpcyBVUkwgYWxyZWFkeSBleGlzdHMgKG5vdyBzaGFyZWQgYnkgJXUgc2hhcmVkIHdv
cmtlciBvYmplY3RzKSIsIHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5zaXplKCkp
OworICAgICAgICBpZiAoc2hhcmVkV29ya2VyLT5pc1J1bm5pbmcpIHsKKyAgICAgICAgICAgIGF1
dG8qIGNvbnRleHRDb25uZWN0aW9uID0gbV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdv
cmtlci0+cmVnaXN0cmFibGVEb21haW4oKSk7CisgICAgICAgICAgICBBU1NFUlQoY29udGV4dENv
bm5lY3Rpb24pOworICAgICAgICAgICAgaWYgKGNvbnRleHRDb25uZWN0aW9uKQorICAgICAgICAg
ICAgICAgIHBvc3RDb25uZWN0RXZlbnQoKmNvbnRleHRDb25uZWN0aW9uLCBzaGFyZWRXb3JrZXIt
PmlkZW50aWZpZXIsIHBvcnQsIG9yaWdpbi5jbGllbnRPcmlnaW4udG9TdHJpbmcoKSk7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlQoIXNoYXJlZFdvcmtlci0+
aXNSdW5uaW5nKTsKKworICAgIGF1dG8qIHNlcnZlckNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25z
LmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkpOwor
ICAgIEFTU0VSVChzZXJ2ZXJDb25uZWN0aW9uKTsKKworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdv
cmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtlcjogRmV0Y2hp
bmcgc2hhcmVkIHdvcmtlciBzY3JpcHQgaW4gY2xpZW50Iik7CisgICAgc2VydmVyQ29ubmVjdGlv
bi0+ZmV0Y2hTY3JpcHRJbkNsaWVudCh1cmwsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIs
IHdvcmtlck9wdGlvbnMsIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBzaGFyZWRXb3Jr
ZXIgPSBXZWFrUHRyIHsgKnNoYXJlZFdvcmtlciB9XShXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3Vs
dCYmIGZldGNoUmVzdWx0KSB7CisgICAgICAgIGlmICh3ZWFrVGhpcyAmJiBzaGFyZWRXb3JrZXIp
CisgICAgICAgICAgICB3ZWFrVGhpcy0+ZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRXb3JrZXJTY3Jp
cHQoKnNoYXJlZFdvcmtlciwgV1RGTW92ZShmZXRjaFJlc3VsdCkpOworICAgIH0pOworfQorCit2
b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6bGF1bmNoU2hhcmVkV29ya2VyKFdlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uLCBTaGFyZWRX
b3JrZXImIHNoYXJlZFdvcmtlcikKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmxhdW5jaFNoYXJlZFdvcmtlcjogY29udGV4dENvbm5lY3Rp
b249JXAsIHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCAmY29udGV4dENvbm5lY3Rp
b24sIHNoYXJlZFdvcmtlci5pZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIGNvbnRleHRDb25u
ZWN0aW9uLmxhdW5jaFNoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXIub3JpZ2luLCBzaGFyZWRXb3Jr
ZXIuaWRlbnRpZmllciwgc2hhcmVkV29ya2VyLnVybCwgc2hhcmVkV29ya2VyLndvcmtlck9wdGlv
bnMsIHNoYXJlZFdvcmtlci5mZXRjaFJlc3VsdCk7CisgICAgc2hhcmVkV29ya2VyLmlzUnVubmlu
ZyA9IHRydWU7CisgICAgYXV0byBzb3VyY2VPcmlnaW4gPSBzaGFyZWRXb3JrZXIub3JpZ2luLmNs
aWVudE9yaWdpbi50b1N0cmluZygpOworICAgIGZvciAoYXV0byYgcG9ydCA6IHNoYXJlZFdvcmtl
ci5zaGFyZWRXb3JrZXJPYmplY3RzLnZhbHVlcygpKQorICAgICAgICBwb3N0Q29ubmVjdEV2ZW50
KGNvbnRleHRDb25uZWN0aW9uLCBzaGFyZWRXb3JrZXIuaWRlbnRpZmllciwgcG9ydCwgc291cmNl
T3JpZ2luKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnBvc3RDb25uZWN0RXZl
bnQoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5l
Y3Rpb24sIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYgc291cmNlUG9ydCwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29y
a2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpwb3N0Q29ubmVjdEV2ZW50OiBjb250ZXh0Q29u
bmVjdGlvbj0lcCwgc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsICZjb250ZXh0Q29u
bmVjdGlvbiwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBjb250ZXh0
Q29ubmVjdGlvbi5wb3N0Q29ubmVjdEV2ZW50KHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIHNvdXJj
ZVBvcnQsIHNvdXJjZU9yaWdpbik7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpk
aWRGaW5pc2hGZXRjaGluZ1NoYXJlZFdvcmtlclNjcmlwdChTaGFyZWRXb3JrZXImIHdvcmtlciwg
V2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJiBmZXRjaFJlc3VsdCkKK3sKKyAgICBSRUxFQVNF
X0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNo
aW5nU2hhcmVkV29ya2VyU2NyaXB0IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIs
IHdvcmtlcj0lcCwgc3VjY2Vzcz0lZCIsIHdvcmtlci5pZGVudGlmaWVyLnRvVUludDY0KCksICZ3
b3JrZXIsIGZldGNoUmVzdWx0LmVycm9yLmlzTnVsbCgpKTsKKyAgICBpZiAoIWZldGNoUmVzdWx0
LmVycm9yLmlzTnVsbCgpKSB7CisgICAgICAgIC8vIEZldGNoIGZhaWxlZCwgbm90aWZ5IHRoZSBT
aGFyZWRXb3JrZXIgb2JqZWN0cy4KKyAgICAgICAgZm9yIChhdXRvIHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIgOiB3b3JrZXIuc2hhcmVkV29ya2VyT2JqZWN0cy5rZXlzKCkpIHsKKyAgICAg
ICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkKKyAgICAgICAg
ICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uLT5ub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRGYWlsdXJl
KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgICAgICB9CisgICAgICAgIG1fc2hh
cmVkV29ya2Vycy5yZW1vdmUod29ya2VyLmtleSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHdvcmtlci5mZXRjaFJlc3VsdCA9IFdURk1vdmUoZmV0Y2hSZXN1bHQpOworCisgICAg
YXV0byByZWdpc3RyYWJsZURvbWFpbiA9IHdvcmtlci5yZWdpc3RyYWJsZURvbWFpbigpOworICAg
IGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJs
ZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKCFjb250ZXh0Q29ubmVjdGlvbikg
eworICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBsYXVuY2hTaGFyZWRXb3JrZXIoKmNvbnRleHRD
b25uZWN0aW9uLCB3b3JrZXIpOworfQorCitib29sIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6bmVl
ZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QKK3sKKyAgICBmb3IgKGF1
dG8mIHNoYXJlZFdvcmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBp
ZiAocmVnaXN0cmFibGVEb21haW4ubWF0Y2hlcyhzaGFyZWRXb3JrZXItPnVybCkpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFdl
YlNoYXJlZFdvcmtlclNlcnZlcjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQoreworICAgIEFTU0VSVCgh
bV9jb250ZXh0Q29ubmVjdGlvbnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKTsKKyAgICBp
ZiAobV9wZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5zLmNvbnRhaW5zKHJlZ2lzdHJhYmxl
RG9tYWluKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2Vy
LCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbiB3aWxsIGNy
ZWF0ZSBhIGNvbm5lY3Rpb24iKTsKKworICAgIG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9t
YWlucy5hZGQocmVnaXN0cmFibGVEb21haW4pOworICAgIG1fc2Vzc2lvbi5uZXR3b3JrUHJvY2Vz
cygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcmVnaXN0cmFibGVEb21haW4sIG1fc2Vzc2lvbi5zZXNz
aW9uSUQoKSB9LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVnaXN0cmFi
bGVEb21haW5dIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXI6OmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uIHNob3VsZCBub3cgaGF2ZSBjcmVhdGVkIGEgY29u
bmVjdGlvbiIpOworCisgICAgICAgIEFTU0VSVChtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRv
bWFpbnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKTsKKyAgICAgICAgbV9wZW5kaW5nQ29u
dGV4dENvbm5lY3Rpb25Eb21haW5zLnJlbW92ZShyZWdpc3RyYWJsZURvbWFpbik7CisKKyAgICAg
ICAgaWYgKG1fY29udGV4dENvbm5lY3Rpb25zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAobmVlZHNDb250ZXh0Q29ubmVjdGlv
bkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgICAgIGNy
ZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICB9LCAwKTsKK30K
Kwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmFkZENvbnRleHRDb25uZWN0aW9uKFdlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uKQor
eworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6
YWRkQ29udGV4dENvbm5lY3Rpb24oJXApIHdlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwg
JmNvbnRleHRDb25uZWN0aW9uLCBjb250ZXh0Q29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmll
cigpLnRvVUludDY0KCkpOworCisgICAgQVNTRVJUKCFtX2NvbnRleHRDb25uZWN0aW9ucy5jb250
YWlucyhjb250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpKSk7CisKKyAgICBtX2Nv
bnRleHRDb25uZWN0aW9ucy5hZGQoY29udGV4dENvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4o
KSwgJmNvbnRleHRDb25uZWN0aW9uKTsKKworICAgIGNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChj
b250ZXh0Q29ubmVjdGlvbik7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1v
dmVDb250ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uJiBjb250ZXh0Q29ubmVjdGlvbikKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIs
ICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKCVwKSB3ZWJQ
cm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQsICZjb250ZXh0Q29ubmVjdGlvbiwgY29udGV4dENv
bm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKworICAgIGF1dG8g
cmVnaXN0cmFibGVEb21haW4gPSBjb250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigp
OworCisgICAgQVNTRVJUKG1fY29udGV4dENvbm5lY3Rpb25zLmdldChyZWdpc3RyYWJsZURvbWFp
bikgPT0gJmNvbnRleHRDb25uZWN0aW9uKTsKKworICAgIG1fY29udGV4dENvbm5lY3Rpb25zLnJl
bW92ZShyZWdpc3RyYWJsZURvbWFpbik7CisKKyAgICBpZiAobmVlZHNDb250ZXh0Q29ubmVjdGlv
bkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgY3JlYXRl
Q29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4pOworfQorCit2b2lkIFdlYlNoYXJl
ZFdvcmtlclNlcnZlcjo6Y29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFdlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uKQoreworICAgIFJFTEVB
U0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y29udGV4dENvbm5l
Y3Rpb25DcmVhdGVkKCVwKSB3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQsICZjb250ZXh0
Q29ubmVjdGlvbiwgY29udGV4dENvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJ
bnQ2NCgpKTsKKyAgICBhdXRvJiByZWdpc3RyYWJsZURvbWFpbiA9IGNvbnRleHRDb25uZWN0aW9u
LnJlZ2lzdHJhYmxlRG9tYWluKCk7CisgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3NoYXJlZFdv
cmtlcnMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHdvcmtlci0+ZGlkRmluaXNoRmV0Y2hpbmco
KSAmJiByZWdpc3RyYWJsZURvbWFpbi5tYXRjaGVzKHdvcmtlci0+dXJsKSkKKyAgICAgICAgICAg
IGxhdW5jaFNoYXJlZFdvcmtlcihjb250ZXh0Q29ubmVjdGlvbiwgKndvcmtlcik7CisgICAgfQor
fQorCithdXRvIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hhcmVkV29ya2VyQnlJZGVudGlmaWVy
KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikg
LT4gU2hhcmVkV29ya2VyKgoreworICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9zaGFyZWRXb3Jr
ZXJzLnZhbHVlcygpKSB7CisgICAgICAgIGlmICh3b3JrZXItPmlkZW50aWZpZXIgPT0gc2hhcmVk
V29ya2VySWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiB3b3JrZXIuZ2V0KCk7CisgICAg
fQorICAgIHJldHVybiBudWxscHRyOworfQorCithdXRvIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6
c2hhcmVkV29ya2VyQnlPYmplY3RJZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikgLT4gU2hhcmVkV29ya2Vy
KgoreworICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9zaGFyZWRXb3JrZXJzLnZhbHVlcygpKSB7
CisgICAgICAgIGlmICh3b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMuY29udGFpbnMoc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllcikpCisgICAgICAgICAgICByZXR1cm4gd29ya2VyLmdldCgp
OworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXI6OnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KFdlYkNvcmU6OlNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK3sKKyAgICBh
dXRvKiB3b3JrZXIgPSBzaGFyZWRXb3JrZXJCeU9iamVjdElkZW50aWZpZXIoc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hh
cmVkV29ya2VyU2VydmVyOjpzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheTogc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zLCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgd29ya2VyKTsKKyAgICBp
ZiAoIXdvcmtlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgd29ya2VyLT5zaGFyZWRXb3JrZXJP
YmplY3RzLnJlbW92ZShzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBpZiAoIXdv
cmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHNodXREb3duU2hhcmVkV29ya2VyKHdvcmtlci0+a2V5KCkpOworfQorCit2b2lkIFdlYlNo
YXJlZFdvcmtlclNlcnZlcjo6c2h1dERvd25TaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hh
cmVkV29ya2VyS2V5JiBrZXkpCit7CisgICAgYXV0byB3b3JrZXIgPSBtX3NoYXJlZFdvcmtlcnMu
dGFrZShrZXkpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtl
clNlcnZlcjo6c2h1dERvd25TaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIg
UFJJdTY0ICIsIHdvcmtlcj0lcCIsIHdvcmtlciA/IHdvcmtlci0+aWRlbnRpZmllci50b1VJbnQ2
NCgpIDogMCwgd29ya2VyLmdldCgpKTsKKyAgICBpZiAoIXdvcmtlcikKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byogY29udGV4dENvbm5lY3Rpb24gPSBjb250ZXh0Q29ubmVjdGlvbkZvclJl
Z2lzdHJhYmxlRG9tYWluKHdvcmtlci0+cmVnaXN0cmFibGVEb21haW4oKSk7CisgICAgaWYgKCFj
b250ZXh0Q29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgY29udGV4dENvbm5lY3Rp
b24tPnRlcm1pbmF0ZVNoYXJlZFdvcmtlcih3b3JrZXItPmlkZW50aWZpZXIpOworCisgICAgaWYg
KCFuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4od29ya2VyLT5yZWdp
c3RyYWJsZURvbWFpbigpKSkKKyAgICAgICAgY29udGV4dENvbm5lY3Rpb24tPmNvbm5lY3Rpb25J
c05vTG9uZ2VyTmVlZGVkKCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjphZGRD
b25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
PiYmIGNvbm5lY3Rpb24pCit7CisgICAgYXV0byBwcm9jZXNzSWRlbnRpZmllciA9IGNvbm5lY3Rp
b24tPndlYlByb2Nlc3NJZGVudGlmaWVyKCk7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2Vy
LCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjphZGRDb25uZWN0aW9uKCVwKTogcHJvY2Vzc0lkZW50
aWZpZXI9JSIgUFJJdTY0LCBjb25uZWN0aW9uLmdldCgpLCBwcm9jZXNzSWRlbnRpZmllci50b1VJ
bnQ2NCgpKTsKKyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbnMuY29udGFpbnMocHJvY2Vzc0lkZW50
aWZpZXIpKTsKKyAgICBtX2Nvbm5lY3Rpb25zLmFkZChwcm9jZXNzSWRlbnRpZmllciwgV1RGTW92
ZShjb25uZWN0aW9uKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1vdmVD
b25uZWN0aW9uKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQor
eworICAgIGF1dG8gY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMudGFrZShwcm9jZXNzSWRlbnRp
Zmllcik7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2Vy
dmVyOjpyZW1vdmVDb25uZWN0aW9uKCVwKTogcHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCBj
b25uZWN0aW9uLmdldCgpLCBwcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBBU1NF
UlQoY29ubmVjdGlvbik7CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcj4gc2hhcmVkV29ya2VyT2JqZWN0c0dvaW5nQXdheTsKKyAgICBmb3IgKGF1dG8m
IHdvcmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBmb3IgKGF1dG8m
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgOiB3b3JrZXItPnNoYXJlZFdvcmtlck9iamVj
dHMua2V5cygpKSB7CisgICAgICAgICAgICBpZiAoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ci5wcm9jZXNzSWRlbnRpZmllcigpID09IHByb2Nlc3NJZGVudGlmaWVyKQorICAgICAgICAgICAg
ICAgIHNoYXJlZFdvcmtlck9iamVjdHNHb2luZ0F3YXkuYXBwZW5kKHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIpOworICAgICAgICB9CisgICAgfQorICAgIGZvciAoYXV0byBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyIDogc2hhcmVkV29ya2VyT2JqZWN0c0dvaW5nQXdheSkKKyAgICAg
ICAgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllcik7Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlcjo6U2hhcmVkV29ya2VyOjpTaGFyZWRX
b3JrZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25zKQorICAgIDogaWRl
bnRpZmllcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQorICAg
ICwgb3JpZ2luKG9yaWdpbikKKyAgICAsIHVybCh1cmwpCisgICAgLCB3b3JrZXJPcHRpb25zKHdv
cmtlck9wdGlvbnMpCit7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpwb3N0RXhj
ZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFy
ZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAg
IGF1dG8qIHdvcmtlciA9IHNoYXJlZFdvcmtlckJ5SWRlbnRpZmllcihzaGFyZWRXb3JrZXJJZGVu
dGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXI6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdDogc2hhcmVkV29ya2VySWRl
bnRpZmllcj0lIiBQUkl1NjQgIiwgd29ya2VyPSVwIiwgc2hhcmVkV29ya2VySWRlbnRpZmllci50
b1VJbnQ2NCgpLCB3b3JrZXIpOworICAgIGlmICghd29ya2VyKQorICAgICAgICByZXR1cm47CisK
KyAgICBmb3IgKGF1dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA6IHdvcmtlci0+c2hh
cmVkV29ya2VyT2JqZWN0cy5rZXlzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHNlcnZlckNvbm5l
Y3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnBy
b2Nlc3NJZGVudGlmaWVyKCkpKQorICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlvbi0+cG9zdEV4
Y2VwdGlvblRvV29ya2VyT2JqZWN0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGVycm9y
TWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwpOworICAgIH0KK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzgzMWUwYTQyYWI0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmgKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9TY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVkV29ya2VySWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2Vy
S2V5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9Xb3JrZXJGZXRjaFJlc3VsdC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvV29ya2VyT3B0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK3N0cnVjdCBDbGllbnRPcmlnaW47Cit9CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb247CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
V2ViU2hhcmVkV29ya2VyU2VydmVyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgV2ViU2hhcmVkV29ya2VyU2VydmVyKE5ldHdvcmtTZXNzaW9u
Jik7CisgICAgfldlYlNoYXJlZFdvcmtlclNlcnZlcigpOworCisgICAgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKCk7CisKKyAgICB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFVSTCYm
LCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdlYkNvcmU6Oldvcmtlck9wdGlv
bnMmJik7CisgICAgdm9pZCBzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpT
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKworICAgIHZvaWQgYWRkQ29udGV4dENvbm5l
Y3Rpb24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOworICAgIHZv
aWQgcmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbiYpOworCisgICAgdm9pZCBhZGRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uPiYmKTsKKyAgICB2b2lkIHJlbW92ZUNvbm5l
Y3Rpb24oV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOworCisgICAgV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJs
ZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSB7IHJldHVy
biBtX2NvbnRleHRDb25uZWN0aW9ucy5nZXQoZG9tYWluKTsgfQorCisgICAgdm9pZCBwb3N0RXhj
ZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBjcmVhdGVD
b250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOworCisg
ICAgYm9vbCBuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3Qg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKKyAgICB2b2lkIGNvbnRleHRDb25u
ZWN0aW9uQ3JlYXRlZChXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7
CisKKyAgICBzdHJ1Y3QgU2hhcmVkV29ya2VyIDogQ2FuTWFrZVdlYWtQdHI8U2hhcmVkV29ya2Vy
PiB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKworICAgICAgICBT
aGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgY29uc3QgVVJMJiwgY29u
c3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYpOworCisgICAgICAgIGJvb2wgZGlkRmluaXNoRmV0
Y2hpbmcoKSBjb25zdCB7IHJldHVybiAhIWZldGNoUmVzdWx0LnNjcmlwdDsgfQorICAgICAgICBX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkga2V5KCkgY29uc3QgeyByZXR1cm4geyBvcmlnaW4sIHVy
bCwgd29ya2VyT3B0aW9ucy5uYW1lIH07IH0KKyAgICAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gcmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiB7IHVybCB9OyB9CisKKyAgICAgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRl
bnRpZmllciBpZGVudGlmaWVyOworICAgICAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2lu
OworICAgICAgICBVUkwgdXJsOworICAgICAgICBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdvcmtl
ck9wdGlvbnM7CisgICAgICAgIEhhc2hNYXA8V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydD4gc2hhcmVkV29ya2VyT2Jq
ZWN0czsKKyAgICAgICAgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQgZmV0Y2hSZXN1bHQ7Cisg
ICAgICAgIGJvb2wgaXNSdW5uaW5nIHsgZmFsc2UgfTsKKyAgICB9OworCisgICAgU2hhcmVkV29y
a2VyKiBzaGFyZWRXb3JrZXJCeUlkZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRp
Zmllcik7CisgICAgU2hhcmVkV29ya2VyKiBzaGFyZWRXb3JrZXJCeU9iamVjdElkZW50aWZpZXIo
V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRGaW5p
c2hGZXRjaGluZ1NoYXJlZFdvcmtlclNjcmlwdChTaGFyZWRXb3JrZXImLCBXZWJDb3JlOjpXb3Jr
ZXJGZXRjaFJlc3VsdCYmKTsKKyAgICB2b2lkIGxhdW5jaFNoYXJlZFdvcmtlcihXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiwgU2hhcmVkV29ya2VyJik7CisgICAgdm9p
ZCBwb3N0Q29ubmVjdEV2ZW50KFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24mLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpUcmFu
c2ZlcnJlZE1lc3NhZ2VQb3J0JiwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOworICAgIHZv
aWQgc2h1dERvd25TaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5Jik7
CisKKyAgICBOZXR3b3JrU2Vzc2lvbiYgbV9zZXNzaW9uOworICAgIEhhc2hNYXA8V2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uPj4gbV9jb25uZWN0aW9uczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluLCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4gbV9j
b250ZXh0Q29ubmVjdGlvbnM7CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4gbV9wZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5zOworICAgIEhhc2hNYXA8V2ViQ29y
ZTo6U2hhcmVkV29ya2VyS2V5LCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcmVkV29ya2VyPj4gbV9zaGFy
ZWRXb3JrZXJzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29y
a2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uM2NmNjEwYjZiYjhhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlv
bi5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJX
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL1dvcmtlckZldGNoUmVzdWx0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjZGVmaW5l
IENPTk5FQ1RJT05fUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtl
ciwgIiVwIC0gW3dlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgbV93ZWJQcm9jZXNzSWRlbnRpZmllci50
b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9H
X0VSUk9SKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICIlcCAtIFt3
ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbjo6IiBmbXQsIHRoaXMsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSwg
IyNfX1ZBX0FSR1NfXykKKworV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6V2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3Ms
IFdlYlNoYXJlZFdvcmtlclNlcnZlciYgc2VydmVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKQorICAg
IDogbV9jb250ZW50Q29ubmVjdGlvbihjb25uZWN0aW9uKQorICAgICwgbV9uZXR3b3JrUHJvY2Vz
cyhuZXR3b3JrUHJvY2VzcykKKyAgICAsIG1fc2VydmVyKHNlcnZlcikKKyAgICAsIG1fd2ViUHJv
Y2Vzc0lkZW50aWZpZXIod2ViUHJvY2Vzc0lkZW50aWZpZXIpCit7CisgICAgQ09OTkVDVElPTl9S
RUxFQVNFX0xPRygiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjoiKTsKK30KKworV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb24oKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coIn5XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uOiIpOworfQorCitJUEM6OkNvbm5lY3Rpb24qIFdlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9jb250ZW50Q29ubmVjdGlvbi5wdHIoKTsKK30KKworUEFMOjpTZXNzaW9uSUQg
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2Vzc2lvbklEKCkKK3sKKyAgICByZXR1
cm4gc2VydmVyKCkuc2Vzc2lvbklEKCk7Cit9CisKK05ldHdvcmtTZXNzaW9uKiBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpzZXNzaW9uKCkKK3sKKyAgICByZXR1cm4gbV9uZXR3b3Jr
UHJvY2Vzcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpOworfQorCit2b2lkIFdlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OnJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiYgb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFVSTCYmIHVybCwgV2ViQ29yZTo6VHJhbnNm
ZXJyZWRNZXNzYWdlUG9ydCYmIHBvcnQsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJiB3b3JrZXJP
cHRpb25zKQoreworICAgIEFTU0VSVChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nl
c3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7IC8vIEZJWE1FOiBTaG91
bGQgYmUgYSBNRVNTQUdFX0NIRUNLKCkuCisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygicmVx
dWVzdFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31z
Iiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gdGhpcy0+c2Vzc2lvbigpKQorICAgICAgICBzZXNz
aW9uLT5lbnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKS5yZXF1ZXN0U2hhcmVkV29ya2VyKFdURk1v
dmUob3JpZ2luKSwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV1RGTW92ZSh1cmwpLCBX
VEZNb3ZlKHBvcnQpLCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMpKTsKK30KKwordm9pZCBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpmZXRjaFNjcmlwdEluQ2xpZW50KGNvbnN0IFVSTCYg
dXJsLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlv
bnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiZmV0
Y2hTY3JpcHRJbkNsaWVudDogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31z
Iiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbjo6RmV0Y2hTY3JpcHRJbkNsaWVudCB7IHVybCwgc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllciwgd29ya2VyT3B0aW9ucyB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6bm90aWZ5V29ya2Vy
T2JqZWN0T2ZMb2FkRmFpbHVyZShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNF
X0xPR19FUlJPUigibm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkRmFpbHVyZTogc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb246Ok5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZhaWx1cmUg
eyBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIH0pOworfQorCit2b2lkIFdlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgQ09OTkVDVElPTl9SRUxF
QVNFX0xPR19FUlJPUigicG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0OiBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6UG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0IHsgc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIHNvdXJjZVVSTCB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uOjpzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7Cisg
ICAgQVNTRVJUKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIo
KSA9PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsgLy8gRklYTUU6IFNob3VsZCBiZSBhIE1FU1NB
R0VfQ0hFQ0soKS4KKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJzaGFyZWRXb3JrZXJPYmpl
Y3RJc0dvaW5nQXdheTogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwg
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIGlmIChhdXRvKiBzZXNzaW9uID0gdGhpcy0+c2Vzc2lvbigpKQorICAgICAgICBzZXNzaW9u
LT5lbnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKS5zaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdh
eShzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKK30KKworI3VuZGVmIENPTk5FQ1RJT05f
UkVMRUFTRV9MT0cKKyN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SCisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzY4
NDlhYjAyZWFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oCkBAIC0wLDAg
KzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1Byb2Nlc3NJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBXb3JrZXJGZXRj
aFJlc3VsdDsKK3N0cnVjdCBXb3JrZXJPcHRpb25zOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgTmV0d29ya1Byb2Nlc3M7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI7Citj
bGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOworCitjbGFzcyBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRl
ciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKE5ldHdv
cmtQcm9jZXNzJiwgV2ViU2hhcmVkV29ya2VyU2VydmVyJiwgSVBDOjpDb25uZWN0aW9uJiwgV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOworICAgIH5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uKCk7CisKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlcigpIHsgcmV0dXJu
IG1fc2VydmVyOyB9CisgICAgY29uc3QgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIoKSBj
b25zdCB7IHJldHVybiBtX3NlcnZlcjsgfQorCisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KCk7CisgICAgTmV0d29ya1Nlc3Npb24qIHNlc3Npb24oKTsKKyAgICBXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUHJv
Y2Vzc0lkZW50aWZpZXI7IH0KKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAgICB2b2lkIGZldGNoU2NyaXB0SW5D
bGllbnQoY29uc3QgVVJMJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJik+JiYpOworICAgIHZvaWQgbm90aWZ5V29ya2VyT2Jq
ZWN0T2ZMb2FkRmFpbHVyZShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsK
KyAgICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKworcHJp
dmF0ZToKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCisgICAgSVBDOjpDb25uZWN0aW9uKiBt
ZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3Nh
Z2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQorCisgICAg
Ly8gSVBDIG1lc3NhZ2VzLgorICAgIHZvaWQgcmVxdWVzdFNoYXJlZFdvcmtlcihXZWJDb3JlOjpD
bGllbnRPcmlnaW4mJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgVVJM
JiYsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgV2ViQ29yZTo6V29ya2VyT3B0
aW9ucyYmKTsKKyAgICB2b2lkIHNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KFdlYkNvcmU6
OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworCisgICAgUmVmPElQQzo6Q29ubmVjdGlv
bj4gbV9jb250ZW50Q29ubmVjdGlvbjsKKyAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29y
a1Byb2Nlc3M7CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBtX3NlcnZlcjsKKyAgICBXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLmZhZTRhMDgwMzc3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNiBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgeworICAgIFJlcXVlc3RTaGFyZWRXb3JrZXIoc3Ry
dWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgVVJMIHVybCwgV2Vi
Q29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBwb3J0LCBzdHJ1Y3QgV2ViQ29yZTo6V29ya2Vy
T3B0aW9ucyB3b3JrZXJPcHRpb25zKQorICAgIFNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5
KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcikKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi40OWMxMTI0MTUyMTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtl
clNlcnZlci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworI2RlZmluZSBDT05URVhUX0NPTk5F
Q1RJT05fUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVw
IC0gW3dlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgd2ViUHJvY2Vzc0lkZW50aWZpZXIo
KS50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIFdlYlNoYXJlZFdvcmtlclNl
cnZlciYgc2VydmVyKQorICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX3Nl
cnZlcihzZXJ2ZXIpCisgICAgLCBtX3JlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWlu
KQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjoiKTsKKyAgICBzZXJ2ZXIuYWRkQ29udGV4dENvbm5l
Y3Rpb24oKnRoaXMpOworfQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjp+V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpCit7CisgICAg
Q09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJ+V2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjoiKTsKKyAgICBpZiAobV9zZXJ2ZXIgJiYgbV9zZXJ2ZXItPmNvbnRl
eHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4oKSkgPT0g
dGhpcykKKyAgICAgICAgbV9zZXJ2ZXItPnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKCp0aGlzKTsK
K30KKworV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6d2ViUHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2Nvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKTsKK30KKworSVBDOjpDb25u
ZWN0aW9uJiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjppcGNDb25u
ZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKTsK
K30KKworSVBDOjpDb25uZWN0aW9uKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuICZp
cGNDb25uZWN0aW9uKCk7Cit9CisKK3VpbnQ2NF90IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gMDsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjpjb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpCit7CisgICAgQ09OVEVYVF9DT05O
RUNUSU9OX1JFTEVBU0VfTE9HKCJjb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZDoiKTsKKyAgICBt
X2Nvbm5lY3Rpb24uc2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25n
ZXJOZWVkZWQoKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2Vy
SWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMKQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygicG9zdEV4Y2Vw
dGlvblRvV29ya2VyT2JqZWN0OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hh
cmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBpZiAobV9zZXJ2ZXIpCisgICAg
ICAgIG1fc2VydmVyLT5wb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qoc2hhcmVkV29ya2VySWRl
bnRpZmllciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVS
TCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
bGF1bmNoU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25z
LCBjb25zdCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYgZmV0Y2hSZXN1bHQpCit7CisgICAg
Q09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJsYXVuY2hTaGFyZWRXb3JrZXI6IHNoYXJl
ZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUlu
dDY0KCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6TGF1bmNoU2hhcmVkV29ya2VyIHsgb3JpZ2luLCBzaGFyZWRXb3JrZXJJZGVu
dGlmaWVyLCB1cmwsIHdvcmtlck9wdGlvbnMsIGZldGNoUmVzdWx0IH0pOworfQorCit2b2lkIFdl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnBvc3RDb25uZWN0RXZlbnQo
V2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiBwb3J0LCBjb25zdCBTdHJpbmcm
IHNvdXJjZU9yaWdpbikKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coInBv
c3RDb25uZWN0RXZlbnQ6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRX
b3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6UG9zdENvbm5lY3RFdmVudCB7IHNoYXJl
ZFdvcmtlcklkZW50aWZpZXIsIHBvcnQsIHNvdXJjZU9yaWdpbiB9KTsKK30KKwordm9pZCBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp0ZXJtaW5hdGVTaGFyZWRXb3Jr
ZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVy
KQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygidGVybWluYXRlU2hhcmVk
V29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VySWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlRlcm1pbmF0ZVNoYXJlZFdvcmtlciB7IHNoYXJlZFdv
cmtlcklkZW50aWZpZXIgfSk7Cit9CisKKyN1bmRlZiBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFT
RV9MT0cKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtl
ci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mMDdmZjAzYTMzZDQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5j
bHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVk
V29ya2VySWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZWdpc3Ry
YWJsZURvbWFpbjsKK2NsYXNzIFNjcmlwdEJ1ZmZlcjsKK3N0cnVjdCBDbGllbnRPcmlnaW47Citz
dHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7CitzdHJ1Y3QgV29ya2VyT3B0aW9uczsKK30KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwor
Y2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyOworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwg
cHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK3B1YmxpYzoKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mLCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImKTsKKyAgICB+V2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOworCisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdDsKKyAgICBjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVybiBtX3Jl
Z2lzdHJhYmxlRG9tYWluOyB9CisgICAgSVBDOjpDb25uZWN0aW9uJiBpcGNDb25uZWN0aW9uKCkg
Y29uc3Q7CisKKyAgICB2b2lkIGxhdW5jaFNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBj
b25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiwgY29uc3QgV2ViQ29yZTo6V29ya2VyRmV0Y2hS
ZXN1bHQmKTsKKyAgICB2b2lkIHBvc3RDb25uZWN0RXZlbnQoV2ViQ29yZTo6U2hhcmVkV29ya2Vy
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYsIGNvbnN0
IFN0cmluZyYgc291cmNlT3JpZ2luKTsKKyAgICB2b2lkIHRlcm1pbmF0ZVNoYXJlZFdvcmtlcihX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKKworICAgIHZvaWQgY29ubmVjdGlvbklz
Tm9Mb25nZXJOZWVkZWQoKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDIG1l
c3NhZ2VzLgorICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNo
YXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCisg
ICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyLgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNl
bmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVy
RGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOworCisgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIG1fY29ubmVjdGlvbjsKKyAgICBXZWFrUHRyPFdlYlNoYXJlZFdvcmtlclNlcnZl
cj4gbV9zZXJ2ZXI7CisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJs
ZURvbWFpbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5h
ZTQ3YzEyMmNiYWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor
IyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKKyAgICBQb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmpl
Y3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVy
LCBTdHJpbmcgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
U3RyaW5nIHNvdXJjZVVSTCkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
TG9nZ2luZy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKaW5kZXggMWM0MmQw
NDBjMWE5Li5kZTMyZjgxNzE3MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
TG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCkBAIC05Nyw2
ICs5Nyw3IEBAIGV4dGVybiAiQyIgewogICAgIE0oU2VydmljZVdvcmtlcikgXAogICAgIE0oU2Vz
c2lvblN0YXRlKSBcCiAgICAgTShTaGFyZWREaXNwbGF5TGlzdHMpIFwKKyAgICBNKFNoYXJlZFdv
cmtlcikgXAogICAgIE0oU3RvcmFnZSkgXAogICAgIE0oU3RvcmFnZUFQSSkgXAogICAgIE0oVGV4
dElucHV0KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA3
ZWJmYTUxNmI1MDMuLjFhMjYxZTBiMTBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5CkBAIC0zMDMsMTAgKzMwMywxMyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3Rf
YmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlck9y
Q2xpZW50SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoJywK
KyAgICAgICAgJ1dlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXInLAorICAgICAgICAnV2Vi
Q29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpT
bGVlcERpc2FibGVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTb3VyY2VCdWZmZXJB
cHBlbmRNb2RlJywKICAgICAgICAgJ1dlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bkNsaWVudElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U3RvcmFnZVR5cGUnLAorICAg
ICAgICAnV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCcsCiAgICAgICAgICdXZWJDb3Jl
OjpVc2VyTWVkaWFSZXF1ZXN0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpXZWJMb2Nr
SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpXZWJTb2NrZXRJZGVudGlmaWVyJywKQEAg
LTg1MSw2ICs4NTQsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dl
YkNvcmU6OlRleHRDaGVja2luZ1R5cGUnOiBbJzxXZWJDb3JlL1RleHRDaGVja2luZy5oPiddLAog
ICAgICAgICAnV2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGEnOiBbJzxXZWJDb3JlL1RleHRJbmRp
Y2F0b3IuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGUnOiBbJzxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPiddLAorICAgICAgICAnV2Vi
Q29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCc6IFsnPFdlYkNvcmUvTWVzc2FnZVdpdGhNZXNz
YWdlUG9ydHMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlVzZWRMZWdhY3lUTFMnOiBbJzxXZWJD
b3JlL1Jlc291cmNlUmVzcG9uc2VCYXNlLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpWaWRlb1By
ZXNldERhdGEnOiBbJzxXZWJDb3JlL1ZpZGVvUHJlc2V0Lmg+J10sCiAgICAgICAgICdXZWJDb3Jl
OjpWaWV3cG9ydEF0dHJpYnV0ZXMnOiBbJzxXZWJDb3JlL1ZpZXdwb3J0QXJndW1lbnRzLmg+J10s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dAppbmRleCA0ZjBhMjM1NDQxYjIuLmQ5ZTYwY2U3ODk4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CkBAIC0xNDEsNiArMTQxLDEwIEBAIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dP
cmlnaW5TdG9yZS5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiAKK05l
dHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwCitOZXR3
b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5j
cHAKK05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcAorCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1T
dG9yYWdlTWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3Jh
Z2VIYW5kbGUuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFu
ZGxlUmVnaXN0cnkuY3BwCkBAIC03ODMsNiArNzg3LDkgQEAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
T3JpZ2luVGFibGUuY3BwCiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudC5jcHAKIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlk
ZXIuY3BwCitXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmNwcAorV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24uY3BwCitXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIu
Y3BwCiAKIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNw
cAogCkBAIC04ODUsMyArODkyLDcgQEAgUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5TWVzc2FnZVJlY2Vp
dmVyLmNwcAogU2VydmljZVdvcmtlckRvd25sb2FkVGFza01lc3NhZ2VSZWNlaXZlci5jcHAKIFdl
YkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeU1lc3NhZ2VSZWNlaXZlci5jcHAKIFdlYkxvY2tSZWdp
c3RyeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKK1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b25NZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggYTY3ODM2N2E3NzVh
Li4zMzAyMGJkNWMzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTI5LDcgKzUyOSw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6dGVybWluYXRlV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllciB3ZWJQcm9jCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVVu
cmVzcG9uc2l2ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXIgcHJvY2Vzc0lkZW50aWZpZXIpCiB7CiAgICAgaWYgKFJlZlB0ciBwcm9jZXNzID0gV2ViUHJv
Y2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihwcm9jZXNzSWRlbnRpZmllcikpIHsKLSAg
ICAgICAgcHJvY2Vzcy0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgICAgIHByb2Nlc3Mt
PmRpc2FibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtl
cik7CiAgICAgICAgIHByb2Nlc3MtPnJlcXVlc3RUZXJtaW5hdGlvbihQcm9jZXNzVGVybWluYXRp
b25SZWFzb246OkV4Y2VlZGVkQ1BVTGltaXQpOwogICAgIH0KIH0KQEAgLTE0MTUsMTYgKzE0MTUs
MjEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWREZXN0cm95V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkoV2ViVXNlckNvbnRlbnQKIH0KICNlbmRpZgogCit2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWlu
LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2hhcmVk
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUocmVnaXN0cmFi
bGVEb21haW4pLCBzZXNzaW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0
YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWdp
c3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKCp0aGlzLCBXVEZNb3ZlKHJlZ2lz
dHJhYmxlRG9tYWluKSwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBzZXNzaW9uSUQsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNo
U2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXVEZNb3ZlKHJl
Z2lzdHJhYmxlRG9tYWluKSwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBzZXNzaW9uSUQs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpzZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIGlmIChhdXRvKiBwcm9jZXNz
ID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihpZGVudGlmaWVyKSkKLSAg
ICAgICAgcHJvY2Vzcy0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgICAgIHByb2Nlc3Mt
PmRpc2FibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtl
cik7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
Q2xpZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRp
ZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVu
dGlmaWVyKQpAQCAtMTQ2MCw2ICsxNDY1LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
ZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJCiB9
CiAjZW5kaWYKIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzaGFyZWRXb3JrZXJDb250ZXh0
Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50
aWZpZXIpCit7CisgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nl
c3NGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIpKQorICAgICAgICBwcm9jZXNzLT5kaXNhYmxlV29y
a2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlcik7Cit9CisKIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRf
dCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVp
cmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHF1b3Rh
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSRUxFQVNFX0xPRyhTdG9yYWdlLCAiJXAg
LSBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlIiwgdGhpcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCmluZGV4IGE0ZTM2NDVlYmFhZS4uNjg0MWEzNGZlMDlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMzM0
LDYgKzMzNCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3Jv
dW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc0lkZW50aWZpZXIpOwogICAgIHZvaWQgZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9j
ZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRl
bnRpZmllcik7CiAjZW5kaWYKKyAgICB2b2lkIHNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9u
Tm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOworICAgIHZvaWQgZXN0
YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCB0ZXJtaW5hdGVXZWJQcm9jZXNzKFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDEy
ZDA2Y2ViZDYyYS4uMTU3NTdlZDlhMjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmlu
CkBAIC02MCw2ICs2MCw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5
UmVjZWl2ZXIgewogICAgIFN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikK
ICAgICBFbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQogI2VuZGlmCisgICAg
RXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCisgICAgU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQog
CiAgICAgU2V0V2ViUHJvY2Vzc0hhc1VwbG9hZHMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIg
cHJvY2Vzc0lELCBib29sIGhhc1VwbG9hZCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggZTQ5OTM1YzMyNWY2Li4xYWNiMzQ0NGFmYTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzY5MSwxMSArMzY5MSw5IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KQogICAgICAg
ICByZXR1cm47CiAgICAgbV91c2VyQWdlbnQgPSBXVEZNb3ZlKHVzZXJBZ2VudCk7CiAKLSNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgLy8gV2UgdXBkYXRlIHRoZSBzZXJ2aWNlIHdvcmtl
ciB0aGVyZSBhdCB0aGUgbW9tZW50IHRvIGJlIHN1cmUgd2UgdXNlIHZhbHVlcyB1c2VkIGJ5IGFj
dHVhbCB3ZWIgcGFnZXMuCiAgICAgLy8gRklYTUU6IFJlZmFjdG9yIHRoaXMgd2hlbiB3ZSBoYXZl
IGEgYmV0dGVyIFVzZXItQWdlbnQgc3RvcnkuCi0gICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCku
dXBkYXRlU2VydmljZVdvcmtlclVzZXJBZ2VudChtX3VzZXJBZ2VudCk7Ci0jZW5kaWYKKyAgICBw
cm9jZXNzKCkucHJvY2Vzc1Bvb2woKS51cGRhdGVXb3JrZXJVc2VyQWdlbnQobV91c2VyQWdlbnQp
OwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggYWZjMjNlZTUzZjEy
Li40YjE5YjBkMWQzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKQEAgLTUyOSw3ICs1MjksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRXZWJBdXRo
blByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1BybwogYm9vbCBX
ZWJQcm9jZXNzUG9vbDo6c191c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzID0gZmFsc2U7
CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3NQb29sOjplc3Rh
Ymxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdv
cmtQcm9jZXNzUHJveHkmIHByb3h5LCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9t
YWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2
aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQcm9jZXNz
UG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFs
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50
aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8qIHdlYnNpdGVEYXRhU3RvcmUgPSBX
ZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChzZXNzaW9uSUQp
OwogICAgIGlmICghd2Vic2l0ZURhdGFTdG9yZSkKQEAgLTU0Niw3ICs1NDYsNyBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzKE5ldAogICAgIGlmIChzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIpIHsK
ICAgICAgICAgLy8gVGhpcyBpcyBhIHNlcnZpY2Ugd29ya2VyIGZvciBhIHNlcnZpY2Ugd29ya2Vy
IHBhZ2Ugc28gd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgdXNlIHVzZSB0aGUgcGFnZSdzIFdlYlBy
b2Nlc3MgZm9yIHRoZSBzZXJ2aWNlIHdvcmtlci4KICAgICAgICAgaWYgKChzZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihzZXJ2
aWNlV29ya2VyUGFnZUlkZW50aWZpZXItPnByb2Nlc3NJZGVudGlmaWVyKCkpKSkgewotICAgICAg
ICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlU2VydmljZVdvcmtlcnMocHJv
Y2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2aWNlV29ya2Vy
cygpKTsKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVdvcmtl
cnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBwcm9jZXNzUG9v
bC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CiAgICAgICAg
ICAgICBpZiAoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKSB7
CiAgICAgICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLnJlbW92ZVBy
b2Nlc3MoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NDYWNoZTo6U2hvdWxk
U2h1dERvd25Qcm9jZXNzOjpObyk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFzZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpOwpAQCAtNTY0LDcgKzU2NCw3IEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBwcm9jZXNzLnB0cigpOwotICAg
ICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlU2VydmljZVdvcmtlcnMo
cHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2aWNlV29y
a2VycygpKTsKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVdv
cmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBwcm9jZXNz
UG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CiAKICAg
ICAgICAgICAgIGlmIChzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hl
KCkpIHsKICAgICAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hlKCkucmVt
b3ZlUHJvY2Vzcygqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0NhY2hlOjpT
aG91bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKE5ldAogICAgIH0KIAogICAgIGlmICghc2VydmljZVdvcmtlclByb2Nlc3NQcm94
eSkgewotICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3Jl
YXRlRm9yU2VydmljZVdvcmtlcnMoKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiAgeyBy
ZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIGF1dG8gbmV3
UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdlYlByb2Nl
c3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgKnByb2Nlc3NQb29sLCBSZWdpc3Ry
YWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CiAg
ICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBuZXdQcm9jZXNzUHJveHkucHRyKCk7
CiAKICAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElDKFNlcnZpY2VXb3Jr
ZXIsICJlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzIGNyZWF0aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nlcz0lcCwgUElE
PSVkKSIsIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOwpAQCAtNTg2LDIwICs1ODYsNzAgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyhOZXQKICAgICAgICAgcHJvY2Vzc1Bvb2wtPm1fcHJvY2Vzc2VzLmFwcGVuZChX
VEZNb3ZlKG5ld1Byb2Nlc3NQcm94eSkpOwogICAgIH0KIAotICAgIEFTU0VSVCghc2VydmljZVdv
cmtlclByb2Nlc3NlcygpLmNvbnRhaW5zKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KSk7Ci0g
ICAgc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2VydmljZVdvcmtlclByb2Nlc3NQcm94
eSk7CisgICAgd29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
KTsKIAotICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZpY2VXb3Jr
ZXJDb250ZXh0KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nl
c3NQb29sLT5tX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wt
Pm1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJsZURv
bWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Ci0gICAgaWYgKCFwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyVXNlckFnZW50Lmlz
TnVsbCgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRTZXJ2aWNlV29y
a2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQpOworICAg
IHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0
KHByb2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bvb2wtPm1fd29ya2Vy
UHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3JvdXAtPnBy
ZWZlcmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdl
SWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmICghcHJvY2Vz
c1Bvb2wtPm1fd29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQorICAgICAgICBzZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5LT5zZXRXb3JrZXJVc2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNl
ckFnZW50KTsKIH0KKyNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVGcm9tU2Vy
dmljZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCit2b2lkIFdlYlBy
b2Nlc3NQb29sOjpyZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYgcHJv
Y2VzcykKIHsKLSAgICBBU1NFUlQoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmNvbnRhaW5zKHBy
b2Nlc3MpKTsKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkucmVtb3ZlKHByb2Nlc3MpOwor
ICAgIEFTU0VSVCh3b3JrZXJQcm9jZXNzZXMoKS5jb250YWlucyhwcm9jZXNzKSk7CisgICAgd29y
a2VyUHJvY2Vzc2VzKCkucmVtb3ZlKHByb2Nlc3MpOworfQorCit2b2lkIFdlYlByb2Nlc3NQb29s
Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6
OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Npb25JRCk7CisgICAgaWYgKCF3ZWJz
aXRlRGF0YVN0b3JlKQorICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOworICAgIGlmICghcHJvY2Vzc1Bvb2xzKCkuc2l6
ZSgpKQorICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPFdlYlByb2Nlc3NQb29sPj4g
c2hhcmVkV29ya2VyUHJvY2Vzc1Bvb2woV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6OlByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCkuZ2V0KCkpKTsKKworICAgIC8vIEFyYml0cmFy
aWx5IGNob29zZSB0aGUgZmlyc3QgcHJvY2VzcyBwb29sIHRvIGhvc3QgdGhlIHNoYXJlZCB3b3Jr
ZXIgcHJvY2Vzcy4KKyAgICBhdXRvKiBwcm9jZXNzUG9vbCA9IHByb2Nlc3NQb29scygpWzBdOwor
ICAgIEFTU0VSVChwcm9jZXNzUG9vbCk7CisKKyAgICBXZWJQcm9jZXNzUHJveHkqIHNoYXJlZFdv
cmtlclByb2Nlc3NQcm94eSB7IG51bGxwdHIgfTsKKworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6
IHByb2Nlc3NQb29sLT5tX3Byb2Nlc3NlcykgeworICAgICAgICBpZiAocHJvY2Vzcy5wdHIoKSA9
PSBwcm9jZXNzUG9vbC0+bV9wcmV3YXJtZWRQcm9jZXNzLmdldCgpIHx8IHByb2Nlc3MtPmlzRHVt
bXlQcm9jZXNzUHJveHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoJnBy
b2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIGlmICghcHJvY2Vzcy0+aXNNYXRjaGluZ1JlZ2lzdHJhYmxl
RG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSA9IHByb2Nlc3MucHRyKCk7CisgICAgICAgIHNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6Oldv
cmtlclR5cGU6OlNoYXJlZFdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOworCisgICAgICAgIGlmIChzaGFyZWRXb3JrZXJQcm9j
ZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSkgeworICAgICAgICAgICAgcHJvY2Vzc1Bvb2wt
PndlYlByb2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nlc3MoKnNoYXJlZFdvcmtlclByb2Nlc3NQcm94
eSwgV2ViUHJvY2Vzc0NhY2hlOjpTaG91bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKKyAgICAgICAg
ICAgIEFTU0VSVCghc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkp
OworICAgICAgICB9CisKKyAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElD
KFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyByZXVzaW5nIGFuIGV4aXN0aW5nIHdlYiBwcm9jZXNzIChwcm9jZXNzPSVw
LCBQSUQ9JWQpIiwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LCBzaGFyZWRXb3JrZXJQcm9jZXNz
UHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBpZiAoIXNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSkgeworICAgICAgICBhdXRvIG5ld1Byb2Nl
c3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yV29ya2VycyhXZWJQcm9jZXNzUHJv
eHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURv
bWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAg
IHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSA9IG5ld1Byb2Nlc3NQcm94eS5wdHIoKTsKKworICAg
ICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoU2hhcmVkV29ya2VyLCAiZXN0
YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIGNyZWF0
aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nlc3M9JXAsIFBJRD0lZCkiLCBz
aGFyZWRXb3JrZXJQcm9jZXNzUHJveHksIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+cHJvY2Vz
c0lkZW50aWZpZXIoKSk7CisKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmluaXRpYWxpemVOZXdXZWJQ
cm9jZXNzKG5ld1Byb2Nlc3NQcm94eSwgd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIHByb2Nl
c3NQb29sLT5tX3Byb2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdQcm9jZXNzUHJveHkpKTsKKyAg
ICB9CisKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNoYXJlZFdvcmtlclByb2Nlc3NQcm94
eSk7CisKKyAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNoYXJlZFdvcmtl
ckNvbnRleHQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNzUG9vbC0+
bV93b3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVsdFBhZ2VH
cm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJsZURvbWFpbiwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFn
ZW50LmlzTnVsbCgpKQorICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPnNldFdvcmtl
clVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV93b3JrZXJVc2VyQWdlbnQpOwogfQotI2VuZGlmCiAK
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQo
KQogewpAQCAtMTAwMywxMCArMTA1Myw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5l
Y3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIAogICAgIG1fYmFja0ZvcndhcmRD
YWNoZS0+cmVtb3ZlRW50cmllc0ZvclByb2Nlc3MocHJvY2Vzcyk7CiAKLSNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCi0gICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkK
LSAgICAgICAgcmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7Ci0jZW5k
aWYKKyAgICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdXb3JrZXJzKCkpCisgICAgICAgIHJlbW92ZUZy
b21Xb3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7CiAKICAgICBzdGF0aWNfY2FzdDxXZWJDb250ZXh0
U3VwcGxlbWVudCo+KHN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpLT5w
cm9jZXNzRGlkQ2xvc2UoJnByb2Nlc3MpOwogCkBAIC0xMDY3LDEyICsxMTE1LDEyIEBAIFJlZjxX
ZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21h
aW4oV2Vic2l0ZURhdGFTdG9yCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1Vc2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIFdlYlByb2Nlc3NQb29sOjp1c2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKQorVXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllciBXZWJQcm9jZXNzUG9vbDo6dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
ZmllckZvcldvcmtlcnMoKQogewotICAgIGlmICghbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JT
ZXJ2aWNlV29ya2VyKQotICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclNlcnZpY2VX
b3JrZXIgPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKCk7CisgICAgaWYg
KCFtX3VzZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtlcnMpCisgICAgICAgIG1fdXNlckNvbnRl
bnRDb250cm9sbGVyRm9yV29ya2VycyA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojpj
cmVhdGUoKTsKIAotICAgIHJldHVybiBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclNlcnZpY2VX
b3JrZXItPmlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gbV91c2VyQ29udGVudENvbnRyb2xsZXJG
b3JXb3JrZXJzLT5pZGVudGlmaWVyKCk7CiB9CiAjZW5kaWYKIApAQCAtMTExOSwxNSArMTE2Nywx
MyBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdl
Q2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogCiAgICAgYXV0byBwYWdlID0gcHJvY2Vzcy0+
Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAK
LSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJQcmVm
ZXJlbmNlcykgewotICAgICAgICBtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA9IHBhZ2UtPnBy
ZWZlcmVuY2VzU3RvcmUoKTsKLSAgICAgICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2VyUHJvY2Vz
cyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSkKLSAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzLnVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKCptX3NlcnZpY2VXb3Jr
ZXJQcmVmZXJlbmNlcyk7CisgICAgaWYgKCFtX3dvcmtlclByZWZlcmVuY2VzKSB7CisgICAgICAg
IG1fd29ya2VyUHJlZmVyZW5jZXMgPSBwYWdlLT5wcmVmZXJlbmNlc1N0b3JlKCk7CisgICAgICAg
IGZvciAoYXV0byYgd29ya2VyUHJvY2VzcyA6IHdvcmtlclByb2Nlc3NlcygpKQorICAgICAgICAg
ICAgd29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKCptX3dvcmtlclBy
ZWZlcmVuY2VzKTsKICAgICB9CiAgICAgaWYgKHVzZXJDb250ZW50Q29udHJvbGxlcikKLSAgICAg
ICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyID0gdXNlckNvbnRlbnRD
b250cm9sbGVyOwotI2VuZGlmCisgICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29y
a2VycyA9IHVzZXJDb250ZW50Q29udHJvbGxlcjsKIAogICAgIGJvb2wgZW5hYmxlUHJvY2Vzc1N3
YXBPbkNyb3NzU2l0ZU5hdmlnYXRpb24gPSBwYWdlLT5wcmVmZXJlbmNlcygpLnByb2Nlc3NTd2Fw
T25Dcm9zc1NpdGVOYXZpZ2F0aW9uRW5hYmxlZCgpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CkBAIC0xMTUwLDE2ICsxMTk2LDE0IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29s
OjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAgICAgcmV0
dXJuIHBhZ2U7CiB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nl
c3NQb29sOjp1cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0
cmluZyYgdXNlckFnZW50KQogewotICAgIGlmIChtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQgPT0g
dXNlckFnZW50KQorICAgIGlmIChtX3dvcmtlclVzZXJBZ2VudCA9PSB1c2VyQWdlbnQpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQgPSB1c2VyQWdlbnQ7Ci0g
ICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNz
ZXMoKSkKLSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3Muc2V0U2VydmljZVdvcmtlclVzZXJB
Z2VudChtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQpOworICAgIG1fd29ya2VyVXNlckFnZW50ID0g
dXNlckFnZW50OworICAgIGZvciAoYXV0byYgd29ya2VyUHJvY2VzcyA6IHdvcmtlclByb2Nlc3Nl
cygpKQorICAgICAgICB3b3JrZXJQcm9jZXNzLnNldFdvcmtlclVzZXJBZ2VudChtX3dvcmtlclVz
ZXJBZ2VudCk7CiB9Ci0jZW5kaWYKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUJlZ2luVXNp
bmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJzaXRl
RGF0YVN0b3JlJiBkYXRhU3RvcmUpCiB7CkBAIC0xNTM4LDggKzE1ODIsMTMgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6dGVybWluYXRlU2VydmljZVdvcmtlcnMoKQogewogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07Ci0gICAgd2hpbGUg
KHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb21wdXRlU2l6ZSgpKQotICAgICAgICBzZXJ2aWNl
V29ya2VyUHJvY2Vzc2VzKCkuYmVnaW4oKS0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAg
VmVjdG9yPFJlZjxXZWJQcm9jZXNzUHJveHk+PiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOworICAg
IHdvcmtlclByb2Nlc3NlcygpLmZvckVhY2goWyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICAgICAg
aWYgKHByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKKyAgICAgICAgICAgIHNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMuYXBwZW5kKHByb2Nlc3MpOworICAgIH0pOworICAgIGZvciAoYXV0
byYgc2VydmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKQorICAgICAg
ICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpX
b3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgogfQogCkBAIC0xNzY3LDEzICsxODE2
LDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcG9ydFdlYkNvbnRlbnRDUFVUaW1lKFNlY29u
ZHMgY3B1VGltZSwgdWludDY0X3QgYWN0aXZpdHlTCiAjZW5kaWYKIH0KIAotI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKLVdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIFdlYlByb2Nlc3NQ
b29sOjpzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkKK1dlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94
eT4mIFdlYlByb2Nlc3NQb29sOjp3b3JrZXJQcm9jZXNzZXMoKQogewogICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+PiBwcm9jZXNzZXM7CiAgICAg
cmV0dXJuIHByb2Nlc3NlczsKIH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRh
dGVQcm9jZXNzQXNzZXJ0aW9ucygpCiB7CkBAIC0xNzg1LDIwICsxODMyLDI1IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkKICAgICBpZiAoYXV0byogZ3B1
UHJvY2VzcyA9IEdQVVByb2Nlc3NQcm94eTo6c2luZ2xldG9uSWZDcmVhdGVkKCkpCiAgICAgICAg
IGdwdVByb2Nlc3MtPnVwZGF0ZVByb2Nlc3NBc3NlcnRpb24oKTsKICNlbmRpZgotI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKKwogICAgIC8vIENoZWNrIG9uIG5leHQgcnVuIGxvb3Agc2luY2Ug
dGhlIHdlYiBwcm9jZXNzIHByb3h5IHRva2VucyBhcmUgcHJvYmFibHkgYmVpbmcgdXBkYXRlZC4K
ICAgICBjYWxsT25NYWluUnVuTG9vcChbXSB7Ci0gICAgICAgIGZvciAoYXV0byYgc2VydmljZVdv
cmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkpCi0gICAgICAgICAgICBzZXJ2
aWNlV29ya2VyUHJvY2Vzcy51cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOwot
ICAgIH0pOworICAgICAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFtdKGF1dG8mIHdvcmtl
clByb2Nlc3MpIHsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgICAgICAgICBpZiAo
d29ya2VyUHJvY2Vzcy5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQorICAgICAgICAgICAgICAg
IHdvcmtlclByb2Nlc3MudXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXZWJQcm9jZXNzUHJv
eHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogI2VuZGlmCisgICAgICAgICAgICBpZiAo
d29ya2VyUHJvY2Vzcy5pc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkpCisgICAgICAgICAgICAgICAg
d29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdlYlByb2Nlc3NQcm94
eTo6V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAK
IGJvb2wgV2ViUHJvY2Vzc1Bvb2w6OmlzU2VydmljZVdvcmtlclBhZ2VJRChXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAg
ICAgLy8gRklYTUU6IFRoaXMgaXMgaW5lZmZpY2llbnQuCi0gICAgcmV0dXJuIFdURjo6YW55T2Yo
c2VydmljZVdvcmtlclByb2Nlc3NlcygpLCBbcGFnZUlEXShhdXRvJiBwcm9jZXNzKSB7CisgICAg
cmV0dXJuIFdURjo6YW55T2Yod29ya2VyUHJvY2Vzc2VzKCksIFtwYWdlSURdKGF1dG8mIHByb2Nl
c3MpIHsKICAgICAgICAgcmV0dXJuIHByb2Nlc3MuaGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShw
YWdlSUQpOwogICAgIH0pOwogI2VuZGlmCkBAIC0yMTI0LDE2ICsyMTc2LDI2IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnNldFVzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoYm9vbCB1c2VT
ZXBhcmF0ZVNlcnZpY2VXCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCitzaXplX3Qg
V2ViUHJvY2Vzc1Bvb2w6OnNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25zdAoreworICAg
IHVuc2lnbmVkIGNvdW50ID0gMDsKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFsmXShh
dXRvJiBwcm9jZXNzKSB7CisgICAgICAgIGlmIChwcm9jZXNzLmlzUnVubmluZ1NlcnZpY2VXb3Jr
ZXJzKCkpCisgICAgICAgICAgICArK2NvdW50OworICAgIH0pOworICAgIHJldHVybiBjb3VudDsK
K30KKwogYm9vbCBXZWJQcm9jZXNzUG9vbDo6aGFzU2VydmljZVdvcmtlckZvcmVncm91bmRBY3Rp
dml0eUZvclRlc3RpbmcoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6OmFueU9mKHNlcnZpY2VX
b3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2VzcykgeworICAgIHJldHVybiBXVEY6OmFu
eU9mKHdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVy
biBwcm9jZXNzLmhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCk7
CiAgICAgfSk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6Omhhc1NlcnZpY2VXb3JrZXJCYWNr
Z3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjphbnlP
ZihzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICByZXR1
cm4gV1RGOjphbnlPZih3b3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2VzcykgewogICAg
ICAgICByZXR1cm4gcHJvY2Vzcy5oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9y
VGVzdGluZygpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmgKaW5kZXggZWI2NmQ4OTQ5MGRmLi5lNzBiNmY0MjlmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMzc0LDE3ICszNzQsMjAgQEAgcHVibGljOgog
ICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NEaWRUZXJtaW5hdGUoTmV0d29ya1Byb2Nlc3NQcm94eSYs
IE5ldHdvcmtQcm9jZXNzUHJveHk6OlRlcm1pbmF0aW9uUmVhc29uKTsKIAogICAgIGJvb2wgaXNT
ZXJ2aWNlV29ya2VyUGFnZUlEKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpIGNvbnN0OworICAgIHZv
aWQgcmVtb3ZlRnJvbVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmKTsKKwogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkm
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZp
ZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZv
aWQgcmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5Jik7Ci0g
ICAgc2l6ZV90IHNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25zdCB7IHJldHVybiBzZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzKCkuY29tcHV0ZVNpemUoKTsgfQotICAgIHZvaWQgdXBkYXRlU2Vy
dmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCk7Ci0gICAgVXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllciB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
Rm9yU2VydmljZVdvcmtlcnMoKTsKKyAgICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgc2l6ZV90IHNlcnZpY2VXb3JrZXJQcm94
aWVzQ291bnQoKSBjb25zdDsKKyAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCk7CiAgICAgYm9vbCBoYXNT
ZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0OwogICAgIGJv
b2wgaGFzU2VydmljZVdvcmtlckJhY2tncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdDsK
ICNlbmRpZgogICAgIHZvaWQgc2VydmljZVdvcmtlclByb2Nlc3NDcmFzaGVkKFdlYlByb2Nlc3NQ
cm94eSYpOwogCisgICAgdm9pZCB1cGRhdGVXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQpOworICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQ
QUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKwogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgpIGNvbnN0Owog
I2VuZGlmCkBAIC02MTgsMTMgKzYyMSwxMSBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDxQQUw6
OlNlc3Npb25JRCwgV2Vha1B0cjxXZWJQcm9jZXNzUHJveHk+PiBtX2R1bW15UHJvY2Vzc1Byb3hp
ZXM7IC8vIExpZ2h0d2VpZ2h0IFdlYlByb2Nlc3NQcm94eSBvYmplY3RzIHdpdGhvdXQgYmFja2lu
ZyBwcm9jZXNzLgogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHN0YXRpYyBXZWFr
SGFzaFNldDxXZWJQcm9jZXNzUHJveHk+JiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCk7Ci0gICAg
Ym9vbCBtX3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24geyBmYWxzZSB9
OwotICAgIFN0cmluZyBtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQ7Ci0gICAgc3RkOjpvcHRpb25h
bDxXZWJQcmVmZXJlbmNlc1N0b3JlPiBtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlczsKLSAgICBS
ZWZQdHI8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+IG1fdXNlckNvbnRlbnRDb250cm9s
bGVyRm9yU2VydmljZVdvcmtlcjsKLSNlbmRpZgorICAgIHN0YXRpYyBXZWFrSGFzaFNldDxXZWJQ
cm9jZXNzUHJveHk+JiB3b3JrZXJQcm9jZXNzZXMoKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
UHJlZmVyZW5jZXNTdG9yZT4gbV93b3JrZXJQcmVmZXJlbmNlczsKKyAgICBSZWZQdHI8V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk+IG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2Vy
czsKKyAgICBTdHJpbmcgbV93b3JrZXJVc2VyQWdlbnQ7CiAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAgICAgUmVmUHRyPEdQVVByb2Nlc3NQcm94eT4gbV9ncHVQcm9jZXNzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggY2FjMzY3ZjExMTlmLi41
Y2Y4NmNjNzg2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSAi
V2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgpAQCAtMTgyLDExICsxODMsMTEgQEAgUmVmPFdlYlBy
b2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nl
c3NQb29sLCBXZWJzaXQKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLVJlZjxXZWJQ
cm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMoV2Vi
UHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxl
RG9tYWluLCBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQorUmVmPFdlYlByb2Nl
c3NQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdvcmtlclR5cGUgd29y
a2VyVHlwZSwgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiYm
IHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQog
ewogICAgIGF1dG8gcHJveHkgPSBhZG9wdFJlZigqbmV3IFdlYlByb2Nlc3NQcm94eShwcm9jZXNz
UG9vbCwgJndlYnNpdGVEYXRhU3RvcmUsIElzUHJld2FybWVkOjpObywgQ3Jvc3NPcmlnaW5Nb2Rl
OjpTaGFyZWQsIENhcHRpdmVQb3J0YWxNb2RlOjpEaXNhYmxlZCkpOwogICAgIHByb3h5LT5tX3Jl
Z2lzdHJhYmxlRG9tYWluID0gV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgcHJveHkt
PmVuYWJsZVNlcnZpY2VXb3JrZXJzKHByb2Nlc3NQb29sLnVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXJGb3JTZXJ2aWNlV29ya2VycygpKTsKKyAgICBwcm94eS0+ZW5hYmxlV29ya2Vycyh3
b3JrZXJUeXBlLCBwcm9jZXNzUG9vbC51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9y
V29ya2VycygpKTsKICAgICBwcm94eS0+Y29ubmVjdCgpOwogICAgIHJldHVybiBwcm94eTsKIH0K
QEAgLTk5NSwxMCArOTk2LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJl
c3BvbnNpdmUoKQogICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBpc1Jlc3BvbnNpdmVDYWxsYmFj
a3MpCiAgICAgICAgIGNhbGxiYWNrKGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUpOwogCi0gICAgLy8g
SWYgdGhlIHdlYiBwcm9jZXNzIGJlY29tZXMgdW5yZXNwb25zaXZlIGFuZCBvbmx5IHJ1bnMgc2Vy
dmljZSB3b3JrZXJzLCBraWxsIGl0IG91cnNlbHZlcyBzaW5jZSB0aGVyZSBhcmUgbm8gbmF0aXZl
IGNsaWVudHMgdG8gZG8gaXQuCi0gICAgaWYgKGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkgJiYg
bV9wYWdlTWFwLmlzRW1wdHkoKSkgewotICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9M
T0dfRVJST1IoUGVyZm9ybWFuY2VMb2dnaW5nLCAiZGlkQmVjb21lVW5yZXNwb25zaXZlOiBUZXJt
aW5hdGluZyBzZXJ2aWNlIHdvcmtlci1vbmx5IHdlYiBwcm9jZXNzIGJlY2F1c2UgaXQgaXMgdW5y
ZXNwb25zaXZlIik7Ci0gICAgICAgIGRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgIC8vIElm
IHRoZSB3ZWIgcHJvY2VzcyBiZWNvbWVzIHVucmVzcG9uc2l2ZSBhbmQgb25seSBydW5zIHNlcnZp
Y2Uvc2hhcmVkIHdvcmtlcnMsIGtpbGwgaXQgb3Vyc2VsdmVzIHNpbmNlIHRoZXJlIGFyZSBubyBu
YXRpdmUgY2xpZW50cyB0byBkbyBpdC4KKyAgICBpZiAoaXNSdW5uaW5nV29ya2VycygpICYmIG1f
cGFnZU1hcC5pc0VtcHR5KCkpIHsKKyAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9H
X0VSUk9SKFBlcmZvcm1hbmNlTG9nZ2luZywgImRpZEJlY29tZVVucmVzcG9uc2l2ZTogVGVybWlu
YXRpbmcgd29ya2VyLW9ubHkgd2ViIHByb2Nlc3MgYmVjYXVzZSBpdCBpcyB1bnJlc3BvbnNpdmUi
KTsKKyAgICAgICAgZGlzYWJsZVdvcmtlcnMoeyBXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBX
b3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgfSk7CiAgICAgICAgIHRlcm1pbmF0ZSgpOwogICAgIH0K
IH0KQEAgLTE2OTQsOCArMTY5NSw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZShjb25zdCBVUkwmIHVybCkKICAgICBhdXRvIHJlZ2lz
dHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfTsKICAgICBp
ZiAobV9yZWdpc3RyYWJsZURvbWFpbiAmJiAqbV9yZWdpc3RyYWJsZURvbWFpbiAhPSByZWdpc3Ry
YWJsZURvbWFpbikgewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICAgICAgZGlzYWJs
ZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgICAgIGRpc2FibGVXb3JrZXJzKFdvcmtlclR5cGU6OlNl
cnZpY2VXb3JrZXIpOwogI2VuZGlmCisKICAgICAgICAgLy8gTnVsbCBvdXQgcmVnaXN0cmFibGUg
ZG9tYWluIHNpbmNlIHRoaXMgcHJvY2VzcyBoYXMgbm93IGJlZW4gdXNlZCBmb3Igc2V2ZXJhbCBk
b21haW5zLgogICAgICAgICBtX3JlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4geyB9OwogICAgICAgICByZXR1cm47CkBAIC0xODY2LDYwICsxODY4LDg1IEBAIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlJiBzCiB7CiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9H
KExvYWRpbmcsICJlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dDogU3RhcnRlZCIpOwogICAg
IG1hcmtQcm9jZXNzQXNSZWNlbnRseVVzZWQoKTsKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRlZmF1bHRQYWdlR3JvdXAoKS5wYWdl
R3JvdXBJRCgpLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VQ
cm94eUlELCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VJRCwg
c3RvcmUsIHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIG1f
c2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5pbml0aWFsaXphdGlvbkRhdGEgfSwgW3RoaXMsIHdl
YWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bvb2woKS5kZWZhdWx0UGFnZUdyb3VwKCkucGFn
ZUdyb3VwSUQoKSwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPndvcmtlclBhZ2VQcm94eUlE
LCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+d29ya2VyUGFnZUlELCBzdG9yZSwgcmVnaXN0
cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgbV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb24tPmluaXRpYWxpemF0aW9uRGF0YSB9LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFr
UHRyIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAgICAgICAgICAgV0VC
UFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJlc3RhYmxpc2hTZXJ2aWNlV29ya2Vy
Q29udGV4dDogRmluaXNoZWQiKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9
LCAwKTsKIH0KKyNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0U2VydmljZVdvcmtl
clVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpzZXRXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiB7Ci0gICAgQVNT
RVJUKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U2V0VXNlckFnZW50IHsgdXNlckFnZW50IH0sIDAp
OworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb24pCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2VyQWdlbnQgfSwgMCk7CisjZW5kaWYKKyAgICBpZiAo
bV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbikKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2VyQWdl
bnQgfSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29ya2Vy
UHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKK3ZvaWQg
V2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogewotICAgIEFTU0VSVChtX3NlcnZpY2VXb3JrZXJJbmZv
cm1hdGlvbik7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OlVwZGF0ZVByZWZlcmVuY2VzU3RvcmUgeyBzdG9yZSB9LCAwKTsKKyNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCisgICAgaWYgKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQorICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlUHJl
ZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDApOworI2VuZGlmCisgICAgaWYgKG1fc2hhcmVkV29y
a2VySW5mb3JtYXRpb24pCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0s
IDApOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlU2VydmljZVdvcmtlclByb2Nl
c3NBc3NlcnRpb24oKQorLy8gRklYTUU6IENsaWVudHMgZG8gbm90IHByb3Blcmx5IGdldCBwb3B1
bGF0ZWQgaW4gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbi4KK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5
Ojp1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGUgd29ya2VyVHlwZSkKIHsK
LSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRh
dGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbjoiKTsKLSAgICBBU1NFUlQobV9zZXJ2aWNl
V29ya2VySW5mb3JtYXRpb24pOwotICAgIGlmICghbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24p
CisgICAgYXV0byYgd29ya2VySW5mb3JtYXRpb24gPSB3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6
OlNoYXJlZFdvcmtlciA/IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gOiBtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbjsKKyAgICBBU1NFUlQod29ya2VySW5mb3JtYXRpb24pOworICAgIGlmICgh
d29ya2VySW5mb3JtYXRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgc2hvdWxkVGFr
ZUZvcmVncm91bmRBY3Rpdml0eSA9IFdURjo6YW55T2YobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24tPmNsaWVudFByb2Nlc3NlcywgWyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICBXRUJQUk9DRVNT
UFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVXb3JrZXJQcm9jZXNz
QXNzZXJ0aW9uOiB3b3JrZXJUeXBlPSV7cHVibGljfXMiLCB3b3JrZXJUeXBlID09IFdvcmtlclR5
cGU6OlNoYXJlZFdvcmtlciA/ICJzaGFyZWQiIDogInNlcnZpY2UiKTsKKworICAgIGJvb2wgc2hv
dWxkVGFrZUZvcmVncm91bmRBY3Rpdml0eSA9IFdURjo6YW55T2Yod29ya2VySW5mb3JtYXRpb24t
PmNsaWVudFByb2Nlc3NlcywgWyZdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuICZw
cm9jZXNzICE9IHRoaXMgJiYgISFwcm9jZXNzLm1fZm9yZWdyb3VuZFRva2VuOwogICAgIH0pOwog
ICAgIGlmIChzaG91bGRUYWtlRm9yZWdyb3VuZEFjdGl2aXR5KSB7Ci0gICAgICAgIGlmICghUHJv
Y2Vzc1Rocm90dGxlcjo6aXNWYWxpZEZvcmVncm91bmRBY3Rpdml0eShtX3NlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbi0+YWN0aXZpdHkpKQotICAgICAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3Jt
YXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuZm9yZWdyb3VuZEFjdGl2aXR5KCJTZXJ2aWNl
IFdvcmtlciBmb3IgZm9yZWdyb3VuZCB2aWV3KHMpIl9zKTsKKyAgICAgICAgaWYgKCFQcm9jZXNz
VGhyb3R0bGVyOjppc1ZhbGlkRm9yZWdyb3VuZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0aW9uLT5h
Y3Rpdml0eSkpCisgICAgICAgICAgICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Ro
cm90dGxlci5mb3JlZ3JvdW5kQWN0aXZpdHkoIldvcmtlciBmb3IgZm9yZWdyb3VuZCB2aWV3KHMp
Il9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGJvb2wgc2hvdWxkVGFrZUJhY2tn
cm91bmRBY3Rpdml0eSA9IFdURjo6YW55T2YobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNs
aWVudFByb2Nlc3NlcywgWyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICBib29sIHNob3VsZFRha2VC
YWNrZ3JvdW5kQWN0aXZpdHkgPSBXVEY6OmFueU9mKHdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQ
cm9jZXNzZXMsIFsmXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiAmcHJvY2VzcyAh
PSB0aGlzICYmICEhcHJvY2Vzcy5tX2JhY2tncm91bmRUb2tlbjsKICAgICB9KTsKICAgICBpZiAo
c2hvdWxkVGFrZUJhY2tncm91bmRBY3Rpdml0eSkgewotICAgICAgICBpZiAoIVByb2Nlc3NUaHJv
dHRsZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24tPmFjdGl2aXR5KSkKLSAgICAgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5h
Y3Rpdml0eSA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIg
Zm9yIGJhY2tncm91bmQgdmlldyhzKSJfcyk7CisgICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxl
cjo6aXNWYWxpZEJhY2tncm91bmRBY3Rpdml0eSh3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkp
KQorICAgICAgICAgICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIu
YmFja2dyb3VuZEFjdGl2aXR5KCJXb3JrZXIgZm9yIGJhY2tncm91bmQgdmlldyhzKSJfcyk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9oYXNTZXJ2aWNlV29ya2VyQmFja2dy
b3VuZFByb2Nlc3NpbmcpIHsKKyAgICBpZiAod29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTZXJ2
aWNlV29ya2VyICYmIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKSB7CiAg
ICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlNl
cnZpY2UgV29ya2VyIGZvciBiYWNrZ3JvdW5kIHByb2Nlc3NpbmciKTsKLSAgICAgICAgaWYgKCFQ
cm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5KG1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCi0gICAgICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZv
cm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIlNlcnZp
Y2UgV29ya2VyIGZvciBiYWNrZ3JvdW5kIHByb2Nlc3NpbmciX3MpOworICAgICAgICBpZiAoIVBy
b2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkod29ya2VySW5mb3JtYXRp
b24tPmFjdGl2aXR5KSkKKyAgICAgICAgICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9
IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tn
cm91bmQgcHJvY2Vzc2luZyJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Nl
cnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBudWxscHRyOworICAgIHdvcmtlcklu
Zm9ybWF0aW9uLT5hY3Rpdml0eSA9IG51bGxwdHI7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5
Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
IHN0b3JlLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBXRUJQUk9D
RVNTUFJPWFlfUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2Vy
Q29udGV4dDogU3RhcnRlZCIpOworICAgIG1hcmtQcm9jZXNzQXNSZWNlbnRseVVzZWQoKTsKKyAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFNoYXJl
ZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHByb2Nlc3NQb29sKCku
ZGVmYXVsdFBhZ2VHcm91cCgpLnBhZ2VHcm91cElEKCksIG1fc2hhcmVkV29ya2VySW5mb3JtYXRp
b24tPndvcmtlclBhZ2VQcm94eUlELCBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uLT53b3JrZXJQ
YWdlSUQsIHN0b3JlLCByZWdpc3RyYWJsZURvbWFpbiwgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlv
bi0+aW5pdGlhbGl6YXRpb25EYXRhIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhp
cyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgeworICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICBXRUJQUk9DRVNTUFJP
WFlfUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4
dDogRmluaXNoZWQiKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9LCAwKTsK
K30KKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKwogdm9pZCBXZWJQcm9jZXNzUHJveHk6
OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94
eSkKIHsKICAgICBpZiAoIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQpAQCAtMTkyNyw3ICsx
OTU0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKIAogICAgIFdFQlBST0NFU1NQUk9YWV9S
RUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAicmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJv
Y2VzczogY2xpZW50UHJvY2Vzcz0lcCwgY2xpZW50UElEPSVkIiwgJnByb3h5LCBwcm94eS5wcm9j
ZXNzSWRlbnRpZmllcigpKTsKICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50
UHJvY2Vzc2VzLmFkZChwcm94eSk7Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3Nl
cnRpb24oKTsKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6OlNl
cnZpY2VXb3JrZXIpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dW5yZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCkBAIC0xOTM3LDcg
KzE5NjQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveAogCiAgICAgV0VCUFJPQ0VTU1BST1hZ
X1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJ1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dFByb2Nlc3M6IGNsaWVudFByb2Nlc3M9JXAsIGNsaWVudFBJRD0lZCIsICZwcm94eSwgcHJveHku
cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNs
aWVudFByb2Nlc3Nlcy5yZW1vdmUocHJveHkpOwotICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9j
ZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJU
eXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KIAogYm9vbCBXZWJQcm9jZXNzUHJveHk6Omhhc1NlcnZp
Y2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKQEAgLTE5NTcsNyAr
MTk4NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3Jv
dW5kUHJvY2Vzc2luZygpCiAKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vz
c1N1c3BlbnNpb24sICJzdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyIpOwog
ICAgIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nID0gdHJ1ZTsKLSAgICB1
cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOworICAgIHVwZGF0ZVdvcmtlclBy
b2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAKIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjplbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoKQpAQCAt
MTk2NywyMyArMTk5NCwzOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5kU2VydmljZVdvcmtl
ckJhY2tncm91bmRQcm9jZXNzaW5nKCkKIAogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xP
RyhQcm9jZXNzU3VzcGVuc2lvbiwgImVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2lu
ZyIpOwogICAgIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nID0gZmFsc2U7
Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKKyAgICB1cGRhdGVX
b3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogfQogI2Vu
ZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRp
c2FibGVTZXJ2aWNlV29ya2VycygpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlzYWJsZVdvcmtl
cnMoT3B0aW9uU2V0PFdvcmtlclR5cGU+IHdvcmtlclR5cGUpCiB7Ci0gICAgaWYgKCFtX3NlcnZp
Y2VXb3JrZXJJbmZvcm1hdGlvbikKKyAgICBBU1NFUlQoIXdvcmtlclR5cGUuaXNFbXB0eSgpKTsK
KworICAgIGJvb2wgZGlkQ2hhbmdlID0gZmFsc2U7CisgICAgaWYgKHdvcmtlclR5cGUuY29udGFp
bnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikgJiYgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24pIHsKKyAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gPSB7IH07CisgICAgICAg
IGRpZENoYW5nZSA9IHRydWU7CisgICAgfQorICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdv
cmtlclR5cGU6OlNoYXJlZFdvcmtlcikgJiYgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbikgewor
ICAgICAgICBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uID0geyB9OworICAgICAgICBkaWRDaGFu
Z2UgPSB0cnVlOworICAgIH0KKyAgICBpZiAoIWRpZENoYW5nZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJkaXNhYmxl
U2VydmljZVdvcmtlcnM6Iik7Ci0gICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gPSB7IH07
CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJkaXNhYmxlV29ya2Vy
czogRGlzYWJsaW5nIHdvcmtlcnMgKFNoYXJlZFdvcmtlcnM9JWQsIFNlcnZpY2VXb3JrZXJzPSVk
KSIsIHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSwgd29ya2Vy
VHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSk7CisKICAgICB1cGRhdGVC
YWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwogCisgICAgaWYgKCFpc1J1bm5pbmdXb3Jr
ZXJzKCkpCisgICAgICAgIHByb2Nlc3NQb29sKCkucmVtb3ZlRnJvbVdvcmtlclByb2Nlc3Nlcygq
dGhpcyk7CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgcHJvY2Vzc1Bvb2woKS5y
ZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcygqdGhpcyk7Ci0gICAgc2VuZChNZXNzYWdl
czo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNsb3NlIHsgfSwgMCk7CisgICAgaWYg
KHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikpCisgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9zZSB7IH0s
IDApOwogI2VuZGlmCisgICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2hh
cmVkV29ya2VyKSkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9zZSB7IH0sIDApOwogCiAgICAgbWF5YmVTaHV0RG93bigp
OwogfQpAQCAtMjAwNCwxMSArMjA0NywxMyBAQCBzdGF0aWMgVmVjdG9yPHN0ZDo6cGFpcjxXZWJD
b21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEsIFVSTD4+IGNvbnRlbnRSdWxlTGlzdHNGcgogfQog
I2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVTZXJ2aWNlV29ya2Vycyhjb25z
dCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJiB1c2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVdvcmtlcnMoV29ya2VyVHlw
ZSB3b3JrZXJUeXBlLCBjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJiB1c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKQogewotICAgIEFTU0VSVCghbV9zZXJ2aWNlV29y
a2VySW5mb3JtYXRpb24pOwotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNl
V29ya2VyLCAiZW5hYmxlU2VydmljZVdvcmtlcnM6Iik7Ci0gICAgbV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb24gPSBTZXJ2aWNlV29ya2VySW5mb3JtYXRpb24geworICAgIFdFQlBST0NFU1NQUk9Y
WV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiZW5hYmxlV29ya2Vyczogd29ya2VyVHlwZT0l
dSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih3b3JrZXJUeXBlKSk7CisgICAgYXV0byYgd29ya2Vy
SW5mb3JtYXRpb24gPSB3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/IG1f
c2hhcmVkV29ya2VySW5mb3JtYXRpb24gOiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsKKyAg
ICBBU1NFUlQoIXdvcmtlckluZm9ybWF0aW9uKTsKKworICAgIHdvcmtlckluZm9ybWF0aW9uID0g
V29ya2VySW5mb3JtYXRpb24gewogICAgICAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyOjpnZW5l
cmF0ZSgpLAogICAgICAgICBQYWdlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwKICAgICAgICAgU2Vy
dmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSB7CkBAIC0yMDIxLDkgKzIwNjYsOCBAQCB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlU2VydmljZVdvcmtlcnMoY29uc3QgVXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllcgogICAgICAgICB7IH0KICAgICB9OwogICAgIHVwZGF0ZUJhY2tn
cm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQot
ICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKKworICAg
IHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24od29ya2VyVHlwZSk7CiB9CiAKIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVTbGVlcERpc2FibGVyKFNsZWVwRGlzYWJsZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcmVhc29uLCBib29sIGRpc3BsYXkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGY1MTRiOTkxNmFkNC4u
MTkyZDVkMmI2ZjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aApAQCAtMTM2LDkgKzEzNiwxMyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZExh
dW5jaFByb2Nlc3MgOiBib29sIHsgTm8sIFllcyB9OwogICAgIGVudW0gY2xhc3MgQ2FwdGl2ZVBv
cnRhbE1vZGUgOiBib29sIHsgRGlzYWJsZWQsIEVuYWJsZWQgfTsKKyAgICBlbnVtIGNsYXNzIFdv
cmtlclR5cGUgOiB1aW50MzJfdCB7CisgICAgICAgIFNlcnZpY2VXb3JrZXIgPSAxIDw8IDAsCisg
ICAgICAgIFNoYXJlZFdvcmtlciA9IDEgPDwgMQorICAgIH07CiAKICAgICBzdGF0aWMgUmVmPFdl
YlByb2Nlc3NQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sJiwgV2Vic2l0ZURhdGFTdG9yZSos
IENhcHRpdmVQb3J0YWxNb2RlLCBJc1ByZXdhcm1lZCwgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2Rl
ID0gV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQsIFNob3VsZExhdW5jaFByb2Nlc3Mg
PSBTaG91bGRMYXVuY2hQcm9jZXNzOjpZZXMpOwotICAgIHN0YXRpYyBSZWY8V2ViUHJvY2Vzc1By
b3h5PiBjcmVhdGVGb3JTZXJ2aWNlV29ya2VycyhXZWJQcm9jZXNzUG9vbCYsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKKyAgICBzdGF0aWMgUmVmPFdl
YlByb2Nlc3NQcm94eT4gY3JlYXRlRm9yV29ya2VycyhXb3JrZXJUeXBlLCBXZWJQcm9jZXNzUG9v
bCYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKIAog
ICAgIH5XZWJQcm9jZXNzUHJveHkoKTsKIApAQCAtMTYxLDggKzE2NSw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldElzSW5Qcm9jZXNzQ2FjaGUoYm9vbCwgV2lsbFNodXREb3duID0gV2lsbFNodXRE
b3duOjpObyk7CiAgICAgYm9vbCBpc0luUHJvY2Vzc0NhY2hlKCkgY29uc3QgeyByZXR1cm4gbV9p
c0luUHJvY2Vzc0NhY2hlOyB9CiAKLSAgICB2b2lkIGVuYWJsZVNlcnZpY2VXb3JrZXJzKGNvbnN0
IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImKTsKLSAgICB2b2lkIGRpc2FibGVTZXJ2
aWNlV29ya2VycygpOworICAgIHZvaWQgZW5hYmxlV29ya2VycyhXb3JrZXJUeXBlLCBjb25zdCBV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJik7CisgICAgdm9pZCBkaXNhYmxlV29ya2Vy
cyhPcHRpb25TZXQ8V29ya2VyVHlwZT4pOwogCiAgICAgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0
ZURhdGFTdG9yZSgpIGNvbnN0IHsgQVNTRVJUKG1fd2Vic2l0ZURhdGFTdG9yZSk7IHJldHVybiAq
bV93ZWJzaXRlRGF0YVN0b3JlOyB9CiAgICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFdlYnNp
dGVEYXRhU3RvcmUmKTsKQEAgLTE5NCw2ICsxOTgsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGlz
UnVubmluZ1NlcnZpY2VXb3JrZXJzKCkgY29uc3QgeyByZXR1cm4gISFtX3NlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbjsgfQogICAgIGJvb2wgaXNTdGFuZGFsb25lU2VydmljZVdvcmtlclByb2Nlc3Mo
KSBjb25zdCB7IHJldHVybiBpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpICYmICFwYWdlQ291bnQo
KTsgfQorICAgIGJvb2wgaXNSdW5uaW5nU2hhcmVkV29ya2VycygpIGNvbnN0IHsgcmV0dXJuICEh
bV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbjsgfQorICAgIGJvb2wgaXNTdGFuZGFsb25lU2hhcmVk
V29ya2VyUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIGlzUnVubmluZ1NoYXJlZFdvcmtlcnMoKSAm
JiAhcGFnZUNvdW50KCk7IH0KKyAgICBib29sIGlzUnVubmluZ1dvcmtlcnMoKSBjb25zdCB7IHJl
dHVybiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIHx8IG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uOyB9CiAKICAgICBib29sIGlzRHVtbXlQcm9jZXNzUHJveHkoKSBjb25zdDsKIApAQCAtMzU5
LDEyICszNjYsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVBdWRpYmxlTWVkaWFBc3Nl
cnRpb25zKCk7CiAKKyAgICB2b2lkIHNldFdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsK
KyAgICB2b2lkIHVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZSYpOworICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dChjb25zdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgdXBkYXRlV29ya2VyUHJvY2Vz
c0Fzc2VydGlvbihXb3JrZXJUeXBlKTsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAg
dm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRT
ZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgdXBkYXRlU2Vy
dmljZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwot
ICAgIGJvb2wgaGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHBhZ2VQcm94eUlEKSB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiAmJiBtX3Nl
cnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VQcm94eUlEID09IHBhZ2VQ
cm94eUlEOyB9Ci0gICAgdm9pZCB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigp
OworICAgIGJvb2wgaGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHBhZ2VQcm94eUlEKSB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiAmJiBt
X3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+d29ya2VyUGFnZVByb3h5SUQgPT0gcGFnZVByb3h5
SUQ7IH0KICAgICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJv
Y2Vzc1Byb3h5Jik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nl
c3MoV2ViUHJvY2Vzc1Byb3h5Jik7CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3Vu
ZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0OwpAQCAtNjQ4LDE0ICs2NTYsMTUgQEAgcHJpdmF0
ZToKICNlbmRpZgogICAgIFJlZlB0cjxMb2dnZXI+IG1fbG9nZ2VyOwogCi0gICAgc3RydWN0IFNl
cnZpY2VXb3JrZXJJbmZvcm1hdGlvbiB7Ci0gICAgICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
c2VydmljZVdvcmtlclBhZ2VQcm94eUlEOwotICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VyUGFnZUlEOworICAgIHN0cnVjdCBXb3JrZXJJbmZvcm1hdGlvbiB7Cisg
ICAgICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd29ya2VyUGFnZVByb3h5SUQ7CisgICAgICAg
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdvcmtlclBhZ2VJRDsKICAgICAgICAgU2VydmljZVdv
cmtlckluaXRpYWxpemF0aW9uRGF0YSBpbml0aWFsaXphdGlvbkRhdGE7CiAgICAgICAgIFByb2Nl
c3NUaHJvdHRsZXI6OkFjdGl2aXR5VmFyaWFudCBhY3Rpdml0eTsKICAgICAgICAgV2Vha0hhc2hT
ZXQ8V2ViUHJvY2Vzc1Byb3h5PiBjbGllbnRQcm9jZXNzZXM7CiAgICAgfTsKLSAgICBzdGQ6Om9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbj4gbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b247CisgICAgc3RkOjpvcHRpb25hbDxXb3JrZXJJbmZvcm1hdGlvbj4gbV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxXb3JrZXJJbmZvcm1hdGlvbj4gbV9zaGFy
ZWRXb3JrZXJJbmZvcm1hdGlvbjsKICAgICBib29sIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91
bmRQcm9jZXNzaW5nIHsgZmFsc2UgfTsKIAogICAgIEhhc2hNYXA8V2ViQ29yZTo6U2xlZXBEaXNh
YmxlcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTbGVlcERpc2FibGVyPj4g
bV9zbGVlcERpc2FibGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDY0ZTQwNDQwYjhlMy4uYTg5ZTFjM2NlMDc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg4MSw2ICs4
ODEsNyBAQAogCQk0NjE0RjEzMjI1REVEODc1MDA3MDA2RTcgLyogR1BVUHJvY2Vzc0Nvbm5lY3Rp
b25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NkFDNTMyNDI1REVEODFFMDAzQjU3RUMgLyogR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJh
bWV0ZXJzLmggKi87IH07CiAJCTQ2MUNDQ0E1MjMxNDg1QTcwMEI2NTlCOSAvKiBVSVJlbW90ZU9i
amVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NjMyMzY4NTIzMTQ4MzNGMDBBNDhGQTcgLyogVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5o
ICovOyB9OwogCQk0NjFDQ0NBNjIzMTQ4NUFBMDBCNjU5QjkgLyogV2ViUmVtb3RlT2JqZWN0UmVn
aXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
MzIzNjgzMjMxNDgxRUYwMEE0OEZBNyAvKiBXZWJSZW1vdGVPYmplY3RSZWdpc3RyeS5oICovOyB9
OworCQk0NjFFMUJGMjI3OUEwMTE2MDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjFFMUJFRjI3OUEwMTBGMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2M0ZENDgwMUVCOTQ1OTYwMEEyOTgyQyAv
KiBXS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzRkQ0N0YxRUI5NDU4NDAwQTI5ODJDIC8qIFdLUHJvY2Vz
c1Rlcm1pbmF0aW9uUmVhc29uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDYzRkQ0ODIxRUI5NEVDMDAwQTI5ODJDIC8qIFByb2Nlc3NUZXJtaW5h
dGlvblJlYXNvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDYzRkQ0ODExRUI5NEVBRDAwQTI5ODJDIC8qIFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5o
ICovOyB9OwogCQk0NjU5RjI1RjI3NUZGNkIyMDBCQkIzNjkgLyogQ2FwdGl2ZVBvcnRhbE1vZGVP
YnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDY1OUYyNUUyNzVGRjZCMjAwQkJCMzY5IC8qIENhcHRpdmVQb3J0YWxNb2RlT2JzZXJ2ZXIuaCAq
LzsgfTsKQEAgLTg5MCw2ICs4OTEsOCBAQAogCQk0NjcxRkYxRjIzMjE3RUZGMDAxQjY0QzcgLyog
V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2NzFGRjFEMjMyMTdFRkYwMDFCNjRDNyAvKiBXZWJSZXNvdXJjZUxv
YWRPYnNlcnZlci5oICovOyB9OwogCQk0NjdFNDNFODIyNDNGRjdEMDBCMTM5MjQgLyogV2ViUHJv
Y2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2N0U0M0U3MjI0M0ZGNkQwMEIxMzkyNCAvKiBXZWJQcm9jZXNzRGF0
YVN0b3JlUGFyYW1ldGVycy5oICovOyB9OwogCQk0NjgwOUE3QzIzRDkyMjVFMDBDMjk3RDAgLyog
V2ViQ29va2llQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2ODA5QTdBMjNEOTIyNTMwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5oICovOyB9
OworCQk0Njk0M0REMDI3NjNGODNBMDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTQzRENG
Mjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oICovOyB9OworCQk0
Njk0M0REMTI3NjNGODNGMDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5NDNE
Q0QyNzYzRjgzNTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAq
LzsgfTsKIAkJNDZBMkI2MDkxRTU2NzZBNjAwQzNERURBIC8qIEJhY2tncm91bmRQcm9jZXNzUmVz
cG9uc2l2ZW5lc3NUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZBMkI2MDcxRTU2NzVBMjAwQzNERURBIC8qIEJhY2tncm91bmRQcm9jZXNzUmVz
cG9uc2l2ZW5lc3NUaW1lci5oICovOyB9OwogCQk0NkIwNTI0NzIyNjY4RDg1MDAyNjVCOTcgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkIwNTI0NDIyNjY4RDIzMDAy
NjVCOTcgLyogV2ViRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyLmgg
Ki87IH07CiAJCTQ2QkVCNkQ3MjJGQjlCRDcwMDI2OTg2NyAvKiBTdG9yYWdlQXJlYS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRUI2RDUyMkZCOUJE
NjAwMjY5ODY3IC8qIFN0b3JhZ2VBcmVhLmggKi87IH07CkBAIC04OTksMTAgKzkwMiwxMyBAQAog
CQk0NkMzOTIyOTIzMTZFQzREMDA4RUVEOUIgLyogV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDMzkyMjgyMzE2
RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCAqLzsgfTsKIAkJNDZDNUI3
Q0UyN0FBREREMzAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM1QjdDRDI3QUFE
REJFMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuaCAqLzsgfTsKIAkJ
NDZDNUI3Q0YyN0FBRERENjAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckxpYldlYlJUQ1Byb3ZpZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM1QjdD
QjI3QUFEREJFMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXIuaCAqLzsg
fTsKKwkJNDZDOTE2QUEyNzk5RDBBMjAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDOTE2QTky
Nzk5RDA5RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5oICovOyB9OwogCQk0NkNF
M0IxMTIzRDhDODQ5MDAxNkE5NkEgLyogV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkNFM0IxMDIzRDhDODNE
MDAxNkE5NkEgLyogV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmggKi87IH07CisJCTQ2RDQ4RkNF
Mjc5OUQ3RTEwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkQ0
OEZDRDI3OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oICovOyB9OwogCQk0NkRGMDYzQzFGMzkwNUY4MDAxOTgwQkIgLyogTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyLmggKi87IH07CiAJCTQ2RUUyODQ5MjY5RTA0QUMwMERENDhBQiAvKiBXZWJCcm9h
ZGNhc3RDaGFubmVsUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2RUUyODQ4MjY5RTA0OUIwMERENDhBQiAvKiBXZWJCcm9hZGNhc3RDaGFu
bmVsUmVnaXN0cnkuaCAqLzsgfTsKIAkJNDZFRTI4NEQyNjlFMDUyNTAwREQ0OEFCIC8qIE5ldHdv
cmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUUyODRDMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggKi87IH07CisJCTQ2RUUzRThCMjc2M0ZEMkYwMDYwQzcw
RiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzODY2NzI3NjNGQUIxMDBDRjkxODIgLyog
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oICovOyB9OwogCQk0NkYzOEU4QzI0MTZF
NjczMDA1OTM3NUEgLyogUnVubmluZ0JvYXJkU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjM4RThCMjQxNkU2NkQwMDU5Mzc1QSAv
KiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oICovOyB9OwogCQk0NkY5QjI2MzIzNTI2RUYzMDA2
RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkY5QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2Vi
QmFja0ZvcndhcmRDYWNoZUVudHJ5LmggKi87IH07CiAJCTQ5MzEwMkJEMjY4M0YzRDAwMDJCQjg4
NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0OTMxMDJCQzI2ODNGM0E1MDAyQkI4ODUgLyogQXBwUHJpdmFjeVJlcG9y
dC5oICovOyB9OwpAQCAtMTI3Niw2ICsxMjgyLDcgQEAKIAkJNkJFOTY5QzExRTU0RDQ1MjAwOEI3
NDgzIC8qIGNvcmVQcmVkaWN0aW9uX21vZGVsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2QkU5NjlDMDFFNTRENDUyMDA4Qjc0ODMgLyogY29yZVByZWRp
Y3Rpb25fbW9kZWwgKi87IH07CiAJCTZCRTk2OUNCMUU1NEQ0Q0YwMDhCNzQ4MyAvKiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkU5NjlDOTFFNTRENENGMDA4Qjc0ODMgLyogUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5oICovOyB9OwogCQk2QkU5NjlDRDFFNTRF
MDU0MDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCRTk2OUNDMUU1NEUwNTQw
MDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5oICovOyB9OworCQk2
Q0FFQ0I2NjI3NDY1QUU0MDBBQjc4RDAgLyogVW5pZmllZFNvdXJjZTExNi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2Q0FFQ0I1RTI3NDY1QUUzMDBB
Qjc4RDAgLyogVW5pZmllZFNvdXJjZTExNi5jcHAgKi87IH07CiAJCTZFRTg0OUM4MTM2OEQ5Mzkw
MDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFRTg0OUM2MTM2OEQ5MkQwMDM4RDQ4MSAvKiBXS0lu
c3BlY3RvclByaXZhdGVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3MTE3MjVBOTIyOEQ1NjQzMDAwMTg1MTQgLyogV2Vic2l0ZUxlZ2FjeU92
ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcxMTcyNUE4MjI4RDU2M0EwMDAxODUxNCAvKiBXZWJzaXRlTGVn
YWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaFBvbGljeS5oICovOyB9OwogCQk3MTM0QTNEQTI2MDNC
OTI1MDA2MjRCRDMgLyogV0tNb2RlbEludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMzRBM0Q5MjYwM0I4
MEUwMDYyNEJEMyAvKiBXS01vZGVsSW50ZXJhY3Rpb25HZXN0dXJlUmVjb2duaXplci5oICovOyB9
OwpAQCAtMTM1Myw2ICsxMzYwLDcgQEAKIAkJN0M5RDE1MzcxODQ1ODREQTAwOUQzOTE4IC8qIFdL
QnJvd3NpbmdDb250ZXh0R3JvdXBJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0M5RDE1MzYxODQ1ODREQTAwOUQzOTE4IC8qIFdLQnJvd3Np
bmdDb250ZXh0R3JvdXBJbnRlcm5hbC5oICovOyB9OwogCQk3Q0EyNTRFQjE4Mjk5M0NFMDBGQzhB
NDEgLyogV0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NBMjU0RUExODI5OTNDRTAwRkM4QTQxIC8q
IFdLQnJvd3NpbmdDb250ZXh0UG9saWN5RGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Q0EzNzkzRTFBQzM3OEIzMDA3OURDMzcgLyog
X1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQTM3OTNEMUFDMzc4QjMwMDc5REMzNyAvKiBf
V0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdDQUVDQjY2Mjc0NjVBRTQwMEFCNzhEMCAv
KiBVbmlmaWVkU291cmNlMTE3LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDQUVDQjVFMjc0NjVBRTMwMEFCNzhEMCAvKiBVbmlmaWVkU291cmNlMTE3
LmNwcCAqLzsgfTsKIAkJN0NCMTAwRjExRkEzODU4QTAwMTcyOUVFIC8qIFdlYlByZWZlcmVuY2Vz
S2V5cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
Q0IxMDBFRTFGQTJENzRBMDAxNzI5RUUgLyogV2ViUHJlZmVyZW5jZXNLZXlzLmNwcCAqLzsgfTsK
IAkJN0NCMTAwRjIxRkEzODU4RTAwMTcyOUVFIC8qIFdlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDREU3M0Ez
MUY5REFCNjUwMDM5MDMxMiAvKiBXZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmggKi87IH07CiAJ
CTdDQjEwMEYzMUZBMzg1OEUwMDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNlc0tleXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQjEwMEVGMUZBMkQ3NEIw
MDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNlc0tleXMuaCAqLzsgfTsKQEAgLTQyMjIsNiArNDIzMCw5
IEBACiAJCTQ2MDg4OUZGMjYxRkE4QTkwMEUyNTAwRCAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
Q3JlYXRpb25QYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRDcmVhdGlvblBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYw
RjQ4OEQxRjk5NkY2QzAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERl
cml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VS
ZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTQ2MEY0
ODhFMUY5OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3Nh
Z2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CisJCTQ2MUUxQkVDMjc5QTAxMEUwMDZBRjUzQiAvKiBXZWJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYxRTFCRUYyNzlBMDEwRjAwNkFGNTNC
IC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYxRTFCRjAyNzlBMDEwRjAw
NkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
MjEwN0Q3MUYzOERCRDMwMERENzgxMCAvKiBQaW5nTG9hZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQaW5nTG9hZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2MzIzNjgzMjMxNDgxRUYwMEE0OEZBNyAvKiBXZWJSZW1vdGVPYmplY3RSZWdpc3Ry
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZW1vdGVPYmplY3RSZWdpc3RyeS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NjMyMzY4NDIzMTQ4MjVDMDBBNDhGQTcgLyogV2ViUmVtb3Rl
T2JqZWN0UmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUmVtb3RlT2JqZWN0UmVn
aXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI0OSw4ICs0MjYwLDE1
IEBACiAJCTQ2ODA5QTdCMjNEOTIyNTMwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb29raWVDYWNoZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM1NjlBMjFFODFDQzcwMDZFMjdBMyAvKiBQ
cm92aXNpb25hbFBhZ2VQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
cm92aXNpb25hbFBhZ2VQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njgz
NTY5QjIxRTgxQ0M3MDA2RTI3QTMgLyogUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjgzODY2NzI3NjNGQUIxMDBDRjkxODIgLyog
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQ2ODM4NjY4Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njg5QjkwRjI3NTZEMTQzMDAw
N0M2NTEgLyogUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVdl
YkxvY2tSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njg5QjkxMDI3
NTZEMTQzMDAwN0M2NTEgLyogUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQ2OTQzRENCMjc2M0Y4MzQwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzRENDMjc2
M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ2OTQzRENEMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQ0UyNzYzRjgzNTAw
NEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzRENGMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRX
b3JrZXJQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlERTgwMjI3M0VDQzVEMDA5MzAyNzYg
LyogUHJvY2Vzc0xhdW5jaGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBQcm9jZXNzTGF1bmNoZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDZBMkI2MDYxRTU2NzVBMjAwQzNERURBIC8qIEJhY2tncm91bmRQcm9jZXNzUmVz
cG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NkEyQjYwNzFFNTY3NUEyMDBDM0RFREEgLyogQmFja2dyb3VuZFBy
b2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNDI2OSw3ICs0Mjg3LDExIEBACiAJCTQ2QzVCN0NCMjdBQUREQkUw
MDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92aWRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NkM1QjdDQzI3QUFEREJFMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJD
bGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkM1QjdDRDI3QUFEREJF
MDAwQzVCNDcgLyogUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDZDOTE2QTgyNzk5RDA5RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkM5MTZBOTI3OTlEMDlEMDAxQTRFN0MgLyogV2Vi
U2hhcmVkV29ya2VyU2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkNFM0IxMDIzRDhDODNEMDAxNkE5
NkEgLyogV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0NkQ0OEZDQzI3OTlEN0REMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDZENDhGQ0QyNzk5RDdERTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NkRGMDYzOTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2REYwNjNBMUYz
OTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RTk3NjBBMjc1N0Y2QzkwMEFDREQzNyAvKiBX
ZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNDI3OSw2ICs0MzAxLDcgQEAKIAkJNDZFRTI4NEEyNjlFMDUx
NzAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZFRTI4NEIyNjlFMDUx
NzAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdp
c3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RUUyODRDMjY5RTA1MTcw
MERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZFRTNFOEEyNzYzRkQyQTAwNjBDNzBGIC8q
IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDZGMzhFOEIyNDE2RTY2RDAwNTkzNzVBIC8qIFJ1bm5pbmdCb2FyZFNlcnZp
Y2VzU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bm5pbmdCb2FyZFNl
cnZpY2VzU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RjlCMjYyMjM1MjZF
RDAwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ5MzEwMkJDMjY4M0YzQTUwMDJCQjg4NSAvKiBBcHBQcml2YWN5
UmVwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcFByaXZhY3lSZXBvcnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5OTcsNiArNTAyMCw3IEBACiAJCTZCRTk2OUM4MUU1NEQ0Q0Yw
MDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3ND
bGFzc2lmaWVyQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QkU5NjlD
OTFFNTRENENGMDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2Nv
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzQ2xhc3NpZmllckNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCRTk2
OUNDMUU1NEUwNTQwMDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Q2xhc3NpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2Q0FFQ0I1RTI3NDY1
QUUzMDBBQjc4RDAgLyogVW5pZmllZFNvdXJjZTExNi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBV
bmlmaWVkU291cmNlMTE2LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9XZWJLaXQvdW5pZmll
ZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UxMTYuY3BwIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKIAkJNkQ4QTkxQTUxMUYwRUZEMTAwREQwMUZFIC8qIGNvbS5hcHBsZS5XZWJQ
cm9jZXNzLnNiLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IGNvbS5hcHBsZS5XZWJQcm9jZXNz
LnNiLmluOyBwYXRoID0gV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkVFODQ5QzYxMzY4RDkyRDAwMzhENDgxIC8qIFdL
SW5zcGVjdG9yUHJpdmF0ZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBX
S0luc3BlY3RvclByaXZhdGVNYWMuaDsgcGF0aCA9IG1hYy9XS0luc3BlY3RvclByaXZhdGVNYWMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzExNzI1QTgyMjhENTYzQTAwMDE4NTE0
IC8qIFdlYnNpdGVMZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoUG9saWN5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYnNpdGVMZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1Rv
dWNoUG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MTYxLDYgKzUxODUs
NyBAQAogCQk3QzlEMTUzNjE4NDU4NERBMDA5RDM5MTggLyogV0tCcm93c2luZ0NvbnRleHRHcm91
cEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnJvd3NpbmdD
b250ZXh0R3JvdXBJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0Ey
NTRFQTE4Mjk5M0NFMDBGQzhBNDEgLyogV0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Jyb3dzaW5nQ29udGV4dFBvbGlj
eURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQTM3OTNEMUFDMzc4
QjMwMDc5REMzNyAvKiBfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUHJpdmF0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3Jl
UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Q0FFQ0I1RTI3NDY1QUUz
MDBBQjc4RDAgLyogVW5pZmllZFNvdXJjZTExNy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlm
aWVkU291cmNlMTE3LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9XZWJLaXQvdW5pZmllZC1z
b3VyY2VzL1VuaWZpZWRTb3VyY2UxMTcuY3BwIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKIAkJN0NCMTAwRUUxRkEyRDc0QTAwMTcyOUVFIC8qIFdlYlByZWZlcmVuY2VzS2V5
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJQcmVmZXJlbmNlc0tleXMuY3BwOyBwYXRoID0g
RGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlByZWZlcmVuY2VzS2V5cy5jcHA7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTdDQjEwMEVGMUZBMkQ3NEIwMDE3MjlFRSAvKiBX
ZWJQcmVmZXJlbmNlc0tleXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViUHJlZmVyZW5jZXNLZXlzLmg7
IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViUHJlZmVyZW5jZXNLZXlzLmg7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTdDQjEwMEYwMUZBMkQ3ODQwMDE3MjlF
RSAvKiBXZWJQcmVmZXJlbmNlc1N0b3JlRGVmYXVsdHNNYXAuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gV2ViUHJlZmVyZW5jZXNTdG9yZURlZmF1bHRzTWFwLmNwcDsgcGF0aCA9IERlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9XZWJQcmVmZXJlbmNlc1N0b3JlRGVmYXVsdHNNYXAuY3BwOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtOTI4Niw2ICs5MzExLDIwIEBACiAJCQlwYXRo
ID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk0NjgzODY2NTI3
NjNGQTFCMDBDRjkxODIgLyogU2hhcmVkV29ya2VyICovID0geworCQkJaXNhID0gUEJYR3JvdXA7
CisJCQljaGlsZHJlbiA9ICgKKwkJCQk0NkQ0OEZDQzI3OTlEN0REMDA3RDIwMTQgLyogV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgKi8sCisJCQkJNDZENDhGQ0Qy
Nzk5RDdERTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uaCAqLywKKwkJCQk0NkM5MTZBODI3OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2Vy
U2VydmVyLmNwcCAqLywKKwkJCQk0NkM5MTZBOTI3OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hhcmVk
V29ya2VyU2VydmVyLmggKi8sCisJCQkJNDZFRTNFOEEyNzYzRkQyQTAwNjBDNzBGIC8qIFdlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCisJCQkJNDY4Mzg2Njcy
NzYzRkFCMTAwQ0Y5MTgyIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCAqLywK
KwkJCQk0NjgzODY2ODI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbi5jcHAgKi8sCisJCQkpOworCQkJcGF0aCA9IFNoYXJlZFdvcmtlcjsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTQ2OURFODAxMjczRUNDNUQwMDkzMDI3NiAvKiBj
b2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC05MzM3
LDYgKzkzNzYsNyBAQAogCQk1MTBDQzdEQTE2MTM4RTAxMDBEMDNFRDMgLyogTmV0d29ya1Byb2Nl
c3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQ2ODM4
NjY1Mjc2M0ZBMUIwMENGOTE4MiAvKiBTaGFyZWRXb3JrZXIgKi8sCiAJCQkJRTQ4OUQyODIxQTBB
MkJFODAwNzhDMDZBIC8qIGNhY2hlICovLAogCQkJCTdBODQzQTFEMjFFNDFGRDkwMERFRjY2MyAv
KiBDbGFzc2lmaWVyICovLAogCQkJCTdFQzRGMEY4MThFNEE5MjIwMDgwNTZBRiAvKiBjb2NvYSAq
LywKQEAgLTk0NDgsNiArOTQ4OCwxNCBAQAogCQkJCTQ2QzVCN0NDMjdBQUREQkUwMDBDNUI0NyAv
KiBSZW1vdGVXb3JrZXJGcmFtZUxvYWRlckNsaWVudC5jcHAgKi8sCiAJCQkJNDZDNUI3Q0QyN0FB
RERCRTAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50LmggKi8sCiAJCQkJ
NDZDNUI3Q0IyN0FBRERCRTAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckxpYldlYlJUQ1Byb3ZpZGVy
LmggKi8sCisJCQkJNDYxRTFCRUMyNzlBMDEwRTAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgKi8sCisJCQkJNDYxRTFCRUYyNzlBMDEwRjAwNkFG
NTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICovLAorCQkJ
CTQ2MUUxQkYwMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCisJCQkJNDY5NDNEQ0UyNzYzRjgzNTAwNEI2MTBF
IC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwICovLAorCQkJCTQ2OTQzRENE
Mjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggKi8s
CisJCQkJNDY5NDNEQ0IyNzYzRjgzNDAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCisJCQkJNDY5NDNEQ0MyNzYzRjgzNTAwNEI2MTBFIC8q
IFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmNwcCAqLywKKwkJCQk0Njk0M0RDRjI3NjNGODM1MDA0
QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaCAqLywKIAkJCQk0MTMxRjNFMDFGOTg3
MTJDMDA1OTk5NUEgLyogV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgKi8sCiAJ
CQkJNDE5QUNGOUIxRjk4MUQyNjAwOUYxQTgzIC8qIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQuaCAqLywKIAkJCQk1MUJFQjYyOTFGM0E1QUNEMDA1MDI5QjkgLyogV2ViU2VydmljZVdv
cmtlclByb3ZpZGVyLmNwcCAqLywKQEAgLTEyNzczLDYgKzEyODIxLDcgQEAKIAkJCQk0OUZCRjAw
MDIzOUIxRjc1MDBCRDAzMkYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHku
aCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RkJGMDA5MjM5RjA4RTAwMEJEMDMyRiAvKiBfV0tSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkzNzYzMTFGRDFBM0ZCNUY3MDA1QTJFNTEgLyogX1dLU2FtZURvY3VtZW50TmF2aWdhdGlvblR5
cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2MUUxQkYyMjc5QTAxMTYwMDZBRjUzQiAvKiBXZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTM3NjMxMUZFMUEzRkI2MDAwMDVBMkU1MSAvKiBfV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlw
ZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTAwMkQ0NDE5NkIzMzg5MDBCOUFENDQg
LyogX1dLU2Vzc2lvblN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTAwMkQ0MzE5NkIzMzcw
MDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAt
MTI5MzcsNiArMTI5ODYsNyBAQAogCQkJCUUxNzA4NzZDMTZENkNBNjkwMEY5OTIyNiAvKiBCbG9i
UmVnaXN0cnlQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEY2MDE0MzIxNTVDNUFBMjAwMUZC
REUwIC8qIEJsb2NraW5nUmVzcG9uc2VNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTcwNTEx
MUJFNDEwRTYwMDg3NEFGMSAvKiBCbG9ja1NQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZDOTE2
QUEyNzk5RDBBMjAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMzMDY1RkExMjU5MzQ0RTAwRTcxMjc4IC8qIENhY2hlTW9kZWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxODk3RUQ4MUY0MTVEOEEwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdp
bmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRkFCRDJBMUY0REUwMDEwMDZBNkM5NyAvKiBDYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzQwNCw2ICsxMzQ1NCw3
IEBACiAJCQkJMUFDMTMzNjgxODU2NUI1NzAwRjNFQzA1IC8qIFVzZXJEYXRhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDRDQ5MUIwODFFNzBEMDVGMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENDkxQjBFMUU3MzJFNEQwMDAwOTA2NiAvKiBV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkVF
M0U4QjI3NjNGRDJGMDA2MEM3MEYgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q0OTFCMTMxRTczNDgyMTAwMDA5MDY2IC8qIFVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENDkxQjE4MUU3MzUy
NTUwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA3Mjk3RjlGMUMxN0JCRUEwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJt
aXNzaW9uQ2hlY2tQcm94eS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzQ5MCw2ICsxMzU0MSw3IEBA
CiAJCQkJMzMwOTM0NEExMzE1QjkyMjAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJQcm94eU1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzFERDdCMjExNERDMzk2MDA1QURBRjMgLyog
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJGNTg5QjEyQTg4
Mzg4MDA2Mjk1MzAgLyogV2ViQ3JlZGVudGlhbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY5NDNE
RDAyNzYzRjgzQTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUE4M0Y2RDFBNUI2M0ZGMDAwMjZFQzYgLyogV2ViRGF0YWJhc2VQcm92aWRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTUyQ0Y1NTIyMEEzNUMzQTAwREFEQTI3IC8qIFdlYkRh
dGFMaXN0U3VnZ2VzdGlvblBpY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTU2OEI5MUYyMEEz
QUIyRjAwRTNDODU2IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bi5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMzUyNCw2ICsxMzU3Niw3IEBACiAJCQkJQkMwMzJEN0YxMEY0Mzc4RDAwNThD
MTVBIC8qIFdlYkZyYW1lTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzkxRjJD
QjEyMUI2N0FEMDBFQkY3RTggLyogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkNCOUY2QTAxMTIzQTg0QjAwQTEzN0UwIC8qIFdlYkZyYW1lUG9saWN5TGlz
dGVuZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY5NDNERDEyNzYzRjgzRjAwNEI2MTBF
IC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDOUIzOEExMTBGNTM4QkUwMDQ0M0ExNSAvKiBXZWJGcmFtZVByb3h5LmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MTVCRTFBQjFENTU1QUEwMDBERDdDNjggLyogV2ViR2FtZXBhZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTE1QkUxNzkxRDUzRkU4RjAwREQ3QzY4IC8qIFdlYkdhbWVwYWRQcm92aWRl
ci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzY1MCw2ICsxMzcwMyw3IEBACiAJCQkJMUE0ODMyRDcx
QTlDREY5NjAwOEI0REZFIC8qIFdlYnNpdGVEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTQ4
MzJEMTFBOUJEQzJGMDA4QjRERkUgLyogV2Vic2l0ZURhdGFSZWNvcmQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBNTNDMkFBMUEzMjU3MzAwMDRFOEM3MCAvKiBXZWJzaXRlRGF0YVN0b3JlLmggaW4g
SGVhZGVycyAqLywKKwkJCQk0NkQ0OEZDRTI3OTlEN0UxMDA3RDIwMTQgLyogV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTExRjdE
NDExRUIxQkNGNTAwRTQ3QjgzIC8qIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3MTE3MjVBOTIyOEQ1NjQzMDAwMTg1MTQgLyogV2Vic2l0ZUxlZ2FjeU92
ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3kuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0Q0IwOUU1
MjI1RDVBMDkwMDg5MTQ4NyAvKiBXZWJzaXRlTWVkaWFTb3VyY2VQb2xpY3kuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggOGQzYjU3YmQxOGRjLi5iYjM1NDdm
NDZhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtNTcsNiArNTcsMTAgQEAKICNp
bmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTZXJ2aWNl
V29ya2VyUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0
Q2hhbm5lbE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFtLmgiCkBAIC0xNzMs
NiArMTc3LDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAjZW5kaWYKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVz
c2FnZXM6OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSkgeworICAgICAgICBzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCkuZGlkUmVjZWl2ZU1lc3Nh
Z2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYg
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAg
ICAgICBBU1NFUlQoU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5l
Y3Rpb24oKSk7CisgICAgICAgIGlmIChhdXRvKiBjb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gPSBT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKQorICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uJj4oKmNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbikuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICNpZiBFTkFCTEUoQVBQ
TEVfUEFZX1JFTU9URV9VSSkKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkg
PT0gTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
KSB7CkBAIC0zMDcsNiArMzIxLDEzIEBAIFdlYlNXQ2xpZW50Q29ubmVjdGlvbiYgTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uOjpzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbigpCiB9CiAjZW5kaWYKIAor
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiYgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
OjpzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCkKK3sKKyAgICBpZiAoIW1fc2hhcmVkV29ya2VyQ29u
bmVjdGlvbikKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uID0gV2ViU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbjo6Y3JlYXRlKCk7CisgICAgcmV0dXJuICptX3NoYXJlZFdvcmtl
ckNvbm5lY3Rpb247Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjptZXNzYWdl
c0F2YWlsYWJsZUZvclBvcnQoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBt
ZXNzYWdlUG9ydElkZW50aWZpZXIpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubWVz
c2FnZXNBdmFpbGFibGVGb3JQb3J0KG1lc3NhZ2VQb3J0SWRlbnRpZmllcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5oCmluZGV4IGQ2MmRmZTRkZjVhYS4uNWYwNTA0MDlhYzY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uaApAQCAtNDgsNiArNDgsNyBAQCBlbnVtIGNsYXNzIEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kgOiB1aW50OF90OwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb247CiBj
bGFzcyBXZWJTV0NsaWVudENvbm5lY3Rpb247CiAKIGNsYXNzIE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbj4sIElQQzo6
Q29ubmVjdGlvbjo6Q2xpZW50IHsKQEAgLTcwLDYgKzcxLDcgQEAgcHVibGljOgogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKICAgICBXZWJTV0NsaWVudENvbm5lY3Rpb24mIHNlcnZpY2VXb3Jr
ZXJDb25uZWN0aW9uKCk7CiAjZW5kaWYKKyAgICBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uJiBzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiAKICNpZiBIQVZFKEFVRElUX1RPS0VOKQog
ICAgIHZvaWQgc2V0TmV0d29ya1Byb2Nlc3NBdWRpdFRva2VuKHN0ZDo6b3B0aW9uYWw8YXVkaXRf
dG9rZW5fdD4gYXVkaXRUb2tlbikgeyBtX25ldHdvcmtQcm9jZXNzQXVkaXRUb2tlbiA9IGF1ZGl0
VG9rZW47IH0KQEAgLTEyMyw2ICsxMjUsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICBSZWZQdHI8V2ViU1dDbGllbnRDb25uZWN0aW9uPiBtX3N3Q29ubmVjdGlv
bjsKICNlbmRpZgorICAgIFJlZlB0cjxXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uPiBt
X3NoYXJlZFdvcmtlckNvbm5lY3Rpb247CiAgICAgV2ViQ29yZTo6SFRUUENvb2tpZUFjY2VwdFBv
bGljeSBtX2Nvb2tpZUFjY2VwdFBvbGljeTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uYzkwMDM2ZTBjNTU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmNwcApAQCAtMCwwICsxLDEyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
aCIKKworI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJSZW1vdGVXZWJMb2NrUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJSZW1vdGVXb3Jr
ZXJGcmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIlJlbW90ZVdvcmtlckxpYldlYlJUQ1By
b3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmgiCisjaW5j
bHVkZSAiV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJDb21waWxlZENv
bnRlbnRSdWxlTGlzdERhdGEuaCIKKyNpbmNsdWRlICJXZWJEYXRhYmFzZVByb3ZpZGVyLmgiCisj
aW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzS2V5cy5oIgorI2lu
Y2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRQcm92aWRlci5o
IgorI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlci5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvRW1wdHlDbGllbnRzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlQ29uZmlndXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlclRocmVh
ZFByb3h5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQWdlbnQuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1dvcmtlckZldGNoUmVzdWx0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OldlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWlu
LCBQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmIHByZWZlcmVuY2VzU3RvcmUsIFNlcnZpY2VXb3JrZXJJbml0aWFs
aXphdGlvbkRhdGEmJiBpbml0aWFsaXphdGlvbkRhdGEpCisgICAgOiBtX2Nvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzKFdURk1vdmUoY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpKQorICAgICwg
bV9yZWdpc3RyYWJsZURvbWFpbihXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAsIG1f
cGFnZUdyb3VwSUQocGFnZUdyb3VwSUQpCisgICAgLCBtX3dlYlBhZ2VQcm94eUlEKHdlYlBhZ2VQ
cm94eUlEKQorICAgICwgbV9wYWdlSUQocGFnZUlEKQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
ICwgbV91c2VyQWdlbnQoV2ViQ29yZTo6c3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25O
YW1lKHsgfSkpCisjZWxzZQorICAgICwgbV91c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkK
KyNlbmRpZgorICAgICwgbV91c2VyQ29udGVudENvbnRyb2xsZXIoV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjpnZXRPckNyZWF0ZShpbml0aWFsaXphdGlvbkRhdGEudXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllcikpCit7CisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBt
X3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkQ29udGVudFJ1bGVMaXN0cyhXVEZNb3ZlKGluaXRp
YWxpemF0aW9uRGF0YS5jb250ZW50UnVsZUxpc3RzKSk7CisjZW5kaWYKKworICAgIHVwZGF0ZVBy
ZWZlcmVuY2VzU3RvcmUocHJlZmVyZW5jZXNTdG9yZSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZGlzYWJsZVRlcm1pbmF0aW9uKCk7Cit9CisKK1dlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bigpID0gZGVmYXVsdDsKKwordm9pZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OmVzdGFibGlzaENvbm5lY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OkVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uIHsgbV93ZWJQYWdlUHJveHlJ
RCwgbV9yZWdpc3RyYWJsZURvbWFpbiB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgMCk7
Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0
RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBz
aGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQorewor
ICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlBvc3RFeGNlcHRpb25Ub1dvcmtlck9i
amVjdCB7IHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCBzb3VyY2VVUkwgfSwgMCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQoreworICAgIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVu
Y2VzR2VuZXJhdGVkKHN0b3JlKTsKKyAgICBtX3ByZWZlcmVuY2VzU3RvcmUgPSBzdG9yZTsKK30K
Kwordm9pZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmxhdW5jaFNo
YXJlZFdvcmtlcihXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJl
ZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgVVJMJiYgdXJsLCBXZWJD
b3JlOjpXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucywgV2ViQ29yZTo6V29ya2VyRmV0Y2hS
ZXN1bHQmJiB3b3JrZXJGZXRjaFJlc3VsdCkKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3Jr
ZXIsICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmxhdW5jaFNoYXJl
ZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklk
ZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9IFdlYkNv
cmU6OnBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cyhXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5zZXNzaW9uSUQoKSk7CisKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5kYXRhYmFzZVByb3Zp
ZGVyID0gV2ViRGF0YWJhc2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUobV9wYWdlR3JvdXBJRCk7Cisg
ICAgcGFnZUNvbmZpZ3VyYXRpb24uc29ja2V0UHJvdmlkZXIgPSBXZWJTb2NrZXRQcm92aWRlcjo6
Y3JlYXRlKG1fd2ViUGFnZVByb3h5SUQpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLmJyb2FkY2Fz
dENoYW5uZWxSZWdpc3RyeSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmJyb2FkY2FzdENoYW5u
ZWxSZWdpc3RyeSgpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLndlYkxvY2tSZWdpc3RyeSA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvY2tSZWdpc3RyeSgpOworICAgIHBhZ2VDb25maWd1
cmF0aW9uLnVzZXJDb250ZW50UHJvdmlkZXIgPSBtX3VzZXJDb250ZW50Q29udHJvbGxlcjsKKyNp
ZiBFTkFCTEUoV0VCX1JUQykKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5saWJXZWJSVENQcm92aWRl
ciA9IG1ha2VVbmlxdWVSZWY8UmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXI+KCk7CisjZW5k
aWYKKworICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSA9IG1h
a2VVbmlxdWVSZWY8UmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ+KG1fd2ViUGFnZVByb3h5
SUQsIG1fcGFnZUlELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI6OmdlbmVyYXRlKCksIG1fdXNl
ckFnZW50KTsKKworICAgIGF1dG8gcGFnZSA9IG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6UGFnZT4o
V1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOworICAgIGlmIChtX3ByZWZlcmVuY2VzU3RvcmUp
IHsKKyAgICAgICAgV2ViUGFnZTo6dXBkYXRlU2V0dGluZ3NHZW5lcmF0ZWQoKm1fcHJlZmVyZW5j
ZXNTdG9yZSwgcGFnZS0+c2V0dGluZ3MoKSk7CisgICAgICAgIHBhZ2UtPnNldHRpbmdzKCkuc2V0
U3RvcmFnZUJsb2NraW5nUG9saWN5KHN0YXRpY19jYXN0PFdlYkNvcmU6OlN0b3JhZ2VCbG9ja2lu
Z1BvbGljeT4obV9wcmVmZXJlbmNlc1N0b3JlLT5nZXRVSW50MzJWYWx1ZUZvcktleShXZWJQcmVm
ZXJlbmNlc0tleTo6c3RvcmFnZUJsb2NraW5nUG9saWN5S2V5KCkpKSk7CisgICAgfQorICAgIFdl
YkNvcmU6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpzZXR1cFBhZ2VGb3JTaGFyZWRXb3JrZXIo
cGFnZS5nZXQoKSwgdXJsLCBvcmlnaW4sIHdvcmtlckZldGNoUmVzdWx0KTsKKyAgICBhdXRvIHNo
YXJlZFdvcmtlclRocmVhZFByb3h5ID0gV2ViQ29yZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6
OmNyZWF0ZShXVEZNb3ZlKHBhZ2UpLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBvcmlnaW4sIHVy
bCwgV1RGTW92ZSh3b3JrZXJGZXRjaFJlc3VsdCksIFdURk1vdmUod29ya2VyT3B0aW9ucyksIG1f
dXNlckFnZW50LCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZVN0b3JhZ2VQcm92aWRlcigp
KTsKKworICAgIFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24o
KS5yZWdpc3RlclNoYXJlZFdvcmtlclRocmVhZChXVEZNb3ZlKHNoYXJlZFdvcmtlclRocmVhZFBy
b3h5KSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpjbG9zZSgpCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpjbG9zZTogU2hhcmVkIHdvcmtlciBwcm9jZXNz
IGlzIHJlcXVlc3RlZCB0byBzdG9wIGFsbCBzaGFyZWQgd29ya2VycyIpOworICAgIHNldEFzQ2xv
c2VkKCk7CisKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0
Q29ubmVjdGlvbiB7IH0sIDApOworICAgIFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyOjpzaW5nbGV0b24oKS5zdG9wQWxsU2hhcmVkV29ya2VycygpOworICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuYWJsZVRlcm1pbmF0aW9uKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFlMjMyMzY1NjI4YQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRl
ICJJZGVudGlmaWVyVHlwZXMuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNs
dWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNT
dG9yZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VySWRlbnRp
Zmllci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworc3Ry
dWN0IFdvcmtlckZldGNoUmVzdWx0Oworc3RydWN0IFdvcmtlck9wdGlvbnM7Cit9CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI7CitzdHJ1Y3Qg
U2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YTsKKworY2xhc3MgV2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIgeworcHVibGljOgorICAgIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQ
YWdlR3JvdXBJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFNlcnZpY2VXb3JrZXJJbml0
aWFsaXphdGlvbkRhdGEmJik7CisgICAgfldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbigpOworCisgICAgdm9pZCBlc3RhYmxpc2hDb25uZWN0aW9uKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJikgZmluYWw7CisgICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmpl
Y3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCkgZmluYWw7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCitwcml2YXRlOgorICAgIC8vIElQQyBNZXNz
YWdlcy4KKyAgICB2b2lkIGxhdW5jaFNoYXJlZFdvcmtlcihXZWJDb3JlOjpDbGllbnRPcmlnaW4m
JiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwgVVJMJiYsIFdlYkNvcmU6Oldvcmtl
ck9wdGlvbnMmJiwgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJik7CisgICAgdm9pZCB1cGRh
dGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKKyAgICB2b2lk
IHNldFVzZXJBZ2VudChTdHJpbmcmJiB1c2VyQWdlbnQpIHsgbV91c2VyQWdlbnQgPSBXVEZNb3Zl
KHVzZXJBZ2VudCk7IH0KKyAgICB2b2lkIGNsb3NlKCk7CisKKyAgICBSZWY8SVBDOjpDb25uZWN0
aW9uPiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzOworICAgIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIG1fcmVnaXN0cmFibGVEb21haW47CisgICAgUGFnZUdyb3VwSWRlbnRpZmllciBt
X3BhZ2VHcm91cElEOworICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgbV93ZWJQYWdlUHJveHlJ
RDsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKKyAgICBTdHJpbmcgbV91
c2VyQWdlbnQ7CisgICAgUmVmPFdlYlVzZXJDb250ZW50Q29udHJvbGxlcj4gbV91c2VyQ29udGVu
dENvbnRyb2xsZXI7CisgICAgc3RkOjpvcHRpb25hbDxXZWJQcmVmZXJlbmNlc1N0b3JlPiBtX3By
ZWZlcmVuY2VzU3RvcmU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5p
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQ4MmE0YWRhNTNmZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsx
LDMwIEBACisjIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisj
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2Vz
IC0+IFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBOb3RSZWZDb3VudGVk
IHsKKyAgICBMYXVuY2hTaGFyZWRXb3JrZXIoc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBv
cmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRp
ZmllciwgVVJMIHVybCwgc3RydWN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMgd29ya2VyT3B0aW9u
cywgc3RydWN0IFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0IHdvcmtlckZldGNoUmVzdWx0KQor
ICAgIFBvc3RDb25uZWN0RXZlbnQoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFy
ZWRXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0IHBvcnQs
IFN0cmluZyBzb3VyY2VPcmlnaW4pCisgICAgVGVybWluYXRlU2hhcmVkV29ya2VyKFdlYkNvcmU6
OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikKKyAgICBVcGRh
dGVQcmVmZXJlbmNlc1N0b3JlKHN0cnVjdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3Rv
cmUpCisgICAgU2V0VXNlckFnZW50KFN0cmluZyB1c2VyQWdlbnQpCisgICAgQ2xvc2UoKQorfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLmQ3ZDk5NGRlMWY3NwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24uY3BwCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIgorCisjaW5j
bHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVy
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Xb3JrZXJPcHRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCisjZGVmaW5lIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0Vf
TE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gW3dlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCAi
XSBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgV2ViQ29yZTo6
UHJvY2Vzczo6aWRlbnRpZmllcigpLnRvVUludDY0KCksICMjX19WQV9BUkdTX18pCisKK1dlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b24oKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coIldlYlNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb246Iik7Cit9CisKK1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246On5X
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVB
U0VfTE9HKCJ+V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjoiKTsKK30KKworSVBDOjpD
b25uZWN0aW9uKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVy
Q29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuICZXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7Cit9CisKK3Zv
aWQgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6cmVxdWVzdFNoYXJlZFdvcmtlcihj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBVUkwm
IHVybCwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBvcnQsIGNvbnN0IFdlYkNv
cmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMpCit7CisgICAgQ09OTkVDVElPTl9SRUxF
QVNFX0xPRygicmVxdWVzdFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
cj0le3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb246OlJlcXVlc3RTaGFyZWRXb3JrZXIgeyBvcmlnaW4sIHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIsIHVybCwgV1RGTW92ZShwb3J0KSwgd29ya2VyT3B0aW9ucyB9KTsKK30KKwor
dm9pZCBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpzaGFyZWRXb3JrZXJPYmplY3RJ
c0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygic2hh
cmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXk6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9
JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uOjpTaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheSB7IHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIgfSk7Cit9CisKKyN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HCisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZWNiZjQyZjY3NjJhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNTQgQEAKKworLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMg
V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiwgcHJpdmF0ZSBJUEM6Ok1lc3Nh
Z2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFJlZjxXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uPiBjcmVhdGUoKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24pOyB9CisgICAg
fldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKTsKKworICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKK3ByaXZh
dGU6CisgICAgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpOworCisgICAgLy8gV2Vi
Q29yZTo6U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi4KKyAgICB2b2lkIHJlcXVlc3RTaGFy
ZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgV2ViQ29yZTo6U2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgVVJMJiwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNz
YWdlUG9ydCYmLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJikgZmluYWw7CisgICAgdm9p
ZCBzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyKSBmaW5hbDsKKworICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVz
dGluYXRpb25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xY2VhMTkz
MmU5ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEs
MjcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
IyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMg
LT4gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiB7CisgICAgRmV0Y2hTY3JpcHRJbkNs
aWVudChVUkwgdXJsLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdv
cmtlck9wdGlvbnMpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQgZmV0Y2hS
ZXN1bHQpIEFzeW5jCisgICAgTm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkRmFpbHVyZShXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIpCisgICAgUG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgU3RyaW5nIGVy
cm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFN0cmluZyBzb3Vy
Y2VVUkwpCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi40NDk1YTQyMjVlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAKQEAg
LTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oIgorCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlNo
YXJlZFdvcmtlclByb3ZpZGVyJiBXZWJTaGFyZWRXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkK
K3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V2ViU2hhcmVkV29ya2VyUHJvdmlkZXI+IHBy
b3ZpZGVyOworICAgIHJldHVybiBwcm92aWRlcjsKK30KKworV2ViU2hhcmVkV29ya2VyUHJvdmlk
ZXI6OldlYlNoYXJlZFdvcmtlclByb3ZpZGVyKCkgPSBkZWZhdWx0OworCitXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKiBXZWJTaGFyZWRXb3JrZXJQcm92aWRlcjo6c2hhcmVk
V29ya2VyQ29ubmVjdGlvbigpCit7CisgICAgcmV0dXJuICZXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5zaGFyZWRXb3JrZXJDb25uZWN0aW9u
KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44NmUzZDJmZTcwYTAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3Jr
ZXJQcm92aWRlci5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyUHJvdmlkZXIuaD4KKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNoYXJlZFdv
cmtlclByb3ZpZGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgV2ViU2hhcmVkV29ya2VyUHJvdmlk
ZXImIHNpbmdsZXRvbigpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxX
ZWJTaGFyZWRXb3JrZXJQcm92aWRlcj47CisgICAgV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIoKTsK
KworICAgIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24qIHNoYXJlZFdvcmtl
ckNvbm5lY3Rpb24oKSBmaW5hbDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDAyZGE5MTE0N2Y4YS4uOGM3NGM3
Y2JjYTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC04NCw2
ICs4NCw5IEBACiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCIKICNp
bmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3Jr
ZXJQcm92aWRlci5oIgogI2luY2x1ZGUgIldlYlNvY2tldFN0cmVhbS5oIgogI2luY2x1ZGUgIldl
YnNpdGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKQEAg
LTEzMyw2ICsxMzYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGljYXRvci5oPgogI2lu
Y2x1ZGUgPHBhbC9Mb2dnaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0FsZ29yaXRobXMuaD4KQEAgLTU2
OSw2ICs1NzMsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICBTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKFdl
YlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkpOwogI2VuZGlmCisgICAgU2hhcmVk
V29ya2VyUHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKFdlYlNoYXJlZFdvcmtlclByb3ZpZGVy
OjpzaW5nbGV0b24oKSk7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgSlNDOjpXYXNt
OjplbmFibGVGYXN0TWVtb3J5KCk7CkBAIC05MDIsNyArOTA3LDYgQEAgdm9pZCBXZWJQcm9jZXNz
OjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlciYgZGUKICAgICB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgLy8gRklY
TUU6IFJlbW92ZT8KICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVz
c2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCkpIHsKICAgICAgICAgQVNTRVJUKFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5l
Y3Rpb24oKSk7CiAgICAgICAgIGlmIChhdXRvKiBjb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gPSBT
V0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCkBAIC05MTEsNiArOTE1
LDEzIEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlCiAgICAgfQogI2VuZGlmCiAKKyAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAg
ICAgIEFTU0VSVChTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVj
dGlvbigpKTsKKyAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiA9IFNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCisgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24mPigqY29udGV4dE1hbmFnZXJDb25uZWN0aW9uKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIExPR19FUlJPUigi
VW5oYW5kbGVkIHdlYiBwcm9jZXNzIG1lc3NhZ2UgJyVzJyAoZGVzdGluYXRpb246ICUiIFBSSXU2
NCAiIHBpZDogJWQpIiwgZGVzY3JpcHRpb24oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSwgZGVjb2Rl
ci5kZXN0aW5hdGlvbklEKCksIHN0YXRpY19jYXN0PGludD4oZ2V0Q3VycmVudFByb2Nlc3NJRCgp
KSk7CiB9CiAKQEAgLTE5MTcsNiArMTkyOCwxNiBAQCBMaWJXZWJSVENOZXR3b3JrJiBXZWJQcm9j
ZXNzOjpsaWJXZWJSVENOZXR3b3JrKCkKICAgICByZXR1cm4gKm1fbGliV2ViUlRDTmV0d29yazsK
IH0KIAordm9pZCBXZWJQcm9jZXNzOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2Vi
UGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgUmVnaXN0cmFibGVEb21haW4mJiBy
ZWdpc3RyYWJsZURvbWFpbiwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmIGluaXRp
YWxpemF0aW9uRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIC8vIFdlIGFyZSBpbiB0aGUgU2hhcmVkIFdvcmtlciBjb250ZXh0IHByb2Nl
c3MgYW5kIHRoZSBjYWxsIGJlbG93IGVzdGFibGlzaGVzIG91ciBjb25uZWN0aW9uIHRvIHRoZSBO
ZXR3b3JrIFByb2Nlc3MKKyAgICAvLyBieSBjYWxsaW5nIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi4gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIgbmVlZHMgdG8gdXNlIHRoZSBzYW1l
IHVuZGVybHlpbmcgSVBDOjpDb25uZWN0aW9uIGFzIHRoZQorICAgIC8vIE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbiBmb3Igc3luY2hyb25pemF0aW9uIHB1cnBvc2VzLgorICAgIGF1dG8mIGlwY0Nv
bm5lY3Rpb24gPSBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7
CisgICAgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENvbm5lY3Rp
b24obWFrZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24+KGlw
Y0Nvbm5lY3Rpb24sIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBwYWdlR3JvdXBJRCwgd2Vi
UGFnZVByb3h5SUQsIHBhZ2VJRCwgc3RvcmUsIFdURk1vdmUoaW5pdGlhbGl6YXRpb25EYXRhKSkp
OworICAgIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9u
KCktPmVzdGFibGlzaENvbm5lY3Rpb24oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQor
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogdm9pZCBXZWJQcm9jZXNzOjplc3RhYmxpc2hT
ZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElk
ZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5
SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3Rv
cmUsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRp
ZmllciwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmIGluaXRpYWxpemF0aW9uRGF0
YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggZGQ4ZDc0ZmZmMjY5Li42NWY3NzMy
MDFhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNDY5LDYgKzQ2
OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnYW1lcGFkRGlzY29ubmVjdGVkKHVuc2lnbmVkIGlu
ZGV4KTsKICNlbmRpZgogCisgICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmllciwgV2ViUGFnZVByb3h5
SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2Vz
U3RvcmUmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBTZXJ2aWNlV29ya2VySW5pdGlh
bGl6YXRpb25EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyLCBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdl
SWRlbnRpZmllciwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGRmZDMwNjQ1NjNmOS4uZTU1Mjk2YjkwNGRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgpAQCAtMTAwLDYgKzEwMCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2
ZXIgTm90UmVmQ291bnRlZCB7CiAgICAgR2FtZXBhZERpc2Nvbm5lY3RlZCh1bnNpZ25lZCBpbmRl
eCkKICNlbmRpZgogCisgICAgRXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKFdlYktpdDo6UGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwg
V2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUg
c3RvcmUsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgc3RydWN0IFdlYktpdDo6
U2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSBpbml0aWFsaXphdGlvbkRhdGEpIC0+ICgp
IEFzeW5jCisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgRXN0YWJsaXNoU2Vydmlj
ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJLaXQ6OlBhZ2VHcm91
cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3
ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3QgV2Vi
S2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biBkb21haW4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6U2Vy
dmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSBpbml0aWFsaXphdGlvbkRhdGEpIC0+ICgpIEFz
eW5jCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450691</attachid>
            <date>2022-02-02 12:47:11 -0800</date>
            <delta_ts>2022-02-02 13:31:43 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>235958_SharedWorker_multiProcess_wip.patch</filename>
            <type>text/plain</type>
            <size>316663</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDQwMjQ2NmU0OWYwZS4uNDNiYjdhYTNkNmJlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTQ2Myw3ICs0NjMsNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYi1sb2Nrcy9zdGVhbC50ZW50YXRpdmUuaHR0cHMuYW55Lmh0bWwgWyBEdW1wSgog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3Ro
ZS1hbmFseXNlcm5vZGUtaW50ZXJmYWNlL3Rlc3QtYW5hbHlzZXItbWluaW11bS5odG1sIFsgRHVt
cEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUt
ZGlzY29ubmVjdC1hdWRpb3BhcmFtLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NhbWUtb3JpZ2luLWNoZWNr
LnN1Yi5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMuaHRt
bCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCiBmYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWJh
Y2stZm9yd2FyZC1jYWNoZS5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGZhc3Qv
aGlzdG9yeS9wYWdlLWNhY2hlLWNyZWF0ZUltYWdlQml0bWFwLmh0bWwgWyBEdW1wSlNDb25zb2xl
TG9nSW5TdGRFcnIgXQogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLWluLWxv
YWRpbmctaWZyYW1lLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQpAQCAtNTE1Nyw2
ICs1MTU2LDEwIEBAIHdlYmtpdC5vcmcvYi8xODM5OTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3Nzb20vY3NzLXN0eWxlLWF0dHItZGVjCiAjIFRlc3QgaXMgY3Jhc2hpbmcg
aW4gRGVidWcgYnVpbGRzIHNpbmNlIGltcG9ydC4KIHdlYmtpdC5vcmcvYi8yMzQ5NzcgWyBEZWJ1
ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9mb2N1cy1ldmVu
dC1kb2N1bWVudC1tb3ZlLmh0bWwgWyBTa2lwIF0KIAorIyBUZXN0IGlzIGZsYWt5IGJlY2F1c2Ug
TWVzc2FnZVBvcnQgbWVzc2FnZXMgbWF5IGdldCByZWNlaXZlZCBpbiBhIGRpZmZlcmVudCBvcmRl
ciB3aGVuIHNldmVyYWwgTWVzc2FnZVBvcnRzIGFyZSBpbnZvbHZlZCwKKyMgZHVlIHRvIGhvdyBN
ZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpIGlzIGltcGxlbWVudGVkLgoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0
aW9ucy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIEZhaWx1cmUgUGFzcyBdCisKICMg
UGx1Z2lucwogIyBGSVhNRTogUmVtb3ZlIHRoZXNlIHRlc3RzLgogcGx1Z2lucy8gWyBTa2lwIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0
LW9ubHkuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3
b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dAppbmRleCAwZTk5NzI0Yjg2NGIuLjY4
OThiNTRhYWI2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdv
cmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRl
LXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSw2
ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2Nh
bGhvc3Q6OTQ0NC9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zdXBwb3J0L3Jlc291cmNlLnB5P2Ny
b3NzLW9yaWdpbi1mZXRjaAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8v
d3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQvcmVzb3Vy
Y2UucHk/Y3Jvc3Mtb3JpZ2luLXhocgotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0
dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQv
cmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLWZldGNoCiAKIFBBU1MgU2FtZS1vcmlnaW4gJ2ZldGNo
KCknLgogUEFTUyBTYW1lLW9yaWdpbiBYSFIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lk
ZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWItZXhwZWN0ZWQu
dHh0CmluZGV4IDk3OTEwNjMwMzc4NS4uYmI2NDUyZjQ0YTBhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMu
c3ViLWV4cGVjdGVkLnR4dApAQCAtMiwxMCArMiw5IEBACiBIYXJuZXNzIEVycm9yIChUSU1FT1VU
KSwgbWVzc2FnZSA9IG51bGwKIAogVElNRU9VVCBzaGFyZWR3b3JrZXItc2NyaXB0LXNyYyBUZXN0
IHRpbWVkIG91dAotRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgbm90IGJsb2Nr
ZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgIEEgbmV0d29yayBlcnJvciBvY2N1cnJlZC4KLUZBSUwg
YGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AgUmVmdXNlZCB0byBldmFs
dWF0ZSBhIHN0cmluZyBhcyBKYXZhU2NyaXB0IGJlY2F1c2UgJ3Vuc2FmZS1ldmFsJyBpcyBub3Qg
YW4gYWxsb3dlZCBzb3VyY2Ugb2Ygc2NyaXB0IGluIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1
cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAic2NyaXB0LXNyYyAnc2VsZicgJ25vbmNlLWEnIGJsb2I6
IGZpbGVzeXN0ZW06Ii4KLQotRkFJTCBgc2V0VGltZW91dChbc3RyaW5nXSlgIG5vdCBibG9ja2Vk
IGluIGh0dHA6IHdpdGhvdXQgQ1NQIGFzc2VydF91bnJlYWNoZWQ6IGNhbGxiYWNrIG5vdCBjYWxs
ZWQuIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNj
cmlwdHMoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgTG9hZCBmYWlsZWQKK1BB
U1MgYGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AKK1BBU1MgYHNldFRp
bWVvdXQoW3N0cmluZ10pYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3V0IENTUAogVElNRU9V
VCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgYmxvY2tlZCBpbiBodHRwOiB3aXRoIHNj
cmlwdC1zcmMgJ3NlbGYnIFRlc3QgdGltZWQgb3V0CiBOT1RSVU4gYGV2YWwoKWAgYmxvY2tlZCBp
biBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCiBOT1RSVU4gYHNldFRpbWVvdXQoW3N0cmlu
Z10pYCBibG9ja2VkIGluIGh0dHA6IHdpdGggc2NyaXB0LXNyYyAnc2VsZicKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVk
LnR4dAppbmRleCA0ZWFjMWNjYzA1MjYuLmI4ZWUxM2IwZmZjZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBv
bGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91dC5zdWItZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4
dApAQCAtMSw0ICsxLDQgQEAKIAogRkFJTCBEZWRpY2F0ZWQgd29ya2VyIGluaGVyaXRzIENTUCBm
cm9tIG1haW4gZG9jdW1lbnQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgInNldFRpbWVvdXQgYWxs
b3dlZCIgYnV0IGdvdCAic2V0VGltZW91dCBibG9ja2VkIgotRkFJTCBTaGFyZWQgd29ya2VyIGRl
bGl2ZXJzIGl0cyBvd24gQ1NQIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJzZXRUaW1lb3V0IGJs
b2NrZWQiIGJ1dCBnb3QgInNldFRpbWVvdXQgYWxsb3dlZCIKK1BBU1MgU2hhcmVkIHdvcmtlciBk
ZWxpdmVycyBpdHMgb3duIENTUAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3Jr
ZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNo
ZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggYzEwNzEz
NjU1MjgwLi42Zjg0NGRkNWQ5NDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtl
cnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBj
YWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKQEAgLTUsNyAr
NSw3IEBAIEhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAogUEFTUyBEZWRp
Y2F0ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0CiBQQVNTIERlZGljYXRlZCB3b3JrZXIg
b2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0CiBQQVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIG5v
dC1pbi1jYWNoZSBzY3JpcHQKLVBBU1MgU2hhcmVkIHdvcmtlciBvZiB0aGUgY2FjaGVkIHNjcmlw
dAotUEFTUyBTaGFyZWQgd29ya2VyIG9mIHRoZSBmYWxsYmFja2VkIHNjcmlwdAorRkFJTCBTaGFy
ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJE
b25lOiBjYWNoZWQiIGJ1dCBnb3QgIkVycm9yOiBJbXBvcnRpbmcgYSBub24tY2FjaGVkIHNjcmlw
dCBtdXN0IGZhaWwuIgorRkFJTCBTaGFyZWQgd29ya2VyIG9mIHRoZSBmYWxsYmFja2VkIHNjcmlw
dCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiRG9uZTogZmFsbGJhY2tlZCIgYnV0IGdvdCAiRXJy
b3I6IEltcG9ydGluZyBhIG5vbi1jYWNoZWQgc2NyaXB0IG11c3QgZmFpbC4iCiBUSU1FT1VUIFNo
YXJlZCB3b3JrZXIgb2YgdGhlIG5vdC1pbi1jYWNoZSBzY3JpcHQgVGVzdCB0aW1lZCBvdXQKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3
b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9y
aWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3b3JrZXItcGFydGl0
aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0CmluZGV4IDRlZDg3NDc0
NzZjNy4uNTg2ZDEwMTUyYTM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9hbm9u
eW1vdXMtaWZyYW1lL3NoYXJlZHdvcmtlci1wYXJ0aXRpb25pbmcudGVudGF0aXZlLmh0dHBzLndp
bmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlm
cmFtZS9zaGFyZWR3b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhw
ZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIEFub255bW91cyBpZnJhbWVzIGdldCBw
YXJ0aXRpb25lZCBzaGFyZWQgd29ya2Vycy4gYXNzZXJ0X3RydWU6IFRoZSAibm9ybWFsIiBpZnJh
bWUncyBzaGFyZWR3b3JrZXIgc2hvdWxkIHJldHVybiB7Im5vcm1hbCI6IHRydWUsICJub3JtYWxf
Y29udHJvbCI6IHRydWV9LCBidXQgaW5zdGVhZCByZXR1cm5lZCB7Im5vcm1hbCI6dHJ1ZX0gZXhw
ZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK0ZBSUwgQW5vbnltb3VzIGlmcmFtZXMgZ2V0IHBhcnRpdGlv
bmVkIHNoYXJlZCB3b3JrZXJzLiBhc3NlcnRfdHJ1ZTogVGhlICJub3JtYWwiIGlmcmFtZSdzIHNo
YXJlZHdvcmtlciBzaG91bGQgcmV0dXJuIHsibm9ybWFsIjogdHJ1ZSwgIm5vcm1hbF9jb250cm9s
IjogdHJ1ZX0sIGJ1dCBpbnN0ZWFkIHJldHVybmVkIHsibm9ybWFsX2NvbnRyb2wiOnRydWUsIm5v
cm1hbCI6dHJ1ZSwiYW5vbnltb3VzIjp0cnVlLCJhbm9ueW1vdXNfY29udHJvbCI6dHJ1ZX0gZXhw
ZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kv
Y3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdp
bi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMt
ZXhwZWN0ZWQudHh0CmluZGV4IDYzNTViNjhkZTcwYi4uYzhiZjc1ZTdlYTg1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mt
b3JpZ2luLWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5o
dHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2lu
LWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0yMCw3ICsyMCw3IEBA
IFBBU1MgZGVkaWNhdGVkIHdvcmtlcjogc2NoZW1lID0gYmxvYiwgdmFsdWUgPSAqCiBQQVNTIGRl
ZGljYXRlZCB3b3JrZXI6IHNjaGVtZSA9IGJsb2IsIHZhbHVlID0gc2VsZgogRkFJTCBkZWRpY2F0
ZWQgd29ya2VyOiBzY2hlbWUgPSBibG9iLCB2YWx1ZSA9IChcKSBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCBmYWxzZSBidXQgZ290IHRydWUKIFBBU1Mgc2hhcmVkIHdvcmtlcjogd2l0aENvb3BDb2Vw
ID0gZmFsc2UKLVBBU1Mgc2hhcmVkIHdvcmtlcjogd2l0aENvb3BDb2VwID0gdHJ1ZQorRkFJTCBz
aGFyZWQgd29ya2VyOiB3aXRoQ29vcENvZXAgPSB0cnVlIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
IHRydWUgYnV0IGdvdCBmYWxzZQogUEFTUyBzZXJ2aWNlIHdvcmtlcjogd2l0aENvb3BDb2VwID0g
ZmFsc2UKIEZBSUwgc2VydmljZSB3b3JrZXI6IHdpdGhDb29wQ29lcCA9IHRydWUgYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1i
ZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1i
ZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAzMzk4
YmQ4ODkzMWIuLjRjODY2ZWIyOTI2MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kv
c2hhcmVkLXdvcmtlcnMuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9s
aWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMiw3ICsyLDcgQEAgVmVy
aWZ5IHRoZSBDcm9zcy1PcmlnaW4gRW1iZWRkZXIgUG9saWN5IGZvciBTaGFyZWQgV29ya2VycyBi
eSBwZXJmb3JtaW5nIGEgY3Jvc3MKIAogCiBQQVNTIGRlZmF1bHQgcG9saWN5IChkZXJpdmVkIGZy
b20gcmVzcG9uc2UpCi1GQUlMICJyZXF1aXJlLWNvcnAiIChkZXJpdmVkIGZyb20gcmVzcG9uc2Up
IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJmYWlsdXJlIiBidXQgZ290ICJzdWNjZXNzIgorUEFT
UyAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIHJlc3BvbnNlKQogUEFTUyBkZWZhdWx0IHBv
bGljeSAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBkdWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAt
IGJsb2IgVVJMKQogRkFJTCAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBk
dWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAtIGJsb2IgVVJMKSBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCAiZmFpbHVyZSIgYnV0IGdvdCAic3VjY2VzcyIKIFBBU1MgZGVmYXVsdCBwb2xpY3kgKGRl
cml2ZWQgZnJvbSBvd25lciBzZXQgZHVlIHRvIHVzZSBvZiBsb2NhbCBzY2hlbWUgLSBkYXRhIFVS
TCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5jZS5z
dWIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVy
aXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggNzViMWQzM2U1MjYwLi5iMmJmMmUz
YmZmM2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5j
ZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtl
ci1pbmhlcml0YW5jZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNiBAQAogQmxv
Y2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2Nv
bW1vbi9ibGFuay5odG1sCiBCbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93
d3cubG9jYWxob3N0Ojk0NDQvY29tbW9uL2JsYW5rLmh0bWwKIEJsb2NrZWQgYWNjZXNzIHRvIGV4
dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2NhbGhvc3Q6OTQ0NC9jb21tb24vYmxhbmsuaHRtbAot
QmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0
L2NvbW1vbi9ibGFuay5odG1sCiAKIFBBU1MgVGVzdCB0aGF0IGxvY2FsIHNjaGVtZSB3b3JrZXJz
IGluaGVyaXQgQ09FUDogcmVxdWlyZS1jb3JwIGZyb20gdGhlIGNyZWF0aW5nIGRvY3VtZW50CiBQ
QVNTIGJsb2IgVVJMIGRlZGljYXRlZCB3b3JrZXI6IFNhbWUgb3JpZ2luIHNob3VsZCBiZSBhbGxv
d2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJf
ZGF0YVVybC1leHBlY3RlZC50eHQKaW5kZXggOTk1YTA2MDE5Yjg0Li45YjU4MjBhYWU4Y2IgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9TaGFyZWRXb3JrZXJfZGF0YVVybC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRh
VXJsLWV4cGVjdGVkLnR4dApAQCAtMSwxMyArMSw1IEBACi1DT05TT0xFIE1FU1NBR0U6IEVycm9y
OiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3QgMQogCiAKLUhhcm5lc3MgRXJyb3Ig
KEZBSUwpLCBtZXNzYWdlID0gRXJyb3I6IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDIgYnV0IGdv
dCAxCi0KLVBBU1MgRGF0YSBVUkwgbm90IHNoYXJlZCBieSBjcm9zcy1vcmlnaW4gU2hhcmVkV29y
a2VycwotVElNRU9VVCBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtl
cnMgVGVzdCB0aW1lZCBvdXQKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBFcnJv
cjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290IDEKLQogUEFTUyBEYXRhIFVSTCBu
b3Qgc2hhcmVkIGJ5IGNyb3NzLW9yaWdpbiBTaGFyZWRXb3JrZXJzCi1USU1FT1VUIERhdGEgVVJM
cyBzaGFyZWQgYnkgc2FtZS1vcmlnaW4gU2hhcmVkV29ya2VycyBUZXN0IHRpbWVkIG91dAorUEFT
UyBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtlcnMKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQK
aW5kZXggNTc2ZTZkMmI3ZWQyLi40YTI2YmU5MjlhOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13
b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVk
LXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMg
QEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0
Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkK
IAogUEFTUyBTdGF0aWMgaW1wb3J0LgogRkFJTCBTdGF0aWMgaW1wb3J0IChjcm9zcy1vcmlnaW4p
LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogIkltcG9ydGlu
ZyBhIG1vZHVsZSBzY3JpcHQgZmFpbGVkLiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXIt
aW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29y
a2VyLWltcG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CmluZGV4IDRmODY0
MWU1MTQ4MC4uMjk5N2Y3ZTFmMzA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9y
dC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3Jr
ZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwz
IEBACi1DT05TT0xFIE1FU1NBR0U6IE9yaWdpbiBudWxsIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vz
cy1Db250cm9sLUFsbG93LU9yaWdpbi4gU3RhdHVzIGNvZGU6IDIwMAogCiBIYXJuZXNzIEVycm9y
IChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtl
ci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXIt
aW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQKaW5kZXggZWFjN2Y5NWRlNmYyLi5j
YmMwNDI5ZTBjNzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJs
LndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11
cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRv
IGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVz
L3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkKIAogSGFybmVzcyBFcnJvciAoVElN
RU9VVCksIG1lc3NhZ2UgPSBudWxsCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ct
ZXhwZWN0ZWQudHh0CmluZGV4IDU3NmU2ZDJiN2VkMi4uNGEyNmJlOTI5YThkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9k
dWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3No
YXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1C
bG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQz
L3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LW9uLWxvYWQtc2NyaXB0LnB5CiAKIFBB
U1MgU3RhdGljIGltcG9ydC4KIEZBSUwgU3RhdGljIGltcG9ydCAoY3Jvc3Mtb3JpZ2luKS4gcHJv
bWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6ICJJbXBvcnRpbmcgYSBt
b2R1bGUgc2NyaXB0IGZhaWxlZC4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlv
bnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNy
ZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAppbmRleCBlMWJlZGY1NDMwZWYuLmE3MGYwNWFmNTRmNCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQu
dHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHA6
Ly93d3cxLmxvY2FsaG9zdDo4ODAwL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LWNy
ZWRlbnRpYWxzLnB5CiAKIEhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRp
Y3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhwZWN0ZWQudHh0CmluZGV4IDAxOGRiNjA0NTY5ZC4u
Y2ZlNDY1NTY3NWNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVkLnR4dApAQCAt
MSw1ICsxLDMgQEAKIAotSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0K
LU5PVFJVTiBzaGFyZWQgd29ya2VyIHdpdGggbXVsdGlwbGUgZG9jdW1lbnRzCitQQVNTIHNoYXJl
ZCB3b3JrZXIgd2l0aCBtdWx0aXBsZSBkb2N1bWVudHMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA4
LWV4cGVjdGVkLnR4dAppbmRleCA5N2E0ZTdhNzNhNjMuLjA5ZjY3MmQxYzYyMSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3Nl
bWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSwzIEBACiAKLUhhcm5lc3Mg
RXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1USU1FT1VUIG1lc3NhZ2VjaGFubmVs
IGluIHNoYXJlZCB3b3JrZXIgVGVzdCB0aW1lZCBvdXQKK1BBU1MgbWVzc2FnZWNoYW5uZWwgaW4g
c2hhcmVkIHdvcmtlcgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRv
dy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50
eHQKaW5kZXggYTA4OWMyMjQ4OWUyLi5kMzlhNTUwODRkYzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2Vy
LWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJs
b2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw3IEBACiAKIEhhcm5lc3MgRXJy
b3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAogCi1GQUlMIENyZWF0aW5nIGEgc2hhcmVkIHdv
cmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJ3b3Jr
ZXJfT0tfMiIgYnV0IGdvdCAid29ya2VyX09LXzEiCi1QQVNTIENyZWF0aW5nIGEgc2hhcmVkIHdv
cmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MgaW1tZWRpYXRlbHkgYmVmb3JlIHJldm9raW5nLgot
VElNRU9VVCBDb25uZWN0aW5nIHRvIGEgc2hhcmVkIHdvcmtlciBvbiBhIHJldm9rZWQgYmxvYiBV
Ukwgd29ya3MuIFRlc3QgdGltZWQgb3V0CitQQVNTIENyZWF0aW5nIGEgc2hhcmVkIHdvcmtlciBm
cm9tIGEgYmxvYiBVUkwgd29ya3MuCitUSU1FT1VUIENyZWF0aW5nIGEgc2hhcmVkIHdvcmtlciBm
cm9tIGEgYmxvYiBVUkwgd29ya3MgaW1tZWRpYXRlbHkgYmVmb3JlIHJldm9raW5nLiBUZXN0IHRp
bWVkIG91dAorTk9UUlVOIENvbm5lY3RpbmcgdG8gYSBzaGFyZWQgd29ya2VyIG9uIGEgcmV2b2tl
ZCBibG9iIFVSTCB3b3Jrcy4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9u
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25zLWV4cGVjdGVkLnR4dApp
bmRleCA2ZmZlZTI3MzkwZDkuLmFlNDViNGQyNzM5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFt
ZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9u
cy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgVGVzdCB0aGUgbmFtZSBwcm9w
ZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBtaXhpbmcgY29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29u
c3RydWN0b3Igc3RyaW5ncyBFcnJvcjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290
IDEKK1BBU1MgVGVzdCB0aGUgbmFtZSBwcm9wZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBtaXhpbmcg
Y29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29uc3RydWN0b3Igc3RyaW5ncwogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW9wdGlv
bnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CmluZGV4IGY2NTY5NDYxNTBkYi4uNGY5OWExMzQwOWU3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dApAQCAtMSwyOCArMSwyNiBA
QAogCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKLQotVElNRU9VVCBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogZGVmYXVsdCB0byBtb2R1bGUgVGVzdCB0aW1lZCBvdXQKLU5PVFJVTiBDb25u
ZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUg
YmxvY2tlZDogbW9kdWxlIHRvIGRlZmF1bHQKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3
b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogY2xhc3NpYyB0
byBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJl
bnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGNsYXNzaWMKLU5PVFJVTiBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogZGVmYXVsdCB0byBvbWl0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogZGVmYXVsdCB0byBpbmNsdWRlIGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNo
YXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21p
dCB0byBkZWZhdWx0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3Jr
ZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBzYW1l
LW9yaWdpbiBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdp
dGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVkZSBp
biBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVy
ZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIG9taXQgaW4gY2xh
c3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIGNsYXNz
aWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGluIGNsYXNzaWMKLU5P
VFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBz
aG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBvbWl0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25u
ZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUg
YmxvY2tlZDogaW5jbHVkZSB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IGRlZmF1bHQgdG8gb21pdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNo
YXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVm
YXVsdCB0byBpbmNsdWRlIGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRl
ZmF1bHQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGgg
ZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gc2FtZS1vcmlnaW4g
aW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVy
ZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVkZSBpbiBtb2R1bGUK
LU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9u
cyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBtb2R1bGUKLU5PVFJV
TiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91
bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gaW5jbHVkZSBpbiBtb2R1bGUKLU5PVFJVTiBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3Rp
bmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9j
a2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1
ZGUgdG8gc2FtZS1vcmlnaW4gaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRv
IG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQg
b3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGRlZmF1bHQKK1BBU1MgQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IGNsYXNzaWMgdG8gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBtb2R1bGUgdG8gY2xh
c3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBvbWl0IGluIGNsYXNzaWMKK1BBU1Mg
Q29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxk
IGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gaW5jbHVkZSBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3Rp
bmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9j
a2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJl
ZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0
byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGluY2x1
ZGUgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZm
ZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBj
bGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIGNsYXNz
aWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlv
bnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gZGVmYXVsdCBpbiBjbGFzc2ljCitQQVNT
IENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3Vs
ZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogaW5jbHVkZSB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8g
c2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBk
ZWZhdWx0IHRvIG9taXQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIGlu
Y2x1ZGUgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRp
ZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4gbW9k
dWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIHNhbWUtb3JpZ2luIGluIG1vZHVsZQorUEFT
UyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91
bGQgYmUgYmxvY2tlZDogb21pdCB0byBpbmNsdWRlIGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUt
b3JpZ2luIHRvIGluY2x1ZGUgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRv
IGRlZmF1bHQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4g
bW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIHNhbWUtb3JpZ2luIGluIG1vZHVs
ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Bl
bi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dAppbmRleCAx
ZTJkMzk5MmY2ZDUuLjU5Y2FjYTQ4NmY4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3
b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1v
cmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0
ZXJuYWwgVVJMIGh0dHA6Ly93d3cyLmxvY2FsaG9zdDo4ODAwL3hoci9yZXNvdXJjZXMvaW5zcGVj
dC1oZWFkZXJzLnB5P2ZpbHRlcl9uYW1lPW9yaWdpbiZjb3JzCiAKIEZBSUwgUmVmZXJlciBoZWFk
ZXIgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIlJlZmVyZXI6IGh0dHA6Ly9sb2NhbGhvc3Q6ODgw
MC94aHIvcmVzb3VyY2VzL3dvcmtlcnhoci1vcmlnaW4tcmVmZXJyZXIuanNcbiIgYnV0IGdvdCAi
UmVmZXJlcjogaHR0cDovL2xvY2FsaG9zdDo4ODAwL3hoci9yZXNvdXJjZXMvcmVkaXJlY3QucHk/
bG9jYXRpb249d29ya2VyeGhyLW9yaWdpbi1yZWZlcnJlci5qc1xuIgogRkFJTCBPcmlnaW4gaGVh
ZGVyIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJPcmlnaW46IGh0dHA6Ly9sb2NhbGhvc3Q6ODgw
MFxuIiBidXQgZ290ICIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sx
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggZTRlZDMxYWI2YWMzLi5lYTNiYzQ3ODhlZDIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTY2LDYgKzY2LDEyNCBA
QCBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS1nZXRVc2VyTWVkaWEtcGVuZGluZy1w
cm9taXNlLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNhY2hlLW1l
ZGlhc3RyZWFtLmh0bWwgWyBTa2lwIF0KIG1lZGlhL2F1ZGlvLXNlc3Npb24tY2F0ZWdvcnkuaHRt
bCBbIFNraXAgXQogCisjIFNoYXJlZCB3b3JrZXJzIGFyZSBvbmx5IGltcGxlbWVudGVkIGZvciBX
ZWJLaXQyLgoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5
LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFz
c2ljLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
b250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy1zZWxmL3No
YXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3Nj
cmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4v
dG9wLmh0dHAtcnAvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRw
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVk
d29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0
LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4v
dG9wLmh0dHAtcnAvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHAuaHRt
bCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3Vy
aXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1j
bGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtc2Vs
Zi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAv
d29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWNsYXNz
aWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
b250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNyYy1zZWxmL3NoYXJl
ZHdvcmtlci1jbGFzc2ljLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNy
Yy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5t
ZXRhL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5o
dHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVk
d29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNy
Yy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1l
dGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAu
aHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1t
b2R1bGUuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy13aWxkY2Fy
ZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dv
cmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItbW9kdWxlLmh0
dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50
LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3
b3JrZXItbW9kdWxlLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3Jr
ZXItY29ubmVjdC1zcmMuc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3Jr
ZXItcmVwb3J0LW9ubHkuc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3Jr
ZXItc2NyaXB0LXNyYy5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zYW5kYm94L3NoYXJlZC13b3JrZXItc2Fu
ZGJveC5odG1sICBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1kYXRhLXNldC10aW1lb3V0LnN1
Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLWNoaWxkLnN1Yi5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2dlbi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRh
Lmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy1zZWxmL3NoYXJl
ZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC9z
Y3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tpcCBdCitp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dl
bi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0
YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtd2lsZGNhcmQv
c2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRw
LXJwL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsg
U2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHkt
cG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLW5vbmUvc2hhcmVkd29ya2VyLWNsYXNz
aWMuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nv
bnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLW5vbmUvc2hh
cmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29y
a2VyLXNyYy1ub25lL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
Z2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtbm9uZS9zaGFyZWR3b3JrZXItaW1wb3J0LWRhdGEu
aHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1ub25lL3NoYXJl
ZHdvcmtlci1tb2R1bGUuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXIt
c3JjLW5vbmUvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3Au
aHR0cC1ycC93b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHAuaHRt
bCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3Vy
aXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1p
bXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3Jj
LXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0
cC1ycC93b3JrZXItc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0
bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29y
a2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtl
ci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lwIF0KK2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2Vu
L3RvcC5odHRwLXJwL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRw
cy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2Vy
LWltcG9ydC1kYXRhLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNyYy1z
ZWxmL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3Au
bWV0YS9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tp
cCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1pbXBvcnQt
ZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtd2lsZGNhcmQv
c2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRh
L3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5o
dHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLW5vbmUvc2hhcmVkd29y
a2VyLWNsYXNzaWMuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLW5v
bmUvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEv
d29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtbm9uZS9zaGFyZWR3b3JrZXItaW1wb3J0LWRhdGEu
aHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLW5vbmUvc2hhcmVkd29y
a2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1z
cmMtbm9uZS9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1l
dGEvd29ya2VyLXNyYy1ub25lL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cHMuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5o
dHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLXdpbGRjYXJkL3NoYXJl
ZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtl
ci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvd29ya2VyLXNyYy9zaGFyZWQtZmFsbGJhY2suc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvd29ya2VyLXNy
Yy9zaGFyZWQtbGlzdC5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS93b3JrZXItc3JjL3NoYXJlZC1ub25lLnN1
Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXNlbGYuc3ViLmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
d29ya2VyLXNyYy9zaGFyZWQtd29ya2VyLXNyYy1jaGlsZC1mYWxsYmFjay1ibG9ja2VkLnN1Yi5o
dG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXdvcmtlci1zcmMtY2hpbGQtZmFsbGJhY2su
c3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvd29ya2VyLXNyYy9zaGFyZWQtd29ya2VyLXNyYy1kZWZhdWx0LWZh
bGxiYWNrLnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXdvcmtlci1zcmMtc2Ny
aXB0LWZhbGxiYWNrLnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXdvcmtlci1z
cmMtc2VsZi1mYWxsYmFjay5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29ycy9kYXRhLXVybC1zaGFyZWQtd29ya2VyLmh0bWwgWyBT
a2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZs
aW5lL25vLWFwcGNhY2hlLWluLXNoYXJlZC13b3JrZXJzLWhpc3RvcmljYWwuaHR0cHMuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9z
Y3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvbW9kdWxlL2V2YWx1YXRpb24tb3JkZXItMS1u
b3Rocm93LXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudC9t
b2R1bGUvZXZhbHVhdGlvbi1vcmRlci0xLXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3Ro
ZS1zY3JpcHQtZWxlbWVudC9tb2R1bGUvZXZhbHVhdGlvbi1vcmRlci0yLWltcG9ydC1zaGFyZWR3
b3JrZXIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvbW9kdWxlL2V2YWx1YXRp
b24tb3JkZXItMy1keW5hbWljLXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3Jp
cHQtZWxlbWVudC9ldmFsdWF0aW9uLW9yZGVyLTEtbm90aHJvdy1zaGFyZWR3b3JrZXIuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9z
Y3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvZXZhbHVhdGlvbi1vcmRlci0xLXNoYXJlZHdv
cmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
d2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL3VuaGFuZGxlZC1wcm9taXNl
LXJlamVjdGlvbnMvcHJvbWlzZS1yZWplY3Rpb24tZXZlbnRzLnNoYXJlZHdvcmtlci5odG1sIFsg
U2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vc2VyaWFsaXphdGlv
bi9tb2R1bGUvYnJvYWRjYXN0Y2hhbm5lbC1zdWNjZXNzLWFuZC1mYWlsdXJlLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJQ
ZXJmb3JtYW5jZU5vdy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvYmFzZXVybC9hbHBoYS9pbXBvcnRTY3JpcHRzLWluLXNoYXJlZHdvcmtlci5o
dG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvYmFz
ZXVybC9hbHBoYS94aHItaW4tc2hhcmVkd29ya2VyLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9pbnRlcmZhY2VzL1NoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
aW50ZXJmYWNlcy9Xb3JrZXJHbG9iYWxTY29wZS9sb2NhdGlvbi9yZWRpcmVjdC1zaGFyZWR3b3Jr
ZXIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93Lmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJl
ZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi5odG1sIFsgU2tpcCBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2Vy
LWltcG9ydC1kYXRhLXVybC53aW5kb3cuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZmFpbHVy
ZS5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
bW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1tZXRhLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LndpbmRvdy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMv
c2hhcmVkLXdvcmtlci1vcHRpb25zLXR5cGUuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJl
ZC13b3JrZXItcGFyc2UtZXJyb3ItZmFpbHVyZS5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL2VuY29kaW5ncy8wMDIuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGlj
cy9lbmNvZGluZ3MvMDA0Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDQuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwOC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3JlcG9ydGluZy1lcnJvcnMvMDAxLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvcmVw
b3J0aW5nLWVycm9ycy8wMDIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9yZXBvcnRpbmctZXJyb3JzLzAwMy5odG1sIFsgU2tp
cCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3Jl
cG9ydGluZy1lcnJvcnMvMDA0Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvcnVuLWEtd29ya2VyLzAwMi5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3N0cnVj
dHVyZWQtY2xvbmUvc2hhcmVkLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MveGhyLzAwMy5odG1sIFsgU2tpcCBdCitpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3hoci8wMDQuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGlj
cy94aHIvMDA2Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93Lmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW9w
dGlvbnMtbWlzbWF0Y2guaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItcGFyc2UtZXJyb3ItZmFpbHVyZS5odG1sIFsgU2tp
cCBdCisKIGh0dHAvd3B0L21lZGlhcmVjb3JkZXIgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJlY29yZCBbIFNraXAgXQogZmFzdC9oaXN0b3J5
L3BhZ2UtY2FjaGUtbWVkaWEtcmVjb3JkZXIuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3NjcmlwdC1zcmMvd29ya2VyLWltcG9ydHNjcmlwdHMu
c3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3Jj
L3dvcmtlci1pbXBvcnRzY3JpcHRzLnN1Yi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42ZWVhMWJlYWI1YjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItaW1wb3J0c2NyaXB0
cy5zdWItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitGQUlMIERlZGljYXRlZCB3b3Jr
ZXIgaW5oZXJpdHMgQ1NQIGZyb20gbWFpbiBkb2N1bWVudCBhc3NlcnRfZXF1YWxzOiBleHBlY3Rl
ZCAiaW1wb3J0U2NyaXB0cyBhbGxvd2VkIiBidXQgZ290ICJpbXBvcnRTY3JpcHRzIGJsb2NrZWQi
CitGQUlMIFNoYXJlZCB3b3JrZXIgZGVsaXZlcnMgaXRzIG93biBDU1AgU2hhcmVkIHdvcmtlcnMg
YXJlIG5vdCBzdXBwb3J0ZWQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L3NjcmlwdC1zcmMvd29ya2VyLXNldC10aW1lb3V0LnN1Yi1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3Vi
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjY3
NWEzYThlMGYwYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91dC5zdWItZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNCBAQAorCitGQUlMIERlZGljYXRlZCB3b3JrZXIgaW5oZXJpdHMgQ1NQIGZyb20gbWFpbiBk
b2N1bWVudCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAic2V0VGltZW91dCBhbGxvd2VkIiBidXQg
Z290ICJzZXRUaW1lb3V0IGJsb2NrZWQiCitGQUlMIFNoYXJlZCB3b3JrZXIgZGVsaXZlcnMgaXRz
IG93biBDU1AgU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtl
ci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hl
L3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdmMmNkNTE4YzdlNwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Jyb3dzZXJzL29mZmxpbmUvYXBwY2FjaGUvd29ya2Vycy9hcHBjYWNoZS13
b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorQ09OU09MRSBNRVNTQUdF
OiBBcHBsaWNhdGlvbkNhY2hlIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgU2VydmljZVdvcmtl
cnMgaW5zdGVhZC4KKworUEFTUyBEZWRpY2F0ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0
CitQQVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0CitQQVNTIERl
ZGljYXRlZCB3b3JrZXIgb2YgdGhlIG5vdC1pbi1jYWNoZSBzY3JpcHQKK0ZBSUwgU2hhcmVkIHdv
cmtlciBvZiB0aGUgY2FjaGVkIHNjcmlwdCBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rp
b24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogU2hhcmVkIHdvcmtlcnMg
YXJlIG5vdCBzdXBwb3J0ZWQiCitGQUlMIFNoYXJlZCB3b3JrZXIgb2YgdGhlIGZhbGxiYWNrZWQg
c2NyaXB0IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmpl
Y3QgIk5vdFN1cHBvcnRlZEVycm9yOiBTaGFyZWQgd29ya2VycyBhcmUgbm90IHN1cHBvcnRlZCIK
K0ZBSUwgU2hhcmVkIHdvcmtlciBvZiB0aGUgbm90LWluLWNhY2hlIHNjcmlwdCBwcm9taXNlX3Rl
c3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRF
cnJvcjogU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQiCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvbW9kdWxlL2lt
cG9ydC1tZXRhL2ltcG9ydC1tZXRhLXVybC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3Mvc2NyaXB0aW5nLTEvdGhlLXNjcmlwdC1lbGVtZW50L21vZHVsZS9pbXBvcnQtbWV0YS9pbXBv
cnQtbWV0YS11cmwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uYjI0OTlmYWRjYjZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudC9tb2R1bGUvaW1wb3J0LW1ldGEvaW1w
b3J0LW1ldGEtdXJsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACisKK1BBU1MgaW1wb3J0
Lm1ldGEudXJsIGluIGEgcm9vdCBleHRlcm5hbCBzY3JpcHQKK1BBU1MgaW1wb3J0Lm1ldGEudXJs
IGluIGEgZGVwZW5kZW50IGV4dGVybmFsIHNjcmlwdAorUEFTUyBpbXBvcnQubWV0YSBpcyBhbiBv
YmplY3QKK1BBU1MgaW1wb3J0Lm1ldGEgaXMgZXh0ZW5zaWJsZQorUEFTUyBpbXBvcnQubWV0YSdz
IHByb3BlcnRpZXMgYXJlIHdyaXRhYmxlLCBjb25maWd1cmFibGUsIGFuZCBlbnVtZXJhYmxlCitQ
QVNTIGltcG9ydC5tZXRhLnVybCB3aGVuIGltcG9ydGluZyB0aGUgbW9kdWxlIHdpdGggZGlmZmVy
ZW50IGZyYWdtZW50cworUEFTUyBpbXBvcnQubWV0YS51cmwgaW4gYSByb290IGlubGluZSBzY3Jp
cHQKK1BBU1MgaW1wb3J0Lm1ldGEudXJsIGF0IHRvcC1sZXZlbCBtb2R1bGUgRGVkaWNhdGVkV29y
a2VyCitGQUlMIGltcG9ydC5tZXRhLnVybCBhdCB0b3AtbGV2ZWwgbW9kdWxlIFNoYXJlZFdvcmtl
ciBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJO
b3RTdXBwb3J0ZWRFcnJvcjogU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQiCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvdGhlLXdpbmRvd29yd29ya2VyZ2xvYmFsc2Nv
cGUtbWl4aW4vV29ya2VyX1NlbGZfT3JpZ2luLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFw
cGFwaXMvdGhlLXdpbmRvd29yd29ya2VyZ2xvYmFsc2NvcGUtbWl4aW4vV29ya2VyX1NlbGZfT3Jp
Z2luLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LmYzOWY2ZmVkMWYzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvdGhl
LXdpbmRvd29yd29ya2VyZ2xvYmFsc2NvcGUtbWl4aW4vV29ya2VyX1NlbGZfT3JpZ2luLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDggQEAKKworUEFTUyBTYW1lIE9yaWdpbiBXb3JrZXIKK0ZBSUwg
U2FtZSBPcmlnaW4gU2hhcmVkV29ya2VyIFNoYXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVk
CitQQVNTIERhdGEgVXJsIFdvcmtlcgorRkFJTCBEYXRhIFVybCBTaGFyZWRXb3JrZXIgU2hhcmVk
IHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQKK1BBU1MgQmxvYiBVcmwgV29ya2VyCitGQUlMIEJs
b2IgVXJsIFNoYXJlZFdvcmtlciBTaGFyZWQgd29ya2VycyBhcmUgbm90IHN1cHBvcnRlZAorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvd29ya2Vycy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvd29ya2Vycy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xM2VkMTZk
ODcxOTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5u
ZWwvd29ya2Vycy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorCitQQVNTIEJyb2FkY2Fz
dENoYW5uZWwgd29ya3MgaW4gd29ya2VycworRkFJTCBCcm9hZGNhc3RDaGFubmVsIHdvcmtzIGlu
IHNoYXJlZCB3b3JrZXJzIFNoYXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkCitQQVNTIENs
b3NpbmcgYW5kIHJlLW9wZW5pbmcgYSBjaGFubmVsIHdvcmtzLgorUEFTUyBCcm9hZGNhc3RDaGFu
bmVsIGNyZWF0ZWQgYWZ0ZXIgYSB3b3JrZXIgc2VsZi5jbG9zZSgpCitQQVNTIEJyb2FkY2FzdENo
YW5uZWwgbWVzc2FnZXMgZnJvbSBjbG9zZWQgd29ya2VyIHRvIHBhcmVudCBzaG91bGQgYmUgaWdu
b3JlZCAoQkMgY3JlYXRlZCBiZWZvcmUgY2xvc2luZykKK1BBU1MgQnJvYWRjYXN0Q2hhbm5lbCBt
ZXNzYWdlcyBmcm9tIGNsb3NlZCB3b3JrZXIgdG8gcGFyZW50IHNob3VsZCBiZSBpZ25vcmVkIChC
QyBjcmVhdGVkIGFmdGVyIGNsb3NpbmcpCitQQVNTIEJyb2FkY2FzdENoYW5uZWwgbWVzc2FnZXMg
ZnJvbSBwYXJlbnQgdG8gY2xvc2VkIHdvcmtlciBzaG91bGQgYmUgaWdub3JlZCAoQkMgY3JlYXRl
ZCBiZWZvcmUgY2xvc2luZykKK1BBU1MgQnJvYWRjYXN0Q2hhbm5lbCBtZXNzYWdlcyBmcm9tIHBh
cmVudCB0byBjbG9zZWQgd29ya2VyIHNob3VsZCBiZSBpZ25vcmVkIChCQyBjcmVhdGVkIGFmdGVy
IGNsb3NpbmcpCitQQVNTIEJyb2FkY2FzdENoYW5uZWwgbWVzc2FnZXMgd2l0aGluIGNsb3NlZCB3
b3JrZXIgc2hvdWxkIGJlIGlnbm9yZWQgKEJDcyBjcmVhdGVkIGJlZm9yZSBjbG9zaW5nKQorUEFT
UyBCcm9hZGNhc3RDaGFubmVsIG1lc3NhZ2VzIHdpdGhpbiBjbG9zZWQgd29ya2VyIHNob3VsZCBi
ZSBpZ25vcmVkIChCQ3MgY3JlYXRlZCBhZnRlciBjbG9zaW5nKQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9hYnJ1cHQtY29tcGxldGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9hYnJ1
cHQtY29tcGxldGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5kMDE1NmMwYjIxOWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9h
YnJ1cHQtY29tcGxldGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgRGVk
aWNhdGVkV29ya2VyIHNob3VsZCBjb3JyZWN0bHkgaGFuZGxlIGFicnVwdCBjb21wbGV0aW9uCitG
QUlMIFNoYXJlZFdvcmtlciBzaG91bGQgY29ycmVjdGx5IGhhbmRsZSBhYnJ1cHQgY29tcGxldGlv
biBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJO
b3RTdXBwb3J0ZWRFcnJvcjogU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQiCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwMS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDEtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2YyYTky
NzhjNWYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxl
LXdvcmtlcnMvMDAxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBkZWRpY2F0
ZWQKK0ZBSUwgc2hhcmVkIFNoYXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9ydW4tYS13b3JrZXIvMDAzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9ydW4tYS13b3JrZXIvMDAzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFmN2ZhMDg0Yzc0ZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9ydW4tYS13b3JrZXIvMDAzLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyB3b3JrZXIKK0ZBSUwgc2hhcmVkIFNo
YXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGUx
NDM3YTZiYzEzYy4uOTQ0NzIzZWM3MGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTE5NTUsOSAr
MTk1NSwxMiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgd29y
a2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAogICAgIHdvcmtlcnMvV29ya2VyR2xvYmFsU2Nv
cGUuaAogICAgIHdvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaAorICAgIHdvcmtlcnMvV29ya2Vy
T2JqZWN0UHJveHkuaAorICAgIHdvcmtlcnMvV29ya2VyT3B0aW9ucy5oCiAgICAgd29ya2Vycy9X
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCiAgICAgd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmgKICAgICB3b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5oCisg
ICAgd29ya2Vycy9Xb3JrZXJSZXBvcnRpbmdQcm94eS5oCiAgICAgd29ya2Vycy9Xb3JrZXJSdW5M
b29wLmgKICAgICB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCiAgICAgd29ya2Vycy9Xb3Jr
ZXJTY3JpcHRMb2FkZXJDbGllbnQuaApAQCAtMjAwMCw2ICsyMDAzLDEzIEBAIHNldChXZWJDb3Jl
X1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCiAgICAgd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlcldvcmtlci5oCiAKKyAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJJZGVudGlm
aWVyLmgKKyAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaAorICAgIHdvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaAorICAgIHdvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaAorICAgIHdvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlclByb3ZpZGVyLmgKKworICAgIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXIuaAogICAgIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29y
a2VyVGhyZWFkLmgKICAgICB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVh
ZFByb3h5LmgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhMGU5YThlYjdlMDAuLmNkZmQ3NjJiNzI3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKQEAgLTI3ODYsOCArMjc4NiwxMCBAQCB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCiB3
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKLXdvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlck1hbmFnZXIuY3BwCit3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uLmNwcAord29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJvdmlkZXIuY3Bw
CiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwCit3b3JrZXJzL3No
YXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcAogd29ya2Vycy9zaGFy
ZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWQuY3BwCiB3b3JrZXJzL3NoYXJlZC9jb250ZXh0
L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcAogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggZWYzNDQ5Yzc2M2RhLi4xNDg5YjI1NmRmNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkwMyw3ICs5
MDMsNyBAQAogCQkyRTQzNDY0QjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGVQ
cm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0
MzQ2MzkwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuaCAqLzsgfTsK
IAkJMkU0MzQ2NEQwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckxvY2F0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzQjBGNTQ2QTgyMDBC
MEYxQkEgLyogV29ya2VyTG9jYXRpb24uaCAqLzsgfTsKIAkJMkU0MzQ2NTAwRjU0NkE4MjAwQjBG
MUJBIC8qIFdvcmtlck1lc3NhZ2luZ1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzRTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyTWVz
c2FnaW5nUHJveHkuaCAqLzsgfTsKLQkJMkU0MzQ2NTEwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtl
ck9iamVjdFByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRTQzNDYzRjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyT2JqZWN0UHJveHkuaCAqLzsg
fTsKKwkJMkU0MzQ2NTEwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzRjBGNTQ2
QTgyMDBCMEYxQkEgLyogV29ya2VyT2JqZWN0UHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTQzNDY1MzBGNTQ2QTgyMDBCMEYxQkEgLyog
V29ya2VyUnVuTG9vcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkU0MzQ2NDEwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclJ1bkxvb3AuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTQzNDY1NTBGNTQ2
QTgyMDBCMEYxQkEgLyogV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDY0MzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyVGhy
ZWFkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MkU3NTg0MUUxMjc3OUFEQTAwNjI2MjhCIC8qIEZpbGVSZWFkZXJMb2FkZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNzU4NDFCMTI3NzlBREEwMDYy
NjI4QiAvKiBGaWxlUmVhZGVyTG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExMjUsNyArMTEyNSw3IEBACiAJCTQxNkEwNkExMjNDQ0FE
MDMwMDM0NzEwOSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2QTA2OTYyM0NDQUE5RjAwMzQ3
MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RDc1QTIyMEM2NTFBNTAwRDAyRDJD
IC8qIE5ldHdvcmtMb2FkSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkQ3NTlGMjBDNjQ0MTMwMEQwMkQyQyAvKiBOZXR3b3JrTG9h
ZEluZm9ybWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDE2RTBCM0EyMDlCQzNDQjAwNEE5NUQ5IC8qIEZldGNoSWRlbnRpZmllci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTBCMzcyMDlC
QzNDMjAwNEE5NUQ5IC8qIEZldGNoSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAvKiBX
b3JrZXJSZXBvcnRpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE2RTI5QTUxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1By
b3h5LmggKi87IH07CisJCTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRp
bmdQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDE2RTI5QTUxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgxQkJE
MTJERjAwMEEzRjY0IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQw
MEI3NjREOSAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgxQkJEMTJERjAw
MEEzRjY1IC8qIEpTRE9NQmluZGluZ0ludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0REEg
LyogSlNET01CaW5kaW5nSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFODFCQkQxMkRGMDAwQTNGNzQgLyog
VHJhbnNmb3JtU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjRFQSAvKiBUcmFu
c2Zvcm1TdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzIzLDYgKzEzMjMsNyBAQAogCQk0NjBFMzA3NzIy
MkY0RjAzMDA5QTA2MDYgLyogRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1RURE
OUYyMjJGNEVDMzAwQjQ2RTE2IC8qIERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9u
U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0NjIxOEFDQjFGNzJENjRFMDA1NzRGQkUgLyogRE9NSGlnaFJlc1RpbWVTdGFtcC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFMDE2QUQxRjcyRDYx
RTAwMjgyQjJDIC8qIERPTUhpZ2hSZXNUaW1lU3RhbXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjI3M0NBRjI2MEU1OUVGMDA2RkFBOTEgLyog
U1dTY3JpcHRTdG9yYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjI3M0NBQzI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDYyN0ZGNUIy
NzlCODdBRjAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlcklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MjdGRjVBMjc5Qjg3QTIwMEFBMzkx
NiAvKiBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYyQzdGNDEyNzU2REJFNDAwRDA4M0M4IC8qIFdlYkxv
Y2tJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0Njc4MDJCMjI3NDcxMTg1MDBEQTlGQjYgLyogV2ViTG9ja0lkZW50aWZpZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjJFNEM1MDI2
MTZBODExMDAzQTJDNjcgLyogU2NyaXB0QnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjJFNEM0RDI2MTZBODAxMDAzQTJDNjcgLyogU2NyaXB0
QnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDYzNEM3MkMyNzU3REFCMjAwMjZBODE1IC8qIFdlYkxvY2tNYW5hZ2VyU25hcHNob3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzgwMkIwMjc0
NzExN0IwMERBOUZCNiAvKiBXZWJMb2NrTWFuYWdlclNuYXBzaG90LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzNDUsMTQgKzEzNDYsMTggQEAK
IAkJNDY3QTY4RDcyNzVFQTk5MTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3QTY4RDQyNzVFQTk4
QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2N0E2OEQ4Mjc1RUE5OTUwMDlCMzFDNSAvKiBT
aGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2N0E2OEQ1Mjc1RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJT
Y3JpcHRMb2FkZXIuaCAqLzsgfTsKIAkJNDY3QTY4RDkyNzVFQTk5ODAwOUIzMUM1IC8qIFNoYXJl
ZFdvcmtlclRocmVhZFByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NjdBNjhENjI3NUVBOThDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFk
UHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQk0NjdBNjhEQTI3NUVBOTlDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3QTY4RDIyNzVFQTk4
QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCAqLzsgfTsKIAkJNDY4MkQyMDAxRjc5
NzgzMDAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgyRDFGRjFGNzk3ODIzMDBDODYzREIg
LyogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjgzNDRFMDFFRERGQUFBMDBCNzc5NUIgLyogRE9NUmVj
dExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODNERjQwMjc2N0RGOTgwMDdEMDBD
OCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzREYzRTI3NjdERjk4MDA3RDAwQzggLyogSlNT
aGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oICovOyB9OwogCQk0NjgzREY0MTI3NjdFOTFBMDA3
RDAwQzggLyogU2hhZG93UmVhbG1HbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4M0RGM0IyNzY3REYyNjAwN0QwMEM4IC8qIFNoYWRv
d1JlYWxtR2xvYmFsU2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0Njg4RUUzQzI2REQyNjEwMDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5Nb2Rl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njg4RUUz
QTI2REQyNjBDMDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5Nb2RlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDY5NDNEQzgyNzYzRjgxMjAwNEI2MTBF
IC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTQzREM1Mjc2M0Y4MEQwMDRCNjEwRSAvKiBTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDY5NDNEQzkyNzYzRjgxNzAwNEI2MTBFIC8qIFNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2OTQzREM3Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNDY5NDNEQ0EyNzYzRjgxQzAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlclByb3ZpZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0M0RD
NDI3NjNGODBEMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0Njk4NUYyMzI3QTRBNkFEMDA5
N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0Njk4NUYyMjI3QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVkV29ya2Vy
S2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NDY5Q0NDRkUyNjlEMDIxQzAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OUNDQ0ZDMjY5RDAyMDIwMDZF
MDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY5RDc3QjgyNzAxNjI1MTAwMTQyRkE2IC8qIE5hdmlnYXRp
b25SZXF1ZXN0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2OUQ3N0I2MjcwMTYyNTAwMDE0MkZBNiAvKiBOYXZpZ2F0aW9uUmVxdWVzdGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDZBNzhCMzQy
Nzk5QkQ3MTAwMTE1NEZFIC8qIFdvcmtlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMUIxRDI2MjZGMThBNEIwMDg4MkRBMiAvKiBXb3Jr
ZXJPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDZBQUFBM0QyNUQzNjMyMDAwQkFGNDJGIC8qIEF1ZGlvRmlsZVJlYWRlckNvY29hLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkFBQUEzQTI1
RDM2MzE0MDBCQUY0MkYgLyogQXVkaW9GaWxlUmVhZGVyQ29jb2EuaCAqLzsgfTsKIAkJNDZCNjNG
NkMxQzZFOEQxOTAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjYzRjZCMUM2RThDREYwMDJFOTE0
QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCNjUwREQyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVu
dGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NkI2NTBEQjIyOTYyNjI3MDBGRDhBQTQgLyogUGFnZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM3Myw2ICsxMzc4LDcgQEAK
IAkJNDZDNjk2Q0MxRTcyMDVGQzAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNjk2Q0ExRTcyMDVFNDAwNTk3
OTM3IC8qIENQVU1vbml0b3IuY3BwICovOyB9OwogCQk0NkM4M0VGRTFBOUJCRTI5MDBBNzlBNDEg
LyogR2VvTm90aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2QzgzRUZDMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2Q0E5QzQ0MUY5N0JC
RTkwMDRDRkMzQSAvKiBWaXNpYmlsaXR5U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Q0E5QzQxMUY5N0JCRTcwMDRDRkMzQSAvKiBWaXNpYmls
aXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk0NkNGNTA0QTI3QUIxRUE0MDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Q0Y1
MDQ4MjdBQjFFQTEwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2RDAwMDQwMjZB
MEZFQjMwMEQxQkYxRSAvKiBTdWJtaXRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZEMDAwM0UyNkEwRkU2RjAwRDFCRjFFIC8qIFN1Ym1pdEV2
ZW50LmggKi87IH07CiAJCTQ2REJCNjUwMUFCOEM5NkYwMEQ5QTgxMyAvKiBQb3dlck9ic2VydmVy
TWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRC
QjY0RTFBQjhDOTZGMDBEOUE4MTMgLyogUG93ZXJPYnNlcnZlck1hYy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2REQ5M0Q3MjY5REU3NTYwMDFB
RkQ4OCAvKiBCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZERDkzRDUyNjlERTc0QjAwMUFGRDg4IC8qIEJy
b2FkY2FzdENoYW5uZWxJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTkxODgsNiArOTE5NCw3IEBACiAJCTQ2MjczQzIxMjdBMUNC
QzcwMDZBMTVCOSAvKiBKU0F1ZGlvV29ya2xldFByb2Nlc3NvckN1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0F1ZGlvV29ya2xldFByb2Nlc3NvckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2MjczQ0FDMjYwRTU5REYwMDZGQUE5MSAvKiBTV1NjcmlwdFN0
b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1dTY3JpcHRTdG9yYWdl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MjczQ0FFMjYwRTU5REYwMDZGQUE5
MSAvKiBTV1NjcmlwdFN0b3JhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU1dTY3JpcHRTdG9yYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDYyN0ZGNUEyNzlCODdBMjAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlcklkZW50aWZpZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VySWRlbnRpZmllci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjJFNEM0RDI2MTZBODAxMDAzQTJDNjcgLyog
U2NyaXB0QnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEJ1
ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjJFNEM0RjI2MTZBODAxMDAz
QTJDNjcgLyogU2NyaXB0QnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNjcmlwdEJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
MzQ1OTJCMUFDMjI3MTAwMEVDQjcxQyAvKiBQb3dlck9ic2VydmVyTWFjLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvd2VyT2JzZXJ2ZXJNYWMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTIzNyw4ICs5MjQ0LDYgQEAKIAkJNDY3QTY4Q0YyNzVF
QTk4OTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDY3QTY4RDAyNzVFQTk4OTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJUaHJlYWQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NjdBNjhEMTI3NUVBOThBMDA5QjMxQzUgLyogU2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlclNjcmlw
dExvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2N0E2OEQyMjc1RUE5
OEEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJl
ZFdvcmtlck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDY3QTY4RDMy
NzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2hhcmVkV29ya2VyTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2N0E2OEQ0Mjc1RUE5OEIwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2N0E2OEQ1Mjc1RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2N0E2OEQ2Mjc1RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRX
b3JrZXJUaHJlYWRQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTI1NCw2ICs5MjU5LDEyIEBACiAJ
CTQ2ODNERjNFMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2hhZG93UmVhbG1HbG9iYWxT
Y29wZUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OEVFM0EyNkREMjYw
QzAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcm9zc09yaWdp
bk1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4QjhCREUyNUNDODQ5MzAw
RjY3ODIyIC8qIEpTQmFzZUF1ZGlvQ29udGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0Jhc2VBdWRpb0NvbnRleHRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0Njk0M0RDMjI3NjNGODBDMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyUHJvdmlkZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RDNDI3NjNGODBEMDA0QjYxMEUgLyogU2hhcmVkV29y
a2VyUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyUHJvdmlkZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQzUyNzYzRjgwRDAwNEI2MTBFIC8qIFNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RD
NjI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk4NUYyMjI3
QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlcktleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NjlDQ0NGQTI2OUQwMjAyMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBCcm9hZGNhc3RDaGFubmVsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDY5Q0NDRkMyNjlEMDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQnJvYWRjYXN0Q2hhbm5lbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NjlDQ0NGRDI2OUQwMjAzMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gQnJvYWRjYXN0Q2hhbm5lbC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC05Mjk0LDYgKzkzMDUsOCBAQAogCQk0NkM4M0VGQzFBOUJCRTI5MDBBNzlBNDEgLyogR2Vv
Tm90aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VvTm90aWZpZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDQTlDNDExRjk3QkJFNzAwNENGQzNB
IC8qIFZpc2liaWxpdHlTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBW
aXNpYmlsaXR5U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDQTlDNDIx
Rjk3QkJFNzAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gVmlzaWJpbGl0eVN0YXRlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDZDRjUwNDgyN0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQ2Q0Y1MDQ5MjdBQjFFQTEwMDcwREJDOCAvKiBTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RDAwMDNDMjZB
MEZFNkYwMEQxQkYxRSAvKiBTdWJtaXRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTdWJtaXRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2RDAwMDNFMjZBMEZFNkYwMEQxQkYxRSAvKiBTdWJtaXRFdmVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTdWJtaXRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NkQwMDAzRjI2QTBGRTcwMDBEMUJGMUUgLyogU3VibWl0RXZlbnQuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFN1Ym1pdEV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIxNTU1LDYgKzIxNTY4LDggQEAKIAkJNDY0N0NFNjEyN0FBRTFEQTAwOUNC
RDQ4IC8qIGNvbnRleHQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAorCQkJCTQ2Q0Y1MDQ5MjdBQjFFQTEwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlci5jcHAgKi8sCisJCQkJNDZDRjUwNDgyN0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyLmggKi8sCiAJCQkJNDY3QTY4RDAyNzVFQTk4OTAwOUIzMUM1IC8qIFNo
YXJlZFdvcmtlclRocmVhZC5jcHAgKi8sCiAJCQkJNDY3QTY4RDQyNzVFQTk4QjAwOUIzMUM1IC8q
IFNoYXJlZFdvcmtlclRocmVhZC5oICovLAogCQkJCTQ2N0E2OENGMjc1RUE5ODkwMDlCMzFDNSAv
KiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAgKi8sCkBAIC0yMTU3Myw4ICsyMTU4OCwxMyBA
QAogCQkJCTQ2Njk0Q0U0Mjc1OTQ0OEUwMEUzMTUwRSAvKiBTaGFyZWRXb3JrZXJHbG9iYWxTY29w
ZS5jcHAgKi8sCiAJCQkJNDY2OTRDRTEyNzU5NDQ4QzAwRTMxNTBFIC8qIFNoYXJlZFdvcmtlckds
b2JhbFNjb3BlLmggKi8sCiAJCQkJNDY2OTRDRTAyNzU5NDQ4QzAwRTMxNTBFIC8qIFNoYXJlZFdv
cmtlckdsb2JhbFNjb3BlLmlkbCAqLywKLQkJCQk0NjdBNjhEMzI3NUVBOThCMDA5QjMxQzUgLyog
U2hhcmVkV29ya2VyTWFuYWdlci5jcHAgKi8sCi0JCQkJNDY3QTY4RDIyNzVFQTk4QTAwOUIzMUM1
IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCAqLywKKwkJCQk0NjI3RkY1QTI3OUI4N0EyMDBBQTM5
MTYgLyogU2hhcmVkV29ya2VySWRlbnRpZmllci5oICovLAorCQkJCTQ2OTg1RjIyMjdBNEE2ODYw
MDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCAqLywKKwkJCQk0Njk0M0RDNjI3NjNGODBFMDA0
QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgKi8sCisJCQkJNDY5NDNE
QzUyNzYzRjgwRDAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAqLywK
KwkJCQk0Njk0M0RDNzI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllci5oICovLAorCQkJCTQ2OTQzREMyMjc2M0Y4MEMwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJQ
cm92aWRlci5jcHAgKi8sCisJCQkJNDY5NDNEQzQyNzYzRjgwRDAwNEI2MTBFIC8qIFNoYXJlZFdv
cmtlclByb3ZpZGVyLmggKi8sCiAJCQkJNDY3QTY4RDEyNzVFQTk4QTAwOUIzMUM1IC8qIFNoYXJl
ZFdvcmtlclNjcmlwdExvYWRlci5jcHAgKi8sCiAJCQkJNDY3QTY4RDUyNzVFQTk4QzAwOUIzMUM1
IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oICovLAogCQkJKTsKQEAgLTMzODgwLDYgKzMz
OTAwLDcgQEAKIAkJCQkyRDQ4MUYwMjE0NkI1QzU1MDBBQTc4MzQgLyogQ3Jvc3NmYWRlR2VuZXJh
dGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQzQxNjEyMEY2NTYyRkQwMDkyRDJGQiAv
KiBDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2NzJBQTk4
MjZCMDk0MzMwMEU2RUMzOCAvKiBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LmggaW4gSGVhZGVy
cyAqLywKKwkJCQk0NkE3OEIzNDI3OTlCRDcxMDAxMTU0RkUgLyogV29ya2VyT3B0aW9ucy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDY4OEVFM0MyNkREMjYxMDAwMkFGNUM0IC8qIENyb3NzT3JpZ2lu
TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY3MkFBOTkyNkIwOTQzRjAwRTZFQzM4IC8qIENy
b3NzT3JpZ2luT3BlbmVyUG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUFCRTY3QjFEMDU4
MERCMDA2RDg2MkQgLyogQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmggaW4gSGVhZGVycyAq
LywKQEAgLTM0MDY0LDYgKzM0MDg1LDcgQEAKIAkJCQk0QjQzODY1MDIxOUNENTYxMDBGOEQzQzUg
LyogQ1NTU3R5bGVJbWFnZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFNkQwQzBBMTk4
OUNBMDA3RkI4QzUgLyogQ1NTU3R5bGVSdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBODAw
NzBBMTk1MTZFMDBBOEVGNUYgLyogQ1NTU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NDZDRjUwNEEyN0FCMUVBNDAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0QkFGRDBENjIxOTIxNDZCMDBDMEFCNjQgLyogQ1NTU3R5bGVW
YWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTRERTVDOTIxRDgzMDExRDAwMTY0RjJBIC8qIENT
U1N1cHBvcnRzUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQzU0RDA1NzE2QTc2NzMxMDA1
NzVFNEQgLyogQ1NTU3VwcG9ydHNSdWxlLmggaW4gSGVhZGVycyAqLywKQEAgLTM1NTMyLDYgKzM1
NTU0LDcgQEAKIAkJCQkxQTc1MEQ4RTBBOTBFNTIxMDAwRkYyMTUgLyogSlNOb2RlSXRlcmF0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDlDMkMzMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05vZGVM
aXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDIwQjE4RDE4RTlEMjM3MDA1QTgwODMgLyogSlNO
b2RlTGlzdEN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY5NDNEQzkyNzYzRjgxNzAwNEI2
MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTMzNTAzQ0E0MTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTEwRTJGMzMyNzZCRjY4NTAwODA5MzMzIC8qIEpTTm90aWZpY2F0aW9uRGlyZWN0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTBFMkYyQjI3NkJDRkU4MDA4MDkzMzMgLyogSlNO
b3RpZmljYXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNjY4Myw2ICszNjcwNiw3IEBA
CiAJCQkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2MDQzIC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQxMjlDOUE5MUY1OUM1NkIwMDlENzQwMyAvKiBSZWFkYWJs
ZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTZFNkZFODFC
QkQxMkRGMDAwQTNGNjQgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNDY5NDNEQzgyNzYzRjgxMjAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMjlDOUFGMUY1OUNGNUIwMDlE
NzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMjlDOUFC
MUY1OUM1NzMwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNvdXJjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkQzMTYwM0MxMkIwMjY3NjAwQzFBMzU5IC8qIFJlYWx0aW1lQW5hbHlzZXIuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzcwNjAsNiArMzcwODQsNyBAQAogCQkJCTBGNjA1QUVEMTVGOTQ4NDgw
MDRERjBDMCAvKiBTY3JvbGxpbmdDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFG
NjJFRTgxNERBMjJBNzAwNDE1NTZDIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5MzkxQTk5MTE2Mjc0NkNCMDAyOTczMzAgLyogU2Nyb2xsaW5nQ29vcmRpbmF0
b3JNYWMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2MjdGRjVCMjc5Qjg3QUYwMEFBMzkxNiAvKiBT
aGFyZWRXb3JrZXJJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTJEQkE0OTIxRjhB
RDgzMDA4RjM2QjIgLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3JUeXBlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUI0NjY1NjMyNUQxNEMwQTAwMENGRTE0IC8qIFNjcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk5MDU5QTI2RjZCRTg1MDA1NEZCRTAgLyogU2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTM3MTg2LDcgKzM3
MjExLDYgQEAKIAkJCQk4MzRERkFEMDFGN0RBRTVEMDBDMjcyNUIgLyogU2hhcmVkU3RyaW5nSGFz
aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFQTMwOTlFQjc4QzAwNTZFNTgxIC8qIFNoYXJl
ZFRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURDMDRGRTI3QTgzQzkzMDA4Q0Y5NjggLyog
U2hhcmVkVmlkZW9GcmFtZUluZm8uaCBpbiBIZWFkZXJzICovLAotCQkJCTQ2N0E2OERBMjc1RUE5
OUMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
NjdBNjhEODI3NUVBOTk1MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0NjdBNjhENzI3NUVBOTkxMDA5QjMxQzUgLyogU2hhcmVkV29ya2Vy
VGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjdBNjhEOTI3NUVBOTk4MDA5QjMxQzUgLyog
U2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCBpbiBIZWFkZXJzICovLApAQCAtMzc0MjEsNiArMzc0
NDUsNyBAQAogCQkJCUIyMjI3OUMwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdFbGxpcHNlRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5QzgwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZF
QmxlbmRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlDQjBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2OTg1
RjIzMjdBNEE2QUQwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyMjI3OUNFMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5RDEwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R0ZFQ29tcG9zaXRlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTkyMTMyNzUxMUMwRTZC
QjAwNDU2MjM4IC8qIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTM4MDY4LDYgKzM4MDkzLDcgQEAKIAkJCQk4M0FDRDAxMzI1MjI5RTEwMDAwRDEyNEUgLyog
V29ya2xldE9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNEE2QTNBMjUyNjg0NEEwMDc0
N0Y1RCAvKiBXb3JrbGV0UGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMzQkQ4MTcy
NTI0RDRGMjAwNkU3MkIzIC8qIFdvcmtsZXRQZW5kaW5nVGFza3MuaCBpbiBIZWFkZXJzICovLAor
CQkJCTQ2OTQzRENBMjc2M0Y4MUMwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMjQwOTlFNjQ5MjAwNTZFNTgxIC8qIFdyYXBDb250ZW50
c0luRHVtbXlTcGFuQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2RTZGRTgxQkJEMTJE
RjAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTlCQUYzQjI0MTJDMUEzOTgwMDAxNEJGMSAvKiBXcml0aW5nRGlyZWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dp
bmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCBkYzBmNTA5OGI4
N2YuLmZhN2QyMzAyZWMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9n
Z2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaApAQCAtMTA5LDYg
KzEwOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBNKFNlbGVjdGlvbikgXAogICAgIE0o
U2VydmljZXMpIFwKICAgICBNKFNlcnZpY2VXb3JrZXIpIFwKKyAgICBNKFNoYXJlZFdvcmtlcikg
XAogICAgIE0oU3BlbGxpbmdBbmRHcmFtbWFyKSBcCiAgICAgTShTUUxEYXRhYmFzZSkgXAogICAg
IE0oU3RvcmFnZSkgXApAQCAtMTI2LDYgKzEyNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBNKFdlYkdMKSBcCiAgICAgTShXZWJSVEMpIFwKICAgICBNKFdlYlJUQ1N0YXRzKSBcCisgICAg
TShXb3JrZXIpIFwKICAgICBNKFhSKSBcCiAgICAgTShXaGVlbEV2ZW50VGVzdE1vbml0b3IpIFwK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAKaW5k
ZXggZmU5NGZkZDhhNTE1Li45MjZkMzU3MDc4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxMyArMjYsMTcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKIAorI2luY2x1ZGUgIkNsaWVudE9y
aWdpbi5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJNZXNzYWdlQ2hhbm5lbC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisj
aW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0j
aW5jbHVkZSAiU2hhcmVkV29ya2VyTWFuYWdlci5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlclRo
cmVhZFByb3h5LmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyT3B0aW9u
cy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXJzRmFjdG9yeS5oPgogI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC00MSw4ICs0NSwzMSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChTaGFyZWRXb3JrZXIp
OwogCi1FeGNlcHRpb25PcjxSZWY8U2hhcmVkV29ya2VyPj4gU2hhcmVkV29ya2VyOjpjcmVhdGUo
RG9jdW1lbnQmIGRvY3VtZW50LCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MsIFN0cmlu
ZyYmIHNjcmlwdFVSTFN0cmluZywgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBX
b3JrZXJPcHRpb25zPj4mJiBtYXliZU9wdGlvbnMpCisjZGVmaW5lIFNIQVJFRF9XT1JLRVJfUkVM
RUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gW2lkZW50
aWZpZXI9JXtwdWJsaWN9c10gU2hhcmVkV29ya2VyOjoiIGZtdCwgdGhpcywgbV9pZGVudGlmaWVy
LnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgU0hBUkVE
X1dPUktFUl9SRUxFQVNFX0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoU2hh
cmVkV29ya2VyLCAiJXAgLSBbaWRlbnRpZmllcj0le3B1YmxpY31zXSBTaGFyZWRXb3JrZXI6OiIg
Zm10LCB0aGlzLCBtX2lkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAjI19fVkFf
QVJHU19fKQorCitzdGF0aWMgSGFzaE1hcDxTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBT
aGFyZWRXb3JrZXIqPiYgYWxsU2hhcmVkV29ya2VycygpCit7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLCBTaGFyZWRXb3JrZXIqPj4gYWxsU2hhcmVkV29ya2VyczsKKyAgICBy
ZXR1cm4gYWxsU2hhcmVkV29ya2VyczsKK30KKworU2hhcmVkV29ya2VyKiBTaGFyZWRXb3JrZXI6
OmZyb21JZGVudGlmaWVyKFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgaWRlbnRpZmllcikK
K3sKKyAgICByZXR1cm4gYWxsU2hhcmVkV29ya2VycygpLmdldChpZGVudGlmaWVyKTsKK30KKwor
c3RhdGljIGlubGluZSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKiBtYWluVGhyZWFkQ29u
bmVjdGlvbigpCiB7CisgICAgcmV0dXJuIFNoYXJlZFdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24o
KS5zaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxTaGFyZWRX
b3JrZXI+PiBTaGFyZWRXb3JrZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZyYm
IHNjcmlwdFVSTFN0cmluZywgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBXb3Jr
ZXJPcHRpb25zPj4mJiBtYXliZU9wdGlvbnMpCit7CisgICAgaWYgKCFtYWluVGhyZWFkQ29ubmVj
dGlvbigpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJT
aGFyZWQgd29ya2VycyBhcmUgbm90IHN1cHBvcnRlZCIgfTsKKwogICAgIGlmICghZG9jdW1lbnQu
c2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3NTaGFyZWRXb3JrZXJzKGRvY3VtZW50LnRvcE9yaWdp
bigpKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJUaGlzIGlm
cmFtZSBkb2Vzbid0IGhhdmUgc3RvcmFnZSBhY2Nlc3MiX3MgfTsKIApAQCAtNjcsMjYgKzk0LDMw
IEBAIEV4Y2VwdGlvbk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBTaGFyZWRXb3JrZXI6OmNyZWF0ZShE
b2N1bWVudCYgZG9jdW1lbnQsIEpTQzo6UnVuCiAgICAgYXV0byBjaGFubmVsID0gTWVzc2FnZUNo
YW5uZWw6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgYXV0byB0cmFuc2ZlcnJlZFBvcnQgPSBjaGFu
bmVsLT5wb3J0MigpLmRpc2VudGFuZ2xlKCk7CiAKLSAgICBhdXRvIHNoYXJlZFdvcmtlciA9IGFk
b3B0UmVmKCpuZXcgU2hhcmVkV29ya2VyKGRvY3VtZW50LCBjaGFubmVsLT5wb3J0MSgpLCBydW50
aW1lRmxhZ3MpKTsKKyAgICBhdXRvIHNoYXJlZFdvcmtlciA9IGFkb3B0UmVmKCpuZXcgU2hhcmVk
V29ya2VyKGRvY3VtZW50LCBjaGFubmVsLT5wb3J0MSgpKSk7CiAgICAgc2hhcmVkV29ya2VyLT5z
dXNwZW5kSWZOZWVkZWQoKTsKIAotICAgIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNpbmdsZXRvbigp
LmNvbm5lY3QodXJsLCBzaGFyZWRXb3JrZXIuZ2V0KCksIFdURk1vdmUodHJhbnNmZXJyZWRQb3J0
KSwgV1RGTW92ZShvcHRpb25zKSk7CisgICAgQ2xpZW50T3JpZ2luIGNsaWVudE9yaWdpbiB7IGRv
Y3VtZW50LnRvcERvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCksIGRvY3VtZW50LnNl
Y3VyaXR5T3JpZ2luKCkuZGF0YSgpIH07CisgICAgbWFpblRocmVhZENvbm5lY3Rpb24oKS0+cmVx
dWVzdFNoYXJlZFdvcmtlcihjbGllbnRPcmlnaW4sIHNoYXJlZFdvcmtlci0+aWRlbnRpZmllcigp
LCB1cmwsIFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwgb3B0aW9ucyk7CiAgICAgcmV0dXJuIHNo
YXJlZFdvcmtlcjsKIH0KIAotU2hhcmVkV29ya2VyOjpTaGFyZWRXb3JrZXIoRG9jdW1lbnQmIGRv
Y3VtZW50LCBSZWY8TWVzc2FnZVBvcnQ+JiYgcG9ydCwgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGlt
ZUZsYWdzKQorU2hhcmVkV29ya2VyOjpTaGFyZWRXb3JrZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBS
ZWY8TWVzc2FnZVBvcnQ+JiYgcG9ydCkKICAgICA6IEFjdGl2ZURPTU9iamVjdCgmZG9jdW1lbnQp
CisgICAgLCBtX2lkZW50aWZpZXIoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcjo6Z2VuZXJh
dGUoKSkKICAgICAsIG1fcG9ydChXVEZNb3ZlKHBvcnQpKQogICAgICwgbV9pZGVudGlmaWVyRm9y
SW5zcGVjdG9yKCJTaGFyZWRXb3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5
OjpjcmVhdGVJZGVudGlmaWVyKCkpCi0gICAgLCBtX3J1bnRpbWVGbGFncyhydW50aW1lRmxhZ3Mp
Ci0gICAgLCBtX2NyZWF0aW9uVGltZShNb25vdG9uaWNUaW1lOjpub3coKSkKLSAgICAsIG1fcHJv
eHkoU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZSgqdGhpcykpCiB7CisgICAgU0hBUkVE
X1dPUktFUl9SRUxFQVNFX0xPRygiU2hhcmVkV29ya2VyOiIpOworICAgIGFsbFNoYXJlZFdvcmtl
cnMoKS5hZGQobV9pZGVudGlmaWVyLCB0aGlzKTsKIH0KIAogU2hhcmVkV29ya2VyOjp+U2hhcmVk
V29ya2VyKCkKIHsKLSAgICBtX3Byb3h5Lndvcmtlck9iamVjdERlc3Ryb3llZCgpOworICAgIEFT
U0VSVChhbGxTaGFyZWRXb3JrZXJzKCkuZ2V0KG1faWRlbnRpZmllcikgPT0gdGhpcyk7CisgICAg
U0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRygiflNoYXJlZFdvcmtlcjoiKTsKKyAgICBhbGxTaGFy
ZWRXb3JrZXJzKCkucmVtb3ZlKG1faWRlbnRpZmllcik7CisgICAgQVNTRVJUKCFtX2lzQWN0aXZl
KTsKIH0KIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogU2hhcmVkV29ya2VyOjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QKQEAgLTEwNCwxOSArMTM1LDI2IEBAIEV2ZW50VGFyZ2V0SW50
ZXJmYWNlIFNoYXJlZFdvcmtlcjo6ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdAogICAgIHJl
dHVybiBTaGFyZWRXb3JrZXJFdmVudFRhcmdldEludGVyZmFjZVR5cGU7CiB9CiAKLXZvaWQgU2hh
cmVkV29ya2VyOjpzdG9wKCkKK3ZvaWQgU2hhcmVkV29ya2VyOjpkaWRGYWlsTG9hZGluZygpCiB7
Ci0gICAgdGVybWluYXRlKCk7CisgICAgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPR19FUlJPUigi
fmRpZEZhaWxMb2FkaW5nOiIpOworICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqdGhpcywg
VGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5l
cnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVz
KSk7CisgICAgbV9pc0FjdGl2ZSA9IGZhbHNlOwogfQogCiBib29sIFNoYXJlZFdvcmtlcjo6dmly
dHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJveHkuaGFz
UGVuZGluZ0FjdGl2aXR5KCkgfHwgbV9pc0xvYWRpbmc7CisgICAgcmV0dXJuIG1faXNBY3RpdmU7
CiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyOjp0ZXJtaW5hdGUoKQordm9pZCBTaGFyZWRXb3JrZXI6
OnN0b3AoKQogewotICAgIG1fcHJveHkudGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKTsKKyAg
ICBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HKCJzdG9wOiIpOworICAgIG1faXNBY3RpdmUgPSBm
YWxzZTsKKyAgICBtYWluVGhyZWFkQ29ubmVjdGlvbigpLT5zaGFyZWRXb3JrZXJPYmplY3RJc0dv
aW5nQXdheShtX2lkZW50aWZpZXIpOwogfQogCisjdW5kZWYgU0hBUkVEX1dPUktFUl9SRUxFQVNF
X0xPRworI3VuZGVmIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0dfRVJST1IKKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXIuaAppbmRleCBlNTViMWNmNTUxM2QuLjg3Y2M3NWVmYmU4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsMzkgKzI3LDM1IEBACiAKICNpbmNs
dWRlICJBYnN0cmFjdFdvcmtlci5oIgogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1bnRpbWVGbGFncy5oPgorI2luY2x1ZGUgIlNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lc3NhZ2VQb3J0OwotY2xhc3MgU2hhcmVk
V29ya2VyVGhyZWFkUHJveHk7CitjbGFzcyBSZXNvdXJjZUVycm9yOwogCiBzdHJ1Y3QgV29ya2Vy
T3B0aW9uczsKIAogY2xhc3MgU2hhcmVkV29ya2VyIGZpbmFsIDogcHVibGljIEFic3RyYWN0V29y
a2VyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
KFNoYXJlZFdvcmtlcik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxTaGFy
ZWRXb3JrZXI+PiBjcmVhdGUoRG9jdW1lbnQmLCBKU0M6OlJ1bnRpbWVGbGFncywgU3RyaW5nJiYg
c2NyaXB0VVJMLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxTdHJpbmcsIFdvcmtlck9wdGlv
bnM+PiYmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFNoYXJlZFdvcmtlcj4+IGNyZWF0
ZShEb2N1bWVudCYsIFN0cmluZyYmIHNjcmlwdFVSTCwgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlh
bnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4mJik7CiAgICAgflNoYXJlZFdvcmtlcigpOwogCisg
ICAgc3RhdGljIFNoYXJlZFdvcmtlciogZnJvbUlkZW50aWZpZXIoU2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcik7CisgICAgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBpZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgTWVzc2FnZVBvcnQmIHBvcnQo
KSBjb25zdCB7IHJldHVybiBtX3BvcnQuZ2V0KCk7IH0KLSAgICBKU0M6OlJ1bnRpbWVGbGFncyBy
dW50aW1lRmxhZ3MoKSB7IHJldHVybiBtX3J1bnRpbWVGbGFnczsgfQogCiAgICAgY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyRm9ySW5zcGVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVy
Rm9ySW5zcGVjdG9yOyB9Ci0gICAgTW9ub3RvbmljVGltZSBjcmVhdGlvblRpbWUoKSBjb25zdCB7
IHJldHVybiBtX2NyZWF0aW9uVGltZTsgfQogCi0gICAgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkm
IHByb3h5KCkgeyByZXR1cm4gbV9wcm94eTsgfQotCi0gICAgdm9pZCBzZXRJc0xvYWRpbmcoYm9v
bCBpc0xvYWRpbmcpIHsgbV9pc0xvYWRpbmcgPSBpc0xvYWRpbmc7IH0KKyAgICB2b2lkIGRpZEZh
aWxMb2FkaW5nKCk7CiAKICAgICAvLyBFdmVudFRhcmdldC4KICAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6
Ci0gICAgU2hhcmVkV29ya2VyKERvY3VtZW50JiwgUmVmPE1lc3NhZ2VQb3J0PiYmLCBKU0M6OlJ1
bnRpbWVGbGFncyk7Ci0KLSAgICB2b2lkIHRlcm1pbmF0ZSgpOworICAgIFNoYXJlZFdvcmtlcihE
b2N1bWVudCYsIFJlZjxNZXNzYWdlUG9ydD4mJik7CiAKICAgICAvLyBFdmVudFRhcmdldC4KICAg
ICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFs
OwpAQCAtNzAsMTIgKzY2LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCB2aXJ0dWFsSGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAKIAorICAgIFNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFJlZjxNZXNzYWdlUG9ydD4gbV9wb3J0OwogICAgIFN0
cmluZyBtX2lkZW50aWZpZXJGb3JJbnNwZWN0b3I7Ci0gICAgSlNDOjpSdW50aW1lRmxhZ3MgbV9y
dW50aW1lRmxhZ3M7Ci0gICAgTW9ub3RvbmljVGltZSBtX2NyZWF0aW9uVGltZTsKLSAgICBTaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eSYgbV9wcm94eTsgLy8gVGhlIHByb3h5IG91dGxpdmVzIHRoZSB3
b3JrZXIgdG8gcGVyZm9ybSB0aHJlYWQgc2h1dGRvd24uCi0gICAgYm9vbCBtX2lzTG9hZGluZyB7
IGZhbHNlIH07CisgICAgYm9vbCBtX2lzQWN0aXZlIHsgdHJ1ZSB9OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlci5pZGwKaW5kZXggYjE3MWM5ZWRmODFiLi40Yzc0MTU0ZDgyMDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmlkbApAQCAtMjgsNyArMjgsNyBA
QAogICAgIEV4cG9zZWQ9V2luZG93CiBdCiBpbnRlcmZhY2UgU2hhcmVkV29ya2VyIDogRXZlbnRU
YXJnZXQgewotICBbQ2FsbFdpdGg9RG9jdW1lbnQmUnVudGltZUZsYWdzXSBjb25zdHJ1Y3RvcihV
U1ZTdHJpbmcgc2NyaXB0VVJMLCBvcHRpb25hbCAoRE9NU3RyaW5nIG9yIFdvcmtlck9wdGlvbnMp
IG9wdGlvbnMpOworICBbQ2FsbFdpdGg9RG9jdW1lbnRdIGNvbnN0cnVjdG9yKFVTVlN0cmluZyBz
Y3JpcHRVUkwsIG9wdGlvbmFsIChET01TdHJpbmcgb3IgV29ya2VyT3B0aW9ucykgb3B0aW9ucyk7
CiAKICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lc3NhZ2VQb3J0IHBvcnQ7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFsU2Nv
cGUuY3BwCmluZGV4IDQxMjFlYjU4YzIwNS4uM2M1NWE2ODdiZjg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI2LDYgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVk
V29ya2VyR2xvYmFsU2NvcGUuaCIKIAorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRl
ICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIu
aCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJl
YWQuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCkBAIC0zMywxNyArMzks
NDQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwo
U2hhcmVkV29ya2VyR2xvYmFsU2NvcGUpOwogCisjZGVmaW5lIFNDT1BFX1JFTEVBU0VfTE9HKGZt
dCwgLi4uKSBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFtzaGFyZWRXb3JrZXJJZGVu
dGlmaWVyPSUiIFBSSXU2NCAiXSBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTo6IiBmbXQsIHRoaXMs
IHRoaXMtPnRocmVhZCgpLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQor
CiBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTo6U2hhcmVkV29ya2VyR2xvYmFsU2NvcGUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbXMsIFJlZjxTZWN1cml0
eU9yaWdpbj4mJiBvcmlnaW4sIFdvcmtlclRocmVhZCYgdGhyZWFkLCBSZWY8U2VjdXJpdHlPcmln
aW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlv
blByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIpCiAgICAgOiBXb3JrZXJHbG9i
YWxTY29wZShXb3JrZXJUaHJlYWRUeXBlOjpTaGFyZWRXb3JrZXIsIHBhcmFtcywgV1RGTW92ZShv
cmlnaW4pLCB0aHJlYWQsIFdURk1vdmUodG9wT3JpZ2luKSwgY29ubmVjdGlvblByb3h5LCBzb2Nr
ZXRQcm92aWRlcikKICAgICAsIG1fbmFtZShuYW1lKQogeworICAgIFNDT1BFX1JFTEVBU0VfTE9H
KCJTaGFyZWRXb3JrZXJHbG9iYWxTY29wZToiKTsKICAgICByZWxheEFkb3B0aW9uUmVxdWlyZW1l
bnQoKTsKICAgICBhcHBseUNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyhwYXJh
bXMuY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzKTsKIH0KIAorU2hhcmVkV29y
a2VyVGhyZWFkJiBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTo6dGhyZWFkKCkKK3sKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8U2hhcmVkV29ya2VyVGhyZWFkJj4oV29ya2VyR2xvYmFsU2NvcGU6OnRo
cmVhZCgpKTsKK30KKwogdm9pZCBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTo6Y2xvc2UoKQogewor
ICAgIFNDT1BFX1JFTEVBU0VfTE9HKCJjbG9zZToiKTsKICAgICB0aHJlYWQoKS5zdG9wKG51bGxw
dHIpOwogfQogCisvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93b3Jr
ZXJzLmh0bWwjZG9tLXNoYXJlZHdvcmtlciBzdGVwIDExLjUKK3ZvaWQgU2hhcmVkV29ya2VyR2xv
YmFsU2NvcGU6OnBvc3RDb25uZWN0RXZlbnQoVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHRyYW5z
ZmVycmVkUG9ydCwgU3RyaW5nJiYgc291cmNlT3JpZ2luKQoreworICAgIFNDT1BFX1JFTEVBU0Vf
TE9HKCJwb3N0Q29ubmVjdEV2ZW50OiIpOworICAgIGF1dG8gc2VyaWFsaXplZFNjcmlwdFZhbHVl
ID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoIiIpOworICAgIEFTU0VSVChzZXJpYWxp
emVkU2NyaXB0VmFsdWUpOworICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQ
b3J0cygqdGhpcywgeyBXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCkgfSk7CisgICAgQVNTRVJUKHBv
cnRzLnNpemUoKSA9PSAxKTsKKyAgICBhdXRvIHBvcnQgPSBwb3J0c1swXTsKKyAgICBBU1NFUlQo
cG9ydCk7CisgICAgYXV0byBldmVudCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUocG9y
dHMpLCBzZXJpYWxpemVkU2NyaXB0VmFsdWUucmVsZWFzZU5vbk51bGwoKSwgc291cmNlT3JpZ2lu
LCB7IH0sIHBvcnQpOworICAgIGV2ZW50LT5pbml0RXZlbnQoZXZlbnROYW1lcygpLmNvbm5lY3RF
dmVudCwgZmFsc2UsIGZhbHNlKTsKKworICAgIGRpc3BhdGNoRXZlbnQoV1RGTW92ZShldmVudCkp
OworfQorCisjdW5kZWYgU0NPUEVfUkVMRUFTRV9MT0cKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
ckdsb2JhbFNjb3BlLmgKaW5kZXggZjM3NzliODRkMTUwLi4xNWRkYzUzOGRiNmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2JhbFNjb3Bl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFs
U2NvcGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNSwxMSArMjUsMTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJNZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0cy5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAj
aW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IFNoYXJlZFdvcmtlclRocmVhZDsKIHN0cnVjdCBXb3JrZXJQYXJhbWV0ZXJzOwogCiBjbGFzcyBT
aGFyZWRXb3JrZXJHbG9iYWxTY29wZSBmaW5hbCA6IHB1YmxpYyBXb3JrZXJHbG9iYWxTY29wZSB7
CkBAIC0zOSw3ICs0MSwxMSBAQCBwdWJsaWM6CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBUeXBlOjpTaGFyZWRXb3JrZXI7IH0KICAgICBjb25zdCBTdHJpbmcmIG5hbWUo
KSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICBTaGFyZWRXb3JrZXJUaHJlYWQmIHRocmVh
ZCgpOworCisgICAgdm9pZCBwb3N0Q29ubmVjdEV2ZW50KFRyYW5zZmVycmVkTWVzc2FnZVBvcnQm
JiwgU3RyaW5nJiYgc291cmNlT3JpZ2luKTsKICAgICB2b2lkIGNsb3NlKCk7CisKIHByaXZhdGU6
CiAgICAgU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBX
b3JrZXJQYXJhbWV0ZXJzJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmLCBXb3JrZXJUaHJlYWQmLCBS
ZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Q
cm94eSosIFNvY2tldFByb3ZpZGVyKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjg3YTk3MjEwNDg3OQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaApAQCAt
MCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYv
T2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gU2hhcmVk
V29ya2VySWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgU2hhcmVkV29ya2VySWRlbnRpZmllciA9
IE9iamVjdElkZW50aWZpZXI8U2hhcmVkV29ya2VySWRlbnRpZmllclR5cGU+OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlcktleS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNWY5
ZTZkYzkwYmE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyS2V5LmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiQ2xpZW50T3JpZ2luLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hl
ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgU2hhcmVkV29ya2VyS2V5IHsKKyAg
ICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luOworICAgIFVSTCB1cmw7CisgICAgU3RyaW5n
IG5hbWU7CisKKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7Cit9OworCitpbmxpbmUgdW5zaWdu
ZWQgU2hhcmVkV29ya2VyS2V5OjpoYXNoKCkgY29uc3QKK3sKKyAgICBIYXNoZXIgaGFzaGVyOwor
ICAgIGFkZChoYXNoZXIsIG9yaWdpbi5oYXNoKCkpOworICAgIGFkZChoYXNoZXIsIHVybCk7Cisg
ICAgYWRkKGhhc2hlciwgbmFtZSk7CisgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7Cit9CisKK2lu
bGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkV29ya2VyS2V5JiBhLCBjb25zdCBTaGFy
ZWRXb3JrZXJLZXkmIGIpCit7CisgICAgcmV0dXJuIGEub3JpZ2luID09IGIub3JpZ2luICYmIGEu
dXJsID09IGIudXJsICYmIGEubmFtZSA9PSBiLm5hbWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNo
PFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleT4geworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNv
bnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYga2V5KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGtleS5oYXNoKCk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViQ29y
ZTo6U2hhcmVkV29ya2VyS2V5JiBhLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIGIp
CisgICAgeworICAgICAgICByZXR1cm4gYSA9PSBiOworICAgIH0KKworICAgIHN0YXRpYyBjb25z
dCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Cit9OworCit0ZW1w
bGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleT4gOiBHZW5l
cmljSGFzaFRyYWl0czxXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk+IHsKKyAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNlOworICAgIHN0YXRpYyB2b2lkIGNv
bnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIHNsb3QpIHsgbmV3
IChOb3ROdWxsLCAmc2xvdC51cmwpIFVSTChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7IH0K
KyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJLZXkmIHNsb3QpIHsgcmV0dXJuIHNsb3QudXJsLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7
IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggN2Q1ZTY5Y2Q3Nzk1Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwxMjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJTaGFyZWRXb3JrZXJNYW5hZ2VyLmgiCi0KLSNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQ
b2xpY3kuaCIKLSNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiTG9hZGVyU3RyYXRl
Z3kuaCIKLSNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3Jr
ZXJHbG9iYWxTY29wZS5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oIgot
I2luY2x1ZGUgIlNoYXJlZFdvcmtlclRocmVhZC5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlclRo
cmVhZFByb3h5LmgiCi0jaW5jbHVkZSAiV29ya2VyUnVuTG9vcC5oIgotI2luY2x1ZGUgIldvcmtl
clNjcmlwdExvYWRlci5oIgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1
ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU2hhcmVkV29ya2Vy
TWFuYWdlciYgU2hhcmVkV29ya2VyTWFuYWdlcjo6c2luZ2xldG9uKCkKLXsKLSAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8U2hhcmVkV29ya2VyTWFuYWdlcj4gaW5zdGFuY2U7Ci0gICAgcmV0dXJu
IGluc3RhbmNlLmdldCgpOwotfQotCi12b2lkIFNoYXJlZFdvcmtlck1hbmFnZXI6OmNvbm5lY3Qo
Y29uc3QgVVJMJiB1cmwsIFNoYXJlZFdvcmtlciYgd29ya2VyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQ
b3J0JiYgbWVzc2FnZVBvcnQsIFdvcmtlck9wdGlvbnMmJiBvcHRpb25zKQotewotICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgLy8gRklYTUU6IEhhbmRsZSB3b3JrZXJzIGZyb20g
b3RoZXIgcHJvY2Vzc2VzLCB3aGljaCB3aWxsIHByb2JhYmx5IHJlcXVpcmUgbW92aW5nIGNvbm5l
Y3QgdG8gdGhlIEZyYW1lTG9hZGVyQ2xpZW50IG9yIHNvbWV0aGluZy4KLSAgICAvLyBNYXliZSBz
b21ldGhpbmcgbW9yZSBsaWtlIHdoYXQgU2VydmljZVdvcmtlcnMgZG9lcy4KLQotICAgIC8vIEZJ
WE1FOiBDaGVjayBpZiB3ZSBhbHJlYWR5IG1hZGUgYSB0aHJlYWQuCi0gICAgLy8gRklYTUU6IENo
ZWNrIGlmIHRoZXJlJ3MgYWxyZWFkeSBhIHNoYXJlZCB3b3JrZXIgYW5kIHVzZSB0aGF0IGlmIHRo
ZXJlIGlzLgotCi0gICAgYXV0byBsb2FkZXIgPSBtYWtlVW5pcXVlUmVmPFNoYXJlZFdvcmtlclNj
cmlwdExvYWRlcj4odXJsLCB3b3JrZXIsIFdURk1vdmUobWVzc2FnZVBvcnQpLCBXVEZNb3ZlKG9w
dGlvbnMpKTsKLSAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkZXItPmlkZW50aWZpZXIoKTsKLSAg
ICBtX2xvYWRlcnMuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUobG9hZGVyKSk7Ci19Ci0KLXZvaWQg
U2hhcmVkV29ya2VyTWFuYWdlcjo6c2NyaXB0TG9hZEZhaWxlZChTaGFyZWRXb3JrZXJTY3JpcHRM
b2FkZXImIGxvYWRlcikKLXsKLSAgICBBY3RpdmVET01PYmplY3Q6OnF1ZXVlVGFza1RvRGlzcGF0
Y2hFdmVudChsb2FkZXIud29ya2VyKCksIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOwotICAgIG1fbG9hZGVycy5yZW1vdmUobG9hZGVy
LmlkZW50aWZpZXIoKSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyTWFuYWdlcjo6c2NyaXB0TG9h
ZGVkU3VjY2Vzc2Z1bGx5KFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYgbG9hZGVyLCBjb25zdCBT
Y3JpcHRCdWZmZXImIHNjcmlwdEJ1ZmZlciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgU2hhcmVkV29ya2VyJiBzaGFyZWRXb3JrZXIsIFRyYW5zZmVycmVk
TWVzc2FnZVBvcnQmJiB0cmFuc2ZlcnJlZFBvcnQpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKLSAgICBhdXRvJiB3b3JrZXIgPSBsb2FkZXIud29ya2VyKCk7Ci0gICAgYXV0byYg
b3B0aW9ucyA9IGxvYWRlci5vcHRpb25zKCk7Ci0KLSAgICBhdXRvJiBwcm94eSA9IHNoYXJlZFdv
cmtlci5wcm94eSgpOwotCi0gICAgcHJveHkuc3RhcnRXb3JrZXJHbG9iYWxTY29wZSgKLSAgICAg
ICAgbG9hZGVyLnVybCgpLAotICAgICAgICBvcHRpb25zLm5hbWUsCi0gICAgICAgIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQudXNlckFnZW50KGxvYWRlci51cmwoKSksCi0gICAgICAgIHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5pc09uTGluZSgpLAotICAgICAgICBzY3Jp
cHRCdWZmZXIsCi0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY29udGVudFNlY3VyaXR5
UG9saWN5KCktPnJlc3BvbnNlSGVhZGVycygpLAotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LnNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgpLAotICAgICAg
ICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LmNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3koKSwKLSAg
ICAgICAgd29ya2VyLmNyZWF0aW9uVGltZSgpLAotICAgICAgICBSZWZlcnJlclBvbGljeTo6RW1w
dHlTdHJpbmcsCi0gICAgICAgIG9wdGlvbnMudHlwZSwKLSAgICAgICAgb3B0aW9ucy5jcmVkZW50
aWFscywKLSAgICAgICAgd29ya2VyLnJ1bnRpbWVGbGFncygpCi0gICAgKTsKLSAgICBpZiAoIXBy
b3h5LnRocmVhZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSRUxFQVNFX0FTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzPERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0
KSk7Ci0gICAgYXV0byBzb3VyY2VPcmlnaW4gPSBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkuc2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpOwotCi0gICAgcHJveHku
dGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFzayhbdHJhbnNmZXJyZWRQb3J0ID0gV1RGTW92ZSh0
cmFuc2ZlcnJlZFBvcnQpLCBzb3VyY2VPcmlnaW4gPSBXVEZNb3ZlKHNvdXJjZU9yaWdpbikuaXNv
bGF0ZWRDb3B5KCldIChhdXRvJiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSBtdXRhYmxlIHsKLSAg
ICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICAgICAgLy8gaHR0cHM6Ly9o
dG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvd29ya2Vycy5odG1sI2RvbS1zaGFyZWR3b3Jr
ZXIgc3RlcCAxMS41Ci0gICAgICAgIGF1dG8gc2VyaWFsaXplZFNjcmlwdFZhbHVlID0gU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoIiIpOwotICAgICAgICBBU1NFUlQoc2VyaWFsaXplZFNj
cmlwdFZhbHVlKTsKLSAgICAgICAgYXV0byBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBv
cnRzKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHsgV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpIH0p
OwotICAgICAgICBBU1NFUlQocG9ydHMuc2l6ZSgpID09IDEpOwotICAgICAgICBhdXRvIHBvcnQg
PSBwb3J0c1swXTsKLSAgICAgICAgQVNTRVJUKHBvcnQpOwotICAgICAgICBhdXRvIGV2ZW50ID0g
TWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIHNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5yZWxlYXNlTm9uTnVsbCgpLCBzb3VyY2VPcmlnaW4sIHsgfSwgcG9ydCk7Ci0gICAgICAgIGV2
ZW50LT5pbml0RXZlbnQoZXZlbnROYW1lcygpLmNvbm5lY3RFdmVudCwgZmFsc2UsIGZhbHNlKTsK
LQotICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzPFNo
YXJlZFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7Ci0gICAgICAg
IGF1dG8mIHdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8U2hhcmVkV29ya2VyR2xvYmFsU2Nv
cGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS5k
aXNwYXRjaEV2ZW50KFdURk1vdmUoZXZlbnQpKTsKLSAgICB9KTsKLQotICAgIG1fbG9hZGVycy5y
ZW1vdmUobG9hZGVyLmlkZW50aWZpZXIoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5kYmQzODE1OTJmMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcApAQCAtMCww
ICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVj
dC5oIgorI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5j
bHVkZSAiU2NyaXB0QnVmZmVyLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCisjaW5jbHVk
ZSAiU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgiCisjaW5jbHVkZSAiV29ya2VyRmV0Y2hSZXN1
bHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjZGVmaW5lIENPTk5FQ1RJT05fUkVMRUFT
RV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCisjZGVmaW5l
IENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9S
KFNoYXJlZFdvcmtlciwgIiVwIC0gU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6IiBmbXQs
IHRoaXMsICMjX19WQV9BUkdTX18pCisKK3N0YXRpYyB1aW50NjRfdCBsb2FkZXJJZGVudGlmaWVy
U2VlZCA9IDA7CisKK1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CisKK1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b246On5TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCkgPSBkZWZhdWx0OworCit2b2lkIFNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OmZldGNoU2NyaXB0SW5DbGllbnQoVVJMJiYgdXJs
LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIsIFdvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFdvcmtlckZldGNoUmVzdWx0Jik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGF1dG8qIHdvcmtlck9iamVj
dCA9IFNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllcik7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiZmV0Y2hTY3JpcHRJbkNsaWVudDog
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zLCB3b3JrZXI9JXAiLCBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgd29ya2Vy
T2JqZWN0KTsKKyAgICBpZiAoIXdvcmtlck9iamVjdCkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKHsgfSk7CisKKyAgICBhdXRvIGxvYWRlcklkZW50aWZpZXIgPSArK2xvYWRlcklk
ZW50aWZpZXJTZWVkOworICAgIGF1dG8gbG9hZGVyID0gbWFrZVVuaXF1ZVJlZjxTaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXI+KFdURk1vdmUodXJsKSwgKndvcmtlck9iamVjdCwgV1RGTW92ZSh3b3Jr
ZXJPcHRpb25zKSk7CisgICAgYXV0byBsb2FkZXJQdHIgPSBsb2FkZXIucHRyKCk7CisgICAgbV9s
b2FkZXJzLmFkZChsb2FkZXJJZGVudGlmaWVyLCBXVEZNb3ZlKGxvYWRlcikpOworCisgICAgbG9h
ZGVyUHRyLT5sb2FkKFt0aGlzLCBsb2FkZXJJZGVudGlmaWVyLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYgZmV0
Y2hSZXN1bHQpIG11dGFibGUgeworICAgICAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJmZXRj
aFNjcmlwdEluQ2xpZW50OiBmaW5pc2hlZCBzY3JpcHQgbG9hZCwgc3VjY2Vzcz0lZCIsIGZldGNo
UmVzdWx0LmVycm9yLmlzTnVsbCgpKTsKKyAgICAgICAgYXV0byBsb2FkZXIgPSBtX2xvYWRlcnMu
dGFrZShsb2FkZXJJZGVudGlmaWVyKTsKKyAgICAgICAgQVNTRVJUKGxvYWRlcik7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGZldGNoUmVzdWx0KTsKKyAgICB9KTsKK30KKwordm9pZCBTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRGYWlsdXJl
KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8qIHdv
cmtlck9iamVjdCA9IFNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIoc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllcik7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUigibm90aWZ5
V29ya2VyT2JqZWN0T2ZMb2FkRmFpbHVyZTogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0l
e3B1YmxpY31zLCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSwgd29ya2VyT2JqZWN0KTsKKyAgICBpZiAod29ya2VyT2JqZWN0
KQorICAgICAgICB3b3JrZXJPYmplY3QtPmRpZEZhaWxMb2FkaW5nKCk7Cit9CisKK3ZvaWQgU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgIGF1dG8qIHdvcmtlck9iamVjdCA9IFNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZp
ZXIoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgQ09OTkVDVElPTl9SRUxFQVNF
X0xPR19FUlJPUigicG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0OiBzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyPSV7cHVibGljfXMsIHdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB3b3JrZXJPYmplY3QpOworICAgIGlm
ICh3b3JrZXJPYmplY3QpCisgICAgICAgIEFjdGl2ZURPTU9iamVjdDo6cXVldWVUYXNrVG9EaXNw
YXRjaEV2ZW50KCp3b3JrZXJPYmplY3QsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgRXJy
b3JFdmVudDo6Y3JlYXRlKGVycm9yTWVzc2FnZSwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIHsgfSkpOworfQorCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPRworI3Vu
ZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uNTE5MTFkNGExNjdkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEs
NjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5o
IgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IE1lc3NhZ2VQb3J0OworY2xhc3MgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOworCitzdHJ1Y3Qg
Q2xpZW50T3JpZ2luOworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0Oworc3RydWN0IFdvcmtlck9w
dGlvbnM7CisKK2NsYXNzIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24gOiBwdWJsaWMgUmVm
Q291bnRlZDxTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uPiB7CitwdWJsaWM6CisgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB+U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpOworCisg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoY29uc3QgQ2xpZW50T3JpZ2luJiwg
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgVVJMJiwgVHJhbnNmZXJyZWRNZXNz
YWdlUG9ydCYmLCBjb25zdCBXb3JrZXJPcHRpb25zJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
aGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
KSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICAvLyBJUEMgbWVzc2FnZXMuCisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBmZXRjaFNjcmlwdEluQ2xpZW50KFVSTCYmLCBXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLCBXb3JrZXJPcHRpb25zJiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRGYWlsdXJlKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdEV4Y2VwdGlvblRv
V29ya2VyT2JqZWN0KFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VVUkwpOworCisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbigpOworCitwcml2YXRlOgorICAgIEhhc2hNYXA8dWludDY0X3QsIFVuaXF1ZVJl
ZjxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+PiBtX2xvYWRlcnM7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9T
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi5lYmNkNGE3YWU4N2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgK
QEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
UHJvY2Vzc1F1YWxpZmllZC5oIgorI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
VHlwZSB7IH07Cit1c2luZyBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyID0gUHJvY2Vzc1F1
YWxpZmllZDxPYmplY3RJZGVudGlmaWVyPFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXJUeXBl
Pj47CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZkOGUxOTdmYTI0MgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmNwcApA
QCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlNoYXJlZFdvcmtlclByb3ZpZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Rh
dGljIFNoYXJlZFdvcmtlclByb3ZpZGVyKiBzaGFyZWRQcm92aWRlcjsKKworLy8gRm9yIFdlYktp
dExlZ2FjeS4KK2NsYXNzIER1bW15U2hhcmVkV29ya2VyUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMg
U2hhcmVkV29ya2VyUHJvdmlkZXIgeworcHVibGljOgorICAgIFNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24qIHNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKSBmaW5hbCB7IHJldHVybiBudWxscHRy
OyB9Cit9OworCitTaGFyZWRXb3JrZXJQcm92aWRlciYgU2hhcmVkV29ya2VyUHJvdmlkZXI6OnNp
bmdsZXRvbigpCit7CisgICAgaWYgKCFzaGFyZWRQcm92aWRlcikKKyAgICAgICAgc2hhcmVkUHJv
dmlkZXIgPSBuZXcgRHVtbXlTaGFyZWRXb3JrZXJQcm92aWRlcjsKKyAgICByZXR1cm4gKnNoYXJl
ZFByb3ZpZGVyOworfQorCit2b2lkIFNoYXJlZFdvcmtlclByb3ZpZGVyOjpzZXRTaGFyZWRQcm92
aWRlcihTaGFyZWRXb3JrZXJQcm92aWRlciYgbmV3UHJvdmlkZXIpCit7CisgICAgUkVMRUFTRV9B
U1NFUlQoIXNoYXJlZFByb3ZpZGVyKTsKKyAgICBzaGFyZWRQcm92aWRlciA9ICZuZXdQcm92aWRl
cjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJvdmlkZXIuaApzaW1pbGFyaXR5IGluZGV4IDY0
JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJN
YW5hZ2VyLmgKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlclByb3ZpZGVyLmgKaW5kZXggYWVmODI3OTAzNTg0Li5jYjU3Y2MxZTdiNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSwy
NiArMjUsMTcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJNZXNzYWdlUG9ydElkZW50
aWZpZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCIKLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRXb3JrZXI7Ci1jbGFzcyBTY3JpcHRCdWZmZXI7
Ci1zdHJ1Y3QgV29ya2VyT3B0aW9uczsKLXVzaW5nIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQgPSBz
dGQ6OnBhaXI8V2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdl
UG9ydElkZW50aWZpZXI+OworY2xhc3MgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjsKIAot
Y2xhc3MgU2hhcmVkV29ya2VyTWFuYWdlciB7CitjbGFzcyBTaGFyZWRXb3JrZXJQcm92aWRlciB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFNoYXJlZFdvcmtlck1hbmFnZXImIHNpbmdsZXRvbigpOwot
ICAgIHZvaWQgY29ubmVjdChjb25zdCBVUkwmLCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJlZE1l
c3NhZ2VQb3J0JiYsIFdvcmtlck9wdGlvbnMmJik7Ci0KLSAgICB2b2lkIHNjcmlwdExvYWRGYWls
ZWQoU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJik7Ci0gICAgdm9pZCBzY3JpcHRMb2FkZWRTdWNj
ZXNzZnVsbHkoU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJiwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFNoYXJlZFdvcmtlciYsIFRyYW5zZmVycmVkTWVzc2Fn
ZVBvcnQmJik7CisgICAgc3RhdGljIFNoYXJlZFdvcmtlclByb3ZpZGVyJiBzaW5nbGV0b24oKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRTaGFyZWRQcm92aWRlcihTaGFyZWRX
b3JrZXJQcm92aWRlciYpOwogCi1wcml2YXRlOgotICAgIEhhc2hNYXA8U2hhcmVkV29ya2VyU2Ny
aXB0TG9hZGVySWRlbnRpZmllciwgVW5pcXVlUmVmPFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj4+
IG1fbG9hZGVyczsKKyAgICB2aXJ0dWFsIH5TaGFyZWRXb3JrZXJQcm92aWRlcigpIHsgfQorICAg
IHZpcnR1YWwgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiogc2hhcmVkV29ya2VyQ29ubmVj
dGlvbigpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIu
Y3BwCmluZGV4IDMxMWViZDYwNzhiYy4uZWEyZTA0OGM3NjIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjksMjMgKzI5LDI2IEBACiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgotI2lu
Y2x1ZGUgIlNoYXJlZFdvcmtlck1hbmFnZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJGZXRjaFJlc3Vs
dC5oIgogI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRM
b2FkZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXI6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRlcihjb25zdCBVUkwmIHVybCwgU2hhcmVkV29ya2Vy
JiB3b3JrZXIsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBXb3JrZXJPcHRpb25zJiYg
b3B0aW9ucykKLSAgICA6IG1faWRlbnRpZmllcihTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXJJZGVu
dGlmaWVyOjpnZW5lcmF0ZSgpKQotICAgICwgbV9vcHRpb25zKFdURk1vdmUob3B0aW9ucykpCitT
aGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRlcihVUkwmJiB1
cmwsIFNoYXJlZFdvcmtlciYgd29ya2VyLCBXb3JrZXJPcHRpb25zJiYgb3B0aW9ucykKKyAgICA6
IG1fb3B0aW9ucyhXVEZNb3ZlKG9wdGlvbnMpKQogICAgICwgbV93b3JrZXIod29ya2VyKQotICAg
ICwgbV9wb3J0KFdURk1vdmUocG9ydCkpCiAgICAgLCBtX2xvYWRlcihXb3JrZXJTY3JpcHRMb2Fk
ZXI6OmNyZWF0ZSgpKQotICAgICwgbV9wZW5kaW5nQWN0aXZpdHkod29ya2VyLm1ha2VQZW5kaW5n
QWN0aXZpdHkod29ya2VyKSkKLSAgICAsIG1fdXJsKHVybCkKKyAgICAsIG1fdXJsKFdURk1vdmUo
dXJsKSkKIHsKLSAgICBtX3dvcmtlci0+c2V0SXNMb2FkaW5nKHRydWUpOwotICAgIG1fbG9hZGVy
LT5sb2FkQXN5bmNocm9ub3VzbHkoKndvcmtlci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFJl
c291cmNlUmVxdWVzdCh1cmwpLCB3b3JrZXIud29ya2VyRmV0Y2hPcHRpb25zKG9wdGlvbnMsIEZl
dGNoT3B0aW9uczo6RGVzdGluYXRpb246OlNoYXJlZHdvcmtlciksIENvbnRlbnRTZWN1cml0eVBv
bGljeUVuZm9yY2VtZW50OjpFbmZvcmNlV29ya2VyU3JjRGlyZWN0aXZlLCBTZXJ2aWNlV29ya2Vy
c01vZGU6OkFsbCwgKnRoaXMsIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOworfQorCit2
b2lkIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZChDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFdvcmtlckZldGNoUmVzdWx0Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
QVNTRVJUKCFtX2NvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBtX2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBtX2xvYWRlci0+bG9hZEFzeW5jaHJv
bm91c2x5KCptX3dvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBSZXNvdXJjZVJlcXVl
c3QobV91cmwpLCBtX3dvcmtlci0+d29ya2VyRmV0Y2hPcHRpb25zKG1fb3B0aW9ucywgRmV0Y2hP
cHRpb25zOjpEZXN0aW5hdGlvbjo6U2hhcmVkd29ya2VyKSwgQ29udGVudFNlY3VyaXR5UG9saWN5
RW5mb3JjZW1lbnQ6OkVuZm9yY2VXb3JrZXJTcmNEaXJlY3RpdmUsIFNlcnZpY2VXb3JrZXJzTW9k
ZTo6QWxsLCAqdGhpcywgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiB9CiAKIHZvaWQg
U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQpAQCAtNTUs
MTYgKzU4LDEyIEBAIHZvaWQgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50CiAKIHZvaWQgU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyOjpub3RpZnlGaW5pc2hlZCgpCiB7Ci0gICAgbV93b3JrZXItPnNldElzTG9h
ZGluZyhmYWxzZSk7CisgICAgaWYgKG1fbG9hZGVyLT5mYWlsZWQoKSkKKyAgICAgICAgcmV0dXJu
IG1fY29tcGxldGlvbkhhbmRsZXIod29ya2VyRmV0Y2hFcnJvcihtX2xvYWRlci0+ZXJyb3IoKSkp
OwogCi0gICAgYXV0byogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IG1fd29ya2VyLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKG1fbG9hZGVyLT5mYWlsZWQoKSB8fCAhc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkgewotICAgICAgICBtX3dvcmtlci0+ZGlzcGF0Y2hFdmVudChFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywg
RXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7Ci0gICAgICAgIFNoYXJlZFdvcmtlck1hbmFnZXI6
OnNpbmdsZXRvbigpLnNjcmlwdExvYWRGYWlsZWQoKnRoaXMpOyAvLyBkZWxldGVzIHRoaXMuCi0g
ICAgfSBlbHNlIHsKKyAgICBpZiAoYXV0byogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IG1fd29y
a2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG1fbG9hZGVy
LT5pZGVudGlmaWVyKCksIG1fbG9hZGVyLT5zY3JpcHQoKS50b1N0cmluZygpKTsKLSAgICAgICAg
U2hhcmVkV29ya2VyTWFuYWdlcjo6c2luZ2xldG9uKCkuc2NyaXB0TG9hZGVkU3VjY2Vzc2Z1bGx5
KCp0aGlzLCBtX2xvYWRlci0+c2NyaXB0KCksICptX3dvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBtX3dvcmtlci5nZXQoKSwgc3RkOjpleGNoYW5nZShtX3BvcnQsIHsgfSkpOyAvLyBk
ZWxldGVzIHRoaXMuCi0gICAgfQorICAgIG1fY29tcGxldGlvbkhhbmRsZXIoeyBtX2xvYWRlci0+
c2NyaXB0KCksIG1fbG9hZGVyLT5jZXJ0aWZpY2F0ZUluZm8oKSwgbV9sb2FkZXItPmNvbnRlbnRT
ZWN1cml0eVBvbGljeSgpLCBtX2xvYWRlci0+Y3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSgpLCBt
X2xvYWRlci0+cmVmZXJyZXJQb2xpY3koKSwgeyB9IH0pOyAvLyBkZWxldGVzIHRoaXMuCiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgKaW5kZXggYmYxZDRhZWYzYTA5
Li5lYjBiNzE0NWJmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJNZXNzYWdl
UG9ydElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCkBAIC0zOCwzMyArMzcsMjggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBTaGFyZWRXb3JrZXI7CiBjbGFzcyBXb3JrZXJTY3JpcHRM
b2FkZXI7Ci0KLWNsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjsKLXVzaW5nIFNoYXJlZFdv
cmtlclNjcmlwdExvYWRlcklkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFNoYXJlZFdvcmtl
clNjcmlwdExvYWRlcj47Ci0KLXVzaW5nIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQgPSBzdGQ6OnBh
aXI8V2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlUG9ydElk
ZW50aWZpZXI+Oworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0OwogCiBjbGFzcyBTaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXIgOiBwcml2YXRlIFdvcmtlclNjcmlwdExvYWRlckNsaWVudCB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgU2hhcmVkV29ya2VyU2NyaXB0
TG9hZGVyKGNvbnN0IFVSTCYsIFNoYXJlZFdvcmtlciYsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQm
JiwgV29ya2VyT3B0aW9ucyYmKTsKKyAgICBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIoVVJMJiYs
IFNoYXJlZFdvcmtlciYsIFdvcmtlck9wdGlvbnMmJik7CisKKyAgICB2b2lkIGxvYWQoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYpPiYmKTsKIAotICAgIFNo
YXJlZFdvcmtlclNjcmlwdExvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4g
bV91cmw7IH0KICAgICBTaGFyZWRXb3JrZXImIHdvcmtlcigpIHsgcmV0dXJuIG1fd29ya2VyLmdl
dCgpOyB9Ci0gICAgY29uc3QgV29ya2VyT3B0aW9ucyYgb3B0aW9ucygpIHsgcmV0dXJuIG1fb3B0
aW9uczsgfQorICAgIGNvbnN0IFdvcmtlck9wdGlvbnMmIG9wdGlvbnMoKSBjb25zdCB7IHJldHVy
biBtX29wdGlvbnM7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsK
ICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKCkgZmluYWw7CiAKLSAgICBjb25zdCBTaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBjb25zdCBXb3JrZXJP
cHRpb25zIG1fb3B0aW9uczsKICAgICBjb25zdCBSZWY8U2hhcmVkV29ya2VyPiBtX3dvcmtlcjsK
LSAgICBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0IG1fcG9ydDsKICAgICBjb25zdCBSZWY8V29ya2Vy
U2NyaXB0TG9hZGVyPiBtX2xvYWRlcjsKLSAgICBjb25zdCBSZWY8QWN0aXZlRE9NT2JqZWN0OjpQ
ZW5kaW5nQWN0aXZpdHk8U2hhcmVkV29ya2VyPj4gbV9wZW5kaW5nQWN0aXZpdHk7CiAgICAgY29u
c3QgVVJMIG1fdXJsOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0
Y2hSZXN1bHQmKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQv
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wN2E5MGQ5ODA1MTIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIgorCisj
aW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlclRocmVhZFByb3h5Lmgi
CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXImIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
OjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlcj4gc2hhcmVkTWFuYWdlcjsKKyAgICByZXR1cm4gc2hhcmVkTWFuYWdlcjsK
K30KKworU2hhcmVkV29ya2VyVGhyZWFkUHJveHkqIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
OjpzaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlm
aWVyKSBjb25zdAoreworICAgIHJldHVybiBtX3dvcmtlck1hcC5nZXQoc2hhcmVkV29ya2VySWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0b3BTaGFy
ZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyKQor
eworICAgIGF1dG8gd29ya2VyID0gbV93b3JrZXJNYXAudGFrZShzaGFyZWRXb3JrZXJJZGVudGlm
aWVyKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlcjo6c3RvcFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1
NjQgIiwgd29ya2VyPSVwIiwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpLCB3b3Jr
ZXIuZ2V0KCkpOworICAgIGlmICghd29ya2VyKQorICAgICAgICByZXR1cm47CisKKyAgICB3b3Jr
ZXItPnNldEFzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKTsKKworICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgYmUgYWJsZSB0byBkZWFsIHdpdGggdGhlIHRocmVhZCBiZWluZyB1bnJlc3BvbnNpdmUg
aGVyZS4KKworICAgIGF1dG8mIHRocmVhZCA9IHdvcmtlci0+dGhyZWFkKCk7CisgICAgdGhyZWFk
LnN0b3AoW3dvcmtlciA9IFdURk1vdmUod29ya2VyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgLy8g
U3BpbiB0aGUgcnVubG9vcCBiZWZvcmUgcmVsZWFzaW5nIHRoZSBzaGFyZWQgd29ya2VyIHRocmVh
ZCBwcm94eSwgYXMgdGhlcmUgd291bGQgb3RoZXJ3aXNlIGJlCisgICAgICAgIC8vIGEgcmFjZSB0
b3dhcmRzIGl0cyBkZXN0cnVjdGlvbi4KKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd29ya2Vy
ID0gV1RGTW92ZSh3b3JrZXIpXSB7IH0pOworICAgIH0pOworfQorCit2b2lkIFNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyOjpzdG9wQWxsU2hhcmVkV29ya2VycygpCit7CisgICAgd2hpbGUgKCFt
X3dvcmtlck1hcC5pc0VtcHR5KCkpCisgICAgICAgIHN0b3BTaGFyZWRXb3JrZXIobV93b3JrZXJN
YXAuYmVnaW4oKS0+a2V5KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6
c2V0Q29ubmVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQor
eworICAgIEFTU0VSVCghbV9jb25uZWN0aW9uIHx8IG1fY29ubmVjdGlvbi0+aXNDbG9zZWQoKSk7
CisgICAgbV9jb25uZWN0aW9uID0gV1RGTW92ZShjb25uZWN0aW9uKTsKK30KKworYXV0byBTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Y29ubmVjdGlvbigpIGNvbnN0IC0+IENvbm5lY3Rpb24q
Cit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsKK30KKwordm9pZCBTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlcjo6cmVnaXN0ZXJTaGFyZWRXb3JrZXJUaHJlYWQoUmVmPFNoYXJlZFdv
cmtlclRocmVhZFByb3h5PiYmIHByb3h5KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXI6OnJlZ2lzdGVyU2hhcmVkV29ya2VyVGhyZWFkOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUi
IFBSSXU2NCwgcHJveHktPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKworICAgIGF1dG8gcmVz
dWx0ID0gbV93b3JrZXJNYXAuYWRkKHByb3h5LT5pZGVudGlmaWVyKCksIHByb3h5LmNvcHlSZWYo
KSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKKworICAg
IHByb3h5LT50aHJlYWQoKS5zdGFydChbXShjb25zdCBTdHJpbmcmIC8qZXhjZXB0aW9uTWVzc2Fn
ZSovKSB7IH0pOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpDb25uZWN0
aW9uOjpwb3N0Q29ubmVjdEV2ZW50KFNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2Vy
SWRlbnRpZmllciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHRyYW5zZmVycmVkUG9ydCwgU3Ry
aW5nJiYgc291cmNlT3JpZ2luKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
YXV0byogcHJveHkgPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2hh
cmVkV29ya2VyKHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HKFNoYXJl
ZFdvcmtlciwgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uOjpwb3N0Q29u
bmVjdEV2ZW50OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCAiLCBwcm94eT0lcCIs
IHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSwgcHJveHkpOworICAgIGlmICghcHJv
eHkpCisgICAgICAgIHJldHVybjsKKworICAgIHByb3h5LT50aHJlYWQoKS5ydW5Mb29wKCkucG9z
dFRhc2soW3RyYW5zZmVycmVkUG9ydCA9IFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwgc291cmNl
T3JpZ2luID0gV1RGTW92ZShzb3VyY2VPcmlnaW4pLmlzb2xhdGVkQ29weSgpXSAoYXV0byYgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVCghaXNNYWluVGhy
ZWFkKCkpOworICAgICAgICBkb3duY2FzdDxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkucG9zdENvbm5lY3RFdmVudChXVEZNb3ZlKHRyYW5zZmVycmVkUG9y
dCksIFdURk1vdmUoc291cmNlT3JpZ2luKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb246OnRlcm1pbmF0ZVNoYXJlZFdvcmtlcihTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIpCit7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6dGVybWluYXRlU2hhcmVkV29ya2VyOiBz
aGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VySWRlbnRpZmllci50
b1VJbnQ2NCgpKTsKKyAgICBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCku
c3RvcFNoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
Y29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDQ3OTM3YzkxZTZiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlci5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmgiCisjaW5jbHVkZSAi
U2hhcmVkV29ya2VySWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk7CisKK2Ns
YXNzIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXImIHNpbmdsZXRvbigpOworCisg
ICAgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkqIHNoYXJlZFdvcmtlcihTaGFyZWRXb3JrZXJJZGVu
dGlmaWVyKSBjb25zdDsKKyAgICB2b2lkIHN0b3BTaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRl
bnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wQWxsU2hhcmVkV29ya2Vycygp
OworCisgICAgY2xhc3MgQ29ubmVjdGlvbiB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+Q29ubmVjdGlvbigpIHsgfQorICAg
ICAgICB2aXJ0dWFsIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtl
ck9iamVjdChTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMKSA9IDA7CisgICAgICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xv
c2VkOyB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZvaWQgc2V0QXNDbG9zZWQoKSB7IG1f
aXNDbG9zZWQgPSB0cnVlOyB9CisKKyAgICAgICAgLy8gSVBDIG1lc3NhZ2UgaGFuZGxlcnMuCisg
ICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdENvbm5lY3RFdmVudChTaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFN0cmluZyYmIHNvdXJjZU9yaWdp
bik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdGVybWluYXRlU2hhcmVkV29ya2VyKFNo
YXJlZFdvcmtlcklkZW50aWZpZXIpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCBtX2lz
Q2xvc2VkIHsgZmFsc2UgfTsKKyAgICB9OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRD
b25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBDb25uZWN0aW9uKiBjb25uZWN0aW9uKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlZ2lzdGVyU2hhcmVkV29ya2VyVGhyZWFkKFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eT4mJik7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPFNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyPjsKKworICAgIFNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyKCkgPSBkZWZhdWx0OworCisgICAgc3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+IG1fY29u
bmVjdGlvbjsKKyAgICBIYXNoTWFwPFNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFJlZjxTaGFyZWRX
b3JrZXJUaHJlYWRQcm94eT4+IG1fd29ya2VyTWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9T
aGFyZWRXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29u
dGV4dC9TaGFyZWRXb3JrZXJUaHJlYWQuY3BwCmluZGV4IDllZDU1ODhmYmQ3OS4uY2NjM2ViOTgy
NzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1No
YXJlZFdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
Y29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWQuY3BwCkBAIC0yNiwxOSArMjYsMjMgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKIAorI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oIgogI2lu
Y2x1ZGUgIldvcmtlck9iamVjdFByb3h5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hh
cmVkV29ya2VyVGhyZWFkOjpTaGFyZWRXb3JrZXJUaHJlYWQoY29uc3QgV29ya2VyUGFyYW1ldGVy
cyYgcGFyYW1ldGVycywgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2Fk
ZXJQcm94eSYgbG9hZGVyUHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkmIGRlYnVnZ2VyUHJveHks
IFdvcmtlck9iamVjdFByb3h5JiBvYmplY3RQcm94eSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0
YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJD
b25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFBy
b3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MpCitTaGFyZWRXb3JrZXJUaHJl
YWQ6OlNoYXJlZFdvcmtlclRocmVhZChTaGFyZWRXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IFNjcmlwdEJ1ZmZlciYg
c291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmIGxvYWRlclByb3h5LCBXb3JrZXJEZWJ1Z2dl
clByb3h5JiBkZWJ1Z2dlclByb3h5LCBXb3JrZXJPYmplY3RQcm94eSYgb2JqZWN0UHJveHksIFdv
cmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BP
cmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBjb25uZWN0aW9uUHJveHksIFNv
Y2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlciwgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZs
YWdzKQogICAgIDogV29ya2VyVGhyZWFkKHBhcmFtZXRlcnMsIHNvdXJjZUNvZGUsIGxvYWRlclBy
b3h5LCBkZWJ1Z2dlclByb3h5LCBvYmplY3RQcm94eSwgc3RhcnRNb2RlLCB0b3BPcmlnaW4sIGNv
bm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIHJ1bnRpbWVGbGFncykKKyAgICAsIG1faWRl
bnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV9uYW1lKHBhcmFtZXRlcnMubmFtZS5pc29sYXRl
ZENvcHkoKSkKIHsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFNoYXJlZFdv
cmtlclRocmVhZDo6U2hhcmVkV29ya2VyVGhyZWFkOiIsIHRoaXMpOwogfQogCiBSZWY8V29ya2Vy
R2xvYmFsU2NvcGU+IFNoYXJlZFdvcmtlclRocmVhZDo6Y3JlYXRlV29ya2VyR2xvYmFsU2NvcGUo
Y29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1ldGVycywgUmVmPFNlY3VyaXR5T3JpZ2luPiYm
IG9yaWdpbiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbikKIHsKKyAgICBSRUxFQVNF
X0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFNoYXJlZFdvcmtlclRocmVhZDo6Y3JlYXRlV29ya2Vy
R2xvYmFsU2NvcGU6IiwgdGhpcyk7CiAgICAgcmV0dXJuIFNoYXJlZFdvcmtlckdsb2JhbFNjb3Bl
OjpjcmVhdGUoc3RkOjpleGNoYW5nZShtX25hbWUsIHsgfSksIHBhcmFtZXRlcnMsIFdURk1vdmUo
b3JpZ2luKSwgKnRoaXMsIFdURk1vdmUodG9wT3JpZ2luKSwgaWRiQ29ubmVjdGlvblByb3h5KCks
IHNvY2tldFByb3ZpZGVyKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWQuaAppbmRleCAyZjA1NmY5
ZDU5YmIuLmY1NzM2YzJlNjBlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZC5oCkBAIC0yNSw2ICsyNSw3
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiU2hhcmVkV29ya2VySWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0z
NCwxMiArMzUsMTYgQEAgY2xhc3MgV29ya2VyT2JqZWN0UHJveHk7CiBjbGFzcyBTaGFyZWRXb3Jr
ZXJUaHJlYWQgOiBwdWJsaWMgV29ya2VyVGhyZWFkIHsKIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmPFNoYXJlZFdvcmtlclRocmVhZD4gY3JlYXRlKEFy
Z3MmJi4uLiBhcmdzKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZFdvcmtlclRocmVhZChz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsgfQorCisgICAgU2hhcmVkV29ya2VySWRlbnRp
ZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKIHByaXZh
dGU6Ci0gICAgU2hhcmVkV29ya2VyVGhyZWFkKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBjb25z
dCBTY3JpcHRCdWZmZXImIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiwgV29ya2VyRGVi
dWdnZXJQcm94eSYsIFdvcmtlck9iamVjdFByb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBj
b25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Q
cm94eSosIFNvY2tldFByb3ZpZGVyKiwgSlNDOjpSdW50aW1lRmxhZ3MpOworICAgIFNoYXJlZFdv
cmtlclRocmVhZChTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJz
JiwgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYsIFdv
cmtlckRlYnVnZ2VyUHJveHkmLCBXb3JrZXJPYmplY3RQcm94eSYsIFdvcmtlclRocmVhZFN0YXJ0
TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25u
ZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciosIEpTQzo6UnVudGltZUZsYWdzKTsKIAogICAg
IFJlZjxXb3JrZXJHbG9iYWxTY29wZT4gY3JlYXRlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgV29y
a2VyUGFyYW1ldGVycyYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiwgUmVmPFNlY3VyaXR5T3JpZ2lu
PiYmIHRvcE9yaWdpbikgZmluYWw7CiAgICAgQVNDSUlMaXRlcmFsIHRocmVhZE5hbWUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAiV2ViQ29yZTogU2hhcmVkV29ya2VyIl9zOyB9CiAKKyAgICBTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBTdHJpbmcgbV9uYW1lOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9j
b250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcAppbmRleCBlMzBhZDhiMDVkNmIuLjYz
MDQ1YjM5MDkzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29u
dGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTgwICsy
OCwxMjUgQEAKIAogI2luY2x1ZGUgIkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAi
RXJyb3JFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkV2ZW50TmFt
ZXMuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5j
bHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUg
IlJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJTaGFy
ZWRXb3JrZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIgogI2lu
Y2x1ZGUgIlNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2Vy
VGhyZWFkLmgiCisjaW5jbHVkZSAiV29ya2VyRmV0Y2hSZXN1bHQuaCIKKyNpbmNsdWRlICJXb3Jr
ZXJUaHJlYWQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0ZhY3Rvcnku
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6U2hh
cmVkV29ya2VyVGhyZWFkUHJveHkoU2hhcmVkV29ya2VyJiBzaGFyZWRXb3JrZXIpCi0gICAgOiBt
X3NoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXIpCi0gICAgLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoc2hhcmVkV29ya2VyLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAsIG1faWRlbnRp
ZmllckZvckluc3BlY3RvcihzaGFyZWRXb3JrZXIuaWRlbnRpZmllckZvckluc3BlY3RvcigpKQor
c3RhdGljIEhhc2hTZXQ8U2hhcmVkV29ya2VyVGhyZWFkUHJveHkqPiYgYWxsU2hhcmVkV29ya2Vy
VGhyZWFkUHJveGllcygpCiB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U2hh
cmVkV29ya2VyVGhyZWFkUHJveHkqPj4gc2V0OworICAgIHJldHVybiBzZXQ7CiB9CiAKLXZvaWQg
U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJM
JiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQs
IGJvb2wgaXNPbmxpbmUsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc2NyaXB0QnVmZmVyLCBjb25zdCBD
b250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVycywgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJp
dHlQb2xpY3ksIGNvbnN0IENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kmIGNyb3NzT3JpZ2luRW1i
ZWRkZXJQb2xpY3ksIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUmVmZXJyZXJQb2xpY3kgcmVm
ZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUgd29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlh
bHMgY3JlZGVudGlhbHMsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncykKK3N0YXRpYyBX
b3JrZXJQYXJhbWV0ZXJzIGdlbmVyYXRlV29ya2VyUGFyYW1ldGVycyhjb25zdCBVUkwmIHNjcmlw
dFVSTCwgY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmIHdvcmtlckZldGNoUmVzdWx0LCBXb3JrZXJP
cHRpb25zJiYgd29ya2VyT3B0aW9ucywgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIERvY3VtZW50
JiBkb2N1bWVudCkKIHsKLSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBhdXRvIHBhcmFtZXRlcnMgPSBXb3JrZXJQYXJhbWV0ZXJzIHsKKyAgICByZXR1
cm4gV29ya2VyUGFyYW1ldGVycyB7CiAgICAgICAgIHNjcmlwdFVSTCwKLSAgICAgICAgbmFtZSwK
LSAgICAgICAgbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yLAorICAgICAgICB3b3JrZXJPcHRpb25z
Lm5hbWUsCisgICAgICAgICJzaGFyZWR3b3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNG
YWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCksCiAgICAgICAgIHVzZXJBZ2VudCwKLSAgICAgICAg
aXNPbmxpbmUsCi0gICAgICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywK
LSAgICAgICAgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LAotICAg
ICAgICBjcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LAotICAgICAgICB0aW1lT3JpZ2luLAotICAg
ICAgICByZWZlcnJlclBvbGljeSwKLSAgICAgICAgd29ya2VyVHlwZSwKLSAgICAgICAgY3JlZGVu
dGlhbHMsCi0gICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2V0dGluZ3NWYWx1ZXMo
KQorICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+aXNPbkxp
bmUoKSwKKyAgICAgICAgd29ya2VyRmV0Y2hSZXN1bHQuY29udGVudFNlY3VyaXR5UG9saWN5LAor
ICAgICAgICBmYWxzZSwKKyAgICAgICAgd29ya2VyRmV0Y2hSZXN1bHQuY3Jvc3NPcmlnaW5FbWJl
ZGRlclBvbGljeSwKKyAgICAgICAgTW9ub3RvbmljVGltZTo6bm93KCksCisgICAgICAgIHsgfSwK
KyAgICAgICAgd29ya2VyT3B0aW9ucy50eXBlLAorICAgICAgICB3b3JrZXJPcHRpb25zLmNyZWRl
bnRpYWxzLAorICAgICAgICBkb2N1bWVudC5zZXR0aW5nc1ZhbHVlcygpCiAgICAgfTsKLQotICAg
IGlmICghbV93b3JrZXJUaHJlYWQpIHsKLSAgICAgICAgbV93b3JrZXJUaHJlYWQgPSBTaGFyZWRX
b3JrZXJUaHJlYWQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBzY3JpcHRCdWZmZXIsICp0aGlzLCAqdGhp
cywgKnRoaXMsIFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPnRvcE9yaWdpbigpLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlkYkNvbm5l
Y3Rpb25Qcm94eSgpLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNvY2tldFByb3ZpZGVyKCks
IHJ1bnRpbWVGbGFncyk7Ci0gICAgICAgIG1fd29ya2VyVGhyZWFkLT5zdGFydCgpOwotICAgIH0K
IH0KIAotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6dGVybWluYXRlV29ya2VyR2xvYmFs
U2NvcGUoKQorU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5
KFVuaXF1ZVJlZjxQYWdlPiYmIHBhZ2UsIFNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29y
a2VySWRlbnRpZmllciwgY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIGNvbnN0IFVS
TCYgc2NyaXB0VVJMLCBXb3JrZXJGZXRjaFJlc3VsdCYmIHdvcmtlckZldGNoUmVzdWx0LCBXb3Jr
ZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucywgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIENhY2hl
U3RvcmFnZVByb3ZpZGVyJiBjYWNoZVN0b3JhZ2VQcm92aWRlcikKKyAgICA6IG1fcGFnZShXVEZN
b3ZlKHBhZ2UpKQorICAgICwgbV9kb2N1bWVudCgqbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVu
dCgpKQorICAgICwgbV93b3JrZXJUaHJlYWQoU2hhcmVkV29ya2VyVGhyZWFkOjpjcmVhdGUoc2hh
cmVkV29ya2VySWRlbnRpZmllciwgZ2VuZXJhdGVXb3JrZXJQYXJhbWV0ZXJzKHNjcmlwdFVSTCwg
d29ya2VyRmV0Y2hSZXN1bHQsIFdURk1vdmUod29ya2VyT3B0aW9ucyksIHVzZXJBZ2VudCwgbV9k
b2N1bWVudCksIFdURk1vdmUod29ya2VyRmV0Y2hSZXN1bHQuc2NyaXB0KSwgKnRoaXMsICp0aGlz
LCAqdGhpcywgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIGNsaWVudE9yaWdpbi50b3BP
cmlnaW4uc2VjdXJpdHlPcmlnaW4oKSwgbV9kb2N1bWVudC0+aWRiQ29ubmVjdGlvblByb3h5KCks
IG1fZG9jdW1lbnQtPnNvY2tldFByb3ZpZGVyKCksIEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVB
bGxFbmFibGVkKCkpKQorICAgICwgbV9jYWNoZVN0b3JhZ2VQcm92aWRlcihjYWNoZVN0b3JhZ2VQ
cm92aWRlcikKIHsKLSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBtX2Fza2VkVG9UZXJtaW5hdGUgPSB0cnVlOwotICAgIGlmIChtX3dvcmtlclRocmVh
ZCkKLSAgICAgICAgbV93b3JrZXJUaHJlYWQtPnN0b3AobnVsbHB0cik7Ci19CisgICAgQVNTRVJU
KCFhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkuY29udGFpbnModGhpcykpOworICAgIGFs
bFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKS5hZGQodGhpcyk7CiAKLXZvaWQgU2hhcmVkV29y
a2VyVGhyZWFkUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UpCi17Ci0gICAgLy8gRklYTUU6IFNoYXJlZFdvcmtlciBk
b2Vzbid0IGhhdmUgcG9zdE1lc3NhZ2UsIHNvIHRoaXMgbWlnaHQgbm90IGJlIG5lY2Vzc2FyeS4K
LSAgICBwb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUoW21lc3NhZ2UgPSBXVEZNb3ZlKG1lc3Nh
Z2UpXShhdXRvJiBzY3JpcHRDb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byYgY29udGV4
dCA9IGRvd25jYXN0PFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRDb250ZXh0KTsKLSAg
ICAgICAgYXV0byBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKHNjcmlwdENvbnRl
eHQsIFdURk1vdmUobWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRzKSk7Ci0gICAgICAgIGNvbnRleHQu
ZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgbWVzc2Fn
ZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxsKCkpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTaGFyZWRX
b3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1bmN0aW9uPHZv
aWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiYmIHRhc2spCi17Ci0gICAgaWYgKG1fYXNrZWRU
b1Rlcm1pbmF0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29w
KCkucG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7CisgICAgc3RhdGljIGJvb2wgYWRkZWRMaXN0ZW5l
cjsKKyAgICBpZiAoIWFkZGVkTGlzdGVuZXIpIHsKKyAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPmxvYWRlclN0cmF0ZWd5KCktPmFkZE9ubGluZVN0YXRlQ2hhbmdlTGlzdGVuZXIoJm5ldHdv
cmtTdGF0ZUNoYW5nZWQpOworICAgICAgICBhZGRlZExpc3RlbmVyID0gdHJ1ZTsKKyAgICB9CiB9
CiAKLWJvb2wgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNv
bnN0CitTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6flNoYXJlZFdvcmtlclRocmVhZFByb3h5KCkK
IHsKLSAgICByZXR1cm4gbV9oYXNQZW5kaW5nQWN0aXZpdHkgJiYgIW1fYXNrZWRUb1Rlcm1pbmF0
ZTsKKyAgICBBU1NFUlQoYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGllcygpLmNvbnRhaW5zKHRo
aXMpKTsKKyAgICBhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkucmVtb3ZlKHRoaXMpOwog
fQogCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojp3b3JrZXJPYmplY3REZXN0cm95ZWQo
KQorU2hhcmVkV29ya2VySWRlbnRpZmllciBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6aWRlbnRp
ZmllcigpIGNvbnN0CiB7Ci0gICAgbV9zaGFyZWRXb3JrZXIgPSBudWxscHRyOwotICAgIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXNdIChhdXRvJikgewotICAgICAgICBt
X21heUJlRGVzdHJveWVkID0gdHJ1ZTsKLSAgICAgICAgaWYgKG1fd29ya2VyVGhyZWFkKQotICAg
ICAgICAgICAgdGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpOwotICAgIH0pOwor
ICAgIHJldHVybiBtX3dvcmtlclRocmVhZC0+aWRlbnRpZmllcigpOwogfQogCiB2b2lkIFNoYXJl
ZFdvcmtlclRocmVhZFByb3h5Ojpub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9vbCBpc09ubGlu
ZSkKIHsKLSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAoIW1fd29ya2VyVGhyZWFkKQorICAgIGlmIChtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0
ZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9z
dFRhc2soW2lzT25saW5lXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAg
IHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW2lzT25saW5lXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICBhdXRvJiBnbG9iYWxT
Y29wZSA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KTsKICAgICAgICAgZ2xv
YmFsU2NvcGUuc2V0SXNPbmxpbmUoaXNPbmxpbmUpOwotICAgICAgICBnbG9iYWxTY29wZS5kaXNw
YXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoaXNPbmxpbmUgPyBldmVudE5hbWVzKCkub25saW5lRXZl
bnQgOiBldmVudE5hbWVzKCkub2ZmbGluZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZl
bnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJU
aHJlYWRQcm94eTo6c3VzcGVuZEZvckJhY2tGb3J3YXJkQ2FjaGUoKQotewotCi19Ci0KLXZvaWQg
U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnJlc3VtZUZvckJhY2tGb3J3YXJkQ2FjaGUoKQotewot
CisgICAgICAgIGdsb2JhbFNjb3BlLmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpE
T01NYW5pcHVsYXRpb24sIFtnbG9iYWxTY29wZSA9IFJlZiB7IGdsb2JhbFNjb3BlIH0sIGlzT25s
aW5lXSB7CisgICAgICAgICAgICBnbG9iYWxTY29wZS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3Jl
YXRlKGlzT25saW5lID8gZXZlbnROYW1lcygpLm9ubGluZUV2ZW50IDogZXZlbnROYW1lcygpLm9m
ZmxpbmVFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5v
KSk7CisgICAgICAgIH0pOworICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwog
fQogCiB2b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJP
YmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsKLSAgICBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzLCBlcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2Uu
aXNvbGF0ZWRDb3B5KCksIHNvdXJjZVVSTCA9IHNvdXJjZVVSTC5pc29sYXRlZENvcHkoKSwgbGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKLSAgICAg
ICAgaWYgKCFtX3NoYXJlZFdvcmtlcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAv
LyBXZSBkb24ndCBib3RoZXIgY2hlY2tpbmcgdGhlIGFza2VkVG9UZXJtaW5hdGUoKSBmbGFnIGhl
cmUsIGJlY2F1c2UgZXhjZXB0aW9ucyBzaG91bGQgKmFsd2F5cyogYmUgcmVwb3J0ZWQgZXZlbiBp
ZiB0aGUgdGhyZWFkIGlzIHRlcm1pbmF0ZWQuCi0gICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9u
YWxseSBkaWZmZXJlbnQgdGhhbiB0aGUgYmVoYXZpb3IgaW4gTWVzc2FnZVdvcmtlclRhc2ssIGJl
Y2F1c2UgdGVybWluYXRlZCB3b3JrZXJzIG5vIGxvbmdlciBkZWxpdmVyIG1lc3NhZ2VzIChzZWN0
aW9uIDQuNiBvZiB0aGUgV2ViV29ya2VyIHNwZWMpLCBidXQgdGhleSBkbyByZXBvcnQgZXhjZXB0
aW9ucy4KLSAgICAgICAgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQo
Km1fc2hhcmVkV29ya2VyLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIEVycm9yRXZlbnQ6
OmNyZWF0ZShlcnJvck1lc3NhZ2UsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVy
LCB7IH0pKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6d29y
a2VyR2xvYmFsU2NvcGVEZXN0cm95ZWQoKQotewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+cG9zdFRhc2soW3RoaXNdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewotICAgICAgICB3
b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZEludGVybmFsKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQg
U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2Fn
ZVdpdGhNZXNzYWdlUG9ydHMmJikKLXsKLQotfQotCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFBy
b3h5Ojpjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCkKLXsKLX0KLQotdm9pZCBT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wgaGFzUGVu
ZGluZ0FjdGl2aXR5KQotewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2so
W3RoaXMsIGhhc1BlbmRpbmdBY3Rpdml0eV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0g
ICAgICAgIG1faGFzUGVuZGluZ0FjdGl2aXR5ID0gaGFzUGVuZGluZ0FjdGl2aXR5OworICAgIGNh
bGxPbk1haW5UaHJlYWQoW3NoYXJlZFdvcmtlcklkZW50aWZpZXIgPSBtX3dvcmtlclRocmVhZC0+
aWRlbnRpZmllcigpLCBlcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCks
IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMID0gc291cmNlVVJMLmlzb2xhdGVk
Q29weSgpXSB7CisgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAgICAgIGNvbm5l
Y3Rpb24tPnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJJZGVudGlmaWVy
LCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMKTsKICAg
ICB9KTsKIH0KIAogUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IFNoYXJlZFdvcmtlclRo
cmVhZFByb3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+
KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIHJldHVybiBkb2N1bWVudC5wYWdlKCkt
PmNhY2hlU3RvcmFnZVByb3ZpZGVyKCkuY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpOwor
ICAgIGlmICghbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uKQorICAgICAgICBtX2NhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24gPSBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyLmNyZWF0ZUNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24oKTsKKyAgICByZXR1cm4gbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uOwogfQogCiBS
ZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbj4gU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHk6OmNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24o
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byYgZG9jdW1lbnQgPSBk
b3duY2FzdDxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgaWYgKCFk
b2N1bWVudC5wYWdlKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBkb2N1
bWVudC5wYWdlKCktPmxpYldlYlJUQ1Byb3ZpZGVyKCkuY3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyQ29ubmVjdGlvbigpOworICAgIHJldHVybiBtX3BhZ2UtPmxpYldlYlJUQ1Byb3Zp
ZGVyKCkuY3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpOwogfQog
CiB2b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQogewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+cG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGFz
ayA9IFdURk1vdmUodGFzayksIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSBtdXRh
YmxlIHsKKyAgICAgICAgdGFzay5wZXJmb3JtVGFzayhwcm90ZWN0ZWRUaGlzLT5tX2RvY3VtZW50
LmdldCgpKTsKKyAgICB9KTsKIH0KIAogYm9vbCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9z
dFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrJiYgdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQogewotICAgIGlmIChtX2Fz
a2VkVG9UZXJtaW5hdGUpCisgICAgaWYgKG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0
VGFza0Zvck1vZGUoV1RGTW92ZSh0YXNrKSwgbW9kZSk7CkBAIC0yMTgsMTYgKzE2MywzNCBAQCB2
b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEJ5
V2ViSW5zcGVjdG9yKGJvb2wpCiAKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6
d29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpCit2b2lkIFNoYXJlZFdvcmtlclRo
cmVhZFByb3h5OjpuZXR3b3JrU3RhdGVDaGFuZ2VkKGJvb2wgaXNPbkxpbmUpCit7CisgICAgZm9y
IChhdXRvKiBwcm94eSA6IGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKSkKKyAgICAgICAg
cHJveHktPm5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShpc09uTGluZSk7Cit9CisKKy8vIEZJWE1F
OiBUcnkgYW5kIHNoYXJlIGNvZGUgd2l0aCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwLgor
dm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6c2V0dXBQYWdlRm9yU2hhcmVkV29ya2VyKFBh
Z2UmIHBhZ2UsIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVu
dE9yaWdpbiwgY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmIHdvcmtlckZldGNoUmVzdWx0KQogewot
ICAgIC8vIFRoaXMgaXMgYWx3YXlzIHRoZSBsYXN0IHRhc2sgdG8gYmUgcGVyZm9ybWVkLCBzbyB0
aGUgcHJveHkgaXMgbm90IG5lZWRlZCBmb3IgY29tbXVuaWNhdGlvbgotICAgIC8vIGluIGVpdGhl
ciBzaWRlIGFueSBtb3JlLiBIb3dldmVyLCB0aGUgV29ya2VyIG9iamVjdCBtYXkgc3RpbGwgZXhp
c3QsIGFuZCBpdCBhc3N1bWVzIHRoYXQgdGhlIHByb3h5IGV4aXN0cywgdG9vLgotICAgIG1fYXNr
ZWRUb1Rlcm1pbmF0ZSA9IHRydWU7Ci0gICAgbV93b3JrZXJUaHJlYWQgPSBudWxscHRyOwotCi0g
ICAgLy8gVGhpcyBiYWxhbmNlcyB0aGUgb3JpZ2luYWwgcmVmIGluIGNvbnN0cnVjdGlvbi4KLSAg
ICBpZiAobV9tYXlCZURlc3Ryb3llZCkKLSAgICAgICAgZGVyZWYoKTsKKyAgICBhdXRvJiBtYWlu
RnJhbWUgPSBwYWdlLm1haW5GcmFtZSgpOworICAgIG1haW5GcmFtZS5sb2FkZXIoKS5pbml0Rm9y
U3ludGhlc2l6ZWREb2N1bWVudCh7IH0pOworICAgIGF1dG8gZG9jdW1lbnQgPSBEb2N1bWVudDo6
Y3JlYXRlTm9uUmVuZGVyZWRQbGFjZWhvbGRlcihtYWluRnJhbWUsIHNjcmlwdFVSTCk7CisgICAg
ZG9jdW1lbnQtPmNyZWF0ZURPTVdpbmRvdygpOworCisgICAgZG9jdW1lbnQtPnN0b3JhZ2VCbG9j
a2luZ1N0YXRlRGlkQ2hhbmdlKCk7CisKKyAgICBhdXRvIG9yaWdpbiA9IGNsaWVudE9yaWdpbi50
b3BPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKTsKKyAgICBvcmlnaW4tPnNldFN0b3JhZ2VCbG9ja2lu
Z1BvbGljeShwYWdlLnNldHRpbmdzKCkuc3RvcmFnZUJsb2NraW5nUG9saWN5KCkpOworCisgICAg
YXV0byBvcmlnaW5Bc1VSTCA9IG9yaWdpbi0+dG9VUkwoKTsKKyAgICBkb2N1bWVudC0+c2V0U2l0
ZUZvckNvb2tpZXMob3JpZ2luQXNVUkwpOworICAgIGRvY3VtZW50LT5zZXRGaXJzdFBhcnR5Rm9y
Q29va2llcyhvcmlnaW5Bc1VSTCk7CisgICAgZG9jdW1lbnQtPnNldERvbWFpbkZvckNhY2hlUGFy
dGl0aW9uKG9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSk7CisKKyAgICBpZiAoYXV0
byBwb2xpY3kgPSBwYXJzZVJlZmVycmVyUG9saWN5KHdvcmtlckZldGNoUmVzdWx0LnJlZmVycmVy
UG9saWN5LCBSZWZlcnJlclBvbGljeVNvdXJjZTo6SFRUUEhlYWRlcikpCisgICAgICAgIGRvY3Vt
ZW50LT5zZXRSZWZlcnJlclBvbGljeSgqcG9saWN5KTsKKworICAgIG1haW5GcmFtZS5zZXREb2N1
bWVudChXVEZNb3ZlKGRvY3VtZW50KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29y
a2VyVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQv
U2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaAppbmRleCBjZTZjNTllMWQ5YzEuLjNkNjljYTA2NGVh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw4ICsyNSw4IEBACiAKICNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSAiU2hhcmVkV29ya2VySWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IldvcmtlckRlYnVnZ2VyUHJveHkuaCIKLSNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZVByb3h5
LmgiCiAjaW5jbHVkZSAiV29ya2VyTG9hZGVyUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJPYmpl
Y3RQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlck9wdGlvbnMuaCIKQEAgLTM0LDQ5ICszNCw1NiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENhY2hlU3RvcmFnZVByb3ZpZGVyOwor
Y2xhc3MgUGFnZTsKIGNsYXNzIFNoYXJlZFdvcmtlcjsKIGNsYXNzIFNoYXJlZFdvcmtlclRocmVh
ZDsKIAotY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkgZmluYWwgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8U2hhcmVkV29ya2VyVGhyZWFkUHJveHk+LCBwdWJsaWMgV29ya2VyR2xv
YmFsU2NvcGVQcm94eSwgcHVibGljIFdvcmtlck9iamVjdFByb3h5LCBwdWJsaWMgV29ya2VyTG9h
ZGVyUHJveHksIHB1YmxpYyBXb3JrZXJEZWJ1Z2dlclByb3h5IHsKK3N0cnVjdCBDbGllbnRPcmln
aW47CitzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7CisKK2NsYXNzIFNoYXJlZFdvcmtlclRocmVh
ZFByb3h5IGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZFdvcmtlclRo
cmVhZFByb3h5PiwgcHVibGljIFdvcmtlck9iamVjdFByb3h5LCBwdWJsaWMgV29ya2VyTG9hZGVy
UHJveHksIHB1YmxpYyBXb3JrZXJEZWJ1Z2dlclByb3h5IHsKIHB1YmxpYzoKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkmIGNyZWF0
ZShBcmdzJiYuLi4gYXJncykgeyByZXR1cm4gKm5ldyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4g
QXJncz4gc3RhdGljIFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4gY3JlYXRlKEFyZ3MmJi4u
LiBhcmdzKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZFdvcmtlclRocmVhZFByb3h5KHN0
ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgflNoYXJl
ZFdvcmtlclRocmVhZFByb3h5KCk7CiAKLSAgICBTaGFyZWRXb3JrZXJUaHJlYWQqIHRocmVhZCgp
IHsgcmV0dXJuIG1fd29ya2VyVGhyZWFkLmdldCgpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgc2V0dXBQYWdlRm9yU2hhcmVkV29ya2VyKFBhZ2UmLCBjb25zdCBVUkwmLCBjb25z
dCBDbGllbnRPcmlnaW4mLCBjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYpOwogCi0gICAgdm9pZCBz
dGFydFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBib29sIGlzT25saW5lLCBjb25zdCBTY3Jp
cHRCdWZmZXImIHNvdXJjZUNvZGUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNl
SGVhZGVycyYsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5
LCBjb25zdCBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5JiwgTW9ub3RvbmljVGltZSB0aW1lT3Jp
Z2luLCBSZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMs
IEpTQzo6UnVudGltZUZsYWdzKSBmaW5hbDsKLSAgICB2b2lkIHdvcmtlck9iamVjdERlc3Ryb3ll
ZCgpIGZpbmFsOwotICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7Ci0g
ICAgdm9pZCB0ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpIGZpbmFsOworICAgIFNoYXJlZFdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0OworICAgIFNoYXJlZFdvcmtlclRocmVh
ZCYgdGhyZWFkKCkgeyByZXR1cm4gbV93b3JrZXJUaHJlYWQuZ2V0KCk7IH0KIAotcHJpdmF0ZToK
LSAgICBleHBsaWNpdCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShTaGFyZWRXb3JrZXImKTsKKyAg
ICBib29sIGlzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzVGVy
bWluYXRpbmdPclRlcm1pbmF0ZWQ7IH0KKyAgICB2b2lkIHNldEFzVGVybWluYXRpbmdPclRlcm1p
bmF0ZWQoKSB7IG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCA9IHRydWU7IH0KIAotICAgIHZv
aWQgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpOworcHJpdmF0ZToKKyAgICBX
RUJDT1JFX0VYUE9SVCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShVbmlxdWVSZWY8UGFnZT4mJiwg
U2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgVVJMJiBz
Y3JpcHRVUkwsIFdvcmtlckZldGNoUmVzdWx0JiYsIFdvcmtlck9wdGlvbnMmJiwgY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQsIENhY2hlU3RvcmFnZVByb3ZpZGVyJik7CiAKLSAgICB2b2lkIHBvc3RN
ZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKSBmaW5h
bDsKLSAgICB2b2lkIHBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShGdW5jdGlvbjx2b2lkKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJikgZmluYWw7Ci0gICAgdm9pZCBub3RpZnlOZXR3b3Jr
U3RhdGVDaGFuZ2UoYm9vbCBpc09ubGluZSkgZmluYWw7Ci0gICAgdm9pZCBzdXNwZW5kRm9yQmFj
a0ZvcndhcmRDYWNoZSgpIGZpbmFsOwotICAgIHZvaWQgcmVzdW1lRm9yQmFja0ZvcndhcmRDYWNo
ZSgpIGZpbmFsOworICAgIC8vIFdvcmtlck9iamVjdFByb3h5LgogICAgIHZvaWQgcG9zdEV4Y2Vw
dGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpIGZpbmFsOwot
ICAgIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWQoKSBmaW5hbDsKLSAgICB2b2lkIHBv
c3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJikgZmluYWw7
Ci0gICAgdm9pZCBjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCBoYXNQZW5kaW5n
QWN0aXZpdHkpIGZpbmFsOwotICAgIHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wgaGFz
UGVuZGluZ0FjdGl2aXR5KSBmaW5hbDsKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmpl
Y3QoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJikgZmluYWwgeyB9CisgICAgdm9pZCB3b3JrZXJH
bG9iYWxTY29wZURlc3Ryb3llZCgpIGZpbmFsIHsgfQorICAgIHZvaWQgY29uZmlybU1lc3NhZ2VG
cm9tV29ya2VyT2JqZWN0KGJvb2wpIGZpbmFsIHsgfQorICAgIHZvaWQgcmVwb3J0UGVuZGluZ0Fj
dGl2aXR5KGJvb2wpIGZpbmFsIHsgfQorCisgICAgLy8gV29ya2VyTG9hZGVyUHJveHkuCiAgICAg
UmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IGNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rp
b24oKSBmaW5hbDsKICAgICBSZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVj
dGlvbj4gY3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpIGZpbmFs
OwogICAgIHZvaWQgcG9zdFRhc2tUb0xvYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
JiYpIGZpbmFsOwogICAgIGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYsIGNvbnN0IFN0cmluZyYgbW9k
ZSkgZmluYWw7CisKKyAgICAvLyBXb3JrZXJEZWJ1Z2dlclByb3h5LgogICAgIHZvaWQgcG9zdE1l
c3NhZ2VUb0RlYnVnZ2VyKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgc2V0UmVzb3Vy
Y2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3BlY3Rvcihib29sKSBmaW5hbDsKIAotICAgIFdlYWtQ
dHI8U2hhcmVkV29ya2VyPiBtX3NoYXJlZFdvcmtlcjsKLSAgICBSZWZQdHI8U2hhcmVkV29ya2Vy
VGhyZWFkPiBtX3dvcmtlclRocmVhZDsKLSAgICBjb25zdCBSZWZQdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dD4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwotICAgIGNvbnN0IFN0cmluZyBtX2lk
ZW50aWZpZXJGb3JJbnNwZWN0b3I7Ci0gICAgYm9vbCBtX2Fza2VkVG9UZXJtaW5hdGUgeyBmYWxz
ZSB9OwotICAgIGJvb2wgbV9oYXNQZW5kaW5nQWN0aXZpdHkgeyBmYWxzZSB9OwotICAgIGJvb2wg
bV9tYXlCZURlc3Ryb3llZCB7IGZhbHNlIH07CisgICAgc3RhdGljIHZvaWQgbmV0d29ya1N0YXRl
Q2hhbmdlZChib29sIGlzT25MaW5lKTsKKyAgICB2b2lkIG5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5n
ZShib29sIGlzT25saW5lKTsKKworICAgIFVuaXF1ZVJlZjxQYWdlPiBtX3BhZ2U7CisgICAgUmVm
PERvY3VtZW50PiBtX2RvY3VtZW50OworICAgIFJlZjxTaGFyZWRXb3JrZXJUaHJlYWQ+IG1fd29y
a2VyVGhyZWFkOworICAgIENhY2hlU3RvcmFnZVByb3ZpZGVyJiBtX2NhY2hlU3RvcmFnZVByb3Zp
ZGVyOworICAgIFJlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBtX2NhY2hlU3RvcmFnZUNv
bm5lY3Rpb247CisgICAgYm9vbCBtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQgeyBmYWxzZSB9
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggNzU2
ZGE4OGI0NWY3Li4yOWY0Yzc4MTgxODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMjgsNiArMjgs
NyBAQCBzZXQoV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVRfRElSfS9O
ZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zIgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50IgogICAgICIke1dFQktJVF9ESVJ9L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIiCisgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyIgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL1dlYlN0
b3JhZ2UiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvY2FjaGUiCiAgICAgIiR7
V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZSIKQEAgLTIwMiw2ICsyMDMsOSBAQCBz
ZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24KICAgICBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbgogCisgICAgTmV0d29ya1Byb2Nlc3Mv
U2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24KKyAgICBOZXR3b3Jr
UHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbgorCiAgICAgTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldAog
CiAgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbgpA
QCAtMzA1LDYgKzMwOSw4IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKIAogICAgIFdl
YlByb2Nlc3MvU3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFn
ZXIKIAorICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24KKyAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbgogICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24K
ICAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IDRj
NjYyMjBjZjEyMi4uNzIyOWMxYjk4NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC05MSw2ICs5MSw4IEBAICQoUFJPSkVDVF9ESVIpL05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5tZXNz
YWdlcy5pCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3Mv
U2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
KyQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9O
ZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9tYWMvY29t
LmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbgpAQCAtMjE3LDYgKzIxOSw4IEBAICQo
UFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGlt
ZU1lZGlhU291cmNlTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhuUHJvY2Vzc0Nvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0CmluZGV4IGUzYjU1ODQwYWUxZS4uYTg2MzI4MTQ3YjU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTYwNyw2ICs2
MDcsMTggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJT
V1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2Fn
ZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dC9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VS
ZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQv
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdC9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZXMuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VS
ZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQv
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdl
UmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTb2NrZXRDaGFubmVsTWVzc2FnZVJlY2Vp
dmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJT
b2NrZXRDaGFubmVsTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9XZWJTb2NrZXRDaGFubmVsTWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMubWFrZQppbmRleCA3YWQ0OWUzNzM1ZjQuLjM1MWZmYWUwYTU4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTMzLDYgKzEzMyw4IEBAIE1FU1NBR0VfUkVDRUlWRVJT
ID0gXAogCU5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2Fk
VGFzayBcCiAJTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrIFwKIAlOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbiBcCisJTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb24gXAorCU5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIFwKIAlOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU29ja2V0U3RyZWFtIFwKIAlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2VzcyBcCiAJTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyIFwKQEAgLTIyNSw2ICsyMjcsOCBAQCBN
RVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvU3BlZWNoL1NwZWVjaFJl
Y29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIgXAorCVdlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gXAorCVdlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NsaWVudENvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvV2ViUHJvY2VzcyBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDY4N2M4ZGI2OTEyYy4uYzdiMTdmZDcwNzg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNjYsNiArNjYsMTEgQEAKICNpbmNsdWRl
ICJXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgiCisj
aW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRT
dG9yYWdlQWNjZXNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVFRQQ29va2llQWNjZXB0UG9saWN5
Lmg+CkBAIC0xMzIsNiArMTM3LDcgQEAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtQcm9jZXNzJiBuZXQKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiAgICAgZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKCk7CiAj
ZW5kaWYKKyAgICBlc3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCk7CiB9CiAK
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoKQpAQCAtMTY2LDYgKzE3Miw3IEBAIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKICAgICB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7CiAjZW5kaWYKKyAgICB1bnJlZ2lz
dGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpoYXNVcGxvYWRTdGF0ZUNoYW5nZWQoYm9vbCBoYXNVcGxvYWQpCkBAIC0y
NzUsNiArMjgyLDE3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvCiAgICAgfQogI2VuZGlmCiAK
KyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAg
ICAgICBpZiAobV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uKQorICAgICAgICAgICAgbV9zaGFyZWRX
b3JrZXJDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJO
YW1lKCkgPT0gTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBpZiAobV9zaGFyZWRXb3JrZXJD
b250ZXh0Q29ubmVjdGlvbikKKyAgICAgICAgICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAgaWYg
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKQogICAgICAgICByZXR1cm4gcGF5
bWVudENvb3JkaW5hdG9yKCkuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7
CkBAIC0zOTgsOSArNDE2LDggQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwotI2Vsc2UK
LSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAjZW5kaWYKKyAgICBtX3NoYXJlZFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKIAogICAgIC8vIFByb3RlY3Qgb3Vyc2VsZiBh
cyB3ZSBtaWdodCBiZSBvdGhlcndpc2UgYmUgZGVsZXRlZCBkdXJpbmcgdGhpcyBmdW5jdGlvbi4K
ICAgICBSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IHByb3RlY3RvcigqdGhpcyk7
CkBAIC00NDEsNiArNDU4LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7CiAjZW5kaWYKKyAgICB1bnJl
Z2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOwogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9S
RU1PVEVfVUkpCiAgICAgbV9wYXltZW50Q29vcmRpbmF0b3IgPSBudWxscHRyOwpAQCAtMTE4Niw2
ICsxMjA0LDYxIEBAIHNpemVfdCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZmluZE5l
dHdvcmtBY3Rpdml0eVRyYWNrZXIoV2ViQ29yZTo6UmVzb3VyCiAgICAgICAgIHJldHVybiBpdGVt
LnJlc291cmNlSUQgPT0gcmVzb3VyY2VJRDsKICAgICB9KTsKIH0KKwordm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rp
b24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBy
ZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0
YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb246Iik7CisgICAgYXV0byogc2Vzc2lv
biA9IG5ldHdvcmtTZXNzaW9uKCk7CisgICAgaWYgKGF1dG8qIHN3U2VydmVyID0gc2Vzc2lvbiA/
IHNlc3Npb24tPnNoYXJlZFdvcmtlclNlcnZlcigpIDogbnVsbHB0cikKKyAgICAgICAgbV9zaGFy
ZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbj4oKnRoaXMsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4p
LCAqc3dTZXJ2ZXIpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKK3ZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb24oKQoreworICAgIGlmIChtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAgIHJl
dHVybjsKKworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOworICAgIGlmICgh
c2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhT
aGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOiIpOwor
CisgICAgYXV0byYgc2VydmVyID0gc2Vzc2lvbi0+ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCk7
CisgICAgYXV0byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uPihtX25ldHdvcmtQcm9jZXNzLCBzZXJ2ZXIsIG1fY29ubmVjdGlvbi5nZXQoKSwg
bV93ZWJQcm9jZXNzSWRlbnRpZmllcik7CisKKyAgICBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24g
PSAqY29ubmVjdGlvbjsKKyAgICBzZXJ2ZXIuYWRkQ29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rp
b24pKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xvc2VTaGFy
ZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xP
RyhTaGFyZWRXb3JrZXIsICJjbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uOiIpOwor
ICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOworfQorCit2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU2hhcmVkV29ya2VyQ29u
bmVjdGlvbigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJ1
bnJlZ2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbjoiKTsKKyAgICBpZiAobV9zaGFyZWRXb3Jr
ZXJDb25uZWN0aW9uKQorICAgICAgICBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24tPnNlcnZlcigp
LnJlbW92ZUNvbm5lY3Rpb24obV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uLT53ZWJQcm9jZXNzSWRl
bnRpZmllcigpKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKQorewor
ICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAic2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQ6Iik7CisgICAgbV9uZXR3b3Jr
UHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6U2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRl
ZCB7IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CisKKyAgICBtX3NoYXJlZFdvcmtlckNv
bnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbiogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNoYXJlZFdvcmtlckNvbm5l
Y3Rpb24oKQoreworICAgIGlmICghbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uKQorICAgICAgICBl
c3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCk7CisgICAgcmV0dXJuIG1fc2hh
cmVkV29ya2VyQ29ubmVjdGlvbi5nZXQoKTsKK30KICAgICAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU1dD
b25uZWN0aW9uKCkKQEAgLTEyMjMsOSArMTI5Niw5IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNsb3NlU1dDb250ZXh0Q29ubmVjdGlvbigpCiAgICAgbV9zd0NvbnRleHRD
b25uZWN0aW9uID0gbnVsbHB0cjsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCkKK3ZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNlcnZpY2VXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKQogewotICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0co
U2VydmljZVdvcmtlciwgInNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZDog
V2ViUHJvY2VzcyBubyBsb25nZXIgdXNlZnVsIGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycyIp
OworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgInNlcnZpY2VXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQ6IFdlYlByb2Nlc3Mgbm8g
bG9uZ2VyIHVzZWZ1bCBmb3IgcnVubmluZyBzZXJ2aWNlIHdvcmtlcnMiKTsKICAgICBtX25ldHdv
cmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5l
ZWRlZCB7IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CiAKICAgICBtX3N3Q29udGV4dENv
bm5lY3Rpb24gPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDNhMWUxNDA0
MzM4Zi4uZDBhYTRlZjc0NTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC05Miw2ICs5
Miw4IEBAIGNsYXNzIE5ldHdvcmtTb2NrZXRTdHJlYW07CiBjbGFzcyBTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwogY2xhc3MgV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlv
bjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CiAKIG5h
bWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogc3RydWN0IERhdGFLZXk7CkBAIC0xODEsMTAgKzE4Mywx
MyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShj
b25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSk+JiYp
OwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQgc2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCk7CisgICAgdm9pZCBzZXJ2aWNlV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCk7CiAgICAgV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uKiBzd0Nvbm5lY3Rpb24oKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtl
ckZldGNoVGFzaz4gY3JlYXRlRmV0Y2hUYXNrKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlmCisgICAgdm9pZCBzaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOworCisgICAgV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbiogc2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOwog
CiAgICAgTmV0d29ya1NjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSgpIHsgcmV0dXJuIG1f
c2NoZW1lUmVnaXN0cnkuZ2V0KCk7IH0KIApAQCAtMjUzLDYgKzI1OCw5IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjcmVhdGVTb2NrZXRDaGFubmVsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIFdlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXIs
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwog
ICAgIHZvaWQgdXBkYXRlUXVvdGFCYXNlZE9uU3BhY2VVc2FnZUZvclRlc3RpbmcoY29uc3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJik7CiAKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlclNl
cnZlckNvbm5lY3Rpb24oKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0
aW9uKCk7CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxpc2hT
V1NlcnZlckNvbm5lY3Rpb24oKTsKICAgICB2b2lkIGVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rp
b24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4g
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwpAQCAtMjYwLDYgKzI2OCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bnJlZ2lzdGVyU1dDb25u
ZWN0aW9uKCk7CiAjZW5kaWYKIAorICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4
dENvbm5lY3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGNsb3NlU2hh
cmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24oKTsKKwogICAgIHZvaWQgY3JlYXRlUlRDUHJvdmlk
ZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNpZiBFTkFCTEUoV0VCX1JUQykKICAg
ICB2b2lkIGNvbm5lY3RUb1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlKFdlYkNvcmU6OlJUQ0Rh
dGFDaGFubmVsSWRlbnRpZmllciBzb3VyY2UsIFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRp
ZmllciBoYW5kbGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8Ym9vbD4p
PiYmKTsKQEAgLTQwNCw2ICs0MTUsOCBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8V2ViU1dTZXJ2
ZXJDb25uZWN0aW9uPiBtX3N3Q29ubmVjdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiBtX3N3Q29udGV4dENvbm5lY3Rpb247CiAjZW5kaWYK
KyAgICBXZWFrUHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24+IG1fc2hhcmVkV29y
a2VyQ29ubmVjdGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbj4gbV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbjsKIAog
I2lmIEVOQUJMRShXRUJfUlRDKQogICAgIGJvb2wgbV9pc1JlZ2lzdGVyZWRUb1JUQ0RhdGFDaGFu
bmVsUHJveHkgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KaW5kZXggMjQyODM1MDUwYjI0Li5iOTdjYTM0NzliNGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtODgsNiArODgsOSBAQCBtZXNzYWdlcyAt
PiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgQ2xv
c2VTV0NvbnRleHRDb25uZWN0aW9uKCkKICNlbmRpZgogCisgICAgRXN0YWJsaXNoU2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBh
Z2VQcm94eUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pIC0+ICgpIEFzeW5j
CisgICAgQ2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpCisKICAgICBDcmVhdGVS
VENQcm92aWRlcigpIC0+ICgpIEFzeW5jCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgQ29ubmVj
dFRvUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2Uoc3RydWN0IFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsSWRlbnRpZmllciBzb3VyY2UsIHN0cnVjdCBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50
aWZpZXIgaGFuZGxlcikgLT4gKHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcmVzdWx0KSBBc3luYwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCBl
MmIyNGQ4MzIyYjYuLmQ3NjE2Mjg1MGNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJX
ZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2lu
Y2x1ZGUgIldlYlNXT3JpZ2luU3RvcmUuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRUYXNrLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29r
aWVKYXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgpAQCAtNjUzLDYg
KzY1NCwxMyBAQCBib29sIE5ldHdvcmtTZXNzaW9uOjpoYXNTZXJ2aWNlV29ya2VyRGF0YWJhc2VQ
YXRoKCkgY29uc3QKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorV2ViU2hh
cmVkV29ya2VyU2VydmVyJiBOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVy
KCkKK3sKKyAgICBpZiAoIW1fc2hhcmVkV29ya2VyU2VydmVyKQorICAgICAgICBtX3NoYXJlZFdv
cmtlclNlcnZlciA9IG1ha2VVbmlxdWU8V2ViU2hhcmVkV29ya2VyU2VydmVyPigqdGhpcyk7Cisg
ICAgcmV0dXJuICptX3NoYXJlZFdvcmtlclNlcnZlcjsKK30KKwogV2ViSURCU2VydmVyJiBOZXR3
b3JrU2Vzc2lvbjo6ZW5zdXJlV2ViSURCU2VydmVyKCkKIHsKICAgICBpZiAoIW1fd2ViSURCU2Vy
dmVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgK
aW5kZXggMTkzMDdjZjQwYmUzLi4zZjlkNmM5NTUwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTc5LDYgKzc5LDcgQEAgY2xhc3MgU2Vy
dmljZVdvcmtlckZldGNoVGFzazsKIGNsYXNzIFdlYklEQlNlcnZlcjsKIGNsYXNzIFdlYlBhZ2VO
ZXR3b3JrUGFyYW1ldGVyczsKIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTsK
K2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlcjsKIGNsYXNzIFdlYlNvY2tldFRhc2s7CiBjbGFz
cyBXZWJTV09yaWdpblN0b3JlOwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwpAQCAtMjEw
LDYgKzIxMSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKGJv
b2wgcHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcmJiBzZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsK
ICNlbmRpZgogCisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyKiBzaGFyZWRXb3JrZXJTZXJ2ZXIo
KSB7IHJldHVybiBtX3NoYXJlZFdvcmtlclNlcnZlci5nZXQoKTsgfQorICAgIFdlYlNoYXJlZFdv
cmtlclNlcnZlciYgZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCk7CisKICAgICBXZWJJREJTZXJ2
ZXIqIHdlYklEQlNlcnZlcigpIHsgcmV0dXJuIG1fd2ViSURCU2VydmVyLmdldCgpOyB9CiAgICAg
V2ViSURCU2VydmVyJiBlbnN1cmVXZWJJREJTZXJ2ZXIoKTsKICAgICB2b2lkIGNsb3NlSURCU2Vy
dmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0zMTgsNiArMzIyLDcgQEAgcHJv
dGVjdGVkOgogICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckluZm8+IG1fc2VydmljZVdv
cmtlckluZm87CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNXU2VydmVyPiBtX3N3U2Vy
dmVyOwogI2VuZGlmCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlcj4g
bV9zaGFyZWRXb3JrZXJTZXJ2ZXI7CiAKICAgICBTdHJpbmcgbV9pZGJEYXRhYmFzZVBhdGg7CiAg
ICAgUmVmUHRyPFdlYklEQlNlcnZlcj4gbV93ZWJJREJTZXJ2ZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IDVhODcwM2VmZDZk
NS4uMjdmNmU4ZGE1ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcApAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjptYXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllCiAKIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9u
SXNOb0xvbmdlck5lZWRlZCgpCiB7Ci0gICAgbV9jb25uZWN0aW9uLnNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25Ob0xvbmdlck5lZWRlZCgpOworICAgIG1fY29ubmVjdGlvbi5zZXJ2aWNlV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCk7CiB9CiAKIHZvaWQgV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzZXRUaHJvdHRsZVN0YXRlKGJvb2wgaXNUaHJv
dHRsZWFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJl
ZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjNjNjM2NGFhNTQwOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJl
ZFdvcmtlclNlcnZlci5jcHAKQEAgLTAsMCArMSwyOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgiCisKKyNpbmNs
dWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU2hhcmVkV29ya2Vy
U2VydmVyOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24pCisg
ICAgOiBtX3Nlc3Npb24oc2Vzc2lvbikKK3sKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVyOjp+
V2ViU2hhcmVkV29ya2VyU2VydmVyKCkgPSBkZWZhdWx0OworCitQQUw6OlNlc3Npb25JRCBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI6OnNlc3Npb25JRCgpCit7CisgICAgcmV0dXJuIG1fc2Vzc2lvbi5z
ZXNzaW9uSUQoKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFy
ZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFVSTCYm
IHVybCwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBvcnQsIFdlYkNvcmU6Oldv
cmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zKQoreworICAgIFdlYkNvcmU6OlNoYXJlZFdvcmtl
cktleSBrZXkgeyBvcmlnaW4sIHVybCwgd29ya2VyT3B0aW9ucy5uYW1lIH07CisgICAgYXV0byYg
c2hhcmVkV29ya2VyID0gbV9zaGFyZWRXb3JrZXJzLmVuc3VyZShrZXksIFsmXSB7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFNoYXJlZFdvcmtlcj4ob3JpZ2luLCB1cmwsIHdvcmtlck9wdGlv
bnMpOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3Jr
ZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXI9JXtwcml2YXRlfXMsIHNoYXJlZFdvcmtlcklkZW50aWZpZXI9
JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgc2hhcmVkV29ya2VyLT5pZGVudGlmaWVyLnRvVUludDY0KCkpOworCisgICAgaWYg
KHNoYXJlZFdvcmtlci0+d29ya2VyT3B0aW9ucy50eXBlICE9IHdvcmtlck9wdGlvbnMudHlwZSB8
fCBzaGFyZWRXb3JrZXItPndvcmtlck9wdGlvbnMuY3JlZGVudGlhbHMgIT0gd29ya2VyT3B0aW9u
cy5jcmVkZW50aWFscykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIs
ICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6IEEgd29ya2VyIGFs
cmVhZHkgZXhpc3RzIHdpdGggdGhpcyBuYW1lIGJ1dCBoYXMgZGlmZmVyZW50IHR5cGUgLyBjcmVk
ZW50aWFscyIpOworICAgICAgICBpZiAoYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1fY29ubmVj
dGlvbnMuZ2V0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIo
KSkpCisgICAgICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uLT5ub3RpZnlXb3JrZXJPYmplY3RPZkxv
YWRGYWlsdXJlKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzLmFkZChzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBwb3J0KTsKKworICAgIGlmIChzaGFyZWRXb3JrZXIt
PnNoYXJlZFdvcmtlck9iamVjdHMuc2l6ZSgpID4gMSkgeworICAgICAgICBSRUxFQVNFX0xPRyhT
aGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6
IEEgc2hhcmVkIHdvcmtlciB3aXRoIHRoaXMgVVJMIGFscmVhZHkgZXhpc3RzIChub3cgc2hhcmVk
IGJ5ICV1IHNoYXJlZCB3b3JrZXIgb2JqZWN0cykiLCBzaGFyZWRXb3JrZXItPnNoYXJlZFdvcmtl
ck9iamVjdHMuc2l6ZSgpKTsKKyAgICAgICAgaWYgKHNoYXJlZFdvcmtlci0+aXNSdW5uaW5nKSB7
CisgICAgICAgICAgICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IG1fY29udGV4dENvbm5lY3Rp
b25zLmdldChzaGFyZWRXb3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgICAgICAgICAg
QVNTRVJUKGNvbnRleHRDb25uZWN0aW9uKTsKKyAgICAgICAgICAgIGlmIChjb250ZXh0Q29ubmVj
dGlvbikKKyAgICAgICAgICAgICAgICBwb3N0Q29ubmVjdEV2ZW50KCpjb250ZXh0Q29ubmVjdGlv
biwgc2hhcmVkV29ya2VyLT5pZGVudGlmaWVyLCBwb3J0LCBvcmlnaW4uY2xpZW50T3JpZ2luLnRv
U3RyaW5nKCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJU
KCFzaGFyZWRXb3JrZXItPmlzUnVubmluZyk7CisKKyAgICBhdXRvKiBzZXJ2ZXJDb25uZWN0aW9u
ID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNz
SWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlQoc2VydmVyQ29ubmVjdGlvbik7CisKKyAgICBSRUxF
QVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFy
ZWRXb3JrZXI6IEZldGNoaW5nIHNoYXJlZCB3b3JrZXIgc2NyaXB0IGluIGNsaWVudCIpOworICAg
IHNlcnZlckNvbm5lY3Rpb24tPmZldGNoU2NyaXB0SW5DbGllbnQodXJsLCBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLCB3b3JrZXJPcHRpb25zLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRo
aXMgfSwgc2hhcmVkV29ya2VyID0gV2Vha1B0ciB7ICpzaGFyZWRXb3JrZXIgfV0oV2ViQ29yZTo6
V29ya2VyRmV0Y2hSZXN1bHQmJiBmZXRjaFJlc3VsdCkgeworICAgICAgICBpZiAod2Vha1RoaXMg
JiYgc2hhcmVkV29ya2VyKQorICAgICAgICAgICAgd2Vha1RoaXMtPmRpZEZpbmlzaEZldGNoaW5n
U2hhcmVkV29ya2VyU2NyaXB0KCpzaGFyZWRXb3JrZXIsIFdURk1vdmUoZmV0Y2hSZXN1bHQpKTsK
KyAgICB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmxhdW5jaFNoYXJlZFdv
cmtlcihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29u
bmVjdGlvbiwgU2hhcmVkV29ya2VyJiBzaGFyZWRXb3JrZXIpCit7CisgICAgUkVMRUFTRV9MT0co
U2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpsYXVuY2hTaGFyZWRXb3JrZXI6
IGNvbnRleHRDb25uZWN0aW9uPSVwLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwg
JmNvbnRleHRDb25uZWN0aW9uLCBzaGFyZWRXb3JrZXIuaWRlbnRpZmllci50b1VJbnQ2NCgpKTsK
KyAgICBjb250ZXh0Q29ubmVjdGlvbi5sYXVuY2hTaGFyZWRXb3JrZXIoc2hhcmVkV29ya2VyLm9y
aWdpbiwgc2hhcmVkV29ya2VyLmlkZW50aWZpZXIsIHNoYXJlZFdvcmtlci51cmwsIHNoYXJlZFdv
cmtlci53b3JrZXJPcHRpb25zLCBzaGFyZWRXb3JrZXIuZmV0Y2hSZXN1bHQpOworICAgIHNoYXJl
ZFdvcmtlci5pc1J1bm5pbmcgPSB0cnVlOworICAgIGF1dG8gc291cmNlT3JpZ2luID0gc2hhcmVk
V29ya2VyLm9yaWdpbi5jbGllbnRPcmlnaW4udG9TdHJpbmcoKTsKKyAgICBmb3IgKGF1dG8mIHBv
cnQgOiBzaGFyZWRXb3JrZXIuc2hhcmVkV29ya2VyT2JqZWN0cy52YWx1ZXMoKSkKKyAgICAgICAg
cG9zdENvbm5lY3RFdmVudChjb250ZXh0Q29ubmVjdGlvbiwgc2hhcmVkV29ya2VyLmlkZW50aWZp
ZXIsIHBvcnQsIHNvdXJjZU9yaWdpbik7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVy
Ojpwb3N0Q29ubmVjdEV2ZW50KFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24mIGNvbnRleHRDb25uZWN0aW9uLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNo
YXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBv
cnQmIHNvdXJjZVBvcnQsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQoreworICAgIFJFTEVB
U0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cG9zdENvbm5lY3RF
dmVudDogY29udGV4dENvbm5lY3Rpb249JXAsIHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJ
dTY0LCAmY29udGV4dENvbm5lY3Rpb24sIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQo
KSk7CisgICAgY29udGV4dENvbm5lY3Rpb24ucG9zdENvbm5lY3RFdmVudChzaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLCBzb3VyY2VQb3J0LCBzb3VyY2VPcmlnaW4pOworfQorCit2b2lkIFdlYlNoYXJl
ZFdvcmtlclNlcnZlcjo6ZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRXb3JrZXJTY3JpcHQoU2hhcmVk
V29ya2VyJiB3b3JrZXIsIFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYgZmV0Y2hSZXN1bHQp
Cit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVy
OjpkaWRGaW5pc2hGZXRjaGluZ1NoYXJlZFdvcmtlclNjcmlwdCBzaGFyZWRXb3JrZXJJZGVudGlm
aWVyPSUiIFBSSXU2NCAiLCB3b3JrZXI9JXAsIHN1Y2Nlc3M9JWQiLCB3b3JrZXIuaWRlbnRpZmll
ci50b1VJbnQ2NCgpLCAmd29ya2VyLCBmZXRjaFJlc3VsdC5lcnJvci5pc051bGwoKSk7CisgICAg
aWYgKCFmZXRjaFJlc3VsdC5lcnJvci5pc051bGwoKSkgeworICAgICAgICAvLyBGZXRjaCBmYWls
ZWQsIG5vdGlmeSB0aGUgU2hhcmVkV29ya2VyIG9iamVjdHMuCisgICAgICAgIGZvciAoYXV0byBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIDogd29ya2VyLnNoYXJlZFdvcmtlck9iamVjdHMu
a2V5cygpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1fY29u
bmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZp
ZXIoKSkpCisgICAgICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlvbi0+bm90aWZ5V29ya2VyT2Jq
ZWN0T2ZMb2FkRmFpbHVyZShzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICAgICAg
fQorICAgICAgICBtX3NoYXJlZFdvcmtlcnMucmVtb3ZlKHdvcmtlci5rZXkoKSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICB3b3JrZXIuZmV0Y2hSZXN1bHQgPSBXVEZNb3ZlKGZldGNo
UmVzdWx0KTsKKworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSB3b3JrZXIucmVnaXN0cmFi
bGVEb21haW4oKTsKKyAgICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IGNvbnRleHRDb25uZWN0
aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pOworICAgIGlmICghY29u
dGV4dENvbm5lY3Rpb24pIHsKKyAgICAgICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0
cmFibGVEb21haW4pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbGF1bmNoU2hhcmVk
V29ya2VyKCpjb250ZXh0Q29ubmVjdGlvbiwgd29ya2VyKTsKK30KKworYm9vbCBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXI6Om5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pIGNvbnN0
Cit7CisgICAgZm9yIChhdXRvJiBzaGFyZWRXb3JrZXIgOiBtX3NoYXJlZFdvcmtlcnMudmFsdWVz
KCkpIHsKKyAgICAgICAgaWYgKHJlZ2lzdHJhYmxlRG9tYWluLm1hdGNoZXMoc2hhcmVkV29ya2Vy
LT51cmwpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNyZWF0ZUNvbnRleHRDb25uZWN0
aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikK
K3sKKyAgICBBU1NFUlQoIW1fY29udGV4dENvbm5lY3Rpb25zLmNvbnRhaW5zKHJlZ2lzdHJhYmxl
RG9tYWluKSk7CisgICAgaWYgKG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWlucy5jb250
YWlucyhyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgIHJldHVybjsKKworICAgIFJFTEVBU0Vf
TE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y3JlYXRlQ29udGV4dENv
bm5lY3Rpb24gd2lsbCBjcmVhdGUgYSBjb25uZWN0aW9uIik7CisKKyAgICBtX3BlbmRpbmdDb250
ZXh0Q29ubmVjdGlvbkRvbWFpbnMuYWRkKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBtX3Nlc3Np
b24ubmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFNoYXJlZFdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHJlZ2lzdHJhYmxlRG9tYWlu
LCBtX3Nlc3Npb24uc2Vzc2lvbklEKCkgfSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH0sIHJlZ2lzdHJhYmxlRG9tYWluXSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2Vi
U2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbiBzaG91bGQgbm93IGhh
dmUgY3JlYXRlZCBhIGNvbm5lY3Rpb24iKTsKKworICAgICAgICBBU1NFUlQobV9wZW5kaW5nQ29u
dGV4dENvbm5lY3Rpb25Eb21haW5zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSk7CisgICAg
ICAgIG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWlucy5yZW1vdmUocmVnaXN0cmFibGVE
b21haW4pOworCisgICAgICAgIGlmIChtX2NvbnRleHRDb25uZWN0aW9ucy5jb250YWlucyhyZWdp
c3RyYWJsZURvbWFpbikpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKG5lZWRz
Q29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikp
CisgICAgICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbik7
CisgICAgfSwgMCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjphZGRDb250ZXh0
Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250
ZXh0Q29ubmVjdGlvbikKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6OmFkZENvbnRleHRDb25uZWN0aW9uKCVwKSB3ZWJQcm9jZXNzSWRlbnRp
Zmllcj0lIiBQUkl1NjQsICZjb250ZXh0Q29ubmVjdGlvbiwgY29udGV4dENvbm5lY3Rpb24ud2Vi
UHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKworICAgIEFTU0VSVCghbV9jb250ZXh0
Q29ubmVjdGlvbnMuY29udGFpbnMoY29udGV4dENvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4o
KSkpOworCisgICAgbV9jb250ZXh0Q29ubmVjdGlvbnMuYWRkKGNvbnRleHRDb25uZWN0aW9uLnJl
Z2lzdHJhYmxlRG9tYWluKCksICZjb250ZXh0Q29ubmVjdGlvbik7CisKKyAgICBjb250ZXh0Q29u
bmVjdGlvbkNyZWF0ZWQoY29udGV4dENvbm5lY3Rpb24pOworfQorCit2b2lkIFdlYlNoYXJlZFdv
cmtlclNlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24pCit7CisgICAgUkVMRUFTRV9M
T0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1vdmVDb250ZXh0Q29u
bmVjdGlvbiglcCkgd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCAmY29udGV4dENvbm5l
Y3Rpb24sIGNvbnRleHRDb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQo
KSk7CisKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gY29udGV4dENvbm5lY3Rpb24ucmVn
aXN0cmFibGVEb21haW4oKTsKKworICAgIEFTU0VSVChtX2NvbnRleHRDb25uZWN0aW9ucy5nZXQo
cmVnaXN0cmFibGVEb21haW4pID09ICZjb250ZXh0Q29ubmVjdGlvbik7CisKKyAgICBtX2NvbnRl
eHRDb25uZWN0aW9ucy5yZW1vdmUocmVnaXN0cmFibGVEb21haW4pOworCisgICAgaWYgKG5lZWRz
Q29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikp
CisgICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluKTsKK30K
Kwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlv
bikKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZCglcCkgd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIg
UFJJdTY0LCAmY29udGV4dENvbm5lY3Rpb24sIGNvbnRleHRDb25uZWN0aW9uLndlYlByb2Nlc3NJ
ZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgYXV0byYgcmVnaXN0cmFibGVEb21haW4gPSBj
b250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpOworICAgIGZvciAoYXV0byYgd29y
a2VyIDogbV9zaGFyZWRXb3JrZXJzLnZhbHVlcygpKSB7CisgICAgICAgIGlmICh3b3JrZXItPmRp
ZEZpbmlzaEZldGNoaW5nKCkgJiYgcmVnaXN0cmFibGVEb21haW4ubWF0Y2hlcyh3b3JrZXItPnVy
bCkpCisgICAgICAgICAgICBsYXVuY2hTaGFyZWRXb3JrZXIoY29udGV4dENvbm5lY3Rpb24sICp3
b3JrZXIpOworICAgIH0KK30KKworYXV0byBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNoYXJlZFdv
cmtlckJ5SWRlbnRpZmllcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdv
cmtlcklkZW50aWZpZXIpIC0+IFNoYXJlZFdvcmtlcioKK3sKKyAgICBmb3IgKGF1dG8mIHdvcmtl
ciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAod29ya2VyLT5pZGVu
dGlmaWVyID09IHNoYXJlZFdvcmtlcklkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gd29y
a2VyLmdldCgpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworYXV0byBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6OnNoYXJlZFdvcmtlckJ5T2JqZWN0SWRlbnRpZmllcihXZWJDb3JlOjpT
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIp
IC0+IFNoYXJlZFdvcmtlcioKK3sKKyAgICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fc2hhcmVkV29y
a2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAod29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3Rz
LmNvbnRhaW5zKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpKQorICAgICAgICAgICAgcmV0
dXJuIHdvcmtlci5nZXQoKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQg
V2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJD
b3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIpCit7CisgICAgYXV0byogd29ya2VyID0gc2hhcmVkV29ya2VyQnlPYmplY3RJZGVudGlm
aWVyKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HKFNoYXJl
ZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hhcmVkV29ya2VyT2JqZWN0SXNHb2lu
Z0F3YXk6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cywgd29ya2VyPSVw
Iiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCks
IHdvcmtlcik7CisgICAgaWYgKCF3b3JrZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHdvcmtl
ci0+c2hhcmVkV29ya2VyT2JqZWN0cy5yZW1vdmUoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
cik7CisgICAgaWYgKCF3b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBzaHV0RG93blNoYXJlZFdvcmtlcih3b3JrZXItPmtleSgpKTsK
K30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNodXREb3duU2hhcmVkV29ya2VyKGNv
bnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYga2V5KQoreworICAgIGF1dG8gd29ya2VyID0g
bV9zaGFyZWRXb3JrZXJzLnRha2Uoa2V5KTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIs
ICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNodXREb3duU2hhcmVkV29ya2VyOiBzaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyPSUiIFBSSXU2NCAiLCB3b3JrZXI9JXAiLCB3b3JrZXIgPyB3b3JrZXItPmlk
ZW50aWZpZXIudG9VSW50NjQoKSA6IDAsIHdvcmtlci5nZXQoKSk7CisgICAgaWYgKCF3b3JrZXIp
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gY29udGV4
dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbih3b3JrZXItPnJlZ2lzdHJhYmxlRG9tYWlu
KCkpOworICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAg
IGNvbnRleHRDb25uZWN0aW9uLT50ZXJtaW5hdGVTaGFyZWRXb3JrZXIod29ya2VyLT5pZGVudGlm
aWVyKTsKKworICAgIGlmICghbmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9t
YWluKHdvcmtlci0+cmVnaXN0cmFibGVEb21haW4oKSkpCisgICAgICAgIGNvbnRleHRDb25uZWN0
aW9uLT5jb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOworfQorCit2b2lkIFdlYlNoYXJlZFdv
cmtlclNlcnZlcjo6YWRkQ29ubmVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQoreworICAgIGF1dG8gcHJvY2Vzc0lkZW50
aWZpZXIgPSBjb25uZWN0aW9uLT53ZWJQcm9jZXNzSWRlbnRpZmllcigpOworICAgIFJFTEVBU0Vf
TE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29ubmVjdGlvbigl
cCk6IHByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgY29ubmVjdGlvbi5nZXQoKSwgcHJvY2Vz
c0lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb25zLmNvbnRh
aW5zKHByb2Nlc3NJZGVudGlmaWVyKSk7CisgICAgbV9jb25uZWN0aW9ucy5hZGQocHJvY2Vzc0lk
ZW50aWZpZXIsIFdURk1vdmUoY29ubmVjdGlvbikpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtl
clNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlvbihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9j
ZXNzSWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLnRh
a2UocHJvY2Vzc0lkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldl
YlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlvbiglcCk6IHByb2Nlc3NJZGVudGlm
aWVyPSUiIFBSSXU2NCwgY29ubmVjdGlvbi5nZXQoKSwgcHJvY2Vzc0lkZW50aWZpZXIudG9VSW50
NjQoKSk7CisgICAgQVNTRVJUKGNvbm5lY3Rpb24pOworCisgICAgVmVjdG9yPFdlYkNvcmU6OlNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI+IHNoYXJlZFdvcmtlck9iamVjdHNHb2luZ0F3YXk7
CisgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3NoYXJlZFdvcmtlcnMudmFsdWVzKCkpIHsKKyAg
ICAgICAgZm9yIChhdXRvJiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIDogd29ya2VyLT5z
aGFyZWRXb3JrZXJPYmplY3RzLmtleXMoKSkgeworICAgICAgICAgICAgaWYgKHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBwcm9jZXNzSWRlbnRpZmll
cikKKyAgICAgICAgICAgICAgICBzaGFyZWRXb3JrZXJPYmplY3RzR29pbmdBd2F5LmFwcGVuZChz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBmb3Ig
KGF1dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA6IHNoYXJlZFdvcmtlck9iamVjdHNH
b2luZ0F3YXkpCisgICAgICAgIHNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIpOworfQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OlNoYXJl
ZFdvcmtlcjo6U2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2lu
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYgd29ya2VyT3B0
aW9ucykKKyAgICA6IGlkZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllcjo6
Z2VuZXJhdGUoKSkKKyAgICAsIG9yaWdpbihvcmlnaW4pCisgICAgLCB1cmwodXJsKQorICAgICwg
d29ya2VyT3B0aW9ucyh3b3JrZXJPcHRpb25zKQoreworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtl
clNlcnZlcjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtl
cklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCkKK3sKKyAgICBhdXRvKiB3b3JrZXIgPSBzaGFyZWRXb3JrZXJCeUlkZW50aWZpZXIo
c2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0dfRVJST1IoU2hhcmVkV29y
a2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Q6
IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHdvcmtlcj0lcCIsIHNoYXJlZFdv
cmtlcklkZW50aWZpZXIudG9VSW50NjQoKSwgd29ya2VyKTsKKyAgICBpZiAoIXdvcmtlcikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIgOiB3b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMua2V5cygpKSB7CisgICAgICAgIGlmIChh
dXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIHNlcnZlckNv
bm5lY3Rpb24tPnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNl
VVJMKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2Vy
dmVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LmM4MzFlMGE0MmFiNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5oCkBAIC0wLDAgKzEsMTA3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nl
c3NJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1NoYXJlZFdvcmtlcktleS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyRmV0Y2hSZXN1bHQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlck9wdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworfQorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya1Nlc3Npb247CitjbGFzcyBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyIDogcHVibGlj
IENhbk1ha2VXZWFrUHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlcj4geworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYlNoYXJlZFdvcmtlclNlcnZl
cihOZXR3b3JrU2Vzc2lvbiYpOworICAgIH5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIoKTsKKworICAg
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpOworCisgICAgdm9pZCByZXF1ZXN0U2hhcmVkV29y
a2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBXZWJD
b3JlOjpXb3JrZXJPcHRpb25zJiYpOworICAgIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2lu
Z0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisKKyAgICB2b2lk
IGFkZENvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24mKTsKKyAgICB2b2lkIHJlbW92ZUNvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKKworICAgIHZvaWQgYWRkQ29ubmVjdGlvbihz
dGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4mJik7CisgICAg
dm9pZCByZW1vdmVDb25uZWN0aW9uKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKKworICAg
IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIGNvbnRleHRDb25uZWN0
aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
IGRvbWFpbikgeyByZXR1cm4gbV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0KGRvbWFpbik7IH0KKwor
ICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtl
cklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCitwcml2YXRlOgor
ICAgIHZvaWQgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mKTsKKworICAgIGJvb2wgbmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJh
YmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CisgICAg
dm9pZCBjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbiYpOworCisgICAgc3RydWN0IFNoYXJlZFdvcmtlciA6IENhbk1ha2VXZWFr
UHRyPFNoYXJlZFdvcmtlcj4geworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FU
RUQ7CisKKyAgICAgICAgU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYs
IGNvbnN0IFVSTCYsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmKTsKKworICAgICAgICBi
b29sIGRpZEZpbmlzaEZldGNoaW5nKCkgY29uc3QgeyByZXR1cm4gISFmZXRjaFJlc3VsdC5zY3Jp
cHQ7IH0KKyAgICAgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5IGtleSgpIGNvbnN0IHsgcmV0
dXJuIHsgb3JpZ2luLCB1cmwsIHdvcmtlck9wdGlvbnMubmFtZSB9OyB9CisgICAgICAgIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4g
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfTsgfQorCisgICAgICAgIFdlYkNvcmU6
OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICAgICAgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luIG9yaWdpbjsKKyAgICAgICAgVVJMIHVybDsKKyAgICAgICAgV2ViQ29yZTo6V29y
a2VyT3B0aW9ucyB3b3JrZXJPcHRpb25zOworICAgICAgICBIYXNoTWFwPFdlYkNvcmU6OlNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQ+
IHNoYXJlZFdvcmtlck9iamVjdHM7CisgICAgICAgIFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0
IGZldGNoUmVzdWx0OworICAgICAgICBib29sIGlzUnVubmluZyB7IGZhbHNlIH07CisgICAgfTsK
KworICAgIFNoYXJlZFdvcmtlciogc2hhcmVkV29ya2VyQnlJZGVudGlmaWVyKFdlYkNvcmU6OlNo
YXJlZFdvcmtlcklkZW50aWZpZXIpOworICAgIFNoYXJlZFdvcmtlciogc2hhcmVkV29ya2VyQnlP
YmplY3RJZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOwor
ICAgIHZvaWQgZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRXb3JrZXJTY3JpcHQoU2hhcmVkV29ya2Vy
JiwgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJik7CisgICAgdm9pZCBsYXVuY2hTaGFyZWRX
b3JrZXIoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYsIFNoYXJlZFdv
cmtlciYpOworICAgIHZvaWQgcG9zdENvbm5lY3RFdmVudChXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYsIGNvbnN0IFN0cmluZyYgc291cmNl
T3JpZ2luKTsKKyAgICB2b2lkIHNodXREb3duU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OlNo
YXJlZFdvcmtlcktleSYpOworCisgICAgTmV0d29ya1Nlc3Npb24mIG1fc2Vzc2lvbjsKKyAgICBI
YXNoTWFwPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4+IG1fY29ubmVjdGlvbnM7CisgICAgSGFzaE1hcDxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbio+IG1fY29udGV4dENvbm5lY3Rpb25zOworICAgIEhhc2hTZXQ8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+IG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWluczsKKyAg
ICBIYXNoTWFwPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSwgc3RkOjp1bmlxdWVfcHRyPFNoYXJl
ZFdvcmtlcj4+IG1fc2hhcmVkV29ya2VyczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjNjZjYxMGI2YmI4YQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2Vy
L1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTA2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNz
LmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbk1lc3NhZ2VzLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9Xb3JrZXJGZXRjaFJlc3VsdC5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNF
X0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQg
Il0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsIG1fd2ViUHJv
Y2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgQ09OTkVD
VElPTl9SRUxFQVNFX0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoU2hhcmVk
V29ya2VyLCAiJXAgLSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OiIgZm10LCB0aGlzLCBtX3dlYlByb2Nlc3NJZGVudGlm
aWVyLnRvVUludDY0KCksICMjX19WQV9BUkdTX18pCisKK1dlYlNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb246OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oTmV0d29ya1Byb2Nlc3Mm
IG5ldHdvcmtQcm9jZXNzLCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlciwgSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNz
SWRlbnRpZmllcikKKyAgICA6IG1fY29udGVudENvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAs
IG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCisgICAgLCBtX3NlcnZlcihzZXJ2ZXIp
CisgICAgLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKHdlYlByb2Nlc3NJZGVudGlmaWVyKQorewor
ICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b246Iik7Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246On5XZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJ+
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjoiKTsKK30KKworSVBDOjpDb25uZWN0aW9u
KiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlv
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGVudENvbm5lY3Rpb24ucHRyKCk7Cit9CisK
K1BBTDo6U2Vzc2lvbklEIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OnNlc3Npb25J
RCgpCit7CisgICAgcmV0dXJuIHNlcnZlcigpLnNlc3Npb25JRCgpOworfQorCitOZXR3b3JrU2Vz
c2lvbiogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2Vzc2lvbigpCit7CisgICAg
cmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKTsKK30K
Kwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpyZXF1ZXN0U2hhcmVkV29y
a2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBVUkwmJiB1cmws
IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBXZWJDb3JlOjpXb3JrZXJP
cHRpb25zJiYgd29ya2VyT3B0aW9ucykKK3sKKyAgICBBU1NFUlQoc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIp
OyAvLyBGSVhNRTogU2hvdWxkIGJlIGEgTUVTU0FHRV9DSEVDSygpLgorICAgIENPTk5FQ1RJT05f
UkVMRUFTRV9MT0coInJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHRoaXMtPnNlc3Npb24o
KSkKKyAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCkucmVxdWVzdFNo
YXJlZFdvcmtlcihXVEZNb3ZlKG9yaWdpbiksIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIs
IFdURk1vdmUodXJsKSwgV1RGTW92ZShwb3J0KSwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSk7Cit9
CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6ZmV0Y2hTY3JpcHRJbkNs
aWVudChjb25zdCBVUkwmIHVybCwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRp
b25zJiB3b3JrZXJPcHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Oldvcmtl
ckZldGNoUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIENPTk5FQ1RJT05f
UkVMRUFTRV9MT0coImZldGNoU2NyaXB0SW5DbGllbnQ6IHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OkZldGNoU2NyaXB0SW5DbGllbnQgeyB1cmwsIHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHdvcmtlck9wdGlvbnMgfSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b246Om5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZhaWx1cmUoV2ViQ29yZTo6U2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQoreworICAgIENP
Tk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IoIm5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZhaWx1
cmU6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpOb3RpZnlXb3JrZXJPYmpl
Y3RPZkxvYWRGYWlsdXJlIHsgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciB9KTsKK30KKwor
dm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0RXhjZXB0aW9uVG9Xb3Jr
ZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAg
IENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IoInBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVj
dDogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OlBvc3RFeGNlcHRpb25Ub1dv
cmtlck9iamVjdCB7IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGVycm9yTWVzc2FnZSwg
bGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwgfSk7Cit9CisKK3ZvaWQgV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXko
V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyKQoreworICAgIEFTU0VSVChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnBy
b2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7IC8vIEZJWE1FOiBT
aG91bGQgYmUgYSBNRVNTQUdFX0NIRUNLKCkuCisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygi
c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXk6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHRoaXMtPnNlc3Npb24oKSkK
KyAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCkuc2hhcmVkV29ya2Vy
T2JqZWN0SXNHb2luZ0F3YXkoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7Cit9CisKKyN1
bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xP
R19FUlJPUgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLmM2ODQ5YWIwMmVhYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb24uaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Citz
dHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7CitzdHJ1Y3QgV29ya2VyT3B0aW9uczsKK30KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtQcm9jZXNzOworY2xhc3MgV2ViU2hhcmVk
V29ya2VyU2VydmVyOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbiA6IHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbihOZXR3b3JrUHJvY2VzcyYsIFdlYlNoYXJlZFdvcmtlclNlcnZlciYsIElQQzo6
Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICB+V2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbigpOworCisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBz
ZXJ2ZXIoKSB7IHJldHVybiBtX3NlcnZlcjsgfQorICAgIGNvbnN0IFdlYlNoYXJlZFdvcmtlclNl
cnZlciYgc2VydmVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXI7IH0KKworICAgIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCgpOworICAgIE5ldHdvcmtTZXNzaW9uKiBzZXNzaW9uKCk7CisgICAg
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOyB9CisKKyAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgdm9p
ZCBmZXRjaFNjcmlwdEluQ2xpZW50KGNvbnN0IFVSTCYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYpPiYmKTsKKyAgICB2b2lk
IG5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZhaWx1cmUoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllcik7CisgICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCk7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyLgorICAgIElQ
Qzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKKyAg
ICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIDA7IH0KKworICAgIC8vIElQQyBtZXNzYWdlcy4KKyAgICB2b2lkIHJlcXVlc3RTaGFyZWRX
b3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdl
YkNvcmU6Oldvcmtlck9wdGlvbnMmJik7CisgICAgdm9pZCBzaGFyZWRXb3JrZXJPYmplY3RJc0dv
aW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKworICAgIFJl
ZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29udGVudENvbm5lY3Rpb247CisgICAgUmVmPE5ldHdvcmtQ
cm9jZXNzPiBtX25ldHdvcmtQcm9jZXNzOworICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlciYgbV9z
ZXJ2ZXI7CisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV93ZWJQcm9jZXNzSWRlbnRp
ZmllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVk
V29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mYWU0YTA4MDM3NzkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjYgQEAK
KyMgQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwK
KyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKKyAgICBSZXF1ZXN0
U2hhcmVkV29ya2VyKHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCBXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIsIFVSTCB1cmwsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQgcG9ydCwgc3RydWN0
IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMgd29ya2VyT3B0aW9ucykKKyAgICBTaGFyZWRXb3JrZXJP
YmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29y
a2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDljMTEyNDE1MjE4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSwxMDcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNkZWZp
bmUgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhT
aGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsIHdlYlBy
b2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKKworV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlv
biwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlcikKKyAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0
aW9uKQorICAgICwgbV9zZXJ2ZXIoc2VydmVyKQorICAgICwgbV9yZWdpc3RyYWJsZURvbWFpbihy
ZWdpc3RyYWJsZURvbWFpbikKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0co
IldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Iik7CisgICAgc2VydmVy
LmFkZENvbnRleHRDb25uZWN0aW9uKCp0aGlzKTsKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24oKQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygifldlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Iik7CisgICAgaWYgKG1fc2VydmVyICYm
IG1fc2VydmVyLT5jb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJh
YmxlRG9tYWluKCkpID09IHRoaXMpCisgICAgICAgIG1fc2VydmVyLT5yZW1vdmVDb250ZXh0Q29u
bmVjdGlvbigqdGhpcyk7Cit9CisKK1dlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIFdlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OndlYlByb2Nlc3NJZGVudGlmaWVyKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCk7
Cit9CisKK0lQQzo6Q29ubmVjdGlvbiYgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6aXBjQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlv
bi5jb25uZWN0aW9uKCk7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiogV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAor
eworICAgIHJldHVybiAmaXBjQ29ubmVjdGlvbigpOworfQorCit1aW50NjRfdCBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKQorewor
ICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiY29ubmVjdGlvbklzTm9Mb25nZXJO
ZWVkZWQ6Iik7CisgICAgbV9jb25uZWN0aW9uLnNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNv
cmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFT
RV9MT0coInBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdDogc2hhcmVkV29ya2VySWRlbnRpZmll
cj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgaWYg
KG1fc2VydmVyKQorICAgICAgICBtX3NlcnZlci0+cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0
KHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBzb3VyY2VVUkwpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OmxhdW5jaFNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9u
cyYgd29ya2VyT3B0aW9ucywgY29uc3QgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmIGZldGNo
UmVzdWx0KQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygibGF1bmNoU2hh
cmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2Vy
SWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkxhdW5jaFNoYXJlZFdvcmtlciB7IG9yaWdpbiwg
c2hhcmVkV29ya2VySWRlbnRpZmllciwgdXJsLCB3b3JrZXJPcHRpb25zLCBmZXRjaFJlc3VsdCB9
KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpw
b3N0Q29ubmVjdEV2ZW50KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29y
a2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYgcG9y
dCwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9O
X1JFTEVBU0VfTE9HKCJwb3N0Q29ubmVjdEV2ZW50OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUi
IFBSSXU2NCwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlBvc3RDb25u
ZWN0RXZlbnQgeyBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBwb3J0LCBzb3VyY2VPcmlnaW4gfSk7
Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dGVy
bWluYXRlU2hhcmVkV29ya2VyKFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVk
V29ya2VySWRlbnRpZmllcikKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0co
InRlcm1pbmF0ZVNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQs
IHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpUZXJtaW5hdGVTaGFyZWRX
b3JrZXIgeyBzaGFyZWRXb3JrZXJJZGVudGlmaWVyIH0pOworfQorCisjdW5kZWYgQ09OVEVYVF9D
T05ORUNUSU9OX1JFTEVBU0VfTE9HCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjA3ZmYwM2EzM2Q0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRX
b3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC0wLDAg
KzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJXZWJQYWdl
UHJveHlJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgUmVnaXN0cmFibGVEb21haW47CitjbGFzcyBTY3JpcHRCdWZmZXI7CitzdHJ1Y3Qg
Q2xpZW50T3JpZ2luOworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0Oworc3RydWN0IFdvcmtlck9w
dGlvbnM7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzczsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlcjsKKworY2xhc3MgV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBJUEM6
Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2ViU2hhcmVkV29ya2VyU2VydmVyJik7CisgICAg
fldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKKworICAgIFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3Q7CisgICAg
Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29u
c3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQorICAgIElQQzo6Q29ubmVjdGlvbiYg
aXBjQ29ubmVjdGlvbigpIGNvbnN0OworCisgICAgdm9pZCBsYXVuY2hTaGFyZWRXb3JrZXIoY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmll
ciwgY29uc3QgVVJMJiwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYsIGNvbnN0IFdlYkNv
cmU6OldvcmtlckZldGNoUmVzdWx0Jik7CisgICAgdm9pZCBwb3N0Q29ubmVjdEV2ZW50KFdlYkNv
cmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVz
c2FnZVBvcnQmLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CisgICAgdm9pZCB0ZXJtaW5h
dGVTaGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllcik7CisKKyAgICB2
b2lkIGNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCitwcml2YXRl
OgorICAgIC8vIElQQyBtZXNzYWdlcy4KKyAgICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9i
amVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlVVJMKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlci4KKyAgICBJUEM6OkNvbm5l
Y3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0
X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKKworICAgIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2Nvbm5lY3Rpb247CisgICAgV2Vha1B0cjxXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI+IG1fc2VydmVyOworICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIG1fcmVnaXN0cmFibGVEb21haW47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uYWU0N2MxMjJjYmFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI1IEBACisjIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
IyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
CisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFdlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CisgICAgUG9zdEV4Y2Vw
dGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVk
V29ya2VySWRlbnRpZmllciwgU3RyaW5nIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIFN0cmluZyBzb3VyY2VVUkwpCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2lu
Zy5oCmluZGV4IDFjNDJkMDQwYzFhOS4uZGUzMmY4MTcxNzE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xv
Z2dpbmcuaApAQCAtOTcsNiArOTcsNyBAQCBleHRlcm4gIkMiIHsKICAgICBNKFNlcnZpY2VXb3Jr
ZXIpIFwKICAgICBNKFNlc3Npb25TdGF0ZSkgXAogICAgIE0oU2hhcmVkRGlzcGxheUxpc3RzKSBc
CisgICAgTShTaGFyZWRXb3JrZXIpIFwKICAgICBNKFN0b3JhZ2UpIFwKICAgICBNKFN0b3JhZ2VB
UEkpIFwKICAgICBNKFRleHRJbnB1dCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKaW5kZXggN2ViZmE1MTZiNTAzLi4xYTI2MWUwYjEwZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMzAzLDEwICszMDMsMTMgQEAgZGVmIHR5
cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6
OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U2hh
cmVkU3RyaW5nSGFzaCcsCisgICAgICAgICdXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVy
JywKKyAgICAgICAgJ1dlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXInLAogICAg
ICAgICAnV2ViQ29yZTo6U2xlZXBEaXNhYmxlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29y
ZTo6U291cmNlQnVmZmVyQXBwZW5kTW9kZScsCiAgICAgICAgICdXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlN0
b3JhZ2VUeXBlJywKKyAgICAgICAgJ1dlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQnLAog
ICAgICAgICAnV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdElkZW50aWZpZXInLAogICAgICAgICAn
V2ViQ29yZTo6V2ViTG9ja0lkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6V2ViU29ja2V0
SWRlbnRpZmllcicsCkBAIC04NTEsNiArODU0LDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlw
ZSk6CiAgICAgICAgICdXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlJzogWyc8V2ViQ29yZS9UZXh0
Q2hlY2tpbmcuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhJzogWyc8
V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlJzogWyc8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4n
XSwKKyAgICAgICAgJ1dlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQnOiBbJzxXZWJDb3Jl
L01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpVc2VkTGVn
YWN5VExTJzogWyc8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oPiddLAogICAgICAgICAn
V2ViQ29yZTo6VmlkZW9QcmVzZXREYXRhJzogWyc8V2ViQ29yZS9WaWRlb1ByZXNldC5oPiddLAog
ICAgICAgICAnV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJzogWyc8V2ViQ29yZS9WaWV3cG9y
dEFyZ3VtZW50cy5oPiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggNGYwYTIzNTQ0MWIyLi5kOWU2MGNlNzg5
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YktpdC9Tb3VyY2VzLnR4dApAQCAtMTQxLDYgKzE0MSwxMCBAQCBOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuY3BwIEBuby11bmlmeQogTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIEBuby11bmlmeQogTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3Bw
IEBuby11bmlmeQogCitOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2Vy
U2VydmVyLmNwcAorTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNl
cnZlckNvbm5lY3Rpb24uY3BwCitOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKwogTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxl
U3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5LmNwcApAQCAtNzgzLDYgKzc4Nyw5IEBAIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV09yaWdpblRhYmxlLmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlclByb3ZpZGVyLmNwcAorV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKK1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcAorV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJl
ZFdvcmtlclByb3ZpZGVyLmNwcAogCiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlci5jcHAKIApAQCAtODg1LDMgKzg5Miw3IEBAIFJlbW90ZVdlYkxvY2tSZWdp
c3RyeU1lc3NhZ2VSZWNlaXZlci5jcHAKIFNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2tNZXNzYWdl
UmVjZWl2ZXIuY3BwCiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnlNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiBXZWJMb2NrUmVnaXN0cnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKK1dlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKK1dlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmlu
ZGV4IGE2NzgzNjdhNzc1YS4uMzMwMjBiZDVjM2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTUyOSw3
ICs1MjksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVdlYlByb2Nlc3Mo
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvYwogdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5Ojp0ZXJtaW5hdGVVbnJlc3BvbnNpdmVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQogewogICAgIGlmIChSZWZQdHIg
cHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIocHJvY2Vzc0lk
ZW50aWZpZXIpKSB7Ci0gICAgICAgIHByb2Nlc3MtPmRpc2FibGVTZXJ2aWNlV29ya2VycygpOwor
ICAgICAgICBwcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5
cGU6OlNlcnZpY2VXb3JrZXIpOwogICAgICAgICBwcm9jZXNzLT5yZXF1ZXN0VGVybWluYXRpb24o
UHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpFeGNlZWRlZENQVUxpbWl0KTsKICAgICB9CiB9CkBA
IC0xNDE1LDE2ICsxNDE1LDIxIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRGVzdHJv
eVdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50CiB9CiAjZW5kaWYK
IAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBy
ZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgV2ViUHJvY2Vzc1Bvb2w6
OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhX
VEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7Cit9CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpv
cHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBh
Z2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0
YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcygqdGhp
cywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmll
ciwgc2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgV2ViUHJvY2Vz
c1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRp
Zmllciwgc2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6c2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25n
ZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBp
ZiAoYXV0byogcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIo
aWRlbnRpZmllcikpCi0gICAgICAgIHByb2Nlc3MtPmRpc2FibGVTZXJ2aWNlV29ya2VycygpOwor
ICAgICAgICBwcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5
cGU6OlNlcnZpY2VXb3JrZXIpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlZ2lz
dGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIg
d2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJQcm9jZXNzSWRlbnRpZmllcikKQEAgLTE0NjAsNiArMTQ2NSwxMiBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJD
b3JlOjpQcm9jZXNzSQogfQogI2VuZGlmCiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2hh
cmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvKiBwcm9jZXNzID0gV2ViUHJv
Y2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihpZGVudGlmaWVyKSkKKyAgICAgICAgcHJv
Y2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTaGFyZWRX
b3JrZXIpOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3Bh
Y2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
IG9yaWdpbiwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWlu
dDY0X3Qgc3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBxdW90YSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUkVMRUFTRV9M
T0coU3RvcmFnZSwgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VTcGFj
ZSIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBhNGUzNjQ1ZWJhYWUuLjY4NDFhMzRmZTA5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKQEAgLTMzNCw2ICszMzQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRTZXJ2
aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIg
c2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKICAgICB2b2lkIGVuZFNlcnZpY2VXb3Jr
ZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNl
V29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogI2VuZGlmCisgICAgdm9pZCBzaGFyZWRXb3JrZXJD
b250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
KTsKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgdGVybWluYXRlV2ViUHJv
Y2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbgppbmRleCAxMmQwNmNlYmQ2MmEuLjE1NzU3ZWQ5YTI1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtNjAsNiArNjAsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJv
Y2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBTdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3Jv
dW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc0lkZW50aWZpZXIpCiAgICAgRW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5n
KFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmll
cikKICNlbmRpZgorICAgIEVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFp
biwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYworICAgIFNoYXJlZFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXIgaWRlbnRpZmllcikKIAogICAgIFNldFdlYlByb2Nlc3NIYXNVcGxvYWRzKFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJRCwgYm9vbCBoYXNVcGxvYWQpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGU0OTkzNWMzMjVmNi4uMWFjYjM0NDRh
ZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM2OTEs
MTEgKzM2OTEsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlckFnZW50KFN0cmluZyYmIHVz
ZXJBZ2VudCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fdXNlckFnZW50ID0gV1RGTW92ZSh1c2Vy
QWdlbnQpOwogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIC8vIFdlIHVwZGF0ZSB0
aGUgc2VydmljZSB3b3JrZXIgdGhlcmUgYXQgdGhlIG1vbWVudCB0byBiZSBzdXJlIHdlIHVzZSB2
YWx1ZXMgdXNlZCBieSBhY3R1YWwgd2ViIHBhZ2VzLgogICAgIC8vIEZJWE1FOiBSZWZhY3RvciB0
aGlzIHdoZW4gd2UgaGF2ZSBhIGJldHRlciBVc2VyLUFnZW50IHN0b3J5LgotICAgIHByb2Nlc3Mo
KS5wcm9jZXNzUG9vbCgpLnVwZGF0ZVNlcnZpY2VXb3JrZXJVc2VyQWdlbnQobV91c2VyQWdlbnQp
OwotI2VuZGlmCisgICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCkudXBkYXRlV29ya2VyVXNlckFn
ZW50KG1fdXNlckFnZW50KTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmlu
ZGV4IGFmYzIzZWU1M2YxMi4uNGIxOWIwZDFkM2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC01MjksNyArNTI5LDcgQEAgdm9pZCBXZWJQcm9jZXNz
UG9vbDo6Z2V0V2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlBy
b2Nlc3NQcm8KIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6OnNfdXNlU2VwYXJhdGVTZXJ2aWNlV29ya2Vy
UHJvY2VzcyA9IGZhbHNlOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiBwcm94eSwgUmVnaXN0cmFibGVEb21haW4m
JiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0
SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFp
biwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiB3ZWJz
aXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNz
aW9uSUQoc2Vzc2lvbklEKTsKICAgICBpZiAoIXdlYnNpdGVEYXRhU3RvcmUpCkBAIC01NDYsNyAr
NTQ2LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXQKICAgICBpZiAoc2VydmljZVdvcmtlclBh
Z2VJZGVudGlmaWVyKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgYSBzZXJ2aWNlIHdvcmtlciBmb3Ig
YSBzZXJ2aWNlIHdvcmtlciBwYWdlIHNvIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIHVzZSB1c2Ug
dGhlIHBhZ2UncyBXZWJQcm9jZXNzIGZvciB0aGUgc2VydmljZSB3b3JrZXIuCiAgICAgICAgIGlm
ICgoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0Zv
cklkZW50aWZpZXIoc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLT5wcm9jZXNzSWRlbnRpZmll
cigpKSkpIHsKLSAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVNl
cnZpY2VXb3JrZXJzKHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
Rm9yU2VydmljZVdvcmtlcnMoKSk7CisgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5LT5lbmFibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdv
cmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3Jr
ZXJzKCkpOwogICAgICAgICAgICAgaWYgKHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Q
cm9jZXNzQ2FjaGUoKSkgewogICAgICAgICAgICAgICAgIHByb2Nlc3NQb29sLT53ZWJQcm9jZXNz
Q2FjaGUoKS5yZW1vdmVQcm9jZXNzKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBXZWJQcm9j
ZXNzQ2FjaGU6OlNob3VsZFNodXREb3duUHJvY2Vzczo6Tm8pOwogICAgICAgICAgICAgICAgIEFT
U0VSVCghc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKTsKQEAg
LTU2NCw3ICs1NjQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldAogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gcHJv
Y2Vzcy5wdHIoKTsKLSAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJs
ZVNlcnZpY2VXb3JrZXJzKHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyRm9yU2VydmljZVdvcmtlcnMoKSk7CisgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5LT5lbmFibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2Vydmlj
ZVdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JX
b3JrZXJzKCkpOwogCiAgICAgICAgICAgICBpZiAoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+
aXNJblByb2Nlc3NDYWNoZSgpKSB7CiAgICAgICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPndlYlBy
b2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nlc3MoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIFdl
YlByb2Nlc3NDYWNoZTo6U2hvdWxkU2h1dERvd25Qcm9jZXNzOjpObyk7CkBAIC01NzcsNyArNTc3
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXQKICAgICB9CiAKICAgICBpZiAoIXNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkpIHsKLSAgICAgICAgYXV0byBuZXdQcm9jZXNzUHJveHkgPSBXZWJQ
cm9jZXNzUHJveHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKCpwcm9jZXNzUG9vbCwgUmVnaXN0
cmFibGVEb21haW4gIHsgcmVnaXN0cmFibGVEb21haW4gfSwgKndlYnNpdGVEYXRhU3RvcmUpOwor
ICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9y
V29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsICpwcm9j
ZXNzUG9vbCwgUmVnaXN0cmFibGVEb21haW4gIHsgcmVnaXN0cmFibGVEb21haW4gfSwgKndlYnNp
dGVEYXRhU3RvcmUpOwogICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gbmV3UHJv
Y2Vzc1Byb3h5LnB0cigpOwogCiAgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NU
QVRJQyhTZXJ2aWNlV29ya2VyLCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2VzcyBjcmVhdGluZyBhIG5ldyBzZXJ2aWNlIHdvcmtlciBwcm9jZXNz
IChwcm9jZXM9JXAsIFBJRD0lZCkiLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBzZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKQEAgLTU4NiwyMCArNTg2
LDcwIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0CiAgICAgICAgIHByb2Nlc3NQb29sLT5tX3By
b2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdQcm9jZXNzUHJveHkpKTsKICAgICB9CiAKLSAgICBB
U1NFUlQoIXNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb250YWlucygqc2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eSkpOwotICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkpOworICAgIHdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eSk7CiAKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3Rh
Ymxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyUHJl
ZmVyZW5jZXMgPyBwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMudmFsdWUo
KSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUo
KSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fc2VydmljZVdv
cmtlclVzZXJBZ2VudC5pc051bGwoKSkKLSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94
eS0+c2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2Vy
VXNlckFnZW50KTsKKyAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hTZXJ2
aWNlV29ya2VyQ29udGV4dChwcm9jZXNzUG9vbC0+bV93b3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nl
c3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZh
dWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3JlKCksIHJlZ2lzdHJhYmxlRG9tYWluLCBz
ZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICBpZiAoIXByb2Nlc3NQb29sLT5tX3dvcmtlclVzZXJBZ2VudC5pc051bGwoKSkKKyAgICAg
ICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+c2V0V29ya2VyVXNlckFnZW50KHByb2Nlc3NQ
b29sLT5tX3dvcmtlclVzZXJBZ2VudCk7CiB9CisjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzUG9v
bDo6cmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9j
ZXNzKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlRnJvbVdvcmtlclByb2Nlc3NlcyhXZWJQ
cm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7Ci0gICAgQVNTRVJUKHNlcnZpY2VXb3JrZXJQcm9jZXNz
ZXMoKS5jb250YWlucyhwcm9jZXNzKSk7Ci0gICAgc2VydmljZVdvcmtlclByb2Nlc3NlcygpLnJl
bW92ZShwcm9jZXNzKTsKKyAgICBBU1NFUlQod29ya2VyUHJvY2Vzc2VzKCkuY29udGFpbnMocHJv
Y2VzcykpOworICAgIHdvcmtlclByb2Nlc3NlcygpLnJlbW92ZShwcm9jZXNzKTsKK30KKwordm9p
ZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVE
b21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8qIHdlYnNpdGVEYXRhU3RvcmUgPSBX
ZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChzZXNzaW9uSUQp
OworICAgIGlmICghd2Vic2l0ZURhdGFTdG9yZSkKKyAgICAgICAgd2Vic2l0ZURhdGFTdG9yZSA9
IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS5wdHIoKTsKKyAgICBpZiAoIXBy
b2Nlc3NQb29scygpLnNpemUoKSkKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZjxX
ZWJQcm9jZXNzUG9vbD4+IHNoYXJlZFdvcmtlclByb2Nlc3NQb29sKFdlYlByb2Nlc3NQb29sOjpj
cmVhdGUoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpLmdldCgpKSk7CisK
KyAgICAvLyBBcmJpdHJhcmlseSBjaG9vc2UgdGhlIGZpcnN0IHByb2Nlc3MgcG9vbCB0byBob3N0
IHRoZSBzaGFyZWQgd29ya2VyIHByb2Nlc3MuCisgICAgYXV0byogcHJvY2Vzc1Bvb2wgPSBwcm9j
ZXNzUG9vbHMoKVswXTsKKyAgICBBU1NFUlQocHJvY2Vzc1Bvb2wpOworCisgICAgV2ViUHJvY2Vz
c1Byb3h5KiBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkgeyBudWxscHRyIH07CisKKyAgICBmb3Ig
KGF1dG8mIHByb2Nlc3MgOiBwcm9jZXNzUG9vbC0+bV9wcm9jZXNzZXMpIHsKKyAgICAgICAgaWYg
KHByb2Nlc3MucHRyKCkgPT0gcHJvY2Vzc1Bvb2wtPm1fcHJld2FybWVkUHJvY2Vzcy5nZXQoKSB8
fCBwcm9jZXNzLT5pc0R1bW15UHJvY2Vzc1Byb3h5KCkpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgaWYgKCZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gd2Vic2l0ZURhdGFT
dG9yZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoIXByb2Nlc3MtPmlzTWF0
Y2hpbmdSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkgPSBwcm9jZXNzLnB0
cigpOworICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVdvcmtlcnMoV2Vi
UHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIsIHByb2Nlc3NQb29sLT51c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpKTsKKworICAgICAgICBpZiAo
c2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpIHsKKyAgICAgICAg
ICAgIHByb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5yZW1vdmVQcm9jZXNzKCpzaGFyZWRX
b3JrZXJQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NDYWNoZTo6U2hvdWxkU2h1dERvd25Qcm9jZXNz
OjpObyk7CisgICAgICAgICAgICBBU1NFUlQoIXNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+aXNJ
blByb2Nlc3NDYWNoZSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIFdFQlBST0NFU1NQT09MX1JF
TEVBU0VfTE9HX1NUQVRJQyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgcmV1c2luZyBhbiBleGlzdGluZyB3ZWIgcHJv
Y2VzcyAocHJvY2Vzcz0lcCwgUElEPSVkKSIsIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSwgc2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCisgICAgaWYgKCFzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkpIHsKKyAgICAg
ICAgYXV0byBuZXdQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvcldvcmtl
cnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIsICpwcm9jZXNzUG9v
bCwgUmVnaXN0cmFibGVEb21haW4gIHsgcmVnaXN0cmFibGVEb21haW4gfSwgKndlYnNpdGVEYXRh
U3RvcmUpOworICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkgPSBuZXdQcm9jZXNzUHJv
eHkucHRyKCk7CisKKyAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElDKFNo
YXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyBjcmVhdGluZyBhIG5ldyBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzIChwcm9jZXNz
PSVwLCBQSUQ9JWQpIiwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LCBzaGFyZWRXb3JrZXJQcm9j
ZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOworCisgICAgICAgIHByb2Nlc3NQb29sLT5p
bml0aWFsaXplTmV3V2ViUHJvY2VzcyhuZXdQcm9jZXNzUHJveHksIHdlYnNpdGVEYXRhU3RvcmUp
OworICAgICAgICBwcm9jZXNzUG9vbC0+bV9wcm9jZXNzZXMuYXBwZW5kKFdURk1vdmUobmV3UHJv
Y2Vzc1Byb3h5KSk7CisgICAgfQorCisgICAgd29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpzaGFyZWRX
b3JrZXJQcm9jZXNzUHJveHkpOworCisgICAgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3Rh
Ymxpc2hTaGFyZWRXb3JrZXJDb250ZXh0KHByb2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2Vz
ID8gcHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29s
LT5tX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVE
b21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBpZiAoIXByb2Nlc3NQb29s
LT5tX3dvcmtlclVzZXJBZ2VudC5pc051bGwoKSkKKyAgICAgICAgc2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5LT5zZXRXb3JrZXJVc2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFnZW50
KTsKIH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp3aW5kb3dTZXJ2ZXJDb25uZWN0
aW9uU3RhdGVDaGFuZ2VkKCkKIHsKQEAgLTEwMDMsMTAgKzEwNTMsOCBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjpkaXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiAKICAg
ICBtX2JhY2tGb3J3YXJkQ2FjaGUtPnJlbW92ZUVudHJpZXNGb3JQcm9jZXNzKHByb2Nlc3MpOwog
Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmIChwcm9jZXNzLmlzUnVubmluZ1Nl
cnZpY2VXb3JrZXJzKCkpCi0gICAgICAgIHJlbW92ZUZyb21TZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
KHByb2Nlc3MpOwotI2VuZGlmCisgICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nV29ya2VycygpKQor
ICAgICAgICByZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKHByb2Nlc3MpOwogCiAgICAgc3RhdGlj
X2Nhc3Q8V2ViQ29udGV4dFN1cHBsZW1lbnQqPihzdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5PigpKS0+cHJvY2Vzc0RpZENsb3NlKCZwcm9jZXNzKTsKIApAQCAtMTA2NywxMiAr
MTExNSwxMiBAQCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zv
clJlZ2lzdHJhYmxlRG9tYWluKFdlYnNpdGVEYXRhU3RvcgogfQogCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQotVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBXZWJQcm9jZXNzUG9v
bDo6dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvclNlcnZpY2VXb3JrZXJzKCkKK1Vz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgV2ViUHJvY2Vzc1Bvb2w6OnVzZXJDb250ZW50
Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkKIHsKLSAgICBpZiAoIW1fdXNlckNvbnRl
bnRDb250cm9sbGVyRm9yU2VydmljZVdvcmtlcikKLSAgICAgICAgbV91c2VyQ29udGVudENvbnRy
b2xsZXJGb3JTZXJ2aWNlV29ya2VyID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmNy
ZWF0ZSgpOworICAgIGlmICghbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JXb3JrZXJzKQorICAg
ICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtlcnMgPSBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6Y3JlYXRlKCk7CiAKLSAgICByZXR1cm4gbV91c2VyQ29udGVudENvbnRy
b2xsZXJGb3JTZXJ2aWNlV29ya2VyLT5pZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIG1fdXNlckNv
bnRlbnRDb250cm9sbGVyRm9yV29ya2Vycy0+aWRlbnRpZmllcigpOwogfQogI2VuZGlmCiAKQEAg
LTExMTksMTUgKzExNjcsMTMgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNy
ZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSToKIAogICAgIGF1dG8g
cGFnZSA9IHByb2Nlc3MtPmNyZWF0ZVdlYlBhZ2UocGFnZUNsaWVudCwgV1RGTW92ZShwYWdlQ29u
ZmlndXJhdGlvbikpOwogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmICghbV9z
ZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMpIHsKLSAgICAgICAgbV9zZXJ2aWNlV29ya2VyUHJlZmVy
ZW5jZXMgPSBwYWdlLT5wcmVmZXJlbmNlc1N0b3JlKCk7Ci0gICAgICAgIGZvciAoYXV0byYgc2Vy
dmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkpCi0gICAgICAgICAg
ICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy51cGRhdGVTZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXNTdG9y
ZSgqbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMpOworICAgIGlmICghbV93b3JrZXJQcmVmZXJl
bmNlcykgeworICAgICAgICBtX3dvcmtlclByZWZlcmVuY2VzID0gcGFnZS0+cHJlZmVyZW5jZXNT
dG9yZSgpOworICAgICAgICBmb3IgKGF1dG8mIHdvcmtlclByb2Nlc3MgOiB3b3JrZXJQcm9jZXNz
ZXMoKSkKKyAgICAgICAgICAgIHdvcmtlclByb2Nlc3MudXBkYXRlV29ya2VyUHJlZmVyZW5jZXNT
dG9yZSgqbV93b3JrZXJQcmVmZXJlbmNlcyk7CiAgICAgfQogICAgIGlmICh1c2VyQ29udGVudENv
bnRyb2xsZXIpCi0gICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yU2VydmljZVdvcmtl
ciA9IHVzZXJDb250ZW50Q29udHJvbGxlcjsKLSNlbmRpZgorICAgICAgICBtX3VzZXJDb250ZW50
Q29udHJvbGxlckZvcldvcmtlcnMgPSB1c2VyQ29udGVudENvbnRyb2xsZXI7CiAKICAgICBib29s
IGVuYWJsZVByb2Nlc3NTd2FwT25Dcm9zc1NpdGVOYXZpZ2F0aW9uID0gcGFnZS0+cHJlZmVyZW5j
ZXMoKS5wcm9jZXNzU3dhcE9uQ3Jvc3NTaXRlTmF2aWdhdGlvbkVuYWJsZWQoKTsKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQpAQCAtMTE1MCwxNiArMTE5NiwxNCBAQCBSZWY8V2ViUGFnZVByb3h5
PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBS
ZWY8QVBJOgogICAgIHJldHVybiBwYWdlOwogfQogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQotdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlU2VydmljZVdvcmtlclVzZXJBZ2VudChjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudCkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVdvcmtlclVz
ZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKIHsKLSAgICBpZiAobV9zZXJ2aWNlV29y
a2VyVXNlckFnZW50ID09IHVzZXJBZ2VudCkKKyAgICBpZiAobV93b3JrZXJVc2VyQWdlbnQgPT0g
dXNlckFnZW50KQogICAgICAgICByZXR1cm47Ci0gICAgbV9zZXJ2aWNlV29ya2VyVXNlckFnZW50
ID0gdXNlckFnZW50OwotICAgIGZvciAoYXV0byYgc2VydmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzKCkpCi0gICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzLnNldFNl
cnZpY2VXb3JrZXJVc2VyQWdlbnQobV9zZXJ2aWNlV29ya2VyVXNlckFnZW50KTsKKyAgICBtX3dv
cmtlclVzZXJBZ2VudCA9IHVzZXJBZ2VudDsKKyAgICBmb3IgKGF1dG8mIHdvcmtlclByb2Nlc3Mg
OiB3b3JrZXJQcm9jZXNzZXMoKSkKKyAgICAgICAgd29ya2VyUHJvY2Vzcy5zZXRXb3JrZXJVc2Vy
QWdlbnQobV93b3JrZXJVc2VyQWdlbnQpOwogfQotI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHBhZ2VJRCwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQogewpAQCAtMTUzOCw4ICsxNTgy
LDEzIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzKCkKIHsK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhp
cyB9OwotICAgIHdoaWxlIChzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkuY29tcHV0ZVNpemUoKSkK
LSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmJlZ2luKCktPmRpc2FibGVTZXJ2aWNl
V29ya2VycygpOworICAgIFZlY3RvcjxSZWY8V2ViUHJvY2Vzc1Byb3h5Pj4gc2VydmljZVdvcmtl
clByb2Nlc3NlczsKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFsmXShhdXRvJiBwcm9j
ZXNzKSB7CisgICAgICAgIGlmIChwcm9jZXNzLmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCisg
ICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFwcGVuZChwcm9jZXNzKTsKKyAgICB9
KTsKKyAgICBmb3IgKGF1dG8mIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogc2VydmljZVdvcmtlclBy
b2Nlc3NlcykKKyAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3MtPmRpc2FibGVXb3JrZXJzKFdl
YlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiAjZW5kaWYKIH0KIApA
QCAtMTc2NywxMyArMTgxNiwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXBvcnRXZWJDb250
ZW50Q1BVVGltZShTZWNvbmRzIGNwdVRpbWUsIHVpbnQ2NF90IGFjdGl2aXR5UwogI2VuZGlmCiB9
CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1XZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJv
eHk+JiBXZWJQcm9jZXNzUG9vbDo6c2VydmljZVdvcmtlclByb2Nlc3NlcygpCitXZWFrSGFzaFNl
dDxXZWJQcm9jZXNzUHJveHk+JiBXZWJQcm9jZXNzUG9vbDo6d29ya2VyUHJvY2Vzc2VzKCkKIHsK
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5Pj4g
cHJvY2Vzc2VzOwogICAgIHJldHVybiBwcm9jZXNzZXM7CiB9Ci0jZW5kaWYKIAogdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKQogewpAQCAtMTc4NSwyMCArMTgz
MiwyNSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpCiAg
ICAgaWYgKGF1dG8qIGdwdVByb2Nlc3MgPSBHUFVQcm9jZXNzUHJveHk6OnNpbmdsZXRvbklmQ3Jl
YXRlZCgpKQogICAgICAgICBncHVQcm9jZXNzLT51cGRhdGVQcm9jZXNzQXNzZXJ0aW9uKCk7CiAj
ZW5kaWYKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKICAgICAvLyBDaGVjayBvbiBuZXh0
IHJ1biBsb29wIHNpbmNlIHRoZSB3ZWIgcHJvY2VzcyBwcm94eSB0b2tlbnMgYXJlIHByb2JhYmx5
IGJlaW5nIHVwZGF0ZWQuCiAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW10gewotICAgICAgICBmb3Ig
KGF1dG8mIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogc2VydmljZVdvcmtlclByb2Nlc3NlcygpKQot
ICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3MudXBkYXRlU2VydmljZVdvcmtlclByb2Nl
c3NBc3NlcnRpb24oKTsKLSAgICB9KTsKKyAgICAgICAgd29ya2VyUHJvY2Vzc2VzKCkuZm9yRWFj
aChbXShhdXRvJiB3b3JrZXJQcm9jZXNzKSB7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQor
ICAgICAgICAgICAgaWYgKHdvcmtlclByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkK
KyAgICAgICAgICAgICAgICB3b3JrZXJQcm9jZXNzLnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRp
b24oV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgor
ICAgICAgICAgICAgaWYgKHdvcmtlclByb2Nlc3MuaXNSdW5uaW5nU2hhcmVkV29ya2VycygpKQor
ICAgICAgICAgICAgICAgIHdvcmtlclByb2Nlc3MudXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlv
bihXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlcik7CisgICAgICAgIH0p
OworICAgIH0pOwogfQogCiBib29sIFdlYlByb2Nlc3NQb29sOjppc1NlcnZpY2VXb3JrZXJQYWdl
SUQoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGluZWZmaWNpZW50LgotICAgIHJl
dHVybiBXVEY6OmFueU9mKHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSwgW3BhZ2VJRF0oYXV0byYg
cHJvY2VzcykgeworICAgIHJldHVybiBXVEY6OmFueU9mKHdvcmtlclByb2Nlc3NlcygpLCBbcGFn
ZUlEXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiBwcm9jZXNzLmhhc1NlcnZpY2VX
b3JrZXJQYWdlUHJveHkocGFnZUlEKTsKICAgICB9KTsKICNlbmRpZgpAQCAtMjEyNCwxNiArMjE3
NiwyNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRVc2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzKGJvb2wgdXNlU2VwYXJhdGVTZXJ2aWNlVwogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQorc2l6ZV90IFdlYlByb2Nlc3NQb29sOjpzZXJ2aWNlV29ya2VyUHJveGllc0NvdW50
KCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBjb3VudCA9IDA7CisgICAgd29ya2VyUHJvY2Vzc2Vz
KCkuZm9yRWFjaChbJl0oYXV0byYgcHJvY2VzcykgeworICAgICAgICBpZiAocHJvY2Vzcy5pc1J1
bm5pbmdTZXJ2aWNlV29ya2VycygpKQorICAgICAgICAgICAgKytjb3VudDsKKyAgICB9KTsKKyAg
ICByZXR1cm4gY291bnQ7Cit9CisKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6Omhhc1NlcnZpY2VXb3Jr
ZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RG
OjphbnlPZihzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKKyAg
ICByZXR1cm4gV1RGOjphbnlPZih3b3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2Vzcykg
ewogICAgICAgICByZXR1cm4gcHJvY2Vzcy5oYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2
aXR5Rm9yVGVzdGluZygpOwogICAgIH0pOwogfQogCiBib29sIFdlYlByb2Nlc3NQb29sOjpoYXNT
ZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIFdURjo6YW55T2Yoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9j
ZXNzKSB7CisgICAgcmV0dXJuIFdURjo6YW55T2Yod29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8m
IHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuIHByb2Nlc3MuaGFzU2VydmljZVdvcmtlckJhY2tn
cm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGViNjZkODk0OTBkZi4uZTcwYjZmNDI5ZjdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTM3NCwxNyArMzc0
LDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIG5ldHdvcmtQcm9jZXNzRGlkVGVybWluYXRlKE5ldHdv
cmtQcm9jZXNzUHJveHkmLCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJtaW5hdGlvblJlYXNvbik7
CiAKICAgICBib29sIGlzU2VydmljZVdvcmtlclBhZ2VJRChXZWJQYWdlUHJveHlJZGVudGlmaWVy
KSBjb25zdDsKKyAgICB2b2lkIHJlbW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1By
b3h5Jik7CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgc3RhdGljIHZvaWQgZXN0
YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3
b3JrUHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdv
cmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKLSAgICB2b2lkIHJlbW92ZUZyb21TZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKFdlYlBy
b2Nlc3NQcm94eSYpOwotICAgIHNpemVfdCBzZXJ2aWNlV29ya2VyUHJveGllc0NvdW50KCkgY29u
c3QgeyByZXR1cm4gc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmNvbXB1dGVTaXplKCk7IH0KLSAg
ICB2b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQpOwotICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgdXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllckZvclNlcnZpY2VXb3JrZXJzKCk7CisgICAgc3RhdGljIHZvaWQgZXN0
YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHNpemVfdCBz
ZXJ2aWNlV29ya2VyUHJveGllc0NvdW50KCkgY29uc3Q7CisgICAgVXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllciB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2Vycygp
OwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3Rpbmco
KSBjb25zdDsKICAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kQWN0aXZpdHlGb3JU
ZXN0aW5nKCkgY29uc3Q7CiAjZW5kaWYKICAgICB2b2lkIHNlcnZpY2VXb3JrZXJQcm9jZXNzQ3Jh
c2hlZChXZWJQcm9jZXNzUHJveHkmKTsKIAorICAgIHZvaWQgdXBkYXRlV29ya2VyVXNlckFnZW50
KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKKyAgICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hTaGFy
ZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIHByb2Nlc3NTdXBwcmVzc2lvbkVu
YWJsZWQoKSBjb25zdDsKICNlbmRpZgpAQCAtNjE4LDEzICs2MjEsMTEgQEAgcHJpdmF0ZToKIAog
ICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFdlYWtQdHI8V2ViUHJvY2Vzc1Byb3h5Pj4gbV9k
dW1teVByb2Nlc3NQcm94aWVzOyAvLyBMaWdodHdlaWdodCBXZWJQcm9jZXNzUHJveHkgb2JqZWN0
cyB3aXRob3V0IGJhY2tpbmcgcHJvY2Vzcy4KIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
LSAgICBzdGF0aWMgV2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5PiYgc2VydmljZVdvcmtlclBy
b2Nlc3NlcygpOwotICAgIGJvb2wgbV93YWl0aW5nRm9yV29ya2VyQ29udGV4dFByb2Nlc3NDb25u
ZWN0aW9uIHsgZmFsc2UgfTsKLSAgICBTdHJpbmcgbV9zZXJ2aWNlV29ya2VyVXNlckFnZW50Owot
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViUHJlZmVyZW5jZXNTdG9yZT4gbV9zZXJ2aWNlV29ya2VyUHJl
ZmVyZW5jZXM7Ci0gICAgUmVmUHRyPFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5PiBtX3Vz
ZXJDb250ZW50Q29udHJvbGxlckZvclNlcnZpY2VXb3JrZXI7Ci0jZW5kaWYKKyAgICBzdGF0aWMg
V2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5PiYgd29ya2VyUHJvY2Vzc2VzKCk7CisKKyAgICBz
dGQ6Om9wdGlvbmFsPFdlYlByZWZlcmVuY2VzU3RvcmU+IG1fd29ya2VyUHJlZmVyZW5jZXM7Cisg
ICAgUmVmUHRyPFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5PiBtX3VzZXJDb250ZW50Q29u
dHJvbGxlckZvcldvcmtlcnM7CisgICAgU3RyaW5nIG1fd29ya2VyVXNlckFnZW50OwogCiAjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIFJlZlB0cjxHUFVQcm9jZXNzUHJveHk+IG1fZ3B1UHJv
Y2VzczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4
IGNhYzM2N2YxMTE5Zi4uNWNmODZjYzc4NmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0
YS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKQEAgLTE4MiwxMSArMTgz
LDExIEBAIFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKFdlYlBy
b2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2Vic2l0CiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCi1SZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclNl
cnZpY2VXb3JrZXJzKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21h
aW4mJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9y
ZSkKK1JlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yV29ya2Vy
cyhXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgUmVn
aXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYgd2Vi
c2l0ZURhdGFTdG9yZSkKIHsKICAgICBhdXRvIHByb3h5ID0gYWRvcHRSZWYoKm5ldyBXZWJQcm9j
ZXNzUHJveHkocHJvY2Vzc1Bvb2wsICZ3ZWJzaXRlRGF0YVN0b3JlLCBJc1ByZXdhcm1lZDo6Tm8s
IENyb3NzT3JpZ2luTW9kZTo6U2hhcmVkLCBDYXB0aXZlUG9ydGFsTW9kZTo6RGlzYWJsZWQpKTsK
ICAgICBwcm94eS0+bV9yZWdpc3RyYWJsZURvbWFpbiA9IFdURk1vdmUocmVnaXN0cmFibGVEb21h
aW4pOwotICAgIHByb3h5LT5lbmFibGVTZXJ2aWNlV29ya2Vycyhwcm9jZXNzUG9vbC51c2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKSk7CisgICAgcHJveHkt
PmVuYWJsZVdvcmtlcnMod29ya2VyVHlwZSwgcHJvY2Vzc1Bvb2wudXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CiAgICAgcHJveHktPmNvbm5lY3QoKTsKICAgICBy
ZXR1cm4gcHJveHk7CiB9CkBAIC05OTUsMTAgKzk5NiwxMCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6ZGlkQmVjb21lVW5yZXNwb25zaXZlKCkKICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogaXNS
ZXNwb25zaXZlQ2FsbGJhY2tzKQogICAgICAgICBjYWxsYmFjayhpc1dlYlByb2Nlc3NSZXNwb25z
aXZlKTsKIAotICAgIC8vIElmIHRoZSB3ZWIgcHJvY2VzcyBiZWNvbWVzIHVucmVzcG9uc2l2ZSBh
bmQgb25seSBydW5zIHNlcnZpY2Ugd29ya2Vycywga2lsbCBpdCBvdXJzZWx2ZXMgc2luY2UgdGhl
cmUgYXJlIG5vIG5hdGl2ZSBjbGllbnRzIHRvIGRvIGl0LgotICAgIGlmIChpc1J1bm5pbmdTZXJ2
aWNlV29ya2VycygpICYmIG1fcGFnZU1hcC5pc0VtcHR5KCkpIHsKLSAgICAgICAgV0VCUFJPQ0VT
U1BST1hZX1JFTEVBU0VfTE9HX0VSUk9SKFBlcmZvcm1hbmNlTG9nZ2luZywgImRpZEJlY29tZVVu
cmVzcG9uc2l2ZTogVGVybWluYXRpbmcgc2VydmljZSB3b3JrZXItb25seSB3ZWIgcHJvY2VzcyBi
ZWNhdXNlIGl0IGlzIHVucmVzcG9uc2l2ZSIpOwotICAgICAgICBkaXNhYmxlU2VydmljZVdvcmtl
cnMoKTsKKyAgICAvLyBJZiB0aGUgd2ViIHByb2Nlc3MgYmVjb21lcyB1bnJlc3BvbnNpdmUgYW5k
IG9ubHkgcnVucyBzZXJ2aWNlL3NoYXJlZCB3b3JrZXJzLCBraWxsIGl0IG91cnNlbHZlcyBzaW5j
ZSB0aGVyZSBhcmUgbm8gbmF0aXZlIGNsaWVudHMgdG8gZG8gaXQuCisgICAgaWYgKGlzUnVubmlu
Z1dvcmtlcnMoKSAmJiBtX3BhZ2VNYXAuaXNFbXB0eSgpKSB7CisgICAgICAgIFdFQlBST0NFU1NQ
Uk9YWV9SRUxFQVNFX0xPR19FUlJPUihQZXJmb3JtYW5jZUxvZ2dpbmcsICJkaWRCZWNvbWVVbnJl
c3BvbnNpdmU6IFRlcm1pbmF0aW5nIHdvcmtlci1vbmx5IHdlYiBwcm9jZXNzIGJlY2F1c2UgaXQg
aXMgdW5yZXNwb25zaXZlIik7CisgICAgICAgIGRpc2FibGVXb3JrZXJzKHsgV29ya2VyVHlwZTo6
U2VydmljZVdvcmtlciwgV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyIH0pOwogICAgICAgICB0ZXJt
aW5hdGUoKTsKICAgICB9CiB9CkBAIC0xNjk0LDggKzE2OTUsOSBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUoY29uc3QgVVJMJiB1cmwp
CiAgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IHsgdXJsIH07CiAgICAgaWYgKG1fcmVnaXN0cmFibGVEb21haW4gJiYgKm1fcmVnaXN0cmFibGVE
b21haW4gIT0gcmVnaXN0cmFibGVEb21haW4pIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
Ci0gICAgICAgIGRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgICAgICBkaXNhYmxlV29ya2Vy
cyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgorCiAgICAgICAgIC8vIE51bGwg
b3V0IHJlZ2lzdHJhYmxlIGRvbWFpbiBzaW5jZSB0aGlzIHByb2Nlc3MgaGFzIG5vdyBiZWVuIHVz
ZWQgZm9yIHNldmVyYWwgZG9tYWlucy4KICAgICAgICAgbV9yZWdpc3RyYWJsZURvbWFpbiA9IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgfTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTg2Niw2
MCArMTg2OCw4NSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2VydmljZVdvcmtl
ckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgcwogewogICAgIFdFQlBST0NFU1NQ
Uk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQ6
IFN0YXJ0ZWQiKTsKICAgICBtYXJrUHJvY2Vzc0FzUmVjZW50bHlVc2VkKCk7Ci0gICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hTZXJ2aWNlV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bvb2woKS5kZWZhdWx0
UGFnZUdyb3VwKCkucGFnZUdyb3VwSUQoKSwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnNl
cnZpY2VXb3JrZXJQYWdlUHJveHlJRCwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnNlcnZp
Y2VXb3JrZXJQYWdlSUQsIHN0b3JlLCByZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtlclBh
Z2VJZGVudGlmaWVyLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+aW5pdGlhbGl6YXRpb25E
YXRhIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIHNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RXN0YWJsaXNoU2VydmljZVdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVs
dFBhZ2VHcm91cCgpLnBhZ2VHcm91cElEKCksIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT53
b3JrZXJQYWdlUHJveHlJRCwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPndvcmtlclBhZ2VJ
RCwgc3RvcmUsIHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIs
IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5pbml0aWFsaXphdGlvbkRhdGEgfSwgW3RoaXMs
IHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICh3ZWFrVGhpcykK
ICAgICAgICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZXN0YWJs
aXNoU2VydmljZVdvcmtlckNvbnRleHQ6IEZpbmlzaGVkIik7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CiAgICAgfSwgMCk7CiB9CisjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6
OnNldFNlcnZpY2VXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCit2b2lk
IFdlYlByb2Nlc3NQcm94eTo6c2V0V29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50KQogewotICAgIEFTU0VSVChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbik7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlNldFVzZXJBZ2VudCB7
IHVzZXJBZ2VudCB9LCAwKTsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYgKG1f
c2VydmljZVdvcmtlckluZm9ybWF0aW9uKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U2V0VXNlckFnZW50IHsgdXNlckFnZW50IH0sIDApOwor
I2VuZGlmCisgICAgaWYgKG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24pCisgICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U2V0VXNl
ckFnZW50IHsgdXNlckFnZW50IH0sIDApOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBk
YXRlU2VydmljZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZSYgc3RvcmUpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlV29ya2VyUHJlZmVyZW5jZXNT
dG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKIHsKLSAgICBBU1NFUlQobV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpVcGRhdGVQcmVmZXJlbmNlc1N0b3JlIHsgc3RvcmUgfSwgMCk7
CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIGlmIChtX3NlcnZpY2VXb3JrZXJJbmZv
cm1hdGlvbikKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OlVwZGF0ZVByZWZlcmVuY2VzU3RvcmUgeyBzdG9yZSB9LCAwKTsKKyNlbmRpZgorICAg
IGlmIChtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZVByZWZlcmVuY2Vz
U3RvcmUgeyBzdG9yZSB9LCAwKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVNl
cnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCkKKy8vIEZJWE1FOiBDbGllbnRzIGRvIG5vdCBw
cm9wZXJseSBnZXQgcG9wdWxhdGVkIGluIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24uCit2b2lk
IFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBl
IHdvcmtlclR5cGUpCiB7Ci0gICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NT
dXNwZW5zaW9uLCAidXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb246Iik7Ci0gICAg
QVNTRVJUKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsKLSAgICBpZiAoIW1fc2VydmljZVdv
cmtlckluZm9ybWF0aW9uKQorICAgIGF1dG8mIHdvcmtlckluZm9ybWF0aW9uID0gd29ya2VyVHlw
ZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9u
IDogbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247CisgICAgQVNTRVJUKHdvcmtlckluZm9ybWF0
aW9uKTsKKyAgICBpZiAoIXdvcmtlckluZm9ybWF0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBib29sIHNob3VsZFRha2VGb3JlZ3JvdW5kQWN0aXZpdHkgPSBXVEY6OmFueU9mKG1fc2Vydmlj
ZVdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMsIFsmXShhdXRvJiBwcm9jZXNzKSB7
CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBk
YXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbjogd29ya2VyVHlwZT0le3B1YmxpY31zIiwgd29ya2Vy
VHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyAic2hhcmVkIiA6ICJzZXJ2aWNlIik7
CisKKyAgICBib29sIHNob3VsZFRha2VGb3JlZ3JvdW5kQWN0aXZpdHkgPSBXVEY6OmFueU9mKHdv
cmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMsIFsmXShhdXRvJiBwcm9jZXNzKSB7CiAg
ICAgICAgIHJldHVybiAmcHJvY2VzcyAhPSB0aGlzICYmICEhcHJvY2Vzcy5tX2ZvcmVncm91bmRU
b2tlbjsKICAgICB9KTsKICAgICBpZiAoc2hvdWxkVGFrZUZvcmVncm91bmRBY3Rpdml0eSkgewot
ICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRGb3JlZ3JvdW5kQWN0aXZpdHko
bV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKLSAgICAgICAgICAgIG1fc2Vy
dmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmZvcmVncm91bmRB
Y3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGZvcmVncm91bmQgdmlldyhzKSJfcyk7CisgICAg
ICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEZvcmVncm91bmRBY3Rpdml0eSh3b3Jr
ZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQorICAgICAgICAgICAgd29ya2VySW5mb3JtYXRpb24t
PmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuZm9yZWdyb3VuZEFjdGl2aXR5KCJXb3JrZXIgZm9yIGZv
cmVncm91bmQgdmlldyhzKSJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBib29s
IHNob3VsZFRha2VCYWNrZ3JvdW5kQWN0aXZpdHkgPSBXVEY6OmFueU9mKG1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMsIFsmXShhdXRvJiBwcm9jZXNzKSB7CisgICAg
Ym9vbCBzaG91bGRUYWtlQmFja2dyb3VuZEFjdGl2aXR5ID0gV1RGOjphbnlPZih3b3JrZXJJbmZv
cm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2VzLCBbJl0oYXV0byYgcHJvY2VzcykgewogICAgICAgICBy
ZXR1cm4gJnByb2Nlc3MgIT0gdGhpcyAmJiAhIXByb2Nlc3MubV9iYWNrZ3JvdW5kVG9rZW47CiAg
ICAgfSk7CiAgICAgaWYgKHNob3VsZFRha2VCYWNrZ3JvdW5kQWN0aXZpdHkpIHsKLSAgICAgICAg
aWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5KG1fc2Vydmlj
ZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCi0gICAgICAgICAgICBtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHko
IlNlcnZpY2UgV29ya2VyIGZvciBiYWNrZ3JvdW5kIHZpZXcocykiX3MpOworICAgICAgICBpZiAo
IVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkod29ya2VySW5mb3Jt
YXRpb24tPmFjdGl2aXR5KSkKKyAgICAgICAgICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0
eSA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiV29ya2VyIGZvciBiYWNrZ3JvdW5k
IHZpZXcocykiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1faGFzU2Vy
dmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKSB7CisgICAgaWYgKHdvcmtlclR5cGUgPT0g
V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciAmJiBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5k
UHJvY2Vzc2luZykgewogICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vz
c1N1c3BlbnNpb24sICJTZXJ2aWNlIFdvcmtlciBmb3IgYmFja2dyb3VuZCBwcm9jZXNzaW5nIik7
Ci0gICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEJhY2tncm91bmRBY3Rpdml0
eShtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQotICAgICAgICAgICAgbV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuYmFja2dyb3Vu
ZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3IgYmFja2dyb3VuZCBwcm9jZXNzaW5nIl9zKTsK
KyAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5
KHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCisgICAgICAgICAgICB3b3JrZXJJbmZvcm1h
dGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIlNlcnZpY2Ug
V29ya2VyIGZvciBiYWNrZ3JvdW5kIHByb2Nlc3NpbmciX3MpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbnVsbHB0
cjsKKyAgICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBudWxscHRyOwogfQogCit2b2lk
IFdlYlByb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dChjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJh
YmxlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImVzdGFi
bGlzaFNoYXJlZFdvcmtlckNvbnRleHQ6IFN0YXJ0ZWQiKTsKKyAgICBtYXJrUHJvY2Vzc0FzUmVj
ZW50bHlVc2VkKCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mg
eyBwcm9jZXNzUG9vbCgpLmRlZmF1bHRQYWdlR3JvdXAoKS5wYWdlR3JvdXBJRCgpLCBtX3NoYXJl
ZFdvcmtlckluZm9ybWF0aW9uLT53b3JrZXJQYWdlUHJveHlJRCwgbV9zaGFyZWRXb3JrZXJJbmZv
cm1hdGlvbi0+d29ya2VyUGFnZUlELCBzdG9yZSwgcmVnaXN0cmFibGVEb21haW4sIG1fc2hhcmVk
V29ya2VySW5mb3JtYXRpb24tPmluaXRpYWxpemF0aW9uRGF0YSB9LCBbdGhpcywgd2Vha1RoaXMg
PSBXZWFrUHRyIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAg
ICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNo
YXJlZFdvcmtlckNvbnRleHQ6IEZpbmlzaGVkIik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CisgICAgfSwgMCk7Cit9CisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlBy
b2Nlc3NQcm94eSYgcHJveHkpCiB7CiAgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlv
bikKQEAgLTE5MjcsNyArMTk1NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCiAKICAgICBX
RUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgInJlZ2lzdGVyU2Vydmlj
ZVdvcmtlckNsaWVudFByb2Nlc3M6IGNsaWVudFByb2Nlc3M9JXAsIGNsaWVudFBJRD0lZCIsICZw
cm94eSwgcHJveHkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgbV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb24tPmNsaWVudFByb2Nlc3Nlcy5hZGQocHJveHkpOwotICAgIHVwZGF0ZVNlcnZpY2VX
b3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlv
bihXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6
OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHBy
b3h5KQpAQCAtMTkzNyw3ICsxOTY0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVucmVnaXN0
ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb3gKIAogICAg
IFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAidW5yZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzOiBjbGllbnRQcm9jZXNzPSVwLCBjbGllbnRQSUQ9JWQi
LCAmcHJveHksIHByb3h5LnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgIG1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMucmVtb3ZlKHByb3h5KTsKLSAgICB1cGRhdGVT
ZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOworICAgIHVwZGF0ZVdvcmtlclByb2Nlc3NB
c3NlcnRpb24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAKIGJvb2wgV2ViUHJvY2Vz
c1Byb3h5OjpoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNv
bnN0CkBAIC0xOTU3LDcgKzE5ODQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c3RhcnRTZXJ2
aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoKQogCiAgICAgV0VCUFJPQ0VTU1BST1hZX1JF
TEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAic3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3Vu
ZFByb2Nlc3NpbmciKTsKICAgICBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2lu
ZyA9IHRydWU7Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKKyAg
ICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIp
OwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQ
cm9jZXNzaW5nKCkKQEAgLTE5NjcsMjMgKzE5OTQsMzkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZygpCiAKICAgICBXRUJQUk9DRVNT
UFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJlbmRTZXJ2aWNlV29ya2VyQmFj
a2dyb3VuZFByb2Nlc3NpbmciKTsKICAgICBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJv
Y2Vzc2luZyA9IGZhbHNlOwotICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9u
KCk7CisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlOjpTZXJ2aWNl
V29ya2VyKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKLXZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpkaXNhYmxlU2VydmljZVdvcmtlcnMoKQordm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmRpc2FibGVXb3JrZXJzKE9wdGlvblNldDxXb3JrZXJUeXBlPiB3b3JrZXJUeXBlKQogewot
ICAgIGlmICghbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAgQVNTRVJUKCF3b3JrZXJU
eXBlLmlzRW1wdHkoKSk7CisKKyAgICBib29sIGRpZENoYW5nZSA9IGZhbHNlOworICAgIGlmICh3
b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpICYmIG1fc2Vydmlj
ZVdvcmtlckluZm9ybWF0aW9uKSB7CisgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9u
ID0geyB9OworICAgICAgICBkaWRDaGFuZ2UgPSB0cnVlOworICAgIH0KKyAgICBpZiAod29ya2Vy
VHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpICYmIG1fc2hhcmVkV29ya2Vy
SW5mb3JtYXRpb24pIHsKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA9IHsgfTsK
KyAgICAgICAgZGlkQ2hhbmdlID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKCFkaWRDaGFuZ2UpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNl
V29ya2VyLCAiZGlzYWJsZVNlcnZpY2VXb3JrZXJzOiIpOwotICAgIG1fc2VydmljZVdvcmtlcklu
Zm9ybWF0aW9uID0geyB9OworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNz
LCAiZGlzYWJsZVdvcmtlcnM6IERpc2FibGluZyB3b3JrZXJzIChTaGFyZWRXb3JrZXJzPSVkLCBT
ZXJ2aWNlV29ya2Vycz0lZCkiLCB3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNoYXJl
ZFdvcmtlciksIHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikp
OworCiAgICAgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKIAorICAgIGlm
ICghaXNSdW5uaW5nV29ya2VycygpKQorICAgICAgICBwcm9jZXNzUG9vbCgpLnJlbW92ZUZyb21X
b3JrZXJQcm9jZXNzZXMoKnRoaXMpOworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAg
IHByb2Nlc3NQb29sKCkucmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKnRoaXMpOwot
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9zZSB7
IH0sIDApOworICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNlcnZpY2VX
b3JrZXIpKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6Q2xvc2UgeyB9LCAwKTsKICNlbmRpZgorICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5z
KFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlcikpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q2xvc2UgeyB9LCAwKTsKIAogICAg
IG1heWJlU2h1dERvd24oKTsKIH0KQEAgLTIwMDQsMTEgKzIwNDcsMTMgQEAgc3RhdGljIFZlY3Rv
cjxzdGQ6OnBhaXI8V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLCBVUkw+PiBjb250ZW50
UnVsZUxpc3RzRnIKIH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlU2Vy
dmljZVdvcmtlcnMoY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYgdXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVX
b3JrZXJzKFdvcmtlclR5cGUgd29ya2VyVHlwZSwgY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllciYgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKIHsKLSAgICBBU1NF
UlQoIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsKLSAgICBXRUJQUk9DRVNTUFJPWFlfUkVM
RUFTRV9MT0coU2VydmljZVdvcmtlciwgImVuYWJsZVNlcnZpY2VXb3JrZXJzOiIpOwotICAgIG1f
c2VydmljZVdvcmtlckluZm9ybWF0aW9uID0gU2VydmljZVdvcmtlckluZm9ybWF0aW9uIHsKKyAg
ICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgImVuYWJsZVdvcmtl
cnM6IHdvcmtlclR5cGU9JXUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4od29ya2VyVHlwZSkpOwor
ICAgIGF1dG8mIHdvcmtlckluZm9ybWF0aW9uID0gd29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpT
aGFyZWRXb3JrZXIgPyBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIDogbV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb247CisgICAgQVNTRVJUKCF3b3JrZXJJbmZvcm1hdGlvbik7CisKKyAgICB3b3Jr
ZXJJbmZvcm1hdGlvbiA9IFdvcmtlckluZm9ybWF0aW9uIHsKICAgICAgICAgV2ViUGFnZVByb3h5
SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwKICAgICAgICAgUGFnZUlkZW50aWZpZXI6OmdlbmVyYXRl
KCksCiAgICAgICAgIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgewpAQCAtMjAyMSw5
ICsyMDY2LDggQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVNlcnZpY2VXb3JrZXJzKGNv
bnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIKICAgICAgICAgeyB9CiAgICAgfTsK
ICAgICB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwotI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigp
OwotI2VuZGlmCisKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKHdvcmtlclR5cGUp
OwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlU2xlZXBEaXNhYmxlcihTbGVl
cERpc2FibGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgYm9v
bCBkaXNwbGF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRl
eCBmNTE0Yjk5MTZhZDQuLjE5MmQ1ZDJiNmY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTEzNiw5ICsxMzYsMTMgQEAgcHVibGljOgogCiAgICAgZW51
bSBjbGFzcyBTaG91bGRMYXVuY2hQcm9jZXNzIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBlbnVt
IGNsYXNzIENhcHRpdmVQb3J0YWxNb2RlIDogYm9vbCB7IERpc2FibGVkLCBFbmFibGVkIH07Cisg
ICAgZW51bSBjbGFzcyBXb3JrZXJUeXBlIDogdWludDMyX3QgeworICAgICAgICBTZXJ2aWNlV29y
a2VyID0gMSA8PCAwLAorICAgICAgICBTaGFyZWRXb3JrZXIgPSAxIDw8IDEKKyAgICB9OwogCiAg
ICAgc3RhdGljIFJlZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCYsIFdl
YnNpdGVEYXRhU3RvcmUqLCBDYXB0aXZlUG9ydGFsTW9kZSwgSXNQcmV3YXJtZWQsIFdlYkNvcmU6
OkNyb3NzT3JpZ2luTW9kZSA9IFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZTo6U2hhcmVkLCBTaG91
bGRMYXVuY2hQcm9jZXNzID0gU2hvdWxkTGF1bmNoUHJvY2Vzczo6WWVzKTsKLSAgICBzdGF0aWMg
UmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlRm9yU2VydmljZVdvcmtlcnMoV2ViUHJvY2Vzc1Bv
b2wmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBXZWJzaXRlRGF0YVN0b3JlJik7Cisg
ICAgc3RhdGljIFJlZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZUZvcldvcmtlcnMoV29ya2VyVHlw
ZSwgV2ViUHJvY2Vzc1Bvb2wmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBXZWJzaXRl
RGF0YVN0b3JlJik7CiAKICAgICB+V2ViUHJvY2Vzc1Byb3h5KCk7CiAKQEAgLTE2MSw4ICsxNjUs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc0luUHJvY2Vzc0NhY2hlKGJvb2wsIFdpbGxTaHV0
RG93biA9IFdpbGxTaHV0RG93bjo6Tm8pOwogICAgIGJvb2wgaXNJblByb2Nlc3NDYWNoZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNJblByb2Nlc3NDYWNoZTsgfQogCi0gICAgdm9pZCBlbmFibGVTZXJ2
aWNlV29ya2Vycyhjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJik7Ci0gICAg
dm9pZCBkaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICB2b2lkIGVuYWJsZVdvcmtlcnMoV29y
a2VyVHlwZSwgY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYpOworICAgIHZv
aWQgZGlzYWJsZVdvcmtlcnMoT3B0aW9uU2V0PFdvcmtlclR5cGU+KTsKIAogICAgIFdlYnNpdGVE
YXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IEFTU0VSVChtX3dlYnNpdGVEYXRh
U3RvcmUpOyByZXR1cm4gKm1fd2Vic2l0ZURhdGFTdG9yZTsgfQogICAgIHZvaWQgc2V0V2Vic2l0
ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlJik7CkBAIC0xOTQsNiArMTk4LDkgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpIGNvbnN0IHsgcmV0dXJuICEh
bV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247IH0KICAgICBib29sIGlzU3RhbmRhbG9uZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gaXNSdW5uaW5nU2VydmljZVdvcmtlcnMo
KSAmJiAhcGFnZUNvdW50KCk7IH0KKyAgICBib29sIGlzUnVubmluZ1NoYXJlZFdvcmtlcnMoKSBj
b25zdCB7IHJldHVybiAhIW1fc2hhcmVkV29ya2VySW5mb3JtYXRpb247IH0KKyAgICBib29sIGlz
U3RhbmRhbG9uZVNoYXJlZFdvcmtlclByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBpc1J1bm5pbmdT
aGFyZWRXb3JrZXJzKCkgJiYgIXBhZ2VDb3VudCgpOyB9CisgICAgYm9vbCBpc1J1bm5pbmdXb3Jr
ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiB8fCBtX3NlcnZp
Y2VXb3JrZXJJbmZvcm1hdGlvbjsgfQogCiAgICAgYm9vbCBpc0R1bW15UHJvY2Vzc1Byb3h5KCkg
Y29uc3Q7CiAKQEAgLTM1OSwxMiArMzY2LDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRl
QXVkaWJsZU1lZGlhQXNzZXJ0aW9ucygpOwogCisgICAgdm9pZCBzZXRXb3JrZXJVc2VyQWdlbnQo
Y29uc3QgU3RyaW5nJik7CisgICAgdm9pZCB1cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNv
bnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtl
ckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHVw
ZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZSk7CiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogICAgIHZvaWQgZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQoY29uc3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4g
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwotICAgIHZvaWQgc2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKLSAg
ICB2b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUmKTsKLSAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJQYWdlUHJveHkoV2ViUGFn
ZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCkgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb24gJiYgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnNlcnZpY2VXb3JrZXJQYWdl
UHJveHlJRCA9PSBwYWdlUHJveHlJRDsgfQotICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtlclBy
b2Nlc3NBc3NlcnRpb24oKTsKKyAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJQYWdlUHJveHkoV2Vi
UGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCkgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb24gJiYgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPndvcmtlclBhZ2VQcm94
eUlEID09IHBhZ2VQcm94eUlEOyB9CiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYpOwogICAgIGJvb2wgaGFzU2Vydmlj
ZVdvcmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdDsKQEAgLTY0OCwxNCAr
NjU2LDE1IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBSZWZQdHI8TG9nZ2VyPiBtX2xvZ2dlcjsK
IAotICAgIHN0cnVjdCBTZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gewotICAgICAgICBXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQYWdlUHJveHlJRDsKLSAgICAgICAgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgc2VydmljZVdvcmtlclBhZ2VJRDsKKyAgICBzdHJ1Y3QgV29ya2Vy
SW5mb3JtYXRpb24geworICAgICAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdvcmtlclBhZ2VQ
cm94eUlEOworICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3b3JrZXJQYWdlSUQ7CiAg
ICAgICAgIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRh
OwogICAgICAgICBQcm9jZXNzVGhyb3R0bGVyOjpBY3Rpdml0eVZhcmlhbnQgYWN0aXZpdHk7CiAg
ICAgICAgIFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4gY2xpZW50UHJvY2Vzc2VzOwogICAg
IH07Ci0gICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySW5mb3JtYXRpb24+IG1fc2Vydmlj
ZVdvcmtlckluZm9ybWF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8V29ya2VySW5mb3JtYXRpb24+
IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8V29ya2VySW5m
b3JtYXRpb24+IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb247CiAgICAgYm9vbCBtX2hhc1NlcnZp
Y2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyB7IGZhbHNlIH07CiAKICAgICBIYXNoTWFwPFdl
YkNvcmU6OlNsZWVwRGlzYWJsZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
U2xlZXBEaXNhYmxlcj4+IG1fc2xlZXBEaXNhYmxlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2NGU0MDQ0MGI4ZTMuLmE4OWUxYzNj
ZTA3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC04ODEsNiArODgxLDcgQEAKIAkJNDYxNEYxMzIyNURFRDg3NTAwNzAwNkU3IC8qIEdQ
VVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZBQzUzMjQyNURFRDgxRTAwM0I1N0VDIC8qIEdQVVByb2Nl
c3NDb25uZWN0aW9uUGFyYW1ldGVycy5oICovOyB9OwogCQk0NjFDQ0NBNTIzMTQ4NUE3MDBCNjU5
QjkgLyogVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzMjM2ODUyMzE0ODMzRjAwQTQ4RkE3IC8qIFVJUmVtb3Rl
T2JqZWN0UmVnaXN0cnkuaCAqLzsgfTsKIAkJNDYxQ0NDQTYyMzE0ODVBQTAwQjY1OUI5IC8qIFdl
YlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjMyMzY4MzIzMTQ4MUVGMDBBNDhGQTcgLyogV2ViUmVtb3RlT2JqZWN0
UmVnaXN0cnkuaCAqLzsgfTsKKwkJNDYxRTFCRjIyNzlBMDExNjAwNkFGNTNCIC8qIFdlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYxRTFCRUYyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICovOyB9OwogCQk0NjNGRDQ4MDFF
Qjk0NTk2MDBBMjk4MkMgLyogV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0ZENDdGMUVCOTQ1ODQwMEEy
OTgyQyAvKiBXS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2M0ZENDgyMUVCOTRFQzAwMEEyOTgyQyAv
KiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0ZENDgxMUVCOTRFQUQwMEEyOTgyQyAvKiBQcm9jZXNzVGVy
bWluYXRpb25SZWFzb24uaCAqLzsgfTsKIAkJNDY1OUYyNUYyNzVGRjZCMjAwQkJCMzY5IC8qIENh
cHRpdmVQb3J0YWxNb2RlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2NTlGMjVFMjc1RkY2QjIwMEJCQjM2OSAvKiBDYXB0aXZlUG9ydGFs
TW9kZU9ic2VydmVyLmggKi87IH07CkBAIC04OTAsNiArODkxLDggQEAKIAkJNDY3MUZGMUYyMzIx
N0VGRjAwMUI2NEM3IC8qIFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjcxRkYxRDIzMjE3RUZGMDAxQjY0Qzcg
LyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCAqLzsgfTsKIAkJNDY3RTQzRTgyMjQzRkY3RDAw
QjEzOTI0IC8qIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdFNDNFNzIyNDNGRjZEMDBCMTM5MjQg
LyogV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaCAqLzsgfTsKIAkJNDY4MDlBN0MyM0Q5
MjI1RTAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgwOUE3QTIzRDkyMjUzMDBDMjk3RDAgLyogV2ViQ29v
a2llQ2FjaGUuaCAqLzsgfTsKKwkJNDY5NDNERDAyNzYzRjgzQTAwNEI2MTBFIC8qIFdlYlNoYXJl
ZFdvcmtlclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0Njk0M0RDRjI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyUHJvdmlk
ZXIuaCAqLzsgfTsKKwkJNDY5NDNERDEyNzYzRjgzRjAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2OTQzRENEMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2QTJCNjA5MUU1Njc2QTYwMEMzREVEQSAvKiBCYWNr
Z3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QTJCNjA3MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNr
Z3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaCAqLzsgfTsKIAkJNDZCMDUyNDcyMjY2
OEQ4NTAwMjY1Qjk3IC8qIFdlYkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZC
MDUyNDQyMjY2OEQyMzAwMjY1Qjk3IC8qIFdlYkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNj
ZXNzQ29udHJvbGxlci5oICovOyB9OwogCQk0NkJFQjZENzIyRkI5QkQ3MDAyNjk4NjcgLyogU3Rv
cmFnZUFyZWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2QkVCNkQ1MjJGQjlCRDYwMDI2OTg2NyAvKiBTdG9yYWdlQXJlYS5oICovOyB9OwpAQCAtODk5
LDEwICs5MDIsMTMgQEAKIAkJNDZDMzkyMjkyMzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2QzM5MjI4MjMxNkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgg
Ki87IH07CiAJCTQ2QzVCN0NFMjdBQURERDMwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJGcmFtZUxv
YWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZDNUI3Q0QyN0FBRERCRTAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xp
ZW50LmggKi87IH07CiAJCTQ2QzVCN0NGMjdBQURERDYwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJM
aWJXZWJSVENQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZDNUI3Q0IyN0FBRERCRTAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckxpYldlYlJU
Q1Byb3ZpZGVyLmggKi87IH07CisJCTQ2QzkxNkFBMjc5OUQwQTIwMDFBNEU3QyAvKiBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2QzkxNkE5Mjc5OUQwOUQwMDFBNEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIu
aCAqLzsgfTsKIAkJNDZDRTNCMTEyM0Q4Qzg0OTAwMTZBOTZBIC8qIFdlYkJhY2tGb3J3YXJkTGlz
dENvdW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDZDRTNCMTAyM0Q4QzgzRDAwMTZBOTZBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oICov
OyB9OworCQk0NkQ0OEZDRTI3OTlEN0UxMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDZENDhGQ0QyNzk5RDdERTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCAqLzsgfTsKIAkJNDZERjA2M0MxRjM5MDVGODAwMTk4
MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oICovOyB9OwogCQk0NkVFMjg0OTI2OUUwNEFDMDBE
RDQ4QUIgLyogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkVFMjg0ODI2OUUwNDlCMDBERDQ4QUIgLyog
V2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggKi87IH07CiAJCTQ2RUUyODREMjY5RTA1MjUw
MERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkVFMjg0QzI2OUUwNTE3MDBERDQ4
QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oICovOyB9OworCQk0NkVFM0U4
QjI3NjNGRDJGMDA2MEM3MEYgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4Mzg2NjcyNzYz
RkFCMTAwQ0Y5MTgyIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCAqLzsgfTsK
IAkJNDZGMzhFOEMyNDE2RTY3MzAwNTkzNzVBIC8qIFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkYzOEU4QjI0
MTZFNjZEMDA1OTM3NUEgLyogUnVubmluZ0JvYXJkU2VydmljZXNTUEkuaCAqLzsgfTsKIAkJNDZG
OUIyNjMyMzUyNkVGMzAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZGOUIyNjIyMzUyNkVE
MDAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oICovOyB9OwogCQk0OTMxMDJC
RDI2ODNGM0QwMDAyQkI4ODUgLyogQXBwUHJpdmFjeVJlcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDkzMTAyQkMyNjgzRjNBNTAwMkJCODg1IC8q
IEFwcFByaXZhY3lSZXBvcnQuaCAqLzsgfTsKQEAgLTEyNzYsNiArMTI4Miw3IEBACiAJCTZCRTk2
OUMxMUU1NEQ0NTIwMDhCNzQ4MyAvKiBjb3JlUHJlZGljdGlvbl9tb2RlbCBpbiBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkJFOTY5QzAxRTU0RDQ1MjAwOEI3
NDgzIC8qIGNvcmVQcmVkaWN0aW9uX21vZGVsICovOyB9OwogCQk2QkU5NjlDQjFFNTRENENGMDA4
Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkJFOTY5QzkxRTU0RDRDRjAw
OEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuaCAqLzsgfTsK
IAkJNkJFOTY5Q0QxRTU0RTA1NDAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFz
c2lmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
QkU5NjlDQzFFNTRFMDU0MDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZp
ZXIuaCAqLzsgfTsKKwkJNkNBRUNCNjYyNzQ2NUFFNDAwQUI3OEQwIC8qIFVuaWZpZWRTb3VyY2Ux
MTYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkNB
RUNCNUUyNzQ2NUFFMzAwQUI3OEQwIC8qIFVuaWZpZWRTb3VyY2UxMTYuY3BwICovOyB9OwogCQk2
RUU4NDlDODEzNjhEOTM5MDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2YXRlTWFjLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUU4NDlDNjEzNjhEOTJE
MDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2YXRlTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzExNzI1QTkyMjhENTY0MzAwMDE4NTE0IC8q
IFdlYnNpdGVMZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoUG9saWN5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTE3MjVBODIyOEQ1NjNBMDAwMTg1
MTQgLyogV2Vic2l0ZUxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3kuaCAqLzsgfTsK
IAkJNzEzNEEzREEyNjAzQjkyNTAwNjI0QkQzIC8qIFdLTW9kZWxJbnRlcmFjdGlvbkdlc3R1cmVS
ZWNvZ25pemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MTM0QTNEOTI2MDNCODBFMDA2MjRCRDMgLyogV0tNb2RlbEludGVyYWN0aW9uR2VzdHVyZVJl
Y29nbml6ZXIuaCAqLzsgfTsKQEAgLTEzNTMsNiArMTM2MCw3IEBACiAJCTdDOUQxNTM3MTg0NTg0
REEwMDlEMzkxOCAvKiBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOUQxNTM2MTg0NTg0REEwMDlE
MzkxOCAvKiBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaCAqLzsgfTsKIAkJN0NBMjU0
RUIxODI5OTNDRTAwRkM4QTQxIC8qIFdLQnJvd3NpbmdDb250ZXh0UG9saWN5RGVsZWdhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQTI1NEVBMTgy
OTkzQ0UwMEZDOEE0MSAvKiBXS0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVnYXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0NBMzc5M0UxQUMz
NzhCMzAwNzlEQzM3IC8qIF9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVQcml2YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0EzNzkzRDFBQzM3
OEIzMDA3OURDMzcgLyogX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVByaXZhdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3Q0FFQ0I2NjI3
NDY1QUU0MDBBQjc4RDAgLyogVW5pZmllZFNvdXJjZTExNy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0FFQ0I1RTI3NDY1QUUzMDBBQjc4RDAgLyog
VW5pZmllZFNvdXJjZTExNy5jcHAgKi87IH07CiAJCTdDQjEwMEYxMUZBMzg1OEEwMDE3MjlFRSAv
KiBXZWJQcmVmZXJlbmNlc0tleXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0NCMTAwRUUxRkEyRDc0QTAwMTcyOUVFIC8qIFdlYlByZWZlcmVuY2Vz
S2V5cy5jcHAgKi87IH07CiAJCTdDQjEwMEYyMUZBMzg1OEUwMDE3MjlFRSAvKiBXZWJQcmVmZXJl
bmNlc0RlZmluaXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3Q0RFNzNBMzFGOURBQjY1MDAzOTAzMTIgLyogV2ViUHJlZmVyZW5jZXNEZWZpbml0
aW9ucy5oICovOyB9OwogCQk3Q0IxMDBGMzFGQTM4NThFMDAxNzI5RUUgLyogV2ViUHJlZmVyZW5j
ZXNLZXlzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
Q0IxMDBFRjFGQTJENzRCMDAxNzI5RUUgLyogV2ViUHJlZmVyZW5jZXNLZXlzLmggKi87IH07CkBA
IC00MjIyLDYgKzQyMzAsOSBAQAogCQk0NjA4ODlGRjI2MUZBOEE5MDBFMjUwMEQgLyogUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2MEY0ODhEMUY5OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZl
ci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwogCQk0NjBGNDg4RTFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291
cmNlcy9XZWJLaXQvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk0NjFFMUJFQzI3OUEwMTBFMDA2QUY1
M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MUUxQkVG
Mjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2
MUUxQkYwMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NjIxMDdENzFGMzhEQkQzMDBERDc4MTAgLyogUGluZ0xvYWQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGluZ0xvYWQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NjMyMzY4MzIzMTQ4MUVGMDBBNDhGQTcgLyogV2ViUmVt
b3RlT2JqZWN0UmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVtb3RlT2JqZWN0UmVnaXN0
cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzMjM2ODQyMzE0ODI1QzAwQTQ4
RkE3IC8qIFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTQyNDksOCArNDI2MCwxNSBAQAogCQk0NjgwOUE3QjIzRDkyMjUzMDBDMjk3RDAgLyogV2ViQ29v
a2llQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29v
a2llQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgzNTY5QTIxRTgx
Q0M3MDA2RTI3QTMgLyogUHJvdmlzaW9uYWxQYWdlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUHJvdmlzaW9uYWxQYWdlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDY4MzU2OUIyMUU4MUNDNzAwNkUyN0EzIC8qIFByb3Zpc2lvbmFsUGFnZVBy
b3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb3Zpc2lvbmFs
UGFnZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4Mzg2NjcyNzYz
RkFCMTAwQ0Y5MTgyIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0NjgzODY2ODI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4
OUI5MEYyNzU2RDE0MzAwMDdDNjUxIC8qIFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDY4OUI5MTAyNzU2RDE0MzAwMDdDNjUxIC8qIFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RDQjI3NjNGODM0MDA0QjYxMEUgLyogV2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0Njk0M0RDQzI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RDRDI3NjNGODM1MDA0QjYxMEUgLyogV2Vi
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2
OTQzRENFMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RDRjI3NjNGODM1MDA0QjYx
MEUgLyogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVk
V29ya2VyUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5REU4MDIy
NzNFQ0M1RDAwOTMwMjc2IC8qIFByb2Nlc3NMYXVuY2hlckNvY29hLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJvY2Vzc0xhdW5jaGVyQ29jb2EubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QTJCNjA2MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNr
Z3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZBMkI2MDcxRTU2NzVBMjAwQzNERURB
IC8qIEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyNjksNyArNDI4NywxMSBAQAogCQk0
NkM1QjdDQjI3QUFEREJFMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDNUI3Q0MyN0FBRERCRTAwMEM1QjQ3IC8qIFJlbW90
ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVdv
cmtlckZyYW1lTG9hZGVyQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDZDNUI3Q0QyN0FBRERCRTAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2QzkxNkE4Mjc5OUQwOUQwMDFBNEU3QyAvKiBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2Vy
U2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZDOTE2QTkyNzk5RDA5
RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDRTNC
MTAyM0Q4QzgzRDAwMTZBOTZBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZENDhGQ0MyNzk5RDdERDAwN0QyMDE0IC8qIFdl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2RDQ4RkNEMjc5OUQ3REUwMDdEMjAxNCAvKiBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDZERjA2MzkxRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJl
ZmxpZ2h0Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBO
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkU5NzYwQTI3NTdG
NkM5MDBBQ0REMzcgLyogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdl
cy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyNzksNiArNDMwMSw3IEBACiAJ
CTQ2RUUyODRBMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lz
dHJ5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5ldHdvcmtCcm9hZGNhc3RD
aGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2RUUyODRCMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lz
dHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtCcm9h
ZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NkVFMjg0QzI2OUUwNTE3MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3Ry
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2RUUzRThBMjc2
M0ZEMkEwMDYwQzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RjM4RThCMjQxNkU2NkQwMDU5Mzc1QSAvKiBS
dW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NkY5QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRy
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTMxMDJCQzI2ODNGM0E1MDAyQkI4
ODUgLyogQXBwUHJpdmFjeVJlcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBQcml2YWN5UmVwb3J0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00OTk3LDYgKzUwMjAsNyBAQAogCQk2
QkU5NjlDODFFNTRENENGMDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZp
ZXJDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNkJFOTY5QzkxRTU0RDRDRjAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NDbGFzc2lmaWVyQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2QkU5NjlDQzFFNTRFMDU0MDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0NsYXNzaWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNkNBRUNCNUUyNzQ2NUFFMzAwQUI3OEQwIC8qIFVuaWZpZWRTb3VyY2UxMTYuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gVW5pZmllZFNvdXJjZTExNi5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0L3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlMTE2LmNwcCI7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTZEOEE5MUE1MTFGMEVGRDEwMEREMDFGRSAv
KiBjb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBjb20u
YXBwbGUuV2ViUHJvY2Vzcy5zYi5pbjsgcGF0aCA9IFdlYlByb2Nlc3MvY29tLmFwcGxlLldlYlBy
b2Nlc3Muc2IuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFRTg0OUM2MTM2OEQ5
MkQwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gV0tJbnNwZWN0b3JQcml2YXRlTWFjLmg7IHBhdGggPSBtYWMvV0tJbnNw
ZWN0b3JQcml2YXRlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxMTcyNUE4
MjI4RDU2M0EwMDAxODUxNCAvKiBXZWJzaXRlTGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaFBv
bGljeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJzaXRlTGVnYWN5T3Zl
cmZsb3dTY3JvbGxpbmdUb3VjaFBvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNTE2MSw2ICs1MTg1LDcgQEAKIAkJN0M5RDE1MzYxODQ1ODREQTAwOUQzOTE4IC8qIFdLQnJv
d3NpbmdDb250ZXh0R3JvdXBJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0NBMjU0RUExODI5OTNDRTAwRkM4QTQxIC8qIFdLQnJvd3NpbmdDb250ZXh0
UG9saWN5RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCcm93
c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3Q0EzNzkzRDFBQzM3OEIzMDA3OURDMzcgLyogX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9y
ZVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLVXNlckNvbnRl
bnRFeHRlbnNpb25TdG9yZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0NBRUNCNUUyNzQ2NUFFMzAwQUI3OEQwIC8qIFVuaWZpZWRTb3VyY2UxMTcuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gVW5pZmllZFNvdXJjZTExNy5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMv
V2ViS2l0L3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlMTE3LmNwcCI7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTdDQjEwMEVFMUZBMkQ3NEEwMDE3MjlFRSAvKiBX
ZWJQcmVmZXJlbmNlc0tleXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViUHJlZmVyZW5jZXNL
ZXlzLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJQcmVmZXJlbmNlc0tleXMu
Y3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk3Q0IxMDBFRjFGQTJE
NzRCMDAxNzI5RUUgLyogV2ViUHJlZmVyZW5jZXNLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlBy
ZWZlcmVuY2VzS2V5cy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlByZWZlcmVu
Y2VzS2V5cy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk3Q0IxMDBG
MDFGQTJENzg0MDAxNzI5RUUgLyogV2ViUHJlZmVyZW5jZXNTdG9yZURlZmF1bHRzTWFwLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlByZWZlcmVuY2VzU3RvcmVEZWZhdWx0c01hcC5jcHA7IHBh
dGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViUHJlZmVyZW5jZXNTdG9yZURlZmF1bHRzTWFw
LmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTkyODYsNiArOTMx
MSwyMCBAQAogCQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJ
fTsKKwkJNDY4Mzg2NjUyNzYzRkExQjAwQ0Y5MTgyIC8qIFNoYXJlZFdvcmtlciAqLyA9IHsKKwkJ
CWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNDZENDhGQ0MyNzk5RDdERDAw
N0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwICov
LAorCQkJCTQ2RDQ4RkNEMjc5OUQ3REUwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmggKi8sCisJCQkJNDZDOTE2QTgyNzk5RDA5RDAwMUE0RTdDIC8q
IFdlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAgKi8sCisJCQkJNDZDOTE2QTkyNzk5RDA5RDAwMUE0
RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5oICovLAorCQkJCTQ2RUUzRThBMjc2M0ZEMkEw
MDYwQzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluICov
LAorCQkJCTQ2ODM4NjY3Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uLmggKi8sCisJCQkJNDY4Mzg2NjgyNzYzRkFCMTAwQ0Y5MTgyIC8qIFdlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwICovLAorCQkJKTsKKwkJCXBhdGggPSBTaGFyZWRX
b3JrZXI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk0NjlERTgwMTI3M0VD
QzVEMDA5MzAyNzYgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKApAQCAtOTMzNyw2ICs5Mzc2LDcgQEAKIAkJNTEwQ0M3REExNjEzOEUwMTAwRDAzRUQz
IC8qIE5ldHdvcmtQcm9jZXNzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQk0NjgzODY2NTI3NjNGQTFCMDBDRjkxODIgLyogU2hhcmVkV29ya2VyICovLAog
CQkJCUU0ODlEMjgyMUEwQTJCRTgwMDc4QzA2QSAvKiBjYWNoZSAqLywKIAkJCQk3QTg0M0ExRDIx
RTQxRkQ5MDBERUY2NjMgLyogQ2xhc3NpZmllciAqLywKIAkJCQk3RUM0RjBGODE4RTRBOTIyMDA4
MDU2QUYgLyogY29jb2EgKi8sCkBAIC05NDQ4LDYgKzk0ODgsMTQgQEAKIAkJCQk0NkM1QjdDQzI3
QUFEREJFMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuY3BwICovLAog
CQkJCTQ2QzVCN0NEMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJGcmFtZUxvYWRlckNs
aWVudC5oICovLAogCQkJCTQ2QzVCN0NCMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJM
aWJXZWJSVENQcm92aWRlci5oICovLAorCQkJCTQ2MUUxQkVDMjc5QTAxMEUwMDZBRjUzQiAvKiBX
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwICovLAorCQkJCTQ2MUUx
QkVGMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uaCAqLywKKwkJCQk0NjFFMUJGMDI3OUEwMTBGMDA2QUY1M0IgLyogV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovLAorCQkJCTQ2OTQzRENF
Mjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcCAq
LywKKwkJCQk0Njk0M0RDRDI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbi5oICovLAorCQkJCTQ2OTQzRENCMjc2M0Y4MzQwMDRCNjEwRSAvKiBXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovLAorCQkJCTQ2OTQzRENDMjc2
M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAgKi8sCisJCQkJNDY5
NDNEQ0YyNzYzRjgzNTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmggKi8sCiAJ
CQkJNDEzMUYzRTAxRjk4NzEyQzAwNTk5OTVBIC8qIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQuY3BwICovLAogCQkJCTQxOUFDRjlCMUY5ODFEMjYwMDlGMUE4MyAvKiBXZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggKi8sCiAJCQkJNTFCRUI2MjkxRjNBNUFDRDAwNTAyOUI5
IC8qIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAgKi8sCkBAIC0xMjc3Myw2ICsxMjgyMSw3
IEBACiAJCQkJNDlGQkYwMDAyMzlCMUY3NTAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NUaGlyZFBhcnR5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUZCRjAwOTIzOUYwOEUwMDBC
RDAzMkYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHlJbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzc2MzExRkQxQTNGQjVGNzAwNUEyRTUxIC8qIF9XS1NhbWVEb2N1
bWVudE5hdmlnYXRpb25UeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjFFMUJGMjI3OUEwMTE2
MDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQkzNzYzMTFGRTFBM0ZCNjAwMDA1QTJFNTEgLyogX1dLU2FtZURvY3Vt
ZW50TmF2aWdhdGlvblR5cGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwMDJENDQx
OTZCMzM4OTAwQjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUEwMDJENDMxOTZCMzM3MDAwQjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0ZUludGVybmFsLmggaW4g
SGVhZGVycyAqLywKQEAgLTEyOTM3LDYgKzEyOTg2LDcgQEAKIAkJCQlFMTcwODc2QzE2RDZDQTY5
MDBGOTkyMjYgLyogQmxvYlJlZ2lzdHJ5UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTRGNjAx
NDMyMTU1QzVBQTIwMDFGQkRFMCAvKiBCbG9ja2luZ1Jlc3BvbnNlTWFwLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQTU3MDUxMTFCRTQxMEU2MDA4NzRBRjEgLyogQmxvY2tTUEkuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTQ2QzkxNkFBMjc5OUQwQTIwMDFBNEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMzA2NUZBMTI1OTM0NEUwMEU3MTI3OCAvKiBDYWNo
ZU1vZGVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTg5N0VEODFGNDE1RDhBMDAxNkZBNDIgLyog
Q2FjaGVTdG9yYWdlRW5naW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUZBQkQyQTFGNERFMDAx
MDA2QTZDOTcgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaCBpbiBIZWFkZXJzICovLApAQCAt
MTM0MDQsNiArMTM0NTQsNyBAQAogCQkJCTFBQzEzMzY4MTg1NjVCNTcwMEYzRUMwNSAvKiBVc2Vy
RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q0OTFCMDgxRTcwRDA1RjAwMDA5MDY2IC8qIFVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDQ5MUIwRTFFNzMy
RTREMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNDZFRTNFOEIyNzYzRkQyRjAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtlclNl
cnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUNENDkxQjEzMUU3MzQ4MjEwMDAw
OTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDRDQ5MUIxODFFNzM1MjU1MDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzI5N0Y5RjFDMTdCQkVBMDAzRjA3MzUg
LyogVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuaCBpbiBIZWFkZXJzICovLApAQCAtMTM0
OTAsNiArMTM1NDEsNyBAQAogCQkJCTMzMDkzNDRBMTMxNUI5MjIwMDk3QTdCQyAvKiBXZWJDb29r
aWVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxREQ3QjIxMTRE
QzM5NjAwNUFEQUYzIC8qIFdlYkNvcmVBcmd1bWVudENvZGVycy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTEyRjU4OUIxMkE4ODM4ODAwNjI5NTMwIC8qIFdlYkNyZWRlbnRpYWwuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTQ2OTQzREQwMjc2M0Y4M0EwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJQcm92
aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBODNGNkQxQTVCNjNGRjAwMDI2RUM2IC8qIFdl
YkRhdGFiYXNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU1MkNGNTUyMjBBMzVDM0Ew
MERBREEyNyAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUU1NjhCOTFGMjBBM0FCMkYwMEUzQzg1NiAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJv
cGRvd24uaCBpbiBIZWFkZXJzICovLApAQCAtMTM1MjQsNiArMTM1NzYsNyBAQAogCQkJCUJDMDMy
RDdGMTBGNDM3OEQwMDU4QzE1QSAvKiBXZWJGcmFtZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTM5MUYyQ0IxMjFCNjdBRDAwRUJGN0U4IC8qIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQjlGNkEwMTEyM0E4NEIwMEExMzdFMCAvKiBX
ZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2OTQzREQx
Mjc2M0Y4M0YwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzlCMzhBMTEwRjUzOEJFMDA0NDNBMTUgLyogV2ViRnJhbWVQcm94
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1QkUxQUIxRDU1NUFBMDAwREQ3QzY4IC8qIFdlYkdh
bWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMTc5MUQ1M0ZFOEYwMEREN0M2OCAvKiBX
ZWJHYW1lcGFkUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTM2NTAsNiArMTM3MDMsNyBA
QAogCQkJCTFBNDgzMkQ3MUE5Q0RGOTYwMDhCNERGRSAvKiBXZWJzaXRlRGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUE0ODMyRDExQTlCREMyRjAwOEI0REZFIC8qIFdlYnNpdGVEYXRhUmVjb3Jk
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTUzQzJBQTFBMzI1NzMwMDA0RThDNzAgLyogV2Vic2l0
ZURhdGFTdG9yZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZENDhGQ0UyNzk5RDdFMTAwN0QyMDE0
IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxMUY3RDQxMUVCMUJDRjUwMEU0N0I4MyAvKiBXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzExNzI1QTkyMjhENTY0MzAwMDE4NTE0IC8q
IFdlYnNpdGVMZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoUG9saWN5LmggaW4gSGVhZGVycyAq
LywKIAkJCQlGNENCMDlFNTIyNUQ1QTA5MDA4OTE0ODcgLyogV2Vic2l0ZU1lZGlhU291cmNlUG9s
aWN5LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDhkM2I1
N2JkMThkYy4uYmIzNTQ3ZjQ2YWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTU3
LDYgKzU3LDEwIEBACiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCIK
ICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5oIgogI2lu
Y2x1ZGUgIldlYlNvY2tldENoYW5uZWxNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNvY2tldFN0
cmVhbS5oIgpAQCAtMTczLDYgKzE3NywxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUAogICAg
ICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgc2hhcmVkV29ya2VyQ29ubmVjdGlvbigp
LmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdl
czo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpIHsKKyAgICAgICAgQVNTRVJUKFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpz
aW5nbGV0b24oKS5jb25uZWN0aW9uKCkpOworICAgICAgICBpZiAoYXV0byogY29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNv
bm5lY3Rpb24oKSkKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFdlYlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbiY+KCpjb250ZXh0TWFuYWdlckNvbm5lY3Rpb24pLmRpZFJlY2Vp
dmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQog
CiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSkgewpAQCAtMzA3LDYgKzMyMSwxMyBAQCBXZWJTV0NsaWVudENvbm5l
Y3Rpb24mIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6c2VydmljZVdvcmtlckNvbm5lY3Rpb24o
KQogfQogI2VuZGlmCiAKK1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24mIE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbjo6c2hhcmVkV29ya2VyQ29ubmVjdGlvbigpCit7CisgICAgaWYgKCFt
X3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAgIG1fc2hhcmVkV29ya2VyQ29ubmVjdGlv
biA9IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OmNyZWF0ZSgpOworICAgIHJldHVy
biAqbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbjo6bWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQ
b3J0SWRlbnRpZmllciYgbWVzc2FnZVBvcnRJZGVudGlmaWVyKQogewogICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLm1lc3NhZ2VzQXZhaWxhYmxlRm9yUG9ydChtZXNzYWdlUG9ydElkZW50aWZp
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCBkNjJkZmU0ZGY1YWEuLjVmMDUwNDA5YWM2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgZW51bSBjbGFzcyBI
VFRQQ29va2llQWNjZXB0UG9saWN5IDogdWludDhfdDsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uOwogY2xhc3MgV2ViU1dDbGllbnRDb25uZWN0aW9uOwogCiBjbGFzcyBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24+LCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCB7CkBAIC03MCw2ICs3MSw3IEBAIHB1
YmxpYzoKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgV2ViU1dDbGllbnRDb25uZWN0
aW9uJiBzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbigpOwogI2VuZGlmCisgICAgV2ViU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbiYgc2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOwogCiAjaWYgSEFW
RShBVURJVF9UT0tFTikKICAgICB2b2lkIHNldE5ldHdvcmtQcm9jZXNzQXVkaXRUb2tlbihzdGQ6
Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4pIHsgbV9uZXR3b3JrUHJvY2Vzc0F1
ZGl0VG9rZW4gPSBhdWRpdFRva2VuOyB9CkBAIC0xMjMsNiArMTI1LDcgQEAgcHJpdmF0ZToKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgUmVmUHRyPFdlYlNXQ2xpZW50Q29ubmVjdGlv
bj4gbV9zd0Nvbm5lY3Rpb247CiAjZW5kaWYKKyAgICBSZWZQdHI8V2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbj4gbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uOwogICAgIFdlYkNvcmU6OkhU
VFBDb29raWVBY2NlcHRQb2xpY3kgbV9jb29raWVBY2NlcHRQb2xpY3k7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmM5MDAzNmUwYzU1OQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSwxMjkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmgiCisjaW5j
bHVkZSAiUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJSZW1vdGVX
b3JrZXJMaWJXZWJSVENQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYkJyb2FkY2FzdENoYW5uZWxS
ZWdpc3RyeS5oIgorI2luY2x1ZGUgIldlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCisjaW5jbHVk
ZSAiV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLmgiCisjaW5jbHVkZSAiV2ViRGF0YWJh
c2VQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQcmVmZXJl
bmNlc0tleXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2Vi
U29ja2V0UHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0VtcHR5Q2xpZW50cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUNvbmZpZ3VyYXRpb24uaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9T
aGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVXNlckFnZW50Lmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9Xb3JrZXJGZXRjaFJlc3VsdC5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBj
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcywgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBy
ZWdpc3RyYWJsZURvbWFpbiwgUGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
cGFnZUlELCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBwcmVmZXJlbmNlc1N0b3JlLCBTZXJ2
aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYgaW5pdGlhbGl6YXRpb25EYXRhKQorICAgIDog
bV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXVEZNb3ZlKGNvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKSkKKyAgICAsIG1fcmVnaXN0cmFibGVEb21haW4oV1RGTW92ZShyZWdpc3RyYWJsZURv
bWFpbikpCisgICAgLCBtX3BhZ2VHcm91cElEKHBhZ2VHcm91cElEKQorICAgICwgbV93ZWJQYWdl
UHJveHlJRCh3ZWJQYWdlUHJveHlJRCkKKyAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyAgICAsIG1fdXNlckFnZW50KFdlYkNvcmU6OnN0YW5kYXJkVXNlckFnZW50
V2l0aEFwcGxpY2F0aW9uTmFtZSh7IH0pKQorI2Vsc2UKKyAgICAsIG1fdXNlckFnZW50KHN0YW5k
YXJkVXNlckFnZW50KCkpCisjZW5kaWYKKyAgICAsIG1fdXNlckNvbnRlbnRDb250cm9sbGVyKFdl
YlVzZXJDb250ZW50Q29udHJvbGxlcjo6Z2V0T3JDcmVhdGUoaW5pdGlhbGl6YXRpb25EYXRhLnVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpKQoreworI2lmIEVOQUJMRShDT05URU5UX0VY
VEVOU0lPTlMpCisgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZENvbnRlbnRSdWxlTGlz
dHMoV1RGTW92ZShpbml0aWFsaXphdGlvbkRhdGEuY29udGVudFJ1bGVMaXN0cykpOworI2VuZGlm
CisKKyAgICB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKHByZWZlcmVuY2VzU3RvcmUpOworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmRpc2FibGVUZXJtaW5hdGlvbigpOworfQorCitXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246On5XZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjplc3RhYmxpc2hDb25uZWN0aW9uKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX2Nvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiB7
IG1fd2ViUGFnZVByb3h5SUQsIG1fcmVnaXN0cmFibGVEb21haW4gfSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIDApOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdv
cmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCkKK3sKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpQb3N0RXhj
ZXB0aW9uVG9Xb3JrZXJPYmplY3QgeyBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBlcnJvck1lc3Nh
Z2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMIH0sIDApOworfQorCit2b2lk
IFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6dXBkYXRlUHJlZmVyZW5j
ZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKK3sKKyAgICBXZWJQYWdl
Ojp1cGRhdGVQcmVmZXJlbmNlc0dlbmVyYXRlZChzdG9yZSk7CisgICAgbV9wcmVmZXJlbmNlc1N0
b3JlID0gc3RvcmU7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpsYXVuY2hTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2lu
LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIs
IFVSTCYmIHVybCwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMsIFdlYkNv
cmU6OldvcmtlckZldGNoUmVzdWx0JiYgd29ya2VyRmV0Y2hSZXN1bHQpCit7CisgICAgUkVMRUFT
RV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpsYXVuY2hTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0
LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIGF1dG8gcGFnZUNvbmZp
Z3VyYXRpb24gPSBXZWJDb3JlOjpwYWdlQ29uZmlndXJhdGlvbldpdGhFbXB0eUNsaWVudHMoV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuc2Vzc2lvbklEKCkpOworCisgICAgcGFnZUNvbmZpZ3VyYXRp
b24uZGF0YWJhc2VQcm92aWRlciA9IFdlYkRhdGFiYXNlUHJvdmlkZXI6OmdldE9yQ3JlYXRlKG1f
cGFnZUdyb3VwSUQpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnNvY2tldFByb3ZpZGVyID0gV2Vi
U29ja2V0UHJvdmlkZXI6OmNyZWF0ZShtX3dlYlBhZ2VQcm94eUlEKTsKKyAgICBwYWdlQ29uZmln
dXJhdGlvbi5icm9hZGNhc3RDaGFubmVsUmVnaXN0cnkgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5icm9hZGNhc3RDaGFubmVsUmVnaXN0cnkoKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi53ZWJM
b2NrUmVnaXN0cnkgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJMb2NrUmVnaXN0cnkoKTsK
KyAgICBwYWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudFByb3ZpZGVyID0gbV91c2VyQ29udGVu
dENvbnRyb2xsZXI7CisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAgcGFnZUNvbmZpZ3VyYXRpb24u
bGliV2ViUlRDUHJvdmlkZXIgPSBtYWtlVW5pcXVlUmVmPFJlbW90ZVdvcmtlckxpYldlYlJUQ1By
b3ZpZGVyPigpOworI2VuZGlmCisKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5sb2FkZXJDbGllbnRG
b3JNYWluRnJhbWUgPSBtYWtlVW5pcXVlUmVmPFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50
PihtX3dlYlBhZ2VQcm94eUlELCBtX3BhZ2VJRCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyOjpn
ZW5lcmF0ZSgpLCBtX3VzZXJBZ2VudCk7CisKKyAgICBhdXRvIHBhZ2UgPSBtYWtlVW5pcXVlUmVm
PFdlYkNvcmU6OlBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKKyAgICBpZiAobV9w
cmVmZXJlbmNlc1N0b3JlKSB7CisgICAgICAgIFdlYlBhZ2U6OnVwZGF0ZVNldHRpbmdzR2VuZXJh
dGVkKCptX3ByZWZlcmVuY2VzU3RvcmUsIHBhZ2UtPnNldHRpbmdzKCkpOworICAgICAgICBwYWdl
LT5zZXR0aW5ncygpLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpTdG9yYWdlQmxvY2tpbmdQb2xpY3k+KG1fcHJlZmVyZW5jZXNTdG9yZS0+Z2V0VUludDMyVmFs
dWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnN0b3JhZ2VCbG9ja2luZ1BvbGljeUtleSgpKSkp
OworICAgIH0KKyAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6c2V0dXBQYWdl
Rm9yU2hhcmVkV29ya2VyKHBhZ2UuZ2V0KCksIHVybCwgb3JpZ2luLCB3b3JrZXJGZXRjaFJlc3Vs
dCk7CisgICAgYXV0byBzaGFyZWRXb3JrZXJUaHJlYWRQcm94eSA9IFdlYkNvcmU6OlNoYXJlZFdv
cmtlclRocmVhZFByb3h5OjpjcmVhdGUoV1RGTW92ZShwYWdlKSwgc2hhcmVkV29ya2VySWRlbnRp
Zmllciwgb3JpZ2luLCB1cmwsIFdURk1vdmUod29ya2VyRmV0Y2hSZXN1bHQpLCBXVEZNb3ZlKHdv
cmtlck9wdGlvbnMpLCBtX3VzZXJBZ2VudCwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FjaGVT
dG9yYWdlUHJvdmlkZXIoKSk7CisKKyAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlcjo6c2luZ2xldG9uKCkucmVnaXN0ZXJTaGFyZWRXb3JrZXJUaHJlYWQoV1RGTW92ZShzaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eSkpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6Y2xvc2UoKQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtl
ciwgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Y2xvc2U6IFNoYXJl
ZCB3b3JrZXIgcHJvY2VzcyBpcyByZXF1ZXN0ZWQgdG8gc3RvcCBhbGwgc2hhcmVkIHdvcmtlcnMi
KTsKKyAgICBzZXRBc0Nsb3NlZCgpOworCisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNsb3NlU2hh
cmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24geyB9LCAwKTsKKyAgICBXZWJDb3JlOjpTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc3RvcEFsbFNoYXJlZFdvcmtlcnMoKTsK
KyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbmFibGVUZXJtaW5hdGlvbigpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5h
ZTIzMjM2NTYyOGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAtMCww
ICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCisjaW5jbHVkZSAiSWRlbnRpZmllclR5cGVzLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgorI2luY2x1ZGUg
IldlYlByZWZlcmVuY2VzU3RvcmUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVy
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IENs
aWVudE9yaWdpbjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKK3N0cnVjdCBXb3JrZXJPcHRp
b25zOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOworc3RydWN0IFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGE7CisKK2NsYXNz
IFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbiwgcHVibGljIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiwgUGFnZUdyb3VwSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmll
ciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBT
ZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYpOworICAgIH5XZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24oKTsKKworICAgIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlv
bihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQgcG9zdEV4Y2Vw
dGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpIGZpbmFsOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworcHJpdmF0ZToK
KyAgICAvLyBJUEMgTWVzc2FnZXMuCisgICAgdm9pZCBsYXVuY2hTaGFyZWRXb3JrZXIoV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFVSTCYm
LCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYsIFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYp
OworICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJik7CisgICAgdm9pZCBzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KSB7IG1fdXNl
ckFnZW50ID0gV1RGTW92ZSh1c2VyQWdlbnQpOyB9CisgICAgdm9pZCBjbG9zZSgpOworCisgICAg
UmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzczsKKyAgICBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluOworICAgIFBhZ2VH
cm91cElkZW50aWZpZXIgbV9wYWdlR3JvdXBJRDsKKyAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVy
IG1fd2ViUGFnZVByb3h5SUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7
CisgICAgU3RyaW5nIG1fdXNlckFnZW50OworICAgIFJlZjxXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI+IG1fdXNlckNvbnRlbnRDb250cm9sbGVyOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViUHJlZmVy
ZW5jZXNTdG9yZT4gbV9wcmVmZXJlbmNlc1N0b3JlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li5kODJhNGFkYTUzZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KQEAgLTAsMCArMSwzMCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMg
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgor
IyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCittZXNzYWdlcyAtPiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24gTm90UmVmQ291bnRlZCB7CisgICAgTGF1bmNoU2hhcmVkV29ya2VyKHN0cnVjdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4gb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNo
YXJlZFdvcmtlcklkZW50aWZpZXIsIFVSTCB1cmwsIHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJPcHRp
b25zIHdvcmtlck9wdGlvbnMsIHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCB3b3Jr
ZXJGZXRjaFJlc3VsdCkKKyAgICBQb3N0Q29ubmVjdEV2ZW50KFdlYkNvcmU6OlNoYXJlZFdvcmtl
cklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRN
ZXNzYWdlUG9ydCBwb3J0LCBTdHJpbmcgc291cmNlT3JpZ2luKQorICAgIFRlcm1pbmF0ZVNoYXJl
ZFdvcmtlcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50
aWZpZXIpCisgICAgVXBkYXRlUHJlZmVyZW5jZXNTdG9yZShzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVm
ZXJlbmNlc1N0b3JlIHN0b3JlKQorICAgIFNldFVzZXJBZ2VudChTdHJpbmcgdXNlckFnZW50KQor
ICAgIENsb3NlKCkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kN2Q5OTRkZTFmNzcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24uaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Q
cm9jZXNzSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyT3B0aW9ucy5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZt
dCwgLi4uKSBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRp
Zmllcj0lIiBQUkl1NjQgIl0gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6IiBmbXQs
IHRoaXMsIFdlYkNvcmU6OlByb2Nlc3M6OmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19fVkFf
QVJHU19fKQorCitXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJXZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOiIpOworfQorCitXZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uOjp+V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpCit7CisgICAg
Q09OTkVDVElPTl9SRUxFQVNFX0xPRygifldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246
Iik7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiAmV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnJlcXVl
c3RTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFdlYkNv
cmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciwgY29uc3QgVVJMJiB1cmwsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBw
b3J0LCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25zKQoreworICAg
IENPTk5FQ1RJT05fUkVMRUFTRV9MT0coInJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpSZXF1ZXN0U2hhcmVkV29ya2VyIHsgb3JpZ2luLCBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCB1cmwsIFdURk1vdmUocG9ydCksIHdvcmtlck9w
dGlvbnMgfSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6c2hh
cmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQoreworICAgIENPTk5FQ1RJT05f
UkVMRUFTRV9MT0coInNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5OiBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbjo6U2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkgeyBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIH0pOworfQorCisjdW5kZWYgQ09OTkVDVElPTl9S
RUxFQVNFX0xPRworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24u
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmVj
YmY0MmY2NzYyYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDU0IEBA
CisKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
KyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24sIHBy
aXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewor
cHVibGljOgorICAgIHN0YXRpYyBSZWY8V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbj4g
Y3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uKTsgfQorICAgIH5XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCk7CisKKyAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IGZpbmFsOworCitwcml2YXRlOgorICAgIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24o
KTsKKworICAgIC8vIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uCisgICAg
dm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFdl
YkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFVSTCYsIFdlYkNvcmU6
OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYp
IGZpbmFsOworICAgIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikgZmluYWw7CisKKyAgICBJUEM6OkNvbm5lY3Rp
b24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3Qg
bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uMWNlYTE5MzJlOWY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdl
cy5pbgpAQCAtMCwwICsxLDI3IEBACisjIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisj
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKK21lc3NhZ2VzIC0+IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24geworICAg
IEZldGNoU2NyaXB0SW5DbGllbnQoVVJMIHVybCwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6
V29ya2VyT3B0aW9ucyB3b3JrZXJPcHRpb25zKSAtPiAoc3RydWN0IFdlYkNvcmU6OldvcmtlckZl
dGNoUmVzdWx0IGZldGNoUmVzdWx0KSBBc3luYworICAgIE5vdGlmeVdvcmtlck9iamVjdE9mTG9h
ZEZhaWx1cmUoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyKQorICAgIFBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJD
b3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIsIFN0cmluZyBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyLCBTdHJpbmcgc291cmNlVVJMKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDQ5NWE0MjI1ZTYwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2Vy
UHJvdmlkZXIuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaCIKKworI2luY2x1ZGUg
Ik5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNp
bmNsdWRlICJXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgiCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitXZWJTaGFyZWRXb3JrZXJQcm92aWRlciYgV2ViU2hhcmVkV29ya2VyUHJvdmlk
ZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdlYlNoYXJlZFdv
cmtlclByb3ZpZGVyPiBwcm92aWRlcjsKKyAgICByZXR1cm4gcHJvdmlkZXI7Cit9CisKK1dlYlNo
YXJlZFdvcmtlclByb3ZpZGVyOjpXZWJTaGFyZWRXb3JrZXJQcm92aWRlcigpID0gZGVmYXVsdDsK
KworV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiogV2ViU2hhcmVkV29ya2Vy
UHJvdmlkZXI6OnNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKQoreworICAgIHJldHVybiAmV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuc2hhcmVk
V29ya2VyQ29ubmVjdGlvbigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlclByb3Zp
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJQ
cm92aWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODZlM2Qy
ZmU3MGEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlclByb3ZpZGVy
Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb247Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJQcm92aWRlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFdlYlNo
YXJlZFdvcmtlclByb3ZpZGVyJiBzaW5nbGV0b24oKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQg
TmV2ZXJEZXN0cm95ZWQ8V2ViU2hhcmVkV29ya2VyUHJvdmlkZXI+OworICAgIFdlYlNoYXJlZFdv
cmtlclByb3ZpZGVyKCk7CisKKyAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uKiBzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCkgZmluYWw7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAwMmRh
OTExNDdmOGEuLjhjNzRjN2NiY2E0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcApAQCAtODQsNiArODQsOSBAQAogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgorI2luY2x1ZGUg
IldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRTdHJlYW0u
aCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzLmgiCkBAIC0xMzMsNiArMTM2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3Vy
aXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckdlc3R1cmVJ
bmRpY2F0b3IuaD4KICNpbmNsdWRlIDxwYWwvTG9nZ2luZy5oPgogI2luY2x1ZGUgPHd0Zi9BbGdv
cml0aG1zLmg+CkBAIC01NjksNiArNTczLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXpl
V2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgU2VydmljZVdvcmtlclByb3ZpZGVyOjpzZXRT
aGFyZWRQcm92aWRlcihXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpKTsKICNl
bmRpZgorICAgIFNoYXJlZFdvcmtlclByb3ZpZGVyOjpzZXRTaGFyZWRQcm92aWRlcihXZWJTaGFy
ZWRXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkpOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQogICAgIEpTQzo6V2FzbTo6ZW5hYmxlRmFzdE1lbW9yeSgpOwpAQCAtOTAyLDcgKzkwNyw2IEBA
IHZvaWQgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlCiAgICAgfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotICAgIC8vIEZJWE1FOiBSZW1vdmU/CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIEFTU0VSVChTV0NvbnRleHRNYW5hZ2VyOjpz
aW5nbGV0b24oKS5jb25uZWN0aW9uKCkpOwogICAgICAgICBpZiAoYXV0byogY29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigp
KQpAQCAtOTExLDYgKzkxNSwxMyBAQCB2b2lkIFdlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZQogICAgIH0KICNl
bmRpZgogCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSkgeworICAgICAgICBBU1NFUlQoU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpLmNvbm5lY3Rpb24oKSk7CisgICAgICAgIGlmIChhdXRvKiBjb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24gPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29u
bmVjdGlvbigpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uJj4oKmNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbikuZGlkUmVjZWl2
ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
ICAgICBMT0dfRVJST1IoIlVuaGFuZGxlZCB3ZWIgcHJvY2VzcyBtZXNzYWdlICclcycgKGRlc3Rp
bmF0aW9uOiAlIiBQUkl1NjQgIiBwaWQ6ICVkKSIsIGRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSksIGRlY29kZXIuZGVzdGluYXRpb25JRCgpLCBzdGF0aWNfY2FzdDxpbnQ+KGdldEN1
cnJlbnRQcm9jZXNzSUQoKSkpOwogfQogCkBAIC0xOTE3LDYgKzE5MjgsMTYgQEAgTGliV2ViUlRD
TmV0d29yayYgV2ViUHJvY2Vzczo6bGliV2ViUlRDTmV0d29yaygpCiAgICAgcmV0dXJuICptX2xp
YldlYlJUQ05ldHdvcms7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZpZXIg
cGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFJlZ2lz
dHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFNlcnZpY2VXb3JrZXJJbml0aWFsaXph
dGlvbkRhdGEmJiBpbml0aWFsaXphdGlvbkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICAvLyBXZSBhcmUgaW4gdGhlIFNoYXJlZCBXb3Jr
ZXIgY29udGV4dCBwcm9jZXNzIGFuZCB0aGUgY2FsbCBiZWxvdyBlc3RhYmxpc2hlcyBvdXIgY29u
bmVjdGlvbiB0byB0aGUgTmV0d29yayBQcm9jZXNzCisgICAgLy8gYnkgY2FsbGluZyBlbnN1cmVO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyIG5lZWRz
IHRvIHVzZSB0aGUgc2FtZSB1bmRlcmx5aW5nIElQQzo6Q29ubmVjdGlvbiBhcyB0aGUKKyAgICAv
LyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gZm9yIHN5bmNocm9uaXphdGlvbiBwdXJwb3Nlcy4K
KyAgICBhdXRvJiBpcGNDb25uZWN0aW9uID0gZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpOworICAgIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0
b24oKS5zZXRDb25uZWN0aW9uKG1ha2VVbmlxdWU8V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uPihpcGNDb25uZWN0aW9uLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwg
cGFnZUdyb3VwSUQsIHdlYlBhZ2VQcm94eUlELCBwYWdlSUQsIHN0b3JlLCBXVEZNb3ZlKGluaXRp
YWxpemF0aW9uRGF0YSkpKTsKKyAgICBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkuY29ubmVjdGlvbigpLT5lc3RhYmxpc2hDb25uZWN0aW9uKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKK30KKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgV2ViUHJv
Y2Vzczo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWlu
LCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNl
V29ya2VyUGFnZUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBp
bml0aWFsaXphdGlvbkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGRkOGQ3
NGZmZjI2OS4uNjVmNzczMjAxYTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmgKQEAgLTQ2OSw2ICs0NjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2FtZXBhZERpc2Nvbm5l
Y3RlZCh1bnNpZ25lZCBpbmRleCk7CiAjZW5kaWYKIAorICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVk
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZp
ZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25z
dCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgU2Vy
dmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFNlcnZp
Y2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRlbnRp
ZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNv
bnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBz
ZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRh
dGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBkZmQzMDY0NTYz
ZjkuLmU1NTI5NmI5MDRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KQEAgLTEwMCw2ICsxMDAsOCBAQCBtZXNzYWdlcyAtPiBXZWJQcm9j
ZXNzIExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewogICAgIEdhbWVwYWREaXNjb25uZWN0
ZWQodW5zaWduZWQgaW5kZXgpCiAjZW5kaWYKIAorICAgIEVzdGFibGlzaFNoYXJlZFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJLaXQ6OlBhZ2VHcm91cElkZW50aWZp
ZXIgcGFnZUdyb3VwSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJv
eHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4s
IHN0cnVjdCBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6
YXRpb25EYXRhKSAtPiAoKSBBc3luYworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IEVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
V2ViS2l0OjpQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJLaXQ6OldlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHN0
cnVjdCBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRp
b25EYXRhKSAtPiAoKSBBc3luYwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450694</attachid>
            <date>2022-02-02 13:31:43 -0800</date>
            <delta_ts>2022-02-02 17:05:58 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>235958_SharedWorker_multiProcess_wip.patch</filename>
            <type>text/plain</type>
            <size>317499</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDQwMjQ2NmU0OWYwZS4uNDNiYjdhYTNkNmJlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTQ2Myw3ICs0NjMsNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYi1sb2Nrcy9zdGVhbC50ZW50YXRpdmUuaHR0cHMuYW55Lmh0bWwgWyBEdW1wSgog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3Ro
ZS1hbmFseXNlcm5vZGUtaW50ZXJmYWNlL3Rlc3QtYW5hbHlzZXItbWluaW11bS5odG1sIFsgRHVt
cEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUt
ZGlzY29ubmVjdC1hdWRpb3BhcmFtLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NhbWUtb3JpZ2luLWNoZWNr
LnN1Yi5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMuaHRt
bCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCiBmYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWJh
Y2stZm9yd2FyZC1jYWNoZS5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGZhc3Qv
aGlzdG9yeS9wYWdlLWNhY2hlLWNyZWF0ZUltYWdlQml0bWFwLmh0bWwgWyBEdW1wSlNDb25zb2xl
TG9nSW5TdGRFcnIgXQogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLWluLWxv
YWRpbmctaWZyYW1lLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQpAQCAtNTE1Nyw2
ICs1MTU2LDEwIEBAIHdlYmtpdC5vcmcvYi8xODM5OTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3Nzb20vY3NzLXN0eWxlLWF0dHItZGVjCiAjIFRlc3QgaXMgY3Jhc2hpbmcg
aW4gRGVidWcgYnVpbGRzIHNpbmNlIGltcG9ydC4KIHdlYmtpdC5vcmcvYi8yMzQ5NzcgWyBEZWJ1
ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9mb2N1cy1ldmVu
dC1kb2N1bWVudC1tb3ZlLmh0bWwgWyBTa2lwIF0KIAorIyBUZXN0IGlzIGZsYWt5IGJlY2F1c2Ug
TWVzc2FnZVBvcnQgbWVzc2FnZXMgbWF5IGdldCByZWNlaXZlZCBpbiBhIGRpZmZlcmVudCBvcmRl
ciB3aGVuIHNldmVyYWwgTWVzc2FnZVBvcnRzIGFyZSBpbnZvbHZlZCwKKyMgZHVlIHRvIGhvdyBN
ZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpIGlzIGltcGxlbWVudGVkLgoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0
aW9ucy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIEZhaWx1cmUgUGFzcyBdCisKICMg
UGx1Z2lucwogIyBGSVhNRTogUmVtb3ZlIHRoZXNlIHRlc3RzLgogcGx1Z2lucy8gWyBTa2lwIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0
LW9ubHkuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3
b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dAppbmRleCAwZTk5NzI0Yjg2NGIuLjY4
OThiNTRhYWI2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdv
cmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRl
LXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSw2
ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2Nh
bGhvc3Q6OTQ0NC9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zdXBwb3J0L3Jlc291cmNlLnB5P2Ny
b3NzLW9yaWdpbi1mZXRjaAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8v
d3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQvcmVzb3Vy
Y2UucHk/Y3Jvc3Mtb3JpZ2luLXhocgotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0
dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQv
cmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLWZldGNoCiAKIFBBU1MgU2FtZS1vcmlnaW4gJ2ZldGNo
KCknLgogUEFTUyBTYW1lLW9yaWdpbiBYSFIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lk
ZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWItZXhwZWN0ZWQu
dHh0CmluZGV4IDk3OTEwNjMwMzc4NS4uYmI2NDUyZjQ0YTBhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMu
c3ViLWV4cGVjdGVkLnR4dApAQCAtMiwxMCArMiw5IEBACiBIYXJuZXNzIEVycm9yIChUSU1FT1VU
KSwgbWVzc2FnZSA9IG51bGwKIAogVElNRU9VVCBzaGFyZWR3b3JrZXItc2NyaXB0LXNyYyBUZXN0
IHRpbWVkIG91dAotRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgbm90IGJsb2Nr
ZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgIEEgbmV0d29yayBlcnJvciBvY2N1cnJlZC4KLUZBSUwg
YGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AgUmVmdXNlZCB0byBldmFs
dWF0ZSBhIHN0cmluZyBhcyBKYXZhU2NyaXB0IGJlY2F1c2UgJ3Vuc2FmZS1ldmFsJyBpcyBub3Qg
YW4gYWxsb3dlZCBzb3VyY2Ugb2Ygc2NyaXB0IGluIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1
cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAic2NyaXB0LXNyYyAnc2VsZicgJ25vbmNlLWEnIGJsb2I6
IGZpbGVzeXN0ZW06Ii4KLQotRkFJTCBgc2V0VGltZW91dChbc3RyaW5nXSlgIG5vdCBibG9ja2Vk
IGluIGh0dHA6IHdpdGhvdXQgQ1NQIGFzc2VydF91bnJlYWNoZWQ6IGNhbGxiYWNrIG5vdCBjYWxs
ZWQuIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNj
cmlwdHMoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgTG9hZCBmYWlsZWQKK1BB
U1MgYGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AKK1BBU1MgYHNldFRp
bWVvdXQoW3N0cmluZ10pYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3V0IENTUAogVElNRU9V
VCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgYmxvY2tlZCBpbiBodHRwOiB3aXRoIHNj
cmlwdC1zcmMgJ3NlbGYnIFRlc3QgdGltZWQgb3V0CiBOT1RSVU4gYGV2YWwoKWAgYmxvY2tlZCBp
biBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCiBOT1RSVU4gYHNldFRpbWVvdXQoW3N0cmlu
Z10pYCBibG9ja2VkIGluIGh0dHA6IHdpdGggc2NyaXB0LXNyYyAnc2VsZicKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVk
LnR4dAppbmRleCA0ZWFjMWNjYzA1MjYuLmI4ZWUxM2IwZmZjZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBv
bGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91dC5zdWItZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4
dApAQCAtMSw0ICsxLDQgQEAKIAogRkFJTCBEZWRpY2F0ZWQgd29ya2VyIGluaGVyaXRzIENTUCBm
cm9tIG1haW4gZG9jdW1lbnQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgInNldFRpbWVvdXQgYWxs
b3dlZCIgYnV0IGdvdCAic2V0VGltZW91dCBibG9ja2VkIgotRkFJTCBTaGFyZWQgd29ya2VyIGRl
bGl2ZXJzIGl0cyBvd24gQ1NQIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJzZXRUaW1lb3V0IGJs
b2NrZWQiIGJ1dCBnb3QgInNldFRpbWVvdXQgYWxsb3dlZCIKK1BBU1MgU2hhcmVkIHdvcmtlciBk
ZWxpdmVycyBpdHMgb3duIENTUAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3Jr
ZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNo
ZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggYzEwNzEz
NjU1MjgwLi42Zjg0NGRkNWQ5NDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtl
cnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBj
YWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKQEAgLTUsNyAr
NSw3IEBAIEhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAogUEFTUyBEZWRp
Y2F0ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0CiBQQVNTIERlZGljYXRlZCB3b3JrZXIg
b2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0CiBQQVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIG5v
dC1pbi1jYWNoZSBzY3JpcHQKLVBBU1MgU2hhcmVkIHdvcmtlciBvZiB0aGUgY2FjaGVkIHNjcmlw
dAotUEFTUyBTaGFyZWQgd29ya2VyIG9mIHRoZSBmYWxsYmFja2VkIHNjcmlwdAorRkFJTCBTaGFy
ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJE
b25lOiBjYWNoZWQiIGJ1dCBnb3QgIkVycm9yOiBJbXBvcnRpbmcgYSBub24tY2FjaGVkIHNjcmlw
dCBtdXN0IGZhaWwuIgorRkFJTCBTaGFyZWQgd29ya2VyIG9mIHRoZSBmYWxsYmFja2VkIHNjcmlw
dCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiRG9uZTogZmFsbGJhY2tlZCIgYnV0IGdvdCAiRXJy
b3I6IEltcG9ydGluZyBhIG5vbi1jYWNoZWQgc2NyaXB0IG11c3QgZmFpbC4iCiBUSU1FT1VUIFNo
YXJlZCB3b3JrZXIgb2YgdGhlIG5vdC1pbi1jYWNoZSBzY3JpcHQgVGVzdCB0aW1lZCBvdXQKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3
b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9y
aWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3b3JrZXItcGFydGl0
aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0CmluZGV4IDRlZDg3NDc0
NzZjNy4uNTg2ZDEwMTUyYTM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9hbm9u
eW1vdXMtaWZyYW1lL3NoYXJlZHdvcmtlci1wYXJ0aXRpb25pbmcudGVudGF0aXZlLmh0dHBzLndp
bmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlm
cmFtZS9zaGFyZWR3b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhw
ZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIEFub255bW91cyBpZnJhbWVzIGdldCBw
YXJ0aXRpb25lZCBzaGFyZWQgd29ya2Vycy4gYXNzZXJ0X3RydWU6IFRoZSAibm9ybWFsIiBpZnJh
bWUncyBzaGFyZWR3b3JrZXIgc2hvdWxkIHJldHVybiB7Im5vcm1hbCI6IHRydWUsICJub3JtYWxf
Y29udHJvbCI6IHRydWV9LCBidXQgaW5zdGVhZCByZXR1cm5lZCB7Im5vcm1hbCI6dHJ1ZX0gZXhw
ZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK0ZBSUwgQW5vbnltb3VzIGlmcmFtZXMgZ2V0IHBhcnRpdGlv
bmVkIHNoYXJlZCB3b3JrZXJzLiBhc3NlcnRfdHJ1ZTogVGhlICJub3JtYWwiIGlmcmFtZSdzIHNo
YXJlZHdvcmtlciBzaG91bGQgcmV0dXJuIHsibm9ybWFsIjogdHJ1ZSwgIm5vcm1hbF9jb250cm9s
IjogdHJ1ZX0sIGJ1dCBpbnN0ZWFkIHJldHVybmVkIHsibm9ybWFsX2NvbnRyb2wiOnRydWUsIm5v
cm1hbCI6dHJ1ZSwiYW5vbnltb3VzIjp0cnVlLCJhbm9ueW1vdXNfY29udHJvbCI6dHJ1ZX0gZXhw
ZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kv
Y3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdp
bi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMt
ZXhwZWN0ZWQudHh0CmluZGV4IDYzNTViNjhkZTcwYi4uYzhiZjc1ZTdlYTg1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mt
b3JpZ2luLWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5o
dHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2lu
LWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0yMCw3ICsyMCw3IEBA
IFBBU1MgZGVkaWNhdGVkIHdvcmtlcjogc2NoZW1lID0gYmxvYiwgdmFsdWUgPSAqCiBQQVNTIGRl
ZGljYXRlZCB3b3JrZXI6IHNjaGVtZSA9IGJsb2IsIHZhbHVlID0gc2VsZgogRkFJTCBkZWRpY2F0
ZWQgd29ya2VyOiBzY2hlbWUgPSBibG9iLCB2YWx1ZSA9IChcKSBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCBmYWxzZSBidXQgZ290IHRydWUKIFBBU1Mgc2hhcmVkIHdvcmtlcjogd2l0aENvb3BDb2Vw
ID0gZmFsc2UKLVBBU1Mgc2hhcmVkIHdvcmtlcjogd2l0aENvb3BDb2VwID0gdHJ1ZQorRkFJTCBz
aGFyZWQgd29ya2VyOiB3aXRoQ29vcENvZXAgPSB0cnVlIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
IHRydWUgYnV0IGdvdCBmYWxzZQogUEFTUyBzZXJ2aWNlIHdvcmtlcjogd2l0aENvb3BDb2VwID0g
ZmFsc2UKIEZBSUwgc2VydmljZSB3b3JrZXI6IHdpdGhDb29wQ29lcCA9IHRydWUgYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1i
ZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1i
ZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAzMzk4
YmQ4ODkzMWIuLjRjODY2ZWIyOTI2MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kv
c2hhcmVkLXdvcmtlcnMuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9s
aWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMiw3ICsyLDcgQEAgVmVy
aWZ5IHRoZSBDcm9zcy1PcmlnaW4gRW1iZWRkZXIgUG9saWN5IGZvciBTaGFyZWQgV29ya2VycyBi
eSBwZXJmb3JtaW5nIGEgY3Jvc3MKIAogCiBQQVNTIGRlZmF1bHQgcG9saWN5IChkZXJpdmVkIGZy
b20gcmVzcG9uc2UpCi1GQUlMICJyZXF1aXJlLWNvcnAiIChkZXJpdmVkIGZyb20gcmVzcG9uc2Up
IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJmYWlsdXJlIiBidXQgZ290ICJzdWNjZXNzIgorUEFT
UyAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIHJlc3BvbnNlKQogUEFTUyBkZWZhdWx0IHBv
bGljeSAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBkdWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAt
IGJsb2IgVVJMKQogRkFJTCAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBk
dWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAtIGJsb2IgVVJMKSBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCAiZmFpbHVyZSIgYnV0IGdvdCAic3VjY2VzcyIKIFBBU1MgZGVmYXVsdCBwb2xpY3kgKGRl
cml2ZWQgZnJvbSBvd25lciBzZXQgZHVlIHRvIHVzZSBvZiBsb2NhbCBzY2hlbWUgLSBkYXRhIFVS
TCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5jZS5z
dWIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVy
aXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggNzViMWQzM2U1MjYwLi5iMmJmMmUz
YmZmM2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5j
ZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtl
ci1pbmhlcml0YW5jZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNiBAQAogQmxv
Y2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2Nv
bW1vbi9ibGFuay5odG1sCiBCbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93
d3cubG9jYWxob3N0Ojk0NDQvY29tbW9uL2JsYW5rLmh0bWwKIEJsb2NrZWQgYWNjZXNzIHRvIGV4
dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2NhbGhvc3Q6OTQ0NC9jb21tb24vYmxhbmsuaHRtbAot
QmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0
L2NvbW1vbi9ibGFuay5odG1sCiAKIFBBU1MgVGVzdCB0aGF0IGxvY2FsIHNjaGVtZSB3b3JrZXJz
IGluaGVyaXQgQ09FUDogcmVxdWlyZS1jb3JwIGZyb20gdGhlIGNyZWF0aW5nIGRvY3VtZW50CiBQ
QVNTIGJsb2IgVVJMIGRlZGljYXRlZCB3b3JrZXI6IFNhbWUgb3JpZ2luIHNob3VsZCBiZSBhbGxv
d2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJf
ZGF0YVVybC1leHBlY3RlZC50eHQKaW5kZXggOTk1YTA2MDE5Yjg0Li45YjU4MjBhYWU4Y2IgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9TaGFyZWRXb3JrZXJfZGF0YVVybC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRh
VXJsLWV4cGVjdGVkLnR4dApAQCAtMSwxMyArMSw1IEBACi1DT05TT0xFIE1FU1NBR0U6IEVycm9y
OiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3QgMQogCiAKLUhhcm5lc3MgRXJyb3Ig
KEZBSUwpLCBtZXNzYWdlID0gRXJyb3I6IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDIgYnV0IGdv
dCAxCi0KLVBBU1MgRGF0YSBVUkwgbm90IHNoYXJlZCBieSBjcm9zcy1vcmlnaW4gU2hhcmVkV29y
a2VycwotVElNRU9VVCBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtl
cnMgVGVzdCB0aW1lZCBvdXQKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBFcnJv
cjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290IDEKLQogUEFTUyBEYXRhIFVSTCBu
b3Qgc2hhcmVkIGJ5IGNyb3NzLW9yaWdpbiBTaGFyZWRXb3JrZXJzCi1USU1FT1VUIERhdGEgVVJM
cyBzaGFyZWQgYnkgc2FtZS1vcmlnaW4gU2hhcmVkV29ya2VycyBUZXN0IHRpbWVkIG91dAorUEFT
UyBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtlcnMKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQK
aW5kZXggNTc2ZTZkMmI3ZWQyLi40YTI2YmU5MjlhOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13
b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVk
LXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMg
QEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0
Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkK
IAogUEFTUyBTdGF0aWMgaW1wb3J0LgogRkFJTCBTdGF0aWMgaW1wb3J0IChjcm9zcy1vcmlnaW4p
LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogIkltcG9ydGlu
ZyBhIG1vZHVsZSBzY3JpcHQgZmFpbGVkLiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXIt
aW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29y
a2VyLWltcG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CmluZGV4IDRmODY0
MWU1MTQ4MC4uMjk5N2Y3ZTFmMzA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9y
dC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3Jr
ZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwz
IEBACi1DT05TT0xFIE1FU1NBR0U6IE9yaWdpbiBudWxsIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vz
cy1Db250cm9sLUFsbG93LU9yaWdpbi4gU3RhdHVzIGNvZGU6IDIwMAogCiBIYXJuZXNzIEVycm9y
IChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtl
ci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXIt
aW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQKaW5kZXggZWFjN2Y5NWRlNmYyLi5j
YmMwNDI5ZTBjNzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJs
LndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11
cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRv
IGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVz
L3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkKIAogSGFybmVzcyBFcnJvciAoVElN
RU9VVCksIG1lc3NhZ2UgPSBudWxsCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ct
ZXhwZWN0ZWQudHh0CmluZGV4IDU3NmU2ZDJiN2VkMi4uNGEyNmJlOTI5YThkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9k
dWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3No
YXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1C
bG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQz
L3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LW9uLWxvYWQtc2NyaXB0LnB5CiAKIFBB
U1MgU3RhdGljIGltcG9ydC4KIEZBSUwgU3RhdGljIGltcG9ydCAoY3Jvc3Mtb3JpZ2luKS4gcHJv
bWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6ICJJbXBvcnRpbmcgYSBt
b2R1bGUgc2NyaXB0IGZhaWxlZC4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlv
bnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNy
ZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAppbmRleCBlMWJlZGY1NDMwZWYuLmE3MGYwNWFmNTRmNCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQu
dHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHA6
Ly93d3cxLmxvY2FsaG9zdDo4ODAwL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LWNy
ZWRlbnRpYWxzLnB5CiAKIEhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRp
Y3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhwZWN0ZWQudHh0CmluZGV4IDAxOGRiNjA0NTY5ZC4u
Y2ZlNDY1NTY3NWNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVkLnR4dApAQCAt
MSw1ICsxLDMgQEAKIAotSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0K
LU5PVFJVTiBzaGFyZWQgd29ya2VyIHdpdGggbXVsdGlwbGUgZG9jdW1lbnRzCitQQVNTIHNoYXJl
ZCB3b3JrZXIgd2l0aCBtdWx0aXBsZSBkb2N1bWVudHMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA4
LWV4cGVjdGVkLnR4dAppbmRleCA5N2E0ZTdhNzNhNjMuLjA5ZjY3MmQxYzYyMSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3Nl
bWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSwzIEBACiAKLUhhcm5lc3Mg
RXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1USU1FT1VUIG1lc3NhZ2VjaGFubmVs
IGluIHNoYXJlZCB3b3JrZXIgVGVzdCB0aW1lZCBvdXQKK1BBU1MgbWVzc2FnZWNoYW5uZWwgaW4g
c2hhcmVkIHdvcmtlcgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRv
dy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50
eHQKaW5kZXggYTA4OWMyMjQ4OWUyLi4xOWU0NmIwOWE1NmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2Vy
LWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJs
b2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw1IEBACiAKLUhhcm5lc3MgRXJy
b3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1GQUlMIENyZWF0aW5nIGEgc2hhcmVkIHdv
cmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJ3b3Jr
ZXJfT0tfMiIgYnV0IGdvdCAid29ya2VyX09LXzEiCitQQVNTIENyZWF0aW5nIGEgc2hhcmVkIHdv
cmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MuCiBQQVNTIENyZWF0aW5nIGEgc2hhcmVkIHdvcmtl
ciBmcm9tIGEgYmxvYiBVUkwgd29ya3MgaW1tZWRpYXRlbHkgYmVmb3JlIHJldm9raW5nLgotVElN
RU9VVCBDb25uZWN0aW5nIHRvIGEgc2hhcmVkIHdvcmtlciBvbiBhIHJldm9rZWQgYmxvYiBVUkwg
d29ya3MuIFRlc3QgdGltZWQgb3V0CitQQVNTIENvbm5lY3RpbmcgdG8gYSBzaGFyZWQgd29ya2Vy
IG9uIGEgcmV2b2tlZCBibG9iIFVSTCB3b3Jrcy4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFt
ZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25zLWV4
cGVjdGVkLnR4dAppbmRleCA2ZmZlZTI3MzkwZDkuLmFlNDViNGQyNzM5NiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJl
ZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFt
ZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgVGVzdCB0
aGUgbmFtZSBwcm9wZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBtaXhpbmcgY29uc3RydWN0b3Igb3B0
aW9ucyBhbmQgY29uc3RydWN0b3Igc3RyaW5ncyBFcnJvcjogYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgMiBidXQgZ290IDEKK1BBU1MgVGVzdCB0aGUgbmFtZSBwcm9wZXJ0eSBvZiBzaGFyZWQgd29y
a2VycyBtaXhpbmcgY29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29uc3RydWN0b3Igc3RyaW5ncwog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQt
d29ya2VyLW9wdGlvbnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CmluZGV4IGY2NTY5NDYxNTBkYi4u
NGY5OWExMzQwOWU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dApAQCAt
MSwyOCArMSwyNiBAQAogCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwK
LQotVElNRU9VVCBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBtb2R1bGUgVGVzdCB0aW1lZCBvdXQK
LU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9u
cyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGRlZmF1bHQKLU5PVFJVTiBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogY2xhc3NpYyB0byBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIg
d2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGNsYXNz
aWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBvbWl0IGluIGNsYXNzaWMKLU5PVFJV
TiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91
bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBpbmNsdWRlIGluIGNsYXNzaWMKLU5PVFJVTiBDb25u
ZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUg
YmxvY2tlZDogb21pdCB0byBkZWZhdWx0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRv
IHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDog
b21pdCB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQg
dG8gaW5jbHVkZSBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2Vy
IHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRv
IG9taXQgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBpbmNs
dWRlIGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGlu
IGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJl
bnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBvbWl0IGluIGNsYXNzaWMK
LU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9u
cyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCi1O
T1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMg
c2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gb21pdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25u
ZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUg
YmxvY2tlZDogZGVmYXVsdCB0byBpbmNsdWRlIGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBvbWl0IHRvIGRlZmF1bHQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQg
d29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8g
c2FtZS1vcmlnaW4gaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2Vy
IHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVk
ZSBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZm
ZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBt
b2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQg
b3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gaW5jbHVkZSBpbiBtb2R1
bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGluIG1vZHVsZQotTk9U
UlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNo
b3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IGluY2x1ZGUgdG8gc2FtZS1vcmlnaW4gaW4gbW9kdWxlCitQQVNTIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBkZWZhdWx0IHRvIG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0
aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGRlZmF1bHQK
K1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMg
c2hvdWxkIGJlIGJsb2NrZWQ6IGNsYXNzaWMgdG8gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8g
c2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBt
b2R1bGUgdG8gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBvbWl0IGluIGNs
YXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9w
dGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gaW5jbHVkZSBpbiBjbGFzc2ljCitQ
QVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNo
b3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0
aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxv
Y2tlZDogb21pdCB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8g
c2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBv
bWl0IHRvIGluY2x1ZGUgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3Jr
ZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4g
dG8gb21pdCBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBpbmNs
dWRlIGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlm
ZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gZGVmYXVsdCBpbiBj
bGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gY2xhc3NpYworUEFT
UyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91
bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCitQQVNTIENv
bm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBi
ZSBibG9ja2VkOiBkZWZhdWx0IHRvIG9taXQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8g
c2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBk
ZWZhdWx0IHRvIGluY2x1ZGUgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRl
ZmF1bHQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRp
ZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIHNhbWUtb3JpZ2luIGlu
IG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQg
b3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBpbmNsdWRlIGluIG1vZHVsZQorUEFT
UyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91
bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IHNhbWUtb3JpZ2luIHRvIGluY2x1ZGUgaW4gbW9kdWxlCitQQVNTIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBpbmNsdWRlIHRvIGRlZmF1bHQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVk
IHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRl
IHRvIG9taXQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIHNhbWUtb3Jp
Z2luIGluIG1vZHVsZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmln
aW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVk
LnR4dAppbmRleCAxZTJkMzk5MmY2ZDUuLjU5Y2FjYTQ4NmY4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJl
Y3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNo
YXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBh
Y2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHA6Ly93d3cyLmxvY2FsaG9zdDo4ODAwL3hoci9yZXNv
dXJjZXMvaW5zcGVjdC1oZWFkZXJzLnB5P2ZpbHRlcl9uYW1lPW9yaWdpbiZjb3JzCiAKIEZBSUwg
UmVmZXJlciBoZWFkZXIgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIlJlZmVyZXI6IGh0dHA6Ly9s
b2NhbGhvc3Q6ODgwMC94aHIvcmVzb3VyY2VzL3dvcmtlcnhoci1vcmlnaW4tcmVmZXJyZXIuanNc
biIgYnV0IGdvdCAiUmVmZXJlcjogaHR0cDovL2xvY2FsaG9zdDo4ODAwL3hoci9yZXNvdXJjZXMv
cmVkaXJlY3QucHk/bG9jYXRpb249d29ya2VyeGhyLW9yaWdpbi1yZWZlcnJlci5qc1xuIgogRkFJ
TCBPcmlnaW4gaGVhZGVyIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJPcmlnaW46IGh0dHA6Ly9s
b2NhbGhvc3Q6ODgwMFxuIiBidXQgZ290ICIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZTRlZDMxYWI2YWMzLi5lYTNiYzQ3ODhlZDIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTY2
LDYgKzY2LDEyNCBAQCBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS1nZXRVc2VyTWVk
aWEtcGVuZGluZy1wcm9taXNlLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9w
YWdlLWNhY2hlLW1lZGlhc3RyZWFtLmh0bWwgWyBTa2lwIF0KIG1lZGlhL2F1ZGlvLXNlc3Npb24t
Y2F0ZWdvcnkuaHRtbCBbIFNraXAgXQogCisjIFNoYXJlZCB3b3JrZXJzIGFyZSBvbmx5IGltcGxl
bWVudGVkIGZvciBXZWJLaXQyLgoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy1zZWxmL3NoYXJl
ZHdvcmtlci1jbGFzc2ljLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0
LXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3Rv
cC5odHRwLXJwL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5
LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXIt
Y2xhc3NpYy5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtd2ls
ZGNhcmQvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0
dHAtcnAvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5
LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFz
c2ljLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
b250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1zZWxmL3No
YXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dv
cmtlci1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4v
dG9wLmh0dHAtcnAvd29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRw
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVk
d29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNy
Yy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1l
dGEvc2NyaXB0LXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAu
aHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3b3Jr
ZXItY2xhc3NpYy5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtd2ls
ZGNhcmQvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1l
dGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHAuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHBz
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtc2VsZi9zaGFyZWR3b3JrZXIt
bW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1zZWxmL3No
YXJlZHdvcmtlci1tb2R1bGUuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2Vy
LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwLmh0bWwgWyBTa2lwIF0KK2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2Vu
L3RvcC5tZXRhL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMu
aHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3b3Jr
ZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy13aWxk
Y2FyZC9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtl
ci9zaGFyZWR3b3JrZXItY29ubmVjdC1zcmMuc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtl
ci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtl
ci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zYW5kYm94L3NoYXJl
ZC13b3JrZXItc2FuZGJveC5odG1sICBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1kYXRhLXNl
dC10aW1lb3V0LnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLWNoaWxkLnN1Yi5o
dG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2Vy
LWltcG9ydC1kYXRhLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNy
Yy1zZWxmL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90
b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1s
IFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJp
dHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtl
ci1pbXBvcnQtZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3NjcmlwdC1z
cmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
Z2VuL3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5o
dHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLW5vbmUvc2hhcmVk
d29ya2VyLWNsYXNzaWMuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXIt
c3JjLW5vbmUvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9w
Lmh0dHAtcnAvd29ya2VyLXNyYy1ub25lL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0
bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtbm9uZS9zaGFyZWR3b3JrZXIt
aW1wb3J0LWRhdGEuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNy
Yy1ub25lL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0
cC1ycC93b3JrZXItc3JjLW5vbmUvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tp
cCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLWltcG9ydC1k
YXRhLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
b250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1zZWxmL3No
YXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1y
cC93b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1pbXBvcnQt
ZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtd2lsZGNh
cmQvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5o
dHRwLXJwL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwg
WyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0
eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2Vy
LW1vZHVsZS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXNlbGYv
c2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEv
c2NyaXB0LXNyYy1zZWxmL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tp
cCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRw
cy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdv
cmtlci1pbXBvcnQtZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1z
cmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
Z2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRw
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29y
a2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLW5v
bmUvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93
b3JrZXItc3JjLW5vbmUvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQor
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9n
ZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRw
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtbm9uZS9zaGFyZWR3b3JrZXIt
aW1wb3J0LWRhdGEuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLW5v
bmUvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5t
ZXRhL3dvcmtlci1zcmMtbm9uZS9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1ub25lL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cHMu
aHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1p
bXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLXdp
bGRjYXJkL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3Rv
cC5tZXRhL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBz
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvd29ya2VyLXNyYy9zaGFyZWQtZmFsbGJhY2suc3ViLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvd29ya2VyLXNyYy9zaGFyZWQtbGlzdC5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS93b3JrZXItc3JjL3No
YXJlZC1ub25lLnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXNlbGYuc3ViLmh0
bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvd29ya2VyLXNyYy9zaGFyZWQtd29ya2VyLXNyYy1jaGlsZC1mYWxsYmFjay1i
bG9ja2VkLnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXdvcmtlci1zcmMtY2hp
bGQtZmFsbGJhY2suc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvd29ya2VyLXNyYy9zaGFyZWQtd29ya2VyLXNy
Yy1kZWZhdWx0LWZhbGxiYWNrLnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXdv
cmtlci1zcmMtc2NyaXB0LWZhbGxiYWNrLnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hh
cmVkLXdvcmtlci1zcmMtc2VsZi1mYWxsYmFjay5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29ycy9kYXRhLXVybC1zaGFyZWQtd29y
a2VyLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9i
cm93c2Vycy9vZmZsaW5lL25vLWFwcGNhY2hlLWluLXNoYXJlZC13b3JrZXJzLWhpc3RvcmljYWwu
aHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvbW9kdWxlL2V2YWx1YXRp
b24tb3JkZXItMS1ub3Rocm93LXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3Jp
cHQtZWxlbWVudC9tb2R1bGUvZXZhbHVhdGlvbi1vcmRlci0xLXNoYXJlZHdvcmtlci5odG1sIFsg
U2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3Nj
cmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudC9tb2R1bGUvZXZhbHVhdGlvbi1vcmRlci0yLWlt
cG9ydC1zaGFyZWR3b3JrZXIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvbW9k
dWxlL2V2YWx1YXRpb24tb3JkZXItMy1keW5hbWljLXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGlu
Zy0xL3RoZS1zY3JpcHQtZWxlbWVudC9ldmFsdWF0aW9uLW9yZGVyLTEtbm90aHJvdy1zaGFyZWR3
b3JrZXIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvZXZhbHVhdGlvbi1vcmRl
ci0xLXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL3VuaGFu
ZGxlZC1wcm9taXNlLXJlamVjdGlvbnMvcHJvbWlzZS1yZWplY3Rpb24tZXZlbnRzLnNoYXJlZHdv
cmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20v
c2VyaWFsaXphdGlvbi9tb2R1bGUvYnJvYWRjYXN0Y2hhbm5lbC1zdWNjZXNzLWFuZC1mYWlsdXJl
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9T
aGFyZWRXb3JrZXJQZXJmb3JtYW5jZU5vdy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvYmFzZXVybC9hbHBoYS9pbXBvcnRTY3JpcHRzLWluLXNo
YXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvYmFzZXVybC9hbHBoYS94aHItaW4tc2hhcmVkd29ya2VyLmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9pbnRlcmZhY2VzL1NoYXJl
ZFdvcmtlckdsb2JhbFNjb3BlIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvaW50ZXJmYWNlcy9Xb3JrZXJHbG9iYWxTY29wZS9sb2NhdGlvbi9yZWRpcmVj
dC1zaGFyZWR3b3JrZXIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi5odG1sIFsg
U2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9z
aGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC53aW5kb3cuaHRtbCBbIFNraXAgXQoraW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1p
bXBvcnQtZmFpbHVyZS5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1tZXRhLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJl
ZC13b3JrZXItaW1wb3J0LndpbmRvdy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVu
dGlhbHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLXR5cGUuaHRtbCBbIFNraXAgXQoraW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJs
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItcGFyc2UtZXJyb3ItZmFpbHVyZS5odG1sIFsgU2tpcCBdCitp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL2VuY29kaW5n
cy8wMDIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL3NlbWFudGljcy9lbmNvZGluZ3MvMDA0Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDQu
aHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3Nl
bWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3JlcG9ydGluZy1lcnJvcnMvMDAx
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9z
ZW1hbnRpY3MvcmVwb3J0aW5nLWVycm9ycy8wMDIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9yZXBvcnRpbmctZXJyb3JzLzAw
My5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
c2VtYW50aWNzL3JlcG9ydGluZy1lcnJvcnMvMDA0Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvcnVuLWEtd29ya2VyLzAwMi5o
dG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2Vt
YW50aWNzL3N0cnVjdHVyZWQtY2xvbmUvc2hhcmVkLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MveGhyLzAwMy5odG1sIFsgU2tp
cCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3ho
ci8wMDQuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL3NlbWFudGljcy94aHIvMDA2Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93Lmh0
bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFy
ZWQtd29ya2VyLW9wdGlvbnMtbWlzbWF0Y2guaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItcGFyc2UtZXJyb3ItZmFpbHVy
ZS5odG1sIFsgU2tpcCBdCisKIGh0dHAvd3B0L21lZGlhcmVjb3JkZXIgWyBTa2lwIF0KIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJlY29yZCBbIFNraXAgXQog
ZmFzdC9oaXN0b3J5L3BhZ2UtY2FjaGUtbWVkaWEtcmVjb3JkZXIuaHRtbCBbIFNraXAgXQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3NjcmlwdC1zcmMvd29ya2VyLWlt
cG9ydHNjcmlwdHMuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9zY3JpcHQtc3JjL3dvcmtlci1pbXBvcnRzY3JpcHRzLnN1Yi1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42ZWVhMWJlYWI1YjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXIt
aW1wb3J0c2NyaXB0cy5zdWItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitGQUlMIERl
ZGljYXRlZCB3b3JrZXIgaW5oZXJpdHMgQ1NQIGZyb20gbWFpbiBkb2N1bWVudCBhc3NlcnRfZXF1
YWxzOiBleHBlY3RlZCAiaW1wb3J0U2NyaXB0cyBhbGxvd2VkIiBidXQgZ290ICJpbXBvcnRTY3Jp
cHRzIGJsb2NrZWQiCitGQUlMIFNoYXJlZCB3b3JrZXIgZGVsaXZlcnMgaXRzIG93biBDU1AgU2hh
cmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L3NjcmlwdC1zcmMvd29ya2VyLXNldC10aW1lb3V0LnN1Yi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0
LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLjY3NWEzYThlMGYwYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91dC5zdWItZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNCBAQAorCitGQUlMIERlZGljYXRlZCB3b3JrZXIgaW5oZXJpdHMgQ1NQ
IGZyb20gbWFpbiBkb2N1bWVudCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAic2V0VGltZW91dCBh
bGxvd2VkIiBidXQgZ290ICJzZXRUaW1lb3V0IGJsb2NrZWQiCitGQUlMIFNoYXJlZCB3b3JrZXIg
ZGVsaXZlcnMgaXRzIG93biBDU1AgU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2Fw
cGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZs
aW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdmMmNkNTE4YzdlNwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29mZmxpbmUvYXBwY2FjaGUvd29ya2Vy
cy9hcHBjYWNoZS13b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorQ09O
U09MRSBNRVNTQUdFOiBBcHBsaWNhdGlvbkNhY2hlIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2Ug
U2VydmljZVdvcmtlcnMgaW5zdGVhZC4KKworUEFTUyBEZWRpY2F0ZWQgd29ya2VyIG9mIHRoZSBj
YWNoZWQgc2NyaXB0CitQQVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIGZhbGxiYWNrZWQgc2Ny
aXB0CitQQVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIG5vdC1pbi1jYWNoZSBzY3JpcHQKK0ZB
SUwgU2hhcmVkIHdvcmtlciBvZiB0aGUgY2FjaGVkIHNjcmlwdCBwcm9taXNlX3Rlc3Q6IFVuaGFu
ZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogU2hh
cmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQiCitGQUlMIFNoYXJlZCB3b3JrZXIgb2YgdGhl
IGZhbGxiYWNrZWQgc2NyaXB0IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRo
IHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBTaGFyZWQgd29ya2VycyBhcmUgbm90
IHN1cHBvcnRlZCIKK0ZBSUwgU2hhcmVkIHdvcmtlciBvZiB0aGUgbm90LWluLWNhY2hlIHNjcmlw
dCBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJO
b3RTdXBwb3J0ZWRFcnJvcjogU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQiCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1l
bnQvbW9kdWxlL2ltcG9ydC1tZXRhL2ltcG9ydC1tZXRhLXVybC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3Mvc2NyaXB0aW5nLTEvdGhlLXNjcmlwdC1lbGVtZW50L21vZHVsZS9pbXBv
cnQtbWV0YS9pbXBvcnQtbWV0YS11cmwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uYjI0OTlmYWRjYjZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudC9tb2R1bGUvaW1w
b3J0LW1ldGEvaW1wb3J0LW1ldGEtdXJsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACisK
K1BBU1MgaW1wb3J0Lm1ldGEudXJsIGluIGEgcm9vdCBleHRlcm5hbCBzY3JpcHQKK1BBU1MgaW1w
b3J0Lm1ldGEudXJsIGluIGEgZGVwZW5kZW50IGV4dGVybmFsIHNjcmlwdAorUEFTUyBpbXBvcnQu
bWV0YSBpcyBhbiBvYmplY3QKK1BBU1MgaW1wb3J0Lm1ldGEgaXMgZXh0ZW5zaWJsZQorUEFTUyBp
bXBvcnQubWV0YSdzIHByb3BlcnRpZXMgYXJlIHdyaXRhYmxlLCBjb25maWd1cmFibGUsIGFuZCBl
bnVtZXJhYmxlCitQQVNTIGltcG9ydC5tZXRhLnVybCB3aGVuIGltcG9ydGluZyB0aGUgbW9kdWxl
IHdpdGggZGlmZmVyZW50IGZyYWdtZW50cworUEFTUyBpbXBvcnQubWV0YS51cmwgaW4gYSByb290
IGlubGluZSBzY3JpcHQKK1BBU1MgaW1wb3J0Lm1ldGEudXJsIGF0IHRvcC1sZXZlbCBtb2R1bGUg
RGVkaWNhdGVkV29ya2VyCitGQUlMIGltcG9ydC5tZXRhLnVybCBhdCB0b3AtbGV2ZWwgbW9kdWxl
IFNoYXJlZFdvcmtlciBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1
ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBw
b3J0ZWQiCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvdGhlLXdpbmRvd29yd29y
a2VyZ2xvYmFsc2NvcGUtbWl4aW4vV29ya2VyX1NlbGZfT3JpZ2luLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3dlYmFwcGFwaXMvdGhlLXdpbmRvd29yd29ya2VyZ2xvYmFsc2NvcGUtbWl4aW4vV29y
a2VyX1NlbGZfT3JpZ2luLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLmYzOWY2ZmVkMWYzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dl
YmFwcGFwaXMvdGhlLXdpbmRvd29yd29ya2VyZ2xvYmFsc2NvcGUtbWl4aW4vV29ya2VyX1NlbGZf
T3JpZ2luLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKKworUEFTUyBTYW1lIE9yaWdpbiBX
b3JrZXIKK0ZBSUwgU2FtZSBPcmlnaW4gU2hhcmVkV29ya2VyIFNoYXJlZCB3b3JrZXJzIGFyZSBu
b3Qgc3VwcG9ydGVkCitQQVNTIERhdGEgVXJsIFdvcmtlcgorRkFJTCBEYXRhIFVybCBTaGFyZWRX
b3JrZXIgU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQKK1BBU1MgQmxvYiBVcmwgV29y
a2VyCitGQUlMIEJsb2IgVXJsIFNoYXJlZFdvcmtlciBTaGFyZWQgd29ya2VycyBhcmUgbm90IHN1
cHBvcnRlZAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwv
d29ya2Vycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwv
d29ya2Vycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi4xM2VkMTZkODcxOTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jy
b2FkY2FzdGNoYW5uZWwvd29ya2Vycy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorCitQ
QVNTIEJyb2FkY2FzdENoYW5uZWwgd29ya3MgaW4gd29ya2VycworRkFJTCBCcm9hZGNhc3RDaGFu
bmVsIHdvcmtzIGluIHNoYXJlZCB3b3JrZXJzIFNoYXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9y
dGVkCitQQVNTIENsb3NpbmcgYW5kIHJlLW9wZW5pbmcgYSBjaGFubmVsIHdvcmtzLgorUEFTUyBC
cm9hZGNhc3RDaGFubmVsIGNyZWF0ZWQgYWZ0ZXIgYSB3b3JrZXIgc2VsZi5jbG9zZSgpCitQQVNT
IEJyb2FkY2FzdENoYW5uZWwgbWVzc2FnZXMgZnJvbSBjbG9zZWQgd29ya2VyIHRvIHBhcmVudCBz
aG91bGQgYmUgaWdub3JlZCAoQkMgY3JlYXRlZCBiZWZvcmUgY2xvc2luZykKK1BBU1MgQnJvYWRj
YXN0Q2hhbm5lbCBtZXNzYWdlcyBmcm9tIGNsb3NlZCB3b3JrZXIgdG8gcGFyZW50IHNob3VsZCBi
ZSBpZ25vcmVkIChCQyBjcmVhdGVkIGFmdGVyIGNsb3NpbmcpCitQQVNTIEJyb2FkY2FzdENoYW5u
ZWwgbWVzc2FnZXMgZnJvbSBwYXJlbnQgdG8gY2xvc2VkIHdvcmtlciBzaG91bGQgYmUgaWdub3Jl
ZCAoQkMgY3JlYXRlZCBiZWZvcmUgY2xvc2luZykKK1BBU1MgQnJvYWRjYXN0Q2hhbm5lbCBtZXNz
YWdlcyBmcm9tIHBhcmVudCB0byBjbG9zZWQgd29ya2VyIHNob3VsZCBiZSBpZ25vcmVkIChCQyBj
cmVhdGVkIGFmdGVyIGNsb3NpbmcpCitQQVNTIEJyb2FkY2FzdENoYW5uZWwgbWVzc2FnZXMgd2l0
aGluIGNsb3NlZCB3b3JrZXIgc2hvdWxkIGJlIGlnbm9yZWQgKEJDcyBjcmVhdGVkIGJlZm9yZSBj
bG9zaW5nKQorUEFTUyBCcm9hZGNhc3RDaGFubmVsIG1lc3NhZ2VzIHdpdGhpbiBjbG9zZWQgd29y
a2VyIHNob3VsZCBiZSBpZ25vcmVkIChCQ3MgY3JlYXRlZCBhZnRlciBjbG9zaW5nKQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9hYnJ1cHQtY29tcGxldGlvbi1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9hYnJ1cHQtY29tcGxldGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kMDE1NmMwYjIxOWQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9hYnJ1cHQtY29tcGxldGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBA
CisKK1BBU1MgRGVkaWNhdGVkV29ya2VyIHNob3VsZCBjb3JyZWN0bHkgaGFuZGxlIGFicnVwdCBj
b21wbGV0aW9uCitGQUlMIFNoYXJlZFdvcmtlciBzaG91bGQgY29ycmVjdGx5IGhhbmRsZSBhYnJ1
cHQgY29tcGxldGlvbiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1
ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBw
b3J0ZWQiCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3Jr
ZXJzLzAwMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29y
a2Vycy8wMDEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uN2YyYTkyNzhjNWYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50
aWNzL211bHRpcGxlLXdvcmtlcnMvMDAxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKwor
UEFTUyBkZWRpY2F0ZWQKK0ZBSUwgc2hhcmVkIFNoYXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9y
dGVkCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9ydW4tYS13b3JrZXIvMDAz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9ydW4tYS13b3JrZXIvMDAzLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFmN2Zh
MDg0Yzc0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9ydW4tYS13
b3JrZXIvMDAzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyB3b3JrZXIKK0ZB
SUwgc2hhcmVkIFNoYXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkCisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlCmluZGV4IGUxNDM3YTZiYzEzYy4uOTQ0NzIzZWM3MGZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
QEAgLTE5NTUsOSArMTk1NSwxMiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFE
RVJTCiAgICAgd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAogICAgIHdvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGUuaAogICAgIHdvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaAorICAgIHdv
cmtlcnMvV29ya2VyT2JqZWN0UHJveHkuaAorICAgIHdvcmtlcnMvV29ya2VyT3B0aW9ucy5oCiAg
ICAgd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCiAgICAgd29ya2Vycy9Xb3Jr
ZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgKICAgICB3b3JrZXJzL1dvcmtlck9yV29ya2xl
dFRocmVhZC5oCisgICAgd29ya2Vycy9Xb3JrZXJSZXBvcnRpbmdQcm94eS5oCiAgICAgd29ya2Vy
cy9Xb3JrZXJSdW5Mb29wLmgKICAgICB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCiAgICAg
d29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQuaApAQCAtMjAwMCw2ICsyMDAzLDEzIEBA
IHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCiAgICAgd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCiAKKyAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXJJZGVudGlmaWVyLmgKKyAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaAor
ICAgIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaAorICAgIHdv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaAorICAgIHdvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmgKKworICAgIHdvcmtlcnMvc2hhcmVkL2NvbnRl
eHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaAogICAgIHdvcmtlcnMvc2hhcmVkL2NvbnRl
eHQvU2hhcmVkV29ya2VyVGhyZWFkLmgKICAgICB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJl
ZFdvcmtlclRocmVhZFByb3h5LmgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhMGU5YThlYjdlMDAuLmNk
ZmQ3NjJiNzI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTI3ODYsOCArMjc4NiwxMCBAQCB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXIuY3BwCiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKLXdv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuY3BwCit3b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcAord29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
UHJvdmlkZXIuY3BwCiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3Bw
Cit3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcAog
d29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWQuY3BwCiB3b3JrZXJzL3No
YXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcAogd29ya2xldHMvUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWYzNDQ5Yzc2M2RhLi4xNDg5YjI1NmRmNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTkwMyw3ICs5MDMsNyBAQAogCQkyRTQzNDY0QjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
R2xvYmFsU2NvcGVQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkU0MzQ2MzkwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlUHJv
eHkuaCAqLzsgfTsKIAkJMkU0MzQ2NEQwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckxvY2F0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYz
QjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyTG9jYXRpb24uaCAqLzsgfTsKIAkJMkU0MzQ2NTAw
RjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck1lc3NhZ2luZ1Byb3h5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzRTBGNTQ2QTgyMDBCMEYxQkEg
LyogV29ya2VyTWVzc2FnaW5nUHJveHkuaCAqLzsgfTsKLQkJMkU0MzQ2NTEwRjU0NkE4MjAwQjBG
MUJBIC8qIFdvcmtlck9iamVjdFByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzRjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyT2JqZWN0
UHJveHkuaCAqLzsgfTsKKwkJMkU0MzQ2NTEwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVj
dFByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RTQzNDYzRjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyT2JqZWN0UHJveHkuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTQzNDY1MzBGNTQ2QTgy
MDBCMEYxQkEgLyogV29ya2VyUnVuTG9vcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2NDEwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclJ1bkxv
b3AuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQky
RTQzNDY1NTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDY0MzBGNTQ2QTgyMDBCMEYxQkEg
LyogV29ya2VyVGhyZWFkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMkU3NTg0MUUxMjc3OUFEQTAwNjI2MjhCIC8qIEZpbGVSZWFkZXJMb2FkZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNzU4NDFC
MTI3NzlBREEwMDYyNjI4QiAvKiBGaWxlUmVhZGVyTG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExMjUsNyArMTEyNSw3IEBACiAJCTQx
NkEwNkExMjNDQ0FEMDMwMDM0NzEwOSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2QTA2OTYy
M0NDQUE5RjAwMzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RDc1QTIyMEM2
NTFBNTAwRDAyRDJDIC8qIE5ldHdvcmtMb2FkSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkQ3NTlGMjBDNjQ0MTMwMEQwMkQyQyAv
KiBOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTBCM0EyMDlCQzNDQjAwNEE5NUQ5IC8qIEZldGNoSWRl
bnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDE2RTBCMzcyMDlCQzNDMjAwNEE5NUQ5IC8qIEZldGNoSWRlbnRpZmllci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQxNkUyOUE2MTAyRkE5NjIw
MDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTI5QTUxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtl
clJlcG9ydGluZ1Byb3h5LmggKi87IH07CisJCTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAvKiBX
b3JrZXJSZXBvcnRpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE2RTI5QTUxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1By
b3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NDE2RTZGRTgxQkJEMTJERjAwMEEzRjY0IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRp
bnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNE
ODA2MUJCMzExMEQwMEI3NjREOSAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZG
RTgxQkJEMTJERjAwMEEzRjY1IC8qIEpTRE9NQmluZGluZ0ludGVybmFsc0J1aWx0aW5zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMx
MTBEMDBCNzY0REEgLyogSlNET01CaW5kaW5nSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFODFCQkQxMkRG
MDAwQTNGNzQgLyogVHJhbnNmb3JtU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3
NjRFQSAvKiBUcmFuc2Zvcm1TdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzIzLDYgKzEzMjMsNyBAQAog
CQk0NjBFMzA3NzIyMkY0RjAzMDA5QTA2MDYgLyogRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBl
cm1pc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY1RUREOUYyMjJGNEVDMzAwQjQ2RTE2IC8qIERldmljZU9yaWVudGF0aW9uT3JNb3Rp
b25QZXJtaXNzaW9uU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0NjIxOEFDQjFGNzJENjRFMDA1NzRGQkUgLyogRE9NSGlnaFJlc1RpbWVT
dGFtcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZF
MDE2QUQxRjcyRDYxRTAwMjgyQjJDIC8qIERPTUhpZ2hSZXNUaW1lU3RhbXAuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjI3M0NBRjI2MEU1OUVG
MDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjI3M0NBQzI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRT
dG9yYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNDYyN0ZGNUIyNzlCODdBRjAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlcklkZW50aWZpZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MjdGRjVBMjc5
Qjg3QTIwMEFBMzkxNiAvKiBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYyQzdGNDEyNzU2REJFNDAwRDA4
M0M4IC8qIFdlYkxvY2tJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0Njc4MDJCMjI3NDcxMTg1MDBEQTlGQjYgLyogV2ViTG9ja0lkZW50
aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0NjJFNEM1MDI2MTZBODExMDAzQTJDNjcgLyogU2NyaXB0QnVmZmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjJFNEM0RDI2MTZBODAxMDAzQTJD
NjcgLyogU2NyaXB0QnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDYzNEM3MkMyNzU3REFCMjAwMjZBODE1IC8qIFdlYkxvY2tNYW5hZ2Vy
U25hcHNob3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2NzgwMkIwMjc0NzExN0IwMERBOUZCNiAvKiBXZWJMb2NrTWFuYWdlclNuYXBzaG90LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzNDUsMTQg
KzEzNDYsMTggQEAKIAkJNDY3QTY4RDcyNzVFQTk5MTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRo
cmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3
QTY4RDQyNzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2N0E2OEQ4Mjc1RUE5OTUw
MDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0E2OEQ1Mjc1RUE5OEMwMDlCMzFDNSAvKiBT
aGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCAqLzsgfTsKIAkJNDY3QTY4RDkyNzVFQTk5ODAwOUIz
MUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdBNjhENjI3NUVBOThDMDA5QjMxQzUgLyogU2hhcmVk
V29ya2VyVGhyZWFkUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQk0NjdBNjhEQTI3NUVBOTlDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3
QTY4RDIyNzVFQTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCAqLzsgfTsKIAkJ
NDY4MkQyMDAxRjc5NzgzMDAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgyRDFGRjFGNzk3
ODIzMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjgzNDRFMDFFRERGQUFBMDBCNzc5
NUIgLyogRE9NUmVjdExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODNERjQwMjc2
N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzREYzRTI3NjdERjk4MDA3
RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oICovOyB9OwogCQk0NjgzREY0
MTI3NjdFOTFBMDA3RDAwQzggLyogU2hhZG93UmVhbG1HbG9iYWxTY29wZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4M0RGM0IyNzY3REYyNjAwN0Qw
MEM4IC8qIFNoYWRvd1JlYWxtR2xvYmFsU2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0Njg4RUUzQzI2REQyNjEwMDAyQUY1QzQgLyogQ3Jv
c3NPcmlnaW5Nb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0Njg4RUUzQTI2REQyNjBDMDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5Nb2RlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDY5NDNEQzgyNzYz
RjgxMjAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTQzREM1Mjc2M0Y4MEQwMDRC
NjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDY5NDNEQzkyNzYzRjgxNzAwNEI2MTBF
IC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTQzREM3Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDY5NDNEQ0EyNzYzRjgxQzAwNEI2MTBFIC8qIFNoYXJlZFdv
cmtlclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0Njk0M0RDNDI3NjNGODBEMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyUHJvdmlkZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0Njk4NUYy
MzI3QTRBNkFEMDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk4NUYyMjI3QTRBNjg2MDA5N0EzMkIgLyog
U2hhcmVkV29ya2VyS2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNDY5Q0NDRkUyNjlEMDIxQzAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OUNDQ0ZD
MjY5RDAyMDIwMDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY5RDc3QjgyNzAxNjI1MTAwMTQyRkE2
IC8qIE5hdmlnYXRpb25SZXF1ZXN0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2OUQ3N0I2MjcwMTYyNTAwMDE0MkZBNiAvKiBOYXZpZ2F0aW9uUmVx
dWVzdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNDZBNzhCMzQyNzk5QkQ3MTAwMTE1NEZFIC8qIFdvcmtlck9wdGlvbnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMUIxRDI2MjZGMThBNEIwMDg4
MkRBMiAvKiBXb3JrZXJPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDZBQUFBM0QyNUQzNjMyMDAwQkFGNDJGIC8qIEF1ZGlvRmlsZVJl
YWRlckNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkFBQUEzQTI1RDM2MzE0MDBCQUY0MkYgLyogQXVkaW9GaWxlUmVhZGVyQ29jb2EuaCAqLzsg
fTsKIAkJNDZCNjNGNkMxQzZFOEQxOTAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjYzRjZCMUM2
RThDREYwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCNjUwREQyMjk2MjYyNzAwRkQ4QUE0
IC8qIFBhZ2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkI2NTBEQjIyOTYyNjI3MDBGRDhBQTQgLyogUGFnZUlkZW50aWZpZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM3Myw2
ICsxMzc4LDcgQEAKIAkJNDZDNjk2Q0MxRTcyMDVGQzAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNjk2Q0Ex
RTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwICovOyB9OwogCQk0NkM4M0VGRTFBOUJC
RTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzgzRUZDMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmll
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2
Q0E5QzQ0MUY5N0JCRTkwMDRDRkMzQSAvKiBWaXNpYmlsaXR5U3RhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Q0E5QzQxMUY5N0JCRTcwMDRDRkMz
QSAvKiBWaXNpYmlsaXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk0NkNGNTA0QTI3QUIxRUE0MDA3MERCQzggLyogU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2Q0Y1MDQ4MjdBQjFFQTEwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQ2RDAwMDQwMjZBMEZFQjMwMEQxQkYxRSAvKiBTdWJtaXRFdmVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZEMDAwM0UyNkEwRkU2RjAwRDFCRjFF
IC8qIFN1Ym1pdEV2ZW50LmggKi87IH07CiAJCTQ2REJCNjUwMUFCOEM5NkYwMEQ5QTgxMyAvKiBQ
b3dlck9ic2VydmVyTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkRCQjY0RTFBQjhDOTZGMDBEOUE4MTMgLyogUG93ZXJPYnNlcnZlck1hYy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2REQ5M0Q3
MjY5REU3NTYwMDFBRkQ4OCAvKiBCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZERDkzRDUyNjlERTc0QjAw
MUFGRDg4IC8qIEJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTkxODgsNiArOTE5NCw3IEBACiAJCTQ2
MjczQzIxMjdBMUNCQzcwMDZBMTVCOSAvKiBKU0F1ZGlvV29ya2xldFByb2Nlc3NvckN1c3RvbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0F1ZGlvV29ya2xldFByb2Nlc3NvckN1c3RvbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MjczQ0FDMjYwRTU5REYwMDZGQUE5MSAv
KiBTV1NjcmlwdFN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1dT
Y3JpcHRTdG9yYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MjczQ0FFMjYw
RTU5REYwMDZGQUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU1dTY3JpcHRTdG9yYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDYyN0ZGNUEyNzlCODdBMjAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlcklkZW50
aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VySWRl
bnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjJFNEM0RDI2MTZBODAx
MDAzQTJDNjcgLyogU2NyaXB0QnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNjcmlwdEJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjJFNEM0
RjI2MTZBODAxMDAzQTJDNjcgLyogU2NyaXB0QnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcxQyAvKiBQb3dlck9ic2VydmVyTWFjLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvd2VyT2JzZXJ2ZXJNYWMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTIzNyw4ICs5MjQ0LDYgQEAKIAkJ
NDY3QTY4Q0YyNzVFQTk4OTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3QTY4RDAyNzVFQTk4OTAwOUIzMUM1IC8qIFNoYXJlZFdv
cmtlclRocmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJUaHJlYWQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdBNjhEMTI3NUVBOThBMDA5QjMxQzUg
LyogU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJl
ZFdvcmtlclNjcmlwdExvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2
N0E2OEQyMjc1RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNoYXJlZFdvcmtlck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNDY3QTY4RDMyNzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2N0E2OEQ0Mjc1RUE5OEIwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJU
aHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFkLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2N0E2OEQ1Mjc1RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2N0E2OEQ2Mjc1RUE5OEMwMDlCMzFD
NSAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3Jr
ZXJUaHJlYWRQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTI1NCw2ICs5
MjU5LDEyIEBACiAJCTQ2ODNERjNFMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xv
YmFsU2NvcGVCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2hhZG93
UmVhbG1HbG9iYWxTY29wZUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4
OEVFM0EyNkREMjYwQzAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDcm9zc09yaWdpbk1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4QjhC
REUyNUNDODQ5MzAwRjY3ODIyIC8qIEpTQmFzZUF1ZGlvQ29udGV4dEN1c3RvbS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0Jhc2VBdWRpb0NvbnRleHRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0Njk0M0RDMjI3NjNGODBDMDA0QjYxMEUgLyogU2hhcmVkV29ya2Vy
UHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyUHJvdmlkZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RDNDI3NjNGODBEMDA0QjYxMEUg
LyogU2hhcmVkV29ya2VyUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyUHJv
dmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQzUyNzYzRjgwRDAw
NEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0Njk0M0RDNjI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2
MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0Njk4NUYyMjI3QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlcktleS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NjlDQ0NGQTI2OUQwMjAyMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hh
bm5lbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCcm9hZGNhc3RDaGFubmVsLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5Q0NDRkMyNjlEMDIwMjAwNkUwMzE0IC8qIEJyb2Fk
Y2FzdENoYW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnJvYWRjYXN0Q2hhbm5lbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlDQ0NGRDI2OUQwMjAzMDA2RTAzMTQgLyogQnJvYWRj
YXN0Q2hhbm5lbC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gQnJvYWRjYXN0Q2hhbm5lbC5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC05Mjk0LDYgKzkzMDUsOCBAQAogCQk0NkM4M0VGQzFBOUJCRTI5MDBB
NzlBNDEgLyogR2VvTm90aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R2VvTm90aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDQTlDNDExRjk3
QkJFNzAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBWaXNpYmlsaXR5U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDZDQTlDNDIxRjk3QkJFNzAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gVmlzaWJpbGl0eVN0YXRlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDZDRjUwNDgyN0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2Q0Y1MDQ5MjdBQjFFQTEwMDcwREJDOCAv
KiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2RDAwMDNDMjZBMEZFNkYwMEQxQkYxRSAvKiBTdWJtaXRFdmVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdWJtaXRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2RDAwMDNFMjZBMEZFNkYwMEQxQkYxRSAvKiBTdWJtaXRFdmVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdWJtaXRFdmVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkQwMDAzRjI2QTBGRTcwMDBEMUJGMUUgLyogU3VibWl0
RXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFN1Ym1pdEV2ZW50LmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNTU1LDYgKzIxNTY4LDggQEAKIAkJNDY0N0NFNjEy
N0FBRTFEQTAwOUNCRDQ4IC8qIGNvbnRleHQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTQ2Q0Y1MDQ5MjdBQjFFQTEwMDcwREJDOCAvKiBTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlci5jcHAgKi8sCisJCQkJNDZDRjUwNDgyN0FCMUVBMTAwNzBEQkM4IC8q
IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggKi8sCiAJCQkJNDY3QTY4RDAyNzVFQTk4OTAw
OUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5jcHAgKi8sCiAJCQkJNDY3QTY4RDQyNzVFQTk4
QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5oICovLAogCQkJCTQ2N0E2OENGMjc1RUE5
ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAgKi8sCkBAIC0yMTU3Myw4
ICsyMTU4OCwxMyBAQAogCQkJCTQ2Njk0Q0U0Mjc1OTQ0OEUwMEUzMTUwRSAvKiBTaGFyZWRXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAgKi8sCiAJCQkJNDY2OTRDRTEyNzU5NDQ4QzAwRTMxNTBFIC8qIFNo
YXJlZFdvcmtlckdsb2JhbFNjb3BlLmggKi8sCiAJCQkJNDY2OTRDRTAyNzU5NDQ4QzAwRTMxNTBF
IC8qIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmlkbCAqLywKLQkJCQk0NjdBNjhEMzI3NUVBOThC
MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5jcHAgKi8sCi0JCQkJNDY3QTY4RDIyNzVF
QTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCAqLywKKwkJCQk0NjI3RkY1QTI3
OUI4N0EyMDBBQTM5MTYgLyogU2hhcmVkV29ya2VySWRlbnRpZmllci5oICovLAorCQkJCTQ2OTg1
RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCAqLywKKwkJCQk0Njk0M0RD
NjI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgKi8s
CisJCQkJNDY5NDNEQzUyNzYzRjgwRDAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24uaCAqLywKKwkJCQk0Njk0M0RDNzI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllci5oICovLAorCQkJCTQ2OTQzREMyMjc2M0Y4MEMwMDRCNjEwRSAvKiBT
aGFyZWRXb3JrZXJQcm92aWRlci5jcHAgKi8sCisJCQkJNDY5NDNEQzQyNzYzRjgwRDAwNEI2MTBF
IC8qIFNoYXJlZFdvcmtlclByb3ZpZGVyLmggKi8sCiAJCQkJNDY3QTY4RDEyNzVFQTk4QTAwOUIz
MUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAgKi8sCiAJCQkJNDY3QTY4RDUyNzVF
QTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oICovLAogCQkJKTsKQEAg
LTMzODgwLDYgKzMzOTAwLDcgQEAKIAkJCQkyRDQ4MUYwMjE0NkI1QzU1MDBBQTc4MzQgLyogQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQzQxNjEyMEY2NTYy
RkQwMDkyRDJGQiAvKiBDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ2NzJBQTk4MjZCMDk0MzMwMEU2RUMzOCAvKiBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5
LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkE3OEIzNDI3OTlCRDcxMDAxMTU0RkUgLyogV29ya2Vy
T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY4OEVFM0MyNkREMjYxMDAwMkFGNUM0IC8q
IENyb3NzT3JpZ2luTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY3MkFBOTkyNkIwOTQzRjAw
RTZFQzM4IC8qIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MUFCRTY3QjFEMDU4MERCMDA2RDg2MkQgLyogQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmgg
aW4gSGVhZGVycyAqLywKQEAgLTM0MDY0LDYgKzM0MDg1LDcgQEAKIAkJCQk0QjQzODY1MDIxOUNE
NTYxMDBGOEQzQzUgLyogQ1NTU3R5bGVJbWFnZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
ODBFNkQwQzBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTU3R5bGVSdWxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOEVBODAwNzBBMTk1MTZFMDBBOEVGNUYgLyogQ1NTU3R5bGVTaGVldC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNDZDRjUwNEEyN0FCMUVBNDAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QkFGRDBENjIxOTIxNDZCMDBDMEFCNjQg
LyogQ1NTU3R5bGVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTRERTVDOTIxRDgzMDExRDAw
MTY0RjJBIC8qIENTU1N1cHBvcnRzUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQzU0RDA1
NzE2QTc2NzMxMDA1NzVFNEQgLyogQ1NTU3VwcG9ydHNSdWxlLmggaW4gSGVhZGVycyAqLywKQEAg
LTM1NTMyLDYgKzM1NTU0LDcgQEAKIAkJCQkxQTc1MEQ4RTBBOTBFNTIxMDAwRkYyMTUgLyogSlNO
b2RlSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDlDMkMzMEMxN0I2OUUwMDVDOTBB
MiAvKiBKU05vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDIwQjE4RDE4RTlEMjM3MDA1
QTgwODMgLyogSlNOb2RlTGlzdEN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY5NDNEQzky
NzYzRjgxNzAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTMzNTAzQ0E0MTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwRTJGMzMyNzZCRjY4NTAwODA5MzMzIC8qIEpTTm90aWZp
Y2F0aW9uRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTBFMkYyQjI3NkJDRkU4MDA4
MDkzMzMgLyogSlNOb3RpZmljYXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNjY4Myw2
ICszNjcwNiw3IEBACiAJCQkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2MDQzIC8qIFJlYWRhYmxlU3Ry
ZWFtQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMjlDOUE5MUY1OUM1NkIwMDlENzQw
MyAvKiBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTZFNkZFODFCQkQxMkRGMDAwQTNGNjQgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWls
dGlucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY5NDNEQzgyNzYzRjgxMjAwNEI2MTBFIC8qIFNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMjlDOUFG
MUY1OUNGNUIwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNpbmsuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxMjlDOUFCMUY1OUM1NzMwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNvdXJjZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwM0MxMkIwMjY3NjAwQzFBMzU5IC8qIFJlYWx0aW1lQW5h
bHlzZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzcwNjAsNiArMzcwODQsNyBAQAogCQkJCTBGNjA1
QUVEMTVGOTQ4NDgwMDRERjBDMCAvKiBTY3JvbGxpbmdDb25zdHJhaW50cy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFGNjJFRTgxNERBMjJBNzAwNDE1NTZDIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzkxQTk5MTE2Mjc0NkNCMDAyOTczMzAgLyogU2Nyb2xs
aW5nQ29vcmRpbmF0b3JNYWMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2MjdGRjVCMjc5Qjg3QUYw
MEFBMzkxNiAvKiBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3
MTJEQkE0OTIxRjhBRDgzMDA4RjM2QjIgLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3JUeXBlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNUI0NjY1NjMyNUQxNEMwQTAwMENGRTE0IC8qIFNjcm9sbGluZ0Vm
ZmVjdHNDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk5MDU5QTI2RjZCRTg1MDA1
NEZCRTAgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmggaW4gSGVhZGVycyAqLywKQEAg
LTM3MTg2LDcgKzM3MjExLDYgQEAKIAkJCQk4MzRERkFEMDFGN0RBRTVEMDBDMjcyNUIgLyogU2hh
cmVkU3RyaW5nSGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFQTMwOTlFQjc4QzAwNTZF
NTgxIC8qIFNoYXJlZFRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURDMDRGRTI3QTgzQzkz
MDA4Q0Y5NjggLyogU2hhcmVkVmlkZW9GcmFtZUluZm8uaCBpbiBIZWFkZXJzICovLAotCQkJCTQ2
N0E2OERBMjc1RUE5OUMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0NjdBNjhEODI3NUVBOTk1MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0
TG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjdBNjhENzI3NUVBOTkxMDA5QjMxQzUgLyog
U2hhcmVkV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjdBNjhEOTI3NUVBOTk4
MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCBpbiBIZWFkZXJzICovLApAQCAt
Mzc0MjEsNiArMzc0NDUsNyBAQAogCQkJCUIyMjI3OUMwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdF
bGxpcHNlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5QzgwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR0ZFQmxlbmRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlDQjBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCTQ2OTg1RjIzMjdBNEE2QUQwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyMjI3OUNFMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNvbXBvbmVu
dFRyYW5zZmVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5RDEwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR0ZFQ29tcG9zaXRlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTky
MTMyNzUxMUMwRTZCQjAwNDU2MjM4IC8qIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKQEAgLTM4MDY4LDYgKzM4MDkzLDcgQEAKIAkJCQk4M0FDRDAxMzI1MjI5RTEw
MDAwRDEyNEUgLyogV29ya2xldE9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNEE2QTNB
MjUyNjg0NEEwMDc0N0Y1RCAvKiBXb3JrbGV0UGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODMzQkQ4MTcyNTI0RDRGMjAwNkU3MkIzIC8qIFdvcmtsZXRQZW5kaW5nVGFza3MuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTQ2OTQzRENBMjc2M0Y4MUMwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJQ
cm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMjQwOTlFNjQ5MjAwNTZFNTgxIC8q
IFdyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2
RTZGRTgxQkJEMTJERjAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTlCQUYzQjI0MTJDMUEzOTgwMDAxNEJGMSAvKiBXcml0aW5n
RGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAppbmRl
eCBkYzBmNTA5OGI4N2YuLmZhN2QyMzAyZWMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcu
aApAQCAtMTA5LDYgKzEwOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBNKFNlbGVjdGlv
bikgXAogICAgIE0oU2VydmljZXMpIFwKICAgICBNKFNlcnZpY2VXb3JrZXIpIFwKKyAgICBNKFNo
YXJlZFdvcmtlcikgXAogICAgIE0oU3BlbGxpbmdBbmRHcmFtbWFyKSBcCiAgICAgTShTUUxEYXRh
YmFzZSkgXAogICAgIE0oU3RvcmFnZSkgXApAQCAtMTI2LDYgKzEyNyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBNKFdlYkdMKSBcCiAgICAgTShXZWJSVEMpIFwKICAgICBNKFdlYlJUQ1N0
YXRzKSBcCisgICAgTShXb3JrZXIpIFwKICAgICBNKFhSKSBcCiAgICAgTShXaGVlbEV2ZW50VGVz
dE1vbml0b3IpIFwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlci5jcHAKaW5kZXggZmU5NGZkZDhhNTE1Li40NmRjNDU0ZGZkYTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxMyArMjYsMTcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKIAorI2luY2x1
ZGUgIkNsaWVudE9yaWdpbi5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZXNzYWdlQ2hhbm5lbC5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VQb3J0LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyTWFuYWdlci5oIgotI2luY2x1ZGUgIlNo
YXJlZFdvcmtlclRocmVhZFByb3h5LmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbi5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb3ZpZGVyLmgiCiAjaW5jbHVkZSAi
V29ya2VyT3B0aW9ucy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXJzRmFj
dG9yeS5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC00MSw4ICs0NSwz
MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChT
aGFyZWRXb3JrZXIpOwogCi1FeGNlcHRpb25PcjxSZWY8U2hhcmVkV29ya2VyPj4gU2hhcmVkV29y
a2VyOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1l
RmxhZ3MsIFN0cmluZyYmIHNjcmlwdFVSTFN0cmluZywgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlh
bnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4mJiBtYXliZU9wdGlvbnMpCisjZGVmaW5lIFNIQVJF
RF9XT1JLRVJfUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwg
IiVwIC0gW2lkZW50aWZpZXI9JXtwdWJsaWN9c10gU2hhcmVkV29ya2VyOjoiIGZtdCwgdGhpcywg
bV9pZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgIyNfX1ZBX0FSR1NfXykKKyNk
ZWZpbmUgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9M
T0dfRVJST1IoU2hhcmVkV29ya2VyLCAiJXAgLSBbaWRlbnRpZmllcj0le3B1YmxpY31zXSBTaGFy
ZWRXb3JrZXI6OiIgZm10LCB0aGlzLCBtX2lkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0
YSgpLCAjI19fVkFfQVJHU19fKQorCitzdGF0aWMgSGFzaE1hcDxTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLCBTaGFyZWRXb3JrZXIqPiYgYWxsU2hhcmVkV29ya2VycygpCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxT
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBTaGFyZWRXb3JrZXIqPj4gYWxsU2hhcmVkV29y
a2VyczsKKyAgICByZXR1cm4gYWxsU2hhcmVkV29ya2VyczsKK30KKworU2hhcmVkV29ya2VyKiBT
aGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVyKFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIg
aWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gYWxsU2hhcmVkV29ya2VycygpLmdldChpZGVudGlm
aWVyKTsKK30KKworc3RhdGljIGlubGluZSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKiBt
YWluVGhyZWFkQ29ubmVjdGlvbigpCit7CisgICAgcmV0dXJuIFNoYXJlZFdvcmtlclByb3ZpZGVy
OjpzaW5nbGV0b24oKS5zaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7Cit9CisKK0V4Y2VwdGlvbk9y
PFJlZjxTaGFyZWRXb3JrZXI+PiBTaGFyZWRXb3JrZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1l
bnQsIFN0cmluZyYmIHNjcmlwdFVSTFN0cmluZywgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8
U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4mJiBtYXliZU9wdGlvbnMpCiB7CisgICAgaWYgKCFtYWlu
VGhyZWFkQ29ubmVjdGlvbigpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9y
dGVkRXJyb3IsICJTaGFyZWQgd29ya2VycyBhcmUgbm90IHN1cHBvcnRlZCIgfTsKKwogICAgIGlm
ICghZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3NTaGFyZWRXb3JrZXJzKGRvY3Vt
ZW50LnRvcE9yaWdpbigpKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJy
b3IsICJUaGlzIGlmcmFtZSBkb2Vzbid0IGhhdmUgc3RvcmFnZSBhY2Nlc3MiX3MgfTsKIApAQCAt
NjcsMjYgKzk0LDM0IEBAIEV4Y2VwdGlvbk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBTaGFyZWRXb3Jr
ZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIEpTQzo6UnVuCiAgICAgYXV0byBjaGFubmVs
ID0gTWVzc2FnZUNoYW5uZWw6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgYXV0byB0cmFuc2ZlcnJl
ZFBvcnQgPSBjaGFubmVsLT5wb3J0MigpLmRpc2VudGFuZ2xlKCk7CiAKLSAgICBhdXRvIHNoYXJl
ZFdvcmtlciA9IGFkb3B0UmVmKCpuZXcgU2hhcmVkV29ya2VyKGRvY3VtZW50LCBjaGFubmVsLT5w
b3J0MSgpLCBydW50aW1lRmxhZ3MpKTsKKyAgICBhdXRvIHNoYXJlZFdvcmtlciA9IGFkb3B0UmVm
KCpuZXcgU2hhcmVkV29ya2VyKGRvY3VtZW50LCB1cmwsIGNoYW5uZWwtPnBvcnQxKCkpKTsKICAg
ICBzaGFyZWRXb3JrZXItPnN1c3BlbmRJZk5lZWRlZCgpOwogCi0gICAgU2hhcmVkV29ya2VyTWFu
YWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdCh1cmwsIHNoYXJlZFdvcmtlci5nZXQoKSwgV1RGTW92
ZSh0cmFuc2ZlcnJlZFBvcnQpLCBXVEZNb3ZlKG9wdGlvbnMpKTsKKyAgICBDbGllbnRPcmlnaW4g
Y2xpZW50T3JpZ2luIHsgZG9jdW1lbnQudG9wRG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLmRh
dGEoKSwgZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkgfTsKKyAgICBtYWluVGhyZWFk
Q29ubmVjdGlvbigpLT5yZXF1ZXN0U2hhcmVkV29ya2VyKGNsaWVudE9yaWdpbiwgc2hhcmVkV29y
a2VyLT5pZGVudGlmaWVyKCksIHVybCwgV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBvcHRpb25z
KTsKICAgICByZXR1cm4gc2hhcmVkV29ya2VyOwogfQogCi1TaGFyZWRXb3JrZXI6OlNoYXJlZFdv
cmtlcihEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxNZXNzYWdlUG9ydD4mJiBwb3J0LCBKU0M6OlJ1
bnRpbWVGbGFncyBydW50aW1lRmxhZ3MpCitTaGFyZWRXb3JrZXI6OlNoYXJlZFdvcmtlcihEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBSZWY8TWVzc2FnZVBvcnQ+JiYgcG9ydCkK
ICAgICA6IEFjdGl2ZURPTU9iamVjdCgmZG9jdW1lbnQpCisgICAgLCBtX2lkZW50aWZpZXIoU2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKICAgICAsIG1fcG9ydChXVEZN
b3ZlKHBvcnQpKQogICAgICwgbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yKCJTaGFyZWRXb3JrZXI6
IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCkpCi0g
ICAgLCBtX3J1bnRpbWVGbGFncyhydW50aW1lRmxhZ3MpCi0gICAgLCBtX2NyZWF0aW9uVGltZShN
b25vdG9uaWNUaW1lOjpub3coKSkKLSAgICAsIG1fcHJveHkoU2hhcmVkV29ya2VyVGhyZWFkUHJv
eHk6OmNyZWF0ZSgqdGhpcykpCiB7CisgICAgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRygiU2hh
cmVkV29ya2VyOiIpOworICAgIGFsbFNoYXJlZFdvcmtlcnMoKS5hZGQobV9pZGVudGlmaWVyLCB0
aGlzKTsKKworICAgIC8vIElmIHRoZSBzaGFyZWQgd29ya2VyIFVSTCBpcyBhIGJsb2IgVVJMLCBt
YWtlIHN1cmUgdG8ga2VlcCBpdCBhbGl2ZSB1bnRpbCB0aGUgd29ya2VyIGhhcyBmaW5pc2hlZCBs
b2FkaW5nLgorICAgIGlmICh1cmwucHJvdG9jb2xJc0Jsb2IoKSkKKyAgICAgICAgbV9ibG9iVVJM
RXh0ZW5zaW9uID0gdXJsOwogfQogCiBTaGFyZWRXb3JrZXI6On5TaGFyZWRXb3JrZXIoKQogewot
ICAgIG1fcHJveHkud29ya2VyT2JqZWN0RGVzdHJveWVkKCk7CisgICAgQVNTRVJUKGFsbFNoYXJl
ZFdvcmtlcnMoKS5nZXQobV9pZGVudGlmaWVyKSA9PSB0aGlzKTsKKyAgICBTSEFSRURfV09SS0VS
X1JFTEVBU0VfTE9HKCJ+U2hhcmVkV29ya2VyOiIpOworICAgIGFsbFNoYXJlZFdvcmtlcnMoKS5y
ZW1vdmUobV9pZGVudGlmaWVyKTsKKyAgICBBU1NFUlQoIW1faXNBY3RpdmUpOwogfQogCiBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBTaGFyZWRXb3JrZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdApAQCAtMTA0LDE5ICsxMzksMjkgQEAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgU2hhcmVk
V29ya2VyOjpldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0CiAgICAgcmV0dXJuIFNoYXJlZFdv
cmtlckV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXI6OnN0
b3AoKQordm9pZCBTaGFyZWRXb3JrZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgUmVzb3VyY2VF
cnJvciYgZXJyb3IpCiB7Ci0gICAgdGVybWluYXRlKCk7CisgICAgU0hBUkVEX1dPUktFUl9SRUxF
QVNFX0xPRygiZmluaXNoTG9hZGluZzogc3VjY2Vzcz0lZCIsIGVycm9yLmlzTnVsbCgpKTsKKyAg
ICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CisgICAgICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVu
dCgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6WWVzKSk7CisgICAgICAgIG1faXNBY3RpdmUgPSBmYWxzZTsKKyAgICB9CisgICAgbV9i
bG9iVVJMRXh0ZW5zaW9uLmNsZWFyKCk7CiB9CiAKIGJvb2wgU2hhcmVkV29ya2VyOjp2aXJ0dWFs
SGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcm94eS5oYXNQZW5k
aW5nQWN0aXZpdHkoKSB8fCBtX2lzTG9hZGluZzsKKyAgICByZXR1cm4gbV9pc0FjdGl2ZTsKIH0K
IAotdm9pZCBTaGFyZWRXb3JrZXI6OnRlcm1pbmF0ZSgpCit2b2lkIFNoYXJlZFdvcmtlcjo6c3Rv
cCgpCiB7Ci0gICAgbV9wcm94eS50ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpOworICAgIFNI
QVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coInN0b3A6Iik7CisgICAgbV9pc0FjdGl2ZSA9IGZhbHNl
OworICAgIG1haW5UaHJlYWRDb25uZWN0aW9uKCktPnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdB
d2F5KG1faWRlbnRpZmllcik7CiB9CiAKKyN1bmRlZiBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9H
CisjdW5kZWYgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPR19FUlJPUgorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5o
CmluZGV4IGU1NWIxY2Y1NTEzZC4uYmU1Nzc4MzVhMDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNywzOSArMjcsMzYgQEAKIAogI2luY2x1ZGUg
IkFic3RyYWN0V29ya2VyLmgiCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0jaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvUnVudGltZUZsYWdzLmg+CisjaW5jbHVkZSAiQmxvYlVSTC5oIgor
I2luY2x1ZGUgIlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYv
TW9ub3RvbmljVGltZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lc3NhZ2VQ
b3J0OwotY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk7CitjbGFzcyBSZXNvdXJjZUVycm9y
OwogCiBzdHJ1Y3QgV29ya2VyT3B0aW9uczsKIAogY2xhc3MgU2hhcmVkV29ya2VyIGZpbmFsIDog
cHVibGljIEFic3RyYWN0V29ya2VyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEKFNoYXJlZFdvcmtlcik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEV4
Y2VwdGlvbk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBjcmVhdGUoRG9jdW1lbnQmLCBKU0M6OlJ1bnRp
bWVGbGFncywgU3RyaW5nJiYgc2NyaXB0VVJMLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxT
dHJpbmcsIFdvcmtlck9wdGlvbnM+PiYmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFNo
YXJlZFdvcmtlcj4+IGNyZWF0ZShEb2N1bWVudCYsIFN0cmluZyYmIHNjcmlwdFVSTCwgc3RkOjpv
cHRpb25hbDxzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4mJik7CiAgICAgflNo
YXJlZFdvcmtlcigpOwogCisgICAgc3RhdGljIFNoYXJlZFdvcmtlciogZnJvbUlkZW50aWZpZXIo
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgU2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAg
TWVzc2FnZVBvcnQmIHBvcnQoKSBjb25zdCB7IHJldHVybiBtX3BvcnQuZ2V0KCk7IH0KLSAgICBK
U0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MoKSB7IHJldHVybiBtX3J1bnRpbWVGbGFnczsg
fQogCiAgICAgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyRm9ySW5zcGVjdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yOyB9Ci0gICAgTW9ub3RvbmljVGltZSBjcmVh
dGlvblRpbWUoKSBjb25zdCB7IHJldHVybiBtX2NyZWF0aW9uVGltZTsgfQogCi0gICAgU2hhcmVk
V29ya2VyVGhyZWFkUHJveHkmIHByb3h5KCkgeyByZXR1cm4gbV9wcm94eTsgfQotCi0gICAgdm9p
ZCBzZXRJc0xvYWRpbmcoYm9vbCBpc0xvYWRpbmcpIHsgbV9pc0xvYWRpbmcgPSBpc0xvYWRpbmc7
IH0KKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAg
ICAgLy8gRXZlbnRUYXJnZXQuCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsOwogCiBwcml2YXRlOgotICAgIFNoYXJlZFdvcmtl
cihEb2N1bWVudCYsIFJlZjxNZXNzYWdlUG9ydD4mJiwgSlNDOjpSdW50aW1lRmxhZ3MpOwotCi0g
ICAgdm9pZCB0ZXJtaW5hdGUoKTsKKyAgICBTaGFyZWRXb3JrZXIoRG9jdW1lbnQmLCBjb25zdCBV
UkwmLCBSZWY8TWVzc2FnZVBvcnQ+JiYpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQuCiAgICAgRXZl
bnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbDsKQEAg
LTcwLDEyICs2NywxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgdmlydHVhbEhhc1BlbmRpbmdBY3Rp
dml0eSgpIGNvbnN0IGZpbmFsOwogCiAKKyAgICBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
IG1faWRlbnRpZmllcjsKICAgICBSZWY8TWVzc2FnZVBvcnQ+IG1fcG9ydDsKICAgICBTdHJpbmcg
bV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yOwotICAgIEpTQzo6UnVudGltZUZsYWdzIG1fcnVudGlt
ZUZsYWdzOwotICAgIE1vbm90b25pY1RpbWUgbV9jcmVhdGlvblRpbWU7Ci0gICAgU2hhcmVkV29y
a2VyVGhyZWFkUHJveHkmIG1fcHJveHk7IC8vIFRoZSBwcm94eSBvdXRsaXZlcyB0aGUgd29ya2Vy
IHRvIHBlcmZvcm0gdGhyZWFkIHNodXRkb3duLgotICAgIGJvb2wgbV9pc0xvYWRpbmcgeyBmYWxz
ZSB9OworICAgIEJsb2JVUkxIYW5kbGUgbV9ibG9iVVJMRXh0ZW5zaW9uOworICAgIGJvb2wgbV9p
c0FjdGl2ZSB7IHRydWUgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaWRsCmluZGV4IGIxNzFjOWVk
ZjgxYi4uNGM3NDE1NGQ4MjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlci5pZGwKQEAgLTI4LDcgKzI4LDcgQEAKICAgICBFeHBvc2VkPVdpbmRvdwog
XQogaW50ZXJmYWNlIFNoYXJlZFdvcmtlciA6IEV2ZW50VGFyZ2V0IHsKLSAgW0NhbGxXaXRoPURv
Y3VtZW50JlJ1bnRpbWVGbGFnc10gY29uc3RydWN0b3IoVVNWU3RyaW5nIHNjcmlwdFVSTCwgb3B0
aW9uYWwgKERPTVN0cmluZyBvciBXb3JrZXJPcHRpb25zKSBvcHRpb25zKTsKKyAgW0NhbGxXaXRo
PURvY3VtZW50XSBjb25zdHJ1Y3RvcihVU1ZTdHJpbmcgc2NyaXB0VVJMLCBvcHRpb25hbCAoRE9N
U3RyaW5nIG9yIFdvcmtlck9wdGlvbnMpIG9wdGlvbnMpOwogCiAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBNZXNzYWdlUG9ydCBwb3J0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA0MTIxZWI1OGMy
MDUuLjNjNTVhNjg3YmY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNiwxMiBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgiCiAK
KyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUg
Ik1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2lu
Y2x1ZGUgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgiCisjaW5jbHVkZSAiU2hhcmVkV29y
a2VyVGhyZWFkLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8d3RmL0lz
b01hbGxvY0lubGluZXMuaD4KIApAQCAtMzMsMTcgKzM5LDQ0IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFNoYXJlZFdvcmtlckdsb2JhbFNjb3Bl
KTsKIAorI2RlZmluZSBTQ09QRV9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hh
cmVkV29ya2VyLCAiJXAgLSBbc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gU2hh
cmVkV29ya2VyR2xvYmFsU2NvcGU6OiIgZm10LCB0aGlzLCB0aGlzLT50aHJlYWQoKS5pZGVudGlm
aWVyKCkudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKKwogU2hhcmVkV29ya2VyR2xvYmFsU2Nv
cGU6OlNoYXJlZFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV29y
a2VyUGFyYW1ldGVycyYgcGFyYW1zLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBXb3Jr
ZXJUaHJlYWQmIHRocmVhZCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xp
ZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIq
IHNvY2tldFByb3ZpZGVyKQogICAgIDogV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyVGhyZWFkVHlw
ZTo6U2hhcmVkV29ya2VyLCBwYXJhbXMsIFdURk1vdmUob3JpZ2luKSwgdGhyZWFkLCBXVEZNb3Zl
KHRvcE9yaWdpbiksIGNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIpCiAgICAgLCBtX25h
bWUobmFtZSkKIHsKKyAgICBTQ09QRV9SRUxFQVNFX0xPRygiU2hhcmVkV29ya2VyR2xvYmFsU2Nv
cGU6Iik7CiAgICAgcmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCk7CiAgICAgYXBwbHlDb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMocGFyYW1zLmNvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVycyk7CiB9CiAKK1NoYXJlZFdvcmtlclRocmVhZCYgU2hhcmVkV29ya2Vy
R2xvYmFsU2NvcGU6OnRocmVhZCgpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNoYXJlZFdv
cmtlclRocmVhZCY+KFdvcmtlckdsb2JhbFNjb3BlOjp0aHJlYWQoKSk7Cit9CisKIHZvaWQgU2hh
cmVkV29ya2VyR2xvYmFsU2NvcGU6OmNsb3NlKCkKIHsKKyAgICBTQ09QRV9SRUxFQVNFX0xPRygi
Y2xvc2U6Iik7CiAgICAgdGhyZWFkKCkuc3RvcChudWxscHRyKTsKIH0KIAorLy8gaHR0cHM6Ly9o
dG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvd29ya2Vycy5odG1sI2RvbS1zaGFyZWR3b3Jr
ZXIgc3RlcCAxMS41Cit2b2lkIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0Q29ubmVjdEV2
ZW50KFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiB0cmFuc2ZlcnJlZFBvcnQsIFN0cmluZyYmIHNv
dXJjZU9yaWdpbikKK3sKKyAgICBTQ09QRV9SRUxFQVNFX0xPRygicG9zdENvbm5lY3RFdmVudDoi
KTsKKyAgICBhdXRvIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKCIiKTsKKyAgICBBU1NFUlQoc2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKKyAgICBh
dXRvIHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKnRoaXMsIHsgV1RGTW92ZSh0
cmFuc2ZlcnJlZFBvcnQpIH0pOworICAgIEFTU0VSVChwb3J0cy5zaXplKCkgPT0gMSk7CisgICAg
YXV0byBwb3J0ID0gcG9ydHNbMF07CisgICAgQVNTRVJUKHBvcnQpOworICAgIGF1dG8gZXZlbnQg
PSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgc2VyaWFsaXplZFNjcmlwdFZh
bHVlLnJlbGVhc2VOb25OdWxsKCksIHNvdXJjZU9yaWdpbiwgeyB9LCBwb3J0KTsKKyAgICBldmVu
dC0+aW5pdEV2ZW50KGV2ZW50TmFtZXMoKS5jb25uZWN0RXZlbnQsIGZhbHNlLCBmYWxzZSk7CisK
KyAgICBkaXNwYXRjaEV2ZW50KFdURk1vdmUoZXZlbnQpKTsKK30KKworI3VuZGVmIFNDT1BFX1JF
TEVBU0VfTE9HCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IGYz
Nzc5Yjg0ZDE1MC4uMTVkZGM1MzhkYjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMTEgKzI1LDEzIEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaCIK
ICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2Mu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWQ7CiBz
dHJ1Y3QgV29ya2VyUGFyYW1ldGVyczsKIAogY2xhc3MgU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUg
ZmluYWwgOiBwdWJsaWMgV29ya2VyR2xvYmFsU2NvcGUgewpAQCAtMzksNyArNDEsMTEgQEAgcHVi
bGljOgogCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gVHlwZTo6U2hhcmVk
V29ya2VyOyB9CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1l
OyB9CisgICAgU2hhcmVkV29ya2VyVGhyZWFkJiB0aHJlYWQoKTsKKworICAgIHZvaWQgcG9zdENv
bm5lY3RFdmVudChUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFN0cmluZyYmIHNvdXJjZU9yaWdp
bik7CiAgICAgdm9pZCBjbG9zZSgpOworCiBwcml2YXRlOgogICAgIFNoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIFJlZjxT
ZWN1cml0eU9yaWdpbj4mJiwgV29ya2VyVGhyZWFkJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRv
cE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciop
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44
N2E5NzIxMDQ4NzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIFNoYXJlZFdvcmtlcklkZW50aWZpZXJUeXBlIHsg
fTsKK3VzaW5nIFNoYXJlZFdvcmtlcklkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFNoYXJl
ZFdvcmtlcklkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyS2V5LmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjVmOWU2ZGM5MGJhOQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlcktleS5oCkBA
IC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNs
aWVudE9yaWdpbi5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworc3RydWN0IFNoYXJlZFdvcmtlcktleSB7CisgICAgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
IG9yaWdpbjsKKyAgICBVUkwgdXJsOworICAgIFN0cmluZyBuYW1lOworCisgICAgdW5zaWduZWQg
aGFzaCgpIGNvbnN0OworfTsKKworaW5saW5lIHVuc2lnbmVkIFNoYXJlZFdvcmtlcktleTo6aGFz
aCgpIGNvbnN0Cit7CisgICAgSGFzaGVyIGhhc2hlcjsKKyAgICBhZGQoaGFzaGVyLCBvcmlnaW4u
aGFzaCgpKTsKKyAgICBhZGQoaGFzaGVyLCB1cmwpOworICAgIGFkZChoYXNoZXIsIG5hbWUpOwor
ICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFNoYXJlZFdvcmtlcktleSYgYSwgY29uc3QgU2hhcmVkV29ya2VyS2V5JiBiKQoreworICAg
IHJldHVybiBhLm9yaWdpbiA9PSBiLm9yaWdpbiAmJiBhLnVybCA9PSBiLnVybCAmJiBhLm5hbWUg
PT0gYi5uYW1lOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYg
eworCit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJL
ZXk+IHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJLZXkmIGtleSkKKyAgICB7CisgICAgICAgIHJldHVybiBrZXkuaGFzaCgpOworICAgIH0KKwor
ICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgYSwg
Y29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBiKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGEgPT0gYjsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9F
bXB0eU9yRGVsZXRlZCA9IGZhbHNlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0
czxXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk+IDogR2VuZXJpY0hhc2hUcmFpdHM8V2ViQ29yZTo6
U2hhcmVkV29ya2VyS2V5PiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGVtcHR5VmFsdWVJ
c1plcm8gPSBmYWxzZTsKKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyS2V5JiBzbG90KSB7IG5ldyAoTm90TnVsbCwgJnNsb3QudXJsKSBV
UkwoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpOyB9CisgICAgc3RhdGljIGJvb2wgaXNEZWxl
dGVkVmFsdWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBzbG90KSB7IHJldHVybiBz
bG90LnVybC5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyTWFuYWdlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkNWU2OWNkNzc5
NS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlck1hbmFnZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTIyICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyTWFuYWdl
ci5oIgotCi0jaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCi0jaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgotI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCi0jaW5jbHVkZSAiTWVzc2Fn
ZUV2ZW50LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCi0jaW5jbHVkZSAiU2hh
cmVkV29ya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaCIKLSNpbmNs
dWRlICJTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJU
aHJlYWQuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIgotI2luY2x1ZGUg
IldvcmtlclJ1bkxvb3AuaCIKLSNpbmNsdWRlICJXb3JrZXJTY3JpcHRMb2FkZXIuaCIKLSNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVNoYXJlZFdvcmtlck1hbmFnZXImIFNoYXJlZFdvcmtlck1h
bmFnZXI6OnNpbmdsZXRvbigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYXJlZFdv
cmtlck1hbmFnZXI+IGluc3RhbmNlOwotICAgIHJldHVybiBpbnN0YW5jZS5nZXQoKTsKLX0KLQot
dm9pZCBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpjb25uZWN0KGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRX
b3JrZXImIHdvcmtlciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIG1lc3NhZ2VQb3J0LCBXb3Jr
ZXJPcHRpb25zJiYgb3B0aW9ucykKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwot
ICAgIC8vIEZJWE1FOiBIYW5kbGUgd29ya2VycyBmcm9tIG90aGVyIHByb2Nlc3Nlcywgd2hpY2gg
d2lsbCBwcm9iYWJseSByZXF1aXJlIG1vdmluZyBjb25uZWN0IHRvIHRoZSBGcmFtZUxvYWRlckNs
aWVudCBvciBzb21ldGhpbmcuCi0gICAgLy8gTWF5YmUgc29tZXRoaW5nIG1vcmUgbGlrZSB3aGF0
IFNlcnZpY2VXb3JrZXJzIGRvZXMuCi0KLSAgICAvLyBGSVhNRTogQ2hlY2sgaWYgd2UgYWxyZWFk
eSBtYWRlIGEgdGhyZWFkLgotICAgIC8vIEZJWE1FOiBDaGVjayBpZiB0aGVyZSdzIGFscmVhZHkg
YSBzaGFyZWQgd29ya2VyIGFuZCB1c2UgdGhhdCBpZiB0aGVyZSBpcy4KLQotICAgIGF1dG8gbG9h
ZGVyID0gbWFrZVVuaXF1ZVJlZjxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+KHVybCwgd29ya2Vy
LCBXVEZNb3ZlKG1lc3NhZ2VQb3J0KSwgV1RGTW92ZShvcHRpb25zKSk7Ci0gICAgYXV0byBpZGVu
dGlmaWVyID0gbG9hZGVyLT5pZGVudGlmaWVyKCk7Ci0gICAgbV9sb2FkZXJzLmFkZChpZGVudGlm
aWVyLCBXVEZNb3ZlKGxvYWRlcikpOwotfQotCi12b2lkIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNj
cmlwdExvYWRGYWlsZWQoU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJiBsb2FkZXIpCi17Ci0gICAg
QWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQobG9hZGVyLndvcmtlcigp
LCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmVycm9yRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZ
ZXMpKTsKLSAgICBtX2xvYWRlcnMucmVtb3ZlKGxvYWRlci5pZGVudGlmaWVyKCkpOwotfQotCi12
b2lkIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNjcmlwdExvYWRlZFN1Y2Nlc3NmdWxseShTaGFyZWRX
b3JrZXJTY3JpcHRMb2FkZXImIGxvYWRlciwgY29uc3QgU2NyaXB0QnVmZmVyJiBzY3JpcHRCdWZm
ZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFNoYXJl
ZFdvcmtlciYgc2hhcmVkV29ya2VyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgdHJhbnNmZXJy
ZWRQb3J0KQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgYXV0byYgd29y
a2VyID0gbG9hZGVyLndvcmtlcigpOwotICAgIGF1dG8mIG9wdGlvbnMgPSBsb2FkZXIub3B0aW9u
cygpOwotCi0gICAgYXV0byYgcHJveHkgPSBzaGFyZWRXb3JrZXIucHJveHkoKTsKLQotICAgIHBy
b3h5LnN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoCi0gICAgICAgIGxvYWRlci51cmwoKSwKLSAgICAg
ICAgb3B0aW9ucy5uYW1lLAotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LnVzZXJBZ2Vu
dChsb2FkZXIudXJsKCkpLAotICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3Ry
YXRlZ3koKS0+aXNPbkxpbmUoKSwKLSAgICAgICAgc2NyaXB0QnVmZmVyLAotICAgICAgICBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5yZXNwb25zZUhlYWRl
cnMoKSwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5zaG91bGRCeXBhc3NNYWluV29y
bGRDb250ZW50U2VjdXJpdHlQb2xpY3koKSwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KCksCi0gICAgICAgIHdvcmtlci5jcmVhdGlvblRp
bWUoKSwKLSAgICAgICAgUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nLAotICAgICAgICBvcHRp
b25zLnR5cGUsCi0gICAgICAgIG9wdGlvbnMuY3JlZGVudGlhbHMsCi0gICAgICAgIHdvcmtlci5y
dW50aW1lRmxhZ3MoKQotICAgICk7Ci0gICAgaWYgKCFwcm94eS50aHJlYWQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihp
czxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwotICAgIGF1dG8gc291cmNlT3Jp
Z2luID0gZG93bmNhc3Q8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnNlY3VyaXR5
T3JpZ2luKCkudG9TdHJpbmcoKTsKLQotICAgIHByb3h5LnRocmVhZCgpLT5ydW5Mb29wKCkucG9z
dFRhc2soW3RyYW5zZmVycmVkUG9ydCA9IFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwgc291cmNl
T3JpZ2luID0gV1RGTW92ZShzb3VyY2VPcmlnaW4pLmlzb2xhdGVkQ29weSgpXSAoYXV0byYgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwotCi0gICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVs
dGlwYWdlL3dvcmtlcnMuaHRtbCNkb20tc2hhcmVkd29ya2VyIHN0ZXAgMTEuNQotICAgICAgICBh
dXRvIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
KCIiKTsKLSAgICAgICAgQVNTRVJUKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7Ci0gICAgICAgIGF1
dG8gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCB7IFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSB9KTsKLSAgICAgICAgQVNTRVJUKHBvcnRz
LnNpemUoKSA9PSAxKTsKLSAgICAgICAgYXV0byBwb3J0ID0gcG9ydHNbMF07Ci0gICAgICAgIEFT
U0VSVChwb3J0KTsKLSAgICAgICAgYXV0byBldmVudCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFdU
Rk1vdmUocG9ydHMpLCBzZXJpYWxpemVkU2NyaXB0VmFsdWUucmVsZWFzZU5vbk51bGwoKSwgc291
cmNlT3JpZ2luLCB7IH0sIHBvcnQpOwotICAgICAgICBldmVudC0+aW5pdEV2ZW50KGV2ZW50TmFt
ZXMoKS5jb25uZWN0RXZlbnQsIGZhbHNlLCBmYWxzZSk7Ci0KLSAgICAgICAgUkVMRUFTRV9BU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4o
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwotICAgICAgICBhdXRvJiB3b3JrZXJHbG9iYWxTY29w
ZSA9IGRvd25jYXN0PFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250
ZXh0KTsKLSAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUuZGlzcGF0Y2hFdmVudChXVEZNb3ZlKGV2
ZW50KSk7Ci0gICAgfSk7Ci0KLSAgICBtX2xvYWRlcnMucmVtb3ZlKGxvYWRlci5pZGVudGlmaWVy
KCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2M1MDEwNWY4MDcw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uLmgiCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJFcnJvckV2
ZW50LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNjcmlwdEJ1ZmZlci5oIgor
I2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlclNjcmlwdExv
YWRlci5oIgorI2luY2x1ZGUgIldvcmtlckZldGNoUmVzdWx0LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNF
X0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OiIg
Zm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9H
X0VSUk9SKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICIlcCAtIFNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQor
CitzdGF0aWMgdWludDY0X3QgbG9hZGVySWRlbnRpZmllclNlZWQgPSAwOworCitTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uOjpTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCkgPSBkZWZh
dWx0OworCitTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjp+U2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbigpID0gZGVmYXVsdDsKKwordm9pZCBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uOjpmZXRjaFNjcmlwdEluQ2xpZW50KFVSTCYmIHVybCwgV2ViQ29yZTo6U2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXb3JrZXJPcHRp
b25zJiYgd29ya2VyT3B0aW9ucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXb3JrZXJG
ZXRjaFJlc3VsdCYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisKKyAgICBhdXRvKiB3b3JrZXJPYmplY3QgPSBTaGFyZWRXb3JrZXI6OmZyb21J
ZGVudGlmaWVyKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIENPTk5FQ1RJT05f
UkVMRUFTRV9MT0coImZldGNoU2NyaXB0SW5DbGllbnQ6IHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXI9JXtwdWJsaWN9cywgd29ya2VyPSVwIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHdvcmtlck9iamVjdCk7CisgICAgaWYgKCF3b3Jr
ZXJPYmplY3QpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworCisgICAg
YXV0byBsb2FkZXJJZGVudGlmaWVyID0gKytsb2FkZXJJZGVudGlmaWVyU2VlZDsKKyAgICBhdXRv
IGxvYWRlciA9IG1ha2VVbmlxdWVSZWY8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPihXVEZNb3Zl
KHVybCksICp3b3JrZXJPYmplY3QsIFdURk1vdmUod29ya2VyT3B0aW9ucykpOworICAgIGF1dG8g
bG9hZGVyUHRyID0gbG9hZGVyLnB0cigpOworICAgIG1fbG9hZGVycy5hZGQobG9hZGVySWRlbnRp
ZmllciwgV1RGTW92ZShsb2FkZXIpKTsKKworICAgIGxvYWRlclB0ci0+bG9hZChbdGhpcywgbG9h
ZGVySWRlbnRpZmllciwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmIGZldGNoUmVzdWx0KSBtdXRhYmxlIHsKKyAg
ICAgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiZmV0Y2hTY3JpcHRJbkNsaWVudDogZmluaXNo
ZWQgc2NyaXB0IGxvYWQsIHN1Y2Nlc3M9JWQiLCBmZXRjaFJlc3VsdC5lcnJvci5pc051bGwoKSk7
CisgICAgICAgIGF1dG8gbG9hZGVyID0gbV9sb2FkZXJzLnRha2UobG9hZGVySWRlbnRpZmllcik7
CisgICAgICAgIEFTU0VSVChsb2FkZXIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmZXRj
aFJlc3VsdCk7CisgICAgfSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bjo6bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
YXV0byogd29ya2VyT2JqZWN0ID0gU2hhcmVkV29ya2VyOjpmcm9tSWRlbnRpZmllcihzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9S
KCJub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uOiBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyPSV7cHVibGljfXMsIHdvcmtlcj0lcCwgc3VjY2Vzcz0lZCIsIHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB3b3JrZXJPYmplY3Qs
IGVycm9yLmlzTnVsbCgpKTsKKyAgICBpZiAod29ya2VyT2JqZWN0KQorICAgICAgICB3b3JrZXJP
YmplY3QtPmRpZEZpbmlzaExvYWRpbmcoZXJyb3IpOworfQorCit2b2lkIFNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBh
dXRvKiB3b3JrZXJPYmplY3QgPSBTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVyKHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIpOworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1Io
InBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdDogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
cj0le3B1YmxpY31zLCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRv
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgd29ya2VyT2JqZWN0KTsKKyAgICBpZiAod29ya2VyT2Jq
ZWN0KQorICAgICAgICBBY3RpdmVET01PYmplY3Q6OnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgq
d29ya2VyT2JqZWN0LCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIEVycm9yRXZlbnQ6OmNy
ZWF0ZShlcnJvck1lc3NhZ2UsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB7
IH0pKTsKK30KKworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0cKKyN1bmRlZiBDT05ORUNU
SU9OX1JFTEVBU0VfTE9HX0VSUk9SCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmRi
NWUwYjU5ZDdkZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDYyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cy5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCIKKyNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZXNzYWdlUG9y
dDsKK2NsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjsKKworc3RydWN0IENsaWVudE9yaWdp
bjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKK3N0cnVjdCBXb3JrZXJPcHRpb25zOworCitj
bGFzcyBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8U2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbj4geworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgflNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKTsKKworICAgIHZpcnR1YWwg
dm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0IENsaWVudE9yaWdpbiYsIFNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFVSTCYsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwg
Y29uc3QgV29ya2VyT3B0aW9ucyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2hhcmVkV29ya2Vy
T2JqZWN0SXNHb2luZ0F3YXkoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikgPSAwOworCitw
cm90ZWN0ZWQ6CisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZmV0Y2hTY3JpcHRJbkNsaWVudChVUkwmJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciwgV29ya2VyT3B0aW9ucyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdv
cmtlckZldGNoUmVzdWx0Jik+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5V29y
a2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBw
b3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCk7CisKK3ByaXZhdGU6CisgICAgSGFzaE1hcDx1aW50
NjRfdCwgVW5pcXVlUmVmPFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj4+IG1fbG9hZGVyczsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmViY2Q0YTdhZTg3YQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJQcm9jZXNzUXVhbGlmaWVkLmgiCisjaW5jbHVkZSA8d3RmL09iamVjdElk
ZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIFNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIgPSBQcm9jZXNzUXVhbGlmaWVkPE9iamVjdElkZW50aWZpZXI8U2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllclR5cGU+PjsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmQ4ZTE5N2ZhMjQyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
UHJvdmlkZXIuY3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyUHJvdmlkZXIuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitzdGF0aWMgU2hhcmVkV29ya2VyUHJvdmlkZXIqIHNoYXJlZFByb3ZpZGVyOwor
CisvLyBGb3IgV2ViS2l0TGVnYWN5LgorY2xhc3MgRHVtbXlTaGFyZWRXb3JrZXJQcm92aWRlciBm
aW5hbCA6IHB1YmxpYyBTaGFyZWRXb3JrZXJQcm92aWRlciB7CitwdWJsaWM6CisgICAgU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbiogc2hhcmVkV29ya2VyQ29ubmVjdGlvbigpIGZpbmFsIHsg
cmV0dXJuIG51bGxwdHI7IH0KK307CisKK1NoYXJlZFdvcmtlclByb3ZpZGVyJiBTaGFyZWRXb3Jr
ZXJQcm92aWRlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBpZiAoIXNoYXJlZFByb3ZpZGVyKQorICAg
ICAgICBzaGFyZWRQcm92aWRlciA9IG5ldyBEdW1teVNoYXJlZFdvcmtlclByb3ZpZGVyOworICAg
IHJldHVybiAqc2hhcmVkUHJvdmlkZXI7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyUHJvdmlkZXI6
OnNldFNoYXJlZFByb3ZpZGVyKFNoYXJlZFdvcmtlclByb3ZpZGVyJiBuZXdQcm92aWRlcikKK3sK
KyAgICBSRUxFQVNFX0FTU0VSVCghc2hhcmVkUHJvdmlkZXIpOworICAgIHNoYXJlZFByb3ZpZGVy
ID0gJm5ld1Byb3ZpZGVyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5oCnNpbWls
YXJpdHkgaW5kZXggNjQlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlck1hbmFnZXIuaApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyUHJvdmlkZXIuaAppbmRleCBhZWY4Mjc5MDM1ODQuLmNiNTdjYzFl
N2I1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlclByb3ZpZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI1LDI2ICsyNSwxNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIk1l
c3NhZ2VQb3J0SWRlbnRpZmllci5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlclNjcmlwdExvYWRl
ci5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZFdvcmtlcjsKLWNsYXNz
IFNjcmlwdEJ1ZmZlcjsKLXN0cnVjdCBXb3JrZXJPcHRpb25zOwotdXNpbmcgVHJhbnNmZXJyZWRN
ZXNzYWdlUG9ydCA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIsIFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllcj47CitjbGFzcyBTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uOwogCi1jbGFzcyBTaGFyZWRXb3JrZXJNYW5hZ2VyIHsKK2NsYXNzIFNoYXJlZFdv
cmtlclByb3ZpZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgU2hhcmVkV29ya2VyTWFuYWdlciYg
c2luZ2xldG9uKCk7Ci0gICAgdm9pZCBjb25uZWN0KGNvbnN0IFVSTCYsIFNoYXJlZFdvcmtlciYs
IFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgV29ya2VyT3B0aW9ucyYmKTsKLQotICAgIHZvaWQg
c2NyaXB0TG9hZEZhaWxlZChTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXImKTsKLSAgICB2b2lkIHNj
cmlwdExvYWRlZFN1Y2Nlc3NmdWxseShTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXImLCBjb25zdCBT
Y3JpcHRCdWZmZXImLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgU2hhcmVkV29ya2VyJiwgVHJh
bnNmZXJyZWRNZXNzYWdlUG9ydCYmKTsKKyAgICBzdGF0aWMgU2hhcmVkV29ya2VyUHJvdmlkZXIm
IHNpbmdsZXRvbigpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFNoYXJlZFBy
b3ZpZGVyKFNoYXJlZFdvcmtlclByb3ZpZGVyJik7CiAKLXByaXZhdGU6Ci0gICAgSGFzaE1hcDxT
aGFyZWRXb3JrZXJTY3JpcHRMb2FkZXJJZGVudGlmaWVyLCBVbmlxdWVSZWY8U2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyPj4gbV9sb2FkZXJzOworICAgIHZpcnR1YWwgflNoYXJlZFdvcmtlclByb3Zp
ZGVyKCkgeyB9CisgICAgdmlydHVhbCBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKiBzaGFy
ZWRXb3JrZXJDb25uZWN0aW9uKCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2Ny
aXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
clNjcmlwdExvYWRlci5jcHAKaW5kZXggMzExZWJkNjA3OGJjLi5lYTJlMDQ4Yzc2MjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIx
LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yOSwyMyArMjksMjYgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVk
V29ya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyTWFuYWdlci5oIgorI2luY2x1ZGUgIldv
cmtlckZldGNoUmVzdWx0LmgiCiAjaW5jbHVkZSAiV29ya2VyUnVuTG9vcC5oIgogI2luY2x1ZGUg
IldvcmtlclNjcmlwdExvYWRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZFdv
cmtlclNjcmlwdExvYWRlcjo6U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyKGNvbnN0IFVSTCYgdXJs
LCBTaGFyZWRXb3JrZXImIHdvcmtlciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBvcnQsIFdv
cmtlck9wdGlvbnMmJiBvcHRpb25zKQotICAgIDogbV9pZGVudGlmaWVyKFNoYXJlZFdvcmtlclNj
cmlwdExvYWRlcklkZW50aWZpZXI6OmdlbmVyYXRlKCkpCi0gICAgLCBtX29wdGlvbnMoV1RGTW92
ZShvcHRpb25zKSkKK1NoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hhcmVkV29ya2VyU2NyaXB0
TG9hZGVyKFVSTCYmIHVybCwgU2hhcmVkV29ya2VyJiB3b3JrZXIsIFdvcmtlck9wdGlvbnMmJiBv
cHRpb25zKQorICAgIDogbV9vcHRpb25zKFdURk1vdmUob3B0aW9ucykpCiAgICAgLCBtX3dvcmtl
cih3b3JrZXIpCi0gICAgLCBtX3BvcnQoV1RGTW92ZShwb3J0KSkKICAgICAsIG1fbG9hZGVyKFdv
cmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlKCkpCi0gICAgLCBtX3BlbmRpbmdBY3Rpdml0eSh3b3Jr
ZXIubWFrZVBlbmRpbmdBY3Rpdml0eSh3b3JrZXIpKQotICAgICwgbV91cmwodXJsKQorICAgICwg
bV91cmwoV1RGTW92ZSh1cmwpKQogewotICAgIG1fd29ya2VyLT5zZXRJc0xvYWRpbmcodHJ1ZSk7
Ci0gICAgbV9sb2FkZXItPmxvYWRBc3luY2hyb25vdXNseSgqd29ya2VyLnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgUmVzb3VyY2VSZXF1ZXN0KHVybCksIHdvcmtlci53b3JrZXJGZXRjaE9wdGlv
bnMob3B0aW9ucywgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2hhcmVkd29ya2VyKSwgQ29u
dGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQ6OkVuZm9yY2VXb3JrZXJTcmNEaXJlY3RpdmUs
IFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsLCAqdGhpcywgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1v
ZGUoKSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBBU1NFUlQoIW1fY29tcGxldGlvbkhhbmRsZXIpOworICAgIG1fY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIG1fbG9hZGVy
LT5sb2FkQXN5bmNocm9ub3VzbHkoKm1fd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IFJlc291cmNlUmVxdWVzdChtX3VybCksIG1fd29ya2VyLT53b3JrZXJGZXRjaE9wdGlvbnMobV9v
cHRpb25zLCBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpTaGFyZWR3b3JrZXIpLCBDb250ZW50
U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6RW5mb3JjZVdvcmtlclNyY0RpcmVjdGl2ZSwgU2Vy
dmljZVdvcmtlcnNNb2RlOjpBbGwsICp0aGlzLCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgp
KTsKIH0KIAogdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpCkBAIC01NSwxNiArNTgsMTIgQEAgdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnQKIAogdm9p
ZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKCkKIHsKLSAgICBtX3dv
cmtlci0+c2V0SXNMb2FkaW5nKGZhbHNlKTsKKyAgICBpZiAobV9sb2FkZXItPmZhaWxlZCgpKQor
ICAgICAgICByZXR1cm4gbV9jb21wbGV0aW9uSGFuZGxlcih3b3JrZXJGZXRjaEVycm9yKG1fbG9h
ZGVyLT5lcnJvcigpKSk7CiAKLSAgICBhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbV93
b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAobV9sb2FkZXItPmZhaWxl
ZCgpIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7Ci0gICAgICAgIG1fd29ya2VyLT5kaXNw
YXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2ZW50OjpD
YW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKLSAgICAgICAgU2hhcmVk
V29ya2VyTWFuYWdlcjo6c2luZ2xldG9uKCkuc2NyaXB0TG9hZEZhaWxlZCgqdGhpcyk7IC8vIGRl
bGV0ZXMgdGhpcy4KLSAgICB9IGVsc2UgeworICAgIGlmIChhdXRvKiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0ID0gbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZCgqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgbV9sb2FkZXItPmlkZW50aWZpZXIoKSwgbV9sb2FkZXItPnNjcmlwdCgpLnRvU3RyaW5n
KCkpOwotICAgICAgICBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5zY3JpcHRMb2Fk
ZWRTdWNjZXNzZnVsbHkoKnRoaXMsIG1fbG9hZGVyLT5zY3JpcHQoKSwgKm1fd29ya2VyLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIG1fd29ya2VyLmdldCgpLCBzdGQ6OmV4Y2hhbmdlKG1fcG9y
dCwgeyB9KSk7IC8vIGRlbGV0ZXMgdGhpcy4KLSAgICB9CisgICAgbV9jb21wbGV0aW9uSGFuZGxl
cih7IG1fbG9hZGVyLT5zY3JpcHQoKSwgbV9sb2FkZXItPmNlcnRpZmljYXRlSW5mbygpLCBtX2xv
YWRlci0+Y29udGVudFNlY3VyaXR5UG9saWN5KCksIG1fbG9hZGVyLT5jcm9zc09yaWdpbkVtYmVk
ZGVyUG9saWN5KCksIG1fbG9hZGVyLT5yZWZlcnJlclBvbGljeSgpLCB7IH0gfSk7IC8vIGRlbGV0
ZXMgdGhpcy4KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaAppbmRl
eCBiZjFkNGFlZjNhMDkuLmViMGI3MTQ1YmZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsNyArMjUs
NiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2lu
Y2x1ZGUgIk1lc3NhZ2VQb3J0SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVy
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKQEAgLTM4LDMzICsz
NywyOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNoYXJlZFdvcmtlcjsKIGNsYXNz
IFdvcmtlclNjcmlwdExvYWRlcjsKLQotY2xhc3MgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOwot
dXNpbmcgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmllciA9IE9iamVjdElkZW50aWZp
ZXI8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPjsKLQotdXNpbmcgVHJhbnNmZXJyZWRNZXNzYWdl
UG9ydCA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIsIFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0SWRlbnRpZmllcj47CitzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7CiAKIGNs
YXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciA6IHByaXZhdGUgV29ya2VyU2NyaXB0TG9hZGVy
Q2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBTaGFy
ZWRXb3JrZXJTY3JpcHRMb2FkZXIoY29uc3QgVVJMJiwgU2hhcmVkV29ya2VyJiwgVHJhbnNmZXJy
ZWRNZXNzYWdlUG9ydCYmLCBXb3JrZXJPcHRpb25zJiYpOworICAgIFNoYXJlZFdvcmtlclNjcmlw
dExvYWRlcihVUkwmJiwgU2hhcmVkV29ya2VyJiwgV29ya2VyT3B0aW9ucyYmKTsKKworICAgIHZv
aWQgbG9hZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdvcmtlckZldGNoUmVzdWx0Jik+
JiYpOwogCi0gICAgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgY29uc3QgVVJMJiB1cmwoKSBj
b25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIFNoYXJlZFdvcmtlciYgd29ya2VyKCkgeyByZXR1
cm4gbV93b3JrZXIuZ2V0KCk7IH0KLSAgICBjb25zdCBXb3JrZXJPcHRpb25zJiBvcHRpb25zKCkg
eyByZXR1cm4gbV9vcHRpb25zOyB9CisgICAgY29uc3QgV29ya2VyT3B0aW9ucyYgb3B0aW9ucygp
IGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9uczsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoKSBmaW5hbDsKIAotICAgIGNv
bnN0IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAg
IGNvbnN0IFdvcmtlck9wdGlvbnMgbV9vcHRpb25zOwogICAgIGNvbnN0IFJlZjxTaGFyZWRXb3Jr
ZXI+IG1fd29ya2VyOwotICAgIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQgbV9wb3J0OwogICAgIGNv
bnN0IFJlZjxXb3JrZXJTY3JpcHRMb2FkZXI+IG1fbG9hZGVyOwotICAgIGNvbnN0IFJlZjxBY3Rp
dmVET01PYmplY3Q6OlBlbmRpbmdBY3Rpdml0eTxTaGFyZWRXb3JrZXI+PiBtX3BlbmRpbmdBY3Rp
dml0eTsKICAgICBjb25zdCBVUkwgbV91cmw7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBXb3JrZXJGZXRjaFJlc3VsdCYpPiBtX2NvbXBsZXRpb25IYW5kbGVyOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjA3YTkwZDk4MDUxMgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQv
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlciYgU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyPiBzaGFyZWRNYW5hZ2VyOworICAgIHJldHVybiBz
aGFyZWRNYW5hZ2VyOworfQorCitTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSogU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXI6OnNoYXJlZFdvcmtlcihTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJl
ZFdvcmtlcklkZW50aWZpZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd29ya2VyTWFwLmdldChz
aGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlcjo6c3RvcFNoYXJlZFdvcmtlcihTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtl
cklkZW50aWZpZXIpCit7CisgICAgYXV0byB3b3JrZXIgPSBtX3dvcmtlck1hcC50YWtlKHNoYXJl
ZFdvcmtlcklkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzdG9wU2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVu
dGlmaWVyPSUiIFBSSXU2NCAiLCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRv
VUludDY0KCksIHdvcmtlci5nZXQoKSk7CisgICAgaWYgKCF3b3JrZXIpCisgICAgICAgIHJldHVy
bjsKKworICAgIHdvcmtlci0+c2V0QXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCgpOworCisgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGRlYWwgd2l0aCB0aGUgdGhyZWFkIGJlaW5n
IHVucmVzcG9uc2l2ZSBoZXJlLgorCisgICAgYXV0byYgdGhyZWFkID0gd29ya2VyLT50aHJlYWQo
KTsKKyAgICB0aHJlYWQuc3RvcChbd29ya2VyID0gV1RGTW92ZSh3b3JrZXIpXSgpIG11dGFibGUg
eworICAgICAgICAvLyBTcGluIHRoZSBydW5sb29wIGJlZm9yZSByZWxlYXNpbmcgdGhlIHNoYXJl
ZCB3b3JrZXIgdGhyZWFkIHByb3h5LCBhcyB0aGVyZSB3b3VsZCBvdGhlcndpc2UgYmUKKyAgICAg
ICAgLy8gYSByYWNlIHRvd2FyZHMgaXRzIGRlc3RydWN0aW9uLgorICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFt3b3JrZXIgPSBXVEZNb3ZlKHdvcmtlcildIHsgfSk7CisgICAgfSk7Cit9CisKK3Zv
aWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0b3BBbGxTaGFyZWRXb3JrZXJzKCkKK3sK
KyAgICB3aGlsZSAoIW1fd29ya2VyTWFwLmlzRW1wdHkoKSkKKyAgICAgICAgc3RvcFNoYXJlZFdv
cmtlcihtX3dvcmtlck1hcC5iZWdpbigpLT5rZXkpOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyOjpzZXRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYm
IGNvbm5lY3Rpb24pCit7CisgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24gfHwgbV9jb25uZWN0aW9u
LT5pc0Nsb3NlZCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24gPSBXVEZNb3ZlKGNvbm5lY3Rpb24pOwor
fQorCithdXRvIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpjb25uZWN0aW9uKCkgY29uc3Qg
LT4gQ29ubmVjdGlvbioKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOworfQorCit2
b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpyZWdpc3RlclNoYXJlZFdvcmtlclRocmVh
ZChSZWY8U2hhcmVkV29ya2VyVGhyZWFkUHJveHk+JiYgcHJveHkpCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlcjo6cmVnaXN0ZXJTaGFyZWRXb3JrZXJUaHJlYWQ6IHNoYXJlZFdvcmtl
cklkZW50aWZpZXI9JSIgUFJJdTY0LCBwcm94eS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOwor
CisgICAgYXV0byByZXN1bHQgPSBtX3dvcmtlck1hcC5hZGQocHJveHktPmlkZW50aWZpZXIoKSwg
cHJveHkuY29weVJlZigpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3
RW50cnkpOworCisgICAgcHJveHktPnRocmVhZCgpLnN0YXJ0KFtdKGNvbnN0IFN0cmluZyYgLypl
eGNlcHRpb25NZXNzYWdlKi8pIHsgfSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXI6OkNvbm5lY3Rpb246OnBvc3RDb25uZWN0RXZlbnQoU2hhcmVkV29ya2VySWRlbnRpZmll
ciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgdHJhbnNm
ZXJyZWRQb3J0LCBTdHJpbmcmJiBzb3VyY2VPcmlnaW4pCit7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBhdXRvKiBwcm94eSA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpz
aW5nbGV0b24oKS5zaGFyZWRXb3JrZXIoc2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgUkVM
RUFTRV9MT0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNvbm5l
Y3Rpb246OnBvc3RDb25uZWN0RXZlbnQ6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0
ICIsIHByb3h5PSVwIiwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpLCBwcm94eSk7
CisgICAgaWYgKCFwcm94eSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJveHktPnRocmVhZCgp
LnJ1bkxvb3AoKS5wb3N0VGFzayhbdHJhbnNmZXJyZWRQb3J0ID0gV1RGTW92ZSh0cmFuc2ZlcnJl
ZFBvcnQpLCBzb3VyY2VPcmlnaW4gPSBXVEZNb3ZlKHNvdXJjZU9yaWdpbikuaXNvbGF0ZWRDb3B5
KCldIChhdXRvJiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgQVNT
RVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgICAgIGRvd25jYXN0PFNoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5wb3N0Q29ubmVjdEV2ZW50KFdURk1vdmUo
dHJhbnNmZXJyZWRQb3J0KSwgV1RGTW92ZShzb3VyY2VPcmlnaW4pKTsKKyAgICB9KTsKK30KKwor
dm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6dGVybWluYXRlU2hh
cmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdv
cmtlciwgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uOjp0ZXJtaW5hdGVT
aGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5zdG9wU2hhcmVkV29ya2VyKHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wNDc5MzdjOTFl
NmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250
ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMu
aCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eTsKKworY2xhc3MgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIgeworcHVibGljOgor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlciYgc2lu
Z2xldG9uKCk7CisKKyAgICBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSogc2hhcmVkV29ya2VyKFNo
YXJlZFdvcmtlcklkZW50aWZpZXIpIGNvbnN0OworICAgIHZvaWQgc3RvcFNoYXJlZFdvcmtlcihT
aGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BBbGxT
aGFyZWRXb3JrZXJzKCk7CisKKyAgICBjbGFzcyBDb25uZWN0aW9uIHsKKyAgICAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5Db25uZWN0
aW9uKCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBlc3RhYmxpc2hDb25uZWN0aW9uKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdEV4
Y2VwdGlvblRvV29ya2VyT2JqZWN0KFNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwpID0gMDsKKyAgICAgICAgYm9vbCBpc0Nsb3NlZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNDbG9zZWQ7IH0KKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgdm9pZCBzZXRB
c0Nsb3NlZCgpIHsgbV9pc0Nsb3NlZCA9IHRydWU7IH0KKworICAgICAgICAvLyBJUEMgbWVzc2Fn
ZSBoYW5kbGVycy4KKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0Q29ubmVjdEV2ZW50
KFNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgU3RyaW5n
JiYgc291cmNlT3JpZ2luKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0ZXJtaW5hdGVT
aGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllcik7CisKKyAgICBwcml2YXRlOgorICAg
ICAgICBib29sIG1faXNDbG9zZWQgeyBmYWxzZSB9OworICAgIH07CisKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldENvbm5lY3Rpb24oc3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+JiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIENvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKSBjb25zdDsKKworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVnaXN0ZXJTaGFyZWRXb3JrZXJUaHJlYWQoUmVmPFNoYXJl
ZFdvcmtlclRocmVhZFByb3h5PiYmKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTmV2
ZXJEZXN0cm95ZWQ8U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI+OworCisgICAgU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29u
bmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIEhhc2hNYXA8U2hhcmVkV29ya2VySWRlbnRpZmll
ciwgUmVmPFNoYXJlZFdvcmtlclRocmVhZFByb3h5Pj4gbV93b3JrZXJNYXA7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3No
YXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZC5jcHAKaW5kZXggOWVkNTU4OGZi
ZDc5Li5jY2MzZWI5ODI3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZC5jcHAKQEAgLTI2LDE5ICsy
NiwyMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlclRocmVh
ZC5oIgogCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyT2JqZWN0UHJveHkuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1TaGFyZWRXb3JrZXJUaHJlYWQ6OlNoYXJlZFdvcmtlclRocmVhZChjb25zdCBX
b3JrZXJQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBTY3JpcHRCdWZmZXImIHNvdXJjZUNv
ZGUsIFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQcm94eSwgV29ya2VyRGVidWdnZXJQcm94eSYg
ZGVidWdnZXJQcm94eSwgV29ya2VyT2JqZWN0UHJveHkmIG9iamVjdFByb3h5LCBXb3JrZXJUaHJl
YWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBJ
REJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92
aWRlciogc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncykKK1No
YXJlZFdvcmtlclRocmVhZDo6U2hhcmVkV29ya2VyVGhyZWFkKFNoYXJlZFdvcmtlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3Qg
U2NyaXB0QnVmZmVyJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHks
IFdvcmtlckRlYnVnZ2VyUHJveHkmIGRlYnVnZ2VyUHJveHksIFdvcmtlck9iamVjdFByb3h5JiBv
YmplY3RQcm94eSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU2VjdXJp
dHlPcmlnaW4mIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5l
Y3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVG
bGFncyBydW50aW1lRmxhZ3MpCiAgICAgOiBXb3JrZXJUaHJlYWQocGFyYW1ldGVycywgc291cmNl
Q29kZSwgbG9hZGVyUHJveHksIGRlYnVnZ2VyUHJveHksIG9iamVjdFByb3h5LCBzdGFydE1vZGUs
IHRvcE9yaWdpbiwgY29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlciwgcnVudGltZUZsYWdz
KQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX25hbWUocGFyYW1ldGVy
cy5uYW1lLmlzb2xhdGVkQ29weSgpKQogeworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwg
IiVwIC0gU2hhcmVkV29ya2VyVGhyZWFkOjpTaGFyZWRXb3JrZXJUaHJlYWQ6IiwgdGhpcyk7CiB9
CiAKIFJlZjxXb3JrZXJHbG9iYWxTY29wZT4gU2hhcmVkV29ya2VyVGhyZWFkOjpjcmVhdGVXb3Jr
ZXJHbG9iYWxTY29wZShjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBSZWY8U2Vj
dXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luKQog
eworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gU2hhcmVkV29ya2VyVGhyZWFk
OjpjcmVhdGVXb3JrZXJHbG9iYWxTY29wZToiLCB0aGlzKTsKICAgICByZXR1cm4gU2hhcmVkV29y
a2VyR2xvYmFsU2NvcGU6OmNyZWF0ZShzdGQ6OmV4Y2hhbmdlKG1fbmFtZSwgeyB9KSwgcGFyYW1l
dGVycywgV1RGTW92ZShvcmlnaW4pLCAqdGhpcywgV1RGTW92ZSh0b3BPcmlnaW4pLCBpZGJDb25u
ZWN0aW9uUHJveHkoKSwgc29ja2V0UHJvdmlkZXIoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZC5o
CmluZGV4IDJmMDU2ZjlkNTliYi4uZjU3MzZjMmU2MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkLmgK
QEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTM0LDEyICszNSwxNiBAQCBjbGFzcyBXb3JrZXJPYmplY3RQcm94eTsKIGNs
YXNzIFNoYXJlZFdvcmtlclRocmVhZCA6IHB1YmxpYyBXb3JrZXJUaHJlYWQgewogcHVibGljOgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBSZWY8U2hhcmVkV29ya2VyVGhy
ZWFkPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVk
V29ya2VyVGhyZWFkKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOyB9CisKKyAgICBTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZp
ZXI7IH0KKwogcHJpdmF0ZToKLSAgICBTaGFyZWRXb3JrZXJUaHJlYWQoY29uc3QgV29ya2VyUGFy
YW1ldGVycyYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJv
eHkmLCBXb3JrZXJEZWJ1Z2dlclByb3h5JiwgV29ya2VyT2JqZWN0UHJveHkmLCBXb3JrZXJUaHJl
YWRTdGFydE1vZGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6
SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqLCBKU0M6OlJ1bnRpbWVGbGFncyk7
CisgICAgU2hhcmVkV29ya2VyVGhyZWFkKFNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdv
cmtlclBhcmFtZXRlcnMmLCBjb25zdCBTY3JpcHRCdWZmZXImIHNvdXJjZUNvZGUsIFdvcmtlckxv
YWRlclByb3h5JiwgV29ya2VyRGVidWdnZXJQcm94eSYsIFdvcmtlck9iamVjdFByb3h5JiwgV29y
a2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBJREJD
bGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKiwgSlNDOjpSdW50aW1l
RmxhZ3MpOwogCiAgICAgUmVmPFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGVXb3JrZXJHbG9iYWxT
Y29wZShjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmLCBSZWY8
U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luKSBmaW5hbDsKICAgICBBU0NJSUxpdGVyYWwgdGhy
ZWFkTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJXZWJDb3JlOiBTaGFyZWRXb3JrZXIiX3M7
IH0KIAorICAgIFNoYXJlZFdvcmtlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFN0cmlu
ZyBtX25hbWU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3BwCmluZGV4IGUz
MGFkOGIwNWQ2Yi4uNjMwNDViMzkwOTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yOCwxODAgKzI4LDEyNSBAQAogCiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIu
aCIKICNpbmNsdWRlICJFcnJvckV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5j
bHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVM
b2FkZXIuaCIKICNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgorI2luY2x1ZGUgIkxvYWRl
clN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVBvcnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVz
LmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRl
ICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlICJXb3JrZXJGZXRjaFJlc3VsdC5oIgor
I2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50
aWZpZXJzRmFjdG9yeS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZFdvcmtlclRo
cmVhZFByb3h5OjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShTaGFyZWRXb3JrZXImIHNoYXJlZFdv
cmtlcikKLSAgICA6IG1fc2hhcmVkV29ya2VyKHNoYXJlZFdvcmtlcikKLSAgICAsIG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dChzaGFyZWRXb3JrZXIuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQot
ICAgICwgbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yKHNoYXJlZFdvcmtlci5pZGVudGlmaWVyRm9y
SW5zcGVjdG9yKCkpCitzdGF0aWMgSGFzaFNldDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSo+JiBh
bGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkKIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8SGFzaFNldDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSo+PiBzZXQ7CisgICAgcmV0dXJuIHNl
dDsKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6c3RhcnRXb3JrZXJHbG9iYWxT
Y29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgY29uc3QgU2NyaXB0QnVmZmVyJiBzY3JpcHRC
dWZmZXIsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3Js
ZENvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSYg
Y3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBSZWZl
cnJlclBvbGljeSByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBGZXRjaFJl
cXVlc3RDcmVkZW50aWFscyBjcmVkZW50aWFscywgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZs
YWdzKQorc3RhdGljIFdvcmtlclBhcmFtZXRlcnMgZ2VuZXJhdGVXb3JrZXJQYXJhbWV0ZXJzKGNv
bnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYgd29ya2VyRmV0Y2hS
ZXN1bHQsIFdvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zLCBjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCwgRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gcGFyYW1ldGVycyA9IFdvcmtlclBhcmFtZXRl
cnMgeworICAgIHJldHVybiBXb3JrZXJQYXJhbWV0ZXJzIHsKICAgICAgICAgc2NyaXB0VVJMLAot
ICAgICAgICBuYW1lLAotICAgICAgICBtX2lkZW50aWZpZXJGb3JJbnNwZWN0b3IsCisgICAgICAg
IHdvcmtlck9wdGlvbnMubmFtZSwKKyAgICAgICAgInNoYXJlZHdvcmtlcjoiICsgSW5zcGVjdG9y
OjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKSwKICAgICAgICAgdXNlckFn
ZW50LAotICAgICAgICBpc09ubGluZSwKLSAgICAgICAgY29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzLAotICAgICAgICBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJp
dHlQb2xpY3ksCi0gICAgICAgIGNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ksCi0gICAgICAgIHRp
bWVPcmlnaW4sCi0gICAgICAgIHJlZmVycmVyUG9saWN5LAotICAgICAgICB3b3JrZXJUeXBlLAot
ICAgICAgICBjcmVkZW50aWFscywKLSAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5z
ZXR0aW5nc1ZhbHVlcygpCisgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJh
dGVneSgpLT5pc09uTGluZSgpLAorICAgICAgICB3b3JrZXJGZXRjaFJlc3VsdC5jb250ZW50U2Vj
dXJpdHlQb2xpY3ksCisgICAgICAgIGZhbHNlLAorICAgICAgICB3b3JrZXJGZXRjaFJlc3VsdC5j
cm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LAorICAgICAgICBNb25vdG9uaWNUaW1lOjpub3coKSwK
KyAgICAgICAgeyB9LAorICAgICAgICB3b3JrZXJPcHRpb25zLnR5cGUsCisgICAgICAgIHdvcmtl
ck9wdGlvbnMuY3JlZGVudGlhbHMsCisgICAgICAgIGRvY3VtZW50LnNldHRpbmdzVmFsdWVzKCkK
ICAgICB9OwotCi0gICAgaWYgKCFtX3dvcmtlclRocmVhZCkgewotICAgICAgICBtX3dvcmtlclRo
cmVhZCA9IFNoYXJlZFdvcmtlclRocmVhZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIHNjcmlwdEJ1ZmZl
ciwgKnRoaXMsICp0aGlzLCAqdGhpcywgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+dG9wT3JpZ2luKCksIG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+aWRiQ29ubmVjdGlvblByb3h5KCksIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c29j
a2V0UHJvdmlkZXIoKSwgcnVudGltZUZsYWdzKTsKLSAgICAgICAgbV93b3JrZXJUaHJlYWQtPnN0
YXJ0KCk7Ci0gICAgfQogfQogCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojp0ZXJtaW5h
dGVXb3JrZXJHbG9iYWxTY29wZSgpCitTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6U2hhcmVkV29y
a2VyVGhyZWFkUHJveHkoVW5pcXVlUmVmPFBhZ2U+JiYgcGFnZSwgU2hhcmVkV29ya2VySWRlbnRp
ZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9y
aWdpbiwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIFdvcmtlckZldGNoUmVzdWx0JiYgd29ya2VyRmV0
Y2hSZXN1bHQsIFdvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zLCBjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImIGNhY2hlU3RvcmFnZVByb3ZpZGVyKQorICAg
IDogbV9wYWdlKFdURk1vdmUocGFnZSkpCisgICAgLCBtX2RvY3VtZW50KCptX3BhZ2UtPm1haW5G
cmFtZSgpLmRvY3VtZW50KCkpCisgICAgLCBtX3dvcmtlclRocmVhZChTaGFyZWRXb3JrZXJUaHJl
YWQ6OmNyZWF0ZShzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBnZW5lcmF0ZVdvcmtlclBhcmFtZXRl
cnMoc2NyaXB0VVJMLCB3b3JrZXJGZXRjaFJlc3VsdCwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSwg
dXNlckFnZW50LCBtX2RvY3VtZW50KSwgV1RGTW92ZSh3b3JrZXJGZXRjaFJlc3VsdC5zY3JpcHQp
LCAqdGhpcywgKnRoaXMsICp0aGlzLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgY2xp
ZW50T3JpZ2luLnRvcE9yaWdpbi5zZWN1cml0eU9yaWdpbigpLCBtX2RvY3VtZW50LT5pZGJDb25u
ZWN0aW9uUHJveHkoKSwgbV9kb2N1bWVudC0+c29ja2V0UHJvdmlkZXIoKSwgSlNDOjpSdW50aW1l
RmxhZ3M6OmNyZWF0ZUFsbEVuYWJsZWQoKSkpCisgICAgLCBtX2NhY2hlU3RvcmFnZVByb3ZpZGVy
KGNhY2hlU3RvcmFnZVByb3ZpZGVyKQogewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIG1fYXNrZWRUb1Rlcm1pbmF0ZSA9IHRydWU7Ci0gICAgaWYg
KG1fd29ya2VyVGhyZWFkKQotICAgICAgICBtX3dvcmtlclRocmVhZC0+c3RvcChudWxscHRyKTsK
LX0KKyAgICBBU1NFUlQoIWFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKS5jb250YWlucyh0
aGlzKSk7CisgICAgYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGllcygpLmFkZCh0aGlzKTsKIAot
dm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNj
b3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSkKLXsKLSAgICAvLyBGSVhNRTog
U2hhcmVkV29ya2VyIGRvZXNuJ3QgaGF2ZSBwb3N0TWVzc2FnZSwgc28gdGhpcyBtaWdodCBub3Qg
YmUgbmVjZXNzYXJ5LgotICAgIHBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShbbWVzc2FnZSA9
IFdURk1vdmUobWVzc2FnZSldKGF1dG8mIHNjcmlwdENvbnRleHQpIG11dGFibGUgewotICAgICAg
ICBhdXRvJiBjb250ZXh0ID0gZG93bmNhc3Q8U2hhcmVkV29ya2VyR2xvYmFsU2NvcGU+KHNjcmlw
dENvbnRleHQpOwotICAgICAgICBhdXRvIHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9y
dHMoc2NyaXB0Q29udGV4dCwgV1RGTW92ZShtZXNzYWdlLnRyYW5zZmVycmVkUG9ydHMpKTsKLSAg
ICAgICAgY29udGV4dC5kaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUo
cG9ydHMpLCBtZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSkpOwotICAgIH0pOwotfQot
Ci12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0VGFza1RvV29ya2VyR2xvYmFsU2Nv
cGUoRnVuY3Rpb248dm9pZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+JiYgdGFzaykKLXsKLSAg
ICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQotICAgICAgICByZXR1cm47Ci0gICAgbV93b3JrZXJU
aHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhXVEZNb3ZlKHRhc2spKTsKKyAgICBzdGF0aWMgYm9v
bCBhZGRlZExpc3RlbmVyOworICAgIGlmICghYWRkZWRMaXN0ZW5lcikgeworICAgICAgICBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+YWRkT25saW5lU3RhdGVDaGFuZ2VM
aXN0ZW5lcigmbmV0d29ya1N0YXRlQ2hhbmdlZCk7CisgICAgICAgIGFkZGVkTGlzdGVuZXIgPSB0
cnVlOworICAgIH0KIH0KIAotYm9vbCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6aGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3QKK1NoYXJlZFdvcmtlclRocmVhZFByb3h5Ojp+U2hhcmVkV29ya2Vy
VGhyZWFkUHJveHkoKQogewotICAgIHJldHVybiBtX2hhc1BlbmRpbmdBY3Rpdml0eSAmJiAhbV9h
c2tlZFRvVGVybWluYXRlOworICAgIEFTU0VSVChhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVz
KCkuY29udGFpbnModGhpcykpOworICAgIGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKS5y
ZW1vdmUodGhpcyk7CiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Ondvcmtlck9i
amVjdERlc3Ryb3llZCgpCitTaGFyZWRXb3JrZXJJZGVudGlmaWVyIFNoYXJlZFdvcmtlclRocmVh
ZFByb3h5OjppZGVudGlmaWVyKCkgY29uc3QKIHsKLSAgICBtX3NoYXJlZFdvcmtlciA9IG51bGxw
dHI7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpc10gKGF1dG8m
KSB7Ci0gICAgICAgIG1fbWF5QmVEZXN0cm95ZWQgPSB0cnVlOwotICAgICAgICBpZiAobV93b3Jr
ZXJUaHJlYWQpCi0gICAgICAgICAgICB0ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZEludGVybmFs
KCk7Ci0gICAgfSk7CisgICAgcmV0dXJuIG1fd29ya2VyVGhyZWFkLT5pZGVudGlmaWVyKCk7CiB9
CiAKIHZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Om5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5n
ZShib29sIGlzT25saW5lKQogewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmICghbV93b3JrZXJUaHJlYWQpCisgICAgaWYgKG1faXNUZXJtaW5h
dGluZ09yVGVybWluYXRlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV93b3JrZXJUaHJlYWQt
PnJ1bkxvb3AoKS5wb3N0VGFzayhbaXNPbmxpbmVdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSB7CisgICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZShbaXNPbmxpbmVdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAg
IGF1dG8mIGdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQp
OwogICAgICAgICBnbG9iYWxTY29wZS5zZXRJc09ubGluZShpc09ubGluZSk7Ci0gICAgICAgIGds
b2JhbFNjb3BlLmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShpc09ubGluZSA/IGV2ZW50TmFt
ZXMoKS5vbmxpbmVFdmVudCA6IGV2ZW50TmFtZXMoKS5vZmZsaW5lRXZlbnQsIEV2ZW50OjpDYW5C
dWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwotICAgIH0pOwotfQotCi12b2lk
IFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpzdXNwZW5kRm9yQmFja0ZvcndhcmRDYWNoZSgpCi17
Ci0KLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cmVzdW1lRm9yQmFja0Zvcndh
cmRDYWNoZSgpCi17Ci0KKyAgICAgICAgZ2xvYmFsU2NvcGUuZXZlbnRMb29wKCkucXVldWVUYXNr
KFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW2dsb2JhbFNjb3BlID0gUmVmIHsgZ2xvYmFs
U2NvcGUgfSwgaXNPbmxpbmVdIHsKKyAgICAgICAgICAgIGdsb2JhbFNjb3BlLT5kaXNwYXRjaEV2
ZW50KEV2ZW50OjpjcmVhdGUoaXNPbmxpbmUgPyBldmVudE5hbWVzKCkub25saW5lRXZlbnQgOiBl
dmVudE5hbWVzKCkub2ZmbGluZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6Tm8pKTsKKyAgICAgICAgfSk7CisgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVm
YXVsdE1vZGUoKSk7CiB9CiAKIHZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RFeGNl
cHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewotICAg
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXMsIGVycm9yTWVzc2FnZSA9
IGVycm9yTWVzc2FnZS5pc29sYXRlZENvcHkoKSwgc291cmNlVVJMID0gc291cmNlVVJMLmlzb2xh
dGVkQ29weSgpLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXJdIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JikgewotICAgICAgICBpZiAoIW1fc2hhcmVkV29ya2VyKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIC8vIFdlIGRvbid0IGJvdGhlciBjaGVja2luZyB0aGUgYXNrZWRUb1Rlcm1p
bmF0ZSgpIGZsYWcgaGVyZSwgYmVjYXVzZSBleGNlcHRpb25zIHNob3VsZCAqYWx3YXlzKiBiZSBy
ZXBvcnRlZCBldmVuIGlmIHRoZSB0aHJlYWQgaXMgdGVybWluYXRlZC4KLSAgICAgICAgLy8gVGhp
cyBpcyBpbnRlbnRpb25hbGx5IGRpZmZlcmVudCB0aGFuIHRoZSBiZWhhdmlvciBpbiBNZXNzYWdl
V29ya2VyVGFzaywgYmVjYXVzZSB0ZXJtaW5hdGVkIHdvcmtlcnMgbm8gbG9uZ2VyIGRlbGl2ZXIg
bWVzc2FnZXMgKHNlY3Rpb24gNC42IG9mIHRoZSBXZWJXb3JrZXIgc3BlYyksIGJ1dCB0aGV5IGRv
IHJlcG9ydCBleGNlcHRpb25zLgotICAgICAgICBBY3RpdmVET01PYmplY3Q6OnF1ZXVlVGFza1Rv
RGlzcGF0Y2hFdmVudCgqbV9zaGFyZWRXb3JrZXIsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlv
biwgRXJyb3JFdmVudDo6Y3JlYXRlKGVycm9yTWVzc2FnZSwgc291cmNlVVJMLCBsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIHsgfSkpOwotICAgIH0pOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclRo
cmVhZFByb3h5Ojp3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgpCi17Ci0gICAgbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpc10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
KSB7Ci0gICAgICAgIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwoKTsKLSAgICB9
KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtl
ck9iamVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKQotewotCi19Ci0KLXZvaWQgU2hhcmVk
V29ya2VyVGhyZWFkUHJveHk6OmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sKQot
ewotfQotCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpyZXBvcnRQZW5kaW5nQWN0aXZp
dHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpCi17Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5wb3N0VGFzayhbdGhpcywgaGFzUGVuZGluZ0FjdGl2aXR5XSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpIHsKLSAgICAgICAgbV9oYXNQZW5kaW5nQWN0aXZpdHkgPSBoYXNQZW5kaW5nQWN0
aXZpdHk7CisgICAgY2FsbE9uTWFpblRocmVhZChbc2hhcmVkV29ya2VySWRlbnRpZmllciA9IG1f
d29ya2VyVGhyZWFkLT5pZGVudGlmaWVyKCksIGVycm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZS5p
c29sYXRlZENvcHkoKSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwgPSBzb3Vy
Y2VVUkwuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKQorICAg
ICAgICAgICAgY29ubmVjdGlvbi0+cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KHNoYXJlZFdv
cmtlcklkZW50aWZpZXIsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBz
b3VyY2VVUkwpOwogICAgIH0pOwogfQogCiBSZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4g
U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byYgZG9jdW1lbnQgPSBkb3du
Y2FzdDxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgcmV0dXJuIGRv
Y3VtZW50LnBhZ2UoKS0+Y2FjaGVTdG9yYWdlUHJvdmlkZXIoKS5jcmVhdGVDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uKCk7CisgICAgaWYgKCFtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24pCisgICAgICAg
IG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbiA9IG1fY2FjaGVTdG9yYWdlUHJvdmlkZXIuY3JlYXRl
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpOworICAgIHJldHVybiBtX2NhY2hlU3RvcmFnZUNvbm5l
Y3Rpb247CiB9CiAKIFJlZlB0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9u
PiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5k
bGVyQ29ubmVjdGlvbigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRv
JiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
KTsKLSAgICBpZiAoIWRvY3VtZW50LnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgcmV0dXJuIGRvY3VtZW50LnBhZ2UoKS0+bGliV2ViUlRDUHJvdmlkZXIoKS5jcmVhdGVSVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCk7CisgICAgcmV0dXJuIG1fcGFnZS0+
bGliV2ViUlRDUHJvdmlkZXIoKS5jcmVhdGVSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25u
ZWN0aW9uKCk7CiB9CiAKIHZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RUYXNrVG9M
b2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2spCiB7Ci0gICAgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhXVEZNb3ZlKHRhc2spKTsKKyAgICBjYWxsT25N
YWluVGhyZWFkKFt0YXNrID0gV1RGTW92ZSh0YXNrKSwgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH1dICgpIG11dGFibGUgeworICAgICAgICB0YXNrLnBlcmZvcm1UYXNrKHByb3RlY3RlZFRo
aXMtPm1fZG9jdW1lbnQuZ2V0KCkpOworICAgIH0pOwogfQogCiBib29sIFNoYXJlZFdvcmtlclRo
cmVhZFByb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7
Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKKyAgICBpZiAobV9pc1Rlcm1pbmF0aW5nT3JU
ZXJtaW5hdGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX3dvcmtlclRocmVhZC0+
cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShXVEZNb3ZlKHRhc2spLCBtb2RlKTsKQEAgLTIxOCwx
NiArMTYzLDM0IEBAIHZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnNldFJlc291cmNlQ2Fj
aGluZ0Rpc2FibGVkQnlXZWJJbnNwZWN0b3IoYm9vbCkKIAogfQogCi12b2lkIFNoYXJlZFdvcmtl
clRocmVhZFByb3h5Ojp3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZEludGVybmFsKCkKK3ZvaWQg
U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoYm9vbCBpc09uTGlu
ZSkKK3sKKyAgICBmb3IgKGF1dG8qIHByb3h5IDogYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGll
cygpKQorICAgICAgICBwcm94eS0+bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGlzT25MaW5lKTsK
K30KKworLy8gRklYTUU6IFRyeSBhbmQgc2hhcmUgY29kZSB3aXRoIFNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eS5jcHAuCit2b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpzZXR1cFBhZ2VGb3JT
aGFyZWRXb3JrZXIoUGFnZSYgcGFnZSwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IENsaWVu
dE9yaWdpbiYgY2xpZW50T3JpZ2luLCBjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYgd29ya2VyRmV0
Y2hSZXN1bHQpCiB7Ci0gICAgLy8gVGhpcyBpcyBhbHdheXMgdGhlIGxhc3QgdGFzayB0byBiZSBw
ZXJmb3JtZWQsIHNvIHRoZSBwcm94eSBpcyBub3QgbmVlZGVkIGZvciBjb21tdW5pY2F0aW9uCi0g
ICAgLy8gaW4gZWl0aGVyIHNpZGUgYW55IG1vcmUuIEhvd2V2ZXIsIHRoZSBXb3JrZXIgb2JqZWN0
IG1heSBzdGlsbCBleGlzdCwgYW5kIGl0IGFzc3VtZXMgdGhhdCB0aGUgcHJveHkgZXhpc3RzLCB0
b28uCi0gICAgbV9hc2tlZFRvVGVybWluYXRlID0gdHJ1ZTsKLSAgICBtX3dvcmtlclRocmVhZCA9
IG51bGxwdHI7Ci0KLSAgICAvLyBUaGlzIGJhbGFuY2VzIHRoZSBvcmlnaW5hbCByZWYgaW4gY29u
c3RydWN0aW9uLgotICAgIGlmIChtX21heUJlRGVzdHJveWVkKQotICAgICAgICBkZXJlZigpOwor
ICAgIGF1dG8mIG1haW5GcmFtZSA9IHBhZ2UubWFpbkZyYW1lKCk7CisgICAgbWFpbkZyYW1lLmxv
YWRlcigpLmluaXRGb3JTeW50aGVzaXplZERvY3VtZW50KHsgfSk7CisgICAgYXV0byBkb2N1bWVu
dCA9IERvY3VtZW50OjpjcmVhdGVOb25SZW5kZXJlZFBsYWNlaG9sZGVyKG1haW5GcmFtZSwgc2Ny
aXB0VVJMKTsKKyAgICBkb2N1bWVudC0+Y3JlYXRlRE9NV2luZG93KCk7CisKKyAgICBkb2N1bWVu
dC0+c3RvcmFnZUJsb2NraW5nU3RhdGVEaWRDaGFuZ2UoKTsKKworICAgIGF1dG8gb3JpZ2luID0g
Y2xpZW50T3JpZ2luLnRvcE9yaWdpbi5zZWN1cml0eU9yaWdpbigpOworICAgIG9yaWdpbi0+c2V0
U3RvcmFnZUJsb2NraW5nUG9saWN5KHBhZ2Uuc2V0dGluZ3MoKS5zdG9yYWdlQmxvY2tpbmdQb2xp
Y3koKSk7CisKKyAgICBhdXRvIG9yaWdpbkFzVVJMID0gb3JpZ2luLT50b1VSTCgpOworICAgIGRv
Y3VtZW50LT5zZXRTaXRlRm9yQ29va2llcyhvcmlnaW5Bc1VSTCk7CisgICAgZG9jdW1lbnQtPnNl
dEZpcnN0UGFydHlGb3JDb29raWVzKG9yaWdpbkFzVVJMKTsKKyAgICBkb2N1bWVudC0+c2V0RG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24ob3JpZ2luLT5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpKTsK
KworICAgIGlmIChhdXRvIHBvbGljeSA9IHBhcnNlUmVmZXJyZXJQb2xpY3kod29ya2VyRmV0Y2hS
ZXN1bHQucmVmZXJyZXJQb2xpY3ksIFJlZmVycmVyUG9saWN5U291cmNlOjpIVFRQSGVhZGVyKSkK
KyAgICAgICAgZG9jdW1lbnQtPnNldFJlZmVycmVyUG9saWN5KCpwb2xpY3kpOworCisgICAgbWFp
bkZyYW1lLnNldERvY3VtZW50KFdURk1vdmUoZG9jdW1lbnQpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29u
dGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oCmluZGV4IGNlNmM1OWUxZDlj
MS4uM2Q2OWNhMDY0ZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDggKzI1
LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiV29ya2VyRGVidWdnZXJQcm94eS5oIgotI2luY2x1ZGUgIldvcmtlckds
b2JhbFNjb3BlUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJMb2FkZXJQcm94eS5oIgogI2luY2x1
ZGUgIldvcmtlck9iamVjdFByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyT3B0aW9ucy5oIgpAQCAt
MzQsNDkgKzM0LDU2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ2FjaGVTdG9y
YWdlUHJvdmlkZXI7CitjbGFzcyBQYWdlOwogY2xhc3MgU2hhcmVkV29ya2VyOwogY2xhc3MgU2hh
cmVkV29ya2VyVGhyZWFkOwogCi1jbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSBmaW5hbCA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4sIHB1
YmxpYyBXb3JrZXJHbG9iYWxTY29wZVByb3h5LCBwdWJsaWMgV29ya2VyT2JqZWN0UHJveHksIHB1
YmxpYyBXb3JrZXJMb2FkZXJQcm94eSwgcHVibGljIFdvcmtlckRlYnVnZ2VyUHJveHkgeworc3Ry
dWN0IENsaWVudE9yaWdpbjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKKworY2xhc3MgU2hh
cmVkV29ya2VyVGhyZWFkUHJveHkgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
U2hhcmVkV29ya2VyVGhyZWFkUHJveHk+LCBwdWJsaWMgV29ya2VyT2JqZWN0UHJveHksIHB1Ymxp
YyBXb3JrZXJMb2FkZXJQcm94eSwgcHVibGljIFdvcmtlckRlYnVnZ2VyUHJveHkgewogcHVibGlj
OgotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eSYgY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKSB7IHJldHVybiAqbmV3IFNoYXJlZFdvcmtl
clRocmVhZFByb3h5KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7IH0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmPFNoYXJlZFdvcmtlclRocmVhZFByb3h5PiBj
cmVhdGUoQXJncyYmLi4uIGFyZ3MpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHkoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7IH0KKyAgICBXRUJDT1JF
X0VYUE9SVCB+U2hhcmVkV29ya2VyVGhyZWFkUHJveHkoKTsKIAotICAgIFNoYXJlZFdvcmtlclRo
cmVhZCogdGhyZWFkKCkgeyByZXR1cm4gbV93b3JrZXJUaHJlYWQuZ2V0KCk7IH0KKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXR1cFBhZ2VGb3JTaGFyZWRXb3JrZXIoUGFnZSYsIGNv
bnN0IFVSTCYsIGNvbnN0IENsaWVudE9yaWdpbiYsIGNvbnN0IFdvcmtlckZldGNoUmVzdWx0Jik7
CiAKLSAgICB2b2lkIHN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkws
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxp
bmUsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc291cmNlQ29kZSwgY29uc3QgQ29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50
U2VjdXJpdHlQb2xpY3ksIGNvbnN0IENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kmLCBNb25vdG9u
aWNUaW1lIHRpbWVPcmlnaW4sIFJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBGZXRjaFJlcXVl
c3RDcmVkZW50aWFscywgSlNDOjpSdW50aW1lRmxhZ3MpIGZpbmFsOwotICAgIHZvaWQgd29ya2Vy
T2JqZWN0RGVzdHJveWVkKCkgZmluYWw7Ci0gICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBj
b25zdCBmaW5hbDsKLSAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCkgZmluYWw7
CisgICAgU2hhcmVkV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Q7CisgICAgU2hh
cmVkV29ya2VyVGhyZWFkJiB0aHJlYWQoKSB7IHJldHVybiBtX3dvcmtlclRocmVhZC5nZXQoKTsg
fQogCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFNoYXJlZFdvcmtlclRocmVhZFByb3h5KFNoYXJl
ZFdvcmtlciYpOworICAgIGJvb2wgaXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZDsgfQorICAgIHZvaWQgc2V0QXNUZXJt
aW5hdGluZ09yVGVybWluYXRlZCgpIHsgbV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkID0gdHJ1
ZTsgfQogCi0gICAgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZEludGVybmFsKCk7Citw
cml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZFdvcmtlclRocmVhZFByb3h5KFVuaXF1
ZVJlZjxQYWdlPiYmLCBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4m
LCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgV29ya2VyRmV0Y2hSZXN1bHQmJiwgV29ya2VyT3B0aW9u
cyYmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImKTsKIAot
ICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzJiYpIGZpbmFsOwotICAgIHZvaWQgcG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1
bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiYmKSBmaW5hbDsKLSAgICB2b2lk
IG5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25saW5lKSBmaW5hbDsKLSAgICB2b2lk
IHN1c3BlbmRGb3JCYWNrRm9yd2FyZENhY2hlKCkgZmluYWw7Ci0gICAgdm9pZCByZXN1bWVGb3JC
YWNrRm9yd2FyZENhY2hlKCkgZmluYWw7CisgICAgLy8gV29ya2VyT2JqZWN0UHJveHkuCiAgICAg
dm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCkgZmluYWw7Ci0gICAgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgpIGZpbmFs
OwotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0cyYmKSBmaW5hbDsKLSAgICB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChi
b29sIGhhc1BlbmRpbmdBY3Rpdml0eSkgZmluYWw7Ci0gICAgdm9pZCByZXBvcnRQZW5kaW5nQWN0
aXZpdHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpIGZpbmFsOworICAgIHZvaWQgcG9zdE1lc3Nh
Z2VUb1dvcmtlck9iamVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKSBmaW5hbCB7IH0KKyAg
ICB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkKCkgZmluYWwgeyB9CisgICAgdm9pZCBj
b25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCkgZmluYWwgeyB9CisgICAgdm9pZCBy
ZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCkgZmluYWwgeyB9CisKKyAgICAvLyBXb3JrZXJMb2Fk
ZXJQcm94eS4KICAgICBSZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gY3JlYXRlQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbigpIGZpbmFsOwogICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5lbFJlbW90
ZUhhbmRsZXJDb25uZWN0aW9uPiBjcmVhdGVSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25u
ZWN0aW9uKCkgZmluYWw7CiAgICAgdm9pZCBwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2smJikgZmluYWw7CiAgICAgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiwgY29u
c3QgU3RyaW5nJiBtb2RlKSBmaW5hbDsKKworICAgIC8vIFdvcmtlckRlYnVnZ2VyUHJveHkuCiAg
ICAgdm9pZCBwb3N0TWVzc2FnZVRvRGVidWdnZXIoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAg
dm9pZCBzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yKGJvb2wpIGZpbmFs
OwogCi0gICAgV2Vha1B0cjxTaGFyZWRXb3JrZXI+IG1fc2hhcmVkV29ya2VyOwotICAgIFJlZlB0
cjxTaGFyZWRXb3JrZXJUaHJlYWQ+IG1fd29ya2VyVGhyZWFkOwotICAgIGNvbnN0IFJlZlB0cjxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0gICAgY29u
c3QgU3RyaW5nIG1faWRlbnRpZmllckZvckluc3BlY3RvcjsKLSAgICBib29sIG1fYXNrZWRUb1Rl
cm1pbmF0ZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2hhc1BlbmRpbmdBY3Rpdml0eSB7IGZhbHNl
IH07Ci0gICAgYm9vbCBtX21heUJlRGVzdHJveWVkIHsgZmFsc2UgfTsKKyAgICBzdGF0aWMgdm9p
ZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKGJvb2wgaXNPbkxpbmUpOworICAgIHZvaWQgbm90aWZ5TmV0
d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpOworCisgICAgVW5pcXVlUmVmPFBhZ2U+IG1f
cGFnZTsKKyAgICBSZWY8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CisgICAgUmVmPFNoYXJlZFdvcmtl
clRocmVhZD4gbV93b3JrZXJUaHJlYWQ7CisgICAgQ2FjaGVTdG9yYWdlUHJvdmlkZXImIG1fY2Fj
aGVTdG9yYWdlUHJvdmlkZXI7CisgICAgUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IG1f
Y2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKKyAgICBib29sIG1faXNUZXJtaW5hdGluZ09yVGVybWlu
YXRlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3Rz
LnR4dAppbmRleCA3NTZkYTg4YjQ1ZjcuLjI5ZjRjNzgxODE4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0
CkBAIC0yOCw2ICsyOCw3IEBAIHNldChXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIk
e1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMiCiAgICAgIiR7V0VCS0lU
X0RJUn0vTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiCiAgICAgIiR7V0VC
S0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlciIKKyAgICAiJHtXRUJLSVRfRElS
fS9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZSIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9j
YWNoZSIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlIgpAQCAtMjAy
LDYgKzIwMyw5IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKICAgICBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbgogICAgIE5ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCiAKKyAgICBO
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlv
bgorICAgIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uCisKICAgICBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VNYW5hZ2VyU2V0CiAKICAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmVDb25uZWN0aW9uCkBAIC0zMDUsNiArMzA5LDggQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9G
SUxFUwogCiAgICAgV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1l
ZGlhU291cmNlTWFuYWdlcgogCisgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbgorICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uCiAgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xp
ZW50Q29ubmVjdGlvbgogICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3QKaW5kZXggNGM2NjIyMGNmMTIyLi43MjI5YzFiOTg3MDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTkxLDYgKzkxLDggQEAgJChQ
Uk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93
bmxvYWRUYXNrLm1lc3NhZ2VzLmkKICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9O
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2Vy
L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQu
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQ
cm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluCkBAIC0yMTcs
NiArMjE5LDggQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1NwZWVjaC9TcGVlY2hSZWNv
Z25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJP
SkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0
aG5Qcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggZTNiNTU4NDBhZTFlLi5hODYzMjgxNDdi
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlz
dApAQCAtNjA3LDYgKzYwNywxOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0L1dlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcwogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNz
YWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNz
YWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1l
c3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNvY2tldENoYW5u
ZWxNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0L1dlYlNvY2tldENoYW5uZWxNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNvY2tldENoYW5uZWxNZXNzYWdlc1JlcGxpZXMu
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDdhZDQ5ZTM3MzVmNC4uMzUxZmZhZTBh
NTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xMzMsNiArMTMzLDggQEAgTUVT
U0FHRV9SRUNFSVZFUlMgPSBcCiAJTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRG93bmxvYWRUYXNrIFwKIAlOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2sgXAogCU5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIFwKKwlOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbiBcCisJTmV0d29ya1Byb2Nlc3MvU2hhcmVk
V29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gXAogCU5ldHdv
cmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0gXAogCU5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzIFwKIAlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIgXApAQCAtMjI1
LDYgKzIyNyw4IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9T
cGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlciBcCisJV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBc
CisJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24gXAog
CVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBcCiAJV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNjg3YzhkYjY5MTJjLi5j
N2IxN2ZkNzA3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC02Niw2ICs2Niwx
MSBAQAogI2luY2x1ZGUgIldlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXIuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgorI2lu
Y2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBDb29r
aWVBY2NlcHRQb2xpY3kuaD4KQEAgLTEzMiw2ICsxMzcsNyBAQCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3Mm
IG5ldAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBlc3RhYmxpc2hTV1NlcnZlckNv
bm5lY3Rpb24oKTsKICNlbmRpZgorICAgIGVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb24oKTsKIH0KIAogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcygpCkBAIC0xNjYsNiArMTcyLDcgQEAgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6On5OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRp
ZgorICAgIHVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiB9CiAKIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhhc1VwbG9hZFN0YXRlQ2hhbmdlZChib29sIGhh
c1VwbG9hZCkKQEAgLTI3NSw2ICsyODIsMTcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW8KICAg
ICB9CiAjZW5kaWYKIAorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBN
ZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKSB7CisgICAgICAgIGlmIChtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAg
ICAgICBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rp
b24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGlmICht
X3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKQorICAgICAgICAgICAgbV9zaGFyZWRXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rl
cik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9U
RV9VSSkKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6
OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpCiAgICAg
ICAgIHJldHVybiBwYXltZW50Q29vcmRpbmF0b3IoKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKTsKQEAgLTM5OCw5ICs0MTYsOCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG51
bGxwdHI7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICNlbmRpZgorICAg
IG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwogCiAgICAgLy8gUHJv
dGVjdCBvdXJzZWxmIGFzIHdlIG1pZ2h0IGJlIG90aGVyd2lzZSBiZSBkZWxldGVkIGR1cmluZyB0
aGlzIGZ1bmN0aW9uLgogICAgIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gcHJv
dGVjdG9yKCp0aGlzKTsKQEAgLTQ0MSw2ICs0NTgsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNl
bmRpZgorICAgIHVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiAKICNpZiBFTkFC
TEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKICAgICBtX3BheW1lbnRDb29yZGluYXRvciA9IG51bGxw
dHI7CkBAIC0xMTg2LDYgKzEyMDQsNjEgQEAgc2l6ZV90IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpmaW5kTmV0d29ya0FjdGl2aXR5VHJhY2tlcihXZWJDb3JlOjpSZXNvdXIKICAgICAg
ICAgcmV0dXJuIGl0ZW0ucmVzb3VyY2VJRCA9PSByZXNvdXJjZUlEOwogICAgIH0pOwogfQorCit2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJD
b250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTaGFy
ZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbjoiKTsKKyAg
ICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsKKyAgICBpZiAoYXV0byogc3dTZXJ2
ZXIgPSBzZXNzaW9uID8gc2Vzc2lvbi0+c2hhcmVkV29ya2VyU2VydmVyKCkgOiBudWxscHRyKQor
ICAgICAgICBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPigqdGhpcywgV1RGTW92ZShyZWdp
c3RyYWJsZURvbWFpbiksICpzd1NlcnZlcik7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30K
Kwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbigpCit7CisgICAgaWYgKG1fc2hhcmVkV29ya2VyQ29ubmVjdGlv
bikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9u
KCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBDT05ORUNUSU9O
X1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb246Iik7CisKKyAgICBhdXRvJiBzZXJ2ZXIgPSBzZXNzaW9uLT5lbnN1cmVTaGFyZWRX
b3JrZXJTZXJ2ZXIoKTsKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29ya1Byb2Nlc3MsIHNlcnZlciwgbV9jb25u
ZWN0aW9uLmdldCgpLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsKKworICAgIG1fc2hhcmVkV29y
a2VyQ29ubmVjdGlvbiA9ICpjb25uZWN0aW9uOworICAgIHNlcnZlci5hZGRDb25uZWN0aW9uKFdU
Rk1vdmUoY29ubmVjdGlvbikpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpjbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNU
SU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImNsb3NlU2hhcmVkV29ya2VyQ29udGV4dENv
bm5lY3Rpb246Iik7CisgICAgbV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxw
dHI7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJT
aGFyZWRXb3JrZXJDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNo
YXJlZFdvcmtlciwgInVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uOiIpOworICAgIGlm
IChtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAgIG1fc2hhcmVkV29ya2VyQ29ubmVj
dGlvbi0+c2VydmVyKCkucmVtb3ZlQ29ubmVjdGlvbihtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24t
PndlYlByb2Nlc3NJZGVudGlmaWVyKCkpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpzaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdl
ck5lZWRlZCgpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJz
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZDoiKTsK
KyAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlv
bk5vTG9uZ2VyTmVlZGVkIHsgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKKworICAgIG1f
c2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOworfQorCitXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2hh
cmVkV29ya2VyQ29ubmVjdGlvbigpCit7CisgICAgaWYgKCFtX3NoYXJlZFdvcmtlckNvbm5lY3Rp
b24pCisgICAgICAgIGVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oKTsKKyAg
ICByZXR1cm4gbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uLmdldCgpOworfQogICAgIAogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKQpAQCAtMTIyMyw5ICsxMjk2LDkgQEAgdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xvc2VTV0NvbnRleHRDb25uZWN0aW9uKCkKICAg
ICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwogfQogCi12b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVk
ZWQoKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2VydmljZVdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCgpCiB7Ci0gICAgQ09OTkVDVElP
Tl9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAic2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5v
TG9uZ2VyTmVlZGVkOiBXZWJQcm9jZXNzIG5vIGxvbmdlciB1c2VmdWwgZm9yIHJ1bm5pbmcgc2Vy
dmljZSB3b3JrZXJzIik7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2Vy
LCAic2VydmljZVdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZDog
V2ViUHJvY2VzcyBubyBsb25nZXIgdXNlZnVsIGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycyIp
OwogICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVj
dGlvbk5vTG9uZ2VyTmVlZGVkIHsgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKIAogICAg
IG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
aW5kZXggM2ExZTE0MDQzMzhmLi5kMGFhNGVmNzQ1MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgKQEAgLTkyLDYgKzkyLDggQEAgY2xhc3MgTmV0d29ya1NvY2tldFN0cmVhbTsKIGNsYXNzIFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CiBjbGFz
cyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjsKIAogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiBzdHJ1Y3QgRGF0YUtleTsKQEAg
LTE4MSwxMCArMTgzLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNoZWNrUHJvY2Vzc0xvY2FsUG9y
dEZvckFjdGl2aXR5KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhh
c0FjdGl2aXR5KT4mJik7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgdm9pZCBz
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKTsKKyAgICB2b2lkIHNlcnZp
Y2VXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKTsKICAgICBX
ZWJTV1NlcnZlckNvbm5lY3Rpb24qIHN3Q29ubmVjdGlvbigpOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBjcmVhdGVGZXRjaFRhc2soTmV0d29ya1Jlc291cmNl
TG9hZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKKyAgICB2
b2lkIHNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVk
KCk7CisKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKiBzaGFyZWRXb3JrZXJD
b25uZWN0aW9uKCk7CiAKICAgICBOZXR3b3JrU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5
KCkgeyByZXR1cm4gbV9zY2hlbWVSZWdpc3RyeS5nZXQoKTsgfQogCkBAIC0yNTMsNiArMjU4LDkg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZVNvY2tldENoYW5uZWwoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgV2ViQ29yZTo6V2ViU29j
a2V0SWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJik7CiAgICAgdm9pZCB1cGRhdGVRdW90YUJhc2VkT25TcGFjZVVzYWdlRm9yVGVz
dGluZyhjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKIAorICAgIHZvaWQgZXN0YWJsaXNo
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpOworICAgIHZvaWQgdW5yZWdpc3RlclNoYXJl
ZFdvcmtlckNvbm5lY3Rpb24oKTsKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2
b2lkIGVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigpOwogICAgIHZvaWQgZXN0YWJsaXNoU1dD
b250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CkBAIC0yNjAsNiArMjY4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVu
cmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgogCisgICAgdm9pZCBlc3RhYmxpc2hTaGFy
ZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAg
IHZvaWQgY2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpOworCiAgICAgdm9pZCBj
cmVhdGVSVENQcm92aWRlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2lmIEVOQUJM
RShXRUJfUlRDKQogICAgIHZvaWQgY29ubmVjdFRvUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2Uo
V2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgV2ViQ29yZTo6UlRDRGF0
YUNoYW5uZWxJZGVudGlmaWVyIGhhbmRsZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpv
cHRpb25hbDxib29sPik+JiYpOwpAQCAtNDA0LDYgKzQxNSw4IEBAIHByaXZhdGU6CiAgICAgV2Vh
a1B0cjxXZWJTV1NlcnZlckNvbm5lY3Rpb24+IG1fc3dDb25uZWN0aW9uOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+IG1fc3dDb250ZXh0Q29ubmVj
dGlvbjsKICNlbmRpZgorICAgIFdlYWtQdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlv
bj4gbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiBtX3NoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uOwogCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgYm9vbCBtX2lzUmVnaXN0ZXJl
ZFRvUlRDRGF0YUNoYW5uZWxQcm94eSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAyNDI4MzUwNTBiMjQuLmI5N2NhMzQ3OWI0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC04OCw2ICs4OCw5
IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2Vp
dmVyIHsKICAgICBDbG9zZVNXQ29udGV4dENvbm5lY3Rpb24oKQogI2VuZGlmCiAKKyAgICBFc3Rh
Ymxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFp
bikgLT4gKCkgQXN5bmMKKyAgICBDbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKCkK
KwogICAgIENyZWF0ZVJUQ1Byb3ZpZGVyKCkgLT4gKCkgQXN5bmMKICNpZiBFTkFCTEUoV0VCX1JU
QykKICAgICBDb25uZWN0VG9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZShzdHJ1Y3QgV2ViQ29y
ZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgc3RydWN0IFdlYkNvcmU6OlJUQ0Rh
dGFDaGFubmVsSWRlbnRpZmllciBoYW5kbGVyKSAtPiAoc3RkOjpvcHRpb25hbDxib29sPiByZXN1
bHQpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uY3BwCmluZGV4IGUyYjI0ZDgzMjJiNi4uZDc2MTYyODUwY2FkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtNDcsNiArNDcsNyBA
QAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Byb3h5LmgiCiAjaW5jbHVkZSAiV2ViU1dPcmlnaW5TdG9yZS5oIgorI2luY2x1ZGUgIldlYlNo
YXJlZFdvcmtlclNlcnZlci5oIgogI2luY2x1ZGUgIldlYlNvY2tldFRhc2suaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0Nvb2tpZUphci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0
Lmg+CkBAIC02NTMsNiArNjU0LDEzIEBAIGJvb2wgTmV0d29ya1Nlc3Npb246Omhhc1NlcnZpY2VX
b3JrZXJEYXRhYmFzZVBhdGgoKSBjb25zdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQogCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVTaGFy
ZWRXb3JrZXJTZXJ2ZXIoKQoreworICAgIGlmICghbV9zaGFyZWRXb3JrZXJTZXJ2ZXIpCisgICAg
ICAgIG1fc2hhcmVkV29ya2VyU2VydmVyID0gbWFrZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXI+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fc2hhcmVkV29ya2VyU2VydmVyOworfQorCiBXZWJJ
REJTZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVXZWJJREJTZXJ2ZXIoKQogewogICAgIGlm
ICghbV93ZWJJREJTZXJ2ZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uaAppbmRleCAxOTMwN2NmNDBiZTMuLjNmOWQ2Yzk1NTBhOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtNzksNiArNzks
NyBAQCBjbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOwogY2xhc3MgV2ViSURCU2VydmVyOwog
Y2xhc3MgV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzOwogY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyOwogY2xhc3MgV2ViU29j
a2V0VGFzazsKIGNsYXNzIFdlYlNXT3JpZ2luU3RvcmU7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5l
Y3Rpb247CkBAIC0yMTAsNiArMjExLDkgQEAgcHVibGljOgogICAgIHZvaWQgYWRkU2VydmljZVdv
cmtlclNlc3Npb24oYm9vbCBwcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFN0cmluZyYm
IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIGNvbnN0IFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYpOwogI2VuZGlmCiAKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIqIHNoYXJl
ZFdvcmtlclNlcnZlcigpIHsgcmV0dXJuIG1fc2hhcmVkV29ya2VyU2VydmVyLmdldCgpOyB9Cisg
ICAgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBlbnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKTsKKwog
ICAgIFdlYklEQlNlcnZlciogd2ViSURCU2VydmVyKCkgeyByZXR1cm4gbV93ZWJJREJTZXJ2ZXIu
Z2V0KCk7IH0KICAgICBXZWJJREJTZXJ2ZXImIGVuc3VyZVdlYklEQlNlcnZlcigpOwogICAgIHZv
aWQgY2xvc2VJREJTZXJ2ZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTMxOCw2
ICszMjIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySW5m
bz4gbV9zZXJ2aWNlV29ya2VySW5mbzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1dT
ZXJ2ZXI+IG1fc3dTZXJ2ZXI7CiAjZW5kaWYKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVk
V29ya2VyU2VydmVyPiBtX3NoYXJlZFdvcmtlclNlcnZlcjsKIAogICAgIFN0cmluZyBtX2lkYkRh
dGFiYXNlUGF0aDsKICAgICBSZWZQdHI8V2ViSURCU2VydmVyPiBtX3dlYklEQlNlcnZlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5k
ZXggNWE4NzAzZWZkNmQ1Li4yN2Y2ZThkYTVmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0xNjIsNyArMTYyLDcgQEAgdm9p
ZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWUKIAogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkKIHsKLSAgICBtX2Nvbm5lY3Rpb24uc2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCk7CisgICAgbV9jb25uZWN0aW9u
LnNlcnZpY2VXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKTsK
IH0KIAogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNldFRocm90dGxlU3Rh
dGUoYm9vbCBpc1Rocm90dGxlYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2RjNGEwNTI2ODU4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRX
b3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcApAQCAtMCwwICsxLDI5OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXIuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1By
b3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgorI2luY2x1ZGUgIldl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OldlYlNoYXJlZFdvcmtlclNlcnZlcihOZXR3b3JrU2Vzc2lv
biYgc2Vzc2lvbikKKyAgICA6IG1fc2Vzc2lvbihzZXNzaW9uKQoreworfQorCitXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXI6On5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIoKSA9IGRlZmF1bHQ7CisKK1BBTDo6
U2Vzc2lvbklEIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2Vzc2lvbklEKCkKK3sKKyAgICByZXR1
cm4gbV9zZXNzaW9uLnNlc3Npb25JRCgpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZl
cjo6cmVxdWVzdFNoYXJlZFdvcmtlcihXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4sIFdl
YkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciwgVVJMJiYgdXJsLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgcG9y
dCwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMpCit7CisgICAgV2ViQ29y
ZTo6U2hhcmVkV29ya2VyS2V5IGtleSB7IG9yaWdpbiwgdXJsLCB3b3JrZXJPcHRpb25zLm5hbWUg
fTsKKyAgICBhdXRvJiBzaGFyZWRXb3JrZXIgPSBtX3NoYXJlZFdvcmtlcnMuZW5zdXJlKGtleSwg
WyZdIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2hhcmVkV29ya2VyPihvcmlnaW4sIHVy
bCwgd29ya2VyT3B0aW9ucyk7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIFJFTEVBU0Vf
TE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdv
cmtlcjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3ByaXZhdGV9cywgc2hhcmVkV29y
a2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9T
dHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzaGFyZWRXb3JrZXItPmlkZW50aWZpZXIudG9VSW50NjQo
KSk7CisKKyAgICBpZiAoc2hhcmVkV29ya2VyLT53b3JrZXJPcHRpb25zLnR5cGUgIT0gd29ya2Vy
T3B0aW9ucy50eXBlIHx8IHNoYXJlZFdvcmtlci0+d29ya2VyT3B0aW9ucy5jcmVkZW50aWFscyAh
PSB3b3JrZXJPcHRpb25zLmNyZWRlbnRpYWxzKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtl
cjogQSB3b3JrZXIgYWxyZWFkeSBleGlzdHMgd2l0aCB0aGlzIG5hbWUgYnV0IGhhcyBkaWZmZXJl
bnQgdHlwZSAvIGNyZWRlbnRpYWxzIik7CisgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0
aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9j
ZXNzSWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIHNlcnZlckNvbm5lY3Rpb24tPm5vdGlmeVdv
cmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24oc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwg
eyBXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIH0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3Rz
LmFkZChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBwb3J0KTsKKworICAgIGlmIChzaGFy
ZWRXb3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMuc2l6ZSgpID4gMSkgeworICAgICAgICBSRUxF
QVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFy
ZWRXb3JrZXI6IEEgc2hhcmVkIHdvcmtlciB3aXRoIHRoaXMgVVJMIGFscmVhZHkgZXhpc3RzIChu
b3cgc2hhcmVkIGJ5ICV1IHNoYXJlZCB3b3JrZXIgb2JqZWN0cykiLCBzaGFyZWRXb3JrZXItPnNo
YXJlZFdvcmtlck9iamVjdHMuc2l6ZSgpKTsKKyAgICAgICAgaWYgKHNoYXJlZFdvcmtlci0+ZGlk
RmluaXNoRmV0Y2hpbmcoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIHNlcnZlckNvbm5lY3Rp
b24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nl
c3NJZGVudGlmaWVyKCkpKQorICAgICAgICAgICAgICAgIHNlcnZlckNvbm5lY3Rpb24tPm5vdGlm
eVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24oc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciwgeyB9KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2hhcmVkV29ya2VyLT5pc1J1bm5pbmcp
IHsKKyAgICAgICAgICAgIGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gbV9jb250ZXh0Q29ubmVj
dGlvbnMuZ2V0KHNoYXJlZFdvcmtlci0+cmVnaXN0cmFibGVEb21haW4oKSk7CisgICAgICAgICAg
ICBBU1NFUlQoY29udGV4dENvbm5lY3Rpb24pOworICAgICAgICAgICAgaWYgKGNvbnRleHRDb25u
ZWN0aW9uKQorICAgICAgICAgICAgICAgIHBvc3RDb25uZWN0RXZlbnQoKmNvbnRleHRDb25uZWN0
aW9uLCBzaGFyZWRXb3JrZXItPmlkZW50aWZpZXIsIHBvcnQsIG9yaWdpbi5jbGllbnRPcmlnaW4u
dG9TdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NF
UlQoIXNoYXJlZFdvcmtlci0+aXNSdW5uaW5nKTsKKworICAgIGF1dG8qIHNlcnZlckNvbm5lY3Rp
b24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nl
c3NJZGVudGlmaWVyKCkpOworICAgIEFTU0VSVChzZXJ2ZXJDb25uZWN0aW9uKTsKKworICAgIFJF
TEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNo
YXJlZFdvcmtlcjogRmV0Y2hpbmcgc2hhcmVkIHdvcmtlciBzY3JpcHQgaW4gY2xpZW50Iik7Cisg
ICAgc2VydmVyQ29ubmVjdGlvbi0+ZmV0Y2hTY3JpcHRJbkNsaWVudCh1cmwsIHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIsIHdvcmtlck9wdGlvbnMsIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9LCBzaGFyZWRXb3JrZXIgPSBXZWFrUHRyIHsgKnNoYXJlZFdvcmtlciB9XShXZWJDb3Jl
OjpXb3JrZXJGZXRjaFJlc3VsdCYmIGZldGNoUmVzdWx0KSB7CisgICAgICAgIGlmICh3ZWFrVGhp
cyAmJiBzaGFyZWRXb3JrZXIpCisgICAgICAgICAgICB3ZWFrVGhpcy0+ZGlkRmluaXNoRmV0Y2hp
bmdTaGFyZWRXb3JrZXJTY3JpcHQoKnNoYXJlZFdvcmtlciwgV1RGTW92ZShmZXRjaFJlc3VsdCkp
OworICAgIH0pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6bGF1bmNoU2hhcmVk
V29ya2VyKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRD
b25uZWN0aW9uLCBTaGFyZWRXb3JrZXImIHNoYXJlZFdvcmtlcikKK3sKKyAgICBSRUxFQVNFX0xP
RyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmxhdW5jaFNoYXJlZFdvcmtl
cjogY29udGV4dENvbm5lY3Rpb249JXAsIHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0
LCAmY29udGV4dENvbm5lY3Rpb24sIHNoYXJlZFdvcmtlci5pZGVudGlmaWVyLnRvVUludDY0KCkp
OworICAgIGNvbnRleHRDb25uZWN0aW9uLmxhdW5jaFNoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXIu
b3JpZ2luLCBzaGFyZWRXb3JrZXIuaWRlbnRpZmllciwgc2hhcmVkV29ya2VyLnVybCwgc2hhcmVk
V29ya2VyLndvcmtlck9wdGlvbnMsIHNoYXJlZFdvcmtlci5mZXRjaFJlc3VsdCk7CisgICAgc2hh
cmVkV29ya2VyLmlzUnVubmluZyA9IHRydWU7CisgICAgYXV0byBzb3VyY2VPcmlnaW4gPSBzaGFy
ZWRXb3JrZXIub3JpZ2luLmNsaWVudE9yaWdpbi50b1N0cmluZygpOworICAgIGZvciAoYXV0byYg
cG9ydCA6IHNoYXJlZFdvcmtlci5zaGFyZWRXb3JrZXJPYmplY3RzLnZhbHVlcygpKQorICAgICAg
ICBwb3N0Q29ubmVjdEV2ZW50KGNvbnRleHRDb25uZWN0aW9uLCBzaGFyZWRXb3JrZXIuaWRlbnRp
ZmllciwgcG9ydCwgc291cmNlT3JpZ2luKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXI6OnBvc3RDb25uZWN0RXZlbnQoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbiYgY29udGV4dENvbm5lY3Rpb24sIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIg
c2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdl
UG9ydCYgc291cmNlUG9ydCwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit7CisgICAgUkVM
RUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpwb3N0Q29ubmVj
dEV2ZW50OiBjb250ZXh0Q29ubmVjdGlvbj0lcCwgc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQ
Ukl1NjQsICZjb250ZXh0Q29ubmVjdGlvbiwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2
NCgpKTsKKyAgICBjb250ZXh0Q29ubmVjdGlvbi5wb3N0Q29ubmVjdEV2ZW50KHNoYXJlZFdvcmtl
cklkZW50aWZpZXIsIHNvdXJjZVBvcnQsIHNvdXJjZU9yaWdpbik7Cit9CisKK3ZvaWQgV2ViU2hh
cmVkV29ya2VyU2VydmVyOjpkaWRGaW5pc2hGZXRjaGluZ1NoYXJlZFdvcmtlclNjcmlwdChTaGFy
ZWRXb3JrZXImIHdvcmtlciwgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJiBmZXRjaFJlc3Vs
dCkKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXI6OmRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29ya2VyU2NyaXB0IHNoYXJlZFdvcmtlcklkZW50
aWZpZXI9JSIgUFJJdTY0ICIsIHdvcmtlcj0lcCwgc3VjY2Vzcz0lZCIsIHdvcmtlci5pZGVudGlm
aWVyLnRvVUludDY0KCksICZ3b3JrZXIsIGZldGNoUmVzdWx0LmVycm9yLmlzTnVsbCgpKTsKKwor
ICAgIGZvciAoYXV0byBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIDogd29ya2VyLnNoYXJl
ZFdvcmtlck9iamVjdHMua2V5cygpKSB7CisgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0
aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9j
ZXNzSWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIHNlcnZlckNvbm5lY3Rpb24tPm5vdGlmeVdv
cmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24oc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwg
ZmV0Y2hSZXN1bHQuZXJyb3IpOworICAgIH0KKworICAgIGlmICghZmV0Y2hSZXN1bHQuZXJyb3Iu
aXNOdWxsKCkpIHsKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJzLnJlbW92ZSh3b3JrZXIua2V5KCkp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd29ya2VyLmZldGNoUmVzdWx0ID0gV1RG
TW92ZShmZXRjaFJlc3VsdCk7CisKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gd29ya2Vy
LnJlZ2lzdHJhYmxlRG9tYWluKCk7CisgICAgYXV0byogY29udGV4dENvbm5lY3Rpb24gPSBjb250
ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAg
ICBpZiAoIWNvbnRleHRDb25uZWN0aW9uKSB7CisgICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0
aW9uKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGxh
dW5jaFNoYXJlZFdvcmtlcigqY29udGV4dENvbm5lY3Rpb24sIHdvcmtlcik7Cit9CisKK2Jvb2wg
V2ViU2hhcmVkV29ya2VyU2VydmVyOjpuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFi
bGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9t
YWluKSBjb25zdAoreworICAgIGZvciAoYXV0byYgc2hhcmVkV29ya2VyIDogbV9zaGFyZWRXb3Jr
ZXJzLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChyZWdpc3RyYWJsZURvbWFpbi5tYXRjaGVzKHNo
YXJlZFdvcmtlci0+dXJsKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250
ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFi
bGVEb21haW4pCit7CisgICAgQVNTRVJUKCFtX2NvbnRleHRDb25uZWN0aW9ucy5jb250YWlucyhy
ZWdpc3RyYWJsZURvbWFpbikpOworICAgIGlmIChtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRv
bWFpbnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICByZXR1cm47CisKKyAg
ICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNyZWF0
ZUNvbnRleHRDb25uZWN0aW9uIHdpbGwgY3JlYXRlIGEgY29ubmVjdGlvbiIpOworCisgICAgbV9w
ZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5zLmFkZChyZWdpc3RyYWJsZURvbWFpbik7Cisg
ICAgbV9zZXNzaW9uLm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpFc3RhYmxp
c2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyByZWdpc3Ry
YWJsZURvbWFpbiwgbV9zZXNzaW9uLnNlc3Npb25JRCgpIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IFdl
YWtQdHIgeyAqdGhpcyB9LCByZWdpc3RyYWJsZURvbWFpbl0geworICAgICAgICBpZiAoIXdlYWtU
aGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdv
cmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24gc2hv
dWxkIG5vdyBoYXZlIGNyZWF0ZWQgYSBjb25uZWN0aW9uIik7CisKKyAgICAgICAgQVNTRVJUKG1f
cGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWlucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFp
bikpOworICAgICAgICBtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnMucmVtb3ZlKHJl
Z2lzdHJhYmxlRG9tYWluKTsKKworICAgICAgICBpZiAobV9jb250ZXh0Q29ubmVjdGlvbnMuY29u
dGFpbnMocmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IGlmIChuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFi
bGVEb21haW4pKQorICAgICAgICAgICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFi
bGVEb21haW4pOworICAgIH0sIDApOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6
YWRkQ29udGV4dENvbm5lY3Rpb24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbiYgY29udGV4dENvbm5lY3Rpb24pCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2Vy
LCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjphZGRDb250ZXh0Q29ubmVjdGlvbiglcCkgd2ViUHJv
Y2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCAmY29udGV4dENvbm5lY3Rpb24sIGNvbnRleHRDb25u
ZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBBU1NFUlQo
IW1fY29udGV4dENvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbnRleHRDb25uZWN0aW9uLnJlZ2lzdHJh
YmxlRG9tYWluKCkpKTsKKworICAgIG1fY29udGV4dENvbm5lY3Rpb25zLmFkZChjb250ZXh0Q29u
bmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpLCAmY29udGV4dENvbm5lY3Rpb24pOworCisgICAg
Y29udGV4dENvbm5lY3Rpb25DcmVhdGVkKGNvbnRleHRDb25uZWN0aW9uKTsKK30KKwordm9pZCBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uKQoreworICAg
IFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3Zl
Q29udGV4dENvbm5lY3Rpb24oJXApIHdlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgJmNv
bnRleHRDb25uZWN0aW9uLCBjb250ZXh0Q29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigp
LnRvVUludDY0KCkpOworCisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IGNvbnRleHRDb25u
ZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCk7CisKKyAgICBBU1NFUlQobV9jb250ZXh0Q29ubmVj
dGlvbnMuZ2V0KHJlZ2lzdHJhYmxlRG9tYWluKSA9PSAmY29udGV4dENvbm5lY3Rpb24pOworCisg
ICAgbV9jb250ZXh0Q29ubmVjdGlvbnMucmVtb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKKworICAg
IGlmIChuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFi
bGVEb21haW4pKQorICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURv
bWFpbik7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjb250ZXh0Q29ubmVjdGlv
bkNyZWF0ZWQoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4
dENvbm5lY3Rpb24pCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVk
V29ya2VyU2VydmVyOjpjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoJXApIHdlYlByb2Nlc3NJZGVu
dGlmaWVyPSUiIFBSSXU2NCwgJmNvbnRleHRDb25uZWN0aW9uLCBjb250ZXh0Q29ubmVjdGlvbi53
ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgIGF1dG8mIHJlZ2lzdHJhYmxl
RG9tYWluID0gY29udGV4dENvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKTsKKyAgICBmb3Ig
KGF1dG8mIHdvcmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAo
d29ya2VyLT5kaWRGaW5pc2hGZXRjaGluZygpICYmIHJlZ2lzdHJhYmxlRG9tYWluLm1hdGNoZXMo
d29ya2VyLT51cmwpKQorICAgICAgICAgICAgbGF1bmNoU2hhcmVkV29ya2VyKGNvbnRleHRDb25u
ZWN0aW9uLCAqd29ya2VyKTsKKyAgICB9Cit9CisKK2F1dG8gV2ViU2hhcmVkV29ya2VyU2VydmVy
OjpzaGFyZWRXb3JrZXJCeUlkZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmll
ciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyKSAtPiBTaGFyZWRXb3JrZXIqCit7CisgICAgZm9yIChh
dXRvJiB3b3JrZXIgOiBtX3NoYXJlZFdvcmtlcnMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHdv
cmtlci0+aWRlbnRpZmllciA9PSBzaGFyZWRXb3JrZXJJZGVudGlmaWVyKQorICAgICAgICAgICAg
cmV0dXJuIHdvcmtlci5nZXQoKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2F1
dG8gV2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaGFyZWRXb3JrZXJCeU9iamVjdElkZW50aWZpZXIo
V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyKSAtPiBTaGFyZWRXb3JrZXIqCit7CisgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBt
X3NoYXJlZFdvcmtlcnMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHdvcmtlci0+c2hhcmVkV29y
a2VyT2JqZWN0cy5jb250YWlucyhzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKSkKKyAgICAg
ICAgICAgIHJldHVybiB3b3JrZXIuZ2V0KCk7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOwor
fQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hhcmVkV29ya2VyT2JqZWN0SXNHb2lu
Z0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyKQoreworICAgIGF1dG8qIHdvcmtlciA9IHNoYXJlZFdvcmtlckJ5T2Jq
ZWN0SWRlbnRpZmllcihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBSRUxFQVNF
X0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNoYXJlZFdvcmtlck9i
amVjdElzR29pbmdBd2F5OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMs
IHdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCB3b3JrZXIpOworICAgIGlmICghd29ya2VyKQorICAgICAgICByZXR1cm47CisK
KyAgICB3b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMucmVtb3ZlKHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIpOworICAgIGlmICghd29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2h1dERvd25TaGFyZWRXb3JrZXIod29ya2Vy
LT5rZXkoKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaHV0RG93blNoYXJl
ZFdvcmtlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIGtleSkKK3sKKyAgICBhdXRv
IHdvcmtlciA9IG1fc2hhcmVkV29ya2Vycy50YWtlKGtleSk7CisgICAgUkVMRUFTRV9MT0coU2hh
cmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaHV0RG93blNoYXJlZFdvcmtlcjog
c2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgd29ya2VyPSVwIiwgd29ya2VyID8g
d29ya2VyLT5pZGVudGlmaWVyLnRvVUludDY0KCkgOiAwLCB3b3JrZXIuZ2V0KCkpOworICAgIGlm
ICghd29ya2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBjb250ZXh0Q29ubmVjdGlv
biA9IGNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4od29ya2VyLT5yZWdpc3Ry
YWJsZURvbWFpbigpKTsKKyAgICBpZiAoIWNvbnRleHRDb25uZWN0aW9uKQorICAgICAgICByZXR1
cm47CisKKyAgICBjb250ZXh0Q29ubmVjdGlvbi0+dGVybWluYXRlU2hhcmVkV29ya2VyKHdvcmtl
ci0+aWRlbnRpZmllcik7CisKKyAgICBpZiAoIW5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdp
c3RyYWJsZURvbWFpbih3b3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCkpKQorICAgICAgICBjb250
ZXh0Q29ubmVjdGlvbi0+Y29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKTsKK30KKwordm9pZCBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmFkZENvbm5lY3Rpb24oc3RkOjp1bmlxdWVfcHRyPFdlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKK3sKKyAgICBhdXRvIHBy
b2Nlc3NJZGVudGlmaWVyID0gY29ubmVjdGlvbi0+d2ViUHJvY2Vzc0lkZW50aWZpZXIoKTsKKyAg
ICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmFkZENv
bm5lY3Rpb24oJXApOiBwcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQsIGNvbm5lY3Rpb24uZ2V0
KCksIHByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIEFTU0VSVCghbV9jb25uZWN0
aW9ucy5jb250YWlucyhwcm9jZXNzSWRlbnRpZmllcikpOworICAgIG1fY29ubmVjdGlvbnMuYWRk
KHByb2Nlc3NJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKK30KKwordm9pZCBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI6OnJlbW92ZUNvbm5lY3Rpb24oV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIpCit7CisgICAgYXV0byBjb25uZWN0aW9uID0gbV9jb25u
ZWN0aW9ucy50YWtlKHByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRX
b3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlbW92ZUNvbm5lY3Rpb24oJXApOiBwcm9j
ZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQsIGNvbm5lY3Rpb24uZ2V0KCksIHByb2Nlc3NJZGVudGlm
aWVyLnRvVUludDY0KCkpOworICAgIEFTU0VSVChjb25uZWN0aW9uKTsKKworICAgIFZlY3RvcjxX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPiBzaGFyZWRXb3JrZXJPYmplY3Rz
R29pbmdBd2F5OworICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9zaGFyZWRXb3JrZXJzLnZhbHVl
cygpKSB7CisgICAgICAgIGZvciAoYXV0byYgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA6
IHdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5rZXlzKCkpIHsKKyAgICAgICAgICAgIGlmIChz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gcHJvY2Vz
c0lkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgc2hhcmVkV29ya2VyT2JqZWN0c0dvaW5nQXdh
eS5hcHBlbmQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgICAgIH0KKyAgICB9
CisgICAgZm9yIChhdXRvIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgOiBzaGFyZWRXb3Jr
ZXJPYmplY3RzR29pbmdBd2F5KQorICAgICAgICBzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdh
eShzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKK30KKworV2ViU2hhcmVkV29ya2VyU2Vy
dmVyOjpTaGFyZWRXb3JrZXI6OlNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4mIG9yaWdpbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMm
IHdvcmtlck9wdGlvbnMpCisgICAgOiBpZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdvcmtlcklk
ZW50aWZpZXI6OmdlbmVyYXRlKCkpCisgICAgLCBvcmlnaW4ob3JpZ2luKQorICAgICwgdXJsKHVy
bCkKKyAgICAsIHdvcmtlck9wdGlvbnMod29ya2VyT3B0aW9ucykKK3sKK30KKwordm9pZCBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpT
aGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgYXV0byogd29ya2VyID0gc2hhcmVkV29ya2VyQnlJ
ZGVudGlmaWVyKHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HX0VSUk9S
KFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cG9zdEV4Y2VwdGlvblRvV29y
a2VyT2JqZWN0OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCAiLCB3b3JrZXI9JXAi
LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCksIHdvcmtlcik7CisgICAgaWYgKCF3
b3JrZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byBzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyIDogd29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzLmtleXMoKSkgeworICAg
ICAgICBpZiAoYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSkpCisgICAgICAgICAg
ICBzZXJ2ZXJDb25uZWN0aW9uLT5wb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qoc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIHNvdXJjZVVSTCk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJl
ZFdvcmtlclNlcnZlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5jODMxZTBhNDJhYjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaApAQCAt
MCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2Vi
Q29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVE
b21haW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJJZGVudGlmaWVyLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJLZXkuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlckZldGNo
UmVzdWx0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Xb3JrZXJPcHRpb25zLmg+CisjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IENsaWVudE9yaWdp
bjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtTZXNzaW9uOworY2xh
c3MgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZl
ciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI+IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXIoTmV0d29ya1Nlc3Npb24mKTsKKyAgICB+V2ViU2hhcmVkV29ya2VyU2VydmVy
KCk7CisKKyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKTsKKworICAgIHZvaWQgcmVxdWVz
dFNoYXJlZFdvcmtlcihXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgV2ViQ29yZTo6U2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciwgVVJMJiYsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBv
cnQmJiwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmKTsKKyAgICB2b2lkIHNoYXJlZFdvcmtlck9i
amVjdElzR29pbmdBd2F5KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOwor
CisgICAgdm9pZCBhZGRDb250ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uJik7CisgICAgdm9pZCByZW1vdmVDb250ZXh0Q29ubmVjdGlvbihXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CisKKyAgICB2b2lkIGFkZENv
bm5lY3Rpb24oc3RkOjp1bmlxdWVfcHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24+
JiYpOworICAgIHZvaWQgcmVtb3ZlQ29ubmVjdGlvbihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
cik7CisKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBjb250
ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiBkb21haW4pIHsgcmV0dXJuIG1fY29udGV4dENvbm5lY3Rpb25zLmdldChkb21h
aW4pOyB9CisKKyAgICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpT
aGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKwor
cHJpdmF0ZToKKyAgICB2b2lkIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJik7CisKKyAgICBib29sIG5lZWRzQ29udGV4dENvbm5lY3Rpb25G
b3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpIGNv
bnN0OworICAgIHZvaWQgY29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFdlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKKworICAgIHN0cnVjdCBTaGFyZWRXb3JrZXIgOiBD
YW5NYWtlV2Vha1B0cjxTaGFyZWRXb3JrZXI+IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZB
U1RfQUxMT0NBVEVEOworCisgICAgICAgIFNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mLCBjb25zdCBVUkwmLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJik7CisK
KyAgICAgICAgYm9vbCBkaWRGaW5pc2hGZXRjaGluZygpIGNvbnN0IHsgcmV0dXJuICEhZmV0Y2hS
ZXN1bHQuc2NyaXB0OyB9CisgICAgICAgIFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSBrZXkoKSBj
b25zdCB7IHJldHVybiB7IG9yaWdpbiwgdXJsLCB3b3JrZXJPcHRpb25zLm5hbWUgfTsgfQorICAg
ICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0
IHsgcmV0dXJuIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsIH07IH0KKworICAgICAg
ICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXI7CisgICAgICAgIFdl
YkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW47CisgICAgICAgIFVSTCB1cmw7CisgICAgICAgIFdl
YkNvcmU6Oldvcmtlck9wdGlvbnMgd29ya2VyT3B0aW9uczsKKyAgICAgICAgSGFzaE1hcDxXZWJD
b3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1l
c3NhZ2VQb3J0PiBzaGFyZWRXb3JrZXJPYmplY3RzOworICAgICAgICBXZWJDb3JlOjpXb3JrZXJG
ZXRjaFJlc3VsdCBmZXRjaFJlc3VsdDsKKyAgICAgICAgYm9vbCBpc1J1bm5pbmcgeyBmYWxzZSB9
OworICAgIH07CisKKyAgICBTaGFyZWRXb3JrZXIqIHNoYXJlZFdvcmtlckJ5SWRlbnRpZmllcihX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBTaGFyZWRXb3JrZXIqIHNoYXJl
ZFdvcmtlckJ5T2JqZWN0SWRlbnRpZmllcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIGRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29ya2VyU2NyaXB0KFNo
YXJlZFdvcmtlciYsIFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYpOworICAgIHZvaWQgbGF1
bmNoU2hhcmVkV29ya2VyKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24m
LCBTaGFyZWRXb3JrZXImKTsKKyAgICB2b2lkIHBvc3RDb25uZWN0RXZlbnQoV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmLCBjb25zdCBTdHJp
bmcmIHNvdXJjZU9yaWdpbik7CisgICAgdm9pZCBzaHV0RG93blNoYXJlZFdvcmtlcihjb25zdCBX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmKTsKKworICAgIE5ldHdvcmtTZXNzaW9uJiBtX3Nlc3Np
b247CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgc3RkOjp1bmlxdWVf
cHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24+PiBtX2Nvbm5lY3Rpb25zOworICAg
IEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdlYlNoYXJlZFdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24qPiBtX2NvbnRleHRDb25uZWN0aW9uczsKKyAgICBIYXNoU2V0
PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRv
bWFpbnM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXksIHN0ZDo6dW5pcXVl
X3B0cjxTaGFyZWRXb3JrZXI+PiBtX3NoYXJlZFdvcmtlcnM7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVk
V29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mYzliODg2
OGYzYTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1No
YXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMCwwICsx
LDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisj
aW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3
b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25N
ZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyRmV0Y2hSZXN1bHQuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKKyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhmbXQsIC4u
LikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9
JSIgUFJJdTY0ICJdIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OiIgZm10LCB0aGlz
LCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCksICMjX19WQV9BUkdTX18pCisjZGVm
aW5lIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VS
Uk9SKFNoYXJlZFdvcmtlciwgIiVwIC0gW3dlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCAi
XSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgbV93ZWJQcm9j
ZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQorCitXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIs
IElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIg
d2ViUHJvY2Vzc0lkZW50aWZpZXIpCisgICAgOiBtX2NvbnRlbnRDb25uZWN0aW9uKGNvbm5lY3Rp
b24pCisgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQorICAgICwgbV9zZXJ2
ZXIoc2VydmVyKQorICAgICwgbV93ZWJQcm9jZXNzSWRlbnRpZmllcih3ZWJQcm9jZXNzSWRlbnRp
ZmllcikKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uOiIpOworfQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjp+
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpCit7CisgICAgQ09OTkVDVElPTl9SRUxF
QVNFX0xPRygifldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Iik7Cit9CisKK0lQQzo6
Q29ubmVjdGlvbiogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6bWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRlbnRDb25uZWN0aW9uLnB0
cigpOworfQorCitQQUw6OlNlc3Npb25JRCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
OjpzZXNzaW9uSUQoKQoreworICAgIHJldHVybiBzZXJ2ZXIoKS5zZXNzaW9uSUQoKTsKK30KKwor
TmV0d29ya1Nlc3Npb24qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OnNlc3Npb24o
KQoreworICAgIHJldHVybiBtX25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQoKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6cmVxdWVz
dFNoYXJlZFdvcmtlcihXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4sIFdlYkNvcmU6OlNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwg
VVJMJiYgdXJsLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgcG9ydCwgV2ViQ29y
ZTo6V29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMpCit7CisgICAgQVNTRVJUKHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJ
ZGVudGlmaWVyKTsgLy8gRklYTUU6IFNob3VsZCBiZSBhIE1FU1NBR0VfQ0hFQ0soKS4KKyAgICBD
T05ORUNUSU9OX1JFTEVBU0VfTE9HKCJyZXF1ZXN0U2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSB0aGlz
LT5zZXNzaW9uKCkpCisgICAgICAgIHNlc3Npb24tPmVuc3VyZVNoYXJlZFdvcmtlclNlcnZlcigp
LnJlcXVlc3RTaGFyZWRXb3JrZXIoV1RGTW92ZShvcmlnaW4pLCBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLCBXVEZNb3ZlKHVybCksIFdURk1vdmUocG9ydCksIFdURk1vdmUod29ya2VyT3B0
aW9ucykpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OmZldGNo
U2NyaXB0SW5DbGllbnQoY29uc3QgVVJMJiB1cmwsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
V29ya2VyT3B0aW9ucyYgd29ya2VyT3B0aW9ucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBD
T05ORUNUSU9OX1JFTEVBU0VfTE9HKCJmZXRjaFNjcmlwdEluQ2xpZW50OiBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpGZXRjaFNjcmlwdEluQ2xpZW50
IHsgdXJsLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCB3b3JrZXJPcHRpb25zIH0sIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uOjpub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKFdlYkNvcmU6
OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgQ09OTkVDVElP
Tl9SRUxFQVNFX0xPRygibm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbjogc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zLCBzdWNjZXNzPSVkIiwgc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmlzTnVs
bCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
OjpOb3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uIHsgc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllciwgZXJyb3IgfSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9S
KCJwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Q6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uOjpQb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QgeyBzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291
cmNlVVJMIH0pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OnNo
YXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fd2ViUHJv
Y2Vzc0lkZW50aWZpZXIpOyAvLyBGSVhNRTogU2hvdWxkIGJlIGEgTUVTU0FHRV9DSEVDSygpLgor
ICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coInNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5
OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgaWYgKGF1dG8q
IHNlc3Npb24gPSB0aGlzLT5zZXNzaW9uKCkpCisgICAgICAgIHNlc3Npb24tPmVuc3VyZVNoYXJl
ZFdvcmtlclNlcnZlcigpLnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIpOworfQorCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPRwor
I3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtl
ci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kM2RlNGUxYjQ5YmQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtl
ci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw3OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisj
aW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50
aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0Oworc3Ry
dWN0IFdvcmtlck9wdGlvbnM7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3
b3JrUHJvY2VzczsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlcjsKK2NsYXNzIFdlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb24gOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oTmV0d29ya1Byb2Nlc3MmLCBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXImLCBJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllcik7CisgICAgfldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oKTsKKwor
ICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlciYgc2VydmVyKCkgeyByZXR1cm4gbV9zZXJ2ZXI7IH0K
KyAgICBjb25zdCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlcigpIGNvbnN0IHsgcmV0dXJu
IG1fc2VydmVyOyB9CisKKyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKTsKKyAgICBOZXR3
b3JrU2Vzc2lvbiogc2Vzc2lvbigpOworICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdl
YlByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV93ZWJQcm9jZXNzSWRlbnRpZmll
cjsgfQorCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKSBmaW5hbDsKKworICAgIHZvaWQgZmV0Y2hTY3JpcHRJbkNsaWVudChjb25zdCBV
UkwmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpXb3JrZXJPcHRpb25zJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXb3JrZXJG
ZXRjaFJlc3VsdCYmKT4mJik7CisgICAgdm9pZCBub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21w
bGV0aW9uKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVj
dChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMKTsKKworcHJpdmF0ZToKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCisg
ICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFs
OworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gMDsgfQorCisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAgIHZvaWQgcmVxdWVzdFNo
YXJlZFdvcmtlcihXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgV2ViQ29yZTo6U2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciwgVVJMJiYsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQm
JiwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmKTsKKyAgICB2b2lkIHNoYXJlZFdvcmtlck9iamVj
dElzR29pbmdBd2F5KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworCisg
ICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb250ZW50Q29ubmVjdGlvbjsKKyAgICBSZWY8TmV0
d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVy
JiBtX3NlcnZlcjsKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBtX3dlYlByb2Nlc3NJ
ZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
aGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZhZTRhMDgwMzc3OQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2Vy
L1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwy
NiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisj
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAt
PiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgeworICAgIFJl
cXVlc3RTaGFyZWRXb3JrZXIoc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIFdl
YkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciwgVVJMIHVybCwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBwb3J0LCBz
dHJ1Y3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyB3b3JrZXJPcHRpb25zKQorICAgIFNoYXJlZFdv
cmtlck9iamVjdElzR29pbmdBd2F5KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFy
ZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40OWMxMTI0MTUyMTgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDEw
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJMb2dnaW5n
LmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRl
ICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
I2RlZmluZSBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0Vf
TE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gW3dlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCAi
XSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywg
d2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQorCitXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25u
ZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21h
aW4sIFdlYlNoYXJlZFdvcmtlclNlcnZlciYgc2VydmVyKQorICAgIDogbV9jb25uZWN0aW9uKGNv
bm5lY3Rpb24pCisgICAgLCBtX3NlcnZlcihzZXJ2ZXIpCisgICAgLCBtX3JlZ2lzdHJhYmxlRG9t
YWluKHJlZ2lzdHJhYmxlRG9tYWluKQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNF
X0xPRygiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjoiKTsKKyAgICBz
ZXJ2ZXIuYWRkQ29udGV4dENvbm5lY3Rpb24oKnRoaXMpOworfQorCitXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp+V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbigpCit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJ+V2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjoiKTsKKyAgICBpZiAobV9zZXJ2
ZXIgJiYgbV9zZXJ2ZXItPmNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVn
aXN0cmFibGVEb21haW4oKSkgPT0gdGhpcykKKyAgICAgICAgbV9zZXJ2ZXItPnJlbW92ZUNvbnRl
eHRDb25uZWN0aW9uKCp0aGlzKTsKK30KKworV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6d2ViUHJvY2Vzc0lkZW50aWZp
ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZp
ZXIoKTsKK30KKworSVBDOjpDb25uZWN0aW9uJiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjppcGNDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb25u
ZWN0aW9uLmNvbm5lY3Rpb24oKTsKK30KKworSVBDOjpDb25uZWN0aW9uKiBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNv
bnN0Cit7CisgICAgcmV0dXJuICZpcGNDb25uZWN0aW9uKCk7Cit9CisKK3VpbnQ2NF90IFdlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJEZXN0aW5h
dGlvbklEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgp
Cit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJjb25uZWN0aW9uSXNOb0xv
bmdlck5lZWRlZDoiKTsKKyAgICBtX2Nvbm5lY3Rpb24uc2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qo
V2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9S
RUxFQVNFX0xPRygicG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0OiBzaGFyZWRXb3JrZXJJZGVu
dGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAg
ICBpZiAobV9zZXJ2ZXIpCisgICAgICAgIG1fc2VydmVyLT5wb3N0RXhjZXB0aW9uVG9Xb3JrZXJP
YmplY3Qoc2hhcmVkV29ya2VySWRlbnRpZmllciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIHNvdXJjZVVSTCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6bGF1bmNoU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYgb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJl
ZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJP
cHRpb25zJiB3b3JrZXJPcHRpb25zLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYg
ZmV0Y2hSZXN1bHQpCit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJsYXVu
Y2hTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRX
b3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6TGF1bmNoU2hhcmVkV29ya2VyIHsgb3Jp
Z2luLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCB1cmwsIHdvcmtlck9wdGlvbnMsIGZldGNoUmVz
dWx0IH0pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OnBvc3RDb25uZWN0RXZlbnQoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFy
ZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0
JiBwb3J0LCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3sKKyAgICBDT05URVhUX0NPTk5F
Q1RJT05fUkVMRUFTRV9MT0coInBvc3RDb25uZWN0RXZlbnQ6IHNoYXJlZFdvcmtlcklkZW50aWZp
ZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6UG9z
dENvbm5lY3RFdmVudCB7IHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIHBvcnQsIHNvdXJjZU9yaWdp
biB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Ojp0ZXJtaW5hdGVTaGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBz
aGFyZWRXb3JrZXJJZGVudGlmaWVyKQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNF
X0xPRygidGVybWluYXRlU2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBS
SXU2NCwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlRlcm1pbmF0ZVNo
YXJlZFdvcmtlciB7IHNoYXJlZFdvcmtlcklkZW50aWZpZXIgfSk7Cit9CisKKyN1bmRlZiBDT05U
RVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0cKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mMDdmZjAz
YTMzZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1No
YXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAg
LTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIldl
YlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VySWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKK2NsYXNzIFNjcmlwdEJ1ZmZlcjsKK3N0
cnVjdCBDbGllbnRPcmlnaW47CitzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7CitzdHJ1Y3QgV29y
a2VyT3B0aW9uczsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyOworCitjbGFz
cyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIGZpbmFsIDogcHVibGlj
IElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImKTsK
KyAgICB+V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOworCisgICAg
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdDsK
KyAgICBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4o
KSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9CisgICAgSVBDOjpDb25uZWN0
aW9uJiBpcGNDb25uZWN0aW9uKCkgY29uc3Q7CisKKyAgICB2b2lkIGxhdW5jaFNoYXJlZFdvcmtl
cihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVu
dGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiwgY29uc3Qg
V2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmKTsKKyAgICB2b2lkIHBvc3RDb25uZWN0RXZlbnQo
V2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJy
ZWRNZXNzYWdlUG9ydCYsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKKyAgICB2b2lkIHRl
cm1pbmF0ZVNoYXJlZFdvcmtlcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKKwor
ICAgIHZvaWQgY29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKTsKKworICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKK3By
aXZhdGU6CisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29y
a2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VVUkwpOworCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyLgorICAgIElQQzo6
Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKKyAgICB1
aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOworCisgICAg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fY29ubmVjdGlvbjsKKyAgICBXZWFrUHRy
PFdlYlNoYXJlZFdvcmtlclNlcnZlcj4gbV9zZXJ2ZXI7CisgICAgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi5hZTQ3YzEyMmNiYWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjUgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKKyAgICBQb3N0
RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBz
aGFyZWRXb3JrZXJJZGVudGlmaWVyLCBTdHJpbmcgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgU3RyaW5nIHNvdXJjZVVSTCkKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9M
b2dnaW5nLmgKaW5kZXggMWM0MmQwNDBjMWE5Li5kZTMyZjgxNzE3MTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vTG9nZ2luZy5oCkBAIC05Nyw2ICs5Nyw3IEBAIGV4dGVybiAiQyIgewogICAgIE0oU2Vydmlj
ZVdvcmtlcikgXAogICAgIE0oU2Vzc2lvblN0YXRlKSBcCiAgICAgTShTaGFyZWREaXNwbGF5TGlz
dHMpIFwKKyAgICBNKFNoYXJlZFdvcmtlcikgXAogICAgIE0oU3RvcmFnZSkgXAogICAgIE0oU3Rv
cmFnZUFQSSkgXAogICAgIE0oVGV4dElucHV0KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQppbmRleCA3ZWJmYTUxNmI1MDMuLjFhMjYxZTBiMTBkZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0zMDMsMTAgKzMwMywxMyBAQCBk
ZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2Vi
Q29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3Jl
OjpTaGFyZWRTdHJpbmdIYXNoJywKKyAgICAgICAgJ1dlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50
aWZpZXInLAorICAgICAgICAnV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcics
CiAgICAgICAgICdXZWJDb3JlOjpTbGVlcERpc2FibGVySWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJBcHBlbmRNb2RlJywKICAgICAgICAgJ1dlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29y
ZTo6U3RvcmFnZVR5cGUnLAorICAgICAgICAnV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9y
dCcsCiAgICAgICAgICdXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0SWRlbnRpZmllcicsCiAgICAg
ICAgICdXZWJDb3JlOjpXZWJMb2NrSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpXZWJT
b2NrZXRJZGVudGlmaWVyJywKQEAgLTg1MSw2ICs4NTQsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlw
ZSh0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6OlRleHRDaGVja2luZ1R5cGUnOiBbJzxXZWJDb3Jl
L1RleHRDaGVja2luZy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGEn
OiBbJzxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGUnOiBbJzxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5oPiddLAorICAgICAgICAnV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCc6IFsnPFdl
YkNvcmUvTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlVz
ZWRMZWdhY3lUTFMnOiBbJzxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2VCYXNlLmg+J10sCiAgICAg
ICAgICdXZWJDb3JlOjpWaWRlb1ByZXNldERhdGEnOiBbJzxXZWJDb3JlL1ZpZGVvUHJlc2V0Lmg+
J10sCiAgICAgICAgICdXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMnOiBbJzxXZWJDb3JlL1Zp
ZXdwb3J0QXJndW1lbnRzLmg+J10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA0ZjBhMjM1NDQxYjIuLmQ5ZTYw
Y2U3ODk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0xNDEsNiArMTQxLDEwIEBAIE5ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dPcmlnaW5TdG9yZS5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiBO
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHAgQG5vLXVuaWZ5CiAKK05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRX
b3JrZXJTZXJ2ZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbi5jcHAKK05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorCiBOZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkuY3BwCkBAIC03ODMsNiArNzg3LDkgQEAg
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAogV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFibGUuY3BwCiBXZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKIFdlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwCitXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCitXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwCiAKIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyLmNwcAogCkBAIC04ODUsMyArODkyLDcgQEAgUmVtb3RlV2ViTG9j
a1JlZ2lzdHJ5TWVzc2FnZVJlY2VpdmVyLmNwcAogU2VydmljZVdvcmtlckRvd25sb2FkVGFza01l
c3NhZ2VSZWNlaXZlci5jcHAKIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeU1lc3NhZ2VSZWNl
aXZlci5jcHAKIFdlYkxvY2tSZWdpc3RyeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorV2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorV2Vi
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKK1dlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKaW5kZXggYTY3ODM2N2E3NzVhLi4zMzAyMGJkNWMzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAt
NTI5LDcgKzUyOSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6dGVybWluYXRlV2ViUHJv
Y2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OnRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIpCiB7CiAgICAgaWYgKFJl
ZlB0ciBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihwcm9j
ZXNzSWRlbnRpZmllcikpIHsKLSAgICAgICAgcHJvY2Vzcy0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJz
KCk7CisgICAgICAgIHByb2Nlc3MtPmRpc2FibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29y
a2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiAgICAgICAgIHByb2Nlc3MtPnJlcXVlc3RUZXJtaW5h
dGlvbihQcm9jZXNzVGVybWluYXRpb25SZWFzb246OkV4Y2VlZGVkQ1BVTGltaXQpOwogICAgIH0K
IH0KQEAgLTE0MTUsMTYgKzE0MTUsMjEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRE
ZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoV2ViVXNlckNvbnRlbnQKIH0KICNl
bmRpZgogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBXZWJQcm9jZXNz
UG9vbDo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXNzaW9uSUQsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKK30KKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBz
dGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFdlYlByb2Nlc3NQb29s
Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KCp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2VydmljZVdvcmtlclBhZ2VJZGVu
dGlmaWVyLCBzZXNzaW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBXZWJQ
cm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyhXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2VydmljZVdvcmtlclBhZ2VJ
ZGVudGlmaWVyLCBzZXNzaW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAog
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25O
b0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQogewog
ICAgIGlmIChhdXRvKiBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRp
ZmllcihpZGVudGlmaWVyKSkKLSAgICAgICAgcHJvY2Vzcy0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJz
KCk7CisgICAgICAgIHByb2Nlc3MtPmRpc2FibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29y
a2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2Vy
dmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQpAQCAtMTQ2MCw2ICsxNDY1LDEyIEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6ZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5n
KFdlYkNvcmU6OlByb2Nlc3NJCiB9CiAjZW5kaWYKIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpzaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBX
ZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIpKQorICAgICAg
ICBwcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNo
YXJlZFdvcmtlcik7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3Jh
Z2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYgb3JpZ2luLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXpl
LCB1aW50NjRfdCBzcGFjZVJlcXVpcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IHF1b3RhKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSRUxF
QVNFX0xPRyhTdG9yYWdlLCAiJXAgLSBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFn
ZVNwYWNlIiwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IGE0ZTM2NDVlYmFhZS4uNjg0MWEzNGZlMDlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaApAQCAtMzM0LDYgKzMzNCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFy
dFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIHZvaWQgZW5kU2Vydmlj
ZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNl
cnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7CiAjZW5kaWYKKyAgICB2b2lkIHNoYXJlZFdv
cmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIpOworICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCB0ZXJtaW5hdGVX
ZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluCmluZGV4IDEyZDA2Y2ViZDYyYS4uMTU3NTdlZDlhMjUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC02MCw2ICs2MCw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdv
cmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIFN0YXJ0U2VydmljZVdvcmtlckJh
Y2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzSWRlbnRpZmllcikKICAgICBFbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nl
c3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVu
dGlmaWVyKQogI2VuZGlmCisgICAgRXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxl
RG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCisgICAgU2hhcmVk
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciBpZGVudGlmaWVyKQogCiAgICAgU2V0V2ViUHJvY2Vzc0hhc1VwbG9hZHMoV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lELCBib29sIGhhc1VwbG9hZCkKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZTQ5OTM1YzMyNWY2Li4xYWNi
MzQ0NGFmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
MzY5MSwxMSArMzY5MSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VyQWdlbnQoU3RyaW5n
JiYgdXNlckFnZW50KQogICAgICAgICByZXR1cm47CiAgICAgbV91c2VyQWdlbnQgPSBXVEZNb3Zl
KHVzZXJBZ2VudCk7CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgLy8gV2UgdXBk
YXRlIHRoZSBzZXJ2aWNlIHdvcmtlciB0aGVyZSBhdCB0aGUgbW9tZW50IHRvIGJlIHN1cmUgd2Ug
dXNlIHZhbHVlcyB1c2VkIGJ5IGFjdHVhbCB3ZWIgcGFnZXMuCiAgICAgLy8gRklYTUU6IFJlZmFj
dG9yIHRoaXMgd2hlbiB3ZSBoYXZlIGEgYmV0dGVyIFVzZXItQWdlbnQgc3RvcnkuCi0gICAgcHJv
Y2VzcygpLnByb2Nlc3NQb29sKCkudXBkYXRlU2VydmljZVdvcmtlclVzZXJBZ2VudChtX3VzZXJB
Z2VudCk7Ci0jZW5kaWYKKyAgICBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS51cGRhdGVXb3JrZXJV
c2VyQWdlbnQobV91c2VyQWdlbnQpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKaW5kZXggYWZjMjNlZTUzZjEyLi40YjE5YjBkMWQzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTUyOSw3ICs1MjksNyBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpnZXRXZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYg
d2ViUHJvY2Vzc1BybwogYm9vbCBXZWJQcm9jZXNzUG9vbDo6c191c2VTZXBhcmF0ZVNlcnZpY2VX
b3JrZXJQcm9jZXNzID0gZmFsc2U7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lk
IFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmIHByb3h5LCBSZWdpc3RyYWJsZURv
bWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxl
RG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBz
ZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8q
IHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZv
clNlc3Npb25JRChzZXNzaW9uSUQpOwogICAgIGlmICghd2Vic2l0ZURhdGFTdG9yZSkKQEAgLTU0
Niw3ICs1NDYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldAogICAgIGlmIChzZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXIpIHsKICAgICAgICAgLy8gVGhpcyBpcyBhIHNlcnZpY2Ugd29ya2Vy
IGZvciBhIHNlcnZpY2Ugd29ya2VyIHBhZ2Ugc28gd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgdXNl
IHVzZSB0aGUgcGFnZSdzIFdlYlByb2Nlc3MgZm9yIHRoZSBzZXJ2aWNlIHdvcmtlci4KICAgICAg
ICAgaWYgKChzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9j
ZXNzRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXItPnByb2Nlc3NJZGVu
dGlmaWVyKCkpKSkgewotICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5h
YmxlU2VydmljZVdvcmtlcnMocHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXJGb3JTZXJ2aWNlV29ya2VycygpKTsKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHktPmVuYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2
aWNlV29ya2VyLCBwcm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZv
cldvcmtlcnMoKSk7CiAgICAgICAgICAgICBpZiAoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+
aXNJblByb2Nlc3NDYWNoZSgpKSB7CiAgICAgICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPndlYlBy
b2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nlc3MoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIFdl
YlByb2Nlc3NDYWNoZTo6U2hvdWxkU2h1dERvd25Qcm9jZXNzOjpObyk7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKCFzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkp
OwpAQCAtNTY0LDcgKzU2NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZp
Y2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0CiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkg
PSBwcm9jZXNzLnB0cigpOwotICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+
ZW5hYmxlU2VydmljZVdvcmtlcnMocHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXJGb3JTZXJ2aWNlV29ya2VycygpKTsKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHktPmVuYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpT
ZXJ2aWNlV29ya2VyLCBwcm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
ckZvcldvcmtlcnMoKSk7CiAKICAgICAgICAgICAgIGlmIChzZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpIHsKICAgICAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+
d2ViUHJvY2Vzc0NhY2hlKCkucmVtb3ZlUHJvY2Vzcygqc2VydmljZVdvcmtlclByb2Nlc3NQcm94
eSwgV2ViUHJvY2Vzc0NhY2hlOjpTaG91bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKQEAgLTU3Nyw3
ICs1NzcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldAogICAgIH0KIAogICAgIGlmICghc2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eSkgewotICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9
IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMoKnByb2Nlc3NQb29sLCBS
ZWdpc3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9y
ZSk7CisgICAgICAgIGF1dG8gbmV3UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVh
dGVGb3JXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwg
KnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAq
d2Vic2l0ZURhdGFTdG9yZSk7CiAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBu
ZXdQcm9jZXNzUHJveHkucHRyKCk7CiAKICAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9M
T0dfU1RBVElDKFNlcnZpY2VXb3JrZXIsICJlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIGNyZWF0aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHBy
b2Nlc3MgKHByb2Nlcz0lcCwgUElEPSVkKSIsIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIHNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOwpAQCAtNTg2LDIw
ICs1ODYsNzAgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXQKICAgICAgICAgcHJvY2Vzc1Bvb2wt
Pm1fcHJvY2Vzc2VzLmFwcGVuZChXVEZNb3ZlKG5ld1Byb2Nlc3NQcm94eSkpOwogICAgIH0KIAot
ICAgIEFTU0VSVCghc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmNvbnRhaW5zKCpzZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5KSk7Ci0gICAgc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eSk7CisgICAgd29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpzZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5KTsKIAotICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkt
PmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3Jr
ZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcy52
YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5z
dG9yZSgpLCByZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgaWYgKCFwcm9jZXNzUG9vbC0+bV9zZXJ2
aWNlV29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5LT5zZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VX
b3JrZXJVc2VyQWdlbnQpOworICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlz
aFNlcnZpY2VXb3JrZXJDb250ZXh0KHByb2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2VzID8g
cHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5t
X2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVEb21h
aW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQor
ICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRXb3JrZXJVc2VyQWdlbnQocHJv
Y2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFnZW50KTsKIH0KKyNlbmRpZgogCi12b2lkIFdlYlByb2Nl
c3NQb29sOjpyZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkm
IHByb2Nlc3MpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2Vz
KFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIHsKLSAgICBBU1NFUlQoc2VydmljZVdvcmtlclBy
b2Nlc3NlcygpLmNvbnRhaW5zKHByb2Nlc3MpKTsKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
KCkucmVtb3ZlKHByb2Nlc3MpOworICAgIEFTU0VSVCh3b3JrZXJQcm9jZXNzZXMoKS5jb250YWlu
cyhwcm9jZXNzKSk7CisgICAgd29ya2VyUHJvY2Vzc2VzKCkucmVtb3ZlKHByb2Nlc3MpOworfQor
Cit2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3Ry
YWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byogd2Vic2l0ZURhdGFTdG9y
ZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Np
b25JRCk7CisgICAgaWYgKCF3ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICB3ZWJzaXRlRGF0YVN0
b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOworICAgIGlm
ICghcHJvY2Vzc1Bvb2xzKCkuc2l6ZSgpKQorICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UmVmPFdlYlByb2Nlc3NQb29sPj4gc2hhcmVkV29ya2VyUHJvY2Vzc1Bvb2woV2ViUHJvY2Vzc1Bv
b2w6OmNyZWF0ZShBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCkuZ2V0KCkp
KTsKKworICAgIC8vIEFyYml0cmFyaWx5IGNob29zZSB0aGUgZmlyc3QgcHJvY2VzcyBwb29sIHRv
IGhvc3QgdGhlIHNoYXJlZCB3b3JrZXIgcHJvY2Vzcy4KKyAgICBhdXRvKiBwcm9jZXNzUG9vbCA9
IHByb2Nlc3NQb29scygpWzBdOworICAgIEFTU0VSVChwcm9jZXNzUG9vbCk7CisKKyAgICBXZWJQ
cm9jZXNzUHJveHkqIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSB7IG51bGxwdHIgfTsKKworICAg
IGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3NQb29sLT5tX3Byb2Nlc3NlcykgeworICAgICAg
ICBpZiAocHJvY2Vzcy5wdHIoKSA9PSBwcm9jZXNzUG9vbC0+bV9wcmV3YXJtZWRQcm9jZXNzLmdl
dCgpIHx8IHByb2Nlc3MtPmlzRHVtbXlQcm9jZXNzUHJveHkoKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBpZiAoJnByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRl
RGF0YVN0b3JlKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghcHJvY2Vzcy0+
aXNNYXRjaGluZ1JlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSA9IHByb2Nl
c3MucHRyKCk7CisgICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlV29ya2Vy
cyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgcHJvY2Vzc1Bvb2wt
PnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOworCisgICAgICAg
IGlmIChzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSkgeworICAg
ICAgICAgICAgcHJvY2Vzc1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nlc3MoKnNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0NhY2hlOjpTaG91bGRTaHV0RG93blBy
b2Nlc3M6Ok5vKTsKKyAgICAgICAgICAgIEFTU0VSVCghc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5
LT5pc0luUHJvY2Vzc0NhY2hlKCkpOworICAgICAgICB9CisKKyAgICAgICAgV0VCUFJPQ0VTU1BP
T0xfUkVMRUFTRV9MT0dfU1RBVElDKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyByZXVzaW5nIGFuIGV4aXN0aW5nIHdl
YiBwcm9jZXNzIChwcm9jZXNzPSVwLCBQSUQ9JWQpIiwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5
LCBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoIXNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSkgewor
ICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9y
V29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgKnByb2Nl
c3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0
ZURhdGFTdG9yZSk7CisgICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSA9IG5ld1Byb2Nl
c3NQcm94eS5wdHIoKTsKKworICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFU
SUMoU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzIGNyZWF0aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHBy
b2Nlc3M9JXAsIFBJRD0lZCkiLCBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHksIHNoYXJlZFdvcmtl
clByb2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisKKyAgICAgICAgcHJvY2Vzc1Bv
b2wtPmluaXRpYWxpemVOZXdXZWJQcm9jZXNzKG5ld1Byb2Nlc3NQcm94eSwgd2Vic2l0ZURhdGFT
dG9yZSk7CisgICAgICAgIHByb2Nlc3NQb29sLT5tX3Byb2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShu
ZXdQcm9jZXNzUHJveHkpKTsKKyAgICB9CisKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eSk7CisKKyAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkt
PmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVy
ZW5jZXMgPyBwcm9jZXNzUG9vbC0+bV93b3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vz
c1Bvb2wtPm1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3Ry
YWJsZURvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmICghcHJvY2Vz
c1Bvb2wtPm1fd29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQorICAgICAgICBzaGFyZWRXb3JrZXJQ
cm9jZXNzUHJveHktPnNldFdvcmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV93b3JrZXJVc2Vy
QWdlbnQpOwogfQotI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OndpbmRvd1NlcnZlckNv
bm5lY3Rpb25TdGF0ZUNoYW5nZWQoKQogewpAQCAtMTAwMywxMCArMTA1Myw4IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykK
IAogICAgIG1fYmFja0ZvcndhcmRDYWNoZS0+cmVtb3ZlRW50cmllc0ZvclByb2Nlc3MocHJvY2Vz
cyk7CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKHByb2Nlc3MuaXNSdW5u
aW5nU2VydmljZVdvcmtlcnMoKSkKLSAgICAgICAgcmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9j
ZXNzZXMocHJvY2Vzcyk7Ci0jZW5kaWYKKyAgICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdXb3JrZXJz
KCkpCisgICAgICAgIHJlbW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7CiAKICAgICBz
dGF0aWNfY2FzdDxXZWJDb250ZXh0U3VwcGxlbWVudCo+KHN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk+KCkpLT5wcm9jZXNzRGlkQ2xvc2UoJnByb2Nlc3MpOwogCkBAIC0xMDY3
LDEyICsxMTE1LDEyIEBAIFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9j
ZXNzRm9yUmVnaXN0cmFibGVEb21haW4oV2Vic2l0ZURhdGFTdG9yCiB9CiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCi1Vc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIFdlYlByb2Nl
c3NQb29sOjp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMo
KQorVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBXZWJQcm9jZXNzUG9vbDo6dXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKQogewotICAgIGlmICghbV91c2Vy
Q29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyKQotICAgICAgICBtX3VzZXJDb250ZW50
Q29udHJvbGxlckZvclNlcnZpY2VXb3JrZXIgPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6Y3JlYXRlKCk7CisgICAgaWYgKCFtX3VzZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtlcnMp
CisgICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2VycyA9IFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjpjcmVhdGUoKTsKIAotICAgIHJldHVybiBtX3VzZXJDb250ZW50
Q29udHJvbGxlckZvclNlcnZpY2VXb3JrZXItPmlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gbV91
c2VyQ29udGVudENvbnRyb2xsZXJGb3JXb3JrZXJzLT5pZGVudGlmaWVyKCk7CiB9CiAjZW5kaWYK
IApAQCAtMTExOSwxNSArMTE2NywxMyBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9v
bDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogCiAgICAg
YXV0byBwYWdlID0gcHJvY2Vzcy0+Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBXVEZNb3ZlKHBh
Z2VDb25maWd1cmF0aW9uKSk7CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYg
KCFtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcykgewotICAgICAgICBtX3NlcnZpY2VXb3JrZXJQ
cmVmZXJlbmNlcyA9IHBhZ2UtPnByZWZlcmVuY2VzU3RvcmUoKTsKLSAgICAgICAgZm9yIChhdXRv
JiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSkKLSAgICAg
ICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzLnVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNl
c1N0b3JlKCptX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyk7CisgICAgaWYgKCFtX3dvcmtlclBy
ZWZlcmVuY2VzKSB7CisgICAgICAgIG1fd29ya2VyUHJlZmVyZW5jZXMgPSBwYWdlLT5wcmVmZXJl
bmNlc1N0b3JlKCk7CisgICAgICAgIGZvciAoYXV0byYgd29ya2VyUHJvY2VzcyA6IHdvcmtlclBy
b2Nlc3NlcygpKQorICAgICAgICAgICAgd29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcmVmZXJl
bmNlc1N0b3JlKCptX3dvcmtlclByZWZlcmVuY2VzKTsKICAgICB9CiAgICAgaWYgKHVzZXJDb250
ZW50Q29udHJvbGxlcikKLSAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNl
V29ya2VyID0gdXNlckNvbnRlbnRDb250cm9sbGVyOwotI2VuZGlmCisgICAgICAgIG1fdXNlckNv
bnRlbnRDb250cm9sbGVyRm9yV29ya2VycyA9IHVzZXJDb250ZW50Q29udHJvbGxlcjsKIAogICAg
IGJvb2wgZW5hYmxlUHJvY2Vzc1N3YXBPbkNyb3NzU2l0ZU5hdmlnYXRpb24gPSBwYWdlLT5wcmVm
ZXJlbmNlcygpLnByb2Nlc3NTd2FwT25Dcm9zc1NpdGVOYXZpZ2F0aW9uRW5hYmxlZCgpOwogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0xMTUwLDE2ICsxMTk2LDE0IEBAIFJlZjxXZWJQYWdl
UHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGll
bnQsIFJlZjxBUEk6CiAgICAgcmV0dXJuIHBhZ2U7CiB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCi12b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50
KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlV29y
a2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQogewotICAgIGlmIChtX3NlcnZp
Y2VXb3JrZXJVc2VyQWdlbnQgPT0gdXNlckFnZW50KQorICAgIGlmIChtX3dvcmtlclVzZXJBZ2Vu
dCA9PSB1c2VyQWdlbnQpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3NlcnZpY2VXb3JrZXJVc2Vy
QWdlbnQgPSB1c2VyQWdlbnQ7Ci0gICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6
IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSkKLSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3Mu
c2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQpOworICAg
IG1fd29ya2VyVXNlckFnZW50ID0gdXNlckFnZW50OworICAgIGZvciAoYXV0byYgd29ya2VyUHJv
Y2VzcyA6IHdvcmtlclByb2Nlc3NlcygpKQorICAgICAgICB3b3JrZXJQcm9jZXNzLnNldFdvcmtl
clVzZXJBZ2VudChtX3dvcmtlclVzZXJBZ2VudCk7CiB9Ci0jZW5kaWYKIAogdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6cGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCiB7CkBAIC0xNTM4LDgg
KzE1ODIsMTMgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlU2VydmljZVdvcmtlcnMo
KQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7
ICp0aGlzIH07Ci0gICAgd2hpbGUgKHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb21wdXRlU2l6
ZSgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkuYmVnaW4oKS0+ZGlzYWJsZVNl
cnZpY2VXb3JrZXJzKCk7CisgICAgVmVjdG9yPFJlZjxXZWJQcm9jZXNzUHJveHk+PiBzZXJ2aWNl
V29ya2VyUHJvY2Vzc2VzOworICAgIHdvcmtlclByb2Nlc3NlcygpLmZvckVhY2goWyZdKGF1dG8m
IHByb2Nlc3MpIHsKKyAgICAgICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMo
KSkKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYXBwZW5kKHByb2Nlc3MpOwor
ICAgIH0pOworICAgIGZvciAoYXV0byYgc2VydmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzKQorICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+ZGlzYWJsZVdvcmtl
cnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgog
fQogCkBAIC0xNzY3LDEzICsxODE2LDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcG9ydFdl
YkNvbnRlbnRDUFVUaW1lKFNlY29uZHMgY3B1VGltZSwgdWludDY0X3QgYWN0aXZpdHlTCiAjZW5k
aWYKIH0KIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLVdlYWtIYXNoU2V0PFdlYlByb2Nl
c3NQcm94eT4mIFdlYlByb2Nlc3NQb29sOjpzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkKK1dlYWtI
YXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIFdlYlByb2Nlc3NQb29sOjp3b3JrZXJQcm9jZXNzZXMo
KQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJv
eHk+PiBwcm9jZXNzZXM7CiAgICAgcmV0dXJuIHByb2Nlc3NlczsKIH0KLSNlbmRpZgogCiB2b2lk
IFdlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpCiB7CkBAIC0xNzg1LDIw
ICsxODMyLDI1IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb25z
KCkKICAgICBpZiAoYXV0byogZ3B1UHJvY2VzcyA9IEdQVVByb2Nlc3NQcm94eTo6c2luZ2xldG9u
SWZDcmVhdGVkKCkpCiAgICAgICAgIGdwdVByb2Nlc3MtPnVwZGF0ZVByb2Nlc3NBc3NlcnRpb24o
KTsKICNlbmRpZgotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKwogICAgIC8vIENoZWNrIG9u
IG5leHQgcnVuIGxvb3Agc2luY2UgdGhlIHdlYiBwcm9jZXNzIHByb3h5IHRva2VucyBhcmUgcHJv
YmFibHkgYmVpbmcgdXBkYXRlZC4KICAgICBjYWxsT25NYWluUnVuTG9vcChbXSB7Ci0gICAgICAg
IGZvciAoYXV0byYgc2VydmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
KCkpCi0gICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy51cGRhdGVTZXJ2aWNlV29ya2Vy
UHJvY2Vzc0Fzc2VydGlvbigpOwotICAgIH0pOworICAgICAgICB3b3JrZXJQcm9jZXNzZXMoKS5m
b3JFYWNoKFtdKGF1dG8mIHdvcmtlclByb2Nlc3MpIHsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisgICAgICAgICAgICBpZiAod29ya2VyUHJvY2Vzcy5pc1J1bm5pbmdTZXJ2aWNlV29ya2Vy
cygpKQorICAgICAgICAgICAgICAgIHdvcmtlclByb2Nlc3MudXBkYXRlV29ya2VyUHJvY2Vzc0Fz
c2VydGlvbihXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogI2Vu
ZGlmCisgICAgICAgICAgICBpZiAod29ya2VyUHJvY2Vzcy5pc1J1bm5pbmdTaGFyZWRXb3JrZXJz
KCkpCisgICAgICAgICAgICAgICAgd29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcm9jZXNzQXNz
ZXJ0aW9uKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKTsKKyAgICAg
ICAgfSk7CisgICAgfSk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6OmlzU2VydmljZVdvcmtl
clBhZ2VJRChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgaW5lZmZpY2llbnQuCi0g
ICAgcmV0dXJuIFdURjo6YW55T2Yoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLCBbcGFnZUlEXShh
dXRvJiBwcm9jZXNzKSB7CisgICAgcmV0dXJuIFdURjo6YW55T2Yod29ya2VyUHJvY2Vzc2VzKCks
IFtwYWdlSURdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuIHByb2Nlc3MuaGFzU2Vy
dmljZVdvcmtlclBhZ2VQcm94eShwYWdlSUQpOwogICAgIH0pOwogI2VuZGlmCkBAIC0yMTI0LDE2
ICsyMTc2LDI2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFVzZVNlcGFyYXRlU2VydmljZVdv
cmtlclByb2Nlc3MoYm9vbCB1c2VTZXBhcmF0ZVNlcnZpY2VXCiB9CiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCitzaXplX3QgV2ViUHJvY2Vzc1Bvb2w6OnNlcnZpY2VXb3JrZXJQcm94aWVz
Q291bnQoKSBjb25zdAoreworICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKKyAgICB3b3JrZXJQcm9j
ZXNzZXMoKS5mb3JFYWNoKFsmXShhdXRvJiBwcm9jZXNzKSB7CisgICAgICAgIGlmIChwcm9jZXNz
LmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCisgICAgICAgICAgICArK2NvdW50OworICAgIH0p
OworICAgIHJldHVybiBjb3VudDsKK30KKwogYm9vbCBXZWJQcm9jZXNzUG9vbDo6aGFzU2Vydmlj
ZVdvcmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdAogewotICAgIHJldHVy
biBXVEY6OmFueU9mKHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2Vzcykg
eworICAgIHJldHVybiBXVEY6OmFueU9mKHdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9j
ZXNzKSB7CiAgICAgICAgIHJldHVybiBwcm9jZXNzLmhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5k
QWN0aXZpdHlGb3JUZXN0aW5nKCk7CiAgICAgfSk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6
Omhhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gV1RGOjphbnlPZihzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8m
IHByb2Nlc3MpIHsKKyAgICByZXR1cm4gV1RGOjphbnlPZih3b3JrZXJQcm9jZXNzZXMoKSwgW10o
YXV0byYgcHJvY2VzcykgewogICAgICAgICByZXR1cm4gcHJvY2Vzcy5oYXNTZXJ2aWNlV29ya2Vy
QmFja2dyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggZWI2NmQ4OTQ5MGRmLi5lNzBiNmY0Mjlm
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMzc0LDE3
ICszNzQsMjAgQEAgcHVibGljOgogICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NEaWRUZXJtaW5hdGUo
TmV0d29ya1Byb2Nlc3NQcm94eSYsIE5ldHdvcmtQcm9jZXNzUHJveHk6OlRlcm1pbmF0aW9uUmVh
c29uKTsKIAogICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyUGFnZUlEKFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIpIGNvbnN0OworICAgIHZvaWQgcmVtb3ZlRnJvbVdvcmtlclByb2Nlc3NlcyhXZWJQcm9j
ZXNzUHJveHkmKTsKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBzdGF0aWMgdm9p
ZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KE5ldHdvcmtQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2
aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwotICAgIHZvaWQgcmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMo
V2ViUHJvY2Vzc1Byb3h5Jik7Ci0gICAgc2l6ZV90IHNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQo
KSBjb25zdCB7IHJldHVybiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkuY29tcHV0ZVNpemUoKTsg
fQotICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCk7Ci0gICAgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciB1c2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKTsKKyAgICBzdGF0aWMgdm9p
ZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmll
ciwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgc2l6
ZV90IHNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25zdDsKKyAgICBVc2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyIHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3Jr
ZXJzKCk7CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVz
dGluZygpIGNvbnN0OwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlckJhY2tncm91bmRBY3Rpdml0
eUZvclRlc3RpbmcoKSBjb25zdDsKICNlbmRpZgogICAgIHZvaWQgc2VydmljZVdvcmtlclByb2Nl
c3NDcmFzaGVkKFdlYlByb2Nlc3NQcm94eSYpOwogCisgICAgdm9pZCB1cGRhdGVXb3JrZXJVc2Vy
QWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpOworICAgIHN0YXRpYyB2b2lkIGVzdGFibGlz
aFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgcHJvY2Vzc1N1cHByZXNz
aW9uRW5hYmxlZCgpIGNvbnN0OwogI2VuZGlmCkBAIC02MTgsMTMgKzYyMSwxMSBAQCBwcml2YXRl
OgogCiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgV2Vha1B0cjxXZWJQcm9jZXNzUHJveHk+
PiBtX2R1bW15UHJvY2Vzc1Byb3hpZXM7IC8vIExpZ2h0d2VpZ2h0IFdlYlByb2Nlc3NQcm94eSBv
YmplY3RzIHdpdGhvdXQgYmFja2luZyBwcm9jZXNzLgogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotICAgIHN0YXRpYyBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+JiBzZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzKCk7Ci0gICAgYm9vbCBtX3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vz
c0Nvbm5lY3Rpb24geyBmYWxzZSB9OwotICAgIFN0cmluZyBtX3NlcnZpY2VXb3JrZXJVc2VyQWdl
bnQ7Ci0gICAgc3RkOjpvcHRpb25hbDxXZWJQcmVmZXJlbmNlc1N0b3JlPiBtX3NlcnZpY2VXb3Jr
ZXJQcmVmZXJlbmNlczsKLSAgICBSZWZQdHI8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+
IG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yU2VydmljZVdvcmtlcjsKLSNlbmRpZgorICAgIHN0
YXRpYyBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+JiB3b3JrZXJQcm9jZXNzZXMoKTsKKwor
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViUHJlZmVyZW5jZXNTdG9yZT4gbV93b3JrZXJQcmVmZXJlbmNl
czsKKyAgICBSZWZQdHI8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+IG1fdXNlckNvbnRl
bnRDb250cm9sbGVyRm9yV29ya2VyczsKKyAgICBTdHJpbmcgbV93b3JrZXJVc2VyQWdlbnQ7CiAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgUmVmUHRyPEdQVVByb2Nlc3NQcm94eT4gbV9n
cHVQcm9jZXNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAK
aW5kZXggY2FjMzY3ZjExMTlmLi41Y2Y4NmNjNzg2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIldl
YlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYnNp
dGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgpAQCAtMTgyLDEx
ICsxODMsMTEgQEAgUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGUo
V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJzaXQKIH0KIAogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKLVJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRl
Rm9yU2VydmljZVdvcmtlcnMoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBSZWdpc3RyYWJs
ZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0
YVN0b3JlKQorUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JX
b3JrZXJzKFdvcmtlclR5cGUgd29ya2VyVHlwZSwgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29s
LCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVN0b3Jl
JiB3ZWJzaXRlRGF0YVN0b3JlKQogewogICAgIGF1dG8gcHJveHkgPSBhZG9wdFJlZigqbmV3IFdl
YlByb2Nlc3NQcm94eShwcm9jZXNzUG9vbCwgJndlYnNpdGVEYXRhU3RvcmUsIElzUHJld2FybWVk
OjpObywgQ3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQsIENhcHRpdmVQb3J0YWxNb2RlOjpEaXNhYmxl
ZCkpOwogICAgIHByb3h5LT5tX3JlZ2lzdHJhYmxlRG9tYWluID0gV1RGTW92ZShyZWdpc3RyYWJs
ZURvbWFpbik7Ci0gICAgcHJveHktPmVuYWJsZVNlcnZpY2VXb3JrZXJzKHByb2Nlc3NQb29sLnVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2aWNlV29ya2VycygpKTsKKyAgICBw
cm94eS0+ZW5hYmxlV29ya2Vycyh3b3JrZXJUeXBlLCBwcm9jZXNzUG9vbC51c2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpKTsKICAgICBwcm94eS0+Y29ubmVjdCgpOwog
ICAgIHJldHVybiBwcm94eTsKIH0KQEAgLTk5NSwxMCArOTk2LDEwIEBAIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUoKQogICAgIGZvciAoYXV0byYgY2FsbGJhY2sg
OiBpc1Jlc3BvbnNpdmVDYWxsYmFja3MpCiAgICAgICAgIGNhbGxiYWNrKGlzV2ViUHJvY2Vzc1Jl
c3BvbnNpdmUpOwogCi0gICAgLy8gSWYgdGhlIHdlYiBwcm9jZXNzIGJlY29tZXMgdW5yZXNwb25z
aXZlIGFuZCBvbmx5IHJ1bnMgc2VydmljZSB3b3JrZXJzLCBraWxsIGl0IG91cnNlbHZlcyBzaW5j
ZSB0aGVyZSBhcmUgbm8gbmF0aXZlIGNsaWVudHMgdG8gZG8gaXQuCi0gICAgaWYgKGlzUnVubmlu
Z1NlcnZpY2VXb3JrZXJzKCkgJiYgbV9wYWdlTWFwLmlzRW1wdHkoKSkgewotICAgICAgICBXRUJQ
Uk9DRVNTUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUGVyZm9ybWFuY2VMb2dnaW5nLCAiZGlkQmVj
b21lVW5yZXNwb25zaXZlOiBUZXJtaW5hdGluZyBzZXJ2aWNlIHdvcmtlci1vbmx5IHdlYiBwcm9j
ZXNzIGJlY2F1c2UgaXQgaXMgdW5yZXNwb25zaXZlIik7Ci0gICAgICAgIGRpc2FibGVTZXJ2aWNl
V29ya2VycygpOworICAgIC8vIElmIHRoZSB3ZWIgcHJvY2VzcyBiZWNvbWVzIHVucmVzcG9uc2l2
ZSBhbmQgb25seSBydW5zIHNlcnZpY2Uvc2hhcmVkIHdvcmtlcnMsIGtpbGwgaXQgb3Vyc2VsdmVz
IHNpbmNlIHRoZXJlIGFyZSBubyBuYXRpdmUgY2xpZW50cyB0byBkbyBpdC4KKyAgICBpZiAoaXNS
dW5uaW5nV29ya2VycygpICYmIG1fcGFnZU1hcC5pc0VtcHR5KCkpIHsKKyAgICAgICAgV0VCUFJP
Q0VTU1BST1hZX1JFTEVBU0VfTE9HX0VSUk9SKFBlcmZvcm1hbmNlTG9nZ2luZywgImRpZEJlY29t
ZVVucmVzcG9uc2l2ZTogVGVybWluYXRpbmcgd29ya2VyLW9ubHkgd2ViIHByb2Nlc3MgYmVjYXVz
ZSBpdCBpcyB1bnJlc3BvbnNpdmUiKTsKKyAgICAgICAgZGlzYWJsZVdvcmtlcnMoeyBXb3JrZXJU
eXBlOjpTZXJ2aWNlV29ya2VyLCBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgfSk7CiAgICAgICAg
IHRlcm1pbmF0ZSgpOwogICAgIH0KIH0KQEAgLTE2OTQsOCArMTY5NSw5IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZShjb25zdCBVUkwm
IHVybCkKICAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4geyB1cmwgfTsKICAgICBpZiAobV9yZWdpc3RyYWJsZURvbWFpbiAmJiAqbV9yZWdpc3Ry
YWJsZURvbWFpbiAhPSByZWdpc3RyYWJsZURvbWFpbikgewogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKLSAgICAgICAgZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgICAgIGRpc2FibGVX
b3JrZXJzKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogI2VuZGlmCisKICAgICAgICAgLy8g
TnVsbCBvdXQgcmVnaXN0cmFibGUgZG9tYWluIHNpbmNlIHRoaXMgcHJvY2VzcyBoYXMgbm93IGJl
ZW4gdXNlZCBmb3Igc2V2ZXJhbCBkb21haW5zLgogICAgICAgICBtX3JlZ2lzdHJhYmxlRG9tYWlu
ID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB9OwogICAgICAgICByZXR1cm47CkBAIC0x
ODY2LDYwICsxODY4LDg1IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNl
V29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzCiB7CiAgICAgV0VCUFJP
Q0VTU1BST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29u
dGV4dDogU3RhcnRlZCIpOwogICAgIG1hcmtQcm9jZXNzQXNSZWNlbnRseVVzZWQoKTsKLSAgICBz
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFNlcnZpY2VX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRl
ZmF1bHRQYWdlR3JvdXAoKS5wYWdlR3JvdXBJRCgpLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlv
bi0+c2VydmljZVdvcmtlclBhZ2VQcm94eUlELCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+
c2VydmljZVdvcmtlclBhZ2VJRCwgc3RvcmUsIHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXIsIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5pbml0aWFsaXph
dGlvbkRhdGEgfSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAg
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hTZXJ2aWNl
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bvb2woKS5k
ZWZhdWx0UGFnZUdyb3VwKCkucGFnZUdyb3VwSUQoKSwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24tPndvcmtlclBhZ2VQcm94eUlELCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+d29ya2Vy
UGFnZUlELCBzdG9yZSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRp
ZmllciwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmluaXRpYWxpemF0aW9uRGF0YSB9LCBb
dGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHdlYWtU
aGlzKQogICAgICAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJl
c3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dDogRmluaXNoZWQiKTsKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKICAgICB9LCAwKTsKIH0KKyNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQ
cm94eTo6c2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkK
K3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQpCiB7Ci0gICAgQVNTRVJUKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U2V0VXNlckFn
ZW50IHsgdXNlckFnZW50IH0sIDApOworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBp
ZiAobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2VyQWdlbnQgfSwg
MCk7CisjZW5kaWYKKyAgICBpZiAobV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbikKKyAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpT
ZXRVc2VyQWdlbnQgeyB1c2VyQWdlbnQgfSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5
Ojp1cGRhdGVTZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlJiBzdG9yZSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVXb3JrZXJQcmVmZXJl
bmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogewotICAgIEFTU0VS
VChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbik7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZVByZWZlcmVuY2VzU3RvcmUgeyBzdG9yZSB9
LCAwKTsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYgKG1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDApOworI2VuZGlm
CisgICAgaWYgKG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24pCisgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlUHJlZmVy
ZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDApOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBk
YXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKQorLy8gRklYTUU6IENsaWVudHMgZG8g
bm90IHByb3Blcmx5IGdldCBwb3B1bGF0ZWQgaW4gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbi4K
K3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtl
clR5cGUgd29ya2VyVHlwZSkKIHsKLSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJv
Y2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbjoiKTsK
LSAgICBBU1NFUlQobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pOwotICAgIGlmICghbV9zZXJ2
aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAgYXV0byYgd29ya2VySW5mb3JtYXRpb24gPSB3b3Jr
ZXJUeXBlID09IFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/IG1fc2hhcmVkV29ya2VySW5mb3Jt
YXRpb24gOiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsKKyAgICBBU1NFUlQod29ya2VySW5m
b3JtYXRpb24pOworICAgIGlmICghd29ya2VySW5mb3JtYXRpb24pCiAgICAgICAgIHJldHVybjsK
IAotICAgIGJvb2wgc2hvdWxkVGFrZUZvcmVncm91bmRBY3Rpdml0eSA9IFdURjo6YW55T2YobV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3NlcywgWyZdKGF1dG8mIHByb2Nl
c3MpIHsKKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24s
ICJ1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uOiB3b3JrZXJUeXBlPSV7cHVibGljfXMiLCB3
b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/ICJzaGFyZWQiIDogInNlcnZp
Y2UiKTsKKworICAgIGJvb2wgc2hvdWxkVGFrZUZvcmVncm91bmRBY3Rpdml0eSA9IFdURjo6YW55
T2Yod29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3NlcywgWyZdKGF1dG8mIHByb2Nlc3Mp
IHsKICAgICAgICAgcmV0dXJuICZwcm9jZXNzICE9IHRoaXMgJiYgISFwcm9jZXNzLm1fZm9yZWdy
b3VuZFRva2VuOwogICAgIH0pOwogICAgIGlmIChzaG91bGRUYWtlRm9yZWdyb3VuZEFjdGl2aXR5
KSB7Ci0gICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEZvcmVncm91bmRBY3Rp
dml0eShtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQotICAgICAgICAgICAg
bV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuZm9yZWdy
b3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3IgZm9yZWdyb3VuZCB2aWV3KHMpIl9zKTsK
KyAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkRm9yZWdyb3VuZEFjdGl2aXR5
KHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCisgICAgICAgICAgICB3b3JrZXJJbmZvcm1h
dGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5mb3JlZ3JvdW5kQWN0aXZpdHkoIldvcmtlciBm
b3IgZm9yZWdyb3VuZCB2aWV3KHMpIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGJvb2wgc2hvdWxkVGFrZUJhY2tncm91bmRBY3Rpdml0eSA9IFdURjo6YW55T2YobV9zZXJ2aWNl
V29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3NlcywgWyZdKGF1dG8mIHByb2Nlc3MpIHsK
KyAgICBib29sIHNob3VsZFRha2VCYWNrZ3JvdW5kQWN0aXZpdHkgPSBXVEY6OmFueU9mKHdvcmtl
ckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMsIFsmXShhdXRvJiBwcm9jZXNzKSB7CiAgICAg
ICAgIHJldHVybiAmcHJvY2VzcyAhPSB0aGlzICYmICEhcHJvY2Vzcy5tX2JhY2tncm91bmRUb2tl
bjsKICAgICB9KTsKICAgICBpZiAoc2hvdWxkVGFrZUJhY2tncm91bmRBY3Rpdml0eSkgewotICAg
ICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkobV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKLSAgICAgICAgICAgIG1fc2Vydmlj
ZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rp
dml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tncm91bmQgdmlldyhzKSJfcyk7CisgICAgICAg
IGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEJhY2tncm91bmRBY3Rpdml0eSh3b3JrZXJJ
bmZvcm1hdGlvbi0+YWN0aXZpdHkpKQorICAgICAgICAgICAgd29ya2VySW5mb3JtYXRpb24tPmFj
dGl2aXR5ID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5KCJXb3JrZXIgZm9yIGJhY2tn
cm91bmQgdmlldyhzKSJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9o
YXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcpIHsKKyAgICBpZiAod29ya2VyVHlw
ZSA9PSBXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyICYmIG1faGFzU2VydmljZVdvcmtlckJhY2tn
cm91bmRQcm9jZXNzaW5nKSB7CiAgICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQ
cm9jZXNzU3VzcGVuc2lvbiwgIlNlcnZpY2UgV29ya2VyIGZvciBiYWNrZ3JvdW5kIHByb2Nlc3Np
bmciKTsKLSAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFj
dGl2aXR5KG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCi0gICAgICAgICAg
ICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNr
Z3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2VyIGZvciBiYWNrZ3JvdW5kIHByb2Nlc3Npbmci
X3MpOworICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0
aXZpdHkod29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKKyAgICAgICAgICAgIHdvcmtlcklu
Zm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiU2Vy
dmljZSBXb3JrZXIgZm9yIGJhY2tncm91bmQgcHJvY2Vzc2luZyJfcyk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBu
dWxscHRyOworICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG51bGxwdHI7CiB9CiAK
K3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0KGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVn
aXN0cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAi
ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dDogU3RhcnRlZCIpOworICAgIG1hcmtQcm9jZXNz
QXNSZWNlbnRseVVzZWQoKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBy
b2Nlc3M6OkVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVsdFBhZ2VHcm91cCgpLnBhZ2VHcm91cElEKCksIG1f
c2hhcmVkV29ya2VySW5mb3JtYXRpb24tPndvcmtlclBhZ2VQcm94eUlELCBtX3NoYXJlZFdvcmtl
ckluZm9ybWF0aW9uLT53b3JrZXJQYWdlSUQsIHN0b3JlLCByZWdpc3RyYWJsZURvbWFpbiwgbV9z
aGFyZWRXb3JrZXJJbmZvcm1hdGlvbi0+aW5pdGlhbGl6YXRpb25EYXRhIH0sIFt0aGlzLCB3ZWFr
VGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBpZiAod2Vha1RoaXMpCisgICAg
ICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0YWJs
aXNoU2hhcmVkV29ya2VyQ29udGV4dDogRmluaXNoZWQiKTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKKyAgICB9LCAwKTsKK30KKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKwog
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3Mo
V2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKIHsKICAgICBpZiAoIW1fc2VydmljZVdvcmtlckluZm9y
bWF0aW9uKQpAQCAtMTkyNyw3ICsxOTU0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlZ2lz
dGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKIAog
ICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAicmVnaXN0ZXJT
ZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzczogY2xpZW50UHJvY2Vzcz0lcCwgY2xpZW50UElEPSVk
IiwgJnByb3h5LCBwcm94eS5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2VzLmFkZChwcm94eSk7Ci0gICAgdXBkYXRlU2Vy
dmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNz
ZXJ0aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94
eSYgcHJveHkpCkBAIC0xOTM3LDcgKzE5NjQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dW5y
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveAog
CiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJ1bnJlZ2lz
dGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3M6IGNsaWVudFByb2Nlc3M9JXAsIGNsaWVudFBJ
RD0lZCIsICZwcm94eSwgcHJveHkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgbV9zZXJ2aWNl
V29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3Nlcy5yZW1vdmUocHJveHkpOwotICAgIHVw
ZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBkYXRlV29ya2VyUHJv
Y2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KIAogYm9vbCBXZWJQ
cm9jZXNzUHJveHk6Omhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5n
KCkgY29uc3QKQEAgLTE5NTcsNyArMTk4NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzdGFy
dFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZygpCiAKICAgICBXRUJQUk9DRVNTUFJP
WFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJzdGFydFNlcnZpY2VXb3JrZXJCYWNr
Z3JvdW5kUHJvY2Vzc2luZyIpOwogICAgIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9j
ZXNzaW5nID0gdHJ1ZTsKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigp
OworICAgIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6U2VydmljZVdv
cmtlcik7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmRTZXJ2aWNlV29ya2VyQmFja2dy
b3VuZFByb2Nlc3NpbmcoKQpAQCAtMTk2NywyMyArMTk5NCwzOSBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6ZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKCkKIAogICAgIFdFQlBS
T0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgImVuZFNlcnZpY2VXb3Jr
ZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyIpOwogICAgIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91
bmRQcm9jZXNzaW5nID0gZmFsc2U7Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3Nl
cnRpb24oKTsKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6OlNl
cnZpY2VXb3JrZXIpOwogfQogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAotdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OmRpc2FibGVTZXJ2aWNlV29ya2VycygpCit2b2lkIFdlYlByb2Nl
c3NQcm94eTo6ZGlzYWJsZVdvcmtlcnMoT3B0aW9uU2V0PFdvcmtlclR5cGU+IHdvcmtlclR5cGUp
CiB7Ci0gICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKKyAgICBBU1NFUlQoIXdv
cmtlclR5cGUuaXNFbXB0eSgpKTsKKworICAgIGJvb2wgZGlkQ2hhbmdlID0gZmFsc2U7CisgICAg
aWYgKHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikgJiYgbV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pIHsKKyAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3Jt
YXRpb24gPSB7IH07CisgICAgICAgIGRpZENoYW5nZSA9IHRydWU7CisgICAgfQorICAgIGlmICh3
b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlcikgJiYgbV9zaGFyZWRX
b3JrZXJJbmZvcm1hdGlvbikgeworICAgICAgICBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uID0g
eyB9OworICAgICAgICBkaWRDaGFuZ2UgPSB0cnVlOworICAgIH0KKyAgICBpZiAoIWRpZENoYW5n
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNl
cnZpY2VXb3JrZXIsICJkaXNhYmxlU2VydmljZVdvcmtlcnM6Iik7Ci0gICAgbV9zZXJ2aWNlV29y
a2VySW5mb3JtYXRpb24gPSB7IH07CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFBy
b2Nlc3MsICJkaXNhYmxlV29ya2VyczogRGlzYWJsaW5nIHdvcmtlcnMgKFNoYXJlZFdvcmtlcnM9
JWQsIFNlcnZpY2VXb3JrZXJzPSVkKSIsIHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6
U2hhcmVkV29ya2VyKSwgd29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29y
a2VyKSk7CisKICAgICB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwogCisg
ICAgaWYgKCFpc1J1bm5pbmdXb3JrZXJzKCkpCisgICAgICAgIHByb2Nlc3NQb29sKCkucmVtb3Zl
RnJvbVdvcmtlclByb2Nlc3NlcygqdGhpcyk7CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
Ci0gICAgcHJvY2Vzc1Bvb2woKS5yZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcygqdGhp
cyk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNs
b3NlIHsgfSwgMCk7CisgICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2Vy
dmljZVdvcmtlcikpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpDbG9zZSB7IH0sIDApOwogI2VuZGlmCisgICAgaWYgKHdvcmtlclR5cGUuY29u
dGFpbnMoV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9zZSB7IH0sIDApOwog
CiAgICAgbWF5YmVTaHV0RG93bigpOwogfQpAQCAtMjAwNCwxMSArMjA0NywxMyBAQCBzdGF0aWMg
VmVjdG9yPHN0ZDo6cGFpcjxXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEsIFVSTD4+IGNv
bnRlbnRSdWxlTGlzdHNGcgogfQogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFi
bGVTZXJ2aWNlV29ya2Vycyhjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJiB1
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmVu
YWJsZVdvcmtlcnMoV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBjb25zdCBVc2VyQ29udGVudENvbnRy
b2xsZXJJZGVudGlmaWVyJiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKQogewotICAg
IEFTU0VSVCghbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pOwotICAgIFdFQlBST0NFU1NQUk9Y
WV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiZW5hYmxlU2VydmljZVdvcmtlcnM6Iik7Ci0g
ICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gPSBTZXJ2aWNlV29ya2VySW5mb3JtYXRpb24g
eworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiZW5hYmxl
V29ya2Vyczogd29ya2VyVHlwZT0ldSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih3b3JrZXJUeXBl
KSk7CisgICAgYXV0byYgd29ya2VySW5mb3JtYXRpb24gPSB3b3JrZXJUeXBlID09IFdvcmtlclR5
cGU6OlNoYXJlZFdvcmtlciA/IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gOiBtX3NlcnZpY2VX
b3JrZXJJbmZvcm1hdGlvbjsKKyAgICBBU1NFUlQoIXdvcmtlckluZm9ybWF0aW9uKTsKKworICAg
IHdvcmtlckluZm9ybWF0aW9uID0gV29ya2VySW5mb3JtYXRpb24gewogICAgICAgICBXZWJQYWdl
UHJveHlJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLAogICAgICAgICBQYWdlSWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKSwKICAgICAgICAgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSB7CkBAIC0y
MDIxLDkgKzIwNjYsOCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlU2VydmljZVdvcmtl
cnMoY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcgogICAgICAgICB7IH0KICAg
ICB9OwogICAgIHVwZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7Ci0jaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0
aW9uKCk7Ci0jZW5kaWYKKworICAgIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24od29ya2Vy
VHlwZSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVTbGVlcERpc2FibGVy
KFNsZWVwRGlzYWJsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcmVhc29u
LCBib29sIGRpc3BsYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CmluZGV4IGY1MTRiOTkxNmFkNC4uMTkyZDVkMmI2ZjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMTM2LDkgKzEzNiwxMyBAQCBwdWJsaWM6CiAKICAg
ICBlbnVtIGNsYXNzIFNob3VsZExhdW5jaFByb2Nlc3MgOiBib29sIHsgTm8sIFllcyB9OwogICAg
IGVudW0gY2xhc3MgQ2FwdGl2ZVBvcnRhbE1vZGUgOiBib29sIHsgRGlzYWJsZWQsIEVuYWJsZWQg
fTsKKyAgICBlbnVtIGNsYXNzIFdvcmtlclR5cGUgOiB1aW50MzJfdCB7CisgICAgICAgIFNlcnZp
Y2VXb3JrZXIgPSAxIDw8IDAsCisgICAgICAgIFNoYXJlZFdvcmtlciA9IDEgPDwgMQorICAgIH07
CiAKICAgICBzdGF0aWMgUmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29s
JiwgV2Vic2l0ZURhdGFTdG9yZSosIENhcHRpdmVQb3J0YWxNb2RlLCBJc1ByZXdhcm1lZCwgV2Vi
Q29yZTo6Q3Jvc3NPcmlnaW5Nb2RlID0gV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQs
IFNob3VsZExhdW5jaFByb2Nlc3MgPSBTaG91bGRMYXVuY2hQcm9jZXNzOjpZZXMpOwotICAgIHN0
YXRpYyBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGVGb3JTZXJ2aWNlV29ya2VycyhXZWJQcm9j
ZXNzUG9vbCYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdlYnNpdGVEYXRhU3RvcmUm
KTsKKyAgICBzdGF0aWMgUmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlRm9yV29ya2VycyhXb3Jr
ZXJUeXBlLCBXZWJQcm9jZXNzUG9vbCYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdl
YnNpdGVEYXRhU3RvcmUmKTsKIAogICAgIH5XZWJQcm9jZXNzUHJveHkoKTsKIApAQCAtMTYxLDgg
KzE2NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzSW5Qcm9jZXNzQ2FjaGUoYm9vbCwgV2ls
bFNodXREb3duID0gV2lsbFNodXREb3duOjpObyk7CiAgICAgYm9vbCBpc0luUHJvY2Vzc0NhY2hl
KCkgY29uc3QgeyByZXR1cm4gbV9pc0luUHJvY2Vzc0NhY2hlOyB9CiAKLSAgICB2b2lkIGVuYWJs
ZVNlcnZpY2VXb3JrZXJzKGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImKTsK
LSAgICB2b2lkIGRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgIHZvaWQgZW5hYmxlV29ya2Vy
cyhXb3JrZXJUeXBlLCBjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJik7Cisg
ICAgdm9pZCBkaXNhYmxlV29ya2VycyhPcHRpb25TZXQ8V29ya2VyVHlwZT4pOwogCiAgICAgV2Vi
c2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSgpIGNvbnN0IHsgQVNTRVJUKG1fd2Vic2l0
ZURhdGFTdG9yZSk7IHJldHVybiAqbV93ZWJzaXRlRGF0YVN0b3JlOyB9CiAgICAgdm9pZCBzZXRX
ZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKTsKQEAgLTE5NCw2ICsxOTgsOSBAQCBw
dWJsaWM6CiAKICAgICBib29sIGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkgY29uc3QgeyByZXR1
cm4gISFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsgfQogICAgIGJvb2wgaXNTdGFuZGFsb25l
U2VydmljZVdvcmtlclByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBpc1J1bm5pbmdTZXJ2aWNlV29y
a2VycygpICYmICFwYWdlQ291bnQoKTsgfQorICAgIGJvb2wgaXNSdW5uaW5nU2hhcmVkV29ya2Vy
cygpIGNvbnN0IHsgcmV0dXJuICEhbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbjsgfQorICAgIGJv
b2wgaXNTdGFuZGFsb25lU2hhcmVkV29ya2VyUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIGlzUnVu
bmluZ1NoYXJlZFdvcmtlcnMoKSAmJiAhcGFnZUNvdW50KCk7IH0KKyAgICBib29sIGlzUnVubmlu
Z1dvcmtlcnMoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIHx8IG1f
c2VydmljZVdvcmtlckluZm9ybWF0aW9uOyB9CiAKICAgICBib29sIGlzRHVtbXlQcm9jZXNzUHJv
eHkoKSBjb25zdDsKIApAQCAtMzU5LDEyICszNjYsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCB1
cGRhdGVBdWRpYmxlTWVkaWFBc3NlcnRpb25zKCk7CiAKKyAgICB2b2lkIHNldFdvcmtlclVzZXJB
Z2VudChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3Rv
cmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOworICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVk
V29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgY29uc3QgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZv
aWQgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlKTsKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChj
b25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7Ci0gICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYp
OwotICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2Vi
UHJlZmVyZW5jZXNTdG9yZSYpOwotICAgIGJvb2wgaGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlEKSB7IHJldHVybiBtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbiAmJiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtl
clBhZ2VQcm94eUlEID09IHBhZ2VQcm94eUlEOyB9Ci0gICAgdm9pZCB1cGRhdGVTZXJ2aWNlV29y
a2VyUHJvY2Vzc0Fzc2VydGlvbigpOworICAgIGJvb2wgaGFzU2VydmljZVdvcmtlclBhZ2VQcm94
eShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlEKSB7IHJldHVybiBtX3NlcnZpY2VX
b3JrZXJJbmZvcm1hdGlvbiAmJiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+d29ya2VyUGFn
ZVByb3h5SUQgPT0gcGFnZVByb3h5SUQ7IH0KICAgICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5Jik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5Jik7CiAgICAgYm9vbCBoYXNT
ZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0OwpAQCAtNjQ4
LDE0ICs2NTYsMTUgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIFJlZlB0cjxMb2dnZXI+IG1fbG9n
Z2VyOwogCi0gICAgc3RydWN0IFNlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiB7Ci0gICAgICAgIFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIgc2VydmljZVdvcmtlclBhZ2VQcm94eUlEOwotICAgICAgICBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUGFnZUlEOworICAgIHN0cnVjdCBX
b3JrZXJJbmZvcm1hdGlvbiB7CisgICAgICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd29ya2Vy
UGFnZVByb3h5SUQ7CisgICAgICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdvcmtlclBhZ2VJ
RDsKICAgICAgICAgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSBpbml0aWFsaXphdGlv
bkRhdGE7CiAgICAgICAgIFByb2Nlc3NUaHJvdHRsZXI6OkFjdGl2aXR5VmFyaWFudCBhY3Rpdml0
eTsKICAgICAgICAgV2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5PiBjbGllbnRQcm9jZXNzZXM7
CiAgICAgfTsKLSAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbj4gbV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxXb3JrZXJJbmZvcm1h
dGlvbj4gbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxXb3Jr
ZXJJbmZvcm1hdGlvbj4gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbjsKICAgICBib29sIG1faGFz
U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nIHsgZmFsc2UgfTsKIAogICAgIEhhc2hN
YXA8V2ViQ29yZTo6U2xlZXBEaXNhYmxlcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpTbGVlcERpc2FibGVyPj4gbV9zbGVlcERpc2FibGVyczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY0ZTQwNDQwYjhlMy4uYTg5
ZTFjM2NlMDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTg4MSw2ICs4ODEsNyBAQAogCQk0NjE0RjEzMjI1REVEODc1MDA3MDA2RTcg
LyogR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkFDNTMyNDI1REVEODFFMDAzQjU3RUMgLyogR1BV
UHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzLmggKi87IH07CiAJCTQ2MUNDQ0E1MjMxNDg1QTcw
MEI2NTlCOSAvKiBVSVJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjMyMzY4NTIzMTQ4MzNGMDBBNDhGQTcgLyogVUlS
ZW1vdGVPYmplY3RSZWdpc3RyeS5oICovOyB9OwogCQk0NjFDQ0NBNjIzMTQ4NUFBMDBCNjU5Qjkg
LyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MzIzNjgzMjMxNDgxRUYwMEE0OEZBNyAvKiBXZWJSZW1vdGVP
YmplY3RSZWdpc3RyeS5oICovOyB9OworCQk0NjFFMUJGMjI3OUEwMTE2MDA2QUY1M0IgLyogV2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjFFMUJFRjI3OUEwMTBGMDA2QUY1M0IgLyog
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2M0ZE
NDgwMUVCOTQ1OTYwMEEyOTgyQyAvKiBXS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzRkQ0N0YxRUI5NDU4
NDAwQTI5ODJDIC8qIFdLUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYzRkQ0ODIxRUI5NEVDMDAwQTI5
ODJDIC8qIFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzRkQ0ODExRUI5NEVBRDAwQTI5ODJDIC8qIFByb2Nl
c3NUZXJtaW5hdGlvblJlYXNvbi5oICovOyB9OwogCQk0NjU5RjI1RjI3NUZGNkIyMDBCQkIzNjkg
LyogQ2FwdGl2ZVBvcnRhbE1vZGVPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1OUYyNUUyNzVGRjZCMjAwQkJCMzY5IC8qIENhcHRpdmVQ
b3J0YWxNb2RlT2JzZXJ2ZXIuaCAqLzsgfTsKQEAgLTg5MCw2ICs4OTEsOCBAQAogCQk0NjcxRkYx
RjIzMjE3RUZGMDAxQjY0QzcgLyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzFGRjFEMjMyMTdFRkYwMDFC
NjRDNyAvKiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oICovOyB9OwogCQk0NjdFNDNFODIyNDNG
RjdEMDBCMTM5MjQgLyogV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0U0M0U3MjI0M0ZGNkQwMEIx
MzkyNCAvKiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oICovOyB9OwogCQk0NjgwOUE3
QzIzRDkyMjVFMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODA5QTdBMjNEOTIyNTMwMEMyOTdEMCAvKiBX
ZWJDb29raWVDYWNoZS5oICovOyB9OworCQk0Njk0M0REMDI3NjNGODNBMDA0QjYxMEUgLyogV2Vi
U2hhcmVkV29ya2VyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2OTQzRENGMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJQ
cm92aWRlci5oICovOyB9OworCQk0Njk0M0REMTI3NjNGODNGMDA0QjYxMEUgLyogV2ViU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDY5NDNEQ0QyNzYzRjgzNTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb24uaCAqLzsgfTsKIAkJNDZBMkI2MDkxRTU2NzZBNjAwQzNERURBIC8q
IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZBMkI2MDcxRTU2NzVBMjAwQzNERURBIC8q
IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oICovOyB9OwogCQk0NkIwNTI0
NzIyNjY4RDg1MDAyNjVCOTcgLyogV2ViRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3ND
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkIwNTI0NDIyNjY4RDIzMDAyNjVCOTcgLyogV2ViRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rp
b25BY2Nlc3NDb250cm9sbGVyLmggKi87IH07CiAJCTQ2QkVCNkQ3MjJGQjlCRDcwMDI2OTg2NyAv
KiBTdG9yYWdlQXJlYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZCRUI2RDUyMkZCOUJENjAwMjY5ODY3IC8qIFN0b3JhZ2VBcmVhLmggKi87IH07CkBA
IC04OTksMTAgKzkwMiwxMyBAQAogCQk0NkMzOTIyOTIzMTZFQzREMDA4RUVEOUIgLyogV2ViUGFn
ZVByb3h5SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZDMzkyMjgyMzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIuaCAqLzsgfTsKIAkJNDZDNUI3Q0UyN0FBREREMzAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckZy
YW1lTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkM1QjdDRDI3QUFEREJFMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyRnJhbWVMb2Fk
ZXJDbGllbnQuaCAqLzsgfTsKIAkJNDZDNUI3Q0YyN0FBRERENjAwMEM1QjQ3IC8qIFJlbW90ZVdv
cmtlckxpYldlYlJUQ1Byb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NkM1QjdDQjI3QUFEREJFMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyTGli
V2ViUlRDUHJvdmlkZXIuaCAqLzsgfTsKKwkJNDZDOTE2QUEyNzk5RDBBMjAwMUE0RTdDIC8qIFdl
YlNoYXJlZFdvcmtlclNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDZDOTE2QTkyNzk5RDA5RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNl
cnZlci5oICovOyB9OwogCQk0NkNFM0IxMTIzRDhDODQ5MDAxNkE5NkEgLyogV2ViQmFja0Zvcndh
cmRMaXN0Q291bnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NkNFM0IxMDIzRDhDODNEMDAxNkE5NkEgLyogV2ViQmFja0ZvcndhcmRMaXN0Q291bnRz
LmggKi87IH07CisJCTQ2RDQ4RkNFMjc5OUQ3RTEwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NkQ0OEZDRDI3OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oICovOyB9OwogCQk0NkRGMDYzQzFGMzkwNUY4
MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIg
LyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggKi87IH07CiAJCTQ2RUUyODQ5MjY5RTA0
QUMwMERENDhBQiAvKiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUUyODQ4MjY5RTA0OUIwMERENDhB
QiAvKiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCAqLzsgfTsKIAkJNDZFRTI4NEQyNjlF
MDUyNTAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUUyODRDMjY5RTA1MTcw
MERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggKi87IH07CisJCTQ2
RUUzRThCMjc2M0ZEMkYwMDYwQzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzODY2
NzI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oICov
OyB9OwogCQk0NkYzOEU4QzI0MTZFNjczMDA1OTM3NUEgLyogUnVubmluZ0JvYXJkU2VydmljZXNT
UEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjM4
RThCMjQxNkU2NkQwMDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oICovOyB9Owog
CQk0NkY5QjI2MzIzNTI2RUYzMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkY5QjI2MjIz
NTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggKi87IH07CiAJCTQ5
MzEwMkJEMjY4M0YzRDAwMDJCQjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTMxMDJCQzI2ODNGM0E1MDAyQkI4
ODUgLyogQXBwUHJpdmFjeVJlcG9ydC5oICovOyB9OwpAQCAtMTI3Niw2ICsxMjgyLDcgQEAKIAkJ
NkJFOTY5QzExRTU0RDQ1MjAwOEI3NDgzIC8qIGNvcmVQcmVkaWN0aW9uX21vZGVsIGluIFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkU5NjlDMDFFNTRENDUy
MDA4Qjc0ODMgLyogY29yZVByZWRpY3Rpb25fbW9kZWwgKi87IH07CiAJCTZCRTk2OUNCMUU1NEQ0
Q0YwMDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkU5NjlDOTFFNTRE
NENGMDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5oICov
OyB9OwogCQk2QkU5NjlDRDFFNTRFMDU0MDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0NsYXNzaWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZCRTk2OUNDMUU1NEUwNTQwMDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xh
c3NpZmllci5oICovOyB9OworCQk2Q0FFQ0I2NjI3NDY1QUU0MDBBQjc4RDAgLyogVW5pZmllZFNv
dXJjZTExNi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2Q0FFQ0I1RTI3NDY1QUUzMDBBQjc4RDAgLyogVW5pZmllZFNvdXJjZTExNi5jcHAgKi87IH07
CiAJCTZFRTg0OUM4MTM2OEQ5MzkwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFRTg0OUM2MTM2
OEQ5MkQwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MTE3MjVBOTIyOEQ1NjQzMDAwMTg1
MTQgLyogV2Vic2l0ZUxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3kuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMTcyNUE4MjI4RDU2M0Ew
MDAxODUxNCAvKiBXZWJzaXRlTGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaFBvbGljeS5oICov
OyB9OwogCQk3MTM0QTNEQTI2MDNCOTI1MDA2MjRCRDMgLyogV0tNb2RlbEludGVyYWN0aW9uR2Vz
dHVyZVJlY29nbml6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcxMzRBM0Q5MjYwM0I4MEUwMDYyNEJEMyAvKiBXS01vZGVsSW50ZXJhY3Rpb25HZXN0
dXJlUmVjb2duaXplci5oICovOyB9OwpAQCAtMTM1Myw2ICsxMzYwLDcgQEAKIAkJN0M5RDE1Mzcx
ODQ1ODREQTAwOUQzOTE4IC8qIFdLQnJvd3NpbmdDb250ZXh0R3JvdXBJbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M5RDE1MzYxODQ1ODRE
QTAwOUQzOTE4IC8qIFdLQnJvd3NpbmdDb250ZXh0R3JvdXBJbnRlcm5hbC5oICovOyB9OwogCQk3
Q0EyNTRFQjE4Mjk5M0NFMDBGQzhBNDEgLyogV0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NBMjU0
RUExODI5OTNDRTAwRkM4QTQxIC8qIFdLQnJvd3NpbmdDb250ZXh0UG9saWN5RGVsZWdhdGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Q0EzNzkz
RTFBQzM3OEIzMDA3OURDMzcgLyogX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVByaXZhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQTM3OTNE
MUFDMzc4QjMwMDc5REMzNyAvKiBfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUHJpdmF0ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdDQUVD
QjY2Mjc0NjVBRTQwMEFCNzhEMCAvKiBVbmlmaWVkU291cmNlMTE3LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQUVDQjVFMjc0NjVBRTMwMEFCNzhE
MCAvKiBVbmlmaWVkU291cmNlMTE3LmNwcCAqLzsgfTsKIAkJN0NCMTAwRjExRkEzODU4QTAwMTcy
OUVFIC8qIFdlYlByZWZlcmVuY2VzS2V5cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0IxMDBFRTFGQTJENzRBMDAxNzI5RUUgLyogV2ViUHJlZmVy
ZW5jZXNLZXlzLmNwcCAqLzsgfTsKIAkJN0NCMTAwRjIxRkEzODU4RTAwMTcyOUVFIC8qIFdlYlBy
ZWZlcmVuY2VzRGVmaW5pdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDREU3M0EzMUY5REFCNjUwMDM5MDMxMiAvKiBXZWJQcmVmZXJlbmNlc0Rl
ZmluaXRpb25zLmggKi87IH07CiAJCTdDQjEwMEYzMUZBMzg1OEUwMDE3MjlFRSAvKiBXZWJQcmVm
ZXJlbmNlc0tleXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDQjEwMEVGMUZBMkQ3NEIwMDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNlc0tleXMuaCAqLzsg
fTsKQEAgLTQyMjIsNiArNDIzMCw5IEBACiAJCTQ2MDg4OUZGMjYxRkE4QTkwMEUyNTAwRCAvKiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDYwRjQ4OEQxRjk5NkY2QzAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJl
Y2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCTQ2MEY0ODhFMUY5OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2
ZWRTb3VyY2VzL1dlYktpdC9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmg7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTQ2MUUxQkVDMjc5QTAxMEUw
MDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYx
RTFCRUYyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDYxRTFCRjAyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2MjEwN0Q3MUYzOERCRDMwMERENzgxMCAvKiBQaW5nTG9hZC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQaW5nTG9hZC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MzIzNjgzMjMxNDgxRUYwMEE0OEZBNyAvKiBX
ZWJSZW1vdGVPYmplY3RSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZW1vdGVPYmplY3RS
ZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjMyMzY4NDIzMTQ4MjVD
MDBBNDhGQTcgLyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNDI0OSw4ICs0MjYwLDE1IEBACiAJCTQ2ODA5QTdCMjNEOTIyNTMwMEMyOTdEMCAvKiBX
ZWJDb29raWVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJDb29raWVDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM1NjlB
MjFFODFDQzcwMDZFMjdBMyAvKiBQcm92aXNpb25hbFBhZ2VQcm94eS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQcm92aXNpb25hbFBhZ2VQcm94eS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NjgzNTY5QjIxRTgxQ0M3MDA2RTI3QTMgLyogUHJvdmlzaW9uYWxQ
YWdlUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjgzODY2
NzI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2ODM4NjY4Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0Njg5QjkwRjI3NTZEMTQzMDAwN0M2NTEgLyogUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0Njg5QjkxMDI3NTZEMTQzMDAwN0M2NTEgLyogUmVtb3RlV2ViTG9ja1JlZ2lz
dHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzRENCMjc2M0Y4MzQwMDRCNjEwRSAvKiBX
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ2OTQzRENDMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJQcm92
aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzRENEMjc2M0Y4MzUwMDRCNjEwRSAv
KiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDY5NDNEQ0UyNzYzRjgzNTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzRENGMjc2M0Y4MzUw
MDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJT
aGFyZWRXb3JrZXJQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlE
RTgwMjI3M0VDQzVEMDA5MzAyNzYgLyogUHJvY2Vzc0xhdW5jaGVyQ29jb2EubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcm9jZXNzTGF1bmNoZXJDb2NvYS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZBMkI2MDYxRTU2NzVBMjAwQzNERURBIC8q
IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGlt
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkEyQjYwNzFFNTY3NUEyMDBD
M0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NU
aW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI2OSw3ICs0Mjg3LDExIEBA
CiAJCTQ2QzVCN0NCMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92
aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92aWRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkM1QjdDQzI3QUFEREJFMDAwQzVCNDcgLyog
UmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVt
b3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NkM1QjdDRDI3QUFEREJFMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZDOTE2QTgyNzk5RDA5RDAwMUE0RTdDIC8q
IFdlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkM5MTZBOTI3
OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlNoYXJlZFdvcmtlclNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NkNFM0IxMDIzRDhDODNEMDAxNkE5NkEgLyogV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkQ0OEZDQzI3OTlEN0REMDA3RDIwMTQg
LyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZENDhGQ0QyNzk5RDdERTAwN0QyMDE0IC8q
IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NkRGMDYzOTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2REYwNjNBMUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdo
dENoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RTk3NjBB
Mjc1N0Y2QzkwMEFDREQzNyAvKiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMu
aW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1l
c3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI3OSw2ICs0MzAxLDcg
QEAKIAkJNDZFRTI4NEEyNjlFMDUxNzAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVs
UmVnaXN0cnkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmV0d29ya0Jyb2Fk
Y2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDZFRTI4NEIyNjlFMDUxNzAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVs
UmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29y
a0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2RUUyODRDMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJl
Z2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtCcm9hZGNh
c3RDaGFubmVsUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZFRTNF
OEEyNzYzRkQyQTAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVz
c2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5p
bjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZGMzhFOEIyNDE2RTY2RDAwNTkzNzVB
IC8qIFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2RjlCMjYyMjM1MjZFRDAwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50
cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0ZvcndhcmRDYWNo
ZUVudHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5MzEwMkJDMjY4M0YzQTUw
MDJCQjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcFByaXZhY3lS
ZXBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5OTcsNiArNTAyMCw3IEBA
CiAJCTZCRTk2OUM4MUU1NEQ0Q0YwMDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xh
c3NpZmllckNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
c291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2QkU5NjlDOTFFNTRENENGMDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0NsYXNzaWZpZXJDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTZCRTk2OUNDMUU1NEUwNTQwMDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzQ2xhc3NpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk2Q0FFQ0I1RTI3NDY1QUUzMDBBQjc4RDAgLyogVW5pZmllZFNvdXJjZTExNi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTE2LmNwcDsgcGF0aCA9ICJEZXJpdmVk
U291cmNlcy9XZWJLaXQvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UxMTYuY3BwIjsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNkQ4QTkxQTUxMUYwRUZEMTAwREQw
MUZFIC8qIGNvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9
IGNvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluOyBwYXRoID0gV2ViUHJvY2Vzcy9jb20uYXBwbGUu
V2ViUHJvY2Vzcy5zYi5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkVFODQ5QzYx
MzY4RDkyRDAwMzhENDgxIC8qIFdLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBXS0luc3BlY3RvclByaXZhdGVNYWMuaDsgcGF0aCA9IG1hYy9X
S0luc3BlY3RvclByaXZhdGVNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzEx
NzI1QTgyMjhENTYzQTAwMDE4NTE0IC8qIFdlYnNpdGVMZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1Rv
dWNoUG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYnNpdGVMZWdh
Y3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoUG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC01MTYxLDYgKzUxODUsNyBAQAogCQk3QzlEMTUzNjE4NDU4NERBMDA5RDM5MTggLyog
V0tCcm93c2luZ0NvbnRleHRHcm91cEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLQnJvd3NpbmdDb250ZXh0R3JvdXBJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3Q0EyNTRFQTE4Mjk5M0NFMDBGQzhBNDEgLyogV0tCcm93c2luZ0Nv
bnRleHRQb2xpY3lEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
S0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdDQTM3OTNEMUFDMzc4QjMwMDc5REMzNyAvKiBfV0tVc2VyQ29udGVudEV4dGVuc2lv
blN0b3JlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tVc2Vy
Q29udGVudEV4dGVuc2lvblN0b3JlUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3Q0FFQ0I1RTI3NDY1QUUzMDBBQjc4RDAgLyogVW5pZmllZFNvdXJjZTExNy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTE3LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291
cmNlcy9XZWJLaXQvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UxMTcuY3BwIjsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJN0NCMTAwRUUxRkEyRDc0QTAwMTcyOUVF
IC8qIFdlYlByZWZlcmVuY2VzS2V5cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJQcmVmZXJl
bmNlc0tleXMuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlByZWZlcmVuY2Vz
S2V5cy5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTdDQjEwMEVG
MUZBMkQ3NEIwMDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNlc0tleXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
V2ViUHJlZmVyZW5jZXNLZXlzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViUHJl
ZmVyZW5jZXNLZXlzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTdD
QjEwMEYwMUZBMkQ3ODQwMDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNlc1N0b3JlRGVmYXVsdHNNYXAu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViUHJlZmVyZW5jZXNTdG9yZURlZmF1bHRzTWFwLmNw
cDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJQcmVmZXJlbmNlc1N0b3JlRGVmYXVs
dHNNYXAuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtOTI4Niw2
ICs5MzExLDIwIEBACiAJCQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwogCQl9OworCQk0NjgzODY2NTI3NjNGQTFCMDBDRjkxODIgLyogU2hhcmVkV29ya2VyICovID0g
eworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk0NkQ0OEZDQzI3OTlE
N0REMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
cHAgKi8sCisJCQkJNDZENDhGQ0QyNzk5RDdERTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCAqLywKKwkJCQk0NkM5MTZBODI3OTlEMDlEMDAxQTRF
N0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcCAqLywKKwkJCQk0NkM5MTZBOTI3OTlEMDlE
MDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggKi8sCisJCQkJNDZFRTNFOEEyNzYz
RkQyQTAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMu
aW4gKi8sCisJCQkJNDY4Mzg2NjcyNzYzRkFCMTAwQ0Y5MTgyIC8qIFdlYlNoYXJlZFdvcmtlclNl
cnZlckNvbm5lY3Rpb24uaCAqLywKKwkJCQk0NjgzODY2ODI3NjNGQUIxMDBDRjkxODIgLyogV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAgKi8sCisJCQkpOworCQkJcGF0aCA9IFNo
YXJlZFdvcmtlcjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTQ2OURFODAx
MjczRUNDNUQwMDkzMDI3NiAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCkBAIC05MzM3LDYgKzkzNzYsNyBAQAogCQk1MTBDQzdEQTE2MTM4RTAxMDBE
MDNFRDMgLyogTmV0d29ya1Byb2Nlc3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCTQ2ODM4NjY1Mjc2M0ZBMUIwMENGOTE4MiAvKiBTaGFyZWRXb3JrZXIg
Ki8sCiAJCQkJRTQ4OUQyODIxQTBBMkJFODAwNzhDMDZBIC8qIGNhY2hlICovLAogCQkJCTdBODQz
QTFEMjFFNDFGRDkwMERFRjY2MyAvKiBDbGFzc2lmaWVyICovLAogCQkJCTdFQzRGMEY4MThFNEE5
MjIwMDgwNTZBRiAvKiBjb2NvYSAqLywKQEAgLTk0NDgsNiArOTQ4OCwxNCBAQAogCQkJCTQ2QzVC
N0NDMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJGcmFtZUxvYWRlckNsaWVudC5jcHAg
Ki8sCiAJCQkJNDZDNUI3Q0QyN0FBRERCRTAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckZyYW1lTG9h
ZGVyQ2xpZW50LmggKi8sCiAJCQkJNDZDNUI3Q0IyN0FBRERCRTAwMEM1QjQ3IC8qIFJlbW90ZVdv
cmtlckxpYldlYlJUQ1Byb3ZpZGVyLmggKi8sCisJCQkJNDYxRTFCRUMyNzlBMDEwRTAwNkFGNTNC
IC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgKi8sCisJCQkJ
NDYxRTFCRUYyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5oICovLAorCQkJCTQ2MUUxQkYwMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCisJCQkJNDY5
NDNEQ0UyNzYzRjgzNTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24u
Y3BwICovLAorCQkJCTQ2OTQzRENEMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uLmggKi8sCisJCQkJNDY5NDNEQ0IyNzYzRjgzNDAwNEI2MTBFIC8qIFdl
YlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCisJCQkJNDY5NDNE
Q0MyNzYzRjgzNTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmNwcCAqLywKKwkJ
CQk0Njk0M0RDRjI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaCAq
LywKIAkJCQk0MTMxRjNFMDFGOTg3MTJDMDA1OTk5NUEgLyogV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudC5jcHAgKi8sCiAJCQkJNDE5QUNGOUIxRjk4MUQyNjAwOUYxQTgzIC8qIFdlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCAqLywKIAkJCQk1MUJFQjYyOTFGM0E1QUNEMDA1
MDI5QjkgLyogV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcCAqLywKQEAgLTEyNzczLDYgKzEy
ODIxLDcgQEAKIAkJCQk0OUZCRjAwMDIzOUIxRjc1MDBCRDAzMkYgLyogX1dLUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1RoaXJkUGFydHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RkJGMDA5MjM5RjA4
RTAwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUludGVybmFs
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzYzMTFGRDFBM0ZCNUY3MDA1QTJFNTEgLyogX1dLU2Ft
ZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2MUUxQkYyMjc5
QTAxMTYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTM3NjMxMUZFMUEzRkI2MDAwMDVBMkU1MSAvKiBfV0tTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uVHlwZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTAw
MkQ0NDE5NkIzMzg5MDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTAwMkQ0MzE5NkIzMzcwMDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlSW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovLApAQCAtMTI5MzcsNiArMTI5ODYsNyBAQAogCQkJCUUxNzA4NzZDMTZE
NkNBNjkwMEY5OTIyNiAvKiBCbG9iUmVnaXN0cnlQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NEY2MDE0MzIxNTVDNUFBMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9uc2VNYXAuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBNTcwNTExMUJFNDEwRTYwMDg3NEFGMSAvKiBCbG9ja1NQSS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNDZDOTE2QUEyNzk5RDBBMjAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtl
clNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzMDY1RkExMjU5MzQ0RTAwRTcxMjc4IC8q
IENhY2hlTW9kZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxODk3RUQ4MUY0MTVEOEEwMDE2RkE0
MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRkFCRDJBMUY0
REUwMDEwMDZBNkM5NyAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xMzQwNCw2ICsxMzQ1NCw3IEBACiAJCQkJMUFDMTMzNjgxODU2NUI1NzAwRjNFQzA1IC8q
IFVzZXJEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDQ5MUIwODFFNzBEMDVGMDAwMDkwNjYg
LyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENDkxQjBF
MUU3MzJFNEQwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLywKKwkJCQk0NkVFM0U4QjI3NjNGRDJGMDA2MEM3MEYgLyogV2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q0OTFCMTMxRTczNDgy
MTAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICov
LAogCQkJCUNENDkxQjE4MUU3MzUyNTUwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3Mjk3RjlGMUMxN0JCRUEwMDNG
MDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xMzQ5MCw2ICsxMzU0MSw3IEBACiAJCQkJMzMwOTM0NEExMzE1QjkyMjAwOTdBN0JDIC8qIFdl
YkNvb2tpZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzFERDdC
MjExNERDMzk2MDA1QURBRjMgLyogV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MTJGNTg5QjEyQTg4Mzg4MDA2Mjk1MzAgLyogV2ViQ3JlZGVudGlhbC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNDY5NDNERDAyNzYzRjgzQTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtl
clByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE4M0Y2RDFBNUI2M0ZGMDAwMjZFQzYg
LyogV2ViRGF0YWJhc2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTUyQ0Y1NTIyMEEz
NUMzQTAwREFEQTI3IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTU2OEI5MUYyMEEzQUIyRjAwRTNDODU2IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlv
bnNEcm9wZG93bi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzUyNCw2ICsxMzU3Niw3IEBACiAJCQkJ
QkMwMzJEN0YxMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkZyYW1lTG9hZGVyQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5MzkxRjJDQjEyMUI2N0FEMDBFQkY3RTggLyogV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCOUY2QTAxMTIzQTg0QjAwQTEzN0Uw
IC8qIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY5
NDNERDEyNzYzRjgzRjAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDOUIzOEExMTBGNTM4QkUwMDQ0M0ExNSAvKiBXZWJGcmFt
ZVByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVCRTFBQjFENTU1QUEwMDBERDdDNjggLyog
V2ViR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1QkUxNzkxRDUzRkU4RjAwREQ3QzY4
IC8qIFdlYkdhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzY1MCw2ICsxMzcw
Myw3IEBACiAJCQkJMUE0ODMyRDcxQTlDREY5NjAwOEI0REZFIC8qIFdlYnNpdGVEYXRhLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQTQ4MzJEMTFBOUJEQzJGMDA4QjRERkUgLyogV2Vic2l0ZURhdGFS
ZWNvcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTNDMkFBMUEzMjU3MzAwMDRFOEM3MCAvKiBX
ZWJzaXRlRGF0YVN0b3JlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkQ0OEZDRTI3OTlEN0UxMDA3
RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTExRjdENDExRUIxQkNGNTAwRTQ3QjgzIC8qIFdlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTE3MjVBOTIyOEQ1NjQzMDAwMTg1
MTQgLyogV2Vic2l0ZUxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3kuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUY0Q0IwOUU1MjI1RDVBMDkwMDg5MTQ4NyAvKiBXZWJzaXRlTWVkaWFTb3Vy
Y2VQb2xpY3kuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXgg
OGQzYjU3YmQxOGRjLi5iYjM1NDdmNDZhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApA
QCAtNTcsNiArNTcsMTAgQEAKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsLmgi
CiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU29j
a2V0U3RyZWFtLmgiCkBAIC0xNzMsNiArMTc3LDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQ
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
UmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBzaGFyZWRXb3JrZXJDb25uZWN0
aW9uKCkuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1l
c3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSkgeworICAgICAgICBBU1NFUlQoU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSk7CisgICAgICAgIGlmIChhdXRvKiBjb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24gPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9u
KCkuY29ubmVjdGlvbigpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uJj4oKmNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbikuZGlk
UmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKICAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvcjo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CkBAIC0zMDcsNiArMzIxLDEzIEBAIFdlYlNXQ2xpZW50
Q29ubmVjdGlvbiYgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpzZXJ2aWNlV29ya2VyQ29ubmVj
dGlvbigpCiB9CiAjZW5kaWYKIAorV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiYgTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCkKK3sKKyAgICBp
ZiAoIW1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbikKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJDb25u
ZWN0aW9uID0gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6Y3JlYXRlKCk7CisgICAg
cmV0dXJuICptX3NoYXJlZFdvcmtlckNvbm5lY3Rpb247Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOjptZXNzYWdlc0F2YWlsYWJsZUZvclBvcnQoY29uc3QgV2ViQ29yZTo6TWVz
c2FnZVBvcnRJZGVudGlmaWVyJiBtZXNzYWdlUG9ydElkZW50aWZpZXIpCiB7CiAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkubWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0KG1lc3NhZ2VQb3J0SWRl
bnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IGQ2MmRmZTRkZjVhYS4uNWYwNTA0
MDlhYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtNDgsNiArNDgsNyBAQCBlbnVtIGNs
YXNzIEhUVFBDb29raWVBY2NlcHRQb2xpY3kgOiB1aW50OF90OwogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb247CiBjbGFzcyBXZWJTV0NsaWVudENvbm5lY3Rpb247CiAKIGNsYXNz
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbj4sIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKQEAgLTcwLDYgKzcxLDcg
QEAgcHVibGljOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBXZWJTV0NsaWVudENv
bm5lY3Rpb24mIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCk7CiAjZW5kaWYKKyAgICBXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uJiBzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiAKICNp
ZiBIQVZFKEFVRElUX1RPS0VOKQogICAgIHZvaWQgc2V0TmV0d29ya1Byb2Nlc3NBdWRpdFRva2Vu
KHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbikgeyBtX25ldHdvcmtQcm9j
ZXNzQXVkaXRUb2tlbiA9IGF1ZGl0VG9rZW47IH0KQEAgLTEyMyw2ICsxMjUsNyBAQCBwcml2YXRl
OgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBSZWZQdHI8V2ViU1dDbGllbnRDb25u
ZWN0aW9uPiBtX3N3Q29ubmVjdGlvbjsKICNlbmRpZgorICAgIFJlZlB0cjxXZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uPiBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb247CiAgICAgV2ViQ29y
ZTo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSBtX2Nvb2tpZUFjY2VwdFBvbGljeTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzkwMDM2ZTBjNTU5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDEyOSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVXZWJMb2NrUmVnaXN0cnkuaCIK
KyNpbmNsdWRlICJSZW1vdGVXb3JrZXJGcmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIlJl
bW90ZVdvcmtlckxpYldlYlJUQ1Byb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKKyNp
bmNsdWRlICJXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEuaCIKKyNpbmNsdWRlICJXZWJE
YXRhYmFzZVByb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlBy
ZWZlcmVuY2VzS2V5cy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJXZWJTb2NrZXRQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxl
ci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRW1wdHlDbGllbnRzLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9QYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlQ29uZmlndXJhdGlvbi5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1NoYXJlZFdvcmtlclRocmVhZFByb3h5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQWdl
bnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlckZldGNoUmVzdWx0Lmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Oldl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9u
PiYmIGNvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHByZWZlcmVuY2VzU3RvcmUs
IFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXphdGlvbkRhdGEpCisg
ICAgOiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUoY29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MpKQorICAgICwgbV9yZWdpc3RyYWJsZURvbWFpbihXVEZNb3ZlKHJlZ2lzdHJh
YmxlRG9tYWluKSkKKyAgICAsIG1fcGFnZUdyb3VwSUQocGFnZUdyb3VwSUQpCisgICAgLCBtX3dl
YlBhZ2VQcm94eUlEKHdlYlBhZ2VQcm94eUlEKQorICAgICwgbV9wYWdlSUQocGFnZUlEKQorI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgICwgbV91c2VyQWdlbnQoV2ViQ29yZTo6c3RhbmRhcmRVc2Vy
QWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKHsgfSkpCisjZWxzZQorICAgICwgbV91c2VyQWdlbnQo
c3RhbmRhcmRVc2VyQWdlbnQoKSkKKyNlbmRpZgorICAgICwgbV91c2VyQ29udGVudENvbnRyb2xs
ZXIoV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpnZXRPckNyZWF0ZShpbml0aWFsaXphdGlvbkRh
dGEudXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikpCit7CisjaWYgRU5BQkxFKENPTlRF
TlRfRVhURU5TSU9OUykKKyAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkQ29udGVudFJ1
bGVMaXN0cyhXVEZNb3ZlKGluaXRpYWxpemF0aW9uRGF0YS5jb250ZW50UnVsZUxpc3RzKSk7Cisj
ZW5kaWYKKworICAgIHVwZGF0ZVByZWZlcmVuY2VzU3RvcmUocHJlZmVyZW5jZXNTdG9yZSk7Cisg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZGlzYWJsZVRlcm1pbmF0aW9uKCk7Cit9CisKK1dl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbigpID0gZGVmYXVsdDsKKwordm9pZCBXZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmVzdGFibGlzaENvbm5lY3Rpb24oQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fY29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0
aW9uIHsgbV93ZWJQYWdlUHJveHlJRCwgbV9yZWdpc3RyYWJsZURvbWFpbiB9LCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgMCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hh
cmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMKQoreworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlBv
c3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdCB7IHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGVycm9y
TWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwgfSwgMCk7Cit9CisK
K3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp1cGRhdGVQcmVm
ZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQoreworICAgIFdl
YlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzR2VuZXJhdGVkKHN0b3JlKTsKKyAgICBtX3ByZWZlcmVu
Y2VzU3RvcmUgPSBzdG9yZTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OmxhdW5jaFNoYXJlZFdvcmtlcihXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBv
cmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRp
ZmllciwgVVJMJiYgdXJsLCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucywg
V2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJiB3b3JrZXJGZXRjaFJlc3VsdCkKK3sKKyAgICBS
RUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OmxhdW5jaFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQ
Ukl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgYXV0byBwYWdl
Q29uZmlndXJhdGlvbiA9IFdlYkNvcmU6OnBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50
cyhXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXNzaW9uSUQoKSk7CisKKyAgICBwYWdlQ29uZmln
dXJhdGlvbi5kYXRhYmFzZVByb3ZpZGVyID0gV2ViRGF0YWJhc2VQcm92aWRlcjo6Z2V0T3JDcmVh
dGUobV9wYWdlR3JvdXBJRCk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uc29ja2V0UHJvdmlkZXIg
PSBXZWJTb2NrZXRQcm92aWRlcjo6Y3JlYXRlKG1fd2ViUGFnZVByb3h5SUQpOworICAgIHBhZ2VD
b25maWd1cmF0aW9uLmJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSgpOworICAgIHBhZ2VDb25maWd1cmF0aW9u
LndlYkxvY2tSZWdpc3RyeSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvY2tSZWdpc3Ry
eSgpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnVzZXJDb250ZW50UHJvdmlkZXIgPSBtX3VzZXJD
b250ZW50Q29udHJvbGxlcjsKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICBwYWdlQ29uZmlndXJh
dGlvbi5saWJXZWJSVENQcm92aWRlciA9IG1ha2VVbmlxdWVSZWY8UmVtb3RlV29ya2VyTGliV2Vi
UlRDUHJvdmlkZXI+KCk7CisjZW5kaWYKKworICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNs
aWVudEZvck1haW5GcmFtZSA9IG1ha2VVbmlxdWVSZWY8UmVtb3RlV29ya2VyRnJhbWVMb2FkZXJD
bGllbnQ+KG1fd2ViUGFnZVByb3h5SUQsIG1fcGFnZUlELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXI6OmdlbmVyYXRlKCksIG1fdXNlckFnZW50KTsKKworICAgIGF1dG8gcGFnZSA9IG1ha2VVbmlx
dWVSZWY8V2ViQ29yZTo6UGFnZT4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOworICAgIGlm
IChtX3ByZWZlcmVuY2VzU3RvcmUpIHsKKyAgICAgICAgV2ViUGFnZTo6dXBkYXRlU2V0dGluZ3NH
ZW5lcmF0ZWQoKm1fcHJlZmVyZW5jZXNTdG9yZSwgcGFnZS0+c2V0dGluZ3MoKSk7CisgICAgICAg
IHBhZ2UtPnNldHRpbmdzKCkuc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KHN0YXRpY19jYXN0PFdl
YkNvcmU6OlN0b3JhZ2VCbG9ja2luZ1BvbGljeT4obV9wcmVmZXJlbmNlc1N0b3JlLT5nZXRVSW50
MzJWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6c3RvcmFnZUJsb2NraW5nUG9saWN5S2V5
KCkpKSk7CisgICAgfQorICAgIFdlYkNvcmU6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpzZXR1
cFBhZ2VGb3JTaGFyZWRXb3JrZXIocGFnZS5nZXQoKSwgdXJsLCBvcmlnaW4sIHdvcmtlckZldGNo
UmVzdWx0KTsKKyAgICBhdXRvIHNoYXJlZFdvcmtlclRocmVhZFByb3h5ID0gV2ViQ29yZTo6U2hh
cmVkV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZShXVEZNb3ZlKHBhZ2UpLCBzaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLCBvcmlnaW4sIHVybCwgV1RGTW92ZSh3b3JrZXJGZXRjaFJlc3VsdCksIFdURk1v
dmUod29ya2VyT3B0aW9ucyksIG1fdXNlckFnZW50LCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5j
YWNoZVN0b3JhZ2VQcm92aWRlcigpKTsKKworICAgIFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5yZWdpc3RlclNoYXJlZFdvcmtlclRocmVhZChXVEZNb3Zl
KHNoYXJlZFdvcmtlclRocmVhZFByb3h5KSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpjbG9zZSgpCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVk
V29ya2VyLCAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpjbG9zZTog
U2hhcmVkIHdvcmtlciBwcm9jZXNzIGlzIHJlcXVlc3RlZCB0byBzdG9wIGFsbCBzaGFyZWQgd29y
a2VycyIpOworICAgIHNldEFzQ2xvc2VkKCk7CisKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q2xv
c2VTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiB7IH0sIDApOworICAgIFdlYkNvcmU6OlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zdG9wQWxsU2hhcmVkV29ya2Vy
cygpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuYWJsZVRlcm1pbmF0aW9uKCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmFlMjMyMzY1NjI4YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBA
IC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNv
bm5lY3Rpb24uaCIKKyNpbmNsdWRlICJJZGVudGlmaWVyVHlwZXMuaCIKKyNpbmNsdWRlICJNZXNz
YWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCisjaW5j
bHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50
aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvU2hhcmVkV29ya2VySWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1
Y3QgQ2xpZW50T3JpZ2luOworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0Oworc3RydWN0IFdvcmtl
ck9wdGlvbnM7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI7CitzdHJ1Y3QgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YTsKKwor
Y2xhc3MgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIGZpbmFsIDogcHVi
bGljIFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uLCBwdWJs
aWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIFdlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYmLCBQYWdlR3JvdXBJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVu
dGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZSYsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJik7CisgICAgfldlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbigpOworCisgICAgdm9pZCBlc3RhYmxpc2hDb25u
ZWN0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CisgICAgdm9pZCBwb3N0
RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkgZmluYWw7CisKKyAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCitwcml2
YXRlOgorICAgIC8vIElQQyBNZXNzYWdlcy4KKyAgICB2b2lkIGxhdW5jaFNoYXJlZFdvcmtlcihX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwg
VVJMJiYsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJiwgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1
bHQmJik7CisgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVu
Y2VzU3RvcmUmKTsKKyAgICB2b2lkIHNldFVzZXJBZ2VudChTdHJpbmcmJiB1c2VyQWdlbnQpIHsg
bV91c2VyQWdlbnQgPSBXVEZNb3ZlKHVzZXJBZ2VudCk7IH0KKyAgICB2b2lkIGNsb3NlKCk7CisK
KyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzOwor
ICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG1fcmVnaXN0cmFibGVEb21haW47CisgICAg
UGFnZUdyb3VwSWRlbnRpZmllciBtX3BhZ2VHcm91cElEOworICAgIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgbV93ZWJQYWdlUHJveHlJRDsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3Bh
Z2VJRDsKKyAgICBTdHJpbmcgbV91c2VyQWdlbnQ7CisgICAgUmVmPFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlcj4gbV91c2VyQ29udGVudENvbnRyb2xsZXI7CisgICAgc3RkOjpvcHRpb25hbDxXZWJQ
cmVmZXJlbmNlc1N0b3JlPiBtX3ByZWZlcmVuY2VzU3RvcmU7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLmQ4MmE0YWRhNTNmZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMwIEBACisjIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKKyAgICBMYXVuY2hTaGFyZWRXb3JrZXIoc3RydWN0IFdl
YkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZp
ZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgVVJMIHVybCwgc3RydWN0IFdlYkNvcmU6Oldvcmtl
ck9wdGlvbnMgd29ya2VyT3B0aW9ucywgc3RydWN0IFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0
IHdvcmtlckZldGNoUmVzdWx0KQorICAgIFBvc3RDb25uZWN0RXZlbnQoV2ViQ29yZTo6U2hhcmVk
V29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpUcmFuc2Zl
cnJlZE1lc3NhZ2VQb3J0IHBvcnQsIFN0cmluZyBzb3VyY2VPcmlnaW4pCisgICAgVGVybWluYXRl
U2hhcmVkV29ya2VyKFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2Vy
SWRlbnRpZmllcikKKyAgICBVcGRhdGVQcmVmZXJlbmNlc1N0b3JlKHN0cnVjdCBXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzU3RvcmUgc3RvcmUpCisgICAgU2V0VXNlckFnZW50KFN0cmluZyB1c2VyQWdl
bnQpCisgICAgQ2xvc2UoKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQ3ZDk5NGRlMWY3Nwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Xb3JrZXJPcHRpb25z
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjZGVmaW5lIENPTk5FQ1RJT05fUkVMRUFTRV9M
T0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gW3dlYlByb2Nlc3NJ
ZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjoi
IGZtdCwgdGhpcywgV2ViQ29yZTo6UHJvY2Vzczo6aWRlbnRpZmllcigpLnRvVUludDY0KCksICMj
X19WQV9BUkdTX18pCisKK1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OldlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0co
IldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Iik7Cit9CisKK1dlYlNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb246On5XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCkKK3sK
KyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJ+V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbjoiKTsKK30KKworSVBDOjpDb25uZWN0aW9uKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuICZX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6
cmVxdWVzdFNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwg
V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9y
dCYmIHBvcnQsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMpCit7
CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygicmVxdWVzdFNoYXJlZFdvcmtlcjogc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OlJlcXVlc3RTaGFyZWRXb3JrZXIgeyBvcmln
aW4sIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHVybCwgV1RGTW92ZShwb3J0KSwgd29y
a2VyT3B0aW9ucyB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
OjpzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7CisgICAgQ09OTkVD
VElPTl9SRUxFQVNFX0xPRygic2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXk6IHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpTaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdh
eSB7IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgfSk7Cit9CisKKyN1bmRlZiBDT05ORUNU
SU9OX1JFTEVBU0VfTE9HCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uZWNiZjQyZjY3NjJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEs
NTQgQEAKKworLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29ubmVjdGlv
bi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5k
ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
biwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24pOyB9CisgICAgfldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKTsK
KworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgZmluYWw7CisKK3ByaXZhdGU6CisgICAgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbigpOworCisgICAgLy8gV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi4K
KyAgICB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgVVJMJiwgV2Vi
Q29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRp
b25zJikgZmluYWw7CisgICAgdm9pZCBzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJD
b3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKSBmaW5hbDsKKworICAgIElQQzo6Q29u
bmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50
NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7
IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi43MjJhZTFhMzJjOTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCkBAIC0wLDAgKzEsMjcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
CisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworbWVzc2FnZXMgLT4gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiB7
CisgICAgRmV0Y2hTY3JpcHRJbkNsaWVudChVUkwgdXJsLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHN0cnVjdCBXZWJD
b3JlOjpXb3JrZXJPcHRpb25zIHdvcmtlck9wdGlvbnMpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6V29y
a2VyRmV0Y2hSZXN1bHQgZmV0Y2hSZXN1bHQpIEFzeW5jCisgICAgTm90aWZ5V29ya2VyT2JqZWN0
T2ZMb2FkQ29tcGxldGlvbihXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3Ip
CisgICAgUG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgU3RyaW5nIGVycm9y
TWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFN0cmluZyBzb3VyY2VV
UkwpCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
aGFyZWRXb3JrZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi40NDk1YTQyMjVlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAKQEAgLTAs
MCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
ZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oIgorCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlNoYXJl
ZFdvcmtlclByb3ZpZGVyJiBXZWJTaGFyZWRXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkKK3sK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V2ViU2hhcmVkV29ya2VyUHJvdmlkZXI+IHByb3Zp
ZGVyOworICAgIHJldHVybiBwcm92aWRlcjsKK30KKworV2ViU2hhcmVkV29ya2VyUHJvdmlkZXI6
OldlYlNoYXJlZFdvcmtlclByb3ZpZGVyKCkgPSBkZWZhdWx0OworCitXZWJDb3JlOjpTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uKiBXZWJTaGFyZWRXb3JrZXJQcm92aWRlcjo6c2hhcmVkV29y
a2VyQ29ubmVjdGlvbigpCit7CisgICAgcmV0dXJuICZXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5zaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44NmUzZDJmZTcwYTAKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJQ
cm92aWRlci5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyUHJvdmlkZXIuaD4KKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
YlNoYXJlZFdvcmtlclByb3ZpZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNoYXJlZFdvcmtl
clByb3ZpZGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIm
IHNpbmdsZXRvbigpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxXZWJT
aGFyZWRXb3JrZXJQcm92aWRlcj47CisgICAgV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIoKTsKKwor
ICAgIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24qIHNoYXJlZFdvcmtlckNv
bm5lY3Rpb24oKSBmaW5hbDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDAyZGE5MTE0N2Y4YS4uOGM3NGM3Y2Jj
YTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC04NCw2ICs4
NCw5IEBACiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCIKICNpbmNs
dWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJQ
cm92aWRlci5oIgogI2luY2x1ZGUgIldlYlNvY2tldFN0cmVhbS5oIgogI2luY2x1ZGUgIldlYnNp
dGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKQEAgLTEz
Myw2ICsxMzYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGljYXRvci5oPgogI2luY2x1
ZGUgPHBhbC9Mb2dnaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0FsZ29yaXRobXMuaD4KQEAgLTU2OSw2
ICs1NzMsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKICAgICBTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKFdlYlNl
cnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkpOwogI2VuZGlmCisgICAgU2hhcmVkV29y
a2VyUHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyOjpz
aW5nbGV0b24oKSk7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgSlNDOjpXYXNtOjpl
bmFibGVGYXN0TWVtb3J5KCk7CkBAIC05MDIsNyArOTA3LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2Rl
ciYgZGUKICAgICB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgLy8gRklYTUU6
IFJlbW92ZT8KICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2Fn
ZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkp
IHsKICAgICAgICAgQVNTRVJUKFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rp
b24oKSk7CiAgICAgICAgIGlmIChhdXRvKiBjb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gPSBTV0Nv
bnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCkBAIC05MTEsNiArOTE1LDEz
IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlCiAgICAgfQogI2VuZGlmCiAKKyAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAg
IEFTU0VSVChTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlv
bigpKTsKKyAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiA9IFNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCisgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24m
PigqY29udGV4dE1hbmFnZXJDb25uZWN0aW9uKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIExPR19FUlJPUigiVW5o
YW5kbGVkIHdlYiBwcm9jZXNzIG1lc3NhZ2UgJyVzJyAoZGVzdGluYXRpb246ICUiIFBSSXU2NCAi
IHBpZDogJWQpIiwgZGVzY3JpcHRpb24oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSwgZGVjb2Rlci5k
ZXN0aW5hdGlvbklEKCksIHN0YXRpY19jYXN0PGludD4oZ2V0Q3VycmVudFByb2Nlc3NJRCgpKSk7
CiB9CiAKQEAgLTE5MTcsNiArMTkyOCwxNiBAQCBMaWJXZWJSVENOZXR3b3JrJiBXZWJQcm9jZXNz
OjpsaWJXZWJSVENOZXR3b3JrKCkKICAgICByZXR1cm4gKm1fbGliV2ViUlRDTmV0d29yazsKIH0K
IAordm9pZCBXZWJQcm9jZXNzOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBj
b25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgUmVnaXN0cmFibGVEb21haW4mJiByZWdp
c3RyYWJsZURvbWFpbiwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmIGluaXRpYWxp
emF0aW9uRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIC8vIFdlIGFyZSBpbiB0aGUgU2hhcmVkIFdvcmtlciBjb250ZXh0IHByb2Nlc3Mg
YW5kIHRoZSBjYWxsIGJlbG93IGVzdGFibGlzaGVzIG91ciBjb25uZWN0aW9uIHRvIHRoZSBOZXR3
b3JrIFByb2Nlc3MKKyAgICAvLyBieSBjYWxsaW5nIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi4gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIgbmVlZHMgdG8gdXNlIHRoZSBzYW1lIHVu
ZGVybHlpbmcgSVBDOjpDb25uZWN0aW9uIGFzIHRoZQorICAgIC8vIE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbiBmb3Igc3luY2hyb25pemF0aW9uIHB1cnBvc2VzLgorICAgIGF1dG8mIGlwY0Nvbm5l
Y3Rpb24gPSBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7Cisg
ICAgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENvbm5lY3Rpb24o
bWFrZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24+KGlwY0Nv
bm5lY3Rpb24sIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBwYWdlR3JvdXBJRCwgd2ViUGFn
ZVByb3h5SUQsIHBhZ2VJRCwgc3RvcmUsIFdURk1vdmUoaW5pdGlhbGl6YXRpb25EYXRhKSkpOwor
ICAgIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkt
PmVzdGFibGlzaENvbm5lY3Rpb24oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogdm9pZCBXZWJQcm9jZXNzOjplc3RhYmxpc2hTZXJ2
aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50
aWZpZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUs
IFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmll
ciwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmIGluaXRpYWxpemF0aW9uRGF0YSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggZGQ4ZDc0ZmZmMjY5Li42NWY3NzMyMDFh
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNDY5LDYgKzQ2OSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnYW1lcGFkRGlzY29ubmVjdGVkKHVuc2lnbmVkIGluZGV4
KTsKICNlbmRpZgogCisgICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRl
bnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6
YXRpb25EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNT
dG9yZSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRl
bnRpZmllciwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGRmZDMwNjQ1NjNmOS4uZTU1Mjk2YjkwNGRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpA
QCAtMTAwLDYgKzEwMCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIg
Tm90UmVmQ291bnRlZCB7CiAgICAgR2FtZXBhZERpc2Nvbm5lY3RlZCh1bnNpZ25lZCBpbmRleCkK
ICNlbmRpZgogCisgICAgRXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzKFdlYktpdDo6UGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2Vi
S2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3Rv
cmUsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgc3RydWN0IFdlYktpdDo6U2Vy
dmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSBpbml0aWFsaXphdGlvbkRhdGEpIC0+ICgpIEFz
eW5jCisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgRXN0YWJsaXNoU2VydmljZVdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJLaXQ6OlBhZ2VHcm91cElk
ZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQ
YWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0
OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBk
b21haW4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50
aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6U2Vydmlj
ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSBpbml0aWFsaXphdGlvbkRhdGEpIC0+ICgpIEFzeW5j
CiAjZW5kaWYK
</data>
<flag name="commit-queue"
          id="477203"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450710</attachid>
            <date>2022-02-02 16:09:30 -0800</date>
            <delta_ts>2022-02-02 18:55:22 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>235958_SharedWorker_multiProcess_wip.patch</filename>
            <type>text/plain</type>
            <size>314438</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDQwMjQ2NmU0OWYwZS4uNDNiYjdhYTNkNmJlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTQ2Myw3ICs0NjMsNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYi1sb2Nrcy9zdGVhbC50ZW50YXRpdmUuaHR0cHMuYW55Lmh0bWwgWyBEdW1wSgog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3Ro
ZS1hbmFseXNlcm5vZGUtaW50ZXJmYWNlL3Rlc3QtYW5hbHlzZXItbWluaW11bS5odG1sIFsgRHVt
cEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUt
ZGlzY29ubmVjdC1hdWRpb3BhcmFtLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NhbWUtb3JpZ2luLWNoZWNr
LnN1Yi5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMuaHRt
bCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCiBmYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWJh
Y2stZm9yd2FyZC1jYWNoZS5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGZhc3Qv
aGlzdG9yeS9wYWdlLWNhY2hlLWNyZWF0ZUltYWdlQml0bWFwLmh0bWwgWyBEdW1wSlNDb25zb2xl
TG9nSW5TdGRFcnIgXQogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLWluLWxv
YWRpbmctaWZyYW1lLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQpAQCAtNTE1Nyw2
ICs1MTU2LDEwIEBAIHdlYmtpdC5vcmcvYi8xODM5OTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3Nzb20vY3NzLXN0eWxlLWF0dHItZGVjCiAjIFRlc3QgaXMgY3Jhc2hpbmcg
aW4gRGVidWcgYnVpbGRzIHNpbmNlIGltcG9ydC4KIHdlYmtpdC5vcmcvYi8yMzQ5NzcgWyBEZWJ1
ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9mb2N1cy1ldmVu
dC1kb2N1bWVudC1tb3ZlLmh0bWwgWyBTa2lwIF0KIAorIyBUZXN0IGlzIGZsYWt5IGJlY2F1c2Ug
TWVzc2FnZVBvcnQgbWVzc2FnZXMgbWF5IGdldCByZWNlaXZlZCBpbiBhIGRpZmZlcmVudCBvcmRl
ciB3aGVuIHNldmVyYWwgTWVzc2FnZVBvcnRzIGFyZSBpbnZvbHZlZCwKKyMgZHVlIHRvIGhvdyBN
ZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpIGlzIGltcGxlbWVudGVkLgoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0
aW9ucy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIEZhaWx1cmUgUGFzcyBdCisKICMg
UGx1Z2lucwogIyBGSVhNRTogUmVtb3ZlIHRoZXNlIHRlc3RzLgogcGx1Z2lucy8gWyBTa2lwIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0
LW9ubHkuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3
b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dAppbmRleCAwZTk5NzI0Yjg2NGIuLjY4
OThiNTRhYWI2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdv
cmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRl
LXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSw2
ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2Nh
bGhvc3Q6OTQ0NC9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zdXBwb3J0L3Jlc291cmNlLnB5P2Ny
b3NzLW9yaWdpbi1mZXRjaAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8v
d3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQvcmVzb3Vy
Y2UucHk/Y3Jvc3Mtb3JpZ2luLXhocgotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0
dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQv
cmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLWZldGNoCiAKIFBBU1MgU2FtZS1vcmlnaW4gJ2ZldGNo
KCknLgogUEFTUyBTYW1lLW9yaWdpbiBYSFIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lk
ZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWItZXhwZWN0ZWQu
dHh0CmluZGV4IDk3OTEwNjMwMzc4NS4uYmI2NDUyZjQ0YTBhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMu
c3ViLWV4cGVjdGVkLnR4dApAQCAtMiwxMCArMiw5IEBACiBIYXJuZXNzIEVycm9yIChUSU1FT1VU
KSwgbWVzc2FnZSA9IG51bGwKIAogVElNRU9VVCBzaGFyZWR3b3JrZXItc2NyaXB0LXNyYyBUZXN0
IHRpbWVkIG91dAotRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgbm90IGJsb2Nr
ZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgIEEgbmV0d29yayBlcnJvciBvY2N1cnJlZC4KLUZBSUwg
YGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AgUmVmdXNlZCB0byBldmFs
dWF0ZSBhIHN0cmluZyBhcyBKYXZhU2NyaXB0IGJlY2F1c2UgJ3Vuc2FmZS1ldmFsJyBpcyBub3Qg
YW4gYWxsb3dlZCBzb3VyY2Ugb2Ygc2NyaXB0IGluIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1
cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAic2NyaXB0LXNyYyAnc2VsZicgJ25vbmNlLWEnIGJsb2I6
IGZpbGVzeXN0ZW06Ii4KLQotRkFJTCBgc2V0VGltZW91dChbc3RyaW5nXSlgIG5vdCBibG9ja2Vk
IGluIGh0dHA6IHdpdGhvdXQgQ1NQIGFzc2VydF91bnJlYWNoZWQ6IGNhbGxiYWNrIG5vdCBjYWxs
ZWQuIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNj
cmlwdHMoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgTG9hZCBmYWlsZWQKK1BB
U1MgYGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AKK1BBU1MgYHNldFRp
bWVvdXQoW3N0cmluZ10pYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3V0IENTUAogVElNRU9V
VCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgYmxvY2tlZCBpbiBodHRwOiB3aXRoIHNj
cmlwdC1zcmMgJ3NlbGYnIFRlc3QgdGltZWQgb3V0CiBOT1RSVU4gYGV2YWwoKWAgYmxvY2tlZCBp
biBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCiBOT1RSVU4gYHNldFRpbWVvdXQoW3N0cmlu
Z10pYCBibG9ja2VkIGluIGh0dHA6IHdpdGggc2NyaXB0LXNyYyAnc2VsZicKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVk
LnR4dAppbmRleCA0ZWFjMWNjYzA1MjYuLmI4ZWUxM2IwZmZjZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBv
bGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91dC5zdWItZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4
dApAQCAtMSw0ICsxLDQgQEAKIAogRkFJTCBEZWRpY2F0ZWQgd29ya2VyIGluaGVyaXRzIENTUCBm
cm9tIG1haW4gZG9jdW1lbnQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgInNldFRpbWVvdXQgYWxs
b3dlZCIgYnV0IGdvdCAic2V0VGltZW91dCBibG9ja2VkIgotRkFJTCBTaGFyZWQgd29ya2VyIGRl
bGl2ZXJzIGl0cyBvd24gQ1NQIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJzZXRUaW1lb3V0IGJs
b2NrZWQiIGJ1dCBnb3QgInNldFRpbWVvdXQgYWxsb3dlZCIKK1BBU1MgU2hhcmVkIHdvcmtlciBk
ZWxpdmVycyBpdHMgb3duIENTUAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3Jr
ZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNo
ZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggYzEwNzEz
NjU1MjgwLi42Zjg0NGRkNWQ5NDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtl
cnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBj
YWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKQEAgLTUsNyAr
NSw3IEBAIEhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAogUEFTUyBEZWRp
Y2F0ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0CiBQQVNTIERlZGljYXRlZCB3b3JrZXIg
b2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0CiBQQVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIG5v
dC1pbi1jYWNoZSBzY3JpcHQKLVBBU1MgU2hhcmVkIHdvcmtlciBvZiB0aGUgY2FjaGVkIHNjcmlw
dAotUEFTUyBTaGFyZWQgd29ya2VyIG9mIHRoZSBmYWxsYmFja2VkIHNjcmlwdAorRkFJTCBTaGFy
ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJE
b25lOiBjYWNoZWQiIGJ1dCBnb3QgIkVycm9yOiBJbXBvcnRpbmcgYSBub24tY2FjaGVkIHNjcmlw
dCBtdXN0IGZhaWwuIgorRkFJTCBTaGFyZWQgd29ya2VyIG9mIHRoZSBmYWxsYmFja2VkIHNjcmlw
dCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiRG9uZTogZmFsbGJhY2tlZCIgYnV0IGdvdCAiRXJy
b3I6IEltcG9ydGluZyBhIG5vbi1jYWNoZWQgc2NyaXB0IG11c3QgZmFpbC4iCiBUSU1FT1VUIFNo
YXJlZCB3b3JrZXIgb2YgdGhlIG5vdC1pbi1jYWNoZSBzY3JpcHQgVGVzdCB0aW1lZCBvdXQKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3
b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9y
aWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3b3JrZXItcGFydGl0
aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0CmluZGV4IDRlZDg3NDc0
NzZjNy4uNTg2ZDEwMTUyYTM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9hbm9u
eW1vdXMtaWZyYW1lL3NoYXJlZHdvcmtlci1wYXJ0aXRpb25pbmcudGVudGF0aXZlLmh0dHBzLndp
bmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlm
cmFtZS9zaGFyZWR3b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhw
ZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIEFub255bW91cyBpZnJhbWVzIGdldCBw
YXJ0aXRpb25lZCBzaGFyZWQgd29ya2Vycy4gYXNzZXJ0X3RydWU6IFRoZSAibm9ybWFsIiBpZnJh
bWUncyBzaGFyZWR3b3JrZXIgc2hvdWxkIHJldHVybiB7Im5vcm1hbCI6IHRydWUsICJub3JtYWxf
Y29udHJvbCI6IHRydWV9LCBidXQgaW5zdGVhZCByZXR1cm5lZCB7Im5vcm1hbCI6dHJ1ZX0gZXhw
ZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK0ZBSUwgQW5vbnltb3VzIGlmcmFtZXMgZ2V0IHBhcnRpdGlv
bmVkIHNoYXJlZCB3b3JrZXJzLiBhc3NlcnRfdHJ1ZTogVGhlICJub3JtYWwiIGlmcmFtZSdzIHNo
YXJlZHdvcmtlciBzaG91bGQgcmV0dXJuIHsibm9ybWFsIjogdHJ1ZSwgIm5vcm1hbF9jb250cm9s
IjogdHJ1ZX0sIGJ1dCBpbnN0ZWFkIHJldHVybmVkIHsibm9ybWFsX2NvbnRyb2wiOnRydWUsIm5v
cm1hbCI6dHJ1ZSwiYW5vbnltb3VzIjp0cnVlLCJhbm9ueW1vdXNfY29udHJvbCI6dHJ1ZX0gZXhw
ZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kv
Y3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdp
bi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMt
ZXhwZWN0ZWQudHh0CmluZGV4IDYzNTViNjhkZTcwYi4uYzhiZjc1ZTdlYTg1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mt
b3JpZ2luLWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5o
dHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2lu
LWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0yMCw3ICsyMCw3IEBA
IFBBU1MgZGVkaWNhdGVkIHdvcmtlcjogc2NoZW1lID0gYmxvYiwgdmFsdWUgPSAqCiBQQVNTIGRl
ZGljYXRlZCB3b3JrZXI6IHNjaGVtZSA9IGJsb2IsIHZhbHVlID0gc2VsZgogRkFJTCBkZWRpY2F0
ZWQgd29ya2VyOiBzY2hlbWUgPSBibG9iLCB2YWx1ZSA9IChcKSBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCBmYWxzZSBidXQgZ290IHRydWUKIFBBU1Mgc2hhcmVkIHdvcmtlcjogd2l0aENvb3BDb2Vw
ID0gZmFsc2UKLVBBU1Mgc2hhcmVkIHdvcmtlcjogd2l0aENvb3BDb2VwID0gdHJ1ZQorRkFJTCBz
aGFyZWQgd29ya2VyOiB3aXRoQ29vcENvZXAgPSB0cnVlIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
IHRydWUgYnV0IGdvdCBmYWxzZQogUEFTUyBzZXJ2aWNlIHdvcmtlcjogd2l0aENvb3BDb2VwID0g
ZmFsc2UKIEZBSUwgc2VydmljZSB3b3JrZXI6IHdpdGhDb29wQ29lcCA9IHRydWUgYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1i
ZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1i
ZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAzMzk4
YmQ4ODkzMWIuLjRjODY2ZWIyOTI2MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kv
c2hhcmVkLXdvcmtlcnMuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9s
aWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMiw3ICsyLDcgQEAgVmVy
aWZ5IHRoZSBDcm9zcy1PcmlnaW4gRW1iZWRkZXIgUG9saWN5IGZvciBTaGFyZWQgV29ya2VycyBi
eSBwZXJmb3JtaW5nIGEgY3Jvc3MKIAogCiBQQVNTIGRlZmF1bHQgcG9saWN5IChkZXJpdmVkIGZy
b20gcmVzcG9uc2UpCi1GQUlMICJyZXF1aXJlLWNvcnAiIChkZXJpdmVkIGZyb20gcmVzcG9uc2Up
IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJmYWlsdXJlIiBidXQgZ290ICJzdWNjZXNzIgorUEFT
UyAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIHJlc3BvbnNlKQogUEFTUyBkZWZhdWx0IHBv
bGljeSAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBkdWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAt
IGJsb2IgVVJMKQogRkFJTCAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBk
dWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAtIGJsb2IgVVJMKSBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCAiZmFpbHVyZSIgYnV0IGdvdCAic3VjY2VzcyIKIFBBU1MgZGVmYXVsdCBwb2xpY3kgKGRl
cml2ZWQgZnJvbSBvd25lciBzZXQgZHVlIHRvIHVzZSBvZiBsb2NhbCBzY2hlbWUgLSBkYXRhIFVS
TCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5jZS5z
dWIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVy
aXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggNzViMWQzM2U1MjYwLi5iMmJmMmUz
YmZmM2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5j
ZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtl
ci1pbmhlcml0YW5jZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNiBAQAogQmxv
Y2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2Nv
bW1vbi9ibGFuay5odG1sCiBCbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93
d3cubG9jYWxob3N0Ojk0NDQvY29tbW9uL2JsYW5rLmh0bWwKIEJsb2NrZWQgYWNjZXNzIHRvIGV4
dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2NhbGhvc3Q6OTQ0NC9jb21tb24vYmxhbmsuaHRtbAot
QmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0
L2NvbW1vbi9ibGFuay5odG1sCiAKIFBBU1MgVGVzdCB0aGF0IGxvY2FsIHNjaGVtZSB3b3JrZXJz
IGluaGVyaXQgQ09FUDogcmVxdWlyZS1jb3JwIGZyb20gdGhlIGNyZWF0aW5nIGRvY3VtZW50CiBQ
QVNTIGJsb2IgVVJMIGRlZGljYXRlZCB3b3JrZXI6IFNhbWUgb3JpZ2luIHNob3VsZCBiZSBhbGxv
d2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJf
ZGF0YVVybC1leHBlY3RlZC50eHQKaW5kZXggOTk1YTA2MDE5Yjg0Li45YjU4MjBhYWU4Y2IgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9TaGFyZWRXb3JrZXJfZGF0YVVybC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRh
VXJsLWV4cGVjdGVkLnR4dApAQCAtMSwxMyArMSw1IEBACi1DT05TT0xFIE1FU1NBR0U6IEVycm9y
OiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3QgMQogCiAKLUhhcm5lc3MgRXJyb3Ig
KEZBSUwpLCBtZXNzYWdlID0gRXJyb3I6IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDIgYnV0IGdv
dCAxCi0KLVBBU1MgRGF0YSBVUkwgbm90IHNoYXJlZCBieSBjcm9zcy1vcmlnaW4gU2hhcmVkV29y
a2VycwotVElNRU9VVCBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtl
cnMgVGVzdCB0aW1lZCBvdXQKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBFcnJv
cjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290IDEKLQogUEFTUyBEYXRhIFVSTCBu
b3Qgc2hhcmVkIGJ5IGNyb3NzLW9yaWdpbiBTaGFyZWRXb3JrZXJzCi1USU1FT1VUIERhdGEgVVJM
cyBzaGFyZWQgYnkgc2FtZS1vcmlnaW4gU2hhcmVkV29ya2VycyBUZXN0IHRpbWVkIG91dAorUEFT
UyBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtlcnMKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQK
aW5kZXggNTc2ZTZkMmI3ZWQyLi40YTI2YmU5MjlhOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13
b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVk
LXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMg
QEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0
Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkK
IAogUEFTUyBTdGF0aWMgaW1wb3J0LgogRkFJTCBTdGF0aWMgaW1wb3J0IChjcm9zcy1vcmlnaW4p
LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogIkltcG9ydGlu
ZyBhIG1vZHVsZSBzY3JpcHQgZmFpbGVkLiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXIt
aW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29y
a2VyLWltcG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CmluZGV4IDRmODY0
MWU1MTQ4MC4uMjk5N2Y3ZTFmMzA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9y
dC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3Jr
ZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwz
IEBACi1DT05TT0xFIE1FU1NBR0U6IE9yaWdpbiBudWxsIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vz
cy1Db250cm9sLUFsbG93LU9yaWdpbi4gU3RhdHVzIGNvZGU6IDIwMAogCiBIYXJuZXNzIEVycm9y
IChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtl
ci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXIt
aW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQKaW5kZXggZWFjN2Y5NWRlNmYyLi5j
YmMwNDI5ZTBjNzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJs
LndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11
cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRv
IGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVz
L3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkKIAogSGFybmVzcyBFcnJvciAoVElN
RU9VVCksIG1lc3NhZ2UgPSBudWxsCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ct
ZXhwZWN0ZWQudHh0CmluZGV4IDU3NmU2ZDJiN2VkMi4uNGEyNmJlOTI5YThkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9k
dWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3No
YXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1C
bG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQz
L3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LW9uLWxvYWQtc2NyaXB0LnB5CiAKIFBB
U1MgU3RhdGljIGltcG9ydC4KIEZBSUwgU3RhdGljIGltcG9ydCAoY3Jvc3Mtb3JpZ2luKS4gcHJv
bWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6ICJJbXBvcnRpbmcgYSBt
b2R1bGUgc2NyaXB0IGZhaWxlZC4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlv
bnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNy
ZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAppbmRleCBlMWJlZGY1NDMwZWYuLmE3MGYwNWFmNTRmNCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQu
dHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHA6
Ly93d3cxLmxvY2FsaG9zdDo4ODAwL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LWNy
ZWRlbnRpYWxzLnB5CiAKIEhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRp
Y3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhwZWN0ZWQudHh0CmluZGV4IDAxOGRiNjA0NTY5ZC4u
Y2ZlNDY1NTY3NWNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVkLnR4dApAQCAt
MSw1ICsxLDMgQEAKIAotSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0K
LU5PVFJVTiBzaGFyZWQgd29ya2VyIHdpdGggbXVsdGlwbGUgZG9jdW1lbnRzCitQQVNTIHNoYXJl
ZCB3b3JrZXIgd2l0aCBtdWx0aXBsZSBkb2N1bWVudHMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA4
LWV4cGVjdGVkLnR4dAppbmRleCA5N2E0ZTdhNzNhNjMuLjA5ZjY3MmQxYzYyMSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3Nl
bWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSwzIEBACiAKLUhhcm5lc3Mg
RXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1USU1FT1VUIG1lc3NhZ2VjaGFubmVs
IGluIHNoYXJlZCB3b3JrZXIgVGVzdCB0aW1lZCBvdXQKK1BBU1MgbWVzc2FnZWNoYW5uZWwgaW4g
c2hhcmVkIHdvcmtlcgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRv
dy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50
eHQKaW5kZXggYTA4OWMyMjQ4OWUyLi4xOWU0NmIwOWE1NmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2Vy
LWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJs
b2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw1IEBACiAKLUhhcm5lc3MgRXJy
b3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1GQUlMIENyZWF0aW5nIGEgc2hhcmVkIHdv
cmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJ3b3Jr
ZXJfT0tfMiIgYnV0IGdvdCAid29ya2VyX09LXzEiCitQQVNTIENyZWF0aW5nIGEgc2hhcmVkIHdv
cmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MuCiBQQVNTIENyZWF0aW5nIGEgc2hhcmVkIHdvcmtl
ciBmcm9tIGEgYmxvYiBVUkwgd29ya3MgaW1tZWRpYXRlbHkgYmVmb3JlIHJldm9raW5nLgotVElN
RU9VVCBDb25uZWN0aW5nIHRvIGEgc2hhcmVkIHdvcmtlciBvbiBhIHJldm9rZWQgYmxvYiBVUkwg
d29ya3MuIFRlc3QgdGltZWQgb3V0CitQQVNTIENvbm5lY3RpbmcgdG8gYSBzaGFyZWQgd29ya2Vy
IG9uIGEgcmV2b2tlZCBibG9iIFVSTCB3b3Jrcy4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFt
ZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25zLWV4
cGVjdGVkLnR4dAppbmRleCA2ZmZlZTI3MzkwZDkuLmFlNDViNGQyNzM5NiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJl
ZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFt
ZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgVGVzdCB0
aGUgbmFtZSBwcm9wZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBtaXhpbmcgY29uc3RydWN0b3Igb3B0
aW9ucyBhbmQgY29uc3RydWN0b3Igc3RyaW5ncyBFcnJvcjogYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgMiBidXQgZ290IDEKK1BBU1MgVGVzdCB0aGUgbmFtZSBwcm9wZXJ0eSBvZiBzaGFyZWQgd29y
a2VycyBtaXhpbmcgY29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29uc3RydWN0b3Igc3RyaW5ncwog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQt
d29ya2VyLW9wdGlvbnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CmluZGV4IGY2NTY5NDYxNTBkYi4u
NGY5OWExMzQwOWU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dApAQCAt
MSwyOCArMSwyNiBAQAogCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwK
LQotVElNRU9VVCBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBtb2R1bGUgVGVzdCB0aW1lZCBvdXQK
LU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9u
cyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGRlZmF1bHQKLU5PVFJVTiBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogY2xhc3NpYyB0byBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIg
d2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGNsYXNz
aWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBvbWl0IGluIGNsYXNzaWMKLU5PVFJV
TiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91
bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBpbmNsdWRlIGluIGNsYXNzaWMKLU5PVFJVTiBDb25u
ZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUg
YmxvY2tlZDogb21pdCB0byBkZWZhdWx0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRv
IHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDog
b21pdCB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQg
dG8gaW5jbHVkZSBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2Vy
IHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRv
IG9taXQgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBpbmNs
dWRlIGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGlu
IGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJl
bnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBvbWl0IGluIGNsYXNzaWMK
LU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9u
cyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCi1O
T1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMg
c2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gb21pdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25u
ZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUg
YmxvY2tlZDogZGVmYXVsdCB0byBpbmNsdWRlIGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBvbWl0IHRvIGRlZmF1bHQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQg
d29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8g
c2FtZS1vcmlnaW4gaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2Vy
IHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVk
ZSBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZm
ZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBt
b2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQg
b3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gaW5jbHVkZSBpbiBtb2R1
bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGluIG1vZHVsZQotTk9U
UlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNo
b3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IGluY2x1ZGUgdG8gc2FtZS1vcmlnaW4gaW4gbW9kdWxlCitQQVNTIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBkZWZhdWx0IHRvIG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0
aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGRlZmF1bHQK
K1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMg
c2hvdWxkIGJlIGJsb2NrZWQ6IGNsYXNzaWMgdG8gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8g
c2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBt
b2R1bGUgdG8gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBvbWl0IGluIGNs
YXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9w
dGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gaW5jbHVkZSBpbiBjbGFzc2ljCitQ
QVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNo
b3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0
aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxv
Y2tlZDogb21pdCB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8g
c2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBv
bWl0IHRvIGluY2x1ZGUgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3Jr
ZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4g
dG8gb21pdCBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBpbmNs
dWRlIGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlm
ZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gZGVmYXVsdCBpbiBj
bGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gY2xhc3NpYworUEFT
UyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91
bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCitQQVNTIENv
bm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBi
ZSBibG9ja2VkOiBkZWZhdWx0IHRvIG9taXQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8g
c2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBk
ZWZhdWx0IHRvIGluY2x1ZGUgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRl
ZmF1bHQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRp
ZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIHNhbWUtb3JpZ2luIGlu
IG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQg
b3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBpbmNsdWRlIGluIG1vZHVsZQorUEFT
UyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91
bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IHNhbWUtb3JpZ2luIHRvIGluY2x1ZGUgaW4gbW9kdWxlCitQQVNTIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBpbmNsdWRlIHRvIGRlZmF1bHQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVk
IHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRl
IHRvIG9taXQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIHNhbWUtb3Jp
Z2luIGluIG1vZHVsZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmln
aW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVk
LnR4dAppbmRleCAxZTJkMzk5MmY2ZDUuLjU5Y2FjYTQ4NmY4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJl
Y3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNo
YXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBh
Y2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHA6Ly93d3cyLmxvY2FsaG9zdDo4ODAwL3hoci9yZXNv
dXJjZXMvaW5zcGVjdC1oZWFkZXJzLnB5P2ZpbHRlcl9uYW1lPW9yaWdpbiZjb3JzCiAKIEZBSUwg
UmVmZXJlciBoZWFkZXIgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIlJlZmVyZXI6IGh0dHA6Ly9s
b2NhbGhvc3Q6ODgwMC94aHIvcmVzb3VyY2VzL3dvcmtlcnhoci1vcmlnaW4tcmVmZXJyZXIuanNc
biIgYnV0IGdvdCAiUmVmZXJlcjogaHR0cDovL2xvY2FsaG9zdDo4ODAwL3hoci9yZXNvdXJjZXMv
cmVkaXJlY3QucHk/bG9jYXRpb249d29ya2VyeGhyLW9yaWdpbi1yZWZlcnJlci5qc1xuIgogRkFJ
TCBPcmlnaW4gaGVhZGVyIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJPcmlnaW46IGh0dHA6Ly9s
b2NhbGhvc3Q6ODgwMFxuIiBidXQgZ290ICIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZTRlZDMxYWI2YWMzLi5jZDdiNTg3N2E0ODkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTY2
LDYgKzY2LDEyNiBAQCBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS1nZXRVc2VyTWVk
aWEtcGVuZGluZy1wcm9taXNlLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9w
YWdlLWNhY2hlLW1lZGlhc3RyZWFtLmh0bWwgWyBTa2lwIF0KIG1lZGlhL2F1ZGlvLXNlc3Npb24t
Y2F0ZWdvcnkuaHRtbCBbIFNraXAgXQogCisjIFNoYXJlZCB3b3JrZXJzIGFyZSBvbmx5IGltcGxl
bWVudGVkIGZvciBXZWJLaXQyLgoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy1zZWxmL3NoYXJl
ZHdvcmtlci1jbGFzc2ljLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0
LXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3Rv
cC5odHRwLXJwL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5
LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXIt
Y2xhc3NpYy5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtd2ls
ZGNhcmQvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0
dHAtcnAvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5
LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFz
c2ljLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
b250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1zZWxmL3No
YXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dv
cmtlci1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4v
dG9wLmh0dHAtcnAvd29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRw
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVk
d29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNy
Yy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1l
dGEvc2NyaXB0LXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAu
aHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3b3Jr
ZXItY2xhc3NpYy5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtd2ls
ZGNhcmQvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1l
dGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHAuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHBz
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtc2VsZi9zaGFyZWR3b3JrZXIt
bW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1zZWxmL3No
YXJlZHdvcmtlci1tb2R1bGUuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2Vy
LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwLmh0bWwgWyBTa2lwIF0KK2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2Vu
L3RvcC5tZXRhL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMu
aHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3b3Jr
ZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy13aWxk
Y2FyZC9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtl
ci9zaGFyZWR3b3JrZXItY29ubmVjdC1zcmMuc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtl
ci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtl
ci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zYW5kYm94L3NoYXJl
ZC13b3JrZXItc2FuZGJveC5odG1sICBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1kYXRhLXNl
dC10aW1lb3V0LnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLWNoaWxkLnN1Yi5o
dG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2Vy
LWltcG9ydC1kYXRhLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNy
Yy1zZWxmL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90
b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1s
IFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJp
dHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtl
ci1pbXBvcnQtZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3NjcmlwdC1z
cmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
Z2VuL3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5o
dHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLW5vbmUvc2hhcmVk
d29ya2VyLWNsYXNzaWMuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXIt
c3JjLW5vbmUvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9w
Lmh0dHAtcnAvd29ya2VyLXNyYy1ub25lL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0
bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtbm9uZS9zaGFyZWR3b3JrZXIt
aW1wb3J0LWRhdGEuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNy
Yy1ub25lL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0
cC1ycC93b3JrZXItc3JjLW5vbmUvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tp
cCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLWltcG9ydC1k
YXRhLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
b250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1zZWxmL3No
YXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1y
cC93b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1pbXBvcnQt
ZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtd2lsZGNh
cmQvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5o
dHRwLXJwL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwg
WyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0
eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2Vy
LW1vZHVsZS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXNlbGYv
c2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEv
c2NyaXB0LXNyYy1zZWxmL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tp
cCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRw
cy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdv
cmtlci1pbXBvcnQtZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1z
cmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
Z2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRw
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29y
a2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLW5v
bmUvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93
b3JrZXItc3JjLW5vbmUvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQor
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9n
ZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRw
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtbm9uZS9zaGFyZWR3b3JrZXIt
aW1wb3J0LWRhdGEuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLW5v
bmUvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5t
ZXRhL3dvcmtlci1zcmMtbm9uZS9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1ub25lL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cHMu
aHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1p
bXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLXdp
bGRjYXJkL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3Rv
cC5tZXRhL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBz
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvd29ya2VyLXNyYy9zaGFyZWQtZmFsbGJhY2suc3ViLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvd29ya2VyLXNyYy9zaGFyZWQtbGlzdC5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS93b3JrZXItc3JjL3No
YXJlZC1ub25lLnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXNlbGYuc3ViLmh0
bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvd29ya2VyLXNyYy9zaGFyZWQtd29ya2VyLXNyYy1jaGlsZC1mYWxsYmFjay1i
bG9ja2VkLnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXdvcmtlci1zcmMtY2hp
bGQtZmFsbGJhY2suc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvd29ya2VyLXNyYy9zaGFyZWQtd29ya2VyLXNy
Yy1kZWZhdWx0LWZhbGxiYWNrLnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXdv
cmtlci1zcmMtc2NyaXB0LWZhbGxiYWNrLnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hh
cmVkLXdvcmtlci1zcmMtc2VsZi1mYWxsYmFjay5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29ycy9kYXRhLXVybC1zaGFyZWQtd29y
a2VyLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9i
cm93c2Vycy9vZmZsaW5lL25vLWFwcGNhY2hlLWluLXNoYXJlZC13b3JrZXJzLWhpc3RvcmljYWwu
aHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvbW9kdWxlL2V2YWx1YXRp
b24tb3JkZXItMS1ub3Rocm93LXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3Jp
cHQtZWxlbWVudC9tb2R1bGUvZXZhbHVhdGlvbi1vcmRlci0xLXNoYXJlZHdvcmtlci5odG1sIFsg
U2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3Nj
cmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudC9tb2R1bGUvZXZhbHVhdGlvbi1vcmRlci0yLWlt
cG9ydC1zaGFyZWR3b3JrZXIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvbW9k
dWxlL2V2YWx1YXRpb24tb3JkZXItMy1keW5hbWljLXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGlu
Zy0xL3RoZS1zY3JpcHQtZWxlbWVudC9ldmFsdWF0aW9uLW9yZGVyLTEtbm90aHJvdy1zaGFyZWR3
b3JrZXIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvZXZhbHVhdGlvbi1vcmRl
ci0xLXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL3VuaGFu
ZGxlZC1wcm9taXNlLXJlamVjdGlvbnMvcHJvbWlzZS1yZWplY3Rpb24tZXZlbnRzLnNoYXJlZHdv
cmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20v
c2VyaWFsaXphdGlvbi9tb2R1bGUvYnJvYWRjYXN0Y2hhbm5lbC1zdWNjZXNzLWFuZC1mYWlsdXJl
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9T
aGFyZWRXb3JrZXJQZXJmb3JtYW5jZU5vdy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvYmFzZXVybC9hbHBoYS9pbXBvcnRTY3JpcHRzLWluLXNo
YXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvYmFzZXVybC9hbHBoYS94aHItaW4tc2hhcmVkd29ya2VyLmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9pbnRlcmZhY2VzL1NoYXJl
ZFdvcmtlckdsb2JhbFNjb3BlIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvaW50ZXJmYWNlcy9Xb3JrZXJHbG9iYWxTY29wZS9sb2NhdGlvbi9yZWRpcmVj
dC1zaGFyZWR3b3JrZXIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi5odG1sIFsg
U2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9z
aGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC53aW5kb3cuaHRtbCBbIFNraXAgXQoraW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1p
bXBvcnQtZmFpbHVyZS5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1tZXRhLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJl
ZC13b3JrZXItaW1wb3J0LndpbmRvdy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVu
dGlhbHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLXR5cGUuaHRtbCBbIFNraXAgXQoraW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJs
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItcGFyc2UtZXJyb3ItZmFpbHVyZS5odG1sIFsgU2tpcCBdCitp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL2VuY29kaW5n
cy8wMDIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL3NlbWFudGljcy9lbmNvZGluZ3MvMDA0Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDQu
aHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3Nl
bWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3JlcG9ydGluZy1lcnJvcnMvMDAx
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9z
ZW1hbnRpY3MvcmVwb3J0aW5nLWVycm9ycy8wMDIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9yZXBvcnRpbmctZXJyb3JzLzAw
My5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
c2VtYW50aWNzL3JlcG9ydGluZy1lcnJvcnMvMDA0Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvcnVuLWEtd29ya2VyLzAwMi5o
dG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2Vt
YW50aWNzL3N0cnVjdHVyZWQtY2xvbmUvc2hhcmVkLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MveGhyLzAwMy5odG1sIFsgU2tp
cCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3ho
ci8wMDQuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL3NlbWFudGljcy94aHIvMDA2Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93Lmh0
bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFy
ZWQtd29ya2VyLW9wdGlvbnMtbWlzbWF0Y2guaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItcGFyc2UtZXJyb3ItZmFpbHVy
ZS5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vc2Vy
aWFsaXphdGlvbi9tb2R1bGUvd2luZG93LXNoYXJlZHdvcmtlci1mYWlsdXJlLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL29wZW4tdXJsLXJlZGlyZWN0
ZWQtc2hhcmVkd29ya2VyLW9yaWdpbi5odG0gWyBTa2lwIF0KKwogaHR0cC93cHQvbWVkaWFyZWNv
cmRlciBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYWNhcHR1
cmUtcmVjb3JkIFsgU2tpcCBdCiBmYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS1tZWRpYS1yZWNvcmRl
ci5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sx
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
c2NyaXB0LXNyYy93b3JrZXItaW1wb3J0c2NyaXB0cy5zdWItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nv
bnRlbnQtc2VjdXJpdHktcG9saWN5L3NjcmlwdC1zcmMvd29ya2VyLWltcG9ydHNjcmlwdHMuc3Vi
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjZl
ZWExYmVhYjViMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9zY3JpcHQtc3JjL3dvcmtlci1pbXBvcnRzY3JpcHRzLnN1Yi1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw0IEBACisKK0ZBSUwgRGVkaWNhdGVkIHdvcmtlciBpbmhlcml0cyBDU1AgZnJvbSBtYWlu
IGRvY3VtZW50IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJpbXBvcnRTY3JpcHRzIGFsbG93ZWQi
IGJ1dCBnb3QgImltcG9ydFNjcmlwdHMgYmxvY2tlZCIKK0ZBSUwgU2hhcmVkIHdvcmtlciBkZWxp
dmVycyBpdHMgb3duIENTUCBTaGFyZWQgd29ya2VycyBhcmUgbm90IHN1cHBvcnRlZAorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0
LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9z
Y3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91dC5zdWItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNjc1YTNhOGUwZjBiCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3NjcmlwdC1zcmMvd29ya2VyLXNldC10
aW1lb3V0LnN1Yi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK0ZBSUwgRGVkaWNhdGVk
IHdvcmtlciBpbmhlcml0cyBDU1AgZnJvbSBtYWluIGRvY3VtZW50IGFzc2VydF9lcXVhbHM6IGV4
cGVjdGVkICJzZXRUaW1lb3V0IGFsbG93ZWQiIGJ1dCBnb3QgInNldFRpbWVvdXQgYmxvY2tlZCIK
K0ZBSUwgU2hhcmVkIHdvcmtlciBkZWxpdmVycyBpdHMgb3duIENTUCBTaGFyZWQgd29ya2VycyBh
cmUgbm90IHN1cHBvcnRlZAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZsaW5l
L2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2Jyb3dzZXJzL29mZmxpbmUvYXBwY2FjaGUvd29ya2Vycy9hcHBjYWNoZS13b3JrZXIu
aHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uN2YyY2Q1MThjN2U3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2Zm
bGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw5IEBACitDT05TT0xFIE1FU1NBR0U6IEFwcGxpY2F0aW9uQ2FjaGUgaXMgZGVw
cmVjYXRlZC4gUGxlYXNlIHVzZSBTZXJ2aWNlV29ya2VycyBpbnN0ZWFkLgorCitQQVNTIERlZGlj
YXRlZCB3b3JrZXIgb2YgdGhlIGNhY2hlZCBzY3JpcHQKK1BBU1MgRGVkaWNhdGVkIHdvcmtlciBv
ZiB0aGUgZmFsbGJhY2tlZCBzY3JpcHQKK1BBU1MgRGVkaWNhdGVkIHdvcmtlciBvZiB0aGUgbm90
LWluLWNhY2hlIHNjcmlwdAorRkFJTCBTaGFyZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0
IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5v
dFN1cHBvcnRlZEVycm9yOiBTaGFyZWQgd29ya2VycyBhcmUgbm90IHN1cHBvcnRlZCIKK0ZBSUwg
U2hhcmVkIHdvcmtlciBvZiB0aGUgZmFsbGJhY2tlZCBzY3JpcHQgcHJvbWlzZV90ZXN0OiBVbmhh
bmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IFNo
YXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkIgorRkFJTCBTaGFyZWQgd29ya2VyIG9mIHRo
ZSBub3QtaW4tY2FjaGUgc2NyaXB0IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3
aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBTaGFyZWQgd29ya2VycyBhcmUg
bm90IHN1cHBvcnRlZCIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
MS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGlu
Zy0xL3RoZS1zY3JpcHQtZWxlbWVudC9tb2R1bGUvaW1wb3J0LW1ldGEvaW1wb3J0LW1ldGEtdXJs
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUtc2NyaXB0
LWVsZW1lbnQvbW9kdWxlL2ltcG9ydC1tZXRhL2ltcG9ydC1tZXRhLXVybC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iMjQ5OWZhZGNiNmMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mvc2NyaXB0aW5nLTEvdGhlLXNjcmlw
dC1lbGVtZW50L21vZHVsZS9pbXBvcnQtbWV0YS9pbXBvcnQtbWV0YS11cmwtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTEgQEAKKworUEFTUyBpbXBvcnQubWV0YS51cmwgaW4gYSByb290IGV4dGVy
bmFsIHNjcmlwdAorUEFTUyBpbXBvcnQubWV0YS51cmwgaW4gYSBkZXBlbmRlbnQgZXh0ZXJuYWwg
c2NyaXB0CitQQVNTIGltcG9ydC5tZXRhIGlzIGFuIG9iamVjdAorUEFTUyBpbXBvcnQubWV0YSBp
cyBleHRlbnNpYmxlCitQQVNTIGltcG9ydC5tZXRhJ3MgcHJvcGVydGllcyBhcmUgd3JpdGFibGUs
IGNvbmZpZ3VyYWJsZSwgYW5kIGVudW1lcmFibGUKK1BBU1MgaW1wb3J0Lm1ldGEudXJsIHdoZW4g
aW1wb3J0aW5nIHRoZSBtb2R1bGUgd2l0aCBkaWZmZXJlbnQgZnJhZ21lbnRzCitQQVNTIGltcG9y
dC5tZXRhLnVybCBpbiBhIHJvb3QgaW5saW5lIHNjcmlwdAorUEFTUyBpbXBvcnQubWV0YS51cmwg
YXQgdG9wLWxldmVsIG1vZHVsZSBEZWRpY2F0ZWRXb3JrZXIKK0ZBSUwgaW1wb3J0Lm1ldGEudXJs
IGF0IHRvcC1sZXZlbCBtb2R1bGUgU2hhcmVkV29ya2VyIHByb21pc2VfdGVzdDogVW5oYW5kbGVk
IHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBTaGFyZWQg
d29ya2VycyBhcmUgbm90IHN1cHBvcnRlZCIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBw
YXBpcy90aGUtd2luZG93b3J3b3JrZXJnbG9iYWxzY29wZS1taXhpbi9Xb3JrZXJfU2VsZl9Pcmln
aW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy90aGUtd2luZG93b3J3b3JrZXJn
bG9iYWxzY29wZS1taXhpbi9Xb3JrZXJfU2VsZl9PcmlnaW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjM5ZjZmZWQxZjMzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy90aGUtd2luZG93b3J3b3JrZXJnbG9iYWxzY29w
ZS1taXhpbi9Xb3JrZXJfU2VsZl9PcmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAor
CitQQVNTIFNhbWUgT3JpZ2luIFdvcmtlcgorRkFJTCBTYW1lIE9yaWdpbiBTaGFyZWRXb3JrZXIg
U2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQKK1BBU1MgRGF0YSBVcmwgV29ya2VyCitG
QUlMIERhdGEgVXJsIFNoYXJlZFdvcmtlciBTaGFyZWQgd29ya2VycyBhcmUgbm90IHN1cHBvcnRl
ZAorUEFTUyBCbG9iIFVybCBXb3JrZXIKK0ZBSUwgQmxvYiBVcmwgU2hhcmVkV29ya2VyIFNoYXJl
ZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdp
bmcvYnJvYWRjYXN0Y2hhbm5lbC93b3JrZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdp
bmcvYnJvYWRjYXN0Y2hhbm5lbC93b3JrZXJzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjEzZWQxNmQ4NzE5NwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC93b3JrZXJzLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDEyIEBACisKK1BBU1MgQnJvYWRjYXN0Q2hhbm5lbCB3b3JrcyBpbiB3b3JrZXJz
CitGQUlMIEJyb2FkY2FzdENoYW5uZWwgd29ya3MgaW4gc2hhcmVkIHdvcmtlcnMgU2hhcmVkIHdv
cmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQKK1BBU1MgQ2xvc2luZyBhbmQgcmUtb3BlbmluZyBhIGNo
YW5uZWwgd29ya3MuCitQQVNTIEJyb2FkY2FzdENoYW5uZWwgY3JlYXRlZCBhZnRlciBhIHdvcmtl
ciBzZWxmLmNsb3NlKCkKK1BBU1MgQnJvYWRjYXN0Q2hhbm5lbCBtZXNzYWdlcyBmcm9tIGNsb3Nl
ZCB3b3JrZXIgdG8gcGFyZW50IHNob3VsZCBiZSBpZ25vcmVkIChCQyBjcmVhdGVkIGJlZm9yZSBj
bG9zaW5nKQorUEFTUyBCcm9hZGNhc3RDaGFubmVsIG1lc3NhZ2VzIGZyb20gY2xvc2VkIHdvcmtl
ciB0byBwYXJlbnQgc2hvdWxkIGJlIGlnbm9yZWQgKEJDIGNyZWF0ZWQgYWZ0ZXIgY2xvc2luZykK
K1BBU1MgQnJvYWRjYXN0Q2hhbm5lbCBtZXNzYWdlcyBmcm9tIHBhcmVudCB0byBjbG9zZWQgd29y
a2VyIHNob3VsZCBiZSBpZ25vcmVkIChCQyBjcmVhdGVkIGJlZm9yZSBjbG9zaW5nKQorUEFTUyBC
cm9hZGNhc3RDaGFubmVsIG1lc3NhZ2VzIGZyb20gcGFyZW50IHRvIGNsb3NlZCB3b3JrZXIgc2hv
dWxkIGJlIGlnbm9yZWQgKEJDIGNyZWF0ZWQgYWZ0ZXIgY2xvc2luZykKK1BBU1MgQnJvYWRjYXN0
Q2hhbm5lbCBtZXNzYWdlcyB3aXRoaW4gY2xvc2VkIHdvcmtlciBzaG91bGQgYmUgaWdub3JlZCAo
QkNzIGNyZWF0ZWQgYmVmb3JlIGNsb3NpbmcpCitQQVNTIEJyb2FkY2FzdENoYW5uZWwgbWVzc2Fn
ZXMgd2l0aGluIGNsb3NlZCB3b3JrZXIgc2hvdWxkIGJlIGlnbm9yZWQgKEJDcyBjcmVhdGVkIGFm
dGVyIGNsb3NpbmcpCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2FicnVwdC1jb21wbGV0aW9u
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2FicnVwdC1jb21wbGV0aW9uLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQwMTU2YzBiMjE5ZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2FicnVwdC1jb21wbGV0aW9uLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBEZWRpY2F0ZWRXb3JrZXIgc2hvdWxkIGNvcnJl
Y3RseSBoYW5kbGUgYWJydXB0IGNvbXBsZXRpb24KK0ZBSUwgU2hhcmVkV29ya2VyIHNob3VsZCBj
b3JyZWN0bHkgaGFuZGxlIGFicnVwdCBjb21wbGV0aW9uIHByb21pc2VfdGVzdDogVW5oYW5kbGVk
IHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBTaGFyZWQg
d29ya2VycyBhcmUgbm90IHN1cHBvcnRlZCIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2Vt
YW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDAxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3Nl
bWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwMS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43ZjJhOTI3OGM1ZjMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDEtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIGRlZGljYXRlZAorRkFJTCBzaGFyZWQgU2hhcmVkIHdv
cmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50
aWNzL3J1bi1hLXdvcmtlci8wMDMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNz
L3J1bi1hLXdvcmtlci8wMDMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uYWY3ZmEwODRjNzRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvc2VtYW50aWNzL3J1bi1hLXdvcmtlci8wMDMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBA
QAorCitQQVNTIHdvcmtlcgorRkFJTCBzaGFyZWQgU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBw
b3J0ZWQKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggOGFmMjg1M2VjM2Q5Li5iOGExZDAyODYwMGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTk1Niw5ICsxOTU2LDEyIEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVz
dC5oCiAgICAgd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCiAgICAgd29ya2Vycy9Xb3JrZXJM
b2FkZXJQcm94eS5oCisgICAgd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oCisgICAgd29ya2Vy
cy9Xb3JrZXJPcHRpb25zLmgKICAgICB3b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
LmgKICAgICB3b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaAogICAgIHdv
cmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgKKyAgICB3b3JrZXJzL1dvcmtlclJlcG9ydGlu
Z1Byb3h5LmgKICAgICB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuaAogICAgIHdvcmtlcnMvV29ya2Vy
U2NyaXB0TG9hZGVyLmgKICAgICB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlckNsaWVudC5oCkBA
IC0yMDAxLDYgKzIwMDQsMTMgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVS
UwogICAgIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmgKICAgICB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKIAorICAgIHdv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaAorICAgIHdvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlcktleS5oCisgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbi5oCisgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllci5oCisgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJvdmlkZXIuaAorCisgICAg
d29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oCiAgICAg
d29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWQuaAogICAgIHdvcmtlcnMv
c2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cmlu
ZGV4IDE5YTIzODQwYmUxMC4uNzgxODYyNWM1ZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjc4NSw4
ICsyNzg1LDEwIEBAIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKIHdv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
ckdsb2JhbFNjb3BlLmNwcAotd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5jcHAK
K3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCit3b3JrZXJz
L3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlclNjcmlwdExvYWRlci5jcHAKK3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXIuY3BwCiB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRo
cmVhZC5jcHAKIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHku
Y3BwCiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiYzcyMzM2ZmJm
ZGQuLjc4MzJhNmRlYjZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTAzLDcgKzkwMyw3IEBACiAJCTJFNDM0NjRCMEY1NDZB
ODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzOTBGNTQ2QTgyMDBCMEYxQkEgLyog
V29ya2VyR2xvYmFsU2NvcGVQcm94eS5oICovOyB9OwogCQkyRTQzNDY0RDBGNTQ2QTgyMDBCMEYx
QkEgLyogV29ya2VyTG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJFNDM0NjNCMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJMb2NhdGlvbi5o
ICovOyB9OwogCQkyRTQzNDY1MDBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyTWVzc2FnaW5nUHJv
eHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0
NjNFMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJNZXNzYWdpbmdQcm94eS5oICovOyB9OwotCQky
RTQzNDY1MTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyT2JqZWN0UHJveHkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjNGMEY1NDZBODIwMEIw
RjFCQSAvKiBXb3JrZXJPYmplY3RQcm94eS5oICovOyB9OworCQkyRTQzNDY1MTBGNTQ2QTgyMDBC
MEYxQkEgLyogV29ya2VyT2JqZWN0UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjNGMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmpl
Y3RQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTJFNDM0NjUzMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJSdW5Mb29wLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDY0MTBGNTQ2QTgyMDBC
MEYxQkEgLyogV29ya2VyUnVuTG9vcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTJFNDM0NjU1MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJUaHJl
YWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0
NjQzMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJUaHJlYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTc1ODQxRTEyNzc5QURBMDA2MjYyOEIg
LyogRmlsZVJlYWRlckxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkU3NTg0MUIxMjc3OUFEQTAwNjI2MjhCIC8qIEZpbGVSZWFkZXJMb2FkZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTEy
NSw3ICsxMTI1LDcgQEAKIAkJNDE2QTA2QTEyM0NDQUQwMzAwMzQ3MTA5IC8qIEF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTZBMDY5NjIzQ0NBQTlGMDAzNDcxMDkgLyogQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0MTZENzVBMjIwQzY1MUE1MDBEMDJEMkMgLyogTmV0d29ya0xvYWRJbmZvcm1hdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RDc1
OUYyMEM2NDQxMzAwRDAyRDJDIC8qIE5ldHdvcmtMb2FkSW5mb3JtYXRpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFMEIzQTIwOUJDM0NC
MDA0QTk1RDkgLyogRmV0Y2hJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFMEIzNzIwOUJDM0MyMDA0QTk1RDkgLyogRmV0Y2hJZGVu
dGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
LQkJNDE2RTI5QTYxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFMjlBNTEwMkZB
OTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCAqLzsgfTsKKwkJNDE2RTI5QTYx
MDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFMjlBNTEwMkZBOTYyMDA3RkMxNEUg
LyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFODFCQkQxMkRGMDAwQTNGNjQgLyogUmVhZGFibGVT
dHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEQ5IC8qIFJlYWRhYmxlU3RyZWFt
SW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0MTZFNkZFODFCQkQxMkRGMDAwQTNGNjUgLyogSlNET01CaW5kaW5nSW50
ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjREQSAvKiBKU0RPTUJpbmRpbmdJbnRlcm5hbHNC
dWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQxNkU2RkU4MUJCRDEyREYwMDBBM0Y3NCAvKiBUcmFuc2Zvcm1TdHJlYW1JbnRlcm5hbHNC
dWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEVBIC8qIFRyYW5zZm9ybVN0cmVhbUludGVybmFsc0J1aWx0
aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTEzMjMsNiArMTMyMyw3IEBACiAJCTQ2MEUzMDc3MjIyRjRGMDMwMDlBMDYwNiAvKiBEZXZpY2VP
cmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjVFREQ5RjIyMkY0RUMzMDBCNDZFMTYgLyogRGV2
aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2MjE4QUNCMUY3MkQ2NEUwMDU3NEZC
RSAvKiBET01IaWdoUmVzVGltZVN0YW1wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NkUwMTZBRDFGNzJENjFFMDAyODJCMkMgLyogRE9NSGlnaFJlc1Rp
bWVTdGFtcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQ2MjczQ0FGMjYwRTU5RUYwMDZGQUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MjczQ0FDMjYwRTU5REYw
MDZGQUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk0NjI3RkY1QjI3OUI4N0FGMDBBQTM5MTYgLyogU2hhcmVk
V29ya2VySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDYyN0ZGNUEyNzlCODdBMjAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlcklkZW50aWZp
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
NjJDN0Y0MTI3NTZEQkU0MDBEMDgzQzggLyogV2ViTG9ja0lkZW50aWZpZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzgwMkIyMjc0NzExODUwMERB
OUZCNiAvKiBXZWJMb2NrSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQ2MkU0QzUwMjYxNkE4MTEwMDNBMkM2NyAvKiBTY3JpcHRC
dWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
MkU0QzREMjYxNkE4MDEwMDNBMkM2NyAvKiBTY3JpcHRCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjM0QzcyQzI3NTdEQUIyMDAyNkE4
MTUgLyogV2ViTG9ja01hbmFnZXJTbmFwc2hvdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3ODAyQjAyNzQ3MTE3QjAwREE5RkI2IC8qIFdlYkxvY2tN
YW5hZ2VyU25hcHNob3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMTM0NSwxNCArMTM0NiwxOCBAQAogCQk0NjdBNjhENzI3NUVBOTkxMDA5QjMx
QzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NjdBNjhENDI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2Vy
VGhyZWFkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDY3QTY4RDgyNzVFQTk5NTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3QTY4RDUy
NzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oICovOyB9OwogCQk0
NjdBNjhEOTI3NUVBOTk4MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0E2OEQ2Mjc1RUE5
OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQ2N0E2OERBMjc1RUE5OUMwMDlCMzFD
NSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NjdBNjhEMjI3NUVBOThBMDA5QjMxQzUgLyogU2hhcmVkV29ya2Vy
TWFuYWdlci5oICovOyB9OwogCQk0NjgyRDIwMDFGNzk3ODMwMDBDODYzREIgLyogU3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2ODJEMUZGMUY3OTc4MjMwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2
ODM0NEUwMUVEREZBQUEwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MzQ0REUxRURERkE1RjAwQjc3OTVCIC8q
IERPTVJlY3RMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDY4M0RGNDAyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxT
Y29wZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2ODNERjNFMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNl
LmggKi87IH07CiAJCTQ2ODNERjQxMjc2N0U5MUEwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2Jh
bFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjgzREYzQjI3NjdERjI2MDA3RDAwQzggLyogU2hhZG93UmVhbG1HbG9iYWxTY29wZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODhFRTNDMjZE
RDI2MTAwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODhFRTNBMjZERDI2MEMwMDJBRjVDNCAvKiBDcm9z
c09yaWdpbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk0Njk0M0RDODI3NjNGODEyMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDY5NDNEQzUyNzYzRjgwRDAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0Njk0
M0RDOTI3NjNGODE3MDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5NDNEQzcyNzYz
RjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0Njk0M0RDQTI3NjNGODFD
MDA0QjYxMEUgLyogU2hhcmVkV29ya2VyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTQzREM0Mjc2M0Y4MEQwMDRCNjEwRSAvKiBTaGFy
ZWRXb3JrZXJQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTQ2OTg1RjIzMjdBNEE2QUQwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTg1RjIy
MjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjlDQ0NGRTI2OUQwMjFDMDA2RTAzMTQg
LyogQnJvYWRjYXN0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDY5Q0NDRkMyNjlEMDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjlE
NzdCODI3MDE2MjUxMDAxNDJGQTYgLyogTmF2aWdhdGlvblJlcXVlc3Rlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5RDc3QjYyNzAxNjI1MDAwMTQy
RkE2IC8qIE5hdmlnYXRpb25SZXF1ZXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk0NkE3OEIzNDI3OTlCRDcxMDAxMTU0RkUgLyogV29ya2Vy
T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUMxQjFEMjYyNkYxOEE0QjAwODgyREEyIC8qIFdvcmtlck9wdGlvbnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkFBQUEzRDI1RDM2MzIwMDBC
QUY0MkYgLyogQXVkaW9GaWxlUmVhZGVyQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QUFBQTNBMjVEMzYzMTQwMEJBRjQyRiAvKiBBdWRpb0Zp
bGVSZWFkZXJDb2NvYS5oICovOyB9OwogCQk0NkI2M0Y2QzFDNkU4RDE5MDAyRTkxNEIgLyogSlNF
dmVudFRhcmdldEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZCNjNGNkIxQzZFOENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI2
NTBERDIyOTYyNjI3MDBGRDhBQTQgLyogUGFnZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjY1MERCMjI5NjI2MjcwMEZEOEFBNCAv
KiBQYWdlSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0xMzczLDYgKzEzNzgsNyBAQAogCQk0NkM2OTZDQzFFNzIwNUZDMDA1OTc5
MzcgLyogQ1BVTW9uaXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkM2OTZDQTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgKi87
IH07CiAJCTQ2QzgzRUZFMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDODNFRkMxQTlCQkUyOTAw
QTc5QTQxIC8qIEdlb05vdGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDZDQTlDNDQxRjk3QkJFOTAwNENGQzNBIC8qIFZpc2liaWxpdHlT
dGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZD
QTlDNDExRjk3QkJFNzAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2Q0Y1MDRBMjdBQjFFQTQwMDcw
REJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDRjUwNDgyN0FCMUVBMTAwNzBEQkM4IC8qIFNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZEMDAwNDAyNkEwRkVCMzAwRDFCRjFFIC8qIFN1Ym1pdEV2
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkQw
MDAzRTI2QTBGRTZGMDBEMUJGMUUgLyogU3VibWl0RXZlbnQuaCAqLzsgfTsKIAkJNDZEQTRBMDIy
N0FCMDM5MzAwRTM3NUE4IC8qIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REE0QTAwMjdBQjAzOEQwMEUzNzVB
OCAvKiBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZEQkI2NTAxQUI4Qzk2RjAwRDlBODEzIC8qIFBvd2Vy
T2JzZXJ2ZXJNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2REJCNjRFMUFCOEM5NkYwMEQ5QTgxMyAvKiBQb3dlck9ic2VydmVyTWFjLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTkxODksNiArOTE5
NSw3IEBACiAJCTQ2MjczQzIxMjdBMUNCQzcwMDZBMTVCOSAvKiBKU0F1ZGlvV29ya2xldFByb2Nl
c3NvckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0F1ZGlvV29ya2xldFByb2Nlc3Nv
ckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MjczQ0FDMjYwRTU5
REYwMDZGQUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU1dTY3JpcHRTdG9yYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2MjczQ0FFMjYwRTU5REYwMDZGQUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1dTY3JpcHRTdG9yYWdlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYyN0ZGNUEyNzlCODdBMjAwQUEzOTE2IC8qIFNoYXJl
ZFdvcmtlcklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hh
cmVkV29ya2VySWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjJF
NEM0RDI2MTZBODAxMDAzQTJDNjcgLyogU2NyaXB0QnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNjcmlwdEJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NjJFNEM0RjI2MTZBODAxMDAzQTJDNjcgLyogU2NyaXB0QnVmZmVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEJ1ZmZlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcxQyAvKiBQb3dlck9i
c2VydmVyTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvd2Vy
T2JzZXJ2ZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTIzOCw4ICs5
MjQ1LDYgQEAKIAkJNDY3QTY4Q0YyNzVFQTk4OTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVh
ZFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3QTY4RDAyNzVFQTk4OTAwOUIzMUM1
IC8qIFNoYXJlZFdvcmtlclRocmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3Jr
ZXJUaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdBNjhEMTI3NUVB
OThBMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTQ2N0E2OEQyMjc1RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNDY3QTY4RDMyNzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1h
bmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyTWFuYWdlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2N0E2OEQ0Mjc1RUE5OEIwMDlCMzFDNSAvKiBT
aGFyZWRXb3JrZXJUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFkLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2N0E2OEQ1Mjc1RUE5OEMwMDlCMzFDNSAv
KiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2N0E2OEQ2Mjc1
RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtOTI1NSw2ICs5MjYwLDEyIEBACiAJCTQ2ODNERjNFMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1No
YWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDY4OEVFM0EyNkREMjYwQzAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDcm9zc09yaWdpbk1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDY4QjhCREUyNUNDODQ5MzAwRjY3ODIyIC8qIEpTQmFzZUF1ZGlvQ29udGV4dEN1c3Rv
bS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Jhc2VBdWRpb0NvbnRleHRDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RDMjI3NjNGODBDMDA0QjYxMEUgLyog
U2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2Vy
UHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RDNDI3NjNG
ODBEMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hh
cmVkV29ya2VyUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNE
QzUyNzYzRjgwRDAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0Njk0M0RDNjI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQzcy
NzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0Njk4NUYyMjI3QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlcktleS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlDQ0NGQTI2OUQwMjAyMDA2RTAzMTQgLyog
QnJvYWRjYXN0Q2hhbm5lbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCcm9hZGNhc3RDaGFubmVs
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5Q0NDRkMyNjlEMDIwMjAwNkUw
MzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnJvYWRjYXN0Q2hhbm5l
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlDQ0NGRDI2OUQwMjAzMDA2RTAz
MTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQnJvYWRjYXN0Q2hhbm5lbC5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05Mjk1LDYgKzkzMDYsOCBAQAogCQk0NkM4M0VG
QzFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR2VvTm90aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDZDQTlDNDExRjk3QkJFNzAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBWaXNpYmlsaXR5U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDZDQTlDNDIxRjk3QkJFNzAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0
ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVmlzaWJpbGl0eVN0YXRlLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZDRjUwNDgyN0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2Q0Y1MDQ5MjdBQjFF
QTEwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2RDAwMDNDMjZBMEZFNkYwMEQxQkYxRSAvKiBTdWJtaXRFdmVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdWJtaXRFdmVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RDAwMDNFMjZBMEZFNkYwMEQxQkYxRSAvKiBT
dWJtaXRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdWJtaXRFdmVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkQwMDAzRjI2QTBGRTcwMDBEMUJG
MUUgLyogU3VibWl0RXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFN1Ym1pdEV2ZW50
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNTU2LDYgKzIxNTY5LDggQEAK
IAkJNDY0N0NFNjEyN0FBRTFEQTAwOUNCRDQ4IC8qIGNvbnRleHQgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQ2Q0Y1MDQ5MjdBQjFFQTEwMDcwREJDOCAv
KiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAgKi8sCisJCQkJNDZDRjUwNDgyN0FCMUVB
MTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggKi8sCiAJCQkJNDY3QTY4
RDAyNzVFQTk4OTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5jcHAgKi8sCiAJCQkJNDY3
QTY4RDQyNzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5oICovLAogCQkJCTQ2
N0E2OENGMjc1RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAgKi8s
CkBAIC0yMTU3NCw4ICsyMTU4OSwxMyBAQAogCQkJCTQ2Njk0Q0U0Mjc1OTQ0OEUwMEUzMTUwRSAv
KiBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAgKi8sCiAJCQkJNDY2OTRDRTEyNzU5NDQ4QzAw
RTMxNTBFIC8qIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmggKi8sCiAJCQkJNDY2OTRDRTAyNzU5
NDQ4QzAwRTMxNTBFIC8qIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmlkbCAqLywKLQkJCQk0NjdB
NjhEMzI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5jcHAgKi8sCi0JCQkJ
NDY3QTY4RDIyNzVFQTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCAqLywKKwkJ
CQk0NjI3RkY1QTI3OUI4N0EyMDBBQTM5MTYgLyogU2hhcmVkV29ya2VySWRlbnRpZmllci5oICov
LAorCQkJCTQ2OTg1RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCAqLywK
KwkJCQk0Njk0M0RDNjI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbi5jcHAgKi8sCisJCQkJNDY5NDNEQzUyNzYzRjgwRDAwNEI2MTBFIC8qIFNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb24uaCAqLywKKwkJCQk0Njk0M0RDNzI3NjNGODBFMDA0QjYxMEUgLyog
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oICovLAorCQkJCTQ2OTQzREMyMjc2M0Y4MEMw
MDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAgKi8sCisJCQkJNDY5NDNEQzQyNzYz
RjgwRDAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlclByb3ZpZGVyLmggKi8sCiAJCQkJNDY3QTY4RDEy
NzVFQTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAgKi8sCiAJCQkJ
NDY3QTY4RDUyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oICov
LAogCQkJKTsKQEAgLTM3MTg3LDcgKzM3MjA3LDEyIEBACiAJCQkJODM0REZBRDAxRjdEQUU1RDAw
QzI3MjVCIC8qIFNoYXJlZFN0cmluZ0hhc2guaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RUEz
MDk5RUI3OEMwMDU2RTU4MSAvKiBTaGFyZWRUaW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFE
QzA0RkUyN0E4M0M5MzAwOENGOTY4IC8qIFNoYXJlZFZpZGVvRnJhbWVJbmZvLmggaW4gSGVhZGVy
cyAqLywKLQkJCQk0NjdBNjhEQTI3NUVBOTlDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZDRjUwNEEyN0FCMUVBNDAwNzBEQkM4IC8qIFNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjI3RkY1QjI3OUI4
N0FGMDBBQTM5MTYgLyogU2hhcmVkV29ya2VySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNDY5ODVGMjMyN0E0QTZBRDAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktleS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNDY5NDNEQzgyNzYzRjgxMjAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2OTQzREM5Mjc2M0Y4MTcwMDRCNjEw
RSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0
Njk0M0RDQTI3NjNGODFDMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ2N0E2OEQ4Mjc1RUE5OTUwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2N0E2OEQ3Mjc1RUE5OTEwMDlCMzFDNSAv
KiBTaGFyZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2N0E2OEQ5Mjc1RUE5
OTgwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zODA0Nyw2ICszODA3Miw3IEBACiAJCQkJRTEyNzFBMEIwRUVFQzc3QTAwRjYxMjEzIC8qIFdv
cmtlck5hdmlnYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVDQjA1MjUxRkI1MUYzQTAwMDg5
Qjk3IC8qIFdvcmtlck5ldHdvcmtBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkU0MzQ2NTEw
RjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0NkE3OEIzNDI3OTlCRDcxMDAxMTU0RkUgLyogV29ya2VyT3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODNENkFBRTYyNTI0RUUxQzAwNDI4QjRCIC8qIFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzlBMDk1RDI1MjRGMzdGMDBFRUYzMjggLyog
V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNG
NkFFQkYyNTI3QkIwQzAwMzRCQ0QzIC8qIFdvcmtlck9yV29ya2xldFRocmVhZC5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKaW5kZXggZGMwZjUwOThiODdmLi5mYTdk
MjMwMmVjMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTEwOSw2ICsxMDksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgTShTZWxlY3Rpb24pIFwKICAgICBNKFNlcnZpY2Vz
KSBcCiAgICAgTShTZXJ2aWNlV29ya2VyKSBcCisgICAgTShTaGFyZWRXb3JrZXIpIFwKICAgICBN
KFNwZWxsaW5nQW5kR3JhbW1hcikgXAogICAgIE0oU1FMRGF0YWJhc2UpIFwKICAgICBNKFN0b3Jh
Z2UpIFwKQEAgLTEyNiw2ICsxMjcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgTShXZWJH
TCkgXAogICAgIE0oV2ViUlRDKSBcCiAgICAgTShXZWJSVENTdGF0cykgXAorICAgIE0oV29ya2Vy
KSBcCiAgICAgTShYUikgXAogICAgIE0oV2hlZWxFdmVudFRlc3RNb25pdG9yKSBcCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCmluZGV4IGZlOTRm
ZGQ4YTUxNS4uNDZkYzQ1NGRmZGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTMgKzI2LDE3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCiAKKyNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIK
ICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZUNoYW5uZWwuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUg
IlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUg
IlNoYXJlZFdvcmtlck1hbmFnZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eS5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCIKKyNpbmNsdWRl
ICJTaGFyZWRXb3JrZXJQcm92aWRlci5oIgogI2luY2x1ZGUgIldvcmtlck9wdGlvbnMuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtNDEsOCArNDUsMzEgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoU2hhcmVkV29ya2VyKTsKIAotRXhj
ZXB0aW9uT3I8UmVmPFNoYXJlZFdvcmtlcj4+IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKERvY3VtZW50
JiBkb2N1bWVudCwgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzLCBTdHJpbmcmJiBzY3Jp
cHRVUkxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0
aW9ucz4+JiYgbWF5YmVPcHRpb25zKQorI2RlZmluZSBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9H
KGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFtpZGVudGlmaWVyPSV7
cHVibGljfXNdIFNoYXJlZFdvcmtlcjo6IiBmbXQsIHRoaXMsIG1faWRlbnRpZmllci50b1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCksICMjX19WQV9BUkdTX18pCisjZGVmaW5lIFNIQVJFRF9XT1JLRVJf
UkVMRUFTRV9MT0dfRVJST1IoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKFNoYXJlZFdvcmtl
ciwgIiVwIC0gW2lkZW50aWZpZXI9JXtwdWJsaWN9c10gU2hhcmVkV29ya2VyOjoiIGZtdCwgdGhp
cywgbV9pZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgIyNfX1ZBX0FSR1NfXykK
Kworc3RhdGljIEhhc2hNYXA8U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgU2hhcmVkV29y
a2VyKj4mIGFsbFNoYXJlZFdvcmtlcnMoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8U2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciwgU2hhcmVkV29ya2VyKj4+IGFsbFNoYXJlZFdvcmtlcnM7CisgICAgcmV0dXJuIGFs
bFNoYXJlZFdvcmtlcnM7Cit9CisKK1NoYXJlZFdvcmtlciogU2hhcmVkV29ya2VyOjpmcm9tSWRl
bnRpZmllcihTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAg
cmV0dXJuIGFsbFNoYXJlZFdvcmtlcnMoKS5nZXQoaWRlbnRpZmllcik7Cit9CisKK3N0YXRpYyBp
bmxpbmUgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiogbWFpblRocmVhZENvbm5lY3Rpb24o
KQoreworICAgIHJldHVybiBTaGFyZWRXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2hhcmVk
V29ya2VyQ29ubmVjdGlvbigpOworfQorCitFeGNlcHRpb25PcjxSZWY8U2hhcmVkV29ya2VyPj4g
U2hhcmVkV29ya2VyOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmcmJiBzY3JpcHRV
UkxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0aW9u
cz4+JiYgbWF5YmVPcHRpb25zKQogeworICAgIGlmICghbWFpblRocmVhZENvbm5lY3Rpb24oKSkK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiU2hhcmVkIHdv
cmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQiIH07CisKICAgICBpZiAoIWRvY3VtZW50LnNlY3VyaXR5
T3JpZ2luKCkuY2FuQWNjZXNzU2hhcmVkV29ya2Vycyhkb2N1bWVudC50b3BPcmlnaW4oKSkpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yLCAiVGhpcyBpZnJhbWUgZG9l
c24ndCBoYXZlIHN0b3JhZ2UgYWNjZXNzIl9zIH07CiAKQEAgLTY3LDI2ICs5NCwzNCBAQCBFeGNl
cHRpb25PcjxSZWY8U2hhcmVkV29ya2VyPj4gU2hhcmVkV29ya2VyOjpjcmVhdGUoRG9jdW1lbnQm
IGRvY3VtZW50LCBKU0M6OlJ1bgogICAgIGF1dG8gY2hhbm5lbCA9IE1lc3NhZ2VDaGFubmVsOjpj
cmVhdGUoZG9jdW1lbnQpOwogICAgIGF1dG8gdHJhbnNmZXJyZWRQb3J0ID0gY2hhbm5lbC0+cG9y
dDIoKS5kaXNlbnRhbmdsZSgpOwogCi0gICAgYXV0byBzaGFyZWRXb3JrZXIgPSBhZG9wdFJlZigq
bmV3IFNoYXJlZFdvcmtlcihkb2N1bWVudCwgY2hhbm5lbC0+cG9ydDEoKSwgcnVudGltZUZsYWdz
KSk7CisgICAgYXV0byBzaGFyZWRXb3JrZXIgPSBhZG9wdFJlZigqbmV3IFNoYXJlZFdvcmtlcihk
b2N1bWVudCwgdXJsLCBjaGFubmVsLT5wb3J0MSgpKSk7CiAgICAgc2hhcmVkV29ya2VyLT5zdXNw
ZW5kSWZOZWVkZWQoKTsKIAotICAgIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNpbmdsZXRvbigpLmNv
bm5lY3QodXJsLCBzaGFyZWRXb3JrZXIuZ2V0KCksIFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwg
V1RGTW92ZShvcHRpb25zKSk7CisgICAgQ2xpZW50T3JpZ2luIGNsaWVudE9yaWdpbiB7IGRvY3Vt
ZW50LnRvcERvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCksIGRvY3VtZW50LnNlY3Vy
aXR5T3JpZ2luKCkuZGF0YSgpIH07CisgICAgbWFpblRocmVhZENvbm5lY3Rpb24oKS0+cmVxdWVz
dFNoYXJlZFdvcmtlcihjbGllbnRPcmlnaW4sIHNoYXJlZFdvcmtlci0+aWRlbnRpZmllcigpLCB1
cmwsIFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwgb3B0aW9ucyk7CiAgICAgcmV0dXJuIHNoYXJl
ZFdvcmtlcjsKIH0KIAotU2hhcmVkV29ya2VyOjpTaGFyZWRXb3JrZXIoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBSZWY8TWVzc2FnZVBvcnQ+JiYgcG9ydCwgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZs
YWdzKQorU2hhcmVkV29ya2VyOjpTaGFyZWRXb3JrZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25z
dCBVUkwmIHVybCwgUmVmPE1lc3NhZ2VQb3J0PiYmIHBvcnQpCiAgICAgOiBBY3RpdmVET01PYmpl
Y3QoJmRvY3VtZW50KQorICAgICwgbV9pZGVudGlmaWVyKFNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXI6OmdlbmVyYXRlKCkpCiAgICAgLCBtX3BvcnQoV1RGTW92ZShwb3J0KSkKICAgICAsIG1f
aWRlbnRpZmllckZvckluc3BlY3RvcigiU2hhcmVkV29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50
aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpKQotICAgICwgbV9ydW50aW1lRmxhZ3Mo
cnVudGltZUZsYWdzKQotICAgICwgbV9jcmVhdGlvblRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkp
Ci0gICAgLCBtX3Byb3h5KFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpjcmVhdGUoKnRoaXMpKQog
eworICAgIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coIlNoYXJlZFdvcmtlcjoiKTsKKyAgICBh
bGxTaGFyZWRXb3JrZXJzKCkuYWRkKG1faWRlbnRpZmllciwgdGhpcyk7CisKKyAgICAvLyBJZiB0
aGUgc2hhcmVkIHdvcmtlciBVUkwgaXMgYSBibG9iIFVSTCwgbWFrZSBzdXJlIHRvIGtlZXAgaXQg
YWxpdmUgdW50aWwgdGhlIHdvcmtlciBoYXMgZmluaXNoZWQgbG9hZGluZy4KKyAgICBpZiAodXJs
LnByb3RvY29sSXNCbG9iKCkpCisgICAgICAgIG1fYmxvYlVSTEV4dGVuc2lvbiA9IHVybDsKIH0K
IAogU2hhcmVkV29ya2VyOjp+U2hhcmVkV29ya2VyKCkKIHsKLSAgICBtX3Byb3h5Lndvcmtlck9i
amVjdERlc3Ryb3llZCgpOworICAgIEFTU0VSVChhbGxTaGFyZWRXb3JrZXJzKCkuZ2V0KG1faWRl
bnRpZmllcikgPT0gdGhpcyk7CisgICAgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRygiflNoYXJl
ZFdvcmtlcjoiKTsKKyAgICBhbGxTaGFyZWRXb3JrZXJzKCkucmVtb3ZlKG1faWRlbnRpZmllcik7
CisgICAgQVNTRVJUKCFtX2lzQWN0aXZlKTsKIH0KIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
U2hhcmVkV29ya2VyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKQEAgLTEwNCwxOSAr
MTM5LDI5IEBAIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIFNoYXJlZFdvcmtlcjo6ZXZlbnRUYXJnZXRJ
bnRlcmZhY2UoKSBjb25zdAogICAgIHJldHVybiBTaGFyZWRXb3JrZXJFdmVudFRhcmdldEludGVy
ZmFjZVR5cGU7CiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyOjpzdG9wKCkKK3ZvaWQgU2hhcmVkV29y
a2VyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAg
IHRlcm1pbmF0ZSgpOworICAgIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coImZpbmlzaExvYWRp
bmc6IHN1Y2Nlc3M9JWQiLCBlcnJvci5pc051bGwoKSk7CisgICAgaWYgKCFlcnJvci5pc051bGwo
KSkgeworICAgICAgICBxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6
OkRPTU1hbmlwdWxhdGlvbiwgRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwg
RXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOworICAgICAg
ICBtX2lzQWN0aXZlID0gZmFsc2U7CisgICAgfQorICAgIG1fYmxvYlVSTEV4dGVuc2lvbi5jbGVh
cigpOwogfQogCiBib29sIFNoYXJlZFdvcmtlcjo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJveHkuaGFzUGVuZGluZ0FjdGl2aXR5KCkgfHwgbV9p
c0xvYWRpbmc7CisgICAgcmV0dXJuIG1faXNBY3RpdmU7CiB9CiAKLXZvaWQgU2hhcmVkV29ya2Vy
Ojp0ZXJtaW5hdGUoKQordm9pZCBTaGFyZWRXb3JrZXI6OnN0b3AoKQogewotICAgIG1fcHJveHku
dGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKTsKKyAgICBTSEFSRURfV09SS0VSX1JFTEVBU0Vf
TE9HKCJzdG9wOiIpOworICAgIG1faXNBY3RpdmUgPSBmYWxzZTsKKyAgICBtYWluVGhyZWFkQ29u
bmVjdGlvbigpLT5zaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShtX2lkZW50aWZpZXIpOwog
fQogCisjdW5kZWYgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRworI3VuZGVmIFNIQVJFRF9XT1JL
RVJfUkVMRUFTRV9MT0dfRVJST1IKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaAppbmRleCBlNTViMWNmNTUxM2Qu
LmJlNTc3ODM1YTA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjcsMzkgKzI3LDM2IEBACiAKICNpbmNsdWRlICJBYnN0cmFjdFdvcmtlci5oIgog
I2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1
bnRpbWVGbGFncy5oPgorI2luY2x1ZGUgIkJsb2JVUkwuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZXNzYWdlUG9ydDsKLWNsYXNzIFNoYXJlZFdv
cmtlclRocmVhZFByb3h5OworY2xhc3MgUmVzb3VyY2VFcnJvcjsKIAogc3RydWN0IFdvcmtlck9w
dGlvbnM7CiAKIGNsYXNzIFNoYXJlZFdvcmtlciBmaW5hbCA6IHB1YmxpYyBBYnN0cmFjdFdvcmtl
ciwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChT
aGFyZWRXb3JrZXIpOwogcHVibGljOgotICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8U2hhcmVk
V29ya2VyPj4gY3JlYXRlKERvY3VtZW50JiwgSlNDOjpSdW50aW1lRmxhZ3MsIFN0cmluZyYmIHNj
cmlwdFVSTCwgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25z
Pj4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBjcmVhdGUo
RG9jdW1lbnQmLCBTdHJpbmcmJiBzY3JpcHRVUkwsIHN0ZDo6b3B0aW9uYWw8c3RkOjp2YXJpYW50
PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYpOwogICAgIH5TaGFyZWRXb3JrZXIoKTsKIAorICAg
IHN0YXRpYyBTaGFyZWRXb3JrZXIqIGZyb21JZGVudGlmaWVyKFNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIpOworICAgIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgaWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIE1lc3NhZ2VQb3J0JiBwb3J0KCkg
Y29uc3QgeyByZXR1cm4gbV9wb3J0LmdldCgpOyB9Ci0gICAgSlNDOjpSdW50aW1lRmxhZ3MgcnVu
dGltZUZsYWdzKCkgeyByZXR1cm4gbV9ydW50aW1lRmxhZ3M7IH0KIAogICAgIGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllckZvckluc3BlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllckZv
ckluc3BlY3RvcjsgfQotICAgIE1vbm90b25pY1RpbWUgY3JlYXRpb25UaW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9jcmVhdGlvblRpbWU7IH0KIAotICAgIFNoYXJlZFdvcmtlclRocmVhZFByb3h5JiBw
cm94eSgpIHsgcmV0dXJuIG1fcHJveHk7IH0KLQotICAgIHZvaWQgc2V0SXNMb2FkaW5nKGJvb2wg
aXNMb2FkaW5nKSB7IG1faXNMb2FkaW5nID0gaXNMb2FkaW5nOyB9CisgICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0Lgog
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dCBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBTaGFyZWRXb3JrZXIoRG9jdW1lbnQmLCBSZWY8TWVz
c2FnZVBvcnQ+JiYsIEpTQzo6UnVudGltZUZsYWdzKTsKLQotICAgIHZvaWQgdGVybWluYXRlKCk7
CisgICAgU2hhcmVkV29ya2VyKERvY3VtZW50JiwgY29uc3QgVVJMJiwgUmVmPE1lc3NhZ2VQb3J0
PiYmKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0LgogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2
ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWw7CkBAIC03MCwxMiArNjcsMTEgQEAgcHJp
dmF0ZToKICAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsK
IAogCisgICAgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAg
UmVmPE1lc3NhZ2VQb3J0PiBtX3BvcnQ7CiAgICAgU3RyaW5nIG1faWRlbnRpZmllckZvckluc3Bl
Y3RvcjsKLSAgICBKU0M6OlJ1bnRpbWVGbGFncyBtX3J1bnRpbWVGbGFnczsKLSAgICBNb25vdG9u
aWNUaW1lIG1fY3JlYXRpb25UaW1lOwotICAgIFNoYXJlZFdvcmtlclRocmVhZFByb3h5JiBtX3By
b3h5OyAvLyBUaGUgcHJveHkgb3V0bGl2ZXMgdGhlIHdvcmtlciB0byBwZXJmb3JtIHRocmVhZCBz
aHV0ZG93bi4KLSAgICBib29sIG1faXNMb2FkaW5nIHsgZmFsc2UgfTsKKyAgICBCbG9iVVJMSGFu
ZGxlIG1fYmxvYlVSTEV4dGVuc2lvbjsKKyAgICBib29sIG1faXNBY3RpdmUgeyB0cnVlIH07CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyLmlkbAppbmRleCBiMTcxYzllZGY4MWIuLjRjNzQxNTRkODIwOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaWRsCkBA
IC0yOCw3ICsyOCw3IEBACiAgICAgRXhwb3NlZD1XaW5kb3cKIF0KIGludGVyZmFjZSBTaGFyZWRX
b3JrZXIgOiBFdmVudFRhcmdldCB7Ci0gIFtDYWxsV2l0aD1Eb2N1bWVudCZSdW50aW1lRmxhZ3Nd
IGNvbnN0cnVjdG9yKFVTVlN0cmluZyBzY3JpcHRVUkwsIG9wdGlvbmFsIChET01TdHJpbmcgb3Ig
V29ya2VyT3B0aW9ucykgb3B0aW9ucyk7CisgIFtDYWxsV2l0aD1Eb2N1bWVudF0gY29uc3RydWN0
b3IoVVNWU3RyaW5nIHNjcmlwdFVSTCwgb3B0aW9uYWwgKERPTVN0cmluZyBvciBXb3JrZXJPcHRp
b25zKSBvcHRpb25zKTsKIAogICByZWFkb25seSBhdHRyaWJ1dGUgTWVzc2FnZVBvcnQgcG9ydDsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggNDEyMWViNThjMjA1Li4zYzU1YTY4N2JmODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAy
MS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjYsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oIgogCisjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKKyNp
bmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlci5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlclRocmVhZC5oIgogI2luY2x1
ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAK
QEAgLTMzLDE3ICszOSw0NCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSk7CiAKKyNkZWZpbmUgU0NPUEVf
UkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gW3No
YXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFNoYXJlZFdvcmtlckdsb2JhbFNjb3Bl
OjoiIGZtdCwgdGhpcywgdGhpcy0+dGhyZWFkKCkuaWRlbnRpZmllcigpLnRvVUludDY0KCksICMj
X19WQV9BUkdTX18pCisKIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlOjpTaGFyZWRXb3JrZXJHbG9i
YWxTY29wZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFt
cywgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwgV29ya2VyVGhyZWFkJiB0aHJlYWQsIFJl
ZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblBy
b3h5KiBjb25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcikKICAg
ICA6IFdvcmtlckdsb2JhbFNjb3BlKFdvcmtlclRocmVhZFR5cGU6OlNoYXJlZFdvcmtlciwgcGFy
YW1zLCBXVEZNb3ZlKG9yaWdpbiksIHRocmVhZCwgV1RGTW92ZSh0b3BPcmlnaW4pLCBjb25uZWN0
aW9uUHJveHksIHNvY2tldFByb3ZpZGVyKQogICAgICwgbV9uYW1lKG5hbWUpCiB7CisgICAgU0NP
UEVfUkVMRUFTRV9MT0coIlNoYXJlZFdvcmtlckdsb2JhbFNjb3BlOiIpOwogICAgIHJlbGF4QWRv
cHRpb25SZXF1aXJlbWVudCgpOwogICAgIGFwcGx5Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9u
c2VIZWFkZXJzKHBhcmFtcy5jb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMpOwog
fQogCitTaGFyZWRXb3JrZXJUaHJlYWQmIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlOjp0aHJlYWQo
KQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTaGFyZWRXb3JrZXJUaHJlYWQmPihXb3JrZXJH
bG9iYWxTY29wZTo6dGhyZWFkKCkpOworfQorCiB2b2lkIFNoYXJlZFdvcmtlckdsb2JhbFNjb3Bl
OjpjbG9zZSgpCiB7CisgICAgU0NPUEVfUkVMRUFTRV9MT0coImNsb3NlOiIpOwogICAgIHRocmVh
ZCgpLnN0b3AobnVsbHB0cik7CiB9CiAKKy8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcv
bXVsdGlwYWdlL3dvcmtlcnMuaHRtbCNkb20tc2hhcmVkd29ya2VyIHN0ZXAgMTEuNQordm9pZCBT
aGFyZWRXb3JrZXJHbG9iYWxTY29wZTo6cG9zdENvbm5lY3RFdmVudChUcmFuc2ZlcnJlZE1lc3Nh
Z2VQb3J0JiYgdHJhbnNmZXJyZWRQb3J0LCBTdHJpbmcmJiBzb3VyY2VPcmlnaW4pCit7CisgICAg
U0NPUEVfUkVMRUFTRV9MT0coInBvc3RDb25uZWN0RXZlbnQ6Iik7CisgICAgYXV0byBzZXJpYWxp
emVkU2NyaXB0VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgiIik7CisgICAg
QVNTRVJUKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CisgICAgYXV0byBwb3J0cyA9IE1lc3NhZ2VQ
b3J0OjplbnRhbmdsZVBvcnRzKCp0aGlzLCB7IFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSB9KTsK
KyAgICBBU1NFUlQocG9ydHMuc2l6ZSgpID09IDEpOworICAgIGF1dG8gcG9ydCA9IHBvcnRzWzBd
OworICAgIEFTU0VSVChwb3J0KTsKKyAgICBhdXRvIGV2ZW50ID0gTWVzc2FnZUV2ZW50OjpjcmVh
dGUoV1RGTW92ZShwb3J0cyksIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5yZWxlYXNlTm9uTnVsbCgp
LCBzb3VyY2VPcmlnaW4sIHsgfSwgcG9ydCk7CisgICAgZXZlbnQtPmluaXRFdmVudChldmVudE5h
bWVzKCkuY29ubmVjdEV2ZW50LCBmYWxzZSwgZmFsc2UpOworCisgICAgZGlzcGF0Y2hFdmVudChX
VEZNb3ZlKGV2ZW50KSk7Cit9CisKKyN1bmRlZiBTQ09QRV9SRUxFQVNFX0xPRworCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCBmMzc3OWI4NGQxNTAuLmVkZjZiZDBi
ZWFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDExICsyNSwxMyBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIlRyYW5zZmVycmVkTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9i
YWxTY29wZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWQ7CiBzdHJ1Y3QgV29ya2VyUGFyYW1ldGVy
czsKIAogY2xhc3MgU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUgZmluYWwgOiBwdWJsaWMgV29ya2Vy
R2xvYmFsU2NvcGUgewpAQCAtMzksNyArNDEsMTEgQEAgcHVibGljOgogCiAgICAgVHlwZSB0eXBl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gVHlwZTo6U2hhcmVkV29ya2VyOyB9CiAgICAgY29uc3Qg
U3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgU2hhcmVkV29ya2Vy
VGhyZWFkJiB0aHJlYWQoKTsKKworICAgIHZvaWQgcG9zdENvbm5lY3RFdmVudChUcmFuc2ZlcnJl
ZE1lc3NhZ2VQb3J0JiYsIFN0cmluZyYmIHNvdXJjZU9yaWdpbik7CiAgICAgdm9pZCBjbG9zZSgp
OworCiBwcml2YXRlOgogICAgIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiwgV29y
a2VyVGhyZWFkJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJ
REJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciopOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJJZGVudGlmaWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44N2E5NzIxMDQ4NzkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJJZGVu
dGlmaWVyLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitlbnVtIFNoYXJlZFdvcmtlcklkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFNoYXJlZFdvcmtl
cklkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFNoYXJlZFdvcmtlcklkZW50aWZpZXJUeXBl
PjsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLjVmOWU2ZGM5MGJhOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlcktleS5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNsaWVudE9yaWdpbi5oIgorI2luY2x1
ZGUgPHd0Zi9IYXNoZXIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFNoYXJlZFdv
cmtlcktleSB7CisgICAgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbjsKKyAgICBVUkwgdXJs
OworICAgIFN0cmluZyBuYW1lOworCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OworfTsKKwor
aW5saW5lIHVuc2lnbmVkIFNoYXJlZFdvcmtlcktleTo6aGFzaCgpIGNvbnN0Cit7CisgICAgSGFz
aGVyIGhhc2hlcjsKKyAgICBhZGQoaGFzaGVyLCBvcmlnaW4uaGFzaCgpKTsKKyAgICBhZGQoaGFz
aGVyLCB1cmwpOworICAgIGFkZChoYXNoZXIsIG5hbWUpOworICAgIHJldHVybiBoYXNoZXIuaGFz
aCgpOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZFdvcmtlcktleSYg
YSwgY29uc3QgU2hhcmVkV29ya2VyS2V5JiBiKQoreworICAgIHJldHVybiBhLm9yaWdpbiA9PSBi
Lm9yaWdpbiAmJiBhLnVybCA9PSBiLnVybCAmJiBhLm5hbWUgPT0gYi5uYW1lOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVj
dCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk+IHsKKyAgICBzdGF0aWMgdW5z
aWduZWQgaGFzaChjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIGtleSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBrZXkuaGFzaCgpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGVxdWFs
KGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgYSwgY29uc3QgV2ViQ29yZTo6U2hhcmVk
V29ya2VyS2V5JiBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGEgPT0gYjsKKyAgICB9CisKKyAg
ICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNl
OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJLZXk+IDogR2VuZXJpY0hhc2hUcmFpdHM8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5PiB7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsKKyAgICBz
dGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5
JiBzbG90KSB7IG5ldyAoTm90TnVsbCwgJnNsb3QudXJsKSBVUkwoV1RGOjpIYXNoVGFibGVEZWxl
dGVkVmFsdWUpOyB9CisgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgV2ViQ29y
ZTo6U2hhcmVkV29ya2VyS2V5JiBzbG90KSB7IHJldHVybiBzbG90LnVybC5pc0hhc2hUYWJsZURl
bGV0ZWRWYWx1ZSgpOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkNWU2OWNkNzc5NS4uMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsMTIyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyTWFuYWdlci5oIgotCi0jaW5jbHVkZSAiQ29u
dGVudFNlY3VyaXR5UG9saWN5LmgiCi0jaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUg
IkxvYWRlclN0cmF0ZWd5LmgiCi0jaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCi0jaW5jbHVkZSAi
UGxhdGZvcm1TdHJhdGVnaWVzLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCi0jaW5jbHVk
ZSAiU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKLSNpbmNsdWRlICJT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIgotI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKLSNp
bmNsdWRlICJXb3JrZXJTY3JpcHRMb2FkZXIuaCIKLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LVNoYXJlZFdvcmtlck1hbmFnZXImIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNpbmdsZXRvbigpCi17
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYXJlZFdvcmtlck1hbmFnZXI+IGluc3RhbmNl
OwotICAgIHJldHVybiBpbnN0YW5jZS5nZXQoKTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJNYW5h
Z2VyOjpjb25uZWN0KGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRXb3JrZXImIHdvcmtlciwgVHJhbnNm
ZXJyZWRNZXNzYWdlUG9ydCYmIG1lc3NhZ2VQb3J0LCBXb3JrZXJPcHRpb25zJiYgb3B0aW9ucykK
LXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIC8vIEZJWE1FOiBIYW5kbGUg
d29ya2VycyBmcm9tIG90aGVyIHByb2Nlc3Nlcywgd2hpY2ggd2lsbCBwcm9iYWJseSByZXF1aXJl
IG1vdmluZyBjb25uZWN0IHRvIHRoZSBGcmFtZUxvYWRlckNsaWVudCBvciBzb21ldGhpbmcuCi0g
ICAgLy8gTWF5YmUgc29tZXRoaW5nIG1vcmUgbGlrZSB3aGF0IFNlcnZpY2VXb3JrZXJzIGRvZXMu
Ci0KLSAgICAvLyBGSVhNRTogQ2hlY2sgaWYgd2UgYWxyZWFkeSBtYWRlIGEgdGhyZWFkLgotICAg
IC8vIEZJWE1FOiBDaGVjayBpZiB0aGVyZSdzIGFscmVhZHkgYSBzaGFyZWQgd29ya2VyIGFuZCB1
c2UgdGhhdCBpZiB0aGVyZSBpcy4KLQotICAgIGF1dG8gbG9hZGVyID0gbWFrZVVuaXF1ZVJlZjxT
aGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+KHVybCwgd29ya2VyLCBXVEZNb3ZlKG1lc3NhZ2VQb3J0
KSwgV1RGTW92ZShvcHRpb25zKSk7Ci0gICAgYXV0byBpZGVudGlmaWVyID0gbG9hZGVyLT5pZGVu
dGlmaWVyKCk7Ci0gICAgbV9sb2FkZXJzLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKGxvYWRlcikp
OwotfQotCi12b2lkIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNjcmlwdExvYWRGYWlsZWQoU2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyJiBsb2FkZXIpCi17Ci0gICAgQWN0aXZlRE9NT2JqZWN0OjpxdWV1
ZVRhc2tUb0Rpc3BhdGNoRXZlbnQobG9hZGVyLndvcmtlcigpLCBUYXNrU291cmNlOjpET01NYW5p
cHVsYXRpb24sIEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2ZW50OjpD
YW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKLSAgICBtX2xvYWRlcnMu
cmVtb3ZlKGxvYWRlci5pZGVudGlmaWVyKCkpOwotfQotCi12b2lkIFNoYXJlZFdvcmtlck1hbmFn
ZXI6OnNjcmlwdExvYWRlZFN1Y2Nlc3NmdWxseShTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXImIGxv
YWRlciwgY29uc3QgU2NyaXB0QnVmZmVyJiBzY3JpcHRCdWZmZXIsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFNoYXJlZFdvcmtlciYgc2hhcmVkV29ya2Vy
LCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgdHJhbnNmZXJyZWRQb3J0KQotewotICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgYXV0byYgd29ya2VyID0gbG9hZGVyLndvcmtlcigp
OwotICAgIGF1dG8mIG9wdGlvbnMgPSBsb2FkZXIub3B0aW9ucygpOwotCi0gICAgYXV0byYgcHJv
eHkgPSBzaGFyZWRXb3JrZXIucHJveHkoKTsKLQotICAgIHByb3h5LnN0YXJ0V29ya2VyR2xvYmFs
U2NvcGUoCi0gICAgICAgIGxvYWRlci51cmwoKSwKLSAgICAgICAgb3B0aW9ucy5uYW1lLAotICAg
ICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LnVzZXJBZ2VudChsb2FkZXIudXJsKCkpLAotICAg
ICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+aXNPbkxpbmUoKSwK
LSAgICAgICAgc2NyaXB0QnVmZmVyLAotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LmNv
bnRlbnRTZWN1cml0eVBvbGljeSgpLT5yZXNwb25zZUhlYWRlcnMoKSwKLSAgICAgICAgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xp
Y3koKSwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcm9zc09yaWdpbkVtYmVkZGVy
UG9saWN5KCksCi0gICAgICAgIHdvcmtlci5jcmVhdGlvblRpbWUoKSwKLSAgICAgICAgUmVmZXJy
ZXJQb2xpY3k6OkVtcHR5U3RyaW5nLAotICAgICAgICBvcHRpb25zLnR5cGUsCi0gICAgICAgIG9w
dGlvbnMuY3JlZGVudGlhbHMsCi0gICAgICAgIHdvcmtlci5ydW50aW1lRmxhZ3MoKQotICAgICk7
Ci0gICAgaWYgKCFwcm94eS50aHJlYWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUkVMRUFT
RV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxEb2N1bWVudD4oc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkpOwotICAgIGF1dG8gc291cmNlT3JpZ2luID0gZG93bmNhc3Q8RG9jdW1l
bnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmcoKTsK
LQotICAgIHByb3h5LnRocmVhZCgpLT5ydW5Mb29wKCkucG9zdFRhc2soW3RyYW5zZmVycmVkUG9y
dCA9IFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwgc291cmNlT3JpZ2luID0gV1RGTW92ZShzb3Vy
Y2VPcmlnaW4pLmlzb2xhdGVkQ29weSgpXSAoYXV0byYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkg
bXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgICAg
IC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dvcmtlcnMuaHRtbCNk
b20tc2hhcmVkd29ya2VyIHN0ZXAgMTEuNQotICAgICAgICBhdXRvIHNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCIiKTsKLSAgICAgICAgQVNTRVJU
KHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7Ci0gICAgICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9y
dDo6ZW50YW5nbGVQb3J0cyhzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB7IFdURk1vdmUodHJhbnNm
ZXJyZWRQb3J0KSB9KTsKLSAgICAgICAgQVNTRVJUKHBvcnRzLnNpemUoKSA9PSAxKTsKLSAgICAg
ICAgYXV0byBwb3J0ID0gcG9ydHNbMF07Ci0gICAgICAgIEFTU0VSVChwb3J0KTsKLSAgICAgICAg
YXV0byBldmVudCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUocG9ydHMpLCBzZXJpYWxp
emVkU2NyaXB0VmFsdWUucmVsZWFzZU5vbk51bGwoKSwgc291cmNlT3JpZ2luLCB7IH0sIHBvcnQp
OwotICAgICAgICBldmVudC0+aW5pdEV2ZW50KGV2ZW50TmFtZXMoKS5jb25uZWN0RXZlbnQsIGZh
bHNlLCBmYWxzZSk7Ci0KLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTihpczxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkpOwotICAgICAgICBhdXRvJiB3b3JrZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFNoYXJlZFdv
cmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICAgICAgd29ya2Vy
R2xvYmFsU2NvcGUuZGlzcGF0Y2hFdmVudChXVEZNb3ZlKGV2ZW50KSk7Ci0gICAgfSk7Ci0KLSAg
ICBtX2xvYWRlcnMucmVtb3ZlKGxvYWRlci5pZGVudGlmaWVyKCkpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9T
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2M1MDEwNWY4MDcwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bi5jcHAKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJB
Y3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJFcnJvckV2ZW50LmgiCisjaW5jbHVkZSAiTG9n
Z2luZy5oIgorI2luY2x1ZGUgIlNjcmlwdEJ1ZmZlci5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtl
ci5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oIgorI2luY2x1ZGUgIldv
cmtlckZldGNoUmVzdWx0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2RlZmluZSBDT05O
RUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIl
cCAtIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OiIgZm10LCB0aGlzLCAjI19fVkFfQVJH
U19fKQorI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKGZtdCwgLi4uKSBSRUxF
QVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICIlcCAtIFNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb246OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQorCitzdGF0aWMgdWludDY0X3QgbG9h
ZGVySWRlbnRpZmllclNlZWQgPSAwOworCitTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCkgPSBkZWZhdWx0OworCitTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uOjp+U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpID0gZGVmYXVs
dDsKKwordm9pZCBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpmZXRjaFNjcmlwdEluQ2xp
ZW50KFVSTCYmIHVybCwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRv
KiB3b3JrZXJPYmplY3QgPSBTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVyKHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIpOworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coImZldGNoU2Ny
aXB0SW5DbGllbnQ6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cywgd29y
a2VyPSVwIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5k
YXRhKCksIHdvcmtlck9iamVjdCk7CisgICAgaWYgKCF3b3JrZXJPYmplY3QpCisgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworCisgICAgYXV0byBsb2FkZXJJZGVudGlmaWVy
ID0gKytsb2FkZXJJZGVudGlmaWVyU2VlZDsKKyAgICBhdXRvIGxvYWRlciA9IG1ha2VVbmlxdWVS
ZWY8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPihXVEZNb3ZlKHVybCksICp3b3JrZXJPYmplY3Qs
IFdURk1vdmUod29ya2VyT3B0aW9ucykpOworICAgIGF1dG8gbG9hZGVyUHRyID0gbG9hZGVyLnB0
cigpOworICAgIG1fbG9hZGVycy5hZGQobG9hZGVySWRlbnRpZmllciwgV1RGTW92ZShsb2FkZXIp
KTsKKworICAgIGxvYWRlclB0ci0+bG9hZChbdGhpcywgbG9hZGVySWRlbnRpZmllciwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgV29ya2VyRmV0
Y2hSZXN1bHQmIGZldGNoUmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgQ09OTkVDVElPTl9SRUxF
QVNFX0xPRygiZmV0Y2hTY3JpcHRJbkNsaWVudDogZmluaXNoZWQgc2NyaXB0IGxvYWQsIHN1Y2Nl
c3M9JWQiLCBmZXRjaFJlc3VsdC5lcnJvci5pc051bGwoKSk7CisgICAgICAgIGF1dG8gbG9hZGVy
ID0gbV9sb2FkZXJzLnRha2UobG9hZGVySWRlbnRpZmllcik7CisgICAgICAgIEFTU0VSVChsb2Fk
ZXIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmZXRjaFJlc3VsdCk7CisgICAgfSk7Cit9
CisKK3ZvaWQgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6bm90aWZ5V29ya2VyT2JqZWN0
T2ZMb2FkQ29tcGxldGlvbihXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQor
eworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgYXV0byogd29ya2VyT2JqZWN0ID0g
U2hhcmVkV29ya2VyOjpmcm9tSWRlbnRpZmllcihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
KTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKCJub3RpZnlXb3JrZXJPYmplY3RP
ZkxvYWRDb21wbGV0aW9uOiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMs
IHdvcmtlcj0lcCwgc3VjY2Vzcz0lZCIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9T
dHJpbmcoKS51dGY4KCkuZGF0YSgpLCB3b3JrZXJPYmplY3QsIGVycm9yLmlzTnVsbCgpKTsKKyAg
ICBpZiAod29ya2VyT2JqZWN0KQorICAgICAgICB3b3JrZXJPYmplY3QtPmRpZEZpbmlzaExvYWRp
bmcoZXJyb3IpOworfQorCit2b2lkIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnBvc3RF
eGNlcHRpb25Ub1dvcmtlck9iamVjdChTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBhdXRvKiB3b3JrZXJPYmplY3QgPSBT
aGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVyKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIp
OworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IoInBvc3RFeGNlcHRpb25Ub1dvcmtl
ck9iamVjdDogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zLCB3b3JrZXI9
JXAiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSwgd29ya2VyT2JqZWN0KTsKKyAgICBpZiAod29ya2VyT2JqZWN0KQorICAgICAgICBBY3RpdmVE
T01PYmplY3Q6OnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqd29ya2VyT2JqZWN0LCBUYXNrU291
cmNlOjpET01NYW5pcHVsYXRpb24sIEVycm9yRXZlbnQ6OmNyZWF0ZShlcnJvck1lc3NhZ2UsIHNv
dXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB7IH0pKTsKK30KKworI3VuZGVmIENP
Tk5FQ1RJT05fUkVMRUFTRV9MT0cKKyN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9S
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjk1NmI0NzM0YTEzMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAi
VHJhbnNmZXJyZWRNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lc3NhZ2VQb3J0OworY2xhc3MgU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyOworCitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworc3RydWN0IFdvcmtlckZldGNo
UmVzdWx0Oworc3RydWN0IFdvcmtlck9wdGlvbnM7CisKK2NsYXNzIFNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uPiB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbigpOworCisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTaGFyZWRXb3Jr
ZXIoY29uc3QgQ2xpZW50T3JpZ2luJiwgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29u
c3QgVVJMJiwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBjb25zdCBXb3JrZXJPcHRpb25zJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShTaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICAvLyBJUEMg
bWVzc2FnZXMuCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmZXRjaFNjcmlwdEluQ2xpZW50KFVS
TCYmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXb3JrZXJPcHRpb25z
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKT4mJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0
aW9uKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
RXJyb3ImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9i
amVjdChTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b24oKTsKKworcHJpdmF0ZToKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBVbmlxdWVSZWY8U2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyPj4gbV9sb2FkZXJzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uZWJjZDRhN2FlODdhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oCkBAIC0wLDAg
KzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlByb2Nlc3NR
dWFsaWZpZWQuaCIKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2VudW0gU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllclR5cGUgeyB9
OwordXNpbmcgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA9IFByb2Nlc3NRdWFsaWZpZWQ8
T2JqZWN0SWRlbnRpZmllcjxTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyVHlwZT4+OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi5mZDhlMTk3ZmEyNDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5jcHAKQEAgLTAsMCAr
MSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFy
ZWRXb3JrZXJQcm92aWRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBTaGFy
ZWRXb3JrZXJQcm92aWRlciogc2hhcmVkUHJvdmlkZXI7CisKKy8vIEZvciBXZWJLaXRMZWdhY3ku
CitjbGFzcyBEdW1teVNoYXJlZFdvcmtlclByb3ZpZGVyIGZpbmFsIDogcHVibGljIFNoYXJlZFdv
cmtlclByb3ZpZGVyIHsKK3B1YmxpYzoKKyAgICBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
KiBzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQorfTsK
KworU2hhcmVkV29ya2VyUHJvdmlkZXImIFNoYXJlZFdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24o
KQoreworICAgIGlmICghc2hhcmVkUHJvdmlkZXIpCisgICAgICAgIHNoYXJlZFByb3ZpZGVyID0g
bmV3IER1bW15U2hhcmVkV29ya2VyUHJvdmlkZXI7CisgICAgcmV0dXJuICpzaGFyZWRQcm92aWRl
cjsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJQcm92aWRlcjo6c2V0U2hhcmVkUHJvdmlkZXIoU2hh
cmVkV29ya2VyUHJvdmlkZXImIG5ld1Byb3ZpZGVyKQoreworICAgIFJFTEVBU0VfQVNTRVJUKCFz
aGFyZWRQcm92aWRlcik7CisgICAgc2hhcmVkUHJvdmlkZXIgPSAmbmV3UHJvdmlkZXI7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmgKc2ltaWxhcml0eSBpbmRleCA2NCUKcmVuYW1l
IGZyb20gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5o
CnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92
aWRlci5oCmluZGV4IGFlZjgyNzkwMzU4NC4uY2I1N2NjMWU3YjVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJvdmlkZXIuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMjYgKzI1LDE3
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiTWVzc2FnZVBvcnRJZGVudGlmaWVyLmgi
Ci0jaW5jbHVkZSAiU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgiCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgU2hhcmVkV29ya2VyOwotY2xhc3MgU2NyaXB0QnVmZmVyOwotc3RydWN0
IFdvcmtlck9wdGlvbnM7Ci11c2luZyBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0ID0gc3RkOjpwYWly
PFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVu
dGlmaWVyPjsKK2NsYXNzIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb247CiAKLWNsYXNzIFNo
YXJlZFdvcmtlck1hbmFnZXIgeworY2xhc3MgU2hhcmVkV29ya2VyUHJvdmlkZXIgewogcHVibGlj
OgotICAgIHN0YXRpYyBTaGFyZWRXb3JrZXJNYW5hZ2VyJiBzaW5nbGV0b24oKTsKLSAgICB2b2lk
IGNvbm5lY3QoY29uc3QgVVJMJiwgU2hhcmVkV29ya2VyJiwgVHJhbnNmZXJyZWRNZXNzYWdlUG9y
dCYmLCBXb3JrZXJPcHRpb25zJiYpOwotCi0gICAgdm9pZCBzY3JpcHRMb2FkRmFpbGVkKFNoYXJl
ZFdvcmtlclNjcmlwdExvYWRlciYpOwotICAgIHZvaWQgc2NyaXB0TG9hZGVkU3VjY2Vzc2Z1bGx5
KFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYp
OworICAgIHN0YXRpYyBTaGFyZWRXb3JrZXJQcm92aWRlciYgc2luZ2xldG9uKCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0U2hhcmVkUHJvdmlkZXIoU2hhcmVkV29ya2VyUHJv
dmlkZXImKTsKIAotcHJpdmF0ZToKLSAgICBIYXNoTWFwPFNoYXJlZFdvcmtlclNjcmlwdExvYWRl
cklkZW50aWZpZXIsIFVuaXF1ZVJlZjxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+PiBtX2xvYWRl
cnM7CisgICAgdmlydHVhbCB+U2hhcmVkV29ya2VyUHJvdmlkZXIoKSB7IH0KKyAgICB2aXJ0dWFs
IFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24qIHNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKSA9
IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRl
eCAzMTFlYmQ2MDc4YmMuLmVhMmUwNDhjNzYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDIz
ICsyOSwyNiBAQAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKLSNpbmNsdWRlICJT
aGFyZWRXb3JrZXJNYW5hZ2VyLmgiCisjaW5jbHVkZSAiV29ya2VyRmV0Y2hSZXN1bHQuaCIKICNp
bmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0TG9hZGVyLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpTaGFy
ZWRXb3JrZXJTY3JpcHRMb2FkZXIoY29uc3QgVVJMJiB1cmwsIFNoYXJlZFdvcmtlciYgd29ya2Vy
LCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgcG9ydCwgV29ya2VyT3B0aW9ucyYmIG9wdGlvbnMp
Ci0gICAgOiBtX2lkZW50aWZpZXIoU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmllcjo6
Z2VuZXJhdGUoKSkKLSAgICAsIG1fb3B0aW9ucyhXVEZNb3ZlKG9wdGlvbnMpKQorU2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIoVVJMJiYgdXJsLCBTaGFy
ZWRXb3JrZXImIHdvcmtlciwgV29ya2VyT3B0aW9ucyYmIG9wdGlvbnMpCisgICAgOiBtX29wdGlv
bnMoV1RGTW92ZShvcHRpb25zKSkKICAgICAsIG1fd29ya2VyKHdvcmtlcikKLSAgICAsIG1fcG9y
dChXVEZNb3ZlKHBvcnQpKQogICAgICwgbV9sb2FkZXIoV29ya2VyU2NyaXB0TG9hZGVyOjpjcmVh
dGUoKSkKLSAgICAsIG1fcGVuZGluZ0FjdGl2aXR5KHdvcmtlci5tYWtlUGVuZGluZ0FjdGl2aXR5
KHdvcmtlcikpCi0gICAgLCBtX3VybCh1cmwpCisgICAgLCBtX3VybChXVEZNb3ZlKHVybCkpCiB7
Ci0gICAgbV93b3JrZXItPnNldElzTG9hZGluZyh0cnVlKTsKLSAgICBtX2xvYWRlci0+bG9hZEFz
eW5jaHJvbm91c2x5KCp3b3JrZXIuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBSZXNvdXJjZVJl
cXVlc3QodXJsKSwgd29ya2VyLndvcmtlckZldGNoT3B0aW9ucyhvcHRpb25zLCBGZXRjaE9wdGlv
bnM6OkRlc3RpbmF0aW9uOjpTaGFyZWR3b3JrZXIpLCBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZv
cmNlbWVudDo6RW5mb3JjZVdvcmtlclNyY0RpcmVjdGl2ZSwgU2VydmljZVdvcmtlcnNNb2RlOjpB
bGwsICp0aGlzLCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKK30KKwordm9pZCBTaGFy
ZWRXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBX
b3JrZXJGZXRjaFJlc3VsdCYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVCgh
bV9jb21wbGV0aW9uSGFuZGxlcik7CisgICAgbV9jb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpOworCisgICAgbV9sb2FkZXItPmxvYWRBc3luY2hyb25vdXNseSgq
bV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgUmVzb3VyY2VSZXF1ZXN0KG1fdXJs
KSwgbV93b3JrZXItPndvcmtlckZldGNoT3B0aW9ucyhtX29wdGlvbnMsIEZldGNoT3B0aW9uczo6
RGVzdGluYXRpb246OlNoYXJlZHdvcmtlciksIENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2Vt
ZW50OjpFbmZvcmNlV29ya2VyU3JjRGlyZWN0aXZlLCBTZXJ2aWNlV29ya2Vyc01vZGU6OkFsbCwg
KnRoaXMsIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwogfQogCiB2b2lkIFNoYXJlZFdv
cmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKQEAgLTU1LDE2ICs1OCwx
MiBAQCB2b2lkIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudAogCiB2b2lkIFNoYXJlZFdvcmtlclNjcmlwdExv
YWRlcjo6bm90aWZ5RmluaXNoZWQoKQogewotICAgIG1fd29ya2VyLT5zZXRJc0xvYWRpbmcoZmFs
c2UpOworICAgIGlmIChtX2xvYWRlci0+ZmFpbGVkKCkpCisgICAgICAgIHJldHVybiBtX2NvbXBs
ZXRpb25IYW5kbGVyKHdvcmtlckZldGNoRXJyb3IobV9sb2FkZXItPmVycm9yKCkpKTsKIAotICAg
IGF1dG8qIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBtX3dvcmtlci0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwotICAgIGlmIChtX2xvYWRlci0+ZmFpbGVkKCkgfHwgIXNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpIHsKLSAgICAgICAgbV93b3JrZXItPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJ
c0NhbmNlbGFibGU6OlllcykpOwotICAgICAgICBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0
b24oKS5zY3JpcHRMb2FkRmFpbGVkKCp0aGlzKTsgLy8gZGVsZXRlcyB0aGlzLgotICAgIH0gZWxz
ZSB7CisgICAgaWYgKGF1dG8qIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBtX3dvcmtlci0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OnNjcmlwdEltcG9ydGVkKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBtX2xvYWRlci0+aWRlbnRp
ZmllcigpLCBtX2xvYWRlci0+c2NyaXB0KCkudG9TdHJpbmcoKSk7Ci0gICAgICAgIFNoYXJlZFdv
cmtlck1hbmFnZXI6OnNpbmdsZXRvbigpLnNjcmlwdExvYWRlZFN1Y2Nlc3NmdWxseSgqdGhpcywg
bV9sb2FkZXItPnNjcmlwdCgpLCAqbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
bV93b3JrZXIuZ2V0KCksIHN0ZDo6ZXhjaGFuZ2UobV9wb3J0LCB7IH0pKTsgLy8gZGVsZXRlcyB0
aGlzLgotICAgIH0KKyAgICBtX2NvbXBsZXRpb25IYW5kbGVyKHsgbV9sb2FkZXItPnNjcmlwdCgp
LCBtX2xvYWRlci0+Y2VydGlmaWNhdGVJbmZvKCksIG1fbG9hZGVyLT5jb250ZW50U2VjdXJpdHlQ
b2xpY3koKSwgbV9sb2FkZXItPmNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3koKSwgbV9sb2FkZXIt
PnJlZmVycmVyUG9saWN5KCksIHsgfSB9KTsgLy8gZGVsZXRlcyB0aGlzLgogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oCmluZGV4IGJmMWQ0YWVmM2EwOS4uZWIwYjcx
NDViZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXJTY3JpcHRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9T
aGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnRJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXNwb25zZS5oIgpAQCAtMzgsMzMgKzM3LDI4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgU2hhcmVkV29ya2VyOwogY2xhc3MgV29ya2VyU2NyaXB0TG9hZGVyOwot
Ci1jbGFzcyBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI7Ci11c2luZyBTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXJJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxTaGFyZWRXb3JrZXJTY3JpcHRM
b2FkZXI+OwotCi11c2luZyBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0ID0gc3RkOjpwYWlyPFdlYkNv
cmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVy
PjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKIAogY2xhc3MgU2hhcmVkV29ya2VyU2NyaXB0
TG9hZGVyIDogcHJpdmF0ZSBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcihj
b25zdCBVUkwmLCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdvcmtl
ck9wdGlvbnMmJik7CisgICAgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyKFVSTCYmLCBTaGFyZWRX
b3JrZXImLCBXb3JrZXJPcHRpb25zJiYpOworCisgICAgdm9pZCBsb2FkKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKT4mJik7CiAKLSAgICBTaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lk
ZW50aWZpZXI7IH0KICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9
CiAgICAgU2hhcmVkV29ya2VyJiB3b3JrZXIoKSB7IHJldHVybiBtX3dvcmtlci5nZXQoKTsgfQot
ICAgIGNvbnN0IFdvcmtlck9wdGlvbnMmIG9wdGlvbnMoKSB7IHJldHVybiBtX29wdGlvbnM7IH0K
KyAgICBjb25zdCBXb3JrZXJPcHRpb25zJiBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRp
b25zOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAgICAgdm9p
ZCBub3RpZnlGaW5pc2hlZCgpIGZpbmFsOwogCi0gICAgY29uc3QgU2hhcmVkV29ya2VyU2NyaXB0
TG9hZGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgY29uc3QgV29ya2VyT3B0aW9ucyBt
X29wdGlvbnM7CiAgICAgY29uc3QgUmVmPFNoYXJlZFdvcmtlcj4gbV93b3JrZXI7Ci0gICAgVHJh
bnNmZXJyZWRNZXNzYWdlUG9ydCBtX3BvcnQ7CiAgICAgY29uc3QgUmVmPFdvcmtlclNjcmlwdExv
YWRlcj4gbV9sb2FkZXI7Ci0gICAgY29uc3QgUmVmPEFjdGl2ZURPTU9iamVjdDo6UGVuZGluZ0Fj
dGl2aXR5PFNoYXJlZFdvcmtlcj4+IG1fcGVuZGluZ0FjdGl2aXR5OwogICAgIGNvbnN0IFVSTCBt
X3VybDsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdvcmtlckZldGNoUmVzdWx0
Jik+IG1fY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2Nv
bnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uMDdhOTBkOTgwNTEyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlci5jcHAKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCIKKworI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIgorI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyJiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXI+IHNoYXJlZE1hbmFnZXI7CisgICAgcmV0dXJuIHNoYXJlZE1hbmFnZXI7Cit9CisKK1No
YXJlZFdvcmtlclRocmVhZFByb3h5KiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2hhcmVk
V29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikgY29u
c3QKK3sKKyAgICByZXR1cm4gbV93b3JrZXJNYXAuZ2V0KHNoYXJlZFdvcmtlcklkZW50aWZpZXIp
OworfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzdG9wU2hhcmVkV29ya2Vy
KFNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBh
dXRvIHdvcmtlciA9IG1fd29ya2VyTWFwLnRha2Uoc2hhcmVkV29ya2VySWRlbnRpZmllcik7Cisg
ICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6
OnN0b3BTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHdv
cmtlcj0lcCIsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSwgd29ya2VyLmdldCgp
KTsKKyAgICBpZiAoIXdvcmtlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgd29ya2VyLT5zZXRB
c1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKCk7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJl
IGFibGUgdG8gZGVhbCB3aXRoIHRoZSB0aHJlYWQgYmVpbmcgdW5yZXNwb25zaXZlIGhlcmUuCisK
KyAgICBhdXRvJiB0aHJlYWQgPSB3b3JrZXItPnRocmVhZCgpOworICAgIHRocmVhZC5zdG9wKFt3
b3JrZXIgPSBXVEZNb3ZlKHdvcmtlcildKCkgbXV0YWJsZSB7CisgICAgICAgIC8vIFNwaW4gdGhl
IHJ1bmxvb3AgYmVmb3JlIHJlbGVhc2luZyB0aGUgc2hhcmVkIHdvcmtlciB0aHJlYWQgcHJveHks
IGFzIHRoZXJlIHdvdWxkIG90aGVyd2lzZSBiZQorICAgICAgICAvLyBhIHJhY2UgdG93YXJkcyBp
dHMgZGVzdHJ1Y3Rpb24uCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dvcmtlciA9IFdURk1v
dmUod29ya2VyKV0geyB9KTsKKyAgICB9KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlcjo6c3RvcEFsbFNoYXJlZFdvcmtlcnMoKQoreworICAgIHdoaWxlICghbV93b3JrZXJN
YXAuaXNFbXB0eSgpKQorICAgICAgICBzdG9wU2hhcmVkV29ya2VyKG1fd29ya2VyTWFwLmJlZ2lu
KCktPmtleSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNldENvbm5l
Y3Rpb24oc3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKK3sKKyAgICBB
U1NFUlQoIW1fY29ubmVjdGlvbiB8fCBtX2Nvbm5lY3Rpb24tPmlzQ2xvc2VkKCkpOworICAgIG1f
Y29ubmVjdGlvbiA9IFdURk1vdmUoY29ubmVjdGlvbik7Cit9CisKK2F1dG8gU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXI6OmNvbm5lY3Rpb24oKSBjb25zdCAtPiBDb25uZWN0aW9uKgoreworICAg
IHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXI6OnJlZ2lzdGVyU2hhcmVkV29ya2VyVGhyZWFkKFJlZjxTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eT4mJiBwcm94eSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIFJF
TEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpyZWdp
c3RlclNoYXJlZFdvcmtlclRocmVhZDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQs
IHByb3h5LT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IG1f
d29ya2VyTWFwLmFkZChwcm94eS0+aWRlbnRpZmllcigpLCBwcm94eS5jb3B5UmVmKCkpOworICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICBwcm94eS0+
dGhyZWFkKCkuc3RhcnQoW10oY29uc3QgU3RyaW5nJiAvKmV4Y2VwdGlvbk1lc3NhZ2UqLykgeyB9
KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6cG9z
dENvbm5lY3RFdmVudChTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZp
ZXIsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiB0cmFuc2ZlcnJlZFBvcnQsIFN0cmluZyYmIHNv
dXJjZU9yaWdpbikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8qIHBy
b3h5ID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNoYXJlZFdvcmtl
cihzaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIs
ICJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVu
dDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgcHJveHk9JXAiLCBzaGFyZWRX
b3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCksIHByb3h5KTsKKyAgICBpZiAoIXByb3h5KQorICAg
ICAgICByZXR1cm47CisKKyAgICBwcm94eS0+dGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFt0
cmFuc2ZlcnJlZFBvcnQgPSBXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCksIHNvdXJjZU9yaWdpbiA9
IFdURk1vdmUoc291cmNlT3JpZ2luKS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
KyAgICAgICAgZG93bmNhc3Q8U2hhcmVkV29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpLnBvc3RDb25uZWN0RXZlbnQoV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBXVEZN
b3ZlKHNvdXJjZU9yaWdpbikpOworICAgIH0pOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyOjpDb25uZWN0aW9uOjp0ZXJtaW5hdGVTaGFyZWRXb3JrZXIoU2hhcmVkV29ya2Vy
SWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyKQoreworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXI6OkNvbm5lY3Rpb246OnRlcm1pbmF0ZVNoYXJlZFdvcmtlcjogc2hhcmVkV29y
a2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQo
KSk7CisgICAgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnN0b3BTaGFy
ZWRXb3JrZXIoc2hhcmVkV29ya2VySWRlbnRpZmllcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQv
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjMzODI1Mjg5MzczZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXIuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiVHJhbnNmZXJy
ZWRNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk7CisKK2NsYXNzIFNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXImIHNpbmdsZXRvbigpOworCisgICAgU2hhcmVk
V29ya2VyVGhyZWFkUHJveHkqIHNoYXJlZFdvcmtlcihTaGFyZWRXb3JrZXJJZGVudGlmaWVyKSBj
b25zdDsKKyAgICB2b2lkIHN0b3BTaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllcik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wQWxsU2hhcmVkV29ya2VycygpOworCisgICAg
Y2xhc3MgQ29ubmVjdGlvbiB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAg
IHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+Q29ubmVjdGlvbigpIHsgfQorICAgICAgICB2aXJ0
dWFsIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
ID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChT
aGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSA9IDA7
CisgICAgICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xvc2VkOyB9CisK
KyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZvaWQgc2V0QXNDbG9zZWQoKSB7IG1faXNDbG9zZWQg
PSB0cnVlOyB9CisKKyAgICAgICAgLy8gSVBDIG1lc3NhZ2UgaGFuZGxlcnMuCisgICAgICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcG9zdENvbm5lY3RFdmVudChTaGFyZWRXb3JrZXJJZGVudGlmaWVy
LCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFN0cmluZyYmIHNvdXJjZU9yaWdpbik7CisgICAg
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdGVybWluYXRlU2hhcmVkV29ya2VyKFNoYXJlZFdvcmtl
cklkZW50aWZpZXIpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCBtX2lzQ2xvc2VkIHsg
ZmFsc2UgfTsKKyAgICB9OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb25uZWN0aW9u
KHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb25u
ZWN0aW9uKiBjb25uZWN0aW9uKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
Z2lzdGVyU2hhcmVkV29ya2VyVGhyZWFkKFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4mJik7
CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPFNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyPjsKKworICAgIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyKCkgPSBk
ZWZhdWx0OworCisgICAgc3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsK
KyAgICBIYXNoTWFwPFNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFJlZjxTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eT4+IG1fd29ya2VyTWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3Jr
ZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFy
ZWRXb3JrZXJUaHJlYWQuY3BwCmluZGV4IDllZDU1ODhmYmQ3OS4uY2NjM2ViOTgyNzE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtl
clRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9T
aGFyZWRXb3JrZXJUaHJlYWQuY3BwCkBAIC0yNiwxOSArMjYsMjMgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKIAorI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldv
cmtlck9iamVjdFByb3h5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkV29ya2Vy
VGhyZWFkOjpTaGFyZWRXb3JrZXJUaHJlYWQoY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1l
dGVycywgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYg
bG9hZGVyUHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkmIGRlYnVnZ2VyUHJveHksIFdvcmtlck9i
amVjdFByb3h5JiBvYmplY3RQcm94eSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwg
Y29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9u
UHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyLCBK
U0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MpCitTaGFyZWRXb3JrZXJUaHJlYWQ6OlNoYXJl
ZFdvcmtlclRocmVhZChTaGFyZWRXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFdv
cmtlclBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc291cmNlQ29k
ZSwgV29ya2VyTG9hZGVyUHJveHkmIGxvYWRlclByb3h5LCBXb3JrZXJEZWJ1Z2dlclByb3h5JiBk
ZWJ1Z2dlclByb3h5LCBXb3JrZXJPYmplY3RQcm94eSYgb2JqZWN0UHJveHksIFdvcmtlclRocmVh
ZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIElE
QkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBjb25uZWN0aW9uUHJveHksIFNvY2tldFByb3Zp
ZGVyKiBzb2NrZXRQcm92aWRlciwgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKQogICAg
IDogV29ya2VyVGhyZWFkKHBhcmFtZXRlcnMsIHNvdXJjZUNvZGUsIGxvYWRlclByb3h5LCBkZWJ1
Z2dlclByb3h5LCBvYmplY3RQcm94eSwgc3RhcnRNb2RlLCB0b3BPcmlnaW4sIGNvbm5lY3Rpb25Q
cm94eSwgc29ja2V0UHJvdmlkZXIsIHJ1bnRpbWVGbGFncykKKyAgICAsIG1faWRlbnRpZmllcihp
ZGVudGlmaWVyKQogICAgICwgbV9uYW1lKHBhcmFtZXRlcnMubmFtZS5pc29sYXRlZENvcHkoKSkK
IHsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFNoYXJlZFdvcmtlclRocmVh
ZDo6U2hhcmVkV29ya2VyVGhyZWFkOiIsIHRoaXMpOwogfQogCiBSZWY8V29ya2VyR2xvYmFsU2Nv
cGU+IFNoYXJlZFdvcmtlclRocmVhZDo6Y3JlYXRlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgV29y
a2VyUGFyYW1ldGVycyYgcGFyYW1ldGVycywgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwg
UmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbikKIHsKKyAgICBSRUxFQVNFX0xPRyhTaGFy
ZWRXb3JrZXIsICIlcCAtIFNoYXJlZFdvcmtlclRocmVhZDo6Y3JlYXRlV29ya2VyR2xvYmFsU2Nv
cGU6IiwgdGhpcyk7CiAgICAgcmV0dXJuIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUo
c3RkOjpleGNoYW5nZShtX25hbWUsIHsgfSksIHBhcmFtZXRlcnMsIFdURk1vdmUob3JpZ2luKSwg
KnRoaXMsIFdURk1vdmUodG9wT3JpZ2luKSwgaWRiQ29ubmVjdGlvblByb3h5KCksIHNvY2tldFBy
b3ZpZGVyKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWQuaAppbmRleCAyZjA1NmY5ZDU5YmIuLmY1
NzM2YzJlNjBlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29u
dGV4dC9TaGFyZWRXb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3No
YXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZC5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSAiU2hhcmVkV29ya2VySWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIldvcmtlclRocmVhZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNCwxMiArMzUs
MTYgQEAgY2xhc3MgV29ya2VyT2JqZWN0UHJveHk7CiBjbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWQg
OiBwdWJsaWMgV29ya2VyVGhyZWFkIHsKIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBBcmdzPiBzdGF0aWMgUmVmPFNoYXJlZFdvcmtlclRocmVhZD4gY3JlYXRlKEFyZ3MmJi4uLiBh
cmdzKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZFdvcmtlclRocmVhZChzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pKTsgfQorCisgICAgU2hhcmVkV29ya2VySWRlbnRpZmllciBpZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKIHByaXZhdGU6Ci0gICAg
U2hhcmVkV29ya2VyVGhyZWFkKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBjb25zdCBTY3JpcHRC
dWZmZXImIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiwgV29ya2VyRGVidWdnZXJQcm94
eSYsIFdvcmtlck9iamVjdFByb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBTZWN1
cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNv
Y2tldFByb3ZpZGVyKiwgSlNDOjpSdW50aW1lRmxhZ3MpOworICAgIFNoYXJlZFdvcmtlclRocmVh
ZChTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwgY29uc3Qg
U2NyaXB0QnVmZmVyJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYsIFdvcmtlckRlYnVn
Z2VyUHJveHkmLCBXb3JrZXJPYmplY3RQcm94eSYsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSwgY29u
c3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJv
eHkqLCBTb2NrZXRQcm92aWRlciosIEpTQzo6UnVudGltZUZsYWdzKTsKIAogICAgIFJlZjxXb3Jr
ZXJHbG9iYWxTY29wZT4gY3JlYXRlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgV29ya2VyUGFyYW1l
dGVycyYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9y
aWdpbikgZmluYWw7CiAgICAgQVNDSUlMaXRlcmFsIHRocmVhZE5hbWUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiAiV2ViQ29yZTogU2hhcmVkV29ya2VyIl9zOyB9CiAKKyAgICBTaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBTdHJpbmcgbV9uYW1lOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJU
aHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1No
YXJlZFdvcmtlclRocmVhZFByb3h5LmNwcAppbmRleCBlMzBhZDhiMDVkNmIuLjYzMDQ1YjM5MDkz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTgwICsyOCwxMjUgQEAK
IAogI2luY2x1ZGUgIkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiRXJyb3JFdmVu
dC5oIgorI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNp
bmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiTGli
V2ViUlRDUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgogI2luY2x1ZGUg
Ik1lc3NhZ2VFdmVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlJUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXIu
aCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIgogI2luY2x1ZGUgIlNo
YXJlZFdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkLmgi
CisjaW5jbHVkZSAiV29ya2VyRmV0Y2hSZXN1bHQuaCIKKyNpbmNsdWRlICJXb3JrZXJUaHJlYWQu
aCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6U2hhcmVkV29ya2Vy
VGhyZWFkUHJveHkoU2hhcmVkV29ya2VyJiBzaGFyZWRXb3JrZXIpCi0gICAgOiBtX3NoYXJlZFdv
cmtlcihzaGFyZWRXb3JrZXIpCi0gICAgLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoc2hhcmVk
V29ya2VyLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAsIG1faWRlbnRpZmllckZvcklu
c3BlY3RvcihzaGFyZWRXb3JrZXIuaWRlbnRpZmllckZvckluc3BlY3RvcigpKQorc3RhdGljIEhh
c2hTZXQ8U2hhcmVkV29ya2VyVGhyZWFkUHJveHkqPiYgYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJv
eGllcygpCiB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U2hhcmVkV29ya2Vy
VGhyZWFkUHJveHkqPj4gc2V0OworICAgIHJldHVybiBzZXQ7CiB9CiAKLXZvaWQgU2hhcmVkV29y
a2VyVGhyZWFkUHJveHk6OnN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRV
UkwsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNP
bmxpbmUsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc2NyaXB0QnVmZmVyLCBjb25zdCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNl
SGVhZGVycywgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ks
IGNvbnN0IENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kmIGNyb3NzT3JpZ2luRW1iZWRkZXJQb2xp
Y3ksIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xp
Y3ksIFdvcmtlclR5cGUgd29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVu
dGlhbHMsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncykKK3N0YXRpYyBXb3JrZXJQYXJh
bWV0ZXJzIGdlbmVyYXRlV29ya2VyUGFyYW1ldGVycyhjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29u
c3QgV29ya2VyRmV0Y2hSZXN1bHQmIHdvcmtlckZldGNoUmVzdWx0LCBXb3JrZXJPcHRpb25zJiYg
d29ya2VyT3B0aW9ucywgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIERvY3VtZW50JiBkb2N1bWVu
dCkKIHsKLSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBhdXRvIHBhcmFtZXRlcnMgPSBXb3JrZXJQYXJhbWV0ZXJzIHsKKyAgICByZXR1cm4gV29ya2Vy
UGFyYW1ldGVycyB7CiAgICAgICAgIHNjcmlwdFVSTCwKLSAgICAgICAgbmFtZSwKLSAgICAgICAg
bV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yLAorICAgICAgICB3b3JrZXJPcHRpb25zLm5hbWUsCisg
ICAgICAgICJzaGFyZWR3b3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5Ojpj
cmVhdGVJZGVudGlmaWVyKCksCiAgICAgICAgIHVzZXJBZ2VudCwKLSAgICAgICAgaXNPbmxpbmUs
Ci0gICAgICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywKLSAgICAgICAg
c2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LAotICAgICAgICBjcm9z
c09yaWdpbkVtYmVkZGVyUG9saWN5LAotICAgICAgICB0aW1lT3JpZ2luLAotICAgICAgICByZWZl
cnJlclBvbGljeSwKLSAgICAgICAgd29ya2VyVHlwZSwKLSAgICAgICAgY3JlZGVudGlhbHMsCi0g
ICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2V0dGluZ3NWYWx1ZXMoKQorICAgICAg
ICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+aXNPbkxpbmUoKSwKKyAg
ICAgICAgd29ya2VyRmV0Y2hSZXN1bHQuY29udGVudFNlY3VyaXR5UG9saWN5LAorICAgICAgICBm
YWxzZSwKKyAgICAgICAgd29ya2VyRmV0Y2hSZXN1bHQuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGlj
eSwKKyAgICAgICAgTW9ub3RvbmljVGltZTo6bm93KCksCisgICAgICAgIHsgfSwKKyAgICAgICAg
d29ya2VyT3B0aW9ucy50eXBlLAorICAgICAgICB3b3JrZXJPcHRpb25zLmNyZWRlbnRpYWxzLAor
ICAgICAgICBkb2N1bWVudC5zZXR0aW5nc1ZhbHVlcygpCiAgICAgfTsKLQotICAgIGlmICghbV93
b3JrZXJUaHJlYWQpIHsKLSAgICAgICAgbV93b3JrZXJUaHJlYWQgPSBTaGFyZWRXb3JrZXJUaHJl
YWQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBzY3JpcHRCdWZmZXIsICp0aGlzLCAqdGhpcywgKnRoaXMs
IFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PnRvcE9yaWdpbigpLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlkYkNvbm5lY3Rpb25Qcm94
eSgpLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNvY2tldFByb3ZpZGVyKCksIHJ1bnRpbWVG
bGFncyk7Ci0gICAgICAgIG1fd29ya2VyVGhyZWFkLT5zdGFydCgpOwotICAgIH0KIH0KIAotdm9p
ZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6dGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKQor
U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5KFVuaXF1ZVJl
ZjxQYWdlPiYmIHBhZ2UsIFNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRp
ZmllciwgY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIGNvbnN0IFVSTCYgc2NyaXB0
VVJMLCBXb3JrZXJGZXRjaFJlc3VsdCYmIHdvcmtlckZldGNoUmVzdWx0LCBXb3JrZXJPcHRpb25z
JiYgd29ya2VyT3B0aW9ucywgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIENhY2hlU3RvcmFnZVBy
b3ZpZGVyJiBjYWNoZVN0b3JhZ2VQcm92aWRlcikKKyAgICA6IG1fcGFnZShXVEZNb3ZlKHBhZ2Up
KQorICAgICwgbV9kb2N1bWVudCgqbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQorICAg
ICwgbV93b3JrZXJUaHJlYWQoU2hhcmVkV29ya2VyVGhyZWFkOjpjcmVhdGUoc2hhcmVkV29ya2Vy
SWRlbnRpZmllciwgZ2VuZXJhdGVXb3JrZXJQYXJhbWV0ZXJzKHNjcmlwdFVSTCwgd29ya2VyRmV0
Y2hSZXN1bHQsIFdURk1vdmUod29ya2VyT3B0aW9ucyksIHVzZXJBZ2VudCwgbV9kb2N1bWVudCks
IFdURk1vdmUod29ya2VyRmV0Y2hSZXN1bHQuc2NyaXB0KSwgKnRoaXMsICp0aGlzLCAqdGhpcywg
V29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIGNsaWVudE9yaWdpbi50b3BPcmlnaW4uc2Vj
dXJpdHlPcmlnaW4oKSwgbV9kb2N1bWVudC0+aWRiQ29ubmVjdGlvblByb3h5KCksIG1fZG9jdW1l
bnQtPnNvY2tldFByb3ZpZGVyKCksIEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVk
KCkpKQorICAgICwgbV9jYWNoZVN0b3JhZ2VQcm92aWRlcihjYWNoZVN0b3JhZ2VQcm92aWRlcikK
IHsKLSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBt
X2Fza2VkVG9UZXJtaW5hdGUgPSB0cnVlOwotICAgIGlmIChtX3dvcmtlclRocmVhZCkKLSAgICAg
ICAgbV93b3JrZXJUaHJlYWQtPnN0b3AobnVsbHB0cik7Ci19CisgICAgQVNTRVJUKCFhbGxTaGFy
ZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkuY29udGFpbnModGhpcykpOworICAgIGFsbFNoYXJlZFdv
cmtlclRocmVhZFByb3hpZXMoKS5hZGQodGhpcyk7CiAKLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFk
UHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0cyYmIG1lc3NhZ2UpCi17Ci0gICAgLy8gRklYTUU6IFNoYXJlZFdvcmtlciBkb2Vzbid0IGhh
dmUgcG9zdE1lc3NhZ2UsIHNvIHRoaXMgbWlnaHQgbm90IGJlIG5lY2Vzc2FyeS4KLSAgICBwb3N0
VGFza1RvV29ya2VyR2xvYmFsU2NvcGUoW21lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpXShhdXRv
JiBzY3JpcHRDb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byYgY29udGV4dCA9IGRvd25j
YXN0PFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRDb250ZXh0KTsKLSAgICAgICAgYXV0
byBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKHNjcmlwdENvbnRleHQsIFdURk1v
dmUobWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRzKSk7Ci0gICAgICAgIGNvbnRleHQuZGlzcGF0Y2hF
dmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgbWVzc2FnZS5tZXNzYWdl
LnJlbGVhc2VOb25OdWxsKCkpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eTo6cG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1bmN0aW9uPHZvaWQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpPiYmIHRhc2spCi17Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0
ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRh
c2soV1RGTW92ZSh0YXNrKSk7CisgICAgc3RhdGljIGJvb2wgYWRkZWRMaXN0ZW5lcjsKKyAgICBp
ZiAoIWFkZGVkTGlzdGVuZXIpIHsKKyAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRl
clN0cmF0ZWd5KCktPmFkZE9ubGluZVN0YXRlQ2hhbmdlTGlzdGVuZXIoJm5ldHdvcmtTdGF0ZUNo
YW5nZWQpOworICAgICAgICBhZGRlZExpc3RlbmVyID0gdHJ1ZTsKKyAgICB9CiB9CiAKLWJvb2wg
U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CitTaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eTo6flNoYXJlZFdvcmtlclRocmVhZFByb3h5KCkKIHsKLSAgICBy
ZXR1cm4gbV9oYXNQZW5kaW5nQWN0aXZpdHkgJiYgIW1fYXNrZWRUb1Rlcm1pbmF0ZTsKKyAgICBB
U1NFUlQoYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGllcygpLmNvbnRhaW5zKHRoaXMpKTsKKyAg
ICBhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkucmVtb3ZlKHRoaXMpOwogfQogCi12b2lk
IFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojp3b3JrZXJPYmplY3REZXN0cm95ZWQoKQorU2hhcmVk
V29ya2VySWRlbnRpZmllciBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6aWRlbnRpZmllcigpIGNv
bnN0CiB7Ci0gICAgbV9zaGFyZWRXb3JrZXIgPSBudWxscHRyOwotICAgIG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXNdIChhdXRvJikgewotICAgICAgICBtX21heUJlRGVz
dHJveWVkID0gdHJ1ZTsKLSAgICAgICAgaWYgKG1fd29ya2VyVGhyZWFkKQotICAgICAgICAgICAg
dGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
d29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpOwotICAgIH0pOworICAgIHJldHVy
biBtX3dvcmtlclRocmVhZC0+aWRlbnRpZmllcigpOwogfQogCiB2b2lkIFNoYXJlZFdvcmtlclRo
cmVhZFByb3h5Ojpub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9vbCBpc09ubGluZSkKIHsKLSAg
ICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1f
d29ya2VyVGhyZWFkKQorICAgIGlmIChtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soW2lz
T25saW5lXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgIHBvc3RUYXNr
Rm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW2lzT25saW5lXSAoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICBhdXRvJiBnbG9iYWxTY29wZSA9IGRv
d25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KTsKICAgICAgICAgZ2xvYmFsU2NvcGUu
c2V0SXNPbmxpbmUoaXNPbmxpbmUpOwotICAgICAgICBnbG9iYWxTY29wZS5kaXNwYXRjaEV2ZW50
KEV2ZW50OjpjcmVhdGUoaXNPbmxpbmUgPyBldmVudE5hbWVzKCkub25saW5lRXZlbnQgOiBldmVu
dE5hbWVzKCkub2ZmbGluZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2Fu
Y2VsYWJsZTo6Tm8pKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eTo6c3VzcGVuZEZvckJhY2tGb3J3YXJkQ2FjaGUoKQotewotCi19Ci0KLXZvaWQgU2hhcmVkV29y
a2VyVGhyZWFkUHJveHk6OnJlc3VtZUZvckJhY2tGb3J3YXJkQ2FjaGUoKQotewotCisgICAgICAg
IGdsb2JhbFNjb3BlLmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5pcHVs
YXRpb24sIFtnbG9iYWxTY29wZSA9IFJlZiB7IGdsb2JhbFNjb3BlIH0sIGlzT25saW5lXSB7Cisg
ICAgICAgICAgICBnbG9iYWxTY29wZS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGlzT25s
aW5lID8gZXZlbnROYW1lcygpLm9ubGluZUV2ZW50IDogZXZlbnROYW1lcygpLm9mZmxpbmVFdmVu
dCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CisgICAg
ICAgIH0pOworICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwogfQogCiB2b2lk
IFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPnBvc3RUYXNrKFt0aGlzLCBlcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2UuaXNvbGF0ZWRD
b3B5KCksIHNvdXJjZVVSTCA9IHNvdXJjZVVSTC5pc29sYXRlZENvcHkoKSwgbGluZU51bWJlciwg
Y29sdW1uTnVtYmVyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKLSAgICAgICAgaWYgKCFt
X3NoYXJlZFdvcmtlcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBXZSBkb24n
dCBib3RoZXIgY2hlY2tpbmcgdGhlIGFza2VkVG9UZXJtaW5hdGUoKSBmbGFnIGhlcmUsIGJlY2F1
c2UgZXhjZXB0aW9ucyBzaG91bGQgKmFsd2F5cyogYmUgcmVwb3J0ZWQgZXZlbiBpZiB0aGUgdGhy
ZWFkIGlzIHRlcm1pbmF0ZWQuCi0gICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBkaWZm
ZXJlbnQgdGhhbiB0aGUgYmVoYXZpb3IgaW4gTWVzc2FnZVdvcmtlclRhc2ssIGJlY2F1c2UgdGVy
bWluYXRlZCB3b3JrZXJzIG5vIGxvbmdlciBkZWxpdmVyIG1lc3NhZ2VzIChzZWN0aW9uIDQuNiBv
ZiB0aGUgV2ViV29ya2VyIHNwZWMpLCBidXQgdGhleSBkbyByZXBvcnQgZXhjZXB0aW9ucy4KLSAg
ICAgICAgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKm1fc2hhcmVk
V29ya2VyLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIEVycm9yRXZlbnQ6OmNyZWF0ZShl
cnJvck1lc3NhZ2UsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB7IH0pKTsK
LSAgICB9KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6d29ya2VyR2xvYmFs
U2NvcGVEZXN0cm95ZWQoKQotewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRh
c2soW3RoaXNdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewotICAgICAgICB3b3JrZXJHbG9i
YWxTY29wZURlc3Ryb3llZEludGVybmFsKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29y
a2VyVGhyZWFkUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVdpdGhNZXNz
YWdlUG9ydHMmJikKLXsKLQotfQotCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpjb25m
aXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCkKLXsKLX0KLQotdm9pZCBTaGFyZWRXb3Jr
ZXJUaHJlYWRQcm94eTo6cmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2
aXR5KQotewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXMsIGhh
c1BlbmRpbmdBY3Rpdml0eV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0gICAgICAgIG1f
aGFzUGVuZGluZ0FjdGl2aXR5ID0gaGFzUGVuZGluZ0FjdGl2aXR5OworICAgIGNhbGxPbk1haW5U
aHJlYWQoW3NoYXJlZFdvcmtlcklkZW50aWZpZXIgPSBtX3dvcmtlclRocmVhZC0+aWRlbnRpZmll
cigpLCBlcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCksIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMID0gc291cmNlVVJMLmlzb2xhdGVkQ29weSgpXSB7
CisgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPnBv
c3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBlcnJvck1l
c3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMKTsKICAgICB9KTsKIH0K
IAogUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IFNoYXJlZFdvcmtlclRocmVhZFByb3h5
OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIHJldHVybiBkb2N1bWVudC5wYWdlKCktPmNhY2hlU3Rv
cmFnZVByb3ZpZGVyKCkuY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpOworICAgIGlmICgh
bV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uKQorICAgICAgICBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rp
b24gPSBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyLmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24o
KTsKKyAgICByZXR1cm4gbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uOwogfQogCiBSZWZQdHI8UlRD
RGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbj4gU2hhcmVkV29ya2VyVGhyZWFkUHJv
eHk6OmNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24oKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxE
b2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgaWYgKCFkb2N1bWVudC5w
YWdlKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBkb2N1bWVudC5wYWdl
KCktPmxpYldlYlJUQ1Byb3ZpZGVyKCkuY3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVy
Q29ubmVjdGlvbigpOworICAgIHJldHVybiBtX3BhZ2UtPmxpYldlYlJUQ1Byb3ZpZGVyKCkuY3Jl
YXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpOwogfQogCiB2b2lkIFNo
YXJlZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2smJiB0YXNrKQogewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9z
dFRhc2soV1RGTW92ZSh0YXNrKSk7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGFzayA9IFdURk1v
dmUodGFzayksIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSBtdXRhYmxlIHsKKyAg
ICAgICAgdGFzay5wZXJmb3JtVGFzayhwcm90ZWN0ZWRUaGlzLT5tX2RvY3VtZW50LmdldCgpKTsK
KyAgICB9KTsKIH0KIAogYm9vbCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrJiYgdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQogewotICAgIGlmIChtX2Fza2VkVG9UZXJt
aW5hdGUpCisgICAgaWYgKG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1v
ZGUoV1RGTW92ZSh0YXNrKSwgbW9kZSk7CkBAIC0yMTgsMTYgKzE2MywzNCBAQCB2b2lkIFNoYXJl
ZFdvcmtlclRocmVhZFByb3h5OjpzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVj
dG9yKGJvb2wpCiAKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6d29ya2VyR2xv
YmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpCit2b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5
OjpuZXR3b3JrU3RhdGVDaGFuZ2VkKGJvb2wgaXNPbkxpbmUpCit7CisgICAgZm9yIChhdXRvKiBw
cm94eSA6IGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKSkKKyAgICAgICAgcHJveHktPm5v
dGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShpc09uTGluZSk7Cit9CisKKy8vIEZJWE1FOiBUcnkgYW5k
IHNoYXJlIGNvZGUgd2l0aCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwLgordm9pZCBTaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eTo6c2V0dXBQYWdlRm9yU2hhcmVkV29ya2VyKFBhZ2UmIHBhZ2Us
IGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwg
Y29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmIHdvcmtlckZldGNoUmVzdWx0KQogewotICAgIC8vIFRo
aXMgaXMgYWx3YXlzIHRoZSBsYXN0IHRhc2sgdG8gYmUgcGVyZm9ybWVkLCBzbyB0aGUgcHJveHkg
aXMgbm90IG5lZWRlZCBmb3IgY29tbXVuaWNhdGlvbgotICAgIC8vIGluIGVpdGhlciBzaWRlIGFu
eSBtb3JlLiBIb3dldmVyLCB0aGUgV29ya2VyIG9iamVjdCBtYXkgc3RpbGwgZXhpc3QsIGFuZCBp
dCBhc3N1bWVzIHRoYXQgdGhlIHByb3h5IGV4aXN0cywgdG9vLgotICAgIG1fYXNrZWRUb1Rlcm1p
bmF0ZSA9IHRydWU7Ci0gICAgbV93b3JrZXJUaHJlYWQgPSBudWxscHRyOwotCi0gICAgLy8gVGhp
cyBiYWxhbmNlcyB0aGUgb3JpZ2luYWwgcmVmIGluIGNvbnN0cnVjdGlvbi4KLSAgICBpZiAobV9t
YXlCZURlc3Ryb3llZCkKLSAgICAgICAgZGVyZWYoKTsKKyAgICBhdXRvJiBtYWluRnJhbWUgPSBw
YWdlLm1haW5GcmFtZSgpOworICAgIG1haW5GcmFtZS5sb2FkZXIoKS5pbml0Rm9yU3ludGhlc2l6
ZWREb2N1bWVudCh7IH0pOworICAgIGF1dG8gZG9jdW1lbnQgPSBEb2N1bWVudDo6Y3JlYXRlTm9u
UmVuZGVyZWRQbGFjZWhvbGRlcihtYWluRnJhbWUsIHNjcmlwdFVSTCk7CisgICAgZG9jdW1lbnQt
PmNyZWF0ZURPTVdpbmRvdygpOworCisgICAgZG9jdW1lbnQtPnN0b3JhZ2VCbG9ja2luZ1N0YXRl
RGlkQ2hhbmdlKCk7CisKKyAgICBhdXRvIG9yaWdpbiA9IGNsaWVudE9yaWdpbi50b3BPcmlnaW4u
c2VjdXJpdHlPcmlnaW4oKTsKKyAgICBvcmlnaW4tPnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShw
YWdlLnNldHRpbmdzKCkuc3RvcmFnZUJsb2NraW5nUG9saWN5KCkpOworCisgICAgYXV0byBvcmln
aW5Bc1VSTCA9IG9yaWdpbi0+dG9VUkwoKTsKKyAgICBkb2N1bWVudC0+c2V0U2l0ZUZvckNvb2tp
ZXMob3JpZ2luQXNVUkwpOworICAgIGRvY3VtZW50LT5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhv
cmlnaW5Bc1VSTCk7CisgICAgZG9jdW1lbnQtPnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKG9y
aWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSk7CisKKyAgICBpZiAoYXV0byBwb2xpY3kg
PSBwYXJzZVJlZmVycmVyUG9saWN5KHdvcmtlckZldGNoUmVzdWx0LnJlZmVycmVyUG9saWN5LCBS
ZWZlcnJlclBvbGljeVNvdXJjZTo6SFRUUEhlYWRlcikpCisgICAgICAgIGRvY3VtZW50LT5zZXRS
ZWZlcnJlclBvbGljeSgqcG9saWN5KTsKKworICAgIG1haW5GcmFtZS5zZXREb2N1bWVudChXVEZN
b3ZlKGRvY3VtZW50KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFk
UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29y
a2VyVGhyZWFkUHJveHkuaAppbmRleCBjZTZjNTllMWQ5YzEuLjNkNjljYTA2NGVhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJU
aHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQv
U2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw4ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiU2hhcmVkV29ya2VySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldvcmtlckRl
YnVnZ2VyUHJveHkuaCIKLSNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZVByb3h5LmgiCiAjaW5j
bHVkZSAiV29ya2VyTG9hZGVyUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJPYmplY3RQcm94eS5o
IgogI2luY2x1ZGUgIldvcmtlck9wdGlvbnMuaCIKQEAgLTM0LDQ5ICszNCw1NiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENhY2hlU3RvcmFnZVByb3ZpZGVyOworY2xhc3MgUGFn
ZTsKIGNsYXNzIFNoYXJlZFdvcmtlcjsKIGNsYXNzIFNoYXJlZFdvcmtlclRocmVhZDsKIAotY2xh
c3MgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8U2hhcmVkV29ya2VyVGhyZWFkUHJveHk+LCBwdWJsaWMgV29ya2VyR2xvYmFsU2NvcGVQ
cm94eSwgcHVibGljIFdvcmtlck9iamVjdFByb3h5LCBwdWJsaWMgV29ya2VyTG9hZGVyUHJveHks
IHB1YmxpYyBXb3JrZXJEZWJ1Z2dlclByb3h5IHsKK3N0cnVjdCBDbGllbnRPcmlnaW47CitzdHJ1
Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7CisKK2NsYXNzIFNoYXJlZFdvcmtlclRocmVhZFByb3h5IGZp
bmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZFdvcmtlclRocmVhZFByb3h5
PiwgcHVibGljIFdvcmtlck9iamVjdFByb3h5LCBwdWJsaWMgV29ya2VyTG9hZGVyUHJveHksIHB1
YmxpYyBXb3JrZXJEZWJ1Z2dlclByb3h5IHsKIHB1YmxpYzoKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBBcmdzPiBzdGF0aWMgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkmIGNyZWF0ZShBcmdzJiYu
Li4gYXJncykgeyByZXR1cm4gKm5ldyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3Rh
dGljIFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZFdvcmtlclRocmVhZFByb3h5KHN0ZDo6Zm9yd2Fy
ZDxBcmdzPihhcmdzKS4uLikpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgflNoYXJlZFdvcmtlclRo
cmVhZFByb3h5KCk7CiAKLSAgICBTaGFyZWRXb3JrZXJUaHJlYWQqIHRocmVhZCgpIHsgcmV0dXJu
IG1fd29ya2VyVGhyZWFkLmdldCgpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQg
c2V0dXBQYWdlRm9yU2hhcmVkV29ya2VyKFBhZ2UmLCBjb25zdCBVUkwmLCBjb25zdCBDbGllbnRP
cmlnaW4mLCBjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYpOwogCi0gICAgdm9pZCBzdGFydFdvcmtl
ckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50LCBib29sIGlzT25saW5lLCBjb25zdCBTY3JpcHRCdWZmZXIm
IHNvdXJjZUNvZGUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYs
IGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBD
cm9zc09yaWdpbkVtYmVkZGVyUG9saWN5JiwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBSZWZl
cnJlclBvbGljeSwgV29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMsIEpTQzo6UnVu
dGltZUZsYWdzKSBmaW5hbDsKLSAgICB2b2lkIHdvcmtlck9iamVjdERlc3Ryb3llZCgpIGZpbmFs
OwotICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCB0
ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpIGZpbmFsOworICAgIFNoYXJlZFdvcmtlcklkZW50
aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0OworICAgIFNoYXJlZFdvcmtlclRocmVhZCYgdGhyZWFk
KCkgeyByZXR1cm4gbV93b3JrZXJUaHJlYWQuZ2V0KCk7IH0KIAotcHJpdmF0ZToKLSAgICBleHBs
aWNpdCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShTaGFyZWRXb3JrZXImKTsKKyAgICBib29sIGlz
VGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzVGVybWluYXRpbmdP
clRlcm1pbmF0ZWQ7IH0KKyAgICB2b2lkIHNldEFzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKSB7
IG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCA9IHRydWU7IH0KIAotICAgIHZvaWQgd29ya2Vy
R2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpOworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VY
UE9SVCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShVbmlxdWVSZWY8UGFnZT4mJiwgU2hhcmVkV29y
a2VySWRlbnRpZmllciwgY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgVVJMJiBzY3JpcHRVUkws
IFdvcmtlckZldGNoUmVzdWx0JiYsIFdvcmtlck9wdGlvbnMmJiwgY29uc3QgU3RyaW5nJiB1c2Vy
QWdlbnQsIENhY2hlU3RvcmFnZVByb3ZpZGVyJik7CiAKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9X
b3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKSBmaW5hbDsKLSAgICB2
b2lkIHBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKT4mJikgZmluYWw7Ci0gICAgdm9pZCBub3RpZnlOZXR3b3JrU3RhdGVDaGFu
Z2UoYm9vbCBpc09ubGluZSkgZmluYWw7Ci0gICAgdm9pZCBzdXNwZW5kRm9yQmFja0ZvcndhcmRD
YWNoZSgpIGZpbmFsOwotICAgIHZvaWQgcmVzdW1lRm9yQmFja0ZvcndhcmRDYWNoZSgpIGZpbmFs
OworICAgIC8vIFdvcmtlck9iamVjdFByb3h5LgogICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29y
a2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpIGZpbmFsOwotICAgIHZvaWQg
d29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWQoKSBmaW5hbDsKLSAgICB2b2lkIHBvc3RNZXNzYWdl
VG9Xb3JrZXJPYmplY3QoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJikgZmluYWw7Ci0gICAgdm9p
ZCBjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkp
IGZpbmFsOwotICAgIHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wgaGFzUGVuZGluZ0Fj
dGl2aXR5KSBmaW5hbDsKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2Fn
ZVdpdGhNZXNzYWdlUG9ydHMmJikgZmluYWwgeyB9CisgICAgdm9pZCB3b3JrZXJHbG9iYWxTY29w
ZURlc3Ryb3llZCgpIGZpbmFsIHsgfQorICAgIHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29ya2Vy
T2JqZWN0KGJvb2wpIGZpbmFsIHsgfQorICAgIHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJv
b2wpIGZpbmFsIHsgfQorCisgICAgLy8gV29ya2VyTG9hZGVyUHJveHkuCiAgICAgUmVmUHRyPENh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24+IGNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKSBmaW5h
bDsKICAgICBSZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbj4gY3Jl
YXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpIGZpbmFsOwogICAgIHZv
aWQgcG9zdFRhc2tUb0xvYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYpIGZpbmFs
OwogICAgIGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYsIGNvbnN0IFN0cmluZyYgbW9kZSkgZmluYWw7
CisKKyAgICAvLyBXb3JrZXJEZWJ1Z2dlclByb3h5LgogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb0Rl
YnVnZ2VyKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgc2V0UmVzb3VyY2VDYWNoaW5n
RGlzYWJsZWRCeVdlYkluc3BlY3Rvcihib29sKSBmaW5hbDsKIAotICAgIFdlYWtQdHI8U2hhcmVk
V29ya2VyPiBtX3NoYXJlZFdvcmtlcjsKLSAgICBSZWZQdHI8U2hhcmVkV29ya2VyVGhyZWFkPiBt
X3dvcmtlclRocmVhZDsKLSAgICBjb25zdCBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4g
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwotICAgIGNvbnN0IFN0cmluZyBtX2lkZW50aWZpZXJG
b3JJbnNwZWN0b3I7Ci0gICAgYm9vbCBtX2Fza2VkVG9UZXJtaW5hdGUgeyBmYWxzZSB9OwotICAg
IGJvb2wgbV9oYXNQZW5kaW5nQWN0aXZpdHkgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9tYXlCZURl
c3Ryb3llZCB7IGZhbHNlIH07CisgICAgc3RhdGljIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZChi
b29sIGlzT25MaW5lKTsKKyAgICB2b2lkIG5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlz
T25saW5lKTsKKworICAgIFVuaXF1ZVJlZjxQYWdlPiBtX3BhZ2U7CisgICAgUmVmPERvY3VtZW50
PiBtX2RvY3VtZW50OworICAgIFJlZjxTaGFyZWRXb3JrZXJUaHJlYWQ+IG1fd29ya2VyVGhyZWFk
OworICAgIENhY2hlU3RvcmFnZVByb3ZpZGVyJiBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyOworICAg
IFJlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247
CisgICAgYm9vbCBtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQgeyBmYWxzZSB9OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggNzU2ZGE4OGI0NWY3
Li4yOWY0Yzc4MTgxODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMjgsNiArMjgsNyBAQCBzZXQo
V2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zIgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50IgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIiCisgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvU2hhcmVk
V29ya2VyIgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UiCiAg
ICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvY2FjaGUiCiAgICAgIiR7V0VCS0lUX0RJ
Un0vTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZSIKQEAgLTIwMiw2ICsyMDMsOSBAQCBzZXQoV2ViS2l0
X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24KICAgICBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbgogCisgICAgTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29y
a2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24KKyAgICBOZXR3b3JrUHJvY2Vzcy9T
aGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbgorCiAg
ICAgTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldAogCiAgICAgTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbgpAQCAtMzA1LDYg
KzMwOSw4IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKIAogICAgIFdlYlByb2Nlc3Mv
U3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIKIAorICAg
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24KKyAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bgogICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24KICAgICBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IDRjNjYyMjBjZjEy
Mi4uNzIyOWMxYjk4NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1
dC54Y2ZpbGVsaXN0CkBAIC05MSw2ICs5MSw4IEBAICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5tZXNzYWdlcy5pCiAk
KFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJG
ZXRjaFRhc2subWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29y
a2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVD
VF9ESVIpL05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldl
YktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbgpAQCAtMjE3LDYgKzIxOSw4IEBAICQoUFJPSkVDVF9E
SVIpL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291
cmNlTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisk
KFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIu
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0CmluZGV4IGUzYjU1ODQwYWUxZS4uYTg2MzI4MTQ3YjU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTYwNyw2ICs2MDcsMTggQEAg
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTV1NlcnZlckNv
bm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVy
LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3Nh
Z2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
L1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5j
cHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZVJl
Y2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9X
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5j
cHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3Nh
Z2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIu
Y3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTb2NrZXRDaGFubmVsTWVzc2FnZVJlY2VpdmVyLmNwcAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTb2NrZXRDaGFu
bmVsTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dC9XZWJTb2NrZXRDaGFubmVsTWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMu
bWFrZQppbmRleCA3YWQ0OWUzNzM1ZjQuLjM1MWZmYWUwYTU4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMubWFrZQpAQCAtMTMzLDYgKzEzMyw4IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCU5l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzayBcCiAJ
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrIFwKIAlO
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
biBcCisJTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb24gXAorCU5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIFwKIAlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0
U3RyZWFtIFwKIAlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2VzcyBcCiAJTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyIFwKQEAgLTIyNSw2ICsyMjcsOCBAQCBNRVNTQUdFX1JF
Q0VJVkVSUyA9IFwKIAlXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvU3BlZWNoL1NwZWVjaFJlY29nbml0aW9u
UmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIgXAorCVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gXAorCVdlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Ns
aWVudENvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvV2ViUHJvY2VzcyBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCmluZGV4IDY4N2M4ZGI2OTEyYy4uYzdiMTdmZDcwNzg1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNjYsNiArNjYsMTEgQEAKICNpbmNsdWRlICJXZWJTV1Nl
cnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgiCisjaW5jbHVkZSAi
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRTdG9yYWdlQWNj
ZXNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVFRQQ29va2llQWNjZXB0UG9saWN5Lmg+CkBAIC0x
MzIsNiArMTM3LDcgQEAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtQcm9jZXNzJiBuZXQKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAgICAgZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKCk7CiAjZW5kaWYKKyAg
ICBlc3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCk7CiB9CiAKIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQpA
QCAtMTY2LDYgKzE3Miw3IEBAIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp+TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7CiAjZW5kaWYKKyAgICB1bnJlZ2lzdGVyU2hhcmVk
V29ya2VyQ29ubmVjdGlvbigpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpoYXNVcGxvYWRTdGF0ZUNoYW5nZWQoYm9vbCBoYXNVcGxvYWQpCkBAIC0yNzUsNiArMjgy
LDE3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvCiAgICAgfQogI2VuZGlmCiAKKyAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBpZiAo
bV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uKQorICAgICAgICAgICAgbV9zaGFyZWRXb3JrZXJDb25u
ZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0g
TWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBpZiAobV9zaGFyZWRXb3JrZXJDb250ZXh0Q29u
bmVjdGlvbikKKyAgICAgICAgICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24tPmRp
ZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAgaWYgKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKQogICAgICAgICByZXR1cm4gcGF5bWVudENvb3Jk
aW5hdG9yKCkuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CkBAIC0zOTgs
OSArNDE2LDggQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oY29ubmVjdGlvbik7CiAjZW5kaWYKKyAgICBtX3NoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uID0gbnVsbHB0cjsKIAogICAgIC8vIFByb3RlY3Qgb3Vyc2VsZiBhcyB3ZSBtaWdo
dCBiZSBvdGhlcndpc2UgYmUgZGVsZXRlZCBkdXJpbmcgdGhpcyBmdW5jdGlvbi4KICAgICBSZWY8
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IHByb3RlY3RvcigqdGhpcyk7CkBAIC00NDEs
NiArNDU4LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ICAgICB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7CiAjZW5kaWYKKyAgICB1bnJlZ2lzdGVyU2hh
cmVkV29ya2VyQ29ubmVjdGlvbigpOwogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkp
CiAgICAgbV9wYXltZW50Q29vcmRpbmF0b3IgPSBudWxscHRyOwpAQCAtMTE4Niw2ICsxMjA0LDYx
IEBAIHNpemVfdCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZmluZE5ldHdvcmtBY3Rp
dml0eVRyYWNrZXIoV2ViQ29yZTo6UmVzb3VyCiAgICAgICAgIHJldHVybiBpdGVtLnJlc291cmNl
SUQgPT0gcmVzb3VyY2VJRDsKICAgICB9KTsKIH0KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24oV2ViUGFn
ZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJs
ZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hh
cmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb246Iik7CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdv
cmtTZXNzaW9uKCk7CisgICAgaWYgKGF1dG8qIHN3U2VydmVyID0gc2Vzc2lvbiA/IHNlc3Npb24t
PnNoYXJlZFdvcmtlclNlcnZlcigpIDogbnVsbHB0cikKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJD
b250ZXh0Q29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbj4oKnRoaXMsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCAqc3dTZXJ2
ZXIpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oKQor
eworICAgIGlmIChtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOworICAgIGlmICghc2Vzc2lvbikK
KyAgICAgICAgcmV0dXJuOworCisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTaGFyZWRXb3Jr
ZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOiIpOworCisgICAgYXV0
byYgc2VydmVyID0gc2Vzc2lvbi0+ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCk7CisgICAgYXV0
byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
PihtX25ldHdvcmtQcm9jZXNzLCBzZXJ2ZXIsIG1fY29ubmVjdGlvbi5nZXQoKSwgbV93ZWJQcm9j
ZXNzSWRlbnRpZmllcik7CisKKyAgICBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24gPSAqY29ubmVj
dGlvbjsKKyAgICBzZXJ2ZXIuYWRkQ29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKK30K
Kwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xvc2VTaGFyZWRXb3JrZXJD
b250ZXh0Q29ubmVjdGlvbigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTaGFyZWRX
b3JrZXIsICJjbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uOiIpOworICAgIG1fc2hh
cmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOworfQorCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbigp
Cit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJ1bnJlZ2lzdGVy
U2hhcmVkV29ya2VyQ29ubmVjdGlvbjoiKTsKKyAgICBpZiAobV9zaGFyZWRXb3JrZXJDb25uZWN0
aW9uKQorICAgICAgICBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24tPnNlcnZlcigpLnJlbW92ZUNv
bm5lY3Rpb24obV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uLT53ZWJQcm9jZXNzSWRlbnRpZmllcigp
KTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKQoreworICAgIENPTk5F
Q1RJT05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAic2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQ6Iik7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6U2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCB7IHdlYlBy
b2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CisKKyAgICBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uID0gbnVsbHB0cjsKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbiog
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKQor
eworICAgIGlmICghbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uKQorICAgICAgICBlc3RhYmxpc2hT
aGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCk7CisgICAgcmV0dXJuIG1fc2hhcmVkV29ya2Vy
Q29ubmVjdGlvbi5nZXQoKTsKK30KICAgICAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU1dDb25uZWN0aW9u
KCkKQEAgLTEyMjMsOSArMTI5Niw5IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmNsb3NlU1dDb250ZXh0Q29ubmVjdGlvbigpCiAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9u
ID0gbnVsbHB0cjsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCkKK3ZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnNlcnZpY2VXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Tm9Mb25nZXJOZWVkZWQoKQogewotICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2VydmljZVdv
cmtlciwgInNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZDogV2ViUHJvY2Vz
cyBubyBsb25nZXIgdXNlZnVsIGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycyIpOworICAgIENP
Tk5FQ1RJT05fUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgInNlcnZpY2VXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQ6IFdlYlByb2Nlc3Mgbm8gbG9uZ2VyIHVz
ZWZ1bCBmb3IgcnVubmluZyBzZXJ2aWNlIHdvcmtlcnMiKTsKICAgICBtX25ldHdvcmtQcm9jZXNz
LT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCB7IHdl
YlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CiAKICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24g
PSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDNhMWUxNDA0MzM4Zi4uZDBh
YTRlZjc0NTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC05Miw2ICs5Miw4IEBAIGNs
YXNzIE5ldHdvcmtTb2NrZXRTdHJlYW07CiBjbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOwog
Y2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwogY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjsKK2NsYXNz
IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CiAKIG5hbWVzcGFjZSBO
ZXR3b3JrQ2FjaGUgewogc3RydWN0IERhdGFLZXk7CkBAIC0xODEsMTAgKzE4MywxMyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25zdCBXZWJD
b3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNv
cmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSk+JiYpOwogCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bk5vTG9uZ2VyTmVlZGVkKCk7CisgICAgdm9pZCBzZXJ2aWNlV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCk7CiAgICAgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uKiBz
d0Nvbm5lY3Rpb24oKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFz
az4gY3JlYXRlRmV0Y2hUYXNrKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlmCisgICAgdm9pZCBzaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOworCisgICAgV2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbiogc2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOwogCiAgICAgTmV0
d29ya1NjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSgpIHsgcmV0dXJuIG1fc2NoZW1lUmVn
aXN0cnkuZ2V0KCk7IH0KIApAQCAtMjUzLDYgKzI1OCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
cmVhdGVTb2NrZXRDaGFubmVsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFN0cmluZyYgcHJvdG9jb2wsIFdlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXIsIFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwogICAgIHZvaWQg
dXBkYXRlUXVvdGFCYXNlZE9uU3BhY2VVc2FnZUZvclRlc3RpbmcoY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJik7CiAKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb24oKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CisK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxpc2hTV1NlcnZlckNv
bm5lY3Rpb24oKTsKICAgICB2b2lkIGVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViUGFn
ZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdv
cmtlclBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMjYw
LDYgKzI2OCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7
CiAjZW5kaWYKIAorICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rp
b24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGNsb3NlU2hhcmVkV29ya2Vy
Q29udGV4dENvbm5lY3Rpb24oKTsKKwogICAgIHZvaWQgY3JlYXRlUlRDUHJvdmlkZXIoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICB2b2lkIGNv
bm5lY3RUb1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVs
SWRlbnRpZmllciBzb3VyY2UsIFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBoYW5k
bGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8Ym9vbD4pPiYmKTsKQEAg
LTQwNCw2ICs0MTUsOCBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8V2ViU1dTZXJ2ZXJDb25uZWN0
aW9uPiBtX3N3Q29ubmVjdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uPiBtX3N3Q29udGV4dENvbm5lY3Rpb247CiAjZW5kaWYKKyAgICBXZWFr
UHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24+IG1fc2hhcmVkV29ya2VyQ29ubmVj
dGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbj4gbV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbjsKIAogI2lmIEVOQUJM
RShXRUJfUlRDKQogICAgIGJvb2wgbV9pc1JlZ2lzdGVyZWRUb1JUQ0RhdGFDaGFubmVsUHJveHkg
eyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5k
ZXggMjQyODM1MDUwYjI0Li5iOTdjYTM0NzliNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtODgsNiArODgsOSBAQCBtZXNzYWdlcyAtPiBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgQ2xvc2VTV0NvbnRl
eHRDb25uZWN0aW9uKCkKICNlbmRpZgogCisgICAgRXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4
dENvbm5lY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlE
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pIC0+ICgpIEFzeW5jCisgICAgQ2xv
c2VTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpCisKICAgICBDcmVhdGVSVENQcm92aWRl
cigpIC0+ICgpIEFzeW5jCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgQ29ubmVjdFRvUlRDRGF0
YUNoYW5uZWxSZW1vdGVTb3VyY2Uoc3RydWN0IFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRp
ZmllciBzb3VyY2UsIHN0cnVjdCBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgaGFu
ZGxlcikgLT4gKHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcmVzdWx0KSBBc3luYwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCBlMmIyNGQ4MzIy
YjYuLmQ3NjE2Mjg1MGNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJv
eHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldl
YlNXT3JpZ2luU3RvcmUuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIKICNp
bmNsdWRlICJXZWJTb2NrZXRUYXNrLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVKYXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgpAQCAtNjUzLDYgKzY1NCwxMyBA
QCBib29sIE5ldHdvcmtTZXNzaW9uOjpoYXNTZXJ2aWNlV29ya2VyRGF0YWJhc2VQYXRoKCkgY29u
c3QKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorV2ViU2hhcmVkV29ya2Vy
U2VydmVyJiBOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCkKK3sKKyAg
ICBpZiAoIW1fc2hhcmVkV29ya2VyU2VydmVyKQorICAgICAgICBtX3NoYXJlZFdvcmtlclNlcnZl
ciA9IG1ha2VVbmlxdWU8V2ViU2hhcmVkV29ya2VyU2VydmVyPigqdGhpcyk7CisgICAgcmV0dXJu
ICptX3NoYXJlZFdvcmtlclNlcnZlcjsKK30KKwogV2ViSURCU2VydmVyJiBOZXR3b3JrU2Vzc2lv
bjo6ZW5zdXJlV2ViSURCU2VydmVyKCkKIHsKICAgICBpZiAoIW1fd2ViSURCU2VydmVyKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggMTkz
MDdjZjQwYmUzLi4zZjlkNmM5NTUwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTc5LDYgKzc5LDcgQEAgY2xhc3MgU2VydmljZVdvcmtl
ckZldGNoVGFzazsKIGNsYXNzIFdlYklEQlNlcnZlcjsKIGNsYXNzIFdlYlBhZ2VOZXR3b3JrUGFy
YW1ldGVyczsKIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTsKK2NsYXNzIFdl
YlNoYXJlZFdvcmtlclNlcnZlcjsKIGNsYXNzIFdlYlNvY2tldFRhc2s7CiBjbGFzcyBXZWJTV09y
aWdpblN0b3JlOwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwpAQCAtMjEwLDYgKzIxMSw5
IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKGJvb2wgcHJvY2Vz
c1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcmJiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5LCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKICNlbmRpZgog
CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyKiBzaGFyZWRXb3JrZXJTZXJ2ZXIoKSB7IHJldHVy
biBtX3NoYXJlZFdvcmtlclNlcnZlci5nZXQoKTsgfQorICAgIFdlYlNoYXJlZFdvcmtlclNlcnZl
ciYgZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCk7CisKICAgICBXZWJJREJTZXJ2ZXIqIHdlYklE
QlNlcnZlcigpIHsgcmV0dXJuIG1fd2ViSURCU2VydmVyLmdldCgpOyB9CiAgICAgV2ViSURCU2Vy
dmVyJiBlbnN1cmVXZWJJREJTZXJ2ZXIoKTsKICAgICB2b2lkIGNsb3NlSURCU2VydmVyKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0zMTgsNiArMzIyLDcgQEAgcHJvdGVjdGVkOgog
ICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckluZm8+IG1fc2VydmljZVdvcmtlckluZm87
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNXU2VydmVyPiBtX3N3U2VydmVyOwogI2Vu
ZGlmCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlcj4gbV9zaGFyZWRX
b3JrZXJTZXJ2ZXI7CiAKICAgICBTdHJpbmcgbV9pZGJEYXRhYmFzZVBhdGg7CiAgICAgUmVmUHRy
PFdlYklEQlNlcnZlcj4gbV93ZWJJREJTZXJ2ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IDVhODcwM2VmZDZkNS4uMjdmNmU4
ZGE1ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcApAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjptYXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllCiAK
IHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uSXNOb0xvbmdl
ck5lZWRlZCgpCiB7Ci0gICAgbV9jb25uZWN0aW9uLnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25O
b0xvbmdlck5lZWRlZCgpOworICAgIG1fY29ubmVjdGlvbi5zZXJ2aWNlV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCk7CiB9CiAKIHZvaWQgV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpzZXRUaHJvdHRsZVN0YXRlKGJvb2wgaXNUaHJvdHRsZWFibGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
aGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLmNkYzRhMDUyNjg1OAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNl
cnZlci5jcHAKQEAgLTAsMCArMSwyOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgiCisKKyNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU2hhcmVkV29ya2VyU2VydmVyOjpX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXIoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24pCisgICAgOiBtX3Nl
c3Npb24oc2Vzc2lvbikKK3sKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVyOjp+V2ViU2hhcmVk
V29ya2VyU2VydmVyKCkgPSBkZWZhdWx0OworCitQQUw6OlNlc3Npb25JRCBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXI6OnNlc3Npb25JRCgpCit7CisgICAgcmV0dXJuIG1fc2Vzc2lvbi5zZXNzaW9uSUQo
KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXIo
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFVSTCYmIHVybCwgV2Vi
Q29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBvcnQsIFdlYkNvcmU6Oldvcmtlck9wdGlv
bnMmJiB3b3JrZXJPcHRpb25zKQoreworICAgIFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSBrZXkg
eyBvcmlnaW4sIHVybCwgd29ya2VyT3B0aW9ucy5uYW1lIH07CisgICAgYXV0byYgc2hhcmVkV29y
a2VyID0gbV9zaGFyZWRXb3JrZXJzLmVuc3VyZShrZXksIFsmXSB7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFNoYXJlZFdvcmtlcj4ob3JpZ2luLCB1cmwsIHdvcmtlck9wdGlvbnMpOworICAg
IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXI9JXtwcml2YXRlfXMsIHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0
LCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwg
c2hhcmVkV29ya2VyLT5pZGVudGlmaWVyLnRvVUludDY0KCkpOworCisgICAgaWYgKHNoYXJlZFdv
cmtlci0+d29ya2VyT3B0aW9ucy50eXBlICE9IHdvcmtlck9wdGlvbnMudHlwZSB8fCBzaGFyZWRX
b3JrZXItPndvcmtlck9wdGlvbnMuY3JlZGVudGlhbHMgIT0gd29ya2VyT3B0aW9ucy5jcmVkZW50
aWFscykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICJXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6IEEgd29ya2VyIGFscmVhZHkgZXhp
c3RzIHdpdGggdGhpcyBuYW1lIGJ1dCBoYXMgZGlmZmVyZW50IHR5cGUgLyBjcmVkZW50aWFscyIp
OworICAgICAgICBpZiAoYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0
KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSkpCisgICAg
ICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uLT5ub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0
aW9uKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHsgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
cjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5hZGQoc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllciwgcG9ydCk7CisKKyAgICBpZiAoc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJP
YmplY3RzLnNpemUoKSA+IDEpIHsKKyAgICAgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAi
V2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyOiBBIHNoYXJlZCB3b3Jr
ZXIgd2l0aCB0aGlzIFVSTCBhbHJlYWR5IGV4aXN0cyAobm93IHNoYXJlZCBieSAldSBzaGFyZWQg
d29ya2VyIG9iamVjdHMpIiwgc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzLnNpemUo
KSk7CisgICAgICAgIGlmIChzaGFyZWRXb3JrZXItPmRpZEZpbmlzaEZldGNoaW5nKCkpIHsKKyAg
ICAgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQo
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkKKyAgICAg
ICAgICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uLT5ub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21w
bGV0aW9uKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHsgfSk7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKHNoYXJlZFdvcmtlci0+aXNSdW5uaW5nKSB7CisgICAgICAgICAgICBhdXRvKiBj
b250ZXh0Q29ubmVjdGlvbiA9IG1fY29udGV4dENvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXIt
PnJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgICAgICAgICAgQVNTRVJUKGNvbnRleHRDb25uZWN0
aW9uKTsKKyAgICAgICAgICAgIGlmIChjb250ZXh0Q29ubmVjdGlvbikKKyAgICAgICAgICAgICAg
ICBwb3N0Q29ubmVjdEV2ZW50KCpjb250ZXh0Q29ubmVjdGlvbiwgc2hhcmVkV29ya2VyLT5pZGVu
dGlmaWVyLCBwb3J0LCBvcmlnaW4uY2xpZW50T3JpZ2luLnRvU3RyaW5nKCkpOworICAgICAgICB9
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUKCFzaGFyZWRXb3JrZXItPmlzUnVu
bmluZyk7CisKKyAgICBhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQo
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICBB
U1NFUlQoc2VydmVyQ29ubmVjdGlvbik7CisKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIs
ICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6IEZldGNoaW5nIHNo
YXJlZCB3b3JrZXIgc2NyaXB0IGluIGNsaWVudCIpOworICAgIHNlcnZlckNvbm5lY3Rpb24tPmZl
dGNoU2NyaXB0SW5DbGllbnQodXJsLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCB3b3Jr
ZXJPcHRpb25zLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgc2hhcmVkV29ya2VyID0g
V2Vha1B0ciB7ICpzaGFyZWRXb3JrZXIgfV0oV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJiBm
ZXRjaFJlc3VsdCkgeworICAgICAgICBpZiAod2Vha1RoaXMgJiYgc2hhcmVkV29ya2VyKQorICAg
ICAgICAgICAgd2Vha1RoaXMtPmRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29ya2VyU2NyaXB0KCpz
aGFyZWRXb3JrZXIsIFdURk1vdmUoZmV0Y2hSZXN1bHQpKTsKKyAgICB9KTsKK30KKwordm9pZCBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmxhdW5jaFNoYXJlZFdvcmtlcihXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbiwgU2hhcmVkV29ya2Vy
JiBzaGFyZWRXb3JrZXIpCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hh
cmVkV29ya2VyU2VydmVyOjpsYXVuY2hTaGFyZWRXb3JrZXI6IGNvbnRleHRDb25uZWN0aW9uPSVw
LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgJmNvbnRleHRDb25uZWN0aW9uLCBz
aGFyZWRXb3JrZXIuaWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBjb250ZXh0Q29ubmVjdGlv
bi5sYXVuY2hTaGFyZWRXb3JrZXIoc2hhcmVkV29ya2VyLm9yaWdpbiwgc2hhcmVkV29ya2VyLmlk
ZW50aWZpZXIsIHNoYXJlZFdvcmtlci51cmwsIHNoYXJlZFdvcmtlci53b3JrZXJPcHRpb25zLCBz
aGFyZWRXb3JrZXIuZmV0Y2hSZXN1bHQpOworICAgIHNoYXJlZFdvcmtlci5pc1J1bm5pbmcgPSB0
cnVlOworICAgIGF1dG8gc291cmNlT3JpZ2luID0gc2hhcmVkV29ya2VyLm9yaWdpbi5jbGllbnRP
cmlnaW4udG9TdHJpbmcoKTsKKyAgICBmb3IgKGF1dG8mIHBvcnQgOiBzaGFyZWRXb3JrZXIuc2hh
cmVkV29ya2VyT2JqZWN0cy52YWx1ZXMoKSkKKyAgICAgICAgcG9zdENvbm5lY3RFdmVudChjb250
ZXh0Q29ubmVjdGlvbiwgc2hhcmVkV29ya2VyLmlkZW50aWZpZXIsIHBvcnQsIHNvdXJjZU9yaWdp
bik7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpwb3N0Q29ubmVjdEV2ZW50KFdl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9u
LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmIHNvdXJjZVBvcnQsIGNvbnN0
IFN0cmluZyYgc291cmNlT3JpZ2luKQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwg
IldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cG9zdENvbm5lY3RFdmVudDogY29udGV4dENvbm5lY3Rp
b249JXAsIHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCAmY29udGV4dENvbm5lY3Rp
b24sIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgY29udGV4dENvbm5l
Y3Rpb24ucG9zdENvbm5lY3RFdmVudChzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBzb3VyY2VQb3J0
LCBzb3VyY2VPcmlnaW4pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6ZGlkRmlu
aXNoRmV0Y2hpbmdTaGFyZWRXb3JrZXJTY3JpcHQoU2hhcmVkV29ya2VyJiB3b3JrZXIsIFdlYkNv
cmU6OldvcmtlckZldGNoUmVzdWx0JiYgZmV0Y2hSZXN1bHQpCit7CisgICAgUkVMRUFTRV9MT0co
U2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpkaWRGaW5pc2hGZXRjaGluZ1No
YXJlZFdvcmtlclNjcmlwdCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCAiLCB3b3Jr
ZXI9JXAsIHN1Y2Nlc3M9JWQiLCB3b3JrZXIuaWRlbnRpZmllci50b1VJbnQ2NCgpLCAmd29ya2Vy
LCBmZXRjaFJlc3VsdC5lcnJvci5pc051bGwoKSk7CisKKyAgICBmb3IgKGF1dG8gc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciA6IHdvcmtlci5zaGFyZWRXb3JrZXJPYmplY3RzLmtleXMoKSkg
eworICAgICAgICBpZiAoYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0
KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSkpCisgICAg
ICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uLT5ub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0
aW9uKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGZldGNoUmVzdWx0LmVycm9yKTsKKyAg
ICB9CisKKyAgICBpZiAoIWZldGNoUmVzdWx0LmVycm9yLmlzTnVsbCgpKSB7CisgICAgICAgIG1f
c2hhcmVkV29ya2Vycy5yZW1vdmUod29ya2VyLmtleSgpKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIHdvcmtlci5mZXRjaFJlc3VsdCA9IFdURk1vdmUoZmV0Y2hSZXN1bHQpOworCisg
ICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IHdvcmtlci5yZWdpc3RyYWJsZURvbWFpbigpOwor
ICAgIGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3Ry
YWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKCFjb250ZXh0Q29ubmVjdGlv
bikgeworICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBsYXVuY2hTaGFyZWRXb3JrZXIoKmNvbnRl
eHRDb25uZWN0aW9uLCB3b3JrZXIpOworfQorCitib29sIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6
bmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QKK3sKKyAgICBmb3Ig
KGF1dG8mIHNoYXJlZFdvcmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAg
ICBpZiAocmVnaXN0cmFibGVEb21haW4ubWF0Y2hlcyhzaGFyZWRXb3JrZXItPnVybCkpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lk
IFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQoreworICAgIEFTU0VS
VCghbV9jb250ZXh0Q29ubmVjdGlvbnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKTsKKyAg
ICBpZiAobV9wZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5zLmNvbnRhaW5zKHJlZ2lzdHJh
YmxlRG9tYWluKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29y
a2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbiB3aWxs
IGNyZWF0ZSBhIGNvbm5lY3Rpb24iKTsKKworICAgIG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9u
RG9tYWlucy5hZGQocmVnaXN0cmFibGVEb21haW4pOworICAgIG1fc2Vzc2lvbi5uZXR3b3JrUHJv
Y2VzcygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcmVnaXN0cmFibGVEb21haW4sIG1fc2Vzc2lvbi5z
ZXNzaW9uSUQoKSB9LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVnaXN0
cmFibGVEb21haW5dIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXI6OmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uIHNob3VsZCBub3cgaGF2ZSBjcmVhdGVkIGEg
Y29ubmVjdGlvbiIpOworCisgICAgICAgIEFTU0VSVChtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlv
bkRvbWFpbnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKTsKKyAgICAgICAgbV9wZW5kaW5n
Q29udGV4dENvbm5lY3Rpb25Eb21haW5zLnJlbW92ZShyZWdpc3RyYWJsZURvbWFpbik7CisKKyAg
ICAgICAgaWYgKG1fY29udGV4dENvbm5lY3Rpb25zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWlu
KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAobmVlZHNDb250ZXh0Q29ubmVj
dGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgICAg
IGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICB9LCAwKTsK
K30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmFkZENvbnRleHRDb25uZWN0aW9uKFdl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9u
KQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZl
cjo6YWRkQ29udGV4dENvbm5lY3Rpb24oJXApIHdlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2
NCwgJmNvbnRleHRDb25uZWN0aW9uLCBjb250ZXh0Q29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRp
ZmllcigpLnRvVUludDY0KCkpOworCisgICAgQVNTRVJUKCFtX2NvbnRleHRDb25uZWN0aW9ucy5j
b250YWlucyhjb250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpKSk7CisKKyAgICBt
X2NvbnRleHRDb25uZWN0aW9ucy5hZGQoY29udGV4dENvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21h
aW4oKSwgJmNvbnRleHRDb25uZWN0aW9uKTsKKworICAgIGNvbnRleHRDb25uZWN0aW9uQ3JlYXRl
ZChjb250ZXh0Q29ubmVjdGlvbik7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpy
ZW1vdmVDb250ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbikKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3Jr
ZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKCVwKSB3
ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQsICZjb250ZXh0Q29ubmVjdGlvbiwgY29udGV4
dENvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKworICAgIGF1
dG8gcmVnaXN0cmFibGVEb21haW4gPSBjb250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFp
bigpOworCisgICAgQVNTRVJUKG1fY29udGV4dENvbm5lY3Rpb25zLmdldChyZWdpc3RyYWJsZURv
bWFpbikgPT0gJmNvbnRleHRDb25uZWN0aW9uKTsKKworICAgIG1fY29udGV4dENvbm5lY3Rpb25z
LnJlbW92ZShyZWdpc3RyYWJsZURvbWFpbik7CisKKyAgICBpZiAobmVlZHNDb250ZXh0Q29ubmVj
dGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgY3Jl
YXRlQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4pOworfQorCit2b2lkIFdlYlNo
YXJlZFdvcmtlclNlcnZlcjo6Y29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFdlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uKQoreworICAgIFJF
TEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y29udGV4dENv
bm5lY3Rpb25DcmVhdGVkKCVwKSB3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQsICZjb250
ZXh0Q29ubmVjdGlvbiwgY29udGV4dENvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50
b1VJbnQ2NCgpKTsKKyAgICBhdXRvJiByZWdpc3RyYWJsZURvbWFpbiA9IGNvbnRleHRDb25uZWN0
aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCk7CisgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3NoYXJl
ZFdvcmtlcnMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHdvcmtlci0+ZGlkRmluaXNoRmV0Y2hp
bmcoKSAmJiByZWdpc3RyYWJsZURvbWFpbi5tYXRjaGVzKHdvcmtlci0+dXJsKSkKKyAgICAgICAg
ICAgIGxhdW5jaFNoYXJlZFdvcmtlcihjb250ZXh0Q29ubmVjdGlvbiwgKndvcmtlcik7CisgICAg
fQorfQorCithdXRvIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hhcmVkV29ya2VyQnlJZGVudGlm
aWVyKFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmll
cikgLT4gU2hhcmVkV29ya2VyKgoreworICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9zaGFyZWRX
b3JrZXJzLnZhbHVlcygpKSB7CisgICAgICAgIGlmICh3b3JrZXItPmlkZW50aWZpZXIgPT0gc2hh
cmVkV29ya2VySWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiB3b3JrZXIuZ2V0KCk7Cisg
ICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCithdXRvIFdlYlNoYXJlZFdvcmtlclNlcnZl
cjo6c2hhcmVkV29ya2VyQnlPYmplY3RJZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikgLT4gU2hhcmVkV29y
a2VyKgoreworICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9zaGFyZWRXb3JrZXJzLnZhbHVlcygp
KSB7CisgICAgICAgIGlmICh3b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMuY29udGFpbnMoc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikpCisgICAgICAgICAgICByZXR1cm4gd29ya2VyLmdl
dCgpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXI6OnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KFdlYkNvcmU6OlNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK3sKKyAg
ICBhdXRvKiB3b3JrZXIgPSBzaGFyZWRXb3JrZXJCeU9iamVjdElkZW50aWZpZXIoc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2Vi
U2hhcmVkV29ya2VyU2VydmVyOjpzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheTogc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zLCB3b3JrZXI9JXAiLCBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgd29ya2VyKTsKKyAg
ICBpZiAoIXdvcmtlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgd29ya2VyLT5zaGFyZWRXb3Jr
ZXJPYmplY3RzLnJlbW92ZShzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBpZiAo
IXdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIHNodXREb3duU2hhcmVkV29ya2VyKHdvcmtlci0+a2V5KCkpOworfQorCit2b2lkIFdl
YlNoYXJlZFdvcmtlclNlcnZlcjo6c2h1dERvd25TaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6
U2hhcmVkV29ya2VyS2V5JiBrZXkpCit7CisgICAgYXV0byB3b3JrZXIgPSBtX3NoYXJlZFdvcmtl
cnMudGFrZShrZXkpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdv
cmtlclNlcnZlcjo6c2h1dERvd25TaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9
JSIgUFJJdTY0ICIsIHdvcmtlcj0lcCIsIHdvcmtlciA/IHdvcmtlci0+aWRlbnRpZmllci50b1VJ
bnQ2NCgpIDogMCwgd29ya2VyLmdldCgpKTsKKyAgICBpZiAoIXdvcmtlcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byogY29udGV4dENvbm5lY3Rpb24gPSBjb250ZXh0Q29ubmVjdGlvbkZv
clJlZ2lzdHJhYmxlRG9tYWluKHdvcmtlci0+cmVnaXN0cmFibGVEb21haW4oKSk7CisgICAgaWYg
KCFjb250ZXh0Q29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgY29udGV4dENvbm5l
Y3Rpb24tPnRlcm1pbmF0ZVNoYXJlZFdvcmtlcih3b3JrZXItPmlkZW50aWZpZXIpOworCisgICAg
aWYgKCFuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4od29ya2VyLT5y
ZWdpc3RyYWJsZURvbWFpbigpKSkKKyAgICAgICAgY29udGV4dENvbm5lY3Rpb24tPmNvbm5lY3Rp
b25Jc05vTG9uZ2VyTmVlZGVkKCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjph
ZGRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uPiYmIGNvbm5lY3Rpb24pCit7CisgICAgYXV0byBwcm9jZXNzSWRlbnRpZmllciA9IGNvbm5l
Y3Rpb24tPndlYlByb2Nlc3NJZGVudGlmaWVyKCk7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29y
a2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjphZGRDb25uZWN0aW9uKCVwKTogcHJvY2Vzc0lk
ZW50aWZpZXI9JSIgUFJJdTY0LCBjb25uZWN0aW9uLmdldCgpLCBwcm9jZXNzSWRlbnRpZmllci50
b1VJbnQ2NCgpKTsKKyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbnMuY29udGFpbnMocHJvY2Vzc0lk
ZW50aWZpZXIpKTsKKyAgICBtX2Nvbm5lY3Rpb25zLmFkZChwcm9jZXNzSWRlbnRpZmllciwgV1RG
TW92ZShjb25uZWN0aW9uKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1v
dmVDb25uZWN0aW9uKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVy
KQoreworICAgIGF1dG8gY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMudGFrZShwcm9jZXNzSWRl
bnRpZmllcik7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2Vy
U2VydmVyOjpyZW1vdmVDb25uZWN0aW9uKCVwKTogcHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0
LCBjb25uZWN0aW9uLmdldCgpLCBwcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBB
U1NFUlQoY29ubmVjdGlvbik7CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6U2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllcj4gc2hhcmVkV29ya2VyT2JqZWN0c0dvaW5nQXdheTsKKyAgICBmb3IgKGF1
dG8mIHdvcmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBmb3IgKGF1
dG8mIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgOiB3b3JrZXItPnNoYXJlZFdvcmtlck9i
amVjdHMua2V5cygpKSB7CisgICAgICAgICAgICBpZiAoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IHByb2Nlc3NJZGVudGlmaWVyKQorICAgICAgICAg
ICAgICAgIHNoYXJlZFdvcmtlck9iamVjdHNHb2luZ0F3YXkuYXBwZW5kKHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIpOworICAgICAgICB9CisgICAgfQorICAgIGZvciAoYXV0byBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyIDogc2hhcmVkV29ya2VyT2JqZWN0c0dvaW5nQXdheSkKKyAg
ICAgICAgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllcik7Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlcjo6U2hhcmVkV29ya2VyOjpTaGFy
ZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25zKQorICAgIDog
aWRlbnRpZmllcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQor
ICAgICwgb3JpZ2luKG9yaWdpbikKKyAgICAsIHVybCh1cmwpCisgICAgLCB3b3JrZXJPcHRpb25z
KHdvcmtlck9wdGlvbnMpCit7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpwb3N0
RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBz
aGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQorewor
ICAgIGF1dG8qIHdvcmtlciA9IHNoYXJlZFdvcmtlckJ5SWRlbnRpZmllcihzaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICJXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdDogc2hhcmVkV29ya2Vy
SWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgd29ya2VyPSVwIiwgc2hhcmVkV29ya2VySWRlbnRpZmll
ci50b1VJbnQ2NCgpLCB3b3JrZXIpOworICAgIGlmICghd29ya2VyKQorICAgICAgICByZXR1cm47
CisKKyAgICBmb3IgKGF1dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA6IHdvcmtlci0+
c2hhcmVkV29ya2VyT2JqZWN0cy5rZXlzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHNlcnZlckNv
bm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LnByb2Nlc3NJZGVudGlmaWVyKCkpKQorICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlvbi0+cG9z
dEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGVy
cm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwpOworICAgIH0K
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZl
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2ViNjIzY2M2ZTU2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRX
b3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmgKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9TY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvU2hhcmVkV29ya2VySWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29y
a2VyS2V5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0Lmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9Xb3JrZXJGZXRjaFJlc3VsdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2Vy
T3B0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK3N0cnVjdCBDbGllbnRPcmlnaW47Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBOZXR3b3JrU2Vzc2lvbjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb247
CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOworCitjbGFz
cyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViU2hhcmVk
V29ya2VyU2VydmVyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6Cisg
ICAgZXhwbGljaXQgV2ViU2hhcmVkV29ya2VyU2VydmVyKE5ldHdvcmtTZXNzaW9uJik7CisgICAg
fldlYlNoYXJlZFdvcmtlclNlcnZlcigpOworCisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KCk7CisKKyAgICB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFVSTCYmLCBXZWJDb3Jl
OjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJik7Cisg
ICAgdm9pZCBzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyKTsKKworICAgIHZvaWQgYWRkQ29udGV4dENvbm5lY3Rpb24oV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOworICAgIHZvaWQgcmVtb3Zl
Q29udGV4dENvbm5lY3Rpb24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
biYpOworCisgICAgdm9pZCBhZGRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uPiYmKTsKKyAgICB2b2lkIHJlbW92ZUNvbm5lY3Rpb24oV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOworCisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbiogY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSB7IHJldHVybiBtX2NvbnRl
eHRDb25uZWN0aW9ucy5nZXQoZG9tYWluKTsgfQorCisgICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9X
b3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBjcmVhdGVDb250ZXh0Q29u
bmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOworCisgICAgYm9vbCBu
ZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKKyAgICB2b2lkIGNvbnRleHRDb25uZWN0aW9uQ3Jl
YXRlZChXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CisKKyAgICBz
dHJ1Y3QgU2hhcmVkV29ya2VyIDogQ2FuTWFrZVdlYWtQdHI8U2hhcmVkV29ya2VyPiB7CisgICAg
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKworICAgICAgICBTaGFyZWRXb3Jr
ZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgY29uc3QgVVJMJiwgY29uc3QgV2ViQ29y
ZTo6V29ya2VyT3B0aW9ucyYpOworCisgICAgICAgIGJvb2wgZGlkRmluaXNoRmV0Y2hpbmcoKSBj
b25zdCB7IHJldHVybiAhIWZldGNoUmVzdWx0LnNjcmlwdDsgfQorICAgICAgICBXZWJDb3JlOjpT
aGFyZWRXb3JrZXJLZXkga2V5KCkgY29uc3QgeyByZXR1cm4geyBvcmlnaW4sIHVybCwgd29ya2Vy
T3B0aW9ucy5uYW1lIH07IH0KKyAgICAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVn
aXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biB7IHVybCB9OyB9CisKKyAgICAgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBp
ZGVudGlmaWVyOworICAgICAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luOworICAgICAg
ICBVUkwgdXJsOworICAgICAgICBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdvcmtlck9wdGlvbnM7
CisgICAgICAgIEhhc2hNYXA8V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwg
V2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydD4gc2hhcmVkV29ya2VyT2JqZWN0czsKKyAg
ICAgICAgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQgZmV0Y2hSZXN1bHQ7CisgICAgICAgIGJv
b2wgaXNSdW5uaW5nIHsgZmFsc2UgfTsKKyAgICB9OworCisgICAgU2hhcmVkV29ya2VyKiBzaGFy
ZWRXb3JrZXJCeUlkZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllcik7Cisg
ICAgU2hhcmVkV29ya2VyKiBzaGFyZWRXb3JrZXJCeU9iamVjdElkZW50aWZpZXIoV2ViQ29yZTo6
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRGaW5pc2hGZXRjaGlu
Z1NoYXJlZFdvcmtlclNjcmlwdChTaGFyZWRXb3JrZXImLCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJl
c3VsdCYmKTsKKyAgICB2b2lkIGxhdW5jaFNoYXJlZFdvcmtlcihXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uJiwgU2hhcmVkV29ya2VyJik7CisgICAgdm9pZCBwb3N0Q29u
bmVjdEV2ZW50KFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mLCBXZWJD
b3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1l
c3NhZ2VQb3J0JiwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOworICAgIHZvaWQgc2h1dERv
d25TaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5Jik7CisKKyAgICBO
ZXR3b3JrU2Vzc2lvbiYgbV9zZXNzaW9uOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
Pj4gbV9jb25uZWN0aW9uczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
LCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4gbV9jb250ZXh0Q29u
bmVjdGlvbnM7CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9wZW5k
aW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5zOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2hhcmVk
V29ya2VyS2V5LCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcmVkV29ya2VyPj4gbV9zaGFyZWRXb3JrZXJz
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uZmM5Yjg4NjhmM2E0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbi5jcHAKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIgorCisj
aW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtl
ckZldGNoUmVzdWx0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjZGVmaW5lIENPTk5FQ1RJ
T05fUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0g
W3dlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uOjoiIGZtdCwgdGhpcywgbV93ZWJQcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgp
LCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKGZt
dCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNz
SWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6
IiBmbXQsIHRoaXMsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSwgIyNfX1ZBX0FS
R1NfXykKKworV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6V2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFdlYlNoYXJl
ZFdvcmtlclNlcnZlciYgc2VydmVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKQorICAgIDogbV9jb250
ZW50Q29ubmVjdGlvbihjb25uZWN0aW9uKQorICAgICwgbV9uZXR3b3JrUHJvY2VzcyhuZXR3b3Jr
UHJvY2VzcykKKyAgICAsIG1fc2VydmVyKHNlcnZlcikKKyAgICAsIG1fd2ViUHJvY2Vzc0lkZW50
aWZpZXIod2ViUHJvY2Vzc0lkZW50aWZpZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xP
RygiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjoiKTsKK30KKworV2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oKQor
eworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coIn5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uOiIpOworfQorCitJUEM6OkNvbm5lY3Rpb24qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9jb250ZW50Q29ubmVjdGlvbi5wdHIoKTsKK30KKworUEFMOjpTZXNzaW9uSUQgV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2Vzc2lvbklEKCkKK3sKKyAgICByZXR1cm4gc2VydmVy
KCkuc2Vzc2lvbklEKCk7Cit9CisKK05ldHdvcmtTZXNzaW9uKiBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uOjpzZXNzaW9uKCkKK3sKKyAgICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy0+
bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNl
cnZlckNvbm5lY3Rpb246OnJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiYgb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIsIFVSTCYmIHVybCwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNz
YWdlUG9ydCYmIHBvcnQsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zKQor
eworICAgIEFTU0VSVChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlm
aWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7IC8vIEZJWE1FOiBTaG91bGQgYmUgYSBN
RVNTQUdFX0NIRUNLKCkuCisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygicmVxdWVzdFNoYXJl
ZFdvcmtlcjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGlm
IChhdXRvKiBzZXNzaW9uID0gdGhpcy0+c2Vzc2lvbigpKQorICAgICAgICBzZXNzaW9uLT5lbnN1
cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKS5yZXF1ZXN0U2hhcmVkV29ya2VyKFdURk1vdmUob3JpZ2lu
KSwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHBv
cnQpLCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMpKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uOjpmZXRjaFNjcmlwdEluQ2xpZW50KGNvbnN0IFVSTCYgdXJsLCBXZWJD
b3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiZmV0Y2hTY3JpcHRJ
bkNsaWVudDogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bjo6RmV0Y2hTY3JpcHRJbkNsaWVudCB7IHVybCwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciwgd29ya2VyT3B0aW9ucyB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3Zv
aWQgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6bm90aWZ5V29ya2VyT2JqZWN0T2ZM
b2FkQ29tcGxldGlvbihXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVy
cm9yKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coIm5vdGlmeVdvcmtlck9iamVjdE9m
TG9hZENvbXBsZXRpb246IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cywg
c3VjY2Vzcz0lZCIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCBlcnJvci5pc051bGwoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6Tm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlv
biB7IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGVycm9yIH0pOworfQorCit2b2lkIFdl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVj
dChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgQ09OTkVD
VElPTl9SRUxFQVNFX0xPR19FUlJPUigicG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0OiBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6UG9zdEV4Y2VwdGlvblRvV29ya2VyT2Jq
ZWN0IHsgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uOjpzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIpCit7CisgICAgQVNTRVJUKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lk
ZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsgLy8gRklYTUU6IFNob3VsZCBi
ZSBhIE1FU1NBR0VfQ0hFQ0soKS4KKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJzaGFyZWRX
b3JrZXJPYmplY3RJc0dvaW5nQXdheTogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1
YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gdGhpcy0+c2Vzc2lvbigpKQorICAgICAg
ICBzZXNzaW9uLT5lbnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKS5zaGFyZWRXb3JrZXJPYmplY3RJ
c0dvaW5nQXdheShzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKK30KKworI3VuZGVmIENP
Tk5FQ1RJT05fUkVMRUFTRV9MT0cKKyN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9S
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uZDNkZTRlMWI0OWJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5o
CkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBX
b3JrZXJGZXRjaFJlc3VsdDsKK3N0cnVjdCBXb3JrZXJPcHRpb25zOworfQorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgTmV0d29ya1Byb2Nlc3M7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXI7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOwor
CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uIDogcHVibGljIElQQzo6TWVz
c2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uKE5ldHdvcmtQcm9jZXNzJiwgV2ViU2hhcmVkV29ya2VyU2VydmVyJiwgSVBDOjpDb25uZWN0
aW9uJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOworICAgIH5XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uKCk7CisKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlcigp
IHsgcmV0dXJuIG1fc2VydmVyOyB9CisgICAgY29uc3QgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBz
ZXJ2ZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZlcjsgfQorCisgICAgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKCk7CisgICAgTmV0d29ya1Nlc3Npb24qIHNlc3Npb24oKTsKKyAgICBXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7IH0KKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAgICB2b2lkIGZldGNo
U2NyaXB0SW5DbGllbnQoY29uc3QgVVJMJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJik+JiYpOworICAgIHZvaWQgbm90aWZ5
V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCBwb3N0
RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisKK3ByaXZhdGU6CisgICAgLy8g
SVBDOjpNZXNzYWdlU2VuZGVyLgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGlu
YXRpb25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KKworICAgIC8vIElQQyBtZXNzYWdl
cy4KKyAgICB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYs
IFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpU
cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJik7CisgICAg
dm9pZCBzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyKTsKKworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29udGVudENv
bm5lY3Rpb247CisgICAgUmVmPE5ldHdvcmtQcm9jZXNzPiBtX25ldHdvcmtQcm9jZXNzOworICAg
IFdlYlNoYXJlZFdvcmtlclNlcnZlciYgbV9zZXJ2ZXI7CisgICAgV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIgbV93ZWJQcm9jZXNzSWRlbnRpZmllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi5mYWU0YTA4MDM3NzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCkBAIC0wLDAgKzEsMjYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
CisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworbWVzc2FnZXMgLT4gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbiBO
b3RSZWZDb3VudGVkIHsKKyAgICBSZXF1ZXN0U2hhcmVkV29ya2VyKHN0cnVjdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4gb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFVSTCB1cmwsIFdlYkNvcmU6OlRyYW5zZmVy
cmVkTWVzc2FnZVBvcnQgcG9ydCwgc3RydWN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMgd29ya2Vy
T3B0aW9ucykKKyAgICBTaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uNDljMTEyNDE1MjE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHAKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
IgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKKyNkZWZpbmUgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0Vf
TE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNz
SWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6IiBmbXQsIHRoaXMsIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSwg
IyNfX1ZBX0FSR1NfXykKKworV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlcikK
KyAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQorICAgICwgbV9zZXJ2ZXIoc2VydmVyKQor
ICAgICwgbV9yZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikKK3sKKyAgICBDT05U
RVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246Iik7CisgICAgc2VydmVyLmFkZENvbnRleHRDb25uZWN0aW9uKCp0aGlzKTsK
K30KKworV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6fldlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQoreworICAgIENPTlRFWFRfQ09OTkVD
VElPTl9SRUxFQVNFX0xPRygifldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246Iik7CisgICAgaWYgKG1fc2VydmVyICYmIG1fc2VydmVyLT5jb250ZXh0Q29ubmVjdGlvbkZv
clJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKCkpID09IHRoaXMpCisgICAgICAg
IG1fc2VydmVyLT5yZW1vdmVDb250ZXh0Q29ubmVjdGlvbigqdGhpcyk7Cit9CisKK1dlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OndlYlByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0
aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCk7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiYgV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6aXBjQ29ubmVjdGlvbigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCk7Cit9CisKK0lQQzo6Q29u
bmVjdGlvbiogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2Fn
ZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiAmaXBjQ29ubmVjdGlvbigp
OworfQorCit1aW50NjRfdCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9
CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVj
dGlvbklzTm9Mb25nZXJOZWVkZWQoKQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNF
X0xPRygiY29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQ6Iik7CisgICAgbV9jb25uZWN0aW9uLnNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7Cit9
CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cG9zdEV4
Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hh
cmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAg
ICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coInBvc3RFeGNlcHRpb25Ub1dvcmtlck9i
amVjdDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50
aWZpZXIudG9VSW50NjQoKSk7CisgICAgaWYgKG1fc2VydmVyKQorICAgICAgICBtX3NlcnZlci0+
cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGVycm9y
TWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwpOworfQorCit2b2lk
IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmxhdW5jaFNoYXJlZFdv
cmtlcihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVk
V29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYgd29ya2VyT3B0aW9ucywgY29uc3QgV2ViQ29y
ZTo6V29ya2VyRmV0Y2hSZXN1bHQmIGZldGNoUmVzdWx0KQoreworICAgIENPTlRFWFRfQ09OTkVD
VElPTl9SRUxFQVNFX0xPRygibGF1bmNoU2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlm
aWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Okxh
dW5jaFNoYXJlZFdvcmtlciB7IG9yaWdpbiwgc2hhcmVkV29ya2VySWRlbnRpZmllciwgdXJsLCB3
b3JrZXJPcHRpb25zLCBmZXRjaFJlc3VsdCB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpwb3N0Q29ubmVjdEV2ZW50KFdlYkNvcmU6OlNoYXJl
ZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYgcG9ydCwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4p
Cit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJwb3N0Q29ubmVjdEV2ZW50
OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VySWRlbnRpZmll
ci50b1VJbnQ2NCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OlBvc3RDb25uZWN0RXZlbnQgeyBzaGFyZWRXb3JrZXJJZGVudGlm
aWVyLCBwb3J0LCBzb3VyY2VPcmlnaW4gfSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlU2hhcmVkV29ya2VyKFdlYkNvcmU6OlNo
YXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBDT05U
RVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coInRlcm1pbmF0ZVNoYXJlZFdvcmtlcjogc2hhcmVk
V29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50
NjQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpUZXJtaW5hdGVTaGFyZWRXb3JrZXIgeyBzaGFyZWRXb3JrZXJJZGVudGlmaWVy
IH0pOworfQorCisjdW5kZWYgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HCisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uYjY3M2VjYWUyODNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VT
ZW5kZXIuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29y
a2VySWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmZXJyZWRNZXNzYWdlUG9y
dC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKK2Ns
YXNzIFNjcmlwdEJ1ZmZlcjsKK3N0cnVjdCBDbGllbnRPcmlnaW47CitzdHJ1Y3QgV29ya2VyRmV0
Y2hSZXN1bHQ7CitzdHJ1Y3QgV29ya2VyT3B0aW9uczsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworY2xhc3MgV2ViU2hhcmVk
V29ya2VyU2VydmVyOworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uIGZpbmFsIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVz
c2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXImKTsKKyAgICB+V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbigpOworCisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vz
c0lkZW50aWZpZXIoKSBjb25zdDsKKyAgICBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYgcmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWlu
OyB9CisgICAgSVBDOjpDb25uZWN0aW9uJiBpcGNDb25uZWN0aW9uKCkgY29uc3Q7CisKKyAgICB2
b2lkIGxhdW5jaFNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJD
b3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBXZWJDb3JlOjpX
b3JrZXJPcHRpb25zJiwgY29uc3QgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmKTsKKyAgICB2
b2lkIHBvc3RDb25uZWN0RXZlbnQoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYsIGNvbnN0IFN0cmluZyYgc291cmNl
T3JpZ2luKTsKKyAgICB2b2lkIHRlcm1pbmF0ZVNoYXJlZFdvcmtlcihXZWJDb3JlOjpTaGFyZWRX
b3JrZXJJZGVudGlmaWVyKTsKKworICAgIHZvaWQgY29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQo
KTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgZmluYWw7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAgIHZv
aWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCisgICAgLy8gSVBDOjpNZXNz
YWdlU2VuZGVyLgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24o
KSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgp
IGNvbnN0IGZpbmFsOworCisgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fY29u
bmVjdGlvbjsKKyAgICBXZWFrUHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlcj4gbV9zZXJ2ZXI7Cisg
ICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29y
a2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hZTQ3YzEyMmNiYWMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtl
ci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBA
IC0wLDAgKzEsMjUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
bWVzc2FnZXMgLT4gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBOb3RS
ZWZDb3VudGVkIHsKKyAgICBQb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hh
cmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBTdHJpbmcgZXJyb3JN
ZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgU3RyaW5nIHNvdXJjZVVS
TCkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKaW5kZXggMWM0MmQwNDBjMWE5Li5kZTMyZjgx
NzE3MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCkBAIC05Nyw2ICs5Nyw3IEBAIGV4dGVy
biAiQyIgewogICAgIE0oU2VydmljZVdvcmtlcikgXAogICAgIE0oU2Vzc2lvblN0YXRlKSBcCiAg
ICAgTShTaGFyZWREaXNwbGF5TGlzdHMpIFwKKyAgICBNKFNoYXJlZFdvcmtlcikgXAogICAgIE0o
U3RvcmFnZSkgXAogICAgIE0oU3RvcmFnZUFQSSkgXAogICAgIE0oVGV4dElucHV0KSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA3ZWJmYTUxNmI1MDMuLjRj
OGNhZDA0NjQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBA
IC0zMDMsMTAgKzMwMywxMyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNs
YXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmll
cicsCiAgICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
cicsCiAgICAgICAgICdXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoJywKKyAgICAgICAgJ1dlYkNv
cmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXInLAorICAgICAgICAnV2ViQ29yZTo6U2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTbGVlcERpc2FibGVySWRl
bnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTb3VyY2VCdWZmZXJBcHBlbmRNb2RlJywKICAg
ICAgICAgJ1dlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZp
ZXInLAogICAgICAgICAnV2ViQ29yZTo6U3RvcmFnZVR5cGUnLAorICAgICAgICAnV2ViQ29yZTo6
VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCcsCiAgICAgICAgICdXZWJDb3JlOjpVc2VyTWVkaWFSZXF1
ZXN0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpXZWJMb2NrSWRlbnRpZmllcicsCiAg
ICAgICAgICdXZWJDb3JlOjpXZWJTb2NrZXRJZGVudGlmaWVyJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDRm
MGEyMzU0NDFiMi4uZDllNjBjZTc4OTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTE0MSw2ICsxNDEsMTAg
QEAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV09yaWdpblN0b3JlLmNwcCBAbm8t
dW5pZnkKIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmNwcCBAbm8tdW5pZnkKIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcCBAbm8tdW5pZnkKIAorTmV0d29ya1Byb2Nlc3MvU2hhcmVk
V29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAKK05ldHdvcmtQcm9jZXNzL1NoYXJlZFdv
cmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcAorTmV0d29ya1Byb2Nlc3Mv
U2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3Bw
CisKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNwcAog
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5jcHAKIE5ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS5jcHAKQEAg
LTc4Myw2ICs3ODcsOSBAQCBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uY3BwCiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dPcmlnaW5UYWJsZS5jcHAKIFdl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAogV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAKK1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCitXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKK1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAKIAogV2ViUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCiAKQEAgLTg4NSwzICs4OTIs
NyBAQCBSZW1vdGVXZWJMb2NrUmVnaXN0cnlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBTZXJ2aWNlV29y
a2VyRG93bmxvYWRUYXNrTWVzc2FnZVJlY2VpdmVyLmNwcAogV2ViQnJvYWRjYXN0Q2hhbm5lbFJl
Z2lzdHJ5TWVzc2FnZVJlY2VpdmVyLmNwcAogV2ViTG9ja1JlZ2lzdHJ5UHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdl
UmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcAorV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5j
cHAKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2
ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBhNjc4MzY3YTc3NWEuLjMzMDIwYmQ1YzNjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCkBAIC01MjksNyArNTI5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
Ojp0ZXJtaW5hdGVXZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2MK
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6dGVybWluYXRlVW5yZXNwb25zaXZlU2VydmljZVdv
cmtlclByb2Nlc3NlcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmll
cikKIHsKICAgICBpZiAoUmVmUHRyIHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NG
b3JJZGVudGlmaWVyKHByb2Nlc3NJZGVudGlmaWVyKSkgewotICAgICAgICBwcm9jZXNzLT5kaXNh
YmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICAgICAgcHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2Vi
UHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICAgICAgICAgcHJvY2Vz
cy0+cmVxdWVzdFRlcm1pbmF0aW9uKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6RXhjZWVkZWRD
UFVMaW1pdCk7CiAgICAgfQogfQpAQCAtMTQxNSwxNiArMTQxNSwyMSBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmRpZERlc3Ryb3lXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eShXZWJV
c2VyQ29udGVudAogfQogI2VuZGlmCiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJs
aXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlc3Npb25J
RCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVn
aXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50
aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MoKnRoaXMsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXJ2
aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHNlc3Npb25JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworICAgIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBz
ZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHNlc3Npb25JRCwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNlcnZpY2VXb3JrZXJD
b250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
IGlkZW50aWZpZXIpCiB7CiAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6
OnByb2Nlc3NGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIpKQotICAgICAgICBwcm9jZXNzLT5kaXNh
YmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICAgICAgcHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2Vi
UHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KIAogdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpCkBAIC0xNDYwLDYg
KzE0NjUsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjplbmRTZXJ2aWNlV29ya2VyQmFj
a2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0kKIH0KICNlbmRpZgogCit2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OnNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJO
ZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBpZiAo
YXV0byogcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIoaWRl
bnRpZmllcikpCisgICAgICAgIHByb2Nlc3MtPmRpc2FibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94
eTo6V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWlu
dDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcXVvdGEpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIFJFTEVBU0VfTE9HKFN0b3JhZ2UsICIlcCAtIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UiLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggYTRlMzY0NWVi
YWFlLi42ODQxYTM0ZmUwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0zMzQsNiArMzM0LDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIHN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7CiAg
ICAgdm9pZCBlbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKICNlbmRpZgor
ICAgIHZvaWQgc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CisgICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mJiwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAg
ICB2b2lkIHRlcm1pbmF0ZVdlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMTJkMDZjZWJkNjJhLi4xNTc1N2Vk
OWEyNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTYwLDYgKzYwLDggQEAg
bWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU3Rh
cnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQogICAgIEVuZFNlcnZpY2VXb3Jr
ZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNl
V29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpCiAjZW5kaWYKKyAgICBFc3RhYmxpc2hTaGFyZWRXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkg
QXN5bmMKKyAgICBTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAKICAgICBTZXRXZWJQcm9jZXNz
SGFzVXBsb2FkcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSUQsIGJvb2wgaGFz
VXBsb2FkKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBl
NDk5MzVjMzI1ZjYuLjFhY2IzNDQ0YWZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC0zNjkxLDExICszNjkxLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNl
dFVzZXJBZ2VudChTdHJpbmcmJiB1c2VyQWdlbnQpCiAgICAgICAgIHJldHVybjsKICAgICBtX3Vz
ZXJBZ2VudCA9IFdURk1vdmUodXNlckFnZW50KTsKIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKICAgICAvLyBXZSB1cGRhdGUgdGhlIHNlcnZpY2Ugd29ya2VyIHRoZXJlIGF0IHRoZSBtb21l
bnQgdG8gYmUgc3VyZSB3ZSB1c2UgdmFsdWVzIHVzZWQgYnkgYWN0dWFsIHdlYiBwYWdlcy4KICAg
ICAvLyBGSVhNRTogUmVmYWN0b3IgdGhpcyB3aGVuIHdlIGhhdmUgYSBiZXR0ZXIgVXNlci1BZ2Vu
dCBzdG9yeS4KLSAgICBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS51cGRhdGVTZXJ2aWNlV29ya2Vy
VXNlckFnZW50KG1fdXNlckFnZW50KTsKLSNlbmRpZgorICAgIHByb2Nlc3MoKS5wcm9jZXNzUG9v
bCgpLnVwZGF0ZVdvcmtlclVzZXJBZ2VudChtX3VzZXJBZ2VudCk7CiAKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBhZmMyM2VlNTNmMTIuLjRiMTliMGQxZDNjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNTI5LDcgKzUy
OSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdldFdlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24o
V2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJvCiBib29sIFdlYlByb2Nlc3NQb29sOjpzX3Vz
ZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MgPSBmYWxzZTsKIAogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYgcHJv
eHksIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRp
ZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2
aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlZ2lzdHJhYmxlRG9t
YWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4
aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Npb25JRCk7CiAgICAgaWYgKCF3ZWJzaXRl
RGF0YVN0b3JlKQpAQCAtNTQ2LDcgKzU0Niw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFi
bGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0CiAg
ICAgaWYgKHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcikgewogICAgICAgICAvLyBUaGlzIGlz
IGEgc2VydmljZSB3b3JrZXIgZm9yIGEgc2VydmljZSB3b3JrZXIgcGFnZSBzbyB3ZSBuZWVkIHRv
IG1ha2Ugc3VyZSB3ZSB1c2UgdXNlIHRoZSBwYWdlJ3MgV2ViUHJvY2VzcyBmb3IgdGhlIHNlcnZp
Y2Ugd29ya2VyLgogICAgICAgICBpZiAoKHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBXZWJQ
cm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRp
Zmllci0+cHJvY2Vzc0lkZW50aWZpZXIoKSkpKSB7Ci0gICAgICAgICAgICBzZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5LT5lbmFibGVTZXJ2aWNlV29ya2Vycyhwcm9jZXNzUG9vbC0+dXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllckZvclNlcnZpY2VXb3JrZXJzKCkpOworICAgICAgICAgICAg
c2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6
OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRy
b2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpKTsKICAgICAgICAgICAgIGlmIChzZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpIHsKICAgICAgICAgICAgICAgICBw
cm9jZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hlKCkucmVtb3ZlUHJvY2Vzcygqc2VydmljZVdvcmtl
clByb2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0NhY2hlOjpTaG91bGRTaHV0RG93blByb2Nlc3M6Ok5v
KTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIXNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmlz
SW5Qcm9jZXNzQ2FjaGUoKSk7CkBAIC01NjQsNyArNTY0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyhOZXQKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eSA9IHByb2Nlc3MucHRyKCk7Ci0gICAgICAgICAgICBzZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVTZXJ2aWNlV29ya2Vycyhwcm9jZXNzUG9vbC0+dXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvclNlcnZpY2VXb3JrZXJzKCkpOworICAgICAgICAg
ICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlV29ya2VycyhXZWJQcm9jZXNzUHJv
eHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIHByb2Nlc3NQb29sLT51c2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpKTsKIAogICAgICAgICAgICAgaWYgKHNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSkgewogICAgICAgICAgICAg
ICAgIHByb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5yZW1vdmVQcm9jZXNzKCpzZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5LCBXZWJQcm9jZXNzQ2FjaGU6OlNob3VsZFNodXREb3duUHJvY2Vz
czo6Tm8pOwpAQCAtNTc3LDcgKzU3Nyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlz
aFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0CiAgICAg
fQogCiAgICAgaWYgKCFzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KSB7Ci0gICAgICAgIGF1dG8g
bmV3UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JTZXJ2aWNlV29ya2Vy
cygqcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWluICB7IHJlZ2lzdHJhYmxlRG9tYWluIH0s
ICp3ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICAgICAgYXV0byBuZXdQcm9jZXNzUHJveHkgPSBXZWJQ
cm9jZXNzUHJveHk6OmNyZWF0ZUZvcldvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBl
OjpTZXJ2aWNlV29ya2VyLCAqcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWluICB7IHJlZ2lz
dHJhYmxlRG9tYWluIH0sICp3ZWJzaXRlRGF0YVN0b3JlKTsKICAgICAgICAgc2VydmljZVdvcmtl
clByb2Nlc3NQcm94eSA9IG5ld1Byb2Nlc3NQcm94eS5wdHIoKTsKIAogICAgICAgICBXRUJQUk9D
RVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoU2VydmljZVdvcmtlciwgImVzdGFibGlzaFNlcnZp
Y2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgY3JlYXRpbmcgYSBuZXcg
c2VydmljZSB3b3JrZXIgcHJvY2VzcyAocHJvY2VzPSVwLCBQSUQ9JWQpIiwgc2VydmljZVdvcmtl
clByb2Nlc3NQcm94eSwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSk7CkBAIC01ODYsMjAgKzU4Niw3MCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxp
c2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldAogICAg
ICAgICBwcm9jZXNzUG9vbC0+bV9wcm9jZXNzZXMuYXBwZW5kKFdURk1vdmUobmV3UHJvY2Vzc1By
b3h5KSk7CiAgICAgfQogCi0gICAgQVNTRVJUKCFzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkuY29u
dGFpbnMoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpKTsKLSAgICBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc2VzKCkuYWRkKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KTsKKyAgICB3b3JrZXJQcm9j
ZXNzZXMoKS5hZGQoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpOwogCi0gICAgc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQocHJvY2Vzc1Bv
b2wtPm1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bvb2wtPm1fc2VydmljZVdv
cmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZhdWx0UGFnZUdyb3Vw
LT5wcmVmZXJlbmNlcygpLnN0b3JlKCksIHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2Vy
UGFnZUlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICBpZiAoIXBy
b2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQuaXNOdWxsKCkpCi0gICAgICAgIHNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPnNldFNlcnZpY2VXb3JrZXJVc2VyQWdlbnQocHJvY2Vz
c1Bvb2wtPm1fc2VydmljZVdvcmtlclVzZXJBZ2VudCk7CisgICAgc2VydmljZVdvcmtlclByb2Nl
c3NQcm94eS0+ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQocHJvY2Vzc1Bvb2wtPm1fd29y
a2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNzUG9vbC0+bV93b3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgp
IDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgp
LCByZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgaWYgKCFwcm9jZXNzUG9vbC0+bV93b3JrZXJVc2Vy
QWdlbnQuaXNOdWxsKCkpCisgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPnNldFdv
cmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV93b3JrZXJVc2VyQWdlbnQpOwogfQorI2VuZGlm
CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZUZyb21TZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
KFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZUZy
b21Xb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogewotICAgIEFTU0VS
VChzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkuY29udGFpbnMocHJvY2VzcykpOwotICAgIHNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMoKS5yZW1vdmUocHJvY2Vzcyk7CisgICAgQVNTRVJUKHdvcmtlclBy
b2Nlc3NlcygpLmNvbnRhaW5zKHByb2Nlc3MpKTsKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5yZW1v
dmUocHJvY2Vzcyk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNoYXJlZFdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRv
KiB3ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVG
b3JTZXNzaW9uSUQoc2Vzc2lvbklEKTsKKyAgICBpZiAoIXdlYnNpdGVEYXRhU3RvcmUpCisgICAg
ICAgIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3Jl
KCkucHRyKCk7CisgICAgaWYgKCFwcm9jZXNzUG9vbHMoKS5zaXplKCkpCisgICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxSZWY8V2ViUHJvY2Vzc1Bvb2w+PiBzaGFyZWRXb3JrZXJQcm9jZXNz
UG9vbChXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
OjpjcmVhdGUoKS5nZXQoKSkpOworCisgICAgLy8gQXJiaXRyYXJpbHkgY2hvb3NlIHRoZSBmaXJz
dCBwcm9jZXNzIHBvb2wgdG8gaG9zdCB0aGUgc2hhcmVkIHdvcmtlciBwcm9jZXNzLgorICAgIGF1
dG8qIHByb2Nlc3NQb29sID0gcHJvY2Vzc1Bvb2xzKClbMF07CisgICAgQVNTRVJUKHByb2Nlc3NQ
b29sKTsKKworICAgIFdlYlByb2Nlc3NQcm94eSogc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5IHsg
bnVsbHB0ciB9OworCisgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogcHJvY2Vzc1Bvb2wtPm1fcHJv
Y2Vzc2VzKSB7CisgICAgICAgIGlmIChwcm9jZXNzLnB0cigpID09IHByb2Nlc3NQb29sLT5tX3By
ZXdhcm1lZFByb2Nlc3MuZ2V0KCkgfHwgcHJvY2Vzcy0+aXNEdW1teVByb2Nlc3NQcm94eSgpKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICgmcHJvY2Vzcy0+d2Vic2l0ZURhdGFT
dG9yZSgpICE9IHdlYnNpdGVEYXRhU3RvcmUpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgaWYgKCFwcm9jZXNzLT5pc01hdGNoaW5nUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVE
b21haW4pKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgc2hhcmVkV29ya2VyUHJv
Y2Vzc1Byb3h5ID0gcHJvY2Vzcy5wdHIoKTsKKyAgICAgICAgc2hhcmVkV29ya2VyUHJvY2Vzc1By
b3h5LT5lbmFibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2hhcmVkV29y
a2VyLCBwcm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtl
cnMoKSk7CisKKyAgICAgICAgaWYgKHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nl
c3NDYWNoZSgpKSB7CisgICAgICAgICAgICBwcm9jZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hlKCku
cmVtb3ZlUHJvY2Vzcygqc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LCBXZWJQcm9jZXNzQ2FjaGU6
OlNob3VsZFNodXREb3duUHJvY2Vzczo6Tm8pOworICAgICAgICAgICAgQVNTRVJUKCFzaGFyZWRX
b3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSk7CisgICAgICAgIH0KKworICAg
ICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoU2hhcmVkV29ya2VyLCAiZXN0
YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHJldXNp
bmcgYW4gZXhpc3Rpbmcgd2ViIHByb2Nlc3MgKHByb2Nlc3M9JXAsIFBJRD0lZCkiLCBzaGFyZWRX
b3JrZXJQcm9jZXNzUHJveHksIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50
aWZpZXIoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmICghc2hhcmVkV29ya2Vy
UHJvY2Vzc1Byb3h5KSB7CisgICAgICAgIGF1dG8gbmV3UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vz
c1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2hh
cmVkV29ya2VyLCAqcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWluICB7IHJlZ2lzdHJhYmxl
RG9tYWluIH0sICp3ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICAgICAgc2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5ID0gbmV3UHJvY2Vzc1Byb3h5LnB0cigpOworCisgICAgICAgIFdFQlBST0NFU1NQT09M
X1JFTEVBU0VfTE9HX1NUQVRJQyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgY3JlYXRpbmcgYSBuZXcgc2VydmljZSB3
b3JrZXIgcHJvY2VzcyAocHJvY2Vzcz0lcCwgUElEPSVkKSIsIHNoYXJlZFdvcmtlclByb2Nlc3NQ
cm94eSwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKKwor
ICAgICAgICBwcm9jZXNzUG9vbC0+aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MobmV3UHJvY2Vzc1By
b3h5LCB3ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPm1fcHJvY2Vzc2Vz
LmFwcGVuZChXVEZNb3ZlKG5ld1Byb2Nlc3NQcm94eSkpOworICAgIH0KKworICAgIHdvcmtlclBy
b2Nlc3NlcygpLmFkZCgqc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5KTsKKworICAgIHNoYXJlZFdv
cmtlclByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dChwcm9jZXNzUG9v
bC0+bV93b3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2Vz
LnZhbHVlKCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygp
LnN0b3JlKCksIHJlZ2lzdHJhYmxlRG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisgICAgaWYgKCFwcm9jZXNzUG9vbC0+bV93b3JrZXJVc2VyQWdlbnQuaXNOdWxsKCkpCisgICAg
ICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+c2V0V29ya2VyVXNlckFnZW50KHByb2Nlc3NQ
b29sLT5tX3dvcmtlclVzZXJBZ2VudCk7CiB9Ci0jZW5kaWYKIAogdm9pZCBXZWJQcm9jZXNzUG9v
bDo6d2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdlZCgpCiB7CkBAIC0xMDAzLDEwICsx
MDUzLDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MoV2ViUHJvY2Vz
c1Byb3h5JiBwcm9jZXNzKQogCiAgICAgbV9iYWNrRm9yd2FyZENhY2hlLT5yZW1vdmVFbnRyaWVz
Rm9yUHJvY2Vzcyhwcm9jZXNzKTsKIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBp
ZiAocHJvY2Vzcy5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQotICAgICAgICByZW1vdmVGcm9t
U2VydmljZVdvcmtlclByb2Nlc3Nlcyhwcm9jZXNzKTsKLSNlbmRpZgorICAgIGlmIChwcm9jZXNz
LmlzUnVubmluZ1dvcmtlcnMoKSkKKyAgICAgICAgcmVtb3ZlRnJvbVdvcmtlclByb2Nlc3Nlcyhw
cm9jZXNzKTsKIAogICAgIHN0YXRpY19jYXN0PFdlYkNvbnRleHRTdXBwbGVtZW50Kj4oc3VwcGxl
bWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKSktPnByb2Nlc3NEaWRDbG9zZSgmcHJv
Y2Vzcyk7CiAKQEAgLTEwNjcsMTIgKzExMTUsMTIgQEAgUmVmPFdlYlByb2Nlc3NQcm94eT4gV2Vi
UHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbihXZWJzaXRlRGF0YVN0b3IK
IH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLVVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXIgV2ViUHJvY2Vzc1Bvb2w6OnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJG
b3JTZXJ2aWNlV29ya2VycygpCitVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIFdlYlBy
b2Nlc3NQb29sOjp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpCiB7
Ci0gICAgaWYgKCFtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclNlcnZpY2VXb3JrZXIpCi0gICAg
ICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yU2VydmljZVdvcmtlciA9IFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjpjcmVhdGUoKTsKKyAgICBpZiAoIW1fdXNlckNvbnRlbnRDb250
cm9sbGVyRm9yV29ya2VycykKKyAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JXb3Jr
ZXJzID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmNyZWF0ZSgpOwogCi0gICAgcmV0
dXJuIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yU2VydmljZVdvcmtlci0+aWRlbnRpZmllcigp
OworICAgIHJldHVybiBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtlcnMtPmlkZW50aWZp
ZXIoKTsKIH0KICNlbmRpZgogCkBAIC0xMTE5LDE1ICsxMTY3LDEzIEBAIFJlZjxXZWJQYWdlUHJv
eHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQs
IFJlZjxBUEk6CiAKICAgICBhdXRvIHBhZ2UgPSBwcm9jZXNzLT5jcmVhdGVXZWJQYWdlKHBhZ2VD
bGllbnQsIFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKIAotI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLSAgICBpZiAoIW1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzKSB7Ci0gICAgICAg
IG1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzID0gcGFnZS0+cHJlZmVyZW5jZXNTdG9yZSgpOwot
ICAgICAgICBmb3IgKGF1dG8mIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogc2VydmljZVdvcmtlclBy
b2Nlc3NlcygpKQotICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3MudXBkYXRlU2Vydmlj
ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoKm1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzKTsKKyAg
ICBpZiAoIW1fd29ya2VyUHJlZmVyZW5jZXMpIHsKKyAgICAgICAgbV93b3JrZXJQcmVmZXJlbmNl
cyA9IHBhZ2UtPnByZWZlcmVuY2VzU3RvcmUoKTsKKyAgICAgICAgZm9yIChhdXRvJiB3b3JrZXJQ
cm9jZXNzIDogd29ya2VyUHJvY2Vzc2VzKCkpCisgICAgICAgICAgICB3b3JrZXJQcm9jZXNzLnVw
ZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoKm1fd29ya2VyUHJlZmVyZW5jZXMpOwogICAgIH0K
ICAgICBpZiAodXNlckNvbnRlbnRDb250cm9sbGVyKQotICAgICAgICBtX3VzZXJDb250ZW50Q29u
dHJvbGxlckZvclNlcnZpY2VXb3JrZXIgPSB1c2VyQ29udGVudENvbnRyb2xsZXI7Ci0jZW5kaWYK
KyAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JXb3JrZXJzID0gdXNlckNvbnRlbnRD
b250cm9sbGVyOwogCiAgICAgYm9vbCBlbmFibGVQcm9jZXNzU3dhcE9uQ3Jvc3NTaXRlTmF2aWdh
dGlvbiA9IHBhZ2UtPnByZWZlcmVuY2VzKCkucHJvY2Vzc1N3YXBPbkNyb3NzU2l0ZU5hdmlnYXRp
b25FbmFibGVkKCk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTExNTAsMTYgKzExOTYs
MTQgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UoUGFn
ZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSToKICAgICByZXR1cm4gcGFnZTsKIH0KIAotI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVNlcnZp
Y2VXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCit2b2lkIFdlYlByb2Nl
c3NQb29sOjp1cGRhdGVXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiB7
Ci0gICAgaWYgKG1fc2VydmljZVdvcmtlclVzZXJBZ2VudCA9PSB1c2VyQWdlbnQpCisgICAgaWYg
KG1fd29ya2VyVXNlckFnZW50ID09IHVzZXJBZ2VudCkKICAgICAgICAgcmV0dXJuOwotICAgIG1f
c2VydmljZVdvcmtlclVzZXJBZ2VudCA9IHVzZXJBZ2VudDsKLSAgICBmb3IgKGF1dG8mIHNlcnZp
Y2VXb3JrZXJQcm9jZXNzIDogc2VydmljZVdvcmtlclByb2Nlc3NlcygpKQotICAgICAgICBzZXJ2
aWNlV29ya2VyUHJvY2Vzcy5zZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KG1fc2VydmljZVdvcmtl
clVzZXJBZ2VudCk7CisgICAgbV93b3JrZXJVc2VyQWdlbnQgPSB1c2VyQWdlbnQ7CisgICAgZm9y
IChhdXRvJiB3b3JrZXJQcm9jZXNzIDogd29ya2VyUHJvY2Vzc2VzKCkpCisgICAgICAgIHdvcmtl
clByb2Nlc3Muc2V0V29ya2VyVXNlckFnZW50KG1fd29ya2VyVXNlckFnZW50KTsKIH0KLSNlbmRp
ZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUo
V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9y
ZSkKIHsKQEAgLTE1MzgsOCArMTU4MiwxMyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp0ZXJtaW5h
dGVTZXJ2aWNlV29ya2VycygpCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIFJl
ZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKLSAgICB3aGlsZSAoc2VydmljZVdvcmtlclByb2Nl
c3NlcygpLmNvbXB1dGVTaXplKCkpCi0gICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5i
ZWdpbigpLT5kaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICBWZWN0b3I8UmVmPFdlYlByb2Nl
c3NQcm94eT4+IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXM7CisgICAgd29ya2VyUHJvY2Vzc2VzKCku
Zm9yRWFjaChbJl0oYXV0byYgcHJvY2VzcykgeworICAgICAgICBpZiAocHJvY2Vzcy5pc1J1bm5p
bmdTZXJ2aWNlV29ya2VycygpKQorICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3Nlcy5h
cHBlbmQocHJvY2Vzcyk7CisgICAgfSk7CisgICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2VyUHJv
Y2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMpCisgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VX
b3JrZXIpOwogI2VuZGlmCiB9CiAKQEAgLTE3NjcsMTMgKzE4MTYsMTEgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6cmVwb3J0V2ViQ29udGVudENQVVRpbWUoU2Vjb25kcyBjcHVUaW1lLCB1aW50NjRf
dCBhY3Rpdml0eVMKICNlbmRpZgogfQogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotV2Vh
a0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5PiYgV2ViUHJvY2Vzc1Bvb2w6OnNlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMoKQorV2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5PiYgV2ViUHJvY2Vzc1Bvb2w6
OndvcmtlclByb2Nlc3NlcygpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdlYWtIYXNo
U2V0PFdlYlByb2Nlc3NQcm94eT4+IHByb2Nlc3NlczsKICAgICByZXR1cm4gcHJvY2Vzc2VzOwog
fQotI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb25z
KCkKIHsKQEAgLTE3ODUsMjAgKzE4MzIsMjUgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRl
UHJvY2Vzc0Fzc2VydGlvbnMoKQogICAgIGlmIChhdXRvKiBncHVQcm9jZXNzID0gR1BVUHJvY2Vz
c1Byb3h5OjpzaW5nbGV0b25JZkNyZWF0ZWQoKSkKICAgICAgICAgZ3B1UHJvY2Vzcy0+dXBkYXRl
UHJvY2Vzc0Fzc2VydGlvbigpOwogI2VuZGlmCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQor
CiAgICAgLy8gQ2hlY2sgb24gbmV4dCBydW4gbG9vcCBzaW5jZSB0aGUgd2ViIHByb2Nlc3MgcHJv
eHkgdG9rZW5zIGFyZSBwcm9iYWJseSBiZWluZyB1cGRhdGVkLgogICAgIGNhbGxPbk1haW5SdW5M
b29wKFtdIHsKLSAgICAgICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IHNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMoKSkKLSAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzLnVw
ZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7Ci0gICAgfSk7CisgICAgICAgIHdv
cmtlclByb2Nlc3NlcygpLmZvckVhY2goW10oYXV0byYgd29ya2VyUHJvY2VzcykgeworI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKKyAgICAgICAgICAgIGlmICh3b3JrZXJQcm9jZXNzLmlzUnVu
bmluZ1NlcnZpY2VXb3JrZXJzKCkpCisgICAgICAgICAgICAgICAgd29ya2VyUHJvY2Vzcy51cGRh
dGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2Vy
dmljZVdvcmtlcik7CiAjZW5kaWYKKyAgICAgICAgICAgIGlmICh3b3JrZXJQcm9jZXNzLmlzUnVu
bmluZ1NoYXJlZFdvcmtlcnMoKSkKKyAgICAgICAgICAgICAgICB3b3JrZXJQcm9jZXNzLnVwZGF0
ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTaGFy
ZWRXb3JrZXIpOworICAgICAgICB9KTsKKyAgICB9KTsKIH0KIAogYm9vbCBXZWJQcm9jZXNzUG9v
bDo6aXNTZXJ2aWNlV29ya2VyUGFnZUlEKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlEKSBj
b25zdAogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICAvLyBGSVhNRTogVGhpcyBp
cyBpbmVmZmljaWVudC4KLSAgICByZXR1cm4gV1RGOjphbnlPZihzZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzKCksIFtwYWdlSURdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICByZXR1cm4gV1RGOjphbnlPZih3
b3JrZXJQcm9jZXNzZXMoKSwgW3BhZ2VJRF0oYXV0byYgcHJvY2VzcykgewogICAgICAgICByZXR1
cm4gcHJvY2Vzcy5oYXNTZXJ2aWNlV29ya2VyUGFnZVByb3h5KHBhZ2VJRCk7CiAgICAgfSk7CiAj
ZW5kaWYKQEAgLTIxMjQsMTYgKzIxNzYsMjYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0VXNl
U2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyhib29sIHVzZVNlcGFyYXRlU2VydmljZVcKIH0K
IAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK3NpemVfdCBXZWJQcm9jZXNzUG9vbDo6c2Vy
dmljZVdvcmtlclByb3hpZXNDb3VudCgpIGNvbnN0Cit7CisgICAgdW5zaWduZWQgY291bnQgPSAw
OworICAgIHdvcmtlclByb2Nlc3NlcygpLmZvckVhY2goWyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAg
ICAgICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKKyAgICAgICAgICAg
ICsrY291bnQ7CisgICAgfSk7CisgICAgcmV0dXJuIGNvdW50OworfQorCiBib29sIFdlYlByb2Nl
c3NQb29sOjpoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6YW55T2Yoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLCBb
XShhdXRvJiBwcm9jZXNzKSB7CisgICAgcmV0dXJuIFdURjo6YW55T2Yod29ya2VyUHJvY2Vzc2Vz
KCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuIHByb2Nlc3MuaGFzU2Vydmlj
ZVdvcmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKTsKICAgICB9KTsKIH0KIAogYm9v
bCBXZWJQcm9jZXNzUG9vbDo6aGFzU2VydmljZVdvcmtlckJhY2tncm91bmRBY3Rpdml0eUZvclRl
c3RpbmcoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6OmFueU9mKHNlcnZpY2VXb3JrZXJQcm9j
ZXNzZXMoKSwgW10oYXV0byYgcHJvY2VzcykgeworICAgIHJldHVybiBXVEY6OmFueU9mKHdvcmtl
clByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiBwcm9jZXNz
Lmhhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCk7CiAgICAgfSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCBlYjY2ZDg5
NDkwZGYuLmU3MGI2ZjQyOWY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCkBAIC0zNzQsMTcgKzM3NCwyMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBuZXR3b3JrUHJv
Y2Vzc0RpZFRlcm1pbmF0ZShOZXR3b3JrUHJvY2Vzc1Byb3h5JiwgTmV0d29ya1Byb2Nlc3NQcm94
eTo6VGVybWluYXRpb25SZWFzb24pOwogCiAgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJQYWdlSUQo
V2ViUGFnZVByb3h5SWRlbnRpZmllcikgY29uc3Q7CisgICAgdm9pZCByZW1vdmVGcm9tV29ya2Vy
UHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYpOworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQotICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCByZW1vdmVGcm9tU2Vydmlj
ZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmKTsKLSAgICBzaXplX3Qgc2VydmljZVdv
cmtlclByb3hpZXNDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMo
KS5jb21wdXRlU2l6ZSgpOyB9Ci0gICAgdm9pZCB1cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50
KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKLSAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyIHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2aWNlV29ya2Vycygp
OworICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdv
cmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKyAgICBzaXplX3Qgc2VydmljZVdvcmtlclByb3hpZXNDb3VudCgpIGNvbnN0Owor
ICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgdXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllckZvcldvcmtlcnMoKTsKICAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJGb3JlZ3Jv
dW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2Vy
QmFja2dyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0OwogI2VuZGlmCiAgICAgdm9pZCBz
ZXJ2aWNlV29ya2VyUHJvY2Vzc0NyYXNoZWQoV2ViUHJvY2Vzc1Byb3h5Jik7CiAKKyAgICB2b2lk
IHVwZGF0ZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCk7CisgICAgc3Rh
dGljIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9v
bCBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkgY29uc3Q7CiAjZW5kaWYKQEAgLTYxOCwxMyAr
NjIxLDExIEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBXZWFrUHRy
PFdlYlByb2Nlc3NQcm94eT4+IG1fZHVtbXlQcm9jZXNzUHJveGllczsgLy8gTGlnaHR3ZWlnaHQg
V2ViUHJvY2Vzc1Byb3h5IG9iamVjdHMgd2l0aG91dCBiYWNraW5nIHByb2Nlc3MuCiAKLSNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgc3RhdGljIFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQ
cm94eT4mIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKTsKLSAgICBib29sIG1fd2FpdGluZ0Zvcldv
cmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNlIH07Ci0gICAgU3RyaW5nIG1fc2Vy
dmljZVdvcmtlclVzZXJBZ2VudDsKLSAgICBzdGQ6Om9wdGlvbmFsPFdlYlByZWZlcmVuY2VzU3Rv
cmU+IG1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzOwotICAgIFJlZlB0cjxXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eT4gbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29ya2Vy
OwotI2VuZGlmCisgICAgc3RhdGljIFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIHdvcmtl
clByb2Nlc3NlcygpOworCisgICAgc3RkOjpvcHRpb25hbDxXZWJQcmVmZXJlbmNlc1N0b3JlPiBt
X3dvcmtlclByZWZlcmVuY2VzOworICAgIFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eT4gbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JXb3JrZXJzOworICAgIFN0cmluZyBtX3dv
cmtlclVzZXJBZ2VudDsKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAgICBSZWZQdHI8R1BV
UHJvY2Vzc1Byb3h5PiBtX2dwdVByb2Nlc3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCBjYWMzNjdmMTExOWYuLjVjZjg2Y2M3ODZlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC01OSw2ICs1OSw3
IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJv
eHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lmgi
CiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YUZldGNoT3B0
aW9uLmgiCkBAIC0xODIsMTEgKzE4MywxMSBAQCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9j
ZXNzUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYnNpdAogfQog
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJv
Y2Vzc1Byb3h5OjpjcmVhdGVGb3JTZXJ2aWNlV29ya2VycyhXZWJQcm9jZXNzUG9vbCYgcHJvY2Vz
c1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRh
U3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCitSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNz
UHJveHk6OmNyZWF0ZUZvcldvcmtlcnMoV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBXZWJQcm9jZXNz
UG9vbCYgcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4s
IFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCiB7CiAgICAgYXV0byBwcm94eSA9
IGFkb3B0UmVmKCpuZXcgV2ViUHJvY2Vzc1Byb3h5KHByb2Nlc3NQb29sLCAmd2Vic2l0ZURhdGFT
dG9yZSwgSXNQcmV3YXJtZWQ6Ok5vLCBDcm9zc09yaWdpbk1vZGU6OlNoYXJlZCwgQ2FwdGl2ZVBv
cnRhbE1vZGU6OkRpc2FibGVkKSk7CiAgICAgcHJveHktPm1fcmVnaXN0cmFibGVEb21haW4gPSBX
VEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKLSAgICBwcm94eS0+ZW5hYmxlU2VydmljZVdvcmtl
cnMocHJvY2Vzc1Bvb2wudXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvclNlcnZpY2VX
b3JrZXJzKCkpOworICAgIHByb3h5LT5lbmFibGVXb3JrZXJzKHdvcmtlclR5cGUsIHByb2Nlc3NQ
b29sLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOwogICAgIHBy
b3h5LT5jb25uZWN0KCk7CiAgICAgcmV0dXJuIHByb3h5OwogfQpAQCAtOTk1LDEwICs5OTYsMTAg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZEJlY29tZVVucmVzcG9uc2l2ZSgpCiAgICAgZm9y
IChhdXRvJiBjYWxsYmFjayA6IGlzUmVzcG9uc2l2ZUNhbGxiYWNrcykKICAgICAgICAgY2FsbGJh
Y2soaXNXZWJQcm9jZXNzUmVzcG9uc2l2ZSk7CiAKLSAgICAvLyBJZiB0aGUgd2ViIHByb2Nlc3Mg
YmVjb21lcyB1bnJlc3BvbnNpdmUgYW5kIG9ubHkgcnVucyBzZXJ2aWNlIHdvcmtlcnMsIGtpbGwg
aXQgb3Vyc2VsdmVzIHNpbmNlIHRoZXJlIGFyZSBubyBuYXRpdmUgY2xpZW50cyB0byBkbyBpdC4K
LSAgICBpZiAoaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSAmJiBtX3BhZ2VNYXAuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQZXJmb3JtYW5j
ZUxvZ2dpbmcsICJkaWRCZWNvbWVVbnJlc3BvbnNpdmU6IFRlcm1pbmF0aW5nIHNlcnZpY2Ugd29y
a2VyLW9ubHkgd2ViIHByb2Nlc3MgYmVjYXVzZSBpdCBpcyB1bnJlc3BvbnNpdmUiKTsKLSAgICAg
ICAgZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgLy8gSWYgdGhlIHdlYiBwcm9jZXNzIGJl
Y29tZXMgdW5yZXNwb25zaXZlIGFuZCBvbmx5IHJ1bnMgc2VydmljZS9zaGFyZWQgd29ya2Vycywg
a2lsbCBpdCBvdXJzZWx2ZXMgc2luY2UgdGhlcmUgYXJlIG5vIG5hdGl2ZSBjbGllbnRzIHRvIGRv
IGl0LgorICAgIGlmIChpc1J1bm5pbmdXb3JrZXJzKCkgJiYgbV9wYWdlTWFwLmlzRW1wdHkoKSkg
eworICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUGVyZm9ybWFuY2VM
b2dnaW5nLCAiZGlkQmVjb21lVW5yZXNwb25zaXZlOiBUZXJtaW5hdGluZyB3b3JrZXItb25seSB3
ZWIgcHJvY2VzcyBiZWNhdXNlIGl0IGlzIHVucmVzcG9uc2l2ZSIpOworICAgICAgICBkaXNhYmxl
V29ya2Vycyh7IFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIFdvcmtlclR5cGU6OlNoYXJlZFdv
cmtlciB9KTsKICAgICAgICAgdGVybWluYXRlKCk7CiAgICAgfQogfQpAQCAtMTY5NCw4ICsxNjk1
LDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFp
bkZyYW1lKGNvbnN0IFVSTCYgdXJsKQogICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9OwogICAgIGlmIChtX3JlZ2lzdHJhYmxlRG9t
YWluICYmICptX3JlZ2lzdHJhYmxlRG9tYWluICE9IHJlZ2lzdHJhYmxlRG9tYWluKSB7CiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgICAgICBkaXNhYmxlU2VydmljZVdvcmtlcnMoKTsK
KyAgICAgICAgZGlzYWJsZVdvcmtlcnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiAjZW5k
aWYKKwogICAgICAgICAvLyBOdWxsIG91dCByZWdpc3RyYWJsZSBkb21haW4gc2luY2UgdGhpcyBw
cm9jZXNzIGhhcyBub3cgYmVlbiB1c2VkIGZvciBzZXZlcmFsIGRvbWFpbnMuCiAgICAgICAgIG1f
cmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IH07CiAgICAg
ICAgIHJldHVybjsKQEAgLTE4NjYsNjAgKzE4NjgsODUgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
IHMKIHsKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImVzdGFibGlz
aFNlcnZpY2VXb3JrZXJDb250ZXh0OiBTdGFydGVkIik7CiAgICAgbWFya1Byb2Nlc3NBc1JlY2Vu
dGx5VXNlZCgpOwotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6
RXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7
IHByb2Nlc3NQb29sKCkuZGVmYXVsdFBhZ2VHcm91cCgpLnBhZ2VHcm91cElEKCksIG1fc2Vydmlj
ZVdvcmtlckluZm9ybWF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZVByb3h5SUQsIG1fc2VydmljZVdv
cmtlckluZm9ybWF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZUlELCBzdG9yZSwgcmVnaXN0cmFibGVE
b21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgbV9zZXJ2aWNlV29ya2VySW5mb3Jt
YXRpb24tPmluaXRpYWxpemF0aW9uRGF0YSB9LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
KSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6
OkVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mg
eyBwcm9jZXNzUG9vbCgpLmRlZmF1bHRQYWdlR3JvdXAoKS5wYWdlR3JvdXBJRCgpLCBtX3NlcnZp
Y2VXb3JrZXJJbmZvcm1hdGlvbi0+d29ya2VyUGFnZVByb3h5SUQsIG1fc2VydmljZVdvcmtlcklu
Zm9ybWF0aW9uLT53b3JrZXJQYWdlSUQsIHN0b3JlLCByZWdpc3RyYWJsZURvbWFpbiwgc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+aW5pdGlh
bGl6YXRpb25EYXRhIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewog
ICAgICAgICBpZiAod2Vha1RoaXMpCiAgICAgICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFT
RV9MT0coTG9hZGluZywgImVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0OiBGaW5pc2hlZCIp
OwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0sIDApOwogfQorI2VuZGlmCiAK
LXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0
cmluZyYgdXNlckFnZW50KQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldFdvcmtlclVzZXJBZ2Vu
dChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKIHsKLSAgICBBU1NFUlQobV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb24pOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2VyQWdlbnQgfSwgMCk7CisjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQorICAgIGlmIChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKKyAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlNldFVzZXJBZ2Vu
dCB7IHVzZXJBZ2VudCB9LCAwKTsKKyNlbmRpZgorICAgIGlmIChtX3NoYXJlZFdvcmtlckluZm9y
bWF0aW9uKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OlNldFVzZXJBZ2VudCB7IHVzZXJBZ2VudCB9LCAwKTsKIH0KIAotdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNv
bnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnVw
ZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3Rv
cmUpCiB7Ci0gICAgQVNTRVJUKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5j
ZXNTdG9yZSB7IHN0b3JlIH0sIDApOworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBp
ZiAobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpVcGRhdGVQcmVmZXJlbmNlc1N0b3JlIHsgc3Rv
cmUgfSwgMCk7CisjZW5kaWYKKyAgICBpZiAobV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbikKKyAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpVcGRhdGVQcmVmZXJlbmNlc1N0b3JlIHsgc3RvcmUgfSwgMCk7CiB9CiAKLXZvaWQgV2Vi
UHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpCisvLyBG
SVhNRTogQ2xpZW50cyBkbyBub3QgcHJvcGVybHkgZ2V0IHBvcHVsYXRlZCBpbiBtX3NoYXJlZFdv
cmtlckluZm9ybWF0aW9uLgordm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByb2Nl
c3NBc3NlcnRpb24oV29ya2VyVHlwZSB3b3JrZXJUeXBlKQogewotICAgIFdFQlBST0NFU1NQUk9Y
WV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9j
ZXNzQXNzZXJ0aW9uOiIpOwotICAgIEFTU0VSVChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbik7
Ci0gICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKKyAgICBhdXRvJiB3b3JrZXJJ
bmZvcm1hdGlvbiA9IHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8gbV9z
aGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA6IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOworICAg
IEFTU0VSVCh3b3JrZXJJbmZvcm1hdGlvbik7CisgICAgaWYgKCF3b3JrZXJJbmZvcm1hdGlvbikK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBzaG91bGRUYWtlRm9yZWdyb3VuZEFjdGl2aXR5
ID0gV1RGOjphbnlPZihtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2Vz
LCBbJl0oYXV0byYgcHJvY2VzcykgeworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQ
cm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb246IHdvcmtlclR5
cGU9JXtwdWJsaWN9cyIsIHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8g
InNoYXJlZCIgOiAic2VydmljZSIpOworCisgICAgYm9vbCBzaG91bGRUYWtlRm9yZWdyb3VuZEFj
dGl2aXR5ID0gV1RGOjphbnlPZih3b3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2VzLCBb
Jl0oYXV0byYgcHJvY2VzcykgewogICAgICAgICByZXR1cm4gJnByb2Nlc3MgIT0gdGhpcyAmJiAh
IXByb2Nlc3MubV9mb3JlZ3JvdW5kVG9rZW47CiAgICAgfSk7CiAgICAgaWYgKHNob3VsZFRha2VG
b3JlZ3JvdW5kQWN0aXZpdHkpIHsKLSAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1Zh
bGlkRm9yZWdyb3VuZEFjdGl2aXR5KG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0
eSkpCi0gICAgICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBt
X3Rocm90dGxlci5mb3JlZ3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2VyIGZvciBmb3JlZ3Jv
dW5kIHZpZXcocykiX3MpOworICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRG
b3JlZ3JvdW5kQWN0aXZpdHkod29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKKyAgICAgICAg
ICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmZvcmVncm91bmRB
Y3Rpdml0eSgiV29ya2VyIGZvciBmb3JlZ3JvdW5kIHZpZXcocykiX3MpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgYm9vbCBzaG91bGRUYWtlQmFja2dyb3VuZEFjdGl2aXR5ID0gV1RG
OjphbnlPZihtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2VzLCBbJl0o
YXV0byYgcHJvY2VzcykgeworICAgIGJvb2wgc2hvdWxkVGFrZUJhY2tncm91bmRBY3Rpdml0eSA9
IFdURjo6YW55T2Yod29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3NlcywgWyZdKGF1dG8m
IHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuICZwcm9jZXNzICE9IHRoaXMgJiYgISFwcm9jZXNz
Lm1fYmFja2dyb3VuZFRva2VuOwogICAgIH0pOwogICAgIGlmIChzaG91bGRUYWtlQmFja2dyb3Vu
ZEFjdGl2aXR5KSB7Ci0gICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEJhY2tn
cm91bmRBY3Rpdml0eShtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQotICAg
ICAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRs
ZXIuYmFja2dyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3IgYmFja2dyb3VuZCB2aWV3
KHMpIl9zKTsKKyAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkQmFja2dyb3Vu
ZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCisgICAgICAgICAgICB3b3Jr
ZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHko
IldvcmtlciBmb3IgYmFja2dyb3VuZCB2aWV3KHMpIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmIChtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZykgewor
ICAgIGlmICh3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIgJiYgbV9oYXNT
ZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcpIHsKICAgICAgICAgV0VCUFJPQ0VTU1BS
T1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiU2VydmljZSBXb3JrZXIgZm9yIGJh
Y2tncm91bmQgcHJvY2Vzc2luZyIpOwotICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6Omlz
VmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2
aXR5KSkKLSAgICAgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9
IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tn
cm91bmQgcHJvY2Vzc2luZyJfcyk7CisgICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNW
YWxpZEJhY2tncm91bmRBY3Rpdml0eSh3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQorICAg
ICAgICAgICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuYmFja2dy
b3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3IgYmFja2dyb3VuZCBwcm9jZXNzaW5nIl9z
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uLT5hY3Rpdml0eSA9IG51bGxwdHI7CisgICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5
ID0gbnVsbHB0cjsKIH0KIAordm9pZCBXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNoYXJlZFdv
cmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xP
RyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0OiBTdGFydGVkIik7
CisgICAgbWFya1Byb2Nlc3NBc1JlY2VudGx5VXNlZCgpOworICAgIHNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bvb2woKS5kZWZhdWx0UGFnZUdyb3VwKCku
cGFnZUdyb3VwSUQoKSwgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbi0+d29ya2VyUGFnZVByb3h5
SUQsIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24tPndvcmtlclBhZ2VJRCwgc3RvcmUsIHJlZ2lz
dHJhYmxlRG9tYWluLCBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uLT5pbml0aWFsaXphdGlvbkRh
dGEgfSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGlm
ICh3ZWFrVGhpcykKKyAgICAgICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTaGFy
ZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0OiBGaW5pc2hlZCIpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0sIDApOworfQorCisjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQorCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVnaXN0ZXJTZXJ2aWNlV29y
a2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb3h5KQogewogICAgIGlmICghbV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCkBAIC0xOTI3LDcgKzE5NTQsNyBAQCB2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNz
UHJveHkmIHByb3h5KQogCiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VX
b3JrZXIsICJyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzOiBjbGllbnRQcm9jZXNz
PSVwLCBjbGllbnRQSUQ9JWQiLCAmcHJveHksIHByb3h5LnByb2Nlc3NJZGVudGlmaWVyKCkpOwog
ICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMuYWRkKHByb3h5
KTsKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOworICAgIHVwZGF0
ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAK
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nl
c3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKQEAgLTE5MzcsNyArMTk2NCw3IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5Ojp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJv
Y2Vzc1Byb3h5JiBwcm94CiAKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2Vydmlj
ZVdvcmtlciwgInVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzczogY2xpZW50UHJv
Y2Vzcz0lcCwgY2xpZW50UElEPSVkIiwgJnByb3h5LCBwcm94eS5wcm9jZXNzSWRlbnRpZmllcigp
KTsKICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2VzLnJlbW92
ZShwcm94eSk7Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKKyAg
ICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIp
OwogfQogCiBib29sIFdlYlByb2Nlc3NQcm94eTo6aGFzU2VydmljZVdvcmtlckZvcmVncm91bmRB
Y3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdApAQCAtMTk1Nyw3ICsxOTg0LDcgQEAgdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKCkKIAog
ICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInN0YXJ0
U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nIik7CiAgICAgbV9oYXNTZXJ2aWNlV29y
a2VyQmFja2dyb3VuZFByb2Nlc3NpbmcgPSB0cnVlOwotICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3Jr
ZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuZFNl
cnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZygpCkBAIC0xOTY3LDIzICsxOTk0LDM5IEBA
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3Np
bmcoKQogCiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9u
LCAiZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nIik7CiAgICAgbV9oYXNTZXJ2
aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcgPSBmYWxzZTsKLSAgICB1cGRhdGVTZXJ2aWNl
V29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOworICAgIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRp
b24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlzYWJsZVNlcnZpY2VXb3JrZXJz
KCkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaXNhYmxlV29ya2VycyhPcHRpb25TZXQ8V29ya2Vy
VHlwZT4gd29ya2VyVHlwZSkKIHsKLSAgICBpZiAoIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9u
KQorICAgIEFTU0VSVCghd29ya2VyVHlwZS5pc0VtcHR5KCkpOworCisgICAgYm9vbCBkaWRDaGFu
Z2UgPSBmYWxzZTsKKyAgICBpZiAod29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTZXJ2
aWNlV29ya2VyKSAmJiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikgeworICAgICAgICBtX3Nl
cnZpY2VXb3JrZXJJbmZvcm1hdGlvbiA9IHsgfTsKKyAgICAgICAgZGlkQ2hhbmdlID0gdHJ1ZTsK
KyAgICB9CisgICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2hhcmVkV29y
a2VyKSAmJiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uKSB7CisgICAgICAgIG1fc2hhcmVkV29y
a2VySW5mb3JtYXRpb24gPSB7IH07CisgICAgICAgIGRpZENoYW5nZSA9IHRydWU7CisgICAgfQor
ICAgIGlmICghZGlkQ2hhbmdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBXRUJQUk9DRVNTUFJP
WFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgImRpc2FibGVTZXJ2aWNlV29ya2VyczoiKTsK
LSAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiA9IHsgfTsKKyAgICBXRUJQUk9DRVNTUFJP
WFlfUkVMRUFTRV9MT0coUHJvY2VzcywgImRpc2FibGVXb3JrZXJzOiBEaXNhYmxpbmcgd29ya2Vy
cyAoU2hhcmVkV29ya2Vycz0lZCwgU2VydmljZVdvcmtlcnM9JWQpIiwgd29ya2VyVHlwZS5jb250
YWlucyhXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpLCB3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtl
clR5cGU6OlNlcnZpY2VXb3JrZXIpKTsKKwogICAgIHVwZGF0ZUJhY2tncm91bmRSZXNwb25zaXZl
bmVzc1RpbWVyKCk7CiAKKyAgICBpZiAoIWlzUnVubmluZ1dvcmtlcnMoKSkKKyAgICAgICAgcHJv
Y2Vzc1Bvb2woKS5yZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKCp0aGlzKTsKKwogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKLSAgICBwcm9jZXNzUG9vbCgpLnJlbW92ZUZyb21TZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzKCp0aGlzKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6Q2xvc2UgeyB9LCAwKTsKKyAgICBpZiAod29ya2VyVHlwZS5jb250YWlu
cyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNsb3NlIHsgfSwgMCk7CiAjZW5kaWYKKyAgICBp
ZiAod29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpKQorICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OkNsb3NlIHsgfSwgMCk7CiAKICAgICBtYXliZVNodXREb3duKCk7CiB9CkBAIC0yMDA0LDExICsy
MDQ3LDEzIEBAIHN0YXRpYyBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvbXBpbGVkQ29udGVudFJ1bGVM
aXN0RGF0YSwgVVJMPj4gY29udGVudFJ1bGVMaXN0c0ZyCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OmVuYWJsZVNlcnZpY2VXb3JrZXJzKGNvbnN0IFVzZXJDb250ZW50Q29udHJv
bGxlcklkZW50aWZpZXImIHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpCit2b2lkIFdl
YlByb2Nlc3NQcm94eTo6ZW5hYmxlV29ya2VycyhXb3JrZXJUeXBlIHdvcmtlclR5cGUsIGNvbnN0
IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImIHVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXIpCiB7Ci0gICAgQVNTRVJUKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbik7Ci0g
ICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJlbmFibGVTZXJ2
aWNlV29ya2VyczoiKTsKLSAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiA9IFNlcnZpY2VX
b3JrZXJJbmZvcm1hdGlvbiB7CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNlcnZp
Y2VXb3JrZXIsICJlbmFibGVXb3JrZXJzOiB3b3JrZXJUeXBlPSV1Iiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHdvcmtlclR5cGUpKTsKKyAgICBhdXRvJiB3b3JrZXJJbmZvcm1hdGlvbiA9IHdvcmtl
clR5cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8gbV9zaGFyZWRXb3JrZXJJbmZvcm1h
dGlvbiA6IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOworICAgIEFTU0VSVCghd29ya2VySW5m
b3JtYXRpb24pOworCisgICAgd29ya2VySW5mb3JtYXRpb24gPSBXb3JrZXJJbmZvcm1hdGlvbiB7
CiAgICAgICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXI6OmdlbmVyYXRlKCksCiAgICAgICAgIFBh
Z2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLAogICAgICAgICBTZXJ2aWNlV29ya2VySW5pdGlhbGl6
YXRpb25EYXRhIHsKQEAgLTIwMjEsOSArMjA2Niw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpl
bmFibGVTZXJ2aWNlV29ya2Vycyhjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
CiAgICAgICAgIHsgfQogICAgIH07CiAgICAgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNz
VGltZXIoKTsKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgdXBkYXRlU2VydmljZVdv
cmtlclByb2Nlc3NBc3NlcnRpb24oKTsKLSNlbmRpZgorCisgICAgdXBkYXRlV29ya2VyUHJvY2Vz
c0Fzc2VydGlvbih3b3JrZXJUeXBlKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZENy
ZWF0ZVNsZWVwRGlzYWJsZXIoU2xlZXBEaXNhYmxlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiByZWFzb24sIGJvb2wgZGlzcGxheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggZjUxNGI5OTE2YWQ0Li4xOTJkNWQyYjZmOWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0xMzYsOSArMTM2LDEz
IEBAIHB1YmxpYzoKIAogICAgIGVudW0gY2xhc3MgU2hvdWxkTGF1bmNoUHJvY2VzcyA6IGJvb2wg
eyBObywgWWVzIH07CiAgICAgZW51bSBjbGFzcyBDYXB0aXZlUG9ydGFsTW9kZSA6IGJvb2wgeyBE
aXNhYmxlZCwgRW5hYmxlZCB9OworICAgIGVudW0gY2xhc3MgV29ya2VyVHlwZSA6IHVpbnQzMl90
IHsKKyAgICAgICAgU2VydmljZVdvcmtlciA9IDEgPDwgMCwKKyAgICAgICAgU2hhcmVkV29ya2Vy
ID0gMSA8PCAxCisgICAgfTsKIAogICAgIHN0YXRpYyBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBjcmVh
dGUoV2ViUHJvY2Vzc1Bvb2wmLCBXZWJzaXRlRGF0YVN0b3JlKiwgQ2FwdGl2ZVBvcnRhbE1vZGUs
IElzUHJld2FybWVkLCBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGUgPSBXZWJDb3JlOjpDcm9zc09y
aWdpbk1vZGU6OlNoYXJlZCwgU2hvdWxkTGF1bmNoUHJvY2VzcyA9IFNob3VsZExhdW5jaFByb2Nl
c3M6Olllcyk7Ci0gICAgc3RhdGljIFJlZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZUZvclNlcnZp
Y2VXb3JrZXJzKFdlYlByb2Nlc3NQb29sJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwg
V2Vic2l0ZURhdGFTdG9yZSYpOworICAgIHN0YXRpYyBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBjcmVh
dGVGb3JXb3JrZXJzKFdvcmtlclR5cGUsIFdlYlByb2Nlc3NQb29sJiwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiwgV2Vic2l0ZURhdGFTdG9yZSYpOwogCiAgICAgfldlYlByb2Nlc3NQcm94
eSgpOwogCkBAIC0xNjEsOCArMTY1LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNJblByb2Nl
c3NDYWNoZShib29sLCBXaWxsU2h1dERvd24gPSBXaWxsU2h1dERvd246Ok5vKTsKICAgICBib29s
IGlzSW5Qcm9jZXNzQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtX2lzSW5Qcm9jZXNzQ2FjaGU7IH0K
IAotICAgIHZvaWQgZW5hYmxlU2VydmljZVdvcmtlcnMoY29uc3QgVXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllciYpOwotICAgIHZvaWQgZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAg
dm9pZCBlbmFibGVXb3JrZXJzKFdvcmtlclR5cGUsIGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXImKTsKKyAgICB2b2lkIGRpc2FibGVXb3JrZXJzKE9wdGlvblNldDxXb3JrZXJU
eXBlPik7CiAKICAgICBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3Qg
eyBBU1NFUlQobV93ZWJzaXRlRGF0YVN0b3JlKTsgcmV0dXJuICptX3dlYnNpdGVEYXRhU3RvcmU7
IH0KICAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSYpOwpAQCAt
MTk0LDYgKzE5OCw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNSdW5uaW5nU2VydmljZVdvcmtl
cnMoKSBjb25zdCB7IHJldHVybiAhIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOyB9CiAgICAg
Ym9vbCBpc1N0YW5kYWxvbmVTZXJ2aWNlV29ya2VyUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIGlz
UnVubmluZ1NlcnZpY2VXb3JrZXJzKCkgJiYgIXBhZ2VDb3VudCgpOyB9CisgICAgYm9vbCBpc1J1
bm5pbmdTaGFyZWRXb3JrZXJzKCkgY29uc3QgeyByZXR1cm4gISFtX3NoYXJlZFdvcmtlckluZm9y
bWF0aW9uOyB9CisgICAgYm9vbCBpc1N0YW5kYWxvbmVTaGFyZWRXb3JrZXJQcm9jZXNzKCkgY29u
c3QgeyByZXR1cm4gaXNSdW5uaW5nU2hhcmVkV29ya2VycygpICYmICFwYWdlQ291bnQoKTsgfQor
ICAgIGJvb2wgaXNSdW5uaW5nV29ya2VycygpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkV29ya2Vy
SW5mb3JtYXRpb24gfHwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247IH0KIAogICAgIGJvb2wg
aXNEdW1teVByb2Nlc3NQcm94eSgpIGNvbnN0OwogCkBAIC0zNTksMTIgKzM2NiwxMyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHVwZGF0ZUF1ZGlibGVNZWRpYUFzc2VydGlvbnMoKTsKIAorICAgIHZv
aWQgc2V0V29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgdXBkYXRlV29y
a2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CisgICAgdm9p
ZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgdm9pZCB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5
cGUpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFNlcnZp
Y2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNldFNlcnZpY2VXb3JrZXJVc2VyQWdl
bnQoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCB1cGRhdGVTZXJ2aWNlV29ya2VyUHJlZmVyZW5j
ZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7Ci0gICAgYm9vbCBoYXNTZXJ2aWNl
V29ya2VyUGFnZVByb3h5KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVByb3h5SUQpIHsgcmV0
dXJuIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uICYmIG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uLT5zZXJ2aWNlV29ya2VyUGFnZVByb3h5SUQgPT0gcGFnZVByb3h5SUQ7IH0KLSAgICB2b2lk
IHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7CisgICAgYm9vbCBoYXNTZXJ2
aWNlV29ya2VyUGFnZVByb3h5KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVByb3h5SUQpIHsg
cmV0dXJuIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uICYmIG1fc2VydmljZVdvcmtlckluZm9y
bWF0aW9uLT53b3JrZXJQYWdlUHJveHlJRCA9PSBwYWdlUHJveHlJRDsgfQogICAgIHZvaWQgcmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmKTsKICAgICB2
b2lkIHVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkm
KTsKICAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5n
KCkgY29uc3Q7CkBAIC02NDgsMTQgKzY1NiwxNSBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgUmVm
UHRyPExvZ2dlcj4gbV9sb2dnZXI7CiAKLSAgICBzdHJ1Y3QgU2VydmljZVdvcmtlckluZm9ybWF0
aW9uIHsKLSAgICAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUGFnZVBy
b3h5SUQ7Ci0gICAgICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQYWdl
SUQ7CisgICAgc3RydWN0IFdvcmtlckluZm9ybWF0aW9uIHsKKyAgICAgICAgV2ViUGFnZVByb3h5
SWRlbnRpZmllciB3b3JrZXJQYWdlUHJveHlJRDsKKyAgICAgICAgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgd29ya2VyUGFnZUlEOwogICAgICAgICBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25E
YXRhIGluaXRpYWxpemF0aW9uRGF0YTsKICAgICAgICAgUHJvY2Vzc1Rocm90dGxlcjo6QWN0aXZp
dHlWYXJpYW50IGFjdGl2aXR5OwogICAgICAgICBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+
IGNsaWVudFByb2Nlc3NlczsKICAgICB9OwotICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtl
ckluZm9ybWF0aW9uPiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsKKyAgICBzdGQ6Om9wdGlv
bmFsPFdvcmtlckluZm9ybWF0aW9uPiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsKKyAgICBz
dGQ6Om9wdGlvbmFsPFdvcmtlckluZm9ybWF0aW9uPiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9u
OwogICAgIGJvb2wgbV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcgeyBmYWxz
ZSB9OwogCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpTbGVlcERpc2FibGVySWRlbnRpZmllciwgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OlNsZWVwRGlzYWJsZXI+PiBtX3NsZWVwRGlzYWJsZXJzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
NjRlNDA0NDBiOGUzLi5hODllMWMzY2UwNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODgxLDYgKzg4MSw3IEBACiAJCTQ2MTRGMTMy
MjVERUQ4NzUwMDcwMDZFNyAvKiBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QUM1MzI0MjVERUQ4
MUUwMDNCNTdFQyAvKiBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaCAqLzsgfTsKIAkJ
NDYxQ0NDQTUyMzE0ODVBNzAwQjY1OUI5IC8qIFVJUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MzIzNjg1MjMxNDgz
M0YwMEE0OEZBNyAvKiBVSVJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggKi87IH07CiAJCTQ2MUNDQ0E2
MjMxNDg1QUEwMEI2NTlCOSAvKiBXZWJSZW1vdGVPYmplY3RSZWdpc3RyeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzMjM2ODMyMzE0ODFFRjAwQTQ4
RkE3IC8qIFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggKi87IH07CisJCTQ2MUUxQkYyMjc5QTAx
MTYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MUUxQkVGMjc5
QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
aCAqLzsgfTsKIAkJNDYzRkQ0ODAxRUI5NDU5NjAwQTI5ODJDIC8qIFdLUHJvY2Vzc1Rlcm1pbmF0
aW9uUmVhc29uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NjNGRDQ3RjFFQjk0NTg0MDBBMjk4MkMgLyogV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjNG
RDQ4MjFFQjk0RUMwMDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjNGRDQ4MTFFQjk0RUFE
MDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggKi87IH07CiAJCTQ2NTlGMjVG
Mjc1RkY2QjIwMEJCQjM2OSAvKiBDYXB0aXZlUG9ydGFsTW9kZU9ic2VydmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjU5RjI1RTI3NUZGNkIyMDBC
QkIzNjkgLyogQ2FwdGl2ZVBvcnRhbE1vZGVPYnNlcnZlci5oICovOyB9OwpAQCAtODkwLDYgKzg5
MSw4IEBACiAJCTQ2NzFGRjFGMjMyMTdFRkYwMDFCNjRDNyAvKiBXZWJSZXNvdXJjZUxvYWRPYnNl
cnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3
MUZGMUQyMzIxN0VGRjAwMUI2NEM3IC8qIFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmggKi87IH07
CiAJCTQ2N0U0M0U4MjI0M0ZGN0QwMEIxMzkyNCAvKiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1l
dGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3
RTQzRTcyMjQzRkY2RDAwQjEzOTI0IC8qIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmgg
Ki87IH07CiAJCTQ2ODA5QTdDMjNEOTIyNUUwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MDlBN0EyM0Q5
MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggKi87IH07CisJCTQ2OTQzREQwMjc2M0Y4
M0EwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5NDNEQ0YyNzYzRjgzNTAwNEI2MTBFIC8q
IFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmggKi87IH07CisJCTQ2OTQzREQxMjc2M0Y4M0YwMDRC
NjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0M0RDRDI3NjNGODM1MDA0QjYxMEUg
LyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oICovOyB9OwogCQk0NkEyQjYwOTFF
NTY3NkE2MDBDM0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkEyQjYwNzFF
NTY3NUEyMDBDM0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmgg
Ki87IH07CiAJCTQ2QjA1MjQ3MjI2NjhEODUwMDI2NUI5NyAvKiBXZWJEZXZpY2VPcmllbnRhdGlv
bkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjA1MjQ0MjI2NjhEMjMwMDI2NUI5NyAvKiBXZWJEZXZpY2VP
cmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIuaCAqLzsgfTsKIAkJNDZCRUI2RDcy
MkZCOUJENzAwMjY5ODY3IC8qIFN0b3JhZ2VBcmVhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkJFQjZENTIyRkI5QkQ2MDAyNjk4NjcgLyogU3RvcmFn
ZUFyZWEuaCAqLzsgfTsKQEAgLTg5OSwxMCArOTAyLDEzIEBACiAJCTQ2QzM5MjI5MjMxNkVDNEQw
MDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkMzOTIyODIzMTZFQzREMDA4RUVEOUIgLyogV2Vi
UGFnZVByb3h5SWRlbnRpZmllci5oICovOyB9OwogCQk0NkM1QjdDRTI3QUFEREQzMDAwQzVCNDcg
LyogUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzVCN0NEMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1v
dGVXb3JrZXJGcmFtZUxvYWRlckNsaWVudC5oICovOyB9OwogCQk0NkM1QjdDRjI3QUFEREQ2MDAw
QzVCNDcgLyogUmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzVCN0NCMjdBQUREQkUwMDBDNUI0NyAv
KiBSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92aWRlci5oICovOyB9OworCQk0NkM5MTZBQTI3OTlE
MEEyMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM5MTZBOTI3OTlEMDlEMDAxQTRFN0MgLyog
V2ViU2hhcmVkV29ya2VyU2VydmVyLmggKi87IH07CiAJCTQ2Q0UzQjExMjNEOEM4NDkwMDE2QTk2
QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Q0UzQjEwMjNEOEM4M0QwMDE2QTk2QSAvKiBXZWJCYWNr
Rm9yd2FyZExpc3RDb3VudHMuaCAqLzsgfTsKKwkJNDZENDhGQ0UyNzk5RDdFMTAwN0QyMDE0IC8q
IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RDQ4RkNEMjc5OUQ3REUwMDdEMjAx
NCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi87IH07CiAJ
CTQ2REYwNjNDMUYzOTA1RjgwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REYwNjNB
MUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCAqLzsgfTsK
IAkJNDZFRTI4NDkyNjlFMDRBQzAwREQ0OEFCIC8qIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3Ry
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFRTI4
NDgyNjlFMDQ5QjAwREQ0OEFCIC8qIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oICovOyB9
OwogCQk0NkVFMjg0RDI2OUUwNTI1MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxS
ZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDZFRTI4NEMyNjlFMDUxNzAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0
cnkuaCAqLzsgfTsKKwkJNDZFRTNFOEIyNzYzRkQyRjAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2ODM4NjY3Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2RjM4RThDMjQxNkU2NzMwMDU5Mzc1QSAvKiBSdW5u
aW5nQm9hcmRTZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDZGMzhFOEIyNDE2RTY2RDAwNTkzNzVBIC8qIFJ1bm5pbmdCb2FyZFNlcnZp
Y2VzU1BJLmggKi87IH07CiAJCTQ2RjlCMjYzMjM1MjZFRjMwMDZGRTVGQSAvKiBXZWJCYWNrRm9y
d2FyZENhY2hlRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2RjlCMjYyMjM1MjZFRDAwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50
cnkuaCAqLzsgfTsKIAkJNDkzMTAyQkQyNjgzRjNEMDAwMkJCODg1IC8qIEFwcFByaXZhY3lSZXBv
cnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5MzEw
MkJDMjY4M0YzQTUwMDJCQjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggKi87IH07CkBAIC0xMjc2
LDYgKzEyODIsNyBAQAogCQk2QkU5NjlDMTFFNTRENDUyMDA4Qjc0ODMgLyogY29yZVByZWRpY3Rp
b25fbW9kZWwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZCRTk2OUMwMUU1NEQ0NTIwMDhCNzQ4MyAvKiBjb3JlUHJlZGljdGlvbl9tb2RlbCAqLzsgfTsK
IAkJNkJFOTY5Q0IxRTU0RDRDRjAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFz
c2lmaWVyQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZCRTk2OUM5MUU1NEQ0Q0YwMDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xh
c3NpZmllckNvY29hLmggKi87IH07CiAJCTZCRTk2OUNEMUU1NEUwNTQwMDhCNzQ4MyAvKiBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNkJFOTY5Q0MxRTU0RTA1NDAwOEI3NDgzIC8qIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmggKi87IH07CisJCTZDQUVDQjY2Mjc0NjVBRTQwMEFC
NzhEMCAvKiBVbmlmaWVkU291cmNlMTE2LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZDQUVDQjVFMjc0NjVBRTMwMEFCNzhEMCAvKiBVbmlmaWVkU291
cmNlMTE2LmNwcCAqLzsgfTsKIAkJNkVFODQ5QzgxMzY4RDkzOTAwMzhENDgxIC8qIFdLSW5zcGVj
dG9yUHJpdmF0ZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNkVFODQ5QzYxMzY4RDkyRDAwMzhENDgxIC8qIFdLSW5zcGVjdG9yUHJpdmF0ZU1hYy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcxMTcy
NUE5MjI4RDU2NDMwMDAxODUxNCAvKiBXZWJzaXRlTGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3Vj
aFBvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzExNzI1QTgyMjhENTYzQTAwMDE4NTE0IC8qIFdlYnNpdGVMZWdhY3lPdmVyZmxvd1Njcm9sbGlu
Z1RvdWNoUG9saWN5LmggKi87IH07CiAJCTcxMzRBM0RBMjYwM0I5MjUwMDYyNEJEMyAvKiBXS01v
ZGVsSW50ZXJhY3Rpb25HZXN0dXJlUmVjb2duaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzEzNEEzRDkyNjAzQjgwRTAwNjI0QkQzIC8qIFdLTW9k
ZWxJbnRlcmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmggKi87IH07CkBAIC0xMzUzLDYgKzEzNjAs
NyBAQAogCQk3QzlEMTUzNzE4NDU4NERBMDA5RDM5MTggLyogV0tCcm93c2luZ0NvbnRleHRHcm91
cEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QzlEMTUzNjE4NDU4NERBMDA5RDM5MTggLyogV0tCcm93c2luZ0NvbnRleHRHcm91cEludGVy
bmFsLmggKi87IH07CiAJCTdDQTI1NEVCMTgyOTkzQ0UwMEZDOEE0MSAvKiBXS0Jyb3dzaW5nQ29u
dGV4dFBvbGljeURlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3Q0EyNTRFQTE4Mjk5M0NFMDBGQzhBNDEgLyogV0tCcm93c2luZ0NvbnRleHRQ
b2xpY3lEZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTdDQTM3OTNFMUFDMzc4QjMwMDc5REMzNyAvKiBfV0tVc2VyQ29udGVudEV4dGVu
c2lvblN0b3JlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0NBMzc5M0QxQUMzNzhCMzAwNzlEQzM3IC8qIF9XS1VzZXJDb250ZW50RXh0ZW5z
aW9uU3RvcmVQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJN0NBRUNCNjYyNzQ2NUFFNDAwQUI3OEQwIC8qIFVuaWZpZWRTb3VyY2UxMTcu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NBRUNC
NUUyNzQ2NUFFMzAwQUI3OEQwIC8qIFVuaWZpZWRTb3VyY2UxMTcuY3BwICovOyB9OwogCQk3Q0Ix
MDBGMTFGQTM4NThBMDAxNzI5RUUgLyogV2ViUHJlZmVyZW5jZXNLZXlzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQjEwMEVFMUZBMkQ3NEEwMDE3
MjlFRSAvKiBXZWJQcmVmZXJlbmNlc0tleXMuY3BwICovOyB9OwogCQk3Q0IxMDBGMjFGQTM4NThF
MDAxNzI5RUUgLyogV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NERTczQTMxRjlEQUI2NTAwMzkwMzEyIC8q
IFdlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaCAqLzsgfTsKIAkJN0NCMTAwRjMxRkEzODU4RTAw
MTcyOUVFIC8qIFdlYlByZWZlcmVuY2VzS2V5cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0NCMTAwRUYxRkEyRDc0QjAwMTcyOUVFIC8qIFdlYlByZWZl
cmVuY2VzS2V5cy5oICovOyB9OwpAQCAtNDIyMiw2ICs0MjMwLDkgQEAKIAkJNDYwODg5RkYyNjFG
QThBOTAwRTI1MDBEIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVy
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBGNDg4RDFGOTk2RjZDMDBDRjRC
ODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNDYwRjQ4OEUxRjk5NkY2QzAwQ0Y0Qjg3
IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdl
cy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJ
NDYxRTFCRUMyNzlBMDEwRTAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0NjFFMUJFRjI3OUEwMTBGMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0NjFFMUJGMDI3OUEwMTBGMDA2QUY1M0IgLyogV2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYyMTA3RDcxRjM4REJEMzAwREQ3
ODEwIC8qIFBpbmdMb2FkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFBpbmdMb2FkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzMjM2ODMyMzE0
ODFFRjAwQTQ4RkE3IC8qIFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2MzIzNjg0MjMxNDgyNUMwMEE0OEZBNyAvKiBXZWJSZW1vdGVPYmplY3RSZWdpc3RyeS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJSZW1vdGVPYmplY3RSZWdpc3RyeS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MjQ5LDggKzQyNjAsMTUgQEAKIAkJNDY4MDlBN0IyM0Q5
MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYkNvb2tpZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDY4MzU2OUEyMUU4MUNDNzAwNkUyN0EzIC8qIFByb3Zpc2lvbmFsUGFnZVByb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb3Zpc2lvbmFsUGFnZVByb3h5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM1NjlCMjFFODFDQzcwMDZFMjdB
MyAvKiBQcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQcm92aXNpb25hbFBhZ2VQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ2ODM4NjY3Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4Mzg2NjgyNzYzRkFCMTAw
Q0Y5MTgyIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2ODlCOTBGMjc1NkQxNDMwMDA3QzY1MSAvKiBSZW1vdGVXZWJM
b2NrUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODlCOTEwMjc1NkQxNDMwMDA3QzY1MSAvKiBS
ZW1vdGVXZWJMb2NrUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlV2ViTG9j
a1JlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQ0IyNzYz
RjgzNDAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMu
aW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQ0MyNzYzRjgzNTAwNEI2MTBFIC8qIFdl
YlNoYXJlZFdvcmtlclByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdv
cmtlclByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQ0Qy
NzYzRjgzNTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RDRTI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDY5NDNEQ0YyNzYzRjgzNTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2OURFODAyMjczRUNDNUQwMDkzMDI3NiAvKiBQcm9jZXNzTGF1bmNoZXJD
b2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByb2Nlc3NM
YXVuY2hlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkEyQjYwNjFF
NTY3NUEyMDBDM0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhY2tncm91bmRQcm9jZXNz
UmVzcG9uc2l2ZW5lc3NUaW1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
QTJCNjA3MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNz
VGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFja2dyb3VuZFByb2Nl
c3NSZXNwb25zaXZlbmVzc1RpbWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00
MjY5LDcgKzQyODcsMTEgQEAKIAkJNDZDNUI3Q0IyN0FBRERCRTAwMEM1QjQ3IC8qIFJlbW90ZVdv
cmtlckxpYldlYlJUQ1Byb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVdvcmtlckxpYldl
YlJUQ1Byb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzVCN0NDMjdB
QUREQkUwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJGcmFtZUxvYWRlckNsaWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW1vdGVXb3JrZXJGcmFtZUxvYWRlckNsaWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzVCN0NEMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1vdGVX
b3JrZXJGcmFtZUxvYWRlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVXb3JrZXJGcmFt
ZUxvYWRlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkM5MTZBODI3
OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQ2QzkxNkE5Mjc5OUQwOUQwMDFBNEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2Q0UzQjEwMjNEOEM4M0QwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2Fy
ZExpc3RDb3VudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0Zv
cndhcmRMaXN0Q291bnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2RDQ4RkND
Mjc5OUQ3REQwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkQ0OEZDRDI3
OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2REYwNjM5MUYzOTA1RTUwMDE5
ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDZFOTc2MEEyNzU3RjZDOTAwQUNERDM3IC8qIFdlYkJyb2FkY2FzdENoYW5uZWxS
ZWdpc3RyeS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJCcm9hZGNhc3RD
aGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC00Mjc5LDYgKzQzMDEsNyBAQAogCQk0NkVFMjg0QTI2OUUwNTE3MDBERDQ4QUIgLyogTmV0d29y
a0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkVFMjg0QjI2OUUwNTE3MDBERDQ4QUIgLyogTmV0d29y
a0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZFRTI4NEMyNjlFMDUxNzAwREQ0OEFCIC8qIE5ldHdvcmtC
cm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0NkVFM0U4QTI3NjNGRDJBMDA2MEM3MEYgLyogV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkYzOEU4
QjI0MTZFNjZEMDA1OTM3NUEgLyogUnVubmluZ0JvYXJkU2VydmljZXNTUEkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVubmluZ0JvYXJkU2VydmljZXNTUEkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZGOUIyNjIyMzUyNkVEMDAwNkZFNUZBIC8qIFdlYkJh
Y2tGb3J3YXJkQ2FjaGVFbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDkzMTAyQkMyNjgzRjNBNTAwMkJCODg1IC8qIEFwcFByaXZhY3lSZXBvcnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQXBwUHJpdmFjeVJlcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NDk5Nyw2ICs1MDIwLDcgQEAKIAkJNkJFOTY5QzgxRTU0RDRDRjAwOEI3NDgzIC8qIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCRTk2OUM5MUU1NEQ0Q0YwMDhCNzQ4MyAv
KiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2Eu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkJFOTY5Q0MxRTU0RTA1NDAwOEI3NDgz
IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDQUVDQjVFMjc0NjVBRTMwMEFCNzhEMCAvKiBVbmlm
aWVkU291cmNlMTE2LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UxMTYuY3Bw
OyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzL1dlYktpdC91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNv
dXJjZTExNi5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk2RDhB
OTFBNTExRjBFRkQxMDBERDAxRkUgLyogY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBuYW1lID0gY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW47IHBhdGggPSBXZWJQ
cm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2RUU4NDlDNjEzNjhEOTJEMDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2YXRlTWFj
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLSW5zcGVjdG9yUHJpdmF0ZU1h
Yy5oOyBwYXRoID0gbWFjL1dLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3MTE3MjVBODIyOEQ1NjNBMDAwMTg1MTQgLyogV2Vic2l0ZUxlZ2FjeU92
ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2Vic2l0ZUxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3kuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUxNjEsNiArNTE4NSw3IEBACiAJCTdDOUQxNTM2MTg0
NTg0REEwMDlEMzkxOCAvKiBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCcm93c2luZ0NvbnRleHRHcm91cEludGVybmFs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQTI1NEVBMTgyOTkzQ0UwMEZDOEE0
MSAvKiBXS0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLQnJvd3NpbmdDb250ZXh0UG9saWN5RGVsZWdhdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NBMzc5M0QxQUMzNzhCMzAwNzlEQzM3IC8qIF9XS1Vz
ZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IF9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVQcml2YXRlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDQUVDQjVFMjc0NjVBRTMwMEFCNzhEMCAvKiBVbmlmaWVk
U291cmNlMTE3LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UxMTcuY3BwOyBw
YXRoID0gIkRlcml2ZWRTb3VyY2VzL1dlYktpdC91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJj
ZTExNy5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk3Q0IxMDBF
RTFGQTJENzRBMDAxNzI5RUUgLyogV2ViUHJlZmVyZW5jZXNLZXlzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFdlYlByZWZlcmVuY2VzS2V5cy5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJL
aXQvV2ViUHJlZmVyZW5jZXNLZXlzLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKIAkJN0NCMTAwRUYxRkEyRDc0QjAwMTcyOUVFIC8qIFdlYlByZWZlcmVuY2VzS2V5cy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXZWJQcmVmZXJlbmNlc0tleXMuaDsgcGF0aCA9IERlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9XZWJQcmVmZXJlbmNlc0tleXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKIAkJN0NCMTAwRjAxRkEyRDc4NDAwMTcyOUVFIC8qIFdlYlByZWZlcmVuY2Vz
U3RvcmVEZWZhdWx0c01hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJQcmVmZXJlbmNlc1N0
b3JlRGVmYXVsdHNNYXAuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlByZWZl
cmVuY2VzU3RvcmVEZWZhdWx0c01hcC5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CkBAIC05Mjg2LDYgKzkzMTEsMjAgQEAKIAkJCXBhdGggPSBjb2NvYTsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTQ2ODM4NjY1Mjc2M0ZBMUIwMENGOTE4MiAvKiBT
aGFyZWRXb3JrZXIgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAor
CQkJCTQ2RDQ4RkNDMjc5OUQ3REQwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk0NkQ0OEZDRDI3OTlEN0RFMDA3RDIwMTQgLyog
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oICovLAorCQkJCTQ2Qzkx
NkE4Mjc5OUQwOUQwMDFBNEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwICovLAorCQkJ
CTQ2QzkxNkE5Mjc5OUQwOUQwMDFBNEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCAqLywK
KwkJCQk0NkVFM0U4QTI3NjNGRDJBMDA2MEM3MEYgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKKwkJCQk0NjgzODY2NzI3NjNGQUIxMDBDRjkxODIgLyog
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oICovLAorCQkJCTQ2ODM4NjY4Mjc2M0ZB
QjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLywKKwkJ
CSk7CisJCQlwYXRoID0gU2hhcmVkV29ya2VyOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKIAkJNDY5REU4MDEyNzNFQ0M1RDAwOTMwMjc2IC8qIGNvY29hICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTkzMzcsNiArOTM3Niw3IEBACiAJCTUx
MENDN0RBMTYxMzhFMDEwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2VzcyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDY4Mzg2NjUyNzYzRkExQjAwQ0Y5MTgy
IC8qIFNoYXJlZFdvcmtlciAqLywKIAkJCQlFNDg5RDI4MjFBMEEyQkU4MDA3OEMwNkEgLyogY2Fj
aGUgKi8sCiAJCQkJN0E4NDNBMUQyMUU0MUZEOTAwREVGNjYzIC8qIENsYXNzaWZpZXIgKi8sCiAJ
CQkJN0VDNEYwRjgxOEU0QTkyMjAwODA1NkFGIC8qIGNvY29hICovLApAQCAtOTQ0OCw2ICs5NDg4
LDE0IEBACiAJCQkJNDZDNUI3Q0MyN0FBRERCRTAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckZyYW1l
TG9hZGVyQ2xpZW50LmNwcCAqLywKIAkJCQk0NkM1QjdDRDI3QUFEREJFMDAwQzVCNDcgLyogUmVt
b3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuaCAqLywKIAkJCQk0NkM1QjdDQjI3QUFEREJFMDAw
QzVCNDcgLyogUmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXIuaCAqLywKKwkJCQk0NjFFMUJF
QzI3OUEwMTBFMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmNwcCAqLywKKwkJCQk0NjFFMUJFRjI3OUEwMTBGMDA2QUY1M0IgLyogV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggKi8sCisJCQkJNDYxRTFCRjAyNzlBMDEwRjAw
NkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbiAqLywKKwkJCQk0Njk0M0RDRTI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbi5jcHAgKi8sCisJCQkJNDY5NDNEQ0QyNzYzRjgzNTAwNEI2MTBFIC8q
IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAqLywKKwkJCQk0Njk0M0RDQjI3NjNG
ODM0MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5p
biAqLywKKwkJCQk0Njk0M0RDQzI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyUHJv
dmlkZXIuY3BwICovLAorCQkJCTQ2OTQzRENGMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRX
b3JrZXJQcm92aWRlci5oICovLAogCQkJCTQxMzFGM0UwMUY5ODcxMkMwMDU5OTk1QSAvKiBXZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCAqLywKIAkJCQk0MTlBQ0Y5QjFGOTgxRDI2
MDA5RjFBODMgLyogV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oICovLAogCQkJCTUx
QkVCNjI5MUYzQTVBQ0QwMDUwMjlCOSAvKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwICov
LApAQCAtMTI3NzMsNiArMTI4MjEsNyBAQAogCQkJCTQ5RkJGMDAwMjM5QjFGNzUwMEJEMDMyRiAv
KiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDlGQkYwMDkyMzlGMDhFMDAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NU
aGlyZFBhcnR5SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3NjMxMUZEMUEzRkI1Rjcw
MDVBMkU1MSAvKiBfV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNDYxRTFCRjIyNzlBMDExNjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc2MzExRkUxQTNGQjYwMDAw
NUEyRTUxIC8qIF9XS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBMDAyRDQ0MTk2QjMzODkwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDAyRDQzMTk2QjMzNzAwMEI5QUQ0NCAvKiBfV0tTZXNz
aW9uU3RhdGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjkzNyw2ICsxMjk4Niw3IEBA
CiAJCQkJRTE3MDg3NkMxNkQ2Q0E2OTAwRjk5MjI2IC8qIEJsb2JSZWdpc3RyeVByb3h5LmggaW4g
SGVhZGVycyAqLywKIAkJCQk0RjYwMTQzMjE1NUM1QUEyMDAxRkJERTAgLyogQmxvY2tpbmdSZXNw
b25zZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NzA1MTExQkU0MTBFNjAwODc0QUYxIC8q
IEJsb2NrU1BJLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkM5MTZBQTI3OTlEMEEyMDAxQTRFN0Mg
LyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzMwNjVGQTEy
NTkzNDRFMDBFNzEyNzggLyogQ2FjaGVNb2RlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE4OTdF
RDgxRjQxNUQ4QTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDFGQUJEMkExRjRERTAwMTAwNkE2Qzk3IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
LmggaW4gSGVhZGVycyAqLywKQEAgLTEzNDA0LDYgKzEzNDU0LDcgQEAKIAkJCQkxQUMxMzM2ODE4
NTY1QjU3MDBGM0VDMDUgLyogVXNlckRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENDkxQjA4
MUU3MEQwNUYwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0Q0OTFCMEUxRTczMkU0RDAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2RUUzRThCMjc2M0ZEMkYwMDYwQzcw
RiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDRDQ5MUIxMzFFNzM0ODIxMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q0OTFCMTgxRTczNTI1NTAwMDA5MDY2IC8qIFVzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcy
OTdGOUYxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTEzNDkwLDYgKzEzNTQxLDcgQEAKIAkJCQkzMzA5MzQ0QTEzMTVC
OTIyMDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMUREN0IyMTE0REMzOTYwMDVBREFGMyAvKiBXZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkY1ODlCMTJBODgzODgwMDYyOTUzMCAvKiBXZWJD
cmVkZW50aWFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk0Njk0M0REMDI3NjNGODNBMDA0QjYxMEUg
LyogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQTgzRjZE
MUE1QjYzRkYwMDAyNkVDNiAvKiBXZWJEYXRhYmFzZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFNTJDRjU1MjIwQTM1QzNBMDBEQURBMjcgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlj
a2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNTY4QjkxRjIwQTNBQjJGMDBFM0M4NTYgLyogV2Vi
RGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duLmggaW4gSGVhZGVycyAqLywKQEAgLTEzNTI0LDYg
KzEzNTc2LDcgQEAKIAkJCQlCQzAzMkQ3RjEwRjQzNzhEMDA1OEMxNUEgLyogV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTFGMkNCMTIxQjY3QUQwMEVCRjdFOCAv
KiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0I5RjZB
MDExMjNBODRCMDBBMTM3RTAgLyogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0Njk0M0REMTI3NjNGODNGMDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5QjM4QTExMEY1MzhCRTAw
NDQzQTE1IC8qIFdlYkZyYW1lUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMUFCMUQ1
NTVBQTAwMEREN0M2OCAvKiBXZWJHYW1lcGFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVCRTE3
OTFENTNGRThGMDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywK
QEAgLTEzNjUwLDYgKzEzNzAzLDcgQEAKIAkJCQkxQTQ4MzJENzFBOUNERjk2MDA4QjRERkUgLyog
V2Vic2l0ZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDgzMkQxMUE5QkRDMkYwMDhCNERG
RSAvKiBXZWJzaXRlRGF0YVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1M0MyQUExQTMy
NTczMDAwNEU4QzcwIC8qIFdlYnNpdGVEYXRhU3RvcmUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2
RDQ4RkNFMjc5OUQ3RTEwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTFGN0Q0MTFFQjFCQ0Y1MDBFNDdCODMg
LyogV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTcxMTcy
NUE5MjI4RDU2NDMwMDAxODUxNCAvKiBXZWJzaXRlTGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3Vj
aFBvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjRDQjA5RTUyMjVENUEwOTAwODkxNDg3IC8q
IFdlYnNpdGVNZWRpYVNvdXJjZVBvbGljeS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmNwcAppbmRleCA4ZDNiNTdiZDE4ZGMuLmJiMzU0N2Y0NmFkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwCkBAIC01Nyw2ICs1NywxMCBAQAogI2luY2x1ZGUgIldlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgor
I2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIgorI2lu
Y2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
IldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YlNvY2tldENoYW5uZWwuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJTb2NrZXRTdHJlYW0uaCIKQEAgLTE3Myw2ICsxNzcsMTYgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgSVAKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgorICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIHNo
YXJlZFdvcmtlckNvbm5lY3Rpb24oKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIEFTU0VSVChTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKTsKKyAgICAgICAg
aWYgKGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiA9IFNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCisgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24mPigqY29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KIAogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQog
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGF5
bWVudENvb3JkaW5hdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKQEAgLTMwNyw2ICszMjEs
MTMgQEAgV2ViU1dDbGllbnRDb25uZWN0aW9uJiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OnNl
cnZpY2VXb3JrZXJDb25uZWN0aW9uKCkKIH0KICNlbmRpZgogCitXZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uJiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OnNoYXJlZFdvcmtlckNvbm5l
Y3Rpb24oKQoreworICAgIGlmICghbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uKQorICAgICAgICBt
X3NoYXJlZFdvcmtlckNvbm5lY3Rpb24gPSBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
OjpjcmVhdGUoKTsKKyAgICByZXR1cm4gKm1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbjsKK30KKwog
dm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246Om1lc3NhZ2VzQXZhaWxhYmxlRm9yUG9ydChj
b25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIG1lc3NhZ2VQb3J0SWRlbnRpZmll
cikKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5tZXNzYWdlc0F2YWlsYWJsZUZvclBv
cnQobWVzc2FnZVBvcnRJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggZDYy
ZGZlNGRmNWFhLi41ZjA1MDQwOWFjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC00OCw2
ICs0OCw3IEBAIGVudW0gY2xhc3MgSFRUUENvb2tpZUFjY2VwdFBvbGljeSA6IHVpbnQ4X3Q7CiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOworY2xh
c3MgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjsKIGNsYXNzIFdlYlNXQ2xpZW50Q29u
bmVjdGlvbjsKIAogY2xhc3MgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIDogcHVibGljIFJlZkNv
dW50ZWQ8TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uPiwgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQg
ewpAQCAtNzAsNiArNzEsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
ICAgIFdlYlNXQ2xpZW50Q29ubmVjdGlvbiYgc2VydmljZVdvcmtlckNvbm5lY3Rpb24oKTsKICNl
bmRpZgorICAgIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24mIHNoYXJlZFdvcmtlckNv
bm5lY3Rpb24oKTsKIAogI2lmIEhBVkUoQVVESVRfVE9LRU4pCiAgICAgdm9pZCBzZXROZXR3b3Jr
UHJvY2Vzc0F1ZGl0VG9rZW4oc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2Vu
KSB7IG1fbmV0d29ya1Byb2Nlc3NBdWRpdFRva2VuID0gYXVkaXRUb2tlbjsgfQpAQCAtMTIzLDYg
KzEyNSw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIFJlZlB0
cjxXZWJTV0NsaWVudENvbm5lY3Rpb24+IG1fc3dDb25uZWN0aW9uOwogI2VuZGlmCisgICAgUmVm
UHRyPFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24+IG1fc2hhcmVkV29ya2VyQ29ubmVj
dGlvbjsKICAgICBXZWJDb3JlOjpIVFRQQ29va2llQWNjZXB0UG9saWN5IG1fY29va2llQWNjZXB0
UG9saWN5OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jOTAw
MzZlMGM1NTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0wLDAg
KzEsMTI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAiTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZVdl
YkxvY2tSZWdpc3RyeS5oIgorI2luY2x1ZGUgIlJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50
LmgiCisjaW5jbHVkZSAiUmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXIuaCIKKyNpbmNsdWRl
ICJXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJXZWJDYWNoZVN0b3Jh
Z2VQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5o
IgorI2luY2x1ZGUgIldlYkRhdGFiYXNlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgi
CisjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNLZXlzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5o
IgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNz
YWdlcy5oIgorI2luY2x1ZGUgIldlYlNvY2tldFByb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9FbXB0eUNsaWVudHMuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VDb25maWd1
cmF0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1VzZXJBZ2VudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyRmV0Y2hSZXN1
bHQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJl
ZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBhZ2VHcm91cElkZW50aWZp
ZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYg
cHJlZmVyZW5jZXNTdG9yZSwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmIGluaXRp
YWxpemF0aW9uRGF0YSkKKyAgICA6IG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV1RGTW92
ZShjb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcykpCisgICAgLCBtX3JlZ2lzdHJhYmxlRG9tYWlu
KFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pKQorICAgICwgbV9wYWdlR3JvdXBJRChwYWdlR3Jv
dXBJRCkKKyAgICAsIG1fd2ViUGFnZVByb3h5SUQod2ViUGFnZVByb3h5SUQpCisgICAgLCBtX3Bh
Z2VJRChwYWdlSUQpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgLCBtX3VzZXJBZ2VudChXZWJD
b3JlOjpzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoeyB9KSkKKyNlbHNlCisg
ICAgLCBtX3VzZXJBZ2VudChzdGFuZGFyZFVzZXJBZ2VudCgpKQorI2VuZGlmCisgICAgLCBtX3Vz
ZXJDb250ZW50Q29udHJvbGxlcihXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmdldE9yQ3JlYXRl
KGluaXRpYWxpemF0aW9uRGF0YS51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKSkKK3sK
KyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIG1fdXNlckNvbnRlbnRDb250cm9s
bGVyLT5hZGRDb250ZW50UnVsZUxpc3RzKFdURk1vdmUoaW5pdGlhbGl6YXRpb25EYXRhLmNvbnRl
bnRSdWxlTGlzdHMpKTsKKyNlbmRpZgorCisgICAgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShwcmVm
ZXJlbmNlc1N0b3JlKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5kaXNhYmxlVGVybWlu
YXRpb24oKTsKK30KKworV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp+
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKCkgPSBkZWZhdWx0OworCit2
b2lkIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZXN0YWJsaXNoQ29u
bmVjdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0YWJsaXNoU2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb24geyBtX3dlYlBhZ2VQcm94eUlELCBtX3JlZ2lzdHJhYmxlRG9t
YWluIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCAwKTsKK30KKwordm9pZCBXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9i
amVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgbV9jb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6UG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0IHsgc2hhcmVkV29ya2Vy
SWRlbnRpZmllciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJj
ZVVSTCB9LCAwKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OnVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYg
c3RvcmUpCit7CisgICAgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXNHZW5lcmF0ZWQoc3RvcmUp
OworICAgIG1fcHJlZmVyZW5jZXNTdG9yZSA9IHN0b3JlOworfQorCit2b2lkIFdlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bGF1bmNoU2hhcmVkV29ya2VyKFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBz
aGFyZWRXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiB1cmwsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMm
JiB3b3JrZXJPcHRpb25zLCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmIHdvcmtlckZldGNo
UmVzdWx0KQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bGF1bmNoU2hhcmVkV29ya2VyOiBzaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKKyAgICBhdXRvIHBhZ2VDb25maWd1cmF0aW9uID0gV2ViQ29yZTo6cGFnZUNvbmZpZ3VyYXRp
b25XaXRoRW1wdHlDbGllbnRzKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNlc3Npb25JRCgpKTsK
KworICAgIHBhZ2VDb25maWd1cmF0aW9uLmRhdGFiYXNlUHJvdmlkZXIgPSBXZWJEYXRhYmFzZVBy
b3ZpZGVyOjpnZXRPckNyZWF0ZShtX3BhZ2VHcm91cElEKTsKKyAgICBwYWdlQ29uZmlndXJhdGlv
bi5zb2NrZXRQcm92aWRlciA9IFdlYlNvY2tldFByb3ZpZGVyOjpjcmVhdGUobV93ZWJQYWdlUHJv
eHlJRCk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uYnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5ID0g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5KCk7CisgICAg
cGFnZUNvbmZpZ3VyYXRpb24ud2ViTG9ja1JlZ2lzdHJ5ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkud2ViTG9ja1JlZ2lzdHJ5KCk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRQ
cm92aWRlciA9IG1fdXNlckNvbnRlbnRDb250cm9sbGVyOworI2lmIEVOQUJMRShXRUJfUlRDKQor
ICAgIHBhZ2VDb25maWd1cmF0aW9uLmxpYldlYlJUQ1Byb3ZpZGVyID0gbWFrZVVuaXF1ZVJlZjxS
ZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92aWRlcj4oKTsKKyNlbmRpZgorCisgICAgcGFnZUNvbmZp
Z3VyYXRpb24ubG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lID0gbWFrZVVuaXF1ZVJlZjxSZW1vdGVX
b3JrZXJGcmFtZUxvYWRlckNsaWVudD4obV93ZWJQYWdlUHJveHlJRCwgbV9wYWdlSUQsIFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgbV91c2VyQWdlbnQpOworCisgICAgYXV0
byBwYWdlID0gbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1
cmF0aW9uKSk7CisgICAgaWYgKG1fcHJlZmVyZW5jZXNTdG9yZSkgeworICAgICAgICBXZWJQYWdl
Ojp1cGRhdGVTZXR0aW5nc0dlbmVyYXRlZCgqbV9wcmVmZXJlbmNlc1N0b3JlLCBwYWdlLT5zZXR0
aW5ncygpKTsKKyAgICAgICAgcGFnZS0+c2V0dGluZ3MoKS5zZXRTdG9yYWdlQmxvY2tpbmdQb2xp
Y3koc3RhdGljX2Nhc3Q8V2ViQ29yZTo6U3RvcmFnZUJsb2NraW5nUG9saWN5PihtX3ByZWZlcmVu
Y2VzU3RvcmUtPmdldFVJbnQzMlZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpzdG9yYWdl
QmxvY2tpbmdQb2xpY3lLZXkoKSkpKTsKKyAgICB9CisgICAgV2ViQ29yZTo6U2hhcmVkV29ya2Vy
VGhyZWFkUHJveHk6OnNldHVwUGFnZUZvclNoYXJlZFdvcmtlcihwYWdlLmdldCgpLCB1cmwsIG9y
aWdpbiwgd29ya2VyRmV0Y2hSZXN1bHQpOworICAgIGF1dG8gc2hhcmVkV29ya2VyVGhyZWFkUHJv
eHkgPSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlKFdURk1vdmUocGFn
ZSksIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIG9yaWdpbiwgdXJsLCBXVEZNb3ZlKHdvcmtlckZl
dGNoUmVzdWx0KSwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSwgbV91c2VyQWdlbnQsIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFnZVByb3ZpZGVyKCkpOworCisgICAgV2ViQ29yZTo6
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnJlZ2lzdGVyU2hhcmVkV29y
a2VyVGhyZWFkKFdURk1vdmUoc2hhcmVkV29ya2VyVGhyZWFkUHJveHkpKTsKK30KKwordm9pZCBX
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmNsb3NlKCkKK3sKKyAgICBS
RUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OmNsb3NlOiBTaGFyZWQgd29ya2VyIHByb2Nlc3MgaXMgcmVxdWVzdGVkIHRvIHN0
b3AgYWxsIHNoYXJlZCB3b3JrZXJzIik7CisgICAgc2V0QXNDbG9zZWQoKTsKKworICAgIG1fY29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpDbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uIHsgfSwgMCk7
CisgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnN0
b3BBbGxTaGFyZWRXb3JrZXJzKCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5hYmxl
VGVybWluYXRpb24oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uYWUyMzIzNjU2MjhhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIklkZW50aWZpZXJUeXBlcy5o
IgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVE
b21haW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJJZGVudGlmaWVyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK3N0cnVjdCBDbGllbnRPcmlnaW47CitzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1
bHQ7CitzdHJ1Y3QgV29ya2VyT3B0aW9uczsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjsKK3N0cnVjdCBTZXJ2aWNlV29ya2VySW5pdGlh
bGl6YXRpb25EYXRhOworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6
OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAg
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rp
b24+JiYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBhZ2VHcm91cElkZW50aWZpZXIs
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlJiwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmKTsK
KyAgICB+V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKCk7CisKKyAgICB2
b2lkIGVzdGFibGlzaENvbm5lY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5h
bDsKKyAgICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSBmaW5hbDsKKwor
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
JikgZmluYWw7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDIE1lc3NhZ2VzLgorICAgIHZvaWQgbGF1
bmNoU2hhcmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBXZWJDb3JlOjpTaGFyZWRX
b3JrZXJJZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmLCBXZWJDb3Jl
OjpXb3JrZXJGZXRjaFJlc3VsdCYmKTsKKyAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzU3RvcmUo
Y29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOworICAgIHZvaWQgc2V0VXNlckFnZW50KFN0cmlu
ZyYmIHVzZXJBZ2VudCkgeyBtX3VzZXJBZ2VudCA9IFdURk1vdmUodXNlckFnZW50KTsgfQorICAg
IHZvaWQgY2xvc2UoKTsKKworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3M7CisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3Ry
YWJsZURvbWFpbjsKKyAgICBQYWdlR3JvdXBJZGVudGlmaWVyIG1fcGFnZUdyb3VwSUQ7CisgICAg
V2ViUGFnZVByb3h5SWRlbnRpZmllciBtX3dlYlBhZ2VQcm94eUlEOworICAgIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIG1fcGFnZUlEOworICAgIFN0cmluZyBtX3VzZXJBZ2VudDsKKyAgICBSZWY8
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyPiBtX3VzZXJDb250ZW50Q29udHJvbGxlcjsKKyAgICBz
dGQ6Om9wdGlvbmFsPFdlYlByZWZlcmVuY2VzU3RvcmU+IG1fcHJlZmVyZW5jZXNTdG9yZTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDgyYTRhZGE1M2ZkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzAgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisj
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
KyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gV2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgeworICAgIExhdW5jaFNoYXJl
ZFdvcmtlcihzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgV2ViQ29yZTo6U2hh
cmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBVUkwgdXJsLCBzdHJ1
Y3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyB3b3JrZXJPcHRpb25zLCBzdHJ1Y3QgV2ViQ29yZTo6
V29ya2VyRmV0Y2hSZXN1bHQgd29ya2VyRmV0Y2hSZXN1bHQpCisgICAgUG9zdENvbm5lY3RFdmVu
dChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIs
IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQgcG9ydCwgU3RyaW5nIHNvdXJjZU9yaWdp
bikKKyAgICBUZXJtaW5hdGVTaGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRp
ZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyKQorICAgIFVwZGF0ZVByZWZlcmVuY2VzU3RvcmUo
c3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSkKKyAgICBTZXRVc2VyQWdl
bnQoU3RyaW5nIHVzZXJBZ2VudCkKKyAgICBDbG9zZSgpCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uZDdkOTk0ZGUxZjc3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCAr
MSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisj
aW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vz
cy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1dvcmtlck9wdGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNkZWZpbmUgQ09O
TkVDVElPTl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAi
JXAgLSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb246OiIgZm10LCB0aGlzLCBXZWJDb3JlOjpQcm9jZXNzOjppZGVudGlmaWVy
KCkudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKKworV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbjo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpCit7CisgICAgQ09OTkVD
VElPTl9SRUxFQVNFX0xPRygiV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjoiKTsKK30K
KworV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24oKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coIn5XZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uOiIpOworfQorCitJUEM6OkNvbm5lY3Rpb24qIFdlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uOjpyZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYgb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBXZWJDb3JlOjpUcmFu
c2ZlcnJlZE1lc3NhZ2VQb3J0JiYgcG9ydCwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYg
d29ya2VyT3B0aW9ucykKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJyZXF1ZXN0U2hh
cmVkV29ya2VyOiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMiLCBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6UmVxdWVzdFNo
YXJlZFdvcmtlciB7IG9yaWdpbiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgdXJsLCBX
VEZNb3ZlKHBvcnQpLCB3b3JrZXJPcHRpb25zIH0pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb246OnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KFdlYkNvcmU6
OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
cikKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJzaGFyZWRXb3JrZXJPYmplY3RJc0dv
aW5nQXdheTogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OlNoYXJlZFdvcmtl
ck9iamVjdElzR29pbmdBd2F5IHsgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciB9KTsKK30K
KworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0cKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi5lY2JmNDJmNjc2MmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uLmgKQEAgLTAsMCArMSw1NCBAQAorCisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5j
bHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbi5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYlNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbik7IH0KKyAgICB+V2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbigpOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBXZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uKCk7CisKKyAgICAvLyBXZWJDb3JlOjpTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uLgorICAgIHZvaWQgcmVxdWVzdFNoYXJlZFdvcmtlcihjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LCBjb25zdCBVUkwmLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIGNvbnN0IFdl
YkNvcmU6Oldvcmtlck9wdGlvbnMmKSBmaW5hbDsKKyAgICB2b2lkIHNoYXJlZFdvcmtlck9iamVj
dElzR29pbmdBd2F5KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpIGZpbmFs
OworCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0
IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gMDsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjcyMmFlMWEzMmM5MwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNyBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgor
IyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBXZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uIHsKKyAgICBGZXRjaFNjcmlwdEluQ2xpZW50KFVSTCB1cmwsIFdlYkNv
cmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllciwgc3RydWN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMgd29ya2VyT3B0aW9ucykgLT4gKHN0
cnVjdCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCBmZXRjaFJlc3VsdCkgQXN5bmMKKyAgICBO
b3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciBlcnJvcikKKyAgICBQb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29y
ZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyLCBTdHJpbmcgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgU3RyaW5nIHNvdXJjZVVSTCkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjQ0OTVhNDIyNWU2MAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlclBy
b3ZpZGVyLmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmgiCisKKyNpbmNsdWRlICJO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5j
bHVkZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworV2ViU2hhcmVkV29ya2VyUHJvdmlkZXImIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVy
OjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXZWJTaGFyZWRXb3Jr
ZXJQcm92aWRlcj4gcHJvdmlkZXI7CisgICAgcmV0dXJuIHByb3ZpZGVyOworfQorCitXZWJTaGFy
ZWRXb3JrZXJQcm92aWRlcjo6V2ViU2hhcmVkV29ya2VyUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CisK
K1dlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24qIFdlYlNoYXJlZFdvcmtlclBy
b3ZpZGVyOjpzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCkKK3sKKyAgICByZXR1cm4gJldlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLnNoYXJlZFdv
cmtlckNvbm5lY3Rpb24oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJQcm92aWRl
ci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJv
dmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg2ZTNkMmZl
NzBhMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJQcm92aWRlci5o
PgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOworfQorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2Vi
Q29yZTo6U2hhcmVkV29ya2VyUHJvdmlkZXIgeworcHVibGljOgorICAgIHN0YXRpYyBXZWJTaGFy
ZWRXb3JrZXJQcm92aWRlciYgc2luZ2xldG9uKCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIE5l
dmVyRGVzdHJveWVkPFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyPjsKKyAgICBXZWJTaGFyZWRXb3Jr
ZXJQcm92aWRlcigpOworCisgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
biogc2hhcmVkV29ya2VyQ29ubmVjdGlvbigpIGZpbmFsOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMDJkYTkx
MTQ3ZjhhLi44Yzc0YzdjYmNhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKQEAgLTg0LDYgKzg0LDkgQEAKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJX
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUg
IldlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFtLmgi
CiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycy5oIgpAQCAtMTMzLDYgKzEzNiw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0
eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5k
aWNhdG9yLmg+CiAjaW5jbHVkZSA8cGFsL0xvZ2dpbmcuaD4KICNpbmNsdWRlIDx3dGYvQWxnb3Jp
dGhtcy5oPgpAQCAtNTY5LDYgKzU3Myw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdl
YlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIFNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2V0U2hh
cmVkUHJvdmlkZXIoV2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKSk7CiAjZW5k
aWYKKyAgICBTaGFyZWRXb3JrZXJQcm92aWRlcjo6c2V0U2hhcmVkUHJvdmlkZXIoV2ViU2hhcmVk
V29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
ICAgICBKU0M6Oldhc206OmVuYWJsZUZhc3RNZW1vcnkoKTsKQEAgLTkwMiw3ICs5MDcsNiBAQCB2
b2lkIFdlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSVBDOjpEZWNvZGVyJiBkZQogICAgIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKLSAgICAvLyBGSVhNRTogUmVtb3ZlPwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICBBU1NFUlQoU1dDb250ZXh0TWFuYWdlcjo6c2lu
Z2xldG9uKCkuY29ubmVjdGlvbigpKTsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbiA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkK
QEAgLTkxMSw2ICs5MTUsMTMgQEAgdm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGUKICAgICB9CiAjZW5k
aWYKIAorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpIHsKKyAgICAgICAgQVNTRVJUKFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5n
bGV0b24oKS5jb25uZWN0aW9uKCkpOworICAgICAgICBpZiAoYXV0byogY29udGV4dE1hbmFnZXJD
b25uZWN0aW9uID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5l
Y3Rpb24oKSkKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFdlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbiY+KCpjb250ZXh0TWFuYWdlckNvbm5lY3Rpb24pLmRpZFJlY2VpdmVN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAg
ICAgTE9HX0VSUk9SKCJVbmhhbmRsZWQgd2ViIHByb2Nlc3MgbWVzc2FnZSAnJXMnIChkZXN0aW5h
dGlvbjogJSIgUFJJdTY0ICIgcGlkOiAlZCkiLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkpLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSwgc3RhdGljX2Nhc3Q8aW50PihnZXRDdXJy
ZW50UHJvY2Vzc0lEKCkpKTsKIH0KIApAQCAtMTkxNyw2ICsxOTI4LDE2IEBAIExpYldlYlJUQ05l
dHdvcmsmIFdlYlByb2Nlc3M6OmxpYldlYlJUQ05ldHdvcmsoKQogICAgIHJldHVybiAqbV9saWJX
ZWJSVENOZXR3b3JrOwogfQogCit2b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyIHBh
Z2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRl
bnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdpc3Ry
YWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRp
b25EYXRhJiYgaW5pdGlhbGl6YXRpb25EYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgLy8gV2UgYXJlIGluIHRoZSBTaGFyZWQgV29ya2Vy
IGNvbnRleHQgcHJvY2VzcyBhbmQgdGhlIGNhbGwgYmVsb3cgZXN0YWJsaXNoZXMgb3VyIGNvbm5l
Y3Rpb24gdG8gdGhlIE5ldHdvcmsgUHJvY2VzcworICAgIC8vIGJ5IGNhbGxpbmcgZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlciBuZWVkcyB0
byB1c2UgdGhlIHNhbWUgdW5kZXJseWluZyBJUEM6OkNvbm5lY3Rpb24gYXMgdGhlCisgICAgLy8g
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIGZvciBzeW5jaHJvbml6YXRpb24gcHVycG9zZXMuCisg
ICAgYXV0byYgaXBjQ29ubmVjdGlvbiA9IGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKTsKKyAgICBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9u
KCkuc2V0Q29ubmVjdGlvbihtYWtlVW5pcXVlPFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbj4oaXBjQ29ubmVjdGlvbiwgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHBh
Z2VHcm91cElELCB3ZWJQYWdlUHJveHlJRCwgcGFnZUlELCBzdG9yZSwgV1RGTW92ZShpbml0aWFs
aXphdGlvbkRhdGEpKSk7CisgICAgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRv
bigpLmNvbm5lY3Rpb24oKS0+ZXN0YWJsaXNoQ29ubmVjdGlvbihXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7Cit9CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiB2b2lkIFdlYlByb2Nl
c3M6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MoUGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmll
ciB3ZWJQYWdlUHJveHlJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJl
bmNlc1N0b3JlJiBzdG9yZSwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwg
c3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdv
cmtlclBhZ2VJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYgaW5p
dGlhbGl6YXRpb25EYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBkZDhkNzRm
ZmYyNjkuLjY1Zjc3MzIwMWE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CkBAIC00NjksNiArNDY5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdhbWVwYWREaXNjb25uZWN0
ZWQodW5zaWduZWQgaW5kZXgpOwogI2VuZGlmCiAKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVy
LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFNlcnZp
Y2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxpc2hTZXJ2aWNl
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZp
ZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25z
dCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2Vy
dmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRh
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZGZkMzA2NDU2M2Y5
Li5lNTUyOTZiOTA0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCkBAIC0xMDAsNiArMTAwLDggQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vz
cyBMZWdhY3lSZWNlaXZlciBOb3RSZWZDb3VudGVkIHsKICAgICBHYW1lcGFkRGlzY29ubmVjdGVk
KHVuc2lnbmVkIGluZGV4KQogI2VuZGlmCiAKKyAgICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJZGVudGlmaWVy
IHBhZ2VHcm91cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5
SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJl
ZmVyZW5jZXNTdG9yZSBzdG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBz
dHJ1Y3QgV2ViS2l0OjpTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhIGluaXRpYWxpemF0
aW9uRGF0YSkgLT4gKCkgQXN5bmMKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBF
c3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdl
YktpdDo6UGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2ViS2l0OjpXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdl
SUQsIHN0cnVjdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBzdHJ1
Y3QgV2ViS2l0OjpTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhIGluaXRpYWxpemF0aW9u
RGF0YSkgLT4gKCkgQXN5bmMKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450727</attachid>
            <date>2022-02-02 18:55:22 -0800</date>
            <delta_ts>2022-02-03 09:13:25 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>235958_SharedWorker_multiProcess_wip.patch</filename>
            <type>text/plain</type>
            <size>300835</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDQwMjQ2NmU0OWYwZS4uNDNiYjdhYTNkNmJlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTQ2Myw3ICs0NjMsNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYi1sb2Nrcy9zdGVhbC50ZW50YXRpdmUuaHR0cHMuYW55Lmh0bWwgWyBEdW1wSgog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3Ro
ZS1hbmFseXNlcm5vZGUtaW50ZXJmYWNlL3Rlc3QtYW5hbHlzZXItbWluaW11bS5odG1sIFsgRHVt
cEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUt
ZGlzY29ubmVjdC1hdWRpb3BhcmFtLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NhbWUtb3JpZ2luLWNoZWNr
LnN1Yi5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMuaHRt
bCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCiBmYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWJh
Y2stZm9yd2FyZC1jYWNoZS5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGZhc3Qv
aGlzdG9yeS9wYWdlLWNhY2hlLWNyZWF0ZUltYWdlQml0bWFwLmh0bWwgWyBEdW1wSlNDb25zb2xl
TG9nSW5TdGRFcnIgXQogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLWluLWxv
YWRpbmctaWZyYW1lLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQpAQCAtNTE1Nyw2
ICs1MTU2LDEwIEBAIHdlYmtpdC5vcmcvYi8xODM5OTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3Nzb20vY3NzLXN0eWxlLWF0dHItZGVjCiAjIFRlc3QgaXMgY3Jhc2hpbmcg
aW4gRGVidWcgYnVpbGRzIHNpbmNlIGltcG9ydC4KIHdlYmtpdC5vcmcvYi8yMzQ5NzcgWyBEZWJ1
ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9mb2N1cy1ldmVu
dC1kb2N1bWVudC1tb3ZlLmh0bWwgWyBTa2lwIF0KIAorIyBUZXN0IGlzIGZsYWt5IGJlY2F1c2Ug
TWVzc2FnZVBvcnQgbWVzc2FnZXMgbWF5IGdldCByZWNlaXZlZCBpbiBhIGRpZmZlcmVudCBvcmRl
ciB3aGVuIHNldmVyYWwgTWVzc2FnZVBvcnRzIGFyZSBpbnZvbHZlZCwKKyMgZHVlIHRvIGhvdyBN
ZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpIGlzIGltcGxlbWVudGVkLgoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0
aW9ucy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIEZhaWx1cmUgUGFzcyBdCisKICMg
UGx1Z2lucwogIyBGSVhNRTogUmVtb3ZlIHRoZXNlIHRlc3RzLgogcGx1Z2lucy8gWyBTa2lwIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0
LW9ubHkuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3
b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dAppbmRleCAwZTk5NzI0Yjg2NGIuLjY4
OThiNTRhYWI2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdv
cmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRl
LXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSw2
ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2Nh
bGhvc3Q6OTQ0NC9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zdXBwb3J0L3Jlc291cmNlLnB5P2Ny
b3NzLW9yaWdpbi1mZXRjaAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8v
d3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQvcmVzb3Vy
Y2UucHk/Y3Jvc3Mtb3JpZ2luLXhocgotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0
dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQv
cmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLWZldGNoCiAKIFBBU1MgU2FtZS1vcmlnaW4gJ2ZldGNo
KCknLgogUEFTUyBTYW1lLW9yaWdpbiBYSFIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lk
ZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWItZXhwZWN0ZWQu
dHh0CmluZGV4IDk3OTEwNjMwMzc4NS4uYmI2NDUyZjQ0YTBhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMu
c3ViLWV4cGVjdGVkLnR4dApAQCAtMiwxMCArMiw5IEBACiBIYXJuZXNzIEVycm9yIChUSU1FT1VU
KSwgbWVzc2FnZSA9IG51bGwKIAogVElNRU9VVCBzaGFyZWR3b3JrZXItc2NyaXB0LXNyYyBUZXN0
IHRpbWVkIG91dAotRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgbm90IGJsb2Nr
ZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgIEEgbmV0d29yayBlcnJvciBvY2N1cnJlZC4KLUZBSUwg
YGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AgUmVmdXNlZCB0byBldmFs
dWF0ZSBhIHN0cmluZyBhcyBKYXZhU2NyaXB0IGJlY2F1c2UgJ3Vuc2FmZS1ldmFsJyBpcyBub3Qg
YW4gYWxsb3dlZCBzb3VyY2Ugb2Ygc2NyaXB0IGluIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1
cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAic2NyaXB0LXNyYyAnc2VsZicgJ25vbmNlLWEnIGJsb2I6
IGZpbGVzeXN0ZW06Ii4KLQotRkFJTCBgc2V0VGltZW91dChbc3RyaW5nXSlgIG5vdCBibG9ja2Vk
IGluIGh0dHA6IHdpdGhvdXQgQ1NQIGFzc2VydF91bnJlYWNoZWQ6IGNhbGxiYWNrIG5vdCBjYWxs
ZWQuIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNj
cmlwdHMoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgTG9hZCBmYWlsZWQKK1BB
U1MgYGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AKK1BBU1MgYHNldFRp
bWVvdXQoW3N0cmluZ10pYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3V0IENTUAogVElNRU9V
VCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgYmxvY2tlZCBpbiBodHRwOiB3aXRoIHNj
cmlwdC1zcmMgJ3NlbGYnIFRlc3QgdGltZWQgb3V0CiBOT1RSVU4gYGV2YWwoKWAgYmxvY2tlZCBp
biBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCiBOT1RSVU4gYHNldFRpbWVvdXQoW3N0cmlu
Z10pYCBibG9ja2VkIGluIGh0dHA6IHdpdGggc2NyaXB0LXNyYyAnc2VsZicKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVk
LnR4dAppbmRleCA0ZWFjMWNjYzA1MjYuLmI4ZWUxM2IwZmZjZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBv
bGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91dC5zdWItZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4
dApAQCAtMSw0ICsxLDQgQEAKIAogRkFJTCBEZWRpY2F0ZWQgd29ya2VyIGluaGVyaXRzIENTUCBm
cm9tIG1haW4gZG9jdW1lbnQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgInNldFRpbWVvdXQgYWxs
b3dlZCIgYnV0IGdvdCAic2V0VGltZW91dCBibG9ja2VkIgotRkFJTCBTaGFyZWQgd29ya2VyIGRl
bGl2ZXJzIGl0cyBvd24gQ1NQIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJzZXRUaW1lb3V0IGJs
b2NrZWQiIGJ1dCBnb3QgInNldFRpbWVvdXQgYWxsb3dlZCIKK1BBU1MgU2hhcmVkIHdvcmtlciBk
ZWxpdmVycyBpdHMgb3duIENTUAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3Jr
ZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNo
ZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggYzEwNzEz
NjU1MjgwLi42Zjg0NGRkNWQ5NDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtl
cnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBj
YWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKQEAgLTUsNyAr
NSw3IEBAIEhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAogUEFTUyBEZWRp
Y2F0ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0CiBQQVNTIERlZGljYXRlZCB3b3JrZXIg
b2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0CiBQQVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIG5v
dC1pbi1jYWNoZSBzY3JpcHQKLVBBU1MgU2hhcmVkIHdvcmtlciBvZiB0aGUgY2FjaGVkIHNjcmlw
dAotUEFTUyBTaGFyZWQgd29ya2VyIG9mIHRoZSBmYWxsYmFja2VkIHNjcmlwdAorRkFJTCBTaGFy
ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJE
b25lOiBjYWNoZWQiIGJ1dCBnb3QgIkVycm9yOiBJbXBvcnRpbmcgYSBub24tY2FjaGVkIHNjcmlw
dCBtdXN0IGZhaWwuIgorRkFJTCBTaGFyZWQgd29ya2VyIG9mIHRoZSBmYWxsYmFja2VkIHNjcmlw
dCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiRG9uZTogZmFsbGJhY2tlZCIgYnV0IGdvdCAiRXJy
b3I6IEltcG9ydGluZyBhIG5vbi1jYWNoZWQgc2NyaXB0IG11c3QgZmFpbC4iCiBUSU1FT1VUIFNo
YXJlZCB3b3JrZXIgb2YgdGhlIG5vdC1pbi1jYWNoZSBzY3JpcHQgVGVzdCB0aW1lZCBvdXQKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3
b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9y
aWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3b3JrZXItcGFydGl0
aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0CmluZGV4IDRlZDg3NDc0
NzZjNy4uNTg2ZDEwMTUyYTM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9hbm9u
eW1vdXMtaWZyYW1lL3NoYXJlZHdvcmtlci1wYXJ0aXRpb25pbmcudGVudGF0aXZlLmh0dHBzLndp
bmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlm
cmFtZS9zaGFyZWR3b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhw
ZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIEFub255bW91cyBpZnJhbWVzIGdldCBw
YXJ0aXRpb25lZCBzaGFyZWQgd29ya2Vycy4gYXNzZXJ0X3RydWU6IFRoZSAibm9ybWFsIiBpZnJh
bWUncyBzaGFyZWR3b3JrZXIgc2hvdWxkIHJldHVybiB7Im5vcm1hbCI6IHRydWUsICJub3JtYWxf
Y29udHJvbCI6IHRydWV9LCBidXQgaW5zdGVhZCByZXR1cm5lZCB7Im5vcm1hbCI6dHJ1ZX0gZXhw
ZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK0ZBSUwgQW5vbnltb3VzIGlmcmFtZXMgZ2V0IHBhcnRpdGlv
bmVkIHNoYXJlZCB3b3JrZXJzLiBhc3NlcnRfdHJ1ZTogVGhlICJub3JtYWwiIGlmcmFtZSdzIHNo
YXJlZHdvcmtlciBzaG91bGQgcmV0dXJuIHsibm9ybWFsIjogdHJ1ZSwgIm5vcm1hbF9jb250cm9s
IjogdHJ1ZX0sIGJ1dCBpbnN0ZWFkIHJldHVybmVkIHsibm9ybWFsX2NvbnRyb2wiOnRydWUsIm5v
cm1hbCI6dHJ1ZSwiYW5vbnltb3VzIjp0cnVlLCJhbm9ueW1vdXNfY29udHJvbCI6dHJ1ZX0gZXhw
ZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kv
Y3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdp
bi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMt
ZXhwZWN0ZWQudHh0CmluZGV4IDYzNTViNjhkZTcwYi4uYzhiZjc1ZTdlYTg1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mt
b3JpZ2luLWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5o
dHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2lu
LWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0yMCw3ICsyMCw3IEBA
IFBBU1MgZGVkaWNhdGVkIHdvcmtlcjogc2NoZW1lID0gYmxvYiwgdmFsdWUgPSAqCiBQQVNTIGRl
ZGljYXRlZCB3b3JrZXI6IHNjaGVtZSA9IGJsb2IsIHZhbHVlID0gc2VsZgogRkFJTCBkZWRpY2F0
ZWQgd29ya2VyOiBzY2hlbWUgPSBibG9iLCB2YWx1ZSA9IChcKSBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCBmYWxzZSBidXQgZ290IHRydWUKIFBBU1Mgc2hhcmVkIHdvcmtlcjogd2l0aENvb3BDb2Vw
ID0gZmFsc2UKLVBBU1Mgc2hhcmVkIHdvcmtlcjogd2l0aENvb3BDb2VwID0gdHJ1ZQorRkFJTCBz
aGFyZWQgd29ya2VyOiB3aXRoQ29vcENvZXAgPSB0cnVlIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
IHRydWUgYnV0IGdvdCBmYWxzZQogUEFTUyBzZXJ2aWNlIHdvcmtlcjogd2l0aENvb3BDb2VwID0g
ZmFsc2UKIEZBSUwgc2VydmljZSB3b3JrZXI6IHdpdGhDb29wQ29lcCA9IHRydWUgYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1i
ZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1i
ZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAzMzk4
YmQ4ODkzMWIuLjRjODY2ZWIyOTI2MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kv
c2hhcmVkLXdvcmtlcnMuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9s
aWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMiw3ICsyLDcgQEAgVmVy
aWZ5IHRoZSBDcm9zcy1PcmlnaW4gRW1iZWRkZXIgUG9saWN5IGZvciBTaGFyZWQgV29ya2VycyBi
eSBwZXJmb3JtaW5nIGEgY3Jvc3MKIAogCiBQQVNTIGRlZmF1bHQgcG9saWN5IChkZXJpdmVkIGZy
b20gcmVzcG9uc2UpCi1GQUlMICJyZXF1aXJlLWNvcnAiIChkZXJpdmVkIGZyb20gcmVzcG9uc2Up
IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJmYWlsdXJlIiBidXQgZ290ICJzdWNjZXNzIgorUEFT
UyAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIHJlc3BvbnNlKQogUEFTUyBkZWZhdWx0IHBv
bGljeSAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBkdWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAt
IGJsb2IgVVJMKQogRkFJTCAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBk
dWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAtIGJsb2IgVVJMKSBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCAiZmFpbHVyZSIgYnV0IGdvdCAic3VjY2VzcyIKIFBBU1MgZGVmYXVsdCBwb2xpY3kgKGRl
cml2ZWQgZnJvbSBvd25lciBzZXQgZHVlIHRvIHVzZSBvZiBsb2NhbCBzY2hlbWUgLSBkYXRhIFVS
TCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5jZS5z
dWIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVy
aXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggNzViMWQzM2U1MjYwLi5iMmJmMmUz
YmZmM2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5j
ZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtl
ci1pbmhlcml0YW5jZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNiBAQAogQmxv
Y2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2Nv
bW1vbi9ibGFuay5odG1sCiBCbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93
d3cubG9jYWxob3N0Ojk0NDQvY29tbW9uL2JsYW5rLmh0bWwKIEJsb2NrZWQgYWNjZXNzIHRvIGV4
dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2NhbGhvc3Q6OTQ0NC9jb21tb24vYmxhbmsuaHRtbAot
QmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0
L2NvbW1vbi9ibGFuay5odG1sCiAKIFBBU1MgVGVzdCB0aGF0IGxvY2FsIHNjaGVtZSB3b3JrZXJz
IGluaGVyaXQgQ09FUDogcmVxdWlyZS1jb3JwIGZyb20gdGhlIGNyZWF0aW5nIGRvY3VtZW50CiBQ
QVNTIGJsb2IgVVJMIGRlZGljYXRlZCB3b3JrZXI6IFNhbWUgb3JpZ2luIHNob3VsZCBiZSBhbGxv
d2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJf
ZGF0YVVybC1leHBlY3RlZC50eHQKaW5kZXggOTk1YTA2MDE5Yjg0Li45YjU4MjBhYWU4Y2IgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9TaGFyZWRXb3JrZXJfZGF0YVVybC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRh
VXJsLWV4cGVjdGVkLnR4dApAQCAtMSwxMyArMSw1IEBACi1DT05TT0xFIE1FU1NBR0U6IEVycm9y
OiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3QgMQogCiAKLUhhcm5lc3MgRXJyb3Ig
KEZBSUwpLCBtZXNzYWdlID0gRXJyb3I6IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDIgYnV0IGdv
dCAxCi0KLVBBU1MgRGF0YSBVUkwgbm90IHNoYXJlZCBieSBjcm9zcy1vcmlnaW4gU2hhcmVkV29y
a2VycwotVElNRU9VVCBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtl
cnMgVGVzdCB0aW1lZCBvdXQKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBFcnJv
cjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290IDEKLQogUEFTUyBEYXRhIFVSTCBu
b3Qgc2hhcmVkIGJ5IGNyb3NzLW9yaWdpbiBTaGFyZWRXb3JrZXJzCi1USU1FT1VUIERhdGEgVVJM
cyBzaGFyZWQgYnkgc2FtZS1vcmlnaW4gU2hhcmVkV29ya2VycyBUZXN0IHRpbWVkIG91dAorUEFT
UyBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtlcnMKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQK
aW5kZXggNTc2ZTZkMmI3ZWQyLi40YTI2YmU5MjlhOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13
b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVk
LXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMg
QEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0
Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkK
IAogUEFTUyBTdGF0aWMgaW1wb3J0LgogRkFJTCBTdGF0aWMgaW1wb3J0IChjcm9zcy1vcmlnaW4p
LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogIkltcG9ydGlu
ZyBhIG1vZHVsZSBzY3JpcHQgZmFpbGVkLiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXIt
aW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29y
a2VyLWltcG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CmluZGV4IDRmODY0
MWU1MTQ4MC4uMjk5N2Y3ZTFmMzA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9y
dC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3Jr
ZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwz
IEBACi1DT05TT0xFIE1FU1NBR0U6IE9yaWdpbiBudWxsIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vz
cy1Db250cm9sLUFsbG93LU9yaWdpbi4gU3RhdHVzIGNvZGU6IDIwMAogCiBIYXJuZXNzIEVycm9y
IChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtl
ci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXIt
aW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQKaW5kZXggZWFjN2Y5NWRlNmYyLi5j
YmMwNDI5ZTBjNzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJs
LndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11
cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRv
IGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVz
L3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkKIAogSGFybmVzcyBFcnJvciAoVElN
RU9VVCksIG1lc3NhZ2UgPSBudWxsCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ct
ZXhwZWN0ZWQudHh0CmluZGV4IDU3NmU2ZDJiN2VkMi4uNGEyNmJlOTI5YThkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9k
dWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3No
YXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1C
bG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQz
L3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LW9uLWxvYWQtc2NyaXB0LnB5CiAKIFBB
U1MgU3RhdGljIGltcG9ydC4KIEZBSUwgU3RhdGljIGltcG9ydCAoY3Jvc3Mtb3JpZ2luKS4gcHJv
bWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6ICJJbXBvcnRpbmcgYSBt
b2R1bGUgc2NyaXB0IGZhaWxlZC4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlv
bnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNy
ZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAppbmRleCBlMWJlZGY1NDMwZWYuLmE3MGYwNWFmNTRmNCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQu
dHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHA6
Ly93d3cxLmxvY2FsaG9zdDo4ODAwL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LWNy
ZWRlbnRpYWxzLnB5CiAKIEhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRp
Y3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhwZWN0ZWQudHh0CmluZGV4IDAxOGRiNjA0NTY5ZC4u
Y2ZlNDY1NTY3NWNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVkLnR4dApAQCAt
MSw1ICsxLDMgQEAKIAotSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0K
LU5PVFJVTiBzaGFyZWQgd29ya2VyIHdpdGggbXVsdGlwbGUgZG9jdW1lbnRzCitQQVNTIHNoYXJl
ZCB3b3JrZXIgd2l0aCBtdWx0aXBsZSBkb2N1bWVudHMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA4
LWV4cGVjdGVkLnR4dAppbmRleCA5N2E0ZTdhNzNhNjMuLjA5ZjY3MmQxYzYyMSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3Nl
bWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSwzIEBACiAKLUhhcm5lc3Mg
RXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1USU1FT1VUIG1lc3NhZ2VjaGFubmVs
IGluIHNoYXJlZCB3b3JrZXIgVGVzdCB0aW1lZCBvdXQKK1BBU1MgbWVzc2FnZWNoYW5uZWwgaW4g
c2hhcmVkIHdvcmtlcgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRv
dy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50
eHQKaW5kZXggYTA4OWMyMjQ4OWUyLi4xOWU0NmIwOWE1NmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2Vy
LWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJs
b2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw1IEBACiAKLUhhcm5lc3MgRXJy
b3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1GQUlMIENyZWF0aW5nIGEgc2hhcmVkIHdv
cmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJ3b3Jr
ZXJfT0tfMiIgYnV0IGdvdCAid29ya2VyX09LXzEiCitQQVNTIENyZWF0aW5nIGEgc2hhcmVkIHdv
cmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MuCiBQQVNTIENyZWF0aW5nIGEgc2hhcmVkIHdvcmtl
ciBmcm9tIGEgYmxvYiBVUkwgd29ya3MgaW1tZWRpYXRlbHkgYmVmb3JlIHJldm9raW5nLgotVElN
RU9VVCBDb25uZWN0aW5nIHRvIGEgc2hhcmVkIHdvcmtlciBvbiBhIHJldm9rZWQgYmxvYiBVUkwg
d29ya3MuIFRlc3QgdGltZWQgb3V0CitQQVNTIENvbm5lY3RpbmcgdG8gYSBzaGFyZWQgd29ya2Vy
IG9uIGEgcmV2b2tlZCBibG9iIFVSTCB3b3Jrcy4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFt
ZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25zLWV4
cGVjdGVkLnR4dAppbmRleCA2ZmZlZTI3MzkwZDkuLmFlNDViNGQyNzM5NiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJl
ZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFt
ZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgVGVzdCB0
aGUgbmFtZSBwcm9wZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBtaXhpbmcgY29uc3RydWN0b3Igb3B0
aW9ucyBhbmQgY29uc3RydWN0b3Igc3RyaW5ncyBFcnJvcjogYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgMiBidXQgZ290IDEKK1BBU1MgVGVzdCB0aGUgbmFtZSBwcm9wZXJ0eSBvZiBzaGFyZWQgd29y
a2VycyBtaXhpbmcgY29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29uc3RydWN0b3Igc3RyaW5ncwog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQt
d29ya2VyLW9wdGlvbnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CmluZGV4IGY2NTY5NDYxNTBkYi4u
NGY5OWExMzQwOWU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dApAQCAt
MSwyOCArMSwyNiBAQAogCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwK
LQotVElNRU9VVCBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBtb2R1bGUgVGVzdCB0aW1lZCBvdXQK
LU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9u
cyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGRlZmF1bHQKLU5PVFJVTiBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogY2xhc3NpYyB0byBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIg
d2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGNsYXNz
aWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBvbWl0IGluIGNsYXNzaWMKLU5PVFJV
TiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91
bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBpbmNsdWRlIGluIGNsYXNzaWMKLU5PVFJVTiBDb25u
ZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUg
YmxvY2tlZDogb21pdCB0byBkZWZhdWx0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRv
IHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDog
b21pdCB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQg
dG8gaW5jbHVkZSBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2Vy
IHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRv
IG9taXQgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBpbmNs
dWRlIGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGlu
IGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJl
bnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBvbWl0IGluIGNsYXNzaWMK
LU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9u
cyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCi1O
T1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMg
c2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gb21pdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25u
ZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUg
YmxvY2tlZDogZGVmYXVsdCB0byBpbmNsdWRlIGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBvbWl0IHRvIGRlZmF1bHQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQg
d29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8g
c2FtZS1vcmlnaW4gaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2Vy
IHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVk
ZSBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZm
ZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBt
b2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQg
b3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gaW5jbHVkZSBpbiBtb2R1
bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGluIG1vZHVsZQotTk9U
UlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNo
b3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IGluY2x1ZGUgdG8gc2FtZS1vcmlnaW4gaW4gbW9kdWxlCitQQVNTIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBkZWZhdWx0IHRvIG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0
aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGRlZmF1bHQK
K1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMg
c2hvdWxkIGJlIGJsb2NrZWQ6IGNsYXNzaWMgdG8gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8g
c2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBt
b2R1bGUgdG8gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBvbWl0IGluIGNs
YXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9w
dGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gaW5jbHVkZSBpbiBjbGFzc2ljCitQ
QVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNo
b3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0
aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxv
Y2tlZDogb21pdCB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8g
c2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBv
bWl0IHRvIGluY2x1ZGUgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3Jr
ZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4g
dG8gb21pdCBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBpbmNs
dWRlIGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlm
ZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gZGVmYXVsdCBpbiBj
bGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gY2xhc3NpYworUEFT
UyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91
bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCitQQVNTIENv
bm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBi
ZSBibG9ja2VkOiBkZWZhdWx0IHRvIG9taXQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8g
c2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBk
ZWZhdWx0IHRvIGluY2x1ZGUgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRl
ZmF1bHQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRp
ZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIHNhbWUtb3JpZ2luIGlu
IG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQg
b3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBpbmNsdWRlIGluIG1vZHVsZQorUEFT
UyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91
bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IHNhbWUtb3JpZ2luIHRvIGluY2x1ZGUgaW4gbW9kdWxlCitQQVNTIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBpbmNsdWRlIHRvIGRlZmF1bHQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVk
IHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRl
IHRvIG9taXQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIHNhbWUtb3Jp
Z2luIGluIG1vZHVsZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmln
aW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVk
LnR4dAppbmRleCAxZTJkMzk5MmY2ZDUuLjU5Y2FjYTQ4NmY4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJl
Y3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNo
YXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBh
Y2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHA6Ly93d3cyLmxvY2FsaG9zdDo4ODAwL3hoci9yZXNv
dXJjZXMvaW5zcGVjdC1oZWFkZXJzLnB5P2ZpbHRlcl9uYW1lPW9yaWdpbiZjb3JzCiAKIEZBSUwg
UmVmZXJlciBoZWFkZXIgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIlJlZmVyZXI6IGh0dHA6Ly9s
b2NhbGhvc3Q6ODgwMC94aHIvcmVzb3VyY2VzL3dvcmtlcnhoci1vcmlnaW4tcmVmZXJyZXIuanNc
biIgYnV0IGdvdCAiUmVmZXJlcjogaHR0cDovL2xvY2FsaG9zdDo4ODAwL3hoci9yZXNvdXJjZXMv
cmVkaXJlY3QucHk/bG9jYXRpb249d29ya2VyeGhyLW9yaWdpbi1yZWZlcnJlci5qc1xuIgogRkFJ
TCBPcmlnaW4gaGVhZGVyIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJPcmlnaW46IGh0dHA6Ly9s
b2NhbGhvc3Q6ODgwMFxuIiBidXQgZ290ICIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZTRlZDMxYWI2YWMzLi5jZDdiNTg3N2E0ODkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTY2
LDYgKzY2LDEyNiBAQCBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS1nZXRVc2VyTWVk
aWEtcGVuZGluZy1wcm9taXNlLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9w
YWdlLWNhY2hlLW1lZGlhc3RyZWFtLmh0bWwgWyBTa2lwIF0KIG1lZGlhL2F1ZGlvLXNlc3Npb24t
Y2F0ZWdvcnkuaHRtbCBbIFNraXAgXQogCisjIFNoYXJlZCB3b3JrZXJzIGFyZSBvbmx5IGltcGxl
bWVudGVkIGZvciBXZWJLaXQyLgoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy1zZWxmL3NoYXJl
ZHdvcmtlci1jbGFzc2ljLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0
LXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3Rv
cC5odHRwLXJwL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5
LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXIt
Y2xhc3NpYy5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtd2ls
ZGNhcmQvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0
dHAtcnAvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5
LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFz
c2ljLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
b250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1zZWxmL3No
YXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dv
cmtlci1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4v
dG9wLmh0dHAtcnAvd29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRw
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVk
d29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNy
Yy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1l
dGEvc2NyaXB0LXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAu
aHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3b3Jr
ZXItY2xhc3NpYy5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtd2ls
ZGNhcmQvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1l
dGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHAuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHBz
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtc2VsZi9zaGFyZWR3b3JrZXIt
bW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1zZWxmL3No
YXJlZHdvcmtlci1tb2R1bGUuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2Vy
LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwLmh0bWwgWyBTa2lwIF0KK2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2Vu
L3RvcC5tZXRhL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMu
aHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3b3Jr
ZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy13aWxk
Y2FyZC9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtl
ci9zaGFyZWR3b3JrZXItY29ubmVjdC1zcmMuc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtl
ci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtl
ci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zYW5kYm94L3NoYXJl
ZC13b3JrZXItc2FuZGJveC5odG1sICBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1kYXRhLXNl
dC10aW1lb3V0LnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLWNoaWxkLnN1Yi5o
dG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2Vy
LWltcG9ydC1kYXRhLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNy
Yy1zZWxmL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90
b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1s
IFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJp
dHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtl
ci1pbXBvcnQtZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3NjcmlwdC1z
cmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
Z2VuL3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5o
dHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLW5vbmUvc2hhcmVk
d29ya2VyLWNsYXNzaWMuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXIt
c3JjLW5vbmUvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9w
Lmh0dHAtcnAvd29ya2VyLXNyYy1ub25lL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0
bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtbm9uZS9zaGFyZWR3b3JrZXIt
aW1wb3J0LWRhdGEuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNy
Yy1ub25lL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0
cC1ycC93b3JrZXItc3JjLW5vbmUvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tp
cCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLWltcG9ydC1k
YXRhLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
b250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1zZWxmL3No
YXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1y
cC93b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1pbXBvcnQt
ZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtd2lsZGNh
cmQvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5o
dHRwLXJwL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwLmh0bWwg
WyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0
eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2Vy
LW1vZHVsZS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXNlbGYv
c2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEv
c2NyaXB0LXNyYy1zZWxmL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tp
cCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRw
cy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdv
cmtlci1pbXBvcnQtZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1z
cmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
Z2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRw
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29y
a2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLW5v
bmUvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93
b3JrZXItc3JjLW5vbmUvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQor
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9n
ZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRw
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtbm9uZS9zaGFyZWR3b3JrZXIt
aW1wb3J0LWRhdGEuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLW5v
bmUvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5t
ZXRhL3dvcmtlci1zcmMtbm9uZS9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1ub25lL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cHMu
aHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1p
bXBvcnQtZGF0YS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLXdp
bGRjYXJkL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3Rv
cC5tZXRhL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBz
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvd29ya2VyLXNyYy9zaGFyZWQtZmFsbGJhY2suc3ViLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvd29ya2VyLXNyYy9zaGFyZWQtbGlzdC5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS93b3JrZXItc3JjL3No
YXJlZC1ub25lLnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXNlbGYuc3ViLmh0
bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvd29ya2VyLXNyYy9zaGFyZWQtd29ya2VyLXNyYy1jaGlsZC1mYWxsYmFjay1i
bG9ja2VkLnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXdvcmtlci1zcmMtY2hp
bGQtZmFsbGJhY2suc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvd29ya2VyLXNyYy9zaGFyZWQtd29ya2VyLXNy
Yy1kZWZhdWx0LWZhbGxiYWNrLnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXdv
cmtlci1zcmMtc2NyaXB0LWZhbGxiYWNrLnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hh
cmVkLXdvcmtlci1zcmMtc2VsZi1mYWxsYmFjay5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29ycy9kYXRhLXVybC1zaGFyZWQtd29y
a2VyLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9i
cm93c2Vycy9vZmZsaW5lL25vLWFwcGNhY2hlLWluLXNoYXJlZC13b3JrZXJzLWhpc3RvcmljYWwu
aHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvbW9kdWxlL2V2YWx1YXRp
b24tb3JkZXItMS1ub3Rocm93LXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3Jp
cHQtZWxlbWVudC9tb2R1bGUvZXZhbHVhdGlvbi1vcmRlci0xLXNoYXJlZHdvcmtlci5odG1sIFsg
U2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3Nj
cmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudC9tb2R1bGUvZXZhbHVhdGlvbi1vcmRlci0yLWlt
cG9ydC1zaGFyZWR3b3JrZXIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvbW9k
dWxlL2V2YWx1YXRpb24tb3JkZXItMy1keW5hbWljLXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGlu
Zy0xL3RoZS1zY3JpcHQtZWxlbWVudC9ldmFsdWF0aW9uLW9yZGVyLTEtbm90aHJvdy1zaGFyZWR3
b3JrZXIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvZXZhbHVhdGlvbi1vcmRl
ci0xLXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL3VuaGFu
ZGxlZC1wcm9taXNlLXJlamVjdGlvbnMvcHJvbWlzZS1yZWplY3Rpb24tZXZlbnRzLnNoYXJlZHdv
cmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20v
c2VyaWFsaXphdGlvbi9tb2R1bGUvYnJvYWRjYXN0Y2hhbm5lbC1zdWNjZXNzLWFuZC1mYWlsdXJl
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9T
aGFyZWRXb3JrZXJQZXJmb3JtYW5jZU5vdy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvYmFzZXVybC9hbHBoYS9pbXBvcnRTY3JpcHRzLWluLXNo
YXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvYmFzZXVybC9hbHBoYS94aHItaW4tc2hhcmVkd29ya2VyLmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9pbnRlcmZhY2VzL1NoYXJl
ZFdvcmtlckdsb2JhbFNjb3BlIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvaW50ZXJmYWNlcy9Xb3JrZXJHbG9iYWxTY29wZS9sb2NhdGlvbi9yZWRpcmVj
dC1zaGFyZWR3b3JrZXIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi5odG1sIFsg
U2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9z
aGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC53aW5kb3cuaHRtbCBbIFNraXAgXQoraW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1p
bXBvcnQtZmFpbHVyZS5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1tZXRhLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJl
ZC13b3JrZXItaW1wb3J0LndpbmRvdy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVu
dGlhbHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLXR5cGUuaHRtbCBbIFNraXAgXQoraW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJs
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItcGFyc2UtZXJyb3ItZmFpbHVyZS5odG1sIFsgU2tpcCBdCitp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL2VuY29kaW5n
cy8wMDIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL3NlbWFudGljcy9lbmNvZGluZ3MvMDA0Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDQu
aHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3Nl
bWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3JlcG9ydGluZy1lcnJvcnMvMDAx
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9z
ZW1hbnRpY3MvcmVwb3J0aW5nLWVycm9ycy8wMDIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9yZXBvcnRpbmctZXJyb3JzLzAw
My5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
c2VtYW50aWNzL3JlcG9ydGluZy1lcnJvcnMvMDA0Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvcnVuLWEtd29ya2VyLzAwMi5o
dG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2Vt
YW50aWNzL3N0cnVjdHVyZWQtY2xvbmUvc2hhcmVkLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MveGhyLzAwMy5odG1sIFsgU2tp
cCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3ho
ci8wMDQuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL3NlbWFudGljcy94aHIvMDA2Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93Lmh0
bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFy
ZWQtd29ya2VyLW9wdGlvbnMtbWlzbWF0Y2guaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItcGFyc2UtZXJyb3ItZmFpbHVy
ZS5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vc2Vy
aWFsaXphdGlvbi9tb2R1bGUvd2luZG93LXNoYXJlZHdvcmtlci1mYWlsdXJlLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL29wZW4tdXJsLXJlZGlyZWN0
ZWQtc2hhcmVkd29ya2VyLW9yaWdpbi5odG0gWyBTa2lwIF0KKwogaHR0cC93cHQvbWVkaWFyZWNv
cmRlciBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYWNhcHR1
cmUtcmVjb3JkIFsgU2tpcCBdCiBmYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS1tZWRpYS1yZWNvcmRl
ci5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sx
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
c2NyaXB0LXNyYy93b3JrZXItaW1wb3J0c2NyaXB0cy5zdWItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nv
bnRlbnQtc2VjdXJpdHktcG9saWN5L3NjcmlwdC1zcmMvd29ya2VyLWltcG9ydHNjcmlwdHMuc3Vi
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjZl
ZWExYmVhYjViMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9zY3JpcHQtc3JjL3dvcmtlci1pbXBvcnRzY3JpcHRzLnN1Yi1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw0IEBACisKK0ZBSUwgRGVkaWNhdGVkIHdvcmtlciBpbmhlcml0cyBDU1AgZnJvbSBtYWlu
IGRvY3VtZW50IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJpbXBvcnRTY3JpcHRzIGFsbG93ZWQi
IGJ1dCBnb3QgImltcG9ydFNjcmlwdHMgYmxvY2tlZCIKK0ZBSUwgU2hhcmVkIHdvcmtlciBkZWxp
dmVycyBpdHMgb3duIENTUCBTaGFyZWQgd29ya2VycyBhcmUgbm90IHN1cHBvcnRlZAorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0
LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9z
Y3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91dC5zdWItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNjc1YTNhOGUwZjBiCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3NjcmlwdC1zcmMvd29ya2VyLXNldC10
aW1lb3V0LnN1Yi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK0ZBSUwgRGVkaWNhdGVk
IHdvcmtlciBpbmhlcml0cyBDU1AgZnJvbSBtYWluIGRvY3VtZW50IGFzc2VydF9lcXVhbHM6IGV4
cGVjdGVkICJzZXRUaW1lb3V0IGFsbG93ZWQiIGJ1dCBnb3QgInNldFRpbWVvdXQgYmxvY2tlZCIK
K0ZBSUwgU2hhcmVkIHdvcmtlciBkZWxpdmVycyBpdHMgb3duIENTUCBTaGFyZWQgd29ya2VycyBh
cmUgbm90IHN1cHBvcnRlZAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZsaW5l
L2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2Jyb3dzZXJzL29mZmxpbmUvYXBwY2FjaGUvd29ya2Vycy9hcHBjYWNoZS13b3JrZXIu
aHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uN2YyY2Q1MThjN2U3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2Zm
bGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw5IEBACitDT05TT0xFIE1FU1NBR0U6IEFwcGxpY2F0aW9uQ2FjaGUgaXMgZGVw
cmVjYXRlZC4gUGxlYXNlIHVzZSBTZXJ2aWNlV29ya2VycyBpbnN0ZWFkLgorCitQQVNTIERlZGlj
YXRlZCB3b3JrZXIgb2YgdGhlIGNhY2hlZCBzY3JpcHQKK1BBU1MgRGVkaWNhdGVkIHdvcmtlciBv
ZiB0aGUgZmFsbGJhY2tlZCBzY3JpcHQKK1BBU1MgRGVkaWNhdGVkIHdvcmtlciBvZiB0aGUgbm90
LWluLWNhY2hlIHNjcmlwdAorRkFJTCBTaGFyZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0
IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5v
dFN1cHBvcnRlZEVycm9yOiBTaGFyZWQgd29ya2VycyBhcmUgbm90IHN1cHBvcnRlZCIKK0ZBSUwg
U2hhcmVkIHdvcmtlciBvZiB0aGUgZmFsbGJhY2tlZCBzY3JpcHQgcHJvbWlzZV90ZXN0OiBVbmhh
bmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IFNo
YXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkIgorRkFJTCBTaGFyZWQgd29ya2VyIG9mIHRo
ZSBub3QtaW4tY2FjaGUgc2NyaXB0IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3
aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBTaGFyZWQgd29ya2VycyBhcmUg
bm90IHN1cHBvcnRlZCIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
MS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGlu
Zy0xL3RoZS1zY3JpcHQtZWxlbWVudC9tb2R1bGUvaW1wb3J0LW1ldGEvaW1wb3J0LW1ldGEtdXJs
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUtc2NyaXB0
LWVsZW1lbnQvbW9kdWxlL2ltcG9ydC1tZXRhL2ltcG9ydC1tZXRhLXVybC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iMjQ5OWZhZGNiNmMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mvc2NyaXB0aW5nLTEvdGhlLXNjcmlw
dC1lbGVtZW50L21vZHVsZS9pbXBvcnQtbWV0YS9pbXBvcnQtbWV0YS11cmwtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTEgQEAKKworUEFTUyBpbXBvcnQubWV0YS51cmwgaW4gYSByb290IGV4dGVy
bmFsIHNjcmlwdAorUEFTUyBpbXBvcnQubWV0YS51cmwgaW4gYSBkZXBlbmRlbnQgZXh0ZXJuYWwg
c2NyaXB0CitQQVNTIGltcG9ydC5tZXRhIGlzIGFuIG9iamVjdAorUEFTUyBpbXBvcnQubWV0YSBp
cyBleHRlbnNpYmxlCitQQVNTIGltcG9ydC5tZXRhJ3MgcHJvcGVydGllcyBhcmUgd3JpdGFibGUs
IGNvbmZpZ3VyYWJsZSwgYW5kIGVudW1lcmFibGUKK1BBU1MgaW1wb3J0Lm1ldGEudXJsIHdoZW4g
aW1wb3J0aW5nIHRoZSBtb2R1bGUgd2l0aCBkaWZmZXJlbnQgZnJhZ21lbnRzCitQQVNTIGltcG9y
dC5tZXRhLnVybCBpbiBhIHJvb3QgaW5saW5lIHNjcmlwdAorUEFTUyBpbXBvcnQubWV0YS51cmwg
YXQgdG9wLWxldmVsIG1vZHVsZSBEZWRpY2F0ZWRXb3JrZXIKK0ZBSUwgaW1wb3J0Lm1ldGEudXJs
IGF0IHRvcC1sZXZlbCBtb2R1bGUgU2hhcmVkV29ya2VyIHByb21pc2VfdGVzdDogVW5oYW5kbGVk
IHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBTaGFyZWQg
d29ya2VycyBhcmUgbm90IHN1cHBvcnRlZCIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBw
YXBpcy90aGUtd2luZG93b3J3b3JrZXJnbG9iYWxzY29wZS1taXhpbi9Xb3JrZXJfU2VsZl9Pcmln
aW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy90aGUtd2luZG93b3J3b3JrZXJn
bG9iYWxzY29wZS1taXhpbi9Xb3JrZXJfU2VsZl9PcmlnaW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjM5ZjZmZWQxZjMzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy90aGUtd2luZG93b3J3b3JrZXJnbG9iYWxzY29w
ZS1taXhpbi9Xb3JrZXJfU2VsZl9PcmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAor
CitQQVNTIFNhbWUgT3JpZ2luIFdvcmtlcgorRkFJTCBTYW1lIE9yaWdpbiBTaGFyZWRXb3JrZXIg
U2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQKK1BBU1MgRGF0YSBVcmwgV29ya2VyCitG
QUlMIERhdGEgVXJsIFNoYXJlZFdvcmtlciBTaGFyZWQgd29ya2VycyBhcmUgbm90IHN1cHBvcnRl
ZAorUEFTUyBCbG9iIFVybCBXb3JrZXIKK0ZBSUwgQmxvYiBVcmwgU2hhcmVkV29ya2VyIFNoYXJl
ZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdp
bmcvYnJvYWRjYXN0Y2hhbm5lbC93b3JrZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdp
bmcvYnJvYWRjYXN0Y2hhbm5lbC93b3JrZXJzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjEzZWQxNmQ4NzE5NwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC93b3JrZXJzLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDEyIEBACisKK1BBU1MgQnJvYWRjYXN0Q2hhbm5lbCB3b3JrcyBpbiB3b3JrZXJz
CitGQUlMIEJyb2FkY2FzdENoYW5uZWwgd29ya3MgaW4gc2hhcmVkIHdvcmtlcnMgU2hhcmVkIHdv
cmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQKK1BBU1MgQ2xvc2luZyBhbmQgcmUtb3BlbmluZyBhIGNo
YW5uZWwgd29ya3MuCitQQVNTIEJyb2FkY2FzdENoYW5uZWwgY3JlYXRlZCBhZnRlciBhIHdvcmtl
ciBzZWxmLmNsb3NlKCkKK1BBU1MgQnJvYWRjYXN0Q2hhbm5lbCBtZXNzYWdlcyBmcm9tIGNsb3Nl
ZCB3b3JrZXIgdG8gcGFyZW50IHNob3VsZCBiZSBpZ25vcmVkIChCQyBjcmVhdGVkIGJlZm9yZSBj
bG9zaW5nKQorUEFTUyBCcm9hZGNhc3RDaGFubmVsIG1lc3NhZ2VzIGZyb20gY2xvc2VkIHdvcmtl
ciB0byBwYXJlbnQgc2hvdWxkIGJlIGlnbm9yZWQgKEJDIGNyZWF0ZWQgYWZ0ZXIgY2xvc2luZykK
K1BBU1MgQnJvYWRjYXN0Q2hhbm5lbCBtZXNzYWdlcyBmcm9tIHBhcmVudCB0byBjbG9zZWQgd29y
a2VyIHNob3VsZCBiZSBpZ25vcmVkIChCQyBjcmVhdGVkIGJlZm9yZSBjbG9zaW5nKQorUEFTUyBC
cm9hZGNhc3RDaGFubmVsIG1lc3NhZ2VzIGZyb20gcGFyZW50IHRvIGNsb3NlZCB3b3JrZXIgc2hv
dWxkIGJlIGlnbm9yZWQgKEJDIGNyZWF0ZWQgYWZ0ZXIgY2xvc2luZykKK1BBU1MgQnJvYWRjYXN0
Q2hhbm5lbCBtZXNzYWdlcyB3aXRoaW4gY2xvc2VkIHdvcmtlciBzaG91bGQgYmUgaWdub3JlZCAo
QkNzIGNyZWF0ZWQgYmVmb3JlIGNsb3NpbmcpCitQQVNTIEJyb2FkY2FzdENoYW5uZWwgbWVzc2Fn
ZXMgd2l0aGluIGNsb3NlZCB3b3JrZXIgc2hvdWxkIGJlIGlnbm9yZWQgKEJDcyBjcmVhdGVkIGFm
dGVyIGNsb3NpbmcpCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2FicnVwdC1jb21wbGV0aW9u
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2FicnVwdC1jb21wbGV0aW9uLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQwMTU2YzBiMjE5ZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2FicnVwdC1jb21wbGV0aW9uLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBEZWRpY2F0ZWRXb3JrZXIgc2hvdWxkIGNvcnJl
Y3RseSBoYW5kbGUgYWJydXB0IGNvbXBsZXRpb24KK0ZBSUwgU2hhcmVkV29ya2VyIHNob3VsZCBj
b3JyZWN0bHkgaGFuZGxlIGFicnVwdCBjb21wbGV0aW9uIHByb21pc2VfdGVzdDogVW5oYW5kbGVk
IHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBTaGFyZWQg
d29ya2VycyBhcmUgbm90IHN1cHBvcnRlZCIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2Vt
YW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDAxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3Nl
bWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwMS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43ZjJhOTI3OGM1ZjMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDEtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIGRlZGljYXRlZAorRkFJTCBzaGFyZWQgU2hhcmVkIHdv
cmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50
aWNzL3J1bi1hLXdvcmtlci8wMDMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNz
L3J1bi1hLXdvcmtlci8wMDMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uYWY3ZmEwODRjNzRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvc2VtYW50aWNzL3J1bi1hLXdvcmtlci8wMDMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBA
QAorCitQQVNTIHdvcmtlcgorRkFJTCBzaGFyZWQgU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBw
b3J0ZWQKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggZWVjY2Q3ZDRmYjE3Li5iOGExZDAyODYwMGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTk1Niw5ICsxOTU2LDEyIEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVz
dC5oCiAgICAgd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCiAgICAgd29ya2Vycy9Xb3JrZXJM
b2FkZXJQcm94eS5oCisgICAgd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oCisgICAgd29ya2Vy
cy9Xb3JrZXJPcHRpb25zLmgKICAgICB3b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
LmgKICAgICB3b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaAogICAgIHdv
cmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgKKyAgICB3b3JrZXJzL1dvcmtlclJlcG9ydGlu
Z1Byb3h5LmgKICAgICB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuaAogICAgIHdvcmtlcnMvV29ya2Vy
U2NyaXB0TG9hZGVyLmgKICAgICB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlckNsaWVudC5oCkBA
IC0yMDAyLDYgKzIwMDUsMTIgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVS
UwogICAgIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAogCiAgICAgd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VySWRlbnRpZmllci5oCisgICAgd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VyS2V5LmgKKyAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLmgKKyAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyLmgKKyAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5oCisKKyAgICB3
b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgKICAgICB3
b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZC5oCiAgICAgd29ya2Vycy9z
aGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5k
ZXggMTlhMjM4NDBiZTEwLi43ODE4NjI1YzVlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yNzg1LDgg
KzI3ODUsMTAgQEAgd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAogd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCi13b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcAor
d29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKK3dvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyLmNwcAord29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlci5jcHAKIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhy
ZWFkLmNwcAogd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5j
cHAKIHdvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZiMzZlM2QyODdm
YS4uZGZlMWRlZWY5ZjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MDMsNyArOTAzLDcgQEAKIAkJMkU0MzQ2NEIwRjU0NkE4
MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjM5MEY1NDZBODIwMEIwRjFCQSAvKiBX
b3JrZXJHbG9iYWxTY29wZVByb3h5LmggKi87IH07CiAJCTJFNDM0NjREMEY1NDZBODIwMEIwRjFC
QSAvKiBXb3JrZXJMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkU0MzQ2M0IwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckxvY2F0aW9uLmgg
Ki87IH07CiAJCTJFNDM0NjUwMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJNZXNzYWdpbmdQcm94
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2
M0UwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck1lc3NhZ2luZ1Byb3h5LmggKi87IH07Ci0JCTJF
NDM0NjUxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94eS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2M0YwRjU0NkE4MjAwQjBG
MUJBIC8qIFdvcmtlck9iamVjdFByb3h5LmggKi87IH07CisJCTJFNDM0NjUxMEY1NDZBODIwMEIw
RjFCQSAvKiBXb3JrZXJPYmplY3RQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2M0YwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVj
dFByb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMkU0MzQ2NTMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclJ1bkxvb3AuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjQxMEY1NDZBODIwMEIw
RjFCQSAvKiBXb3JrZXJSdW5Mb29wLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2NTUwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclRocmVh
ZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2
NDMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFNzU4NDFFMTI3NzlBREEwMDYyNjI4QiAv
KiBGaWxlUmVhZGVyTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyRTc1ODQxQjEyNzc5QURBMDA2MjYyOEIgLyogRmlsZVJlYWRlckxvYWRlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTI1
LDcgKzExMjUsNyBAQAogCQk0MTZBMDZBMTIzQ0NBRDAzMDAzNDcxMDkgLyogQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxNkEwNjk2MjNDQ0FBOUYwMDM0NzEwOSAvKiBBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQxNkQ3NUEyMjBDNjUxQTUwMEQwMkQyQyAvKiBOZXR3b3JrTG9hZEluZm9ybWF0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZENzU5
RjIwQzY0NDEzMDBEMDJEMkMgLyogTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkUwQjNBMjA5QkMzQ0Iw
MDRBOTVEOSAvKiBGZXRjaElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkUwQjM3MjA5QkMzQzIwMDRBOTVEOSAvKiBGZXRjaElkZW50
aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQk0MTZFMjlBNjEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkUyOUE1MTAyRkE5
NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovOyB9OworCQk0MTZFMjlBNjEw
MkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkUyOUE1MTAyRkE5NjIwMDdGQzE0RSAv
KiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU4MUJCRDEyREYwMDBBM0Y2NCAvKiBSZWFkYWJsZVN0
cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RDkgLyogUmVhZGFibGVTdHJlYW1J
bnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQxNkU2RkU4MUJCRDEyREYwMDBBM0Y2NSAvKiBKU0RPTUJpbmRpbmdJbnRl
cm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NERBIC8qIEpTRE9NQmluZGluZ0ludGVybmFsc0J1
aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDE2RTZGRTgxQkJEMTJERjAwMEEzRjc0IC8qIFRyYW5zZm9ybVN0cmVhbUludGVybmFsc0J1
aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
QjAzRDgwNjFCQjMxMTBEMDBCNzY0RUEgLyogVHJhbnNmb3JtU3RyZWFtSW50ZXJuYWxzQnVpbHRp
bnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MTM0NSwxNCArMTM0NSwxOCBAQAogCQk0NjdBNjhENzI3NUVBOTkxMDA5QjMxQzUgLyogU2hhcmVk
V29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NjdBNjhENDI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY3QTY4RDgy
NzVFQTk5NTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3QTY4RDUyNzVFQTk4QzAwOUIz
MUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oICovOyB9OwogCQk0NjdBNjhEOTI3NUVB
OTk4MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0E2OEQ2Mjc1RUE5OEMwMDlCMzFDNSAv
KiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCTQ2N0E2OERBMjc1RUE5OUMwMDlCMzFDNSAvKiBTaGFyZWRX
b3JrZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NjdBNjhEMjI3NUVBOThBMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oICov
OyB9OwogCQk0NjgyRDIwMDFGNzk3ODMwMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODJE
MUZGMUY3OTc4MjMwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODM0NEUwMUVEREZB
QUEwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDY4MzQ0REUxRURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4
M0RGNDAyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODNERjNFMjc2
N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmggKi87IH07CiAJ
CTQ2ODNERjQxMjc2N0U5MUEwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzREYzQjI3NjdE
RjI2MDA3RDAwQzggLyogU2hhZG93UmVhbG1HbG9iYWxTY29wZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODhFRTNDMjZERDI2MTAwMDJBRjVD
NCAvKiBDcm9zc09yaWdpbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2ODhFRTNBMjZERDI2MEMwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0Njk0
M0RDODI3NjNGODEyMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5NDNEQzUyNzYz
RjgwRDAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0Njk0M0RDOTI3NjNGODE3
MDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBF
IC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0Njk0M0RDQTI3NjNGODFDMDA0QjYxMEUgLyog
U2hhcmVkV29ya2VyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2OTQzREM0Mjc2M0Y4MEQwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJQcm92
aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTQ2OTg1RjIzMjdBNEE2QUQwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTg1RjIyMjdBNEE2ODYwMDk3
QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0NjlDQ0NGRTI2OUQwMjFDMDA2RTAzMTQgLyogQnJvYWRjYXN0
Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDY5Q0NDRkMyNjlEMDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjlENzdCODI3MDE2MjUx
MDAxNDJGQTYgLyogTmF2aWdhdGlvblJlcXVlc3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5RDc3QjYyNzAxNjI1MDAwMTQyRkE2IC8qIE5hdmln
YXRpb25SZXF1ZXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk0NkE3OEIzNDI3OTlCRDcxMDAxMTU0RkUgLyogV29ya2VyT3B0aW9ucy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxQjFEMjYyNkYx
OEE0QjAwODgyREEyIC8qIFdvcmtlck9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkFBQUEzRDI1RDM2MzIwMDBCQUY0MkYgLyogQXVk
aW9GaWxlUmVhZGVyQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2QUFBQTNBMjVEMzYzMTQwMEJBRjQyRiAvKiBBdWRpb0ZpbGVSZWFkZXJDb2Nv
YS5oICovOyB9OwogCQk0NkI2M0Y2QzFDNkU4RDE5MDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1
c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZC
NjNGNkIxQzZFOENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI2NTBERDIyOTYyNjI3
MDBGRDhBQTQgLyogUGFnZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjY1MERCMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRp
Zmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0xMzczLDYgKzEzNzcsNyBAQAogCQk0NkM2OTZDQzFFNzIwNUZDMDA1OTc5MzcgLyogQ1BVTW9u
aXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NkM2OTZDQTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgKi87IH07CiAJCTQ2Qzgz
RUZFMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDODNFRkMxQTlCQkUyOTAwQTc5QTQxIC8qIEdl
b05vdGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDZDQTlDNDQxRjk3QkJFOTAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDQTlDNDExRjk3QkJF
NzAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2Q0Y1MDRBMjdBQjFFQTQwMDcwREJDOCAvKiBTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDZDRjUwNDgyN0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDZEMDAwNDAyNkEwRkVCMzAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkQwMDAzRTI2QTBGRTZG
MDBEMUJGMUUgLyogU3VibWl0RXZlbnQuaCAqLzsgfTsKIAkJNDZEQTRBMDIyN0FCMDM5MzAwRTM3
NUE4IC8qIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REE0QTAwMjdBQjAzOEQwMEUzNzVBOCAvKiBUcmFuc2Zl
cnJlZE1lc3NhZ2VQb3J0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNDZEQkI2NTAxQUI4Qzk2RjAwRDlBODEzIC8qIFBvd2VyT2JzZXJ2ZXJNYWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REJCNjRF
MUFCOEM5NkYwMEQ5QTgxMyAvKiBQb3dlck9ic2VydmVyTWFjLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTkyMzksOCArOTI0NCw2IEBACiAJCTQ2
N0E2OENGMjc1RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2N0E2OEQwMjc1RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3Jr
ZXJUaHJlYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFkLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3QTY4RDEyNzVFQTk4QTAwOUIzMUM1IC8q
IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRX
b3JrZXJTY3JpcHRMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NjdB
NjhEMjI3NUVBOThBMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTaGFyZWRXb3JrZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTQ2N0E2OEQzMjc1RUE5OEIwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NjdBNjhENDI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhy
ZWFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclRocmVhZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NjdBNjhENTI3NUVBOThDMDA5QjMxQzUgLyogU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdBNjhENjI3NUVBOThDMDA5QjMxQzUg
LyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkyNTYsNiArOTI1
OSwxMiBAQAogCQk0NjgzREYzRTI3NjdERjk4MDA3RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2Jh
bFNjb3BlQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NoYWRvd1Jl
YWxtR2xvYmFsU2NvcGVCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODhF
RTNBMjZERDI2MEMwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q3Jvc3NPcmlnaW5Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OEI4QkRF
MjVDQzg0OTMwMEY2NzgyMiAvKiBKU0Jhc2VBdWRpb0NvbnRleHRDdXN0b20uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNCYXNlQXVkaW9Db250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQzIyNzYzRjgwQzAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlclBy
b3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb3ZpZGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQzQyNzYzRjgwRDAwNEI2MTBFIC8q
IFNoYXJlZFdvcmtlclByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb3Zp
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzREM1Mjc2M0Y4MEQwMDRC
NjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDY5NDNEQzYyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzREM3Mjc2M0Y4MEUwMDRCNjEw
RSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDY5ODVGMjIyN0E0QTY4NjAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktleS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJLZXkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDY5Q0NDRkEyNjlEMDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5u
ZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnJvYWRjYXN0Q2hhbm5lbC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OUNDQ0ZDMjY5RDAyMDIwMDZFMDMxNCAvKiBCcm9hZGNh
c3RDaGFubmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJyb2FkY2FzdENoYW5uZWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5Q0NDRkQyNjlEMDIwMzAwNkUwMzE0IC8qIEJyb2FkY2Fz
dENoYW5uZWwuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IEJyb2FkY2FzdENoYW5uZWwuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtOTI5Niw2ICs5MzA1LDggQEAKIAkJNDZDODNFRkMxQTlCQkUyOTAwQTc5
QTQxIC8qIEdlb05vdGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdl
b05vdGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2Q0E5QzQxMUY5N0JC
RTcwMDRDRkMzQSAvKiBWaXNpYmlsaXR5U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVmlzaWJpbGl0eVN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2Q0E5QzQyMUY5N0JCRTcwMDRDRkMzQSAvKiBWaXNpYmlsaXR5U3RhdGUuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFZpc2liaWxpdHlTdGF0ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ2Q0Y1MDQ4MjdBQjFFQTEwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkNGNTA0OTI3QUIxRUExMDA3MERCQzggLyog
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NkQwMDAzQzI2QTBGRTZGMDBEMUJGMUUgLyogU3VibWl0RXZlbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3VibWl0RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NkQwMDAzRTI2QTBGRTZGMDBEMUJGMUUgLyogU3VibWl0RXZlbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3VibWl0RXZlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZEMDAwM0YyNkEwRkU3MDAwRDFCRjFFIC8qIFN1Ym1pdEV2
ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTdWJtaXRFdmVudC5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTU1OCw2ICsyMTU2OSw4IEBACiAJCTQ2NDdDRTYxMjdB
QUUxREEwMDlDQkQ0OCAvKiBjb250ZXh0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQk0NkNGNTA0OTI3QUIxRUExMDA3MERCQzggLyogU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXIuY3BwICovLAorCQkJCTQ2Q0Y1MDQ4MjdBQjFFQTEwMDcwREJDOCAvKiBT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oICovLAogCQkJCTQ2N0E2OEQwMjc1RUE5ODkwMDlC
MzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuY3BwICovLAogCQkJCTQ2N0E2OEQ0Mjc1RUE5OEIw
MDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuaCAqLywKIAkJCQk0NjdBNjhDRjI3NUVBOTg5
MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3BwICovLApAQCAtMjE1NzcsOCAr
MjE1OTAsMTIgQEAKIAkJCQk0NjY5NENFMTI3NTk0NDhDMDBFMzE1MEUgLyogU2hhcmVkV29ya2Vy
R2xvYmFsU2NvcGUuaCAqLywKIAkJCQk0NjY5NENFMDI3NTk0NDhDMDBFMzE1MEUgLyogU2hhcmVk
V29ya2VyR2xvYmFsU2NvcGUuaWRsICovLAogCQkJCTQ2RUM0NDQ4MjdBQjMzN0YwMEZGQ0Q5NiAv
KiBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmggKi8sCi0JCQkJNDY3QTY4RDMyNzVFQTk4QjAwOUIz
MUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuY3BwICovLAotCQkJCTQ2N0E2OEQyMjc1RUE5OEEw
MDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggKi8sCisJCQkJNDY5ODVGMjIyN0E0QTY4
NjAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktleS5oICovLAorCQkJCTQ2OTQzREM2Mjc2M0Y4MEUw
MDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk0Njk0
M0RDNTI3NjNGODBEMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oICov
LAorCQkJCTQ2OTQzREM3Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLmggKi8sCisJCQkJNDY5NDNEQzIyNzYzRjgwQzAwNEI2MTBFIC8qIFNoYXJlZFdvcmtl
clByb3ZpZGVyLmNwcCAqLywKKwkJCQk0Njk0M0RDNDI3NjNGODBEMDA0QjYxMEUgLyogU2hhcmVk
V29ya2VyUHJvdmlkZXIuaCAqLywKIAkJCQk0NjdBNjhEMTI3NUVBOThBMDA5QjMxQzUgLyogU2hh
cmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcCAqLywKIAkJCQk0NjdBNjhENTI3NUVBOThDMDA5QjMx
QzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmggKi8sCiAJCQkpOwpAQCAtMzcxOTAsOCAr
MzcyMDcsMTIgQEAKIAkJCQk4MzRERkFEMDFGN0RBRTVEMDBDMjcyNUIgLyogU2hhcmVkU3RyaW5n
SGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFQTMwOTlFQjc4QzAwNTZFNTgxIC8qIFNo
YXJlZFRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURDMDRGRTI3QTgzQzkzMDA4Q0Y5Njgg
LyogU2hhcmVkVmlkZW9GcmFtZUluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2Q0Y1MDRBMjdB
QjFFQTQwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDZFQzQ0NEEyN0FCMzM4OTAwRkZDRDk2IC8qIFNoYXJlZFdvcmtlcklkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ2N0E2OERBMjc1RUE5OUMwMDlCMzFDNSAvKiBTaGFy
ZWRXb3JrZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0Njk4NUYyMzI3QTRBNkFEMDA5
N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggaW4gSGVhZGVycyAqLywKKwkJCQk0Njk0M0RDODI3
NjNGODEyMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNDY5NDNEQzkyNzYzRjgxNzAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2OTQzRENBMjc2M0Y4MUMwMDRCNjEw
RSAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY3QTY4RDgy
NzVFQTk5NTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDY3QTY4RDcyNzVFQTk5MTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDY3QTY4RDkyNzVFQTk5ODAwOUIzMUM1IC8qIFNoYXJlZFdv
cmtlclRocmVhZFByb3h5LmggaW4gSGVhZGVycyAqLywKQEAgLTM4MDUxLDYgKzM4MDcyLDcgQEAK
IAkJCQlFMTI3MUEwQjBFRUVDNzdBMDBGNjEyMTMgLyogV29ya2VyTmF2aWdhdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNUNCMDUyNTFGQjUxRjNBMDAwODlCOTcgLyogV29ya2VyTmV0d29ya0Fn
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTQzNDY1MTBGNTQ2QTgyMDBCMEYxQkEgLyogV29y
a2VyT2JqZWN0UHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2QTc4QjM0Mjc5OUJENzEwMDEx
NTRGRSAvKiBXb3JrZXJPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0Q2QUFFNjI1MjRF
RTFDMDA0MjhCNEIgLyogV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTgzOUEwOTVEMjUyNEYzN0YwMEVFRjMyOCAvKiBXb3JrZXJPcldvcmtsZXRTY3JpcHRD
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0Y2QUVCRjI1MjdCQjBDMDAzNEJDRDMg
LyogV29ya2VyT3JXb3JrbGV0VGhyZWFkLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xvZ2dpbmcuaAppbmRleCA1ZmVmNDJlZTA2ZWMuLmZhN2QyMzAyZWMzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvZ2dpbmcuaApAQCAtMTI3LDYgKzEyNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBNKFdlYkdMKSBcCiAgICAgTShXZWJSVEMpIFwKICAgICBNKFdlYlJUQ1N0YXRzKSBcCisg
ICAgTShXb3JrZXIpIFwKICAgICBNKFhSKSBcCiAgICAgTShXaGVlbEV2ZW50VGVzdE1vbml0b3Ip
IFwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAK
aW5kZXggZmU5NGZkZDhhNTE1Li40NmRjNDU0ZGZkYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxMyArMjYsMTcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKIAorI2luY2x1ZGUgIkNsaWVu
dE9yaWdpbi5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKICNpbmNsdWRlICJNZXNzYWdlQ2hhbm5lbC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0Lmgi
CisjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
Ci0jaW5jbHVkZSAiU2hhcmVkV29ya2VyTWFuYWdlci5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtl
clRocmVhZFByb3h5LmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyT3B0
aW9ucy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXJzRmFjdG9yeS5oPgog
I2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC00MSw4ICs0NSwzMSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChTaGFyZWRXb3Jr
ZXIpOwogCi1FeGNlcHRpb25PcjxSZWY8U2hhcmVkV29ya2VyPj4gU2hhcmVkV29ya2VyOjpjcmVh
dGUoRG9jdW1lbnQmIGRvY3VtZW50LCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MsIFN0
cmluZyYmIHNjcmlwdFVSTFN0cmluZywgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8U3RyaW5n
LCBXb3JrZXJPcHRpb25zPj4mJiBtYXliZU9wdGlvbnMpCisjZGVmaW5lIFNIQVJFRF9XT1JLRVJf
UkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gW2lk
ZW50aWZpZXI9JXtwdWJsaWN9c10gU2hhcmVkV29ya2VyOjoiIGZtdCwgdGhpcywgbV9pZGVudGlm
aWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgU0hB
UkVEX1dPUktFUl9SRUxFQVNFX0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1Io
U2hhcmVkV29ya2VyLCAiJXAgLSBbaWRlbnRpZmllcj0le3B1YmxpY31zXSBTaGFyZWRXb3JrZXI6
OiIgZm10LCB0aGlzLCBtX2lkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAjI19f
VkFfQVJHU19fKQorCitzdGF0aWMgSGFzaE1hcDxTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LCBTaGFyZWRXb3JrZXIqPiYgYWxsU2hhcmVkV29ya2VycygpCit7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLCBTaGFyZWRXb3JrZXIqPj4gYWxsU2hhcmVkV29ya2VyczsKKyAg
ICByZXR1cm4gYWxsU2hhcmVkV29ya2VyczsKK30KKworU2hhcmVkV29ya2VyKiBTaGFyZWRXb3Jr
ZXI6OmZyb21JZGVudGlmaWVyKFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgaWRlbnRpZmll
cikKK3sKKyAgICByZXR1cm4gYWxsU2hhcmVkV29ya2VycygpLmdldChpZGVudGlmaWVyKTsKK30K
Kworc3RhdGljIGlubGluZSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKiBtYWluVGhyZWFk
Q29ubmVjdGlvbigpCit7CisgICAgcmV0dXJuIFNoYXJlZFdvcmtlclByb3ZpZGVyOjpzaW5nbGV0
b24oKS5zaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxTaGFy
ZWRXb3JrZXI+PiBTaGFyZWRXb3JrZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmlu
ZyYmIHNjcmlwdFVSTFN0cmluZywgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBX
b3JrZXJPcHRpb25zPj4mJiBtYXliZU9wdGlvbnMpCiB7CisgICAgaWYgKCFtYWluVGhyZWFkQ29u
bmVjdGlvbigpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3Is
ICJTaGFyZWQgd29ya2VycyBhcmUgbm90IHN1cHBvcnRlZCIgfTsKKwogICAgIGlmICghZG9jdW1l
bnQuc2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3NTaGFyZWRXb3JrZXJzKGRvY3VtZW50LnRvcE9y
aWdpbigpKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJUaGlz
IGlmcmFtZSBkb2Vzbid0IGhhdmUgc3RvcmFnZSBhY2Nlc3MiX3MgfTsKIApAQCAtNjcsMjYgKzk0
LDM0IEBAIEV4Y2VwdGlvbk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBTaGFyZWRXb3JrZXI6OmNyZWF0
ZShEb2N1bWVudCYgZG9jdW1lbnQsIEpTQzo6UnVuCiAgICAgYXV0byBjaGFubmVsID0gTWVzc2Fn
ZUNoYW5uZWw6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgYXV0byB0cmFuc2ZlcnJlZFBvcnQgPSBj
aGFubmVsLT5wb3J0MigpLmRpc2VudGFuZ2xlKCk7CiAKLSAgICBhdXRvIHNoYXJlZFdvcmtlciA9
IGFkb3B0UmVmKCpuZXcgU2hhcmVkV29ya2VyKGRvY3VtZW50LCBjaGFubmVsLT5wb3J0MSgpLCBy
dW50aW1lRmxhZ3MpKTsKKyAgICBhdXRvIHNoYXJlZFdvcmtlciA9IGFkb3B0UmVmKCpuZXcgU2hh
cmVkV29ya2VyKGRvY3VtZW50LCB1cmwsIGNoYW5uZWwtPnBvcnQxKCkpKTsKICAgICBzaGFyZWRX
b3JrZXItPnN1c3BlbmRJZk5lZWRlZCgpOwogCi0gICAgU2hhcmVkV29ya2VyTWFuYWdlcjo6c2lu
Z2xldG9uKCkuY29ubmVjdCh1cmwsIHNoYXJlZFdvcmtlci5nZXQoKSwgV1RGTW92ZSh0cmFuc2Zl
cnJlZFBvcnQpLCBXVEZNb3ZlKG9wdGlvbnMpKTsKKyAgICBDbGllbnRPcmlnaW4gY2xpZW50T3Jp
Z2luIHsgZG9jdW1lbnQudG9wRG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSwgZG9j
dW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkgfTsKKyAgICBtYWluVGhyZWFkQ29ubmVjdGlv
bigpLT5yZXF1ZXN0U2hhcmVkV29ya2VyKGNsaWVudE9yaWdpbiwgc2hhcmVkV29ya2VyLT5pZGVu
dGlmaWVyKCksIHVybCwgV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBvcHRpb25zKTsKICAgICBy
ZXR1cm4gc2hhcmVkV29ya2VyOwogfQogCi1TaGFyZWRXb3JrZXI6OlNoYXJlZFdvcmtlcihEb2N1
bWVudCYgZG9jdW1lbnQsIFJlZjxNZXNzYWdlUG9ydD4mJiBwb3J0LCBKU0M6OlJ1bnRpbWVGbGFn
cyBydW50aW1lRmxhZ3MpCitTaGFyZWRXb3JrZXI6OlNoYXJlZFdvcmtlcihEb2N1bWVudCYgZG9j
dW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBSZWY8TWVzc2FnZVBvcnQ+JiYgcG9ydCkKICAgICA6IEFj
dGl2ZURPTU9iamVjdCgmZG9jdW1lbnQpCisgICAgLCBtX2lkZW50aWZpZXIoU2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKICAgICAsIG1fcG9ydChXVEZNb3ZlKHBvcnQp
KQogICAgICwgbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yKCJTaGFyZWRXb3JrZXI6IiArIEluc3Bl
Y3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCkpCi0gICAgLCBtX3J1
bnRpbWVGbGFncyhydW50aW1lRmxhZ3MpCi0gICAgLCBtX2NyZWF0aW9uVGltZShNb25vdG9uaWNU
aW1lOjpub3coKSkKLSAgICAsIG1fcHJveHkoU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0
ZSgqdGhpcykpCiB7CisgICAgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRygiU2hhcmVkV29ya2Vy
OiIpOworICAgIGFsbFNoYXJlZFdvcmtlcnMoKS5hZGQobV9pZGVudGlmaWVyLCB0aGlzKTsKKwor
ICAgIC8vIElmIHRoZSBzaGFyZWQgd29ya2VyIFVSTCBpcyBhIGJsb2IgVVJMLCBtYWtlIHN1cmUg
dG8ga2VlcCBpdCBhbGl2ZSB1bnRpbCB0aGUgd29ya2VyIGhhcyBmaW5pc2hlZCBsb2FkaW5nLgor
ICAgIGlmICh1cmwucHJvdG9jb2xJc0Jsb2IoKSkKKyAgICAgICAgbV9ibG9iVVJMRXh0ZW5zaW9u
ID0gdXJsOwogfQogCiBTaGFyZWRXb3JrZXI6On5TaGFyZWRXb3JrZXIoKQogewotICAgIG1fcHJv
eHkud29ya2VyT2JqZWN0RGVzdHJveWVkKCk7CisgICAgQVNTRVJUKGFsbFNoYXJlZFdvcmtlcnMo
KS5nZXQobV9pZGVudGlmaWVyKSA9PSB0aGlzKTsKKyAgICBTSEFSRURfV09SS0VSX1JFTEVBU0Vf
TE9HKCJ+U2hhcmVkV29ya2VyOiIpOworICAgIGFsbFNoYXJlZFdvcmtlcnMoKS5yZW1vdmUobV9p
ZGVudGlmaWVyKTsKKyAgICBBU1NFUlQoIW1faXNBY3RpdmUpOwogfQogCiBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBTaGFyZWRXb3JrZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdApA
QCAtMTA0LDE5ICsxMzksMjkgQEAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgU2hhcmVkV29ya2VyOjpl
dmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0CiAgICAgcmV0dXJuIFNoYXJlZFdvcmtlckV2ZW50
VGFyZ2V0SW50ZXJmYWNlVHlwZTsKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXI6OnN0b3AoKQordm9p
ZCBTaGFyZWRXb3JrZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpCiB7Ci0gICAgdGVybWluYXRlKCk7CisgICAgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRygi
ZmluaXNoTG9hZGluZzogc3VjY2Vzcz0lZCIsIGVycm9yLmlzTnVsbCgpKTsKKyAgICBpZiAoIWVy
cm9yLmlzTnVsbCgpKSB7CisgICAgICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqdGhpcywg
VGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5l
cnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVz
KSk7CisgICAgICAgIG1faXNBY3RpdmUgPSBmYWxzZTsKKyAgICB9CisgICAgbV9ibG9iVVJMRXh0
ZW5zaW9uLmNsZWFyKCk7CiB9CiAKIGJvb2wgU2hhcmVkV29ya2VyOjp2aXJ0dWFsSGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcm94eS5oYXNQZW5kaW5nQWN0aXZp
dHkoKSB8fCBtX2lzTG9hZGluZzsKKyAgICByZXR1cm4gbV9pc0FjdGl2ZTsKIH0KIAotdm9pZCBT
aGFyZWRXb3JrZXI6OnRlcm1pbmF0ZSgpCit2b2lkIFNoYXJlZFdvcmtlcjo6c3RvcCgpCiB7Ci0g
ICAgbV9wcm94eS50ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpOworICAgIFNIQVJFRF9XT1JL
RVJfUkVMRUFTRV9MT0coInN0b3A6Iik7CisgICAgbV9pc0FjdGl2ZSA9IGZhbHNlOworICAgIG1h
aW5UaHJlYWRDb25uZWN0aW9uKCktPnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KG1faWRl
bnRpZmllcik7CiB9CiAKKyN1bmRlZiBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HCisjdW5kZWYg
U0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPR19FUlJPUgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5oCmluZGV4IGU1
NWIxY2Y1NTEzZC4uYmU1Nzc4MzVhMDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNywzOSArMjcsMzYgQEAKIAogI2luY2x1ZGUgIkFic3RyYWN0
V29ya2VyLmgiCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0jaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvUnVudGltZUZsYWdzLmg+CisjaW5jbHVkZSAiQmxvYlVSTC5oIgorI2luY2x1ZGUg
IlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvTW9ub3Rvbmlj
VGltZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lc3NhZ2VQb3J0OwotY2xh
c3MgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk7CitjbGFzcyBSZXNvdXJjZUVycm9yOwogCiBzdHJ1
Y3QgV29ya2VyT3B0aW9uczsKIAogY2xhc3MgU2hhcmVkV29ya2VyIGZpbmFsIDogcHVibGljIEFi
c3RyYWN0V29ya2VyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKFNoYXJlZFdvcmtlcik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9y
PFJlZjxTaGFyZWRXb3JrZXI+PiBjcmVhdGUoRG9jdW1lbnQmLCBKU0M6OlJ1bnRpbWVGbGFncywg
U3RyaW5nJiYgc2NyaXB0VVJMLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxTdHJpbmcsIFdv
cmtlck9wdGlvbnM+PiYmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFNoYXJlZFdvcmtl
cj4+IGNyZWF0ZShEb2N1bWVudCYsIFN0cmluZyYmIHNjcmlwdFVSTCwgc3RkOjpvcHRpb25hbDxz
dGQ6OnZhcmlhbnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4mJik7CiAgICAgflNoYXJlZFdvcmtl
cigpOwogCisgICAgc3RhdGljIFNoYXJlZFdvcmtlciogZnJvbUlkZW50aWZpZXIoU2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBp
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgTWVzc2FnZVBv
cnQmIHBvcnQoKSBjb25zdCB7IHJldHVybiBtX3BvcnQuZ2V0KCk7IH0KLSAgICBKU0M6OlJ1bnRp
bWVGbGFncyBydW50aW1lRmxhZ3MoKSB7IHJldHVybiBtX3J1bnRpbWVGbGFnczsgfQogCiAgICAg
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyRm9ySW5zcGVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9p
ZGVudGlmaWVyRm9ySW5zcGVjdG9yOyB9Ci0gICAgTW9ub3RvbmljVGltZSBjcmVhdGlvblRpbWUo
KSBjb25zdCB7IHJldHVybiBtX2NyZWF0aW9uVGltZTsgfQogCi0gICAgU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkmIHByb3h5KCkgeyByZXR1cm4gbV9wcm94eTsgfQotCi0gICAgdm9pZCBzZXRJc0xv
YWRpbmcoYm9vbCBpc0xvYWRpbmcpIHsgbV9pc0xvYWRpbmcgPSBpc0xvYWRpbmc7IH0KKyAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgLy8gRXZl
bnRUYXJnZXQuCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0IGZpbmFsOwogCiBwcml2YXRlOgotICAgIFNoYXJlZFdvcmtlcihEb2N1bWVu
dCYsIFJlZjxNZXNzYWdlUG9ydD4mJiwgSlNDOjpSdW50aW1lRmxhZ3MpOwotCi0gICAgdm9pZCB0
ZXJtaW5hdGUoKTsKKyAgICBTaGFyZWRXb3JrZXIoRG9jdW1lbnQmLCBjb25zdCBVUkwmLCBSZWY8
TWVzc2FnZVBvcnQ+JiYpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQuCiAgICAgRXZlbnRUYXJnZXRJ
bnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbDsKQEAgLTcwLDEyICs2
NywxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgdmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNv
bnN0IGZpbmFsOwogCiAKKyAgICBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIG1faWRlbnRp
ZmllcjsKICAgICBSZWY8TWVzc2FnZVBvcnQ+IG1fcG9ydDsKICAgICBTdHJpbmcgbV9pZGVudGlm
aWVyRm9ySW5zcGVjdG9yOwotICAgIEpTQzo6UnVudGltZUZsYWdzIG1fcnVudGltZUZsYWdzOwot
ICAgIE1vbm90b25pY1RpbWUgbV9jcmVhdGlvblRpbWU7Ci0gICAgU2hhcmVkV29ya2VyVGhyZWFk
UHJveHkmIG1fcHJveHk7IC8vIFRoZSBwcm94eSBvdXRsaXZlcyB0aGUgd29ya2VyIHRvIHBlcmZv
cm0gdGhyZWFkIHNodXRkb3duLgotICAgIGJvb2wgbV9pc0xvYWRpbmcgeyBmYWxzZSB9OworICAg
IEJsb2JVUkxIYW5kbGUgbV9ibG9iVVJMRXh0ZW5zaW9uOworICAgIGJvb2wgbV9pc0FjdGl2ZSB7
IHRydWUgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaWRsCmluZGV4IGIxNzFjOWVkZjgxYi4uNGM3
NDE1NGQ4MjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlci5pZGwKQEAgLTI4LDcgKzI4LDcgQEAKICAgICBFeHBvc2VkPVdpbmRvdwogXQogaW50ZXJm
YWNlIFNoYXJlZFdvcmtlciA6IEV2ZW50VGFyZ2V0IHsKLSAgW0NhbGxXaXRoPURvY3VtZW50JlJ1
bnRpbWVGbGFnc10gY29uc3RydWN0b3IoVVNWU3RyaW5nIHNjcmlwdFVSTCwgb3B0aW9uYWwgKERP
TVN0cmluZyBvciBXb3JrZXJPcHRpb25zKSBvcHRpb25zKTsKKyAgW0NhbGxXaXRoPURvY3VtZW50
XSBjb25zdHJ1Y3RvcihVU1ZTdHJpbmcgc2NyaXB0VVJMLCBvcHRpb25hbCAoRE9NU3RyaW5nIG9y
IFdvcmtlck9wdGlvbnMpIG9wdGlvbnMpOwogCiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZXNzYWdl
UG9ydCBwb3J0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlcktleS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyS2V5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41Zjll
NmRjOTBiYTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJLZXkuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvSGFzaGVy
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBTaGFyZWRXb3JrZXJLZXkgeworICAg
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW47CisgICAgVVJMIHVybDsKKyAgICBTdHJpbmcg
bmFtZTsKKworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKK307CisKK2lubGluZSB1bnNpZ25l
ZCBTaGFyZWRXb3JrZXJLZXk6Omhhc2goKSBjb25zdAoreworICAgIEhhc2hlciBoYXNoZXI7Cisg
ICAgYWRkKGhhc2hlciwgb3JpZ2luLmhhc2goKSk7CisgICAgYWRkKGhhc2hlciwgdXJsKTsKKyAg
ICBhZGQoaGFzaGVyLCBuYW1lKTsKKyAgICByZXR1cm4gaGFzaGVyLmhhc2goKTsKK30KKworaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRXb3JrZXJLZXkmIGEsIGNvbnN0IFNoYXJl
ZFdvcmtlcktleSYgYikKK3sKKyAgICByZXR1cm4gYS5vcmlnaW4gPT0gYi5vcmlnaW4gJiYgYS51
cmwgPT0gYi51cmwgJiYgYS5uYW1lID09IGIubmFtZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8
V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5PiB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29u
c3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBrZXkpCisgICAgeworICAgICAgICByZXR1cm4g
a2V5Lmhhc2goKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJLZXkmIGEsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgYikK
KyAgICB7CisgICAgICAgIHJldHVybiBhID09IGI7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0
IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307CisKK3RlbXBs
YXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5PiA6IEdlbmVy
aWNIYXNoVHJhaXRzPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleT4geworICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7CisgICAgc3RhdGljIHZvaWQgY29u
c3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgc2xvdCkgeyBuZXcg
KE5vdE51bGwsICZzbG90LnVybCkgVVJMKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQor
ICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtl
cktleSYgc2xvdCkgeyByZXR1cm4gc2xvdC51cmwuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsg
fQorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBhNzQxMDg3N2RiMzIuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDEwOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIlNoYXJlZFdvcmtlck1hbmFnZXIuaCIKLQotI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBv
bGljeS5oIgotI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJMb2FkZXJTdHJhdGVn
eS5oIgotI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRl
Z2llcy5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtl
ckdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgiCi0j
aW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkuaCIKLSNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCi0jaW5jbHVkZSAiV29ya2Vy
U2NyaXB0TG9hZGVyLmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1TaGFyZWRXb3JrZXJN
YW5hZ2VyJiBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24oKQotewotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxTaGFyZWRXb3JrZXJNYW5hZ2VyPiBpbnN0YW5jZTsKLSAgICByZXR1cm4g
aW5zdGFuY2UuZ2V0KCk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyTWFuYWdlcjo6Y29ubmVjdChj
b25zdCBVUkwmIHVybCwgU2hhcmVkV29ya2VyJiB3b3JrZXIsIFRyYW5zZmVycmVkTWVzc2FnZVBv
cnQmJiBtZXNzYWdlUG9ydCwgV29ya2VyT3B0aW9ucyYmIG9wdGlvbnMpCi17Ci0gICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAvLyBGSVhNRTogSGFuZGxlIHdvcmtlcnMgZnJvbSBv
dGhlciBwcm9jZXNzZXMsIHdoaWNoIHdpbGwgcHJvYmFibHkgcmVxdWlyZSBtb3ZpbmcgY29ubmVj
dCB0byB0aGUgRnJhbWVMb2FkZXJDbGllbnQgb3Igc29tZXRoaW5nLgotICAgIC8vIE1heWJlIHNv
bWV0aGluZyBtb3JlIGxpa2Ugd2hhdCBTZXJ2aWNlV29ya2VycyBkb2VzLgotCi0gICAgLy8gRklY
TUU6IENoZWNrIGlmIHdlIGFscmVhZHkgbWFkZSBhIHRocmVhZC4KLSAgICAvLyBGSVhNRTogQ2hl
Y2sgaWYgdGhlcmUncyBhbHJlYWR5IGEgc2hhcmVkIHdvcmtlciBhbmQgdXNlIHRoYXQgaWYgdGhl
cmUgaXMuCi0KLSAgICBhdXRvIGxvYWRlciA9IG1ha2VVbmlxdWVSZWY8U2hhcmVkV29ya2VyU2Ny
aXB0TG9hZGVyPih1cmwsIHdvcmtlciwgV1RGTW92ZShtZXNzYWdlUG9ydCksIFdURk1vdmUob3B0
aW9ucykpOwotICAgIGF1dG8gaWRlbnRpZmllciA9IGxvYWRlci0+aWRlbnRpZmllcigpOwotICAg
IG1fbG9hZGVycy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShsb2FkZXIpKTsKLX0KLQotdm9pZCBT
aGFyZWRXb3JrZXJNYW5hZ2VyOjpzY3JpcHRMb2FkRmFpbGVkKFNoYXJlZFdvcmtlclNjcmlwdExv
YWRlciYgbG9hZGVyKQotewotICAgIEFjdGl2ZURPTU9iamVjdDo6cXVldWVUYXNrVG9EaXNwYXRj
aEV2ZW50KGxvYWRlci53b3JrZXIoKSwgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywg
RXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7Ci0gICAgbV9sb2FkZXJzLnJlbW92ZShsb2FkZXIu
aWRlbnRpZmllcigpKTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzY3JpcHRMb2Fk
ZWRTdWNjZXNzZnVsbHkoU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJiBsb2FkZXIsIGNvbnN0IFNj
cmlwdEJ1ZmZlciYgc2NyaXB0QnVmZmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBTaGFyZWRXb3JrZXImIHNoYXJlZFdvcmtlciwgVHJhbnNmZXJyZWRN
ZXNzYWdlUG9ydCYmIHRyYW5zZmVycmVkUG9ydCkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwotICAgIGF1dG8mIHdvcmtlciA9IGxvYWRlci53b3JrZXIoKTsKLSAgICBhdXRvJiBv
cHRpb25zID0gbG9hZGVyLm9wdGlvbnMoKTsKLQotICAgIGF1dG8mIHByb3h5ID0gc2hhcmVkV29y
a2VyLnByb3h5KCk7Ci0KLSAgICBwcm94eS5zdGFydFdvcmtlckdsb2JhbFNjb3BlKAotICAgICAg
ICBsb2FkZXIudXJsKCksCi0gICAgICAgIG9wdGlvbnMubmFtZSwKLSAgICAgICAgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC51c2VyQWdlbnQobG9hZGVyLnVybCgpKSwKLSAgICAgICAgcGxhdGZvcm1T
dHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmlzT25MaW5lKCksCi0gICAgICAgIHNjcmlw
dEJ1ZmZlciwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jb250ZW50U2VjdXJpdHlQ
b2xpY3koKS0+cmVzcG9uc2VIZWFkZXJzKCksCi0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KCksCi0gICAgICAg
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSgpLAotICAg
ICAgICB3b3JrZXIuY3JlYXRpb25UaW1lKCksCi0gICAgICAgIFJlZmVycmVyUG9saWN5OjpFbXB0
eVN0cmluZywKLSAgICAgICAgb3B0aW9ucy50eXBlLAotICAgICAgICBvcHRpb25zLmNyZWRlbnRp
YWxzLAotICAgICAgICB3b3JrZXIucnVudGltZUZsYWdzKCkKLSAgICApOwotICAgIGlmICghcHJv
eHkudGhyZWFkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04oaXM8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
KTsKLSAgICBhdXRvIHNvdXJjZU9yaWdpbiA9IGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVj
dXRpb25Db250ZXh0KS5zZWN1cml0eU9yaWdpbigpLnRvU3RyaW5nKCk7Ci0KLSAgICBwcm94eS50
aHJlYWQoKS0+cnVuTG9vcCgpLnBvc3RUYXNrKFt0cmFuc2ZlcnJlZFBvcnQgPSBXVEZNb3ZlKHRy
YW5zZmVycmVkUG9ydCksIHNvdXJjZU9yaWdpbiA9IFdURk1vdmUoc291cmNlT3JpZ2luKS5pc29s
YXRlZENvcHkoKV0gKGF1dG8mIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIG11dGFibGUgewotICAg
ICAgICBkb3duY2FzdDxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkucG9zdENvbm5lY3RFdmVudChXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCksIHNvdXJjZU9y
aWdpbik7Ci0gICAgfSk7Ci0KLSAgICBtX2xvYWRlcnMucmVtb3ZlKGxvYWRlci5pZGVudGlmaWVy
KCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2M1MDEwNWY4MDcw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uLmgiCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJFcnJvckV2
ZW50LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNjcmlwdEJ1ZmZlci5oIgor
I2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlclNjcmlwdExv
YWRlci5oIgorI2luY2x1ZGUgIldvcmtlckZldGNoUmVzdWx0LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNF
X0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OiIg
Zm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9H
X0VSUk9SKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICIlcCAtIFNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQor
CitzdGF0aWMgdWludDY0X3QgbG9hZGVySWRlbnRpZmllclNlZWQgPSAwOworCitTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uOjpTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCkgPSBkZWZh
dWx0OworCitTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjp+U2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbigpID0gZGVmYXVsdDsKKwordm9pZCBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uOjpmZXRjaFNjcmlwdEluQ2xpZW50KFVSTCYmIHVybCwgV2ViQ29yZTo6U2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXb3JrZXJPcHRp
b25zJiYgd29ya2VyT3B0aW9ucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXb3JrZXJG
ZXRjaFJlc3VsdCYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisKKyAgICBhdXRvKiB3b3JrZXJPYmplY3QgPSBTaGFyZWRXb3JrZXI6OmZyb21J
ZGVudGlmaWVyKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIENPTk5FQ1RJT05f
UkVMRUFTRV9MT0coImZldGNoU2NyaXB0SW5DbGllbnQ6IHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXI9JXtwdWJsaWN9cywgd29ya2VyPSVwIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHdvcmtlck9iamVjdCk7CisgICAgaWYgKCF3b3Jr
ZXJPYmplY3QpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworCisgICAg
YXV0byBsb2FkZXJJZGVudGlmaWVyID0gKytsb2FkZXJJZGVudGlmaWVyU2VlZDsKKyAgICBhdXRv
IGxvYWRlciA9IG1ha2VVbmlxdWVSZWY8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPihXVEZNb3Zl
KHVybCksICp3b3JrZXJPYmplY3QsIFdURk1vdmUod29ya2VyT3B0aW9ucykpOworICAgIGF1dG8g
bG9hZGVyUHRyID0gbG9hZGVyLnB0cigpOworICAgIG1fbG9hZGVycy5hZGQobG9hZGVySWRlbnRp
ZmllciwgV1RGTW92ZShsb2FkZXIpKTsKKworICAgIGxvYWRlclB0ci0+bG9hZChbdGhpcywgbG9h
ZGVySWRlbnRpZmllciwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmIGZldGNoUmVzdWx0KSBtdXRhYmxlIHsKKyAg
ICAgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiZmV0Y2hTY3JpcHRJbkNsaWVudDogZmluaXNo
ZWQgc2NyaXB0IGxvYWQsIHN1Y2Nlc3M9JWQiLCBmZXRjaFJlc3VsdC5lcnJvci5pc051bGwoKSk7
CisgICAgICAgIGF1dG8gbG9hZGVyID0gbV9sb2FkZXJzLnRha2UobG9hZGVySWRlbnRpZmllcik7
CisgICAgICAgIEFTU0VSVChsb2FkZXIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmZXRj
aFJlc3VsdCk7CisgICAgfSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bjo6bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
YXV0byogd29ya2VyT2JqZWN0ID0gU2hhcmVkV29ya2VyOjpmcm9tSWRlbnRpZmllcihzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9S
KCJub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uOiBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyPSV7cHVibGljfXMsIHdvcmtlcj0lcCwgc3VjY2Vzcz0lZCIsIHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB3b3JrZXJPYmplY3Qs
IGVycm9yLmlzTnVsbCgpKTsKKyAgICBpZiAod29ya2VyT2JqZWN0KQorICAgICAgICB3b3JrZXJP
YmplY3QtPmRpZEZpbmlzaExvYWRpbmcoZXJyb3IpOworfQorCit2b2lkIFNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBh
dXRvKiB3b3JrZXJPYmplY3QgPSBTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVyKHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIpOworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1Io
InBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdDogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
cj0le3B1YmxpY31zLCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRv
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgd29ya2VyT2JqZWN0KTsKKyAgICBpZiAod29ya2VyT2Jq
ZWN0KQorICAgICAgICBBY3RpdmVET01PYmplY3Q6OnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgq
d29ya2VyT2JqZWN0LCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIEVycm9yRXZlbnQ6OmNy
ZWF0ZShlcnJvck1lc3NhZ2UsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB7
IH0pKTsKK30KKworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0cKKyN1bmRlZiBDT05ORUNU
SU9OX1JFTEVBU0VfTE9HX0VSUk9SCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjk1
NmI0NzM0YTEzMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDYyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLmgiCisjaW5jbHVkZSAiVHJhbnNmZXJyZWRNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lc3NhZ2VQb3J0
OworY2xhc3MgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOworCitzdHJ1Y3QgQ2xpZW50T3JpZ2lu
Oworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0Oworc3RydWN0IFdvcmtlck9wdGlvbnM7CisKK2Ns
YXNzIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uPiB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB+U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpOworCisgICAgdmlydHVhbCB2
b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoY29uc3QgQ2xpZW50T3JpZ2luJiwgU2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciwgY29uc3QgVVJMJiwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBj
b25zdCBXb3JrZXJPcHRpb25zJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzaGFyZWRXb3JrZXJP
YmplY3RJc0dvaW5nQXdheShTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKSA9IDA7CisKK3By
b3RlY3RlZDoKKyAgICAvLyBJUEMgbWVzc2FnZXMuCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBm
ZXRjaFNjcmlwdEluQ2xpZW50KFVSTCYmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLCBXb3JrZXJPcHRpb25zJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29y
a2VyRmV0Y2hSZXN1bHQmKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBub3RpZnlXb3Jr
ZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBv
c3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKTsKKworcHJpdmF0ZToKKyAgICBIYXNoTWFwPHVpbnQ2
NF90LCBVbmlxdWVSZWY8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPj4gbV9sb2FkZXJzOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZWJjZDRhN2FlODdhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIlByb2Nlc3NRdWFsaWZpZWQuaCIKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRl
bnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gU2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciA9IFByb2Nlc3NRdWFsaWZpZWQ8T2JqZWN0SWRlbnRpZmllcjxTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyVHlwZT4+OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mZDhlMTk3ZmEyNDIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQ
cm92aWRlci5jcHAKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJQcm92aWRlci5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0YXRpYyBTaGFyZWRXb3JrZXJQcm92aWRlciogc2hhcmVkUHJvdmlkZXI7CisK
Ky8vIEZvciBXZWJLaXRMZWdhY3kuCitjbGFzcyBEdW1teVNoYXJlZFdvcmtlclByb3ZpZGVyIGZp
bmFsIDogcHVibGljIFNoYXJlZFdvcmtlclByb3ZpZGVyIHsKK3B1YmxpYzoKKyAgICBTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uKiBzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCkgZmluYWwgeyBy
ZXR1cm4gbnVsbHB0cjsgfQorfTsKKworU2hhcmVkV29ya2VyUHJvdmlkZXImIFNoYXJlZFdvcmtl
clByb3ZpZGVyOjpzaW5nbGV0b24oKQoreworICAgIGlmICghc2hhcmVkUHJvdmlkZXIpCisgICAg
ICAgIHNoYXJlZFByb3ZpZGVyID0gbmV3IER1bW15U2hhcmVkV29ya2VyUHJvdmlkZXI7CisgICAg
cmV0dXJuICpzaGFyZWRQcm92aWRlcjsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJQcm92aWRlcjo6
c2V0U2hhcmVkUHJvdmlkZXIoU2hhcmVkV29ya2VyUHJvdmlkZXImIG5ld1Byb3ZpZGVyKQorewor
ICAgIFJFTEVBU0VfQVNTRVJUKCFzaGFyZWRQcm92aWRlcik7CisgICAgc2hhcmVkUHJvdmlkZXIg
PSAmbmV3UHJvdmlkZXI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmgKc2ltaWxh
cml0eSBpbmRleCA2NCUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VyTWFuYWdlci5oCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5oCmluZGV4IGFlZjgyNzkwMzU4NC4uY2I1N2NjMWU3
YjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyUHJvdmlkZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjUsMjYgKzI1LDE3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiTWVz
c2FnZVBvcnRJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVy
LmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkV29ya2VyOwotY2xhc3Mg
U2NyaXB0QnVmZmVyOwotc3RydWN0IFdvcmtlck9wdGlvbnM7Ci11c2luZyBUcmFuc2ZlcnJlZE1l
c3NhZ2VQb3J0ID0gc3RkOjpwYWlyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciwgV2Vi
Q29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyPjsKK2NsYXNzIFNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb247CiAKLWNsYXNzIFNoYXJlZFdvcmtlck1hbmFnZXIgeworY2xhc3MgU2hhcmVkV29y
a2VyUHJvdmlkZXIgewogcHVibGljOgotICAgIHN0YXRpYyBTaGFyZWRXb3JrZXJNYW5hZ2VyJiBz
aW5nbGV0b24oKTsKLSAgICB2b2lkIGNvbm5lY3QoY29uc3QgVVJMJiwgU2hhcmVkV29ya2VyJiwg
VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBXb3JrZXJPcHRpb25zJiYpOwotCi0gICAgdm9pZCBz
Y3JpcHRMb2FkRmFpbGVkKFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYpOwotICAgIHZvaWQgc2Ny
aXB0TG9hZGVkU3VjY2Vzc2Z1bGx5KFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYsIGNvbnN0IFNj
cmlwdEJ1ZmZlciYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBTaGFyZWRXb3JrZXImLCBUcmFu
c2ZlcnJlZE1lc3NhZ2VQb3J0JiYpOworICAgIHN0YXRpYyBTaGFyZWRXb3JrZXJQcm92aWRlciYg
c2luZ2xldG9uKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0U2hhcmVkUHJv
dmlkZXIoU2hhcmVkV29ya2VyUHJvdmlkZXImKTsKIAotcHJpdmF0ZToKLSAgICBIYXNoTWFwPFNo
YXJlZFdvcmtlclNjcmlwdExvYWRlcklkZW50aWZpZXIsIFVuaXF1ZVJlZjxTaGFyZWRXb3JrZXJT
Y3JpcHRMb2FkZXI+PiBtX2xvYWRlcnM7CisgICAgdmlydHVhbCB+U2hhcmVkV29ya2VyUHJvdmlk
ZXIoKSB7IH0KKyAgICB2aXJ0dWFsIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24qIHNoYXJl
ZFdvcmtlckNvbm5lY3Rpb24oKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyLmNwcAppbmRleCAzMTFlYmQ2MDc4YmMuLmVhMmUwNDhjNzYyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJT
Y3JpcHRMb2FkZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEt
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI5LDIzICsyOSwyNiBAQAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJTaGFyZWRX
b3JrZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJNYW5hZ2VyLmgiCisjaW5jbHVkZSAiV29y
a2VyRmV0Y2hSZXN1bHQuaCIKICNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCiAjaW5jbHVkZSAi
V29ya2VyU2NyaXB0TG9hZGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIoY29uc3QgVVJMJiB1cmws
IFNoYXJlZFdvcmtlciYgd29ya2VyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgcG9ydCwgV29y
a2VyT3B0aW9ucyYmIG9wdGlvbnMpCi0gICAgOiBtX2lkZW50aWZpZXIoU2hhcmVkV29ya2VyU2Ny
aXB0TG9hZGVySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKLSAgICAsIG1fb3B0aW9ucyhXVEZNb3Zl
KG9wdGlvbnMpKQorU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpTaGFyZWRXb3JrZXJTY3JpcHRM
b2FkZXIoVVJMJiYgdXJsLCBTaGFyZWRXb3JrZXImIHdvcmtlciwgV29ya2VyT3B0aW9ucyYmIG9w
dGlvbnMpCisgICAgOiBtX29wdGlvbnMoV1RGTW92ZShvcHRpb25zKSkKICAgICAsIG1fd29ya2Vy
KHdvcmtlcikKLSAgICAsIG1fcG9ydChXVEZNb3ZlKHBvcnQpKQogICAgICwgbV9sb2FkZXIoV29y
a2VyU2NyaXB0TG9hZGVyOjpjcmVhdGUoKSkKLSAgICAsIG1fcGVuZGluZ0FjdGl2aXR5KHdvcmtl
ci5tYWtlUGVuZGluZ0FjdGl2aXR5KHdvcmtlcikpCi0gICAgLCBtX3VybCh1cmwpCisgICAgLCBt
X3VybChXVEZNb3ZlKHVybCkpCiB7Ci0gICAgbV93b3JrZXItPnNldElzTG9hZGluZyh0cnVlKTsK
LSAgICBtX2xvYWRlci0+bG9hZEFzeW5jaHJvbm91c2x5KCp3b3JrZXIuc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCBSZXNvdXJjZVJlcXVlc3QodXJsKSwgd29ya2VyLndvcmtlckZldGNoT3B0aW9u
cyhvcHRpb25zLCBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpTaGFyZWR3b3JrZXIpLCBDb250
ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6RW5mb3JjZVdvcmtlclNyY0RpcmVjdGl2ZSwg
U2VydmljZVdvcmtlcnNNb2RlOjpBbGwsICp0aGlzLCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9k
ZSgpKTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWQoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIEFTU0VSVCghbV9jb21wbGV0aW9uSGFuZGxlcik7CisgICAgbV9jb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgbV9sb2FkZXIt
PmxvYWRBc3luY2hyb25vdXNseSgqbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
UmVzb3VyY2VSZXF1ZXN0KG1fdXJsKSwgbV93b3JrZXItPndvcmtlckZldGNoT3B0aW9ucyhtX29w
dGlvbnMsIEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OlNoYXJlZHdvcmtlciksIENvbnRlbnRT
ZWN1cml0eVBvbGljeUVuZm9yY2VtZW50OjpFbmZvcmNlV29ya2VyU3JjRGlyZWN0aXZlLCBTZXJ2
aWNlV29ya2Vyc01vZGU6OkFsbCwgKnRoaXMsIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkp
OwogfQogCiB2b2lkIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikKQEAgLTU1LDE2ICs1OCwxMiBAQCB2b2lkIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudAogCiB2b2lk
IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6bm90aWZ5RmluaXNoZWQoKQogewotICAgIG1fd29y
a2VyLT5zZXRJc0xvYWRpbmcoZmFsc2UpOworICAgIGlmIChtX2xvYWRlci0+ZmFpbGVkKCkpCisg
ICAgICAgIHJldHVybiBtX2NvbXBsZXRpb25IYW5kbGVyKHdvcmtlckZldGNoRXJyb3IobV9sb2Fk
ZXItPmVycm9yKCkpKTsKIAotICAgIGF1dG8qIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBtX3dv
cmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmIChtX2xvYWRlci0+ZmFpbGVk
KCkgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIHsKLSAgICAgICAgbV93b3JrZXItPmRpc3Bh
dGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNh
bkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOwotICAgICAgICBTaGFyZWRX
b3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5zY3JpcHRMb2FkRmFpbGVkKCp0aGlzKTsgLy8gZGVs
ZXRlcyB0aGlzLgotICAgIH0gZWxzZSB7CisgICAgaWYgKGF1dG8qIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQgPSBtX3dvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkKCpzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBtX2xvYWRlci0+aWRlbnRpZmllcigpLCBtX2xvYWRlci0+c2NyaXB0KCkudG9TdHJpbmco
KSk7Ci0gICAgICAgIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNpbmdsZXRvbigpLnNjcmlwdExvYWRl
ZFN1Y2Nlc3NmdWxseSgqdGhpcywgbV9sb2FkZXItPnNjcmlwdCgpLCAqbV93b3JrZXItPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgbV93b3JrZXIuZ2V0KCksIHN0ZDo6ZXhjaGFuZ2UobV9wb3J0
LCB7IH0pKTsgLy8gZGVsZXRlcyB0aGlzLgotICAgIH0KKyAgICBtX2NvbXBsZXRpb25IYW5kbGVy
KHsgbV9sb2FkZXItPnNjcmlwdCgpLCBtX2xvYWRlci0+Y2VydGlmaWNhdGVJbmZvKCksIG1fbG9h
ZGVyLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSwgbV9sb2FkZXItPmNyb3NzT3JpZ2luRW1iZWRk
ZXJQb2xpY3koKSwgbV9sb2FkZXItPnJlZmVycmVyUG9saWN5KCksIHsgfSB9KTsgLy8gZGVsZXRl
cyB0aGlzLgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oCmluZGV4
IGJmMWQ0YWVmM2EwOS4uZWIwYjcxNDViZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw3ICsyNSw2
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVBvcnRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgpAQCAtMzgsMzMgKzM3
LDI4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2hhcmVkV29ya2VyOwogY2xhc3Mg
V29ya2VyU2NyaXB0TG9hZGVyOwotCi1jbGFzcyBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI7Ci11
c2luZyBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXJJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmll
cjxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+OwotCi11c2luZyBUcmFuc2ZlcnJlZE1lc3NhZ2VQ
b3J0ID0gc3RkOjpwYWlyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciwgV2ViQ29yZTo6
TWVzc2FnZVBvcnRJZGVudGlmaWVyPjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKIAogY2xh
c3MgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyIDogcHJpdmF0ZSBXb3JrZXJTY3JpcHRMb2FkZXJD
bGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNoYXJl
ZFdvcmtlclNjcmlwdExvYWRlcihjb25zdCBVUkwmLCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJl
ZE1lc3NhZ2VQb3J0JiYsIFdvcmtlck9wdGlvbnMmJik7CisgICAgU2hhcmVkV29ya2VyU2NyaXB0
TG9hZGVyKFVSTCYmLCBTaGFyZWRXb3JrZXImLCBXb3JrZXJPcHRpb25zJiYpOworCisgICAgdm9p
ZCBsb2FkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKT4m
Jik7CiAKLSAgICBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBjb25zdCBVUkwmIHVybCgpIGNv
bnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgU2hhcmVkV29ya2VyJiB3b3JrZXIoKSB7IHJldHVy
biBtX3dvcmtlci5nZXQoKTsgfQotICAgIGNvbnN0IFdvcmtlck9wdGlvbnMmIG9wdGlvbnMoKSB7
IHJldHVybiBtX29wdGlvbnM7IH0KKyAgICBjb25zdCBXb3JrZXJPcHRpb25zJiBvcHRpb25zKCkg
Y29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZCgpIGZpbmFsOwogCi0gICAgY29u
c3QgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAg
Y29uc3QgV29ya2VyT3B0aW9ucyBtX29wdGlvbnM7CiAgICAgY29uc3QgUmVmPFNoYXJlZFdvcmtl
cj4gbV93b3JrZXI7Ci0gICAgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBtX3BvcnQ7CiAgICAgY29u
c3QgUmVmPFdvcmtlclNjcmlwdExvYWRlcj4gbV9sb2FkZXI7Ci0gICAgY29uc3QgUmVmPEFjdGl2
ZURPTU9iamVjdDo6UGVuZGluZ0FjdGl2aXR5PFNoYXJlZFdvcmtlcj4+IG1fcGVuZGluZ0FjdGl2
aXR5OwogICAgIGNvbnN0IFVSTCBtX3VybDsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFdvcmtlckZldGNoUmVzdWx0Jik+IG1fY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3No
YXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDdhOTBkOTgwNTEyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9T
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXIuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJU
aHJlYWRQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyJiBTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI+IHNoYXJlZE1hbmFnZXI7CisgICAgcmV0dXJuIHNo
YXJlZE1hbmFnZXI7Cit9CisKK1NoYXJlZFdvcmtlclRocmVhZFByb3h5KiBTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlcjo6c2hhcmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVk
V29ya2VySWRlbnRpZmllcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV93b3JrZXJNYXAuZ2V0KHNo
YXJlZFdvcmtlcklkZW50aWZpZXIpOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyOjpzdG9wU2hhcmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2Vy
SWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHdvcmtlciA9IG1fd29ya2VyTWFwLnRha2Uoc2hhcmVk
V29ya2VySWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXI6OnN0b3BTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50
aWZpZXI9JSIgUFJJdTY0ICIsIHdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9V
SW50NjQoKSwgd29ya2VyLmdldCgpKTsKKyAgICBpZiAoIXdvcmtlcikKKyAgICAgICAgcmV0dXJu
OworCisgICAgd29ya2VyLT5zZXRBc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKCk7CisKKyAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gZGVhbCB3aXRoIHRoZSB0aHJlYWQgYmVpbmcg
dW5yZXNwb25zaXZlIGhlcmUuCisKKyAgICBhdXRvJiB0aHJlYWQgPSB3b3JrZXItPnRocmVhZCgp
OworICAgIHRocmVhZC5zdG9wKFt3b3JrZXIgPSBXVEZNb3ZlKHdvcmtlcildKCkgbXV0YWJsZSB7
CisgICAgICAgIC8vIFNwaW4gdGhlIHJ1bmxvb3AgYmVmb3JlIHJlbGVhc2luZyB0aGUgc2hhcmVk
IHdvcmtlciB0aHJlYWQgcHJveHksIGFzIHRoZXJlIHdvdWxkIG90aGVyd2lzZSBiZQorICAgICAg
ICAvLyBhIHJhY2UgdG93YXJkcyBpdHMgZGVzdHJ1Y3Rpb24uCisgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3dvcmtlciA9IFdURk1vdmUod29ya2VyKV0geyB9KTsKKyAgICB9KTsKK30KKwordm9p
ZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c3RvcEFsbFNoYXJlZFdvcmtlcnMoKQorewor
ICAgIHdoaWxlICghbV93b3JrZXJNYXAuaXNFbXB0eSgpKQorICAgICAgICBzdG9wU2hhcmVkV29y
a2VyKG1fd29ya2VyTWFwLmJlZ2luKCktPmtleSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXI6OnNldENvbm5lY3Rpb24oc3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+JiYg
Y29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbiB8fCBtX2Nvbm5lY3Rpb24t
PmlzQ2xvc2VkKCkpOworICAgIG1fY29ubmVjdGlvbiA9IFdURk1vdmUoY29ubmVjdGlvbik7Cit9
CisKK2F1dG8gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OmNvbm5lY3Rpb24oKSBjb25zdCAt
PiBDb25uZWN0aW9uKgoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7Cit9CisKK3Zv
aWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnJlZ2lzdGVyU2hhcmVkV29ya2VyVGhyZWFk
KFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4mJiBwcm94eSkKK3sKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyOjpyZWdpc3RlclNoYXJlZFdvcmtlclRocmVhZDogc2hhcmVkV29ya2Vy
SWRlbnRpZmllcj0lIiBQUkl1NjQsIHByb3h5LT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisK
KyAgICBhdXRvIHJlc3VsdCA9IG1fd29ya2VyTWFwLmFkZChwcm94eS0+aWRlbnRpZmllcigpLCBw
cm94eS5jb3B5UmVmKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdF
bnRyeSk7CisKKyAgICBwcm94eS0+dGhyZWFkKCkuc3RhcnQoW10oY29uc3QgU3RyaW5nJiAvKmV4
Y2VwdGlvbk1lc3NhZ2UqLykgeyB9KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlcjo6Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVudChTaGFyZWRXb3JrZXJJZGVudGlmaWVy
IHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiB0cmFuc2Zl
cnJlZFBvcnQsIFN0cmluZyYmIHNvdXJjZU9yaWdpbikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIGF1dG8qIHByb3h5ID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpLnNoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBSRUxF
QVNFX0xPRyhTaGFyZWRXb3JrZXIsICJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVj
dGlvbjo6cG9zdENvbm5lY3RFdmVudDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQg
IiwgcHJveHk9JXAiLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCksIHByb3h5KTsK
KyAgICBpZiAoIXByb3h5KQorICAgICAgICByZXR1cm47CisKKyAgICBwcm94eS0+dGhyZWFkKCku
cnVuTG9vcCgpLnBvc3RUYXNrKFt0cmFuc2ZlcnJlZFBvcnQgPSBXVEZNb3ZlKHRyYW5zZmVycmVk
UG9ydCksIHNvdXJjZU9yaWdpbiA9IFdURk1vdmUoc291cmNlT3JpZ2luKS5pc29sYXRlZENvcHko
KV0gKGF1dG8mIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIG11dGFibGUgeworICAgICAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgZG93bmNhc3Q8U2hhcmVkV29ya2VyR2xvYmFs
U2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnBvc3RDb25uZWN0RXZlbnQoV1RGTW92ZSh0
cmFuc2ZlcnJlZFBvcnQpLCBXVEZNb3ZlKHNvdXJjZU9yaWdpbikpOworICAgIH0pOworfQorCit2
b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uOjp0ZXJtaW5hdGVTaGFy
ZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyKQor
eworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29y
a2VyLCAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb246OnRlcm1pbmF0ZVNo
YXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtl
cklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6
OnNpbmdsZXRvbigpLnN0b3BTaGFyZWRXb3JrZXIoc2hhcmVkV29ya2VySWRlbnRpZmllcik7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjMzODI1Mjg5Mzcz
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRl
eHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaApAQCAtMCwwICsxLDc3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgi
CisjaW5jbHVkZSAiVHJhbnNmZXJyZWRNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFk
UHJveHk7CisKK2NsYXNzIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyIHsKK3B1YmxpYzoKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXImIHNpbmds
ZXRvbigpOworCisgICAgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkqIHNoYXJlZFdvcmtlcihTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyKSBjb25zdDsKKyAgICB2b2lkIHN0b3BTaGFyZWRXb3JrZXIoU2hh
cmVkV29ya2VySWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wQWxsU2hh
cmVkV29ya2VycygpOworCisgICAgY2xhc3MgQ29ubmVjdGlvbiB7CisgICAgICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+Q29ubmVjdGlv
bigpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RFeGNl
cHRpb25Ub1dvcmtlck9iamVjdChTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMKSA9IDA7CisgICAgICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ2xvc2VkOyB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZvaWQgc2V0QXND
bG9zZWQoKSB7IG1faXNDbG9zZWQgPSB0cnVlOyB9CisKKyAgICAgICAgLy8gSVBDIG1lc3NhZ2Ug
aGFuZGxlcnMuCisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdENvbm5lY3RFdmVudChT
aGFyZWRXb3JrZXJJZGVudGlmaWVyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFN0cmluZyYm
IHNvdXJjZU9yaWdpbik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdGVybWluYXRlU2hh
cmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworCisgICAgcHJpdmF0ZToKKyAgICAg
ICAgYm9vbCBtX2lzQ2xvc2VkIHsgZmFsc2UgfTsKKyAgICB9OworCisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBDb25uZWN0aW9uKiBjb25uZWN0aW9uKCkgY29uc3Q7CisKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlZ2lzdGVyU2hhcmVkV29ya2VyVGhyZWFkKFJlZjxTaGFyZWRX
b3JrZXJUaHJlYWRQcm94eT4mJik7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE5ldmVy
RGVzdHJveWVkPFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyPjsKKworICAgIFNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyKCkgPSBkZWZhdWx0OworCisgICAgc3RkOjp1bmlxdWVfcHRyPENvbm5l
Y3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBIYXNoTWFwPFNoYXJlZFdvcmtlcklkZW50aWZpZXIs
IFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4+IG1fd29ya2VyTWFwOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcAppbmRleCA5
YmQ5NzgzZDdhN2UuLjYzMDQ1YjM5MDkzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94
eS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjgsOTQgKzI4LDcyIEBACiAKICNpbmNsdWRlICJDYWNoZVN0b3JhZ2VQcm92aWRlci5o
IgogI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZUxv
YWRlci5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCisjaW5jbHVkZSAiTG9hZGVy
U3RyYXRlZ3kuaCIKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKICNpbmNsdWRlICJNZXNzYWdl
UG9ydC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXIuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUg
IlNoYXJlZFdvcmtlclRocmVhZC5oIgorI2luY2x1ZGUgIldvcmtlckZldGNoUmVzdWx0LmgiCisj
aW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRp
ZmllcnNGYWN0b3J5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHk6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5KFNoYXJlZFdvcmtlciYgc2hhcmVkV29y
a2VyKQotICAgIDogbV9zaGFyZWRXb3JrZXIoc2hhcmVkV29ya2VyKQotICAgICwgbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0KHNoYXJlZFdvcmtlci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0g
ICAgLCBtX2lkZW50aWZpZXJGb3JJbnNwZWN0b3Ioc2hhcmVkV29ya2VyLmlkZW50aWZpZXJGb3JJ
bnNwZWN0b3IoKSkKK3N0YXRpYyBIYXNoU2V0PFNoYXJlZFdvcmtlclRocmVhZFByb3h5Kj4mIGFs
bFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKQogeworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxIYXNoU2V0PFNoYXJlZFdvcmtlclRocmVhZFByb3h5Kj4+IHNldDsKKyAgICByZXR1cm4gc2V0
OwogfQogCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpzdGFydFdvcmtlckdsb2JhbFNj
b3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgdXNlckFnZW50LCBib29sIGlzT25saW5lLCBjb25zdCBTY3JpcHRCdWZmZXImIHNjcmlwdEJ1
ZmZlciwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxk
Q29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5JiBj
cm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIFJlZmVy
cmVyUG9saWN5IHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHdvcmtlclR5cGUsIEZldGNoUmVx
dWVzdENyZWRlbnRpYWxzIGNyZWRlbnRpYWxzLCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxh
Z3MpCitzdGF0aWMgV29ya2VyUGFyYW1ldGVycyBnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMoY29u
c3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFdvcmtlckZldGNoUmVzdWx0JiB3b3JrZXJGZXRjaFJl
c3VsdCwgV29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMsIGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50LCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBwYXJhbWV0ZXJzID0gV29ya2VyUGFyYW1ldGVy
cyB7CisgICAgcmV0dXJuIFdvcmtlclBhcmFtZXRlcnMgewogICAgICAgICBzY3JpcHRVUkwsCi0g
ICAgICAgIG5hbWUsCi0gICAgICAgIG1faWRlbnRpZmllckZvckluc3BlY3RvciwKKyAgICAgICAg
d29ya2VyT3B0aW9ucy5uYW1lLAorICAgICAgICAic2hhcmVkd29ya2VyOiIgKyBJbnNwZWN0b3I6
OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpLAogICAgICAgICB1c2VyQWdl
bnQsCi0gICAgICAgIGlzT25saW5lLAotICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnMsCi0gICAgICAgIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0
eVBvbGljeSwKLSAgICAgICAgY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwKLSAgICAgICAgdGlt
ZU9yaWdpbiwKLSAgICAgICAgcmVmZXJyZXJQb2xpY3ksCi0gICAgICAgIHdvcmtlclR5cGUsCi0g
ICAgICAgIGNyZWRlbnRpYWxzLAotICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNl
dHRpbmdzVmFsdWVzKCkKKyAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0
ZWd5KCktPmlzT25MaW5lKCksCisgICAgICAgIHdvcmtlckZldGNoUmVzdWx0LmNvbnRlbnRTZWN1
cml0eVBvbGljeSwKKyAgICAgICAgZmFsc2UsCisgICAgICAgIHdvcmtlckZldGNoUmVzdWx0LmNy
b3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ksCisgICAgICAgIE1vbm90b25pY1RpbWU6Om5vdygpLAor
ICAgICAgICB7IH0sCisgICAgICAgIHdvcmtlck9wdGlvbnMudHlwZSwKKyAgICAgICAgd29ya2Vy
T3B0aW9ucy5jcmVkZW50aWFscywKKyAgICAgICAgZG9jdW1lbnQuc2V0dGluZ3NWYWx1ZXMoKQog
ICAgIH07Ci0KLSAgICBpZiAoIW1fd29ya2VyVGhyZWFkKSB7Ci0gICAgICAgIG1fd29ya2VyVGhy
ZWFkID0gU2hhcmVkV29ya2VyVGhyZWFkOjpjcmVhdGUoU2hhcmVkV29ya2VySWRlbnRpZmllcjo6
Z2VuZXJhdGUoKSwgcGFyYW1ldGVycywgc2NyaXB0QnVmZmVyLCAqdGhpcywgKnRoaXMsICp0aGlz
LCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LT50b3BPcmlnaW4oKSwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pZGJDb25uZWN0aW9uUHJv
eHkoKSwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zb2NrZXRQcm92aWRlcigpLCBydW50aW1l
RmxhZ3MpOwotICAgICAgICBtX3dvcmtlclRocmVhZC0+c3RhcnQoKTsKLSAgICB9Ci19Ci0KLXZv
aWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCkK
LXsKLSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBt
X2Fza2VkVG9UZXJtaW5hdGUgPSB0cnVlOwotICAgIGlmIChtX3dvcmtlclRocmVhZCkKLSAgICAg
ICAgbV93b3JrZXJUaHJlYWQtPnN0b3AobnVsbHB0cik7CiB9CiAKLXZvaWQgU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cyYmIG1lc3NhZ2UpCitTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6U2hhcmVkV29y
a2VyVGhyZWFkUHJveHkoVW5pcXVlUmVmPFBhZ2U+JiYgcGFnZSwgU2hhcmVkV29ya2VySWRlbnRp
ZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9y
aWdpbiwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIFdvcmtlckZldGNoUmVzdWx0JiYgd29ya2VyRmV0
Y2hSZXN1bHQsIFdvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zLCBjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImIGNhY2hlU3RvcmFnZVByb3ZpZGVyKQorICAg
IDogbV9wYWdlKFdURk1vdmUocGFnZSkpCisgICAgLCBtX2RvY3VtZW50KCptX3BhZ2UtPm1haW5G
cmFtZSgpLmRvY3VtZW50KCkpCisgICAgLCBtX3dvcmtlclRocmVhZChTaGFyZWRXb3JrZXJUaHJl
YWQ6OmNyZWF0ZShzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBnZW5lcmF0ZVdvcmtlclBhcmFtZXRl
cnMoc2NyaXB0VVJMLCB3b3JrZXJGZXRjaFJlc3VsdCwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSwg
dXNlckFnZW50LCBtX2RvY3VtZW50KSwgV1RGTW92ZSh3b3JrZXJGZXRjaFJlc3VsdC5zY3JpcHQp
LCAqdGhpcywgKnRoaXMsICp0aGlzLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgY2xp
ZW50T3JpZ2luLnRvcE9yaWdpbi5zZWN1cml0eU9yaWdpbigpLCBtX2RvY3VtZW50LT5pZGJDb25u
ZWN0aW9uUHJveHkoKSwgbV9kb2N1bWVudC0+c29ja2V0UHJvdmlkZXIoKSwgSlNDOjpSdW50aW1l
RmxhZ3M6OmNyZWF0ZUFsbEVuYWJsZWQoKSkpCisgICAgLCBtX2NhY2hlU3RvcmFnZVByb3ZpZGVy
KGNhY2hlU3RvcmFnZVByb3ZpZGVyKQogewotICAgIC8vIEZJWE1FOiBTaGFyZWRXb3JrZXIgZG9l
c24ndCBoYXZlIHBvc3RNZXNzYWdlLCBzbyB0aGlzIG1pZ2h0IG5vdCBiZSBuZWNlc3NhcnkuCi0g
ICAgcG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKFttZXNzYWdlID0gV1RGTW92ZShtZXNzYWdl
KV0oYXV0byYgc2NyaXB0Q29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIGNvbnRleHQg
PSBkb3duY2FzdDxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0Q29udGV4dCk7Ci0gICAg
ICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhzY3JpcHRDb250ZXh0
LCBXVEZNb3ZlKG1lc3NhZ2UudHJhbnNmZXJyZWRQb3J0cykpOwotICAgICAgICBjb250ZXh0LmRp
c3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIG1lc3NhZ2Uu
bWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpKSk7Ci0gICAgfSk7Ci19CisgICAgQVNTRVJUKCFhbGxT
aGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkuY29udGFpbnModGhpcykpOworICAgIGFsbFNoYXJl
ZFdvcmtlclRocmVhZFByb3hpZXMoKS5hZGQodGhpcyk7CiAKLXZvaWQgU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHk6OnBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShGdW5jdGlvbjx2b2lkKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmKT4mJiB0YXNrKQotewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5h
dGUpCi0gICAgICAgIHJldHVybjsKLSAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RU
YXNrKFdURk1vdmUodGFzaykpOwotfQotCi1ib29sIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpo
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAotewotICAgIHJldHVybiBtX2hhc1BlbmRpbmdBY3Rp
dml0eSAmJiAhbV9hc2tlZFRvVGVybWluYXRlOworICAgIHN0YXRpYyBib29sIGFkZGVkTGlzdGVu
ZXI7CisgICAgaWYgKCFhZGRlZExpc3RlbmVyKSB7CisgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5sb2FkZXJTdHJhdGVneSgpLT5hZGRPbmxpbmVTdGF0ZUNoYW5nZUxpc3RlbmVyKCZuZXR3
b3JrU3RhdGVDaGFuZ2VkKTsKKyAgICAgICAgYWRkZWRMaXN0ZW5lciA9IHRydWU7CisgICAgfQog
fQogCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojp3b3JrZXJPYmplY3REZXN0cm95ZWQo
KQorU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6On5TaGFyZWRXb3JrZXJUaHJlYWRQcm94eSgpCiB7
Ci0gICAgbV9zaGFyZWRXb3JrZXIgPSBudWxscHRyOwotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+cG9zdFRhc2soW3RoaXNdIChhdXRvJikgewotICAgICAgICBtX21heUJlRGVzdHJveWVk
ID0gdHJ1ZTsKLSAgICAgICAgaWYgKG1fd29ya2VyVGhyZWFkKQotICAgICAgICAgICAgdGVybWlu
YXRlV29ya2VyR2xvYmFsU2NvcGUoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgd29ya2Vy
R2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpOwotICAgIH0pOworICAgIEFTU0VSVChhbGxT
aGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkuY29udGFpbnModGhpcykpOworICAgIGFsbFNoYXJl
ZFdvcmtlclRocmVhZFByb3hpZXMoKS5yZW1vdmUodGhpcyk7CiB9CiAKIFNoYXJlZFdvcmtlcklk
ZW50aWZpZXIgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OmlkZW50aWZpZXIoKSBjb25zdApAQCAt
MTI1LDg4ICsxMDMsNTAgQEAgU2hhcmVkV29ya2VySWRlbnRpZmllciBTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eTo6aWRlbnRpZmllcigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJv
eHk6Om5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25saW5lKQogewotICAgIGlmICht
X2Fza2VkVG9UZXJtaW5hdGUpCisgICAgaWYgKG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX3dvcmtlclRocmVhZCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhbaXNPbmxpbmVd
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgcG9zdFRhc2tGb3JNb2Rl
VG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbaXNPbmxpbmVdIChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgIGF1dG8mIGdsb2JhbFNjb3BlID0gZG93bmNhc3Q8
V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpOwogICAgICAgICBnbG9iYWxTY29wZS5zZXRJc09u
bGluZShpc09ubGluZSk7Ci0gICAgICAgIGdsb2JhbFNjb3BlLmRpc3BhdGNoRXZlbnQoRXZlbnQ6
OmNyZWF0ZShpc09ubGluZSA/IGV2ZW50TmFtZXMoKS5vbmxpbmVFdmVudCA6IGV2ZW50TmFtZXMo
KS5vZmZsaW5lRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxl
OjpObykpOwotICAgIH0pOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpzdXNw
ZW5kRm9yQmFja0ZvcndhcmRDYWNoZSgpCi17Ci0KLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eTo6cmVzdW1lRm9yQmFja0ZvcndhcmRDYWNoZSgpCi17Ci0KKyAgICAgICAgZ2xvYmFs
U2NvcGUuZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwg
W2dsb2JhbFNjb3BlID0gUmVmIHsgZ2xvYmFsU2NvcGUgfSwgaXNPbmxpbmVdIHsKKyAgICAgICAg
ICAgIGdsb2JhbFNjb3BlLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoaXNPbmxpbmUgPyBl
dmVudE5hbWVzKCkub25saW5lRXZlbnQgOiBldmVudE5hbWVzKCkub2ZmbGluZUV2ZW50LCBFdmVu
dDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKKyAgICAgICAgfSk7
CisgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiB9CiAKIHZvaWQgU2hhcmVk
V29ya2VyVGhyZWFkUHJveHk6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMKQogewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9z
dFRhc2soW3RoaXMsIGVycm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZS5pc29sYXRlZENvcHkoKSwg
c291cmNlVVJMID0gc291cmNlVVJMLmlzb2xhdGVkQ29weSgpLCBsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXJdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewotICAgICAgICBpZiAoIW1fc2hhcmVk
V29ya2VyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIC8vIFdlIGRvbid0IGJvdGhl
ciBjaGVja2luZyB0aGUgYXNrZWRUb1Rlcm1pbmF0ZSgpIGZsYWcgaGVyZSwgYmVjYXVzZSBleGNl
cHRpb25zIHNob3VsZCAqYWx3YXlzKiBiZSByZXBvcnRlZCBldmVuIGlmIHRoZSB0aHJlYWQgaXMg
dGVybWluYXRlZC4KLSAgICAgICAgLy8gVGhpcyBpcyBpbnRlbnRpb25hbGx5IGRpZmZlcmVudCB0
aGFuIHRoZSBiZWhhdmlvciBpbiBNZXNzYWdlV29ya2VyVGFzaywgYmVjYXVzZSB0ZXJtaW5hdGVk
IHdvcmtlcnMgbm8gbG9uZ2VyIGRlbGl2ZXIgbWVzc2FnZXMgKHNlY3Rpb24gNC42IG9mIHRoZSBX
ZWJXb3JrZXIgc3BlYyksIGJ1dCB0aGV5IGRvIHJlcG9ydCBleGNlcHRpb25zLgotICAgICAgICBB
Y3RpdmVET01PYmplY3Q6OnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqbV9zaGFyZWRXb3JrZXIs
IFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgRXJyb3JFdmVudDo6Y3JlYXRlKGVycm9yTWVz
c2FnZSwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHsgfSkpOwotICAgIH0p
OwotfQotCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojp3b3JrZXJHbG9iYWxTY29wZURl
c3Ryb3llZCgpCi17Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhp
c10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0gICAgICAgIHdvcmtlckdsb2JhbFNjb3Bl
RGVzdHJveWVkSW50ZXJuYWwoKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cyYmKQotewotCi19Ci0KLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OmNvbmZpcm1NZXNz
YWdlRnJvbVdvcmtlck9iamVjdChib29sKQotewotfQotCi12b2lkIFNoYXJlZFdvcmtlclRocmVh
ZFByb3h5OjpyZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpCi17
Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpcywgaGFzUGVuZGlu
Z0FjdGl2aXR5XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKLSAgICAgICAgbV9oYXNQZW5k
aW5nQWN0aXZpdHkgPSBoYXNQZW5kaW5nQWN0aXZpdHk7CisgICAgY2FsbE9uTWFpblRocmVhZChb
c2hhcmVkV29ya2VySWRlbnRpZmllciA9IG1fd29ya2VyVGhyZWFkLT5pZGVudGlmaWVyKCksIGVy
cm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZS5pc29sYXRlZENvcHkoKSwgbGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAg
ICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2lu
Z2xldG9uKCkuY29ubmVjdGlvbigpKQorICAgICAgICAgICAgY29ubmVjdGlvbi0+cG9zdEV4Y2Vw
dGlvblRvV29ya2VyT2JqZWN0KHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGVycm9yTWVzc2FnZSwg
bGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwpOwogICAgIH0pOwogfQogCiBSZWZQ
dHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0
ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCk7Ci0gICAgcmV0dXJuIGRvY3VtZW50LnBhZ2UoKS0+Y2FjaGVTdG9yYWdlUHJv
dmlkZXIoKS5jcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCk7CisgICAgaWYgKCFtX2NhY2hl
U3RvcmFnZUNvbm5lY3Rpb24pCisgICAgICAgIG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbiA9IG1f
Y2FjaGVTdG9yYWdlUHJvdmlkZXIuY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpOworICAg
IHJldHVybiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247CiB9CiAKIFJlZlB0cjxSVENEYXRhQ2hh
bm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uPiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y3Jl
YXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50
PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICBpZiAoIWRvY3VtZW50LnBhZ2UoKSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGRvY3VtZW50LnBhZ2UoKS0+bGli
V2ViUlRDUHJvdmlkZXIoKS5jcmVhdGVSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0
aW9uKCk7CisgICAgcmV0dXJuIG1fcGFnZS0+bGliV2ViUlRDUHJvdmlkZXIoKS5jcmVhdGVSVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCk7CiB9CiAKIHZvaWQgU2hhcmVkV29y
a2VyVGhyZWFkUHJveHk6OnBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzayYmIHRhc2spCiB7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhX
VEZNb3ZlKHRhc2spKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0YXNrID0gV1RGTW92ZSh0YXNr
KSwgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgeworICAgICAgICB0
YXNrLnBlcmZvcm1UYXNrKHByb3RlY3RlZFRoaXMtPm1fZG9jdW1lbnQuZ2V0KCkpOworICAgIH0p
OwogfQogCiBib29sIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0
YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkK
KyAgICBpZiAobV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShXVEZN
b3ZlKHRhc2spLCBtb2RlKTsKQEAgLTIyMywxNiArMTYzLDM0IEBAIHZvaWQgU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHk6OnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNwZWN0b3IoYm9v
bCkKIAogfQogCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojp3b3JrZXJHbG9iYWxTY29w
ZURlc3Ryb3llZEludGVybmFsKCkKK3ZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Om5ldHdv
cmtTdGF0ZUNoYW5nZWQoYm9vbCBpc09uTGluZSkKIHsKLSAgICAvLyBUaGlzIGlzIGFsd2F5cyB0
aGUgbGFzdCB0YXNrIHRvIGJlIHBlcmZvcm1lZCwgc28gdGhlIHByb3h5IGlzIG5vdCBuZWVkZWQg
Zm9yIGNvbW11bmljYXRpb24KLSAgICAvLyBpbiBlaXRoZXIgc2lkZSBhbnkgbW9yZS4gSG93ZXZl
ciwgdGhlIFdvcmtlciBvYmplY3QgbWF5IHN0aWxsIGV4aXN0LCBhbmQgaXQgYXNzdW1lcyB0aGF0
IHRoZSBwcm94eSBleGlzdHMsIHRvby4KLSAgICBtX2Fza2VkVG9UZXJtaW5hdGUgPSB0cnVlOwot
ICAgIG1fd29ya2VyVGhyZWFkID0gbnVsbHB0cjsKLQotICAgIC8vIFRoaXMgYmFsYW5jZXMgdGhl
IG9yaWdpbmFsIHJlZiBpbiBjb25zdHJ1Y3Rpb24uCi0gICAgaWYgKG1fbWF5QmVEZXN0cm95ZWQp
Ci0gICAgICAgIGRlcmVmKCk7CisgICAgZm9yIChhdXRvKiBwcm94eSA6IGFsbFNoYXJlZFdvcmtl
clRocmVhZFByb3hpZXMoKSkKKyAgICAgICAgcHJveHktPm5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5n
ZShpc09uTGluZSk7Cit9CisKKy8vIEZJWE1FOiBUcnkgYW5kIHNoYXJlIGNvZGUgd2l0aCBTZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwLgordm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6
c2V0dXBQYWdlRm9yU2hhcmVkV29ya2VyKFBhZ2UmIHBhZ2UsIGNvbnN0IFVSTCYgc2NyaXB0VVJM
LCBjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgY29uc3QgV29ya2VyRmV0Y2hSZXN1
bHQmIHdvcmtlckZldGNoUmVzdWx0KQoreworICAgIGF1dG8mIG1haW5GcmFtZSA9IHBhZ2UubWFp
bkZyYW1lKCk7CisgICAgbWFpbkZyYW1lLmxvYWRlcigpLmluaXRGb3JTeW50aGVzaXplZERvY3Vt
ZW50KHsgfSk7CisgICAgYXV0byBkb2N1bWVudCA9IERvY3VtZW50OjpjcmVhdGVOb25SZW5kZXJl
ZFBsYWNlaG9sZGVyKG1haW5GcmFtZSwgc2NyaXB0VVJMKTsKKyAgICBkb2N1bWVudC0+Y3JlYXRl
RE9NV2luZG93KCk7CisKKyAgICBkb2N1bWVudC0+c3RvcmFnZUJsb2NraW5nU3RhdGVEaWRDaGFu
Z2UoKTsKKworICAgIGF1dG8gb3JpZ2luID0gY2xpZW50T3JpZ2luLnRvcE9yaWdpbi5zZWN1cml0
eU9yaWdpbigpOworICAgIG9yaWdpbi0+c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KHBhZ2Uuc2V0
dGluZ3MoKS5zdG9yYWdlQmxvY2tpbmdQb2xpY3koKSk7CisKKyAgICBhdXRvIG9yaWdpbkFzVVJM
ID0gb3JpZ2luLT50b1VSTCgpOworICAgIGRvY3VtZW50LT5zZXRTaXRlRm9yQ29va2llcyhvcmln
aW5Bc1VSTCk7CisgICAgZG9jdW1lbnQtPnNldEZpcnN0UGFydHlGb3JDb29raWVzKG9yaWdpbkFz
VVJMKTsKKyAgICBkb2N1bWVudC0+c2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24ob3JpZ2luLT5k
b21haW5Gb3JDYWNoZVBhcnRpdGlvbigpKTsKKworICAgIGlmIChhdXRvIHBvbGljeSA9IHBhcnNl
UmVmZXJyZXJQb2xpY3kod29ya2VyRmV0Y2hSZXN1bHQucmVmZXJyZXJQb2xpY3ksIFJlZmVycmVy
UG9saWN5U291cmNlOjpIVFRQSGVhZGVyKSkKKyAgICAgICAgZG9jdW1lbnQtPnNldFJlZmVycmVy
UG9saWN5KCpwb2xpY3kpOworCisgICAgbWFpbkZyYW1lLnNldERvY3VtZW50KFdURk1vdmUoZG9j
dW1lbnQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJl
YWRQcm94eS5oCmluZGV4IDRlOTJlNDU2MTcxYy4uNTczMmFiZDlkZDc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFBy
b3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRX
b3JrZXJUaHJlYWRQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUgIlNoYXJlZFdvcmtl
cklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXb3JrZXJEZWJ1Z2dlclByb3h5LmgiCi0jaW5jbHVk
ZSAiV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlckxvYWRlclByb3h5
LmgiCiAjaW5jbHVkZSAiV29ya2VyT2JqZWN0UHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJPcHRp
b25zLmgiCkBAIC0zNSw1MCArMzQsNTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBDYWNoZVN0b3JhZ2VQcm92aWRlcjsKK2NsYXNzIFBhZ2U7CiBjbGFzcyBTaGFyZWRXb3JrZXI7
CiBjbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWQ7CiAKLWNsYXNzIFNoYXJlZFdvcmtlclRocmVhZFBy
b3h5IGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZFdvcmtlclRocmVh
ZFByb3h5PiwgcHVibGljIFdvcmtlckdsb2JhbFNjb3BlUHJveHksIHB1YmxpYyBXb3JrZXJPYmpl
Y3RQcm94eSwgcHVibGljIFdvcmtlckxvYWRlclByb3h5LCBwdWJsaWMgV29ya2VyRGVidWdnZXJQ
cm94eSB7CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0Owor
CitjbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4sIHB1YmxpYyBXb3JrZXJPYmplY3RQ
cm94eSwgcHVibGljIFdvcmtlckxvYWRlclByb3h5LCBwdWJsaWMgV29ya2VyRGVidWdnZXJQcm94
eSB7CiBwdWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFNoYXJl
ZFdvcmtlclRocmVhZFByb3h5JiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpIHsgcmV0dXJuICpuZXcg
U2hhcmVkV29ya2VyVGhyZWFkUHJveHkoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsgfQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBSZWY8U2hhcmVkV29ya2VyVGhy
ZWFkUHJveHk+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsgfQor
ICAgIFdFQkNPUkVfRVhQT1JUIH5TaGFyZWRXb3JrZXJUaHJlYWRQcm94eSgpOworCisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0dXBQYWdlRm9yU2hhcmVkV29ya2VyKFBhZ2UmLCBj
b25zdCBVUkwmLCBjb25zdCBDbGllbnRPcmlnaW4mLCBjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYp
OwogCiAgICAgU2hhcmVkV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Q7Ci0gICAg
U2hhcmVkV29ya2VyVGhyZWFkKiB0aHJlYWQoKSB7IHJldHVybiBtX3dvcmtlclRocmVhZC5nZXQo
KTsgfQorICAgIFNoYXJlZFdvcmtlclRocmVhZCYgdGhyZWFkKCkgeyByZXR1cm4gbV93b3JrZXJU
aHJlYWQ7IH0KIAotICAgIHZvaWQgc3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNj
cmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9v
bCBpc09ubGluZSwgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VDb2RlLCBjb25zdCBDb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3Js
ZENvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSYs
IE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIEZl
dGNoUmVxdWVzdENyZWRlbnRpYWxzLCBKU0M6OlJ1bnRpbWVGbGFncykgZmluYWw7Ci0gICAgdm9p
ZCB3b3JrZXJPYmplY3REZXN0cm95ZWQoKSBmaW5hbDsKLSAgICBib29sIGhhc1BlbmRpbmdBY3Rp
dml0eSgpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgdGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUo
KSBmaW5hbDsKKyAgICBib29sIGlzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKSBjb25zdCB7IHJl
dHVybiBtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQ7IH0KKyAgICB2b2lkIHNldEFzVGVybWlu
YXRpbmdPclRlcm1pbmF0ZWQoKSB7IG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCA9IHRydWU7
IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShTaGFy
ZWRXb3JrZXImKTsKLQotICAgIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5h
bCgpOworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZFdvcmtlclRocmVhZFByb3h5KFVuaXF1ZVJl
ZjxQYWdlPiYmLCBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4mLCBj
b25zdCBVUkwmIHNjcmlwdFVSTCwgV29ya2VyRmV0Y2hSZXN1bHQmJiwgV29ya2VyT3B0aW9ucyYm
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImKTsKIAotICAg
IHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBv
cnRzJiYpIGZpbmFsOwotICAgIHZvaWQgcG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1bmN0
aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiYmKSBmaW5hbDsKLSAgICB2b2lkIG5v
dGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25saW5lKSBmaW5hbDsKLSAgICB2b2lkIHN1
c3BlbmRGb3JCYWNrRm9yd2FyZENhY2hlKCkgZmluYWw7Ci0gICAgdm9pZCByZXN1bWVGb3JCYWNr
Rm9yd2FyZENhY2hlKCkgZmluYWw7CisgICAgLy8gV29ya2VyT2JqZWN0UHJveHkuCiAgICAgdm9p
ZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2Us
IGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCkgZmluYWw7Ci0gICAgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgpIGZpbmFsOwot
ICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cyYmKSBmaW5hbDsKLSAgICB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29s
IGhhc1BlbmRpbmdBY3Rpdml0eSkgZmluYWw7Ci0gICAgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZp
dHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpIGZpbmFsOworICAgIHZvaWQgcG9zdE1lc3NhZ2VU
b1dvcmtlck9iamVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKSBmaW5hbCB7IH0KKyAgICB2
b2lkIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkKCkgZmluYWwgeyB9CisgICAgdm9pZCBjb25m
aXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCkgZmluYWwgeyB9CisgICAgdm9pZCByZXBv
cnRQZW5kaW5nQWN0aXZpdHkoYm9vbCkgZmluYWwgeyB9CisKKyAgICAvLyBXb3JrZXJMb2FkZXJQ
cm94eS4KICAgICBSZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gY3JlYXRlQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbigpIGZpbmFsOwogICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXJDb25uZWN0aW9uPiBjcmVhdGVSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0
aW9uKCkgZmluYWw7CiAgICAgdm9pZCBwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2smJikgZmluYWw7CiAgICAgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiwgY29uc3Qg
U3RyaW5nJiBtb2RlKSBmaW5hbDsKKworICAgIC8vIFdvcmtlckRlYnVnZ2VyUHJveHkuCiAgICAg
dm9pZCBwb3N0TWVzc2FnZVRvRGVidWdnZXIoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgdm9p
ZCBzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yKGJvb2wpIGZpbmFsOwog
Ci0gICAgV2Vha1B0cjxTaGFyZWRXb3JrZXI+IG1fc2hhcmVkV29ya2VyOwotICAgIFJlZlB0cjxT
aGFyZWRXb3JrZXJUaHJlYWQ+IG1fd29ya2VyVGhyZWFkOwotICAgIGNvbnN0IFJlZlB0cjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0gICAgY29uc3Qg
U3RyaW5nIG1faWRlbnRpZmllckZvckluc3BlY3RvcjsKLSAgICBib29sIG1fYXNrZWRUb1Rlcm1p
bmF0ZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2hhc1BlbmRpbmdBY3Rpdml0eSB7IGZhbHNlIH07
Ci0gICAgYm9vbCBtX21heUJlRGVzdHJveWVkIHsgZmFsc2UgfTsKKyAgICBzdGF0aWMgdm9pZCBu
ZXR3b3JrU3RhdGVDaGFuZ2VkKGJvb2wgaXNPbkxpbmUpOworICAgIHZvaWQgbm90aWZ5TmV0d29y
a1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpOworCisgICAgVW5pcXVlUmVmPFBhZ2U+IG1fcGFn
ZTsKKyAgICBSZWY8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CisgICAgUmVmPFNoYXJlZFdvcmtlclRo
cmVhZD4gbV93b3JrZXJUaHJlYWQ7CisgICAgQ2FjaGVTdG9yYWdlUHJvdmlkZXImIG1fY2FjaGVT
dG9yYWdlUHJvdmlkZXI7CisgICAgUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IG1fY2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjsKKyAgICBib29sIG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRl
ZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4
dAppbmRleCA3NTZkYTg4YjQ1ZjcuLjI5ZjRjNzgxODE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBA
IC0yOCw2ICsyOCw3IEBAIHNldChXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dF
QktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMiCiAgICAgIiR7V0VCS0lUX0RJ
Un0vTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiCiAgICAgIiR7V0VCS0lU
X0RJUn0vTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlciIKKyAgICAiJHtXRUJLSVRfRElSfS9O
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZSIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZSIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlIgpAQCAtMjAyLDYg
KzIwMyw5IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKICAgICBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbgogICAgIE5ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCiAKKyAgICBOZXR3
b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbgor
ICAgIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uCisKICAgICBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VN
YW5hZ2VyU2V0CiAKICAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uCkBAIC0zMDUsNiArMzA5LDggQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxF
UwogCiAgICAgV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlh
U291cmNlTWFuYWdlcgogCisgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbgorICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uCiAgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50
Q29ubmVjdGlvbgogICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3QKaW5kZXggNGM2NjIyMGNmMTIyLi43MjI5YzFiOTg3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTkxLDYgKzkxLDggQEAgJChQUk9K
RUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxv
YWRUYXNrLm1lc3NhZ2VzLmkKICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9OZXR3
b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9j
ZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluCkBAIC0yMTcsNiAr
MjE5LDggQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IubWVzc2FnZXMu
aW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aG5Q
cm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggZTNiNTU4NDBhZTFlLi5hODYzMjgxNDdiNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApA
QCAtNjA3LDYgKzYwNywxOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0L1dlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcwogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdl
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdl
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3Nh
Z2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNvY2tldENoYW5uZWxN
ZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0L1dlYlNvY2tldENoYW5uZWxNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNvY2tldENoYW5uZWxNZXNzYWdlc1JlcGxpZXMuaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDdhZDQ5ZTM3MzVmNC4uMzUxZmZhZTBhNTg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xMzMsNiArMTMzLDggQEAgTUVTU0FH
RV9SRUNFSVZFUlMgPSBcCiAJTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyRG93bmxvYWRUYXNrIFwKIAlOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJGZXRjaFRhc2sgXAogCU5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uIFwKKwlOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbiBcCisJTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29y
a2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gXAogCU5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0gXAogCU5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzIFwKIAlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIgXApAQCAtMjI1LDYg
KzIyNyw4IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9TcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlciBcCisJV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBcCisJ
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24gXAogCVdl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBcCiAJV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNjg3YzhkYjY5MTJjLi5jN2Ix
N2ZkNzA3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC02Niw2ICs2NiwxMSBA
QAogI2luY2x1ZGUgIldlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXIuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgorI2luY2x1
ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBDb29raWVB
Y2NlcHRQb2xpY3kuaD4KQEAgLTEzMiw2ICsxMzcsNyBAQCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmIG5l
dAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBlc3RhYmxpc2hTV1NlcnZlckNvbm5l
Y3Rpb24oKTsKICNlbmRpZgorICAgIGVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b24oKTsKIH0KIAogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcygpCkBAIC0xNjYsNiArMTcyLDcgQEAgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6On5OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgor
ICAgIHVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiB9CiAKIHZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhhc1VwbG9hZFN0YXRlQ2hhbmdlZChib29sIGhhc1Vw
bG9hZCkKQEAgLTI3NSw2ICsyODIsMTcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW8KICAgICB9
CiAjZW5kaWYKIAorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNz
YWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKSB7CisgICAgICAgIGlmIChtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAgICAg
ICBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGlmIChtX3No
YXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKQorICAgICAgICAgICAgbV9zaGFyZWRXb3JrZXJD
b250ZXh0Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9V
SSkKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6Oldl
YlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpCiAgICAgICAg
IHJldHVybiBwYXltZW50Q29vcmRpbmF0b3IoKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyKTsKQEAgLTM5OCw5ICs0MTYsOCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxw
dHI7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICNlbmRpZgorICAgIG1f
c2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwogCiAgICAgLy8gUHJvdGVj
dCBvdXJzZWxmIGFzIHdlIG1pZ2h0IGJlIG90aGVyd2lzZSBiZSBkZWxldGVkIGR1cmluZyB0aGlz
IGZ1bmN0aW9uLgogICAgIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gcHJvdGVj
dG9yKCp0aGlzKTsKQEAgLTQ0MSw2ICs0NTgsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRp
ZgorICAgIHVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiAKICNpZiBFTkFCTEUo
QVBQTEVfUEFZX1JFTU9URV9VSSkKICAgICBtX3BheW1lbnRDb29yZGluYXRvciA9IG51bGxwdHI7
CkBAIC0xMTg2LDYgKzEyMDQsNjEgQEAgc2l6ZV90IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpmaW5kTmV0d29ya0FjdGl2aXR5VHJhY2tlcihXZWJDb3JlOjpSZXNvdXIKICAgICAgICAg
cmV0dXJuIGl0ZW0ucmVzb3VyY2VJRCA9PSByZXNvdXJjZUlEOwogICAgIH0pOwogfQorCit2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250
ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTaGFyZWRX
b3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbjoiKTsKKyAgICBh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsKKyAgICBpZiAoYXV0byogc3dTZXJ2ZXIg
PSBzZXNzaW9uID8gc2Vzc2lvbi0+c2hhcmVkV29ya2VyU2VydmVyKCkgOiBudWxscHRyKQorICAg
ICAgICBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPigqdGhpcywgV1RGTW92ZShyZWdpc3Ry
YWJsZURvbWFpbiksICpzd1NlcnZlcik7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbigpCit7CisgICAgaWYgKG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbikK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7
CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBDT05ORUNUSU9OX1JF
TEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb246Iik7CisKKyAgICBhdXRvJiBzZXJ2ZXIgPSBzZXNzaW9uLT5lbnN1cmVTaGFyZWRXb3Jr
ZXJTZXJ2ZXIoKTsKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29ya1Byb2Nlc3MsIHNlcnZlciwgbV9jb25uZWN0
aW9uLmdldCgpLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsKKworICAgIG1fc2hhcmVkV29ya2Vy
Q29ubmVjdGlvbiA9ICpjb25uZWN0aW9uOworICAgIHNlcnZlci5hZGRDb25uZWN0aW9uKFdURk1v
dmUoY29ubmVjdGlvbikpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpjbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9O
X1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImNsb3NlU2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb246Iik7CisgICAgbV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7
Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJTaGFy
ZWRXb3JrZXJDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJl
ZFdvcmtlciwgInVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uOiIpOworICAgIGlmICht
X3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAgIG1fc2hhcmVkV29ya2VyQ29ubmVjdGlv
bi0+c2VydmVyKCkucmVtb3ZlQ29ubmVjdGlvbihtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24tPndl
YlByb2Nlc3NJZGVudGlmaWVyKCkpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpzaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5l
ZWRlZCgpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJzaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZDoiKTsKKyAg
ICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5v
TG9uZ2VyTmVlZGVkIHsgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKKworICAgIG1fc2hh
cmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOworfQorCitXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2hhcmVk
V29ya2VyQ29ubmVjdGlvbigpCit7CisgICAgaWYgKCFtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24p
CisgICAgICAgIGVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oKTsKKyAgICBy
ZXR1cm4gbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uLmdldCgpOworfQogICAgIAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVu
cmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKQpAQCAtMTIyMyw5ICsxMjk2LDkgQEAgdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xvc2VTV0NvbnRleHRDb25uZWN0aW9uKCkKICAgICBt
X3N3Q29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQo
KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2VydmljZVdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCgpCiB7Ci0gICAgQ09OTkVDVElPTl9S
RUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAic2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9u
Z2VyTmVlZGVkOiBXZWJQcm9jZXNzIG5vIGxvbmdlciB1c2VmdWwgZm9yIHJ1bm5pbmcgc2Vydmlj
ZSB3b3JrZXJzIik7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAi
c2VydmljZVdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZDogV2Vi
UHJvY2VzcyBubyBsb25nZXIgdXNlZnVsIGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycyIpOwog
ICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlv
bk5vTG9uZ2VyTmVlZGVkIHsgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKIAogICAgIG1f
c3dDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5k
ZXggM2ExZTE0MDQzMzhmLi5kMGFhNGVmNzQ1MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
QEAgLTkyLDYgKzkyLDggQEAgY2xhc3MgTmV0d29ya1NvY2tldFN0cmVhbTsKIGNsYXNzIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CiBjbGFzcyBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjsKIAogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiBzdHJ1Y3QgRGF0YUtleTsKQEAgLTE4
MSwxMCArMTgzLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZv
ckFjdGl2aXR5KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0Fj
dGl2aXR5KT4mJik7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgdm9pZCBzZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKTsKKyAgICB2b2lkIHNlcnZpY2VX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKTsKICAgICBXZWJT
V1NlcnZlckNvbm5lY3Rpb24qIHN3Q29ubmVjdGlvbigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBjcmVhdGVGZXRjaFRhc2soTmV0d29ya1Jlc291cmNlTG9h
ZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKKyAgICB2b2lk
IHNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7
CisKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKiBzaGFyZWRXb3JrZXJDb25u
ZWN0aW9uKCk7CiAKICAgICBOZXR3b3JrU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KCkg
eyByZXR1cm4gbV9zY2hlbWVSZWdpc3RyeS5nZXQoKTsgfQogCkBAIC0yNTMsNiArMjU4LDkgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZVNvY2tldENoYW5uZWwoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgV2ViQ29yZTo6V2ViU29ja2V0
SWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJik7CiAgICAgdm9pZCB1cGRhdGVRdW90YUJhc2VkT25TcGFjZVVzYWdlRm9yVGVzdGlu
Zyhjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKIAorICAgIHZvaWQgZXN0YWJsaXNoU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpOworICAgIHZvaWQgdW5yZWdpc3RlclNoYXJlZFdv
cmtlckNvbm5lY3Rpb24oKTsKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lk
IGVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigpOwogICAgIHZvaWQgZXN0YWJsaXNoU1dDb250
ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CkBAIC0yNjAsNiArMjY4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVucmVn
aXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgogCisgICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRX
b3JrZXJDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZv
aWQgY2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpOworCiAgICAgdm9pZCBjcmVh
dGVSVENQcm92aWRlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2lmIEVOQUJMRShX
RUJfUlRDKQogICAgIHZvaWQgY29ubmVjdFRvUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UoV2Vi
Q29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWxJZGVudGlmaWVyIGhhbmRsZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDxib29sPik+JiYpOwpAQCAtNDA0LDYgKzQxNSw4IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0
cjxXZWJTV1NlcnZlckNvbm5lY3Rpb24+IG1fc3dDb25uZWN0aW9uOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+IG1fc3dDb250ZXh0Q29ubmVjdGlv
bjsKICNlbmRpZgorICAgIFdlYWtQdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4g
bV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uOwogCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgYm9vbCBtX2lzUmVnaXN0ZXJlZFRv
UlRDRGF0YUNoYW5uZWxQcm94eSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgppbmRleCAyNDI4MzUwNTBiMjQuLmI5N2NhMzQ3OWI0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC04OCw2ICs4OCw5IEBA
IG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVy
IHsKICAgICBDbG9zZVNXQ29udGV4dENvbm5lY3Rpb24oKQogI2VuZGlmCiAKKyAgICBFc3RhYmxp
c2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50
aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikg
LT4gKCkgQXN5bmMKKyAgICBDbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKCkKKwog
ICAgIENyZWF0ZVJUQ1Byb3ZpZGVyKCkgLT4gKCkgQXN5bmMKICNpZiBFTkFCTEUoV0VCX1JUQykK
ICAgICBDb25uZWN0VG9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZShzdHJ1Y3QgV2ViQ29yZTo6
UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgc3RydWN0IFdlYkNvcmU6OlJUQ0RhdGFD
aGFubmVsSWRlbnRpZmllciBoYW5kbGVyKSAtPiAoc3RkOjpvcHRpb25hbDxib29sPiByZXN1bHQp
IEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
Y3BwCmluZGV4IGUyYjI0ZDgzMjJiNi4uZDc2MTYyODUwY2FkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtNDcsNiArNDcsNyBAQAog
I2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1By
b3h5LmgiCiAjaW5jbHVkZSAiV2ViU1dPcmlnaW5TdG9yZS5oIgorI2luY2x1ZGUgIldlYlNoYXJl
ZFdvcmtlclNlcnZlci5oIgogI2luY2x1ZGUgIldlYlNvY2tldFRhc2suaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0Nvb2tpZUphci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+
CkBAIC02NTMsNiArNjU0LDEzIEBAIGJvb2wgTmV0d29ya1Nlc3Npb246Omhhc1NlcnZpY2VXb3Jr
ZXJEYXRhYmFzZVBhdGgoKSBjb25zdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVTaGFyZWRX
b3JrZXJTZXJ2ZXIoKQoreworICAgIGlmICghbV9zaGFyZWRXb3JrZXJTZXJ2ZXIpCisgICAgICAg
IG1fc2hhcmVkV29ya2VyU2VydmVyID0gbWFrZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI+
KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fc2hhcmVkV29ya2VyU2VydmVyOworfQorCiBXZWJJREJT
ZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVXZWJJREJTZXJ2ZXIoKQogewogICAgIGlmICgh
bV93ZWJJREJTZXJ2ZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uaAppbmRleCAxOTMwN2NmNDBiZTMuLjNmOWQ2Yzk1NTBhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtNzksNiArNzksNyBA
QCBjbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOwogY2xhc3MgV2ViSURCU2VydmVyOwogY2xh
c3MgV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzOwogY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyOwogY2xhc3MgV2ViU29ja2V0
VGFzazsKIGNsYXNzIFdlYlNXT3JpZ2luU3RvcmU7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rp
b247CkBAIC0yMTAsNiArMjExLDkgQEAgcHVibGljOgogICAgIHZvaWQgYWRkU2VydmljZVdvcmtl
clNlc3Npb24oYm9vbCBwcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFN0cmluZyYmIHNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIGNvbnN0IFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYpOwogI2VuZGlmCiAKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIqIHNoYXJlZFdv
cmtlclNlcnZlcigpIHsgcmV0dXJuIG1fc2hhcmVkV29ya2VyU2VydmVyLmdldCgpOyB9CisgICAg
V2ViU2hhcmVkV29ya2VyU2VydmVyJiBlbnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKTsKKwogICAg
IFdlYklEQlNlcnZlciogd2ViSURCU2VydmVyKCkgeyByZXR1cm4gbV93ZWJJREJTZXJ2ZXIuZ2V0
KCk7IH0KICAgICBXZWJJREJTZXJ2ZXImIGVuc3VyZVdlYklEQlNlcnZlcigpOwogICAgIHZvaWQg
Y2xvc2VJREJTZXJ2ZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTMxOCw2ICsz
MjIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySW5mbz4g
bV9zZXJ2aWNlV29ya2VySW5mbzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1dTZXJ2
ZXI+IG1fc3dTZXJ2ZXI7CiAjZW5kaWYKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29y
a2VyU2VydmVyPiBtX3NoYXJlZFdvcmtlclNlcnZlcjsKIAogICAgIFN0cmluZyBtX2lkYkRhdGFi
YXNlUGF0aDsKICAgICBSZWZQdHI8V2ViSURCU2VydmVyPiBtX3dlYklEQlNlcnZlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXgg
NWE4NzAzZWZkNmQ1Li4yN2Y2ZThkYTVmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0xNjIsNyArMTYyLDcgQEAgdm9pZCBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWUKIAogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkKIHsKLSAgICBtX2Nvbm5lY3Rpb24uc2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCk7CisgICAgbV9jb25uZWN0aW9uLnNl
cnZpY2VXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKTsKIH0K
IAogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNldFRocm90dGxlU3RhdGUo
Ym9vbCBpc1Rocm90dGxlYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2RjNGEwNTI2ODU4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcApAQCAtMCwwICsxLDI5OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIu
aCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5
TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgorI2luY2x1ZGUgIldlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI6OldlYlNoYXJlZFdvcmtlclNlcnZlcihOZXR3b3JrU2Vzc2lvbiYg
c2Vzc2lvbikKKyAgICA6IG1fc2Vzc2lvbihzZXNzaW9uKQoreworfQorCitXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXI6On5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIoKSA9IGRlZmF1bHQ7CisKK1BBTDo6U2Vz
c2lvbklEIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2Vzc2lvbklEKCkKK3sKKyAgICByZXR1cm4g
bV9zZXNzaW9uLnNlc3Npb25JRCgpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6
cmVxdWVzdFNoYXJlZFdvcmtlcihXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4sIFdlYkNv
cmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciwgVVJMJiYgdXJsLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgcG9ydCwg
V2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMpCit7CisgICAgV2ViQ29yZTo6
U2hhcmVkV29ya2VyS2V5IGtleSB7IG9yaWdpbiwgdXJsLCB3b3JrZXJPcHRpb25zLm5hbWUgfTsK
KyAgICBhdXRvJiBzaGFyZWRXb3JrZXIgPSBtX3NoYXJlZFdvcmtlcnMuZW5zdXJlKGtleSwgWyZd
IHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2hhcmVkV29ya2VyPihvcmlnaW4sIHVybCwg
d29ya2VyT3B0aW9ucyk7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIFJFTEVBU0VfTE9H
KFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtl
cjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3ByaXZhdGV9cywgc2hhcmVkV29ya2Vy
SWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJp
bmcoKS51dGY4KCkuZGF0YSgpLCBzaGFyZWRXb3JrZXItPmlkZW50aWZpZXIudG9VSW50NjQoKSk7
CisKKyAgICBpZiAoc2hhcmVkV29ya2VyLT53b3JrZXJPcHRpb25zLnR5cGUgIT0gd29ya2VyT3B0
aW9ucy50eXBlIHx8IHNoYXJlZFdvcmtlci0+d29ya2VyT3B0aW9ucy5jcmVkZW50aWFscyAhPSB3
b3JrZXJPcHRpb25zLmNyZWRlbnRpYWxzKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNo
YXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtlcjog
QSB3b3JrZXIgYWxyZWFkeSBleGlzdHMgd2l0aCB0aGlzIG5hbWUgYnV0IGhhcyBkaWZmZXJlbnQg
dHlwZSAvIGNyZWRlbnRpYWxzIik7CisgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9u
ID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNz
SWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIHNlcnZlckNvbm5lY3Rpb24tPm5vdGlmeVdvcmtl
ck9iamVjdE9mTG9hZENvbXBsZXRpb24oc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgeyBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzLmFk
ZChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBwb3J0KTsKKworICAgIGlmIChzaGFyZWRX
b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMuc2l6ZSgpID4gMSkgeworICAgICAgICBSRUxFQVNF
X0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRX
b3JrZXI6IEEgc2hhcmVkIHdvcmtlciB3aXRoIHRoaXMgVVJMIGFscmVhZHkgZXhpc3RzIChub3cg
c2hhcmVkIGJ5ICV1IHNoYXJlZCB3b3JrZXIgb2JqZWN0cykiLCBzaGFyZWRXb3JrZXItPnNoYXJl
ZFdvcmtlck9iamVjdHMuc2l6ZSgpKTsKKyAgICAgICAgaWYgKHNoYXJlZFdvcmtlci0+ZGlkRmlu
aXNoRmV0Y2hpbmcoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIHNlcnZlckNvbm5lY3Rpb24g
PSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJ
ZGVudGlmaWVyKCkpKQorICAgICAgICAgICAgICAgIHNlcnZlckNvbm5lY3Rpb24tPm5vdGlmeVdv
cmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24oc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwg
eyB9KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2hhcmVkV29ya2VyLT5pc1J1bm5pbmcpIHsK
KyAgICAgICAgICAgIGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gbV9jb250ZXh0Q29ubmVjdGlv
bnMuZ2V0KHNoYXJlZFdvcmtlci0+cmVnaXN0cmFibGVEb21haW4oKSk7CisgICAgICAgICAgICBB
U1NFUlQoY29udGV4dENvbm5lY3Rpb24pOworICAgICAgICAgICAgaWYgKGNvbnRleHRDb25uZWN0
aW9uKQorICAgICAgICAgICAgICAgIHBvc3RDb25uZWN0RXZlbnQoKmNvbnRleHRDb25uZWN0aW9u
LCBzaGFyZWRXb3JrZXItPmlkZW50aWZpZXIsIHBvcnQsIG9yaWdpbi5jbGllbnRPcmlnaW4udG9T
dHJpbmcoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlQo
IXNoYXJlZFdvcmtlci0+aXNSdW5uaW5nKTsKKworICAgIGF1dG8qIHNlcnZlckNvbm5lY3Rpb24g
PSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJ
ZGVudGlmaWVyKCkpOworICAgIEFTU0VSVChzZXJ2ZXJDb25uZWN0aW9uKTsKKworICAgIFJFTEVB
U0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJl
ZFdvcmtlcjogRmV0Y2hpbmcgc2hhcmVkIHdvcmtlciBzY3JpcHQgaW4gY2xpZW50Iik7CisgICAg
c2VydmVyQ29ubmVjdGlvbi0+ZmV0Y2hTY3JpcHRJbkNsaWVudCh1cmwsIHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIsIHdvcmtlck9wdGlvbnMsIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhp
cyB9LCBzaGFyZWRXb3JrZXIgPSBXZWFrUHRyIHsgKnNoYXJlZFdvcmtlciB9XShXZWJDb3JlOjpX
b3JrZXJGZXRjaFJlc3VsdCYmIGZldGNoUmVzdWx0KSB7CisgICAgICAgIGlmICh3ZWFrVGhpcyAm
JiBzaGFyZWRXb3JrZXIpCisgICAgICAgICAgICB3ZWFrVGhpcy0+ZGlkRmluaXNoRmV0Y2hpbmdT
aGFyZWRXb3JrZXJTY3JpcHQoKnNoYXJlZFdvcmtlciwgV1RGTW92ZShmZXRjaFJlc3VsdCkpOwor
ICAgIH0pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6bGF1bmNoU2hhcmVkV29y
a2VyKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25u
ZWN0aW9uLCBTaGFyZWRXb3JrZXImIHNoYXJlZFdvcmtlcikKK3sKKyAgICBSRUxFQVNFX0xPRyhT
aGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmxhdW5jaFNoYXJlZFdvcmtlcjog
Y29udGV4dENvbm5lY3Rpb249JXAsIHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCAm
Y29udGV4dENvbm5lY3Rpb24sIHNoYXJlZFdvcmtlci5pZGVudGlmaWVyLnRvVUludDY0KCkpOwor
ICAgIGNvbnRleHRDb25uZWN0aW9uLmxhdW5jaFNoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXIub3Jp
Z2luLCBzaGFyZWRXb3JrZXIuaWRlbnRpZmllciwgc2hhcmVkV29ya2VyLnVybCwgc2hhcmVkV29y
a2VyLndvcmtlck9wdGlvbnMsIHNoYXJlZFdvcmtlci5mZXRjaFJlc3VsdCk7CisgICAgc2hhcmVk
V29ya2VyLmlzUnVubmluZyA9IHRydWU7CisgICAgYXV0byBzb3VyY2VPcmlnaW4gPSBzaGFyZWRX
b3JrZXIub3JpZ2luLmNsaWVudE9yaWdpbi50b1N0cmluZygpOworICAgIGZvciAoYXV0byYgcG9y
dCA6IHNoYXJlZFdvcmtlci5zaGFyZWRXb3JrZXJPYmplY3RzLnZhbHVlcygpKQorICAgICAgICBw
b3N0Q29ubmVjdEV2ZW50KGNvbnRleHRDb25uZWN0aW9uLCBzaGFyZWRXb3JrZXIuaWRlbnRpZmll
ciwgcG9ydCwgc291cmNlT3JpZ2luKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6
OnBvc3RDb25uZWN0RXZlbnQoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
biYgY29udGV4dENvbm5lY3Rpb24sIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hh
cmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9y
dCYgc291cmNlUG9ydCwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit7CisgICAgUkVMRUFT
RV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpwb3N0Q29ubmVjdEV2
ZW50OiBjb250ZXh0Q29ubmVjdGlvbj0lcCwgc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1
NjQsICZjb250ZXh0Q29ubmVjdGlvbiwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKKyAgICBjb250ZXh0Q29ubmVjdGlvbi5wb3N0Q29ubmVjdEV2ZW50KHNoYXJlZFdvcmtlcklk
ZW50aWZpZXIsIHNvdXJjZVBvcnQsIHNvdXJjZU9yaWdpbik7Cit9CisKK3ZvaWQgV2ViU2hhcmVk
V29ya2VyU2VydmVyOjpkaWRGaW5pc2hGZXRjaGluZ1NoYXJlZFdvcmtlclNjcmlwdChTaGFyZWRX
b3JrZXImIHdvcmtlciwgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJiBmZXRjaFJlc3VsdCkK
K3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6
OmRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29ya2VyU2NyaXB0IHNoYXJlZFdvcmtlcklkZW50aWZp
ZXI9JSIgUFJJdTY0ICIsIHdvcmtlcj0lcCwgc3VjY2Vzcz0lZCIsIHdvcmtlci5pZGVudGlmaWVy
LnRvVUludDY0KCksICZ3b3JrZXIsIGZldGNoUmVzdWx0LmVycm9yLmlzTnVsbCgpKTsKKworICAg
IGZvciAoYXV0byBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIDogd29ya2VyLnNoYXJlZFdv
cmtlck9iamVjdHMua2V5cygpKSB7CisgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9u
ID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNz
SWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIHNlcnZlckNvbm5lY3Rpb24tPm5vdGlmeVdvcmtl
ck9iamVjdE9mTG9hZENvbXBsZXRpb24oc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgZmV0
Y2hSZXN1bHQuZXJyb3IpOworICAgIH0KKworICAgIGlmICghZmV0Y2hSZXN1bHQuZXJyb3IuaXNO
dWxsKCkpIHsKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJzLnJlbW92ZSh3b3JrZXIua2V5KCkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd29ya2VyLmZldGNoUmVzdWx0ID0gV1RGTW92
ZShmZXRjaFJlc3VsdCk7CisKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gd29ya2VyLnJl
Z2lzdHJhYmxlRG9tYWluKCk7CisgICAgYXV0byogY29udGV4dENvbm5lY3Rpb24gPSBjb250ZXh0
Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBp
ZiAoIWNvbnRleHRDb25uZWN0aW9uKSB7CisgICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9u
KHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGxhdW5j
aFNoYXJlZFdvcmtlcigqY29udGV4dENvbm5lY3Rpb24sIHdvcmtlcik7Cit9CisKK2Jvb2wgV2Vi
U2hhcmVkV29ya2VyU2VydmVyOjpuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVE
b21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWlu
KSBjb25zdAoreworICAgIGZvciAoYXV0byYgc2hhcmVkV29ya2VyIDogbV9zaGFyZWRXb3JrZXJz
LnZhbHVlcygpKSB7CisgICAgICAgIGlmIChyZWdpc3RyYWJsZURvbWFpbi5tYXRjaGVzKHNoYXJl
ZFdvcmtlci0+dXJsKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0
Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVE
b21haW4pCit7CisgICAgQVNTRVJUKCFtX2NvbnRleHRDb25uZWN0aW9ucy5jb250YWlucyhyZWdp
c3RyYWJsZURvbWFpbikpOworICAgIGlmIChtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFp
bnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICByZXR1cm47CisKKyAgICBS
RUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNyZWF0ZUNv
bnRleHRDb25uZWN0aW9uIHdpbGwgY3JlYXRlIGEgY29ubmVjdGlvbiIpOworCisgICAgbV9wZW5k
aW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5zLmFkZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAg
bV9zZXNzaW9uLm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hT
aGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyByZWdpc3RyYWJs
ZURvbWFpbiwgbV9zZXNzaW9uLnNlc3Npb25JRCgpIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9LCByZWdpc3RyYWJsZURvbWFpbl0geworICAgICAgICBpZiAoIXdlYWtUaGlz
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtl
ciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24gc2hvdWxk
IG5vdyBoYXZlIGNyZWF0ZWQgYSBjb25uZWN0aW9uIik7CisKKyAgICAgICAgQVNTRVJUKG1fcGVu
ZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWlucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikp
OworICAgICAgICBtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnMucmVtb3ZlKHJlZ2lz
dHJhYmxlRG9tYWluKTsKKworICAgICAgICBpZiAobV9jb250ZXh0Q29ubmVjdGlvbnMuY29udGFp
bnMocmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlm
IChuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVE
b21haW4pKQorICAgICAgICAgICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVE
b21haW4pOworICAgIH0sIDApOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRk
Q29udGV4dENvbm5lY3Rpb24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
biYgY29udGV4dENvbm5lY3Rpb24pCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAi
V2ViU2hhcmVkV29ya2VyU2VydmVyOjphZGRDb250ZXh0Q29ubmVjdGlvbiglcCkgd2ViUHJvY2Vz
c0lkZW50aWZpZXI9JSIgUFJJdTY0LCAmY29udGV4dENvbm5lY3Rpb24sIGNvbnRleHRDb25uZWN0
aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBBU1NFUlQoIW1f
Y29udGV4dENvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbnRleHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxl
RG9tYWluKCkpKTsKKworICAgIG1fY29udGV4dENvbm5lY3Rpb25zLmFkZChjb250ZXh0Q29ubmVj
dGlvbi5yZWdpc3RyYWJsZURvbWFpbigpLCAmY29udGV4dENvbm5lY3Rpb24pOworCisgICAgY29u
dGV4dENvbm5lY3Rpb25DcmVhdGVkKGNvbnRleHRDb25uZWN0aW9uKTsKK30KKwordm9pZCBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI6OnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uKQoreworICAgIFJF
TEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29u
dGV4dENvbm5lY3Rpb24oJXApIHdlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgJmNvbnRl
eHRDb25uZWN0aW9uLCBjb250ZXh0Q29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRv
VUludDY0KCkpOworCisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IGNvbnRleHRDb25uZWN0
aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCk7CisKKyAgICBBU1NFUlQobV9jb250ZXh0Q29ubmVjdGlv
bnMuZ2V0KHJlZ2lzdHJhYmxlRG9tYWluKSA9PSAmY29udGV4dENvbm5lY3Rpb24pOworCisgICAg
bV9jb250ZXh0Q29ubmVjdGlvbnMucmVtb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKKworICAgIGlm
IChuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVE
b21haW4pKQorICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFp
bik7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjb250ZXh0Q29ubmVjdGlvbkNy
ZWF0ZWQoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENv
bm5lY3Rpb24pCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29y
a2VyU2VydmVyOjpjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoJXApIHdlYlByb2Nlc3NJZGVudGlm
aWVyPSUiIFBSSXU2NCwgJmNvbnRleHRDb25uZWN0aW9uLCBjb250ZXh0Q29ubmVjdGlvbi53ZWJQ
cm9jZXNzSWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgIGF1dG8mIHJlZ2lzdHJhYmxlRG9t
YWluID0gY29udGV4dENvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKTsKKyAgICBmb3IgKGF1
dG8mIHdvcmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAod29y
a2VyLT5kaWRGaW5pc2hGZXRjaGluZygpICYmIHJlZ2lzdHJhYmxlRG9tYWluLm1hdGNoZXMod29y
a2VyLT51cmwpKQorICAgICAgICAgICAgbGF1bmNoU2hhcmVkV29ya2VyKGNvbnRleHRDb25uZWN0
aW9uLCAqd29ya2VyKTsKKyAgICB9Cit9CisKK2F1dG8gV2ViU2hhcmVkV29ya2VyU2VydmVyOjpz
aGFyZWRXb3JrZXJCeUlkZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBz
aGFyZWRXb3JrZXJJZGVudGlmaWVyKSAtPiBTaGFyZWRXb3JrZXIqCit7CisgICAgZm9yIChhdXRv
JiB3b3JrZXIgOiBtX3NoYXJlZFdvcmtlcnMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHdvcmtl
ci0+aWRlbnRpZmllciA9PSBzaGFyZWRXb3JrZXJJZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0
dXJuIHdvcmtlci5nZXQoKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2F1dG8g
V2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaGFyZWRXb3JrZXJCeU9iamVjdElkZW50aWZpZXIoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyKSAtPiBTaGFyZWRXb3JrZXIqCit7CisgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3No
YXJlZFdvcmtlcnMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHdvcmtlci0+c2hhcmVkV29ya2Vy
T2JqZWN0cy5jb250YWlucyhzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKSkKKyAgICAgICAg
ICAgIHJldHVybiB3b3JrZXIuZ2V0KCk7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQor
Cit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3
YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyKQoreworICAgIGF1dG8qIHdvcmtlciA9IHNoYXJlZFdvcmtlckJ5T2JqZWN0
SWRlbnRpZmllcihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xP
RyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNoYXJlZFdvcmtlck9iamVj
dElzR29pbmdBd2F5OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMsIHdv
cmtlcj0lcCIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCB3b3JrZXIpOworICAgIGlmICghd29ya2VyKQorICAgICAgICByZXR1cm47CisKKyAg
ICB3b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMucmVtb3ZlKHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIpOworICAgIGlmICghd29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2h1dERvd25TaGFyZWRXb3JrZXIod29ya2VyLT5r
ZXkoKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaHV0RG93blNoYXJlZFdv
cmtlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIGtleSkKK3sKKyAgICBhdXRvIHdv
cmtlciA9IG1fc2hhcmVkV29ya2Vycy50YWtlKGtleSk7CisgICAgUkVMRUFTRV9MT0coU2hhcmVk
V29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaHV0RG93blNoYXJlZFdvcmtlcjogc2hh
cmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgd29ya2VyPSVwIiwgd29ya2VyID8gd29y
a2VyLT5pZGVudGlmaWVyLnRvVUludDY0KCkgOiAwLCB3b3JrZXIuZ2V0KCkpOworICAgIGlmICgh
d29ya2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9
IGNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4od29ya2VyLT5yZWdpc3RyYWJs
ZURvbWFpbigpKTsKKyAgICBpZiAoIWNvbnRleHRDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47
CisKKyAgICBjb250ZXh0Q29ubmVjdGlvbi0+dGVybWluYXRlU2hhcmVkV29ya2VyKHdvcmtlci0+
aWRlbnRpZmllcik7CisKKyAgICBpZiAoIW5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3Ry
YWJsZURvbWFpbih3b3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCkpKQorICAgICAgICBjb250ZXh0
Q29ubmVjdGlvbi0+Y29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKTsKK30KKwordm9pZCBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI6OmFkZENvbm5lY3Rpb24oc3RkOjp1bmlxdWVfcHRyPFdlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKK3sKKyAgICBhdXRvIHByb2Nl
c3NJZGVudGlmaWVyID0gY29ubmVjdGlvbi0+d2ViUHJvY2Vzc0lkZW50aWZpZXIoKTsKKyAgICBS
RUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmFkZENvbm5l
Y3Rpb24oJXApOiBwcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQsIGNvbm5lY3Rpb24uZ2V0KCks
IHByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIEFTU0VSVCghbV9jb25uZWN0aW9u
cy5jb250YWlucyhwcm9jZXNzSWRlbnRpZmllcikpOworICAgIG1fY29ubmVjdGlvbnMuYWRkKHBy
b2Nlc3NJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKK30KKwordm9pZCBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6OnJlbW92ZUNvbm5lY3Rpb24oV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXIgcHJvY2Vzc0lkZW50aWZpZXIpCit7CisgICAgYXV0byBjb25uZWN0aW9uID0gbV9jb25uZWN0
aW9ucy50YWtlKHByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3Jr
ZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlbW92ZUNvbm5lY3Rpb24oJXApOiBwcm9jZXNz
SWRlbnRpZmllcj0lIiBQUkl1NjQsIGNvbm5lY3Rpb24uZ2V0KCksIHByb2Nlc3NJZGVudGlmaWVy
LnRvVUludDY0KCkpOworICAgIEFTU0VSVChjb25uZWN0aW9uKTsKKworICAgIFZlY3RvcjxXZWJD
b3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPiBzaGFyZWRXb3JrZXJPYmplY3RzR29p
bmdBd2F5OworICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9zaGFyZWRXb3JrZXJzLnZhbHVlcygp
KSB7CisgICAgICAgIGZvciAoYXV0byYgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA6IHdv
cmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5rZXlzKCkpIHsKKyAgICAgICAgICAgIGlmIChzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gcHJvY2Vzc0lk
ZW50aWZpZXIpCisgICAgICAgICAgICAgICAgc2hhcmVkV29ya2VyT2JqZWN0c0dvaW5nQXdheS5h
cHBlbmQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgZm9yIChhdXRvIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgOiBzaGFyZWRXb3JrZXJP
YmplY3RzR29pbmdBd2F5KQorICAgICAgICBzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVy
OjpTaGFyZWRXb3JrZXI6OlNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
IG9yaWdpbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdv
cmtlck9wdGlvbnMpCisgICAgOiBpZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50
aWZpZXI6OmdlbmVyYXRlKCkpCisgICAgLCBvcmlnaW4ob3JpZ2luKQorICAgICwgdXJsKHVybCkK
KyAgICAsIHdvcmtlck9wdGlvbnMod29ya2VyT3B0aW9ucykKK3sKK30KKwordm9pZCBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VVUkwpCit7CisgICAgYXV0byogd29ya2VyID0gc2hhcmVkV29ya2VyQnlJZGVu
dGlmaWVyKHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNo
YXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cG9zdEV4Y2VwdGlvblRvV29ya2Vy
T2JqZWN0OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCAiLCB3b3JrZXI9JXAiLCBz
aGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCksIHdvcmtlcik7CisgICAgaWYgKCF3b3Jr
ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyIDogd29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzLmtleXMoKSkgeworICAgICAg
ICBpZiAoYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSkpCisgICAgICAgICAgICBz
ZXJ2ZXJDb25uZWN0aW9uLT5wb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qoc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IHNvdXJjZVVSTCk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdv
cmtlclNlcnZlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyU2VydmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi5jZWI2MjNjYzZlNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaApAQCAtMCww
ICsxLDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29y
ZS9Qcm9jZXNzSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21h
aW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJJZGVudGlmaWVyLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJLZXkuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RyYW5zZmVycmVkTWVz
c2FnZVBvcnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlckZldGNoUmVzdWx0Lmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9Xb3JrZXJPcHRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IENsaWVudE9yaWdpbjsKK30KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtTZXNzaW9uOworY2xhc3MgV2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb247CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlciA6IHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIoTmV0
d29ya1Nlc3Npb24mKTsKKyAgICB+V2ViU2hhcmVkV29ya2VyU2VydmVyKCk7CisKKyAgICBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQoKTsKKworICAgIHZvaWQgcmVxdWVzdFNoYXJlZFdvcmtlcihX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciwgVVJMJiYsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgV2ViQ29yZTo6
V29ya2VyT3B0aW9ucyYmKTsKKyAgICB2b2lkIHNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5
KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworCisgICAgdm9pZCBhZGRD
b250ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Jik7CisgICAgdm9pZCByZW1vdmVDb250ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CisKKyAgICB2b2lkIGFkZENvbm5lY3Rpb24oc3RkOjp1
bmlxdWVfcHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24+JiYpOworICAgIHZvaWQg
cmVtb3ZlQ29ubmVjdGlvbihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CisKKyAgICBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBjb250ZXh0Q29ubmVjdGlvbkZv
clJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21h
aW4pIHsgcmV0dXJuIG1fY29udGV4dENvbm5lY3Rpb25zLmdldChkb21haW4pOyB9CisKKyAgICB2
b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBj
b2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKworcHJpdmF0ZToKKyAgICB2
b2lkIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJik7CisKKyAgICBib29sIG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURv
bWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OworICAgIHZvaWQg
Y29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24mKTsKKworICAgIHN0cnVjdCBTaGFyZWRXb3JrZXIgOiBDYW5NYWtlV2Vha1B0cjxT
aGFyZWRXb3JrZXI+IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwor
CisgICAgICAgIFNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBjb25z
dCBVUkwmLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJik7CisKKyAgICAgICAgYm9vbCBk
aWRGaW5pc2hGZXRjaGluZygpIGNvbnN0IHsgcmV0dXJuICEhZmV0Y2hSZXN1bHQuc2NyaXB0OyB9
CisgICAgICAgIFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSBrZXkoKSBjb25zdCB7IHJldHVybiB7
IG9yaWdpbiwgdXJsLCB3b3JrZXJPcHRpb25zLm5hbWUgfTsgfQorICAgICAgICBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJuIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsIH07IH0KKworICAgICAgICBXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXI7CisgICAgICAgIFdlYkNvcmU6OkNsaWVudE9y
aWdpbiBvcmlnaW47CisgICAgICAgIFVSTCB1cmw7CisgICAgICAgIFdlYkNvcmU6Oldvcmtlck9w
dGlvbnMgd29ya2VyT3B0aW9uczsKKyAgICAgICAgSGFzaE1hcDxXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0PiBzaGFy
ZWRXb3JrZXJPYmplY3RzOworICAgICAgICBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCBmZXRj
aFJlc3VsdDsKKyAgICAgICAgYm9vbCBpc1J1bm5pbmcgeyBmYWxzZSB9OworICAgIH07CisKKyAg
ICBTaGFyZWRXb3JrZXIqIHNoYXJlZFdvcmtlckJ5SWRlbnRpZmllcihXZWJDb3JlOjpTaGFyZWRX
b3JrZXJJZGVudGlmaWVyKTsKKyAgICBTaGFyZWRXb3JrZXIqIHNoYXJlZFdvcmtlckJ5T2JqZWN0
SWRlbnRpZmllcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICB2
b2lkIGRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29ya2VyU2NyaXB0KFNoYXJlZFdvcmtlciYsIFdl
YkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYpOworICAgIHZvaWQgbGF1bmNoU2hhcmVkV29ya2Vy
KFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mLCBTaGFyZWRXb3JrZXIm
KTsKKyAgICB2b2lkIHBvc3RDb25uZWN0RXZlbnQoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdp
bik7CisgICAgdm9pZCBzaHV0RG93blNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRX
b3JrZXJLZXkmKTsKKworICAgIE5ldHdvcmtTZXNzaW9uJiBtX3Nlc3Npb247CisgICAgSGFzaE1h
cDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFdlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb24+PiBtX2Nvbm5lY3Rpb25zOworICAgIEhhc2hNYXA8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4sIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24qPiBtX2NvbnRleHRDb25uZWN0aW9uczsKKyAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluPiBtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnM7CisgICAgSGFz
aE1hcDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXksIHN0ZDo6dW5pcXVlX3B0cjxTaGFyZWRXb3Jr
ZXI+PiBtX3NoYXJlZFdvcmtlcnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mYzliODg2OGYzYTQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgor
I2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvV29ya2VyRmV0Y2hSZXN1bHQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKKyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0co
U2hhcmVkV29ya2VyLCAiJXAgLSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OiIgZm10LCB0aGlzLCBtX3dlYlByb2Nlc3NJ
ZGVudGlmaWVyLnRvVUludDY0KCksICMjX19WQV9BUkdTX18pCisjZGVmaW5lIENPTk5FQ1RJT05f
UkVMRUFTRV9MT0dfRVJST1IoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKFNoYXJlZFdvcmtl
ciwgIiVwIC0gW3dlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgbV93ZWJQcm9jZXNzSWRlbnRpZmllci50
b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3
b3JrUHJvY2VzcywgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIsIElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50
aWZpZXIpCisgICAgOiBtX2NvbnRlbnRDb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX25l
dHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQorICAgICwgbV9zZXJ2ZXIoc2VydmVyKQorICAg
ICwgbV93ZWJQcm9jZXNzSWRlbnRpZmllcih3ZWJQcm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICBD
T05ORUNUSU9OX1JFTEVBU0VfTE9HKCJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOiIp
OworfQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjp+V2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygifldlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Iik7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiogV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBj
b25zdAoreworICAgIHJldHVybiBtX2NvbnRlbnRDb25uZWN0aW9uLnB0cigpOworfQorCitQQUw6
OlNlc3Npb25JRCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpzZXNzaW9uSUQoKQor
eworICAgIHJldHVybiBzZXJ2ZXIoKS5zZXNzaW9uSUQoKTsKK30KKworTmV0d29ya1Nlc3Npb24q
IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OnNlc3Npb24oKQoreworICAgIHJldHVy
biBtX25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSk7Cit9CisKK3Zv
aWQgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6cmVxdWVzdFNoYXJlZFdvcmtlcihX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgVVJMJiYgdXJsLCBXZWJD
b3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgcG9ydCwgV2ViQ29yZTo6V29ya2VyT3B0aW9u
cyYmIHdvcmtlck9wdGlvbnMpCit7CisgICAgQVNTRVJUKHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsgLy8g
RklYTUU6IFNob3VsZCBiZSBhIE1FU1NBR0VfQ0hFQ0soKS4KKyAgICBDT05ORUNUSU9OX1JFTEVB
U0VfTE9HKCJyZXF1ZXN0U2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
PSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSB0aGlzLT5zZXNzaW9uKCkpCisg
ICAgICAgIHNlc3Npb24tPmVuc3VyZVNoYXJlZFdvcmtlclNlcnZlcigpLnJlcXVlc3RTaGFyZWRX
b3JrZXIoV1RGTW92ZShvcmlnaW4pLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXVEZN
b3ZlKHVybCksIFdURk1vdmUocG9ydCksIFdURk1vdmUod29ya2VyT3B0aW9ucykpOworfQorCit2
b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OmZldGNoU2NyaXB0SW5DbGllbnQo
Y29uc3QgVVJMJiB1cmwsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYg
d29ya2VyT3B0aW9ucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXb3JrZXJGZXRj
aFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVB
U0VfTE9HKCJmZXRjaFNjcmlwdEluQ2xpZW50OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
PSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uOjpGZXRjaFNjcmlwdEluQ2xpZW50IHsgdXJsLCBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLCB3b3JrZXJPcHRpb25zIH0sIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpu
b3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygi
bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbjogc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllcj0le3B1YmxpY31zLCBzdWNjZXNzPSVkIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmlzTnVsbCgpKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpOb3RpZnlXb3JrZXJP
YmplY3RPZkxvYWRDb21wbGV0aW9uIHsgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgZXJy
b3IgfSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6cG9zdEV4
Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKCJwb3N0RXhjZXB0aW9u
VG9Xb3JrZXJPYmplY3Q6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIs
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpQb3N0
RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QgeyBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBl
cnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMIH0pOworfQor
Cit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OnNoYXJlZFdvcmtlck9iamVj
dElzR29pbmdBd2F5KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIp
OyAvLyBGSVhNRTogU2hvdWxkIGJlIGEgTUVTU0FHRV9DSEVDSygpLgorICAgIENPTk5FQ1RJT05f
UkVMRUFTRV9MT0coInNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5OiBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSB0aGlz
LT5zZXNzaW9uKCkpCisgICAgICAgIHNlc3Npb24tPmVuc3VyZVNoYXJlZFdvcmtlclNlcnZlcigp
LnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIpOworfQorCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPRworI3VuZGVmIENPTk5FQ1RJ
T05fUkVMRUFTRV9MT0dfRVJST1IKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJl
ZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kM2RlNGUxYjQ5YmQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVzc2Fn
ZVNlbmRlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0Oworc3RydWN0IFdvcmtlck9wdGlv
bnM7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrUHJvY2VzczsKK2Ns
YXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlcjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb247CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b24gOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFdlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oTmV0d29ya1Byb2Nlc3MmLCBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXImLCBJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7Cisg
ICAgfldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oKTsKKworICAgIFdlYlNoYXJlZFdv
cmtlclNlcnZlciYgc2VydmVyKCkgeyByZXR1cm4gbV9zZXJ2ZXI7IH0KKyAgICBjb25zdCBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlcigpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyOyB9CisK
KyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKTsKKyAgICBOZXR3b3JrU2Vzc2lvbiogc2Vz
c2lvbigpOworICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV93ZWJQcm9jZXNzSWRlbnRpZmllcjsgfQorCisgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5h
bDsKKworICAgIHZvaWQgZmV0Y2hTY3JpcHRJbkNsaWVudChjb25zdCBVUkwmLCBXZWJDb3JlOjpT
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25z
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmKT4m
Jik7CisgICAgdm9pZCBub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKFdlYkNvcmU6
OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKTsKKyAgICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsK
KworcHJpdmF0ZToKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCisgICAgSVBDOjpDb25uZWN0
aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90
IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQor
CisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAgIHZvaWQgcmVxdWVzdFNoYXJlZFdvcmtlcihXZWJD
b3JlOjpDbGllbnRPcmlnaW4mJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciwgVVJMJiYsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgV2ViQ29yZTo6V29y
a2VyT3B0aW9ucyYmKTsKKyAgICB2b2lkIHNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KFdl
YkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworCisgICAgUmVmPElQQzo6Q29u
bmVjdGlvbj4gbV9jb250ZW50Q29ubmVjdGlvbjsKKyAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1f
bmV0d29ya1Byb2Nlc3M7CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBtX3NlcnZlcjsKKyAg
ICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZhZTRhMDgwMzc3OQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNiBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgeworICAgIFJlcXVlc3RTaGFyZWRXb3Jr
ZXIoc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgVVJMIHVy
bCwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBwb3J0LCBzdHJ1Y3QgV2ViQ29yZTo6
V29ya2VyT3B0aW9ucyB3b3JrZXJPcHRpb25zKQorICAgIFNoYXJlZFdvcmtlck9iamVjdElzR29p
bmdBd2F5KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllcikKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40OWMxMTI0MTUyMTgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAi
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNoYXJl
ZFdvcmtlclNlcnZlci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworI2RlZmluZSBDT05URVhU
X0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtl
ciwgIiVwIC0gW3dlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgd2ViUHJvY2Vzc0lkZW50
aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIFdlYlNoYXJlZFdv
cmtlclNlcnZlciYgc2VydmVyKQorICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAg
LCBtX3NlcnZlcihzZXJ2ZXIpCisgICAgLCBtX3JlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxl
RG9tYWluKQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjoiKTsKKyAgICBzZXJ2ZXIuYWRkQ29udGV4
dENvbm5lY3Rpb24oKnRoaXMpOworfQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjp+V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpCit7
CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJ+V2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjoiKTsKKyAgICBpZiAobV9zZXJ2ZXIgJiYgbV9zZXJ2ZXIt
PmNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4o
KSkgPT0gdGhpcykKKyAgICAgICAgbV9zZXJ2ZXItPnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKCp0
aGlzKTsKK30KKworV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6d2ViUHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2Nvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKTsKK30KKworSVBD
OjpDb25uZWN0aW9uJiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpp
cGNDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLmNvbm5lY3Rp
b24oKTsKK30KKworSVBDOjpDb25uZWN0aW9uKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0
dXJuICZpcGNDb25uZWN0aW9uKCk7Cit9CisKK3VpbnQ2NF90IFdlYlNoYXJlZFdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpjb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpCit7CisgICAgQ09OVEVY
VF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJjb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZDoiKTsK
KyAgICBtX2Nvbm5lY3Rpb24uc2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklz
Tm9Mb25nZXJOZWVkZWQoKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVk
V29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMKQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygicG9z
dEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2
NCwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBpZiAobV9zZXJ2ZXIp
CisgICAgICAgIG1fc2VydmVyLT5wb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qoc2hhcmVkV29y
a2VySWRlbnRpZmllciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNv
dXJjZVVSTCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6bGF1bmNoU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3Jp
Z2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJP
cHRpb25zLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYgZmV0Y2hSZXN1bHQpCit7
CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJsYXVuY2hTaGFyZWRXb3JrZXI6
IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVy
LnRvVUludDY0KCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6TGF1bmNoU2hhcmVkV29ya2VyIHsgb3JpZ2luLCBzaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyLCB1cmwsIHdvcmtlck9wdGlvbnMsIGZldGNoUmVzdWx0IH0pOworfQorCit2
b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnBvc3RDb25uZWN0
RXZlbnQoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiBwb3J0LCBjb25zdCBT
dHJpbmcmIHNvdXJjZU9yaWdpbikKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9M
T0coInBvc3RDb25uZWN0RXZlbnQ6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBz
aGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6UG9zdENvbm5lY3RFdmVudCB7
IHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIHBvcnQsIHNvdXJjZU9yaWdpbiB9KTsKK30KKwordm9p
ZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp0ZXJtaW5hdGVTaGFy
ZWRXb3JrZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVu
dGlmaWVyKQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygidGVybWluYXRl
U2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29y
a2VySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlRlcm1pbmF0ZVNoYXJlZFdvcmtlciB7IHNo
YXJlZFdvcmtlcklkZW50aWZpZXIgfSk7Cit9CisKKyN1bmRlZiBDT05URVhUX0NPTk5FQ1RJT05f
UkVMRUFTRV9MT0cKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJl
ZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iNjczZWNhZTI4M2YKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw3OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgi
CisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50
aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9U
cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJl
Z2lzdHJhYmxlRG9tYWluOworY2xhc3MgU2NyaXB0QnVmZmVyOworc3RydWN0IENsaWVudE9yaWdp
bjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKK3N0cnVjdCBXb3JrZXJPcHRpb25zOworfQor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI7CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2Vu
ZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgorICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYsIFdlYlNoYXJlZFdvcmtlclNlcnZlciYpOworICAgIH5XZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7CisKKyAgICBXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0OworICAgIGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJu
IG1fcmVnaXN0cmFibGVEb21haW47IH0KKyAgICBJUEM6OkNvbm5lY3Rpb24mIGlwY0Nvbm5lY3Rp
b24oKSBjb25zdDsKKworICAgIHZvaWQgbGF1bmNoU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFVS
TCYsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJG
ZXRjaFJlc3VsdCYpOworICAgIHZvaWQgcG9zdENvbm5lY3RFdmVudChXZWJDb3JlOjpTaGFyZWRX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0Jiwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOworICAgIHZvaWQgdGVybWluYXRlU2hhcmVkV29y
a2VyKFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworCisgICAgdm9pZCBjb25uZWN0
aW9uSXNOb0xvbmdlck5lZWRlZCgpOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICAvLyBJ
UEMgbWVzc2FnZXMuCisgICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29y
ZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7
CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNz
YWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CisKKyAgICBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgbV9jb25uZWN0aW9uOworICAgIFdlYWtQdHI8V2ViU2hhcmVkV29ya2Vy
U2VydmVyPiBtX3NlcnZlcjsKKyAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBtX3JlZ2lz
dHJhYmxlRG9tYWluOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmFlNDdjMTIyY2JhYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgeworICAgIFBvc3RFeGNlcHRpb25Ub1dvcmtl
ck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50
aWZpZXIsIFN0cmluZyBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyLCBTdHJpbmcgc291cmNlVVJMKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCAx
YzQyZDA0MGMxYTkuLmRlMzJmODE3MTcxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKQEAg
LTk3LDYgKzk3LDcgQEAgZXh0ZXJuICJDIiB7CiAgICAgTShTZXJ2aWNlV29ya2VyKSBcCiAgICAg
TShTZXNzaW9uU3RhdGUpIFwKICAgICBNKFNoYXJlZERpc3BsYXlMaXN0cykgXAorICAgIE0oU2hh
cmVkV29ya2VyKSBcCiAgICAgTShTdG9yYWdlKSBcCiAgICAgTShTdG9yYWdlQVBJKSBcCiAgICAg
TShUZXh0SW5wdXQpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cmlu
ZGV4IDdlYmZhNTE2YjUwMy4uNGM4Y2FkMDQ2NDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkKQEAgLTMwMywxMCArMzAzLDEzIEBAIGRlZiB0eXBlc190aGF0X2Nh
bm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyT3JDbGllbnRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNoYXJlZFN0cmluZ0hh
c2gnLAorICAgICAgICAnV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllcicsCisgICAgICAg
ICdXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNv
cmU6OlNsZWVwRGlzYWJsZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNvdXJjZUJ1
ZmZlckFwcGVuZE1vZGUnLAogICAgICAgICAnV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTdG9yYWdlVHlwZScs
CisgICAgICAgICdXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JywKICAgICAgICAgJ1dl
YkNvcmU6OlVzZXJNZWRpYVJlcXVlc3RJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6Oldl
YkxvY2tJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXIn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKaW5kZXggNGYwYTIzNTQ0MWIyLi5kOWU2MGNlNzg5ODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dApAQCAtMTQxLDYgKzE0MSwxMCBAQCBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
T3JpZ2luU3RvcmUuY3BwIEBuby11bmlmeQogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIEBuby11bmlmeQogTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIEBuby11bmlmeQogCitO
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcAorTmV0
d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24u
Y3BwCitOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5jcHAKKwogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVt
U3RvcmFnZU1hbmFnZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9y
YWdlSGFuZGxlLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhh
bmRsZVJlZ2lzdHJ5LmNwcApAQCAtNzgzLDYgKzc4Nyw5IEBAIFdlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V09yaWdpblRhYmxlLmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQuY3BwCiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3Zp
ZGVyLmNwcAorV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5jcHAKK1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLmNwcAorV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlclByb3ZpZGVy
LmNwcAogCiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5j
cHAKIApAQCAtODg1LDMgKzg5Miw3IEBAIFJlbW90ZVdlYkxvY2tSZWdpc3RyeU1lc3NhZ2VSZWNl
aXZlci5jcHAKIFNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2tNZXNzYWdlUmVjZWl2ZXIuY3BwCiBX
ZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBXZWJMb2NrUmVn
aXN0cnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKK1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKK1dlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGE2NzgzNjdhNzc1
YS4uMzMwMjBiZDVjM2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTUyOSw3ICs1MjksNyBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVdlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIgd2ViUHJvYwogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0ZXJtaW5hdGVV
bnJlc3BvbnNpdmVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyIHByb2Nlc3NJZGVudGlmaWVyKQogewogICAgIGlmIChSZWZQdHIgcHJvY2VzcyA9IFdlYlBy
b2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIocHJvY2Vzc0lkZW50aWZpZXIpKSB7Ci0g
ICAgICAgIHByb2Nlc3MtPmRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgICAgICBwcm9jZXNz
LT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3Jr
ZXIpOwogICAgICAgICBwcm9jZXNzLT5yZXF1ZXN0VGVybWluYXRpb24oUHJvY2Vzc1Rlcm1pbmF0
aW9uUmVhc29uOjpFeGNlZWRlZENQVUxpbWl0KTsKICAgICB9CiB9CkBAIC0xNDE1LDE2ICsxNDE1
LDIxIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRGVzdHJveVdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50CiB9CiAjZW5kaWYKIAordm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFp
biwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNoYXJl
ZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXVEZNb3ZlKHJlZ2lzdHJh
YmxlRG9tYWluKSwgc2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmVz
dGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVn
aXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTY3JpcHRF
eGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKLSAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcygqdGhpcywgV1RGTW92ZShyZWdp
c3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgc2Vzc2lvbklELCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlz
aFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV1RGTW92ZShy
ZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgc2Vzc2lvbklE
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6c2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBpZiAoYXV0byogcHJvY2Vz
cyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIoaWRlbnRpZmllcikpCi0g
ICAgICAgIHByb2Nlc3MtPmRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgICAgICBwcm9jZXNz
LT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3Jr
ZXIpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50
aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRl
bnRpZmllcikKQEAgLTE0NjAsNiArMTQ2NSwxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSQog
fQogI2VuZGlmCiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2hhcmVkV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVu
dGlmaWVyKQoreworICAgIGlmIChhdXRvKiBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9j
ZXNzRm9ySWRlbnRpZmllcihpZGVudGlmaWVyKSkKKyAgICAgICAgcHJvY2Vzcy0+ZGlzYWJsZVdv
cmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpOworfQorCiB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0
X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1
aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBxdW90
YSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUkVMRUFTRV9MT0coU3RvcmFnZSwgIiVw
IC0gTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VTcGFjZSIsIHRoaXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAppbmRleCBhNGUzNjQ1ZWJhYWUuLjY4NDFhMzRmZTA5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTMz
NCw2ICszMzQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRTZXJ2aWNlV29ya2VyQmFja2dy
b3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclBy
b2Nlc3NJZGVudGlmaWVyKTsKICAgICB2b2lkIGVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJv
Y2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lk
ZW50aWZpZXIpOwogI2VuZGlmCisgICAgdm9pZCBzaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlv
bk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICB2b2lkIGVz
dGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgdGVybWluYXRlV2ViUHJvY2VzcyhXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCAx
MmQwNmNlYmQ2MmEuLjE1NzU3ZWQ5YTI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5p
bgpAQCAtNjAsNiArNjAsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2Fj
eVJlY2VpdmVyIHsKICAgICBTdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIp
CiAgICAgRW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikKICNlbmRpZgorICAg
IEVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYworICAgIFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0
aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikK
IAogICAgIFNldFdlYlByb2Nlc3NIYXNVcGxvYWRzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
IHByb2Nlc3NJRCwgYm9vbCBoYXNVcGxvYWQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IGU0OTkzNWMzMjVmNi4uMWFjYjM0NDRhZmExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM2OTEsMTEgKzM2OTEsOSBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlckFnZW50KFN0cmluZyYmIHVzZXJBZ2VudCkKICAgICAg
ICAgcmV0dXJuOwogICAgIG1fdXNlckFnZW50ID0gV1RGTW92ZSh1c2VyQWdlbnQpOwogCi0jaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIC8vIFdlIHVwZGF0ZSB0aGUgc2VydmljZSB3b3Jr
ZXIgdGhlcmUgYXQgdGhlIG1vbWVudCB0byBiZSBzdXJlIHdlIHVzZSB2YWx1ZXMgdXNlZCBieSBh
Y3R1YWwgd2ViIHBhZ2VzLgogICAgIC8vIEZJWE1FOiBSZWZhY3RvciB0aGlzIHdoZW4gd2UgaGF2
ZSBhIGJldHRlciBVc2VyLUFnZW50IHN0b3J5LgotICAgIHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgp
LnVwZGF0ZVNlcnZpY2VXb3JrZXJVc2VyQWdlbnQobV91c2VyQWdlbnQpOwotI2VuZGlmCisgICAg
cHJvY2VzcygpLnByb2Nlc3NQb29sKCkudXBkYXRlV29ya2VyVXNlckFnZW50KG1fdXNlckFnZW50
KTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGFmYzIzZWU1M2Yx
Mi4uNGIxOWIwZDFkM2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCkBAIC01MjksNyArNTI5LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0V2ViQXV0
aG5Qcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm8KIGJvb2wg
V2ViUHJvY2Vzc1Bvb2w6OnNfdXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzcyA9IGZhbHNl
OwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0
YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3
b3JrUHJvY2Vzc1Byb3h5JiBwcm94eSwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURv
bWFpbiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2Vy
dmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25h
bDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVu
dGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiB3ZWJzaXRlRGF0YVN0b3JlID0g
V2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQoc2Vzc2lvbklE
KTsKICAgICBpZiAoIXdlYnNpdGVEYXRhU3RvcmUpCkBAIC01NDYsNyArNTQ2LDcgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhOZXQKICAgICBpZiAoc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKSB7
CiAgICAgICAgIC8vIFRoaXMgaXMgYSBzZXJ2aWNlIHdvcmtlciBmb3IgYSBzZXJ2aWNlIHdvcmtl
ciBwYWdlIHNvIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIHVzZSB1c2UgdGhlIHBhZ2UncyBXZWJQ
cm9jZXNzIGZvciB0aGUgc2VydmljZSB3b3JrZXIuCiAgICAgICAgIGlmICgoc2VydmljZVdvcmtl
clByb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIoc2Vy
dmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLT5wcm9jZXNzSWRlbnRpZmllcigpKSkpIHsKLSAgICAg
ICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVNlcnZpY2VXb3JrZXJzKHBy
b2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtl
cnMoKSk7CisgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVXb3Jr
ZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgcHJvY2Vzc1Bv
b2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOwogICAgICAg
ICAgICAgaWYgKHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSkg
ewogICAgICAgICAgICAgICAgIHByb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5yZW1vdmVQ
cm9jZXNzKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBXZWJQcm9jZXNzQ2FjaGU6OlNob3Vs
ZFNodXREb3duUHJvY2Vzczo6Tm8pOwogICAgICAgICAgICAgICAgIEFTU0VSVCghc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKTsKQEAgLTU2NCw3ICs1NjQsNyBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldAogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gcHJvY2Vzcy5wdHIoKTsKLSAg
ICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVNlcnZpY2VXb3JrZXJz
KHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdv
cmtlcnMoKSk7CisgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVX
b3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgcHJvY2Vz
c1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOwogCiAg
ICAgICAgICAgICBpZiAoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNo
ZSgpKSB7CiAgICAgICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLnJl
bW92ZVByb2Nlc3MoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NDYWNoZTo6
U2hvdWxkU2h1dERvd25Qcm9jZXNzOjpObyk7CkBAIC01NzcsNyArNTc3LDcgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyhOZXQKICAgICB9CiAKICAgICBpZiAoIXNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHkpIHsKLSAgICAgICAgYXV0byBuZXdQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmNy
ZWF0ZUZvclNlcnZpY2VXb3JrZXJzKCpwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21haW4gIHsg
cmVnaXN0cmFibGVEb21haW4gfSwgKndlYnNpdGVEYXRhU3RvcmUpOworICAgICAgICBhdXRvIG5l
d1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yV29ya2VycyhXZWJQcm9j
ZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsICpwcm9jZXNzUG9vbCwgUmVnaXN0
cmFibGVEb21haW4gIHsgcmVnaXN0cmFibGVEb21haW4gfSwgKndlYnNpdGVEYXRhU3RvcmUpOwog
ICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gbmV3UHJvY2Vzc1Byb3h5LnB0cigp
OwogCiAgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhTZXJ2aWNlV29y
a2VyLCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyBjcmVhdGluZyBhIG5ldyBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzIChwcm9jZXM9JXAsIFBJ
RD0lZCkiLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKQEAgLTU4NiwyMCArNTg2LDcwIEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MoTmV0CiAgICAgICAgIHByb2Nlc3NQb29sLT5tX3Byb2Nlc3Nlcy5hcHBlbmQo
V1RGTW92ZShuZXdQcm9jZXNzUHJveHkpKTsKICAgICB9CiAKLSAgICBBU1NFUlQoIXNlcnZpY2VX
b3JrZXJQcm9jZXNzZXMoKS5jb250YWlucygqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSkpOwot
ICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHkpOworICAgIHdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2VydmljZVdvcmtlclByb2Nlc3NQcm94
eSk7CiAKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hTZXJ2aWNlV29y
a2VyQ29udGV4dChwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMgPyBwcm9j
ZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29s
LT5tX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVE
b21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwotICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fc2VydmljZVdvcmtlclVzZXJBZ2VudC5p
c051bGwoKSkKLSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+c2V0U2VydmljZVdv
cmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyVXNlckFnZW50KTsKKyAg
ICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4
dChwcm9jZXNzUG9vbC0+bV93b3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQb29sLT5tX3dvcmtl
clByZWZlcmVuY2VzLnZhbHVlKCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZhdWx0UGFnZUdyb3VwLT5w
cmVmZXJlbmNlcygpLnN0b3JlKCksIHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBpZiAoIXByb2Nl
c3NQb29sLT5tX3dvcmtlclVzZXJBZ2VudC5pc051bGwoKSkKKyAgICAgICAgc2VydmljZVdvcmtl
clByb2Nlc3NQcm94eS0+c2V0V29ya2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3dvcmtlclVz
ZXJBZ2VudCk7CiB9CisjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlRnJvbVNl
cnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQordm9pZCBXZWJQ
cm9jZXNzUG9vbDo6cmVtb3ZlRnJvbVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmIHBy
b2Nlc3MpCiB7Ci0gICAgQVNTRVJUKHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb250YWlucyhw
cm9jZXNzKSk7Ci0gICAgc2VydmljZVdvcmtlclByb2Nlc3NlcygpLnJlbW92ZShwcm9jZXNzKTsK
KyAgICBBU1NFUlQod29ya2VyUHJvY2Vzc2VzKCkuY29udGFpbnMocHJvY2VzcykpOworICAgIHdv
cmtlclByb2Nlc3NlcygpLnJlbW92ZShwcm9jZXNzKTsKK30KKwordm9pZCBXZWJQcm9jZXNzUG9v
bDo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGF1dG8qIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3Jl
OjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChzZXNzaW9uSUQpOworICAgIGlmICghd2Vi
c2l0ZURhdGFTdG9yZSkKKyAgICAgICAgd2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREYXRhU3RvcmUoKS5wdHIoKTsKKyAgICBpZiAoIXByb2Nlc3NQb29scygpLnNp
emUoKSkKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZjxXZWJQcm9jZXNzUG9vbD4+
IHNoYXJlZFdvcmtlclByb2Nlc3NQb29sKFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoQVBJOjpQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpLmdldCgpKSk7CisKKyAgICAvLyBBcmJpdHJh
cmlseSBjaG9vc2UgdGhlIGZpcnN0IHByb2Nlc3MgcG9vbCB0byBob3N0IHRoZSBzaGFyZWQgd29y
a2VyIHByb2Nlc3MuCisgICAgYXV0byogcHJvY2Vzc1Bvb2wgPSBwcm9jZXNzUG9vbHMoKVswXTsK
KyAgICBBU1NFUlQocHJvY2Vzc1Bvb2wpOworCisgICAgV2ViUHJvY2Vzc1Byb3h5KiBzaGFyZWRX
b3JrZXJQcm9jZXNzUHJveHkgeyBudWxscHRyIH07CisKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3Mg
OiBwcm9jZXNzUG9vbC0+bV9wcm9jZXNzZXMpIHsKKyAgICAgICAgaWYgKHByb2Nlc3MucHRyKCkg
PT0gcHJvY2Vzc1Bvb2wtPm1fcHJld2FybWVkUHJvY2Vzcy5nZXQoKSB8fCBwcm9jZXNzLT5pc0R1
bW15UHJvY2Vzc1Byb3h5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCZw
cm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gd2Vic2l0ZURhdGFTdG9yZSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoIXByb2Nlc3MtPmlzTWF0Y2hpbmdSZWdpc3RyYWJs
ZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkgPSBwcm9jZXNzLnB0cigpOworICAgICAgICBz
aGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpX
b3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIsIHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyRm9yV29ya2VycygpKTsKKworICAgICAgICBpZiAoc2hhcmVkV29ya2VyUHJv
Y2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpIHsKKyAgICAgICAgICAgIHByb2Nlc3NQb29s
LT53ZWJQcm9jZXNzQ2FjaGUoKS5yZW1vdmVQcm9jZXNzKCpzaGFyZWRXb3JrZXJQcm9jZXNzUHJv
eHksIFdlYlByb2Nlc3NDYWNoZTo6U2hvdWxkU2h1dERvd25Qcm9jZXNzOjpObyk7CisgICAgICAg
ICAgICBBU1NFUlQoIXNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgp
KTsKKyAgICAgICAgfQorCisgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJ
QyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MgcmV1c2luZyBhbiBleGlzdGluZyB3ZWIgcHJvY2VzcyAocHJvY2Vzcz0l
cCwgUElEPSVkKSIsIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSwgc2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgaWYgKCFzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkpIHsKKyAgICAgICAgYXV0byBuZXdQcm9j
ZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvcldvcmtlcnMoV2ViUHJvY2Vzc1By
b3h5OjpXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIsICpwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVE
b21haW4gIHsgcmVnaXN0cmFibGVEb21haW4gfSwgKndlYnNpdGVEYXRhU3RvcmUpOworICAgICAg
ICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkgPSBuZXdQcm9jZXNzUHJveHkucHRyKCk7CisKKyAg
ICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElDKFNoYXJlZFdvcmtlciwgImVz
dGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyBjcmVh
dGluZyBhIG5ldyBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzIChwcm9jZXNzPSVwLCBQSUQ9JWQpIiwg
c2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LCBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPnByb2Nl
c3NJZGVudGlmaWVyKCkpOworCisgICAgICAgIHByb2Nlc3NQb29sLT5pbml0aWFsaXplTmV3V2Vi
UHJvY2VzcyhuZXdQcm9jZXNzUHJveHksIHdlYnNpdGVEYXRhU3RvcmUpOworICAgICAgICBwcm9j
ZXNzUG9vbC0+bV9wcm9jZXNzZXMuYXBwZW5kKFdURk1vdmUobmV3UHJvY2Vzc1Byb3h5KSk7Cisg
ICAgfQorCisgICAgd29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpzaGFyZWRXb3JrZXJQcm9jZXNzUHJv
eHkpOworCisgICAgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hTaGFyZWRXb3Jr
ZXJDb250ZXh0KHByb2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bvb2wt
Pm1fd29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdl
R3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVEb21haW4sIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBpZiAoIXByb2Nlc3NQb29sLT5tX3dvcmtlclVzZXJB
Z2VudC5pc051bGwoKSkKKyAgICAgICAgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRXb3Jr
ZXJVc2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFnZW50KTsKIH0KLSNlbmRpZgog
CiB2b2lkIFdlYlByb2Nlc3NQb29sOjp3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2Vk
KCkKIHsKQEAgLTEwMDMsMTAgKzEwNTMsOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25u
ZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiAKICAgICBtX2JhY2tGb3J3YXJk
Q2FjaGUtPnJlbW92ZUVudHJpZXNGb3JQcm9jZXNzKHByb2Nlc3MpOwogCi0jaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQotICAgIGlmIChwcm9jZXNzLmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkp
Ci0gICAgICAgIHJlbW92ZUZyb21TZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKHByb2Nlc3MpOwotI2Vu
ZGlmCisgICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nV29ya2VycygpKQorICAgICAgICByZW1vdmVG
cm9tV29ya2VyUHJvY2Vzc2VzKHByb2Nlc3MpOwogCiAgICAgc3RhdGljX2Nhc3Q8V2ViQ29udGV4
dFN1cHBsZW1lbnQqPihzdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PigpKS0+
cHJvY2Vzc0RpZENsb3NlKCZwcm9jZXNzKTsKIApAQCAtMTA2NywxMiArMTExNSwxMiBAQCBSZWY8
V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9t
YWluKFdlYnNpdGVEYXRhU3RvcgogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotVXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBXZWJQcm9jZXNzUG9vbDo6dXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllckZvclNlcnZpY2VXb3JrZXJzKCkKK1VzZXJDb250ZW50Q29udHJv
bGxlcklkZW50aWZpZXIgV2ViUHJvY2Vzc1Bvb2w6OnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXJGb3JXb3JrZXJzKCkKIHsKLSAgICBpZiAoIW1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9y
U2VydmljZVdvcmtlcikKLSAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNl
V29ya2VyID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmNyZWF0ZSgpOworICAgIGlm
ICghbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JXb3JrZXJzKQorICAgICAgICBtX3VzZXJDb250
ZW50Q29udHJvbGxlckZvcldvcmtlcnMgPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
Y3JlYXRlKCk7CiAKLSAgICByZXR1cm4gbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNl
V29ya2VyLT5pZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIG1fdXNlckNvbnRlbnRDb250cm9sbGVy
Rm9yV29ya2Vycy0+aWRlbnRpZmllcigpOwogfQogI2VuZGlmCiAKQEAgLTExMTksMTUgKzExNjcs
MTMgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UoUGFn
ZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSToKIAogICAgIGF1dG8gcGFnZSA9IHByb2Nlc3Mt
PmNyZWF0ZVdlYlBhZ2UocGFnZUNsaWVudCwgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwog
Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmICghbV9zZXJ2aWNlV29ya2VyUHJl
ZmVyZW5jZXMpIHsKLSAgICAgICAgbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMgPSBwYWdlLT5w
cmVmZXJlbmNlc1N0b3JlKCk7Ci0gICAgICAgIGZvciAoYXV0byYgc2VydmljZVdvcmtlclByb2Nl
c3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkpCi0gICAgICAgICAgICBzZXJ2aWNlV29ya2Vy
UHJvY2Vzcy51cGRhdGVTZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXNTdG9yZSgqbV9zZXJ2aWNlV29y
a2VyUHJlZmVyZW5jZXMpOworICAgIGlmICghbV93b3JrZXJQcmVmZXJlbmNlcykgeworICAgICAg
ICBtX3dvcmtlclByZWZlcmVuY2VzID0gcGFnZS0+cHJlZmVyZW5jZXNTdG9yZSgpOworICAgICAg
ICBmb3IgKGF1dG8mIHdvcmtlclByb2Nlc3MgOiB3b3JrZXJQcm9jZXNzZXMoKSkKKyAgICAgICAg
ICAgIHdvcmtlclByb2Nlc3MudXBkYXRlV29ya2VyUHJlZmVyZW5jZXNTdG9yZSgqbV93b3JrZXJQ
cmVmZXJlbmNlcyk7CiAgICAgfQogICAgIGlmICh1c2VyQ29udGVudENvbnRyb2xsZXIpCi0gICAg
ICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yU2VydmljZVdvcmtlciA9IHVzZXJDb250ZW50
Q29udHJvbGxlcjsKLSNlbmRpZgorICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvcldv
cmtlcnMgPSB1c2VyQ29udGVudENvbnRyb2xsZXI7CiAKICAgICBib29sIGVuYWJsZVByb2Nlc3NT
d2FwT25Dcm9zc1NpdGVOYXZpZ2F0aW9uID0gcGFnZS0+cHJlZmVyZW5jZXMoKS5wcm9jZXNzU3dh
cE9uQ3Jvc3NTaXRlTmF2aWdhdGlvbkVuYWJsZWQoKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQpAQCAtMTE1MCwxNiArMTE5NiwxNCBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9v
bDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogICAgIHJl
dHVybiBwYWdlOwogfQogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6dXBkYXRlU2VydmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVdvcmtlclVzZXJBZ2VudChjb25zdCBT
dHJpbmcmIHVzZXJBZ2VudCkKIHsKLSAgICBpZiAobV9zZXJ2aWNlV29ya2VyVXNlckFnZW50ID09
IHVzZXJBZ2VudCkKKyAgICBpZiAobV93b3JrZXJVc2VyQWdlbnQgPT0gdXNlckFnZW50KQogICAg
ICAgICByZXR1cm47Ci0gICAgbV9zZXJ2aWNlV29ya2VyVXNlckFnZW50ID0gdXNlckFnZW50Owot
ICAgIGZvciAoYXV0byYgc2VydmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzKCkpCi0gICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzLnNldFNlcnZpY2VXb3JrZXJVc2Vy
QWdlbnQobV9zZXJ2aWNlV29ya2VyVXNlckFnZW50KTsKKyAgICBtX3dvcmtlclVzZXJBZ2VudCA9
IHVzZXJBZ2VudDsKKyAgICBmb3IgKGF1dG8mIHdvcmtlclByb2Nlc3MgOiB3b3JrZXJQcm9jZXNz
ZXMoKSkKKyAgICAgICAgd29ya2VyUHJvY2Vzcy5zZXRXb3JrZXJVc2VyQWdlbnQobV93b3JrZXJV
c2VyQWdlbnQpOwogfQotI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVz
aW5nV2Vic2l0ZURhdGFTdG9yZShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgV2Vic2l0
ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQogewpAQCAtMTUzOCw4ICsxNTgyLDEzIEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzKCkKIHsKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiAgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwotICAgIHdoaWxl
IChzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkuY29tcHV0ZVNpemUoKSkKLSAgICAgICAgc2Vydmlj
ZVdvcmtlclByb2Nlc3NlcygpLmJlZ2luKCktPmRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAg
IFZlY3RvcjxSZWY8V2ViUHJvY2Vzc1Byb3h5Pj4gc2VydmljZVdvcmtlclByb2Nlc3NlczsKKyAg
ICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFsmXShhdXRvJiBwcm9jZXNzKSB7CisgICAgICAg
IGlmIChwcm9jZXNzLmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCisgICAgICAgICAgICBzZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzLmFwcGVuZChwcm9jZXNzKTsKKyAgICB9KTsKKyAgICBmb3IgKGF1
dG8mIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogc2VydmljZVdvcmtlclByb2Nlc3NlcykKKyAgICAg
ICAgc2VydmljZVdvcmtlclByb2Nlc3MtPmRpc2FibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6
V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiAjZW5kaWYKIH0KIApAQCAtMTc2NywxMyArMTgx
NiwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXBvcnRXZWJDb250ZW50Q1BVVGltZShTZWNv
bmRzIGNwdVRpbWUsIHVpbnQ2NF90IGFjdGl2aXR5UwogI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCi1XZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+JiBXZWJQcm9jZXNz
UG9vbDo6c2VydmljZVdvcmtlclByb2Nlc3NlcygpCitXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJv
eHk+JiBXZWJQcm9jZXNzUG9vbDo6d29ya2VyUHJvY2Vzc2VzKCkKIHsKICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8V2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5Pj4gcHJvY2Vzc2VzOwogICAg
IHJldHVybiBwcm9jZXNzZXM7CiB9Ci0jZW5kaWYKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBk
YXRlUHJvY2Vzc0Fzc2VydGlvbnMoKQogewpAQCAtMTc4NSwyMCArMTgzMiwyNSBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpCiAgICAgaWYgKGF1dG8qIGdw
dVByb2Nlc3MgPSBHUFVQcm9jZXNzUHJveHk6OnNpbmdsZXRvbklmQ3JlYXRlZCgpKQogICAgICAg
ICBncHVQcm9jZXNzLT51cGRhdGVQcm9jZXNzQXNzZXJ0aW9uKCk7CiAjZW5kaWYKLSNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCisKICAgICAvLyBDaGVjayBvbiBuZXh0IHJ1biBsb29wIHNpbmNl
IHRoZSB3ZWIgcHJvY2VzcyBwcm94eSB0b2tlbnMgYXJlIHByb2JhYmx5IGJlaW5nIHVwZGF0ZWQu
CiAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW10gewotICAgICAgICBmb3IgKGF1dG8mIHNlcnZpY2VX
b3JrZXJQcm9jZXNzIDogc2VydmljZVdvcmtlclByb2Nlc3NlcygpKQotICAgICAgICAgICAgc2Vy
dmljZVdvcmtlclByb2Nlc3MudXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsK
LSAgICB9KTsKKyAgICAgICAgd29ya2VyUHJvY2Vzc2VzKCkuZm9yRWFjaChbXShhdXRvJiB3b3Jr
ZXJQcm9jZXNzKSB7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgICAgICAgICAgaWYg
KHdvcmtlclByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKKyAgICAgICAgICAgICAg
ICB3b3JrZXJQcm9jZXNzLnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV2ViUHJvY2Vzc1By
b3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgorICAgICAgICAgICAgaWYg
KHdvcmtlclByb2Nlc3MuaXNSdW5uaW5nU2hhcmVkV29ya2VycygpKQorICAgICAgICAgICAgICAg
IHdvcmtlclByb2Nlc3MudXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXZWJQcm9jZXNzUHJv
eHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlcik7CisgICAgICAgIH0pOworICAgIH0pOwogfQog
CiBib29sIFdlYlByb2Nlc3NQb29sOjppc1NlcnZpY2VXb3JrZXJQYWdlSUQoV2ViUGFnZVByb3h5
SWRlbnRpZmllciBwYWdlSUQpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
ICAgIC8vIEZJWE1FOiBUaGlzIGlzIGluZWZmaWNpZW50LgotICAgIHJldHVybiBXVEY6OmFueU9m
KHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSwgW3BhZ2VJRF0oYXV0byYgcHJvY2VzcykgeworICAg
IHJldHVybiBXVEY6OmFueU9mKHdvcmtlclByb2Nlc3NlcygpLCBbcGFnZUlEXShhdXRvJiBwcm9j
ZXNzKSB7CiAgICAgICAgIHJldHVybiBwcm9jZXNzLmhhc1NlcnZpY2VXb3JrZXJQYWdlUHJveHko
cGFnZUlEKTsKICAgICB9KTsKICNlbmRpZgpAQCAtMjEyNCwxNiArMjE3NiwyNiBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpzZXRVc2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKGJvb2wgdXNl
U2VwYXJhdGVTZXJ2aWNlVwogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorc2l6ZV90
IFdlYlByb2Nlc3NQb29sOjpzZXJ2aWNlV29ya2VyUHJveGllc0NvdW50KCkgY29uc3QKK3sKKyAg
ICB1bnNpZ25lZCBjb3VudCA9IDA7CisgICAgd29ya2VyUHJvY2Vzc2VzKCkuZm9yRWFjaChbJl0o
YXV0byYgcHJvY2VzcykgeworICAgICAgICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdTZXJ2aWNlV29y
a2VycygpKQorICAgICAgICAgICAgKytjb3VudDsKKyAgICB9KTsKKyAgICByZXR1cm4gY291bnQ7
Cit9CisKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6Omhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0
aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjphbnlPZihzZXJ2aWNl
V29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICByZXR1cm4gV1RGOjph
bnlPZih3b3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2VzcykgewogICAgICAgICByZXR1
cm4gcHJvY2Vzcy5oYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygp
OwogICAgIH0pOwogfQogCiBib29sIFdlYlByb2Nlc3NQb29sOjpoYXNTZXJ2aWNlV29ya2VyQmFj
a2dyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6YW55
T2Yoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9jZXNzKSB7CisgICAgcmV0
dXJuIFdURjo6YW55T2Yod29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKICAg
ICAgICAgcmV0dXJuIHByb2Nlc3MuaGFzU2VydmljZVdvcmtlckJhY2tncm91bmRBY3Rpdml0eUZv
clRlc3RpbmcoKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCmluZGV4IGViNjZkODk0OTBkZi4uZTcwYjZmNDI5ZjdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTM3NCwxNyArMzc0LDIwIEBAIHB1YmxpYzoK
ICAgICB2b2lkIG5ldHdvcmtQcm9jZXNzRGlkVGVybWluYXRlKE5ldHdvcmtQcm9jZXNzUHJveHkm
LCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJtaW5hdGlvblJlYXNvbik7CiAKICAgICBib29sIGlz
U2VydmljZVdvcmtlclBhZ2VJRChXZWJQYWdlUHJveHlJZGVudGlmaWVyKSBjb25zdDsKKyAgICB2
b2lkIHJlbW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5Jik7CisKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgc3RhdGljIHZvaWQgZXN0YWJsaXNoU2VydmljZVdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5
JiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlm
aWVyLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2
b2lkIHJlbW92ZUZyb21TZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYpOwot
ICAgIHNpemVfdCBzZXJ2aWNlV29ya2VyUHJveGllc0NvdW50KCkgY29uc3QgeyByZXR1cm4gc2Vy
dmljZVdvcmtlclByb2Nlc3NlcygpLmNvbXB1dGVTaXplKCk7IH0KLSAgICB2b2lkIHVwZGF0ZVNl
cnZpY2VXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpOwotICAgIFVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
ckZvclNlcnZpY2VXb3JrZXJzKCk7CisgICAgc3RhdGljIHZvaWQgZXN0YWJsaXNoU2VydmljZVdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHNpemVfdCBzZXJ2aWNlV29ya2VyUHJv
eGllc0NvdW50KCkgY29uc3Q7CisgICAgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciB1
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpOwogICAgIGJvb2wgaGFz
U2VydmljZVdvcmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdDsKICAgICBi
b29sIGhhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3Q7
CiAjZW5kaWYKICAgICB2b2lkIHNlcnZpY2VXb3JrZXJQcm9jZXNzQ3Jhc2hlZChXZWJQcm9jZXNz
UHJveHkmKTsKIAorICAgIHZvaWQgdXBkYXRlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYg
dXNlckFnZW50KTsKKyAgICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwg
UEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBib29sIHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoKSBjb25zdDsK
ICNlbmRpZgpAQCAtNjE4LDEzICs2MjEsMTEgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hNYXA8UEFM
OjpTZXNzaW9uSUQsIFdlYWtQdHI8V2ViUHJvY2Vzc1Byb3h5Pj4gbV9kdW1teVByb2Nlc3NQcm94
aWVzOyAvLyBMaWdodHdlaWdodCBXZWJQcm9jZXNzUHJveHkgb2JqZWN0cyB3aXRob3V0IGJhY2tp
bmcgcHJvY2Vzcy4KIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBzdGF0aWMgV2Vh
a0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5PiYgc2VydmljZVdvcmtlclByb2Nlc3NlcygpOwotICAg
IGJvb2wgbV93YWl0aW5nRm9yV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uIHsgZmFsc2Ug
fTsKLSAgICBTdHJpbmcgbV9zZXJ2aWNlV29ya2VyVXNlckFnZW50OwotICAgIHN0ZDo6b3B0aW9u
YWw8V2ViUHJlZmVyZW5jZXNTdG9yZT4gbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXM7Ci0gICAg
UmVmUHRyPFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5PiBtX3VzZXJDb250ZW50Q29udHJv
bGxlckZvclNlcnZpY2VXb3JrZXI7Ci0jZW5kaWYKKyAgICBzdGF0aWMgV2Vha0hhc2hTZXQ8V2Vi
UHJvY2Vzc1Byb3h5PiYgd29ya2VyUHJvY2Vzc2VzKCk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFdl
YlByZWZlcmVuY2VzU3RvcmU+IG1fd29ya2VyUHJlZmVyZW5jZXM7CisgICAgUmVmUHRyPFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5PiBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtl
cnM7CisgICAgU3RyaW5nIG1fd29ya2VyVXNlckFnZW50OwogCiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQogICAgIFJlZlB0cjxHUFVQcm9jZXNzUHJveHk+IG1fZ3B1UHJvY2VzczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGNhYzM2N2YxMTE5Zi4u
NWNmODZjYzc4NmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUg
IldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKQEAgLTE4MiwxMSArMTgzLDExIEBAIFJlZjxXZWJQ
cm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sJiBwcm9j
ZXNzUG9vbCwgV2Vic2l0CiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1SZWY8V2Vi
UHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKFdl
YlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJs
ZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSkKK1JlZjxXZWJQcm9j
ZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yV29ya2VycyhXb3JrZXJUeXBlIHdv
cmtlclR5cGUsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21haW4m
JiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSkK
IHsKICAgICBhdXRvIHByb3h5ID0gYWRvcHRSZWYoKm5ldyBXZWJQcm9jZXNzUHJveHkocHJvY2Vz
c1Bvb2wsICZ3ZWJzaXRlRGF0YVN0b3JlLCBJc1ByZXdhcm1lZDo6Tm8sIENyb3NzT3JpZ2luTW9k
ZTo6U2hhcmVkLCBDYXB0aXZlUG9ydGFsTW9kZTo6RGlzYWJsZWQpKTsKICAgICBwcm94eS0+bV9y
ZWdpc3RyYWJsZURvbWFpbiA9IFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pOwotICAgIHByb3h5
LT5lbmFibGVTZXJ2aWNlV29ya2Vycyhwcm9jZXNzUG9vbC51c2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKSk7CisgICAgcHJveHktPmVuYWJsZVdvcmtlcnMo
d29ya2VyVHlwZSwgcHJvY2Vzc1Bvb2wudXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZv
cldvcmtlcnMoKSk7CiAgICAgcHJveHktPmNvbm5lY3QoKTsKICAgICByZXR1cm4gcHJveHk7CiB9
CkBAIC05OTUsMTAgKzk5NiwxMCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQmVjb21lVW5y
ZXNwb25zaXZlKCkKICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogaXNSZXNwb25zaXZlQ2FsbGJh
Y2tzKQogICAgICAgICBjYWxsYmFjayhpc1dlYlByb2Nlc3NSZXNwb25zaXZlKTsKIAotICAgIC8v
IElmIHRoZSB3ZWIgcHJvY2VzcyBiZWNvbWVzIHVucmVzcG9uc2l2ZSBhbmQgb25seSBydW5zIHNl
cnZpY2Ugd29ya2Vycywga2lsbCBpdCBvdXJzZWx2ZXMgc2luY2UgdGhlcmUgYXJlIG5vIG5hdGl2
ZSBjbGllbnRzIHRvIGRvIGl0LgotICAgIGlmIChpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpICYm
IG1fcGFnZU1hcC5pc0VtcHR5KCkpIHsKLSAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0Vf
TE9HX0VSUk9SKFBlcmZvcm1hbmNlTG9nZ2luZywgImRpZEJlY29tZVVucmVzcG9uc2l2ZTogVGVy
bWluYXRpbmcgc2VydmljZSB3b3JrZXItb25seSB3ZWIgcHJvY2VzcyBiZWNhdXNlIGl0IGlzIHVu
cmVzcG9uc2l2ZSIpOwotICAgICAgICBkaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICAvLyBJ
ZiB0aGUgd2ViIHByb2Nlc3MgYmVjb21lcyB1bnJlc3BvbnNpdmUgYW5kIG9ubHkgcnVucyBzZXJ2
aWNlL3NoYXJlZCB3b3JrZXJzLCBraWxsIGl0IG91cnNlbHZlcyBzaW5jZSB0aGVyZSBhcmUgbm8g
bmF0aXZlIGNsaWVudHMgdG8gZG8gaXQuCisgICAgaWYgKGlzUnVubmluZ1dvcmtlcnMoKSAmJiBt
X3BhZ2VNYXAuaXNFbXB0eSgpKSB7CisgICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xP
R19FUlJPUihQZXJmb3JtYW5jZUxvZ2dpbmcsICJkaWRCZWNvbWVVbnJlc3BvbnNpdmU6IFRlcm1p
bmF0aW5nIHdvcmtlci1vbmx5IHdlYiBwcm9jZXNzIGJlY2F1c2UgaXQgaXMgdW5yZXNwb25zaXZl
Iik7CisgICAgICAgIGRpc2FibGVXb3JrZXJzKHsgV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwg
V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyIH0pOwogICAgICAgICB0ZXJtaW5hdGUoKTsKICAgICB9
CiB9CkBAIC0xNjk0LDggKzE2OTUsOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUoY29uc3QgVVJMJiB1cmwpCiAgICAgYXV0byByZWdp
c3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsIH07CiAgICAg
aWYgKG1fcmVnaXN0cmFibGVEb21haW4gJiYgKm1fcmVnaXN0cmFibGVEb21haW4gIT0gcmVnaXN0
cmFibGVEb21haW4pIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgICAgIGRpc2Fi
bGVTZXJ2aWNlV29ya2VycygpOworICAgICAgICBkaXNhYmxlV29ya2VycyhXb3JrZXJUeXBlOjpT
ZXJ2aWNlV29ya2VyKTsKICNlbmRpZgorCiAgICAgICAgIC8vIE51bGwgb3V0IHJlZ2lzdHJhYmxl
IGRvbWFpbiBzaW5jZSB0aGlzIHByb2Nlc3MgaGFzIG5vdyBiZWVuIHVzZWQgZm9yIHNldmVyYWwg
ZG9tYWlucy4KICAgICAgICAgbV9yZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHsgfTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTg2Niw2MCArMTg2OCw4NSBAQCB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQoY29uc3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZSYgcwogewogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xP
RyhMb2FkaW5nLCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQ6IFN0YXJ0ZWQiKTsKICAg
ICBtYXJrUHJvY2Vzc0FzUmVjZW50bHlVc2VkKCk7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bvb2woKS5kZWZhdWx0UGFnZUdyb3VwKCkucGFn
ZUdyb3VwSUQoKSwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnNlcnZpY2VXb3JrZXJQYWdl
UHJveHlJRCwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnNlcnZpY2VXb3JrZXJQYWdlSUQs
IHN0b3JlLCByZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBt
X3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+aW5pdGlhbGl6YXRpb25EYXRhIH0sIFt0aGlzLCB3
ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIHNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6RXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVsdFBhZ2VHcm91cCgpLnBh
Z2VHcm91cElEKCksIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT53b3JrZXJQYWdlUHJveHlJ
RCwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPndvcmtlclBhZ2VJRCwgc3RvcmUsIHJlZ2lz
dHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIG1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uLT5pbml0aWFsaXphdGlvbkRhdGEgfSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vh
a1B0ciB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICh3ZWFrVGhpcykKICAgICAgICAgICAgIFdF
QlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZXN0YWJsaXNoU2VydmljZVdvcmtl
ckNvbnRleHQ6IEZpbmlzaGVkIik7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAg
fSwgMCk7CiB9CisjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldFNlcnZpY2VXb3Jr
ZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCit2b2lkIFdlYlByb2Nlc3NQcm94
eTo6c2V0V29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQogewotICAgIEFT
U0VSVChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbik7Ci0gICAgc2VuZChNZXNzYWdlczo6V2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlNldFVzZXJBZ2VudCB7IHVzZXJBZ2VudCB9LCAw
KTsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYgKG1fc2VydmljZVdvcmtlcklu
Zm9ybWF0aW9uKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6U2V0VXNlckFnZW50IHsgdXNlckFnZW50IH0sIDApOworI2VuZGlmCisgICAgaWYg
KG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24pCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U2V0VXNlckFnZW50IHsgdXNlckFn
ZW50IH0sIDApOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlU2VydmljZVdvcmtl
clByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCit2b2lk
IFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKIHsKLSAgICBBU1NFUlQobV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb24pOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpVcGRhdGVQcmVmZXJlbmNlc1N0b3JlIHsgc3RvcmUgfSwgMCk7CisjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQorICAgIGlmIChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKKyAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZVBy
ZWZlcmVuY2VzU3RvcmUgeyBzdG9yZSB9LCAwKTsKKyNlbmRpZgorICAgIGlmIChtX3NoYXJlZFdv
cmtlckluZm9ybWF0aW9uKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZVByZWZlcmVuY2VzU3RvcmUgeyBzdG9yZSB9
LCAwKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9j
ZXNzQXNzZXJ0aW9uKCkKKy8vIEZJWE1FOiBDbGllbnRzIGRvIG5vdCBwcm9wZXJseSBnZXQgcG9w
dWxhdGVkIGluIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24uCit2b2lkIFdlYlByb2Nlc3NQcm94
eTo6dXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlIHdvcmtlclR5cGUpCiB7
Ci0gICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBk
YXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb246Iik7Ci0gICAgQVNTRVJUKG1fc2Vydmlj
ZVdvcmtlckluZm9ybWF0aW9uKTsKLSAgICBpZiAoIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9u
KQorICAgIGF1dG8mIHdvcmtlckluZm9ybWF0aW9uID0gd29ya2VyVHlwZSA9PSBXb3JrZXJUeXBl
OjpTaGFyZWRXb3JrZXIgPyBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIDogbV9zZXJ2aWNlV29y
a2VySW5mb3JtYXRpb247CisgICAgQVNTRVJUKHdvcmtlckluZm9ybWF0aW9uKTsKKyAgICBpZiAo
IXdvcmtlckluZm9ybWF0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIHNob3VsZFRh
a2VGb3JlZ3JvdW5kQWN0aXZpdHkgPSBXVEY6OmFueU9mKG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uLT5jbGllbnRQcm9jZXNzZXMsIFsmXShhdXRvJiBwcm9jZXNzKSB7CisgICAgV0VCUFJPQ0VT
U1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlV29ya2VyUHJvY2Vz
c0Fzc2VydGlvbjogd29ya2VyVHlwZT0le3B1YmxpY31zIiwgd29ya2VyVHlwZSA9PSBXb3JrZXJU
eXBlOjpTaGFyZWRXb3JrZXIgPyAic2hhcmVkIiA6ICJzZXJ2aWNlIik7CisKKyAgICBib29sIHNo
b3VsZFRha2VGb3JlZ3JvdW5kQWN0aXZpdHkgPSBXVEY6OmFueU9mKHdvcmtlckluZm9ybWF0aW9u
LT5jbGllbnRQcm9jZXNzZXMsIFsmXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiAm
cHJvY2VzcyAhPSB0aGlzICYmICEhcHJvY2Vzcy5tX2ZvcmVncm91bmRUb2tlbjsKICAgICB9KTsK
ICAgICBpZiAoc2hvdWxkVGFrZUZvcmVncm91bmRBY3Rpdml0eSkgewotICAgICAgICBpZiAoIVBy
b2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRGb3JlZ3JvdW5kQWN0aXZpdHkobV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKLSAgICAgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9y
bWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmZvcmVncm91bmRBY3Rpdml0eSgiU2Vydmlj
ZSBXb3JrZXIgZm9yIGZvcmVncm91bmQgdmlldyhzKSJfcyk7CisgICAgICAgIGlmICghUHJvY2Vz
c1Rocm90dGxlcjo6aXNWYWxpZEZvcmVncm91bmRBY3Rpdml0eSh3b3JrZXJJbmZvcm1hdGlvbi0+
YWN0aXZpdHkpKQorICAgICAgICAgICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90
aHJvdHRsZXIuZm9yZWdyb3VuZEFjdGl2aXR5KCJXb3JrZXIgZm9yIGZvcmVncm91bmQgdmlldyhz
KSJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBib29sIHNob3VsZFRha2VCYWNr
Z3JvdW5kQWN0aXZpdHkgPSBXVEY6OmFueU9mKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5j
bGllbnRQcm9jZXNzZXMsIFsmXShhdXRvJiBwcm9jZXNzKSB7CisgICAgYm9vbCBzaG91bGRUYWtl
QmFja2dyb3VuZEFjdGl2aXR5ID0gV1RGOjphbnlPZih3b3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50
UHJvY2Vzc2VzLCBbJl0oYXV0byYgcHJvY2VzcykgewogICAgICAgICByZXR1cm4gJnByb2Nlc3Mg
IT0gdGhpcyAmJiAhIXByb2Nlc3MubV9iYWNrZ3JvdW5kVG9rZW47CiAgICAgfSk7CiAgICAgaWYg
KHNob3VsZFRha2VCYWNrZ3JvdW5kQWN0aXZpdHkpIHsKLSAgICAgICAgaWYgKCFQcm9jZXNzVGhy
b3R0bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5KG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uLT5hY3Rpdml0eSkpCi0gICAgICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+
YWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2Vy
IGZvciBiYWNrZ3JvdW5kIHZpZXcocykiX3MpOworICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRs
ZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkod29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5
KSkKKyAgICAgICAgICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVy
LmJhY2tncm91bmRBY3Rpdml0eSgiV29ya2VyIGZvciBiYWNrZ3JvdW5kIHZpZXcocykiX3MpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1faGFzU2VydmljZVdvcmtlckJhY2tn
cm91bmRQcm9jZXNzaW5nKSB7CisgICAgaWYgKHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2Vy
dmljZVdvcmtlciAmJiBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZykgewog
ICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJT
ZXJ2aWNlIFdvcmtlciBmb3IgYmFja2dyb3VuZCBwcm9jZXNzaW5nIik7Ci0gICAgICAgIGlmICgh
UHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEJhY2tncm91bmRBY3Rpdml0eShtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQotICAgICAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5KCJTZXJ2
aWNlIFdvcmtlciBmb3IgYmFja2dyb3VuZCBwcm9jZXNzaW5nIl9zKTsKKyAgICAgICAgaWYgKCFQ
cm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0
aW9uLT5hY3Rpdml0eSkpCisgICAgICAgICAgICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkg
PSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2VyIGZvciBiYWNr
Z3JvdW5kIHByb2Nlc3NpbmciX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbnVsbHB0cjsKKyAgICB3b3JrZXJJ
bmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBudWxscHRyOwogfQogCit2b2lkIFdlYlByb2Nlc3NQcm94
eTo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3Jl
JiBzdG9yZSwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgV0VCUFJP
Q0VTU1BST1hZX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtl
ckNvbnRleHQ6IFN0YXJ0ZWQiKTsKKyAgICBtYXJrUHJvY2Vzc0FzUmVjZW50bHlVc2VkKCk7Cisg
ICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hTaGFy
ZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgp
LmRlZmF1bHRQYWdlR3JvdXAoKS5wYWdlR3JvdXBJRCgpLCBtX3NoYXJlZFdvcmtlckluZm9ybWF0
aW9uLT53b3JrZXJQYWdlUHJveHlJRCwgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbi0+d29ya2Vy
UGFnZUlELCBzdG9yZSwgcmVnaXN0cmFibGVEb21haW4sIG1fc2hhcmVkV29ya2VySW5mb3JtYXRp
b24tPmluaXRpYWxpemF0aW9uRGF0YSB9LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRo
aXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgV0VCUFJPQ0VTU1BS
T1hZX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRl
eHQ6IEZpbmlzaGVkIik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSwgMCk7
Cit9CisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJv
eHkpCiB7CiAgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKQEAgLTE5MjcsNyAr
MTk1NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCiAKICAgICBXRUJQUk9DRVNTUFJPWFlf
UkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgInJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFBy
b2Nlc3M6IGNsaWVudFByb2Nlc3M9JXAsIGNsaWVudFBJRD0lZCIsICZwcm94eSwgcHJveHkucHJv
Y2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNsaWVu
dFByb2Nlc3Nlcy5hZGQocHJveHkpOwotICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNz
ZXJ0aW9uKCk7CisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlOjpT
ZXJ2aWNlV29ya2VyKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVucmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb3h5KQpAQCAtMTkzNyw3
ICsxOTY0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
Q2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb3gKIAogICAgIFdFQlBST0NFU1NQUk9Y
WV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAidW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnRQcm9jZXNzOiBjbGllbnRQcm9jZXNzPSVwLCBjbGllbnRQSUQ9JWQiLCAmcHJveHksIHByb3h5
LnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5j
bGllbnRQcm9jZXNzZXMucmVtb3ZlKHByb3h5KTsKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJv
Y2Vzc0Fzc2VydGlvbigpOworICAgIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2Vy
VHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpoYXNTZXJ2
aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0CkBAIC0xOTU3LDcg
KzE5ODQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c3RhcnRTZXJ2aWNlV29ya2VyQmFja2dy
b3VuZFByb2Nlc3NpbmcoKQogCiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nl
c3NTdXNwZW5zaW9uLCAic3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmciKTsK
ICAgICBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyA9IHRydWU7Ci0gICAg
dXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKKyAgICB1cGRhdGVXb3JrZXJQ
cm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogfQogCiB2b2lkIFdl
YlByb2Nlc3NQcm94eTo6ZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKCkKQEAg
LTE5NjcsMjMgKzE5OTQsMzkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3Jr
ZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZygpCiAKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9M
T0coUHJvY2Vzc1N1c3BlbnNpb24sICJlbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3Np
bmciKTsKICAgICBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyA9IGZhbHNl
OwotICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBkYXRl
V29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KICNl
bmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpk
aXNhYmxlU2VydmljZVdvcmtlcnMoKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpc2FibGVXb3Jr
ZXJzKE9wdGlvblNldDxXb3JrZXJUeXBlPiB3b3JrZXJUeXBlKQogewotICAgIGlmICghbV9zZXJ2
aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAgQVNTRVJUKCF3b3JrZXJUeXBlLmlzRW1wdHkoKSk7
CisKKyAgICBib29sIGRpZENoYW5nZSA9IGZhbHNlOworICAgIGlmICh3b3JrZXJUeXBlLmNvbnRh
aW5zKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpICYmIG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uKSB7CisgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uID0geyB9OworICAgICAg
ICBkaWRDaGFuZ2UgPSB0cnVlOworICAgIH0KKyAgICBpZiAod29ya2VyVHlwZS5jb250YWlucyhX
b3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpICYmIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24pIHsK
KyAgICAgICAgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA9IHsgfTsKKyAgICAgICAgZGlkQ2hh
bmdlID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKCFkaWRDaGFuZ2UpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiZGlzYWJs
ZVNlcnZpY2VXb3JrZXJzOiIpOwotICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uID0geyB9
OworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzLCAiZGlzYWJsZVdvcmtl
cnM6IERpc2FibGluZyB3b3JrZXJzIChTaGFyZWRXb3JrZXJzPSVkLCBTZXJ2aWNlV29ya2Vycz0l
ZCkiLCB3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciksIHdvcmtl
clR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikpOworCiAgICAgdXBkYXRl
QmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKIAorICAgIGlmICghaXNSdW5uaW5nV29y
a2VycygpKQorICAgICAgICBwcm9jZXNzUG9vbCgpLnJlbW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMo
KnRoaXMpOworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHByb2Nlc3NQb29sKCku
cmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKnRoaXMpOwotICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9zZSB7IH0sIDApOworICAgIGlm
ICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpKQorICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q2xvc2UgeyB9
LCAwKTsKICNlbmRpZgorICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNo
YXJlZFdvcmtlcikpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q2xvc2UgeyB9LCAwKTsKIAogICAgIG1heWJlU2h1dERvd24o
KTsKIH0KQEAgLTIwMDQsMTEgKzIwNDcsMTMgQEAgc3RhdGljIFZlY3RvcjxzdGQ6OnBhaXI8V2Vi
Q29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLCBVUkw+PiBjb250ZW50UnVsZUxpc3RzRnIKIH0K
ICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlU2VydmljZVdvcmtlcnMoY29u
c3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYgdXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllcikKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVXb3JrZXJzKFdvcmtlclR5
cGUgd29ya2VyVHlwZSwgY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYgdXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKIHsKLSAgICBBU1NFUlQoIW1fc2VydmljZVdv
cmtlckluZm9ybWF0aW9uKTsKLSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2Vydmlj
ZVdvcmtlciwgImVuYWJsZVNlcnZpY2VXb3JrZXJzOiIpOwotICAgIG1fc2VydmljZVdvcmtlcklu
Zm9ybWF0aW9uID0gU2VydmljZVdvcmtlckluZm9ybWF0aW9uIHsKKyAgICBXRUJQUk9DRVNTUFJP
WFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgImVuYWJsZVdvcmtlcnM6IHdvcmtlclR5cGU9
JXUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4od29ya2VyVHlwZSkpOworICAgIGF1dG8mIHdvcmtl
ckluZm9ybWF0aW9uID0gd29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyBt
X3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIDogbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247Cisg
ICAgQVNTRVJUKCF3b3JrZXJJbmZvcm1hdGlvbik7CisKKyAgICB3b3JrZXJJbmZvcm1hdGlvbiA9
IFdvcmtlckluZm9ybWF0aW9uIHsKICAgICAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKSwKICAgICAgICAgUGFnZUlkZW50aWZpZXI6OmdlbmVyYXRlKCksCiAgICAgICAgIFNl
cnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgewpAQCAtMjAyMSw5ICsyMDY2LDggQEAgdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVNlcnZpY2VXb3JrZXJzKGNvbnN0IFVzZXJDb250ZW50
Q29udHJvbGxlcklkZW50aWZpZXIKICAgICAgICAgeyB9CiAgICAgfTsKICAgICB1cGRhdGVCYWNr
Z3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
LSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOwotI2VuZGlmCisKKyAg
ICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKHdvcmtlclR5cGUpOwogfQogCiB2b2lkIFdl
YlByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlU2xlZXBEaXNhYmxlcihTbGVlcERpc2FibGVySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgYm9vbCBkaXNwbGF5KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCBmNTE0Yjk5MTZhZDQu
LjE5MmQ1ZDJiNmY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmgKQEAgLTEzNiw5ICsxMzYsMTMgQEAgcHVibGljOgogCiAgICAgZW51bSBjbGFzcyBTaG91bGRM
YXVuY2hQcm9jZXNzIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBlbnVtIGNsYXNzIENhcHRpdmVQ
b3J0YWxNb2RlIDogYm9vbCB7IERpc2FibGVkLCBFbmFibGVkIH07CisgICAgZW51bSBjbGFzcyBX
b3JrZXJUeXBlIDogdWludDMyX3QgeworICAgICAgICBTZXJ2aWNlV29ya2VyID0gMSA8PCAwLAor
ICAgICAgICBTaGFyZWRXb3JrZXIgPSAxIDw8IDEKKyAgICB9OwogCiAgICAgc3RhdGljIFJlZjxX
ZWJQcm9jZXNzUHJveHk+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRhU3RvcmUq
LCBDYXB0aXZlUG9ydGFsTW9kZSwgSXNQcmV3YXJtZWQsIFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9k
ZSA9IFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZTo6U2hhcmVkLCBTaG91bGRMYXVuY2hQcm9jZXNz
ID0gU2hvdWxkTGF1bmNoUHJvY2Vzczo6WWVzKTsKLSAgICBzdGF0aWMgUmVmPFdlYlByb2Nlc3NQ
cm94eT4gY3JlYXRlRm9yU2VydmljZVdvcmtlcnMoV2ViUHJvY2Vzc1Bvb2wmLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYmLCBXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgc3RhdGljIFJlZjxX
ZWJQcm9jZXNzUHJveHk+IGNyZWF0ZUZvcldvcmtlcnMoV29ya2VyVHlwZSwgV2ViUHJvY2Vzc1Bv
b2wmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBXZWJzaXRlRGF0YVN0b3JlJik7CiAK
ICAgICB+V2ViUHJvY2Vzc1Byb3h5KCk7CiAKQEAgLTE2MSw4ICsxNjUsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRJc0luUHJvY2Vzc0NhY2hlKGJvb2wsIFdpbGxTaHV0RG93biA9IFdpbGxTaHV0
RG93bjo6Tm8pOwogICAgIGJvb2wgaXNJblByb2Nlc3NDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNJblByb2Nlc3NDYWNoZTsgfQogCi0gICAgdm9pZCBlbmFibGVTZXJ2aWNlV29ya2Vycyhjb25z
dCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJik7Ci0gICAgdm9pZCBkaXNhYmxlU2Vy
dmljZVdvcmtlcnMoKTsKKyAgICB2b2lkIGVuYWJsZVdvcmtlcnMoV29ya2VyVHlwZSwgY29uc3Qg
VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYpOworICAgIHZvaWQgZGlzYWJsZVdvcmtl
cnMoT3B0aW9uU2V0PFdvcmtlclR5cGU+KTsKIAogICAgIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNp
dGVEYXRhU3RvcmUoKSBjb25zdCB7IEFTU0VSVChtX3dlYnNpdGVEYXRhU3RvcmUpOyByZXR1cm4g
Km1fd2Vic2l0ZURhdGFTdG9yZTsgfQogICAgIHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9yZShXZWJz
aXRlRGF0YVN0b3JlJik7CkBAIC0xOTQsNiArMTk4LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBp
c1J1bm5pbmdTZXJ2aWNlV29ya2VycygpIGNvbnN0IHsgcmV0dXJuICEhbV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb247IH0KICAgICBib29sIGlzU3RhbmRhbG9uZVNlcnZpY2VXb3JrZXJQcm9jZXNz
KCkgY29uc3QgeyByZXR1cm4gaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSAmJiAhcGFnZUNvdW50
KCk7IH0KKyAgICBib29sIGlzUnVubmluZ1NoYXJlZFdvcmtlcnMoKSBjb25zdCB7IHJldHVybiAh
IW1fc2hhcmVkV29ya2VySW5mb3JtYXRpb247IH0KKyAgICBib29sIGlzU3RhbmRhbG9uZVNoYXJl
ZFdvcmtlclByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBpc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkg
JiYgIXBhZ2VDb3VudCgpOyB9CisgICAgYm9vbCBpc1J1bm5pbmdXb3JrZXJzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiB8fCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1h
dGlvbjsgfQogCiAgICAgYm9vbCBpc0R1bW15UHJvY2Vzc1Byb3h5KCkgY29uc3Q7CiAKQEAgLTM1
OSwxMiArMzY2LDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlQXVkaWJsZU1lZGlhQXNz
ZXJ0aW9ucygpOwogCisgICAgdm9pZCBzZXRXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7
CisgICAgdm9pZCB1cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVu
Y2VzU3RvcmUmKTsKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHQoY29uc3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZVdvcmtlclByb2Nl
c3NBc3NlcnRpb24oV29ya2VyVHlwZSk7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IHZvaWQgZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNT
dG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBh
Z2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0
U2VydmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHVwZGF0ZVNl
cnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsK
LSAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJQYWdlUHJveHkoV2ViUGFnZVByb3h5SWRlbnRpZmll
ciBwYWdlUHJveHlJRCkgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gJiYgbV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnNlcnZpY2VXb3JrZXJQYWdlUHJveHlJRCA9PSBwYWdl
UHJveHlJRDsgfQotICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24o
KTsKKyAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJQYWdlUHJveHkoV2ViUGFnZVByb3h5SWRlbnRp
ZmllciBwYWdlUHJveHlJRCkgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gJiYg
bV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPndvcmtlclBhZ2VQcm94eUlEID09IHBhZ2VQcm94
eUlEOyB9CiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlBy
b2Nlc3NQcm94eSYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9j
ZXNzKFdlYlByb2Nlc3NQcm94eSYpOwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlckZvcmVncm91
bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdDsKQEAgLTY0OCwxNCArNjU2LDE1IEBAIHByaXZh
dGU6CiAjZW5kaWYKICAgICBSZWZQdHI8TG9nZ2VyPiBtX2xvZ2dlcjsKIAotICAgIHN0cnVjdCBT
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gewotICAgICAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJQYWdlUHJveHlJRDsKLSAgICAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgc2VydmljZVdvcmtlclBhZ2VJRDsKKyAgICBzdHJ1Y3QgV29ya2VySW5mb3JtYXRpb24gewor
ICAgICAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdvcmtlclBhZ2VQcm94eUlEOworICAgICAg
ICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3b3JrZXJQYWdlSUQ7CiAgICAgICAgIFNlcnZpY2VX
b3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRhOwogICAgICAgICBQcm9j
ZXNzVGhyb3R0bGVyOjpBY3Rpdml0eVZhcmlhbnQgYWN0aXZpdHk7CiAgICAgICAgIFdlYWtIYXNo
U2V0PFdlYlByb2Nlc3NQcm94eT4gY2xpZW50UHJvY2Vzc2VzOwogICAgIH07Ci0gICAgc3RkOjpv
cHRpb25hbDxTZXJ2aWNlV29ya2VySW5mb3JtYXRpb24+IG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8V29ya2VySW5mb3JtYXRpb24+IG1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8V29ya2VySW5mb3JtYXRpb24+IG1fc2hh
cmVkV29ya2VySW5mb3JtYXRpb247CiAgICAgYm9vbCBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3Jv
dW5kUHJvY2Vzc2luZyB7IGZhbHNlIH07CiAKICAgICBIYXNoTWFwPFdlYkNvcmU6OlNsZWVwRGlz
YWJsZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U2xlZXBEaXNhYmxlcj4+
IG1fc2xlZXBEaXNhYmxlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBhMWFkMDIwN2IzMDEuLjRlNWU4ZDYyYzQ5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04ODEsNiAr
ODgxLDcgQEAKIAkJNDYxNEYxMzIyNURFRDg3NTAwNzAwNkU3IC8qIEdQVVByb2Nlc3NDb25uZWN0
aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZBQzUzMjQyNURFRDgxRTAwM0I1N0VDIC8qIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFy
YW1ldGVycy5oICovOyB9OwogCQk0NjFDQ0NBNTIzMTQ4NUE3MDBCNjU5QjkgLyogVUlSZW1vdGVP
YmplY3RSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDYzMjM2ODUyMzE0ODMzRjAwQTQ4RkE3IC8qIFVJUmVtb3RlT2JqZWN0UmVnaXN0cnku
aCAqLzsgfTsKIAkJNDYxQ0NDQTYyMzE0ODVBQTAwQjY1OUI5IC8qIFdlYlJlbW90ZU9iamVjdFJl
Z2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjMyMzY4MzIzMTQ4MUVGMDBBNDhGQTcgLyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAqLzsg
fTsKKwkJNDYxRTFCRjIyNzlBMDExNjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDYxRTFCRUYyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5oICovOyB9OwogCQk0NjNGRDQ4MDFFQjk0NTk2MDBBMjk4MkMg
LyogV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0ZENDdGMUVCOTQ1ODQwMEEyOTgyQyAvKiBXS1Byb2Nl
c3NUZXJtaW5hdGlvblJlYXNvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ2M0ZENDgyMUVCOTRFQzAwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWlu
YXRpb25SZWFzb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2M0ZENDgxMUVCOTRFQUQwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24u
aCAqLzsgfTsKIAkJNDY1OUYyNUYyNzVGRjZCMjAwQkJCMzY5IC8qIENhcHRpdmVQb3J0YWxNb2Rl
T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2NTlGMjVFMjc1RkY2QjIwMEJCQjM2OSAvKiBDYXB0aXZlUG9ydGFsTW9kZU9ic2VydmVyLmgg
Ki87IH07CkBAIC04OTAsNiArODkxLDggQEAKIAkJNDY3MUZGMUYyMzIxN0VGRjAwMUI2NEM3IC8q
IFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NjcxRkYxRDIzMjE3RUZGMDAxQjY0QzcgLyogV2ViUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuaCAqLzsgfTsKIAkJNDY3RTQzRTgyMjQzRkY3RDAwQjEzOTI0IC8qIFdlYlBy
b2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NjdFNDNFNzIyNDNGRjZEMDBCMTM5MjQgLyogV2ViUHJvY2Vzc0Rh
dGFTdG9yZVBhcmFtZXRlcnMuaCAqLzsgfTsKIAkJNDY4MDlBN0MyM0Q5MjI1RTAwQzI5N0QwIC8q
IFdlYkNvb2tpZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjgwOUE3QTIzRDkyMjUzMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuaCAqLzsg
fTsKKwkJNDY5NDNERDAyNzYzRjgzQTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0M0RD
RjI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaCAqLzsgfTsKKwkJ
NDY5NDNERDEyNzYzRjgzRjAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTQz
RENEMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgg
Ki87IH07CiAJCTQ2QTJCNjA5MUU1Njc2QTYwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jl
c3BvbnNpdmVuZXNzVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2QTJCNjA3MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jl
c3BvbnNpdmVuZXNzVGltZXIuaCAqLzsgfTsKIAkJNDZCMDUyNDcyMjY2OEQ4NTAwMjY1Qjk3IC8q
IFdlYkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCMDUyNDQyMjY2OEQyMzAw
MjY1Qjk3IC8qIFdlYkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlci5o
ICovOyB9OwogCQk0NkJFQjZENzIyRkI5QkQ3MDAyNjk4NjcgLyogU3RvcmFnZUFyZWEuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkVCNkQ1MjJGQjlC
RDYwMDI2OTg2NyAvKiBTdG9yYWdlQXJlYS5oICovOyB9OwpAQCAtODk5LDEwICs5MDIsMTMgQEAK
IAkJNDZDMzkyMjkyMzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzM5MjI4MjMx
NkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmggKi87IH07CiAJCTQ2QzVC
N0NFMjdBQURERDMwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJGcmFtZUxvYWRlckNsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNUI3Q0QyN0FB
RERCRTAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50LmggKi87IH07CiAJ
CTQ2QzVCN0NGMjdBQURERDYwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92aWRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNUI3
Q0IyN0FBRERCRTAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckxpYldlYlJUQ1Byb3ZpZGVyLmggKi87
IH07CisJCTQ2QzkxNkFBMjc5OUQwQTIwMDFBNEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzkxNkE5
Mjc5OUQwOUQwMDFBNEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCAqLzsgfTsKIAkJNDZD
RTNCMTEyM0Q4Qzg0OTAwMTZBOTZBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDRTNCMTAyM0Q4Qzgz
RDAwMTZBOTZBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oICovOyB9OworCQk0NkQ0OEZD
RTI3OTlEN0UxMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZE
NDhGQ0QyNzk5RDdERTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uaCAqLzsgfTsKIAkJNDZERjA2M0MxRjM5MDVGODAwMTk4MEJCIC8qIE5ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5oICovOyB9OwogCQk0NkVFMjg0OTI2OUUwNEFDMDBERDQ4QUIgLyogV2ViQnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NkVFMjg0ODI2OUUwNDlCMDBERDQ4QUIgLyogV2ViQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5LmggKi87IH07CiAJCTQ2RUUyODREMjY5RTA1MjUwMERENDhBQiAvKiBOZXR3
b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NkVFMjg0QzI2OUUwNTE3MDBERDQ4QUIgLyogTmV0d29ya0Jy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oICovOyB9OworCQk0NkVFM0U4QjI3NjNGRDJGMDA2MEM3
MEYgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4Mzg2NjcyNzYzRkFCMTAwQ0Y5MTgyIC8q
IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCAqLzsgfTsKIAkJNDZGMzhFOEMyNDE2
RTY3MzAwNTkzNzVBIC8qIFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkYzOEU4QjI0MTZFNjZEMDA1OTM3NUEg
LyogUnVubmluZ0JvYXJkU2VydmljZXNTUEkuaCAqLzsgfTsKIAkJNDZGOUIyNjMyMzUyNkVGMzAw
NkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZGOUIyNjIyMzUyNkVEMDAwNkZFNUZBIC8qIFdl
YkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oICovOyB9OwogCQk0OTMxMDJCRDI2ODNGM0QwMDAyQkI4
ODUgLyogQXBwUHJpdmFjeVJlcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDkzMTAyQkMyNjgzRjNBNTAwMkJCODg1IC8qIEFwcFByaXZhY3lSZXBv
cnQuaCAqLzsgfTsKQEAgLTEyNzYsNiArMTI4Miw3IEBACiAJCTZCRTk2OUMxMUU1NEQ0NTIwMDhC
NzQ4MyAvKiBjb3JlUHJlZGljdGlvbl9tb2RlbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNkJFOTY5QzAxRTU0RDQ1MjAwOEI3NDgzIC8qIGNvcmVQcmVk
aWN0aW9uX21vZGVsICovOyB9OwogCQk2QkU5NjlDQjFFNTRENENGMDA4Qjc0ODMgLyogUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkJFOTY5QzkxRTU0RDRDRjAwOEI3NDgzIC8qIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuaCAqLzsgfTsKIAkJNkJFOTY5Q0QxRTU0
RTA1NDAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkU5NjlDQzFFNTRFMDU0
MDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuaCAqLzsgfTsKKwkJ
NkNBRUNCNjYyNzQ2NUFFNDAwQUI3OEQwIC8qIFVuaWZpZWRTb3VyY2UxMTYuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkNBRUNCNUUyNzQ2NUFFMzAw
QUI3OEQwIC8qIFVuaWZpZWRTb3VyY2UxMTYuY3BwICovOyB9OwogCQk2RUU4NDlDODEzNjhEOTM5
MDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2YXRlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUU4NDlDNjEzNjhEOTJEMDAzOEQ0ODEgLyogV0tJ
bnNwZWN0b3JQcml2YXRlTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNzExNzI1QTkyMjhENTY0MzAwMDE4NTE0IC8qIFdlYnNpdGVMZWdhY3lP
dmVyZmxvd1Njcm9sbGluZ1RvdWNoUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MTE3MjVBODIyOEQ1NjNBMDAwMTg1MTQgLyogV2Vic2l0ZUxl
Z2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3kuaCAqLzsgfTsKIAkJNzEzNEEzREEyNjAz
QjkyNTAwNjI0QkQzIC8qIFdLTW9kZWxJbnRlcmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTM0QTNEOTI2MDNC
ODBFMDA2MjRCRDMgLyogV0tNb2RlbEludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaCAqLzsg
fTsKQEAgLTEzNTMsNiArMTM2MCw3IEBACiAJCTdDOUQxNTM3MTg0NTg0REEwMDlEMzkxOCAvKiBX
S0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOUQxNTM2MTg0NTg0REEwMDlEMzkxOCAvKiBXS0Jyb3dz
aW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaCAqLzsgfTsKIAkJN0NBMjU0RUIxODI5OTNDRTAwRkM4
QTQxIC8qIFdLQnJvd3NpbmdDb250ZXh0UG9saWN5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQTI1NEVBMTgyOTkzQ0UwMEZDOEE0MSAv
KiBXS0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0NBMzc5M0UxQUMzNzhCMzAwNzlEQzM3IC8q
IF9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0EzNzkzRDFBQzM3OEIzMDA3OURDMzcgLyog
X1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3Q0FFQ0I2NjI3NDY1QUU0MDBBQjc4RDAg
LyogVW5pZmllZFNvdXJjZTExNy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3Q0FFQ0I1RTI3NDY1QUUzMDBBQjc4RDAgLyogVW5pZmllZFNvdXJjZTEx
Ny5jcHAgKi87IH07CiAJCTdDQjEwMEYxMUZBMzg1OEEwMDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNl
c0tleXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0NCMTAwRUUxRkEyRDc0QTAwMTcyOUVFIC8qIFdlYlByZWZlcmVuY2VzS2V5cy5jcHAgKi87IH07
CiAJCTdDQjEwMEYyMUZBMzg1OEUwMDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNlc0RlZmluaXRpb25z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0RFNzNB
MzFGOURBQjY1MDAzOTAzMTIgLyogV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oICovOyB9Owog
CQk3Q0IxMDBGMzFGQTM4NThFMDAxNzI5RUUgLyogV2ViUHJlZmVyZW5jZXNLZXlzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0IxMDBFRjFGQTJENzRC
MDAxNzI5RUUgLyogV2ViUHJlZmVyZW5jZXNLZXlzLmggKi87IH07CkBAIC00MjIyLDYgKzQyMzAs
OSBAQAogCQk0NjA4ODlGRjI2MUZBOEE5MDBFMjUwMEQgLyogUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZENyZWF0aW9uUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
MEY0ODhEMUY5OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1l
c3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBE
ZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdl
UmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk0NjBG
NDg4RTFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNz
YWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OworCQk0NjFFMUJFQzI3OUEwMTBFMDA2QUY1M0IgLyogV2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MUUxQkVGMjc5QTAxMEYwMDZBRjUz
QiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MUUxQkYwMjc5QTAxMEYw
MDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjIxMDdENzFGMzhEQkQzMDBERDc4MTAgLyogUGluZ0xvYWQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUGluZ0xvYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjMyMzY4MzIzMTQ4MUVGMDBBNDhGQTcgLyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0
cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzMjM2ODQyMzE0ODI1QzAwQTQ4RkE3IC8qIFdlYlJlbW90
ZU9iamVjdFJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlbW90ZU9iamVjdFJl
Z2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyNDksOCArNDI2MCwx
NSBAQAogCQk0NjgwOUE3QjIzRDkyMjUzMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29va2llQ2FjaGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgzNTY5QTIxRTgxQ0M3MDA2RTI3QTMgLyog
UHJvdmlzaW9uYWxQYWdlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UHJvdmlzaW9uYWxQYWdlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4
MzU2OUIyMUU4MUNDNzAwNkUyN0EzIC8qIFByb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4Mzg2NjcyNzYzRkFCMTAwQ0Y5MTgyIC8q
IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0NjgzODY2ODI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OUI5MEYyNzU2RDE0MzAw
MDdDNjUxIC8qIFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVX
ZWJMb2NrUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OUI5MTAy
NzU2RDE0MzAwMDdDNjUxIC8qIFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0Njk0M0RDQjI3NjNGODM0MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RDQzI3
NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0Njk0M0RDRDI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzRENFMjc2M0Y4MzUw
MDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RDRjI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVk
V29ya2VyUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5REU4MDIyNzNFQ0M1RDAwOTMwMjc2
IC8qIFByb2Nlc3NMYXVuY2hlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gUHJvY2Vzc0xhdW5jaGVyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2QTJCNjA2MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jl
c3BvbnNpdmVuZXNzVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDZBMkI2MDcxRTU2NzVBMjAwQzNERURBIC8qIEJhY2tncm91bmRQ
cm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTQyNjksNyArNDI4NywxMSBAQAogCQk0NkM1QjdDQjI3QUFEREJF
MDAwQzVCNDcgLyogUmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDZDNUI3Q0MyN0FBRERCRTAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckZyYW1lTG9h
ZGVyQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVdvcmtlckZyYW1lTG9hZGVy
Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDNUI3Q0QyN0FBRERC
RTAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ2QzkxNkE4Mjc5OUQwOUQwMDFBNEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZDOTE2QTkyNzk5RDA5RDAwMUE0RTdDIC8qIFdl
YlNoYXJlZFdvcmtlclNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDRTNCMTAyM0Q4QzgzRDAwMTZB
OTZBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDZENDhGQ0MyNzk5RDdERDAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ2RDQ4RkNEMjc5OUQ3REUwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDZERjA2MzkxRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRGMDYzQTFG
MzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkU5NzYwQTI3NTdGNkM5MDBBQ0REMzcgLyog
V2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyNzksNiArNDMwMSw3IEBACiAJCTQ2RUUyODRBMjY5RTA1
MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmlu
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnku
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RUUyODRCMjY5RTA1
MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVn
aXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkVFMjg0QzI2OUUwNTE3
MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2RUUzRThBMjc2M0ZEMkEwMDYwQzcwRiAv
KiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2RjM4RThCMjQxNkU2NkQwMDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2
aWNlc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSdW5uaW5nQm9hcmRT
ZXJ2aWNlc1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkY5QjI2MjIzNTI2
RUQwMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0OTMxMDJCQzI2ODNGM0E1MDAyQkI4ODUgLyogQXBwUHJpdmFj
eVJlcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBQcml2YWN5UmVwb3J0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC00OTk4LDYgKzUwMjEsNyBAQAogCQk2QkU5NjlDODFFNTRENENG
MDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Q2xhc3NpZmllckNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkJFOTY5
QzkxRTU0RDRDRjAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29j
b2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0NsYXNzaWZpZXJDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QkU5
NjlDQzFFNTRFMDU0MDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0NsYXNzaWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkNBRUNCNUUyNzQ2
NUFFMzAwQUI3OEQwIC8qIFVuaWZpZWRTb3VyY2UxMTYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
VW5pZmllZFNvdXJjZTExNi5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvV2ViS2l0L3VuaWZp
ZWQtc291cmNlcy9VbmlmaWVkU291cmNlMTE2LmNwcCI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCTZEOEE5MUE1MTFGMEVGRDEwMEREMDFGRSAvKiBjb20uYXBwbGUuV2Vi
UHJvY2Vzcy5zYi5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBjb20uYXBwbGUuV2ViUHJvY2Vz
cy5zYi5pbjsgcGF0aCA9IFdlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW47IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFRTg0OUM2MTM2OEQ5MkQwMDM4RDQ4MSAvKiBX
S0luc3BlY3RvclByaXZhdGVNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
V0tJbnNwZWN0b3JQcml2YXRlTWFjLmg7IHBhdGggPSBtYWMvV0tJbnNwZWN0b3JQcml2YXRlTWFj
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxMTcyNUE4MjI4RDU2M0EwMDAxODUx
NCAvKiBXZWJzaXRlTGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaFBvbGljeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJzaXRlTGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdU
b3VjaFBvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTE2Miw2ICs1MTg2
LDcgQEAKIAkJN0M5RDE1MzYxODQ1ODREQTAwOUQzOTE4IC8qIFdLQnJvd3NpbmdDb250ZXh0R3Jv
dXBJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Jyb3dzaW5n
Q29udGV4dEdyb3VwSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NB
MjU0RUExODI5OTNDRTAwRkM4QTQxIC8qIFdLQnJvd3NpbmdDb250ZXh0UG9saWN5RGVsZWdhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCcm93c2luZ0NvbnRleHRQb2xp
Y3lEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0EzNzkzRDFBQzM3
OEIzMDA3OURDMzcgLyogX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVByaXZhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9y
ZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0NBRUNCNUUyNzQ2NUFF
MzAwQUI3OEQwIC8qIFVuaWZpZWRTb3VyY2UxMTcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVW5p
ZmllZFNvdXJjZTExNy5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvV2ViS2l0L3VuaWZpZWQt
c291cmNlcy9VbmlmaWVkU291cmNlMTE3LmNwcCI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CiAJCTdDQjEwMEVFMUZBMkQ3NEEwMDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNlc0tl
eXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViUHJlZmVyZW5jZXNLZXlzLmNwcDsgcGF0aCA9
IERlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJQcmVmZXJlbmNlc0tleXMuY3BwOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk3Q0IxMDBFRjFGQTJENzRCMDAxNzI5RUUgLyog
V2ViUHJlZmVyZW5jZXNLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlByZWZlcmVuY2VzS2V5cy5o
OyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlByZWZlcmVuY2VzS2V5cy5oOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk3Q0IxMDBGMDFGQTJENzg0MDAxNzI5
RUUgLyogV2ViUHJlZmVyZW5jZXNTdG9yZURlZmF1bHRzTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFdlYlByZWZlcmVuY2VzU3RvcmVEZWZhdWx0c01hcC5jcHA7IHBhdGggPSBEZXJpdmVkU291
cmNlcy9XZWJLaXQvV2ViUHJlZmVyZW5jZXNTdG9yZURlZmF1bHRzTWFwLmNwcDsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTkyODgsNiArOTMxMywyMCBAQAogCQkJcGF0
aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNDY4Mzg2NjUy
NzYzRkExQjAwQ0Y5MTgyIC8qIFNoYXJlZFdvcmtlciAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3Vw
OworCQkJY2hpbGRyZW4gPSAoCisJCQkJNDZENDhGQ0MyNzk5RDdERDAwN0QyMDE0IC8qIFdlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwICovLAorCQkJCTQ2RDQ4RkNE
Mjc5OUQ3REUwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmggKi8sCisJCQkJNDZDOTE2QTgyNzk5RDA5RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtl
clNlcnZlci5jcHAgKi8sCisJCQkJNDZDOTE2QTkyNzk5RDA5RDAwMUE0RTdDIC8qIFdlYlNoYXJl
ZFdvcmtlclNlcnZlci5oICovLAorCQkJCTQ2RUUzRThBMjc2M0ZEMkEwMDYwQzcwRiAvKiBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovLAorCQkJCTQ2ODM4NjY3
Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggKi8s
CisJCQkJNDY4Mzg2NjgyNzYzRkFCMTAwQ0Y5MTgyIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb24uY3BwICovLAorCQkJKTsKKwkJCXBhdGggPSBTaGFyZWRXb3JrZXI7CisJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk0NjlERTgwMTI3M0VDQzVEMDA5MzAyNzYgLyog
Y29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtOTMz
OSw2ICs5Mzc4LDcgQEAKIAkJNTEwQ0M3REExNjEzOEUwMTAwRDAzRUQzIC8qIE5ldHdvcmtQcm9j
ZXNzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0Njgz
ODY2NTI3NjNGQTFCMDBDRjkxODIgLyogU2hhcmVkV29ya2VyICovLAogCQkJCUU0ODlEMjgyMUEw
QTJCRTgwMDc4QzA2QSAvKiBjYWNoZSAqLywKIAkJCQk3QTg0M0ExRDIxRTQxRkQ5MDBERUY2NjMg
LyogQ2xhc3NpZmllciAqLywKIAkJCQk3RUM0RjBGODE4RTRBOTIyMDA4MDU2QUYgLyogY29jb2Eg
Ki8sCkBAIC05NDUwLDYgKzk0OTAsMTQgQEAKIAkJCQk0NkM1QjdDQzI3QUFEREJFMDAwQzVCNDcg
LyogUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuY3BwICovLAogCQkJCTQ2QzVCN0NEMjdB
QUREQkUwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJGcmFtZUxvYWRlckNsaWVudC5oICovLAogCQkJ
CTQ2QzVCN0NCMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92aWRl
ci5oICovLAorCQkJCTQ2MUUxQkVDMjc5QTAxMEUwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwICovLAorCQkJCTQ2MUUxQkVGMjc5QTAxMEYwMDZB
RjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCAqLywKKwkJ
CQk0NjFFMUJGMDI3OUEwMTBGMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovLAorCQkJCTQ2OTQzRENFMjc2M0Y4MzUwMDRCNjEw
RSAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk0Njk0M0RD
RDI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oICov
LAorCQkJCTQ2OTQzRENCMjc2M0Y4MzQwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLm1lc3NhZ2VzLmluICovLAorCQkJCTQ2OTQzRENDMjc2M0Y4MzUwMDRCNjEwRSAv
KiBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAgKi8sCisJCQkJNDY5NDNEQ0YyNzYzRjgzNTAw
NEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmggKi8sCiAJCQkJNDEzMUYzRTAxRjk4
NzEyQzAwNTk5OTVBIC8qIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwICovLAog
CQkJCTQxOUFDRjlCMUY5ODFEMjYwMDlGMUE4MyAvKiBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50LmggKi8sCiAJCQkJNTFCRUI2MjkxRjNBNUFDRDAwNTAyOUI5IC8qIFdlYlNlcnZpY2VX
b3JrZXJQcm92aWRlci5jcHAgKi8sCkBAIC0xMjc3NSw2ICsxMjgyMyw3IEBACiAJCQkJNDlGQkYw
MDAyMzlCMUY3NTAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUZCRjAwOTIzOUYwOEUwMDBCRDAzMkYgLyogX1dLUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHlJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzc2MzExRkQxQTNGQjVGNzAwNUEyRTUxIC8qIF9XS1NhbWVEb2N1bWVudE5hdmlnYXRpb25U
eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjFFMUJGMjI3OUEwMTE2MDA2QUY1M0IgLyogV2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkzNzYzMTFGRTFBM0ZCNjAwMDA1QTJFNTEgLyogX1dLU2FtZURvY3VtZW50TmF2aWdhdGlvblR5
cGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwMDJENDQxOTZCMzM4OTAwQjlBRDQ0
IC8qIF9XS1Nlc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwMDJENDMxOTZCMzM3
MDAwQjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0ZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKQEAg
LTEyOTM5LDYgKzEyOTg4LDcgQEAKIAkJCQlFMTcwODc2QzE2RDZDQTY5MDBGOTkyMjYgLyogQmxv
YlJlZ2lzdHJ5UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTRGNjAxNDMyMTU1QzVBQTIwMDFG
QkRFMCAvKiBCbG9ja2luZ1Jlc3BvbnNlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU3MDUx
MTFCRTQxMEU2MDA4NzRBRjEgLyogQmxvY2tTUEkuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2Qzkx
NkFBMjc5OUQwQTIwMDFBNEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMzA2NUZBMTI1OTM0NEUwMEU3MTI3OCAvKiBDYWNoZU1vZGVsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTg5N0VEODFGNDE1RDhBMDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5n
aW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUZBQkQyQTFGNERFMDAxMDA2QTZDOTcgLyogQ2Fj
aGVTdG9yYWdlRW5naW5lQ2FjaGUuaCBpbiBIZWFkZXJzICovLApAQCAtMTM0MDYsNiArMTM0NTYs
NyBAQAogCQkJCTFBQzEzMzY4MTg1NjVCNTcwMEYzRUMwNSAvKiBVc2VyRGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQ0Q0OTFCMDgxRTcwRDA1RjAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDQ5MUIwRTFFNzMyRTREMDAwMDkwNjYgLyog
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZF
RTNFOEIyNzYzRkQyRjAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCUNENDkxQjEzMUU3MzQ4MjEwMDAwOTA2NiAvKiBVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDQ5MUIxODFFNzM1
MjU1MDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwNzI5N0Y5RjFDMTdCQkVBMDAzRjA3MzUgLyogVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrUHJveHkuaCBpbiBIZWFkZXJzICovLApAQCAtMTM0OTIsNiArMTM1NDMsNyBA
QAogCQkJCTMzMDkzNDRBMTMxNUI5MjIwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHlN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxREQ3QjIxMTREQzM5NjAwNUFEQUYzIC8q
IFdlYkNvcmVBcmd1bWVudENvZGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyRjU4OUIxMkE4
ODM4ODAwNjI5NTMwIC8qIFdlYkNyZWRlbnRpYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2OTQz
REQwMjc2M0Y4M0EwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUFBODNGNkQxQTVCNjNGRjAwMDI2RUM2IC8qIFdlYkRhdGFiYXNlUHJvdmlk
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU1MkNGNTUyMjBBMzVDM0EwMERBREEyNyAvKiBXZWJE
YXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU1NjhCOTFGMjBB
M0FCMkYwMEUzQzg1NiAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24uaCBpbiBIZWFk
ZXJzICovLApAQCAtMTM1MjYsNiArMTM1NzgsNyBAQAogCQkJCUJDMDMyRDdGMTBGNDM3OEQwMDU4
QzE1QSAvKiBXZWJGcmFtZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5MUYy
Q0IxMjFCNjdBRDAwRUJGN0U4IC8qIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDQjlGNkEwMTEyM0E4NEIwMEExMzdFMCAvKiBXZWJGcmFtZVBvbGljeUxp
c3RlbmVyUHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2OTQzREQxMjc2M0Y4M0YwMDRCNjEw
RSAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzlCMzhBMTEwRjUzOEJFMDA0NDNBMTUgLyogV2ViRnJhbWVQcm94eS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTE1QkUxQUIxRDU1NUFBMDAwREQ3QzY4IC8qIFdlYkdhbWVwYWQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxNUJFMTc5MUQ1M0ZFOEYwMEREN0M2OCAvKiBXZWJHYW1lcGFkUHJvdmlk
ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTM2NTIsNiArMTM3MDUsNyBAQAogCQkJCTFBNDgzMkQ3
MUE5Q0RGOTYwMDhCNERGRSAvKiBXZWJzaXRlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0
ODMyRDExQTlCREMyRjAwOEI0REZFIC8qIFdlYnNpdGVEYXRhUmVjb3JkLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQTUzQzJBQTFBMzI1NzMwMDA0RThDNzAgLyogV2Vic2l0ZURhdGFTdG9yZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDZENDhGQ0UyNzk5RDdFMTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMUY3
RDQxMUVCMUJDRjUwMEU0N0I4MyAvKiBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNzExNzI1QTkyMjhENTY0MzAwMDE4NTE0IC8qIFdlYnNpdGVMZWdhY3lP
dmVyZmxvd1Njcm9sbGluZ1RvdWNoUG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNENCMDlF
NTIyNUQ1QTA5MDA4OTE0ODcgLyogV2Vic2l0ZU1lZGlhU291cmNlUG9saWN5LmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDhkM2I1N2JkMThkYy4uYmIzNTQ3
ZjQ2YWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTU3LDYgKzU3LDEwIEBACiAj
aW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU2Vydmlj
ZVdvcmtlclByb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbk1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5oIgogI2luY2x1ZGUgIldlYlNvY2tl
dENoYW5uZWxNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNvY2tldFN0cmVhbS5oIgpAQCAtMTcz
LDYgKzE3NywxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUAogICAgICAgICByZXR1cm47CiAg
ICAgfQogI2VuZGlmCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1l
c3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpIHsKKyAgICAgICAgc2hhcmVkV29ya2VyQ29ubmVjdGlvbigpLmRpZFJlY2VpdmVNZXNz
YWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAg
ICAgICAgQVNTRVJUKFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25u
ZWN0aW9uKCkpOworICAgICAgICBpZiAoYXV0byogY29udGV4dE1hbmFnZXJDb25uZWN0aW9uID0g
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAg
ICAgICAgICAgIHN0YXRpY19jYXN0PFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbiY+KCpjb250ZXh0TWFuYWdlckNvbm5lY3Rpb24pLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAjaWYgRU5BQkxFKEFQ
UExFX1BBWV9SRU1PVEVfVUkpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgp
ID09IE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSkgewpAQCAtMzA3LDYgKzMyMSwxMyBAQCBXZWJTV0NsaWVudENvbm5lY3Rpb24mIE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbjo6c2VydmljZVdvcmtlckNvbm5lY3Rpb24oKQogfQogI2VuZGlmCiAK
K1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24mIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bjo6c2hhcmVkV29ya2VyQ29ubmVjdGlvbigpCit7CisgICAgaWYgKCFtX3NoYXJlZFdvcmtlckNv
bm5lY3Rpb24pCisgICAgICAgIG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbiA9IFdlYlNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb246OmNyZWF0ZSgpOworICAgIHJldHVybiAqbV9zaGFyZWRXb3Jr
ZXJDb25uZWN0aW9uOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6bWVzc2Fn
ZXNBdmFpbGFibGVGb3JQb3J0KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYg
bWVzc2FnZVBvcnRJZGVudGlmaWVyKQogewogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm1l
c3NhZ2VzQXZhaWxhYmxlRm9yUG9ydChtZXNzYWdlUG9ydElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uaAppbmRleCBkNjJkZmU0ZGY1YWEuLjVmMDUwNDA5YWM2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgZW51bSBjbGFzcyBIVFRQQ29va2llQWNjZXB0
UG9saWN5IDogdWludDhfdDsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOwog
Y2xhc3MgV2ViU1dDbGllbnRDb25uZWN0aW9uOwogCiBjbGFzcyBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24+LCBJUEM6
OkNvbm5lY3Rpb246OkNsaWVudCB7CkBAIC03MCw2ICs3MSw3IEBAIHB1YmxpYzoKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiAgICAgV2ViU1dDbGllbnRDb25uZWN0aW9uJiBzZXJ2aWNlV29y
a2VyQ29ubmVjdGlvbigpOwogI2VuZGlmCisgICAgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbiYgc2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOwogCiAjaWYgSEFWRShBVURJVF9UT0tFTikK
ICAgICB2b2lkIHNldE5ldHdvcmtQcm9jZXNzQXVkaXRUb2tlbihzdGQ6Om9wdGlvbmFsPGF1ZGl0
X3Rva2VuX3Q+IGF1ZGl0VG9rZW4pIHsgbV9uZXR3b3JrUHJvY2Vzc0F1ZGl0VG9rZW4gPSBhdWRp
dFRva2VuOyB9CkBAIC0xMjMsNiArMTI1LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAgICAgUmVmUHRyPFdlYlNXQ2xpZW50Q29ubmVjdGlvbj4gbV9zd0Nvbm5lY3Rp
b247CiAjZW5kaWYKKyAgICBSZWZQdHI8V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbj4g
bV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uOwogICAgIFdlYkNvcmU6OkhUVFBDb29raWVBY2NlcHRQ
b2xpY3kgbV9jb29raWVBY2NlcHRQb2xpY3k7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLmM5MDAzNmUwYzU1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5jcHAKQEAgLTAsMCArMSwxMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmgiCisKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiUmVtb3RlV29y
a2VyRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJSZW1vdGVXb3JrZXJMaWJXZWJSVENQ
cm92aWRlci5oIgorI2luY2x1ZGUgIldlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIgorI2lu
Y2x1ZGUgIldlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViQ29tcGlsZWRD
b250ZW50UnVsZUxpc3REYXRhLmgiCisjaW5jbHVkZSAiV2ViRGF0YWJhc2VQcm92aWRlci5oIgor
I2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc0tleXMuaCIKKyNp
bmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0UHJvdmlkZXIu
aCIKKyNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0VtcHR5Q2xpZW50cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUGFnZUNvbmZpZ3VyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJUaHJl
YWRQcm94eS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVXNlckFnZW50Lmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9Xb3JrZXJGZXRjaFJlc3VsdC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcywgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFp
biwgUGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmll
ciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlJiBwcmVmZXJlbmNlc1N0b3JlLCBTZXJ2aWNlV29ya2VySW5pdGlh
bGl6YXRpb25EYXRhJiYgaW5pdGlhbGl6YXRpb25EYXRhKQorICAgIDogbV9jb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhXVEZNb3ZlKGNvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKSkKKyAgICAs
IG1fcmVnaXN0cmFibGVEb21haW4oV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbikpCisgICAgLCBt
X3BhZ2VHcm91cElEKHBhZ2VHcm91cElEKQorICAgICwgbV93ZWJQYWdlUHJveHlJRCh3ZWJQYWdl
UHJveHlJRCkKKyAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICAsIG1fdXNlckFnZW50KFdlYkNvcmU6OnN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9u
TmFtZSh7IH0pKQorI2Vsc2UKKyAgICAsIG1fdXNlckFnZW50KHN0YW5kYXJkVXNlckFnZW50KCkp
CisjZW5kaWYKKyAgICAsIG1fdXNlckNvbnRlbnRDb250cm9sbGVyKFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlcjo6Z2V0T3JDcmVhdGUoaW5pdGlhbGl6YXRpb25EYXRhLnVzZXJDb250ZW50Q29udHJv
bGxlcklkZW50aWZpZXIpKQoreworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAg
bV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZENvbnRlbnRSdWxlTGlzdHMoV1RGTW92ZShpbml0
aWFsaXphdGlvbkRhdGEuY29udGVudFJ1bGVMaXN0cykpOworI2VuZGlmCisKKyAgICB1cGRhdGVQ
cmVmZXJlbmNlc1N0b3JlKHByZWZlcmVuY2VzU3RvcmUpOworICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmRpc2FibGVUZXJtaW5hdGlvbigpOworfQorCitXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246On5XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24oKSA9IGRlZmF1bHQ7CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjplc3RhYmxpc2hDb25uZWN0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiB7IG1fd2ViUGFnZVByb3h5
SUQsIG1fcmVnaXN0cmFibGVEb21haW4gfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIDAp
OworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6cG9z
dEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIg
c2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sK
KyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpQb3N0RXhjZXB0aW9uVG9Xb3JrZXJP
YmplY3QgeyBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgc291cmNlVVJMIH0sIDApOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6dXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKK3sKKyAgICBXZWJQYWdlOjp1cGRhdGVQcmVmZXJl
bmNlc0dlbmVyYXRlZChzdG9yZSk7CisgICAgbV9wcmVmZXJlbmNlc1N0b3JlID0gc3RvcmU7Cit9
CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpsYXVuY2hT
aGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCBXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFVSTCYmIHVybCwgV2Vi
Q29yZTo6V29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMsIFdlYkNvcmU6OldvcmtlckZldGNo
UmVzdWx0JiYgd29ya2VyRmV0Y2hSZXN1bHQpCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29y
a2VyLCAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpsYXVuY2hTaGFy
ZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBXZWJD
b3JlOjpwYWdlQ29uZmlndXJhdGlvbldpdGhFbXB0eUNsaWVudHMoV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuc2Vzc2lvbklEKCkpOworCisgICAgcGFnZUNvbmZpZ3VyYXRpb24uZGF0YWJhc2VQcm92
aWRlciA9IFdlYkRhdGFiYXNlUHJvdmlkZXI6OmdldE9yQ3JlYXRlKG1fcGFnZUdyb3VwSUQpOwor
ICAgIHBhZ2VDb25maWd1cmF0aW9uLnNvY2tldFByb3ZpZGVyID0gV2ViU29ja2V0UHJvdmlkZXI6
OmNyZWF0ZShtX3dlYlBhZ2VQcm94eUlEKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5icm9hZGNh
c3RDaGFubmVsUmVnaXN0cnkgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5icm9hZGNhc3RDaGFu
bmVsUmVnaXN0cnkoKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi53ZWJMb2NrUmVnaXN0cnkgPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJMb2NrUmVnaXN0cnkoKTsKKyAgICBwYWdlQ29uZmln
dXJhdGlvbi51c2VyQ29udGVudFByb3ZpZGVyID0gbV91c2VyQ29udGVudENvbnRyb2xsZXI7Cisj
aWYgRU5BQkxFKFdFQl9SVEMpCisgICAgcGFnZUNvbmZpZ3VyYXRpb24ubGliV2ViUlRDUHJvdmlk
ZXIgPSBtYWtlVW5pcXVlUmVmPFJlbW90ZVdvcmtlckxpYldlYlJUQ1Byb3ZpZGVyPigpOworI2Vu
ZGlmCisKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5sb2FkZXJDbGllbnRGb3JNYWluRnJhbWUgPSBt
YWtlVW5pcXVlUmVmPFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50PihtX3dlYlBhZ2VQcm94
eUlELCBtX3BhZ2VJRCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBtX3Vz
ZXJBZ2VudCk7CisKKyAgICBhdXRvIHBhZ2UgPSBtYWtlVW5pcXVlUmVmPFdlYkNvcmU6OlBhZ2U+
KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKKyAgICBpZiAobV9wcmVmZXJlbmNlc1N0b3Jl
KSB7CisgICAgICAgIFdlYlBhZ2U6OnVwZGF0ZVNldHRpbmdzR2VuZXJhdGVkKCptX3ByZWZlcmVu
Y2VzU3RvcmUsIHBhZ2UtPnNldHRpbmdzKCkpOworICAgICAgICBwYWdlLT5zZXR0aW5ncygpLnNl
dFN0b3JhZ2VCbG9ja2luZ1BvbGljeShzdGF0aWNfY2FzdDxXZWJDb3JlOjpTdG9yYWdlQmxvY2tp
bmdQb2xpY3k+KG1fcHJlZmVyZW5jZXNTdG9yZS0+Z2V0VUludDMyVmFsdWVGb3JLZXkoV2ViUHJl
ZmVyZW5jZXNLZXk6OnN0b3JhZ2VCbG9ja2luZ1BvbGljeUtleSgpKSkpOworICAgIH0KKyAgICBX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6c2V0dXBQYWdlRm9yU2hhcmVkV29ya2Vy
KHBhZ2UuZ2V0KCksIHVybCwgb3JpZ2luLCB3b3JrZXJGZXRjaFJlc3VsdCk7CisgICAgYXV0byBz
aGFyZWRXb3JrZXJUaHJlYWRQcm94eSA9IFdlYkNvcmU6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5
OjpjcmVhdGUoV1RGTW92ZShwYWdlKSwgc2hhcmVkV29ya2VySWRlbnRpZmllciwgb3JpZ2luLCB1
cmwsIFdURk1vdmUod29ya2VyRmV0Y2hSZXN1bHQpLCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMpLCBt
X3VzZXJBZ2VudCwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FjaGVTdG9yYWdlUHJvdmlkZXIo
KSk7CisKKyAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9u
KCkucmVnaXN0ZXJTaGFyZWRXb3JrZXJUaHJlYWQoV1RGTW92ZShzaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eSkpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6Y2xvc2UoKQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Y2xvc2U6IFNoYXJlZCB3b3JrZXIgcHJvY2Vz
cyBpcyByZXF1ZXN0ZWQgdG8gc3RvcCBhbGwgc2hhcmVkIHdvcmtlcnMiKTsKKyAgICBzZXRBc0Ns
b3NlZCgpOworCisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNsb3NlU2hhcmVkV29ya2VyQ29udGV4
dENvbm5lY3Rpb24geyB9LCAwKTsKKyAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlcjo6c2luZ2xldG9uKCkuc3RvcEFsbFNoYXJlZFdvcmtlcnMoKTsKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbmFibGVUZXJtaW5hdGlvbigpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hZTIzMjM2NTYyOGEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAtMCwwICsxLDc2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVk
ZSAiSWRlbnRpZmllclR5cGVzLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5j
bHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIldlYlByZWZlcmVuY2Vz
U3RvcmUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50
aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IENsaWVudE9yaWdpbjsKK3N0
cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKK3N0cnVjdCBXb3JrZXJPcHRpb25zOworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOworc3RydWN0
IFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGE7CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2Vp
dmVyIHsKK3B1YmxpYzoKKyAgICBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwg
UGFnZUdyb3VwSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBTZXJ2aWNlV29ya2VySW5p
dGlhbGl6YXRpb25EYXRhJiYpOworICAgIH5XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24oKTsKKworICAgIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2Jq
ZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkwpIGZpbmFsOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICAvLyBJUEMgTWVz
c2FnZXMuCisgICAgdm9pZCBsYXVuY2hTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpXb3Jr
ZXJPcHRpb25zJiYsIFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYpOworICAgIHZvaWQgdXBk
YXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CisgICAgdm9p
ZCBzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KSB7IG1fdXNlckFnZW50ID0gV1RGTW92
ZSh1c2VyQWdlbnQpOyB9CisgICAgdm9pZCBjbG9zZSgpOworCisgICAgUmVmPElQQzo6Q29ubmVj
dGlvbj4gbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzczsKKyAgICBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluOworICAgIFBhZ2VHcm91cElkZW50aWZpZXIg
bV9wYWdlR3JvdXBJRDsKKyAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIG1fd2ViUGFnZVByb3h5
SUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CisgICAgU3RyaW5nIG1f
dXNlckFnZW50OworICAgIFJlZjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXI+IG1fdXNlckNvbnRl
bnRDb250cm9sbGVyOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViUHJlZmVyZW5jZXNTdG9yZT4gbV9w
cmVmZXJlbmNlc1N0b3JlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMu
aW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kODJhNGFkYTUzZmQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCAr
MSwzMCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAor
IyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdl
cyAtPiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gTm90UmVmQ291bnRl
ZCB7CisgICAgTGF1bmNoU2hhcmVkV29ya2VyKHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4g
b3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50
aWZpZXIsIFVSTCB1cmwsIHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdvcmtlck9wdGlv
bnMsIHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCB3b3JrZXJGZXRjaFJlc3VsdCkK
KyAgICBQb3N0Q29ubmVjdEV2ZW50KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hh
cmVkV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBwb3J0
LCBTdHJpbmcgc291cmNlT3JpZ2luKQorICAgIFRlcm1pbmF0ZVNoYXJlZFdvcmtlcihXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIpCisgICAgVXBk
YXRlUHJlZmVyZW5jZXNTdG9yZShzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0
b3JlKQorICAgIFNldFVzZXJBZ2VudChTdHJpbmcgdXNlckFnZW50KQorICAgIENsb3NlKCkKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kN2Q5OTRkZTFmNzcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uLmNwcApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCIKKworI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIK
KyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmll
ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyT3B0aW9ucy5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNF
X0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQg
Il0gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsIFdlYkNvcmU6
OlByb2Nlc3M6OmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQorCitXZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJXZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uOiIpOworfQorCitXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjp+
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpCit7CisgICAgQ09OTkVDVElPTl9SRUxF
QVNFX0xPRygifldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Iik7Cit9CisKK0lQQzo6
Q29ubmVjdGlvbiogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworfQorCit2
b2lkIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnJlcXVlc3RTaGFyZWRXb3JrZXIo
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgVVJM
JiB1cmwsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBjb25zdCBXZWJD
b3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25zKQoreworICAgIENPTk5FQ1RJT05fUkVM
RUFTRV9MT0coInJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uOjpSZXF1ZXN0U2hhcmVkV29ya2VyIHsgb3JpZ2luLCBzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLCB1cmwsIFdURk1vdmUocG9ydCksIHdvcmtlck9wdGlvbnMgfSk7Cit9CisK
K3ZvaWQgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6c2hhcmVkV29ya2VyT2JqZWN0
SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coInNo
YXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
PSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbjo6U2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkgeyBzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyIH0pOworfQorCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPRworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmVjYmY0MmY2NzYyYQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDU0IEBACisKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNz
YWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIGZpbmFsIDogcHVibGlj
IFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24sIHByaXZhdGUgSVBDOjpNZXNz
YWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIHN0
YXRpYyBSZWY8V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbj4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKTsgfQorICAg
IH5XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCk7CisKKyAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCitwcml2
YXRlOgorICAgIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKTsKKworICAgIC8vIFdl
YkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uCisgICAgdm9pZCByZXF1ZXN0U2hh
cmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFdlYkNvcmU6OlNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVz
c2FnZVBvcnQmJiwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYpIGZpbmFsOworICAgIHZv
aWQgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllcikgZmluYWw7CisKKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5k
ZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRl
c3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzIyYWUx
YTMyYzkzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsx
LDI3IEBACisjIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisj
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2Vz
IC0+IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24geworICAgIEZldGNoU2NyaXB0SW5D
bGllbnQoVVJMIHVybCwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyB3
b3JrZXJPcHRpb25zKSAtPiAoc3RydWN0IFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0IGZldGNo
UmVzdWx0KSBBc3luYworICAgIE5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24oV2Vi
Q29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQorICAgIFBvc3RFeGNlcHRpb25U
b1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFN0cmluZyBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTdHJpbmcgc291cmNlVVJMKQorfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJv
dmlkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDQ5NWE0
MjI1ZTYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyUHJvdmlk
ZXIuaCIKKworI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
IldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJTaGFyZWRXb3JrZXJQcm92aWRlciYgV2Vi
U2hhcmVkV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyPiBwcm92aWRlcjsKKyAgICByZXR1cm4gcHJv
dmlkZXI7Cit9CisKK1dlYlNoYXJlZFdvcmtlclByb3ZpZGVyOjpXZWJTaGFyZWRXb3JrZXJQcm92
aWRlcigpID0gZGVmYXVsdDsKKworV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
biogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXI6OnNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKQorewor
ICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuc2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNoYXJlZFdvcmtlclByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uODZlM2QyZmU3MGEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaApAQCAtMCwwICsx
LDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZFdvcmtlclByb3ZpZGVyLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb247
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJQcm92aWRl
ciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTaGFyZWRXb3JrZXJQcm92aWRlciB7CitwdWJsaWM6
CisgICAgc3RhdGljIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyJiBzaW5nbGV0b24oKTsKKworcHJp
dmF0ZToKKyAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8V2ViU2hhcmVkV29ya2VyUHJvdmlkZXI+
OworICAgIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyKCk7CisKKyAgICBXZWJDb3JlOjpTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uKiBzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCkgZmluYWw7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAppbmRleCAwMmRhOTExNDdmOGEuLjhjNzRjN2NiY2E0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtODQsNiArODQsOSBAQAogI2luY2x1ZGUgIldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNlcnZpY2VXb3JrZXJQcm92
aWRlci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaCIKICNpbmNsdWRl
ICJXZWJTb2NrZXRTdHJlYW0uaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUg
IldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCkBAIC0xMzMsNiArMTM2LDcgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVXNlckdlc3R1cmVJbmRpY2F0b3IuaD4KICNpbmNsdWRlIDxwYWwvTG9nZ2luZy5oPgog
I2luY2x1ZGUgPHd0Zi9BbGdvcml0aG1zLmg+CkBAIC01NjksNiArNTczLDcgQEAgdm9pZCBXZWJQ
cm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycykKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgU2VydmljZVdv
cmtlclByb3ZpZGVyOjpzZXRTaGFyZWRQcm92aWRlcihXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6
OnNpbmdsZXRvbigpKTsKICNlbmRpZgorICAgIFNoYXJlZFdvcmtlclByb3ZpZGVyOjpzZXRTaGFy
ZWRQcm92aWRlcihXZWJTaGFyZWRXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkpOwogCiAjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIEpTQzo6V2FzbTo6ZW5hYmxlRmFzdE1lbW9yeSgpOwpA
QCAtOTAyLDcgKzkwNyw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlCiAgICAgfQogCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIC8vIEZJWE1FOiBSZW1vdmU/CiAgICAgaWYgKGRl
Y29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIEFTU0VSVChT
V0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpOwogICAgICAgICBpZiAo
YXV0byogY29udGV4dE1hbmFnZXJDb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkuY29ubmVjdGlvbigpKQpAQCAtOTExLDYgKzkxNSwxMyBAQCB2b2lkIFdlYlByb2Nlc3M6
OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNv
ZGVyJiBkZQogICAgIH0KICNlbmRpZgogCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVy
TmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBBU1NFUlQoU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSk7CisgICAgICAgIGlmIChh
dXRvKiBjb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
cjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8V2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uJj4oKmNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbikuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKICAgICBMT0dfRVJST1IoIlVuaGFuZGxlZCB3ZWIgcHJvY2VzcyBt
ZXNzYWdlICclcycgKGRlc3RpbmF0aW9uOiAlIiBQUkl1NjQgIiBwaWQ6ICVkKSIsIGRlc2NyaXB0
aW9uKGRlY29kZXIubWVzc2FnZU5hbWUoKSksIGRlY29kZXIuZGVzdGluYXRpb25JRCgpLCBzdGF0
aWNfY2FzdDxpbnQ+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSkpOwogfQogCkBAIC0xOTE3LDYgKzE5
MjgsMTYgQEAgTGliV2ViUlRDTmV0d29yayYgV2ViUHJvY2Vzczo6bGliV2ViUlRDTmV0d29yaygp
CiAgICAgcmV0dXJuICptX2xpYldlYlJUQ05ldHdvcms7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6
ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBh
Z2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2Vi
UGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNT
dG9yZSYgc3RvcmUsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFNlcnZp
Y2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXphdGlvbkRhdGEsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICAvLyBXZSBhcmUg
aW4gdGhlIFNoYXJlZCBXb3JrZXIgY29udGV4dCBwcm9jZXNzIGFuZCB0aGUgY2FsbCBiZWxvdyBl
c3RhYmxpc2hlcyBvdXIgY29ubmVjdGlvbiB0byB0aGUgTmV0d29yayBQcm9jZXNzCisgICAgLy8g
YnkgY2FsbGluZyBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uIFNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0aGUgc2FtZSB1bmRlcmx5aW5nIElQQzo6Q29ubmVj
dGlvbiBhcyB0aGUKKyAgICAvLyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gZm9yIHN5bmNocm9u
aXphdGlvbiBwdXJwb3Nlcy4KKyAgICBhdXRvJiBpcGNDb25uZWN0aW9uID0gZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworICAgIFNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDb25uZWN0aW9uKG1ha2VVbmlxdWU8V2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uPihpcGNDb25uZWN0aW9uLCBXVEZNb3ZlKHJl
Z2lzdHJhYmxlRG9tYWluKSwgcGFnZUdyb3VwSUQsIHdlYlBhZ2VQcm94eUlELCBwYWdlSUQsIHN0
b3JlLCBXVEZNb3ZlKGluaXRpYWxpemF0aW9uRGF0YSkpKTsKKyAgICBTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpLT5lc3RhYmxpc2hDb25uZWN0aW9u
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKIHZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJsZURvbWFpbiYm
IHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJbml0
aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXphdGlvbkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCmluZGV4IGRkOGQ3NGZmZjI2OS4uNjVmNzczMjAxYTczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTQ2OSw2ICs0NjksNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZ2FtZXBhZERpc2Nvbm5lY3RlZCh1bnNpZ25lZCBpbmRleCk7CiAjZW5kaWYKIAorICAgIHZv
aWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KFBhZ2VHcm91cElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2
b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MoUGFnZUdyb3VwSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJJbml0aWFsaXphdGlvbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgppbmRleCBkZmQzMDY0NTYzZjkuLmU1NTI5NmI5MDRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTEwMCw2ICsxMDAsOCBAQCBt
ZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewogICAg
IEdhbWVwYWREaXNjb25uZWN0ZWQodW5zaWduZWQgaW5kZXgpCiAjZW5kaWYKIAorICAgIEVzdGFi
bGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJLaXQ6
OlBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRl
bnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBz
dHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBkb21haW4sIHN0cnVjdCBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJJbml0aWFsaXph
dGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRhKSAtPiAoKSBBc3luYworCiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogICAgIEVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElE
LCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9y
ZSBzdG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2Vy
UGFnZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlv
bkRhdGEgaW5pdGlhbGl6YXRpb25EYXRhKSAtPiAoKSBBc3luYwogI2VuZGlmCg==
</data>
<flag name="commit-queue"
          id="477225"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450777</attachid>
            <date>2022-02-03 09:13:25 -0800</date>
            <delta_ts>2022-02-03 10:39:15 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>235958_SharedWorker_multiProcess_wip.patch</filename>
            <type>text/plain</type>
            <size>257249</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDQwMjQ2NmU0OWYwZS4uMTcwNGMzMDNkY2JjIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTQ2Myw3ICs0NjMsNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYi1sb2Nrcy9zdGVhbC50ZW50YXRpdmUuaHR0cHMuYW55Lmh0bWwgWyBEdW1wSgog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3Ro
ZS1hbmFseXNlcm5vZGUtaW50ZXJmYWNlL3Rlc3QtYW5hbHlzZXItbWluaW11bS5odG1sIFsgRHVt
cEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUt
ZGlzY29ubmVjdC1hdWRpb3BhcmFtLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NhbWUtb3JpZ2luLWNoZWNr
LnN1Yi5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMuaHRt
bCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCiBmYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWJh
Y2stZm9yd2FyZC1jYWNoZS5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGZhc3Qv
aGlzdG9yeS9wYWdlLWNhY2hlLWNyZWF0ZUltYWdlQml0bWFwLmh0bWwgWyBEdW1wSlNDb25zb2xl
TG9nSW5TdGRFcnIgXQogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLWluLWxv
YWRpbmctaWZyYW1lLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQpAQCAtODUzLDYg
Kzg1Miw3IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdXNlci10aW1pbmcvbWFy
ay5odG1sIFsgRmFpbHVyZSBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dXNlci10aW1pbmcvbWVhc3VyZV9hc3NvY2lhdGVkX3dpdGhfbmF2aWdhdGlvbl90aW1pbmcuaHRt
bCBbIEZhaWx1cmUgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
d2ViYXBwYXBpcy9zeXN0ZW0tc3RhdGUtYW5kLWNhcGFiaWxpdGllcy90aGUtbmF2aWdhdG9yLW9i
amVjdC9wbHVnaW5zLWFuZC1taW1ldHlwZXMuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2JlYWNvbi9iZWFjb24tcmVkaXJlY3Quc3ViLndpbmRv
dy5odG1sIFsgRmFpbHVyZSBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L2Fub255bW91cy1pZnJhbWUvc2hhcmVk
d29ya2VyLXBhcnRpdGlvbmluZy50ZW50YXRpdmUuaHR0cHMud2luZG93Lmh0bWwgWyBGYWlsdXJl
IFBhc3MgXQogCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2RvY3VtZW50LW1ldGFkYXRhL3RoZS1saW5rLWVsZW1lbnQvbGluay1sb2FkLWVycm9yLWV2ZW50
cy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZG9jdW1lbnQtbWV0YWRhdGEvdGhlLWxpbmstZWxl
bWVudC9saW5rLWxvYWQtZXJyb3ItZXZlbnRzLmh0dHBzLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9n
SW5TdGRFcnIgXQpAQCAtNTE1Nyw2ICs1MTU3LDEwIEBAIHdlYmtpdC5vcmcvYi8xODM5OTQgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nzb20vY3NzLXN0eWxlLWF0dHItZGVj
CiAjIFRlc3QgaXMgY3Jhc2hpbmcgaW4gRGVidWcgYnVpbGRzIHNpbmNlIGltcG9ydC4KIHdlYmtp
dC5vcmcvYi8yMzQ5NzcgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
ZG9tL2V2ZW50cy9mb2N1cy1ldmVudC1kb2N1bWVudC1tb3ZlLmh0bWwgWyBTa2lwIF0KIAorIyBU
ZXN0IGlzIGZsYWt5IGJlY2F1c2UgTWVzc2FnZVBvcnQgbWVzc2FnZXMgbWF5IGdldCByZWNlaXZl
ZCBpbiBhIGRpZmZlcmVudCBvcmRlciB3aGVuIHNldmVyYWwgTWVzc2FnZVBvcnRzIGFyZSBpbnZv
bHZlZCwKKyMgZHVlIHRvIGhvdyBNZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpIGlzIGlt
cGxlbWVudGVkLgoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJl
ZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJy
IEZhaWx1cmUgUGFzcyBdCisKICMgUGx1Z2lucwogIyBGSVhNRTogUmVtb3ZlIHRoZXNlIHRlc3Rz
LgogcGx1Z2lucy8gWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtl
ci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
aW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dApp
bmRleCAwZTk5NzI0Yjg2NGIuLjY4OThiNTRhYWI2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9p
bnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3Vi
LWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFs
IFVSTCBodHRwczovL3d3dy5sb2NhbGhvc3Q6OTQ0NC9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9z
dXBwb3J0L3Jlc291cmNlLnB5P2Nyb3NzLW9yaWdpbi1mZXRjaAotQmxvY2tlZCBhY2Nlc3MgdG8g
ZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHkt
cG9saWN5L3N1cHBvcnQvcmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLXhocgotQmxvY2tlZCBhY2Nl
c3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L3N1cHBvcnQvcmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLWZldGNoCiAKIFBB
U1MgU2FtZS1vcmlnaW4gJ2ZldGNoKCknLgogUEFTUyBTYW1lLW9yaWdpbiBYSFIuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3Vi
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2Ny
aXB0LXNyYy5zdWItZXhwZWN0ZWQudHh0CmluZGV4IDk3OTEwNjMwMzc4NS4uYmI2NDUyZjQ0YTBh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlw
dC1zcmMuc3ViLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hh
cmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dApAQCAtMiwxMCArMiw5IEBACiBI
YXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIAogVElNRU9VVCBzaGFyZWR3
b3JrZXItc2NyaXB0LXNyYyBUZXN0IHRpbWVkIG91dAotRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9y
dFNjcmlwdHMoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgIEEgbmV0d29yayBl
cnJvciBvY2N1cnJlZC4KLUZBSUwgYGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91
dCBDU1AgUmVmdXNlZCB0byBldmFsdWF0ZSBhIHN0cmluZyBhcyBKYXZhU2NyaXB0IGJlY2F1c2Ug
J3Vuc2FmZS1ldmFsJyBpcyBub3QgYW4gYWxsb3dlZCBzb3VyY2Ugb2Ygc2NyaXB0IGluIHRoZSBm
b2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAic2NyaXB0LXNyYyAn
c2VsZicgJ25vbmNlLWEnIGJsb2I6IGZpbGVzeXN0ZW06Ii4KLQotRkFJTCBgc2V0VGltZW91dChb
c3RyaW5nXSlgIG5vdCBibG9ja2VkIGluIGh0dHA6IHdpdGhvdXQgQ1NQIGFzc2VydF91bnJlYWNo
ZWQ6IGNhbGxiYWNrIG5vdCBjYWxsZWQuIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBD
cm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91
ciBDU1AgTG9hZCBmYWlsZWQKK1BBU1MgYGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0
aG91dCBDU1AKK1BBU1MgYHNldFRpbWVvdXQoW3N0cmluZ10pYCBub3QgYmxvY2tlZCBpbiBodHRw
OiB3aXRob3V0IENTUAogVElNRU9VVCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgYmxv
Y2tlZCBpbiBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnIFRlc3QgdGltZWQgb3V0CiBOT1RS
VU4gYGV2YWwoKWAgYmxvY2tlZCBpbiBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCiBOT1RS
VU4gYHNldFRpbWVvdXQoW3N0cmluZ10pYCBibG9ja2VkIGluIGh0dHA6IHdpdGggc2NyaXB0LXNy
YyAnc2VsZicKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRp
bWVvdXQuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0
LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4dAppbmRleCA0ZWFjMWNjYzA1MjYuLmI4ZWUxM2IwZmZj
ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91dC5z
dWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRp
bWVvdXQuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKIAogRkFJTCBEZWRpY2F0ZWQg
d29ya2VyIGluaGVyaXRzIENTUCBmcm9tIG1haW4gZG9jdW1lbnQgYXNzZXJ0X2VxdWFsczogZXhw
ZWN0ZWQgInNldFRpbWVvdXQgYWxsb3dlZCIgYnV0IGdvdCAic2V0VGltZW91dCBibG9ja2VkIgot
RkFJTCBTaGFyZWQgd29ya2VyIGRlbGl2ZXJzIGl0cyBvd24gQ1NQIGFzc2VydF9lcXVhbHM6IGV4
cGVjdGVkICJzZXRUaW1lb3V0IGJsb2NrZWQiIGJ1dCBnb3QgInNldFRpbWVvdXQgYWxsb3dlZCIK
K1BBU1MgU2hhcmVkIHdvcmtlciBkZWxpdmVycyBpdHMgb3duIENTUAogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMv
b2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJv
d3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBl
Y3RlZC50eHQKaW5kZXggYzEwNzEzNjU1MjgwLi42Zjg0NGRkNWQ5NDkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9v
ZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
YnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1l
eHBlY3RlZC50eHQKQEAgLTUsNyArNSw3IEBAIEhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNz
YWdlID0gbnVsbAogUEFTUyBEZWRpY2F0ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0CiBQ
QVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0CiBQQVNTIERlZGlj
YXRlZCB3b3JrZXIgb2YgdGhlIG5vdC1pbi1jYWNoZSBzY3JpcHQKLVBBU1MgU2hhcmVkIHdvcmtl
ciBvZiB0aGUgY2FjaGVkIHNjcmlwdAotUEFTUyBTaGFyZWQgd29ya2VyIG9mIHRoZSBmYWxsYmFj
a2VkIHNjcmlwdAorRkFJTCBTaGFyZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0IGFzc2Vy
dF9lcXVhbHM6IGV4cGVjdGVkICJEb25lOiBjYWNoZWQiIGJ1dCBnb3QgIkVycm9yOiBJbXBvcnRp
bmcgYSBub24tY2FjaGVkIHNjcmlwdCBtdXN0IGZhaWwuIgorRkFJTCBTaGFyZWQgd29ya2VyIG9m
IHRoZSBmYWxsYmFja2VkIHNjcmlwdCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiRG9uZTogZmFs
bGJhY2tlZCIgYnV0IGdvdCAiRXJyb3I6IEltcG9ydGluZyBhIG5vbi1jYWNoZWQgc2NyaXB0IG11
c3QgZmFpbC4iCiBUSU1FT1VUIFNoYXJlZCB3b3JrZXIgb2YgdGhlIG5vdC1pbi1jYWNoZSBzY3Jp
cHQgVGVzdCB0aW1lZCBvdXQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5v
bnltb3VzLWlmcmFtZS9zaGFyZWR3b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53
aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlmcmFt
ZS9zaGFyZWR3b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0
ZWQudHh0CmluZGV4IDRlZDg3NDc0NzZjNy4uNTg2ZDEwMTUyYTM2IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2lu
LWVtYmVkZGVyLXBvbGljeS9hbm9ueW1vdXMtaWZyYW1lL3NoYXJlZHdvcmtlci1wYXJ0aXRpb25p
bmcudGVudGF0aXZlLmh0dHBzLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRl
ci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3b3JrZXItcGFydGl0aW9uaW5nLnRlbnRh
dGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIEFu
b255bW91cyBpZnJhbWVzIGdldCBwYXJ0aXRpb25lZCBzaGFyZWQgd29ya2Vycy4gYXNzZXJ0X3Ry
dWU6IFRoZSAibm9ybWFsIiBpZnJhbWUncyBzaGFyZWR3b3JrZXIgc2hvdWxkIHJldHVybiB7Im5v
cm1hbCI6IHRydWUsICJub3JtYWxfY29udHJvbCI6IHRydWV9LCBidXQgaW5zdGVhZCByZXR1cm5l
ZCB7Im5vcm1hbCI6dHJ1ZX0gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK0ZBSUwgQW5vbnltb3Vz
IGlmcmFtZXMgZ2V0IHBhcnRpdGlvbmVkIHNoYXJlZCB3b3JrZXJzLiBhc3NlcnRfdHJ1ZTogVGhl
ICJub3JtYWwiIGlmcmFtZSdzIHNoYXJlZHdvcmtlciBzaG91bGQgcmV0dXJuIHsibm9ybWFsIjog
dHJ1ZSwgIm5vcm1hbF9jb250cm9sIjogdHJ1ZX0sIGJ1dCBpbnN0ZWFkIHJldHVybmVkIHsibm9y
bWFsX2NvbnRyb2wiOnRydWUsIm5vcm1hbCI6dHJ1ZSwiYW5vbnltb3VzIjp0cnVlLCJhbm9ueW1v
dXNfY29udHJvbCI6dHJ1ZX0gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9y
aWdpbi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0
cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xh
dGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IDYzNTViNjhkZTcwYi4uYzhi
Zjc1ZTdlYTg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4t
aXNvbGF0ZWQtcGVybWlzc2lvbi5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRl
ci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQu
dHh0CkBAIC0yMCw3ICsyMCw3IEBAIFBBU1MgZGVkaWNhdGVkIHdvcmtlcjogc2NoZW1lID0gYmxv
YiwgdmFsdWUgPSAqCiBQQVNTIGRlZGljYXRlZCB3b3JrZXI6IHNjaGVtZSA9IGJsb2IsIHZhbHVl
ID0gc2VsZgogRkFJTCBkZWRpY2F0ZWQgd29ya2VyOiBzY2hlbWUgPSBibG9iLCB2YWx1ZSA9IChc
KSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCBmYWxzZSBidXQgZ290IHRydWUKIFBBU1Mgc2hhcmVk
IHdvcmtlcjogd2l0aENvb3BDb2VwID0gZmFsc2UKLVBBU1Mgc2hhcmVkIHdvcmtlcjogd2l0aENv
b3BDb2VwID0gdHJ1ZQorRkFJTCBzaGFyZWQgd29ya2VyOiB3aXRoQ29vcENvZXAgPSB0cnVlIGFz
c2VydF9lcXVhbHM6IGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZQogUEFTUyBzZXJ2aWNlIHdv
cmtlcjogd2l0aENvb3BDb2VwID0gZmFsc2UKIEZBSUwgc2VydmljZSB3b3JrZXI6IHdpdGhDb29w
Q29lcCA9IHRydWUgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4
cGVjdGVkLnR4dAppbmRleCAzMzk4YmQ4ODkzMWIuLjRjODY2ZWIyOTI2MyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9y
aWdpbi1lbWJlZGRlci1wb2xpY3kvc2hhcmVkLXdvcmtlcnMuaHR0cHMtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9z
cy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4
dApAQCAtMiw3ICsyLDcgQEAgVmVyaWZ5IHRoZSBDcm9zcy1PcmlnaW4gRW1iZWRkZXIgUG9saWN5
IGZvciBTaGFyZWQgV29ya2VycyBieSBwZXJmb3JtaW5nIGEgY3Jvc3MKIAogCiBQQVNTIGRlZmF1
bHQgcG9saWN5IChkZXJpdmVkIGZyb20gcmVzcG9uc2UpCi1GQUlMICJyZXF1aXJlLWNvcnAiIChk
ZXJpdmVkIGZyb20gcmVzcG9uc2UpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJmYWlsdXJlIiBi
dXQgZ290ICJzdWNjZXNzIgorUEFTUyAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIHJlc3Bv
bnNlKQogUEFTUyBkZWZhdWx0IHBvbGljeSAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBkdWUgdG8g
dXNlIG9mIGxvY2FsIHNjaGVtZSAtIGJsb2IgVVJMKQogRkFJTCAicmVxdWlyZS1jb3JwIiAoZGVy
aXZlZCBmcm9tIG93bmVyIHNldCBkdWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAtIGJsb2IgVVJM
KSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiZmFpbHVyZSIgYnV0IGdvdCAic3VjY2VzcyIKIFBB
U1MgZGVmYXVsdCBwb2xpY3kgKGRlcml2ZWQgZnJvbSBvd25lciBzZXQgZHVlIHRvIHVzZSBvZiBs
b2NhbCBzY2hlbWUgLSBkYXRhIFVSTCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5
L3dvcmtlci1pbmhlcml0YW5jZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRl
ci1wb2xpY3kvd29ya2VyLWluaGVyaXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKaW5kZXgg
NzViMWQzM2U1MjYwLi5iMmJmMmUzYmZmM2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9s
aWN5L3dvcmtlci1pbmhlcml0YW5jZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4t
ZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5jZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0
CkBAIC0xLDcgKzEsNiBAQAogQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8v
d3d3LmxvY2FsaG9zdDo5NDQ0L2NvbW1vbi9ibGFuay5odG1sCiBCbG9ja2VkIGFjY2VzcyB0byBl
eHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29tbW9uL2JsYW5rLmh0bWwK
IEJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2NhbGhvc3Q6OTQ0
NC9jb21tb24vYmxhbmsuaHRtbAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBz
Oi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbW1vbi9ibGFuay5odG1sCiAKIFBBU1MgVGVzdCB0aGF0
IGxvY2FsIHNjaGVtZSB3b3JrZXJzIGluaGVyaXQgQ09FUDogcmVxdWlyZS1jb3JwIGZyb20gdGhl
IGNyZWF0aW5nIGRvY3VtZW50CiBQQVNTIGJsb2IgVVJMIGRlZGljYXRlZCB3b3JrZXI6IFNhbWUg
b3JpZ2luIHNob3VsZCBiZSBhbGxvd2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9TaGFyZWRXb3JrZXJfZGF0YVVybC1leHBlY3RlZC50eHQKaW5kZXggOTk1YTA2MDE5
Yjg0Li45YjU4MjBhYWU4Y2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJfZGF0YVVybC1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4cGVjdGVkLnR4dApAQCAtMSwxMyArMSw1IEBACi1D
T05TT0xFIE1FU1NBR0U6IEVycm9yOiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3Qg
MQogCiAKLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gRXJyb3I6IGFzc2VydF9lcXVh
bHM6IGV4cGVjdGVkIDIgYnV0IGdvdCAxCi0KLVBBU1MgRGF0YSBVUkwgbm90IHNoYXJlZCBieSBj
cm9zcy1vcmlnaW4gU2hhcmVkV29ya2VycwotVElNRU9VVCBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNh
bWUtb3JpZ2luIFNoYXJlZFdvcmtlcnMgVGVzdCB0aW1lZCBvdXQKLQotSGFybmVzcyBFcnJvciAo
RkFJTCksIG1lc3NhZ2UgPSBFcnJvcjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290
IDEKLQogUEFTUyBEYXRhIFVSTCBub3Qgc2hhcmVkIGJ5IGNyb3NzLW9yaWdpbiBTaGFyZWRXb3Jr
ZXJzCi1USU1FT1VUIERhdGEgVVJMcyBzaGFyZWQgYnkgc2FtZS1vcmlnaW4gU2hhcmVkV29ya2Vy
cyBUZXN0IHRpbWVkIG91dAorUEFTUyBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNo
YXJlZFdvcmtlcnMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11
cmwud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJs
LndpbmRvdy1leHBlY3RlZC50eHQKaW5kZXggNTc2ZTZkMmI3ZWQyLi40YTI2YmU5MjlhOGQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVj
dGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBo
dHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBv
cnQtb24tbG9hZC1zY3JpcHQucHkKIAogUEFTUyBTdGF0aWMgaW1wb3J0LgogRkFJTCBTdGF0aWMg
aW1wb3J0IChjcm9zcy1vcmlnaW4pLiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24g
d2l0aCB2YWx1ZTogIkltcG9ydGluZyBhIG1vZHVsZSBzY3JpcHQgZmFpbGVkLiIKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhw
ZWN0ZWQudHh0CmluZGV4IDRmODY0MWU1MTQ4MC4uMjk5N2Y3ZTFmMzA4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxl
cy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBl
Y3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IE9yaWdpbiBudWxsIGlz
IG5vdCBhbGxvd2VkIGJ5IEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbi4gU3RhdHVzIGNvZGU6
IDIwMAogCiBIYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQK
aW5kZXggZWFjN2Y5NWRlNmYyLi5jYmMwNDI5ZTBjNzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13
b3JrZXItaW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVk
LXdvcmtlci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMg
QEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0
Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkK
IAogSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1
bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQt
d29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0CmluZGV4IDU3NmU2ZDJiN2VkMi4uNGEy
NmJlOTI5YThkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50
eHQKQEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6
Ly93d3cxLmxvY2FsaG9zdDo5NDQzL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LW9u
LWxvYWQtc2NyaXB0LnB5CiAKIFBBU1MgU3RhdGljIGltcG9ydC4KIEZBSUwgU3RhdGljIGltcG9y
dCAoY3Jvc3Mtb3JpZ2luKS4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGgg
dmFsdWU6ICJJbXBvcnRpbmcgYSBtb2R1bGUgc2NyaXB0IGZhaWxlZC4iCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxl
cy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hh
cmVkLXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAppbmRleCBlMWJlZGY1
NDMwZWYuLmE3MGYwNWFmNTRmNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25z
LWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMt
Y3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3Mg
dG8gZXh0ZXJuYWwgVVJMIGh0dHA6Ly93d3cxLmxvY2FsaG9zdDo4ODAwL3dvcmtlcnMvbW9kdWxl
cy9yZXNvdXJjZXMvZXhwb3J0LWNyZWRlbnRpYWxzLnB5CiAKIEhhcm5lc3MgRXJyb3IgKFRJTUVP
VVQpLCBtZXNzYWdlID0gbnVsbAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMv
MDA0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhwZWN0ZWQudHh0
CmluZGV4IDAxOGRiNjA0NTY5ZC4uY2ZlNDY1NTY3NWNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRp
cGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMv
MDA0LWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDMgQEAKIAotSGFybmVzcyBFcnJvciAoVElNRU9V
VCksIG1lc3NhZ2UgPSBudWxsCi0KLU5PVFJVTiBzaGFyZWQgd29ya2VyIHdpdGggbXVsdGlwbGUg
ZG9jdW1lbnRzCitQQVNTIHNoYXJlZCB3b3JrZXIgd2l0aCBtdWx0aXBsZSBkb2N1bWVudHMKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNz
L211bHRpcGxlLXdvcmtlcnMvMDA4LWV4cGVjdGVkLnR4dAppbmRleCA5N2E0ZTdhNzNhNjMuLjA5
ZjY3MmQxYzYyMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKQEAgLTEs
NSArMSwzIEBACiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1U
SU1FT1VUIG1lc3NhZ2VjaGFubmVsIGluIHNoYXJlZCB3b3JrZXIgVGVzdCB0aW1lZCBvdXQKK1BB
U1MgbWVzc2FnZWNoYW5uZWwgaW4gc2hhcmVkIHdvcmtlcgogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtl
ci1mcm9tLWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2It
dXJsLndpbmRvdy1leHBlY3RlZC50eHQKaW5kZXggYTA4OWMyMjQ4OWUyLi4xOWU0NmIwOWE1NmEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
c2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNyAr
MSw1IEBACiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1GQUlM
IENyZWF0aW5nIGEgc2hhcmVkIHdvcmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MuIGFzc2VydF9l
cXVhbHM6IGV4cGVjdGVkICJ3b3JrZXJfT0tfMiIgYnV0IGdvdCAid29ya2VyX09LXzEiCitQQVNT
IENyZWF0aW5nIGEgc2hhcmVkIHdvcmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MuCiBQQVNTIENy
ZWF0aW5nIGEgc2hhcmVkIHdvcmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MgaW1tZWRpYXRlbHkg
YmVmb3JlIHJldm9raW5nLgotVElNRU9VVCBDb25uZWN0aW5nIHRvIGEgc2hhcmVkIHdvcmtlciBv
biBhIHJldm9rZWQgYmxvYiBVUkwgd29ya3MuIFRlc3QgdGltZWQgb3V0CitQQVNTIENvbm5lY3Rp
bmcgdG8gYSBzaGFyZWQgd29ya2VyIG9uIGEgcmV2b2tlZCBibG9iIFVSTCB3b3Jrcy4KIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtl
ci1uYW1lLXZpYS1vcHRpb25zLWV4cGVjdGVkLnR4dAppbmRleCA2ZmZlZTI3MzkwZDkuLmFlNDVi
NGQyNzM5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQKQEAgLTEsMyAr
MSwzIEBACiAKLUZBSUwgVGVzdCB0aGUgbmFtZSBwcm9wZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBt
aXhpbmcgY29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29uc3RydWN0b3Igc3RyaW5ncyBFcnJvcjog
YXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290IDEKK1BBU1MgVGVzdCB0aGUgbmFtZSBw
cm9wZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBtaXhpbmcgY29uc3RydWN0b3Igb3B0aW9ucyBhbmQg
Y29uc3RydWN0b3Igc3RyaW5ncwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25zLW1pc21h
dGNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0
CmluZGV4IGY2NTY5NDYxNTBkYi4uNGY5OWExMzQwOWU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1v
cHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25zLW1pc21h
dGNoLWV4cGVjdGVkLnR4dApAQCAtMSwyOCArMSwyNiBAQAogCi1IYXJuZXNzIEVycm9yIChUSU1F
T1VUKSwgbWVzc2FnZSA9IG51bGwKLQotVElNRU9VVCBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3Jr
ZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBt
b2R1bGUgVGVzdCB0aW1lZCBvdXQKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIg
d2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGRlZmF1
bHQKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogY2xhc3NpYyB0byBtb2R1bGUKLU5PVFJVTiBDb25uZWN0
aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxv
Y2tlZDogbW9kdWxlIHRvIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3Jr
ZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBv
bWl0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBpbmNsdWRlIGlu
IGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJl
bnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBkZWZhdWx0IGluIGNsYXNzaWMK
LU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9u
cyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCi1OT1RS
VU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hv
dWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVkZSBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IHNhbWUtb3JpZ2luIHRvIG9taXQgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRv
IHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDog
aW5jbHVkZSB0byBkZWZhdWx0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJl
ZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVk
ZSB0byBvbWl0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIg
d2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBzYW1l
LW9yaWdpbiBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdp
dGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gb21pdCBp
biBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJl
bnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBpbmNsdWRlIGluIG1vZHVs
ZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4gbW9kdWxlCi1OT1RSVU4g
Q29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxk
IGJlIGJsb2NrZWQ6IG9taXQgdG8gc2FtZS1vcmlnaW4gaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IG9taXQgdG8gaW5jbHVkZSBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNo
YXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2Ft
ZS1vcmlnaW4gdG8gb21pdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3
b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmln
aW4gdG8gaW5jbHVkZSBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3Jr
ZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBk
ZWZhdWx0IGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4g
bW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50
IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gc2FtZS1vcmlnaW4gaW4gbW9k
dWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIG1vZHVsZQorUEFTUyBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogbW9kdWxlIHRvIGRlZmF1bHQKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdp
dGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGNsYXNzaWMgdG8gbW9kdWxl
CitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25z
IHNob3VsZCBiZSBibG9ja2VkOiBtb2R1bGUgdG8gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRv
IHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDog
ZGVmYXVsdCB0byBvbWl0IGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29y
a2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8g
aW5jbHVkZSBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4g
Y2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQg
b3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2lj
CitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25z
IHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGluY2x1ZGUgaW4gY2xhc3NpYworUEFTUyBDb25u
ZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUg
YmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBz
aGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGlu
Y2x1ZGUgdG8gZGVmYXVsdCBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRv
IG9taXQgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBzYW1lLW9yaWdp
biBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZl
cmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIG9taXQgaW4gbW9kdWxl
CitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25z
IHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIGluY2x1ZGUgaW4gbW9kdWxlCitQQVNTIENv
bm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBi
ZSBibG9ja2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8g
c2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBv
bWl0IHRvIHNhbWUtb3JpZ2luIGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3
b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBp
bmNsdWRlIGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBp
biBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50
IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIGluY2x1ZGUgaW4gbW9k
dWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIGRlZmF1bHQgaW4gbW9kdWxlCitQQVNT
IENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3Vs
ZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBpbmNsdWRlIHRvIHNhbWUtb3JpZ2luIGluIG1vZHVsZQogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVj
dGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3
b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dAppbmRleCAxZTJkMzk5MmY2ZDUuLjU5Y2FjYTQ4NmY4
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9v
cGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0x
LDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHA6Ly93d3cyLmxv
Y2FsaG9zdDo4ODAwL3hoci9yZXNvdXJjZXMvaW5zcGVjdC1oZWFkZXJzLnB5P2ZpbHRlcl9uYW1l
PW9yaWdpbiZjb3JzCiAKIEZBSUwgUmVmZXJlciBoZWFkZXIgYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgIlJlZmVyZXI6IGh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC94aHIvcmVzb3VyY2VzL3dvcmtlcnho
ci1vcmlnaW4tcmVmZXJyZXIuanNcbiIgYnV0IGdvdCAiUmVmZXJlcjogaHR0cDovL2xvY2FsaG9z
dDo4ODAwL3hoci9yZXNvdXJjZXMvcmVkaXJlY3QucHk/bG9jYXRpb249d29ya2VyeGhyLW9yaWdp
bi1yZWZlcnJlci5qc1xuIgogRkFJTCBPcmlnaW4gaGVhZGVyIGFzc2VydF9lcXVhbHM6IGV4cGVj
dGVkICJPcmlnaW46IGh0dHA6Ly9sb2NhbGhvc3Q6ODgwMFxuIiBidXQgZ290ICIiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQppbmRleCA2NTM5MzdhY2U2NWMuLmQzM2ZjNGFhNGQ2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlCkBAIC0xOTU3LDkgKzE5NTcsMTIgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktf
SEVBREVSUwogICAgIHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKICAgICB3b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmgKICAgICB3b3JrZXJzL1dvcmtlckxvYWRlclByb3h5LmgKKyAg
ICB3b3JrZXJzL1dvcmtlck9iamVjdFByb3h5LmgKKyAgICB3b3JrZXJzL1dvcmtlck9wdGlvbnMu
aAogICAgIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaAogICAgIHdvcmtlcnMv
V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCiAgICAgd29ya2Vycy9Xb3JrZXJPcldv
cmtsZXRUaHJlYWQuaAorICAgIHdvcmtlcnMvV29ya2VyUmVwb3J0aW5nUHJveHkuaAogICAgIHdv
cmtlcnMvV29ya2VyUnVuTG9vcC5oCiAgICAgd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAog
ICAgIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50LmgKQEAgLTIwMDMsOSArMjAwNiwx
MiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCiAKICAgICB3b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXJJZGVudGlmaWVyLmgKLSAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5h
Z2VyLmgKKyAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaAogICAgIHdvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaAorICAgIHdvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaAogICAgIHdvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlclByb3ZpZGVyLmgKKworICAgIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXIuaAogICAgIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29y
a2VyVGhyZWFkLmgKICAgICB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVh
ZFByb3h5LmgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBiM2Y1ZTBiNzg0MTcuLjVlZTUwMGNiNmQxMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKQEAgLTI3ODUsMTAgKzI3ODUsMTAgQEAgd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNwcAog
d29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCi13b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbi5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmNw
cAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcAord29ya2Vycy9z
aGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKIHdvcmtlcnMvc2hh
cmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkLmNwcAogd29ya2Vycy9zaGFyZWQvY29udGV4
dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAKIHdvcmtsZXRzL1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGM1ZjQ0ZWYwNGE3MC4uNTZhNzE1OWRiYWVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MDMsNyAr
OTAzLDcgQEAKIAkJMkU0MzQ2NEIwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3Bl
UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJF
NDM0NjM5MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZVByb3h5LmggKi87IH07
CiAJCTJFNDM0NjREMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJMb2NhdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2M0IwRjU0NkE4MjAw
QjBGMUJBIC8qIFdvcmtlckxvY2F0aW9uLmggKi87IH07CiAJCTJFNDM0NjUwMEY1NDZBODIwMEIw
RjFCQSAvKiBXb3JrZXJNZXNzYWdpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2M0UwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck1l
c3NhZ2luZ1Byb3h5LmggKi87IH07Ci0JCTJFNDM0NjUxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3Jr
ZXJPYmplY3RQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkU0MzQ2M0YwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5LmggKi87
IH07CisJCTJFNDM0NjUxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2M0YwRjU0
NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2NTMwRjU0NkE4MjAwQjBGMUJBIC8q
IFdvcmtlclJ1bkxvb3AuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJFNDM0NjQxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJSdW5Mb29wLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2NTUwRjU0
NkE4MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2NDMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclRo
cmVhZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTJFNzU4NDFFMTI3NzlBREEwMDYyNjI4QiAvKiBGaWxlUmVhZGVyTG9hZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTc1ODQxQjEyNzc5QURBMDA2
MjYyOEIgLyogRmlsZVJlYWRlckxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0xMTI1LDcgKzExMjUsNyBAQAogCQk0MTZBMDZBMTIzQ0NB
RDAzMDAzNDcxMDkgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkEwNjk2MjNDQ0FBOUYwMDM0
NzEwOSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkQ3NUEyMjBDNjUxQTUwMEQwMkQy
QyAvKiBOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZENzU5RjIwQzY0NDEzMDBEMDJEMkMgLyogTmV0d29ya0xv
YWRJbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQxNkUwQjNBMjA5QkMzQ0IwMDRBOTVEOSAvKiBGZXRjaElkZW50aWZpZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkUwQjM3MjA5
QkMzQzIwMDRBOTVEOSAvKiBGZXRjaElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk0MTZFMjlBNjEwMkZBOTYyMDA3RkMxNEUgLyog
V29ya2VyUmVwb3J0aW5nUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxNkUyOUE1MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQ
cm94eS5oICovOyB9OworCQk0MTZFMjlBNjEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0
aW5nUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxNkUyOUE1MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU4MUJC
RDEyREYwMDBBM0Y2NCAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBE
MDBCNzY0RDkgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU4MUJCRDEyREYw
MDBBM0Y2NSAvKiBKU0RPTUJpbmRpbmdJbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NERB
IC8qIEpTRE9NQmluZGluZ0ludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgxQkJEMTJERjAwMEEzRjc0IC8q
IFRyYW5zZm9ybVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RUEgLyogVHJh
bnNmb3JtU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM0NywxNCArMTM0NywxNiBAQAogCQk0NjdBNjhE
NzI3NUVBOTkxMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdBNjhENDI3NUVBOThCMDA5QjMxQzUg
LyogU2hhcmVkV29ya2VyVGhyZWFkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDY3QTY4RDgyNzVFQTk5NTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtl
clNjcmlwdExvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY3QTY4RDUyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRl
ci5oICovOyB9OwogCQk0NjdBNjhEOTI3NUVBOTk4MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2N0E2OEQ2Mjc1RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQ2N0E2OERB
Mjc1RUE5OUMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdBNjhEMjI3NUVBOThBMDA5QjMxQzUg
LyogU2hhcmVkV29ya2VyTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTQ2ODJEMjAwMUY3OTc4MzAwMEM4NjNEQiAvKiBTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY4MkQxRkYxRjc5NzgyMzAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4
MzQ0RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyog
RE9NUmVjdExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0NjgzREY0MDI3NjdERjk4MDA3RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNj
b3BlQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDY4M0RGM0UyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2Uu
aCAqLzsgfTsKIAkJNDY4M0RGNDEyNzY3RTkxQTAwN0QwMEM4IC8qIFNoYWRvd1JlYWxtR2xvYmFs
U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
ODNERjNCMjc2N0RGMjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4OEVFM0MyNkRE
MjYxMDAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4OEVFM0EyNkREMjYwQzAwMkFGNUM0IC8qIENyb3Nz
T3JpZ2luTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTQ2OTQzREM5Mjc2M0Y4MTcwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
Njk0M0RDNzI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2OTg1
RjIzMjdBNEE2QUQwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTg1RjIyMjdBNEE2ODYwMDk3QTMyQiAv
KiBTaGFyZWRXb3JrZXJLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0NjlDQ0NGRTI2OUQwMjFDMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5l
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5Q0ND
RkMyNjlEMDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjlENzdCODI3MDE2MjUxMDAxNDJG
QTYgLyogTmF2aWdhdGlvblJlcXVlc3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDY5RDc3QjYyNzAxNjI1MDAwMTQyRkE2IC8qIE5hdmlnYXRpb25S
ZXF1ZXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk0NkE3OEIzNDI3OTlCRDcxMDAxMTU0RkUgLyogV29ya2VyT3B0aW9ucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxQjFEMjYyNkYxOEE0QjAw
ODgyREEyIC8qIFdvcmtlck9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0NkFBQUEzRDI1RDM2MzIwMDBCQUY0MkYgLyogQXVkaW9GaWxl
UmVhZGVyQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2QUFBQTNBMjVEMzYzMTQwMEJBRjQyRiAvKiBBdWRpb0ZpbGVSZWFkZXJDb2NvYS5oICov
OyB9OwogCQk0NkI2M0Y2QzFDNkU4RDE5MDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjNGNkIx
QzZFOENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI2NTBERDIyOTYyNjI3MDBGRDhB
QTQgLyogUGFnZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2QjY1MERCMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzc1
LDYgKzEzNzcsNyBAQAogCQk0NkM2OTZDQzFFNzIwNUZDMDA1OTc5MzcgLyogQ1BVTW9uaXRvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM2OTZD
QTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgKi87IH07CiAJCTQ2QzgzRUZFMUE5
QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDODNFRkMxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlm
aWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NDZDQTlDNDQxRjk3QkJFOTAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDQTlDNDExRjk3QkJFNzAwNENG
QzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTQ2Q0Y1MDRBMjdBQjFFQTQwMDcwREJDOCAvKiBTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZDRjUwNDgyN0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDZEMDAwNDAyNkEwRkVCMzAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkQwMDAzRTI2QTBGRTZGMDBEMUJG
MUUgLyogU3VibWl0RXZlbnQuaCAqLzsgfTsKIAkJNDZEQTRBMDIyN0FCMDM5MzAwRTM3NUE4IC8q
IFRyYW5zZmVycmVkTWVzc2FnZVBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2REE0QTAwMjdBQjAzOEQwMEUzNzVBOCAvKiBUcmFuc2ZlcnJlZE1l
c3NhZ2VQb3J0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDZEQkI2NTAxQUI4Qzk2RjAwRDlBODEzIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REJCNjRFMUFCOEM5
NkYwMEQ5QTgxMyAvKiBQb3dlck9ic2VydmVyTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTkyNDUsOCArOTI0OCw2IEBACiAJCTQ2N0E2OENG
Mjc1RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2N0E2OEQwMjc1RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJl
YWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFkLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3QTY4RDEyNzVFQTk4QTAwOUIzMUM1IC8qIFNoYXJl
ZFdvcmtlclNjcmlwdExvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJT
Y3JpcHRMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NjdBNjhEMjI3
NUVBOThBMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
aGFyZWRXb3JrZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2N0E2
OEQzMjc1RUE5OEIwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNoYXJlZFdvcmtlck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjdBNjhENDI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NjdBNjhENTI3NUVBOThDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0
TG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdBNjhENjI3NUVBOThDMDA5QjMxQzUgLyogU2hh
cmVkV29ya2VyVGhyZWFkUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFk
UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkyNjIsNiArOTI2Myw4IEBA
CiAJCTQ2ODNERjNFMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVC
YXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2hhZG93UmVhbG1HbG9i
YWxTY29wZUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OEVFM0EyNkRE
MjYwQzAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcm9zc09y
aWdpbk1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4QjhCREUyNUNDODQ5
MzAwRjY3ODIyIC8qIEpTQmFzZUF1ZGlvQ29udGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0Jhc2VBdWRpb0NvbnRleHRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0Njk0M0RDNzI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTg1RjIyMjdBNEE2ODYwMDk3QTMyQiAv
KiBTaGFyZWRXb3JrZXJLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hh
cmVkV29ya2VyS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OUNDQ0ZBMjY5
RDAyMDIwMDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEJyb2FkY2FzdENoYW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlD
Q0NGQzI2OUQwMjAyMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBCcm9hZGNhc3RDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OUND
Q0ZEMjY5RDAyMDMwMDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBCcm9hZGNh
c3RDaGFubmVsLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkzMDIsNiArOTMw
NSw4IEBACiAJCTQ2QzgzRUZDMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW9Ob3RpZmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NkNBOUM0MTFGOTdCQkU3MDA0Q0ZDM0EgLyogVmlzaWJpbGl0eVN0
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpc2liaWxpdHlTdGF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkNBOUM0MjFGOTdCQkU3MDA0Q0ZDM0Eg
LyogVmlzaWJpbGl0eVN0YXRlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBWaXNpYmlsaXR5
U3RhdGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkNGNTA0ODI3QUIxRUEx
MDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDZDRjUwNDkyN0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZEMDAwM0MyNkEwRkU2RjAwRDFCRjFFIC8q
IFN1Ym1pdEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN1
Ym1pdEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZEMDAwM0UyNkEw
RkU2RjAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFN1Ym1pdEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RDAw
MDNGMjZBMEZFNzAwMEQxQkYxRSAvKiBTdWJtaXRFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gU3VibWl0RXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE1
NjgsNiArMjE1NzMsOCBAQAogCQk0NjQ3Q0U2MTI3QUFFMURBMDA5Q0JENDggLyogY29udGV4dCAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDZDRjUwNDky
N0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcCAqLywKKwkJ
CQk0NkNGNTA0ODI3QUIxRUExMDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIu
aCAqLywKIAkJCQk0NjdBNjhEMDI3NUVBOTg5MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFk
LmNwcCAqLywKIAkJCQk0NjdBNjhENDI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhy
ZWFkLmggKi8sCiAJCQkJNDY3QTY4Q0YyNzVFQTk4OTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRo
cmVhZFByb3h5LmNwcCAqLywKQEAgLTIxNTg3LDEwICsyMTU5NCwxMCBAQAogCQkJCTQ2Njk0Q0Ux
Mjc1OTQ0OEMwMEUzMTUwRSAvKiBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oICovLAogCQkJCTQ2
Njk0Q0UwMjc1OTQ0OEMwMEUzMTUwRSAvKiBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5pZGwgKi8s
CiAJCQkJNDZFQzQ0NDgyN0FCMzM3RjAwRkZDRDk2IC8qIFNoYXJlZFdvcmtlcklkZW50aWZpZXIu
aCAqLywKLQkJCQk0NjdBNjhEMzI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdl
ci5jcHAgKi8sCi0JCQkJNDY3QTY4RDIyNzVFQTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1h
bmFnZXIuaCAqLywKKwkJCQk0Njk4NUYyMjI3QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVkV29ya2Vy
S2V5LmggKi8sCiAJCQkJNDY2OEEwQjMyN0FCNjAwQjAwQzcyMEJDIC8qIFNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24uY3BwICovLAogCQkJCTQ2NjhBMEIxMjdBQjYwMEIwMEM3MjBCQyAvKiBT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggKi8sCisJCQkJNDY5NDNEQzcyNzYzRjgwRTAw
NEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAqLywKIAkJCQk0NjY4QTBC
NDI3QUI2MDBDMDBDNzIwQkMgLyogU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwICovLAogCQkJCTQ2
NjhBMEI1MjdBQjYwMEMwMEM3MjBCQyAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5oICovLAogCQkJ
CTQ2N0E2OEQxMjc1RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3Bw
ICovLApAQCAtMzcyMDQsOSArMzcyMTEsMTEgQEAKIAkJCQk4MzRERkFEMDFGN0RBRTVEMDBDMjcy
NUIgLyogU2hhcmVkU3RyaW5nSGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFQTMwOTlF
Qjc4QzAwNTZFNTgxIC8qIFNoYXJlZFRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURDMDRG
RTI3QTgzQzkzMDA4Q0Y5NjggLyogU2hhcmVkVmlkZW9GcmFtZUluZm8uaCBpbiBIZWFkZXJzICov
LAorCQkJCTQ2Q0Y1MDRBMjdBQjFFQTQwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZFQzQ0NEEyN0FCMzM4OTAwRkZDRDk2IC8qIFNo
YXJlZFdvcmtlcklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ2N0E2OERBMjc1RUE5
OUMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0
Njk4NUYyMzI3QTRBNkFEMDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0NjY4QTBCNjI3QUI2MDFCMDBDNzIwQkMgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY5NDNEQzkyNzYzRjgxNzAwNEI2MTBFIC8q
IFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2NjhB
MEI3MjdBQjYwMjEwMEM3MjBCQyAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDY3QTY4RDgyNzVFQTk5NTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExv
YWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY3QTY4RDcyNzVFQTk5MTAwOUIzMUM1IC8qIFNo
YXJlZFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zODA2Nyw2ICszODA3Niw3IEBA
CiAJCQkJRTEyNzFBMEIwRUVFQzc3QTAwRjYxMjEzIC8qIFdvcmtlck5hdmlnYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTVDQjA1MjUxRkI1MUYzQTAwMDg5Qjk3IC8qIFdvcmtlck5ldHdvcmtB
Z2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkU0MzQ2NTEwRjU0NkE4MjAwQjBGMUJBIC8qIFdv
cmtlck9iamVjdFByb3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkE3OEIzNDI3OTlCRDcxMDAx
MTU0RkUgLyogV29ya2VyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNENkFBRTYyNTI0
RUUxQzAwNDI4QjRCIC8qIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4MzlBMDk1RDI1MjRGMzdGMDBFRUYzMjggLyogV29ya2VyT3JXb3JrbGV0U2NyaXB0
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNGNkFFQkYyNTI3QkIwQzAwMzRCQ0Qz
IC8qIFdvcmtlck9yV29ya2xldFRocmVhZC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAppbmRleCBmMjY0ZmFkYmJhMWIuLjgzYTUwZTI0MjFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBA
IC0zODkyLDQgKzM4OTIsMjYgQEAgTW9kZWxQbGF5ZXJQcm92aWRlciYgUGFnZTo6bW9kZWxQbGF5
ZXJQcm92aWRlcigpCiAgICAgcmV0dXJuIG1fbW9kZWxQbGF5ZXJQcm92aWRlci5nZXQoKTsKIH0K
IAordm9pZCBQYWdlOjpzZXR1cEZvclJlbW90ZVdvcmtlcihjb25zdCBVUkwmIHNjcmlwdFVSTCwg
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BPcmlnaW4sIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXJQb2xpY3kpCit7CisgICAgbWFpbkZyYW1lKCkubG9hZGVyKCkuaW5pdEZvclN5bnRoZXNpemVk
RG9jdW1lbnQoeyB9KTsKKyAgICBhdXRvIGRvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZU5vblJl
bmRlcmVkUGxhY2Vob2xkZXIobWFpbkZyYW1lKCksIHNjcmlwdFVSTCk7CisgICAgZG9jdW1lbnQt
PmNyZWF0ZURPTVdpbmRvdygpOworCisgICAgZG9jdW1lbnQtPnN0b3JhZ2VCbG9ja2luZ1N0YXRl
RGlkQ2hhbmdlKCk7CisKKyAgICBhdXRvIG9yaWdpbiA9IHRvcE9yaWdpbi5zZWN1cml0eU9yaWdp
bigpOworICAgIG9yaWdpbi0+c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KHNldHRpbmdzKCkuc3Rv
cmFnZUJsb2NraW5nUG9saWN5KCkpOworCisgICAgYXV0byBvcmlnaW5Bc1VSTCA9IG9yaWdpbi0+
dG9VUkwoKTsKKyAgICBkb2N1bWVudC0+c2V0U2l0ZUZvckNvb2tpZXMob3JpZ2luQXNVUkwpOwor
ICAgIGRvY3VtZW50LT5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhvcmlnaW5Bc1VSTCk7CisgICAg
ZG9jdW1lbnQtPnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKG9yaWdpbi0+ZG9tYWluRm9yQ2Fj
aGVQYXJ0aXRpb24oKSk7CisKKyAgICBpZiAoYXV0byBwb2xpY3kgPSBwYXJzZVJlZmVycmVyUG9s
aWN5KHJlZmVycmVyUG9saWN5LCBSZWZlcnJlclBvbGljeVNvdXJjZTo6SFRUUEhlYWRlcikpCisg
ICAgICAgIGRvY3VtZW50LT5zZXRSZWZlcnJlclBvbGljeSgqcG9saWN5KTsKKworICAgIG1haW5G
cmFtZSgpLnNldERvY3VtZW50KFdURk1vdmUoZG9jdW1lbnQpKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCA5OTJkMjQzMmFmMDMuLjhmZDUxZWI2N2QxZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmgKQEAgLTI1Niw2ICsyNTYsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIHZvaWQgdXBkYXRlU3R5bGVGb3JBbGxQYWdlc0FmdGVyR2xvYmFsQ2hhbmdl
SW5FbnZpcm9ubWVudCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGNsZWFyUHJl
dmlvdXNJdGVtRnJvbUFsbFBhZ2VzKEhpc3RvcnlJdGVtKik7CiAKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldHVwRm9yUmVtb3RlV29ya2VyKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGlj
eSk7CisKICAgICB2b2lkIHVwZGF0ZVN0eWxlQWZ0ZXJDaGFuZ2VJbkVudmlyb25tZW50KCk7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDVmZWY0MmVlMDZlYy4uZmE3ZDIzMDJlYzM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCkBAIC0xMjcsNiArMTI3LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIE0oV2ViR0wpIFwKICAgICBNKFdlYlJUQykgXAogICAgIE0oV2Vi
UlRDU3RhdHMpIFwKKyAgICBNKFdvcmtlcikgXAogICAgIE0oWFIpIFwKICAgICBNKFdoZWVsRXZl
bnRUZXN0TW9uaXRvcikgXAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcApp
bmRleCBmMjU5YWU5OTM0MmUuLjRjZTc0ZTBjYmE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkuY3BwCkBAIC01MSwyOSArNTEsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzZXR1cFBhZ2VGb3JTZXJ2aWNlV29y
a2VyKFBhZ2UmIHBhZ2UsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKLXsK
LSAgICBhdXRvJiBtYWluRnJhbWUgPSBwYWdlLm1haW5GcmFtZSgpOwotICAgIG1haW5GcmFtZS5s
b2FkZXIoKS5pbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudCh7IH0pOwotICAgIGF1dG8gZG9jdW1l
bnQgPSBEb2N1bWVudDo6Y3JlYXRlTm9uUmVuZGVyZWRQbGFjZWhvbGRlcihtYWluRnJhbWUsIGRh
dGEuc2NyaXB0VVJMKTsKLSAgICBkb2N1bWVudC0+Y3JlYXRlRE9NV2luZG93KCk7Ci0KLSAgICBk
b2N1bWVudC0+c3RvcmFnZUJsb2NraW5nU3RhdGVEaWRDaGFuZ2UoKTsKLQotICAgIGF1dG8gb3Jp
Z2luID0gZGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCk7
Ci0gICAgb3JpZ2luLT5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3kocGFnZS5zZXR0aW5ncygpLnN0
b3JhZ2VCbG9ja2luZ1BvbGljeSgpKTsKLQotICAgIGF1dG8gb3JpZ2luVVJMID0gb3JpZ2luLT50
b1VSTCgpOwotICAgIGRvY3VtZW50LT5zZXRTaXRlRm9yQ29va2llcyhvcmlnaW5VUkwpOwotICAg
IGRvY3VtZW50LT5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhvcmlnaW5VUkwpOwotICAgIGRvY3Vt
ZW50LT5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihvcmlnaW4tPmRvbWFpbkZvckNhY2hlUGFy
dGl0aW9uKCkpOwotCi0gICAgaWYgKGF1dG8gcG9saWN5ID0gcGFyc2VSZWZlcnJlclBvbGljeShk
YXRhLnJlZmVycmVyUG9saWN5LCBSZWZlcnJlclBvbGljeVNvdXJjZTo6SFRUUEhlYWRlcikpCi0g
ICAgICAgIGRvY3VtZW50LT5zZXRSZWZlcnJlclBvbGljeSgqcG9saWN5KTsKLQotICAgIG1haW5G
cmFtZS5zZXREb2N1bWVudChXVEZNb3ZlKGRvY3VtZW50KSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUg
SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGlkYkNvbm5lY3Rpb25Qcm94eShEb2N1bWVu
dCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGRvY3VtZW50LmlkYkNvbm5lY3Rpb25Qcm94eSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaAppbmRleCBhYmNhNDg2MmJkNjUuLjli
ODM2YjczZjgwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKQEAgLTU0LDgg
KzU0LDYgQEAgZW51bSBjbGFzcyBXb3JrZXJUaHJlYWRNb2RlIDogYm9vbDsKIAogY2xhc3MgU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5IGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eT4sIHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94eSwgcHVi
bGljIFdvcmtlckRlYnVnZ2VyUHJveHkgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyB2b2lkIHNldHVwUGFnZUZvclNlcnZpY2VXb3JrZXIoUGFnZSYsIGNvbnN0IFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSYpOwotCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3Rh
dGljIFJlZjxTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCmluZGV4IGI0ODc0N2EyYzA5OS4uNDZkYzQ1
NGRmZGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
ci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsMTUgKzI2LDE3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hh
cmVkV29ya2VyLmgiCiAKKyNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIKICNpbmNsdWRlICJDb250
ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUNoYW5u
ZWwuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgIlJlc291cmNlRXJyb3Iu
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlck1h
bmFnZXIuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgiCiAjaW5j
bHVkZSAiU2hhcmVkV29ya2VyUHJvdmlkZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlck9wdGlvbnMuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5s
aW5lcy5oPgpAQCAtNDMsMTIgKzQ1LDI3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01B
S0VfSVNPX0FMTE9DQVRFRF9JTVBMKFNoYXJlZFdvcmtlcik7CiAKKyNkZWZpbmUgU0hBUkVEX1dP
UktFUl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAg
LSBbaWRlbnRpZmllcj0le3B1YmxpY31zXSBTaGFyZWRXb3JrZXI6OiIgZm10LCB0aGlzLCBtX2lk
ZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAjI19fVkFfQVJHU19fKQorI2RlZmlu
ZSBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HX0VSUk9SKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19F
UlJPUihTaGFyZWRXb3JrZXIsICIlcCAtIFtpZGVudGlmaWVyPSV7cHVibGljfXNdIFNoYXJlZFdv
cmtlcjo6IiBmbXQsIHRoaXMsIG1faWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCks
ICMjX19WQV9BUkdTX18pCisKK3N0YXRpYyBIYXNoTWFwPFNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIsIFNoYXJlZFdvcmtlcio+JiBhbGxTaGFyZWRXb3JrZXJzKCkKK3sKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFNoYXJlZFdvcmtlcio+PiBhbGxTaGFyZWRXb3JrZXJz
OworICAgIHJldHVybiBhbGxTaGFyZWRXb3JrZXJzOworfQorCitTaGFyZWRXb3JrZXIqIFNoYXJl
ZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBpZGVu
dGlmaWVyKQoreworICAgIHJldHVybiBhbGxTaGFyZWRXb3JrZXJzKCkuZ2V0KGlkZW50aWZpZXIp
OworfQorCiBzdGF0aWMgaW5saW5lIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24qIG1haW5U
aHJlYWRDb25uZWN0aW9uKCkKIHsKICAgICByZXR1cm4gU2hhcmVkV29ya2VyUHJvdmlkZXI6OnNp
bmdsZXRvbigpLnNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVm
PFNoYXJlZFdvcmtlcj4+IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwg
SlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzLCBTdHJpbmcmJiBzY3JpcHRVUkxTdHJpbmcs
IHN0ZDo6b3B0aW9uYWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYgbWF5
YmVPcHRpb25zKQorRXhjZXB0aW9uT3I8UmVmPFNoYXJlZFdvcmtlcj4+IFNoYXJlZFdvcmtlcjo6
Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nJiYgc2NyaXB0VVJMU3RyaW5nLCBzdGQ6
Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxTdHJpbmcsIFdvcmtlck9wdGlvbnM+PiYmIG1heWJlT3B0
aW9ucykKIHsKICAgICBpZiAoIW1haW5UaHJlYWRDb25uZWN0aW9uKCkpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIlNoYXJlZCB3b3JrZXJzIGFyZSBub3Qg
c3VwcG9ydGVkIiB9OwpAQCAtNzcsMjYgKzk0LDM0IEBAIEV4Y2VwdGlvbk9yPFJlZjxTaGFyZWRX
b3JrZXI+PiBTaGFyZWRXb3JrZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIEpTQzo6UnVu
CiAgICAgYXV0byBjaGFubmVsID0gTWVzc2FnZUNoYW5uZWw6OmNyZWF0ZShkb2N1bWVudCk7CiAg
ICAgYXV0byB0cmFuc2ZlcnJlZFBvcnQgPSBjaGFubmVsLT5wb3J0MigpLmRpc2VudGFuZ2xlKCk7
CiAKLSAgICBhdXRvIHNoYXJlZFdvcmtlciA9IGFkb3B0UmVmKCpuZXcgU2hhcmVkV29ya2VyKGRv
Y3VtZW50LCBjaGFubmVsLT5wb3J0MSgpLCBydW50aW1lRmxhZ3MpKTsKKyAgICBhdXRvIHNoYXJl
ZFdvcmtlciA9IGFkb3B0UmVmKCpuZXcgU2hhcmVkV29ya2VyKGRvY3VtZW50LCB1cmwsIGNoYW5u
ZWwtPnBvcnQxKCkpKTsKICAgICBzaGFyZWRXb3JrZXItPnN1c3BlbmRJZk5lZWRlZCgpOwogCi0g
ICAgbWFpblRocmVhZENvbm5lY3Rpb24oKS0+cmVxdWVzdFNoYXJlZFdvcmtlcih1cmwsIHNoYXJl
ZFdvcmtlci5nZXQoKSwgV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBXVEZNb3ZlKG9wdGlvbnMp
KTsKKyAgICBDbGllbnRPcmlnaW4gY2xpZW50T3JpZ2luIHsgZG9jdW1lbnQudG9wRG9jdW1lbnQo
KS5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSwgZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5kYXRh
KCkgfTsKKyAgICBtYWluVGhyZWFkQ29ubmVjdGlvbigpLT5yZXF1ZXN0U2hhcmVkV29ya2VyKGNs
aWVudE9yaWdpbiwgc2hhcmVkV29ya2VyLT5pZGVudGlmaWVyKCksIHVybCwgV1RGTW92ZSh0cmFu
c2ZlcnJlZFBvcnQpLCBvcHRpb25zKTsKICAgICByZXR1cm4gc2hhcmVkV29ya2VyOwogfQogCi1T
aGFyZWRXb3JrZXI6OlNoYXJlZFdvcmtlcihEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxNZXNzYWdl
UG9ydD4mJiBwb3J0LCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MpCitTaGFyZWRXb3Jr
ZXI6OlNoYXJlZFdvcmtlcihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBSZWY8
TWVzc2FnZVBvcnQ+JiYgcG9ydCkKICAgICA6IEFjdGl2ZURPTU9iamVjdCgmZG9jdW1lbnQpCisg
ICAgLCBtX2lkZW50aWZpZXIoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcjo6Z2VuZXJhdGUo
KSkKICAgICAsIG1fcG9ydChXVEZNb3ZlKHBvcnQpKQogICAgICwgbV9pZGVudGlmaWVyRm9ySW5z
cGVjdG9yKCJTaGFyZWRXb3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5Ojpj
cmVhdGVJZGVudGlmaWVyKCkpCi0gICAgLCBtX3J1bnRpbWVGbGFncyhydW50aW1lRmxhZ3MpCi0g
ICAgLCBtX2NyZWF0aW9uVGltZShNb25vdG9uaWNUaW1lOjpub3coKSkKLSAgICAsIG1fcHJveHko
U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZSgqdGhpcykpCiB7CisgICAgU0hBUkVEX1dP
UktFUl9SRUxFQVNFX0xPRygiU2hhcmVkV29ya2VyOiIpOworICAgIGFsbFNoYXJlZFdvcmtlcnMo
KS5hZGQobV9pZGVudGlmaWVyLCB0aGlzKTsKKworICAgIC8vIElmIHRoZSBzaGFyZWQgd29ya2Vy
IFVSTCBpcyBhIGJsb2IgVVJMLCBtYWtlIHN1cmUgdG8ga2VlcCBpdCBhbGl2ZSB1bnRpbCB0aGUg
d29ya2VyIGhhcyBmaW5pc2hlZCBsb2FkaW5nLgorICAgIGlmICh1cmwucHJvdG9jb2xJc0Jsb2Io
KSkKKyAgICAgICAgbV9ibG9iVVJMRXh0ZW5zaW9uID0gdXJsOwogfQogCiBTaGFyZWRXb3JrZXI6
On5TaGFyZWRXb3JrZXIoKQogewotICAgIG1fcHJveHkud29ya2VyT2JqZWN0RGVzdHJveWVkKCk7
CisgICAgQVNTRVJUKGFsbFNoYXJlZFdvcmtlcnMoKS5nZXQobV9pZGVudGlmaWVyKSA9PSB0aGlz
KTsKKyAgICBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HKCJ+U2hhcmVkV29ya2VyOiIpOworICAg
IGFsbFNoYXJlZFdvcmtlcnMoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKKyAgICBBU1NFUlQoIW1f
aXNBY3RpdmUpOwogfQogCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBTaGFyZWRXb3JrZXI6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdApAQCAtMTE0LDE5ICsxMzksMjkgQEAgRXZlbnRU
YXJnZXRJbnRlcmZhY2UgU2hhcmVkV29ya2VyOjpldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0
CiAgICAgcmV0dXJuIFNoYXJlZFdvcmtlckV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsKIH0KIAot
dm9pZCBTaGFyZWRXb3JrZXI6OnN0b3AoKQordm9pZCBTaGFyZWRXb3JrZXI6OmRpZEZpbmlzaExv
YWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgdGVybWluYXRlKCk7Cisg
ICAgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRygiZmluaXNoTG9hZGluZzogc3VjY2Vzcz0lZCIs
IGVycm9yLmlzTnVsbCgpKTsKKyAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CisgICAgICAgIHF1
ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9u
LCBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxl
OjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7CisgICAgICAgIG1faXNBY3RpdmUgPSBm
YWxzZTsKKyAgICB9CisgICAgbV9ibG9iVVJMRXh0ZW5zaW9uLmNsZWFyKCk7CiB9CiAKIGJvb2wg
U2hhcmVkV29ya2VyOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9wcm94eS5oYXNQZW5kaW5nQWN0aXZpdHkoKSB8fCBtX2lzTG9hZGluZzsKKyAgICBy
ZXR1cm4gbV9pc0FjdGl2ZTsKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXI6OnRlcm1pbmF0ZSgpCit2
b2lkIFNoYXJlZFdvcmtlcjo6c3RvcCgpCiB7Ci0gICAgbV9wcm94eS50ZXJtaW5hdGVXb3JrZXJH
bG9iYWxTY29wZSgpOworICAgIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coInN0b3A6Iik7Cisg
ICAgbV9pc0FjdGl2ZSA9IGZhbHNlOworICAgIG1haW5UaHJlYWRDb25uZWN0aW9uKCktPnNoYXJl
ZFdvcmtlck9iamVjdElzR29pbmdBd2F5KG1faWRlbnRpZmllcik7CiB9CiAKKyN1bmRlZiBTSEFS
RURfV09SS0VSX1JFTEVBU0VfTE9HCisjdW5kZWYgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPR19F
UlJPUgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlci5oCmluZGV4IGU1NWIxY2Y1NTEzZC4uYmU1Nzc4MzVhMDQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNywzOSAr
MjcsMzYgQEAKIAogI2luY2x1ZGUgIkFic3RyYWN0V29ya2VyLmgiCiAjaW5jbHVkZSAiQWN0aXZl
RE9NT2JqZWN0LmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUnVudGltZUZsYWdzLmg+Cisj
aW5jbHVkZSAiQmxvYlVSTC5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIuaCIKICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIE1lc3NhZ2VQb3J0OwotY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk7
CitjbGFzcyBSZXNvdXJjZUVycm9yOwogCiBzdHJ1Y3QgV29ya2VyT3B0aW9uczsKIAogY2xhc3Mg
U2hhcmVkV29ya2VyIGZpbmFsIDogcHVibGljIEFic3RyYWN0V29ya2VyLCBwdWJsaWMgQWN0aXZl
RE9NT2JqZWN0IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNoYXJlZFdvcmtlcik7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBjcmVhdGUo
RG9jdW1lbnQmLCBKU0M6OlJ1bnRpbWVGbGFncywgU3RyaW5nJiYgc2NyaXB0VVJMLCBzdGQ6Om9w
dGlvbmFsPHN0ZDo6dmFyaWFudDxTdHJpbmcsIFdvcmtlck9wdGlvbnM+PiYmKTsKKyAgICBzdGF0
aWMgRXhjZXB0aW9uT3I8UmVmPFNoYXJlZFdvcmtlcj4+IGNyZWF0ZShEb2N1bWVudCYsIFN0cmlu
ZyYmIHNjcmlwdFVSTCwgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBXb3JrZXJP
cHRpb25zPj4mJik7CiAgICAgflNoYXJlZFdvcmtlcigpOwogCisgICAgc3RhdGljIFNoYXJlZFdv
cmtlciogZnJvbUlkZW50aWZpZXIoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAg
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4g
bV9pZGVudGlmaWVyOyB9CiAgICAgTWVzc2FnZVBvcnQmIHBvcnQoKSBjb25zdCB7IHJldHVybiBt
X3BvcnQuZ2V0KCk7IH0KLSAgICBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MoKSB7IHJl
dHVybiBtX3J1bnRpbWVGbGFnczsgfQogCiAgICAgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyRm9y
SW5zcGVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yOyB9Ci0g
ICAgTW9ub3RvbmljVGltZSBjcmVhdGlvblRpbWUoKSBjb25zdCB7IHJldHVybiBtX2NyZWF0aW9u
VGltZTsgfQogCi0gICAgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkmIHByb3h5KCkgeyByZXR1cm4g
bV9wcm94eTsgfQotCi0gICAgdm9pZCBzZXRJc0xvYWRpbmcoYm9vbCBpc0xvYWRpbmcpIHsgbV9p
c0xvYWRpbmcgPSBpc0xvYWRpbmc7IH0KKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3Qg
UmVzb3VyY2VFcnJvciYpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQuCiAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsOwogCiBwcml2
YXRlOgotICAgIFNoYXJlZFdvcmtlcihEb2N1bWVudCYsIFJlZjxNZXNzYWdlUG9ydD4mJiwgSlND
OjpSdW50aW1lRmxhZ3MpOwotCi0gICAgdm9pZCB0ZXJtaW5hdGUoKTsKKyAgICBTaGFyZWRXb3Jr
ZXIoRG9jdW1lbnQmLCBjb25zdCBVUkwmLCBSZWY8TWVzc2FnZVBvcnQ+JiYpOwogCiAgICAgLy8g
RXZlbnRUYXJnZXQuCiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZh
Y2UoKSBjb25zdCBmaW5hbDsKQEAgLTcwLDEyICs2NywxMSBAQCBwcml2YXRlOgogICAgIGJvb2wg
dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwogCiAKKyAgICBTaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBSZWY8TWVzc2FnZVBvcnQ+
IG1fcG9ydDsKICAgICBTdHJpbmcgbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yOwotICAgIEpTQzo6
UnVudGltZUZsYWdzIG1fcnVudGltZUZsYWdzOwotICAgIE1vbm90b25pY1RpbWUgbV9jcmVhdGlv
blRpbWU7Ci0gICAgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkmIG1fcHJveHk7IC8vIFRoZSBwcm94
eSBvdXRsaXZlcyB0aGUgd29ya2VyIHRvIHBlcmZvcm0gdGhyZWFkIHNodXRkb3duLgotICAgIGJv
b2wgbV9pc0xvYWRpbmcgeyBmYWxzZSB9OworICAgIEJsb2JVUkxIYW5kbGUgbV9ibG9iVVJMRXh0
ZW5zaW9uOworICAgIGJvb2wgbV9pc0FjdGl2ZSB7IHRydWUgfTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1No
YXJlZFdvcmtlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXIuaWRsCmluZGV4IGIxNzFjOWVkZjgxYi4uNGM3NDE1NGQ4MjA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5pZGwKQEAgLTI4LDcgKzI4LDcgQEAK
ICAgICBFeHBvc2VkPVdpbmRvdwogXQogaW50ZXJmYWNlIFNoYXJlZFdvcmtlciA6IEV2ZW50VGFy
Z2V0IHsKLSAgW0NhbGxXaXRoPURvY3VtZW50JlJ1bnRpbWVGbGFnc10gY29uc3RydWN0b3IoVVNW
U3RyaW5nIHNjcmlwdFVSTCwgb3B0aW9uYWwgKERPTVN0cmluZyBvciBXb3JrZXJPcHRpb25zKSBv
cHRpb25zKTsKKyAgW0NhbGxXaXRoPURvY3VtZW50XSBjb25zdHJ1Y3RvcihVU1ZTdHJpbmcgc2Ny
aXB0VVJMLCBvcHRpb25hbCAoRE9NU3RyaW5nIG9yIFdvcmtlck9wdGlvbnMpIG9wdGlvbnMpOwog
CiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZXNzYWdlUG9ydCBwb3J0OwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlcktleS5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyS2V5LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41ZjllNmRjOTBiYTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaApAQCAtMCww
ICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDbGllbnRP
cmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3N0cnVjdCBTaGFyZWRXb3JrZXJLZXkgeworICAgIFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmln
aW47CisgICAgVVJMIHVybDsKKyAgICBTdHJpbmcgbmFtZTsKKworICAgIHVuc2lnbmVkIGhhc2go
KSBjb25zdDsKK307CisKK2lubGluZSB1bnNpZ25lZCBTaGFyZWRXb3JrZXJLZXk6Omhhc2goKSBj
b25zdAoreworICAgIEhhc2hlciBoYXNoZXI7CisgICAgYWRkKGhhc2hlciwgb3JpZ2luLmhhc2go
KSk7CisgICAgYWRkKGhhc2hlciwgdXJsKTsKKyAgICBhZGQoaGFzaGVyLCBuYW1lKTsKKyAgICBy
ZXR1cm4gaGFzaGVyLmhhc2goKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
aGFyZWRXb3JrZXJLZXkmIGEsIGNvbnN0IFNoYXJlZFdvcmtlcktleSYgYikKK3sKKyAgICByZXR1
cm4gYS5vcmlnaW4gPT0gYi5vcmlnaW4gJiYgYS51cmwgPT0gYi51cmwgJiYgYS5uYW1lID09IGIu
bmFtZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5PiB7
CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5
JiBrZXkpCisgICAgeworICAgICAgICByZXR1cm4ga2V5Lmhhc2goKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIGEsIGNvbnN0
IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgYikKKyAgICB7CisgICAgICAgIHJldHVybiBhID09
IGI7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlP
ckRlbGV0ZWQgPSBmYWxzZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2Vi
Q29yZTo6U2hhcmVkV29ya2VyS2V5PiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYkNvcmU6OlNoYXJl
ZFdvcmtlcktleT4geworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBlbXB0eVZhbHVlSXNaZXJv
ID0gZmFsc2U7CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6
OlNoYXJlZFdvcmtlcktleSYgc2xvdCkgeyBuZXcgKE5vdE51bGwsICZzbG90LnVybCkgVVJMKFdU
Rjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZh
bHVlKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgc2xvdCkgeyByZXR1cm4gc2xvdC51
cmwuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RG
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1h
bmFnZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzQxMDg3N2RiMzIuLjAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJNYW5hZ2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlck1hbmFnZXIuaCIK
LQotI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgotI2luY2x1ZGUgIkV2ZW50TmFt
ZXMuaCIKLSNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgotI2luY2x1ZGUgIk1lc3NhZ2VFdmVu
dC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgotI2luY2x1ZGUgIlNoYXJlZFdv
cmtlci5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAi
U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFk
LmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCIKLSNpbmNsdWRlICJXb3Jr
ZXJSdW5Mb29wLmgiCi0jaW5jbHVkZSAiV29ya2VyU2NyaXB0TG9hZGVyLmgiCi0jaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1TaGFyZWRXb3JrZXJNYW5hZ2VyJiBTaGFyZWRXb3JrZXJNYW5hZ2Vy
OjpzaW5nbGV0b24oKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFyZWRXb3JrZXJN
YW5hZ2VyPiBpbnN0YW5jZTsKLSAgICByZXR1cm4gaW5zdGFuY2UuZ2V0KCk7Ci19Ci0KLXZvaWQg
U2hhcmVkV29ya2VyTWFuYWdlcjo6Y29ubmVjdChjb25zdCBVUkwmIHVybCwgU2hhcmVkV29ya2Vy
JiB3b3JrZXIsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBtZXNzYWdlUG9ydCwgV29ya2VyT3B0
aW9ucyYmIG9wdGlvbnMpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAv
LyBGSVhNRTogSGFuZGxlIHdvcmtlcnMgZnJvbSBvdGhlciBwcm9jZXNzZXMsIHdoaWNoIHdpbGwg
cHJvYmFibHkgcmVxdWlyZSBtb3ZpbmcgY29ubmVjdCB0byB0aGUgRnJhbWVMb2FkZXJDbGllbnQg
b3Igc29tZXRoaW5nLgotICAgIC8vIE1heWJlIHNvbWV0aGluZyBtb3JlIGxpa2Ugd2hhdCBTZXJ2
aWNlV29ya2VycyBkb2VzLgotCi0gICAgLy8gRklYTUU6IENoZWNrIGlmIHdlIGFscmVhZHkgbWFk
ZSBhIHRocmVhZC4KLSAgICAvLyBGSVhNRTogQ2hlY2sgaWYgdGhlcmUncyBhbHJlYWR5IGEgc2hh
cmVkIHdvcmtlciBhbmQgdXNlIHRoYXQgaWYgdGhlcmUgaXMuCi0KLSAgICBhdXRvIGxvYWRlciA9
IG1ha2VVbmlxdWVSZWY8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPih1cmwsIHdvcmtlciwgV1RG
TW92ZShtZXNzYWdlUG9ydCksIFdURk1vdmUob3B0aW9ucykpOwotICAgIGF1dG8gaWRlbnRpZmll
ciA9IGxvYWRlci0+aWRlbnRpZmllcigpOwotICAgIG1fbG9hZGVycy5hZGQoaWRlbnRpZmllciwg
V1RGTW92ZShsb2FkZXIpKTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzY3JpcHRM
b2FkRmFpbGVkKFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYgbG9hZGVyKQotewotICAgIEFjdGl2
ZURPTU9iamVjdDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KGxvYWRlci53b3JrZXIoKSwgVGFz
a1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJv
ckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7
Ci0gICAgbV9sb2FkZXJzLnJlbW92ZShsb2FkZXIuaWRlbnRpZmllcigpKTsKLX0KLQotdm9pZCBT
aGFyZWRXb3JrZXJNYW5hZ2VyOjpzY3JpcHRMb2FkZWRTdWNjZXNzZnVsbHkoU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyJiBsb2FkZXIsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc2NyaXB0QnVmZmVyLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBTaGFyZWRXb3Jr
ZXImIHNoYXJlZFdvcmtlciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHRyYW5zZmVycmVkUG9y
dCkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8mIHdvcmtlciA9
IGxvYWRlci53b3JrZXIoKTsKLSAgICBhdXRvJiBvcHRpb25zID0gbG9hZGVyLm9wdGlvbnMoKTsK
LQotICAgIGF1dG8mIHByb3h5ID0gc2hhcmVkV29ya2VyLnByb3h5KCk7Ci0KLSAgICBwcm94eS5z
dGFydFdvcmtlckdsb2JhbFNjb3BlKAotICAgICAgICBsb2FkZXIudXJsKCksCi0gICAgICAgIG9w
dGlvbnMubmFtZSwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC51c2VyQWdlbnQobG9h
ZGVyLnVybCgpKSwKLSAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5
KCktPmlzT25MaW5lKCksCi0gICAgICAgIHNjcmlwdEJ1ZmZlciwKLSAgICAgICAgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+cmVzcG9uc2VIZWFkZXJzKCks
Ci0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29u
dGVudFNlY3VyaXR5UG9saWN5KCksCi0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3Jv
c3NPcmlnaW5FbWJlZGRlclBvbGljeSgpLAotICAgICAgICB3b3JrZXIuY3JlYXRpb25UaW1lKCks
Ci0gICAgICAgIFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZywKLSAgICAgICAgb3B0aW9ucy50
eXBlLAotICAgICAgICBvcHRpb25zLmNyZWRlbnRpYWxzLAotICAgICAgICB3b3JrZXIucnVudGlt
ZUZsYWdzKCkKLSAgICApOwotICAgIGlmICghcHJveHkudGhyZWFkKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaXM8RG9j
dW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsKLSAgICBhdXRvIHNvdXJjZU9yaWdpbiA9
IGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5zZWN1cml0eU9yaWdp
bigpLnRvU3RyaW5nKCk7Ci0KLSAgICBwcm94eS50aHJlYWQoKS0+cnVuTG9vcCgpLnBvc3RUYXNr
KFt0cmFuc2ZlcnJlZFBvcnQgPSBXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCksIHNvdXJjZU9yaWdp
biA9IFdURk1vdmUoc291cmNlT3JpZ2luKS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQpIG11dGFibGUgewotICAgICAgICBkb3duY2FzdDxTaGFyZWRXb3JrZXJH
bG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkucG9zdENvbm5lY3RFdmVudChXVEZN
b3ZlKHRyYW5zZmVycmVkUG9ydCksIHNvdXJjZU9yaWdpbik7Ci0gICAgfSk7Ci0KLSAgICBtX2xv
YWRlcnMucmVtb3ZlKGxvYWRlci5pZGVudGlmaWVyKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCmluZGV4IGRkYTM4NGQyMjkxMi4uMWNk
ZTBiYTM1OTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcApAQCAtMjYsMTAgKzI2LDY2
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbi5oIgogCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXJy
b3JFdmVudC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRCdWZmZXIu
aCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJGZXRjaFJlc3VsdC5oIgorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKKyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVM
RUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
OjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNF
X0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoU2hhcmVkV29ya2VyLCAiJXAg
LSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1Nf
XykKKworc3RhdGljIHVpbnQ2NF90IGxvYWRlcklkZW50aWZpZXJTZWVkID0gMDsKKwogU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpID0g
ZGVmYXVsdDsKIAogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6flNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CiAKK3ZvaWQgU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbjo6ZmV0Y2hTY3JpcHRJbkNsaWVudChVUkwmJiB1cmwsIFdlYkNvcmU6OlNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV29ya2Vy
T3B0aW9ucyYmIHdvcmtlck9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29y
a2VyRmV0Y2hSZXN1bHQmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworCisgICAgYXV0byogd29ya2VyT2JqZWN0ID0gU2hhcmVkV29ya2VyOjpm
cm9tSWRlbnRpZmllcihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBDT05ORUNU
SU9OX1JFTEVBU0VfTE9HKCJmZXRjaFNjcmlwdEluQ2xpZW50OiBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyPSV7cHVibGljfXMsIHdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB3b3JrZXJPYmplY3QpOworICAgIGlmICgh
d29ya2VyT2JqZWN0KQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIod29ya2VyRmV0
Y2hFcnJvcihSZXNvdXJjZUVycm9yIHsgUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9u
IH0pKTsKKworICAgIGF1dG8gbG9hZGVySWRlbnRpZmllciA9ICsrbG9hZGVySWRlbnRpZmllclNl
ZWQ7CisgICAgYXV0byBsb2FkZXIgPSBtYWtlVW5pcXVlUmVmPFNoYXJlZFdvcmtlclNjcmlwdExv
YWRlcj4oV1RGTW92ZSh1cmwpLCAqd29ya2VyT2JqZWN0LCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMp
KTsKKyAgICBhdXRvIGxvYWRlclB0ciA9IGxvYWRlci5wdHIoKTsKKyAgICBtX2xvYWRlcnMuYWRk
KGxvYWRlcklkZW50aWZpZXIsIFdURk1vdmUobG9hZGVyKSk7CisKKyAgICBsb2FkZXJQdHItPmxv
YWQoW3RoaXMsIGxvYWRlcklkZW50aWZpZXIsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKGNvbnN0IFdvcmtlckZldGNoUmVzdWx0JiBmZXRjaFJlc3VsdCkg
bXV0YWJsZSB7CisgICAgICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coImZldGNoU2NyaXB0SW5D
bGllbnQ6IGZpbmlzaGVkIHNjcmlwdCBsb2FkLCBzdWNjZXNzPSVkIiwgZmV0Y2hSZXN1bHQuZXJy
b3IuaXNOdWxsKCkpOworICAgICAgICBhdXRvIGxvYWRlciA9IG1fbG9hZGVycy50YWtlKGxvYWRl
cklkZW50aWZpZXIpOworICAgICAgICBBU1NFUlQobG9hZGVyKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZmV0Y2hSZXN1bHQpOworICAgIH0pOworfQorCit2b2lkIFNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb246Om5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24oV2ViQ29y
ZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIGF1dG8qIHdvcmtlck9iamVjdCA9IFNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50
aWZpZXIoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgQ09OTkVDVElPTl9SRUxF
QVNFX0xPR19FUlJPUigibm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbjogc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zLCB3b3JrZXI9JXAsIHN1Y2Nlc3M9JWQi
LCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwg
d29ya2VyT2JqZWN0LCBlcnJvci5pc051bGwoKSk7CisgICAgaWYgKHdvcmtlck9iamVjdCkKKyAg
ICAgICAgd29ya2VyT2JqZWN0LT5kaWRGaW5pc2hMb2FkaW5nKGVycm9yKTsKK30KKwordm9pZCBT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qo
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgYXV0byogd29ya2VyT2JqZWN0ID0gU2hhcmVkV29ya2VyOjpmcm9tSWRlbnRp
ZmllcihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBDT05ORUNUSU9OX1JFTEVB
U0VfTE9HX0VSUk9SKCJwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Q6IHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXI9JXtwdWJsaWN9cywgd29ya2VyPSVwIiwgc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHdvcmtlck9iamVjdCk7CisgICAg
aWYgKHdvcmtlck9iamVjdCkKKyAgICAgICAgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tUb0Rp
c3BhdGNoRXZlbnQoKndvcmtlck9iamVjdCwgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBF
cnJvckV2ZW50OjpjcmVhdGUoZXJyb3JNZXNzYWdlLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgeyB9KSk7Cit9CisKKyN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HCisj
dW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUgorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKaW5kZXggNGVkNWExYzY1YjU4Li45NTZiNDczNGEx
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9T
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKQEAgLTI1LDIyICsyNSwzOCBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgIlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCIKICNp
bmNsdWRlICJUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkV29ya2VyOworY2xhc3MgTWVz
c2FnZVBvcnQ7CitjbGFzcyBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI7CisKK3N0cnVjdCBDbGll
bnRPcmlnaW47CitzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7CiBzdHJ1Y3QgV29ya2VyT3B0aW9u
czsKIAogY2xhc3MgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24+IHsKIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIH5TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCk7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdFNoYXJlZFdvcmtlcihjb25zdCBVUkwmLCBTaGFyZWRXb3JrZXIm
LCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdvcmtlck9wdGlvbnMmJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0IENsaWVudE9yaWdpbiYsIFNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFVSTCYsIFRyYW5zZmVycmVkTWVzc2FnZVBv
cnQmJiwgY29uc3QgV29ya2VyT3B0aW9ucyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2hhcmVk
V29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikgPSAw
OwogCiBwcm90ZWN0ZWQ6CisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZmV0Y2hTY3JpcHRJbkNsaWVudChVUkwmJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllciwgV29ya2VyT3B0aW9ucyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFdvcmtlckZldGNoUmVzdWx0Jik+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90
aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisKICAgICBXRUJDT1JFX0VYUE9S
VCBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCk7CisKK3ByaXZhdGU6CisgICAgSGFzaE1h
cDx1aW50NjRfdCwgVW5pcXVlUmVmPFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj4+IG1fbG9hZGVy
czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaApzaW1pbGFyaXR5
IGluZGV4IDU5JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXJNYW5hZ2VyLmgKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaAppbmRleCAyNTIxODE2ZTY1YzcuLmViY2Q0
YTdhZTg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMjkgKzI1LDEyIEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiTWVzc2FnZVBvcnRJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUHJvY2Vzc1F1YWxp
ZmllZC5oIgorI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZFdv
cmtlcjsKLWNsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjsKLWNsYXNzIFNjcmlwdEJ1ZmZl
cjsKLXN0cnVjdCBXb3JrZXJPcHRpb25zOwotdXNpbmcgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCA9
IHN0ZDo6cGFpcjxXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0SWRlbnRpZmllcj47Ci0KLXVzaW5nIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcklkZW50
aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj47Ci0KLWNs
YXNzIFNoYXJlZFdvcmtlck1hbmFnZXIgewotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBTaGFyZWRXb3JrZXJNYW5hZ2VyJiBzaW5nbGV0b24oKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNvbm5lY3QoY29uc3QgVVJMJiwgU2hhcmVkV29ya2VyJiwgVHJhbnNmZXJyZWRNZXNz
YWdlUG9ydCYmLCBXb3JrZXJPcHRpb25zJiYpOwotCi0gICAgdm9pZCBzY3JpcHRMb2FkRmFpbGVk
KFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYpOwotICAgIHZvaWQgc2NyaXB0TG9hZGVkU3VjY2Vz
c2Z1bGx5KFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQ
b3J0JiYpOwotCi1wcml2YXRlOgotICAgIEhhc2hNYXA8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVy
SWRlbnRpZmllciwgVW5pcXVlUmVmPFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj4+IG1fbG9hZGVy
czsKLX07CitlbnVtIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5n
IFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgPSBQcm9jZXNzUXVhbGlmaWVkPE9iamVjdElk
ZW50aWZpZXI8U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllclR5cGU+PjsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXggMzExZWJkNjA3OGJjLi5lYTJl
MDQ4Yzc2MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwyMyArMjksMjYgQEAKICNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAj
aW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyTWFuYWdlci5o
IgorI2luY2x1ZGUgIldvcmtlckZldGNoUmVzdWx0LmgiCiAjaW5jbHVkZSAiV29ya2VyUnVuTG9v
cC5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVy
KGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRXb3JrZXImIHdvcmtlciwgVHJhbnNmZXJyZWRNZXNzYWdl
UG9ydCYmIHBvcnQsIFdvcmtlck9wdGlvbnMmJiBvcHRpb25zKQotICAgIDogbV9pZGVudGlmaWVy
KFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcklkZW50aWZpZXI6OmdlbmVyYXRlKCkpCi0gICAgLCBt
X29wdGlvbnMoV1RGTW92ZShvcHRpb25zKSkKK1NoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hh
cmVkV29ya2VyU2NyaXB0TG9hZGVyKFVSTCYmIHVybCwgU2hhcmVkV29ya2VyJiB3b3JrZXIsIFdv
cmtlck9wdGlvbnMmJiBvcHRpb25zKQorICAgIDogbV9vcHRpb25zKFdURk1vdmUob3B0aW9ucykp
CiAgICAgLCBtX3dvcmtlcih3b3JrZXIpCi0gICAgLCBtX3BvcnQoV1RGTW92ZShwb3J0KSkKICAg
ICAsIG1fbG9hZGVyKFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlKCkpCi0gICAgLCBtX3BlbmRp
bmdBY3Rpdml0eSh3b3JrZXIubWFrZVBlbmRpbmdBY3Rpdml0eSh3b3JrZXIpKQotICAgICwgbV91
cmwodXJsKQorICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQogewotICAgIG1fd29ya2VyLT5zZXRJ
c0xvYWRpbmcodHJ1ZSk7Ci0gICAgbV9sb2FkZXItPmxvYWRBc3luY2hyb25vdXNseSgqd29ya2Vy
LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgUmVzb3VyY2VSZXF1ZXN0KHVybCksIHdvcmtlci53
b3JrZXJGZXRjaE9wdGlvbnMob3B0aW9ucywgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2hh
cmVkd29ya2VyKSwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQ6OkVuZm9yY2VXb3Jr
ZXJTcmNEaXJlY3RpdmUsIFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsLCAqdGhpcywgV29ya2VyUnVu
TG9vcDo6ZGVmYXVsdE1vZGUoKSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVy
Ojpsb2FkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoIW1fY29tcGxldGlvbkhhbmRsZXIp
OworICAgIG1fY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsK
KworICAgIG1fbG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoKm1fd29ya2VyLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIFJlc291cmNlUmVxdWVzdChtX3VybCksIG1fd29ya2VyLT53b3JrZXJG
ZXRjaE9wdGlvbnMobV9vcHRpb25zLCBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpTaGFyZWR3
b3JrZXIpLCBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6RW5mb3JjZVdvcmtlclNy
Y0RpcmVjdGl2ZSwgU2VydmljZVdvcmtlcnNNb2RlOjpBbGwsICp0aGlzLCBXb3JrZXJSdW5Mb29w
OjpkZWZhdWx0TW9kZSgpKTsKIH0KIAogdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpCkBAIC01NSwxNiArNTgsMTIgQEAgdm9pZCBTaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgaWRlbnQKIAogdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6Om5vdGlmeUZpbmlzaGVk
KCkKIHsKLSAgICBtX3dvcmtlci0+c2V0SXNMb2FkaW5nKGZhbHNlKTsKKyAgICBpZiAobV9sb2Fk
ZXItPmZhaWxlZCgpKQorICAgICAgICByZXR1cm4gbV9jb21wbGV0aW9uSGFuZGxlcih3b3JrZXJG
ZXRjaEVycm9yKG1fbG9hZGVyLT5lcnJvcigpKSk7CiAKLSAgICBhdXRvKiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0ID0gbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAo
bV9sb2FkZXItPmZhaWxlZCgpIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7Ci0gICAgICAg
IG1fd29ya2VyLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9y
RXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsK
LSAgICAgICAgU2hhcmVkV29ya2VyTWFuYWdlcjo6c2luZ2xldG9uKCkuc2NyaXB0TG9hZEZhaWxl
ZCgqdGhpcyk7IC8vIGRlbGV0ZXMgdGhpcy4KLSAgICB9IGVsc2UgeworICAgIGlmIChhdXRvKiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSkKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZCgqc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwgbV9sb2FkZXItPmlkZW50aWZpZXIoKSwgbV9sb2FkZXItPnNj
cmlwdCgpLnRvU3RyaW5nKCkpOwotICAgICAgICBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0
b24oKS5zY3JpcHRMb2FkZWRTdWNjZXNzZnVsbHkoKnRoaXMsIG1fbG9hZGVyLT5zY3JpcHQoKSwg
Km1fd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fd29ya2VyLmdldCgpLCBzdGQ6
OmV4Y2hhbmdlKG1fcG9ydCwgeyB9KSk7IC8vIGRlbGV0ZXMgdGhpcy4KLSAgICB9CisgICAgbV9j
b21wbGV0aW9uSGFuZGxlcih7IG1fbG9hZGVyLT5zY3JpcHQoKSwgbV9sb2FkZXItPmNlcnRpZmlj
YXRlSW5mbygpLCBtX2xvYWRlci0+Y29udGVudFNlY3VyaXR5UG9saWN5KCksIG1fbG9hZGVyLT5j
cm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KCksIG1fbG9hZGVyLT5yZWZlcnJlclBvbGljeSgpLCB7
IH0gfSk7IC8vIGRlbGV0ZXMgdGhpcy4KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXIuaAppbmRleCBhYjMwOWExY2VmYjYuLmViMGI3MTQ1YmZhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFjdGl2ZURP
TU9iamVjdC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0SWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IlJlc291cmNlTG9hZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2Uu
aCIKQEAgLTM4LDMyICszNywyOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNoYXJl
ZFdvcmtlcjsKIGNsYXNzIFdvcmtlclNjcmlwdExvYWRlcjsKLQotY2xhc3MgU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyOwotCi11c2luZyBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0ID0gc3RkOjpwYWly
PFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVu
dGlmaWVyPjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKIAogY2xhc3MgU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyIDogcHJpdmF0ZSBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNoYXJlZFdvcmtlclNjcmlwdExv
YWRlcihjb25zdCBVUkwmLCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYs
IFdvcmtlck9wdGlvbnMmJik7CisgICAgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyKFVSTCYmLCBT
aGFyZWRXb3JrZXImLCBXb3JrZXJPcHRpb25zJiYpOworCisgICAgdm9pZCBsb2FkKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKT4mJik7CiAKLSAgICBTaGFy
ZWRXb3JrZXJTY3JpcHRMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2lkZW50aWZpZXI7IH0KICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1f
dXJsOyB9CiAgICAgU2hhcmVkV29ya2VyJiB3b3JrZXIoKSB7IHJldHVybiBtX3dvcmtlci5nZXQo
KTsgfQotICAgIGNvbnN0IFdvcmtlck9wdGlvbnMmIG9wdGlvbnMoKSB7IHJldHVybiBtX29wdGlv
bnM7IH0KKyAgICBjb25zdCBXb3JrZXJPcHRpb25zJiBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4g
bV9vcHRpb25zOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAg
ICAgdm9pZCBub3RpZnlGaW5pc2hlZCgpIGZpbmFsOwogCi0gICAgY29uc3QgU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgY29uc3QgV29ya2VyT3B0
aW9ucyBtX29wdGlvbnM7CiAgICAgY29uc3QgUmVmPFNoYXJlZFdvcmtlcj4gbV93b3JrZXI7Ci0g
ICAgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBtX3BvcnQ7CiAgICAgY29uc3QgUmVmPFdvcmtlclNj
cmlwdExvYWRlcj4gbV9sb2FkZXI7Ci0gICAgY29uc3QgUmVmPEFjdGl2ZURPTU9iamVjdDo6UGVu
ZGluZ0FjdGl2aXR5PFNoYXJlZFdvcmtlcj4+IG1fcGVuZGluZ0FjdGl2aXR5OwogICAgIGNvbnN0
IFVSTCBtX3VybDsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdvcmtlckZldGNo
UmVzdWx0Jik+IG1fY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1No
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDdhOTBkOTgwNTEyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlci5jcHAKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCIKKworI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIgor
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyJiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6
c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXI+IHNoYXJlZE1hbmFnZXI7CisgICAgcmV0dXJuIHNoYXJlZE1hbmFnZXI7Cit9
CisKK1NoYXJlZFdvcmtlclRocmVhZFByb3h5KiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6
c2hhcmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmll
cikgY29uc3QKK3sKKyAgICByZXR1cm4gbV93b3JrZXJNYXAuZ2V0KHNoYXJlZFdvcmtlcklkZW50
aWZpZXIpOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzdG9wU2hhcmVk
V29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikKK3sK
KyAgICBhdXRvIHdvcmtlciA9IG1fd29ya2VyTWFwLnRha2Uoc2hhcmVkV29ya2VySWRlbnRpZmll
cik7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXI6OnN0b3BTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0
ICIsIHdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSwgd29ya2Vy
LmdldCgpKTsKKyAgICBpZiAoIXdvcmtlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgd29ya2Vy
LT5zZXRBc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKCk7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIGJlIGFibGUgdG8gZGVhbCB3aXRoIHRoZSB0aHJlYWQgYmVpbmcgdW5yZXNwb25zaXZlIGhl
cmUuCisKKyAgICBhdXRvJiB0aHJlYWQgPSB3b3JrZXItPnRocmVhZCgpOworICAgIHRocmVhZC5z
dG9wKFt3b3JrZXIgPSBXVEZNb3ZlKHdvcmtlcildKCkgbXV0YWJsZSB7CisgICAgICAgIC8vIFNw
aW4gdGhlIHJ1bmxvb3AgYmVmb3JlIHJlbGVhc2luZyB0aGUgc2hhcmVkIHdvcmtlciB0aHJlYWQg
cHJveHksIGFzIHRoZXJlIHdvdWxkIG90aGVyd2lzZSBiZQorICAgICAgICAvLyBhIHJhY2UgdG93
YXJkcyBpdHMgZGVzdHJ1Y3Rpb24uCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dvcmtlciA9
IFdURk1vdmUod29ya2VyKV0geyB9KTsKKyAgICB9KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlcjo6c3RvcEFsbFNoYXJlZFdvcmtlcnMoKQoreworICAgIHdoaWxlICghbV93
b3JrZXJNYXAuaXNFbXB0eSgpKQorICAgICAgICBzdG9wU2hhcmVkV29ya2VyKG1fd29ya2VyTWFw
LmJlZ2luKCktPmtleSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNl
dENvbm5lY3Rpb24oc3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKK3sK
KyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbiB8fCBtX2Nvbm5lY3Rpb24tPmlzQ2xvc2VkKCkpOwor
ICAgIG1fY29ubmVjdGlvbiA9IFdURk1vdmUoY29ubmVjdGlvbik7Cit9CisKK2F1dG8gU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXI6OmNvbm5lY3Rpb24oKSBjb25zdCAtPiBDb25uZWN0aW9uKgor
eworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXI6OnJlZ2lzdGVyU2hhcmVkV29ya2VyVGhyZWFkKFJlZjxTaGFyZWRXb3Jr
ZXJUaHJlYWRQcm94eT4mJiBwcm94eSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
OjpyZWdpc3RlclNoYXJlZFdvcmtlclRocmVhZDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQ
Ukl1NjQsIHByb3h5LT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBhdXRvIHJlc3Vs
dCA9IG1fd29ya2VyTWFwLmFkZChwcm94eS0+aWRlbnRpZmllcigpLCBwcm94eS5jb3B5UmVmKCkp
OworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICBw
cm94eS0+dGhyZWFkKCkuc3RhcnQoW10oY29uc3QgU3RyaW5nJiAvKmV4Y2VwdGlvbk1lc3NhZ2Uq
LykgeyB9KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlv
bjo6cG9zdENvbm5lY3RFdmVudChTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklk
ZW50aWZpZXIsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiB0cmFuc2ZlcnJlZFBvcnQsIFN0cmlu
ZyYmIHNvdXJjZU9yaWdpbikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1
dG8qIHByb3h5ID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNoYXJl
ZFdvcmtlcihzaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRX
b3JrZXIsICJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6cG9zdENvbm5l
Y3RFdmVudDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgcHJveHk9JXAiLCBz
aGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCksIHByb3h5KTsKKyAgICBpZiAoIXByb3h5
KQorICAgICAgICByZXR1cm47CisKKyAgICBwcm94eS0+dGhyZWFkKCkucnVuTG9vcCgpLnBvc3RU
YXNrKFt0cmFuc2ZlcnJlZFBvcnQgPSBXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCksIHNvdXJjZU9y
aWdpbiA9IFdURk1vdmUoc291cmNlT3JpZ2luKS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKKyAgICAgICAgZG93bmNhc3Q8U2hhcmVkV29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQpLnBvc3RDb25uZWN0RXZlbnQoV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQp
LCBXVEZNb3ZlKHNvdXJjZU9yaWdpbikpOworICAgIH0pOworfQorCit2b2lkIFNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uOjp0ZXJtaW5hdGVTaGFyZWRXb3JrZXIoU2hhcmVk
V29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyKQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb246OnRlcm1pbmF0ZVNoYXJlZFdvcmtlcjogc2hh
cmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9V
SW50NjQoKSk7CisgICAgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnN0
b3BTaGFyZWRXb3JrZXIoc2hhcmVkV29ya2VySWRlbnRpZmllcik7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2Nv
bnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjMzODI1Mjg5MzczZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXIuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiVHJh
bnNmZXJyZWRNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk7CisKK2NsYXNz
IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXImIHNpbmdsZXRvbigpOworCisgICAg
U2hhcmVkV29ya2VyVGhyZWFkUHJveHkqIHNoYXJlZFdvcmtlcihTaGFyZWRXb3JrZXJJZGVudGlm
aWVyKSBjb25zdDsKKyAgICB2b2lkIHN0b3BTaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRp
Zmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wQWxsU2hhcmVkV29ya2VycygpOwor
CisgICAgY2xhc3MgQ29ubmVjdGlvbiB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+Q29ubmVjdGlvbigpIHsgfQorICAgICAg
ICB2aXJ0dWFsIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9i
amVjdChTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwg
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
KSA9IDA7CisgICAgICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xvc2Vk
OyB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZvaWQgc2V0QXNDbG9zZWQoKSB7IG1faXND
bG9zZWQgPSB0cnVlOyB9CisKKyAgICAgICAgLy8gSVBDIG1lc3NhZ2UgaGFuZGxlcnMuCisgICAg
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdENvbm5lY3RFdmVudChTaGFyZWRXb3JrZXJJZGVu
dGlmaWVyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFN0cmluZyYmIHNvdXJjZU9yaWdpbik7
CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdGVybWluYXRlU2hhcmVkV29ya2VyKFNoYXJl
ZFdvcmtlcklkZW50aWZpZXIpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCBtX2lzQ2xv
c2VkIHsgZmFsc2UgfTsKKyAgICB9OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb25u
ZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBDb25uZWN0aW9uKiBjb25uZWN0aW9uKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlZ2lzdGVyU2hhcmVkV29ya2VyVGhyZWFkKFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eT4mJik7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPFNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyPjsKKworICAgIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
KCkgPSBkZWZhdWx0OworCisgICAgc3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+IG1fY29ubmVj
dGlvbjsKKyAgICBIYXNoTWFwPFNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFJlZjxTaGFyZWRXb3Jr
ZXJUaHJlYWRQcm94eT4+IG1fd29ya2VyTWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9j
b250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcAppbmRleCA5YmQ5NzgzZDdhN2UuLjFl
ZGY3MzRmZjI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29u
dGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsOTQgKzI4
LDcyIEBACiAKICNpbmNsdWRlICJDYWNoZVN0b3JhZ2VQcm92aWRlci5oIgogI2luY2x1ZGUgIkVy
cm9yRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFdmVudE5hbWVz
LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1
ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCisjaW5jbHVkZSAiTG9hZGVyU3RyYXRlZ3kuaCIKICNp
bmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2luY2x1
ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJS
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVk
V29ya2VyLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCIKICNpbmNs
dWRlICJTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlclRo
cmVhZC5oIgorI2luY2x1ZGUgIldvcmtlckZldGNoUmVzdWx0LmgiCisjaW5jbHVkZSAiV29ya2Vy
VGhyZWFkLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllcnNGYWN0b3J5Lmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OlNoYXJl
ZFdvcmtlclRocmVhZFByb3h5KFNoYXJlZFdvcmtlciYgc2hhcmVkV29ya2VyKQotICAgIDogbV9z
aGFyZWRXb3JrZXIoc2hhcmVkV29ya2VyKQotICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
KHNoYXJlZFdvcmtlci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgLCBtX2lkZW50aWZp
ZXJGb3JJbnNwZWN0b3Ioc2hhcmVkV29ya2VyLmlkZW50aWZpZXJGb3JJbnNwZWN0b3IoKSkKK3N0
YXRpYyBIYXNoU2V0PFNoYXJlZFdvcmtlclRocmVhZFByb3h5Kj4mIGFsbFNoYXJlZFdvcmtlclRo
cmVhZFByb3hpZXMoKQogeworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFNoYXJl
ZFdvcmtlclRocmVhZFByb3h5Kj4+IHNldDsKKyAgICByZXR1cm4gc2V0OwogfQogCi12b2lkIFNo
YXJlZFdvcmtlclRocmVhZFByb3h5OjpzdGFydFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYg
c2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBi
b29sIGlzT25saW5lLCBjb25zdCBTY3JpcHRCdWZmZXImIHNjcmlwdEJ1ZmZlciwgY29uc3QgQ29u
dGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3lS
ZXNwb25zZUhlYWRlcnMsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5
UG9saWN5LCBjb25zdCBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5JiBjcm9zc09yaWdpbkVtYmVk
ZGVyUG9saWN5LCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIFJlZmVycmVyUG9saWN5IHJlZmVy
cmVyUG9saWN5LCBXb3JrZXJUeXBlIHdvcmtlclR5cGUsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxz
IGNyZWRlbnRpYWxzLCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MpCitzdGF0aWMgV29y
a2VyUGFyYW1ldGVycyBnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMoY29uc3QgVVJMJiBzY3JpcHRV
UkwsIGNvbnN0IFdvcmtlckZldGNoUmVzdWx0JiB3b3JrZXJGZXRjaFJlc3VsdCwgV29ya2VyT3B0
aW9ucyYmIHdvcmtlck9wdGlvbnMsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBEb2N1bWVudCYg
ZG9jdW1lbnQpCiB7Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgYXV0byBwYXJhbWV0ZXJzID0gV29ya2VyUGFyYW1ldGVycyB7CisgICAgcmV0dXJu
IFdvcmtlclBhcmFtZXRlcnMgewogICAgICAgICBzY3JpcHRVUkwsCi0gICAgICAgIG5hbWUsCi0g
ICAgICAgIG1faWRlbnRpZmllckZvckluc3BlY3RvciwKKyAgICAgICAgd29ya2VyT3B0aW9ucy5u
YW1lLAorICAgICAgICAic2hhcmVkd29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFj
dG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpLAogICAgICAgICB1c2VyQWdlbnQsCi0gICAgICAgIGlz
T25saW5lLAotICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsCi0g
ICAgICAgIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwKLSAgICAg
ICAgY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwKLSAgICAgICAgdGltZU9yaWdpbiwKLSAgICAg
ICAgcmVmZXJyZXJQb2xpY3ksCi0gICAgICAgIHdvcmtlclR5cGUsCi0gICAgICAgIGNyZWRlbnRp
YWxzLAotICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNldHRpbmdzVmFsdWVzKCkK
KyAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmlzT25MaW5l
KCksCisgICAgICAgIHdvcmtlckZldGNoUmVzdWx0LmNvbnRlbnRTZWN1cml0eVBvbGljeSwKKyAg
ICAgICAgZmFsc2UsCisgICAgICAgIHdvcmtlckZldGNoUmVzdWx0LmNyb3NzT3JpZ2luRW1iZWRk
ZXJQb2xpY3ksCisgICAgICAgIE1vbm90b25pY1RpbWU6Om5vdygpLAorICAgICAgICBwYXJzZVJl
ZmVycmVyUG9saWN5KHdvcmtlckZldGNoUmVzdWx0LnJlZmVycmVyUG9saWN5LCBSZWZlcnJlclBv
bGljeVNvdXJjZTo6SFRUUEhlYWRlcikudmFsdWVfb3IoUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3Ry
aW5nKSwKKyAgICAgICAgd29ya2VyT3B0aW9ucy50eXBlLAorICAgICAgICB3b3JrZXJPcHRpb25z
LmNyZWRlbnRpYWxzLAorICAgICAgICBkb2N1bWVudC5zZXR0aW5nc1ZhbHVlcygpCiAgICAgfTsK
LQotICAgIGlmICghbV93b3JrZXJUaHJlYWQpIHsKLSAgICAgICAgbV93b3JrZXJUaHJlYWQgPSBT
aGFyZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZShTaGFyZWRXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0
ZSgpLCBwYXJhbWV0ZXJzLCBzY3JpcHRCdWZmZXIsICp0aGlzLCAqdGhpcywgKnRoaXMsIFdvcmtl
clRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnRvcE9y
aWdpbigpLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlkYkNvbm5lY3Rpb25Qcm94eSgpLCBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNvY2tldFByb3ZpZGVyKCksIHJ1bnRpbWVGbGFncyk7
Ci0gICAgICAgIG1fd29ya2VyVGhyZWFkLT5zdGFydCgpOwotICAgIH0KLX0KLQotdm9pZCBTaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eTo6dGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKQotewotICAg
IGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fYXNrZWRU
b1Rlcm1pbmF0ZSA9IHRydWU7Ci0gICAgaWYgKG1fd29ya2VyVGhyZWFkKQotICAgICAgICBtX3dv
cmtlclRocmVhZC0+c3RvcChudWxscHRyKTsKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBv
cnRzJiYgbWVzc2FnZSkKK1NoYXJlZFdvcmtlclRocmVhZFByb3h5OjpTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eShVbmlxdWVSZWY8UGFnZT4mJiBwYWdlLCBTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNo
YXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IENsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBj
b25zdCBVUkwmIHNjcmlwdFVSTCwgV29ya2VyRmV0Y2hSZXN1bHQmJiB3b3JrZXJGZXRjaFJlc3Vs
dCwgV29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50
LCBDYWNoZVN0b3JhZ2VQcm92aWRlciYgY2FjaGVTdG9yYWdlUHJvdmlkZXIpCisgICAgOiBtX3Bh
Z2UoV1RGTW92ZShwYWdlKSkKKyAgICAsIG1fZG9jdW1lbnQoKm1fcGFnZS0+bWFpbkZyYW1lKCku
ZG9jdW1lbnQoKSkKKyAgICAsIG1fd29ya2VyVGhyZWFkKFNoYXJlZFdvcmtlclRocmVhZDo6Y3Jl
YXRlKHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGdlbmVyYXRlV29ya2VyUGFyYW1ldGVycyhzY3Jp
cHRVUkwsIHdvcmtlckZldGNoUmVzdWx0LCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMpLCB1c2VyQWdl
bnQsIG1fZG9jdW1lbnQpLCBXVEZNb3ZlKHdvcmtlckZldGNoUmVzdWx0LnNjcmlwdCksICp0aGlz
LCAqdGhpcywgKnRoaXMsIFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBjbGllbnRPcmln
aW4udG9wT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCksIG1fZG9jdW1lbnQtPmlkYkNvbm5lY3Rpb25Q
cm94eSgpLCBtX2RvY3VtZW50LT5zb2NrZXRQcm92aWRlcigpLCBKU0M6OlJ1bnRpbWVGbGFnczo6
Y3JlYXRlQWxsRW5hYmxlZCgpKSkKKyAgICAsIG1fY2FjaGVTdG9yYWdlUHJvdmlkZXIoY2FjaGVT
dG9yYWdlUHJvdmlkZXIpCiB7Ci0gICAgLy8gRklYTUU6IFNoYXJlZFdvcmtlciBkb2Vzbid0IGhh
dmUgcG9zdE1lc3NhZ2UsIHNvIHRoaXMgbWlnaHQgbm90IGJlIG5lY2Vzc2FyeS4KLSAgICBwb3N0
VGFza1RvV29ya2VyR2xvYmFsU2NvcGUoW21lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpXShhdXRv
JiBzY3JpcHRDb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byYgY29udGV4dCA9IGRvd25j
YXN0PFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRDb250ZXh0KTsKLSAgICAgICAgYXV0
byBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKHNjcmlwdENvbnRleHQsIFdURk1v
dmUobWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRzKSk7Ci0gICAgICAgIGNvbnRleHQuZGlzcGF0Y2hF
dmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgbWVzc2FnZS5tZXNzYWdl
LnJlbGVhc2VOb25OdWxsKCkpKTsKLSAgICB9KTsKLX0KKyAgICBBU1NFUlQoIWFsbFNoYXJlZFdv
cmtlclRocmVhZFByb3hpZXMoKS5jb250YWlucyh0aGlzKSk7CisgICAgYWxsU2hhcmVkV29ya2Vy
VGhyZWFkUHJveGllcygpLmFkZCh0aGlzKTsKIAotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eTo6cG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpPiYmIHRhc2spCi17Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soV1RG
TW92ZSh0YXNrKSk7Ci19Ci0KLWJvb2wgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Omhhc1BlbmRp
bmdBY3Rpdml0eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faGFzUGVuZGluZ0FjdGl2aXR5ICYm
ICFtX2Fza2VkVG9UZXJtaW5hdGU7CisgICAgc3RhdGljIGJvb2wgYWRkZWRMaXN0ZW5lcjsKKyAg
ICBpZiAoIWFkZGVkTGlzdGVuZXIpIHsKKyAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxv
YWRlclN0cmF0ZWd5KCktPmFkZE9ubGluZVN0YXRlQ2hhbmdlTGlzdGVuZXIoJm5ldHdvcmtTdGF0
ZUNoYW5nZWQpOworICAgICAgICBhZGRlZExpc3RlbmVyID0gdHJ1ZTsKKyAgICB9CiB9CiAKLXZv
aWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Ondvcmtlck9iamVjdERlc3Ryb3llZCgpCitTaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eTo6flNoYXJlZFdvcmtlclRocmVhZFByb3h5KCkKIHsKLSAgICBt
X3NoYXJlZFdvcmtlciA9IG51bGxwdHI7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5w
b3N0VGFzayhbdGhpc10gKGF1dG8mKSB7Ci0gICAgICAgIG1fbWF5QmVEZXN0cm95ZWQgPSB0cnVl
OwotICAgICAgICBpZiAobV93b3JrZXJUaHJlYWQpCi0gICAgICAgICAgICB0ZXJtaW5hdGVXb3Jr
ZXJHbG9iYWxTY29wZSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB3b3JrZXJHbG9iYWxT
Y29wZURlc3Ryb3llZEludGVybmFsKCk7Ci0gICAgfSk7CisgICAgQVNTRVJUKGFsbFNoYXJlZFdv
cmtlclRocmVhZFByb3hpZXMoKS5jb250YWlucyh0aGlzKSk7CisgICAgYWxsU2hhcmVkV29ya2Vy
VGhyZWFkUHJveGllcygpLnJlbW92ZSh0aGlzKTsKIH0KIAogU2hhcmVkV29ya2VySWRlbnRpZmll
ciBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6aWRlbnRpZmllcigpIGNvbnN0CkBAIC0xMjUsODgg
KzEwMyw1MCBAQCBTaGFyZWRXb3JrZXJJZGVudGlmaWVyIFNoYXJlZFdvcmtlclRocmVhZFByb3h5
OjppZGVudGlmaWVyKCkgY29uc3QKIAogdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6bm90
aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpCiB7Ci0gICAgaWYgKG1fYXNrZWRU
b1Rlcm1pbmF0ZSkKKyAgICBpZiAobV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAoIW1fd29ya2VyVGhyZWFkKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFtpc09ubGluZV0gKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICBwb3N0VGFza0Zvck1vZGVUb1dvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlKFtpc09ubGluZV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIHsKICAgICAgICAgYXV0byYgZ2xvYmFsU2NvcGUgPSBkb3duY2FzdDxXb3JrZXJH
bG9iYWxTY29wZT4oY29udGV4dCk7CiAgICAgICAgIGdsb2JhbFNjb3BlLnNldElzT25saW5lKGlz
T25saW5lKTsKLSAgICAgICAgZ2xvYmFsU2NvcGUuZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRl
KGlzT25saW5lID8gZXZlbnROYW1lcygpLm9ubGluZUV2ZW50IDogZXZlbnROYW1lcygpLm9mZmxp
bmVFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7
Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnN1c3BlbmRGb3JC
YWNrRm9yd2FyZENhY2hlKCkKLXsKLQotfQotCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5
OjpyZXN1bWVGb3JCYWNrRm9yd2FyZENhY2hlKCkKLXsKLQorICAgICAgICBnbG9iYWxTY29wZS5l
dmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbZ2xvYmFs
U2NvcGUgPSBSZWYgeyBnbG9iYWxTY29wZSB9LCBpc09ubGluZV0geworICAgICAgICAgICAgZ2xv
YmFsU2NvcGUtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShpc09ubGluZSA/IGV2ZW50TmFt
ZXMoKS5vbmxpbmVFdmVudCA6IGV2ZW50TmFtZXMoKS5vZmZsaW5lRXZlbnQsIEV2ZW50OjpDYW5C
dWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOworICAgICAgICB9KTsKKyAgICB9
LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKIH0KIAogdm9pZCBTaGFyZWRXb3JrZXJU
aHJlYWRQcm94eTo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwpCiB7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhb
dGhpcywgZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlLmlzb2xhdGVkQ29weSgpLCBzb3VyY2VV
UkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCksIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcl0g
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0gICAgICAgIGlmICghbV9zaGFyZWRXb3JrZXIp
Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gV2UgZG9uJ3QgYm90aGVyIGNoZWNr
aW5nIHRoZSBhc2tlZFRvVGVybWluYXRlKCkgZmxhZyBoZXJlLCBiZWNhdXNlIGV4Y2VwdGlvbnMg
c2hvdWxkICphbHdheXMqIGJlIHJlcG9ydGVkIGV2ZW4gaWYgdGhlIHRocmVhZCBpcyB0ZXJtaW5h
dGVkLgotICAgICAgICAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgZGlmZmVyZW50IHRoYW4gdGhl
IGJlaGF2aW9yIGluIE1lc3NhZ2VXb3JrZXJUYXNrLCBiZWNhdXNlIHRlcm1pbmF0ZWQgd29ya2Vy
cyBubyBsb25nZXIgZGVsaXZlciBtZXNzYWdlcyAoc2VjdGlvbiA0LjYgb2YgdGhlIFdlYldvcmtl
ciBzcGVjKSwgYnV0IHRoZXkgZG8gcmVwb3J0IGV4Y2VwdGlvbnMuCi0gICAgICAgIEFjdGl2ZURP
TU9iamVjdDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCptX3NoYXJlZFdvcmtlciwgVGFza1Nv
dXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFcnJvckV2ZW50OjpjcmVhdGUoZXJyb3JNZXNzYWdlLCBz
b3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgeyB9KSk7Ci0gICAgfSk7Ci19Ci0K
LXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Ondvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVk
KCkKLXsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzXSAoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKLSAgICAgICAgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95
ZWRJbnRlcm5hbCgpOwotICAgIH0pOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5
Ojpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpCi17
Ci0KLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y29uZmlybU1lc3NhZ2VGcm9t
V29ya2VyT2JqZWN0KGJvb2wpCi17Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6
OnJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKLXsKLSAgICBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzLCBoYXNQZW5kaW5nQWN0aXZp
dHldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewotICAgICAgICBtX2hhc1BlbmRpbmdBY3Rp
dml0eSA9IGhhc1BlbmRpbmdBY3Rpdml0eTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzaGFyZWRX
b3JrZXJJZGVudGlmaWVyID0gbV93b3JrZXJUaHJlYWQtPmlkZW50aWZpZXIoKSwgZXJyb3JNZXNz
YWdlID0gZXJyb3JNZXNzYWdlLmlzb2xhdGVkQ29weSgpLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIHNvdXJjZVVSTCA9IHNvdXJjZVVSTC5pc29sYXRlZENvcHkoKV0geworICAgICAgICBpZiAo
YXV0byogY29ubmVjdGlvbiA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24o
KS5jb25uZWN0aW9uKCkpCisgICAgICAgICAgICBjb25uZWN0aW9uLT5wb3N0RXhjZXB0aW9uVG9X
b3JrZXJPYmplY3Qoc2hhcmVkV29ya2VySWRlbnRpZmllciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCk7CiAgICAgfSk7CiB9CiAKIFJlZlB0cjxDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uPiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBh
dXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0KTsKLSAgICByZXR1cm4gZG9jdW1lbnQucGFnZSgpLT5jYWNoZVN0b3JhZ2VQcm92aWRlcigp
LmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKTsKKyAgICBpZiAoIW1fY2FjaGVTdG9yYWdl
Q29ubmVjdGlvbikKKyAgICAgICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uID0gbV9jYWNoZVN0
b3JhZ2VQcm92aWRlci5jcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCk7CisgICAgcmV0dXJu
IG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKIH0KIAogUmVmUHRyPFJUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlckNvbm5lY3Rpb24+IFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpjcmVhdGVSVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCkKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwotICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIGlmICghZG9jdW1lbnQucGFnZSgpKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gZG9jdW1lbnQucGFnZSgpLT5saWJXZWJSVENQ
cm92aWRlcigpLmNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24oKTsK
KyAgICByZXR1cm4gbV9wYWdlLT5saWJXZWJSVENQcm92aWRlcigpLmNyZWF0ZVJUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24oKTsKIH0KIAogdm9pZCBTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eTo6cG9zdFRhc2tUb0xvYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYg
dGFzaykKIHsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFdURk1vdmUo
dGFzaykpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Rhc2sgPSBXVEZNb3ZlKHRhc2spLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHRhc2sucGVy
Zm9ybVRhc2socHJvdGVjdGVkVGhpcy0+bV9kb2N1bWVudC5nZXQoKSk7CisgICAgfSk7CiB9CiAK
IGJvb2wgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2ssIGNv
bnN0IFN0cmluZyYgbW9kZSkKIHsKLSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQorICAgIGlm
IChtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFdURk1vdmUodGFz
ayksIG1vZGUpOwpAQCAtMjIzLDE2ICsxNjMsMTAgQEAgdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3BlY3Rvcihib29sKQogCiB9
CiAKLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Ondvcmtlckdsb2JhbFNjb3BlRGVzdHJv
eWVkSW50ZXJuYWwoKQordm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6bmV0d29ya1N0YXRl
Q2hhbmdlZChib29sIGlzT25MaW5lKQogewotICAgIC8vIFRoaXMgaXMgYWx3YXlzIHRoZSBsYXN0
IHRhc2sgdG8gYmUgcGVyZm9ybWVkLCBzbyB0aGUgcHJveHkgaXMgbm90IG5lZWRlZCBmb3IgY29t
bXVuaWNhdGlvbgotICAgIC8vIGluIGVpdGhlciBzaWRlIGFueSBtb3JlLiBIb3dldmVyLCB0aGUg
V29ya2VyIG9iamVjdCBtYXkgc3RpbGwgZXhpc3QsIGFuZCBpdCBhc3N1bWVzIHRoYXQgdGhlIHBy
b3h5IGV4aXN0cywgdG9vLgotICAgIG1fYXNrZWRUb1Rlcm1pbmF0ZSA9IHRydWU7Ci0gICAgbV93
b3JrZXJUaHJlYWQgPSBudWxscHRyOwotCi0gICAgLy8gVGhpcyBiYWxhbmNlcyB0aGUgb3JpZ2lu
YWwgcmVmIGluIGNvbnN0cnVjdGlvbi4KLSAgICBpZiAobV9tYXlCZURlc3Ryb3llZCkKLSAgICAg
ICAgZGVyZWYoKTsKKyAgICBmb3IgKGF1dG8qIHByb3h5IDogYWxsU2hhcmVkV29ya2VyVGhyZWFk
UHJveGllcygpKQorICAgICAgICBwcm94eS0+bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGlzT25M
aW5lKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eS5oCmluZGV4IDRlOTJlNDU2MTcxYy4uMzM2NDI0MGFiYmI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3Jr
ZXJUaHJlYWRQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEt
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUgIlNoYXJlZFdvcmtlcklk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJXb3JrZXJEZWJ1Z2dlclByb3h5LmgiCi0jaW5jbHVkZSAi
V29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlckxvYWRlclByb3h5Lmgi
CiAjaW5jbHVkZSAiV29ya2VyT2JqZWN0UHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJPcHRpb25z
LmgiCkBAIC0zNSw1MCArMzQsNTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBD
YWNoZVN0b3JhZ2VQcm92aWRlcjsKK2NsYXNzIFBhZ2U7CiBjbGFzcyBTaGFyZWRXb3JrZXI7CiBj
bGFzcyBTaGFyZWRXb3JrZXJUaHJlYWQ7CiAKLWNsYXNzIFNoYXJlZFdvcmtlclRocmVhZFByb3h5
IGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZFdvcmtlclRocmVhZFBy
b3h5PiwgcHVibGljIFdvcmtlckdsb2JhbFNjb3BlUHJveHksIHB1YmxpYyBXb3JrZXJPYmplY3RQ
cm94eSwgcHVibGljIFdvcmtlckxvYWRlclByb3h5LCBwdWJsaWMgV29ya2VyRGVidWdnZXJQcm94
eSB7CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0OworCitj
bGFzcyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4sIHB1YmxpYyBXb3JrZXJPYmplY3RQcm94
eSwgcHVibGljIFdvcmtlckxvYWRlclByb3h5LCBwdWJsaWMgV29ya2VyRGVidWdnZXJQcm94eSB7
CiBwdWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFNoYXJlZFdv
cmtlclRocmVhZFByb3h5JiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpIHsgcmV0dXJuICpuZXcgU2hh
cmVkV29ya2VyVGhyZWFkUHJveHkoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsgfQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBSZWY8U2hhcmVkV29ya2VyVGhyZWFk
UHJveHk+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsgfQorICAg
IFdFQkNPUkVfRVhQT1JUIH5TaGFyZWRXb3JrZXJUaHJlYWRQcm94eSgpOwogCiAgICAgU2hhcmVk
V29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Q7Ci0gICAgU2hhcmVkV29ya2VyVGhy
ZWFkKiB0aHJlYWQoKSB7IHJldHVybiBtX3dvcmtlclRocmVhZC5nZXQoKTsgfQorICAgIFNoYXJl
ZFdvcmtlclRocmVhZCYgdGhyZWFkKCkgeyByZXR1cm4gbV93b3JrZXJUaHJlYWQ7IH0KIAotICAg
IHZvaWQgc3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgY29u
c3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VDb2RlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lS
ZXNwb25zZUhlYWRlcnMmLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0
eVBvbGljeSwgY29uc3QgQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSYsIE1vbm90b25pY1RpbWUg
dGltZU9yaWdpbiwgUmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIEZldGNoUmVxdWVzdENyZWRl
bnRpYWxzLCBKU0M6OlJ1bnRpbWVGbGFncykgZmluYWw7Ci0gICAgdm9pZCB3b3JrZXJPYmplY3RE
ZXN0cm95ZWQoKSBmaW5hbDsKLSAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZp
bmFsOwotICAgIHZvaWQgdGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKSBmaW5hbDsKKyAgICBi
b29sIGlzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzVGVybWlu
YXRpbmdPclRlcm1pbmF0ZWQ7IH0KKyAgICB2b2lkIHNldEFzVGVybWluYXRpbmdPclRlcm1pbmF0
ZWQoKSB7IG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCA9IHRydWU7IH0KIAogcHJpdmF0ZToK
LSAgICBleHBsaWNpdCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShTaGFyZWRXb3JrZXImKTsKLQot
ICAgIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpOworICAgIFdFQkNP
UkVfRVhQT1JUIFNoYXJlZFdvcmtlclRocmVhZFByb3h5KFVuaXF1ZVJlZjxQYWdlPiYmLCBTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4mLCBjb25zdCBVUkwmIHNjcmlw
dFVSTCwgV29ya2VyRmV0Y2hSZXN1bHQmJiwgV29ya2VyT3B0aW9ucyYmLCBjb25zdCBTdHJpbmcm
IHVzZXJBZ2VudCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImKTsKIAotICAgIHZvaWQgcG9zdE1lc3Nh
Z2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpIGZpbmFsOwot
ICAgIHZvaWQgcG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1bmN0aW9uPHZvaWQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpPiYmKSBmaW5hbDsKLSAgICB2b2lkIG5vdGlmeU5ldHdvcmtTdGF0
ZUNoYW5nZShib29sIGlzT25saW5lKSBmaW5hbDsKLSAgICB2b2lkIHN1c3BlbmRGb3JCYWNrRm9y
d2FyZENhY2hlKCkgZmluYWw7Ci0gICAgdm9pZCByZXN1bWVGb3JCYWNrRm9yd2FyZENhY2hlKCkg
ZmluYWw7CisgICAgLy8gV29ya2VyT2JqZWN0UHJveHkuCiAgICAgdm9pZCBwb3N0RXhjZXB0aW9u
VG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkgZmluYWw7Ci0gICAg
dm9pZCB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgpIGZpbmFsOwotICAgIHZvaWQgcG9zdE1l
c3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKSBmaW5hbDsKLSAg
ICB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sIGhhc1BlbmRpbmdBY3Rp
dml0eSkgZmluYWw7Ci0gICAgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCBoYXNQZW5k
aW5nQWN0aXZpdHkpIGZpbmFsOworICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChN
ZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKSBmaW5hbCB7IH0KKyAgICB2b2lkIHdvcmtlckdsb2Jh
bFNjb3BlRGVzdHJveWVkKCkgZmluYWwgeyB9CisgICAgdm9pZCBjb25maXJtTWVzc2FnZUZyb21X
b3JrZXJPYmplY3QoYm9vbCkgZmluYWwgeyB9CisgICAgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZp
dHkoYm9vbCkgZmluYWwgeyB9CisKKyAgICAvLyBXb3JrZXJMb2FkZXJQcm94eS4KICAgICBSZWZQ
dHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigp
IGZpbmFsOwogICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9u
PiBjcmVhdGVSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCkgZmluYWw7CiAg
ICAgdm9pZCBwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJikg
ZmluYWw7CiAgICAgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiwgY29uc3QgU3RyaW5nJiBtb2RlKSBm
aW5hbDsKKworICAgIC8vIFdvcmtlckRlYnVnZ2VyUHJveHkuCiAgICAgdm9pZCBwb3N0TWVzc2Fn
ZVRvRGVidWdnZXIoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUNh
Y2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yKGJvb2wpIGZpbmFsOwogCi0gICAgV2Vha1B0cjxT
aGFyZWRXb3JrZXI+IG1fc2hhcmVkV29ya2VyOwotICAgIFJlZlB0cjxTaGFyZWRXb3JrZXJUaHJl
YWQ+IG1fd29ya2VyVGhyZWFkOwotICAgIGNvbnN0IFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0gICAgY29uc3QgU3RyaW5nIG1faWRlbnRp
ZmllckZvckluc3BlY3RvcjsKLSAgICBib29sIG1fYXNrZWRUb1Rlcm1pbmF0ZSB7IGZhbHNlIH07
Ci0gICAgYm9vbCBtX2hhc1BlbmRpbmdBY3Rpdml0eSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX21h
eUJlRGVzdHJveWVkIHsgZmFsc2UgfTsKKyAgICBzdGF0aWMgdm9pZCBuZXR3b3JrU3RhdGVDaGFu
Z2VkKGJvb2wgaXNPbkxpbmUpOworICAgIHZvaWQgbm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJv
b2wgaXNPbmxpbmUpOworCisgICAgVW5pcXVlUmVmPFBhZ2U+IG1fcGFnZTsKKyAgICBSZWY8RG9j
dW1lbnQ+IG1fZG9jdW1lbnQ7CisgICAgUmVmPFNoYXJlZFdvcmtlclRocmVhZD4gbV93b3JrZXJU
aHJlYWQ7CisgICAgQ2FjaGVTdG9yYWdlUHJvdmlkZXImIG1fY2FjaGVTdG9yYWdlUHJvdmlkZXI7
CisgICAgUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IG1fY2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjsKKyAgICBib29sIG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCB7IGZhbHNlIH07CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCA3NTZkYTg4
YjQ1ZjcuLjI5ZjRjNzgxODE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0yOCw2ICsyOCw3IEBA
IHNldChXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVF9ESVJ9L05ldHdv
cmtQcm9jZXNzL05vdGlmaWNhdGlvbnMiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlciIKKyAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9T
aGFyZWRXb3JrZXIiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFn
ZSIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9jYWNoZSIKICAgICAiJHtXRUJL
SVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlIgpAQCAtMjAyLDYgKzIwMyw5IEBAIHNldChX
ZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKICAgICBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyQ29ubmVjdGlvbgogICAgIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCiAKKyAgICBOZXR3b3JrUHJvY2Vzcy9TaGFy
ZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbgorICAgIE5ldHdvcmtQcm9j
ZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
CisKICAgICBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0CiAKICAg
ICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uCkBAIC0z
MDUsNiArMzA5LDggQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogCiAgICAgV2ViUHJv
Y2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcgog
CisgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbgorICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uCiAgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbgogICAg
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggNGM2NjIy
MGNmMTIyLi43MjI5YzFiOTg3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKQEAgLTkxLDYgKzkxLDggQEAgJChQUk9KRUNUX0RJUikvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLm1lc3NhZ2Vz
LmkKICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckZldGNoVGFzay5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TaGFy
ZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQ
Uk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL21hYy9jb20uYXBw
bGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluCkBAIC0yMTcsNiArMjE5LDggQEAgJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9XZWJQcm9jZXNzL1NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlYWx0aW1lTWVk
aWFTb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMu
aW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1v
dXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QKaW5kZXggZTNiNTU4NDBhZTFlLi5hODYzMjgxNDdiNTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtNjA3LDYgKzYwNywx
OCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXU2Vy
dmVyQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcwogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdC9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlUmVj
ZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNz
YWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0L1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlcy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VSZWNl
aXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNvY2tldENoYW5uZWxNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNvY2tl
dENoYW5uZWxNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0L1dlYlNvY2tldENoYW5uZWxNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy5tYWtlCmluZGV4IDdhZDQ5ZTM3MzVmNC4uMzUxZmZhZTBhNTg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy5tYWtlCkBAIC0xMzMsNiArMTMzLDggQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBc
CiAJTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNr
IFwKIAlOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2sg
XAogCU5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uIFwKKwlOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbiBcCisJTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gXAogCU5ldHdvcmtQcm9jZXNzL05ldHdvcmtT
b2NrZXRTdHJlYW0gXAogCU5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzIFwKIAlOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIgXApAQCAtMjI1LDYgKzIyNyw4IEBAIE1FU1NB
R0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3Rl
bVN0b3JhZ2VDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2du
aXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlciBcCisJV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBcCisJV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ2xpZW50Q29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9XZWJQcm9jZXNzIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNjg3YzhkYjY5MTJjLi5jN2IxN2ZkNzA3ODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC02Niw2ICs2NiwxMSBAQAogI2luY2x1ZGUgIldl
YlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIKKyNpbmNs
dWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudFN0b3Jh
Z2VBY2Nlc3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBDb29raWVBY2NlcHRQb2xpY3kuaD4K
QEAgLTEzMiw2ICsxMzcsNyBAQCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmIG5ldAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKICAgICBlc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKTsKICNlbmRp
ZgorICAgIGVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oKTsKIH0KIAogTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cygpCkBAIC0xNjYsNiArMTcyLDcgQEAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogICAgIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgorICAgIHVucmVnaXN0ZXJT
aGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6Omhhc1VwbG9hZFN0YXRlQ2hhbmdlZChib29sIGhhc1VwbG9hZCkKQEAgLTI3NSw2
ICsyODIsMTcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW8KICAgICB9CiAjZW5kaWYKIAorICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAg
IGlmIChtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAgICAgICBtX3NoYXJlZFdvcmtl
ckNvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUo
KSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGlmIChtX3NoYXJlZFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uKQorICAgICAgICAgICAgbV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlv
bi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKICAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpCiAgICAgICAgIHJldHVybiBwYXltZW50
Q29vcmRpbmF0b3IoKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKQEAg
LTM5OCw5ICs0MTYsOCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRD
bG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7Ci0jZWxzZQotICAg
IFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICNlbmRpZgorICAgIG1fc2hhcmVkV29ya2VyQ29u
dGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwogCiAgICAgLy8gUHJvdGVjdCBvdXJzZWxmIGFzIHdl
IG1pZ2h0IGJlIG90aGVyd2lzZSBiZSBkZWxldGVkIGR1cmluZyB0aGlzIGZ1bmN0aW9uLgogICAg
IFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gcHJvdGVjdG9yKCp0aGlzKTsKQEAg
LTQ0MSw2ICs0NTgsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRD
bG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQogICAgIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgorICAgIHVucmVnaXN0
ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9U
RV9VSSkKICAgICBtX3BheW1lbnRDb29yZGluYXRvciA9IG51bGxwdHI7CkBAIC0xMTg2LDYgKzEy
MDQsNjEgQEAgc2l6ZV90IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpmaW5kTmV0d29y
a0FjdGl2aXR5VHJhY2tlcihXZWJDb3JlOjpSZXNvdXIKICAgICAgICAgcmV0dXJuIGl0ZW0ucmVz
b3VyY2VJRCA9PSByZXNvdXJjZUlEOwogICAgIH0pOwogfQorCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihX
ZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lz
dHJhYmxlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJlc3RhYmxp
c2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbjoiKTsKKyAgICBhdXRvKiBzZXNzaW9uID0g
bmV0d29ya1Nlc3Npb24oKTsKKyAgICBpZiAoYXV0byogc3dTZXJ2ZXIgPSBzZXNzaW9uID8gc2Vz
c2lvbi0+c2hhcmVkV29ya2VyU2VydmVyKCkgOiBudWxscHRyKQorICAgICAgICBtX3NoYXJlZFdv
cmtlckNvbnRleHRDb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uPigqdGhpcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksICpz
d1NlcnZlcik7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwordm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlv
bigpCit7CisgICAgaWYgKG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7CisgICAgaWYgKCFzZXNz
aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJl
ZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Iik7CisKKyAg
ICBhdXRvJiBzZXJ2ZXIgPSBzZXNzaW9uLT5lbnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKTsKKyAg
ICBhdXRvIGNvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb24+KG1fbmV0d29ya1Byb2Nlc3MsIHNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBtX3dl
YlByb2Nlc3NJZGVudGlmaWVyKTsKKworICAgIG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbiA9ICpj
b25uZWN0aW9uOworICAgIHNlcnZlci5hZGRDb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikp
OworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbG9zZVNoYXJlZFdv
cmtlckNvbnRleHRDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNo
YXJlZFdvcmtlciwgImNsb3NlU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb246Iik7CisgICAg
bV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7Cit9CisKK3ZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0
aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgInVucmVn
aXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uOiIpOworICAgIGlmIChtX3NoYXJlZFdvcmtlckNv
bm5lY3Rpb24pCisgICAgICAgIG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbi0+c2VydmVyKCkucmVt
b3ZlQ29ubmVjdGlvbihtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24tPndlYlByb2Nlc3NJZGVudGlm
aWVyKCkpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpCit7CisgICAg
Q09OTkVDVElPTl9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJzaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZDoiKTsKKyAgICBtX25ldHdvcmtQcm9j
ZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkIHsg
d2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKKworICAgIG1fc2hhcmVkV29ya2VyQ29udGV4
dENvbm5lY3Rpb24gPSBudWxscHRyOworfQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2hhcmVkV29ya2VyQ29ubmVjdGlv
bigpCit7CisgICAgaWYgKCFtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAgIGVzdGFi
bGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oKTsKKyAgICByZXR1cm4gbV9zaGFyZWRX
b3JrZXJDb25uZWN0aW9uLmdldCgpOworfQogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJTV0Nvbm5l
Y3Rpb24oKQpAQCAtMTIyMyw5ICsxMjk2LDkgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Y2xvc2VTV0NvbnRleHRDb25uZWN0aW9uKCkKICAgICBtX3N3Q29udGV4dENvbm5l
Y3Rpb24gPSBudWxscHRyOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKQordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2VydmljZVdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb25Ob0xvbmdlck5lZWRlZCgpCiB7Ci0gICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTZXJ2
aWNlV29ya2VyLCAic2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkOiBXZWJQ
cm9jZXNzIG5vIGxvbmdlciB1c2VmdWwgZm9yIHJ1bm5pbmcgc2VydmljZSB3b3JrZXJzIik7Cisg
ICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAic2VydmljZVdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZDogV2ViUHJvY2VzcyBubyBsb25n
ZXIgdXNlZnVsIGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycyIpOwogICAgIG1fbmV0d29ya1By
b2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OlNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVk
IHsgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKIAogICAgIG1fc3dDb250ZXh0Q29ubmVj
dGlvbiA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggM2ExZTE0MDQzMzhm
Li5kMGFhNGVmNzQ1MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTkyLDYgKzkyLDgg
QEAgY2xhc3MgTmV0d29ya1NvY2tldFN0cmVhbTsKIGNsYXNzIFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CiBjbGFzcyBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb247CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOwor
Y2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKIAogbmFtZXNw
YWNlIE5ldHdvcmtDYWNoZSB7CiBzdHJ1Y3QgRGF0YUtleTsKQEAgLTE4MSwxMCArMTgzLDEzIEBA
IHB1YmxpYzoKICAgICB2b2lkIGNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KGNvbnN0
IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5KT4mJik7CiAK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgdm9pZCBzZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uTm9Mb25nZXJOZWVkZWQoKTsKKyAgICB2b2lkIHNlcnZpY2VXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKTsKICAgICBXZWJTV1NlcnZlckNvbm5lY3Rp
b24qIHN3Q29ubmVjdGlvbigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrPiBjcmVhdGVGZXRjaFRhc2soTmV0d29ya1Jlc291cmNlTG9hZGVyJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKKyAgICB2b2lkIHNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7CisKKyAgICBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKiBzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiAKICAg
ICBOZXR3b3JrU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9zY2hl
bWVSZWdpc3RyeS5nZXQoKTsgfQogCkBAIC0yNTMsNiArMjU4LDkgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNyZWF0ZVNvY2tldENoYW5uZWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgU3RyaW5nJiBwcm90b2NvbCwgV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllciwgV2Vi
UGFnZVByb3h5SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAgICAg
dm9pZCB1cGRhdGVRdW90YUJhc2VkT25TcGFjZVVzYWdlRm9yVGVzdGluZyhjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mKTsKIAorICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbigpOworICAgIHZvaWQgdW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb24o
KTsKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFNXU2Vy
dmVyQ29ubmVjdGlvbigpOwogICAgIHZvaWQgZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihX
ZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2
aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBA
IC0yNjAsNiArMjY4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVucmVnaXN0ZXJTV0Nvbm5lY3Rp
b24oKTsKICNlbmRpZgogCisgICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29u
bmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgY2xvc2VTaGFyZWRX
b3JrZXJDb250ZXh0Q29ubmVjdGlvbigpOworCiAgICAgdm9pZCBjcmVhdGVSVENQcm92aWRlcihD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIHZv
aWQgY29ubmVjdFRvUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UoV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVy
IGhhbmRsZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxib29sPik+JiYp
OwpAQCAtNDA0LDYgKzQxNSw4IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxXZWJTV1NlcnZlckNv
bm5lY3Rpb24+IG1fc3dDb25uZWN0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24+IG1fc3dDb250ZXh0Q29ubmVjdGlvbjsKICNlbmRpZgorICAg
IFdlYWtQdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4gbV9zaGFyZWRXb3JrZXJD
b25uZWN0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uPiBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uOwogCiAjaWYg
RU5BQkxFKFdFQl9SVEMpCiAgICAgYm9vbCBtX2lzUmVnaXN0ZXJlZFRvUlRDRGF0YUNoYW5uZWxQ
cm94eSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgppbmRleCAyNDI4MzUwNTBiMjQuLmI5N2NhMzQ3OWI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC04OCw2ICs4OCw5IEBAIG1lc3NhZ2VzIC0+IE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBDbG9zZVNX
Q29udGV4dENvbm5lY3Rpb24oKQogI2VuZGlmCiAKKyAgICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJD
b250ZXh0Q29ubmVjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVBy
b3h5SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikgLT4gKCkgQXN5bmMKKyAg
ICBDbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKCkKKwogICAgIENyZWF0ZVJUQ1By
b3ZpZGVyKCkgLT4gKCkgQXN5bmMKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICBDb25uZWN0VG9S
VENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZShzdHJ1Y3QgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJ
ZGVudGlmaWVyIHNvdXJjZSwgc3RydWN0IFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmll
ciBoYW5kbGVyKSAtPiAoc3RkOjpvcHRpb25hbDxib29sPiByZXN1bHQpIEFzeW5jCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IGUyYjI0
ZDgzMjJiNi4uZDc2MTYyODUwY2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIldlYlBh
Z2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViU1dPcmlnaW5TdG9yZS5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlci5o
IgogI2luY2x1ZGUgIldlYlNvY2tldFRhc2suaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZUph
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CkBAIC02NTMsNiArNjU0
LDEzIEBAIGJvb2wgTmV0d29ya1Nlc3Npb246Omhhc1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBhdGgo
KSBjb25zdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCitXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKQor
eworICAgIGlmICghbV9zaGFyZWRXb3JrZXJTZXJ2ZXIpCisgICAgICAgIG1fc2hhcmVkV29ya2Vy
U2VydmVyID0gbWFrZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI+KCp0aGlzKTsKKyAgICBy
ZXR1cm4gKm1fc2hhcmVkV29ya2VyU2VydmVyOworfQorCiBXZWJJREJTZXJ2ZXImIE5ldHdvcmtT
ZXNzaW9uOjplbnN1cmVXZWJJREJTZXJ2ZXIoKQogewogICAgIGlmICghbV93ZWJJREJTZXJ2ZXIp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAppbmRl
eCAxOTMwN2NmNDBiZTMuLjNmOWQ2Yzk1NTBhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtNzksNiArNzksNyBAQCBjbGFzcyBTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOwogY2xhc3MgV2ViSURCU2VydmVyOwogY2xhc3MgV2ViUGFnZU5ldHdv
cmtQYXJhbWV0ZXJzOwogY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOworY2xh
c3MgV2ViU2hhcmVkV29ya2VyU2VydmVyOwogY2xhc3MgV2ViU29ja2V0VGFzazsKIGNsYXNzIFdl
YlNXT3JpZ2luU3RvcmU7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CkBAIC0yMTAsNiAr
MjExLDkgQEAgcHVibGljOgogICAgIHZvaWQgYWRkU2VydmljZVdvcmtlclNlc3Npb24oYm9vbCBw
cm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFN0cmluZyYmIHNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnksIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogI2Vu
ZGlmCiAKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIqIHNoYXJlZFdvcmtlclNlcnZlcigpIHsg
cmV0dXJuIG1fc2hhcmVkV29ya2VyU2VydmVyLmdldCgpOyB9CisgICAgV2ViU2hhcmVkV29ya2Vy
U2VydmVyJiBlbnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKTsKKwogICAgIFdlYklEQlNlcnZlciog
d2ViSURCU2VydmVyKCkgeyByZXR1cm4gbV93ZWJJREJTZXJ2ZXIuZ2V0KCk7IH0KICAgICBXZWJJ
REJTZXJ2ZXImIGVuc3VyZVdlYklEQlNlcnZlcigpOwogICAgIHZvaWQgY2xvc2VJREJTZXJ2ZXIo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTMxOCw2ICszMjIsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySW5mbz4gbV9zZXJ2aWNlV29ya2Vy
SW5mbzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1dTZXJ2ZXI+IG1fc3dTZXJ2ZXI7
CiAjZW5kaWYKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyPiBtX3No
YXJlZFdvcmtlclNlcnZlcjsKIAogICAgIFN0cmluZyBtX2lkYkRhdGFiYXNlUGF0aDsKICAgICBS
ZWZQdHI8V2ViSURCU2VydmVyPiBtX3dlYklEQlNlcnZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggNWE4NzAzZWZkNmQ1Li4y
N2Y2ZThkYTVmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwCkBAIC0xNjIsNyArMTYyLDcgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246Om1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWUKIAogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Jc05v
TG9uZ2VyTmVlZGVkKCkKIHsKLSAgICBtX2Nvbm5lY3Rpb24uc2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbk5vTG9uZ2VyTmVlZGVkKCk7CisgICAgbV9jb25uZWN0aW9uLnNlcnZpY2VXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKTsKIH0KIAogdm9pZCBXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxl
YWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29y
a2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTlhY2EwMDE1YmUwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29y
a2VyU2VydmVyLmNwcApAQCAtMCwwICsxLDMwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIKKworI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCisj
aW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlcjo6V2ViU2hhcmVkV29ya2VyU2VydmVyKE5l
dHdvcmtTZXNzaW9uJiBzZXNzaW9uKQorICAgIDogbV9zZXNzaW9uKHNlc3Npb24pCit7Cit9CisK
K1dlYlNoYXJlZFdvcmtlclNlcnZlcjo6fldlYlNoYXJlZFdvcmtlclNlcnZlcigpID0gZGVmYXVs
dDsKKworUEFMOjpTZXNzaW9uSUQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpzZXNzaW9uSUQoKQor
eworICAgIHJldHVybiBtX3Nlc3Npb24uc2Vzc2lvbklEKCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVk
V29ya2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYm
IG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLCBVUkwmJiB1cmwsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2Fn
ZVBvcnQmJiBwb3J0LCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucykKK3sK
KyAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkga2V5IHsgb3JpZ2luLCB1cmwsIHdvcmtlck9w
dGlvbnMubmFtZSB9OworICAgIGF1dG8mIHNoYXJlZFdvcmtlciA9IG1fc2hhcmVkV29ya2Vycy5l
bnN1cmUoa2V5LCBbJl0geworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTaGFyZWRXb3JrZXI+
KG9yaWdpbiwgdXJsLCB3b3JrZXJPcHRpb25zKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7Cisg
ICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZXF1
ZXN0U2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHJpdmF0ZX1z
LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHNoYXJlZFdvcmtlci0+aWRlbnRpZmll
ci50b1VJbnQ2NCgpKTsKKworICAgIGlmIChzaGFyZWRXb3JrZXItPndvcmtlck9wdGlvbnMudHlw
ZSAhPSB3b3JrZXJPcHRpb25zLnR5cGUgfHwgc2hhcmVkV29ya2VyLT53b3JrZXJPcHRpb25zLmNy
ZWRlbnRpYWxzICE9IHdvcmtlck9wdGlvbnMuY3JlZGVudGlhbHMpIHsKKyAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZXF1ZXN0
U2hhcmVkV29ya2VyOiBBIHdvcmtlciBhbHJlYWR5IGV4aXN0cyB3aXRoIHRoaXMgbmFtZSBidXQg
aGFzIGRpZmZlcmVudCB0eXBlIC8gY3JlZGVudGlhbHMiKTsKKyAgICAgICAgaWYgKGF1dG8qIHNl
cnZlckNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkpKQorICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlv
bi0+bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLCB7IFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wg
fSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaGFyZWRXb3JrZXItPnNoYXJlZFdv
cmtlck9iamVjdHMuYWRkKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHBvcnQpOworCisg
ICAgaWYgKHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5zaXplKCkgPiAxKSB7Cisg
ICAgICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6
cmVxdWVzdFNoYXJlZFdvcmtlcjogQSBzaGFyZWQgd29ya2VyIHdpdGggdGhpcyBVUkwgYWxyZWFk
eSBleGlzdHMgKG5vdyBzaGFyZWQgYnkgJXUgc2hhcmVkIHdvcmtlciBvYmplY3RzKSIsIHNoYXJl
ZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5zaXplKCkpOworICAgICAgICBpZiAoc2hhcmVk
V29ya2VyLT5kaWRGaW5pc2hGZXRjaGluZygpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogc2Vy
dmVyQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSkpCisgICAgICAgICAgICAgICAgc2VydmVyQ29ubmVj
dGlvbi0+bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLCB7IH0pOworICAgICAgICB9CisgICAgICAgIGlmIChzaGFyZWRXb3JrZXIt
PmlzUnVubmluZykgeworICAgICAgICAgICAgYXV0byogY29udGV4dENvbm5lY3Rpb24gPSBtX2Nv
bnRleHRDb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyLT5yZWdpc3RyYWJsZURvbWFpbigpKTsK
KyAgICAgICAgICAgIEFTU0VSVChjb250ZXh0Q29ubmVjdGlvbik7CisgICAgICAgICAgICBpZiAo
Y29udGV4dENvbm5lY3Rpb24pCisgICAgICAgICAgICAgICAgcG9zdENvbm5lY3RFdmVudCgqY29u
dGV4dENvbm5lY3Rpb24sIHNoYXJlZFdvcmtlci0+aWRlbnRpZmllciwgcG9ydCwgb3JpZ2luLmNs
aWVudE9yaWdpbi50b1N0cmluZygpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAg
fQorICAgIEFTU0VSVCghc2hhcmVkV29ya2VyLT5pc1J1bm5pbmcpOworCisgICAgYXV0byogc2Vy
dmVyQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgQVNTRVJUKHNlcnZlckNvbm5lY3Rpb24p
OworCisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVy
OjpyZXF1ZXN0U2hhcmVkV29ya2VyOiBGZXRjaGluZyBzaGFyZWQgd29ya2VyIHNjcmlwdCBpbiBj
bGllbnQiKTsKKyAgICBzZXJ2ZXJDb25uZWN0aW9uLT5mZXRjaFNjcmlwdEluQ2xpZW50KHVybCwg
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgd29ya2VyT3B0aW9ucywgW3dlYWtUaGlzID0g
V2Vha1B0ciB7ICp0aGlzIH0sIHNoYXJlZFdvcmtlciA9IFdlYWtQdHIgeyAqc2hhcmVkV29ya2Vy
IH1dKFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYgZmV0Y2hSZXN1bHQpIHsKKyAgICAgICAg
aWYgKHdlYWtUaGlzICYmIHNoYXJlZFdvcmtlcikKKyAgICAgICAgICAgIHdlYWtUaGlzLT5kaWRG
aW5pc2hGZXRjaGluZ1NoYXJlZFdvcmtlclNjcmlwdCgqc2hhcmVkV29ya2VyLCBXVEZNb3ZlKGZl
dGNoUmVzdWx0KSk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjps
YXVuY2hTaGFyZWRXb3JrZXIoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
biYgY29udGV4dENvbm5lY3Rpb24sIFNoYXJlZFdvcmtlciYgc2hhcmVkV29ya2VyKQoreworICAg
IFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6bGF1bmNo
U2hhcmVkV29ya2VyOiBjb250ZXh0Q29ubmVjdGlvbj0lcCwgc2hhcmVkV29ya2VySWRlbnRpZmll
cj0lIiBQUkl1NjQsICZjb250ZXh0Q29ubmVjdGlvbiwgc2hhcmVkV29ya2VyLmlkZW50aWZpZXIu
dG9VSW50NjQoKSk7CisgICAgY29udGV4dENvbm5lY3Rpb24ubGF1bmNoU2hhcmVkV29ya2VyKHNo
YXJlZFdvcmtlci5vcmlnaW4sIHNoYXJlZFdvcmtlci5pZGVudGlmaWVyLCBzaGFyZWRXb3JrZXIu
dXJsLCBzaGFyZWRXb3JrZXIud29ya2VyT3B0aW9ucywgc2hhcmVkV29ya2VyLmZldGNoUmVzdWx0
KTsKKyAgICBzaGFyZWRXb3JrZXIuaXNSdW5uaW5nID0gdHJ1ZTsKKyAgICBhdXRvIHNvdXJjZU9y
aWdpbiA9IHNoYXJlZFdvcmtlci5vcmlnaW4uY2xpZW50T3JpZ2luLnRvU3RyaW5nKCk7CisgICAg
Zm9yIChhdXRvJiBwb3J0IDogc2hhcmVkV29ya2VyLnNoYXJlZFdvcmtlck9iamVjdHMudmFsdWVz
KCkpCisgICAgICAgIHBvc3RDb25uZWN0RXZlbnQoY29udGV4dENvbm5lY3Rpb24sIHNoYXJlZFdv
cmtlci5pZGVudGlmaWVyLCBwb3J0LCBzb3VyY2VPcmlnaW4pOworfQorCit2b2lkIFdlYlNoYXJl
ZFdvcmtlclNlcnZlcjo6cG9zdENvbm5lY3RFdmVudChXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbiwgV2ViQ29yZTo6U2hhcmVkV29ya2Vy
SWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpUcmFuc2Zl
cnJlZE1lc3NhZ2VQb3J0JiBzb3VyY2VQb3J0LCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikK
K3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6
OnBvc3RDb25uZWN0RXZlbnQ6IGNvbnRleHRDb25uZWN0aW9uPSVwLCBzaGFyZWRXb3JrZXJJZGVu
dGlmaWVyPSUiIFBSSXU2NCwgJmNvbnRleHRDb25uZWN0aW9uLCBzaGFyZWRXb3JrZXJJZGVudGlm
aWVyLnRvVUludDY0KCkpOworICAgIGNvbnRleHRDb25uZWN0aW9uLnBvc3RDb25uZWN0RXZlbnQo
c2hhcmVkV29ya2VySWRlbnRpZmllciwgc291cmNlUG9ydCwgc291cmNlT3JpZ2luKTsKK30KKwor
dm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29ya2Vy
U2NyaXB0KFNoYXJlZFdvcmtlciYgd29ya2VyLCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYm
IGZldGNoUmVzdWx0KQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJl
ZFdvcmtlclNlcnZlcjo6ZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRXb3JrZXJTY3JpcHQgc2hhcmVk
V29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgd29ya2VyPSVwLCBzdWNjZXNzPSVkIiwgd29y
a2VyLmlkZW50aWZpZXIudG9VSW50NjQoKSwgJndvcmtlciwgZmV0Y2hSZXN1bHQuZXJyb3IuaXNO
dWxsKCkpOworCisgICAgZm9yIChhdXRvIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgOiB3
b3JrZXIuc2hhcmVkV29ya2VyT2JqZWN0cy5rZXlzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHNl
cnZlckNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkpKQorICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlv
bi0+bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLCBmZXRjaFJlc3VsdC5lcnJvcik7CisgICAgfQorCisgICAgaWYgKCFmZXRjaFJl
c3VsdC5lcnJvci5pc051bGwoKSkgeworICAgICAgICBtX3NoYXJlZFdvcmtlcnMucmVtb3ZlKHdv
cmtlci5rZXkoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3b3JrZXIuZmV0Y2hS
ZXN1bHQgPSBXVEZNb3ZlKGZldGNoUmVzdWx0KTsKKworICAgIGF1dG8gcmVnaXN0cmFibGVEb21h
aW4gPSB3b3JrZXIucmVnaXN0cmFibGVEb21haW4oKTsKKyAgICBhdXRvKiBjb250ZXh0Q29ubmVj
dGlvbiA9IGNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVE
b21haW4pOworICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAgICAgY3JlYXRlQ29u
dGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4pOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgbGF1bmNoU2hhcmVkV29ya2VyKCpjb250ZXh0Q29ubmVjdGlvbiwgd29ya2VyKTsK
K30KKworYm9vbCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6Om5lZWRzQ29udGV4dENvbm5lY3Rpb25G
b3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVn
aXN0cmFibGVEb21haW4pIGNvbnN0Cit7CisgICAgZm9yIChhdXRvJiBzaGFyZWRXb3JrZXIgOiBt
X3NoYXJlZFdvcmtlcnMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHJlZ2lzdHJhYmxlRG9tYWlu
Lm1hdGNoZXMoc2hhcmVkV29ya2VyLT51cmwpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6
OmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiByZWdpc3RyYWJsZURvbWFpbikKK3sKKyAgICBBU1NFUlQoIW1fY29udGV4dENvbm5lY3Rpb25z
LmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSk7CisgICAgaWYgKG1fcGVuZGluZ0NvbnRleHRD
b25uZWN0aW9uRG9tYWlucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgIHJl
dHVybjsKKworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNl
cnZlcjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24gd2lsbCBjcmVhdGUgYSBjb25uZWN0aW9uIik7
CisKKyAgICBtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnMuYWRkKHJlZ2lzdHJhYmxl
RG9tYWluKTsKKyAgICBtX3Nlc3Npb24ubmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OkVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyB7IHJlZ2lzdHJhYmxlRG9tYWluLCBtX3Nlc3Npb24uc2Vzc2lvbklEKCkgfSwgW3RoaXMsIHdl
YWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlZ2lzdHJhYmxlRG9tYWluXSB7CisgICAgICAg
IGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgUkVMRUFTRV9M
T0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0Q29u
bmVjdGlvbiBzaG91bGQgbm93IGhhdmUgY3JlYXRlZCBhIGNvbm5lY3Rpb24iKTsKKworICAgICAg
ICBBU1NFUlQobV9wZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5zLmNvbnRhaW5zKHJlZ2lz
dHJhYmxlRG9tYWluKSk7CisgICAgICAgIG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWlu
cy5yZW1vdmUocmVnaXN0cmFibGVEb21haW4pOworCisgICAgICAgIGlmIChtX2NvbnRleHRDb25u
ZWN0aW9ucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgaWYgKG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFp
bihyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlv
bihyZWdpc3RyYWJsZURvbWFpbik7CisgICAgfSwgMCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29y
a2VyU2VydmVyOjphZGRDb250ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbikKK3sKKyAgICBSRUxFQVNFX0xPRyhT
aGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmFkZENvbnRleHRDb25uZWN0aW9u
KCVwKSB3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQsICZjb250ZXh0Q29ubmVjdGlvbiwg
Y29udGV4dENvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKwor
ICAgIEFTU0VSVCghbV9jb250ZXh0Q29ubmVjdGlvbnMuY29udGFpbnMoY29udGV4dENvbm5lY3Rp
b24ucmVnaXN0cmFibGVEb21haW4oKSkpOworCisgICAgbV9jb250ZXh0Q29ubmVjdGlvbnMuYWRk
KGNvbnRleHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCksICZjb250ZXh0Q29ubmVjdGlv
bik7CisKKyAgICBjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoY29udGV4dENvbm5lY3Rpb24pOwor
fQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24o
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rp
b24pCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2Vy
dmVyOjpyZW1vdmVDb250ZXh0Q29ubmVjdGlvbiglcCkgd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIg
UFJJdTY0LCAmY29udGV4dENvbm5lY3Rpb24sIGNvbnRleHRDb25uZWN0aW9uLndlYlByb2Nlc3NJ
ZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0g
Y29udGV4dENvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKTsKKworICAgIEFTU0VSVChtX2Nv
bnRleHRDb25uZWN0aW9ucy5nZXQocmVnaXN0cmFibGVEb21haW4pID09ICZjb250ZXh0Q29ubmVj
dGlvbik7CisKKyAgICBtX2NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUocmVnaXN0cmFibGVEb21h
aW4pOworCisgICAgaWYgKG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFp
bihyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJl
Z2lzdHJhYmxlRG9tYWluKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNvbnRl
eHRDb25uZWN0aW9uQ3JlYXRlZChXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uJiBjb250ZXh0Q29ubmVjdGlvbikKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIs
ICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZCglcCkgd2Vi
UHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCAmY29udGV4dENvbm5lY3Rpb24sIGNvbnRleHRD
b25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgYXV0byYg
cmVnaXN0cmFibGVEb21haW4gPSBjb250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigp
OworICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9zaGFyZWRXb3JrZXJzLnZhbHVlcygpKSB7Cisg
ICAgICAgIGlmICh3b3JrZXItPmRpZEZpbmlzaEZldGNoaW5nKCkgJiYgcmVnaXN0cmFibGVEb21h
aW4ubWF0Y2hlcyh3b3JrZXItPnVybCkpCisgICAgICAgICAgICBsYXVuY2hTaGFyZWRXb3JrZXIo
Y29udGV4dENvbm5lY3Rpb24sICp3b3JrZXIpOworICAgIH0KK30KKworYXV0byBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXI6OnNoYXJlZFdvcmtlckJ5SWRlbnRpZmllcihXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIpIC0+IFNoYXJlZFdvcmtlcioKK3sK
KyAgICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAg
ICAgICBpZiAod29ya2VyLT5pZGVudGlmaWVyID09IHNoYXJlZFdvcmtlcklkZW50aWZpZXIpCisg
ICAgICAgICAgICByZXR1cm4gd29ya2VyLmdldCgpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworYXV0byBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNoYXJlZFdvcmtlckJ5T2JqZWN0
SWRlbnRpZmllcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIpIC0+IFNoYXJlZFdvcmtlcioKK3sKKyAgICBmb3IgKGF1dG8m
IHdvcmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAod29ya2Vy
LT5zaGFyZWRXb3JrZXJPYmplY3RzLmNvbnRhaW5zKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIpKQorICAgICAgICAgICAgcmV0dXJuIHdvcmtlci5nZXQoKTsKKyAgICB9CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaGFyZWRXb3JrZXJP
YmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7CisgICAgYXV0byogd29ya2VyID0gc2hhcmVk
V29ya2VyQnlPYmplY3RJZGVudGlmaWVyKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOwor
ICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hh
cmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXk6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9
JXtwdWJsaWN9cywgd29ya2VyPSVwIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0
cmluZygpLnV0ZjgoKS5kYXRhKCksIHdvcmtlcik7CisgICAgaWYgKCF3b3JrZXIpCisgICAgICAg
IHJldHVybjsKKworICAgIHdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5yZW1vdmUoc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgaWYgKCF3b3JrZXItPnNoYXJlZFdvcmtlck9i
amVjdHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzaHV0RG93blNoYXJlZFdv
cmtlcih3b3JrZXItPmtleSgpKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNo
dXREb3duU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYga2V5KQor
eworICAgIGF1dG8gd29ya2VyID0gbV9zaGFyZWRXb3JrZXJzLnRha2Uoa2V5KTsKKyAgICBSRUxF
QVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNodXREb3duU2hh
cmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCAiLCB3b3JrZXI9JXAi
LCB3b3JrZXIgPyB3b3JrZXItPmlkZW50aWZpZXIudG9VSW50NjQoKSA6IDAsIHdvcmtlci5nZXQo
KSk7CisgICAgaWYgKCF3b3JrZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIGNvbnRl
eHRDb25uZWN0aW9uID0gY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbih3b3Jr
ZXItPnJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pCisg
ICAgICAgIHJldHVybjsKKworICAgIGNvbnRleHRDb25uZWN0aW9uLT50ZXJtaW5hdGVTaGFyZWRX
b3JrZXIod29ya2VyLT5pZGVudGlmaWVyKTsKKworICAgIGlmICghbmVlZHNDb250ZXh0Q29ubmVj
dGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHdvcmtlci0+cmVnaXN0cmFibGVEb21haW4oKSkpCisg
ICAgICAgIGNvbnRleHRDb25uZWN0aW9uLT5jb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOwor
fQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29ubmVjdGlvbihzdGQ6OnVuaXF1
ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQorewor
ICAgIGF1dG8gcHJvY2Vzc0lkZW50aWZpZXIgPSBjb25uZWN0aW9uLT53ZWJQcm9jZXNzSWRlbnRp
ZmllcigpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNl
cnZlcjo6YWRkQ29ubmVjdGlvbiglcCk6IHByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgY29u
bmVjdGlvbi5nZXQoKSwgcHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgQVNTRVJU
KCFtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKHByb2Nlc3NJZGVudGlmaWVyKSk7CisgICAgbV9jb25u
ZWN0aW9ucy5hZGQocHJvY2Vzc0lkZW50aWZpZXIsIFdURk1vdmUoY29ubmVjdGlvbikpOworfQor
Cit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlvbihXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGNvbm5lY3Rp
b24gPSBtX2Nvbm5lY3Rpb25zLnRha2UocHJvY2Vzc0lkZW50aWZpZXIpOworICAgIFJFTEVBU0Vf
TE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlv
biglcCk6IHByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgY29ubmVjdGlvbi5nZXQoKSwgcHJv
Y2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgQVNTRVJUKGNvbm5lY3Rpb24pOworCisg
ICAgVmVjdG9yPFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI+IHNoYXJlZFdv
cmtlck9iamVjdHNHb2luZ0F3YXk7CisgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3NoYXJlZFdv
cmtlcnMudmFsdWVzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyIDogd29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzLmtleXMoKSkgeworICAgICAg
ICAgICAgaWYgKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIo
KSA9PSBwcm9jZXNzSWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICBzaGFyZWRXb3JrZXJPYmpl
Y3RzR29pbmdBd2F5LmFwcGVuZChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBmb3IgKGF1dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA6
IHNoYXJlZFdvcmtlck9iamVjdHNHb2luZ0F3YXkpCisgICAgICAgIHNoYXJlZFdvcmtlck9iamVj
dElzR29pbmdBd2F5KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworfQorCitXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6OlNoYXJlZFdvcmtlcjo6U2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBjb25zdCBVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6V29y
a2VyT3B0aW9ucyYgd29ya2VyT3B0aW9ucykKKyAgICA6IGlkZW50aWZpZXIoV2ViQ29yZTo6U2hh
cmVkV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKKyAgICAsIG9yaWdpbihvcmlnaW4pCisg
ICAgLCB1cmwodXJsKQorICAgICwgd29ya2VyT3B0aW9ucyh3b3JrZXJPcHRpb25zKQoreworfQor
Cit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0
KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBhdXRvKiB3b3JrZXIgPSBzaGFy
ZWRXb3JrZXJCeUlkZW50aWZpZXIoc2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgUkVMRUFT
RV9MT0dfRVJST1IoU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpwb3N0RXhj
ZXB0aW9uVG9Xb3JrZXJPYmplY3Q6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIs
IHdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSwgd29ya2VyKTsK
KyAgICBpZiAoIXdvcmtlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvIHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIgOiB3b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMua2V5
cygpKSB7CisgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9u
cy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkK
KyAgICAgICAgICAgIHNlcnZlckNvbm5lY3Rpb24tPnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVj
dChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgc291cmNlVVJMKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLmNlYjYyM2NjNmU1NgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNl
cnZlci5oCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9S
ZWdpc3RyYWJsZURvbWFpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dElkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZp
ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcktleS5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
VHJhbnNmZXJyZWRNZXNzYWdlUG9ydC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyRmV0Y2hS
ZXN1bHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlck9wdGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgQ2xpZW50T3JpZ2lu
OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya1Nlc3Npb247CitjbGFz
cyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVy
IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlcj4geworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYlNoYXJlZFdv
cmtlclNlcnZlcihOZXR3b3JrU2Vzc2lvbiYpOworICAgIH5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIo
KTsKKworICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpOworCisgICAgdm9pZCByZXF1ZXN0
U2hhcmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9y
dCYmLCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYpOworICAgIHZvaWQgc2hhcmVkV29ya2VyT2Jq
ZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisK
KyAgICB2b2lkIGFkZENvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24mKTsKKyAgICB2b2lkIHJlbW92ZUNvbnRleHRDb25uZWN0aW9uKFdlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKKworICAgIHZvaWQgYWRkQ29u
bmVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4m
Jik7CisgICAgdm9pZCByZW1vdmVDb25uZWN0aW9uKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
KTsKKworICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIGNvbnRl
eHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mIGRvbWFpbikgeyByZXR1cm4gbV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0KGRvbWFp
bik7IH0KKworICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNo
YXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCitw
cml2YXRlOgorICAgIHZvaWQgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mKTsKKworICAgIGJvb2wgbmVlZHNDb250ZXh0Q29ubmVjdGlvbkZv
clJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikgY29u
c3Q7CisgICAgdm9pZCBjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOworCisgICAgc3RydWN0IFNoYXJlZFdvcmtlciA6IENh
bk1ha2VXZWFrUHRyPFNoYXJlZFdvcmtlcj4geworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURUQ7CisKKyAgICAgICAgU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmKTsKKwor
ICAgICAgICBib29sIGRpZEZpbmlzaEZldGNoaW5nKCkgY29uc3QgeyByZXR1cm4gISFmZXRjaFJl
c3VsdC5zY3JpcHQ7IH0KKyAgICAgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5IGtleSgpIGNv
bnN0IHsgcmV0dXJuIHsgb3JpZ2luLCB1cmwsIHdvcmtlck9wdGlvbnMubmFtZSB9OyB9CisgICAg
ICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3Qg
eyByZXR1cm4gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfTsgfQorCisgICAgICAg
IFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICAgICAgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbjsKKyAgICAgICAgVVJMIHVybDsKKyAgICAgICAgV2Vi
Q29yZTo6V29ya2VyT3B0aW9ucyB3b3JrZXJPcHRpb25zOworICAgICAgICBIYXNoTWFwPFdlYkNv
cmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVz
c2FnZVBvcnQ+IHNoYXJlZFdvcmtlck9iamVjdHM7CisgICAgICAgIFdlYkNvcmU6OldvcmtlckZl
dGNoUmVzdWx0IGZldGNoUmVzdWx0OworICAgICAgICBib29sIGlzUnVubmluZyB7IGZhbHNlIH07
CisgICAgfTsKKworICAgIFNoYXJlZFdvcmtlciogc2hhcmVkV29ya2VyQnlJZGVudGlmaWVyKFdl
YkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworICAgIFNoYXJlZFdvcmtlciogc2hhcmVk
V29ya2VyQnlPYmplY3RJZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIpOworICAgIHZvaWQgZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRXb3JrZXJTY3JpcHQoU2hh
cmVkV29ya2VyJiwgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJik7CisgICAgdm9pZCBsYXVu
Y2hTaGFyZWRXb3JrZXIoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYs
IFNoYXJlZFdvcmtlciYpOworICAgIHZvaWQgcG9zdENvbm5lY3RFdmVudChXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYsIGNvbnN0IFN0cmlu
ZyYgc291cmNlT3JpZ2luKTsKKyAgICB2b2lkIHNodXREb3duU2hhcmVkV29ya2VyKGNvbnN0IFdl
YkNvcmU6OlNoYXJlZFdvcmtlcktleSYpOworCisgICAgTmV0d29ya1Nlc3Npb24mIG1fc2Vzc2lv
bjsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9w
dHI8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4+IG1fY29ubmVjdGlvbnM7CisgICAg
SGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbio+IG1fY29udGV4dENvbm5lY3Rpb25zOworICAgIEhhc2hTZXQ8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9t
YWluczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSwgc3RkOjp1bmlxdWVf
cHRyPFNoYXJlZFdvcmtlcj4+IG1fc2hhcmVkV29ya2VyczsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRX
b3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZjOWI4ODY4
ZjNhNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hh
cmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEs
MTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNp
bmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbk1l
c3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Xb3JrZXJGZXRjaFJlc3VsdC5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4u
KSBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0l
IiBQUkl1NjQgIl0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6IiBmbXQsIHRoaXMs
IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZp
bmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJS
T1IoU2hhcmVkV29ya2VyLCAiJXAgLSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJd
IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OiIgZm10LCB0aGlzLCBtX3dlYlByb2Nl
c3NJZGVudGlmaWVyLnRvVUludDY0KCksICMjX19WQV9BUkdTX18pCisKK1dlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb246OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oTmV0d29y
a1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlciwg
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3
ZWJQcm9jZXNzSWRlbnRpZmllcikKKyAgICA6IG1fY29udGVudENvbm5lY3Rpb24oY29ubmVjdGlv
bikKKyAgICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCisgICAgLCBtX3NlcnZl
cihzZXJ2ZXIpCisgICAgLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKHdlYlByb2Nlc3NJZGVudGlm
aWVyKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coIldlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb246Iik7Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246On5X
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVB
U0VfTE9HKCJ+V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjoiKTsKK30KKworSVBDOjpD
b25uZWN0aW9uKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVy
Q29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGVudENvbm5lY3Rpb24ucHRy
KCk7Cit9CisKK1BBTDo6U2Vzc2lvbklEIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246
OnNlc3Npb25JRCgpCit7CisgICAgcmV0dXJuIHNlcnZlcigpLnNlc3Npb25JRCgpOworfQorCitO
ZXR3b3JrU2Vzc2lvbiogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2Vzc2lvbigp
Cit7CisgICAgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCgpKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpyZXF1ZXN0
U2hhcmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgV2ViQ29yZTo6U2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBV
UkwmJiB1cmwsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBXZWJDb3Jl
OjpXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucykKK3sKKyAgICBBU1NFUlQoc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fd2ViUHJvY2Vzc0lk
ZW50aWZpZXIpOyAvLyBGSVhNRTogU2hvdWxkIGJlIGEgTUVTU0FHRV9DSEVDSygpLgorICAgIENP
Tk5FQ1RJT05fUkVMRUFTRV9MT0coInJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIu
dG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHRoaXMt
PnNlc3Npb24oKSkKKyAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCku
cmVxdWVzdFNoYXJlZFdvcmtlcihXVEZNb3ZlKG9yaWdpbiksIHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIsIFdURk1vdmUodXJsKSwgV1RGTW92ZShwb3J0KSwgV1RGTW92ZSh3b3JrZXJPcHRp
b25zKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6ZmV0Y2hT
Y3JpcHRJbkNsaWVudChjb25zdCBVUkwmIHVybCwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpX
b3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNv
cmU6OldvcmtlckZldGNoUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIENP
Tk5FQ1RJT05fUkVMRUFTRV9MT0coImZldGNoU2NyaXB0SW5DbGllbnQ6IHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIu
dG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OkZldGNoU2NyaXB0SW5DbGllbnQg
eyB1cmwsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHdvcmtlck9wdGlvbnMgfSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb246Om5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24oV2ViQ29yZTo6
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBDT05ORUNUSU9O
X1JFTEVBU0VfTE9HKCJub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uOiBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMsIHN1Y2Nlc3M9JWQiLCBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuaXNOdWxs
KCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246
Ok5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24geyBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLCBlcnJvciB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1Io
InBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdDogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
cj0le3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb246OlBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdCB7IHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3Vy
Y2VVUkwgfSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2hh
cmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQoreworICAgIEFTU0VSVChzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9j
ZXNzSWRlbnRpZmllcik7IC8vIEZJWE1FOiBTaG91bGQgYmUgYSBNRVNTQUdFX0NIRUNLKCkuCisg
ICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygic2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXk6
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAoYXV0byog
c2Vzc2lvbiA9IHRoaXMtPnNlc3Npb24oKSkKKyAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU2hhcmVk
V29ya2VyU2VydmVyKCkuc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllcik7Cit9CisKKyN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HCisj
dW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUgorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2Vy
L1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQzZGU0ZTFiNDliZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2Vy
L1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaApAQCAtMCwwICsxLDc4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNp
bmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRp
Zmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7CitzdHJ1
Y3QgV29ya2VyT3B0aW9uczsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdv
cmtQcm9jZXNzOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyOworY2xhc3MgV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKKworY2xhc3MgV2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbiA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbihOZXR3b3JrUHJvY2VzcyYsIFdl
YlNoYXJlZFdvcmtlclNlcnZlciYsIElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyKTsKKyAgICB+V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpOworCisg
ICAgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIoKSB7IHJldHVybiBtX3NlcnZlcjsgfQor
ICAgIGNvbnN0IFdlYlNoYXJlZFdvcmtlclNlcnZlciYgc2VydmVyKCkgY29uc3QgeyByZXR1cm4g
bV9zZXJ2ZXI7IH0KKworICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpOworICAgIE5ldHdv
cmtTZXNzaW9uKiBzZXNzaW9uKCk7CisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2Vi
UHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3dlYlByb2Nlc3NJZGVudGlmaWVy
OyB9CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpIGZpbmFsOworCisgICAgdm9pZCBmZXRjaFNjcmlwdEluQ2xpZW50KGNvbnN0IFVS
TCYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
Oldvcmtlck9wdGlvbnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldvcmtlckZl
dGNoUmVzdWx0JiYpPiYmKTsKKyAgICB2b2lkIG5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENvbXBs
ZXRpb24oV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpOworICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0
KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwpOworCitwcml2YXRlOgorICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlci4KKyAg
ICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7
CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiAwOyB9CisKKyAgICAvLyBJUEMgbWVzc2FnZXMuCisgICAgdm9pZCByZXF1ZXN0U2hh
cmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYm
LCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYpOworICAgIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0
SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisKKyAg
ICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2NvbnRlbnRDb25uZWN0aW9uOworICAgIFJlZjxOZXR3
b3JrUHJvY2Vzcz4gbV9uZXR3b3JrUHJvY2VzczsKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIm
IG1fc2VydmVyOworICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lk
ZW50aWZpZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1No
YXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmFlNGEwODAzNzc5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI2
IEBACisjIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+
IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CisgICAgUmVx
dWVzdFNoYXJlZFdvcmtlcihzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgV2Vi
Q29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLCBVUkwgdXJsLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0IHBvcnQsIHN0
cnVjdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdvcmtlck9wdGlvbnMpCisgICAgU2hhcmVkV29y
a2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJl
ZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjQ5YzExMjQxNTIxOAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTA3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUg
IldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisj
ZGVmaW5lIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9M
T0coU2hhcmVkV29ya2VyLCAiJXAgLSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJd
IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OiIgZm10LCB0aGlzLCB3
ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUludDY0KCksICMjX19WQV9BUkdTX18pCisKK1dlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNoYXJlZFdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5l
Y3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFp
biwgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIpCisgICAgOiBtX2Nvbm5lY3Rpb24oY29u
bmVjdGlvbikKKyAgICAsIG1fc2VydmVyKHNlcnZlcikKKyAgICAsIG1fcmVnaXN0cmFibGVEb21h
aW4ocmVnaXN0cmFibGVEb21haW4pCit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0Vf
TE9HKCJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOiIpOworICAgIHNl
cnZlci5hZGRDb250ZXh0Q29ubmVjdGlvbigqdGhpcyk7Cit9CisKK1dlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246On5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKCkKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coIn5XZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOiIpOworICAgIGlmIChtX3NlcnZl
ciAmJiBtX3NlcnZlci0+Y29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdp
c3RyYWJsZURvbWFpbigpKSA9PSB0aGlzKQorICAgICAgICBtX3NlcnZlci0+cmVtb3ZlQ29udGV4
dENvbm5lY3Rpb24oKnRoaXMpOworfQorCitXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp3ZWJQcm9jZXNzSWRlbnRpZmll
cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmll
cigpOworfQorCitJUEM6OkNvbm5lY3Rpb24mIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OmlwY0Nvbm5lY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX2Nvbm5l
Y3Rpb24uY29ubmVjdGlvbigpOworfQorCitJUEM6OkNvbm5lY3Rpb24qIFdlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gJmlwY0Nvbm5lY3Rpb24oKTsKK30KKwordWludDY0X3QgV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckRlc3RpbmF0
aW9uSUQoKSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkK
K3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coImNvbm5lY3Rpb25Jc05vTG9u
Z2VyTmVlZGVkOiIpOworICAgIG1fY29ubmVjdGlvbi5zaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JF
TEVBU0VfTE9HKCJwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Q6IHNoYXJlZFdvcmtlcklkZW50
aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAg
IGlmIChtX3NlcnZlcikKKyAgICAgICAgbV9zZXJ2ZXItPnBvc3RFeGNlcHRpb25Ub1dvcmtlck9i
amVjdChzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgc291cmNlVVJMKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpsYXVuY2hTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVk
V29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9w
dGlvbnMmIHdvcmtlck9wdGlvbnMsIGNvbnN0IFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiBm
ZXRjaFJlc3VsdCkKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coImxhdW5j
aFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdv
cmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpMYXVuY2hTaGFyZWRXb3JrZXIgeyBvcmln
aW4sIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIHVybCwgd29ya2VyT3B0aW9ucywgZmV0Y2hSZXN1
bHQgfSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6cG9zdENvbm5lY3RFdmVudChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJl
ZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQm
IHBvcnQsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQoreworICAgIENPTlRFWFRfQ09OTkVD
VElPTl9SRUxFQVNFX0xPRygicG9zdENvbm5lY3RFdmVudDogc2hhcmVkV29ya2VySWRlbnRpZmll
cj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpQb3N0
Q29ubmVjdEV2ZW50IHsgc2hhcmVkV29ya2VySWRlbnRpZmllciwgcG9ydCwgc291cmNlT3JpZ2lu
IH0pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OnRlcm1pbmF0ZVNoYXJlZFdvcmtlcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNo
YXJlZFdvcmtlcklkZW50aWZpZXIpCit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0Vf
TE9HKCJ0ZXJtaW5hdGVTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJ
dTY0LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VGVybWluYXRlU2hh
cmVkV29ya2VyIHsgc2hhcmVkV29ya2VySWRlbnRpZmllciB9KTsKK30KKworI3VuZGVmIENPTlRF
WFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmI2NzNlY2Fl
MjgzZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hh
cmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAt
MCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNz
YWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiV2Vi
UGFnZVByb3h5SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21h
aW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1RyYW5zZmVycmVkTWVzc2FnZVBvcnQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgUmVnaXN0cmFibGVEb21haW47CitjbGFzcyBTY3JpcHRCdWZmZXI7CitzdHJ1
Y3QgQ2xpZW50T3JpZ2luOworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0Oworc3RydWN0IFdvcmtl
ck9wdGlvbnM7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzczsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlcjsKKworY2xhc3Mg
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2ViU2hhcmVkV29ya2VyU2VydmVyJik7Cisg
ICAgfldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKKworICAgIFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3Q7Cisg
ICAgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKCkg
Y29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQorICAgIElQQzo6Q29ubmVjdGlv
biYgaXBjQ29ubmVjdGlvbigpIGNvbnN0OworCisgICAgdm9pZCBsYXVuY2hTaGFyZWRXb3JrZXIo
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRp
ZmllciwgY29uc3QgVVJMJiwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYsIGNvbnN0IFdl
YkNvcmU6OldvcmtlckZldGNoUmVzdWx0Jik7CisgICAgdm9pZCBwb3N0Q29ubmVjdEV2ZW50KFdl
YkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVk
TWVzc2FnZVBvcnQmLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CisgICAgdm9pZCB0ZXJt
aW5hdGVTaGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllcik7CisKKyAg
ICB2b2lkIGNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7CisKKyAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCitwcml2
YXRlOgorICAgIC8vIElQQyBtZXNzYWdlcy4KKyAgICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtl
ck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlci4KKyAgICBJUEM6OkNv
bm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWlu
dDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKKworICAgIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2Nvbm5lY3Rpb247CisgICAgV2Vha1B0cjxX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI+IG1fc2VydmVyOworICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIG1fcmVnaXN0cmFibGVEb21haW47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uYWU0N2MxMjJjYmFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI1IEBACisjIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFdlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CisgICAgUG9zdEV4
Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hh
cmVkV29ya2VySWRlbnRpZmllciwgU3RyaW5nIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIFN0cmluZyBzb3VyY2VVUkwpCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9n
Z2luZy5oCmluZGV4IDFjNDJkMDQwYzFhOS4uZGUzMmY4MTcxNzE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0xvZ2dpbmcuaApAQCAtOTcsNiArOTcsNyBAQCBleHRlcm4gIkMiIHsKICAgICBNKFNlcnZpY2VX
b3JrZXIpIFwKICAgICBNKFNlc3Npb25TdGF0ZSkgXAogICAgIE0oU2hhcmVkRGlzcGxheUxpc3Rz
KSBcCisgICAgTShTaGFyZWRXb3JrZXIpIFwKICAgICBNKFN0b3JhZ2UpIFwKICAgICBNKFN0b3Jh
Z2VBUEkpIFwKICAgICBNKFRleHRJbnB1dCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKaW5kZXggN2ViZmE1MTZiNTAzLi40YzhjYWQwNDY0NzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMzAzLDEwICszMDMsMTMgQEAgZGVm
IHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYkNv
cmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6
U2hhcmVkU3RyaW5nSGFzaCcsCisgICAgICAgICdXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlm
aWVyJywKKyAgICAgICAgJ1dlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXInLAog
ICAgICAgICAnV2ViQ29yZTo6U2xlZXBEaXNhYmxlcklkZW50aWZpZXInLAogICAgICAgICAnV2Vi
Q29yZTo6U291cmNlQnVmZmVyQXBwZW5kTW9kZScsCiAgICAgICAgICdXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6
OlN0b3JhZ2VUeXBlJywKKyAgICAgICAgJ1dlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQn
LAogICAgICAgICAnV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdElkZW50aWZpZXInLAogICAgICAg
ICAnV2ViQ29yZTo6V2ViTG9ja0lkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6V2ViU29j
a2V0SWRlbnRpZmllcicsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAxZTliZjE3YzRlNmMuLmQ5ZTYwY2U3ODk4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CkBAIC0xNDEsNiArMTQxLDEwIEBAIE5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dPcmlnaW5TdG9yZS5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAg
QG5vLXVuaWZ5CiAKK05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbi5jcHAKK05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorCiBOZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVT
eXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkuY3BwCkBAIC03ODMsOCArNzg3LDkgQEAgV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAogV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFibGUuY3BwCiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2
aWNlV29ya2VyUHJvdmlkZXIuY3BwCi1XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2Vy
UHJvdmlkZXIuY3BwCitXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24uY3BwCitXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJv
dmlkZXIuY3BwCiAKIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyLmNwcAogCkBAIC04ODcsMyArODkyLDcgQEAgUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5TWVzc2Fn
ZVJlY2VpdmVyLmNwcAogU2VydmljZVdvcmtlckRvd25sb2FkVGFza01lc3NhZ2VSZWNlaXZlci5j
cHAKIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeU1lc3NhZ2VSZWNlaXZlci5jcHAKIFdlYkxv
Y2tSZWdpc3RyeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKK1dlYlNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggYTY3ODM2
N2E3NzVhLi4zMzAyMGJkNWMzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTI5LDcgKzUyOSw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6dGVybWluYXRlV2ViUHJvY2VzcyhXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1p
bmF0ZVVucmVzcG9uc2l2ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIpCiB7CiAgICAgaWYgKFJlZlB0ciBwcm9jZXNzID0g
V2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihwcm9jZXNzSWRlbnRpZmllcikp
IHsKLSAgICAgICAgcHJvY2Vzcy0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgICAgIHBy
b2Nlc3MtPmRpc2FibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2Vydmlj
ZVdvcmtlcik7CiAgICAgICAgIHByb2Nlc3MtPnJlcXVlc3RUZXJtaW5hdGlvbihQcm9jZXNzVGVy
bWluYXRpb25SZWFzb246OkV4Y2VlZGVkQ1BVTGltaXQpOwogICAgIH0KIH0KQEAgLTE0MTUsMTYg
KzE0MTUsMjEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWREZXN0cm95V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkoV2ViVXNlckNvbnRlbnQKIH0KICNlbmRpZgogCit2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxl
RG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNo
U2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUocmVn
aXN0cmFibGVEb21haW4pLCBzZXNzaW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
K30KKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyhSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZp
ZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2
aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKCp0aGlzLCBXVEZNb3Zl
KHJlZ2lzdHJhYmxlRG9tYWluKSwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBzZXNzaW9u
SUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0
YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXVEZN
b3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBzZXNz
aW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpzZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIGlmIChhdXRvKiBw
cm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihpZGVudGlmaWVy
KSkKLSAgICAgICAgcHJvY2Vzcy0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgICAgIHBy
b2Nlc3MtPmRpc2FibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2Vydmlj
ZVdvcmtlcik7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVnaXN0ZXJTZXJ2aWNl
V29ya2VyQ2xpZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNz
SWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nl
c3NJZGVudGlmaWVyKQpAQCAtMTQ2MCw2ICsxNDY1LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6ZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nl
c3NJCiB9CiAjZW5kaWYKIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzaGFyZWRXb3JrZXJD
b250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
IGlkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6
OnByb2Nlc3NGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIpKQorICAgICAgICBwcm9jZXNzLT5kaXNh
YmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlcik7Cit9
CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCB1
aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFj
ZVJlcXVpcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IHF1b3RhKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSRUxFQVNFX0xPRyhTdG9yYWdl
LCAiJXAgLSBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlIiwgdGhpcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oCmluZGV4IGE0ZTM2NDVlYmFhZS4uNjg0MWEzNGZlMDlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApA
QCAtMzM0LDYgKzMzNCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFNlcnZpY2VXb3JrZXJC
YWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29y
a2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIHZvaWQgZW5kU2VydmljZVdvcmtlckJhY2tncm91
bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzSWRlbnRpZmllcik7CiAjZW5kaWYKKyAgICB2b2lkIHNoYXJlZFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOworICAgIHZv
aWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCB0ZXJtaW5hdGVXZWJQcm9jZXNzKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmlu
ZGV4IDEyZDA2Y2ViZDYyYS4uMTU3NTdlZDlhMjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3Nh
Z2VzLmluCkBAIC02MCw2ICs2MCw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkg
TGVnYWN5UmVjZWl2ZXIgewogICAgIFN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNz
aW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRp
ZmllcikKICAgICBFbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQogI2VuZGlm
CisgICAgRXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCisgICAgU2hhcmVkV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlm
aWVyKQogCiAgICAgU2V0V2ViUHJvY2Vzc0hhc1VwbG9hZHMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIgcHJvY2Vzc0lELCBib29sIGhhc1VwbG9hZCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZTQ5OTM1YzMyNWY2Li4xYWNiMzQ0NGFmYTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzY5MSwxMSArMzY5MSw5
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KQog
ICAgICAgICByZXR1cm47CiAgICAgbV91c2VyQWdlbnQgPSBXVEZNb3ZlKHVzZXJBZ2VudCk7CiAK
LSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgLy8gV2UgdXBkYXRlIHRoZSBzZXJ2aWNl
IHdvcmtlciB0aGVyZSBhdCB0aGUgbW9tZW50IHRvIGJlIHN1cmUgd2UgdXNlIHZhbHVlcyB1c2Vk
IGJ5IGFjdHVhbCB3ZWIgcGFnZXMuCiAgICAgLy8gRklYTUU6IFJlZmFjdG9yIHRoaXMgd2hlbiB3
ZSBoYXZlIGEgYmV0dGVyIFVzZXItQWdlbnQgc3RvcnkuCi0gICAgcHJvY2VzcygpLnByb2Nlc3NQ
b29sKCkudXBkYXRlU2VydmljZVdvcmtlclVzZXJBZ2VudChtX3VzZXJBZ2VudCk7Ci0jZW5kaWYK
KyAgICBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS51cGRhdGVXb3JrZXJVc2VyQWdlbnQobV91c2Vy
QWdlbnQpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggYWZjMjNl
ZTUzZjEyLi40YjE5YjBkMWQzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKQEAgLTUyOSw3ICs1MjksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRX
ZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Bybwog
Ym9vbCBXZWJQcm9jZXNzUG9vbDo6c191c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzID0g
ZmFsc2U7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3NQb29s
Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KE5ldHdvcmtQcm9jZXNzUHJveHkmIHByb3h5LCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJh
YmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
PiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQ
cm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9w
dGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8qIHdlYnNpdGVEYXRhU3Rv
cmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChzZXNz
aW9uSUQpOwogICAgIGlmICghd2Vic2l0ZURhdGFTdG9yZSkKQEAgLTU0Niw3ICs1NDYsNyBAQCB2
b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzKE5ldAogICAgIGlmIChzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZp
ZXIpIHsKICAgICAgICAgLy8gVGhpcyBpcyBhIHNlcnZpY2Ugd29ya2VyIGZvciBhIHNlcnZpY2Ug
d29ya2VyIHBhZ2Ugc28gd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgdXNlIHVzZSB0aGUgcGFnZSdz
IFdlYlByb2Nlc3MgZm9yIHRoZSBzZXJ2aWNlIHdvcmtlci4KICAgICAgICAgaWYgKChzZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmll
cihzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXItPnByb2Nlc3NJZGVudGlmaWVyKCkpKSkgewot
ICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlU2VydmljZVdvcmtl
cnMocHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2aWNl
V29ya2VycygpKTsKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJs
ZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBwcm9j
ZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CiAg
ICAgICAgICAgICBpZiAoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNo
ZSgpKSB7CiAgICAgICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLnJl
bW92ZVByb2Nlc3MoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NDYWNoZTo6
U2hvdWxkU2h1dERvd25Qcm9jZXNzOjpObyk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFzZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpOwpAQCAtNTY0LDcgKzU2
NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0CiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBwcm9jZXNzLnB0cigp
OwotICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlU2VydmljZVdv
cmtlcnMocHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2
aWNlV29ya2VycygpKTsKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVu
YWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBw
cm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7
CiAKICAgICAgICAgICAgIGlmIChzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vz
c0NhY2hlKCkpIHsKICAgICAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hl
KCkucmVtb3ZlUHJvY2Vzcygqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0Nh
Y2hlOjpTaG91bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKE5ldAogICAgIH0KIAogICAgIGlmICghc2VydmljZVdvcmtlclByb2Nl
c3NQcm94eSkgewotICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94
eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMoKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFp
biAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIGF1
dG8gbmV3UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdl
YlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgKnByb2Nlc3NQb29sLCBS
ZWdpc3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9y
ZSk7CiAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBuZXdQcm9jZXNzUHJveHku
cHRyKCk7CiAKICAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElDKFNlcnZp
Y2VXb3JrZXIsICJlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzIGNyZWF0aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nlcz0l
cCwgUElEPSVkKSIsIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOwpAQCAtNTg2LDIwICs1ODYsNzAgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhOZXQKICAgICAgICAgcHJvY2Vzc1Bvb2wtPm1fcHJvY2Vzc2VzLmFw
cGVuZChXVEZNb3ZlKG5ld1Byb2Nlc3NQcm94eSkpOwogICAgIH0KIAotICAgIEFTU0VSVCghc2Vy
dmljZVdvcmtlclByb2Nlc3NlcygpLmNvbnRhaW5zKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
KSk7Ci0gICAgc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2VydmljZVdvcmtlclByb2Nl
c3NQcm94eSk7CisgICAgd29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5KTsKIAotICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZp
Y2VXb3JrZXJDb250ZXh0KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA/
IHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vz
c1Bvb2wtPm1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3Ry
YWJsZURvbWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7Ci0gICAgaWYgKCFwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyVXNlckFn
ZW50LmlzTnVsbCgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRTZXJ2
aWNlV29ya2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQp
OworICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZpY2VXb3JrZXJD
b250ZXh0KHByb2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bvb2wtPm1f
d29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3Jv
dXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3Jr
ZXJQYWdlSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmICgh
cHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQorICAgICAgICBzZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRXb3JrZXJVc2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fd29y
a2VyVXNlckFnZW50KTsKIH0KKyNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVG
cm9tU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCit2b2lk
IFdlYlByb2Nlc3NQb29sOjpyZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94
eSYgcHJvY2VzcykKIHsKLSAgICBBU1NFUlQoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmNvbnRh
aW5zKHByb2Nlc3MpKTsKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkucmVtb3ZlKHByb2Nl
c3MpOworICAgIEFTU0VSVCh3b3JrZXJQcm9jZXNzZXMoKS5jb250YWlucyhwcm9jZXNzKSk7Cisg
ICAgd29ya2VyUHJvY2Vzc2VzKCkucmVtb3ZlKHByb2Nlc3MpOworfQorCit2b2lkIFdlYlByb2Nl
c3NQb29sOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRh
U3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Npb25JRCk7CisgICAgaWYg
KCF3ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOworICAgIGlmICghcHJvY2Vzc1Bvb2xz
KCkuc2l6ZSgpKQorICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPFdlYlByb2Nlc3NQ
b29sPj4gc2hhcmVkV29ya2VyUHJvY2Vzc1Bvb2woV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCkuZ2V0KCkpKTsKKworICAgIC8vIEFy
Yml0cmFyaWx5IGNob29zZSB0aGUgZmlyc3QgcHJvY2VzcyBwb29sIHRvIGhvc3QgdGhlIHNoYXJl
ZCB3b3JrZXIgcHJvY2Vzcy4KKyAgICBhdXRvKiBwcm9jZXNzUG9vbCA9IHByb2Nlc3NQb29scygp
WzBdOworICAgIEFTU0VSVChwcm9jZXNzUG9vbCk7CisKKyAgICBXZWJQcm9jZXNzUHJveHkqIHNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eSB7IG51bGxwdHIgfTsKKworICAgIGZvciAoYXV0byYgcHJv
Y2VzcyA6IHByb2Nlc3NQb29sLT5tX3Byb2Nlc3NlcykgeworICAgICAgICBpZiAocHJvY2Vzcy5w
dHIoKSA9PSBwcm9jZXNzUG9vbC0+bV9wcmV3YXJtZWRQcm9jZXNzLmdldCgpIHx8IHByb2Nlc3Mt
PmlzRHVtbXlQcm9jZXNzUHJveHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBp
ZiAoJnByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlKQorICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghcHJvY2Vzcy0+aXNNYXRjaGluZ1JlZ2lz
dHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSA9IHByb2Nlc3MucHRyKCk7CisgICAg
ICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlV29ya2VycyhXZWJQcm9jZXNzUHJv
eHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOworCisgICAgICAgIGlmIChzaGFyZWRXb3Jr
ZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSkgeworICAgICAgICAgICAgcHJvY2Vz
c1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nlc3MoKnNoYXJlZFdvcmtlclByb2Nl
c3NQcm94eSwgV2ViUHJvY2Vzc0NhY2hlOjpTaG91bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKKyAg
ICAgICAgICAgIEFTU0VSVCghc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0Nh
Y2hlKCkpOworICAgICAgICB9CisKKyAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0df
U1RBVElDKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2VzcyByZXVzaW5nIGFuIGV4aXN0aW5nIHdlYiBwcm9jZXNzIChwcm9j
ZXNzPSVwLCBQSUQ9JWQpIiwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LCBzaGFyZWRXb3JrZXJQ
cm9jZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICBicmVhazsKKyAgICB9
CisKKyAgICBpZiAoIXNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSkgeworICAgICAgICBhdXRvIG5l
d1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yV29ya2VycyhXZWJQcm9j
ZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgKnByb2Nlc3NQb29sLCBSZWdpc3Ry
YWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7Cisg
ICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSA9IG5ld1Byb2Nlc3NQcm94eS5wdHIoKTsK
KworICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoU2hhcmVkV29ya2Vy
LCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
IGNyZWF0aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nlc3M9JXAsIFBJRD0l
ZCkiLCBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHksIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+
cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmluaXRpYWxpemVO
ZXdXZWJQcm9jZXNzKG5ld1Byb2Nlc3NQcm94eSwgd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAg
IHByb2Nlc3NQb29sLT5tX3Byb2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdQcm9jZXNzUHJveHkp
KTsKKyAgICB9CisKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNoYXJlZFdvcmtlclByb2Nl
c3NQcm94eSk7CisKKyAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNoYXJl
ZFdvcmtlckNvbnRleHQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNz
UG9vbC0+bV93b3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVs
dFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJsZURvbWFpbiwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fd29ya2Vy
VXNlckFnZW50LmlzTnVsbCgpKQorICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPnNl
dFdvcmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV93b3JrZXJVc2VyQWdlbnQpOwogfQotI2Vu
ZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNo
YW5nZWQoKQogewpAQCAtMTAwMywxMCArMTA1Myw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRp
c2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIAogICAgIG1fYmFja0Zv
cndhcmRDYWNoZS0+cmVtb3ZlRW50cmllc0ZvclByb2Nlc3MocHJvY2Vzcyk7CiAKLSNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtl
cnMoKSkKLSAgICAgICAgcmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7
Ci0jZW5kaWYKKyAgICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdXb3JrZXJzKCkpCisgICAgICAgIHJl
bW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7CiAKICAgICBzdGF0aWNfY2FzdDxXZWJD
b250ZXh0U3VwcGxlbWVudCo+KHN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+
KCkpLT5wcm9jZXNzRGlkQ2xvc2UoJnByb2Nlc3MpOwogCkBAIC0xMDY3LDEyICsxMTE1LDEyIEBA
IFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFi
bGVEb21haW4oV2Vic2l0ZURhdGFTdG9yCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
Ci1Vc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIFdlYlByb2Nlc3NQb29sOjp1c2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKQorVXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllciBXZWJQcm9jZXNzUG9vbDo6dXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllckZvcldvcmtlcnMoKQogewotICAgIGlmICghbV91c2VyQ29udGVudENvbnRyb2xs
ZXJGb3JTZXJ2aWNlV29ya2VyKQotICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclNl
cnZpY2VXb3JrZXIgPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKCk7Cisg
ICAgaWYgKCFtX3VzZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtlcnMpCisgICAgICAgIG1fdXNl
ckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2VycyA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjpjcmVhdGUoKTsKIAotICAgIHJldHVybiBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclNl
cnZpY2VXb3JrZXItPmlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gbV91c2VyQ29udGVudENvbnRy
b2xsZXJGb3JXb3JrZXJzLT5pZGVudGlmaWVyKCk7CiB9CiAjZW5kaWYKIApAQCAtMTExOSwxNSAr
MTE2NywxMyBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFn
ZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogCiAgICAgYXV0byBwYWdlID0gcHJv
Y2Vzcy0+Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9u
KSk7CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKCFtX3NlcnZpY2VXb3Jr
ZXJQcmVmZXJlbmNlcykgewotICAgICAgICBtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA9IHBh
Z2UtPnByZWZlcmVuY2VzU3RvcmUoKTsKLSAgICAgICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2Vy
UHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSkKLSAgICAgICAgICAgIHNlcnZpY2VX
b3JrZXJQcm9jZXNzLnVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKCptX3NlcnZp
Y2VXb3JrZXJQcmVmZXJlbmNlcyk7CisgICAgaWYgKCFtX3dvcmtlclByZWZlcmVuY2VzKSB7Cisg
ICAgICAgIG1fd29ya2VyUHJlZmVyZW5jZXMgPSBwYWdlLT5wcmVmZXJlbmNlc1N0b3JlKCk7Cisg
ICAgICAgIGZvciAoYXV0byYgd29ya2VyUHJvY2VzcyA6IHdvcmtlclByb2Nlc3NlcygpKQorICAg
ICAgICAgICAgd29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKCptX3dv
cmtlclByZWZlcmVuY2VzKTsKICAgICB9CiAgICAgaWYgKHVzZXJDb250ZW50Q29udHJvbGxlcikK
LSAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyID0gdXNlckNv
bnRlbnRDb250cm9sbGVyOwotI2VuZGlmCisgICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVy
Rm9yV29ya2VycyA9IHVzZXJDb250ZW50Q29udHJvbGxlcjsKIAogICAgIGJvb2wgZW5hYmxlUHJv
Y2Vzc1N3YXBPbkNyb3NzU2l0ZU5hdmlnYXRpb24gPSBwYWdlLT5wcmVmZXJlbmNlcygpLnByb2Nl
c3NTd2FwT25Dcm9zc1NpdGVOYXZpZ2F0aW9uRW5hYmxlZCgpOwogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCkBAIC0xMTUwLDE2ICsxMTk2LDE0IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nl
c3NQb29sOjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAg
ICAgcmV0dXJuIHBhZ2U7CiB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdl
YlByb2Nlc3NQb29sOjp1cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYg
dXNlckFnZW50KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlV29ya2VyVXNlckFnZW50KGNv
bnN0IFN0cmluZyYgdXNlckFnZW50KQogewotICAgIGlmIChtX3NlcnZpY2VXb3JrZXJVc2VyQWdl
bnQgPT0gdXNlckFnZW50KQorICAgIGlmIChtX3dvcmtlclVzZXJBZ2VudCA9PSB1c2VyQWdlbnQp
CiAgICAgICAgIHJldHVybjsKLSAgICBtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQgPSB1c2VyQWdl
bnQ7Ci0gICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMoKSkKLSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3Muc2V0U2VydmljZVdvcmtl
clVzZXJBZ2VudChtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQpOworICAgIG1fd29ya2VyVXNlckFn
ZW50ID0gdXNlckFnZW50OworICAgIGZvciAoYXV0byYgd29ya2VyUHJvY2VzcyA6IHdvcmtlclBy
b2Nlc3NlcygpKQorICAgICAgICB3b3JrZXJQcm9jZXNzLnNldFdvcmtlclVzZXJBZ2VudChtX3dv
cmtlclVzZXJBZ2VudCk7CiB9Ci0jZW5kaWYKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUJl
Z2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBX
ZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCiB7CkBAIC0xNTM4LDggKzE1ODIsMTMgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlU2VydmljZVdvcmtlcnMoKQogewogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07Ci0gICAg
d2hpbGUgKHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb21wdXRlU2l6ZSgpKQotICAgICAgICBz
ZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkuYmVnaW4oKS0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7
CisgICAgVmVjdG9yPFJlZjxXZWJQcm9jZXNzUHJveHk+PiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
OworICAgIHdvcmtlclByb2Nlc3NlcygpLmZvckVhY2goWyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAg
ICAgICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKKyAgICAgICAgICAg
IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYXBwZW5kKHByb2Nlc3MpOworICAgIH0pOworICAgIGZv
ciAoYXV0byYgc2VydmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKQor
ICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1By
b3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgogfQogCkBAIC0xNzY3LDEz
ICsxODE2LDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcG9ydFdlYkNvbnRlbnRDUFVUaW1l
KFNlY29uZHMgY3B1VGltZSwgdWludDY0X3QgYWN0aXZpdHlTCiAjZW5kaWYKIH0KIAotI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKLVdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIFdlYlBy
b2Nlc3NQb29sOjpzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkKK1dlYWtIYXNoU2V0PFdlYlByb2Nl
c3NQcm94eT4mIFdlYlByb2Nlc3NQb29sOjp3b3JrZXJQcm9jZXNzZXMoKQogewogICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+PiBwcm9jZXNzZXM7
CiAgICAgcmV0dXJuIHByb2Nlc3NlczsKIH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29s
Ojp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpCiB7CkBAIC0xNzg1LDIwICsxODMyLDI1IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkKICAgICBpZiAoYXV0
byogZ3B1UHJvY2VzcyA9IEdQVVByb2Nlc3NQcm94eTo6c2luZ2xldG9uSWZDcmVhdGVkKCkpCiAg
ICAgICAgIGdwdVByb2Nlc3MtPnVwZGF0ZVByb2Nlc3NBc3NlcnRpb24oKTsKICNlbmRpZgotI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKKwogICAgIC8vIENoZWNrIG9uIG5leHQgcnVuIGxvb3Ag
c2luY2UgdGhlIHdlYiBwcm9jZXNzIHByb3h5IHRva2VucyBhcmUgcHJvYmFibHkgYmVpbmcgdXBk
YXRlZC4KICAgICBjYWxsT25NYWluUnVuTG9vcChbXSB7Ci0gICAgICAgIGZvciAoYXV0byYgc2Vy
dmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkpCi0gICAgICAgICAg
ICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy51cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlv
bigpOwotICAgIH0pOworICAgICAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFtdKGF1dG8m
IHdvcmtlclByb2Nlc3MpIHsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgICAgICAg
ICBpZiAod29ya2VyUHJvY2Vzcy5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQorICAgICAgICAg
ICAgICAgIHdvcmtlclByb2Nlc3MudXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXZWJQcm9j
ZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogI2VuZGlmCisgICAgICAgICAg
ICBpZiAod29ya2VyUHJvY2Vzcy5pc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkpCisgICAgICAgICAg
ICAgICAgd29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdlYlByb2Nl
c3NQcm94eTo6V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKTsKKyAgICAgICAgfSk7CisgICAgfSk7
CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6OmlzU2VydmljZVdvcmtlclBhZ2VJRChXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgaW5lZmZpY2llbnQuCi0gICAgcmV0dXJuIFdURjo6
YW55T2Yoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLCBbcGFnZUlEXShhdXRvJiBwcm9jZXNzKSB7
CisgICAgcmV0dXJuIFdURjo6YW55T2Yod29ya2VyUHJvY2Vzc2VzKCksIFtwYWdlSURdKGF1dG8m
IHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuIHByb2Nlc3MuaGFzU2VydmljZVdvcmtlclBhZ2VQ
cm94eShwYWdlSUQpOwogICAgIH0pOwogI2VuZGlmCkBAIC0yMTI0LDE2ICsyMTc2LDI2IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFVzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoYm9v
bCB1c2VTZXBhcmF0ZVNlcnZpY2VXCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCitz
aXplX3QgV2ViUHJvY2Vzc1Bvb2w6OnNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25zdAor
eworICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNo
KFsmXShhdXRvJiBwcm9jZXNzKSB7CisgICAgICAgIGlmIChwcm9jZXNzLmlzUnVubmluZ1NlcnZp
Y2VXb3JrZXJzKCkpCisgICAgICAgICAgICArK2NvdW50OworICAgIH0pOworICAgIHJldHVybiBj
b3VudDsKK30KKwogYm9vbCBXZWJQcm9jZXNzUG9vbDo6aGFzU2VydmljZVdvcmtlckZvcmVncm91
bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6OmFueU9mKHNl
cnZpY2VXb3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2VzcykgeworICAgIHJldHVybiBX
VEY6OmFueU9mKHdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAg
IHJldHVybiBwcm9jZXNzLmhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0
aW5nKCk7CiAgICAgfSk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6Omhhc1NlcnZpY2VXb3Jr
ZXJCYWNrZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RG
OjphbnlPZihzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKKyAg
ICByZXR1cm4gV1RGOjphbnlPZih3b3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2Vzcykg
ewogICAgICAgICByZXR1cm4gcHJvY2Vzcy5oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2
aXR5Rm9yVGVzdGluZygpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgKaW5kZXggZWI2NmQ4OTQ5MGRmLi5lNzBiNmY0MjlmN2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMzc0LDE3ICszNzQsMjAgQEAgcHVi
bGljOgogICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NEaWRUZXJtaW5hdGUoTmV0d29ya1Byb2Nlc3NQ
cm94eSYsIE5ldHdvcmtQcm9jZXNzUHJveHk6OlRlcm1pbmF0aW9uUmVhc29uKTsKIAogICAgIGJv
b2wgaXNTZXJ2aWNlV29ya2VyUGFnZUlEKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpIGNvbnN0Owor
ICAgIHZvaWQgcmVtb3ZlRnJvbVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmKTsKKwog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hTZXJ2
aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNz
UHJveHkmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlk
ZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwot
ICAgIHZvaWQgcmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5
Jik7Ci0gICAgc2l6ZV90IHNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25zdCB7IHJldHVy
biBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkuY29tcHV0ZVNpemUoKTsgfQotICAgIHZvaWQgdXBk
YXRlU2VydmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCk7Ci0gICAg
VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKTsKKyAgICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hTZXJ2
aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9u
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgc2l6ZV90IHNlcnZpY2VXb3Jr
ZXJQcm94aWVzQ291bnQoKSBjb25zdDsKKyAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyIHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCk7CiAgICAgYm9v
bCBoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0Owog
ICAgIGJvb2wgaGFzU2VydmljZVdvcmtlckJhY2tncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBj
b25zdDsKICNlbmRpZgogICAgIHZvaWQgc2VydmljZVdvcmtlclByb2Nlc3NDcmFzaGVkKFdlYlBy
b2Nlc3NQcm94eSYpOwogCisgICAgdm9pZCB1cGRhdGVXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQpOworICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYmLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKwogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgpIGNv
bnN0OwogI2VuZGlmCkBAIC02MTgsMTMgKzYyMSwxMSBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1h
cDxQQUw6OlNlc3Npb25JRCwgV2Vha1B0cjxXZWJQcm9jZXNzUHJveHk+PiBtX2R1bW15UHJvY2Vz
c1Byb3hpZXM7IC8vIExpZ2h0d2VpZ2h0IFdlYlByb2Nlc3NQcm94eSBvYmplY3RzIHdpdGhvdXQg
YmFja2luZyBwcm9jZXNzLgogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHN0YXRp
YyBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+JiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCk7
Ci0gICAgYm9vbCBtX3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24geyBm
YWxzZSB9OwotICAgIFN0cmluZyBtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQ7Ci0gICAgc3RkOjpv
cHRpb25hbDxXZWJQcmVmZXJlbmNlc1N0b3JlPiBtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlczsK
LSAgICBSZWZQdHI8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+IG1fdXNlckNvbnRlbnRD
b250cm9sbGVyRm9yU2VydmljZVdvcmtlcjsKLSNlbmRpZgorICAgIHN0YXRpYyBXZWFrSGFzaFNl
dDxXZWJQcm9jZXNzUHJveHk+JiB3b3JrZXJQcm9jZXNzZXMoKTsKKworICAgIHN0ZDo6b3B0aW9u
YWw8V2ViUHJlZmVyZW5jZXNTdG9yZT4gbV93b3JrZXJQcmVmZXJlbmNlczsKKyAgICBSZWZQdHI8
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+IG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9y
V29ya2VyczsKKyAgICBTdHJpbmcgbV93b3JrZXJVc2VyQWdlbnQ7CiAKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCiAgICAgUmVmUHRyPEdQVVByb2Nlc3NQcm94eT4gbV9ncHVQcm9jZXNzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggY2FjMzY3ZjEx
MTlmLi41Y2Y4NmNjNzg2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5j
bHVkZSAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgpAQCAtMTgyLDExICsxODMsMTEgQEAgUmVm
PFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wm
IHByb2Nlc3NQb29sLCBXZWJzaXQKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLVJl
ZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtl
cnMoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lz
dHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQorUmVmPFdl
YlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdvcmtlclR5
cGUgd29ya2VyVHlwZSwgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURv
bWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0
b3JlKQogewogICAgIGF1dG8gcHJveHkgPSBhZG9wdFJlZigqbmV3IFdlYlByb2Nlc3NQcm94eShw
cm9jZXNzUG9vbCwgJndlYnNpdGVEYXRhU3RvcmUsIElzUHJld2FybWVkOjpObywgQ3Jvc3NPcmln
aW5Nb2RlOjpTaGFyZWQsIENhcHRpdmVQb3J0YWxNb2RlOjpEaXNhYmxlZCkpOwogICAgIHByb3h5
LT5tX3JlZ2lzdHJhYmxlRG9tYWluID0gV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbik7Ci0gICAg
cHJveHktPmVuYWJsZVNlcnZpY2VXb3JrZXJzKHByb2Nlc3NQb29sLnVzZXJDb250ZW50Q29udHJv
bGxlcklkZW50aWZpZXJGb3JTZXJ2aWNlV29ya2VycygpKTsKKyAgICBwcm94eS0+ZW5hYmxlV29y
a2Vycyh3b3JrZXJUeXBlLCBwcm9jZXNzUG9vbC51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyRm9yV29ya2VycygpKTsKICAgICBwcm94eS0+Y29ubmVjdCgpOwogICAgIHJldHVybiBwcm94
eTsKIH0KQEAgLTk5NSwxMCArOTk2LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNv
bWVVbnJlc3BvbnNpdmUoKQogICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBpc1Jlc3BvbnNpdmVD
YWxsYmFja3MpCiAgICAgICAgIGNhbGxiYWNrKGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUpOwogCi0g
ICAgLy8gSWYgdGhlIHdlYiBwcm9jZXNzIGJlY29tZXMgdW5yZXNwb25zaXZlIGFuZCBvbmx5IHJ1
bnMgc2VydmljZSB3b3JrZXJzLCBraWxsIGl0IG91cnNlbHZlcyBzaW5jZSB0aGVyZSBhcmUgbm8g
bmF0aXZlIGNsaWVudHMgdG8gZG8gaXQuCi0gICAgaWYgKGlzUnVubmluZ1NlcnZpY2VXb3JrZXJz
KCkgJiYgbV9wYWdlTWFwLmlzRW1wdHkoKSkgewotICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVM
RUFTRV9MT0dfRVJST1IoUGVyZm9ybWFuY2VMb2dnaW5nLCAiZGlkQmVjb21lVW5yZXNwb25zaXZl
OiBUZXJtaW5hdGluZyBzZXJ2aWNlIHdvcmtlci1vbmx5IHdlYiBwcm9jZXNzIGJlY2F1c2UgaXQg
aXMgdW5yZXNwb25zaXZlIik7Ci0gICAgICAgIGRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAg
IC8vIElmIHRoZSB3ZWIgcHJvY2VzcyBiZWNvbWVzIHVucmVzcG9uc2l2ZSBhbmQgb25seSBydW5z
IHNlcnZpY2Uvc2hhcmVkIHdvcmtlcnMsIGtpbGwgaXQgb3Vyc2VsdmVzIHNpbmNlIHRoZXJlIGFy
ZSBubyBuYXRpdmUgY2xpZW50cyB0byBkbyBpdC4KKyAgICBpZiAoaXNSdW5uaW5nV29ya2Vycygp
ICYmIG1fcGFnZU1hcC5pc0VtcHR5KCkpIHsKKyAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVB
U0VfTE9HX0VSUk9SKFBlcmZvcm1hbmNlTG9nZ2luZywgImRpZEJlY29tZVVucmVzcG9uc2l2ZTog
VGVybWluYXRpbmcgd29ya2VyLW9ubHkgd2ViIHByb2Nlc3MgYmVjYXVzZSBpdCBpcyB1bnJlc3Bv
bnNpdmUiKTsKKyAgICAgICAgZGlzYWJsZVdvcmtlcnMoeyBXb3JrZXJUeXBlOjpTZXJ2aWNlV29y
a2VyLCBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgfSk7CiAgICAgICAgIHRlcm1pbmF0ZSgpOwog
ICAgIH0KIH0KQEAgLTE2OTQsOCArMTY5NSw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZShjb25zdCBVUkwmIHVybCkKICAgICBhdXRv
IHJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfTsK
ICAgICBpZiAobV9yZWdpc3RyYWJsZURvbWFpbiAmJiAqbV9yZWdpc3RyYWJsZURvbWFpbiAhPSBy
ZWdpc3RyYWJsZURvbWFpbikgewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICAgICAg
ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgICAgIGRpc2FibGVXb3JrZXJzKFdvcmtlclR5
cGU6OlNlcnZpY2VXb3JrZXIpOwogI2VuZGlmCisKICAgICAgICAgLy8gTnVsbCBvdXQgcmVnaXN0
cmFibGUgZG9tYWluIHNpbmNlIHRoaXMgcHJvY2VzcyBoYXMgbm93IGJlZW4gdXNlZCBmb3Igc2V2
ZXJhbCBkb21haW5zLgogICAgICAgICBtX3JlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4geyB9OwogICAgICAgICByZXR1cm47CkBAIC0xODY2LDYwICsxODY4LDg1
IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChj
b25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzCiB7CiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVB
U0VfTE9HKExvYWRpbmcsICJlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dDogU3RhcnRlZCIp
OwogICAgIG1hcmtQcm9jZXNzQXNSZWNlbnRseVVzZWQoKTsKLSAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRlZmF1bHRQYWdlR3JvdXAo
KS5wYWdlR3JvdXBJRCgpLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtl
clBhZ2VQcm94eUlELCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBh
Z2VJRCwgc3RvcmUsIHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZp
ZXIsIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5pbml0aWFsaXphdGlvbkRhdGEgfSwgW3Ro
aXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bvb2woKS5kZWZhdWx0UGFnZUdyb3Vw
KCkucGFnZUdyb3VwSUQoKSwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPndvcmtlclBhZ2VQ
cm94eUlELCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+d29ya2VyUGFnZUlELCBzdG9yZSwg
cmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgbV9zZXJ2aWNl
V29ya2VySW5mb3JtYXRpb24tPmluaXRpYWxpemF0aW9uRGF0YSB9LCBbdGhpcywgd2Vha1RoaXMg
PSBXZWFrUHRyIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAgICAgICAg
ICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJlc3RhYmxpc2hTZXJ2aWNl
V29ya2VyQ29udGV4dDogRmluaXNoZWQiKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
ICAgICB9LCAwKTsKIH0KKyNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0U2Vydmlj
ZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKK3ZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpzZXRXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiB7Ci0g
ICAgQVNTRVJUKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U2V0VXNlckFnZW50IHsgdXNlckFnZW50
IH0sIDApOworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBpZiAobV9zZXJ2aWNlV29y
a2VySW5mb3JtYXRpb24pCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2VyQWdlbnQgfSwgMCk7CisjZW5kaWYKKyAg
ICBpZiAobV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbikKKyAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1
c2VyQWdlbnQgfSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNl
V29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkK
K3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogewotICAgIEFTU0VSVChtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbik7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OlVwZGF0ZVByZWZlcmVuY2VzU3RvcmUgeyBzdG9yZSB9LCAwKTsKKyNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYgKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQor
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBk
YXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDApOworI2VuZGlmCisgICAgaWYgKG1fc2hh
cmVkV29ya2VySW5mb3JtYXRpb24pCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0
b3JlIH0sIDApOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlU2VydmljZVdvcmtl
clByb2Nlc3NBc3NlcnRpb24oKQorLy8gRklYTUU6IENsaWVudHMgZG8gbm90IHByb3Blcmx5IGdl
dCBwb3B1bGF0ZWQgaW4gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbi4KK3ZvaWQgV2ViUHJvY2Vz
c1Byb3h5Ojp1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGUgd29ya2VyVHlw
ZSkKIHsKLSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24s
ICJ1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbjoiKTsKLSAgICBBU1NFUlQobV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pOwotICAgIGlmICghbV9zZXJ2aWNlV29ya2VySW5mb3Jt
YXRpb24pCisgICAgYXV0byYgd29ya2VySW5mb3JtYXRpb24gPSB3b3JrZXJUeXBlID09IFdvcmtl
clR5cGU6OlNoYXJlZFdvcmtlciA/IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gOiBtX3NlcnZp
Y2VXb3JrZXJJbmZvcm1hdGlvbjsKKyAgICBBU1NFUlQod29ya2VySW5mb3JtYXRpb24pOworICAg
IGlmICghd29ya2VySW5mb3JtYXRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgc2hv
dWxkVGFrZUZvcmVncm91bmRBY3Rpdml0eSA9IFdURjo6YW55T2YobV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb24tPmNsaWVudFByb2Nlc3NlcywgWyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICBXRUJQ
Uk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVXb3JrZXJQ
cm9jZXNzQXNzZXJ0aW9uOiB3b3JrZXJUeXBlPSV7cHVibGljfXMiLCB3b3JrZXJUeXBlID09IFdv
cmtlclR5cGU6OlNoYXJlZFdvcmtlciA/ICJzaGFyZWQiIDogInNlcnZpY2UiKTsKKworICAgIGJv
b2wgc2hvdWxkVGFrZUZvcmVncm91bmRBY3Rpdml0eSA9IFdURjo6YW55T2Yod29ya2VySW5mb3Jt
YXRpb24tPmNsaWVudFByb2Nlc3NlcywgWyZdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0
dXJuICZwcm9jZXNzICE9IHRoaXMgJiYgISFwcm9jZXNzLm1fZm9yZWdyb3VuZFRva2VuOwogICAg
IH0pOwogICAgIGlmIChzaG91bGRUYWtlRm9yZWdyb3VuZEFjdGl2aXR5KSB7Ci0gICAgICAgIGlm
ICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEZvcmVncm91bmRBY3Rpdml0eShtX3NlcnZpY2VX
b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQotICAgICAgICAgICAgbV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuZm9yZWdyb3VuZEFjdGl2aXR5KCJT
ZXJ2aWNlIFdvcmtlciBmb3IgZm9yZWdyb3VuZCB2aWV3KHMpIl9zKTsKKyAgICAgICAgaWYgKCFQ
cm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkRm9yZWdyb3VuZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0
aW9uLT5hY3Rpdml0eSkpCisgICAgICAgICAgICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkg
PSBtX3Rocm90dGxlci5mb3JlZ3JvdW5kQWN0aXZpdHkoIldvcmtlciBmb3IgZm9yZWdyb3VuZCB2
aWV3KHMpIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGJvb2wgc2hvdWxkVGFr
ZUJhY2tncm91bmRBY3Rpdml0eSA9IFdURjo6YW55T2YobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24tPmNsaWVudFByb2Nlc3NlcywgWyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICBib29sIHNob3Vs
ZFRha2VCYWNrZ3JvdW5kQWN0aXZpdHkgPSBXVEY6OmFueU9mKHdvcmtlckluZm9ybWF0aW9uLT5j
bGllbnRQcm9jZXNzZXMsIFsmXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiAmcHJv
Y2VzcyAhPSB0aGlzICYmICEhcHJvY2Vzcy5tX2JhY2tncm91bmRUb2tlbjsKICAgICB9KTsKICAg
ICBpZiAoc2hvdWxkVGFrZUJhY2tncm91bmRBY3Rpdml0eSkgewotICAgICAgICBpZiAoIVByb2Nl
c3NUaHJvdHRsZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkobV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb24tPmFjdGl2aXR5KSkKLSAgICAgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBX
b3JrZXIgZm9yIGJhY2tncm91bmQgdmlldyhzKSJfcyk7CisgICAgICAgIGlmICghUHJvY2Vzc1Ro
cm90dGxlcjo6aXNWYWxpZEJhY2tncm91bmRBY3Rpdml0eSh3b3JrZXJJbmZvcm1hdGlvbi0+YWN0
aXZpdHkpKQorICAgICAgICAgICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJv
dHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5KCJXb3JrZXIgZm9yIGJhY2tncm91bmQgdmlldyhzKSJf
cyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9oYXNTZXJ2aWNlV29ya2Vy
QmFja2dyb3VuZFByb2Nlc3NpbmcpIHsKKyAgICBpZiAod29ya2VyVHlwZSA9PSBXb3JrZXJUeXBl
OjpTZXJ2aWNlV29ya2VyICYmIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5n
KSB7CiAgICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lv
biwgIlNlcnZpY2UgV29ya2VyIGZvciBiYWNrZ3JvdW5kIHByb2Nlc3NpbmciKTsKLSAgICAgICAg
aWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5KG1fc2Vydmlj
ZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCi0gICAgICAgICAgICBtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHko
IlNlcnZpY2UgV29ya2VyIGZvciBiYWNrZ3JvdW5kIHByb2Nlc3NpbmciX3MpOworICAgICAgICBp
ZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkod29ya2VySW5m
b3JtYXRpb24tPmFjdGl2aXR5KSkKKyAgICAgICAgICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rp
dml0eSA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9y
IGJhY2tncm91bmQgcHJvY2Vzc2luZyJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBudWxscHRyOworICAgIHdv
cmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG51bGxwdHI7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vz
c1Byb3h5Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2Vz
U3RvcmUmIHN0b3JlLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBX
RUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVk
V29ya2VyQ29udGV4dDogU3RhcnRlZCIpOworICAgIG1hcmtQcm9jZXNzQXNSZWNlbnRseVVzZWQo
KTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlz
aFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHByb2Nlc3NQ
b29sKCkuZGVmYXVsdFBhZ2VHcm91cCgpLnBhZ2VHcm91cElEKCksIG1fc2hhcmVkV29ya2VySW5m
b3JtYXRpb24tPndvcmtlclBhZ2VQcm94eUlELCBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uLT53
b3JrZXJQYWdlSUQsIHN0b3JlLCByZWdpc3RyYWJsZURvbWFpbiwgbV9zaGFyZWRXb3JrZXJJbmZv
cm1hdGlvbi0+aW5pdGlhbGl6YXRpb25EYXRhIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSgpIG11dGFibGUgeworICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICBXRUJQUk9D
RVNTUFJPWFlfUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2Vy
Q29udGV4dDogRmluaXNoZWQiKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9
LCAwKTsKK30KKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKwogdm9pZCBXZWJQcm9jZXNz
UHJveHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5
JiBwcm94eSkKIHsKICAgICBpZiAoIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQpAQCAtMTky
Nyw3ICsxOTU0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKIAogICAgIFdFQlBST0NFU1NQ
Uk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAicmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xp
ZW50UHJvY2VzczogY2xpZW50UHJvY2Vzcz0lcCwgY2xpZW50UElEPSVkIiwgJnByb3h5LCBwcm94
eS5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+
Y2xpZW50UHJvY2Vzc2VzLmFkZChwcm94eSk7Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nl
c3NBc3NlcnRpb24oKTsKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5
cGU6OlNlcnZpY2VXb3JrZXIpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dW5yZWdpc3Rl
clNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCkBAIC0x
OTM3LDcgKzE5NjQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dW5yZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveAogCiAgICAgV0VCUFJPQ0VT
U1BST1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJ1bnJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudFByb2Nlc3M6IGNsaWVudFByb2Nlc3M9JXAsIGNsaWVudFBJRD0lZCIsICZwcm94eSwg
cHJveHkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24tPmNsaWVudFByb2Nlc3Nlcy5yZW1vdmUocHJveHkpOwotICAgIHVwZGF0ZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihX
b3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KIAogYm9vbCBXZWJQcm9jZXNzUHJveHk6Omhh
c1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKQEAgLTE5
NTcsNyArMTk4NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzdGFydFNlcnZpY2VXb3JrZXJC
YWNrZ3JvdW5kUHJvY2Vzc2luZygpCiAKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0co
UHJvY2Vzc1N1c3BlbnNpb24sICJzdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2lu
ZyIpOwogICAgIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nID0gdHJ1ZTsK
LSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOworICAgIHVwZGF0ZVdv
cmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAKIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjplbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3Npbmco
KQpAQCAtMTk2NywyMyArMTk5NCwzOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5kU2Vydmlj
ZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKCkKIAogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxF
QVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgImVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJv
Y2Vzc2luZyIpOwogICAgIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nID0g
ZmFsc2U7Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKKyAgICB1
cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwog
fQogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAotdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmRpc2FibGVTZXJ2aWNlV29ya2VycygpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlzYWJs
ZVdvcmtlcnMoT3B0aW9uU2V0PFdvcmtlclR5cGU+IHdvcmtlclR5cGUpCiB7Ci0gICAgaWYgKCFt
X3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKKyAgICBBU1NFUlQoIXdvcmtlclR5cGUuaXNFbXB0
eSgpKTsKKworICAgIGJvb2wgZGlkQ2hhbmdlID0gZmFsc2U7CisgICAgaWYgKHdvcmtlclR5cGUu
Y29udGFpbnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikgJiYgbV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb24pIHsKKyAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gPSB7IH07Cisg
ICAgICAgIGRpZENoYW5nZSA9IHRydWU7CisgICAgfQorICAgIGlmICh3b3JrZXJUeXBlLmNvbnRh
aW5zKFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlcikgJiYgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlv
bikgeworICAgICAgICBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uID0geyB9OworICAgICAgICBk
aWRDaGFuZ2UgPSB0cnVlOworICAgIH0KKyAgICBpZiAoIWRpZENoYW5nZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJk
aXNhYmxlU2VydmljZVdvcmtlcnM6Iik7Ci0gICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24g
PSB7IH07CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJkaXNhYmxl
V29ya2VyczogRGlzYWJsaW5nIHdvcmtlcnMgKFNoYXJlZFdvcmtlcnM9JWQsIFNlcnZpY2VXb3Jr
ZXJzPSVkKSIsIHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSwg
d29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSk7CisKICAgICB1
cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwogCisgICAgaWYgKCFpc1J1bm5p
bmdXb3JrZXJzKCkpCisgICAgICAgIHByb2Nlc3NQb29sKCkucmVtb3ZlRnJvbVdvcmtlclByb2Nl
c3NlcygqdGhpcyk7CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgcHJvY2Vzc1Bv
b2woKS5yZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcygqdGhpcyk7Ci0gICAgc2VuZChN
ZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNsb3NlIHsgfSwgMCk7Cisg
ICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikpCisg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9z
ZSB7IH0sIDApOwogI2VuZGlmCisgICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlw
ZTo6U2hhcmVkV29ya2VyKSkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9zZSB7IH0sIDApOwogCiAgICAgbWF5YmVTaHV0
RG93bigpOwogfQpAQCAtMjAwNCwxMSArMjA0NywxMyBAQCBzdGF0aWMgVmVjdG9yPHN0ZDo6cGFp
cjxXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEsIFVSTD4+IGNvbnRlbnRSdWxlTGlzdHNG
cgogfQogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVTZXJ2aWNlV29ya2Vy
cyhjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJiB1c2VyQ29udGVudENvbnRy
b2xsZXJJZGVudGlmaWVyKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVdvcmtlcnMoV29y
a2VyVHlwZSB3b3JrZXJUeXBlLCBjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
JiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKQogewotICAgIEFTU0VSVCghbV9zZXJ2
aWNlV29ya2VySW5mb3JtYXRpb24pOwotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhT
ZXJ2aWNlV29ya2VyLCAiZW5hYmxlU2VydmljZVdvcmtlcnM6Iik7Ci0gICAgbV9zZXJ2aWNlV29y
a2VySW5mb3JtYXRpb24gPSBTZXJ2aWNlV29ya2VySW5mb3JtYXRpb24geworICAgIFdFQlBST0NF
U1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiZW5hYmxlV29ya2Vyczogd29ya2Vy
VHlwZT0ldSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih3b3JrZXJUeXBlKSk7CisgICAgYXV0byYg
d29ya2VySW5mb3JtYXRpb24gPSB3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNoYXJlZFdvcmtl
ciA/IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gOiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlv
bjsKKyAgICBBU1NFUlQoIXdvcmtlckluZm9ybWF0aW9uKTsKKworICAgIHdvcmtlckluZm9ybWF0
aW9uID0gV29ya2VySW5mb3JtYXRpb24gewogICAgICAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpLAogICAgICAgICBQYWdlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwKICAgICAg
ICAgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSB7CkBAIC0yMDIxLDkgKzIwNjYsOCBA
QCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlU2VydmljZVdvcmtlcnMoY29uc3QgVXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllcgogICAgICAgICB7IH0KICAgICB9OwogICAgIHVwZGF0
ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7Ci0jZW5kaWYK
KworICAgIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24od29ya2VyVHlwZSk7CiB9CiAKIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVTbGVlcERpc2FibGVyKFNsZWVwRGlzYWJsZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcmVhc29uLCBib29sIGRpc3BsYXkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGY1MTRiOTkx
NmFkNC4uMTkyZDVkMmI2ZjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaApAQCAtMTM2LDkgKzEzNiwxMyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIGNsYXNzIFNo
b3VsZExhdW5jaFByb2Nlc3MgOiBib29sIHsgTm8sIFllcyB9OwogICAgIGVudW0gY2xhc3MgQ2Fw
dGl2ZVBvcnRhbE1vZGUgOiBib29sIHsgRGlzYWJsZWQsIEVuYWJsZWQgfTsKKyAgICBlbnVtIGNs
YXNzIFdvcmtlclR5cGUgOiB1aW50MzJfdCB7CisgICAgICAgIFNlcnZpY2VXb3JrZXIgPSAxIDw8
IDAsCisgICAgICAgIFNoYXJlZFdvcmtlciA9IDEgPDwgMQorICAgIH07CiAKICAgICBzdGF0aWMg
UmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sJiwgV2Vic2l0ZURhdGFT
dG9yZSosIENhcHRpdmVQb3J0YWxNb2RlLCBJc1ByZXdhcm1lZCwgV2ViQ29yZTo6Q3Jvc3NPcmln
aW5Nb2RlID0gV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQsIFNob3VsZExhdW5jaFBy
b2Nlc3MgPSBTaG91bGRMYXVuY2hQcm9jZXNzOjpZZXMpOwotICAgIHN0YXRpYyBSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiBjcmVhdGVGb3JTZXJ2aWNlV29ya2VycyhXZWJQcm9jZXNzUG9vbCYsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKKyAgICBzdGF0aWMg
UmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlRm9yV29ya2VycyhXb3JrZXJUeXBlLCBXZWJQcm9j
ZXNzUG9vbCYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdlYnNpdGVEYXRhU3RvcmUm
KTsKIAogICAgIH5XZWJQcm9jZXNzUHJveHkoKTsKIApAQCAtMTYxLDggKzE2NSw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldElzSW5Qcm9jZXNzQ2FjaGUoYm9vbCwgV2lsbFNodXREb3duID0gV2ls
bFNodXREb3duOjpObyk7CiAgICAgYm9vbCBpc0luUHJvY2Vzc0NhY2hlKCkgY29uc3QgeyByZXR1
cm4gbV9pc0luUHJvY2Vzc0NhY2hlOyB9CiAKLSAgICB2b2lkIGVuYWJsZVNlcnZpY2VXb3JrZXJz
KGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImKTsKLSAgICB2b2lkIGRpc2Fi
bGVTZXJ2aWNlV29ya2VycygpOworICAgIHZvaWQgZW5hYmxlV29ya2VycyhXb3JrZXJUeXBlLCBj
b25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJik7CisgICAgdm9pZCBkaXNhYmxl
V29ya2VycyhPcHRpb25TZXQ8V29ya2VyVHlwZT4pOwogCiAgICAgV2Vic2l0ZURhdGFTdG9yZSYg
d2Vic2l0ZURhdGFTdG9yZSgpIGNvbnN0IHsgQVNTRVJUKG1fd2Vic2l0ZURhdGFTdG9yZSk7IHJl
dHVybiAqbV93ZWJzaXRlRGF0YVN0b3JlOyB9CiAgICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3Jl
KFdlYnNpdGVEYXRhU3RvcmUmKTsKQEAgLTE5NCw2ICsxOTgsOSBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkgY29uc3QgeyByZXR1cm4gISFtX3NlcnZpY2VX
b3JrZXJJbmZvcm1hdGlvbjsgfQogICAgIGJvb2wgaXNTdGFuZGFsb25lU2VydmljZVdvcmtlclBy
b2Nlc3MoKSBjb25zdCB7IHJldHVybiBpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpICYmICFwYWdl
Q291bnQoKTsgfQorICAgIGJvb2wgaXNSdW5uaW5nU2hhcmVkV29ya2VycygpIGNvbnN0IHsgcmV0
dXJuICEhbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbjsgfQorICAgIGJvb2wgaXNTdGFuZGFsb25l
U2hhcmVkV29ya2VyUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIGlzUnVubmluZ1NoYXJlZFdvcmtl
cnMoKSAmJiAhcGFnZUNvdW50KCk7IH0KKyAgICBib29sIGlzUnVubmluZ1dvcmtlcnMoKSBjb25z
dCB7IHJldHVybiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIHx8IG1fc2VydmljZVdvcmtlcklu
Zm9ybWF0aW9uOyB9CiAKICAgICBib29sIGlzRHVtbXlQcm9jZXNzUHJveHkoKSBjb25zdDsKIApA
QCAtMzU5LDEyICszNjYsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVBdWRpYmxlTWVk
aWFBc3NlcnRpb25zKCk7CiAKKyAgICB2b2lkIHNldFdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJp
bmcmKTsKKyAgICB2b2lkIHVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYpOworICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dChj
b25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgdXBkYXRlV29ya2Vy
UHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlKTsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAgICAgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJl
bmNlc1N0b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9p
ZCBzZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgdXBk
YXRlU2VydmljZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZSYpOwotICAgIGJvb2wgaGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHBhZ2VQcm94eUlEKSB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiAm
JiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VQcm94eUlEID09
IHBhZ2VQcm94eUlEOyB9Ci0gICAgdm9pZCB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2Vy
dGlvbigpOworICAgIGJvb2wgaGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHBhZ2VQcm94eUlEKSB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlv
biAmJiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+d29ya2VyUGFnZVByb3h5SUQgPT0gcGFn
ZVByb3h5SUQ7IH0KICAgICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3Mo
V2ViUHJvY2Vzc1Byb3h5Jik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5Jik7CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyRm9y
ZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0OwpAQCAtNjQ4LDE0ICs2NTYsMTUgQEAg
cHJpdmF0ZToKICNlbmRpZgogICAgIFJlZlB0cjxMb2dnZXI+IG1fbG9nZ2VyOwogCi0gICAgc3Ry
dWN0IFNlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiB7Ci0gICAgICAgIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgc2VydmljZVdvcmtlclBhZ2VQcm94eUlEOwotICAgICAgICBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBzZXJ2aWNlV29ya2VyUGFnZUlEOworICAgIHN0cnVjdCBXb3JrZXJJbmZvcm1hdGlv
biB7CisgICAgICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd29ya2VyUGFnZVByb3h5SUQ7Cisg
ICAgICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdvcmtlclBhZ2VJRDsKICAgICAgICAgU2Vy
dmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSBpbml0aWFsaXphdGlvbkRhdGE7CiAgICAgICAg
IFByb2Nlc3NUaHJvdHRsZXI6OkFjdGl2aXR5VmFyaWFudCBhY3Rpdml0eTsKICAgICAgICAgV2Vh
a0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5PiBjbGllbnRQcm9jZXNzZXM7CiAgICAgfTsKLSAgICBz
dGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbj4gbV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxXb3JrZXJJbmZvcm1hdGlvbj4gbV9zZXJ2aWNl
V29ya2VySW5mb3JtYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxXb3JrZXJJbmZvcm1hdGlvbj4g
bV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbjsKICAgICBib29sIG1faGFzU2VydmljZVdvcmtlckJh
Y2tncm91bmRQcm9jZXNzaW5nIHsgZmFsc2UgfTsKIAogICAgIEhhc2hNYXA8V2ViQ29yZTo6U2xl
ZXBEaXNhYmxlcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTbGVlcERpc2Fi
bGVyPj4gbV9zbGVlcERpc2FibGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc3ZTBhOWZkNDZjNi4uNDdkYzZkOWQ5ZmYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg4
MSw2ICs4ODEsNyBAQAogCQk0NjE0RjEzMjI1REVEODc1MDA3MDA2RTcgLyogR1BVUHJvY2Vzc0Nv
bm5lY3Rpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkFDNTMyNDI1REVEODFFMDAzQjU3RUMgLyogR1BVUHJvY2Vzc0Nvbm5lY3Rp
b25QYXJhbWV0ZXJzLmggKi87IH07CiAJCTQ2MUNDQ0E1MjMxNDg1QTcwMEI2NTlCOSAvKiBVSVJl
bW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NjMyMzY4NTIzMTQ4MzNGMDBBNDhGQTcgLyogVUlSZW1vdGVPYmplY3RSZWdp
c3RyeS5oICovOyB9OwogCQk0NjFDQ0NBNjIzMTQ4NUFBMDBCNjU5QjkgLyogV2ViUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2MzIzNjgzMjMxNDgxRUYwMEE0OEZBNyAvKiBXZWJSZW1vdGVPYmplY3RSZWdpc3RyeS5o
ICovOyB9OworCQk0NjFFMUJGMjI3OUEwMTE2MDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjFFMUJFRjI3OUEwMTBGMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2M0ZENDgwMUVCOTQ1OTYwMEEy
OTgyQyAvKiBXS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzRkQ0N0YxRUI5NDU4NDAwQTI5ODJDIC8qIFdL
UHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYzRkQ0ODIxRUI5NEVDMDAwQTI5ODJDIC8qIFByb2Nlc3NU
ZXJtaW5hdGlvblJlYXNvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDYzRkQ0ODExRUI5NEVBRDAwQTI5ODJDIC8qIFByb2Nlc3NUZXJtaW5hdGlvblJl
YXNvbi5oICovOyB9OwogCQk0NjU5RjI1RjI3NUZGNkIyMDBCQkIzNjkgLyogQ2FwdGl2ZVBvcnRh
bE1vZGVPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY1OUYyNUUyNzVGRjZCMjAwQkJCMzY5IC8qIENhcHRpdmVQb3J0YWxNb2RlT2JzZXJ2
ZXIuaCAqLzsgfTsKQEAgLTkwMSwxMCArOTAyLDEzIEBACiAJCTQ2QzM5MjI5MjMxNkVDNEQwMDhF
RUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkMzOTIyODIzMTZFQzREMDA4RUVEOUIgLyogV2ViUGFn
ZVByb3h5SWRlbnRpZmllci5oICovOyB9OwogCQk0NkM1QjdDRTI3QUFEREQzMDAwQzVCNDcgLyog
UmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzVCN0NEMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1vdGVX
b3JrZXJGcmFtZUxvYWRlckNsaWVudC5oICovOyB9OwogCQk0NkM1QjdDRjI3QUFEREQ2MDAwQzVC
NDcgLyogUmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzVCN0NCMjdBQUREQkUwMDBDNUI0NyAvKiBS
ZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92aWRlci5oICovOyB9OworCQk0NkM5MTZBQTI3OTlEMEEy
MDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM5MTZBOTI3OTlEMDlEMDAxQTRFN0MgLyogV2Vi
U2hhcmVkV29ya2VyU2VydmVyLmggKi87IH07CiAJCTQ2Q0UzQjExMjNEOEM4NDkwMDE2QTk2QSAv
KiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Q0UzQjEwMjNEOEM4M0QwMDE2QTk2QSAvKiBXZWJCYWNrRm9y
d2FyZExpc3RDb3VudHMuaCAqLzsgfTsKKwkJNDZENDhGQ0UyNzk5RDdFMTAwN0QyMDE0IC8qIFdl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RDQ4RkNEMjc5OUQ3REUwMDdEMjAxNCAv
KiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2
REYwNjNDMUYzOTA1RjgwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REYwNjNBMUYz
OTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCAqLzsgfTsKIAkJ
NDZFRTI4NDkyNjlFMDRBQzAwREQ0OEFCIC8qIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFRTI4NDgy
NjlFMDQ5QjAwREQ0OEFCIC8qIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oICovOyB9Owog
CQk0NkVFMjg0RDI2OUUwNTI1MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdp
c3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZF
RTI4NEMyNjlFMDUxNzAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnku
aCAqLzsgfTsKKwkJNDZFRTNFOEIyNzYzRkQyRjAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtlclNl
cnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2ODM4NjY3Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uLmggKi87IH07CiAJCTQ2RjM4RThDMjQxNkU2NzMwMDU5Mzc1QSAvKiBSdW5uaW5n
Qm9hcmRTZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZGMzhFOEIyNDE2RTY2RDAwNTkzNzVBIC8qIFJ1bm5pbmdCb2FyZFNlcnZpY2Vz
U1BJLmggKi87IH07CiAJCTQ2RjlCMjYzMjM1MjZFRjMwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2Fy
ZENhY2hlRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2RjlCMjYyMjM1MjZFRDAwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnku
aCAqLzsgfTsKIAkJNDkzMTAyQkQyNjgzRjNEMDAwMkJCODg1IC8qIEFwcFByaXZhY3lSZXBvcnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5MzEwMkJD
MjY4M0YzQTUwMDJCQjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggKi87IH07CkBAIC00MjI0LDYg
KzQyMjgsOSBAQAogCQk0NjA4ODlGRjI2MUZBOEE5MDBFMjUwMEQgLyogUmVtb3RlUmVuZGVyaW5n
QmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2MEY0ODhEMUY5OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHBh
dGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25N
ZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owog
CQk0NjBGNDg4RTFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJL
aXQvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk0NjFFMUJFQzI3OUEwMTBFMDA2QUY1M0IgLyogV2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MUUxQkVGMjc5QTAxMEYw
MDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MUUxQkYwMjc5
QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NjIxMDdENzFGMzhEQkQzMDBERDc4MTAgLyogUGluZ0xvYWQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGluZ0xvYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NjMyMzY4MzIzMTQ4MUVGMDBBNDhGQTcgLyogV2ViUmVtb3RlT2JqZWN0
UmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzMjM2ODQyMzE0ODI1QzAwQTQ4RkE3IC8qIFdl
YlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlbW90ZU9i
amVjdFJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyNTUsOCAr
NDI2MiwxMSBAQAogCQk0NjgwOUE3QjIzRDkyMjUzMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29va2llQ2FjaGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgzNTY5QTIxRTgxQ0M3MDA2RTI3
QTMgLyogUHJvdmlzaW9uYWxQYWdlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUHJvdmlzaW9uYWxQYWdlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDY4MzU2OUIyMUU4MUNDNzAwNkUyN0EzIC8qIFByb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb3Zpc2lvbmFsUGFnZVByb3h5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4Mzg2NjcyNzYzRkFCMTAwQ0Y5
MTgyIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0NjgzODY2ODI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OUI5MEYyNzU2
RDE0MzAwMDdDNjUxIC8qIFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVXZWJMb2NrUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4
OUI5MTAyNzU2RDE0MzAwMDdDNjUxIC8qIFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0Njk0M0RDQjI3NjNGODM0MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlE
RTgwMjI3M0VDQzVEMDA5MzAyNzYgLyogUHJvY2Vzc0xhdW5jaGVyQ29jb2EubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcm9jZXNzTGF1bmNoZXJDb2NvYS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZBMkI2MDYxRTU2NzVBMjAwQzNERURBIC8q
IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGlt
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkEyQjYwNzFFNTY3NUEyMDBD
M0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NU
aW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI3NSw3ICs0Mjg1LDExIEBA
CiAJCTQ2QzVCN0NCMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92
aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92aWRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkM1QjdDQzI3QUFEREJFMDAwQzVCNDcgLyog
UmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVt
b3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NkM1QjdDRDI3QUFEREJFMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZDOTE2QTgyNzk5RDA5RDAwMUE0RTdDIC8q
IFdlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkM5MTZBOTI3
OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlNoYXJlZFdvcmtlclNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NkNFM0IxMDIzRDhDODNEMDAxNkE5NkEgLyogV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkQ0OEZDQzI3OTlEN0REMDA3RDIwMTQg
LyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZENDhGQ0QyNzk5RDdERTAwN0QyMDE0IC8q
IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NkRGMDYzOTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2REYwNjNBMUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdo
dENoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RTk3NjBB
Mjc1N0Y2QzkwMEFDREQzNyAvKiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMu
aW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1l
c3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI4NSw2ICs0Mjk5LDcg
QEAKIAkJNDZFRTI4NEEyNjlFMDUxNzAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVs
UmVnaXN0cnkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmV0d29ya0Jyb2Fk
Y2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDZFRTI4NEIyNjlFMDUxNzAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVs
UmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29y
a0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2RUUyODRDMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJl
Z2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtCcm9hZGNh
c3RDaGFubmVsUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZFRTNF
OEEyNzYzRkQyQTAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVz
c2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5p
bjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZGMzhFOEIyNDE2RTY2RDAwNTkzNzVB
IC8qIFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2RjlCMjYyMjM1MjZFRDAwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50
cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0ZvcndhcmRDYWNo
ZUVudHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5MzEwMkJDMjY4M0YzQTUw
MDJCQjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcFByaXZhY3lS
ZXBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkyOTQsNiArOTMwOSwyMCBA
QAogCQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJ
NDY4Mzg2NjUyNzYzRkExQjAwQ0Y5MTgyIC8qIFNoYXJlZFdvcmtlciAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNDZDOTE2QTgyNzk5RDA5RDAwMUE0RTdD
IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAgKi8sCisJCQkJNDZDOTE2QTkyNzk5RDA5RDAw
MUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5oICovLAorCQkJCTQ2ODM4NjY4Mjc2M0ZB
QjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLywKKwkJ
CQk0NjgzODY2NzI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbi5oICovLAorCQkJCTQ2RUUzRThBMjc2M0ZEMkEwMDYwQzcwRiAvKiBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovLAorCQkJCTQ2RDQ4RkNDMjc5OUQ3REQw
MDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCAq
LywKKwkJCQk0NkQ0OEZDRDI3OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oICovLAorCQkJKTsKKwkJCXBhdGggPSBTaGFyZWRXb3JrZXI7
CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk0NjlERTgwMTI3M0VDQzVEMDA5
MzAyNzYgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KApAQCAtOTM1OCw2ICs5Mzg3LDcgQEAKIAkJCQk1MTQ1MjZFQTI3MUUxNjEwMDAwNDY3QjYgLyog
Tm90aWZpY2F0aW9ucyAqLywKIAkJCQk1QzAxQkMzNTI2RDQ2QUQ0MDBGRUI0MkYgLyogUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQgKi8sCiAJCQkJOTNCQTA0RDkyMTUxQURDRDAwN0Y0NTVGIC8qIFNl
cnZpY2VXb3JrZXIgKi8sCisJCQkJNDY4Mzg2NjUyNzYzRkExQjAwQ0Y5MTgyIC8qIFNoYXJlZFdv
cmtlciAqLywKIAkJCQk5MzA4NURDMjI2RTFCQjY1MDAwRUM2QTcgLyogc3RvcmFnZSAqLywKIAkJ
CQk0MTMwNzU5NzFERTg0RUQ3MDAzOUVDNjkgLyogd2VicnRjICovLAogCQkJCTkzQjI2MTQzMjI3
RDE0MzEwMEI5N0E3NiAvKiBXZWJTdG9yYWdlICovLApAQCAtOTQ2MCw4ICs5NDkwLDEyIEBACiAJ
CQkJNDE5QUNGOUIxRjk4MUQyNjAwOUYxQTgzIC8qIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQuaCAqLywKIAkJCQk1MUJFQjYyOTFGM0E1QUNEMDA1MDI5QjkgLyogV2ViU2VydmljZVdv
cmtlclByb3ZpZGVyLmNwcCAqLywKIAkJCQk1MUJFQjYyQTFGM0E1QUNEMDA1MDI5QjkgLyogV2Vi
U2VydmljZVdvcmtlclByb3ZpZGVyLmggKi8sCisJCQkJNDYxRTFCRUMyNzlBMDEwRTAwNkFGNTNC
IC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgKi8sCisJCQkJ
NDYxRTFCRUYyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5oICovLAorCQkJCTQ2MUUxQkYwMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDY2
OEEwQkIyN0FCNjA0MDAwQzcyMEJDIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24u
Y3BwICovLAogCQkJCTQ2NjhBMEI4MjdBQjYwM0YwMEM3MjBCQyAvKiBXZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uLmggKi8sCisJCQkJNDY5NDNEQ0IyNzYzRjgzNDAwNEI2MTBFIC8qIFdl
YlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDY2OEEw
QjkyN0FCNjAzRjAwQzcyMEJDIC8qIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmNwcCAqLywKIAkJ
CQk0NjY4QTBCQTI3QUI2MDQwMDBDNzIwQkMgLyogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaCAq
LywKIAkJCQk1MTdBNTMwMzFGNDc5M0IyMDBEQ0RDMEEgLyogV2ViU1dDbGllbnRDb25uZWN0aW9u
LmNwcCAqLywKQEAgLTEzNjU4LDggKzEzNjkyLDEyIEBACiAJCQkJN0MzNjFENzMxOTI3RkEzNjAw
MzZBNTlEIC8qIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlE
M0I5NDg0OTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MUJFQjYyQzFGM0E1QUQ3MDA1MDI5QjkgLyogV2ViU2VydmljZVdvcmtlclBy
b3ZpZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjFFMUJGMjI3OUEwMTE2MDA2QUY1M0IgLyog
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0NjY4QTBCRDI3QUI2MDU2MDBDNzIwQkMgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY2OEEwQkMyN0FCNjA1MDAwQzcyMEJDIC8q
IFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkM5MTZBQTI3
OTlEMEEyMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQk0NkVFM0U4QjI3NjNGRDJGMDA2MEM3MEYgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZENDhGQ0UyNzk5RDdFMTAwN0QyMDE0IC8q
IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDOEREMzgwMUZFNDUyMTYwMEYyQTU1NiAvKiBXZWJzaXRlQXV0b3BsYXlQb2xpY3ku
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDgzMkQ3MUE5Q0RGOTYwMDhCNERGRSAvKiBXZWJzaXRl
RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0ODMyRDExQTlCREMyRjAwOEI0REZFIC8qIFdl
YnNpdGVEYXRhUmVjb3JkLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
CmluZGV4IDgxZGQwNDExYTIzOS4uYmIzNTQ3ZjQ2YWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5jcHAKQEAgLTU3LDcgKzU3LDEwIEBACiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmgiCisjaW5jbHVkZSAi
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hh
bm5lbC5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWxNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYlNvY2tldFN0cmVhbS5oIgpAQCAtMTc0LDYgKzE3NywxNiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUAogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgc2hhcmVkV29ya2Vy
Q29ubmVjdGlvbigpLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUo
KSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgQVNTRVJUKFNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpOworICAgICAgICBpZiAoYXV0byog
Y29udGV4dE1hbmFnZXJDb25uZWN0aW9uID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFdlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiY+KCpjb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24pLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1
cm47CisgICAgfQogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAgaWYgKGRl
Y29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRp
bmF0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRl
eCBlZGMwNDkzYmQzZWQuLjBiNjQ4MGE2MWQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAg
LTQ4LDYgKzQ4LDcgQEAgZW51bSBjbGFzcyBIVFRQQ29va2llQWNjZXB0UG9saWN5IDogdWludDhf
dDsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI7
CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOwogY2xhc3MgV2ViU1dDbGll
bnRDb25uZWN0aW9uOwogY2xhc3MgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IGFkMDM3MjVmMTA1NC4uNjZj
YjQ5OWIzZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0xNDYs
NyArMTQ2LDcgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNl
cnZpY2VXb3JrZXIoU2VydmljZVdvcmtlckNvbnRleHREYXQKICAgICAgICAgV2ViUGFnZTo6dXBk
YXRlU2V0dGluZ3NHZW5lcmF0ZWQoKm1fcHJlZmVyZW5jZXNTdG9yZSwgcGFnZS0+c2V0dGluZ3Mo
KSk7CiAgICAgICAgIHBhZ2UtPnNldHRpbmdzKCkuc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KHN0
YXRpY19jYXN0PFN0b3JhZ2VCbG9ja2luZ1BvbGljeT4obV9wcmVmZXJlbmNlc1N0b3JlLT5nZXRV
SW50MzJWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6c3RvcmFnZUJsb2NraW5nUG9saWN5
S2V5KCkpKSk7CiAgICAgfQotICAgIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2V0dXBQYWdl
Rm9yU2VydmljZVdvcmtlcihwYWdlLmdldCgpLCBjb250ZXh0RGF0YSk7CisgICAgcGFnZS0+c2V0
dXBGb3JSZW1vdGVXb3JrZXIoY29udGV4dERhdGEuc2NyaXB0VVJMLCBjb250ZXh0RGF0YS5yZWdp
c3RyYXRpb24ua2V5LnRvcE9yaWdpbigpLCBjb250ZXh0RGF0YS5yZWZlcnJlclBvbGljeSk7CiAg
ICAgYXV0byBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgPSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHk6OmNyZWF0ZShXVEZNb3ZlKHBhZ2UpLCBXVEZNb3ZlKGNvbnRleHREYXRhKSwgV1RGTW92ZSh3
b3JrZXJEYXRhKSwgV1RGTW92ZShlZmZlY3RpdmVVc2VyQWdlbnQpLCB3b3JrZXJUaHJlYWRNb2Rl
LCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZVN0b3JhZ2VQcm92aWRlcigpKTsKIAogICAg
IGlmIChsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uNWIwMWFkMDUyOTVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDEyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uaCIKKworI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJSZW1vdGVXZWJMb2NrUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJSZW1vdGVX
b3JrZXJGcmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIlJlbW90ZVdvcmtlckxpYldlYlJU
Q1Byb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmgiCisj
aW5jbHVkZSAiV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJDb21waWxl
ZENvbnRlbnRSdWxlTGlzdERhdGEuaCIKKyNpbmNsdWRlICJXZWJEYXRhYmFzZVByb3ZpZGVyLmgi
CisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzS2V5cy5oIgor
I2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRQcm92aWRl
ci5oIgorI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlci5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvRW1wdHlDbGllbnRzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9QYWdlQ29uZmlndXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlclRo
cmVhZFByb3h5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQWdlbnQuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1dvcmtlckZldGNoUmVzdWx0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OldlYlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9t
YWluLCBQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmUmIHByZWZlcmVuY2VzU3RvcmUsIFNlcnZpY2VXb3JrZXJJbml0
aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXphdGlvbkRhdGEpCisgICAgOiBtX2Nvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKFdURk1vdmUoY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpKQorICAg
ICwgbV9yZWdpc3RyYWJsZURvbWFpbihXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAs
IG1fcGFnZUdyb3VwSUQocGFnZUdyb3VwSUQpCisgICAgLCBtX3dlYlBhZ2VQcm94eUlEKHdlYlBh
Z2VQcm94eUlEKQorICAgICwgbV9wYWdlSUQocGFnZUlEKQorI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgICwgbV91c2VyQWdlbnQoV2ViQ29yZTo6c3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRp
b25OYW1lKHsgfSkpCisjZWxzZQorICAgICwgbV91c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQo
KSkKKyNlbmRpZgorICAgICwgbV91c2VyQ29udGVudENvbnRyb2xsZXIoV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjpnZXRPckNyZWF0ZShpbml0aWFsaXphdGlvbkRhdGEudXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllcikpCit7CisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAg
ICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkQ29udGVudFJ1bGVMaXN0cyhXVEZNb3ZlKGlu
aXRpYWxpemF0aW9uRGF0YS5jb250ZW50UnVsZUxpc3RzKSk7CisjZW5kaWYKKworICAgIHVwZGF0
ZVByZWZlcmVuY2VzU3RvcmUocHJlZmVyZW5jZXNTdG9yZSk7CisgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZGlzYWJsZVRlcm1pbmF0aW9uKCk7Cit9CisKK1dlYlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbigpID0gZGVmYXVsdDsKKwordm9pZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OmVzdGFibGlzaENvbm5lY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mt
PnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uIHsgbV93ZWJQYWdlUHJv
eHlJRCwgbV9yZWdpc3RyYWJsZURvbWFpbiB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
MCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpw
b3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmll
ciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQor
eworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlBvc3RFeGNlcHRpb25Ub1dvcmtl
ck9iamVjdCB7IHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGVycm9yTWVzc2FnZSwgbGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwgfSwgMCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQoreworICAgIFdlYlBhZ2U6OnVwZGF0ZVByZWZl
cmVuY2VzR2VuZXJhdGVkKHN0b3JlKTsKKyAgICBtX3ByZWZlcmVuY2VzU3RvcmUgPSBzdG9yZTsK
K30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmxhdW5j
aFNoYXJlZFdvcmtlcihXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4sIFdlYkNvcmU6OlNo
YXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgVVJMJiYgdXJsLCBX
ZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucywgV2ViQ29yZTo6V29ya2VyRmV0
Y2hSZXN1bHQmJiB3b3JrZXJGZXRjaFJlc3VsdCkKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRX
b3JrZXIsICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmxhdW5jaFNo
YXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtl
cklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9IFdl
YkNvcmU6OnBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cyhXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5zZXNzaW9uSUQoKSk7CisKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5kYXRhYmFzZVBy
b3ZpZGVyID0gV2ViRGF0YWJhc2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUobV9wYWdlR3JvdXBJRCk7
CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uc29ja2V0UHJvdmlkZXIgPSBXZWJTb2NrZXRQcm92aWRl
cjo6Y3JlYXRlKG1fd2ViUGFnZVByb3h5SUQpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLmJyb2Fk
Y2FzdENoYW5uZWxSZWdpc3RyeSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmJyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeSgpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLndlYkxvY2tSZWdpc3RyeSA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvY2tSZWdpc3RyeSgpOworICAgIHBhZ2VDb25m
aWd1cmF0aW9uLnVzZXJDb250ZW50UHJvdmlkZXIgPSBtX3VzZXJDb250ZW50Q29udHJvbGxlcjsK
KyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5saWJXZWJSVENQcm92
aWRlciA9IG1ha2VVbmlxdWVSZWY8UmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXI+KCk7Cisj
ZW5kaWYKKworICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSA9
IG1ha2VVbmlxdWVSZWY8UmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ+KG1fd2ViUGFnZVBy
b3h5SUQsIG1fcGFnZUlELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI6OmdlbmVyYXRlKCksIG1f
dXNlckFnZW50KTsKKworICAgIGF1dG8gcGFnZSA9IG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6UGFn
ZT4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOworICAgIGlmIChtX3ByZWZlcmVuY2VzU3Rv
cmUpIHsKKyAgICAgICAgV2ViUGFnZTo6dXBkYXRlU2V0dGluZ3NHZW5lcmF0ZWQoKm1fcHJlZmVy
ZW5jZXNTdG9yZSwgcGFnZS0+c2V0dGluZ3MoKSk7CisgICAgICAgIHBhZ2UtPnNldHRpbmdzKCku
c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KHN0YXRpY19jYXN0PFdlYkNvcmU6OlN0b3JhZ2VCbG9j
a2luZ1BvbGljeT4obV9wcmVmZXJlbmNlc1N0b3JlLT5nZXRVSW50MzJWYWx1ZUZvcktleShXZWJQ
cmVmZXJlbmNlc0tleTo6c3RvcmFnZUJsb2NraW5nUG9saWN5S2V5KCkpKSk7CisgICAgfQorICAg
IHBhZ2UtPnNldHVwRm9yUmVtb3RlV29ya2VyKHVybCwgb3JpZ2luLnRvcE9yaWdpbiwgd29ya2Vy
RmV0Y2hSZXN1bHQucmVmZXJyZXJQb2xpY3kpOworICAgIGF1dG8gc2hhcmVkV29ya2VyVGhyZWFk
UHJveHkgPSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlKFdURk1vdmUo
cGFnZSksIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIG9yaWdpbiwgdXJsLCBXVEZNb3ZlKHdvcmtl
ckZldGNoUmVzdWx0KSwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSwgbV91c2VyQWdlbnQsIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFnZVByb3ZpZGVyKCkpOworCisgICAgV2ViQ29y
ZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnJlZ2lzdGVyU2hhcmVk
V29ya2VyVGhyZWFkKFdURk1vdmUoc2hhcmVkV29ya2VyVGhyZWFkUHJveHkpKTsKK30KKwordm9p
ZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmNsb3NlKCkKK3sKKyAg
ICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OmNsb3NlOiBTaGFyZWQgd29ya2VyIHByb2Nlc3MgaXMgcmVxdWVzdGVkIHRv
IHN0b3AgYWxsIHNoYXJlZCB3b3JrZXJzIik7CisgICAgc2V0QXNDbG9zZWQoKTsKKworICAgIG1f
Y29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpDbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uIHsgfSwg
MCk7CisgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigp
LnN0b3BBbGxTaGFyZWRXb3JrZXJzKCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5h
YmxlVGVybWluYXRpb24oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWUyMzIzNjU2MjhhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIklkZW50aWZpZXJUeXBl
cy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94
eUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFi
bGVEb21haW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJJZGVudGlmaWVyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBDbGllbnRPcmlnaW47CitzdHJ1Y3QgV29ya2VyRmV0Y2hS
ZXN1bHQ7CitzdHJ1Y3QgV29ya2VyT3B0aW9uczsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjsKK3N0cnVjdCBTZXJ2aWNlV29ya2VySW5p
dGlhbGl6YXRpb25EYXRhOworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6Cisg
ICAgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5l
Y3Rpb24+JiYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBhZ2VHcm91cElkZW50aWZp
ZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25z
dCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYm
KTsKKyAgICB+V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKCk7CisKKyAg
ICB2b2lkIGVzdGFibGlzaENvbm5lY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBm
aW5hbDsKKyAgICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSBmaW5hbDsK
KworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgZmluYWw7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDIE1lc3NhZ2VzLgorICAgIHZvaWQg
bGF1bmNoU2hhcmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmLCBXZWJD
b3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmKTsKKyAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzU3Rv
cmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOworICAgIHZvaWQgc2V0VXNlckFnZW50KFN0
cmluZyYmIHVzZXJBZ2VudCkgeyBtX3VzZXJBZ2VudCA9IFdURk1vdmUodXNlckFnZW50KTsgfQor
ICAgIHZvaWQgY2xvc2UoKTsKKworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3M7CisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZWdp
c3RyYWJsZURvbWFpbjsKKyAgICBQYWdlR3JvdXBJZGVudGlmaWVyIG1fcGFnZUdyb3VwSUQ7Cisg
ICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBtX3dlYlBhZ2VQcm94eUlEOworICAgIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOworICAgIFN0cmluZyBtX3VzZXJBZ2VudDsKKyAgICBS
ZWY8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyPiBtX3VzZXJDb250ZW50Q29udHJvbGxlcjsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFdlYlByZWZlcmVuY2VzU3RvcmU+IG1fcHJlZmVyZW5jZXNTdG9yZTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDgyYTRhZGE1M2ZkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzAgQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgeworICAgIExhdW5jaFNo
YXJlZFdvcmtlcihzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgV2ViQ29yZTo6
U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBVUkwgdXJsLCBz
dHJ1Y3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyB3b3JrZXJPcHRpb25zLCBzdHJ1Y3QgV2ViQ29y
ZTo6V29ya2VyRmV0Y2hSZXN1bHQgd29ya2VyRmV0Y2hSZXN1bHQpCisgICAgUG9zdENvbm5lY3RF
dmVudChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZp
ZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQgcG9ydCwgU3RyaW5nIHNvdXJjZU9y
aWdpbikKKyAgICBUZXJtaW5hdGVTaGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRl
bnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyKQorICAgIFVwZGF0ZVByZWZlcmVuY2VzU3Rv
cmUoc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSkKKyAgICBTZXRVc2Vy
QWdlbnQoU3RyaW5nIHVzZXJBZ2VudCkKKyAgICBDbG9zZSgpCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb24uY3BwCmluZGV4IDVjNWZkYWE2MDA1Ny4uZDdkOTk0ZGUxZjc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcApAQCAtMjYsMjMgKzI2LDQ0
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbi5oIgogCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNsdWRlIDxX
ZWJDb3JlL1NoYXJlZFdvcmtlck1hbmFnZXIuaD4KKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVu
dGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Xb3JrZXJPcHRpb25zLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpXZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uKCkgPSBkZWZhdWx0OworI2RlZmluZSBDT05ORUNUSU9OX1JF
TEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQ
cm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbjo6IiBmbXQsIHRoaXMsIFdlYkNvcmU6OlByb2Nlc3M6OmlkZW50aWZpZXIoKS50b1VJbnQ2
NCgpLCAjI19fVkFfQVJHU19fKQorCitXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpX
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVB
U0VfTE9HKCJXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOiIpOworfQorCitXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjp+V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygifldlYlNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb246Iik7Cit9CiAKIElQQzo6Q29ubmVjdGlvbiogV2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAogewogICAgIHJl
dHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpOwogfQogCi12b2lkIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb246OnJlcXVlc3RTaGFyZWRXb3JrZXIoY29uc3QgVVJMJiB1cmwsIFdlYkNvcmU6OlNoYXJl
ZFdvcmtlciYgc2hhcmVkV29ya2VyLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYg
cG9ydCwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMpCit2b2lkIFdlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnJlcXVlc3RTaGFyZWRXb3JrZXIoY29uc3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwsIFdl
YkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBjb25zdCBXZWJDb3JlOjpXb3Jr
ZXJPcHRpb25zJiB3b3JrZXJPcHRpb25zKQogewotICAgIC8vIEZJWE1FOiBTaG91bGQgc2VuZCBJ
UEMgdG8gdGhlIG5ldHdvcmsgcHJvY2Vzcy4KLSAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJNYW5h
Z2VyOjpzaW5nbGV0b24oKS5jb25uZWN0KHVybCwgc2hhcmVkV29ya2VyLCBXVEZNb3ZlKHBvcnQp
LCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMpKTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJy
ZXF1ZXN0U2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGlj
fXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6
UmVxdWVzdFNoYXJlZFdvcmtlciB7IG9yaWdpbiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciwgdXJsLCBXVEZNb3ZlKHBvcnQpLCB3b3JrZXJPcHRpb25zIH0pOwogfQogCit2b2lkIFdlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5
KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcikKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJzaGFyZWRXb3JrZXJP
YmplY3RJc0dvaW5nQXdheTogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31z
Iiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OlNo
YXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5IHsgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciB9KTsKK30KKworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0cKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKaW5kZXggNjFlZTVh
ZjQyNGRjLi5kMzJjNTJlMWUxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
LmgKQEAgLTI1LDIwICsyNSwyNSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLWNsYXNzIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMg
V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiwgcHJpdmF0ZSBJUEM6Ok1lc3Nh
Z2VTZW5kZXIgeworY2xhc3MgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiBmaW5hbCA6
IHB1YmxpYyBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLCBwcml2YXRlIElQ
Qzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24+IGNyZWF0ZSgp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbik7
IH0KKyAgICB+V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpOworCisgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsK
IAogcHJpdmF0ZToKICAgICBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCk7CiAKICAg
ICAvLyBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLgotICAgIHZvaWQgcmVx
dWVzdFNoYXJlZFdvcmtlcihjb25zdCBVUkwmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXImLCBXZWJD
b3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJikg
ZmluYWw7CisgICAgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFVS
TCYsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgY29uc3QgV2ViQ29yZTo6V29y
a2VyT3B0aW9ucyYpIGZpbmFsOworICAgIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3
YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikgZmluYWw7CiAKICAgICAv
LyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVy
Q29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi43MjJhZTFhMzJjOTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCkBAIC0wLDAgKzEsMjcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworbWVzc2FnZXMgLT4gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiB7CisgICAg
RmV0Y2hTY3JpcHRJbkNsaWVudChVUkwgdXJsLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpX
b3JrZXJPcHRpb25zIHdvcmtlck9wdGlvbnMpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6V29ya2VyRmV0
Y2hSZXN1bHQgZmV0Y2hSZXN1bHQpIEFzeW5jCisgICAgTm90aWZ5V29ya2VyT2JqZWN0T2ZMb2Fk
Q29tcGxldGlvbihXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCisgICAg
UG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgU3RyaW5nIGVycm9yTWVzc2Fn
ZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFN0cmluZyBzb3VyY2VVUkwpCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZDVkZGE3MTYzMTZi
Li44Yzc0YzdjYmNhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
QEAgLTg0LDYgKzg0LDggQEAKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNo
YXJlZFdvcmtlclByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFtLmgiCiAjaW5j
bHVkZSAiV2Vic2l0ZURhdGEuaCIKQEAgLTEzNCw2ICsxMzYsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2Vy
R2VzdHVyZUluZGljYXRvci5oPgogI2luY2x1ZGUgPHBhbC9Mb2dnaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL0FsZ29yaXRobXMuaD4KQEAgLTkwNCw3ICs5MDcsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OmRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVy
JiBkZQogICAgIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICAvLyBGSVhNRTog
UmVtb3ZlPwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdl
czo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkg
ewogICAgICAgICBBU1NFUlQoU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlv
bigpKTsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiA9IFNXQ29u
dGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKQEAgLTkxMyw2ICs5MTUsMTMg
QEAgdm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGUKICAgICB9CiAjZW5kaWYKIAorICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAg
QVNTRVJUKFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9u
KCkpOworICAgICAgICBpZiAoYXV0byogY29udGV4dE1hbmFnZXJDb25uZWN0aW9uID0gU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAg
ICAgIHN0YXRpY19jYXN0PFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiY+
KCpjb250ZXh0TWFuYWdlckNvbm5lY3Rpb24pLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgTE9HX0VSUk9SKCJVbmhh
bmRsZWQgd2ViIHByb2Nlc3MgbWVzc2FnZSAnJXMnIChkZXN0aW5hdGlvbjogJSIgUFJJdTY0ICIg
cGlkOiAlZCkiLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpLCBkZWNvZGVyLmRl
c3RpbmF0aW9uSUQoKSwgc3RhdGljX2Nhc3Q8aW50PihnZXRDdXJyZW50UHJvY2Vzc0lEKCkpKTsK
IH0KIApAQCAtMTkxOSw2ICsxOTI4LDE2IEBAIExpYldlYlJUQ05ldHdvcmsmIFdlYlByb2Nlc3M6
OmxpYldlYlJUQ05ldHdvcmsoKQogICAgIHJldHVybiAqbV9saWJXZWJSVENOZXR3b3JrOwogfQog
Cit2b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNv
bnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lz
dHJhYmxlRG9tYWluLCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYgaW5pdGlhbGl6
YXRpb25EYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgLy8gV2UgYXJlIGluIHRoZSBTaGFyZWQgV29ya2VyIGNvbnRleHQgcHJvY2VzcyBh
bmQgdGhlIGNhbGwgYmVsb3cgZXN0YWJsaXNoZXMgb3VyIGNvbm5lY3Rpb24gdG8gdGhlIE5ldHdv
cmsgUHJvY2VzcworICAgIC8vIGJ5IGNhbGxpbmcgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlciBuZWVkcyB0byB1c2UgdGhlIHNhbWUgdW5k
ZXJseWluZyBJUEM6OkNvbm5lY3Rpb24gYXMgdGhlCisgICAgLy8gTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uIGZvciBzeW5jaHJvbml6YXRpb24gcHVycG9zZXMuCisgICAgYXV0byYgaXBjQ29ubmVj
dGlvbiA9IGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKKyAg
ICBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0Q29ubmVjdGlvbiht
YWtlVW5pcXVlPFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29u
bmVjdGlvbiwgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHBhZ2VHcm91cElELCB3ZWJQYWdl
UHJveHlJRCwgcGFnZUlELCBzdG9yZSwgV1RGTW92ZShpbml0aWFsaXphdGlvbkRhdGEpKSk7Cisg
ICAgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKS0+
ZXN0YWJsaXNoQ29ubmVjdGlvbihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiB2b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFNlcnZp
Y2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRlbnRp
ZmllciBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwg
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwg
UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVy
LCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYgaW5pdGlhbGl6YXRpb25EYXRhLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBkZDhkNzRmZmYyNjkuLjY1Zjc3MzIwMWE3
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC00NjksNiArNDY5LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGdhbWVwYWREaXNjb25uZWN0ZWQodW5zaWduZWQgaW5kZXgp
OwogI2VuZGlmCiAKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVu
dGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXph
dGlvbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVu
dGlmaWVyLCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZGZkMzA2NDU2M2Y5Li5lNTUyOTZiOTA0ZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBA
IC0xMDAsNiArMTAwLDggQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciBO
b3RSZWZDb3VudGVkIHsKICAgICBHYW1lcGFkRGlzY29ubmVjdGVkKHVuc2lnbmVkIGluZGV4KQog
I2VuZGlmCiAKKyAgICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJL
aXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9y
ZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBzdHJ1Y3QgV2ViS2l0OjpTZXJ2
aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhIGluaXRpYWxpemF0aW9uRGF0YSkgLT4gKCkgQXN5
bmMKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBFc3RhYmxpc2hTZXJ2aWNlV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYktpdDo6UGFnZUdyb3VwSWRl
bnRpZmllciBwYWdlR3JvdXBJRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBh
Z2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHN0cnVjdCBXZWJLaXQ6
OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRv
bWFpbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRp
Zmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpTZXJ2aWNl
V29ya2VySW5pdGlhbGl6YXRpb25EYXRhIGluaXRpYWxpemF0aW9uRGF0YSkgLT4gKCkgQXN5bmMK
ICNlbmRpZgo=
</data>
<flag name="commit-queue"
          id="477299"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450791</attachid>
            <date>2022-02-03 10:39:15 -0800</date>
            <delta_ts>2022-02-03 11:43:21 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>235958_SharedWorker_multiProcess_wip.patch</filename>
            <type>text/plain</type>
            <size>268559</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDQwMjQ2NmU0OWYwZS4uMTcwNGMzMDNkY2JjIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTQ2Myw3ICs0NjMsNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYi1sb2Nrcy9zdGVhbC50ZW50YXRpdmUuaHR0cHMuYW55Lmh0bWwgWyBEdW1wSgog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3Ro
ZS1hbmFseXNlcm5vZGUtaW50ZXJmYWNlL3Rlc3QtYW5hbHlzZXItbWluaW11bS5odG1sIFsgRHVt
cEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUt
ZGlzY29ubmVjdC1hdWRpb3BhcmFtLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NhbWUtb3JpZ2luLWNoZWNr
LnN1Yi5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMuaHRt
bCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCiBmYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWJh
Y2stZm9yd2FyZC1jYWNoZS5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGZhc3Qv
aGlzdG9yeS9wYWdlLWNhY2hlLWNyZWF0ZUltYWdlQml0bWFwLmh0bWwgWyBEdW1wSlNDb25zb2xl
TG9nSW5TdGRFcnIgXQogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLWluLWxv
YWRpbmctaWZyYW1lLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQpAQCAtODUzLDYg
Kzg1Miw3IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdXNlci10aW1pbmcvbWFy
ay5odG1sIFsgRmFpbHVyZSBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dXNlci10aW1pbmcvbWVhc3VyZV9hc3NvY2lhdGVkX3dpdGhfbmF2aWdhdGlvbl90aW1pbmcuaHRt
bCBbIEZhaWx1cmUgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
d2ViYXBwYXBpcy9zeXN0ZW0tc3RhdGUtYW5kLWNhcGFiaWxpdGllcy90aGUtbmF2aWdhdG9yLW9i
amVjdC9wbHVnaW5zLWFuZC1taW1ldHlwZXMuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2JlYWNvbi9iZWFjb24tcmVkaXJlY3Quc3ViLndpbmRv
dy5odG1sIFsgRmFpbHVyZSBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L2Fub255bW91cy1pZnJhbWUvc2hhcmVk
d29ya2VyLXBhcnRpdGlvbmluZy50ZW50YXRpdmUuaHR0cHMud2luZG93Lmh0bWwgWyBGYWlsdXJl
IFBhc3MgXQogCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2RvY3VtZW50LW1ldGFkYXRhL3RoZS1saW5rLWVsZW1lbnQvbGluay1sb2FkLWVycm9yLWV2ZW50
cy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZG9jdW1lbnQtbWV0YWRhdGEvdGhlLWxpbmstZWxl
bWVudC9saW5rLWxvYWQtZXJyb3ItZXZlbnRzLmh0dHBzLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9n
SW5TdGRFcnIgXQpAQCAtNTE1Nyw2ICs1MTU3LDEwIEBAIHdlYmtpdC5vcmcvYi8xODM5OTQgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nzb20vY3NzLXN0eWxlLWF0dHItZGVj
CiAjIFRlc3QgaXMgY3Jhc2hpbmcgaW4gRGVidWcgYnVpbGRzIHNpbmNlIGltcG9ydC4KIHdlYmtp
dC5vcmcvYi8yMzQ5NzcgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
ZG9tL2V2ZW50cy9mb2N1cy1ldmVudC1kb2N1bWVudC1tb3ZlLmh0bWwgWyBTa2lwIF0KIAorIyBU
ZXN0IGlzIGZsYWt5IGJlY2F1c2UgTWVzc2FnZVBvcnQgbWVzc2FnZXMgbWF5IGdldCByZWNlaXZl
ZCBpbiBhIGRpZmZlcmVudCBvcmRlciB3aGVuIHNldmVyYWwgTWVzc2FnZVBvcnRzIGFyZSBpbnZv
bHZlZCwKKyMgZHVlIHRvIGhvdyBNZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpIGlzIGlt
cGxlbWVudGVkLgoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJl
ZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJy
IEZhaWx1cmUgUGFzcyBdCisKICMgUGx1Z2lucwogIyBGSVhNRTogUmVtb3ZlIHRoZXNlIHRlc3Rz
LgogcGx1Z2lucy8gWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtl
ci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
aW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dApp
bmRleCAwZTk5NzI0Yjg2NGIuLjY4OThiNTRhYWI2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9p
bnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3Vi
LWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFs
IFVSTCBodHRwczovL3d3dy5sb2NhbGhvc3Q6OTQ0NC9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9z
dXBwb3J0L3Jlc291cmNlLnB5P2Nyb3NzLW9yaWdpbi1mZXRjaAotQmxvY2tlZCBhY2Nlc3MgdG8g
ZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHkt
cG9saWN5L3N1cHBvcnQvcmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLXhocgotQmxvY2tlZCBhY2Nl
c3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L3N1cHBvcnQvcmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLWZldGNoCiAKIFBB
U1MgU2FtZS1vcmlnaW4gJ2ZldGNoKCknLgogUEFTUyBTYW1lLW9yaWdpbiBYSFIuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3Vi
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2Ny
aXB0LXNyYy5zdWItZXhwZWN0ZWQudHh0CmluZGV4IDk3OTEwNjMwMzc4NS4uYmI2NDUyZjQ0YTBh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlw
dC1zcmMuc3ViLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hh
cmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dApAQCAtMiwxMCArMiw5IEBACiBI
YXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIAogVElNRU9VVCBzaGFyZWR3
b3JrZXItc2NyaXB0LXNyYyBUZXN0IHRpbWVkIG91dAotRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9y
dFNjcmlwdHMoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgIEEgbmV0d29yayBl
cnJvciBvY2N1cnJlZC4KLUZBSUwgYGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91
dCBDU1AgUmVmdXNlZCB0byBldmFsdWF0ZSBhIHN0cmluZyBhcyBKYXZhU2NyaXB0IGJlY2F1c2Ug
J3Vuc2FmZS1ldmFsJyBpcyBub3QgYW4gYWxsb3dlZCBzb3VyY2Ugb2Ygc2NyaXB0IGluIHRoZSBm
b2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAic2NyaXB0LXNyYyAn
c2VsZicgJ25vbmNlLWEnIGJsb2I6IGZpbGVzeXN0ZW06Ii4KLQotRkFJTCBgc2V0VGltZW91dChb
c3RyaW5nXSlgIG5vdCBibG9ja2VkIGluIGh0dHA6IHdpdGhvdXQgQ1NQIGFzc2VydF91bnJlYWNo
ZWQ6IGNhbGxiYWNrIG5vdCBjYWxsZWQuIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBD
cm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91
ciBDU1AgTG9hZCBmYWlsZWQKK1BBU1MgYGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0
aG91dCBDU1AKK1BBU1MgYHNldFRpbWVvdXQoW3N0cmluZ10pYCBub3QgYmxvY2tlZCBpbiBodHRw
OiB3aXRob3V0IENTUAogVElNRU9VVCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgYmxv
Y2tlZCBpbiBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnIFRlc3QgdGltZWQgb3V0CiBOT1RS
VU4gYGV2YWwoKWAgYmxvY2tlZCBpbiBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCiBOT1RS
VU4gYHNldFRpbWVvdXQoW3N0cmluZ10pYCBibG9ja2VkIGluIGh0dHA6IHdpdGggc2NyaXB0LXNy
YyAnc2VsZicKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRp
bWVvdXQuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0
LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4dAppbmRleCA0ZWFjMWNjYzA1MjYuLmI4ZWUxM2IwZmZj
ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91dC5z
dWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRp
bWVvdXQuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKIAogRkFJTCBEZWRpY2F0ZWQg
d29ya2VyIGluaGVyaXRzIENTUCBmcm9tIG1haW4gZG9jdW1lbnQgYXNzZXJ0X2VxdWFsczogZXhw
ZWN0ZWQgInNldFRpbWVvdXQgYWxsb3dlZCIgYnV0IGdvdCAic2V0VGltZW91dCBibG9ja2VkIgot
RkFJTCBTaGFyZWQgd29ya2VyIGRlbGl2ZXJzIGl0cyBvd24gQ1NQIGFzc2VydF9lcXVhbHM6IGV4
cGVjdGVkICJzZXRUaW1lb3V0IGJsb2NrZWQiIGJ1dCBnb3QgInNldFRpbWVvdXQgYWxsb3dlZCIK
K1BBU1MgU2hhcmVkIHdvcmtlciBkZWxpdmVycyBpdHMgb3duIENTUAogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMv
b2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJv
d3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBl
Y3RlZC50eHQKaW5kZXggYzEwNzEzNjU1MjgwLi42Zjg0NGRkNWQ5NDkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9v
ZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
YnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1l
eHBlY3RlZC50eHQKQEAgLTUsNyArNSw3IEBAIEhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNz
YWdlID0gbnVsbAogUEFTUyBEZWRpY2F0ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0CiBQ
QVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0CiBQQVNTIERlZGlj
YXRlZCB3b3JrZXIgb2YgdGhlIG5vdC1pbi1jYWNoZSBzY3JpcHQKLVBBU1MgU2hhcmVkIHdvcmtl
ciBvZiB0aGUgY2FjaGVkIHNjcmlwdAotUEFTUyBTaGFyZWQgd29ya2VyIG9mIHRoZSBmYWxsYmFj
a2VkIHNjcmlwdAorRkFJTCBTaGFyZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0IGFzc2Vy
dF9lcXVhbHM6IGV4cGVjdGVkICJEb25lOiBjYWNoZWQiIGJ1dCBnb3QgIkVycm9yOiBJbXBvcnRp
bmcgYSBub24tY2FjaGVkIHNjcmlwdCBtdXN0IGZhaWwuIgorRkFJTCBTaGFyZWQgd29ya2VyIG9m
IHRoZSBmYWxsYmFja2VkIHNjcmlwdCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiRG9uZTogZmFs
bGJhY2tlZCIgYnV0IGdvdCAiRXJyb3I6IEltcG9ydGluZyBhIG5vbi1jYWNoZWQgc2NyaXB0IG11
c3QgZmFpbC4iCiBUSU1FT1VUIFNoYXJlZCB3b3JrZXIgb2YgdGhlIG5vdC1pbi1jYWNoZSBzY3Jp
cHQgVGVzdCB0aW1lZCBvdXQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5v
bnltb3VzLWlmcmFtZS9zaGFyZWR3b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53
aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlmcmFt
ZS9zaGFyZWR3b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0
ZWQudHh0CmluZGV4IDRlZDg3NDc0NzZjNy4uNTg2ZDEwMTUyYTM2IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2lu
LWVtYmVkZGVyLXBvbGljeS9hbm9ueW1vdXMtaWZyYW1lL3NoYXJlZHdvcmtlci1wYXJ0aXRpb25p
bmcudGVudGF0aXZlLmh0dHBzLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRl
ci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3b3JrZXItcGFydGl0aW9uaW5nLnRlbnRh
dGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIEFu
b255bW91cyBpZnJhbWVzIGdldCBwYXJ0aXRpb25lZCBzaGFyZWQgd29ya2Vycy4gYXNzZXJ0X3Ry
dWU6IFRoZSAibm9ybWFsIiBpZnJhbWUncyBzaGFyZWR3b3JrZXIgc2hvdWxkIHJldHVybiB7Im5v
cm1hbCI6IHRydWUsICJub3JtYWxfY29udHJvbCI6IHRydWV9LCBidXQgaW5zdGVhZCByZXR1cm5l
ZCB7Im5vcm1hbCI6dHJ1ZX0gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK0ZBSUwgQW5vbnltb3Vz
IGlmcmFtZXMgZ2V0IHBhcnRpdGlvbmVkIHNoYXJlZCB3b3JrZXJzLiBhc3NlcnRfdHJ1ZTogVGhl
ICJub3JtYWwiIGlmcmFtZSdzIHNoYXJlZHdvcmtlciBzaG91bGQgcmV0dXJuIHsibm9ybWFsIjog
dHJ1ZSwgIm5vcm1hbF9jb250cm9sIjogdHJ1ZX0sIGJ1dCBpbnN0ZWFkIHJldHVybmVkIHsibm9y
bWFsX2NvbnRyb2wiOnRydWUsIm5vcm1hbCI6dHJ1ZSwiYW5vbnltb3VzIjp0cnVlLCJhbm9ueW1v
dXNfY29udHJvbCI6dHJ1ZX0gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9y
aWdpbi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0
cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xh
dGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IDYzNTViNjhkZTcwYi4uYzhi
Zjc1ZTdlYTg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4t
aXNvbGF0ZWQtcGVybWlzc2lvbi5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRl
ci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQu
dHh0CkBAIC0yMCw3ICsyMCw3IEBAIFBBU1MgZGVkaWNhdGVkIHdvcmtlcjogc2NoZW1lID0gYmxv
YiwgdmFsdWUgPSAqCiBQQVNTIGRlZGljYXRlZCB3b3JrZXI6IHNjaGVtZSA9IGJsb2IsIHZhbHVl
ID0gc2VsZgogRkFJTCBkZWRpY2F0ZWQgd29ya2VyOiBzY2hlbWUgPSBibG9iLCB2YWx1ZSA9IChc
KSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCBmYWxzZSBidXQgZ290IHRydWUKIFBBU1Mgc2hhcmVk
IHdvcmtlcjogd2l0aENvb3BDb2VwID0gZmFsc2UKLVBBU1Mgc2hhcmVkIHdvcmtlcjogd2l0aENv
b3BDb2VwID0gdHJ1ZQorRkFJTCBzaGFyZWQgd29ya2VyOiB3aXRoQ29vcENvZXAgPSB0cnVlIGFz
c2VydF9lcXVhbHM6IGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZQogUEFTUyBzZXJ2aWNlIHdv
cmtlcjogd2l0aENvb3BDb2VwID0gZmFsc2UKIEZBSUwgc2VydmljZSB3b3JrZXI6IHdpdGhDb29w
Q29lcCA9IHRydWUgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4
cGVjdGVkLnR4dAppbmRleCAzMzk4YmQ4ODkzMWIuLjRjODY2ZWIyOTI2MyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9y
aWdpbi1lbWJlZGRlci1wb2xpY3kvc2hhcmVkLXdvcmtlcnMuaHR0cHMtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9z
cy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4
dApAQCAtMiw3ICsyLDcgQEAgVmVyaWZ5IHRoZSBDcm9zcy1PcmlnaW4gRW1iZWRkZXIgUG9saWN5
IGZvciBTaGFyZWQgV29ya2VycyBieSBwZXJmb3JtaW5nIGEgY3Jvc3MKIAogCiBQQVNTIGRlZmF1
bHQgcG9saWN5IChkZXJpdmVkIGZyb20gcmVzcG9uc2UpCi1GQUlMICJyZXF1aXJlLWNvcnAiIChk
ZXJpdmVkIGZyb20gcmVzcG9uc2UpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJmYWlsdXJlIiBi
dXQgZ290ICJzdWNjZXNzIgorUEFTUyAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIHJlc3Bv
bnNlKQogUEFTUyBkZWZhdWx0IHBvbGljeSAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBkdWUgdG8g
dXNlIG9mIGxvY2FsIHNjaGVtZSAtIGJsb2IgVVJMKQogRkFJTCAicmVxdWlyZS1jb3JwIiAoZGVy
aXZlZCBmcm9tIG93bmVyIHNldCBkdWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAtIGJsb2IgVVJM
KSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiZmFpbHVyZSIgYnV0IGdvdCAic3VjY2VzcyIKIFBB
U1MgZGVmYXVsdCBwb2xpY3kgKGRlcml2ZWQgZnJvbSBvd25lciBzZXQgZHVlIHRvIHVzZSBvZiBs
b2NhbCBzY2hlbWUgLSBkYXRhIFVSTCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5
L3dvcmtlci1pbmhlcml0YW5jZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRl
ci1wb2xpY3kvd29ya2VyLWluaGVyaXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKaW5kZXgg
NzViMWQzM2U1MjYwLi5iMmJmMmUzYmZmM2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9s
aWN5L3dvcmtlci1pbmhlcml0YW5jZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4t
ZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5jZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0
CkBAIC0xLDcgKzEsNiBAQAogQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8v
d3d3LmxvY2FsaG9zdDo5NDQ0L2NvbW1vbi9ibGFuay5odG1sCiBCbG9ja2VkIGFjY2VzcyB0byBl
eHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29tbW9uL2JsYW5rLmh0bWwK
IEJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2NhbGhvc3Q6OTQ0
NC9jb21tb24vYmxhbmsuaHRtbAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBz
Oi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbW1vbi9ibGFuay5odG1sCiAKIFBBU1MgVGVzdCB0aGF0
IGxvY2FsIHNjaGVtZSB3b3JrZXJzIGluaGVyaXQgQ09FUDogcmVxdWlyZS1jb3JwIGZyb20gdGhl
IGNyZWF0aW5nIGRvY3VtZW50CiBQQVNTIGJsb2IgVVJMIGRlZGljYXRlZCB3b3JrZXI6IFNhbWUg
b3JpZ2luIHNob3VsZCBiZSBhbGxvd2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9TaGFyZWRXb3JrZXJfZGF0YVVybC1leHBlY3RlZC50eHQKaW5kZXggOTk1YTA2MDE5
Yjg0Li45YjU4MjBhYWU4Y2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJfZGF0YVVybC1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4cGVjdGVkLnR4dApAQCAtMSwxMyArMSw1IEBACi1D
T05TT0xFIE1FU1NBR0U6IEVycm9yOiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3Qg
MQogCiAKLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gRXJyb3I6IGFzc2VydF9lcXVh
bHM6IGV4cGVjdGVkIDIgYnV0IGdvdCAxCi0KLVBBU1MgRGF0YSBVUkwgbm90IHNoYXJlZCBieSBj
cm9zcy1vcmlnaW4gU2hhcmVkV29ya2VycwotVElNRU9VVCBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNh
bWUtb3JpZ2luIFNoYXJlZFdvcmtlcnMgVGVzdCB0aW1lZCBvdXQKLQotSGFybmVzcyBFcnJvciAo
RkFJTCksIG1lc3NhZ2UgPSBFcnJvcjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290
IDEKLQogUEFTUyBEYXRhIFVSTCBub3Qgc2hhcmVkIGJ5IGNyb3NzLW9yaWdpbiBTaGFyZWRXb3Jr
ZXJzCi1USU1FT1VUIERhdGEgVVJMcyBzaGFyZWQgYnkgc2FtZS1vcmlnaW4gU2hhcmVkV29ya2Vy
cyBUZXN0IHRpbWVkIG91dAorUEFTUyBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNo
YXJlZFdvcmtlcnMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11
cmwud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJs
LndpbmRvdy1leHBlY3RlZC50eHQKaW5kZXggNTc2ZTZkMmI3ZWQyLi40YTI2YmU5MjlhOGQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVj
dGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBo
dHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBv
cnQtb24tbG9hZC1zY3JpcHQucHkKIAogUEFTUyBTdGF0aWMgaW1wb3J0LgogRkFJTCBTdGF0aWMg
aW1wb3J0IChjcm9zcy1vcmlnaW4pLiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24g
d2l0aCB2YWx1ZTogIkltcG9ydGluZyBhIG1vZHVsZSBzY3JpcHQgZmFpbGVkLiIKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhw
ZWN0ZWQudHh0CmluZGV4IDRmODY0MWU1MTQ4MC4uMjk5N2Y3ZTFmMzA4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxl
cy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBl
Y3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IE9yaWdpbiBudWxsIGlz
IG5vdCBhbGxvd2VkIGJ5IEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbi4gU3RhdHVzIGNvZGU6
IDIwMAogCiBIYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQK
aW5kZXggZWFjN2Y5NWRlNmYyLi5jYmMwNDI5ZTBjNzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13
b3JrZXItaW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVk
LXdvcmtlci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMg
QEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0
Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkK
IAogSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1
bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQt
d29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0CmluZGV4IDU3NmU2ZDJiN2VkMi4uNGEy
NmJlOTI5YThkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50
eHQKQEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6
Ly93d3cxLmxvY2FsaG9zdDo5NDQzL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LW9u
LWxvYWQtc2NyaXB0LnB5CiAKIFBBU1MgU3RhdGljIGltcG9ydC4KIEZBSUwgU3RhdGljIGltcG9y
dCAoY3Jvc3Mtb3JpZ2luKS4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGgg
dmFsdWU6ICJJbXBvcnRpbmcgYSBtb2R1bGUgc2NyaXB0IGZhaWxlZC4iCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxl
cy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hh
cmVkLXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAppbmRleCBlMWJlZGY1
NDMwZWYuLmE3MGYwNWFmNTRmNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25z
LWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMt
Y3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3Mg
dG8gZXh0ZXJuYWwgVVJMIGh0dHA6Ly93d3cxLmxvY2FsaG9zdDo4ODAwL3dvcmtlcnMvbW9kdWxl
cy9yZXNvdXJjZXMvZXhwb3J0LWNyZWRlbnRpYWxzLnB5CiAKIEhhcm5lc3MgRXJyb3IgKFRJTUVP
VVQpLCBtZXNzYWdlID0gbnVsbAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMv
MDA0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhwZWN0ZWQudHh0
CmluZGV4IDAxOGRiNjA0NTY5ZC4uY2ZlNDY1NTY3NWNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRp
cGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMv
MDA0LWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDMgQEAKIAotSGFybmVzcyBFcnJvciAoVElNRU9V
VCksIG1lc3NhZ2UgPSBudWxsCi0KLU5PVFJVTiBzaGFyZWQgd29ya2VyIHdpdGggbXVsdGlwbGUg
ZG9jdW1lbnRzCitQQVNTIHNoYXJlZCB3b3JrZXIgd2l0aCBtdWx0aXBsZSBkb2N1bWVudHMKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNz
L211bHRpcGxlLXdvcmtlcnMvMDA4LWV4cGVjdGVkLnR4dAppbmRleCA5N2E0ZTdhNzNhNjMuLjA5
ZjY3MmQxYzYyMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKQEAgLTEs
NSArMSwzIEBACiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1U
SU1FT1VUIG1lc3NhZ2VjaGFubmVsIGluIHNoYXJlZCB3b3JrZXIgVGVzdCB0aW1lZCBvdXQKK1BB
U1MgbWVzc2FnZWNoYW5uZWwgaW4gc2hhcmVkIHdvcmtlcgogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtl
ci1mcm9tLWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2It
dXJsLndpbmRvdy1leHBlY3RlZC50eHQKaW5kZXggYTA4OWMyMjQ4OWUyLi4xOWU0NmIwOWE1NmEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
c2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNyAr
MSw1IEBACiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1GQUlM
IENyZWF0aW5nIGEgc2hhcmVkIHdvcmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MuIGFzc2VydF9l
cXVhbHM6IGV4cGVjdGVkICJ3b3JrZXJfT0tfMiIgYnV0IGdvdCAid29ya2VyX09LXzEiCitQQVNT
IENyZWF0aW5nIGEgc2hhcmVkIHdvcmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MuCiBQQVNTIENy
ZWF0aW5nIGEgc2hhcmVkIHdvcmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MgaW1tZWRpYXRlbHkg
YmVmb3JlIHJldm9raW5nLgotVElNRU9VVCBDb25uZWN0aW5nIHRvIGEgc2hhcmVkIHdvcmtlciBv
biBhIHJldm9rZWQgYmxvYiBVUkwgd29ya3MuIFRlc3QgdGltZWQgb3V0CitQQVNTIENvbm5lY3Rp
bmcgdG8gYSBzaGFyZWQgd29ya2VyIG9uIGEgcmV2b2tlZCBibG9iIFVSTCB3b3Jrcy4KIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtl
ci1uYW1lLXZpYS1vcHRpb25zLWV4cGVjdGVkLnR4dAppbmRleCA2ZmZlZTI3MzkwZDkuLmFlNDVi
NGQyNzM5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQKQEAgLTEsMyAr
MSwzIEBACiAKLUZBSUwgVGVzdCB0aGUgbmFtZSBwcm9wZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBt
aXhpbmcgY29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29uc3RydWN0b3Igc3RyaW5ncyBFcnJvcjog
YXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290IDEKK1BBU1MgVGVzdCB0aGUgbmFtZSBw
cm9wZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBtaXhpbmcgY29uc3RydWN0b3Igb3B0aW9ucyBhbmQg
Y29uc3RydWN0b3Igc3RyaW5ncwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25zLW1pc21h
dGNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0
CmluZGV4IGY2NTY5NDYxNTBkYi4uNGY5OWExMzQwOWU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1v
cHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25zLW1pc21h
dGNoLWV4cGVjdGVkLnR4dApAQCAtMSwyOCArMSwyNiBAQAogCi1IYXJuZXNzIEVycm9yIChUSU1F
T1VUKSwgbWVzc2FnZSA9IG51bGwKLQotVElNRU9VVCBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3Jr
ZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBt
b2R1bGUgVGVzdCB0aW1lZCBvdXQKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIg
d2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGRlZmF1
bHQKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogY2xhc3NpYyB0byBtb2R1bGUKLU5PVFJVTiBDb25uZWN0
aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxv
Y2tlZDogbW9kdWxlIHRvIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3Jr
ZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBv
bWl0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBpbmNsdWRlIGlu
IGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJl
bnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBkZWZhdWx0IGluIGNsYXNzaWMK
LU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9u
cyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCi1OT1RS
VU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hv
dWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVkZSBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IHNhbWUtb3JpZ2luIHRvIG9taXQgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRv
IHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDog
aW5jbHVkZSB0byBkZWZhdWx0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJl
ZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVk
ZSB0byBvbWl0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIg
d2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBzYW1l
LW9yaWdpbiBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdp
dGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gb21pdCBp
biBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJl
bnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBpbmNsdWRlIGluIG1vZHVs
ZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4gbW9kdWxlCi1OT1RSVU4g
Q29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxk
IGJlIGJsb2NrZWQ6IG9taXQgdG8gc2FtZS1vcmlnaW4gaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IG9taXQgdG8gaW5jbHVkZSBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNo
YXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2Ft
ZS1vcmlnaW4gdG8gb21pdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3
b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmln
aW4gdG8gaW5jbHVkZSBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3Jr
ZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBk
ZWZhdWx0IGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4g
bW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50
IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gc2FtZS1vcmlnaW4gaW4gbW9k
dWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIG1vZHVsZQorUEFTUyBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogbW9kdWxlIHRvIGRlZmF1bHQKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdp
dGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGNsYXNzaWMgdG8gbW9kdWxl
CitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25z
IHNob3VsZCBiZSBibG9ja2VkOiBtb2R1bGUgdG8gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRv
IHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDog
ZGVmYXVsdCB0byBvbWl0IGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29y
a2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8g
aW5jbHVkZSBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4g
Y2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQg
b3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2lj
CitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25z
IHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGluY2x1ZGUgaW4gY2xhc3NpYworUEFTUyBDb25u
ZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUg
YmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBz
aGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGlu
Y2x1ZGUgdG8gZGVmYXVsdCBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRv
IG9taXQgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBzYW1lLW9yaWdp
biBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZl
cmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIG9taXQgaW4gbW9kdWxl
CitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25z
IHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIGluY2x1ZGUgaW4gbW9kdWxlCitQQVNTIENv
bm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBi
ZSBibG9ja2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8g
c2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBv
bWl0IHRvIHNhbWUtb3JpZ2luIGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3
b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBp
bmNsdWRlIGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBp
biBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50
IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIGluY2x1ZGUgaW4gbW9k
dWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIGRlZmF1bHQgaW4gbW9kdWxlCitQQVNT
IENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3Vs
ZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBpbmNsdWRlIHRvIHNhbWUtb3JpZ2luIGluIG1vZHVsZQogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVj
dGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3
b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dAppbmRleCAxZTJkMzk5MmY2ZDUuLjU5Y2FjYTQ4NmY4
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9v
cGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0x
LDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHA6Ly93d3cyLmxv
Y2FsaG9zdDo4ODAwL3hoci9yZXNvdXJjZXMvaW5zcGVjdC1oZWFkZXJzLnB5P2ZpbHRlcl9uYW1l
PW9yaWdpbiZjb3JzCiAKIEZBSUwgUmVmZXJlciBoZWFkZXIgYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgIlJlZmVyZXI6IGh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC94aHIvcmVzb3VyY2VzL3dvcmtlcnho
ci1vcmlnaW4tcmVmZXJyZXIuanNcbiIgYnV0IGdvdCAiUmVmZXJlcjogaHR0cDovL2xvY2FsaG9z
dDo4ODAwL3hoci9yZXNvdXJjZXMvcmVkaXJlY3QucHk/bG9jYXRpb249d29ya2VyeGhyLW9yaWdp
bi1yZWZlcnJlci5qc1xuIgogRkFJTCBPcmlnaW4gaGVhZGVyIGFzc2VydF9lcXVhbHM6IGV4cGVj
dGVkICJPcmlnaW46IGh0dHA6Ly9sb2NhbGhvc3Q6ODgwMFxuIiBidXQgZ290ICIiCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3Jr
ZXItY29ubmVjdC1zcmMuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBv
bGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1jb25uZWN0LXNyYy5zdWItZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjM3NzhiYmE0Njlk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13
b3JrZXIvc2hhcmVkd29ya2VyLWNvbm5lY3Qtc3JjLnN1Yi1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNiBAQAorCitIYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKKworVElN
RU9VVCBzaGFyZWR3b3JrZXItY29ubmVjdC1zcmMgVGVzdCB0aW1lZCBvdXQKK1BBU1MgU2FtZS1v
cmlnaW4gJ2ZldGNoKCknIGluIGh0dHA6IHdpdGhvdXQgQ1NQCitQQVNTIFNhbWUtb3JpZ2luIFhI
UiBpbiBodHRwOiB3aXRob3V0IENTUAorUEFTUyBDcm9zcy1vcmlnaW4gJ2ZldGNoKCknIGluIGh0
dHA6IHdpdGhvdXQgQ1NQCitQQVNTIENyb3NzLW9yaWdpbiBYSFIgaW4gaHR0cDogd2l0aG91dCBD
U1AKK1BBU1MgU2FtZS1vcmlnaW4gPT4gY3Jvc3Mtb3JpZ2luICdmZXRjaCgpJyBpbiBodHRwOiB3
aXRob3V0IENTUAorUEFTUyBTYW1lLW9yaWdpbiAnZmV0Y2goKScgaW4gaHR0cDogd2l0aCBjb25u
ZWN0LXNyYyAnc2VsZicKK1BBU1MgU2FtZS1vcmlnaW4gWEhSIGluIGh0dHA6IHdpdGggY29ubmVj
dC1zcmMgJ3NlbGYnCitUSU1FT1VUIENyb3NzLW9yaWdpbiAnZmV0Y2goKScgaW4gaHR0cDogd2l0
aCBjb25uZWN0LXNyYyAnc2VsZicgVGVzdCB0aW1lZCBvdXQKK05PVFJVTiBDcm9zcy1vcmlnaW4g
WEhSIGluIGh0dHA6IHdpdGggY29ubmVjdC1zcmMgJ3NlbGYnCitOT1RSVU4gU2FtZS1vcmlnaW4g
PT4gY3Jvc3Mtb3JpZ2luICdmZXRjaCgpJyBpbiBodHRwOiB3aXRoIGNvbm5lY3Qtc3JjICdzZWxm
JworTk9UUlVOIFJlcG9ydHMgbWF0Y2ggaW4gaHR0cDogd2l0aCBjb25uZWN0LXNyYyAnc2VsZicK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIv
c2hhcmVkd29ya2VyLXJlcG9ydC1vbmx5LnN1Yi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3Vi
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjc3
N2NlZDQ1MWUyYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13
azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTAgQEAKKworSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBu
dWxsCisKK1BBU1MgU2FtZS1vcmlnaW4gJ2ZldGNoKCknLgorUEFTUyBTYW1lLW9yaWdpbiBYSFIu
CitUSU1FT1VUIENyb3NzLW9yaWdpbiAnZmV0Y2goKScuIFRlc3QgdGltZWQgb3V0CitOT1RSVU4g
Q3Jvc3Mtb3JpZ2luIFhIUi4KK05PVFJVTiBTYW1lLW9yaWdpbiA9PiBjcm9zcy1vcmlnaW4gJ2Zl
dGNoKCknLgorTk9UUlVOIGNvbm5lY3Qtc3JjLXNlbGYtcmVwb3J0LW9ubHkKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2Vy
LXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13
azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1zY3JpcHQtc3JjLnN1Yi1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43N2RjZTU1MDBhN2IKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtl
ci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIg
QEAKKworSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCisKK1RJTUVPVVQg
c2hhcmVkd29ya2VyLXNjcmlwdC1zcmMgVGVzdCB0aW1lZCBvdXQKK1BBU1MgQ3Jvc3Mtb3JpZ2lu
IGBpbXBvcnRTY3JpcHRzKClgIG5vdCBibG9ja2VkIGluIGh0dHA6IHdpdGhvdXIgQ1NQCitQQVNT
IGBldmFsKClgIG5vdCBibG9ja2VkIGluIGh0dHA6IHdpdGhvdXQgQ1NQCitQQVNTIGBzZXRUaW1l
b3V0KFtzdHJpbmddKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AKK1RJTUVPVVQg
Q3Jvc3Mtb3JpZ2luIGBpbXBvcnRTY3JpcHRzKClgIGJsb2NrZWQgaW4gaHR0cDogd2l0aCBzY3Jp
cHQtc3JjICdzZWxmJyBUZXN0IHRpbWVkIG91dAorTk9UUlVOIGBldmFsKClgIGJsb2NrZWQgaW4g
aHR0cDogd2l0aCBzY3JpcHQtc3JjICdzZWxmJworTk9UUlVOIGBzZXRUaW1lb3V0KFtzdHJpbmdd
KWAgYmxvY2tlZCBpbiBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCitOT1RSVU4gUmVwb3J0
cyBhcmUgc2VudCBmb3IgaHR0cDogd2l0aCBzY3JpcHQtc3JjICdzZWxmJworCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRv
dy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0
LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi42NTE5Y2QxZjY5NDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMSBAQAorCitQQVNTIFN0YXRpYyBpbXBvcnQuCitQQVNTIFN0YXRpYyBp
bXBvcnQgKGNyb3NzLW9yaWdpbikuCitQQVNTIFN0YXRpYyBpbXBvcnQgKHJlZGlyZWN0KS4KK1BB
U1MgTmVzdGVkIHN0YXRpYyBpbXBvcnQuCitQQVNTIFN0YXRpYyBpbXBvcnQgYW5kIHRoZW4gZHlu
YW1pYyBpbXBvcnQuCitQQVNTIER5bmFtaWMgaW1wb3J0LgorUEFTUyBOZXN0ZWQgZHluYW1pYyBp
bXBvcnQuCitQQVNTIER5bmFtaWMgaW1wb3J0IGFuZCB0aGVuIHN0YXRpYyBpbXBvcnQuCitQQVNT
IGV2YWwoaW1wb3J0KCkpLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGst
d2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJl
ZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lMzZjMDQ5ZjgyNTYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorCitIYXJu
ZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKKworUEFTUyBTdGF0aWMgaW1wb3J0
LgorUEFTUyBTdGF0aWMgaW1wb3J0IChjcm9zcy1vcmlnaW4pLgorVElNRU9VVCBTdGF0aWMgaW1w
b3J0IChyZWRpcmVjdCkuIFRlc3QgdGltZWQgb3V0CitOT1RSVU4gTmVzdGVkIHN0YXRpYyBpbXBv
cnQuCitOT1RSVU4gU3RhdGljIGltcG9ydCBhbmQgdGhlbiBkeW5hbWljIGltcG9ydC4KK05PVFJV
TiBEeW5hbWljIGltcG9ydC4KK05PVFJVTiBOZXN0ZWQgZHluYW1pYyBpbXBvcnQuCitOT1RSVU4g
RHluYW1pYyBpbXBvcnQgYW5kIHRoZW4gc3RhdGljIGltcG9ydC4KK05PVFJVTiBldmFsKGltcG9y
dCgpKS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWlt
cG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29y
a2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uNjUxOWNkMWY2OTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTEgQEAKKworUEFTUyBTdGF0aWMgaW1wb3J0LgorUEFTUyBTdGF0aWMgaW1wb3J0IChj
cm9zcy1vcmlnaW4pLgorUEFTUyBTdGF0aWMgaW1wb3J0IChyZWRpcmVjdCkuCitQQVNTIE5lc3Rl
ZCBzdGF0aWMgaW1wb3J0LgorUEFTUyBTdGF0aWMgaW1wb3J0IGFuZCB0aGVuIGR5bmFtaWMgaW1w
b3J0LgorUEFTUyBEeW5hbWljIGltcG9ydC4KK1BBU1MgTmVzdGVkIGR5bmFtaWMgaW1wb3J0Lgor
UEFTUyBEeW5hbWljIGltcG9ydCBhbmQgdGhlbiBzdGF0aWMgaW1wb3J0LgorUEFTUyBldmFsKGlt
cG9ydCgpKS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2Vy
LW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9z
aGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTJiMThiNTI0OTI4Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlh
bHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzUgQEAKKworUEFTUyBUZXN0IGluaXRpYWxpemF0
aW9uOiBzZXR0aW5nIHVwIGNyb3NzLW9yaWdpbiBjb29raWUKK1BBU1MgbmV3IFNoYXJlZFdvcmtl
cigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGRlZmF1bHQgY3JlZGVudGlhbHMgb3B0aW9uIHNob3Vs
ZCBiZWhhdmUgYXMgY3JlZGVudGlhbHM9c2FtZS1vcmlnaW4gYW5kIHNlbmQgdGhlIGNyZWRlbnRp
YWxzCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBjcmVkZW50
aWFscz1vbWl0IHNob3VsZCBub3Qgc2VuZCB0aGUgY3JlZGVudGlhbHMKK1BBU1MgbmV3IFNoYXJl
ZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPXNhbWUtb3JpZ2luIHNo
b3VsZCBzZW5kIHRoZSBjcmVkZW50aWFscworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0
eXBlPW1vZHVsZSBhbmQgY3JlZGVudGlhbHM9aW5jbHVkZSBzaG91bGQgc2VuZCB0aGUgY3JlZGVu
dGlhbHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGRlZmF1
bHQgY3JlZGVudGlhbHMgb3B0aW9uIHNob3VsZCBiZWhhdmUgYXMgY3JlZGVudGlhbHM9c2FtZS1v
cmlnaW4gYW5kIHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBzYW1lLW9yaWdpbiBzdGF0aWMgaW1w
b3J0cworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQgY3JlZGVu
dGlhbHM9b21pdCBzaG91bGQgbm90IHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBzYW1lLW9yaWdp
biBzdGF0aWMgaW1wb3J0cworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVs
ZSBhbmQgY3JlZGVudGlhbHM9c2FtZS1vcmlnaW4gc2hvdWxkIHNlbmQgdGhlIGNyZWRlbnRpYWxz
IGZvciBzYW1lLW9yaWdpbiBzdGF0aWMgaW1wb3J0cworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkg
d2l0aCB0eXBlPW1vZHVsZSBhbmQgY3JlZGVudGlhbHM9aW5jbHVkZSBzaG91bGQgc2VuZCB0aGUg
Y3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2luIHN0YXRpYyBpbXBvcnRzCitQQVNTIG5ldyBTaGFy
ZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBkZWZhdWx0IGNyZWRlbnRpYWxzIG9wdGlv
biBzaG91bGQgYmVoYXZlIGFzIGNyZWRlbnRpYWxzPXNhbWUtb3JpZ2luIGFuZCBub3Qgc2VuZCB0
aGUgY3JlZGVudGlhbHMgZm9yIGNyb3NzLW9yaWdpbiBzdGF0aWMgaW1wb3J0cworUEFTUyBuZXcg
U2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQgY3JlZGVudGlhbHM9b21pdCBzaG91
bGQgbm90IHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gc3RhdGljIGltcG9y
dHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRp
YWxzPXNhbWUtb3JpZ2luIHNob3VsZCBub3Qgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIGNyb3Nz
LW9yaWdpbiBzdGF0aWMgaW1wb3J0cworRkFJTCBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBl
PW1vZHVsZSBhbmQgY3JlZGVudGlhbHM9aW5jbHVkZSBzaG91bGQgc2VuZCB0aGUgY3JlZGVudGlh
bHMgZm9yIGNyb3NzLW9yaWdpbiBzdGF0aWMgaW1wb3J0cyBhc3NlcnRfZXF1YWxzOiBleHBlY3Rl
ZCAiMSIgYnV0IGdvdCAiIgorUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVs
ZSBhbmQgZGVmYXVsdCBjcmVkZW50aWFscyBvcHRpb24gc2hvdWxkIGJlaGF2ZSBhcyBjcmVkZW50
aWFscz1zYW1lLW9yaWdpbiBhbmQgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2lu
IGR5bmFtaWMgaW1wb3J0cworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVs
ZSBhbmQgY3JlZGVudGlhbHM9b21pdCBzaG91bGQgbm90IHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZv
ciBzYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdp
dGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPXNhbWUtb3JpZ2luIHNob3VsZCBzZW5kIHRo
ZSBjcmVkZW50aWFscyBmb3Igc2FtZS1vcmlnaW4gZHluYW1pYyBpbXBvcnRzCitQQVNTIG5ldyBT
aGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBjcmVkZW50aWFscz1pbmNsdWRlIHNo
b3VsZCBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3Igc2FtZS1vcmlnaW4gZHluYW1pYyBpbXBvcnRz
CitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBkZWZhdWx0IGNy
ZWRlbnRpYWxzIG9wdGlvbiBzaG91bGQgYmVoYXZlIGFzIGNyZWRlbnRpYWxzPXNhbWUtb3JpZ2lu
IGFuZCBub3Qgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIGNyb3NzLW9yaWdpbiBkeW5hbWljIGlt
cG9ydHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRl
bnRpYWxzPW9taXQgc2hvdWxkIG5vdCBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3IgY3Jvc3Mtb3Jp
Z2luIGR5bmFtaWMgaW1wb3J0cworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1v
ZHVsZSBhbmQgY3JlZGVudGlhbHM9c2FtZS1vcmlnaW4gc2hvdWxkIG5vdCBzZW5kIHRoZSBjcmVk
ZW50aWFscyBmb3IgY3Jvc3Mtb3JpZ2luIGR5bmFtaWMgaW1wb3J0cworRkFJTCBuZXcgU2hhcmVk
V29ya2VyKCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQgY3JlZGVudGlhbHM9aW5jbHVkZSBzaG91bGQg
c2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIGNyb3NzLW9yaWdpbiBkeW5hbWljIGltcG9ydHMgYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjEiIGJ1dCBnb3QgIiIKK1BBU1MgbmV3IFNoYXJlZFdvcmtl
cigpIHdpdGggdHlwZT1jbGFzc2ljIHNob3VsZCBhbHdheXMgc2VuZCB0aGUgY3JlZGVudGlhbHMg
cmVnYXJkbGVzcyBvZiB0aGUgY3JlZGVudGlhbHMgb3B0aW9uIChkZWZhdWx0KS4KK1BBU1MgbmV3
IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1jbGFzc2ljIHNob3VsZCBhbHdheXMgc2VuZCB0aGUg
Y3JlZGVudGlhbHMgcmVnYXJkbGVzcyBvZiB0aGUgY3JlZGVudGlhbHMgb3B0aW9uIChvbWl0KS4K
K1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1jbGFzc2ljIHNob3VsZCBhbHdheXMg
c2VuZCB0aGUgY3JlZGVudGlhbHMgcmVnYXJkbGVzcyBvZiB0aGUgY3JlZGVudGlhbHMgb3B0aW9u
IChzYW1lLW9yaWdpbikuCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9Y2xhc3Np
YyBzaG91bGQgYWx3YXlzIHNlbmQgdGhlIGNyZWRlbnRpYWxzIHJlZ2FyZGxlc3Mgb2YgdGhlIGNy
ZWRlbnRpYWxzIG9wdGlvbiAoaW5jbHVkZSkuCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRo
IHR5cGU9Y2xhc3NpYyBzaG91bGQgYWx3YXlzIHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBzYW1l
LW9yaWdpbiBkeW5hbWljIGltcG9ydHMgcmVnYXJkbGVzcyBvZiB0aGUgY3JlZGVudGlhbHMgb3B0
aW9uIChkZWZhdWx0KS4KK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1jbGFzc2lj
IHNob3VsZCBhbHdheXMgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2luIGR5bmFt
aWMgaW1wb3J0cyByZWdhcmRsZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKG9taXQpLgor
UEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPWNsYXNzaWMgc2hvdWxkIGFsd2F5cyBz
ZW5kIHRoZSBjcmVkZW50aWFscyBmb3Igc2FtZS1vcmlnaW4gZHluYW1pYyBpbXBvcnRzIHJlZ2Fy
ZGxlc3Mgb2YgdGhlIGNyZWRlbnRpYWxzIG9wdGlvbiAoc2FtZS1vcmlnaW4pLgorUEFTUyBuZXcg
U2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPWNsYXNzaWMgc2hvdWxkIGFsd2F5cyBzZW5kIHRoZSBj
cmVkZW50aWFscyBmb3Igc2FtZS1vcmlnaW4gZHluYW1pYyBpbXBvcnRzIHJlZ2FyZGxlc3Mgb2Yg
dGhlIGNyZWRlbnRpYWxzIG9wdGlvbiAoaW5jbHVkZSkuCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIo
KSB3aXRoIHR5cGU9Y2xhc3NpYyBzaG91bGQgbmV2ZXIgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9y
IGNyb3NzLW9yaWdpbiBkeW5hbWljIGltcG9ydHMgcmVnYXJkbGVzcyBvZiB0aGUgY3JlZGVudGlh
bHMgb3B0aW9uIChkZWZhdWx0KS4KK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1j
bGFzc2ljIHNob3VsZCBuZXZlciBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3IgY3Jvc3Mtb3JpZ2lu
IGR5bmFtaWMgaW1wb3J0cyByZWdhcmRsZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKG9t
aXQpLgorUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPWNsYXNzaWMgc2hvdWxkIG5l
dmVyIHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gZHluYW1pYyBpbXBvcnRz
IHJlZ2FyZGxlc3Mgb2YgdGhlIGNyZWRlbnRpYWxzIG9wdGlvbiAoc2FtZS1vcmlnaW4pLgorUEFT
UyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPWNsYXNzaWMgc2hvdWxkIG5ldmVyIHNlbmQg
dGhlIGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gZHluYW1pYyBpbXBvcnRzIHJlZ2FyZGxl
c3Mgb2YgdGhlIGNyZWRlbnRpYWxzIG9wdGlvbiAoaW5jbHVkZSkuCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmVlNTNmMmZm
MmQ1ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFy
ZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKworRkFJTCBSZWZl
cmVyIGhlYWRlciBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiUmVmZXJlcjogaHR0cDovL2xvY2Fs
aG9zdDo4ODAwL3hoci9yZXNvdXJjZXMvd29ya2VyeGhyLW9yaWdpbi1yZWZlcnJlci5qc1xuIiBi
dXQgZ290ICJSZWZlcmVyOiBodHRwOi8vbG9jYWxob3N0Ojg4MDAveGhyL3Jlc291cmNlcy9yZWRp
cmVjdC5weT9sb2NhdGlvbj13b3JrZXJ4aHItb3JpZ2luLXJlZmVycmVyLmpzXG4iCitQQVNTIE9y
aWdpbiBoZWFkZXIKK1BBU1MgUmVxdWVzdCBVUkwgdGVzdAorCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRl
eCA2NTM5MzdhY2U2NWMuLmQzM2ZjNGFhNGQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xOTU3
LDkgKzE5NTcsMTIgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAg
IHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKICAgICB3b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmgKICAgICB3b3JrZXJzL1dvcmtlckxvYWRlclByb3h5LmgKKyAgICB3b3JrZXJzL1dv
cmtlck9iamVjdFByb3h5LmgKKyAgICB3b3JrZXJzL1dvcmtlck9wdGlvbnMuaAogICAgIHdvcmtl
cnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaAogICAgIHdvcmtlcnMvV29ya2VyT3JXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlci5oCiAgICAgd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQu
aAorICAgIHdvcmtlcnMvV29ya2VyUmVwb3J0aW5nUHJveHkuaAogICAgIHdvcmtlcnMvV29ya2Vy
UnVuTG9vcC5oCiAgICAgd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAogICAgIHdvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50LmgKQEAgLTIwMDMsOSArMjAwNiwxMiBAQCBzZXQoV2Vi
Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlcldvcmtlci5oCiAKICAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJJZGVu
dGlmaWVyLmgKLSAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmgKKyAgICB3
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaAogICAgIHdvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaAorICAgIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIuaAogICAgIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3Zp
ZGVyLmgKKworICAgIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXIuaAogICAgIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkLmgK
ICAgICB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmgKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dAppbmRleCBiM2Y1ZTBiNzg0MTcuLjVlZTUwMGNiNmQxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKQEAgLTI3ODUsMTAgKzI3ODUsMTAgQEAgd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
V29ya2VyLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNwcAogd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCi13b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJNYW5hZ2VyLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bi5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmNwcAogd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcAord29ya2Vycy9zaGFyZWQvY29udGV4
dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQv
U2hhcmVkV29ya2VyVGhyZWFkLmNwcAogd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3Jr
ZXJUaHJlYWRQcm94eS5jcHAKIHdvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGM1ZjQ0ZWYwNGE3MC4uNTZhNzE1OWRiYWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MDMsNyArOTAzLDcgQEAKIAkJ
MkU0MzQ2NEIwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjM5MEY1NDZB
ODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZVByb3h5LmggKi87IH07CiAJCTJFNDM0NjRE
MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2M0IwRjU0NkE4MjAwQjBGMUJBIC8qIFdv
cmtlckxvY2F0aW9uLmggKi87IH07CiAJCTJFNDM0NjUwMEY1NDZBODIwMEIwRjFCQSAvKiBXb3Jr
ZXJNZXNzYWdpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkU0MzQ2M0UwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck1lc3NhZ2luZ1Byb3h5
LmggKi87IH07Ci0JCTJFNDM0NjUxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2
M0YwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5LmggKi87IH07CisJCTJFNDM0
NjUxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2M0YwRjU0NkE4MjAwQjBGMUJB
IC8qIFdvcmtlck9iamVjdFByb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2NTMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclJ1bkxv
b3AuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0
NjQxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJSdW5Mb29wLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2NTUwRjU0NkE4MjAwQjBGMUJB
IC8qIFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkU0MzQ2NDMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFNzU4NDFFMTI3
NzlBREEwMDYyNjI4QiAvKiBGaWxlUmVhZGVyTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTc1ODQxQjEyNzc5QURBMDA2MjYyOEIgLyogRmls
ZVJlYWRlckxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0xMTI1LDcgKzExMjUsNyBAQAogCQk0MTZBMDZBMTIzQ0NBRDAzMDAzNDcxMDkg
LyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkEwNjk2MjNDQ0FBOUYwMDM0NzEwOSAvKiBBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQxNkQ3NUEyMjBDNjUxQTUwMEQwMkQyQyAvKiBOZXR3b3Jr
TG9hZEluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTZENzU5RjIwQzY0NDEzMDBEMDJEMkMgLyogTmV0d29ya0xvYWRJbmZvcm1hdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQx
NkUwQjNBMjA5QkMzQ0IwMDRBOTVEOSAvKiBGZXRjaElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkUwQjM3MjA5QkMzQzIwMDRBOTVE
OSAvKiBGZXRjaElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQk0MTZFMjlBNjEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0
aW5nUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxNkUyOUE1MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovOyB9
OworCQk0MTZFMjlBNjEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkUyOUE1MTAy
RkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU4MUJCRDEyREYwMDBBM0Y2
NCAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RDkgLyog
UmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU4MUJCRDEyREYwMDBBM0Y2NSAvKiBK
U0RPTUJpbmRpbmdJbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NERBIC8qIEpTRE9NQmlu
ZGluZ0ludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgxQkJEMTJERjAwMEEzRjc0IC8qIFRyYW5zZm9ybVN0
cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RUEgLyogVHJhbnNmb3JtU3RyZWFt
SW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTM0NywxNCArMTM0NywxNiBAQAogCQk0NjdBNjhENzI3NUVBOTkxMDA5
QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdBNjhENDI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29y
a2VyVGhyZWFkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDY3QTY4RDgyNzVFQTk5NTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3QTY4
RDUyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oICovOyB9Owog
CQk0NjdBNjhEOTI3NUVBOTk4MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0E2OEQ2Mjc1
RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQ2N0E2OERBMjc1RUE5OUMwMDlC
MzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdBNjhEMjI3NUVBOThBMDA5QjMxQzUgLyogU2hhcmVkV29y
a2VyTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQ2ODJEMjAwMUY3OTc4MzAwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MkQx
RkYxRjc5NzgyMzAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4MzQ0RTAxRURERkFB
QTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3Qu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0Njgz
REY0MDI3NjdERjk4MDA3RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4M0RGM0UyNzY3
REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaCAqLzsgfTsKIAkJ
NDY4M0RGNDEyNzY3RTkxQTAwN0QwMEM4IC8qIFNoYWRvd1JlYWxtR2xvYmFsU2NvcGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODNERjNCMjc2N0RG
MjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4OEVFM0MyNkREMjYxMDAwMkFGNUM0
IC8qIENyb3NzT3JpZ2luTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDY4OEVFM0EyNkREMjYwQzAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2OTQz
REM5Mjc2M0Y4MTcwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0M0RDNzI3NjNG
ODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2OTg1RjIzMjdBNEE2QUQw
MDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTg1RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3Jr
ZXJLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0NjlDQ0NGRTI2OUQwMjFDMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5Q0NDRkMyNjlEMDIwMjAw
NkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjlENzdCODI3MDE2MjUxMDAxNDJGQTYgLyogTmF2aWdh
dGlvblJlcXVlc3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY5RDc3QjYyNzAxNjI1MDAwMTQyRkE2IC8qIE5hdmlnYXRpb25SZXF1ZXN0ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NkE3OEIz
NDI3OTlCRDcxMDAxMTU0RkUgLyogV29ya2VyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxQjFEMjYyNkYxOEE0QjAwODgyREEyIC8qIFdv
cmtlck9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0NkFBQUEzRDI1RDM2MzIwMDBCQUY0MkYgLyogQXVkaW9GaWxlUmVhZGVyQ29jb2Eu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QUFBQTNB
MjVEMzYzMTQwMEJBRjQyRiAvKiBBdWRpb0ZpbGVSZWFkZXJDb2NvYS5oICovOyB9OwogCQk0NkI2
M0Y2QzFDNkU4RDE5MDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjNGNkIxQzZFOENERjAwMkU5
MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI2NTBERDIyOTYyNjI3MDBGRDhBQTQgLyogUGFnZUlk
ZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2QjY1MERCMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzc1LDYgKzEzNzcsNyBA
QAogCQk0NkM2OTZDQzFFNzIwNUZDMDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM2OTZDQTFFNzIwNUU0MDA1
OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgKi87IH07CiAJCTQ2QzgzRUZFMUE5QkJFMjkwMEE3OUE0
MSAvKiBHZW9Ob3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZDODNFRkMxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZDQTlDNDQxRjk3
QkJFOTAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDQTlDNDExRjk3QkJFNzAwNENGQzNBIC8qIFZpc2li
aWxpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTQ2Q0Y1MDRBMjdBQjFFQTQwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZD
RjUwNDgyN0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZEMDAwNDAy
NkEwRkVCMzAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkQwMDAzRTI2QTBGRTZGMDBEMUJGMUUgLyogU3VibWl0
RXZlbnQuaCAqLzsgfTsKIAkJNDZEQTRBMDIyN0FCMDM5MzAwRTM3NUE4IC8qIFRyYW5zZmVycmVk
TWVzc2FnZVBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2REE0QTAwMjdBQjAzOEQwMEUzNzVBOCAvKiBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZEQkI2
NTAxQUI4Qzk2RjAwRDlBODEzIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REJCNjRFMUFCOEM5NkYwMEQ5QTgxMyAv
KiBQb3dlck9ic2VydmVyTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTkyNDUsOCArOTI0OCw2IEBACiAJCTQ2N0E2OENGMjc1RUE5ODkwMDlC
MzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2N0E2OEQwMjc1RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDY3QTY4RDEyNzVFQTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlw
dExvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NjdBNjhEMjI3NUVBOThBMDA5QjMx
QzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJN
YW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2N0E2OEQzMjc1RUE5OEIw
MDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNo
YXJlZFdvcmtlck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdB
NjhENDI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNoYXJlZFdvcmtlclRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjdBNjhENTI3NUVBOThDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NjdBNjhENjI3NUVBOThDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkyNjIsNiArOTI2Myw4IEBACiAJCTQ2ODNERjNF
Mjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OEVFM0EyNkREMjYwQzAwMkFGNUM0
IC8qIENyb3NzT3JpZ2luTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcm9zc09yaWdpbk1vZGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4QjhCREUyNUNDODQ5MzAwRjY3ODIyIC8q
IEpTQmFzZUF1ZGlvQ29udGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Jhc2VB
dWRpb0NvbnRleHRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0
M0RDNzI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQ2OTg1RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3Jr
ZXJLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyS2V5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OUNDQ0ZBMjY5RDAyMDIwMDZFMDMx
NCAvKiBCcm9hZGNhc3RDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJyb2FkY2FzdENo
YW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlDQ0NGQzI2OUQwMjAy
MDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCcm9hZGNhc3RD
aGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OUNDQ0ZEMjY5RDAyMDMw
MDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBCcm9hZGNhc3RDaGFubmVsLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkzMDIsNiArOTMwNSw4IEBACiAJCTQ2
QzgzRUZDMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHZW9Ob3RpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NkNBOUM0MTFGOTdCQkU3MDA0Q0ZDM0EgLyogVmlzaWJpbGl0eVN0YXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpc2liaWxpdHlTdGF0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NkNBOUM0MjFGOTdCQkU3MDA0Q0ZDM0EgLyogVmlzaWJpbGl0
eVN0YXRlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBWaXNpYmlsaXR5U3RhdGUuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkNGNTA0ODI3QUIxRUExMDA3MERCQzggLyog
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZDRjUwNDky
N0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDZEMDAwM0MyNkEwRkU2RjAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN1Ym1pdEV2ZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZEMDAwM0UyNkEwRkU2RjAwRDFCRjFF
IC8qIFN1Ym1pdEV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1Ym1p
dEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RDAwMDNGMjZBMEZFNzAw
MEQxQkYxRSAvKiBTdWJtaXRFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU3VibWl0
RXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE1NjgsNiArMjE1NzMs
OCBAQAogCQk0NjQ3Q0U2MTI3QUFFMURBMDA5Q0JENDggLyogY29udGV4dCAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDZDRjUwNDkyN0FCMUVBMTAwNzBE
QkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcCAqLywKKwkJCQk0NkNGNTA0ODI3
QUIxRUExMDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCAqLywKIAkJCQk0
NjdBNjhEMDI3NUVBOTg5MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmNwcCAqLywKIAkJ
CQk0NjdBNjhENDI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggKi8sCiAJ
CQkJNDY3QTY4Q0YyNzVFQTk4OTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmNw
cCAqLywKQEAgLTIxNTg3LDEwICsyMTU5NCwxMCBAQAogCQkJCTQ2Njk0Q0UxMjc1OTQ0OEMwMEUz
MTUwRSAvKiBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oICovLAogCQkJCTQ2Njk0Q0UwMjc1OTQ0
OEMwMEUzMTUwRSAvKiBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5pZGwgKi8sCiAJCQkJNDZFQzQ0
NDgyN0FCMzM3RjAwRkZDRDk2IC8qIFNoYXJlZFdvcmtlcklkZW50aWZpZXIuaCAqLywKLQkJCQk0
NjdBNjhEMzI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5jcHAgKi8sCi0J
CQkJNDY3QTY4RDIyNzVFQTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCAqLywK
KwkJCQk0Njk4NUYyMjI3QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggKi8sCiAJ
CQkJNDY2OEEwQjMyN0FCNjAwQjAwQzcyMEJDIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b24uY3BwICovLAogCQkJCTQ2NjhBMEIxMjdBQjYwMEIwMEM3MjBCQyAvKiBTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uLmggKi8sCisJCQkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAqLywKIAkJCQk0NjY4QTBCNDI3QUI2MDBDMDBD
NzIwQkMgLyogU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwICovLAogCQkJCTQ2NjhBMEI1MjdBQjYw
MEMwMEM3MjBCQyAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5oICovLAogCQkJCTQ2N0E2OEQxMjc1
RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwICovLApAQCAtMzcy
MDQsOSArMzcyMTEsMTEgQEAKIAkJCQk4MzRERkFEMDFGN0RBRTVEMDBDMjcyNUIgLyogU2hhcmVk
U3RyaW5nSGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFQTMwOTlFQjc4QzAwNTZFNTgx
IC8qIFNoYXJlZFRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURDMDRGRTI3QTgzQzkzMDA4
Q0Y5NjggLyogU2hhcmVkVmlkZW9GcmFtZUluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2Q0Y1
MDRBMjdBQjFFQTQwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDZFQzQ0NEEyN0FCMzM4OTAwRkZDRDk2IC8qIFNoYXJlZFdvcmtlcklk
ZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ2N0E2OERBMjc1RUE5OUMwMDlCMzFDNSAv
KiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0Njk4NUYyMzI3QTRB
NkFEMDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjY4
QTBCNjI3QUI2MDFCMDBDNzIwQkMgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDY5NDNEQzkyNzYzRjgxNzAwNEI2MTBFIC8qIFNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2NjhBMEI3MjdBQjYwMjEw
MEM3MjBCQyAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY3
QTY4RDgyNzVFQTk5NTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDY3QTY4RDcyNzVFQTk5MTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRo
cmVhZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zODA2Nyw2ICszODA3Niw3IEBACiAJCQkJRTEyNzFB
MEIwRUVFQzc3QTAwRjYxMjEzIC8qIFdvcmtlck5hdmlnYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTVDQjA1MjUxRkI1MUYzQTAwMDg5Qjk3IC8qIFdvcmtlck5ldHdvcmtBZ2VudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMkU0MzQ2NTEwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFBy
b3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkE3OEIzNDI3OTlCRDcxMDAxMTU0RkUgLyogV29y
a2VyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNENkFBRTYyNTI0RUUxQzAwNDI4QjRC
IC8qIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzlB
MDk1RDI1MjRGMzdGMDBFRUYzMjggLyogV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODNGNkFFQkYyNTI3QkIwQzAwMzRCQ0QzIC8qIFdvcmtlck9y
V29ya2xldFRocmVhZC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBmMjY0
ZmFkYmJhMWIuLjgzYTUwZTI0MjFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0zODkyLDQgKzM4
OTIsMjYgQEAgTW9kZWxQbGF5ZXJQcm92aWRlciYgUGFnZTo6bW9kZWxQbGF5ZXJQcm92aWRlcigp
CiAgICAgcmV0dXJuIG1fbW9kZWxQbGF5ZXJQcm92aWRlci5nZXQoKTsKIH0KIAordm9pZCBQYWdl
OjpzZXR1cEZvclJlbW90ZVdvcmtlcihjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiB0b3BPcmlnaW4sIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3kpCit7
CisgICAgbWFpbkZyYW1lKCkubG9hZGVyKCkuaW5pdEZvclN5bnRoZXNpemVkRG9jdW1lbnQoeyB9
KTsKKyAgICBhdXRvIGRvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZU5vblJlbmRlcmVkUGxhY2Vo
b2xkZXIobWFpbkZyYW1lKCksIHNjcmlwdFVSTCk7CisgICAgZG9jdW1lbnQtPmNyZWF0ZURPTVdp
bmRvdygpOworCisgICAgZG9jdW1lbnQtPnN0b3JhZ2VCbG9ja2luZ1N0YXRlRGlkQ2hhbmdlKCk7
CisKKyAgICBhdXRvIG9yaWdpbiA9IHRvcE9yaWdpbi5zZWN1cml0eU9yaWdpbigpOworICAgIG9y
aWdpbi0+c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KHNldHRpbmdzKCkuc3RvcmFnZUJsb2NraW5n
UG9saWN5KCkpOworCisgICAgYXV0byBvcmlnaW5Bc1VSTCA9IG9yaWdpbi0+dG9VUkwoKTsKKyAg
ICBkb2N1bWVudC0+c2V0U2l0ZUZvckNvb2tpZXMob3JpZ2luQXNVUkwpOworICAgIGRvY3VtZW50
LT5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhvcmlnaW5Bc1VSTCk7CisgICAgZG9jdW1lbnQtPnNl
dERvbWFpbkZvckNhY2hlUGFydGl0aW9uKG9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24o
KSk7CisKKyAgICBpZiAoYXV0byBwb2xpY3kgPSBwYXJzZVJlZmVycmVyUG9saWN5KHJlZmVycmVy
UG9saWN5LCBSZWZlcnJlclBvbGljeVNvdXJjZTo6SFRUUEhlYWRlcikpCisgICAgICAgIGRvY3Vt
ZW50LT5zZXRSZWZlcnJlclBvbGljeSgqcG9saWN5KTsKKworICAgIG1haW5GcmFtZSgpLnNldERv
Y3VtZW50KFdURk1vdmUoZG9jdW1lbnQpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAppbmRleCA5OTJkMjQzMmFmMDMuLjhmZDUxZWI2N2QxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmgKQEAgLTI1Niw2ICsyNTYsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IHZvaWQgdXBkYXRlU3R5bGVGb3JBbGxQYWdlc0FmdGVyR2xvYmFsQ2hhbmdlSW5FbnZpcm9ubWVu
dCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGNsZWFyUHJldmlvdXNJdGVtRnJv
bUFsbFBhZ2VzKEhpc3RvcnlJdGVtKik7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldHVw
Rm9yUmVtb3RlV29ya2VyKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSk7CisKICAgICB2
b2lkIHVwZGF0ZVN0eWxlQWZ0ZXJDaGFuZ2VJbkVudmlyb25tZW50KCk7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTG9nZ2luZy5oCmluZGV4IDVmZWY0MmVlMDZlYy4uZmE3ZDIzMDJlYzM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTG9nZ2luZy5oCkBAIC0xMjcsNiArMTI3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIE0oV2ViR0wpIFwKICAgICBNKFdlYlJUQykgXAogICAgIE0oV2ViUlRDU3RhdHMpIFwK
KyAgICBNKFdvcmtlcikgXAogICAgIE0oWFIpIFwKICAgICBNKFdoZWVsRXZlbnRUZXN0TW9uaXRv
cikgXAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAppbmRleCBmMjU5YWU5
OTM0MmUuLjRjZTc0ZTBjYmE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHku
Y3BwCkBAIC01MSwyOSArNTEsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5OjpzZXR1cFBhZ2VGb3JTZXJ2aWNlV29ya2VyKFBhZ2UmIHBh
Z2UsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKLXsKLSAgICBhdXRvJiBt
YWluRnJhbWUgPSBwYWdlLm1haW5GcmFtZSgpOwotICAgIG1haW5GcmFtZS5sb2FkZXIoKS5pbml0
Rm9yU3ludGhlc2l6ZWREb2N1bWVudCh7IH0pOwotICAgIGF1dG8gZG9jdW1lbnQgPSBEb2N1bWVu
dDo6Y3JlYXRlTm9uUmVuZGVyZWRQbGFjZWhvbGRlcihtYWluRnJhbWUsIGRhdGEuc2NyaXB0VVJM
KTsKLSAgICBkb2N1bWVudC0+Y3JlYXRlRE9NV2luZG93KCk7Ci0KLSAgICBkb2N1bWVudC0+c3Rv
cmFnZUJsb2NraW5nU3RhdGVEaWRDaGFuZ2UoKTsKLQotICAgIGF1dG8gb3JpZ2luID0gZGF0YS5y
ZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgb3JpZ2lu
LT5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3kocGFnZS5zZXR0aW5ncygpLnN0b3JhZ2VCbG9ja2lu
Z1BvbGljeSgpKTsKLQotICAgIGF1dG8gb3JpZ2luVVJMID0gb3JpZ2luLT50b1VSTCgpOwotICAg
IGRvY3VtZW50LT5zZXRTaXRlRm9yQ29va2llcyhvcmlnaW5VUkwpOwotICAgIGRvY3VtZW50LT5z
ZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhvcmlnaW5VUkwpOwotICAgIGRvY3VtZW50LT5zZXREb21h
aW5Gb3JDYWNoZVBhcnRpdGlvbihvcmlnaW4tPmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkpOwot
Ci0gICAgaWYgKGF1dG8gcG9saWN5ID0gcGFyc2VSZWZlcnJlclBvbGljeShkYXRhLnJlZmVycmVy
UG9saWN5LCBSZWZlcnJlclBvbGljeVNvdXJjZTo6SFRUUEhlYWRlcikpCi0gICAgICAgIGRvY3Vt
ZW50LT5zZXRSZWZlcnJlclBvbGljeSgqcG9saWN5KTsKLQotICAgIG1haW5GcmFtZS5zZXREb2N1
bWVudChXVEZNb3ZlKGRvY3VtZW50KSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSURCQ2xpZW50OjpJ
REJDb25uZWN0aW9uUHJveHkqIGlkYkNvbm5lY3Rpb25Qcm94eShEb2N1bWVudCYgZG9jdW1lbnQp
CiB7CiAgICAgcmV0dXJuIGRvY3VtZW50LmlkYkNvbm5lY3Rpb25Qcm94eSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRo
cmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHkuaAppbmRleCBhYmNhNDg2MmJkNjUuLjliODM2YjczZjgwOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKQEAgLTU0LDggKzU0LDYgQEAgZW51
bSBjbGFzcyBXb3JrZXJUaHJlYWRNb2RlIDogYm9vbDsKIAogY2xhc3MgU2VydmljZVdvcmtlclRo
cmVhZFByb3h5IGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eT4sIHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94eSwgcHVibGljIFdvcmtlckRl
YnVnZ2VyUHJveHkgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNl
dHVwUGFnZUZvclNlcnZpY2VXb3JrZXIoUGFnZSYsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSYpOwotCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxTZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHk+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShzdGQ6OmZv
cndhcmQ8QXJncz4oYXJncykuLi4pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXIuY3BwCmluZGV4IGI0ODc0N2EyYzA5OS4uNDZkYzQ1NGRmZGE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTUg
KzI2LDE3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgi
CiAKKyNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQ
b2xpY3kuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIK
KyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUNoYW5uZWwuaCIKICNpbmNs
dWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlck1hbmFnZXIuaCIKICNp
bmNsdWRlICJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVk
V29ya2VyUHJvdmlkZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIgog
I2luY2x1ZGUgIldvcmtlck9wdGlvbnMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVu
dGlmaWVyc0ZhY3RvcnkuaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAt
NDMsMTIgKzQ1LDI3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9D
QVRFRF9JTVBMKFNoYXJlZFdvcmtlcik7CiAKKyNkZWZpbmUgU0hBUkVEX1dPUktFUl9SRUxFQVNF
X0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBbaWRlbnRpZmll
cj0le3B1YmxpY31zXSBTaGFyZWRXb3JrZXI6OiIgZm10LCB0aGlzLCBtX2lkZW50aWZpZXIudG9T
dHJpbmcoKS51dGY4KCkuZGF0YSgpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBTSEFSRURfV09S
S0VSX1JFTEVBU0VfTE9HX0VSUk9SKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRX
b3JrZXIsICIlcCAtIFtpZGVudGlmaWVyPSV7cHVibGljfXNdIFNoYXJlZFdvcmtlcjo6IiBmbXQs
IHRoaXMsIG1faWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksICMjX19WQV9BUkdT
X18pCisKK3N0YXRpYyBIYXNoTWFwPFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFNoYXJl
ZFdvcmtlcio+JiBhbGxTaGFyZWRXb3JrZXJzKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIsIFNoYXJlZFdvcmtlcio+PiBhbGxTaGFyZWRXb3JrZXJzOworICAgIHJldHVy
biBhbGxTaGFyZWRXb3JrZXJzOworfQorCitTaGFyZWRXb3JrZXIqIFNoYXJlZFdvcmtlcjo6ZnJv
bUlkZW50aWZpZXIoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBpZGVudGlmaWVyKQorewor
ICAgIHJldHVybiBhbGxTaGFyZWRXb3JrZXJzKCkuZ2V0KGlkZW50aWZpZXIpOworfQorCiBzdGF0
aWMgaW5saW5lIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24qIG1haW5UaHJlYWRDb25uZWN0
aW9uKCkKIHsKICAgICByZXR1cm4gU2hhcmVkV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNo
YXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPFNoYXJlZFdvcmtl
cj4+IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgSlNDOjpSdW50aW1l
RmxhZ3MgcnVudGltZUZsYWdzLCBTdHJpbmcmJiBzY3JpcHRVUkxTdHJpbmcsIHN0ZDo6b3B0aW9u
YWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYgbWF5YmVPcHRpb25zKQor
RXhjZXB0aW9uT3I8UmVmPFNoYXJlZFdvcmtlcj4+IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKERvY3Vt
ZW50JiBkb2N1bWVudCwgU3RyaW5nJiYgc2NyaXB0VVJMU3RyaW5nLCBzdGQ6Om9wdGlvbmFsPHN0
ZDo6dmFyaWFudDxTdHJpbmcsIFdvcmtlck9wdGlvbnM+PiYmIG1heWJlT3B0aW9ucykKIHsKICAg
ICBpZiAoIW1haW5UaHJlYWRDb25uZWN0aW9uKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBOb3RTdXBwb3J0ZWRFcnJvciwgIlNoYXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkIiB9
OwpAQCAtNzcsMjYgKzk0LDM0IEBAIEV4Y2VwdGlvbk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBTaGFy
ZWRXb3JrZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIEpTQzo6UnVuCiAgICAgYXV0byBj
aGFubmVsID0gTWVzc2FnZUNoYW5uZWw6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgYXV0byB0cmFu
c2ZlcnJlZFBvcnQgPSBjaGFubmVsLT5wb3J0MigpLmRpc2VudGFuZ2xlKCk7CiAKLSAgICBhdXRv
IHNoYXJlZFdvcmtlciA9IGFkb3B0UmVmKCpuZXcgU2hhcmVkV29ya2VyKGRvY3VtZW50LCBjaGFu
bmVsLT5wb3J0MSgpLCBydW50aW1lRmxhZ3MpKTsKKyAgICBhdXRvIHNoYXJlZFdvcmtlciA9IGFk
b3B0UmVmKCpuZXcgU2hhcmVkV29ya2VyKGRvY3VtZW50LCB1cmwsIGNoYW5uZWwtPnBvcnQxKCkp
KTsKICAgICBzaGFyZWRXb3JrZXItPnN1c3BlbmRJZk5lZWRlZCgpOwogCi0gICAgbWFpblRocmVh
ZENvbm5lY3Rpb24oKS0+cmVxdWVzdFNoYXJlZFdvcmtlcih1cmwsIHNoYXJlZFdvcmtlci5nZXQo
KSwgV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBXVEZNb3ZlKG9wdGlvbnMpKTsKKyAgICBDbGll
bnRPcmlnaW4gY2xpZW50T3JpZ2luIHsgZG9jdW1lbnQudG9wRG9jdW1lbnQoKS5zZWN1cml0eU9y
aWdpbigpLmRhdGEoKSwgZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkgfTsKKyAgICBt
YWluVGhyZWFkQ29ubmVjdGlvbigpLT5yZXF1ZXN0U2hhcmVkV29ya2VyKGNsaWVudE9yaWdpbiwg
c2hhcmVkV29ya2VyLT5pZGVudGlmaWVyKCksIHVybCwgV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQp
LCBvcHRpb25zKTsKICAgICByZXR1cm4gc2hhcmVkV29ya2VyOwogfQogCi1TaGFyZWRXb3JrZXI6
OlNoYXJlZFdvcmtlcihEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxNZXNzYWdlUG9ydD4mJiBwb3J0
LCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MpCitTaGFyZWRXb3JrZXI6OlNoYXJlZFdv
cmtlcihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBSZWY8TWVzc2FnZVBvcnQ+
JiYgcG9ydCkKICAgICA6IEFjdGl2ZURPTU9iamVjdCgmZG9jdW1lbnQpCisgICAgLCBtX2lkZW50
aWZpZXIoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKICAgICAsIG1f
cG9ydChXVEZNb3ZlKHBvcnQpKQogICAgICwgbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yKCJTaGFy
ZWRXb3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlm
aWVyKCkpCi0gICAgLCBtX3J1bnRpbWVGbGFncyhydW50aW1lRmxhZ3MpCi0gICAgLCBtX2NyZWF0
aW9uVGltZShNb25vdG9uaWNUaW1lOjpub3coKSkKLSAgICAsIG1fcHJveHkoU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHk6OmNyZWF0ZSgqdGhpcykpCiB7CisgICAgU0hBUkVEX1dPUktFUl9SRUxFQVNF
X0xPRygiU2hhcmVkV29ya2VyOiIpOworICAgIGFsbFNoYXJlZFdvcmtlcnMoKS5hZGQobV9pZGVu
dGlmaWVyLCB0aGlzKTsKKworICAgIC8vIElmIHRoZSBzaGFyZWQgd29ya2VyIFVSTCBpcyBhIGJs
b2IgVVJMLCBtYWtlIHN1cmUgdG8ga2VlcCBpdCBhbGl2ZSB1bnRpbCB0aGUgd29ya2VyIGhhcyBm
aW5pc2hlZCBsb2FkaW5nLgorICAgIGlmICh1cmwucHJvdG9jb2xJc0Jsb2IoKSkKKyAgICAgICAg
bV9ibG9iVVJMRXh0ZW5zaW9uID0gdXJsOwogfQogCiBTaGFyZWRXb3JrZXI6On5TaGFyZWRXb3Jr
ZXIoKQogewotICAgIG1fcHJveHkud29ya2VyT2JqZWN0RGVzdHJveWVkKCk7CisgICAgQVNTRVJU
KGFsbFNoYXJlZFdvcmtlcnMoKS5nZXQobV9pZGVudGlmaWVyKSA9PSB0aGlzKTsKKyAgICBTSEFS
RURfV09SS0VSX1JFTEVBU0VfTE9HKCJ+U2hhcmVkV29ya2VyOiIpOworICAgIGFsbFNoYXJlZFdv
cmtlcnMoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKKyAgICBBU1NFUlQoIW1faXNBY3RpdmUpOwog
fQogCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBTaGFyZWRXb3JrZXI6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSBjb25zdApAQCAtMTE0LDE5ICsxMzksMjkgQEAgRXZlbnRUYXJnZXRJbnRlcmZh
Y2UgU2hhcmVkV29ya2VyOjpldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0CiAgICAgcmV0dXJu
IFNoYXJlZFdvcmtlckV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsKIH0KIAotdm9pZCBTaGFyZWRX
b3JrZXI6OnN0b3AoKQordm9pZCBTaGFyZWRXb3JrZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgdGVybWluYXRlKCk7CisgICAgU0hBUkVEX1dP
UktFUl9SRUxFQVNFX0xPRygiZmluaXNoTG9hZGluZzogc3VjY2Vzcz0lZCIsIGVycm9yLmlzTnVs
bCgpKTsKKyAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CisgICAgICAgIHF1ZXVlVGFza1RvRGlz
cGF0Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6
OklzQ2FuY2VsYWJsZTo6WWVzKSk7CisgICAgICAgIG1faXNBY3RpdmUgPSBmYWxzZTsKKyAgICB9
CisgICAgbV9ibG9iVVJMRXh0ZW5zaW9uLmNsZWFyKCk7CiB9CiAKIGJvb2wgU2hhcmVkV29ya2Vy
Ojp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcm94
eS5oYXNQZW5kaW5nQWN0aXZpdHkoKSB8fCBtX2lzTG9hZGluZzsKKyAgICByZXR1cm4gbV9pc0Fj
dGl2ZTsKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXI6OnRlcm1pbmF0ZSgpCit2b2lkIFNoYXJlZFdv
cmtlcjo6c3RvcCgpCiB7Ci0gICAgbV9wcm94eS50ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgp
OworICAgIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coInN0b3A6Iik7CisgICAgbV9pc0FjdGl2
ZSA9IGZhbHNlOworICAgIG1haW5UaHJlYWRDb25uZWN0aW9uKCktPnNoYXJlZFdvcmtlck9iamVj
dElzR29pbmdBd2F5KG1faWRlbnRpZmllcik7CiB9CiAKKyN1bmRlZiBTSEFSRURfV09SS0VSX1JF
TEVBU0VfTE9HCisjdW5kZWYgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPR19FUlJPUgorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlci5oCmluZGV4IGU1NWIxY2Y1NTEzZC4uYmU1Nzc4MzVhMDQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNywzOSArMjcsMzYgQEAKIAog
I2luY2x1ZGUgIkFic3RyYWN0V29ya2VyLmgiCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0Lmgi
Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUnVudGltZUZsYWdzLmg+CisjaW5jbHVkZSAiQmxv
YlVSTC5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCIKICNpbmNs
dWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IE1lc3NhZ2VQb3J0OwotY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk7CitjbGFzcyBSZXNv
dXJjZUVycm9yOwogCiBzdHJ1Y3QgV29ya2VyT3B0aW9uczsKIAogY2xhc3MgU2hhcmVkV29ya2Vy
IGZpbmFsIDogcHVibGljIEFic3RyYWN0V29ya2VyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsK
ICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNoYXJlZFdvcmtlcik7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBjcmVhdGUoRG9jdW1lbnQmLCBK
U0M6OlJ1bnRpbWVGbGFncywgU3RyaW5nJiYgc2NyaXB0VVJMLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6
dmFyaWFudDxTdHJpbmcsIFdvcmtlck9wdGlvbnM+PiYmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9u
T3I8UmVmPFNoYXJlZFdvcmtlcj4+IGNyZWF0ZShEb2N1bWVudCYsIFN0cmluZyYmIHNjcmlwdFVS
TCwgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4mJik7
CiAgICAgflNoYXJlZFdvcmtlcigpOwogCisgICAgc3RhdGljIFNoYXJlZFdvcmtlciogZnJvbUlk
ZW50aWZpZXIoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgU2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVy
OyB9CiAgICAgTWVzc2FnZVBvcnQmIHBvcnQoKSBjb25zdCB7IHJldHVybiBtX3BvcnQuZ2V0KCk7
IH0KLSAgICBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MoKSB7IHJldHVybiBtX3J1bnRp
bWVGbGFnczsgfQogCiAgICAgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyRm9ySW5zcGVjdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yOyB9Ci0gICAgTW9ub3Rvbmlj
VGltZSBjcmVhdGlvblRpbWUoKSBjb25zdCB7IHJldHVybiBtX2NyZWF0aW9uVGltZTsgfQogCi0g
ICAgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkmIHByb3h5KCkgeyByZXR1cm4gbV9wcm94eTsgfQot
Ci0gICAgdm9pZCBzZXRJc0xvYWRpbmcoYm9vbCBpc0xvYWRpbmcpIHsgbV9pc0xvYWRpbmcgPSBp
c0xvYWRpbmc7IH0KKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJv
ciYpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQuCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsOwogCiBwcml2YXRlOgotICAgIFNo
YXJlZFdvcmtlcihEb2N1bWVudCYsIFJlZjxNZXNzYWdlUG9ydD4mJiwgSlNDOjpSdW50aW1lRmxh
Z3MpOwotCi0gICAgdm9pZCB0ZXJtaW5hdGUoKTsKKyAgICBTaGFyZWRXb3JrZXIoRG9jdW1lbnQm
LCBjb25zdCBVUkwmLCBSZWY8TWVzc2FnZVBvcnQ+JiYpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQu
CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBm
aW5hbDsKQEAgLTcwLDEyICs2NywxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgdmlydHVhbEhhc1Bl
bmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwogCiAKKyAgICBTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBSZWY8TWVzc2FnZVBvcnQ+IG1fcG9ydDsKICAg
ICBTdHJpbmcgbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yOwotICAgIEpTQzo6UnVudGltZUZsYWdz
IG1fcnVudGltZUZsYWdzOwotICAgIE1vbm90b25pY1RpbWUgbV9jcmVhdGlvblRpbWU7Ci0gICAg
U2hhcmVkV29ya2VyVGhyZWFkUHJveHkmIG1fcHJveHk7IC8vIFRoZSBwcm94eSBvdXRsaXZlcyB0
aGUgd29ya2VyIHRvIHBlcmZvcm0gdGhyZWFkIHNodXRkb3duLgotICAgIGJvb2wgbV9pc0xvYWRp
bmcgeyBmYWxzZSB9OworICAgIEJsb2JVUkxIYW5kbGUgbV9ibG9iVVJMRXh0ZW5zaW9uOworICAg
IGJvb2wgbV9pc0FjdGl2ZSB7IHRydWUgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaWRsCmluZGV4
IGIxNzFjOWVkZjgxYi4uNGM3NDE1NGQ4MjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlci5pZGwKQEAgLTI4LDcgKzI4LDcgQEAKICAgICBFeHBvc2Vk
PVdpbmRvdwogXQogaW50ZXJmYWNlIFNoYXJlZFdvcmtlciA6IEV2ZW50VGFyZ2V0IHsKLSAgW0Nh
bGxXaXRoPURvY3VtZW50JlJ1bnRpbWVGbGFnc10gY29uc3RydWN0b3IoVVNWU3RyaW5nIHNjcmlw
dFVSTCwgb3B0aW9uYWwgKERPTVN0cmluZyBvciBXb3JrZXJPcHRpb25zKSBvcHRpb25zKTsKKyAg
W0NhbGxXaXRoPURvY3VtZW50XSBjb25zdHJ1Y3RvcihVU1ZTdHJpbmcgc2NyaXB0VVJMLCBvcHRp
b25hbCAoRE9NU3RyaW5nIG9yIFdvcmtlck9wdGlvbnMpIG9wdGlvbnMpOwogCiAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBNZXNzYWdlUG9ydCBwb3J0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlcktleS5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyS2V5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi41ZjllNmRjOTBiYTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaApAQCAtMCwwICsxLDgxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIKKyNp
bmNsdWRlIDx3dGYvSGFzaGVyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBTaGFy
ZWRXb3JrZXJLZXkgeworICAgIFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW47CisgICAgVVJM
IHVybDsKKyAgICBTdHJpbmcgbmFtZTsKKworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKK307
CisKK2lubGluZSB1bnNpZ25lZCBTaGFyZWRXb3JrZXJLZXk6Omhhc2goKSBjb25zdAoreworICAg
IEhhc2hlciBoYXNoZXI7CisgICAgYWRkKGhhc2hlciwgb3JpZ2luLmhhc2goKSk7CisgICAgYWRk
KGhhc2hlciwgdXJsKTsKKyAgICBhZGQoaGFzaGVyLCBuYW1lKTsKKyAgICByZXR1cm4gaGFzaGVy
Lmhhc2goKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRXb3JrZXJL
ZXkmIGEsIGNvbnN0IFNoYXJlZFdvcmtlcktleSYgYikKK3sKKyAgICByZXR1cm4gYS5vcmlnaW4g
PT0gYi5vcmlnaW4gJiYgYS51cmwgPT0gYi51cmwgJiYgYS5uYW1lID09IGIubmFtZTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBz
dHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5PiB7CisgICAgc3RhdGlj
IHVuc2lnbmVkIGhhc2goY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBrZXkpCisgICAg
eworICAgICAgICByZXR1cm4ga2V5Lmhhc2goKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBl
cXVhbChjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIGEsIGNvbnN0IFdlYkNvcmU6OlNo
YXJlZFdvcmtlcktleSYgYikKKyAgICB7CisgICAgICAgIHJldHVybiBhID09IGI7CisgICAgfQor
CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBm
YWxzZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6U2hhcmVk
V29ya2VyS2V5PiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleT4g
eworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7Cisg
ICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OlNoYXJlZFdvcmtl
cktleSYgc2xvdCkgeyBuZXcgKE5vdE51bGwsICZzbG90LnVybCkgVVJMKFdURjo6SGFzaFRhYmxl
RGVsZXRlZFZhbHVlKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdl
YkNvcmU6OlNoYXJlZFdvcmtlcktleSYgc2xvdCkgeyByZXR1cm4gc2xvdC51cmwuaXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUoKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzQxMDg3N2RiMzIuLjAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlck1hbmFnZXIuaCIKLQotI2luY2x1ZGUg
IkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgotI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNs
dWRlICJMb2FkZXJTdHJhdGVneS5oIgotI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgotI2luY2x1
ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgotI2lu
Y2x1ZGUgIlNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkLmgiCi0jaW5jbHVk
ZSAiU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCIKLSNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgi
Ci0jaW5jbHVkZSAiV29ya2VyU2NyaXB0TG9hZGVyLmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+Ci0jaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1TaGFyZWRXb3JrZXJNYW5hZ2VyJiBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24o
KQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFyZWRXb3JrZXJNYW5hZ2VyPiBpbnN0
YW5jZTsKLSAgICByZXR1cm4gaW5zdGFuY2UuZ2V0KCk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2Vy
TWFuYWdlcjo6Y29ubmVjdChjb25zdCBVUkwmIHVybCwgU2hhcmVkV29ya2VyJiB3b3JrZXIsIFRy
YW5zZmVycmVkTWVzc2FnZVBvcnQmJiBtZXNzYWdlUG9ydCwgV29ya2VyT3B0aW9ucyYmIG9wdGlv
bnMpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAvLyBGSVhNRTogSGFu
ZGxlIHdvcmtlcnMgZnJvbSBvdGhlciBwcm9jZXNzZXMsIHdoaWNoIHdpbGwgcHJvYmFibHkgcmVx
dWlyZSBtb3ZpbmcgY29ubmVjdCB0byB0aGUgRnJhbWVMb2FkZXJDbGllbnQgb3Igc29tZXRoaW5n
LgotICAgIC8vIE1heWJlIHNvbWV0aGluZyBtb3JlIGxpa2Ugd2hhdCBTZXJ2aWNlV29ya2VycyBk
b2VzLgotCi0gICAgLy8gRklYTUU6IENoZWNrIGlmIHdlIGFscmVhZHkgbWFkZSBhIHRocmVhZC4K
LSAgICAvLyBGSVhNRTogQ2hlY2sgaWYgdGhlcmUncyBhbHJlYWR5IGEgc2hhcmVkIHdvcmtlciBh
bmQgdXNlIHRoYXQgaWYgdGhlcmUgaXMuCi0KLSAgICBhdXRvIGxvYWRlciA9IG1ha2VVbmlxdWVS
ZWY8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPih1cmwsIHdvcmtlciwgV1RGTW92ZShtZXNzYWdl
UG9ydCksIFdURk1vdmUob3B0aW9ucykpOwotICAgIGF1dG8gaWRlbnRpZmllciA9IGxvYWRlci0+
aWRlbnRpZmllcigpOwotICAgIG1fbG9hZGVycy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShsb2Fk
ZXIpKTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzY3JpcHRMb2FkRmFpbGVkKFNo
YXJlZFdvcmtlclNjcmlwdExvYWRlciYgbG9hZGVyKQotewotICAgIEFjdGl2ZURPTU9iamVjdDo6
cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KGxvYWRlci53b3JrZXIoKSwgVGFza1NvdXJjZTo6RE9N
TWFuaXB1bGF0aW9uLCBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVu
dDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7Ci0gICAgbV9sb2Fk
ZXJzLnJlbW92ZShsb2FkZXIuaWRlbnRpZmllcigpKTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJN
YW5hZ2VyOjpzY3JpcHRMb2FkZWRTdWNjZXNzZnVsbHkoU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVy
JiBsb2FkZXIsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc2NyaXB0QnVmZmVyLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBTaGFyZWRXb3JrZXImIHNoYXJlZFdv
cmtlciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHRyYW5zZmVycmVkUG9ydCkKLXsKLSAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8mIHdvcmtlciA9IGxvYWRlci53b3Jr
ZXIoKTsKLSAgICBhdXRvJiBvcHRpb25zID0gbG9hZGVyLm9wdGlvbnMoKTsKLQotICAgIGF1dG8m
IHByb3h5ID0gc2hhcmVkV29ya2VyLnByb3h5KCk7Ci0KLSAgICBwcm94eS5zdGFydFdvcmtlckds
b2JhbFNjb3BlKAotICAgICAgICBsb2FkZXIudXJsKCksCi0gICAgICAgIG9wdGlvbnMubmFtZSwK
LSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC51c2VyQWdlbnQobG9hZGVyLnVybCgpKSwK
LSAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmlzT25MaW5l
KCksCi0gICAgICAgIHNjcmlwdEJ1ZmZlciwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+cmVzcG9uc2VIZWFkZXJzKCksCi0gICAgICAgIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5
UG9saWN5KCksCi0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3Jvc3NPcmlnaW5FbWJl
ZGRlclBvbGljeSgpLAotICAgICAgICB3b3JrZXIuY3JlYXRpb25UaW1lKCksCi0gICAgICAgIFJl
ZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZywKLSAgICAgICAgb3B0aW9ucy50eXBlLAotICAgICAg
ICBvcHRpb25zLmNyZWRlbnRpYWxzLAotICAgICAgICB3b3JrZXIucnVudGltZUZsYWdzKCkKLSAg
ICApOwotICAgIGlmICghcHJveHkudGhyZWFkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJF
TEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaXM8RG9jdW1lbnQ+KHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpKTsKLSAgICBhdXRvIHNvdXJjZU9yaWdpbiA9IGRvd25jYXN0PERv
Y3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5zZWN1cml0eU9yaWdpbigpLnRvU3RyaW5n
KCk7Ci0KLSAgICBwcm94eS50aHJlYWQoKS0+cnVuTG9vcCgpLnBvc3RUYXNrKFt0cmFuc2ZlcnJl
ZFBvcnQgPSBXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCksIHNvdXJjZU9yaWdpbiA9IFdURk1vdmUo
c291cmNlT3JpZ2luKS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpIG11dGFibGUgewotICAgICAgICBkb3duY2FzdDxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4o
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkucG9zdENvbm5lY3RFdmVudChXVEZNb3ZlKHRyYW5zZmVy
cmVkUG9ydCksIHNvdXJjZU9yaWdpbik7Ci0gICAgfSk7Ci0KLSAgICBtX2xvYWRlcnMucmVtb3Zl
KGxvYWRlci5pZGVudGlmaWVyKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb24uY3BwCmluZGV4IGRkYTM4NGQyMjkxMi4uMWNkZTBiYTM1OTU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcApAQCAtMjYsMTAgKzI2LDY2IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIgog
CisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgor
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRCdWZmZXIuaCIKKyNpbmNsdWRl
ICJTaGFyZWRXb3JrZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCIK
KyNpbmNsdWRlICJXb3JrZXJGZXRjaFJlc3VsdC5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
KyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hh
cmVkV29ya2VyLCAiJXAgLSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjoiIGZtdCwgdGhp
cywgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUihm
bXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoU2hhcmVkV29ya2VyLCAiJXAgLSBTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKworc3RhdGlj
IHVpbnQ2NF90IGxvYWRlcklkZW50aWZpZXJTZWVkID0gMDsKKwogU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbjo6U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpID0gZGVmYXVsdDsKIAog
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6flNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b24oKSA9IGRlZmF1bHQ7CiAKK3ZvaWQgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6ZmV0
Y2hTY3JpcHRJbkNsaWVudChVUkwmJiB1cmwsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV29ya2VyT3B0aW9ucyYmIHdv
cmtlck9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1
bHQmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworCisgICAgYXV0byogd29ya2VyT2JqZWN0ID0gU2hhcmVkV29ya2VyOjpmcm9tSWRlbnRpZmll
cihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0Vf
TE9HKCJmZXRjaFNjcmlwdEluQ2xpZW50OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7
cHVibGljfXMsIHdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJp
bmcoKS51dGY4KCkuZGF0YSgpLCB3b3JrZXJPYmplY3QpOworICAgIGlmICghd29ya2VyT2JqZWN0
KQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIod29ya2VyRmV0Y2hFcnJvcihSZXNv
dXJjZUVycm9yIHsgUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uIH0pKTsKKworICAg
IGF1dG8gbG9hZGVySWRlbnRpZmllciA9ICsrbG9hZGVySWRlbnRpZmllclNlZWQ7CisgICAgYXV0
byBsb2FkZXIgPSBtYWtlVW5pcXVlUmVmPFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj4oV1RGTW92
ZSh1cmwpLCAqd29ya2VyT2JqZWN0LCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMpKTsKKyAgICBhdXRv
IGxvYWRlclB0ciA9IGxvYWRlci5wdHIoKTsKKyAgICBtX2xvYWRlcnMuYWRkKGxvYWRlcklkZW50
aWZpZXIsIFdURk1vdmUobG9hZGVyKSk7CisKKyAgICBsb2FkZXJQdHItPmxvYWQoW3RoaXMsIGxv
YWRlcklkZW50aWZpZXIsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKGNvbnN0IFdvcmtlckZldGNoUmVzdWx0JiBmZXRjaFJlc3VsdCkgbXV0YWJsZSB7Cisg
ICAgICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coImZldGNoU2NyaXB0SW5DbGllbnQ6IGZpbmlz
aGVkIHNjcmlwdCBsb2FkLCBzdWNjZXNzPSVkIiwgZmV0Y2hSZXN1bHQuZXJyb3IuaXNOdWxsKCkp
OworICAgICAgICBhdXRvIGxvYWRlciA9IG1fbG9hZGVycy50YWtlKGxvYWRlcklkZW50aWZpZXIp
OworICAgICAgICBBU1NFUlQobG9hZGVyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmV0
Y2hSZXN1bHQpOworICAgIH0pOworfQorCit2b2lkIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b246Om5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24oV2ViQ29yZTo6U2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IGF1dG8qIHdvcmtlck9iamVjdCA9IFNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIoc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJP
Uigibm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbjogc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcj0le3B1YmxpY31zLCB3b3JrZXI9JXAsIHN1Y2Nlc3M9JWQiLCBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgd29ya2VyT2JqZWN0
LCBlcnJvci5pc051bGwoKSk7CisgICAgaWYgKHdvcmtlck9iamVjdCkKKyAgICAgICAgd29ya2Vy
T2JqZWN0LT5kaWRGaW5pc2hMb2FkaW5nKGVycm9yKTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoU2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
YXV0byogd29ya2VyT2JqZWN0ID0gU2hhcmVkV29ya2VyOjpmcm9tSWRlbnRpZmllcihzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9S
KCJwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Q6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXI9JXtwdWJsaWN9cywgd29ya2VyPSVwIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50
b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHdvcmtlck9iamVjdCk7CisgICAgaWYgKHdvcmtlck9i
amVjdCkKKyAgICAgICAgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQo
Kndvcmtlck9iamVjdCwgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFcnJvckV2ZW50Ojpj
cmVhdGUoZXJyb3JNZXNzYWdlLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
eyB9KSk7Cit9CisKKyN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HCisjdW5kZWYgQ09OTkVD
VElPTl9SRUxFQVNFX0xPR19FUlJPUgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uLmgKaW5kZXggNGVkNWExYzY1YjU4Li45NTZiNDczNGExMzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uLmgKQEAgLTI1LDIyICsyNSwzOCBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJUcmFu
c2ZlcnJlZE1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkV29ya2VyOworY2xhc3MgTWVzc2FnZVBvcnQ7Citj
bGFzcyBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI7CisKK3N0cnVjdCBDbGllbnRPcmlnaW47Citz
dHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7CiBzdHJ1Y3QgV29ya2VyT3B0aW9uczsKIAogY2xhc3Mg
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24+IHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIH5TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
cmVxdWVzdFNoYXJlZFdvcmtlcihjb25zdCBVUkwmLCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJl
ZE1lc3NhZ2VQb3J0JiYsIFdvcmtlck9wdGlvbnMmJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0IENsaWVudE9yaWdpbiYsIFNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIsIGNvbnN0IFVSTCYsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgY29uc3Qg
V29ya2VyT3B0aW9ucyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0
SXNHb2luZ0F3YXkoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikgPSAwOwogCiBwcm90ZWN0
ZWQ6CisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmV0Y2hT
Y3JpcHRJbkNsaWVudChVUkwmJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciwgV29ya2VyT3B0aW9ucyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdvcmtlckZl
dGNoUmVzdWx0Jik+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5V29ya2VyT2Jq
ZWN0T2ZMb2FkQ29tcGxldGlvbihXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0RXhj
ZXB0aW9uVG9Xb3JrZXJPYmplY3QoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisKICAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uKCk7CisKK3ByaXZhdGU6CisgICAgSGFzaE1hcDx1aW50NjRfdCwg
VW5pcXVlUmVmPFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj4+IG1fbG9hZGVyczsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaApzaW1pbGFyaXR5IGluZGV4IDU5JQpy
ZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5h
Z2VyLmgKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIuaAppbmRleCAyNTIxODE2ZTY1YzcuLmViY2Q0YTdhZTg3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjUsMjkgKzI1LDEyIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiTWVz
c2FnZVBvcnRJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUHJvY2Vzc1F1YWxpZmllZC5oIgorI2lu
Y2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZFdvcmtlcjsKLWNsYXNz
IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjsKLWNsYXNzIFNjcmlwdEJ1ZmZlcjsKLXN0cnVjdCBX
b3JrZXJPcHRpb25zOwotdXNpbmcgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCA9IHN0ZDo6cGFpcjxX
ZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRp
Zmllcj47Ci0KLXVzaW5nIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcklkZW50aWZpZXIgPSBPYmpl
Y3RJZGVudGlmaWVyPFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj47Ci0KLWNsYXNzIFNoYXJlZFdv
cmtlck1hbmFnZXIgewotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTaGFyZWRX
b3JrZXJNYW5hZ2VyJiBzaW5nbGV0b24oKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbm5l
Y3QoY29uc3QgVVJMJiwgU2hhcmVkV29ya2VyJiwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBX
b3JrZXJPcHRpb25zJiYpOwotCi0gICAgdm9pZCBzY3JpcHRMb2FkRmFpbGVkKFNoYXJlZFdvcmtl
clNjcmlwdExvYWRlciYpOwotICAgIHZvaWQgc2NyaXB0TG9hZGVkU3VjY2Vzc2Z1bGx5KFNoYXJl
ZFdvcmtlclNjcmlwdExvYWRlciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYpOwotCi1w
cml2YXRlOgotICAgIEhhc2hNYXA8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmllciwg
VW5pcXVlUmVmPFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj4+IG1fbG9hZGVyczsKLX07CitlbnVt
IFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIgPSBQcm9jZXNzUXVhbGlmaWVkPE9iamVjdElkZW50aWZpZXI8U2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllclR5cGU+PjsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXggMzExZWJkNjA3OGJjLi5lYTJlMDQ4Yzc2MjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlw
dExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yOSwyMyArMjksMjYgQEAKICNpbmNsdWRlICJFdmVudE5hbWVz
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiU2hh
cmVkV29ya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyTWFuYWdlci5oIgorI2luY2x1ZGUg
IldvcmtlckZldGNoUmVzdWx0LmgiCiAjaW5jbHVkZSAiV29ya2VyUnVuTG9vcC5oIgogI2luY2x1
ZGUgIldvcmtlclNjcmlwdExvYWRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJl
ZFdvcmtlclNjcmlwdExvYWRlcjo6U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyKGNvbnN0IFVSTCYg
dXJsLCBTaGFyZWRXb3JrZXImIHdvcmtlciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBvcnQs
IFdvcmtlck9wdGlvbnMmJiBvcHRpb25zKQotICAgIDogbV9pZGVudGlmaWVyKFNoYXJlZFdvcmtl
clNjcmlwdExvYWRlcklkZW50aWZpZXI6OmdlbmVyYXRlKCkpCi0gICAgLCBtX29wdGlvbnMoV1RG
TW92ZShvcHRpb25zKSkKK1NoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hhcmVkV29ya2VyU2Ny
aXB0TG9hZGVyKFVSTCYmIHVybCwgU2hhcmVkV29ya2VyJiB3b3JrZXIsIFdvcmtlck9wdGlvbnMm
JiBvcHRpb25zKQorICAgIDogbV9vcHRpb25zKFdURk1vdmUob3B0aW9ucykpCiAgICAgLCBtX3dv
cmtlcih3b3JrZXIpCi0gICAgLCBtX3BvcnQoV1RGTW92ZShwb3J0KSkKICAgICAsIG1fbG9hZGVy
KFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlKCkpCi0gICAgLCBtX3BlbmRpbmdBY3Rpdml0eSh3
b3JrZXIubWFrZVBlbmRpbmdBY3Rpdml0eSh3b3JrZXIpKQotICAgICwgbV91cmwodXJsKQorICAg
ICwgbV91cmwoV1RGTW92ZSh1cmwpKQogewotICAgIG1fd29ya2VyLT5zZXRJc0xvYWRpbmcodHJ1
ZSk7Ci0gICAgbV9sb2FkZXItPmxvYWRBc3luY2hyb25vdXNseSgqd29ya2VyLnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgUmVzb3VyY2VSZXF1ZXN0KHVybCksIHdvcmtlci53b3JrZXJGZXRjaE9w
dGlvbnMob3B0aW9ucywgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2hhcmVkd29ya2VyKSwg
Q29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQ6OkVuZm9yY2VXb3JrZXJTcmNEaXJlY3Rp
dmUsIFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsLCAqdGhpcywgV29ya2VyUnVuTG9vcDo6ZGVmYXVs
dE1vZGUoKSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBBU1NFUlQoIW1fY29tcGxldGlvbkhhbmRsZXIpOworICAgIG1fY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIG1fbG9h
ZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoKm1fd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCksIFJlc291cmNlUmVxdWVzdChtX3VybCksIG1fd29ya2VyLT53b3JrZXJGZXRjaE9wdGlvbnMo
bV9vcHRpb25zLCBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpTaGFyZWR3b3JrZXIpLCBDb250
ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6RW5mb3JjZVdvcmtlclNyY0RpcmVjdGl2ZSwg
U2VydmljZVdvcmtlcnNNb2RlOjpBbGwsICp0aGlzLCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9k
ZSgpKTsKIH0KIAogdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpCkBAIC01NSwxNiArNTgsMTIgQEAgdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnQKIAog
dm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKCkKIHsKLSAgICBt
X3dvcmtlci0+c2V0SXNMb2FkaW5nKGZhbHNlKTsKKyAgICBpZiAobV9sb2FkZXItPmZhaWxlZCgp
KQorICAgICAgICByZXR1cm4gbV9jb21wbGV0aW9uSGFuZGxlcih3b3JrZXJGZXRjaEVycm9yKG1f
bG9hZGVyLT5lcnJvcigpKSk7CiAKLSAgICBhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0g
bV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAobV9sb2FkZXItPmZh
aWxlZCgpIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7Ci0gICAgICAgIG1fd29ya2VyLT5k
aXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2ZW50
OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKLSAgICAgICAgU2hh
cmVkV29ya2VyTWFuYWdlcjo6c2luZ2xldG9uKCkuc2NyaXB0TG9hZEZhaWxlZCgqdGhpcyk7IC8v
IGRlbGV0ZXMgdGhpcy4KLSAgICB9IGVsc2UgeworICAgIGlmIChhdXRvKiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0ID0gbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZCgqc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgbV9sb2FkZXItPmlkZW50aWZpZXIoKSwgbV9sb2FkZXItPnNjcmlwdCgpLnRvU3Ry
aW5nKCkpOwotICAgICAgICBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5zY3JpcHRM
b2FkZWRTdWNjZXNzZnVsbHkoKnRoaXMsIG1fbG9hZGVyLT5zY3JpcHQoKSwgKm1fd29ya2VyLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fd29ya2VyLmdldCgpLCBzdGQ6OmV4Y2hhbmdlKG1f
cG9ydCwgeyB9KSk7IC8vIGRlbGV0ZXMgdGhpcy4KLSAgICB9CisgICAgbV9jb21wbGV0aW9uSGFu
ZGxlcih7IG1fbG9hZGVyLT5zY3JpcHQoKSwgbV9sb2FkZXItPmNlcnRpZmljYXRlSW5mbygpLCBt
X2xvYWRlci0+Y29udGVudFNlY3VyaXR5UG9saWN5KCksIG1fbG9hZGVyLT5jcm9zc09yaWdpbkVt
YmVkZGVyUG9saWN5KCksIG1fbG9hZGVyLT5yZWZlcnJlclBvbGljeSgpLCB7IH0gfSk7IC8vIGRl
bGV0ZXMgdGhpcy4KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaApp
bmRleCBhYjMwOWExY2VmYjYuLmViMGI3MTQ1YmZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsNyAr
MjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VQb3J0SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9h
ZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKQEAgLTM4LDMy
ICszNywyOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNoYXJlZFdvcmtlcjsKIGNs
YXNzIFdvcmtlclNjcmlwdExvYWRlcjsKLQotY2xhc3MgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVy
OwotCi11c2luZyBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0ID0gc3RkOjpwYWlyPFdlYkNvcmU6Ok1l
c3NhZ2VQb3J0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyPjsKK3N0
cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKIAogY2xhc3MgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVy
IDogcHJpdmF0ZSBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcihjb25zdCBV
UkwmLCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdvcmtlck9wdGlv
bnMmJik7CisgICAgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyKFVSTCYmLCBTaGFyZWRXb3JrZXIm
LCBXb3JrZXJPcHRpb25zJiYpOworCisgICAgdm9pZCBsb2FkKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKT4mJik7CiAKLSAgICBTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZp
ZXI7IH0KICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAg
U2hhcmVkV29ya2VyJiB3b3JrZXIoKSB7IHJldHVybiBtX3dvcmtlci5nZXQoKTsgfQotICAgIGNv
bnN0IFdvcmtlck9wdGlvbnMmIG9wdGlvbnMoKSB7IHJldHVybiBtX29wdGlvbnM7IH0KKyAgICBj
b25zdCBXb3JrZXJPcHRpb25zJiBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9
CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAgICAgdm9pZCBub3Rp
ZnlGaW5pc2hlZCgpIGZpbmFsOwogCi0gICAgY29uc3QgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVy
SWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgY29uc3QgV29ya2VyT3B0aW9ucyBtX29wdGlv
bnM7CiAgICAgY29uc3QgUmVmPFNoYXJlZFdvcmtlcj4gbV93b3JrZXI7Ci0gICAgVHJhbnNmZXJy
ZWRNZXNzYWdlUG9ydCBtX3BvcnQ7CiAgICAgY29uc3QgUmVmPFdvcmtlclNjcmlwdExvYWRlcj4g
bV9sb2FkZXI7Ci0gICAgY29uc3QgUmVmPEFjdGl2ZURPTU9iamVjdDo6UGVuZGluZ0FjdGl2aXR5
PFNoYXJlZFdvcmtlcj4+IG1fcGVuZGluZ0FjdGl2aXR5OwogICAgIGNvbnN0IFVSTCBtX3VybDsK
KyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdvcmtlckZldGNoUmVzdWx0Jik+IG1f
Y29tcGxldGlvbkhhbmRsZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQv
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uMDdhOTBkOTgwNTEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5j
cHAKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCIKKworI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIgorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyJiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkK
K3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI+
IHNoYXJlZE1hbmFnZXI7CisgICAgcmV0dXJuIHNoYXJlZE1hbmFnZXI7Cit9CisKK1NoYXJlZFdv
cmtlclRocmVhZFByb3h5KiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2hhcmVkV29ya2Vy
KFNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikgY29uc3QKK3sK
KyAgICByZXR1cm4gbV93b3JrZXJNYXAuZ2V0KHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworfQor
Cit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzdG9wU2hhcmVkV29ya2VyKFNoYXJl
ZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHdv
cmtlciA9IG1fd29ya2VyTWFwLnRha2Uoc2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgUkVM
RUFTRV9MT0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0b3BT
aGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHdvcmtlcj0l
cCIsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSwgd29ya2VyLmdldCgpKTsKKyAg
ICBpZiAoIXdvcmtlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgd29ya2VyLT5zZXRBc1Rlcm1p
bmF0aW5nT3JUZXJtaW5hdGVkKCk7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUg
dG8gZGVhbCB3aXRoIHRoZSB0aHJlYWQgYmVpbmcgdW5yZXNwb25zaXZlIGhlcmUuCisKKyAgICBh
dXRvJiB0aHJlYWQgPSB3b3JrZXItPnRocmVhZCgpOworICAgIHRocmVhZC5zdG9wKFt3b3JrZXIg
PSBXVEZNb3ZlKHdvcmtlcildKCkgbXV0YWJsZSB7CisgICAgICAgIC8vIFNwaW4gdGhlIHJ1bmxv
b3AgYmVmb3JlIHJlbGVhc2luZyB0aGUgc2hhcmVkIHdvcmtlciB0aHJlYWQgcHJveHksIGFzIHRo
ZXJlIHdvdWxkIG90aGVyd2lzZSBiZQorICAgICAgICAvLyBhIHJhY2UgdG93YXJkcyBpdHMgZGVz
dHJ1Y3Rpb24uCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dvcmtlciA9IFdURk1vdmUod29y
a2VyKV0geyB9KTsKKyAgICB9KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
cjo6c3RvcEFsbFNoYXJlZFdvcmtlcnMoKQoreworICAgIHdoaWxlICghbV93b3JrZXJNYXAuaXNF
bXB0eSgpKQorICAgICAgICBzdG9wU2hhcmVkV29ya2VyKG1fd29ya2VyTWFwLmJlZ2luKCktPmtl
eSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNldENvbm5lY3Rpb24o
c3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlQo
IW1fY29ubmVjdGlvbiB8fCBtX2Nvbm5lY3Rpb24tPmlzQ2xvc2VkKCkpOworICAgIG1fY29ubmVj
dGlvbiA9IFdURk1vdmUoY29ubmVjdGlvbik7Cit9CisKK2F1dG8gU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXI6OmNvbm5lY3Rpb24oKSBjb25zdCAtPiBDb25uZWN0aW9uKgoreworICAgIHJldHVy
biBtX2Nvbm5lY3Rpb24uZ2V0KCk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXI6OnJlZ2lzdGVyU2hhcmVkV29ya2VyVGhyZWFkKFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eT4mJiBwcm94eSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIFJFTEVBU0Vf
TE9HKFNoYXJlZFdvcmtlciwgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpyZWdpc3RlclNo
YXJlZFdvcmtlclRocmVhZDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHByb3h5
LT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IG1fd29ya2Vy
TWFwLmFkZChwcm94eS0+aWRlbnRpZmllcigpLCBwcm94eS5jb3B5UmVmKCkpOworICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICBwcm94eS0+dGhyZWFk
KCkuc3RhcnQoW10oY29uc3QgU3RyaW5nJiAvKmV4Y2VwdGlvbk1lc3NhZ2UqLykgeyB9KTsKK30K
Kwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6cG9zdENvbm5l
Y3RFdmVudChTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFRy
YW5zZmVycmVkTWVzc2FnZVBvcnQmJiB0cmFuc2ZlcnJlZFBvcnQsIFN0cmluZyYmIHNvdXJjZU9y
aWdpbikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8qIHByb3h5ID0g
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNoYXJlZFdvcmtlcihzaGFy
ZWRXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVudDogc2hh
cmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgcHJveHk9JXAiLCBzaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLnRvVUludDY0KCksIHByb3h5KTsKKyAgICBpZiAoIXByb3h5KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBwcm94eS0+dGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFt0cmFuc2Zl
cnJlZFBvcnQgPSBXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCksIHNvdXJjZU9yaWdpbiA9IFdURk1v
dmUoc291cmNlT3JpZ2luKS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICAg
ICAgZG93bmNhc3Q8U2hhcmVkV29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpLnBvc3RDb25uZWN0RXZlbnQoV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBXVEZNb3ZlKHNv
dXJjZU9yaWdpbikpOworICAgIH0pOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyOjpDb25uZWN0aW9uOjp0ZXJtaW5hdGVTaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRp
ZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXI6OkNvbm5lY3Rpb246OnRlcm1pbmF0ZVNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRl
bnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7Cisg
ICAgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnN0b3BTaGFyZWRXb3Jr
ZXIoc2hhcmVkV29ya2VySWRlbnRpZmllcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2Nv
bnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjMzODI1Mjg5MzczZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXIuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiVHJhbnNmZXJyZWRNZXNz
YWdlUG9ydC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk7CisKK2NsYXNzIFNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXImIHNpbmdsZXRvbigpOworCisgICAgU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHkqIHNoYXJlZFdvcmtlcihTaGFyZWRXb3JrZXJJZGVudGlmaWVyKSBjb25zdDsK
KyAgICB2b2lkIHN0b3BTaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wQWxsU2hhcmVkV29ya2VycygpOworCisgICAgY2xhc3Mg
Q29ubmVjdGlvbiB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIHB1Ymxp
YzoKKyAgICAgICAgdmlydHVhbCB+Q29ubmVjdGlvbigpIHsgfQorICAgICAgICB2aXJ0dWFsIHZv
aWQgZXN0YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsK
KyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChTaGFyZWRX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSA9IDA7CisgICAg
ICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xvc2VkOyB9CisKKyAgICBw
cm90ZWN0ZWQ6CisgICAgICAgIHZvaWQgc2V0QXNDbG9zZWQoKSB7IG1faXNDbG9zZWQgPSB0cnVl
OyB9CisKKyAgICAgICAgLy8gSVBDIG1lc3NhZ2UgaGFuZGxlcnMuCisgICAgICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcG9zdENvbm5lY3RFdmVudChTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBUcmFu
c2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFN0cmluZyYmIHNvdXJjZU9yaWdpbik7CisgICAgICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgdGVybWluYXRlU2hhcmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50
aWZpZXIpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCBtX2lzQ2xvc2VkIHsgZmFsc2Ug
fTsKKyAgICB9OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb25uZWN0aW9uKHN0ZDo6
dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb25uZWN0aW9u
KiBjb25uZWN0aW9uKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZ2lzdGVy
U2hhcmVkV29ya2VyVGhyZWFkKFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4mJik7CisKK3By
aXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPFNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyPjsKKworICAgIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyKCkgPSBkZWZhdWx0
OworCisgICAgc3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBI
YXNoTWFwPFNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eT4+IG1fd29ya2VyTWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJl
YWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJl
ZFdvcmtlclRocmVhZFByb3h5LmNwcAppbmRleCA5YmQ5NzgzZDdhN2UuLjFlZGY3MzRmZjI5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRX
b3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
Y29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsOTQgKzI4LDcyIEBACiAKICNp
bmNsdWRlICJDYWNoZVN0b3JhZ2VQcm92aWRlci5oIgogI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIK
KyNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVk
ZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkxpYldlYlJU
Q1Byb3ZpZGVyLmgiCisjaW5jbHVkZSAiTG9hZGVyU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJNZXNz
YWdlRXZlbnQuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
KyNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCisj
aW5jbHVkZSAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCIKICNpbmNsdWRlICJTaGFyZWRX
b3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlclRocmVhZC5oIgorI2lu
Y2x1ZGUgIldvcmtlckZldGNoUmVzdWx0LmgiCisjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllcnNGYWN0b3J5Lmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OlNoYXJlZFdvcmtlclRocmVh
ZFByb3h5KFNoYXJlZFdvcmtlciYgc2hhcmVkV29ya2VyKQotICAgIDogbV9zaGFyZWRXb3JrZXIo
c2hhcmVkV29ya2VyKQotICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KHNoYXJlZFdvcmtl
ci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgLCBtX2lkZW50aWZpZXJGb3JJbnNwZWN0
b3Ioc2hhcmVkV29ya2VyLmlkZW50aWZpZXJGb3JJbnNwZWN0b3IoKSkKK3N0YXRpYyBIYXNoU2V0
PFNoYXJlZFdvcmtlclRocmVhZFByb3h5Kj4mIGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMo
KQogeworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFNoYXJlZFdvcmtlclRocmVh
ZFByb3h5Kj4+IHNldDsKKyAgICByZXR1cm4gc2V0OwogfQogCi12b2lkIFNoYXJlZFdvcmtlclRo
cmVhZFByb3h5OjpzdGFydFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBib29sIGlzT25saW5l
LCBjb25zdCBTY3JpcHRCdWZmZXImIHNjcmlwdEJ1ZmZlciwgY29uc3QgQ29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBjb25z
dCBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5JiBjcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LCBN
b25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5LCBX
b3JrZXJUeXBlIHdvcmtlclR5cGUsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzIGNyZWRlbnRpYWxz
LCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MpCitzdGF0aWMgV29ya2VyUGFyYW1ldGVy
cyBnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFdv
cmtlckZldGNoUmVzdWx0JiB3b3JrZXJGZXRjaFJlc3VsdCwgV29ya2VyT3B0aW9ucyYmIHdvcmtl
ck9wdGlvbnMsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7
Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0
byBwYXJhbWV0ZXJzID0gV29ya2VyUGFyYW1ldGVycyB7CisgICAgcmV0dXJuIFdvcmtlclBhcmFt
ZXRlcnMgewogICAgICAgICBzY3JpcHRVUkwsCi0gICAgICAgIG5hbWUsCi0gICAgICAgIG1faWRl
bnRpZmllckZvckluc3BlY3RvciwKKyAgICAgICAgd29ya2VyT3B0aW9ucy5uYW1lLAorICAgICAg
ICAic2hhcmVkd29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRl
SWRlbnRpZmllcigpLAogICAgICAgICB1c2VyQWdlbnQsCi0gICAgICAgIGlzT25saW5lLAotICAg
ICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsCi0gICAgICAgIHNob3Vs
ZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwKLSAgICAgICAgY3Jvc3NPcmln
aW5FbWJlZGRlclBvbGljeSwKLSAgICAgICAgdGltZU9yaWdpbiwKLSAgICAgICAgcmVmZXJyZXJQ
b2xpY3ksCi0gICAgICAgIHdvcmtlclR5cGUsCi0gICAgICAgIGNyZWRlbnRpYWxzLAotICAgICAg
ICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNldHRpbmdzVmFsdWVzKCkKKyAgICAgICAgcGxh
dGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmlzT25MaW5lKCksCisgICAgICAg
IHdvcmtlckZldGNoUmVzdWx0LmNvbnRlbnRTZWN1cml0eVBvbGljeSwKKyAgICAgICAgZmFsc2Us
CisgICAgICAgIHdvcmtlckZldGNoUmVzdWx0LmNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ksCisg
ICAgICAgIE1vbm90b25pY1RpbWU6Om5vdygpLAorICAgICAgICBwYXJzZVJlZmVycmVyUG9saWN5
KHdvcmtlckZldGNoUmVzdWx0LnJlZmVycmVyUG9saWN5LCBSZWZlcnJlclBvbGljeVNvdXJjZTo6
SFRUUEhlYWRlcikudmFsdWVfb3IoUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nKSwKKyAgICAg
ICAgd29ya2VyT3B0aW9ucy50eXBlLAorICAgICAgICB3b3JrZXJPcHRpb25zLmNyZWRlbnRpYWxz
LAorICAgICAgICBkb2N1bWVudC5zZXR0aW5nc1ZhbHVlcygpCiAgICAgfTsKLQotICAgIGlmICgh
bV93b3JrZXJUaHJlYWQpIHsKLSAgICAgICAgbV93b3JrZXJUaHJlYWQgPSBTaGFyZWRXb3JrZXJU
aHJlYWQ6OmNyZWF0ZShTaGFyZWRXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBwYXJhbWV0
ZXJzLCBzY3JpcHRCdWZmZXIsICp0aGlzLCAqdGhpcywgKnRoaXMsIFdvcmtlclRocmVhZFN0YXJ0
TW9kZTo6Tm9ybWFsLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnRvcE9yaWdpbigpLCBtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlkYkNvbm5lY3Rpb25Qcm94eSgpLCBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPnNvY2tldFByb3ZpZGVyKCksIHJ1bnRpbWVGbGFncyk7Ci0gICAgICAgIG1f
d29ya2VyVGhyZWFkLT5zdGFydCgpOwotICAgIH0KLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eTo6dGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKQotewotICAgIGlmIChtX2Fza2Vk
VG9UZXJtaW5hdGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fYXNrZWRUb1Rlcm1pbmF0ZSA9
IHRydWU7Ci0gICAgaWYgKG1fd29ya2VyVGhyZWFkKQotICAgICAgICBtX3dvcmtlclRocmVhZC0+
c3RvcChudWxscHRyKTsKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdE1l
c3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2Fn
ZSkKK1NoYXJlZFdvcmtlclRocmVhZFByb3h5OjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShVbmlx
dWVSZWY8UGFnZT4mJiBwYWdlLCBTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IENsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBjb25zdCBVUkwmIHNj
cmlwdFVSTCwgV29ya2VyRmV0Y2hSZXN1bHQmJiB3b3JrZXJGZXRjaFJlc3VsdCwgV29ya2VyT3B0
aW9ucyYmIHdvcmtlck9wdGlvbnMsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBDYWNoZVN0b3Jh
Z2VQcm92aWRlciYgY2FjaGVTdG9yYWdlUHJvdmlkZXIpCisgICAgOiBtX3BhZ2UoV1RGTW92ZShw
YWdlKSkKKyAgICAsIG1fZG9jdW1lbnQoKm1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkK
KyAgICAsIG1fd29ya2VyVGhyZWFkKFNoYXJlZFdvcmtlclRocmVhZDo6Y3JlYXRlKHNoYXJlZFdv
cmtlcklkZW50aWZpZXIsIGdlbmVyYXRlV29ya2VyUGFyYW1ldGVycyhzY3JpcHRVUkwsIHdvcmtl
ckZldGNoUmVzdWx0LCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMpLCB1c2VyQWdlbnQsIG1fZG9jdW1l
bnQpLCBXVEZNb3ZlKHdvcmtlckZldGNoUmVzdWx0LnNjcmlwdCksICp0aGlzLCAqdGhpcywgKnRo
aXMsIFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBjbGllbnRPcmlnaW4udG9wT3JpZ2lu
LnNlY3VyaXR5T3JpZ2luKCksIG1fZG9jdW1lbnQtPmlkYkNvbm5lY3Rpb25Qcm94eSgpLCBtX2Rv
Y3VtZW50LT5zb2NrZXRQcm92aWRlcigpLCBKU0M6OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5h
YmxlZCgpKSkKKyAgICAsIG1fY2FjaGVTdG9yYWdlUHJvdmlkZXIoY2FjaGVTdG9yYWdlUHJvdmlk
ZXIpCiB7Ci0gICAgLy8gRklYTUU6IFNoYXJlZFdvcmtlciBkb2Vzbid0IGhhdmUgcG9zdE1lc3Nh
Z2UsIHNvIHRoaXMgbWlnaHQgbm90IGJlIG5lY2Vzc2FyeS4KLSAgICBwb3N0VGFza1RvV29ya2Vy
R2xvYmFsU2NvcGUoW21lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpXShhdXRvJiBzY3JpcHRDb250
ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byYgY29udGV4dCA9IGRvd25jYXN0PFNoYXJlZFdv
cmtlckdsb2JhbFNjb3BlPihzY3JpcHRDb250ZXh0KTsKLSAgICAgICAgYXV0byBwb3J0cyA9IE1l
c3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKHNjcmlwdENvbnRleHQsIFdURk1vdmUobWVzc2FnZS50
cmFuc2ZlcnJlZFBvcnRzKSk7Ci0gICAgICAgIGNvbnRleHQuZGlzcGF0Y2hFdmVudChNZXNzYWdl
RXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgbWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VOb25O
dWxsKCkpKTsKLSAgICB9KTsKLX0KKyAgICBBU1NFUlQoIWFsbFNoYXJlZFdvcmtlclRocmVhZFBy
b3hpZXMoKS5jb250YWlucyh0aGlzKSk7CisgICAgYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGll
cygpLmFkZCh0aGlzKTsKIAotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tU
b1dvcmtlckdsb2JhbFNjb3BlKEZ1bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
PiYmIHRhc2spCi17Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKLSAgICAgICAgcmV0dXJu
OwotICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7
Ci19Ci0KLWJvb2wgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Omhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faGFzUGVuZGluZ0FjdGl2aXR5ICYmICFtX2Fza2VkVG9U
ZXJtaW5hdGU7CisgICAgc3RhdGljIGJvb2wgYWRkZWRMaXN0ZW5lcjsKKyAgICBpZiAoIWFkZGVk
TGlzdGVuZXIpIHsKKyAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5
KCktPmFkZE9ubGluZVN0YXRlQ2hhbmdlTGlzdGVuZXIoJm5ldHdvcmtTdGF0ZUNoYW5nZWQpOwor
ICAgICAgICBhZGRlZExpc3RlbmVyID0gdHJ1ZTsKKyAgICB9CiB9CiAKLXZvaWQgU2hhcmVkV29y
a2VyVGhyZWFkUHJveHk6Ondvcmtlck9iamVjdERlc3Ryb3llZCgpCitTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eTo6flNoYXJlZFdvcmtlclRocmVhZFByb3h5KCkKIHsKLSAgICBtX3NoYXJlZFdvcmtl
ciA9IG51bGxwdHI7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhp
c10gKGF1dG8mKSB7Ci0gICAgICAgIG1fbWF5QmVEZXN0cm95ZWQgPSB0cnVlOwotICAgICAgICBp
ZiAobV93b3JrZXJUaHJlYWQpCi0gICAgICAgICAgICB0ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29w
ZSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3ll
ZEludGVybmFsKCk7Ci0gICAgfSk7CisgICAgQVNTRVJUKGFsbFNoYXJlZFdvcmtlclRocmVhZFBy
b3hpZXMoKS5jb250YWlucyh0aGlzKSk7CisgICAgYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGll
cygpLnJlbW92ZSh0aGlzKTsKIH0KIAogU2hhcmVkV29ya2VySWRlbnRpZmllciBTaGFyZWRXb3Jr
ZXJUaHJlYWRQcm94eTo6aWRlbnRpZmllcigpIGNvbnN0CkBAIC0xMjUsODggKzEwMyw1MCBAQCBT
aGFyZWRXb3JrZXJJZGVudGlmaWVyIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjppZGVudGlmaWVy
KCkgY29uc3QKIAogdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6bm90aWZ5TmV0d29ya1N0
YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpCiB7Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkK
KyAgICBpZiAobV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoIW1fd29ya2VyVGhyZWFkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3dvcmtl
clRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFtpc09ubGluZV0gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIHsKKyAgICBwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKFtpc09ubGluZV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsK
ICAgICAgICAgYXV0byYgZ2xvYmFsU2NvcGUgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4o
Y29udGV4dCk7CiAgICAgICAgIGdsb2JhbFNjb3BlLnNldElzT25saW5lKGlzT25saW5lKTsKLSAg
ICAgICAgZ2xvYmFsU2NvcGUuZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGlzT25saW5lID8g
ZXZlbnROYW1lcygpLm9ubGluZUV2ZW50IDogZXZlbnROYW1lcygpLm9mZmxpbmVFdmVudCwgRXZl
bnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7Ci0gICAgfSk7Ci19
Ci0KLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnN1c3BlbmRGb3JCYWNrRm9yd2FyZENh
Y2hlKCkKLXsKLQotfQotCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpyZXN1bWVGb3JC
YWNrRm9yd2FyZENhY2hlKCkKLXsKLQorICAgICAgICBnbG9iYWxTY29wZS5ldmVudExvb3AoKS5x
dWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbZ2xvYmFsU2NvcGUgPSBSZWYg
eyBnbG9iYWxTY29wZSB9LCBpc09ubGluZV0geworICAgICAgICAgICAgZ2xvYmFsU2NvcGUtPmRp
c3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShpc09ubGluZSA/IGV2ZW50TmFtZXMoKS5vbmxpbmVF
dmVudCA6IGV2ZW50TmFtZXMoKS5vZmZsaW5lRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBF
dmVudDo6SXNDYW5jZWxhYmxlOjpObykpOworICAgICAgICB9KTsKKyAgICB9LCBXb3JrZXJSdW5M
b29wOjpkZWZhdWx0TW9kZSgpKTsKIH0KIAogdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6
cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwp
CiB7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpcywgZXJyb3JN
ZXNzYWdlID0gZXJyb3JNZXNzYWdlLmlzb2xhdGVkQ29weSgpLCBzb3VyY2VVUkwgPSBzb3VyY2VV
UkwuaXNvbGF0ZWRDb3B5KCksIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcl0gKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKSB7Ci0gICAgICAgIGlmICghbV9zaGFyZWRXb3JrZXIpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgLy8gV2UgZG9uJ3QgYm90aGVyIGNoZWNraW5nIHRoZSBhc2tl
ZFRvVGVybWluYXRlKCkgZmxhZyBoZXJlLCBiZWNhdXNlIGV4Y2VwdGlvbnMgc2hvdWxkICphbHdh
eXMqIGJlIHJlcG9ydGVkIGV2ZW4gaWYgdGhlIHRocmVhZCBpcyB0ZXJtaW5hdGVkLgotICAgICAg
ICAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgZGlmZmVyZW50IHRoYW4gdGhlIGJlaGF2aW9yIGlu
IE1lc3NhZ2VXb3JrZXJUYXNrLCBiZWNhdXNlIHRlcm1pbmF0ZWQgd29ya2VycyBubyBsb25nZXIg
ZGVsaXZlciBtZXNzYWdlcyAoc2VjdGlvbiA0LjYgb2YgdGhlIFdlYldvcmtlciBzcGVjKSwgYnV0
IHRoZXkgZG8gcmVwb3J0IGV4Y2VwdGlvbnMuCi0gICAgICAgIEFjdGl2ZURPTU9iamVjdDo6cXVl
dWVUYXNrVG9EaXNwYXRjaEV2ZW50KCptX3NoYXJlZFdvcmtlciwgVGFza1NvdXJjZTo6RE9NTWFu
aXB1bGF0aW9uLCBFcnJvckV2ZW50OjpjcmVhdGUoZXJyb3JNZXNzYWdlLCBzb3VyY2VVUkwsIGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgeyB9KSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2hhcmVk
V29ya2VyVGhyZWFkUHJveHk6Ondvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkKCkKLXsKLSAgICBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzXSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpIHsKLSAgICAgICAgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgp
OwotICAgIH0pOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0TWVzc2Fn
ZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpCi17Ci0KLX0KLQotdm9p
ZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0
KGJvb2wpCi17Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnJlcG9ydFBlbmRp
bmdBY3Rpdml0eShib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKLXsKLSAgICBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzLCBoYXNQZW5kaW5nQWN0aXZpdHldIChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JikgewotICAgICAgICBtX2hhc1BlbmRpbmdBY3Rpdml0eSA9IGhhc1Bl
bmRpbmdBY3Rpdml0eTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzaGFyZWRXb3JrZXJJZGVudGlm
aWVyID0gbV93b3JrZXJUaHJlYWQtPmlkZW50aWZpZXIoKSwgZXJyb3JNZXNzYWdlID0gZXJyb3JN
ZXNzYWdlLmlzb2xhdGVkQ29weSgpLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVS
TCA9IHNvdXJjZVVSTC5pc29sYXRlZENvcHkoKV0geworICAgICAgICBpZiAoYXV0byogY29ubmVj
dGlvbiA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9u
KCkpCisgICAgICAgICAgICBjb25uZWN0aW9uLT5wb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qo
c2hhcmVkV29ya2VySWRlbnRpZmllciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIsIHNvdXJjZVVSTCk7CiAgICAgfSk7CiB9CiAKIFJlZlB0cjxDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uPiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRvJiBkb2N1bWVu
dCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICBy
ZXR1cm4gZG9jdW1lbnQucGFnZSgpLT5jYWNoZVN0b3JhZ2VQcm92aWRlcigpLmNyZWF0ZUNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24oKTsKKyAgICBpZiAoIW1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbikK
KyAgICAgICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uID0gbV9jYWNoZVN0b3JhZ2VQcm92aWRl
ci5jcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCk7CisgICAgcmV0dXJuIG1fY2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjsKIH0KIAogUmVmUHRyPFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNv
bm5lY3Rpb24+IFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpjcmVhdGVSVENEYXRhQ2hhbm5lbFJl
bW90ZUhhbmRsZXJDb25uZWN0aW9uKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwot
ICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpOwotICAgIGlmICghZG9jdW1lbnQucGFnZSgpKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICByZXR1cm4gZG9jdW1lbnQucGFnZSgpLT5saWJXZWJSVENQcm92aWRlcigpLmNy
ZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24oKTsKKyAgICByZXR1cm4g
bV9wYWdlLT5saWJXZWJSVENQcm92aWRlcigpLmNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3RlSGFu
ZGxlckNvbm5lY3Rpb24oKTsKIH0KIAogdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9z
dFRhc2tUb0xvYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykKIHsKLSAg
ICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFdURk1vdmUodGFzaykpOworICAg
IGNhbGxPbk1haW5UaHJlYWQoW3Rhc2sgPSBXVEZNb3ZlKHRhc2spLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHRhc2sucGVyZm9ybVRhc2socHJv
dGVjdGVkVGhpcy0+bV9kb2N1bWVudC5nZXQoKSk7CisgICAgfSk7CiB9CiAKIGJvb2wgU2hhcmVk
V29ya2VyVGhyZWFkUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2ssIGNvbnN0IFN0cmluZyYg
bW9kZSkKIHsKLSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQorICAgIGlmIChtX2lzVGVybWlu
YXRpbmdPclRlcm1pbmF0ZWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1fd29ya2Vy
VGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFdURk1vdmUodGFzayksIG1vZGUpOwpA
QCAtMjIzLDE2ICsxNjMsMTAgQEAgdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6c2V0UmVz
b3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3BlY3Rvcihib29sKQogCiB9CiAKLXZvaWQgU2hh
cmVkV29ya2VyVGhyZWFkUHJveHk6Ondvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwo
KQordm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6bmV0d29ya1N0YXRlQ2hhbmdlZChib29s
IGlzT25MaW5lKQogewotICAgIC8vIFRoaXMgaXMgYWx3YXlzIHRoZSBsYXN0IHRhc2sgdG8gYmUg
cGVyZm9ybWVkLCBzbyB0aGUgcHJveHkgaXMgbm90IG5lZWRlZCBmb3IgY29tbXVuaWNhdGlvbgot
ICAgIC8vIGluIGVpdGhlciBzaWRlIGFueSBtb3JlLiBIb3dldmVyLCB0aGUgV29ya2VyIG9iamVj
dCBtYXkgc3RpbGwgZXhpc3QsIGFuZCBpdCBhc3N1bWVzIHRoYXQgdGhlIHByb3h5IGV4aXN0cywg
dG9vLgotICAgIG1fYXNrZWRUb1Rlcm1pbmF0ZSA9IHRydWU7Ci0gICAgbV93b3JrZXJUaHJlYWQg
PSBudWxscHRyOwotCi0gICAgLy8gVGhpcyBiYWxhbmNlcyB0aGUgb3JpZ2luYWwgcmVmIGluIGNv
bnN0cnVjdGlvbi4KLSAgICBpZiAobV9tYXlCZURlc3Ryb3llZCkKLSAgICAgICAgZGVyZWYoKTsK
KyAgICBmb3IgKGF1dG8qIHByb3h5IDogYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGllcygpKQor
ICAgICAgICBwcm94eS0+bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGlzT25MaW5lKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oCmluZGV4
IDRlOTJlNDU2MTcxYy4uMzM2NDI0MGFiYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94
eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI3LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUgIlNoYXJlZFdvcmtlcklkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJXb3JrZXJEZWJ1Z2dlclByb3h5LmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFs
U2NvcGVQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCiAjaW5jbHVkZSAi
V29ya2VyT2JqZWN0UHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJPcHRpb25zLmgiCkBAIC0zNSw1
MCArMzQsNTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDYWNoZVN0b3JhZ2VQ
cm92aWRlcjsKK2NsYXNzIFBhZ2U7CiBjbGFzcyBTaGFyZWRXb3JrZXI7CiBjbGFzcyBTaGFyZWRX
b3JrZXJUaHJlYWQ7CiAKLWNsYXNzIFNoYXJlZFdvcmtlclRocmVhZFByb3h5IGZpbmFsIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZFdvcmtlclRocmVhZFByb3h5PiwgcHVibGlj
IFdvcmtlckdsb2JhbFNjb3BlUHJveHksIHB1YmxpYyBXb3JrZXJPYmplY3RQcm94eSwgcHVibGlj
IFdvcmtlckxvYWRlclByb3h5LCBwdWJsaWMgV29ya2VyRGVidWdnZXJQcm94eSB7CitzdHJ1Y3Qg
Q2xpZW50T3JpZ2luOworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0OworCitjbGFzcyBTaGFyZWRX
b3JrZXJUaHJlYWRQcm94eSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eT4sIHB1YmxpYyBXb3JrZXJPYmplY3RQcm94eSwgcHVibGljIFdv
cmtlckxvYWRlclByb3h5LCBwdWJsaWMgV29ya2VyRGVidWdnZXJQcm94eSB7CiBwdWJsaWM6Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFNoYXJlZFdvcmtlclRocmVhZFBy
b3h5JiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpIHsgcmV0dXJuICpuZXcgU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsgfQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBSZWY8U2hhcmVkV29ya2VyVGhyZWFkUHJveHk+IGNyZWF0
ZShBcmdzJiYuLi4gYXJncykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsgfQorICAgIFdFQkNPUkVfRVhQ
T1JUIH5TaGFyZWRXb3JrZXJUaHJlYWRQcm94eSgpOwogCiAgICAgU2hhcmVkV29ya2VySWRlbnRp
ZmllciBpZGVudGlmaWVyKCkgY29uc3Q7Ci0gICAgU2hhcmVkV29ya2VyVGhyZWFkKiB0aHJlYWQo
KSB7IHJldHVybiBtX3dvcmtlclRocmVhZC5nZXQoKTsgfQorICAgIFNoYXJlZFdvcmtlclRocmVh
ZCYgdGhyZWFkKCkgeyByZXR1cm4gbV93b3JrZXJUaHJlYWQ7IH0KIAotICAgIHZvaWQgc3RhcnRX
b3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgY29uc3QgU2NyaXB0QnVm
ZmVyJiBzb3VyY2VDb2RlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMmLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgY29u
c3QgQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSYsIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwg
UmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzLCBKU0M6
OlJ1bnRpbWVGbGFncykgZmluYWw7Ci0gICAgdm9pZCB3b3JrZXJPYmplY3REZXN0cm95ZWQoKSBm
aW5hbDsKLSAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwotICAgIHZv
aWQgdGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKSBmaW5hbDsKKyAgICBib29sIGlzVGVybWlu
YXRpbmdPclRlcm1pbmF0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzVGVybWluYXRpbmdPclRlcm1p
bmF0ZWQ7IH0KKyAgICB2b2lkIHNldEFzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKSB7IG1faXNU
ZXJtaW5hdGluZ09yVGVybWluYXRlZCA9IHRydWU7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNp
dCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShTaGFyZWRXb3JrZXImKTsKLQotICAgIHZvaWQgd29y
a2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpOworICAgIFdFQkNPUkVfRVhQT1JUIFNo
YXJlZFdvcmtlclRocmVhZFByb3h5KFVuaXF1ZVJlZjxQYWdlPiYmLCBTaGFyZWRXb3JrZXJJZGVu
dGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4mLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgV29ya2Vy
RmV0Y2hSZXN1bHQmJiwgV29ya2VyT3B0aW9ucyYmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwg
Q2FjaGVTdG9yYWdlUHJvdmlkZXImKTsKIAotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckds
b2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpIGZpbmFsOwotICAgIHZvaWQgcG9z
dFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYpPiYmKSBmaW5hbDsKLSAgICB2b2lkIG5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29s
IGlzT25saW5lKSBmaW5hbDsKLSAgICB2b2lkIHN1c3BlbmRGb3JCYWNrRm9yd2FyZENhY2hlKCkg
ZmluYWw7Ci0gICAgdm9pZCByZXN1bWVGb3JCYWNrRm9yd2FyZENhY2hlKCkgZmluYWw7CisgICAg
Ly8gV29ya2VyT2JqZWN0UHJveHkuCiAgICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmpl
Y3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkgZmluYWw7Ci0gICAgdm9pZCB3b3JrZXJH
bG9iYWxTY29wZURlc3Ryb3llZCgpIGZpbmFsOwotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtl
ck9iamVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKSBmaW5hbDsKLSAgICB2b2lkIGNvbmZp
cm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkgZmluYWw7
Ci0gICAgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkp
IGZpbmFsOworICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cyYmKSBmaW5hbCB7IH0KKyAgICB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJv
eWVkKCkgZmluYWwgeyB9CisgICAgdm9pZCBjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3Qo
Ym9vbCkgZmluYWwgeyB9CisgICAgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCkgZmlu
YWwgeyB9CisKKyAgICAvLyBXb3JrZXJMb2FkZXJQcm94eS4KICAgICBSZWZQdHI8Q2FjaGVTdG9y
YWdlQ29ubmVjdGlvbj4gY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpIGZpbmFsOwogICAg
IFJlZlB0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uPiBjcmVhdGVSVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCkgZmluYWw7CiAgICAgdm9pZCBwb3N0
VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJikgZmluYWw7CiAgICAg
Ym9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiwgY29uc3QgU3RyaW5nJiBtb2RlKSBmaW5hbDsKKworICAg
IC8vIFdvcmtlckRlYnVnZ2VyUHJveHkuCiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvRGVidWdnZXIo
Y29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxl
ZEJ5V2ViSW5zcGVjdG9yKGJvb2wpIGZpbmFsOwogCi0gICAgV2Vha1B0cjxTaGFyZWRXb3JrZXI+
IG1fc2hhcmVkV29ya2VyOwotICAgIFJlZlB0cjxTaGFyZWRXb3JrZXJUaHJlYWQ+IG1fd29ya2Vy
VGhyZWFkOwotICAgIGNvbnN0IFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQ7Ci0gICAgY29uc3QgU3RyaW5nIG1faWRlbnRpZmllckZvckluc3Bl
Y3RvcjsKLSAgICBib29sIG1fYXNrZWRUb1Rlcm1pbmF0ZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBt
X2hhc1BlbmRpbmdBY3Rpdml0eSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX21heUJlRGVzdHJveWVk
IHsgZmFsc2UgfTsKKyAgICBzdGF0aWMgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKGJvb2wgaXNP
bkxpbmUpOworICAgIHZvaWQgbm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUp
OworCisgICAgVW5pcXVlUmVmPFBhZ2U+IG1fcGFnZTsKKyAgICBSZWY8RG9jdW1lbnQ+IG1fZG9j
dW1lbnQ7CisgICAgUmVmPFNoYXJlZFdvcmtlclRocmVhZD4gbV93b3JrZXJUaHJlYWQ7CisgICAg
Q2FjaGVTdG9yYWdlUHJvdmlkZXImIG1fY2FjaGVTdG9yYWdlUHJvdmlkZXI7CisgICAgUmVmUHRy
PENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKKyAgICBi
b29sIG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCA3NTZkYTg4YjQ1ZjcuLjI5ZjRj
NzgxODE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0yOCw2ICsyOCw3IEBAIHNldChXZWJLaXRf
SU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL05v
dGlmaWNhdGlvbnMiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlciIKKyAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIi
CiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZSIKICAgICAiJHtX
RUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9jYWNoZSIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlIgpAQCAtMjAyLDYgKzIwMyw5IEBAIHNldChXZWJLaXRfTUVTU0FH
RVNfSU5fRklMRVMKICAgICBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbgogICAgIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uCiAKKyAgICBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbgorICAgIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdv
cmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCisKICAgICBOZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0CiAKICAgICBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uCkBAIC0zMDUsNiArMzA5LDgg
QEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogCiAgICAgV2ViUHJvY2Vzcy9TcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcgogCisgICAgV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbgorICAg
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uCiAgICAg
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbgogICAgIFdlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggNGM2NjIyMGNmMTIyLi43MjI5
YzFiOTg3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3QKQEAgLTkxLDYgKzkxLDggQEAgJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLm1lc3NhZ2VzLmkKICQoUFJPSkVD
VF9ESVIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFz
ay5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikv
TmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMu
aW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0Lk5l
dHdvcmtQcm9jZXNzLnNiLmluCkBAIC0yMTcsNiArMjE5LDggQEAgJChQUk9KRUNUX0RJUikvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL1NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5h
Z2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
bGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5p
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxl
bGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5k
ZXggZTNiNTU4NDBhZTFlLi5hODYzMjgxNDdiNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtNjA3LDYgKzYwNywxOCBAQCAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXU2VydmVyQ29ubmVjdGlv
bk1lc3NhZ2VzUmVwbGllcwogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdC9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXNSZXBs
aWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIu
Y3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNz
YWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dC9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXNSZXBs
aWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0L1dlYlNvY2tldENoYW5uZWxNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNvY2tldENoYW5uZWxNZXNz
YWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNv
Y2tldENoYW5uZWxNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmlu
ZGV4IDdhZDQ5ZTM3MzVmNC4uMzUxZmZhZTBhNTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5t
YWtlCkBAIC0xMzMsNiArMTMzLDggQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrIFwKIAlOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2sgXAogCU5ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIFwKKwlO
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlv
biBcCisJTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24gXAogCU5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0g
XAogCU5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzIFwKIAlOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIgXApAQCAtMjI1LDYgKzIyNyw4IEBAIE1FU1NBR0VfUkVDRUlWRVJT
ID0gXAogCVdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25u
ZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGlt
ZU1lZGlhU291cmNlTWFuYWdlciBcCisJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBcCisJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29u
bmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9XZWJQcm9jZXNzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggNjg3YzhkYjY5MTJjLi5jN2IxN2ZkNzA3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCkBAIC02Niw2ICs2NiwxMSBAQAogI2luY2x1ZGUgIldlYlNXU2VydmVyQ29u
bmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIKKyNpbmNsdWRlICJXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBDb29raWVBY2NlcHRQb2xpY3kuaD4KQEAgLTEzMiw2ICsx
MzcsNyBAQCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmIG5ldAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKICAgICBlc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKTsKICNlbmRpZgorICAgIGVzdGFi
bGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oKTsKIH0KIAogTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6On5OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCkBAIC0xNjYs
NiArMTcyLDcgQEAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcygpCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHVucmVn
aXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgorICAgIHVucmVnaXN0ZXJTaGFyZWRXb3JrZXJD
b25uZWN0aW9uKCk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhh
c1VwbG9hZFN0YXRlQ2hhbmdlZChib29sIGhhc1VwbG9hZCkKQEAgLTI3NSw2ICsyODIsMTcgQEAg
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW8KICAgICB9CiAjZW5kaWYKIAorICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGlmIChtX3NoYXJl
ZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAgICAgICBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24t
PmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdl
czo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpKSB7CisgICAgICAgIGlmIChtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9u
KQorICAgICAgICAgICAgbV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbi0+ZGlkUmVjZWl2
ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
ICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
UmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkpCiAgICAgICAgIHJldHVybiBwYXltZW50Q29vcmRpbmF0b3Io
KS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKQEAgLTM5OCw5ICs0MTYs
OCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJB
TShjb25uZWN0aW9uKTsKICNlbmRpZgorICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rp
b24gPSBudWxscHRyOwogCiAgICAgLy8gUHJvdGVjdCBvdXJzZWxmIGFzIHdlIG1pZ2h0IGJlIG90
aGVyd2lzZSBiZSBkZWxldGVkIGR1cmluZyB0aGlzIGZ1bmN0aW9uLgogICAgIFJlZjxOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gcHJvdGVjdG9yKCp0aGlzKTsKQEAgLTQ0MSw2ICs0NTgs
NyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHVu
cmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgorICAgIHVucmVnaXN0ZXJTaGFyZWRXb3Jr
ZXJDb25uZWN0aW9uKCk7CiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKICAgICBt
X3BheW1lbnRDb29yZGluYXRvciA9IG51bGxwdHI7CkBAIC0xMTg2LDYgKzEyMDQsNjEgQEAgc2l6
ZV90IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpmaW5kTmV0d29ya0FjdGl2aXR5VHJh
Y2tlcihXZWJDb3JlOjpSZXNvdXIKICAgICAgICAgcmV0dXJuIGl0ZW0ucmVzb3VyY2VJRCA9PSBy
ZXNvdXJjZUlEOwogICAgIH0pOwogfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWlu
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
Q09OTkVDVElPTl9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvbjoiKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oKTsKKyAgICBpZiAoYXV0byogc3dTZXJ2ZXIgPSBzZXNzaW9uID8gc2Vzc2lvbi0+c2hhcmVk
V29ya2VyU2VydmVyKCkgOiBudWxscHRyKQorICAgICAgICBtX3NoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uPigqdGhpcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksICpzd1NlcnZlcik7Cisg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpCit7CisgICAg
aWYgKG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAg
ICByZXR1cm47CisKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImVz
dGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Iik7CisKKyAgICBhdXRvJiBzZXJ2
ZXIgPSBzZXNzaW9uLT5lbnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKTsKKyAgICBhdXRvIGNvbm5l
Y3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24+KG1fbmV0
d29ya1Byb2Nlc3MsIHNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBtX3dlYlByb2Nlc3NJZGVu
dGlmaWVyKTsKKworICAgIG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbiA9ICpjb25uZWN0aW9uOwor
ICAgIHNlcnZlci5hZGRDb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpOworfQorCit2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbG9zZVNoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwg
ImNsb3NlU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb246Iik7CisgICAgbV9zaGFyZWRXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uKCkKK3sKKyAg
ICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgInVucmVnaXN0ZXJTaGFyZWRX
b3JrZXJDb25uZWN0aW9uOiIpOworICAgIGlmIChtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisg
ICAgICAgIG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbi0+c2VydmVyKCkucmVtb3ZlQ29ubmVjdGlv
bihtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24tPndlYlByb2Nlc3NJZGVudGlmaWVyKCkpOworfQor
Cit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpCit7CisgICAgQ09OTkVDVElPTl9S
RUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJzaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uSXNOb0xvbmdlck5lZWRlZDoiKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpT
aGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkIHsgd2ViUHJvY2Vzc0lk
ZW50aWZpZXIoKSB9LCAwKTsKKworICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24g
PSBudWxscHRyOworfQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKiBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2hhcmVkV29ya2VyQ29ubmVjdGlvbigpCit7CisgICAg
aWYgKCFtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAgIGVzdGFibGlzaFNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb24oKTsKKyAgICByZXR1cm4gbV9zaGFyZWRXb3JrZXJDb25uZWN0
aW9uLmdldCgpOworfQogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKQpAQCAt
MTIyMyw5ICsxMjk2LDkgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xv
c2VTV0NvbnRleHRDb25uZWN0aW9uKCkKICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBudWxs
cHRyOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6c2VydmljZVdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdl
ck5lZWRlZCgpCiB7Ci0gICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAi
c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkOiBXZWJQcm9jZXNzIG5vIGxv
bmdlciB1c2VmdWwgZm9yIHJ1bm5pbmcgc2VydmljZSB3b3JrZXJzIik7CisgICAgQ09OTkVDVElP
Tl9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAic2VydmljZVdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZDogV2ViUHJvY2VzcyBubyBsb25nZXIgdXNlZnVsIGZv
ciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycyIpOwogICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6
OlNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkIHsgd2ViUHJvY2Vz
c0lkZW50aWZpZXIoKSB9LCAwKTsKIAogICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxw
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggM2ExZTE0MDQzMzhmLi5kMGFhNGVmNzQ1
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTkyLDYgKzkyLDggQEAgY2xhc3MgTmV0
d29ya1NvY2tldFN0cmVhbTsKIGNsYXNzIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s7CiBjbGFzcyBX
ZWJTV1NlcnZlckNvbm5lY3Rpb247CiBjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b247CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOworY2xhc3MgV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKIAogbmFtZXNwYWNlIE5ldHdvcmtD
YWNoZSB7CiBzdHJ1Y3QgRGF0YUtleTsKQEAgLTE4MSwxMCArMTgzLDEzIEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KGNvbnN0IFdlYkNvcmU6Ok1l
c3NhZ2VQb3J0SWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5KT4mJik7CiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCi0gICAgdm9pZCBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25n
ZXJOZWVkZWQoKTsKKyAgICB2b2lkIHNlcnZpY2VXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uTm9Mb25nZXJOZWVkZWQoKTsKICAgICBXZWJTV1NlcnZlckNvbm5lY3Rpb24qIHN3Q29ubmVj
dGlvbigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBjcmVh
dGVGZXRjaFRhc2soTmV0d29ya1Jlc291cmNlTG9hZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0Jik7CiAjZW5kaWYKKyAgICB2b2lkIHNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7CisKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uKiBzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiAKICAgICBOZXR3b3JrU2No
ZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9zY2hlbWVSZWdpc3RyeS5n
ZXQoKTsgfQogCkBAIC0yNTMsNiArMjU4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZVNv
Y2tldENoYW5uZWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5n
JiBwcm90b2NvbCwgV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAgICAgdm9pZCB1cGRhdGVR
dW90YUJhc2VkT25TcGFjZVVzYWdlRm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4mKTsKIAorICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigp
OworICAgIHZvaWQgdW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKKwogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlv
bigpOwogICAgIHZvaWQgZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0yNjAsNiArMjY4
LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRp
ZgogCisgICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgY2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0
Q29ubmVjdGlvbigpOworCiAgICAgdm9pZCBjcmVhdGVSVENQcm92aWRlcihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIHZvaWQgY29ubmVjdFRv
UlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlm
aWVyIHNvdXJjZSwgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGhhbmRsZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxib29sPik+JiYpOwpAQCAtNDA0LDYg
KzQxNSw4IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxXZWJTV1NlcnZlckNvbm5lY3Rpb24+IG1f
c3dDb25uZWN0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24+IG1fc3dDb250ZXh0Q29ubmVjdGlvbjsKICNlbmRpZgorICAgIFdlYWtQdHI8V2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4gbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uPiBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uOwogCiAjaWYgRU5BQkxFKFdFQl9S
VEMpCiAgICAgYm9vbCBtX2lzUmVnaXN0ZXJlZFRvUlRDRGF0YUNoYW5uZWxQcm94eSB7IGZhbHNl
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAyNDI4
MzUwNTBiMjQuLmI5N2NhMzQ3OWI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCkBAIC04OCw2ICs4OCw5IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBDbG9zZVNXQ29udGV4dENvbm5l
Y3Rpb24oKQogI2VuZGlmCiAKKyAgICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikgLT4gKCkgQXN5bmMKKyAgICBDbG9zZVNoYXJl
ZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKCkKKwogICAgIENyZWF0ZVJUQ1Byb3ZpZGVyKCkgLT4g
KCkgQXN5bmMKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICBDb25uZWN0VG9SVENEYXRhQ2hhbm5l
bFJlbW90ZVNvdXJjZShzdHJ1Y3QgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHNv
dXJjZSwgc3RydWN0IFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBoYW5kbGVyKSAt
PiAoc3RkOjpvcHRpb25hbDxib29sPiByZXN1bHQpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IGUyYjI0ZDgzMjJiNi4uZDc2
MTYyODUwY2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2ViU1dPcmln
aW5TdG9yZS5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlci5oIgogI2luY2x1ZGUg
IldlYlNvY2tldFRhc2suaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZUphci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CkBAIC02NTMsNiArNjU0LDEzIEBAIGJvb2wg
TmV0d29ya1Nlc3Npb246Omhhc1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBhdGgoKSBjb25zdAogCiAj
ZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIm
IE5ldHdvcmtTZXNzaW9uOjplbnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKQoreworICAgIGlmICgh
bV9zaGFyZWRXb3JrZXJTZXJ2ZXIpCisgICAgICAgIG1fc2hhcmVkV29ya2VyU2VydmVyID0gbWFr
ZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fc2hh
cmVkV29ya2VyU2VydmVyOworfQorCiBXZWJJREJTZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1
cmVXZWJJREJTZXJ2ZXIoKQogewogICAgIGlmICghbV93ZWJJREJTZXJ2ZXIpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAppbmRleCAxOTMwN2NmNDBi
ZTMuLjNmOWQ2Yzk1NTBhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uaApAQCAtNzksNiArNzksNyBAQCBjbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOwogY2xhc3MgV2ViSURCU2VydmVyOwogY2xhc3MgV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJz
OwogY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOworY2xhc3MgV2ViU2hhcmVk
V29ya2VyU2VydmVyOwogY2xhc3MgV2ViU29ja2V0VGFzazsKIGNsYXNzIFdlYlNXT3JpZ2luU3Rv
cmU7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CkBAIC0yMTAsNiArMjExLDkgQEAgcHVi
bGljOgogICAgIHZvaWQgYWRkU2VydmljZVdvcmtlclNlc3Npb24oYm9vbCBwcm9jZXNzVGVybWlu
YXRpb25EZWxheUVuYWJsZWQsIFN0cmluZyYmIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnksIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogI2VuZGlmCiAKKyAgICBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXIqIHNoYXJlZFdvcmtlclNlcnZlcigpIHsgcmV0dXJuIG1fc2hh
cmVkV29ya2VyU2VydmVyLmdldCgpOyB9CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBlbnN1
cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKTsKKwogICAgIFdlYklEQlNlcnZlciogd2ViSURCU2VydmVy
KCkgeyByZXR1cm4gbV93ZWJJREJTZXJ2ZXIuZ2V0KCk7IH0KICAgICBXZWJJREJTZXJ2ZXImIGVu
c3VyZVdlYklEQlNlcnZlcigpOwogICAgIHZvaWQgY2xvc2VJREJTZXJ2ZXIoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKQEAgLTMxOCw2ICszMjIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3Rk
OjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySW5mbz4gbV9zZXJ2aWNlV29ya2VySW5mbzsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1dTZXJ2ZXI+IG1fc3dTZXJ2ZXI7CiAjZW5kaWYKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyPiBtX3NoYXJlZFdvcmtlclNl
cnZlcjsKIAogICAgIFN0cmluZyBtX2lkYkRhdGFiYXNlUGF0aDsKICAgICBSZWZQdHI8V2ViSURC
U2VydmVyPiBtX3dlYklEQlNlcnZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggNWE4NzAzZWZkNmQ1Li4yN2Y2ZThkYTVmNDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwCkBAIC0xNjIsNyArMTYyLDcgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246Om1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWUKIAogdm9pZCBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVk
KCkKIHsKLSAgICBtX2Nvbm5lY3Rpb24uc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2Vy
TmVlZGVkKCk7CisgICAgbV9jb25uZWN0aW9uLnNlcnZpY2VXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKTsKIH0KIAogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OnNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxlYWJsZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJl
ZFdvcmtlclNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdv
cmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uNTlhY2EwMDE1YmUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNw
cApAQCAtMCwwICsxLDMwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJv
eHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCisjaW5jbHVkZSAiV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dl
YlNoYXJlZFdvcmtlclNlcnZlcjo6V2ViU2hhcmVkV29ya2VyU2VydmVyKE5ldHdvcmtTZXNzaW9u
JiBzZXNzaW9uKQorICAgIDogbV9zZXNzaW9uKHNlc3Npb24pCit7Cit9CisKK1dlYlNoYXJlZFdv
cmtlclNlcnZlcjo6fldlYlNoYXJlZFdvcmtlclNlcnZlcigpID0gZGVmYXVsdDsKKworUEFMOjpT
ZXNzaW9uSUQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpzZXNzaW9uSUQoKQoreworICAgIHJldHVy
biBtX3Nlc3Npb24uc2Vzc2lvbklEKCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVy
OjpyZXF1ZXN0U2hhcmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgV2Vi
Q29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLCBVUkwmJiB1cmwsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0
LCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucykKK3sKKyAgICBXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJLZXkga2V5IHsgb3JpZ2luLCB1cmwsIHdvcmtlck9wdGlvbnMubmFtZSB9
OworICAgIGF1dG8mIHNoYXJlZFdvcmtlciA9IG1fc2hhcmVkV29ya2Vycy5lbnN1cmUoa2V5LCBb
Jl0geworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTaGFyZWRXb3JrZXI+KG9yaWdpbiwgdXJs
LCB3b3JrZXJPcHRpb25zKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgUkVMRUFTRV9M
T0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29y
a2VyOiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHJpdmF0ZX1zLCBzaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0
cmluZygpLnV0ZjgoKS5kYXRhKCksIHNoYXJlZFdvcmtlci0+aWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKKworICAgIGlmIChzaGFyZWRXb3JrZXItPndvcmtlck9wdGlvbnMudHlwZSAhPSB3b3JrZXJP
cHRpb25zLnR5cGUgfHwgc2hhcmVkV29ya2VyLT53b3JrZXJPcHRpb25zLmNyZWRlbnRpYWxzICE9
IHdvcmtlck9wdGlvbnMuY3JlZGVudGlhbHMpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
U2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2Vy
OiBBIHdvcmtlciBhbHJlYWR5IGV4aXN0cyB3aXRoIHRoaXMgbmFtZSBidXQgaGFzIGRpZmZlcmVu
dCB0eXBlIC8gY3JlZGVudGlhbHMiKTsKKyAgICAgICAgaWYgKGF1dG8qIHNlcnZlckNvbm5lY3Rp
b24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nl
c3NJZGVudGlmaWVyKCkpKQorICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlvbi0+bm90aWZ5V29y
a2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCB7
IFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBzaGFyZWRXb3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMu
YWRkKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHBvcnQpOworCisgICAgaWYgKHNoYXJl
ZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5zaXplKCkgPiAxKSB7CisgICAgICAgIFJFTEVB
U0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJl
ZFdvcmtlcjogQSBzaGFyZWQgd29ya2VyIHdpdGggdGhpcyBVUkwgYWxyZWFkeSBleGlzdHMgKG5v
dyBzaGFyZWQgYnkgJXUgc2hhcmVkIHdvcmtlciBvYmplY3RzKSIsIHNoYXJlZFdvcmtlci0+c2hh
cmVkV29ya2VyT2JqZWN0cy5zaXplKCkpOworICAgICAgICBpZiAoc2hhcmVkV29ya2VyLT5kaWRG
aW5pc2hGZXRjaGluZygpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogc2VydmVyQ29ubmVjdGlv
biA9IG1fY29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vz
c0lkZW50aWZpZXIoKSkpCisgICAgICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlvbi0+bm90aWZ5
V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LCB7IH0pOworICAgICAgICB9CisgICAgICAgIGlmIChzaGFyZWRXb3JrZXItPmlzUnVubmluZykg
eworICAgICAgICAgICAgYXV0byogY29udGV4dENvbm5lY3Rpb24gPSBtX2NvbnRleHRDb25uZWN0
aW9ucy5nZXQoc2hhcmVkV29ya2VyLT5yZWdpc3RyYWJsZURvbWFpbigpKTsKKyAgICAgICAgICAg
IEFTU0VSVChjb250ZXh0Q29ubmVjdGlvbik7CisgICAgICAgICAgICBpZiAoY29udGV4dENvbm5l
Y3Rpb24pCisgICAgICAgICAgICAgICAgcG9zdENvbm5lY3RFdmVudCgqY29udGV4dENvbm5lY3Rp
b24sIHNoYXJlZFdvcmtlci0+aWRlbnRpZmllciwgcG9ydCwgb3JpZ2luLmNsaWVudE9yaWdpbi50
b1N0cmluZygpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VS
VCghc2hhcmVkV29ya2VyLT5pc1J1bm5pbmcpOworCisgICAgYXV0byogc2VydmVyQ29ubmVjdGlv
biA9IG1fY29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vz
c0lkZW50aWZpZXIoKSk7CisgICAgQVNTRVJUKHNlcnZlckNvbm5lY3Rpb24pOworCisgICAgUkVM
RUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZXF1ZXN0U2hh
cmVkV29ya2VyOiBGZXRjaGluZyBzaGFyZWQgd29ya2VyIHNjcmlwdCBpbiBjbGllbnQiKTsKKyAg
ICBzZXJ2ZXJDb25uZWN0aW9uLT5mZXRjaFNjcmlwdEluQ2xpZW50KHVybCwgc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciwgd29ya2VyT3B0aW9ucywgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH0sIHNoYXJlZFdvcmtlciA9IFdlYWtQdHIgeyAqc2hhcmVkV29ya2VyIH1dKFdlYkNvcmU6
OldvcmtlckZldGNoUmVzdWx0JiYgZmV0Y2hSZXN1bHQpIHsKKyAgICAgICAgaWYgKHdlYWtUaGlz
ICYmIHNoYXJlZFdvcmtlcikKKyAgICAgICAgICAgIHdlYWtUaGlzLT5kaWRGaW5pc2hGZXRjaGlu
Z1NoYXJlZFdvcmtlclNjcmlwdCgqc2hhcmVkV29ya2VyLCBXVEZNb3ZlKGZldGNoUmVzdWx0KSk7
CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpsYXVuY2hTaGFyZWRX
b3JrZXIoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENv
bm5lY3Rpb24sIFNoYXJlZFdvcmtlciYgc2hhcmVkV29ya2VyKQoreworICAgIFJFTEVBU0VfTE9H
KFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6bGF1bmNoU2hhcmVkV29ya2Vy
OiBjb250ZXh0Q29ubmVjdGlvbj0lcCwgc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQs
ICZjb250ZXh0Q29ubmVjdGlvbiwgc2hhcmVkV29ya2VyLmlkZW50aWZpZXIudG9VSW50NjQoKSk7
CisgICAgY29udGV4dENvbm5lY3Rpb24ubGF1bmNoU2hhcmVkV29ya2VyKHNoYXJlZFdvcmtlci5v
cmlnaW4sIHNoYXJlZFdvcmtlci5pZGVudGlmaWVyLCBzaGFyZWRXb3JrZXIudXJsLCBzaGFyZWRX
b3JrZXIud29ya2VyT3B0aW9ucywgc2hhcmVkV29ya2VyLmZldGNoUmVzdWx0KTsKKyAgICBzaGFy
ZWRXb3JrZXIuaXNSdW5uaW5nID0gdHJ1ZTsKKyAgICBhdXRvIHNvdXJjZU9yaWdpbiA9IHNoYXJl
ZFdvcmtlci5vcmlnaW4uY2xpZW50T3JpZ2luLnRvU3RyaW5nKCk7CisgICAgZm9yIChhdXRvJiBw
b3J0IDogc2hhcmVkV29ya2VyLnNoYXJlZFdvcmtlck9iamVjdHMudmFsdWVzKCkpCisgICAgICAg
IHBvc3RDb25uZWN0RXZlbnQoY29udGV4dENvbm5lY3Rpb24sIHNoYXJlZFdvcmtlci5pZGVudGlm
aWVyLCBwb3J0LCBzb3VyY2VPcmlnaW4pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZl
cjo6cG9zdENvbm5lY3RFdmVudChXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uJiBjb250ZXh0Q29ubmVjdGlvbiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBz
aGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQ
b3J0JiBzb3VyY2VQb3J0LCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3sKKyAgICBSRUxF
QVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnBvc3RDb25uZWN0
RXZlbnQ6IGNvbnRleHRDb25uZWN0aW9uPSVwLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBS
SXU2NCwgJmNvbnRleHRDb25uZWN0aW9uLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0
KCkpOworICAgIGNvbnRleHRDb25uZWN0aW9uLnBvc3RDb25uZWN0RXZlbnQoc2hhcmVkV29ya2Vy
SWRlbnRpZmllciwgc291cmNlUG9ydCwgc291cmNlT3JpZ2luKTsKK30KKwordm9pZCBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29ya2VyU2NyaXB0KFNoYXJl
ZFdvcmtlciYgd29ya2VyLCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmIGZldGNoUmVzdWx0
KQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZl
cjo6ZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRXb3JrZXJTY3JpcHQgc2hhcmVkV29ya2VySWRlbnRp
Zmllcj0lIiBQUkl1NjQgIiwgd29ya2VyPSVwLCBzdWNjZXNzPSVkIiwgd29ya2VyLmlkZW50aWZp
ZXIudG9VSW50NjQoKSwgJndvcmtlciwgZmV0Y2hSZXN1bHQuZXJyb3IuaXNOdWxsKCkpOworCisg
ICAgZm9yIChhdXRvIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgOiB3b3JrZXIuc2hhcmVk
V29ya2VyT2JqZWN0cy5rZXlzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHNlcnZlckNvbm5lY3Rp
b24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nl
c3NJZGVudGlmaWVyKCkpKQorICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlvbi0+bm90aWZ5V29y
a2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBm
ZXRjaFJlc3VsdC5lcnJvcik7CisgICAgfQorCisgICAgaWYgKCFmZXRjaFJlc3VsdC5lcnJvci5p
c051bGwoKSkgeworICAgICAgICBtX3NoYXJlZFdvcmtlcnMucmVtb3ZlKHdvcmtlci5rZXkoKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3b3JrZXIuZmV0Y2hSZXN1bHQgPSBXVEZN
b3ZlKGZldGNoUmVzdWx0KTsKKworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSB3b3JrZXIu
cmVnaXN0cmFibGVEb21haW4oKTsKKyAgICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IGNvbnRl
eHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pOworICAg
IGlmICghY29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAgICAgY3JlYXRlQ29udGV4dENvbm5lY3Rp
b24ocmVnaXN0cmFibGVEb21haW4pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbGF1
bmNoU2hhcmVkV29ya2VyKCpjb250ZXh0Q29ubmVjdGlvbiwgd29ya2VyKTsKK30KKworYm9vbCBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6Om5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJs
ZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21h
aW4pIGNvbnN0Cit7CisgICAgZm9yIChhdXRvJiBzaGFyZWRXb3JrZXIgOiBtX3NoYXJlZFdvcmtl
cnMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHJlZ2lzdHJhYmxlRG9tYWluLm1hdGNoZXMoc2hh
cmVkV29ya2VyLT51cmwpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNyZWF0ZUNvbnRl
eHRDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJs
ZURvbWFpbikKK3sKKyAgICBBU1NFUlQoIW1fY29udGV4dENvbm5lY3Rpb25zLmNvbnRhaW5zKHJl
Z2lzdHJhYmxlRG9tYWluKSk7CisgICAgaWYgKG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9t
YWlucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgIHJldHVybjsKKworICAg
IFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y3JlYXRl
Q29udGV4dENvbm5lY3Rpb24gd2lsbCBjcmVhdGUgYSBjb25uZWN0aW9uIik7CisKKyAgICBtX3Bl
bmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnMuYWRkKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAg
ICBtX3Nlc3Npb24ubmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlz
aFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHJlZ2lzdHJh
YmxlRG9tYWluLCBtX3Nlc3Npb24uc2Vzc2lvbklEKCkgfSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vh
a1B0ciB7ICp0aGlzIH0sIHJlZ2lzdHJhYmxlRG9tYWluXSB7CisgICAgICAgIGlmICghd2Vha1Ro
aXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgUkVMRUFTRV9MT0coU2hhcmVkV29y
a2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbiBzaG91
bGQgbm93IGhhdmUgY3JlYXRlZCBhIGNvbm5lY3Rpb24iKTsKKworICAgICAgICBBU1NFUlQobV9w
ZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWlu
KSk7CisgICAgICAgIG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWlucy5yZW1vdmUocmVn
aXN0cmFibGVEb21haW4pOworCisgICAgICAgIGlmIChtX2NvbnRleHRDb25uZWN0aW9ucy5jb250
YWlucyhyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
aWYgKG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJs
ZURvbWFpbikpCisgICAgICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJs
ZURvbWFpbik7CisgICAgfSwgMCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjph
ZGRDb250ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uJiBjb250ZXh0Q29ubmVjdGlvbikKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIs
ICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmFkZENvbnRleHRDb25uZWN0aW9uKCVwKSB3ZWJQcm9j
ZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQsICZjb250ZXh0Q29ubmVjdGlvbiwgY29udGV4dENvbm5l
Y3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKworICAgIEFTU0VSVCgh
bV9jb250ZXh0Q29ubmVjdGlvbnMuY29udGFpbnMoY29udGV4dENvbm5lY3Rpb24ucmVnaXN0cmFi
bGVEb21haW4oKSkpOworCisgICAgbV9jb250ZXh0Q29ubmVjdGlvbnMuYWRkKGNvbnRleHRDb25u
ZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCksICZjb250ZXh0Q29ubmVjdGlvbik7CisKKyAgICBj
b250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoY29udGV4dENvbm5lY3Rpb24pOworfQorCit2b2lkIFdl
YlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24pCit7CisgICAg
UkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1vdmVD
b250ZXh0Q29ubmVjdGlvbiglcCkgd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCAmY29u
dGV4dENvbm5lY3Rpb24sIGNvbnRleHRDb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCku
dG9VSW50NjQoKSk7CisKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gY29udGV4dENvbm5l
Y3Rpb24ucmVnaXN0cmFibGVEb21haW4oKTsKKworICAgIEFTU0VSVChtX2NvbnRleHRDb25uZWN0
aW9ucy5nZXQocmVnaXN0cmFibGVEb21haW4pID09ICZjb250ZXh0Q29ubmVjdGlvbik7CisKKyAg
ICBtX2NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUocmVnaXN0cmFibGVEb21haW4pOworCisgICAg
aWYgKG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJs
ZURvbWFpbikpCisgICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9t
YWluKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9u
Q3JlYXRlZChXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0
Q29ubmVjdGlvbikKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZCglcCkgd2ViUHJvY2Vzc0lkZW50
aWZpZXI9JSIgUFJJdTY0LCAmY29udGV4dENvbm5lY3Rpb24sIGNvbnRleHRDb25uZWN0aW9uLndl
YlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgYXV0byYgcmVnaXN0cmFibGVE
b21haW4gPSBjb250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpOworICAgIGZvciAo
YXV0byYgd29ya2VyIDogbV9zaGFyZWRXb3JrZXJzLnZhbHVlcygpKSB7CisgICAgICAgIGlmICh3
b3JrZXItPmRpZEZpbmlzaEZldGNoaW5nKCkgJiYgcmVnaXN0cmFibGVEb21haW4ubWF0Y2hlcyh3
b3JrZXItPnVybCkpCisgICAgICAgICAgICBsYXVuY2hTaGFyZWRXb3JrZXIoY29udGV4dENvbm5l
Y3Rpb24sICp3b3JrZXIpOworICAgIH0KK30KKworYXV0byBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6
OnNoYXJlZFdvcmtlckJ5SWRlbnRpZmllcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVy
IHNoYXJlZFdvcmtlcklkZW50aWZpZXIpIC0+IFNoYXJlZFdvcmtlcioKK3sKKyAgICBmb3IgKGF1
dG8mIHdvcmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAod29y
a2VyLT5pZGVudGlmaWVyID09IHNoYXJlZFdvcmtlcklkZW50aWZpZXIpCisgICAgICAgICAgICBy
ZXR1cm4gd29ya2VyLmdldCgpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworYXV0
byBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNoYXJlZFdvcmtlckJ5T2JqZWN0SWRlbnRpZmllcihX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIpIC0+IFNoYXJlZFdvcmtlcioKK3sKKyAgICBmb3IgKGF1dG8mIHdvcmtlciA6IG1f
c2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAod29ya2VyLT5zaGFyZWRXb3Jr
ZXJPYmplY3RzLmNvbnRhaW5zKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpKQorICAgICAg
ICAgICAgcmV0dXJuIHdvcmtlci5nZXQoKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5n
QXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIpCit7CisgICAgYXV0byogd29ya2VyID0gc2hhcmVkV29ya2VyQnlPYmpl
Y3RJZGVudGlmaWVyKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIFJFTEVBU0Vf
TE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hhcmVkV29ya2VyT2Jq
ZWN0SXNHb2luZ0F3YXk6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cywg
d29ya2VyPSVwIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0Zjgo
KS5kYXRhKCksIHdvcmtlcik7CisgICAgaWYgKCF3b3JrZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5yZW1vdmUoc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcik7CisgICAgaWYgKCF3b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzaHV0RG93blNoYXJlZFdvcmtlcih3b3JrZXIt
PmtleSgpKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNodXREb3duU2hhcmVk
V29ya2VyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYga2V5KQoreworICAgIGF1dG8g
d29ya2VyID0gbV9zaGFyZWRXb3JrZXJzLnRha2Uoa2V5KTsKKyAgICBSRUxFQVNFX0xPRyhTaGFy
ZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNodXREb3duU2hhcmVkV29ya2VyOiBz
aGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCAiLCB3b3JrZXI9JXAiLCB3b3JrZXIgPyB3
b3JrZXItPmlkZW50aWZpZXIudG9VSW50NjQoKSA6IDAsIHdvcmtlci5nZXQoKSk7CisgICAgaWYg
KCF3b3JrZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIGNvbnRleHRDb25uZWN0aW9u
ID0gY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbih3b3JrZXItPnJlZ2lzdHJh
YmxlRG9tYWluKCkpOworICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pCisgICAgICAgIHJldHVy
bjsKKworICAgIGNvbnRleHRDb25uZWN0aW9uLT50ZXJtaW5hdGVTaGFyZWRXb3JrZXIod29ya2Vy
LT5pZGVudGlmaWVyKTsKKworICAgIGlmICghbmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lz
dHJhYmxlRG9tYWluKHdvcmtlci0+cmVnaXN0cmFibGVEb21haW4oKSkpCisgICAgICAgIGNvbnRl
eHRDb25uZWN0aW9uLT5jb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOworfQorCit2b2lkIFdl
YlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29ubmVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQoreworICAgIGF1dG8gcHJv
Y2Vzc0lkZW50aWZpZXIgPSBjb25uZWN0aW9uLT53ZWJQcm9jZXNzSWRlbnRpZmllcigpOworICAg
IFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29u
bmVjdGlvbiglcCk6IHByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgY29ubmVjdGlvbi5nZXQo
KSwgcHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgQVNTRVJUKCFtX2Nvbm5lY3Rp
b25zLmNvbnRhaW5zKHByb2Nlc3NJZGVudGlmaWVyKSk7CisgICAgbV9jb25uZWN0aW9ucy5hZGQo
cHJvY2Vzc0lkZW50aWZpZXIsIFdURk1vdmUoY29ubmVjdGlvbikpOworfQorCit2b2lkIFdlYlNo
YXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlvbihXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciBwcm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBtX2Nvbm5l
Y3Rpb25zLnRha2UocHJvY2Vzc0lkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdv
cmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlvbiglcCk6IHByb2Nl
c3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgY29ubmVjdGlvbi5nZXQoKSwgcHJvY2Vzc0lkZW50aWZp
ZXIudG9VSW50NjQoKSk7CisgICAgQVNTRVJUKGNvbm5lY3Rpb24pOworCisgICAgVmVjdG9yPFdl
YkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI+IHNoYXJlZFdvcmtlck9iamVjdHNH
b2luZ0F3YXk7CisgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3NoYXJlZFdvcmtlcnMudmFsdWVz
KCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIDog
d29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzLmtleXMoKSkgeworICAgICAgICAgICAgaWYgKHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBwcm9jZXNz
SWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICBzaGFyZWRXb3JrZXJPYmplY3RzR29pbmdBd2F5
LmFwcGVuZChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBmb3IgKGF1dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA6IHNoYXJlZFdvcmtl
ck9iamVjdHNHb2luZ0F3YXkpCisgICAgICAgIHNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5
KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworfQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXI6OlNoYXJlZFdvcmtlcjo6U2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYgb3JpZ2luLCBjb25zdCBVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYg
d29ya2VyT3B0aW9ucykKKyAgICA6IGlkZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRl
bnRpZmllcjo6Z2VuZXJhdGUoKSkKKyAgICAsIG9yaWdpbihvcmlnaW4pCisgICAgLCB1cmwodXJs
KQorICAgICwgd29ya2VyT3B0aW9ucyh3b3JrZXJPcHRpb25zKQoreworfQorCit2b2lkIFdlYlNo
YXJlZFdvcmtlclNlcnZlcjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNo
YXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBhdXRvKiB3b3JrZXIgPSBzaGFyZWRXb3JrZXJCeUlk
ZW50aWZpZXIoc2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0dfRVJST1Io
U2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpwb3N0RXhjZXB0aW9uVG9Xb3Jr
ZXJPYmplY3Q6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHdvcmtlcj0lcCIs
IHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSwgd29ya2VyKTsKKyAgICBpZiAoIXdv
cmtlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvIHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIgOiB3b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMua2V5cygpKSB7CisgICAg
ICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkKKyAgICAgICAgICAg
IHNlcnZlckNvbm5lY3Rpb24tPnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgc291cmNlVVJMKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVk
V29ya2VyU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtl
ci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLmNlYjYyM2NjNmU1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5oCkBAIC0w
LDAgKzEsMTA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJD
b3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURv
bWFpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcktleS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmZXJyZWRN
ZXNzYWdlUG9ydC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyRmV0Y2hSZXN1bHQuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1dvcmtlck9wdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya1Nlc3Npb247CitjbGFzcyBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyIDogcHVibGljIENh
bk1ha2VXZWFrUHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlcj4geworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYlNoYXJlZFdvcmtlclNlcnZlcihO
ZXR3b3JrU2Vzc2lvbiYpOworICAgIH5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIoKTsKKworICAgIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpOworCisgICAgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2Vy
KFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBXZWJDb3Jl
OjpXb3JrZXJPcHRpb25zJiYpOworICAgIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3
YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisKKyAgICB2b2lkIGFk
ZENvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24mKTsKKyAgICB2b2lkIHJlbW92ZUNvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKKworICAgIHZvaWQgYWRkQ29ubmVjdGlvbihzdGQ6
OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4mJik7CisgICAgdm9p
ZCByZW1vdmVDb25uZWN0aW9uKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKKworICAgIFdl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIGNvbnRleHRDb25uZWN0aW9u
Rm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRv
bWFpbikgeyByZXR1cm4gbV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0KGRvbWFpbik7IH0KKworICAg
IHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCitwcml2YXRlOgorICAg
IHZvaWQgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mKTsKKworICAgIGJvb2wgbmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxl
RG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CisgICAgdm9p
ZCBjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbiYpOworCisgICAgc3RydWN0IFNoYXJlZFdvcmtlciA6IENhbk1ha2VXZWFrUHRy
PFNoYXJlZFdvcmtlcj4geworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7
CisKKyAgICAgICAgU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIGNv
bnN0IFVSTCYsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmKTsKKworICAgICAgICBib29s
IGRpZEZpbmlzaEZldGNoaW5nKCkgY29uc3QgeyByZXR1cm4gISFmZXRjaFJlc3VsdC5zY3JpcHQ7
IH0KKyAgICAgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5IGtleSgpIGNvbnN0IHsgcmV0dXJu
IHsgb3JpZ2luLCB1cmwsIHdvcmtlck9wdGlvbnMubmFtZSB9OyB9CisgICAgICAgIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfTsgfQorCisgICAgICAgIFdlYkNvcmU6OlNo
YXJlZFdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICAgICAgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luIG9yaWdpbjsKKyAgICAgICAgVVJMIHVybDsKKyAgICAgICAgV2ViQ29yZTo6V29ya2Vy
T3B0aW9ucyB3b3JrZXJPcHRpb25zOworICAgICAgICBIYXNoTWFwPFdlYkNvcmU6OlNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQ+IHNo
YXJlZFdvcmtlck9iamVjdHM7CisgICAgICAgIFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0IGZl
dGNoUmVzdWx0OworICAgICAgICBib29sIGlzUnVubmluZyB7IGZhbHNlIH07CisgICAgfTsKKwor
ICAgIFNoYXJlZFdvcmtlciogc2hhcmVkV29ya2VyQnlJZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJl
ZFdvcmtlcklkZW50aWZpZXIpOworICAgIFNoYXJlZFdvcmtlciogc2hhcmVkV29ya2VyQnlPYmpl
Y3RJZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAg
IHZvaWQgZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRXb3JrZXJTY3JpcHQoU2hhcmVkV29ya2VyJiwg
V2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJik7CisgICAgdm9pZCBsYXVuY2hTaGFyZWRXb3Jr
ZXIoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYsIFNoYXJlZFdvcmtl
ciYpOworICAgIHZvaWQgcG9zdENvbm5lY3RFdmVudChXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYsIGNvbnN0IFN0cmluZyYgc291cmNlT3Jp
Z2luKTsKKyAgICB2b2lkIHNodXREb3duU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZFdvcmtlcktleSYpOworCisgICAgTmV0d29ya1Nlc3Npb24mIG1fc2Vzc2lvbjsKKyAgICBIYXNo
TWFwPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbj4+IG1fY29ubmVjdGlvbnM7CisgICAgSGFzaE1hcDxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbio+IG1fY29udGV4dENvbm5lY3Rpb25zOworICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+IG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWluczsKKyAgICBI
YXNoTWFwPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSwgc3RkOjp1bmlxdWVfcHRyPFNoYXJlZFdv
cmtlcj4+IG1fc2hhcmVkV29ya2VyczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmJiMDkxNzM0NTgzOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTA3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNl
cnZlckNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgi
CisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Xb3Jr
ZXJGZXRjaFJlc3VsdC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworI2RlZmluZSBDT05ORUNU
SU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAt
IFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQo
KSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUihm
bXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoU2hhcmVkV29ya2VyLCAiJXAgLSBbd2ViUHJvY2Vz
c0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246
OiIgZm10LCB0aGlzLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCksICMjX19WQV9B
UkdTX18pCisKK1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OldlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXImIHNlcnZlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllcikKKyAgICA6IG1fY29u
dGVudENvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0d29y
a1Byb2Nlc3MpCisgICAgLCBtX3NlcnZlcihzZXJ2ZXIpCisgICAgLCBtX3dlYlByb2Nlc3NJZGVu
dGlmaWVyKHdlYlByb2Nlc3NJZGVudGlmaWVyKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9M
T0coIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Iik7Cit9CisKK1dlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb246On5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCkK
K3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJ+V2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbjoiKTsKK30KKworSVBDOjpDb25uZWN0aW9uKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fY29udGVudENvbm5lY3Rpb24ucHRyKCk7Cit9CisKK1BBTDo6U2Vzc2lvbklEIFdlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OnNlc3Npb25JRCgpCit7CisgICAgcmV0dXJuIHNlcnZl
cigpLnNlc3Npb25JRCgpOworfQorCitOZXR3b3JrU2Vzc2lvbiogV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbjo6c2Vzc2lvbigpCit7CisgICAgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3Mt
Pm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uOjpyZXF1ZXN0U2hhcmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdp
biYmIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLCBVUkwmJiB1cmwsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVz
c2FnZVBvcnQmJiBwb3J0LCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucykK
K3sKKyAgICBBU1NFUlQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRp
ZmllcigpID09IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOyAvLyBGSVhNRTogU2hvdWxkIGJlIGEg
TUVTU0FHRV9DSEVDSygpLgorICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coInJlcXVlc3RTaGFy
ZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBp
ZiAoYXV0byogc2Vzc2lvbiA9IHRoaXMtPnNlc3Npb24oKSkKKyAgICAgICAgc2Vzc2lvbi0+ZW5z
dXJlU2hhcmVkV29ya2VyU2VydmVyKCkucmVxdWVzdFNoYXJlZFdvcmtlcihXVEZNb3ZlKG9yaWdp
biksIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdURk1vdmUodXJsKSwgV1RGTW92ZShw
b3J0KSwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbjo6ZmV0Y2hTY3JpcHRJbkNsaWVudChjb25zdCBVUkwmIHVybCwgV2Vi
Q29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25zLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coImZldGNoU2NyaXB0
SW5DbGllbnQ6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBz
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b246OkZldGNoU2NyaXB0SW5DbGllbnQgeyB1cmwsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIsIHdvcmtlck9wdGlvbnMgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2
b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Om5vdGlmeVdvcmtlck9iamVjdE9m
TG9hZENvbXBsZXRpb24oV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBl
cnJvcikKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJub3RpZnlXb3JrZXJPYmplY3RP
ZkxvYWRDb21wbGV0aW9uOiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMs
IHN1Y2Nlc3M9JWQiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSwgZXJyb3IuaXNOdWxsKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb246Ok5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRp
b24geyBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBlcnJvciB9KTsKK30KKwordm9pZCBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmpl
Y3QoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIENPTk5F
Q1RJT05fUkVMRUFTRV9MT0dfRVJST1IoInBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdDogc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OlBvc3RFeGNlcHRpb25Ub1dvcmtlck9i
amVjdCB7IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGVycm9yTWVzc2FnZSwgbGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwgfSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbjo6c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29y
ZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyKQoreworICAgIEFTU0VSVChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJ
ZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7IC8vIEZJWE1FOiBTaG91bGQg
YmUgYSBNRVNTQUdFX0NIRUNLKCkuCisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygic2hhcmVk
V29ya2VyT2JqZWN0SXNHb2luZ0F3YXk6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtw
dWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHRoaXMtPnNlc3Npb24oKSkKKyAgICAg
ICAgc2Vzc2lvbi0+ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCkuc2hhcmVkV29ya2VyT2JqZWN0
SXNHb2luZ0F3YXkoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7Cit9CisKKyN1bmRlZiBD
T05ORUNUSU9OX1JFTEVBU0VfTE9HCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJP
UgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24u
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLmQzZGU0ZTFiNDliZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24u
aApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3Qg
V29ya2VyRmV0Y2hSZXN1bHQ7CitzdHJ1Y3QgV29ya2VyT3B0aW9uczsKK30KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtQcm9jZXNzOworY2xhc3MgV2ViU2hhcmVkV29ya2Vy
U2VydmVyOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsK
KworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbiA6IHB1YmxpYyBJUEM6Ok1l
c3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbihOZXR3b3JrUHJvY2VzcyYsIFdlYlNoYXJlZFdvcmtlclNlcnZlciYsIElQQzo6Q29ubmVj
dGlvbiYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICB+V2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbigpOworCisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIo
KSB7IHJldHVybiBtX3NlcnZlcjsgfQorICAgIGNvbnN0IFdlYlNoYXJlZFdvcmtlclNlcnZlciYg
c2VydmVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXI7IH0KKworICAgIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCgpOworICAgIE5ldHdvcmtTZXNzaW9uKiBzZXNzaW9uKCk7CisgICAgV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOyB9CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgdm9pZCBmZXRj
aFNjcmlwdEluQ2xpZW50KGNvbnN0IFVSTCYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYpPiYmKTsKKyAgICB2b2lkIG5vdGlm
eVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24oV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOworICAgIHZvaWQgcG9z
dEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCitwcml2YXRlOgorICAgIC8v
IElQQzo6TWVzc2FnZVNlbmRlci4KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJD
b25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3Rp
bmF0aW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CisKKyAgICAvLyBJUEMgbWVzc2Fn
ZXMuCisgICAgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYm
LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6
VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYpOworICAg
IHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllcik7CisKKyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2NvbnRlbnRD
b25uZWN0aW9uOworICAgIFJlZjxOZXR3b3JrUHJvY2Vzcz4gbV9uZXR3b3JrUHJvY2VzczsKKyAg
ICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIG1fc2VydmVyOworICAgIFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29y
a2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uZmFlNGEwODAzNzc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI2IEBACisjIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24g
Tm90UmVmQ291bnRlZCB7CisgICAgUmVxdWVzdFNoYXJlZFdvcmtlcihzdHJ1Y3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBVUkwgdXJsLCBXZWJDb3JlOjpUcmFuc2Zl
cnJlZE1lc3NhZ2VQb3J0IHBvcnQsIHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdvcmtl
ck9wdGlvbnMpCisgICAgU2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLjQ5YzExMjQxNTIxOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uY3BwCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCisjZGVmaW5lIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNF
X0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBbd2ViUHJvY2Vz
c0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246OiIgZm10LCB0aGlzLCB3ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUludDY0KCks
ICMjX19WQV9BUkdTX18pCisKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIp
CisgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1fc2VydmVyKHNlcnZlcikK
KyAgICAsIG1fcmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pCit7CisgICAgQ09O
VEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOiIpOworICAgIHNlcnZlci5hZGRDb250ZXh0Q29ubmVjdGlvbigqdGhpcyk7
Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5XZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkKK3sKKyAgICBDT05URVhUX0NPTk5F
Q1RJT05fUkVMRUFTRV9MT0coIn5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOiIpOworICAgIGlmIChtX3NlcnZlciAmJiBtX3NlcnZlci0+Y29udGV4dENvbm5lY3Rpb25G
b3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbigpKSA9PSB0aGlzKQorICAgICAg
ICBtX3NlcnZlci0+cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oKnRoaXMpOworfQorCitXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllciBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjp3ZWJQcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29ubmVj
dGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpOworfQorCitJUEM6OkNvbm5lY3Rpb24mIFdlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmlwY0Nvbm5lY3Rpb24oKSBjb25z
dAoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpOworfQorCitJUEM6OkNv
bm5lY3Rpb24qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3Nh
Z2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gJmlwY0Nvbm5lY3Rpb24o
KTsKK30KKwordWludDY0X3QgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAoreworICAgIHJldHVybiAwOwor
fQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5l
Y3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFT
RV9MT0coImNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkOiIpOworICAgIG1fY29ubmVjdGlvbi5z
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOwor
fQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnBvc3RF
eGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNo
YXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7Cisg
ICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJwb3N0RXhjZXB0aW9uVG9Xb3JrZXJP
YmplY3Q6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVu
dGlmaWVyLnRvVUludDY0KCkpOworICAgIGlmIChtX3NlcnZlcikKKyAgICAgICAgbV9zZXJ2ZXIt
PnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBlcnJv
ck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMKTsKK30KKwordm9p
ZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpsYXVuY2hTaGFyZWRX
b3JrZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJl
ZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMsIGNvbnN0IFdlYkNv
cmU6OldvcmtlckZldGNoUmVzdWx0JiBmZXRjaFJlc3VsdCkKK3sKKyAgICBDT05URVhUX0NPTk5F
Q1RJT05fUkVMRUFTRV9MT0coImxhdW5jaFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRp
Zmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpM
YXVuY2hTaGFyZWRXb3JrZXIgeyBvcmlnaW4sIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIHVybCwg
d29ya2VyT3B0aW9ucywgZmV0Y2hSZXN1bHQgfSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVudChXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmIHBvcnQsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2lu
KQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygicG9zdENvbm5lY3RFdmVu
dDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZp
ZXIudG9VSW50NjQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpQb3N0Q29ubmVjdEV2ZW50IHsgc2hhcmVkV29ya2VySWRlbnRp
ZmllciwgcG9ydCwgc291cmNlT3JpZ2luIH0pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZVNoYXJlZFdvcmtlcihXZWJDb3JlOjpT
aGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIpCit7CisgICAgQ09O
VEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJ0ZXJtaW5hdGVTaGFyZWRXb3JrZXI6IHNoYXJl
ZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUlu
dDY0KCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6VGVybWluYXRlU2hhcmVkV29ya2VyIHsgc2hhcmVkV29ya2VySWRlbnRpZmll
ciB9KTsKK30KKworI3VuZGVmIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLmI2NzNlY2FlMjgzZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdl
U2VuZGVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdv
cmtlcklkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RyYW5zZmVycmVkTWVzc2FnZVBv
cnQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVnaXN0cmFibGVEb21haW47Citj
bGFzcyBTY3JpcHRCdWZmZXI7CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworc3RydWN0IFdvcmtlckZl
dGNoUmVzdWx0Oworc3RydWN0IFdvcmtlck9wdGlvbnM7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKK2NsYXNzIFdlYlNoYXJl
ZFdvcmtlclNlcnZlcjsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6Cisg
ICAgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2Vi
U2hhcmVkV29ya2VyU2VydmVyJik7CisgICAgfldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24oKTsKKworICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nl
c3NJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFp
bjsgfQorICAgIElQQzo6Q29ubmVjdGlvbiYgaXBjQ29ubmVjdGlvbigpIGNvbnN0OworCisgICAg
dm9pZCBsYXVuY2hTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgV2Vi
Q29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiwgY29uc3QgV2ViQ29yZTo6
V29ya2VyT3B0aW9ucyYsIGNvbnN0IFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0Jik7CisgICAg
dm9pZCBwb3N0Q29ubmVjdEV2ZW50KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZU9yaWdpbik7CisgICAgdm9pZCB0ZXJtaW5hdGVTaGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hhcmVk
V29ya2VySWRlbnRpZmllcik7CisKKyAgICB2b2lkIGNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVk
KCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpIGZpbmFsOworCitwcml2YXRlOgorICAgIC8vIElQQyBtZXNzYWdlcy4KKyAgICB2
b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBj
b2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKworICAgIC8vIElQQzo6TWVz
c2FnZVNlbmRlci4KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9u
KCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQo
KSBjb25zdCBmaW5hbDsKKworICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2Nv
bm5lY3Rpb247CisgICAgV2Vha1B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI+IG1fc2VydmVyOwor
ICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG1fcmVnaXN0cmFibGVEb21haW47Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdv
cmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWU0N2MxMjJjYmFjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpA
QCAtMCwwICsxLDI1IEBACisjIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K21lc3NhZ2VzIC0+IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gTm90
UmVmQ291bnRlZCB7CisgICAgUG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNo
YXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgU3RyaW5nIGVycm9y
TWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFN0cmluZyBzb3VyY2VV
UkwpCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDFjNDJkMDQwYzFhOS4uZGUzMmY4
MTcxNzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaApAQCAtOTcsNiArOTcsNyBAQCBleHRl
cm4gIkMiIHsKICAgICBNKFNlcnZpY2VXb3JrZXIpIFwKICAgICBNKFNlc3Npb25TdGF0ZSkgXAog
ICAgIE0oU2hhcmVkRGlzcGxheUxpc3RzKSBcCisgICAgTShTaGFyZWRXb3JrZXIpIFwKICAgICBN
KFN0b3JhZ2UpIFwKICAgICBNKFN0b3JhZ2VBUEkpIFwKICAgICBNKFRleHRJbnB1dCkgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggN2ViZmE1MTZiNTAzLi40
YzhjYWQwNDY0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpA
QCAtMzAzLDEwICszMDMsMTMgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVj
bGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZp
ZXInLAogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXInLAogICAgICAgICAnV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCcsCisgICAgICAgICdXZWJD
b3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYkNvcmU6OlNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U2xlZXBEaXNhYmxlcklk
ZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U291cmNlQnVmZmVyQXBwZW5kTW9kZScsCiAg
ICAgICAgICdXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlN0b3JhZ2VUeXBlJywKKyAgICAgICAgJ1dlYkNvcmU6
OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQnLAogICAgICAgICAnV2ViQ29yZTo6VXNlck1lZGlhUmVx
dWVzdElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6V2ViTG9ja0lkZW50aWZpZXInLAog
ICAgICAgICAnV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllcicsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAx
ZTliZjE3YzRlNmMuLmQ5ZTYwY2U3ODk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0xNDEsNiArMTQxLDEw
IEBAIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dPcmlnaW5TdG9yZS5jcHAgQG5v
LXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bi5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiAKK05ldHdvcmtQcm9jZXNzL1NoYXJl
ZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy9TaGFyZWRX
b3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAKK05ldHdvcmtQcm9jZXNz
L1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cAorCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5jcHAK
IE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuY3BwCiBOZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkuY3BwCkBA
IC03ODMsOCArNzg3LDkgQEAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFibGUuY3BwCiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKIFdl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwCi1XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwCitXZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCitXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwCiAKIFdlYlByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAogCkBAIC04ODcsMyArODkyLDcgQEAgUmVt
b3RlV2ViTG9ja1JlZ2lzdHJ5TWVzc2FnZVJlY2VpdmVyLmNwcAogU2VydmljZVdvcmtlckRvd25s
b2FkVGFza01lc3NhZ2VSZWNlaXZlci5jcHAKIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeU1l
c3NhZ2VSZWNlaXZlci5jcHAKIFdlYkxvY2tSZWdpc3RyeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cAorV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVy
LmNwcAorV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAK
K1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAKaW5kZXggYTY3ODM2N2E3NzVhLi4zMzAyMGJkNWMzY2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcApAQCAtNTI5LDcgKzUyOSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6dGVybWlu
YXRlV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jCiB2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZpY2VXb3JrZXJQcm9j
ZXNzZXMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIpCiB7CiAg
ICAgaWYgKFJlZlB0ciBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRp
Zmllcihwcm9jZXNzSWRlbnRpZmllcikpIHsKLSAgICAgICAgcHJvY2Vzcy0+ZGlzYWJsZVNlcnZp
Y2VXb3JrZXJzKCk7CisgICAgICAgIHByb2Nlc3MtPmRpc2FibGVXb3JrZXJzKFdlYlByb2Nlc3NQ
cm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiAgICAgICAgIHByb2Nlc3MtPnJlcXVl
c3RUZXJtaW5hdGlvbihQcm9jZXNzVGVybWluYXRpb25SZWFzb246OkV4Y2VlZGVkQ1BVTGltaXQp
OwogICAgIH0KIH0KQEAgLTE0MTUsMTYgKzE0MTUsMjEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpkaWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoV2ViVXNlckNvbnRl
bnQKIH0KICNlbmRpZgogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNoYXJl
ZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBX
ZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXNzaW9uSUQsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxl
RG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBz
ZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFdlYlBy
b2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKCp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2VydmljZVdvcmtl
clBhZ2VJZGVudGlmaWVyLCBzZXNzaW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2VzcyhXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2VydmljZVdv
cmtlclBhZ2VJZGVudGlmaWVyLCBzZXNzaW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXJ2aWNlV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlm
aWVyKQogewogICAgIGlmIChhdXRvKiBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNz
Rm9ySWRlbnRpZmllcihpZGVudGlmaWVyKSkKLSAgICAgICAgcHJvY2Vzcy0+ZGlzYWJsZVNlcnZp
Y2VXb3JrZXJzKCk7CisgICAgICAgIHByb2Nlc3MtPmRpc2FibGVXb3JrZXJzKFdlYlByb2Nlc3NQ
cm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQpAQCAtMTQ2MCw2ICsxNDY1LDEy
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQ
cm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJCiB9CiAjZW5kaWYKIAordm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpzaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8qIHBy
b2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIp
KQorICAgICAgICBwcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6Oldvcmtl
clR5cGU6OlNoYXJlZFdvcmtlcik7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVx
dWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1
cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHF1b3RhKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBSRUxFQVNFX0xPRyhTdG9yYWdlLCAiJXAgLSBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1
ZXN0U3RvcmFnZVNwYWNlIiwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IGE0ZTM2NDVlYmFhZS4uNjg0
MWEzNGZlMDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMzM0LDYgKzMzNCw4IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIHZvaWQg
ZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7CiAjZW5kaWYKKyAgICB2b2lk
IHNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIpOworICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCB0
ZXJtaW5hdGVXZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDEyZDA2Y2ViZDYyYS4uMTU3NTdlZDlhMjUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC02MCw2ICs2MCw4IEBAIG1lc3NhZ2Vz
IC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIFN0YXJ0U2Vydmlj
ZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNl
cnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikKICAgICBFbmRTZXJ2aWNlV29ya2VyQmFja2dy
b3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclBy
b2Nlc3NJZGVudGlmaWVyKQogI2VuZGlmCisgICAgRXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJl
Z2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCisg
ICAgU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQogCiAgICAgU2V0V2ViUHJvY2Vzc0hhc1VwbG9h
ZHMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lELCBib29sIGhhc1VwbG9hZCkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZTQ5OTM1YzMy
NWY2Li4xYWNiMzQ0NGFmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcApAQCAtMzY5MSwxMSArMzY5MSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VyQWdl
bnQoU3RyaW5nJiYgdXNlckFnZW50KQogICAgICAgICByZXR1cm47CiAgICAgbV91c2VyQWdlbnQg
PSBXVEZNb3ZlKHVzZXJBZ2VudCk7CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAg
Ly8gV2UgdXBkYXRlIHRoZSBzZXJ2aWNlIHdvcmtlciB0aGVyZSBhdCB0aGUgbW9tZW50IHRvIGJl
IHN1cmUgd2UgdXNlIHZhbHVlcyB1c2VkIGJ5IGFjdHVhbCB3ZWIgcGFnZXMuCiAgICAgLy8gRklY
TUU6IFJlZmFjdG9yIHRoaXMgd2hlbiB3ZSBoYXZlIGEgYmV0dGVyIFVzZXItQWdlbnQgc3Rvcnku
Ci0gICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCkudXBkYXRlU2VydmljZVdvcmtlclVzZXJBZ2Vu
dChtX3VzZXJBZ2VudCk7Ci0jZW5kaWYKKyAgICBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS51cGRh
dGVXb3JrZXJVc2VyQWdlbnQobV91c2VyQWdlbnQpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJv
Y2VzcygpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKaW5kZXggYWZjMjNlZTUzZjEyLi40YjE5YjBkMWQzYzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTUyOSw3ICs1MjksNyBAQCB2
b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRXZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nl
c3NQcm94eSYgd2ViUHJvY2Vzc1BybwogYm9vbCBXZWJQcm9jZXNzUG9vbDo6c191c2VTZXBhcmF0
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzID0gZmFsc2U7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi12b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmIHByb3h5LCBSZWdp
c3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHJl
Z2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIGF1dG8qIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0Rh
dGFTdG9yZUZvclNlc3Npb25JRChzZXNzaW9uSUQpOwogICAgIGlmICghd2Vic2l0ZURhdGFTdG9y
ZSkKQEAgLTU0Niw3ICs1NDYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2
aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldAogICAgIGlmIChz
ZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIpIHsKICAgICAgICAgLy8gVGhpcyBpcyBhIHNlcnZp
Y2Ugd29ya2VyIGZvciBhIHNlcnZpY2Ugd29ya2VyIHBhZ2Ugc28gd2UgbmVlZCB0byBtYWtlIHN1
cmUgd2UgdXNlIHVzZSB0aGUgcGFnZSdzIFdlYlByb2Nlc3MgZm9yIHRoZSBzZXJ2aWNlIHdvcmtl
ci4KICAgICAgICAgaWYgKChzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1By
b3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXItPnBy
b2Nlc3NJZGVudGlmaWVyKCkpKSkgewotICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eS0+ZW5hYmxlU2VydmljZVdvcmtlcnMocHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJv
bGxlcklkZW50aWZpZXJGb3JTZXJ2aWNlV29ya2VycygpKTsKKyAgICAgICAgICAgIHNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJU
eXBlOjpTZXJ2aWNlV29ya2VyLCBwcm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllckZvcldvcmtlcnMoKSk7CiAgICAgICAgICAgICBpZiAoc2VydmljZVdvcmtlclByb2Nl
c3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKSB7CiAgICAgICAgICAgICAgICAgcHJvY2Vzc1Bv
b2wtPndlYlByb2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nlc3MoKnNlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHksIFdlYlByb2Nlc3NDYWNoZTo6U2hvdWxkU2h1dERvd25Qcm9jZXNzOjpObyk7CiAgICAg
ICAgICAgICAgICAgQVNTRVJUKCFzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vz
c0NhY2hlKCkpOwpAQCAtNTY0LDcgKzU2NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFi
bGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0CiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHkgPSBwcm9jZXNzLnB0cigpOwotICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nl
c3NQcm94eS0+ZW5hYmxlU2VydmljZVdvcmtlcnMocHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2aWNlV29ya2VycygpKTsKKyAgICAgICAgICAgIHNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3Jr
ZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBwcm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllckZvcldvcmtlcnMoKSk7CiAKICAgICAgICAgICAgIGlmIChzZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpIHsKICAgICAgICAgICAgICAgICBwcm9j
ZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hlKCkucmVtb3ZlUHJvY2Vzcygqc2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0NhY2hlOjpTaG91bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsK
QEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNl
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldAogICAgIH0KIAogICAg
IGlmICghc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSkgewotICAgICAgICBhdXRvIG5ld1Byb2Nl
c3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMoKnByb2Nl
c3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0
ZURhdGFTdG9yZSk7CisgICAgICAgIGF1dG8gbmV3UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1By
b3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2Vydmlj
ZVdvcmtlciwgKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURv
bWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CiAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHkgPSBuZXdQcm9jZXNzUHJveHkucHRyKCk7CiAKICAgICAgICAgV0VCUFJPQ0VTU1BPT0xf
UkVMRUFTRV9MT0dfU1RBVElDKFNlcnZpY2VXb3JrZXIsICJlc3RhYmxpc2hTZXJ2aWNlV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIGNyZWF0aW5nIGEgbmV3IHNlcnZpY2Ug
d29ya2VyIHByb2Nlc3MgKHByb2Nlcz0lcCwgUElEPSVkKSIsIHNlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHksIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOwpA
QCAtNTg2LDIwICs1ODYsNzAgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2Vydmlj
ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXQKICAgICAgICAgcHJv
Y2Vzc1Bvb2wtPm1fcHJvY2Vzc2VzLmFwcGVuZChXVEZNb3ZlKG5ld1Byb2Nlc3NQcm94eSkpOwog
ICAgIH0KIAotICAgIEFTU0VSVCghc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmNvbnRhaW5zKCpz
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KSk7Ci0gICAgc2VydmljZVdvcmtlclByb2Nlc3Nlcygp
LmFkZCgqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSk7CisgICAgd29ya2VyUHJvY2Vzc2VzKCku
YWRkKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KTsKIAotICAgIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHktPmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KHByb2Nlc3NQb29sLT5tX3Nl
cnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJQcmVm
ZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVy
ZW5jZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVu
dGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgaWYgKCFwcm9jZXNzUG9v
bC0+bV9zZXJ2aWNlV29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQotICAgICAgICBzZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5LT5zZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5t
X3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQpOworICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkt
PmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KHByb2Nlc3NQb29sLT5tX3dvcmtlclByZWZl
cmVuY2VzID8gcHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nl
c3NQb29sLT5tX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0
cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFnZW50Lmlz
TnVsbCgpKQorICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRXb3JrZXJVc2Vy
QWdlbnQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFnZW50KTsKIH0KKyNlbmRpZgogCi12b2lk
IFdlYlByb2Nlc3NQb29sOjpyZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9j
ZXNzUHJveHkmIHByb2Nlc3MpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVGcm9tV29ya2Vy
UHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIHsKLSAgICBBU1NFUlQoc2Vydmlj
ZVdvcmtlclByb2Nlc3NlcygpLmNvbnRhaW5zKHByb2Nlc3MpKTsKLSAgICBzZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzKCkucmVtb3ZlKHByb2Nlc3MpOworICAgIEFTU0VSVCh3b3JrZXJQcm9jZXNzZXMo
KS5jb250YWlucyhwcm9jZXNzKSk7CisgICAgd29ya2VyUHJvY2Vzc2VzKCkucmVtb3ZlKHByb2Nl
c3MpOworfQorCit2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
JiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byogd2Vic2l0
ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lv
bklEKHNlc3Npb25JRCk7CisgICAgaWYgKCF3ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICB3ZWJz
aXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigp
OworICAgIGlmICghcHJvY2Vzc1Bvb2xzKCkuc2l6ZSgpKQorICAgICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UmVmPFdlYlByb2Nlc3NQb29sPj4gc2hhcmVkV29ya2VyUHJvY2Vzc1Bvb2woV2Vi
UHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRl
KCkuZ2V0KCkpKTsKKworICAgIC8vIEFyYml0cmFyaWx5IGNob29zZSB0aGUgZmlyc3QgcHJvY2Vz
cyBwb29sIHRvIGhvc3QgdGhlIHNoYXJlZCB3b3JrZXIgcHJvY2Vzcy4KKyAgICBhdXRvKiBwcm9j
ZXNzUG9vbCA9IHByb2Nlc3NQb29scygpWzBdOworICAgIEFTU0VSVChwcm9jZXNzUG9vbCk7CisK
KyAgICBXZWJQcm9jZXNzUHJveHkqIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSB7IG51bGxwdHIg
fTsKKworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3NQb29sLT5tX3Byb2Nlc3Nlcykg
eworICAgICAgICBpZiAocHJvY2Vzcy5wdHIoKSA9PSBwcm9jZXNzUG9vbC0+bV9wcmV3YXJtZWRQ
cm9jZXNzLmdldCgpIHx8IHByb2Nlc3MtPmlzRHVtbXlQcm9jZXNzUHJveHkoKSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoJnByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAh
PSB3ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICgh
cHJvY2Vzcy0+aXNNYXRjaGluZ1JlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94
eSA9IHByb2Nlc3MucHRyKCk7CisgICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+ZW5h
YmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgcHJv
Y2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOwor
CisgICAgICAgIGlmIChzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUo
KSkgeworICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLnJlbW92ZVBy
b2Nlc3MoKnNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0NhY2hlOjpTaG91bGRT
aHV0RG93blByb2Nlc3M6Ok5vKTsKKyAgICAgICAgICAgIEFTU0VSVCghc2hhcmVkV29ya2VyUHJv
Y2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpOworICAgICAgICB9CisKKyAgICAgICAgV0VC
UFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElDKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNo
YXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyByZXVzaW5nIGFuIGV4
aXN0aW5nIHdlYiBwcm9jZXNzIChwcm9jZXNzPSVwLCBQSUQ9JWQpIiwgc2hhcmVkV29ya2VyUHJv
Y2Vzc1Byb3h5LCBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkp
OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoIXNoYXJlZFdvcmtlclByb2Nlc3NQ
cm94eSkgeworICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6
Y3JlYXRlRm9yV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtl
ciwgKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9
LCAqd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSA9
IG5ld1Byb2Nlc3NQcm94eS5wdHIoKTsKKworICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNF
X0xPR19TVEFUSUMoU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIGNyZWF0aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHBy
b2Nlc3MgKHByb2Nlc3M9JXAsIFBJRD0lZCkiLCBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHksIHNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisKKyAgICAgICAg
cHJvY2Vzc1Bvb2wtPmluaXRpYWxpemVOZXdXZWJQcm9jZXNzKG5ld1Byb2Nlc3NQcm94eSwgd2Vi
c2l0ZURhdGFTdG9yZSk7CisgICAgICAgIHByb2Nlc3NQb29sLT5tX3Byb2Nlc3Nlcy5hcHBlbmQo
V1RGTW92ZShuZXdQcm9jZXNzUHJveHkpKTsKKyAgICB9CisKKyAgICB3b3JrZXJQcm9jZXNzZXMo
KS5hZGQoKnNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSk7CisKKyAgICBzaGFyZWRXb3JrZXJQcm9j
ZXNzUHJveHktPmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHQocHJvY2Vzc1Bvb2wtPm1fd29y
a2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNzUG9vbC0+bV93b3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgp
IDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgp
LCByZWdpc3RyYWJsZURvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlm
ICghcHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQorICAgICAgICBzaGFy
ZWRXb3JrZXJQcm9jZXNzUHJveHktPnNldFdvcmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV93
b3JrZXJVc2VyQWdlbnQpOwogfQotI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OndpbmRv
d1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKQogewpAQCAtMTAwMywxMCArMTA1Myw4IEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYg
cHJvY2VzcykKIAogICAgIG1fYmFja0ZvcndhcmRDYWNoZS0+cmVtb3ZlRW50cmllc0ZvclByb2Nl
c3MocHJvY2Vzcyk7CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKHByb2Nl
c3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKLSAgICAgICAgcmVtb3ZlRnJvbVNlcnZpY2VX
b3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7Ci0jZW5kaWYKKyAgICBpZiAocHJvY2Vzcy5pc1J1bm5p
bmdXb3JrZXJzKCkpCisgICAgICAgIHJlbW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7
CiAKICAgICBzdGF0aWNfY2FzdDxXZWJDb250ZXh0U3VwcGxlbWVudCo+KHN1cHBsZW1lbnQ8V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpLT5wcm9jZXNzRGlkQ2xvc2UoJnByb2Nlc3MpOwog
CkBAIC0xMDY3LDEyICsxMTE1LDEyIEBAIFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQ
b29sOjpwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4oV2Vic2l0ZURhdGFTdG9yCiB9CiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1Vc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
IFdlYlByb2Nlc3NQb29sOjp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2Vydmlj
ZVdvcmtlcnMoKQorVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBXZWJQcm9jZXNzUG9v
bDo6dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKQogewotICAgIGlm
ICghbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyKQotICAgICAgICBtX3Vz
ZXJDb250ZW50Q29udHJvbGxlckZvclNlcnZpY2VXb3JrZXIgPSBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6Y3JlYXRlKCk7CisgICAgaWYgKCFtX3VzZXJDb250ZW50Q29udHJvbGxlckZv
cldvcmtlcnMpCisgICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2VycyA9IFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpjcmVhdGUoKTsKIAotICAgIHJldHVybiBtX3Vz
ZXJDb250ZW50Q29udHJvbGxlckZvclNlcnZpY2VXb3JrZXItPmlkZW50aWZpZXIoKTsKKyAgICBy
ZXR1cm4gbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JXb3JrZXJzLT5pZGVudGlmaWVyKCk7CiB9
CiAjZW5kaWYKIApAQCAtMTExOSwxNSArMTE2NywxMyBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQ
cm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJ
OgogCiAgICAgYXV0byBwYWdlID0gcHJvY2Vzcy0+Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBX
VEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
Ci0gICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcykgewotICAgICAgICBtX3NlcnZp
Y2VXb3JrZXJQcmVmZXJlbmNlcyA9IHBhZ2UtPnByZWZlcmVuY2VzU3RvcmUoKTsKLSAgICAgICAg
Zm9yIChhdXRvJiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMo
KSkKLSAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzLnVwZGF0ZVNlcnZpY2VXb3JrZXJQ
cmVmZXJlbmNlc1N0b3JlKCptX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyk7CisgICAgaWYgKCFt
X3dvcmtlclByZWZlcmVuY2VzKSB7CisgICAgICAgIG1fd29ya2VyUHJlZmVyZW5jZXMgPSBwYWdl
LT5wcmVmZXJlbmNlc1N0b3JlKCk7CisgICAgICAgIGZvciAoYXV0byYgd29ya2VyUHJvY2VzcyA6
IHdvcmtlclByb2Nlc3NlcygpKQorICAgICAgICAgICAgd29ya2VyUHJvY2Vzcy51cGRhdGVXb3Jr
ZXJQcmVmZXJlbmNlc1N0b3JlKCptX3dvcmtlclByZWZlcmVuY2VzKTsKICAgICB9CiAgICAgaWYg
KHVzZXJDb250ZW50Q29udHJvbGxlcikKLSAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJG
b3JTZXJ2aWNlV29ya2VyID0gdXNlckNvbnRlbnRDb250cm9sbGVyOwotI2VuZGlmCisgICAgICAg
IG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2VycyA9IHVzZXJDb250ZW50Q29udHJvbGxl
cjsKIAogICAgIGJvb2wgZW5hYmxlUHJvY2Vzc1N3YXBPbkNyb3NzU2l0ZU5hdmlnYXRpb24gPSBw
YWdlLT5wcmVmZXJlbmNlcygpLnByb2Nlc3NTd2FwT25Dcm9zc1NpdGVOYXZpZ2F0aW9uRW5hYmxl
ZCgpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0xMTUwLDE2ICsxMTk2LDE0IEBAIFJl
ZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQm
IHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAgICAgcmV0dXJuIHBhZ2U7CiB9CiAKLSNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVTZXJ2aWNlV29ya2Vy
VXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6
dXBkYXRlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQogewotICAgIGlm
IChtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQgPT0gdXNlckFnZW50KQorICAgIGlmIChtX3dvcmtl
clVzZXJBZ2VudCA9PSB1c2VyQWdlbnQpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3NlcnZpY2VX
b3JrZXJVc2VyQWdlbnQgPSB1c2VyQWdlbnQ7Ci0gICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2Vy
UHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSkKLSAgICAgICAgc2VydmljZVdvcmtl
clByb2Nlc3Muc2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChtX3NlcnZpY2VXb3JrZXJVc2VyQWdl
bnQpOworICAgIG1fd29ya2VyVXNlckFnZW50ID0gdXNlckFnZW50OworICAgIGZvciAoYXV0byYg
d29ya2VyUHJvY2VzcyA6IHdvcmtlclByb2Nlc3NlcygpKQorICAgICAgICB3b3JrZXJQcm9jZXNz
LnNldFdvcmtlclVzZXJBZ2VudChtX3dvcmtlclVzZXJBZ2VudCk7CiB9Ci0jZW5kaWYKIAogdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCiB7CkBA
IC0xNTM4LDggKzE1ODIsMTMgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlU2Vydmlj
ZVdvcmtlcnMoKQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBSZWYgcHJvdGVj
dGVkVGhpcyB7ICp0aGlzIH07Ci0gICAgd2hpbGUgKHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5j
b21wdXRlU2l6ZSgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkuYmVnaW4oKS0+
ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgVmVjdG9yPFJlZjxXZWJQcm9jZXNzUHJveHk+
PiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOworICAgIHdvcmtlclByb2Nlc3NlcygpLmZvckVhY2go
WyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICAgICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nU2Vydmlj
ZVdvcmtlcnMoKSkKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYXBwZW5kKHBy
b2Nlc3MpOworICAgIH0pOworICAgIGZvciAoYXV0byYgc2VydmljZVdvcmtlclByb2Nlc3MgOiBz
ZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKQorICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+ZGlz
YWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsK
ICNlbmRpZgogfQogCkBAIC0xNzY3LDEzICsxODE2LDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnJlcG9ydFdlYkNvbnRlbnRDUFVUaW1lKFNlY29uZHMgY3B1VGltZSwgdWludDY0X3QgYWN0aXZp
dHlTCiAjZW5kaWYKIH0KIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLVdlYWtIYXNoU2V0
PFdlYlByb2Nlc3NQcm94eT4mIFdlYlByb2Nlc3NQb29sOjpzZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
KCkKK1dlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIFdlYlByb2Nlc3NQb29sOjp3b3JrZXJQ
cm9jZXNzZXMoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXZWFrSGFzaFNldDxXZWJQ
cm9jZXNzUHJveHk+PiBwcm9jZXNzZXM7CiAgICAgcmV0dXJuIHByb2Nlc3NlczsKIH0KLSNlbmRp
ZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpCiB7CkBA
IC0xNzg1LDIwICsxODMyLDI1IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NB
c3NlcnRpb25zKCkKICAgICBpZiAoYXV0byogZ3B1UHJvY2VzcyA9IEdQVVByb2Nlc3NQcm94eTo6
c2luZ2xldG9uSWZDcmVhdGVkKCkpCiAgICAgICAgIGdwdVByb2Nlc3MtPnVwZGF0ZVByb2Nlc3NB
c3NlcnRpb24oKTsKICNlbmRpZgotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKwogICAgIC8v
IENoZWNrIG9uIG5leHQgcnVuIGxvb3Agc2luY2UgdGhlIHdlYiBwcm9jZXNzIHByb3h5IHRva2Vu
cyBhcmUgcHJvYmFibHkgYmVpbmcgdXBkYXRlZC4KICAgICBjYWxsT25NYWluUnVuTG9vcChbXSB7
Ci0gICAgICAgIGZvciAoYXV0byYgc2VydmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzKCkpCi0gICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy51cGRhdGVTZXJ2
aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOwotICAgIH0pOworICAgICAgICB3b3JrZXJQcm9j
ZXNzZXMoKS5mb3JFYWNoKFtdKGF1dG8mIHdvcmtlclByb2Nlc3MpIHsKKyNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCisgICAgICAgICAgICBpZiAod29ya2VyUHJvY2Vzcy5pc1J1bm5pbmdTZXJ2
aWNlV29ya2VycygpKQorICAgICAgICAgICAgICAgIHdvcmtlclByb2Nlc3MudXBkYXRlV29ya2Vy
UHJvY2Vzc0Fzc2VydGlvbihXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3Jr
ZXIpOwogI2VuZGlmCisgICAgICAgICAgICBpZiAod29ya2VyUHJvY2Vzcy5pc1J1bm5pbmdTaGFy
ZWRXb3JrZXJzKCkpCisgICAgICAgICAgICAgICAgd29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQ
cm9jZXNzQXNzZXJ0aW9uKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2hhcmVkV29ya2Vy
KTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6OmlzU2Vy
dmljZVdvcmtlclBhZ2VJRChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgaW5lZmZp
Y2llbnQuCi0gICAgcmV0dXJuIFdURjo6YW55T2Yoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLCBb
cGFnZUlEXShhdXRvJiBwcm9jZXNzKSB7CisgICAgcmV0dXJuIFdURjo6YW55T2Yod29ya2VyUHJv
Y2Vzc2VzKCksIFtwYWdlSURdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuIHByb2Nl
c3MuaGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShwYWdlSUQpOwogICAgIH0pOwogI2VuZGlmCkBA
IC0yMTI0LDE2ICsyMTc2LDI2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFVzZVNlcGFyYXRl
U2VydmljZVdvcmtlclByb2Nlc3MoYm9vbCB1c2VTZXBhcmF0ZVNlcnZpY2VXCiB9CiAKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCitzaXplX3QgV2ViUHJvY2Vzc1Bvb2w6OnNlcnZpY2VXb3Jr
ZXJQcm94aWVzQ291bnQoKSBjb25zdAoreworICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKKyAgICB3
b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFsmXShhdXRvJiBwcm9jZXNzKSB7CisgICAgICAgIGlm
IChwcm9jZXNzLmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCisgICAgICAgICAgICArK2NvdW50
OworICAgIH0pOworICAgIHJldHVybiBjb3VudDsKK30KKwogYm9vbCBXZWJQcm9jZXNzUG9vbDo6
aGFzU2VydmljZVdvcmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdAogewot
ICAgIHJldHVybiBXVEY6OmFueU9mKHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYg
cHJvY2VzcykgeworICAgIHJldHVybiBXVEY6OmFueU9mKHdvcmtlclByb2Nlc3NlcygpLCBbXShh
dXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiBwcm9jZXNzLmhhc1NlcnZpY2VXb3JrZXJG
b3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCk7CiAgICAgfSk7CiB9CiAKIGJvb2wgV2ViUHJv
Y2Vzc1Bvb2w6Omhhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjphbnlPZihzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCks
IFtdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICByZXR1cm4gV1RGOjphbnlPZih3b3JrZXJQcm9jZXNz
ZXMoKSwgW10oYXV0byYgcHJvY2VzcykgewogICAgICAgICByZXR1cm4gcHJvY2Vzcy5oYXNTZXJ2
aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpOwogICAgIH0pOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggZWI2NmQ4OTQ5MGRmLi5l
NzBiNmY0MjlmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApA
QCAtMzc0LDE3ICszNzQsMjAgQEAgcHVibGljOgogICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NEaWRU
ZXJtaW5hdGUoTmV0d29ya1Byb2Nlc3NQcm94eSYsIE5ldHdvcmtQcm9jZXNzUHJveHk6OlRlcm1p
bmF0aW9uUmVhc29uKTsKIAogICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyUGFnZUlEKFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIpIGNvbnN0OworICAgIHZvaWQgcmVtb3ZlRnJvbVdvcmtlclByb2Nlc3Nl
cyhXZWJQcm9jZXNzUHJveHkmKTsKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBz
dGF0aWMgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgcmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5Jik7Ci0gICAgc2l6ZV90IHNlcnZpY2VXb3JrZXJQcm94
aWVzQ291bnQoKSBjb25zdCB7IHJldHVybiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkuY29tcHV0
ZVNpemUoKTsgfQotICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBT
dHJpbmcmIHVzZXJBZ2VudCk7Ci0gICAgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciB1
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKTsKKyAgICBz
dGF0aWMgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdl
SWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CisgICAgc2l6ZV90IHNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25zdDsKKyAgICBVc2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXJGb3JXb3JrZXJzKCk7CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2
aXR5Rm9yVGVzdGluZygpIGNvbnN0OwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlckJhY2tncm91
bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdDsKICNlbmRpZgogICAgIHZvaWQgc2VydmljZVdv
cmtlclByb2Nlc3NDcmFzaGVkKFdlYlByb2Nlc3NQcm94eSYpOwogCisgICAgdm9pZCB1cGRhdGVX
b3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpOworICAgIHN0YXRpYyB2b2lk
IGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgcHJvY2Vz
c1N1cHByZXNzaW9uRW5hYmxlZCgpIGNvbnN0OwogI2VuZGlmCkBAIC02MTgsMTMgKzYyMSwxMSBA
QCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgV2Vha1B0cjxXZWJQcm9j
ZXNzUHJveHk+PiBtX2R1bW15UHJvY2Vzc1Byb3hpZXM7IC8vIExpZ2h0d2VpZ2h0IFdlYlByb2Nl
c3NQcm94eSBvYmplY3RzIHdpdGhvdXQgYmFja2luZyBwcm9jZXNzLgogCi0jaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQotICAgIHN0YXRpYyBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+JiBz
ZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCk7Ci0gICAgYm9vbCBtX3dhaXRpbmdGb3JXb3JrZXJDb250
ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24geyBmYWxzZSB9OwotICAgIFN0cmluZyBtX3NlcnZpY2VXb3Jr
ZXJVc2VyQWdlbnQ7Ci0gICAgc3RkOjpvcHRpb25hbDxXZWJQcmVmZXJlbmNlc1N0b3JlPiBtX3Nl
cnZpY2VXb3JrZXJQcmVmZXJlbmNlczsKLSAgICBSZWZQdHI8V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk+IG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yU2VydmljZVdvcmtlcjsKLSNlbmRp
ZgorICAgIHN0YXRpYyBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+JiB3b3JrZXJQcm9jZXNz
ZXMoKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8V2ViUHJlZmVyZW5jZXNTdG9yZT4gbV93b3JrZXJQ
cmVmZXJlbmNlczsKKyAgICBSZWZQdHI8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+IG1f
dXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2VyczsKKyAgICBTdHJpbmcgbV93b3JrZXJVc2Vy
QWdlbnQ7CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgUmVmUHRyPEdQVVByb2Nlc3NQ
cm94eT4gbV9ncHVQcm9jZXNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKaW5kZXggY2FjMzY3ZjExMTlmLi41Y2Y4NmNjNzg2ZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTksNiArNTksNyBAQAogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIgogI2luY2x1
ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgpA
QCAtMTgyLDExICsxODMsMTEgQEAgUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Byb3h5
OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJzaXQKIH0KIAogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKLVJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94
eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBS
ZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVN0b3JlJiB3
ZWJzaXRlRGF0YVN0b3JlKQorUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Byb3h5Ojpj
cmVhdGVGb3JXb3JrZXJzKFdvcmtlclR5cGUgd29ya2VyVHlwZSwgV2ViUHJvY2Vzc1Bvb2wmIHBy
b2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRl
RGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQogewogICAgIGF1dG8gcHJveHkgPSBhZG9wdFJl
ZigqbmV3IFdlYlByb2Nlc3NQcm94eShwcm9jZXNzUG9vbCwgJndlYnNpdGVEYXRhU3RvcmUsIElz
UHJld2FybWVkOjpObywgQ3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQsIENhcHRpdmVQb3J0YWxNb2Rl
OjpEaXNhYmxlZCkpOwogICAgIHByb3h5LT5tX3JlZ2lzdHJhYmxlRG9tYWluID0gV1RGTW92ZShy
ZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgcHJveHktPmVuYWJsZVNlcnZpY2VXb3JrZXJzKHByb2Nl
c3NQb29sLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2aWNlV29ya2Vycygp
KTsKKyAgICBwcm94eS0+ZW5hYmxlV29ya2Vycyh3b3JrZXJUeXBlLCBwcm9jZXNzUG9vbC51c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpKTsKICAgICBwcm94eS0+Y29u
bmVjdCgpOwogICAgIHJldHVybiBwcm94eTsKIH0KQEAgLTk5NSwxMCArOTk2LDEwIEBAIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUoKQogICAgIGZvciAoYXV0byYg
Y2FsbGJhY2sgOiBpc1Jlc3BvbnNpdmVDYWxsYmFja3MpCiAgICAgICAgIGNhbGxiYWNrKGlzV2Vi
UHJvY2Vzc1Jlc3BvbnNpdmUpOwogCi0gICAgLy8gSWYgdGhlIHdlYiBwcm9jZXNzIGJlY29tZXMg
dW5yZXNwb25zaXZlIGFuZCBvbmx5IHJ1bnMgc2VydmljZSB3b3JrZXJzLCBraWxsIGl0IG91cnNl
bHZlcyBzaW5jZSB0aGVyZSBhcmUgbm8gbmF0aXZlIGNsaWVudHMgdG8gZG8gaXQuCi0gICAgaWYg
KGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkgJiYgbV9wYWdlTWFwLmlzRW1wdHkoKSkgewotICAg
ICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUGVyZm9ybWFuY2VMb2dnaW5n
LCAiZGlkQmVjb21lVW5yZXNwb25zaXZlOiBUZXJtaW5hdGluZyBzZXJ2aWNlIHdvcmtlci1vbmx5
IHdlYiBwcm9jZXNzIGJlY2F1c2UgaXQgaXMgdW5yZXNwb25zaXZlIik7Ci0gICAgICAgIGRpc2Fi
bGVTZXJ2aWNlV29ya2VycygpOworICAgIC8vIElmIHRoZSB3ZWIgcHJvY2VzcyBiZWNvbWVzIHVu
cmVzcG9uc2l2ZSBhbmQgb25seSBydW5zIHNlcnZpY2Uvc2hhcmVkIHdvcmtlcnMsIGtpbGwgaXQg
b3Vyc2VsdmVzIHNpbmNlIHRoZXJlIGFyZSBubyBuYXRpdmUgY2xpZW50cyB0byBkbyBpdC4KKyAg
ICBpZiAoaXNSdW5uaW5nV29ya2VycygpICYmIG1fcGFnZU1hcC5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HX0VSUk9SKFBlcmZvcm1hbmNlTG9nZ2luZywg
ImRpZEJlY29tZVVucmVzcG9uc2l2ZTogVGVybWluYXRpbmcgd29ya2VyLW9ubHkgd2ViIHByb2Nl
c3MgYmVjYXVzZSBpdCBpcyB1bnJlc3BvbnNpdmUiKTsKKyAgICAgICAgZGlzYWJsZVdvcmtlcnMo
eyBXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgfSk7
CiAgICAgICAgIHRlcm1pbmF0ZSgpOwogICAgIH0KIH0KQEAgLTE2OTQsOCArMTY5NSw5IEBAIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZShj
b25zdCBVUkwmIHVybCkKICAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4geyB1cmwgfTsKICAgICBpZiAobV9yZWdpc3RyYWJsZURvbWFpbiAmJiAq
bV9yZWdpc3RyYWJsZURvbWFpbiAhPSByZWdpc3RyYWJsZURvbWFpbikgewogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKLSAgICAgICAgZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgICAg
IGRpc2FibGVXb3JrZXJzKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogI2VuZGlmCisKICAg
ICAgICAgLy8gTnVsbCBvdXQgcmVnaXN0cmFibGUgZG9tYWluIHNpbmNlIHRoaXMgcHJvY2VzcyBo
YXMgbm93IGJlZW4gdXNlZCBmb3Igc2V2ZXJhbCBkb21haW5zLgogICAgICAgICBtX3JlZ2lzdHJh
YmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB9OwogICAgICAgICByZXR1
cm47CkBAIC0xODY2LDYwICsxODY4LDg1IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxp
c2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzCiB7CiAg
ICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJlc3RhYmxpc2hTZXJ2aWNl
V29ya2VyQ29udGV4dDogU3RhcnRlZCIpOwogICAgIG1hcmtQcm9jZXNzQXNSZWNlbnRseVVzZWQo
KTsKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlz
aFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyBwcm9jZXNz
UG9vbCgpLmRlZmF1bHRQYWdlR3JvdXAoKS5wYWdlR3JvdXBJRCgpLCBtX3NlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VQcm94eUlELCBtX3NlcnZpY2VXb3JrZXJJbmZv
cm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VJRCwgc3RvcmUsIHJlZ2lzdHJhYmxlRG9tYWluLCBz
ZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5p
bml0aWFsaXphdGlvbkRhdGEgfSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0s
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJs
ZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxp
c2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vz
c1Bvb2woKS5kZWZhdWx0UGFnZUdyb3VwKCkucGFnZUdyb3VwSUQoKSwgbV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb24tPndvcmtlclBhZ2VQcm94eUlELCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlv
bi0+d29ya2VyUGFnZUlELCBzdG9yZSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQ
YWdlSWRlbnRpZmllciwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmluaXRpYWxpemF0aW9u
RGF0YSB9LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKHdlYWtUaGlzKQogICAgICAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKExv
YWRpbmcsICJlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dDogRmluaXNoZWQiKTsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9LCAwKTsKIH0KKyNlbmRpZgogCi12b2lkIFdl
YlByb2Nlc3NQcm94eTo6c2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRXb3JrZXJVc2VyQWdlbnQoY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQpCiB7Ci0gICAgQVNTRVJUKG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
U2V0VXNlckFnZW50IHsgdXNlckFnZW50IH0sIDApOworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2Vy
QWdlbnQgfSwgMCk7CisjZW5kaWYKKyAgICBpZiAobV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbikK
KyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2VyQWdlbnQgfSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJv
Y2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVXb3Jr
ZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogewot
ICAgIEFTU0VSVChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbik7Ci0gICAgc2VuZChNZXNzYWdl
czo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZVByZWZlcmVuY2VzU3RvcmUg
eyBzdG9yZSB9LCAwKTsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYgKG1fc2Vy
dmljZVdvcmtlckluZm9ybWF0aW9uKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDAp
OworI2VuZGlmCisgICAgaWYgKG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24pCisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBk
YXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDApOwogfQogCi12b2lkIFdlYlByb2Nlc3NQ
cm94eTo6dXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKQorLy8gRklYTUU6IENs
aWVudHMgZG8gbm90IHByb3Blcmx5IGdldCBwb3B1bGF0ZWQgaW4gbV9zaGFyZWRXb3JrZXJJbmZv
cm1hdGlvbi4KK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0
aW9uKFdvcmtlclR5cGUgd29ya2VyVHlwZSkKIHsKLSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFT
RV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2Vy
dGlvbjoiKTsKLSAgICBBU1NFUlQobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pOwotICAgIGlm
ICghbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAgYXV0byYgd29ya2VySW5mb3JtYXRp
b24gPSB3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/IG1fc2hhcmVkV29y
a2VySW5mb3JtYXRpb24gOiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsKKyAgICBBU1NFUlQo
d29ya2VySW5mb3JtYXRpb24pOworICAgIGlmICghd29ya2VySW5mb3JtYXRpb24pCiAgICAgICAg
IHJldHVybjsKIAotICAgIGJvb2wgc2hvdWxkVGFrZUZvcmVncm91bmRBY3Rpdml0eSA9IFdURjo6
YW55T2YobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3NlcywgWyZdKGF1
dG8mIHByb2Nlc3MpIHsKKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1
c3BlbnNpb24sICJ1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uOiB3b3JrZXJUeXBlPSV7cHVi
bGljfXMiLCB3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/ICJzaGFyZWQi
IDogInNlcnZpY2UiKTsKKworICAgIGJvb2wgc2hvdWxkVGFrZUZvcmVncm91bmRBY3Rpdml0eSA9
IFdURjo6YW55T2Yod29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3NlcywgWyZdKGF1dG8m
IHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuICZwcm9jZXNzICE9IHRoaXMgJiYgISFwcm9jZXNz
Lm1fZm9yZWdyb3VuZFRva2VuOwogICAgIH0pOwogICAgIGlmIChzaG91bGRUYWtlRm9yZWdyb3Vu
ZEFjdGl2aXR5KSB7Ci0gICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEZvcmVn
cm91bmRBY3Rpdml0eShtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQotICAg
ICAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRs
ZXIuZm9yZWdyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3IgZm9yZWdyb3VuZCB2aWV3
KHMpIl9zKTsKKyAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkRm9yZWdyb3Vu
ZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCisgICAgICAgICAgICB3b3Jr
ZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5mb3JlZ3JvdW5kQWN0aXZpdHko
IldvcmtlciBmb3IgZm9yZWdyb3VuZCB2aWV3KHMpIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGJvb2wgc2hvdWxkVGFrZUJhY2tncm91bmRBY3Rpdml0eSA9IFdURjo6YW55T2Yo
bV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3NlcywgWyZdKGF1dG8mIHBy
b2Nlc3MpIHsKKyAgICBib29sIHNob3VsZFRha2VCYWNrZ3JvdW5kQWN0aXZpdHkgPSBXVEY6OmFu
eU9mKHdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMsIFsmXShhdXRvJiBwcm9jZXNz
KSB7CiAgICAgICAgIHJldHVybiAmcHJvY2VzcyAhPSB0aGlzICYmICEhcHJvY2Vzcy5tX2JhY2tn
cm91bmRUb2tlbjsKICAgICB9KTsKICAgICBpZiAoc2hvdWxkVGFrZUJhY2tncm91bmRBY3Rpdml0
eSkgewotICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0
aXZpdHkobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKLSAgICAgICAgICAg
IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmJhY2tn
cm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tncm91bmQgdmlldyhzKSJfcyk7
CisgICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEJhY2tncm91bmRBY3Rpdml0
eSh3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQorICAgICAgICAgICAgd29ya2VySW5mb3Jt
YXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5KCJXb3JrZXIg
Zm9yIGJhY2tncm91bmQgdmlldyhzKSJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBpZiAobV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcpIHsKKyAgICBpZiAo
d29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyICYmIG1faGFzU2VydmljZVdv
cmtlckJhY2tncm91bmRQcm9jZXNzaW5nKSB7CiAgICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxF
QVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlNlcnZpY2UgV29ya2VyIGZvciBiYWNrZ3JvdW5k
IHByb2Nlc3NpbmciKTsKLSAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkQmFj
a2dyb3VuZEFjdGl2aXR5KG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCi0g
ICAgICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90
dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2VyIGZvciBiYWNrZ3JvdW5kIHBy
b2Nlc3NpbmciX3MpOworICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRCYWNr
Z3JvdW5kQWN0aXZpdHkod29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKKyAgICAgICAgICAg
IHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rp
dml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tncm91bmQgcHJvY2Vzc2luZyJfcyk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0
aXZpdHkgPSBudWxscHRyOworICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG51bGxw
dHI7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250
ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgcmVnaXN0cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2hhcmVk
V29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dDogU3RhcnRlZCIpOworICAgIG1h
cmtQcm9jZXNzQXNSZWNlbnRseVVzZWQoKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVsdFBhZ2VHcm91cCgpLnBhZ2VHcm91
cElEKCksIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24tPndvcmtlclBhZ2VQcm94eUlELCBtX3No
YXJlZFdvcmtlckluZm9ybWF0aW9uLT53b3JrZXJQYWdlSUQsIHN0b3JlLCByZWdpc3RyYWJsZURv
bWFpbiwgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbi0+aW5pdGlhbGl6YXRpb25EYXRhIH0sIFt0
aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBpZiAod2Vha1Ro
aXMpCisgICAgICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2hhcmVkV29ya2Vy
LCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dDogRmluaXNoZWQiKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKKyAgICB9LCAwKTsKK30KKworI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKKwogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKIHsKICAgICBpZiAoIW1fc2VydmljZVdv
cmtlckluZm9ybWF0aW9uKQpAQCAtMTkyNyw3ICsxOTU0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBw
cm94eSkKIAogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAi
cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzczogY2xpZW50UHJvY2Vzcz0lcCwgY2xp
ZW50UElEPSVkIiwgJnByb3h5LCBwcm94eS5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBtX3Nl
cnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2VzLmFkZChwcm94eSk7Ci0gICAg
dXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKKyAgICB1cGRhdGVXb3JrZXJQ
cm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogfQogCiB2b2lkIFdl
YlByb2Nlc3NQcm94eTo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlBy
b2Nlc3NQcm94eSYgcHJveHkpCkBAIC0xOTM3LDcgKzE5NjQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94
eSYgcHJveAogCiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIs
ICJ1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3M6IGNsaWVudFByb2Nlc3M9JXAs
IGNsaWVudFBJRD0lZCIsICZwcm94eSwgcHJveHkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAg
bV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3Nlcy5yZW1vdmUocHJveHkp
OwotICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBkYXRl
V29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KIAog
Ym9vbCBXZWJQcm9jZXNzUHJveHk6Omhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlG
b3JUZXN0aW5nKCkgY29uc3QKQEAgLTE5NTcsNyArMTk4NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpzdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZygpCiAKICAgICBXRUJQ
Uk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJzdGFydFNlcnZpY2VX
b3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyIpOwogICAgIG1faGFzU2VydmljZVdvcmtlckJhY2tn
cm91bmRQcm9jZXNzaW5nID0gdHJ1ZTsKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fz
c2VydGlvbigpOworICAgIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6
U2VydmljZVdvcmtlcik7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmRTZXJ2aWNlV29y
a2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoKQpAQCAtMTk2NywyMyArMTk5NCwzOSBAQCB2b2lkIFdl
YlByb2Nlc3NQcm94eTo6ZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKCkKIAog
ICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgImVuZFNl
cnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyIpOwogICAgIG1faGFzU2VydmljZVdvcmtl
ckJhY2tncm91bmRQcm9jZXNzaW5nID0gZmFsc2U7Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclBy
b2Nlc3NBc3NlcnRpb24oKTsKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtl
clR5cGU6OlNlcnZpY2VXb3JrZXIpOwogfQogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpc2FibGVTZXJ2aWNlV29ya2VycygpCit2b2lk
IFdlYlByb2Nlc3NQcm94eTo6ZGlzYWJsZVdvcmtlcnMoT3B0aW9uU2V0PFdvcmtlclR5cGU+IHdv
cmtlclR5cGUpCiB7Ci0gICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKKyAgICBB
U1NFUlQoIXdvcmtlclR5cGUuaXNFbXB0eSgpKTsKKworICAgIGJvb2wgZGlkQ2hhbmdlID0gZmFs
c2U7CisgICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtl
cikgJiYgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pIHsKKyAgICAgICAgbV9zZXJ2aWNlV29y
a2VySW5mb3JtYXRpb24gPSB7IH07CisgICAgICAgIGRpZENoYW5nZSA9IHRydWU7CisgICAgfQor
ICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlcikgJiYg
bV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbikgeworICAgICAgICBtX3NoYXJlZFdvcmtlckluZm9y
bWF0aW9uID0geyB9OworICAgICAgICBkaWRDaGFuZ2UgPSB0cnVlOworICAgIH0KKyAgICBpZiAo
IWRpZENoYW5nZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVB
U0VfTE9HKFNlcnZpY2VXb3JrZXIsICJkaXNhYmxlU2VydmljZVdvcmtlcnM6Iik7Ci0gICAgbV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gPSB7IH07CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVB
U0VfTE9HKFByb2Nlc3MsICJkaXNhYmxlV29ya2VyczogRGlzYWJsaW5nIHdvcmtlcnMgKFNoYXJl
ZFdvcmtlcnM9JWQsIFNlcnZpY2VXb3JrZXJzPSVkKSIsIHdvcmtlclR5cGUuY29udGFpbnMoV29y
a2VyVHlwZTo6U2hhcmVkV29ya2VyKSwgd29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpT
ZXJ2aWNlV29ya2VyKSk7CisKICAgICB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1l
cigpOwogCisgICAgaWYgKCFpc1J1bm5pbmdXb3JrZXJzKCkpCisgICAgICAgIHByb2Nlc3NQb29s
KCkucmVtb3ZlRnJvbVdvcmtlclByb2Nlc3NlcygqdGhpcyk7CisKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi0gICAgcHJvY2Vzc1Bvb2woKS5yZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nl
c3NlcygqdGhpcyk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OkNsb3NlIHsgfSwgMCk7CisgICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMoV29ya2Vy
VHlwZTo6U2VydmljZVdvcmtlcikpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9zZSB7IH0sIDApOwogI2VuZGlmCisgICAgaWYgKHdvcmtl
clR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSkKKyAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9zZSB7
IH0sIDApOwogCiAgICAgbWF5YmVTaHV0RG93bigpOwogfQpAQCAtMjAwNCwxMSArMjA0NywxMyBA
QCBzdGF0aWMgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEs
IFVSTD4+IGNvbnRlbnRSdWxlTGlzdHNGcgogfQogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1By
b3h5OjplbmFibGVTZXJ2aWNlV29ya2Vycyhjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyJiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKQordm9pZCBXZWJQcm9jZXNz
UHJveHk6OmVuYWJsZVdvcmtlcnMoV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBjb25zdCBVc2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyJiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
KQogewotICAgIEFTU0VSVCghbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pOwotICAgIFdFQlBS
T0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiZW5hYmxlU2VydmljZVdvcmtl
cnM6Iik7Ci0gICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gPSBTZXJ2aWNlV29ya2VySW5m
b3JtYXRpb24geworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2Vy
LCAiZW5hYmxlV29ya2Vyczogd29ya2VyVHlwZT0ldSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih3
b3JrZXJUeXBlKSk7CisgICAgYXV0byYgd29ya2VySW5mb3JtYXRpb24gPSB3b3JrZXJUeXBlID09
IFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gOiBt
X3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsKKyAgICBBU1NFUlQoIXdvcmtlckluZm9ybWF0aW9u
KTsKKworICAgIHdvcmtlckluZm9ybWF0aW9uID0gV29ya2VySW5mb3JtYXRpb24gewogICAgICAg
ICBXZWJQYWdlUHJveHlJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLAogICAgICAgICBQYWdlSWRlbnRp
Zmllcjo6Z2VuZXJhdGUoKSwKICAgICAgICAgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0
YSB7CkBAIC0yMDIxLDkgKzIwNjYsOCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlU2Vy
dmljZVdvcmtlcnMoY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcgogICAgICAg
ICB7IH0KICAgICB9OwogICAgIHVwZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7
Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9j
ZXNzQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKKworICAgIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRp
b24od29ya2VyVHlwZSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVTbGVl
cERpc2FibGVyKFNsZWVwRGlzYWJsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgcmVhc29uLCBib29sIGRpc3BsYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oCmluZGV4IGY1MTRiOTkxNmFkNC4uMTkyZDVkMmI2ZjlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMTM2LDkgKzEzNiwxMyBAQCBwdWJs
aWM6CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZExhdW5jaFByb2Nlc3MgOiBib29sIHsgTm8sIFll
cyB9OwogICAgIGVudW0gY2xhc3MgQ2FwdGl2ZVBvcnRhbE1vZGUgOiBib29sIHsgRGlzYWJsZWQs
IEVuYWJsZWQgfTsKKyAgICBlbnVtIGNsYXNzIFdvcmtlclR5cGUgOiB1aW50MzJfdCB7CisgICAg
ICAgIFNlcnZpY2VXb3JrZXIgPSAxIDw8IDAsCisgICAgICAgIFNoYXJlZFdvcmtlciA9IDEgPDwg
MQorICAgIH07CiAKICAgICBzdGF0aWMgUmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlKFdlYlBy
b2Nlc3NQb29sJiwgV2Vic2l0ZURhdGFTdG9yZSosIENhcHRpdmVQb3J0YWxNb2RlLCBJc1ByZXdh
cm1lZCwgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlID0gV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2Rl
OjpTaGFyZWQsIFNob3VsZExhdW5jaFByb2Nlc3MgPSBTaG91bGRMYXVuY2hQcm9jZXNzOjpZZXMp
OwotICAgIHN0YXRpYyBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGVGb3JTZXJ2aWNlV29ya2Vy
cyhXZWJQcm9jZXNzUG9vbCYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdlYnNpdGVE
YXRhU3RvcmUmKTsKKyAgICBzdGF0aWMgUmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlRm9yV29y
a2VycyhXb3JrZXJUeXBlLCBXZWJQcm9jZXNzUG9vbCYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKIAogICAgIH5XZWJQcm9jZXNzUHJveHkoKTsKIApA
QCAtMTYxLDggKzE2NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzSW5Qcm9jZXNzQ2FjaGUo
Ym9vbCwgV2lsbFNodXREb3duID0gV2lsbFNodXREb3duOjpObyk7CiAgICAgYm9vbCBpc0luUHJv
Y2Vzc0NhY2hlKCkgY29uc3QgeyByZXR1cm4gbV9pc0luUHJvY2Vzc0NhY2hlOyB9CiAKLSAgICB2
b2lkIGVuYWJsZVNlcnZpY2VXb3JrZXJzKGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXImKTsKLSAgICB2b2lkIGRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgIHZvaWQgZW5h
YmxlV29ya2VycyhXb3JrZXJUeXBlLCBjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyJik7CisgICAgdm9pZCBkaXNhYmxlV29ya2VycyhPcHRpb25TZXQ8V29ya2VyVHlwZT4pOwog
CiAgICAgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSgpIGNvbnN0IHsgQVNTRVJU
KG1fd2Vic2l0ZURhdGFTdG9yZSk7IHJldHVybiAqbV93ZWJzaXRlRGF0YVN0b3JlOyB9CiAgICAg
dm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKTsKQEAgLTE5NCw2ICsx
OTgsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkgY29u
c3QgeyByZXR1cm4gISFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsgfQogICAgIGJvb2wgaXNT
dGFuZGFsb25lU2VydmljZVdvcmtlclByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBpc1J1bm5pbmdT
ZXJ2aWNlV29ya2VycygpICYmICFwYWdlQ291bnQoKTsgfQorICAgIGJvb2wgaXNSdW5uaW5nU2hh
cmVkV29ya2VycygpIGNvbnN0IHsgcmV0dXJuICEhbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbjsg
fQorICAgIGJvb2wgaXNTdGFuZGFsb25lU2hhcmVkV29ya2VyUHJvY2VzcygpIGNvbnN0IHsgcmV0
dXJuIGlzUnVubmluZ1NoYXJlZFdvcmtlcnMoKSAmJiAhcGFnZUNvdW50KCk7IH0KKyAgICBib29s
IGlzUnVubmluZ1dvcmtlcnMoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFdvcmtlckluZm9ybWF0
aW9uIHx8IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOyB9CiAKICAgICBib29sIGlzRHVtbXlQ
cm9jZXNzUHJveHkoKSBjb25zdDsKIApAQCAtMzU5LDEyICszNjYsMTMgQEAgcHVibGljOgogCiAg
ICAgdm9pZCB1cGRhdGVBdWRpYmxlTWVkaWFBc3NlcnRpb25zKCk7CiAKKyAgICB2b2lkIHNldFdv
cmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHVwZGF0ZVdvcmtlclByZWZl
cmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOworICAgIHZvaWQgZXN0YWJs
aXNoU2hhcmVkV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgY29uc3Qg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OworICAgIHZvaWQgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlKTsKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2Vy
Q29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0
IFN0cmluZyYpOwotICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtlclByZWZlcmVuY2VzU3RvcmUo
Y29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwotICAgIGJvb2wgaGFzU2VydmljZVdvcmtlclBh
Z2VQcm94eShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlEKSB7IHJldHVybiBtX3Nl
cnZpY2VXb3JrZXJJbmZvcm1hdGlvbiAmJiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2Vy
dmljZVdvcmtlclBhZ2VQcm94eUlEID09IHBhZ2VQcm94eUlEOyB9Ci0gICAgdm9pZCB1cGRhdGVT
ZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOworICAgIGJvb2wgaGFzU2VydmljZVdvcmtl
clBhZ2VQcm94eShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlEKSB7IHJldHVybiBt
X3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiAmJiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+
d29ya2VyUGFnZVByb3h5SUQgPT0gcGFnZVByb3h5SUQ7IH0KICAgICB2b2lkIHJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5Jik7CiAgICAgdm9pZCB1bnJl
Z2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5Jik7CiAgICAg
Ym9vbCBoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0
OwpAQCAtNjQ4LDE0ICs2NTYsMTUgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIFJlZlB0cjxMb2dn
ZXI+IG1fbG9nZ2VyOwogCi0gICAgc3RydWN0IFNlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiB7Ci0g
ICAgICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgc2VydmljZVdvcmtlclBhZ2VQcm94eUlEOwot
ICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUGFnZUlEOworICAg
IHN0cnVjdCBXb3JrZXJJbmZvcm1hdGlvbiB7CisgICAgICAgIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgd29ya2VyUGFnZVByb3h5SUQ7CisgICAgICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdv
cmtlclBhZ2VJRDsKICAgICAgICAgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSBpbml0
aWFsaXphdGlvbkRhdGE7CiAgICAgICAgIFByb2Nlc3NUaHJvdHRsZXI6OkFjdGl2aXR5VmFyaWFu
dCBhY3Rpdml0eTsKICAgICAgICAgV2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5PiBjbGllbnRQ
cm9jZXNzZXM7CiAgICAgfTsKLSAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJJbmZvcm1h
dGlvbj4gbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxXb3Jr
ZXJJbmZvcm1hdGlvbj4gbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247CisgICAgc3RkOjpvcHRp
b25hbDxXb3JrZXJJbmZvcm1hdGlvbj4gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbjsKICAgICBi
b29sIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nIHsgZmFsc2UgfTsKIAog
ICAgIEhhc2hNYXA8V2ViQ29yZTo6U2xlZXBEaXNhYmxlcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpTbGVlcERpc2FibGVyPj4gbV9zbGVlcERpc2FibGVyczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc3ZTBhOWZk
NDZjNi4uNDdkYzZkOWQ5ZmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTg4MSw2ICs4ODEsNyBAQAogCQk0NjE0RjEzMjI1REVEODc1
MDA3MDA2RTcgLyogR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkFDNTMyNDI1REVEODFFMDAzQjU3
RUMgLyogR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzLmggKi87IH07CiAJCTQ2MUNDQ0E1
MjMxNDg1QTcwMEI2NTlCOSAvKiBVSVJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjMyMzY4NTIzMTQ4MzNGMDBBNDhG
QTcgLyogVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5oICovOyB9OwogCQk0NjFDQ0NBNjIzMTQ4NUFB
MDBCNjU5QjkgLyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MzIzNjgzMjMxNDgxRUYwMEE0OEZBNyAvKiBX
ZWJSZW1vdGVPYmplY3RSZWdpc3RyeS5oICovOyB9OworCQk0NjFFMUJGMjI3OUEwMTE2MDA2QUY1
M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjFFMUJFRjI3OUEwMTBGMDA2
QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggKi87IH07
CiAJCTQ2M0ZENDgwMUVCOTQ1OTYwMEEyOTgyQyAvKiBXS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzRkQ0
N0YxRUI5NDU4NDAwQTI5ODJDIC8qIFdLUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYzRkQ0ODIxRUI5
NEVDMDAwQTI5ODJDIC8qIFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzRkQ0ODExRUI5NEVBRDAwQTI5ODJD
IC8qIFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oICovOyB9OwogCQk0NjU5RjI1RjI3NUZGNkIy
MDBCQkIzNjkgLyogQ2FwdGl2ZVBvcnRhbE1vZGVPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1OUYyNUUyNzVGRjZCMjAwQkJCMzY5IC8q
IENhcHRpdmVQb3J0YWxNb2RlT2JzZXJ2ZXIuaCAqLzsgfTsKQEAgLTkwMSwxMCArOTAyLDEzIEBA
CiAJCTQ2QzM5MjI5MjMxNkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkMzOTIyODIz
MTZFQzREMDA4RUVEOUIgLyogV2ViUGFnZVByb3h5SWRlbnRpZmllci5oICovOyB9OwogCQk0NkM1
QjdDRTI3QUFEREQzMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzVCN0NEMjdB
QUREQkUwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJGcmFtZUxvYWRlckNsaWVudC5oICovOyB9Owog
CQk0NkM1QjdDRjI3QUFEREQ2MDAwQzVCNDcgLyogUmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlk
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzVC
N0NCMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92aWRlci5oICov
OyB9OworCQk0NkM5MTZBQTI3OTlEMEEyMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM5MTZB
OTI3OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggKi87IH07CiAJCTQ2
Q0UzQjExMjNEOEM4NDkwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Q0UzQjEwMjNEOEM4
M0QwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCAqLzsgfTsKKwkJNDZENDhG
Q0UyNzk5RDdFMTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
RDQ4RkNEMjc5OUQ3REUwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmggKi87IH07CiAJCTQ2REYwNjNDMUYzOTA1RjgwMDE5ODBCQiAvKiBOZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2REYwNjNBMUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXIuaCAqLzsgfTsKIAkJNDZFRTI4NDkyNjlFMDRBQzAwREQ0OEFCIC8qIFdlYkJy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDZFRTI4NDgyNjlFMDQ5QjAwREQ0OEFCIC8qIFdlYkJyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeS5oICovOyB9OwogCQk0NkVFMjg0RDI2OUUwNTI1MDBERDQ4QUIgLyogTmV0
d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFRTI4NEMyNjlFMDUxNzAwREQ0OEFCIC8qIE5ldHdvcmtC
cm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCAqLzsgfTsKKwkJNDZFRTNFOEIyNzYzRkQyRjAwNjBD
NzBGIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODM4NjY3Mjc2M0ZBQjEwMENGOTE4MiAv
KiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2RjM4RThDMjQx
NkU2NzMwMDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZGMzhFOEIyNDE2RTY2RDAwNTkzNzVB
IC8qIFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmggKi87IH07CiAJCTQ2RjlCMjYzMjM1MjZFRjMw
MDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjlCMjYyMjM1MjZFRDAwMDZGRTVGQSAvKiBX
ZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCAqLzsgfTsKIAkJNDkzMTAyQkQyNjgzRjNEMDAwMkJC
ODg1IC8qIEFwcFByaXZhY3lSZXBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ5MzEwMkJDMjY4M0YzQTUwMDJCQjg4NSAvKiBBcHBQcml2YWN5UmVw
b3J0LmggKi87IH07CkBAIC00MjI0LDYgKzQyMjgsOSBAQAogCQk0NjA4ODlGRjI2MUZBOEE5MDBF
MjUwMEQgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MEY0ODhEMUY5OTZGNkMwMENGNEI4NyAvKiBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bk1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk0NjBGNDg4RTFGOTk2RjZDMDBDRjRCODcgLyogV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHBh
dGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25N
ZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk0NjFFMUJF
QzI3OUEwMTBFMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQ2MUUxQkVGMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQ2MUUxQkYwMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjIxMDdENzFGMzhEQkQzMDBERDc4MTAgLyog
UGluZ0xvYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGluZ0xv
YWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjMyMzY4MzIzMTQ4MUVGMDBB
NDhGQTcgLyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVt
b3RlT2JqZWN0UmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzMjM2
ODQyMzE0ODI1QzAwQTQ4RkE3IC8qIFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTQyNTUsOCArNDI2MiwxMSBAQAogCQk0NjgwOUE3QjIzRDkyMjUzMDBD
Mjk3RDAgLyogV2ViQ29va2llQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViQ29va2llQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjgzNTY5QTIxRTgxQ0M3MDA2RTI3QTMgLyogUHJvdmlzaW9uYWxQYWdlUHJveHkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvdmlzaW9uYWxQYWdlUHJveHkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzU2OUIyMUU4MUNDNzAwNkUyN0EzIC8qIFBy
b3Zpc2lvbmFsUGFnZVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFByb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDY4Mzg2NjcyNzYzRkFCMTAwQ0Y5MTgyIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjgzODY2ODI3NjNGQUIxMDBDRjkxODIg
LyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDY4OUI5MEYyNzU2RDE0MzAwMDdDNjUxIC8qIFJlbW90ZVdlYkxvY2tSZWdp
c3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OUI5MTAyNzU2RDE0MzAwMDdDNjUxIC8qIFJlbW90ZVdl
YkxvY2tSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVXZWJMb2NrUmVnaXN0
cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RDQjI3NjNGODM0MDA0
QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NjlERTgwMjI3M0VDQzVEMDA5MzAyNzYgLyogUHJvY2Vzc0xh
dW5jaGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQ
cm9jZXNzTGF1bmNoZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZB
MkI2MDYxRTU2NzVBMjAwQzNERURBIC8qIEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NU
aW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYWNrZ3JvdW5k
UHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NkEyQjYwNzFFNTY3NUEyMDBDM0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25z
aXZlbmVzc1RpbWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhY2tncm91
bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNDI3NSw3ICs0Mjg1LDExIEBACiAJCTQ2QzVCN0NCMjdBQUREQkUwMDBDNUI0NyAvKiBS
ZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVXb3Jr
ZXJMaWJXZWJSVENQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkM1
QjdDQzI3QUFEREJFMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkM1QjdDRDI3QUFEREJFMDAwQzVCNDcgLyog
UmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlV29y
a2VyRnJhbWVMb2FkZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZD
OTE2QTgyNzk5RDA5RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0NkM5MTZBOTI3OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2Vy
U2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkNFM0IxMDIzRDhDODNEMDAxNkE5NkEgLyogV2ViQmFj
a0ZvcndhcmRMaXN0Q291bnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkJhY2tGb3J3YXJkTGlzdENvdW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
NkQ0OEZDQzI3OTlEN0REMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZE
NDhGQ0QyNzk5RDdERTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRGMDYzOTFGMzkw
NUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2REYwNjNBMUYzOTA1RTUwMDE5ODBC
QiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2RTk3NjBBMjc1N0Y2QzkwMEFDREQzNyAvKiBXZWJCcm9hZGNhc3RD
aGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViQnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNDI4NSw2ICs0Mjk5LDcgQEAKIAkJNDZFRTI4NEEyNjlFMDUxNzAwREQ0OEFCIC8q
IE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZFRTI4NEIyNjlFMDUxNzAwREQ0OEFCIC8q
IE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RUUyODRDMjY5RTA1MTcwMERENDhBQiAvKiBO
ZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDZFRTNFOEEyNzYzRkQyQTAwNjBDNzBGIC8qIFdlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDZGMzhFOEIyNDE2RTY2RDAwNTkzNzVBIC8qIFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RjlCMjYyMjM1MjZFRDAwMDZGRTVGQSAv
KiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ5MzEwMkJDMjY4M0YzQTUwMDJCQjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFwcFByaXZhY3lSZXBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTkyOTQsNiArOTMwOSwyMCBAQAogCQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNDY4Mzg2NjUyNzYzRkExQjAwQ0Y5MTgyIC8qIFNoYXJl
ZFdvcmtlciAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
NDZDOTE2QTgyNzk5RDA5RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAgKi8s
CisJCQkJNDZDOTE2QTkyNzk5RDA5RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5o
ICovLAorCQkJCTQ2ODM4NjY4Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk0NjgzODY2NzI3NjNGQUIxMDBDRjkxODIgLyogV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oICovLAorCQkJCTQ2RUUzRThBMjc2M0ZEMkEw
MDYwQzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluICov
LAorCQkJCTQ2RDQ4RkNDMjc5OUQ3REQwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk0NkQ0OEZDRDI3OTlEN0RFMDA3RDIwMTQg
LyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oICovLAorCQkJKTsK
KwkJCXBhdGggPSBTaGFyZWRXb3JrZXI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OwogCQk0NjlERTgwMTI3M0VDQzVEMDA5MzAyNzYgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtOTM1OCw2ICs5Mzg3LDcgQEAKIAkJCQk1MTQ1
MjZFQTI3MUUxNjEwMDAwNDY3QjYgLyogTm90aWZpY2F0aW9ucyAqLywKIAkJCQk1QzAxQkMzNTI2
RDQ2QUQ0MDBGRUI0MkYgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgKi8sCiAJCQkJOTNCQTA0
RDkyMTUxQURDRDAwN0Y0NTVGIC8qIFNlcnZpY2VXb3JrZXIgKi8sCisJCQkJNDY4Mzg2NjUyNzYz
RkExQjAwQ0Y5MTgyIC8qIFNoYXJlZFdvcmtlciAqLywKIAkJCQk5MzA4NURDMjI2RTFCQjY1MDAw
RUM2QTcgLyogc3RvcmFnZSAqLywKIAkJCQk0MTMwNzU5NzFERTg0RUQ3MDAzOUVDNjkgLyogd2Vi
cnRjICovLAogCQkJCTkzQjI2MTQzMjI3RDE0MzEwMEI5N0E3NiAvKiBXZWJTdG9yYWdlICovLApA
QCAtOTQ2MCw4ICs5NDkwLDEyIEBACiAJCQkJNDE5QUNGOUIxRjk4MUQyNjAwOUYxQTgzIC8qIFdl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCAqLywKIAkJCQk1MUJFQjYyOTFGM0E1QUNE
MDA1MDI5QjkgLyogV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcCAqLywKIAkJCQk1MUJFQjYy
QTFGM0E1QUNEMDA1MDI5QjkgLyogV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmggKi8sCisJCQkJ
NDYxRTFCRUMyNzlBMDEwRTAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5jcHAgKi8sCisJCQkJNDYxRTFCRUYyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICovLAorCQkJCTQ2MUUxQkYwMjc5
QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4gKi8sCiAJCQkJNDY2OEEwQkIyN0FCNjA0MDAwQzcyMEJDIC8qIFdlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwICovLAogCQkJCTQ2NjhBMEI4MjdBQjYwM0YwMEM3
MjBCQyAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggKi8sCisJCQkJNDY5NDNE
Q0IyNzYzRjgzNDAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVz
c2FnZXMuaW4gKi8sCiAJCQkJNDY2OEEwQjkyN0FCNjAzRjAwQzcyMEJDIC8qIFdlYlNoYXJlZFdv
cmtlclByb3ZpZGVyLmNwcCAqLywKIAkJCQk0NjY4QTBCQTI3QUI2MDQwMDBDNzIwQkMgLyogV2Vi
U2hhcmVkV29ya2VyUHJvdmlkZXIuaCAqLywKIAkJCQk1MTdBNTMwMzFGNDc5M0IyMDBEQ0RDMEEg
LyogV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcCAqLywKQEAgLTEzNjU4LDggKzEzNjkyLDEyIEBA
CiAJCQkJN0MzNjFENzMxOTI3RkEzNjAwMzZBNTlEIC8qIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlEM0I5NDg0OTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2Vh
cmNoUG9wdXBNZW51LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUJFQjYyQzFGM0E1QUQ3MDA1MDI5
QjkgLyogV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjFF
MUJGMjI3OUEwMTE2MDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjY4QTBCRDI3QUI2MDU2MDBDNzIwQkMgLyog
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY2
OEEwQkMyN0FCNjA1MDAwQzcyMEJDIC8qIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0NkM5MTZBQTI3OTlEMEEyMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2Vy
U2VydmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkVFM0U4QjI3NjNGRDJGMDA2MEM3MEYgLyog
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZE
NDhGQ0UyNzk5RDdFMTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTVDOEREMzgwMUZFNDUyMTYwMEYyQTU1NiAv
KiBXZWJzaXRlQXV0b3BsYXlQb2xpY3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDgzMkQ3MUE5
Q0RGOTYwMDhCNERGRSAvKiBXZWJzaXRlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0ODMy
RDExQTlCREMyRjAwOEI0REZFIC8qIFdlYnNpdGVEYXRhUmVjb3JkLmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDgxZGQwNDExYTIzOS4uYmIzNTQ3ZjQ2YWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTU3LDcgKzU3LDEwIEBACiAjaW5jbHVk
ZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU2VydmljZVdvcmtl
clByb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
LmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbk1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5u
ZWxNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNvY2tldFN0cmVhbS5oIgpAQCAtMTc0LDYgKzE3
NywxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUAogICAgICAgICByZXR1cm47CiAgICAgfQog
I2VuZGlmCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkp
IHsKKyAgICAgICAgc2hhcmVkV29ya2VyQ29ubmVjdGlvbigpLmRpZFJlY2VpdmVNZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAg
QVNTRVJUKFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9u
KCkpOworICAgICAgICBpZiAoYXV0byogY29udGV4dE1hbmFnZXJDb25uZWN0aW9uID0gU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAg
ICAgIHN0YXRpY19jYXN0PFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiY+
KCpjb250ZXh0TWFuYWdlckNvbm5lY3Rpb24pLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAjaWYgRU5BQkxFKEFQUExFX1BB
WV9SRU1PVEVfVUkpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1l
c3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCBlZGMwNDkzYmQzZWQuLjBiNjQ4MGE2MWQzNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgZW51bSBjbGFzcyBIVFRQQ29v
a2llQWNjZXB0UG9saWN5IDogdWludDhfdDsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uOwogY2xhc3MgV2ViU1dDbGllbnRDb25uZWN0aW9uOwogY2xhc3MgV2ViU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3Bw
CmluZGV4IGFkMDM3MjVmMTA1NC4uNjZjYjQ5OWIzZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlckNvbnRleHRE
YXQKICAgICAgICAgV2ViUGFnZTo6dXBkYXRlU2V0dGluZ3NHZW5lcmF0ZWQoKm1fcHJlZmVyZW5j
ZXNTdG9yZSwgcGFnZS0+c2V0dGluZ3MoKSk7CiAgICAgICAgIHBhZ2UtPnNldHRpbmdzKCkuc2V0
U3RvcmFnZUJsb2NraW5nUG9saWN5KHN0YXRpY19jYXN0PFN0b3JhZ2VCbG9ja2luZ1BvbGljeT4o
bV9wcmVmZXJlbmNlc1N0b3JlLT5nZXRVSW50MzJWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tl
eTo6c3RvcmFnZUJsb2NraW5nUG9saWN5S2V5KCkpKSk7CiAgICAgfQotICAgIFNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eTo6c2V0dXBQYWdlRm9yU2VydmljZVdvcmtlcihwYWdlLmdldCgpLCBjb250
ZXh0RGF0YSk7CisgICAgcGFnZS0+c2V0dXBGb3JSZW1vdGVXb3JrZXIoY29udGV4dERhdGEuc2Ny
aXB0VVJMLCBjb250ZXh0RGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdpbigpLCBjb250ZXh0
RGF0YS5yZWZlcnJlclBvbGljeSk7CiAgICAgYXV0byBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkg
PSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZShXVEZNb3ZlKHBhZ2UpLCBXVEZNb3Zl
KGNvbnRleHREYXRhKSwgV1RGTW92ZSh3b3JrZXJEYXRhKSwgV1RGTW92ZShlZmZlY3RpdmVVc2Vy
QWdlbnQpLCB3b3JrZXJUaHJlYWRNb2RlLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZVN0
b3JhZ2VQcm92aWRlcigpKTsKIAogICAgIGlmIChsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNWIwMWFkMDUyOTVmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDEyOSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVXZWJMb2NrUmVnaXN0
cnkuaCIKKyNpbmNsdWRlICJSZW1vdGVXb3JrZXJGcmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1
ZGUgIlJlbW90ZVdvcmtlckxpYldlYlJUQ1Byb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViQnJvYWRj
YXN0Q2hhbm5lbFJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIu
aCIKKyNpbmNsdWRlICJXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEuaCIKKyNpbmNsdWRl
ICJXZWJEYXRhYmFzZVByb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUg
IldlYlByZWZlcmVuY2VzS2V5cy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRl
ICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJXZWJTb2NrZXRQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29u
dHJvbGxlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRW1wdHlDbGllbnRzLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlQ29uZmlndXJhdGlvbi5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NoYXJlZFdvcmtlclRocmVhZFByb3h5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9V
c2VyQWdlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlckZldGNoUmVzdWx0Lmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25u
ZWN0aW9uPiYmIGNvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91
cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHByZWZlcmVuY2Vz
U3RvcmUsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXphdGlvbkRh
dGEpCisgICAgOiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUoY29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MpKQorICAgICwgbV9yZWdpc3RyYWJsZURvbWFpbihXVEZNb3ZlKHJl
Z2lzdHJhYmxlRG9tYWluKSkKKyAgICAsIG1fcGFnZUdyb3VwSUQocGFnZUdyb3VwSUQpCisgICAg
LCBtX3dlYlBhZ2VQcm94eUlEKHdlYlBhZ2VQcm94eUlEKQorICAgICwgbV9wYWdlSUQocGFnZUlE
KQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICwgbV91c2VyQWdlbnQoV2ViQ29yZTo6c3RhbmRh
cmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKHsgfSkpCisjZWxzZQorICAgICwgbV91c2Vy
QWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkKKyNlbmRpZgorICAgICwgbV91c2VyQ29udGVudENv
bnRyb2xsZXIoV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpnZXRPckNyZWF0ZShpbml0aWFsaXph
dGlvbkRhdGEudXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikpCit7CisjaWYgRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkQ29u
dGVudFJ1bGVMaXN0cyhXVEZNb3ZlKGluaXRpYWxpemF0aW9uRGF0YS5jb250ZW50UnVsZUxpc3Rz
KSk7CisjZW5kaWYKKworICAgIHVwZGF0ZVByZWZlcmVuY2VzU3RvcmUocHJlZmVyZW5jZXNTdG9y
ZSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZGlzYWJsZVRlcm1pbmF0aW9uKCk7Cit9
CisKK1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6fldlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbigpID0gZGVmYXVsdDsKKwordm9pZCBXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmVzdGFibGlzaENvbm5lY3Rpb24oQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fY29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uIHsgbV93ZWJQYWdlUHJveHlJRCwgbV9yZWdpc3RyYWJsZURvbWFpbiB9LCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgMCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29y
ZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OlBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdCB7IHNoYXJlZFdvcmtlcklkZW50aWZpZXIs
IGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwgfSwgMCk7
Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp1cGRh
dGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQorewor
ICAgIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzR2VuZXJhdGVkKHN0b3JlKTsKKyAgICBtX3By
ZWZlcmVuY2VzU3RvcmUgPSBzdG9yZTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OmxhdW5jaFNoYXJlZFdvcmtlcihXZWJDb3JlOjpDbGllbnRPcmln
aW4mJiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2Vy
SWRlbnRpZmllciwgVVJMJiYgdXJsLCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0
aW9ucywgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJiB3b3JrZXJGZXRjaFJlc3VsdCkKK3sK
KyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OmxhdW5jaFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmll
cj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgYXV0
byBwYWdlQ29uZmlndXJhdGlvbiA9IFdlYkNvcmU6OnBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5
Q2xpZW50cyhXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXNzaW9uSUQoKSk7CisKKyAgICBwYWdl
Q29uZmlndXJhdGlvbi5kYXRhYmFzZVByb3ZpZGVyID0gV2ViRGF0YWJhc2VQcm92aWRlcjo6Z2V0
T3JDcmVhdGUobV9wYWdlR3JvdXBJRCk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uc29ja2V0UHJv
dmlkZXIgPSBXZWJTb2NrZXRQcm92aWRlcjo6Y3JlYXRlKG1fd2ViUGFnZVByb3h5SUQpOworICAg
IHBhZ2VDb25maWd1cmF0aW9uLmJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSA9IFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSgpOworICAgIHBhZ2VDb25maWd1
cmF0aW9uLndlYkxvY2tSZWdpc3RyeSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvY2tS
ZWdpc3RyeSgpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnVzZXJDb250ZW50UHJvdmlkZXIgPSBt
X3VzZXJDb250ZW50Q29udHJvbGxlcjsKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICBwYWdlQ29u
ZmlndXJhdGlvbi5saWJXZWJSVENQcm92aWRlciA9IG1ha2VVbmlxdWVSZWY8UmVtb3RlV29ya2Vy
TGliV2ViUlRDUHJvdmlkZXI+KCk7CisjZW5kaWYKKworICAgIHBhZ2VDb25maWd1cmF0aW9uLmxv
YWRlckNsaWVudEZvck1haW5GcmFtZSA9IG1ha2VVbmlxdWVSZWY8UmVtb3RlV29ya2VyRnJhbWVM
b2FkZXJDbGllbnQ+KG1fd2ViUGFnZVByb3h5SUQsIG1fcGFnZUlELCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI6OmdlbmVyYXRlKCksIG1fdXNlckFnZW50KTsKKworICAgIGF1dG8gcGFnZSA9IG1h
a2VVbmlxdWVSZWY8V2ViQ29yZTo6UGFnZT4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwor
ICAgIGlmIChtX3ByZWZlcmVuY2VzU3RvcmUpIHsKKyAgICAgICAgV2ViUGFnZTo6dXBkYXRlU2V0
dGluZ3NHZW5lcmF0ZWQoKm1fcHJlZmVyZW5jZXNTdG9yZSwgcGFnZS0+c2V0dGluZ3MoKSk7Cisg
ICAgICAgIHBhZ2UtPnNldHRpbmdzKCkuc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KHN0YXRpY19j
YXN0PFdlYkNvcmU6OlN0b3JhZ2VCbG9ja2luZ1BvbGljeT4obV9wcmVmZXJlbmNlc1N0b3JlLT5n
ZXRVSW50MzJWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6c3RvcmFnZUJsb2NraW5nUG9s
aWN5S2V5KCkpKSk7CisgICAgfQorICAgIHBhZ2UtPnNldHVwRm9yUmVtb3RlV29ya2VyKHVybCwg
b3JpZ2luLnRvcE9yaWdpbiwgd29ya2VyRmV0Y2hSZXN1bHQucmVmZXJyZXJQb2xpY3kpOworICAg
IGF1dG8gc2hhcmVkV29ya2VyVGhyZWFkUHJveHkgPSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eTo6Y3JlYXRlKFdURk1vdmUocGFnZSksIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIG9y
aWdpbiwgdXJsLCBXVEZNb3ZlKHdvcmtlckZldGNoUmVzdWx0KSwgV1RGTW92ZSh3b3JrZXJPcHRp
b25zKSwgbV91c2VyQWdlbnQsIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFnZVBy
b3ZpZGVyKCkpOworCisgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpLnJlZ2lzdGVyU2hhcmVkV29ya2VyVGhyZWFkKFdURk1vdmUoc2hhcmVkV29ya2Vy
VGhyZWFkUHJveHkpKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OmNsb3NlKCkKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmNsb3NlOiBTaGFyZWQgd29ya2Vy
IHByb2Nlc3MgaXMgcmVxdWVzdGVkIHRvIHN0b3AgYWxsIHNoYXJlZCB3b3JrZXJzIik7CisgICAg
c2V0QXNDbG9zZWQoKTsKKworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDbG9zZVNoYXJlZFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uIHsgfSwgMCk7CisgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnN0b3BBbGxTaGFyZWRXb3JrZXJzKCk7CisgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5hYmxlVGVybWluYXRpb24oKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWUyMzIzNjU2
MjhhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw3NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgIklkZW50aWZpZXJUeXBlcy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5o
IgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJXZWJQcmVm
ZXJlbmNlc1N0b3JlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBDbGllbnRPcmln
aW47CitzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7CitzdHJ1Y3QgV29ya2VyT3B0aW9uczsKK30K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjsK
K3N0cnVjdCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhOworCitjbGFzcyBXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiYsIFBhZ2VHcm91cElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgU2VydmljZVdv
cmtlckluaXRpYWxpemF0aW9uRGF0YSYmKTsKKyAgICB+V2ViU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uKCk7CisKKyAgICB2b2lkIGVzdGFibGlzaENvbm5lY3Rpb24oQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dv
cmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMKSBmaW5hbDsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKK3ByaXZhdGU6CisgICAgLy8g
SVBDIE1lc3NhZ2VzLgorICAgIHZvaWQgbGF1bmNoU2hhcmVkV29ya2VyKFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29y
ZTo6V29ya2VyT3B0aW9ucyYmLCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmKTsKKyAgICB2
b2lkIHVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwor
ICAgIHZvaWQgc2V0VXNlckFnZW50KFN0cmluZyYmIHVzZXJBZ2VudCkgeyBtX3VzZXJBZ2VudCA9
IFdURk1vdmUodXNlckFnZW50KTsgfQorICAgIHZvaWQgY2xvc2UoKTsKKworICAgIFJlZjxJUEM6
OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3M7CisgICAgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKKyAgICBQYWdlR3JvdXBJZGVu
dGlmaWVyIG1fcGFnZUdyb3VwSUQ7CisgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBtX3dlYlBh
Z2VQcm94eUlEOworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOworICAgIFN0
cmluZyBtX3VzZXJBZ2VudDsKKyAgICBSZWY8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyPiBtX3Vz
ZXJDb250ZW50Q29udHJvbGxlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYlByZWZlcmVuY2VzU3Rv
cmU+IG1fcHJlZmVyZW5jZXNTdG9yZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDgyYTRh
ZGE1M2ZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBA
IC0wLDAgKzEsMzAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
bWVzc2FnZXMgLT4gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIE5vdFJl
ZkNvdW50ZWQgeworICAgIExhdW5jaFNoYXJlZFdvcmtlcihzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyLCBVUkwgdXJsLCBzdHJ1Y3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyB3b3Jr
ZXJPcHRpb25zLCBzdHJ1Y3QgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQgd29ya2VyRmV0Y2hS
ZXN1bHQpCisgICAgUG9zdENvbm5lY3RFdmVudChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlm
aWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBv
cnQgcG9ydCwgU3RyaW5nIHNvdXJjZU9yaWdpbikKKyAgICBUZXJtaW5hdGVTaGFyZWRXb3JrZXIo
V2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyKQor
ICAgIFVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNT
dG9yZSBzdG9yZSkKKyAgICBTZXRVc2VyQWdlbnQoU3RyaW5nIHVzZXJBZ2VudCkKKyAgICBDbG9z
ZSgpCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCmluZGV4IDVjNWZk
YWE2MDA1Ny4uZDdkOTk0ZGUxZjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uLmNwcApAQCAtMjYsMjMgKzI2LDQ0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIgogCisjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlck1hbmFnZXIuaD4KKyNp
bmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Xb3Jr
ZXJPcHRpb25zLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCkgPSBkZWZhdWx0
OworI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhT
aGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gV2Vi
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsIFdlYkNvcmU6OlByb2Nl
c3M6OmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQorCitXZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCkK
K3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uOiIpOworfQorCitXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjp+V2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xP
RygifldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Iik7Cit9CiAKIElQQzo6Q29ubmVj
dGlvbiogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKSBjb25zdAogewogICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwogfQogCi12b2lkIFdl
YlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnJlcXVlc3RTaGFyZWRXb3JrZXIoY29uc3Qg
VVJMJiB1cmwsIFdlYkNvcmU6OlNoYXJlZFdvcmtlciYgc2hhcmVkV29ya2VyLCBXZWJDb3JlOjpU
cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgcG9ydCwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmIHdv
cmtlck9wdGlvbnMpCit2b2lkIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnJlcXVl
c3RTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFdlYkNv
cmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciwgY29uc3QgVVJMJiB1cmwsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBw
b3J0LCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25zKQogewotICAg
IC8vIEZJWE1FOiBTaG91bGQgc2VuZCBJUEMgdG8gdGhlIG5ldHdvcmsgcHJvY2Vzcy4KLSAgICBX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0KHVybCwgc2hh
cmVkV29ya2VyLCBXVEZNb3ZlKHBvcnQpLCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMpKTsKKyAgICBD
T05ORUNUSU9OX1JFTEVBU0VfTE9HKCJyZXF1ZXN0U2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbjo6UmVxdWVzdFNoYXJlZFdvcmtlciB7IG9yaWdpbiwgc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgdXJsLCBXVEZNb3ZlKHBvcnQpLCB3b3JrZXJPcHRp
b25zIH0pOwogfQogCit2b2lkIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnNoYXJl
ZFdvcmtlck9iamVjdElzR29pbmdBd2F5KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK3sKKyAgICBDT05ORUNUSU9OX1JF
TEVBU0VfTE9HKCJzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheTogc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50
b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb246OlNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5IHsgc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciB9KTsKK30KKworI3VuZGVmIENPTk5FQ1RJT05fUkVM
RUFTRV9MT0cKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLmgKaW5kZXggNjFlZTVhZjQyNGRjLi5kMzJjNTJlMWUxNmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKQEAgLTI1LDIwICsyNSwyNSBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VT
ZW5kZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24u
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIgeworY2xhc3MgV2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVz
c2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbik7IH0KKyAgICB+V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbigpOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBXZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uKCk7CiAKICAgICAvLyBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLgotICAgIHZvaWQgcmVxdWVzdFNoYXJlZFdvcmtlcihjb25zdCBVUkwmLCBXZWJD
b3JlOjpTaGFyZWRXb3JrZXImLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdl
YkNvcmU6Oldvcmtlck9wdGlvbnMmJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0U2hhcmVkV29y
a2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBv
cnQmJiwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYpIGZpbmFsOworICAgIHZvaWQgc2hh
cmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllcikgZmluYWw7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCiAgICAgSVBDOjpD
b25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43MjJhZTFhMzJjOTMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjcgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisj
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
KyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gV2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbiB7CisgICAgRmV0Y2hTY3JpcHRJbkNsaWVudChVUkwgdXJsLCBXZWJD
b3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdvcmtlck9wdGlvbnMpIC0+IChz
dHJ1Y3QgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQgZmV0Y2hSZXN1bHQpIEFzeW5jCisgICAg
Tm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihXZWJDb3JlOjpTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgZXJyb3IpCisgICAgUG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNv
cmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciwgU3RyaW5nIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIFN0cmluZyBzb3VyY2VVUkwpCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggZDVkZGE3MTYzMTZiLi44Yzc0YzdjYmNhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTg0LDYgKzg0LDggQEAKICNpbmNsdWRlICJXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTZXJ2aWNlV29ya2VyUHJvdmlk
ZXIuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
aCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmgiCiAjaW5jbHVkZSAi
V2ViU29ja2V0U3RyZWFtLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKQEAgLTEzNCw2ICsx
MzYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0
dGluZ3MuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGljYXRvci5oPgogI2luY2x1ZGUgPHBh
bC9Mb2dnaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0FsZ29yaXRobXMuaD4KQEAgLTkwNCw3ICs5MDcs
NiBAQCB2b2lkIFdlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZQogICAgIH0KIAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLSAgICAvLyBGSVhNRTogUmVtb3ZlPwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICBBU1NFUlQoU1dDb250ZXh0TWFuYWdl
cjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKTsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbiA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rp
b24oKSkKQEAgLTkxMyw2ICs5MTUsMTMgQEAgdm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGUKICAgICB9
CiAjZW5kaWYKIAorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNz
YWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgQVNTRVJUKFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpOworICAgICAgICBpZiAoYXV0byogY29udGV4dE1h
bmFnZXJDb25uZWN0aW9uID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigp
LmNvbm5lY3Rpb24oKSkKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFdlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbiY+KCpjb250ZXh0TWFuYWdlckNvbm5lY3Rpb24pLmRpZFJl
Y2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAg
fQorCiAgICAgTE9HX0VSUk9SKCJVbmhhbmRsZWQgd2ViIHByb2Nlc3MgbWVzc2FnZSAnJXMnIChk
ZXN0aW5hdGlvbjogJSIgUFJJdTY0ICIgcGlkOiAlZCkiLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkpLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSwgc3RhdGljX2Nhc3Q8aW50Pihn
ZXRDdXJyZW50UHJvY2Vzc0lEKCkpKTsKIH0KIApAQCAtMTkxOSw2ICsxOTI4LDE2IEBAIExpYldl
YlJUQ05ldHdvcmsmIFdlYlByb2Nlc3M6OmxpYldlYlJUQ05ldHdvcmsoKQogICAgIHJldHVybiAq
bV9saWJXZWJSVENOZXR3b3JrOwogfQogCit2b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJl
ZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlm
aWVyIHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBS
ZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBTZXJ2aWNlV29ya2VySW5pdGlh
bGl6YXRpb25EYXRhJiYgaW5pdGlhbGl6YXRpb25EYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgLy8gV2UgYXJlIGluIHRoZSBTaGFyZWQg
V29ya2VyIGNvbnRleHQgcHJvY2VzcyBhbmQgdGhlIGNhbGwgYmVsb3cgZXN0YWJsaXNoZXMgb3Vy
IGNvbm5lY3Rpb24gdG8gdGhlIE5ldHdvcmsgUHJvY2VzcworICAgIC8vIGJ5IGNhbGxpbmcgZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlciBu
ZWVkcyB0byB1c2UgdGhlIHNhbWUgdW5kZXJseWluZyBJUEM6OkNvbm5lY3Rpb24gYXMgdGhlCisg
ICAgLy8gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIGZvciBzeW5jaHJvbml6YXRpb24gcHVycG9z
ZXMuCisgICAgYXV0byYgaXBjQ29ubmVjdGlvbiA9IGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKTsKKyAgICBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2lu
Z2xldG9uKCkuc2V0Q29ubmVjdGlvbihtYWtlVW5pcXVlPFdlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVjdGlvbiwgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFp
biksIHBhZ2VHcm91cElELCB3ZWJQYWdlUHJveHlJRCwgcGFnZUlELCBzdG9yZSwgV1RGTW92ZShp
bml0aWFsaXphdGlvbkRhdGEpKSk7CisgICAgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpLmNvbm5lY3Rpb24oKS0+ZXN0YWJsaXNoQ29ubmVjdGlvbihXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7Cit9CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiB2b2lkIFdl
YlByb2Nlc3M6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRl
bnRpZmllciB3ZWJQYWdlUHJveHlJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURv
bWFpbiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2Vy
dmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRh
JiYgaW5pdGlhbGl6YXRpb25EYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBk
ZDhkNzRmZmYyNjkuLjY1Zjc3MzIwMWE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCkBAIC00NjksNiArNDY5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdhbWVwYWREaXNj
b25uZWN0ZWQodW5zaWduZWQgaW5kZXgpOwogI2VuZGlmCiAKKyAgICB2b2lkIGVzdGFibGlzaFNo
YXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVu
dGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
Y29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYs
IFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxpc2hT
ZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElk
ZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
Jiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmll
cj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRp
b25EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZGZkMzA2
NDU2M2Y5Li5lNTUyOTZiOTA0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMDAsNiArMTAwLDggQEAgbWVzc2FnZXMgLT4gV2Vi
UHJvY2VzcyBMZWdhY3lSZWNlaXZlciBOb3RSZWZDb3VudGVkIHsKICAgICBHYW1lcGFkRGlzY29u
bmVjdGVkKHVuc2lnbmVkIGluZGV4KQogI2VuZGlmCiAKKyAgICBFc3RhYmxpc2hTaGFyZWRXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJZGVu
dGlmaWVyIHBhZ2VHcm91cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFn
ZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6
V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9t
YWluLCBzdHJ1Y3QgV2ViS2l0OjpTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhIGluaXRp
YWxpemF0aW9uRGF0YSkgLT4gKCkgQXN5bmMKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ICAgICBFc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKFdlYktpdDo6UGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2ViS2l0OjpXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVy
LCBzdHJ1Y3QgV2ViS2l0OjpTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhIGluaXRpYWxp
emF0aW9uRGF0YSkgLT4gKCkgQXN5bmMKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450801</attachid>
            <date>2022-02-03 11:43:21 -0800</date>
            <delta_ts>2022-02-03 12:22:50 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>235958_SharedWorker_multiProcess_wip.patch</filename>
            <type>text/plain</type>
            <size>263248</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDQwMjQ2NmU0OWYwZS4uMTcwNGMzMDNkY2JjIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTQ2Myw3ICs0NjMsNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYi1sb2Nrcy9zdGVhbC50ZW50YXRpdmUuaHR0cHMuYW55Lmh0bWwgWyBEdW1wSgog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3Ro
ZS1hbmFseXNlcm5vZGUtaW50ZXJmYWNlL3Rlc3QtYW5hbHlzZXItbWluaW11bS5odG1sIFsgRHVt
cEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUt
ZGlzY29ubmVjdC1hdWRpb3BhcmFtLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NhbWUtb3JpZ2luLWNoZWNr
LnN1Yi5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMuaHRt
bCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCiBmYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWJh
Y2stZm9yd2FyZC1jYWNoZS5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGZhc3Qv
aGlzdG9yeS9wYWdlLWNhY2hlLWNyZWF0ZUltYWdlQml0bWFwLmh0bWwgWyBEdW1wSlNDb25zb2xl
TG9nSW5TdGRFcnIgXQogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLWluLWxv
YWRpbmctaWZyYW1lLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQpAQCAtODUzLDYg
Kzg1Miw3IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdXNlci10aW1pbmcvbWFy
ay5odG1sIFsgRmFpbHVyZSBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dXNlci10aW1pbmcvbWVhc3VyZV9hc3NvY2lhdGVkX3dpdGhfbmF2aWdhdGlvbl90aW1pbmcuaHRt
bCBbIEZhaWx1cmUgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
d2ViYXBwYXBpcy9zeXN0ZW0tc3RhdGUtYW5kLWNhcGFiaWxpdGllcy90aGUtbmF2aWdhdG9yLW9i
amVjdC9wbHVnaW5zLWFuZC1taW1ldHlwZXMuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2JlYWNvbi9iZWFjb24tcmVkaXJlY3Quc3ViLndpbmRv
dy5odG1sIFsgRmFpbHVyZSBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L2Fub255bW91cy1pZnJhbWUvc2hhcmVk
d29ya2VyLXBhcnRpdGlvbmluZy50ZW50YXRpdmUuaHR0cHMud2luZG93Lmh0bWwgWyBGYWlsdXJl
IFBhc3MgXQogCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2RvY3VtZW50LW1ldGFkYXRhL3RoZS1saW5rLWVsZW1lbnQvbGluay1sb2FkLWVycm9yLWV2ZW50
cy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZG9jdW1lbnQtbWV0YWRhdGEvdGhlLWxpbmstZWxl
bWVudC9saW5rLWxvYWQtZXJyb3ItZXZlbnRzLmh0dHBzLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9n
SW5TdGRFcnIgXQpAQCAtNTE1Nyw2ICs1MTU3LDEwIEBAIHdlYmtpdC5vcmcvYi8xODM5OTQgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nzb20vY3NzLXN0eWxlLWF0dHItZGVj
CiAjIFRlc3QgaXMgY3Jhc2hpbmcgaW4gRGVidWcgYnVpbGRzIHNpbmNlIGltcG9ydC4KIHdlYmtp
dC5vcmcvYi8yMzQ5NzcgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
ZG9tL2V2ZW50cy9mb2N1cy1ldmVudC1kb2N1bWVudC1tb3ZlLmh0bWwgWyBTa2lwIF0KIAorIyBU
ZXN0IGlzIGZsYWt5IGJlY2F1c2UgTWVzc2FnZVBvcnQgbWVzc2FnZXMgbWF5IGdldCByZWNlaXZl
ZCBpbiBhIGRpZmZlcmVudCBvcmRlciB3aGVuIHNldmVyYWwgTWVzc2FnZVBvcnRzIGFyZSBpbnZv
bHZlZCwKKyMgZHVlIHRvIGhvdyBNZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpIGlzIGlt
cGxlbWVudGVkLgoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJl
ZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJy
IEZhaWx1cmUgUGFzcyBdCisKICMgUGx1Z2lucwogIyBGSVhNRTogUmVtb3ZlIHRoZXNlIHRlc3Rz
LgogcGx1Z2lucy8gWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtl
ci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
aW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dApp
bmRleCAwZTk5NzI0Yjg2NGIuLjY4OThiNTRhYWI2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9p
bnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3Vi
LWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFs
IFVSTCBodHRwczovL3d3dy5sb2NhbGhvc3Q6OTQ0NC9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9z
dXBwb3J0L3Jlc291cmNlLnB5P2Nyb3NzLW9yaWdpbi1mZXRjaAotQmxvY2tlZCBhY2Nlc3MgdG8g
ZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHkt
cG9saWN5L3N1cHBvcnQvcmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLXhocgotQmxvY2tlZCBhY2Nl
c3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L3N1cHBvcnQvcmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLWZldGNoCiAKIFBB
U1MgU2FtZS1vcmlnaW4gJ2ZldGNoKCknLgogUEFTUyBTYW1lLW9yaWdpbiBYSFIuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3Vi
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2Ny
aXB0LXNyYy5zdWItZXhwZWN0ZWQudHh0CmluZGV4IDk3OTEwNjMwMzc4NS4uYmI2NDUyZjQ0YTBh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlw
dC1zcmMuc3ViLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hh
cmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dApAQCAtMiwxMCArMiw5IEBACiBI
YXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIAogVElNRU9VVCBzaGFyZWR3
b3JrZXItc2NyaXB0LXNyYyBUZXN0IHRpbWVkIG91dAotRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9y
dFNjcmlwdHMoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgIEEgbmV0d29yayBl
cnJvciBvY2N1cnJlZC4KLUZBSUwgYGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91
dCBDU1AgUmVmdXNlZCB0byBldmFsdWF0ZSBhIHN0cmluZyBhcyBKYXZhU2NyaXB0IGJlY2F1c2Ug
J3Vuc2FmZS1ldmFsJyBpcyBub3QgYW4gYWxsb3dlZCBzb3VyY2Ugb2Ygc2NyaXB0IGluIHRoZSBm
b2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAic2NyaXB0LXNyYyAn
c2VsZicgJ25vbmNlLWEnIGJsb2I6IGZpbGVzeXN0ZW06Ii4KLQotRkFJTCBgc2V0VGltZW91dChb
c3RyaW5nXSlgIG5vdCBibG9ja2VkIGluIGh0dHA6IHdpdGhvdXQgQ1NQIGFzc2VydF91bnJlYWNo
ZWQ6IGNhbGxiYWNrIG5vdCBjYWxsZWQuIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBD
cm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91
ciBDU1AgTG9hZCBmYWlsZWQKK1BBU1MgYGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0
aG91dCBDU1AKK1BBU1MgYHNldFRpbWVvdXQoW3N0cmluZ10pYCBub3QgYmxvY2tlZCBpbiBodHRw
OiB3aXRob3V0IENTUAogVElNRU9VVCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgYmxv
Y2tlZCBpbiBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnIFRlc3QgdGltZWQgb3V0CiBOT1RS
VU4gYGV2YWwoKWAgYmxvY2tlZCBpbiBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCiBOT1RS
VU4gYHNldFRpbWVvdXQoW3N0cmluZ10pYCBibG9ja2VkIGluIGh0dHA6IHdpdGggc2NyaXB0LXNy
YyAnc2VsZicKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRp
bWVvdXQuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0
LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4dAppbmRleCA0ZWFjMWNjYzA1MjYuLmI4ZWUxM2IwZmZj
ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91dC5z
dWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRp
bWVvdXQuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKIAogRkFJTCBEZWRpY2F0ZWQg
d29ya2VyIGluaGVyaXRzIENTUCBmcm9tIG1haW4gZG9jdW1lbnQgYXNzZXJ0X2VxdWFsczogZXhw
ZWN0ZWQgInNldFRpbWVvdXQgYWxsb3dlZCIgYnV0IGdvdCAic2V0VGltZW91dCBibG9ja2VkIgot
RkFJTCBTaGFyZWQgd29ya2VyIGRlbGl2ZXJzIGl0cyBvd24gQ1NQIGFzc2VydF9lcXVhbHM6IGV4
cGVjdGVkICJzZXRUaW1lb3V0IGJsb2NrZWQiIGJ1dCBnb3QgInNldFRpbWVvdXQgYWxsb3dlZCIK
K1BBU1MgU2hhcmVkIHdvcmtlciBkZWxpdmVycyBpdHMgb3duIENTUAogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMv
b2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJv
d3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBl
Y3RlZC50eHQKaW5kZXggYzEwNzEzNjU1MjgwLi42Zjg0NGRkNWQ5NDkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9v
ZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
YnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1l
eHBlY3RlZC50eHQKQEAgLTUsNyArNSw3IEBAIEhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNz
YWdlID0gbnVsbAogUEFTUyBEZWRpY2F0ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0CiBQ
QVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0CiBQQVNTIERlZGlj
YXRlZCB3b3JrZXIgb2YgdGhlIG5vdC1pbi1jYWNoZSBzY3JpcHQKLVBBU1MgU2hhcmVkIHdvcmtl
ciBvZiB0aGUgY2FjaGVkIHNjcmlwdAotUEFTUyBTaGFyZWQgd29ya2VyIG9mIHRoZSBmYWxsYmFj
a2VkIHNjcmlwdAorRkFJTCBTaGFyZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0IGFzc2Vy
dF9lcXVhbHM6IGV4cGVjdGVkICJEb25lOiBjYWNoZWQiIGJ1dCBnb3QgIkVycm9yOiBJbXBvcnRp
bmcgYSBub24tY2FjaGVkIHNjcmlwdCBtdXN0IGZhaWwuIgorRkFJTCBTaGFyZWQgd29ya2VyIG9m
IHRoZSBmYWxsYmFja2VkIHNjcmlwdCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiRG9uZTogZmFs
bGJhY2tlZCIgYnV0IGdvdCAiRXJyb3I6IEltcG9ydGluZyBhIG5vbi1jYWNoZWQgc2NyaXB0IG11
c3QgZmFpbC4iCiBUSU1FT1VUIFNoYXJlZCB3b3JrZXIgb2YgdGhlIG5vdC1pbi1jYWNoZSBzY3Jp
cHQgVGVzdCB0aW1lZCBvdXQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5v
bnltb3VzLWlmcmFtZS9zaGFyZWR3b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53
aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlmcmFt
ZS9zaGFyZWR3b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0
ZWQudHh0CmluZGV4IDRlZDg3NDc0NzZjNy4uNTg2ZDEwMTUyYTM2IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2lu
LWVtYmVkZGVyLXBvbGljeS9hbm9ueW1vdXMtaWZyYW1lL3NoYXJlZHdvcmtlci1wYXJ0aXRpb25p
bmcudGVudGF0aXZlLmh0dHBzLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRl
ci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3b3JrZXItcGFydGl0aW9uaW5nLnRlbnRh
dGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIEFu
b255bW91cyBpZnJhbWVzIGdldCBwYXJ0aXRpb25lZCBzaGFyZWQgd29ya2Vycy4gYXNzZXJ0X3Ry
dWU6IFRoZSAibm9ybWFsIiBpZnJhbWUncyBzaGFyZWR3b3JrZXIgc2hvdWxkIHJldHVybiB7Im5v
cm1hbCI6IHRydWUsICJub3JtYWxfY29udHJvbCI6IHRydWV9LCBidXQgaW5zdGVhZCByZXR1cm5l
ZCB7Im5vcm1hbCI6dHJ1ZX0gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK0ZBSUwgQW5vbnltb3Vz
IGlmcmFtZXMgZ2V0IHBhcnRpdGlvbmVkIHNoYXJlZCB3b3JrZXJzLiBhc3NlcnRfdHJ1ZTogVGhl
ICJub3JtYWwiIGlmcmFtZSdzIHNoYXJlZHdvcmtlciBzaG91bGQgcmV0dXJuIHsibm9ybWFsIjog
dHJ1ZSwgIm5vcm1hbF9jb250cm9sIjogdHJ1ZX0sIGJ1dCBpbnN0ZWFkIHJldHVybmVkIHsibm9y
bWFsX2NvbnRyb2wiOnRydWUsIm5vcm1hbCI6dHJ1ZSwiYW5vbnltb3VzIjp0cnVlLCJhbm9ueW1v
dXNfY29udHJvbCI6dHJ1ZX0gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9y
aWdpbi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0
cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xh
dGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IDYzNTViNjhkZTcwYi4uYzhi
Zjc1ZTdlYTg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4t
aXNvbGF0ZWQtcGVybWlzc2lvbi5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRl
ci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQu
dHh0CkBAIC0yMCw3ICsyMCw3IEBAIFBBU1MgZGVkaWNhdGVkIHdvcmtlcjogc2NoZW1lID0gYmxv
YiwgdmFsdWUgPSAqCiBQQVNTIGRlZGljYXRlZCB3b3JrZXI6IHNjaGVtZSA9IGJsb2IsIHZhbHVl
ID0gc2VsZgogRkFJTCBkZWRpY2F0ZWQgd29ya2VyOiBzY2hlbWUgPSBibG9iLCB2YWx1ZSA9IChc
KSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCBmYWxzZSBidXQgZ290IHRydWUKIFBBU1Mgc2hhcmVk
IHdvcmtlcjogd2l0aENvb3BDb2VwID0gZmFsc2UKLVBBU1Mgc2hhcmVkIHdvcmtlcjogd2l0aENv
b3BDb2VwID0gdHJ1ZQorRkFJTCBzaGFyZWQgd29ya2VyOiB3aXRoQ29vcENvZXAgPSB0cnVlIGFz
c2VydF9lcXVhbHM6IGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZQogUEFTUyBzZXJ2aWNlIHdv
cmtlcjogd2l0aENvb3BDb2VwID0gZmFsc2UKIEZBSUwgc2VydmljZSB3b3JrZXI6IHdpdGhDb29w
Q29lcCA9IHRydWUgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4
cGVjdGVkLnR4dAppbmRleCAzMzk4YmQ4ODkzMWIuLjRjODY2ZWIyOTI2MyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9y
aWdpbi1lbWJlZGRlci1wb2xpY3kvc2hhcmVkLXdvcmtlcnMuaHR0cHMtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9z
cy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4
dApAQCAtMiw3ICsyLDcgQEAgVmVyaWZ5IHRoZSBDcm9zcy1PcmlnaW4gRW1iZWRkZXIgUG9saWN5
IGZvciBTaGFyZWQgV29ya2VycyBieSBwZXJmb3JtaW5nIGEgY3Jvc3MKIAogCiBQQVNTIGRlZmF1
bHQgcG9saWN5IChkZXJpdmVkIGZyb20gcmVzcG9uc2UpCi1GQUlMICJyZXF1aXJlLWNvcnAiIChk
ZXJpdmVkIGZyb20gcmVzcG9uc2UpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJmYWlsdXJlIiBi
dXQgZ290ICJzdWNjZXNzIgorUEFTUyAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIHJlc3Bv
bnNlKQogUEFTUyBkZWZhdWx0IHBvbGljeSAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBkdWUgdG8g
dXNlIG9mIGxvY2FsIHNjaGVtZSAtIGJsb2IgVVJMKQogRkFJTCAicmVxdWlyZS1jb3JwIiAoZGVy
aXZlZCBmcm9tIG93bmVyIHNldCBkdWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAtIGJsb2IgVVJM
KSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiZmFpbHVyZSIgYnV0IGdvdCAic3VjY2VzcyIKIFBB
U1MgZGVmYXVsdCBwb2xpY3kgKGRlcml2ZWQgZnJvbSBvd25lciBzZXQgZHVlIHRvIHVzZSBvZiBs
b2NhbCBzY2hlbWUgLSBkYXRhIFVSTCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5
L3dvcmtlci1pbmhlcml0YW5jZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRl
ci1wb2xpY3kvd29ya2VyLWluaGVyaXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKaW5kZXgg
NzViMWQzM2U1MjYwLi5iMmJmMmUzYmZmM2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9s
aWN5L3dvcmtlci1pbmhlcml0YW5jZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4t
ZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5jZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0
CkBAIC0xLDcgKzEsNiBAQAogQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8v
d3d3LmxvY2FsaG9zdDo5NDQ0L2NvbW1vbi9ibGFuay5odG1sCiBCbG9ja2VkIGFjY2VzcyB0byBl
eHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29tbW9uL2JsYW5rLmh0bWwK
IEJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2NhbGhvc3Q6OTQ0
NC9jb21tb24vYmxhbmsuaHRtbAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBz
Oi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbW1vbi9ibGFuay5odG1sCiAKIFBBU1MgVGVzdCB0aGF0
IGxvY2FsIHNjaGVtZSB3b3JrZXJzIGluaGVyaXQgQ09FUDogcmVxdWlyZS1jb3JwIGZyb20gdGhl
IGNyZWF0aW5nIGRvY3VtZW50CiBQQVNTIGJsb2IgVVJMIGRlZGljYXRlZCB3b3JrZXI6IFNhbWUg
b3JpZ2luIHNob3VsZCBiZSBhbGxvd2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9TaGFyZWRXb3JrZXJfZGF0YVVybC1leHBlY3RlZC50eHQKaW5kZXggOTk1YTA2MDE5
Yjg0Li45YjU4MjBhYWU4Y2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJfZGF0YVVybC1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4cGVjdGVkLnR4dApAQCAtMSwxMyArMSw1IEBACi1D
T05TT0xFIE1FU1NBR0U6IEVycm9yOiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3Qg
MQogCiAKLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gRXJyb3I6IGFzc2VydF9lcXVh
bHM6IGV4cGVjdGVkIDIgYnV0IGdvdCAxCi0KLVBBU1MgRGF0YSBVUkwgbm90IHNoYXJlZCBieSBj
cm9zcy1vcmlnaW4gU2hhcmVkV29ya2VycwotVElNRU9VVCBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNh
bWUtb3JpZ2luIFNoYXJlZFdvcmtlcnMgVGVzdCB0aW1lZCBvdXQKLQotSGFybmVzcyBFcnJvciAo
RkFJTCksIG1lc3NhZ2UgPSBFcnJvcjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290
IDEKLQogUEFTUyBEYXRhIFVSTCBub3Qgc2hhcmVkIGJ5IGNyb3NzLW9yaWdpbiBTaGFyZWRXb3Jr
ZXJzCi1USU1FT1VUIERhdGEgVVJMcyBzaGFyZWQgYnkgc2FtZS1vcmlnaW4gU2hhcmVkV29ya2Vy
cyBUZXN0IHRpbWVkIG91dAorUEFTUyBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNo
YXJlZFdvcmtlcnMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11
cmwud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJs
LndpbmRvdy1leHBlY3RlZC50eHQKaW5kZXggNTc2ZTZkMmI3ZWQyLi40YTI2YmU5MjlhOGQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVj
dGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBo
dHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBv
cnQtb24tbG9hZC1zY3JpcHQucHkKIAogUEFTUyBTdGF0aWMgaW1wb3J0LgogRkFJTCBTdGF0aWMg
aW1wb3J0IChjcm9zcy1vcmlnaW4pLiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24g
d2l0aCB2YWx1ZTogIkltcG9ydGluZyBhIG1vZHVsZSBzY3JpcHQgZmFpbGVkLiIKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhw
ZWN0ZWQudHh0CmluZGV4IDRmODY0MWU1MTQ4MC4uMjk5N2Y3ZTFmMzA4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxl
cy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBl
Y3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IE9yaWdpbiBudWxsIGlz
IG5vdCBhbGxvd2VkIGJ5IEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbi4gU3RhdHVzIGNvZGU6
IDIwMAogCiBIYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQK
aW5kZXggZWFjN2Y5NWRlNmYyLi5jYmMwNDI5ZTBjNzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13
b3JrZXItaW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVk
LXdvcmtlci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMg
QEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0
Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkK
IAogSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1
bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQt
d29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0CmluZGV4IDU3NmU2ZDJiN2VkMi4uNGEy
NmJlOTI5YThkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50
eHQKQEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6
Ly93d3cxLmxvY2FsaG9zdDo5NDQzL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LW9u
LWxvYWQtc2NyaXB0LnB5CiAKIFBBU1MgU3RhdGljIGltcG9ydC4KIEZBSUwgU3RhdGljIGltcG9y
dCAoY3Jvc3Mtb3JpZ2luKS4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGgg
dmFsdWU6ICJJbXBvcnRpbmcgYSBtb2R1bGUgc2NyaXB0IGZhaWxlZC4iCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxl
cy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hh
cmVkLXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAppbmRleCBlMWJlZGY1
NDMwZWYuLmE3MGYwNWFmNTRmNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25z
LWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMt
Y3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3Mg
dG8gZXh0ZXJuYWwgVVJMIGh0dHA6Ly93d3cxLmxvY2FsaG9zdDo4ODAwL3dvcmtlcnMvbW9kdWxl
cy9yZXNvdXJjZXMvZXhwb3J0LWNyZWRlbnRpYWxzLnB5CiAKIEhhcm5lc3MgRXJyb3IgKFRJTUVP
VVQpLCBtZXNzYWdlID0gbnVsbAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMv
MDA0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhwZWN0ZWQudHh0
CmluZGV4IDAxOGRiNjA0NTY5ZC4uY2ZlNDY1NTY3NWNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRp
cGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMv
MDA0LWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDMgQEAKIAotSGFybmVzcyBFcnJvciAoVElNRU9V
VCksIG1lc3NhZ2UgPSBudWxsCi0KLU5PVFJVTiBzaGFyZWQgd29ya2VyIHdpdGggbXVsdGlwbGUg
ZG9jdW1lbnRzCitQQVNTIHNoYXJlZCB3b3JrZXIgd2l0aCBtdWx0aXBsZSBkb2N1bWVudHMKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNz
L211bHRpcGxlLXdvcmtlcnMvMDA4LWV4cGVjdGVkLnR4dAppbmRleCA5N2E0ZTdhNzNhNjMuLjA5
ZjY3MmQxYzYyMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKQEAgLTEs
NSArMSwzIEBACiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1U
SU1FT1VUIG1lc3NhZ2VjaGFubmVsIGluIHNoYXJlZCB3b3JrZXIgVGVzdCB0aW1lZCBvdXQKK1BB
U1MgbWVzc2FnZWNoYW5uZWwgaW4gc2hhcmVkIHdvcmtlcgogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtl
ci1mcm9tLWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2It
dXJsLndpbmRvdy1leHBlY3RlZC50eHQKaW5kZXggYTA4OWMyMjQ4OWUyLi4xOWU0NmIwOWE1NmEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
c2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNyAr
MSw1IEBACiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1GQUlM
IENyZWF0aW5nIGEgc2hhcmVkIHdvcmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MuIGFzc2VydF9l
cXVhbHM6IGV4cGVjdGVkICJ3b3JrZXJfT0tfMiIgYnV0IGdvdCAid29ya2VyX09LXzEiCitQQVNT
IENyZWF0aW5nIGEgc2hhcmVkIHdvcmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MuCiBQQVNTIENy
ZWF0aW5nIGEgc2hhcmVkIHdvcmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MgaW1tZWRpYXRlbHkg
YmVmb3JlIHJldm9raW5nLgotVElNRU9VVCBDb25uZWN0aW5nIHRvIGEgc2hhcmVkIHdvcmtlciBv
biBhIHJldm9rZWQgYmxvYiBVUkwgd29ya3MuIFRlc3QgdGltZWQgb3V0CitQQVNTIENvbm5lY3Rp
bmcgdG8gYSBzaGFyZWQgd29ya2VyIG9uIGEgcmV2b2tlZCBibG9iIFVSTCB3b3Jrcy4KIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtl
ci1uYW1lLXZpYS1vcHRpb25zLWV4cGVjdGVkLnR4dAppbmRleCA2ZmZlZTI3MzkwZDkuLmFlNDVi
NGQyNzM5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQKQEAgLTEsMyAr
MSwzIEBACiAKLUZBSUwgVGVzdCB0aGUgbmFtZSBwcm9wZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBt
aXhpbmcgY29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29uc3RydWN0b3Igc3RyaW5ncyBFcnJvcjog
YXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290IDEKK1BBU1MgVGVzdCB0aGUgbmFtZSBw
cm9wZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBtaXhpbmcgY29uc3RydWN0b3Igb3B0aW9ucyBhbmQg
Y29uc3RydWN0b3Igc3RyaW5ncwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25zLW1pc21h
dGNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0
CmluZGV4IGY2NTY5NDYxNTBkYi4uNGY5OWExMzQwOWU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1v
cHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25zLW1pc21h
dGNoLWV4cGVjdGVkLnR4dApAQCAtMSwyOCArMSwyNiBAQAogCi1IYXJuZXNzIEVycm9yIChUSU1F
T1VUKSwgbWVzc2FnZSA9IG51bGwKLQotVElNRU9VVCBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3Jr
ZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBt
b2R1bGUgVGVzdCB0aW1lZCBvdXQKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIg
d2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGRlZmF1
bHQKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogY2xhc3NpYyB0byBtb2R1bGUKLU5PVFJVTiBDb25uZWN0
aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxv
Y2tlZDogbW9kdWxlIHRvIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3Jr
ZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBv
bWl0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBpbmNsdWRlIGlu
IGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJl
bnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBkZWZhdWx0IGluIGNsYXNzaWMK
LU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9u
cyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCi1OT1RS
VU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hv
dWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVkZSBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IHNhbWUtb3JpZ2luIHRvIG9taXQgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRv
IHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDog
aW5jbHVkZSB0byBkZWZhdWx0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJl
ZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVk
ZSB0byBvbWl0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIg
d2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBzYW1l
LW9yaWdpbiBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdp
dGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gb21pdCBp
biBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJl
bnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBpbmNsdWRlIGluIG1vZHVs
ZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4gbW9kdWxlCi1OT1RSVU4g
Q29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxk
IGJlIGJsb2NrZWQ6IG9taXQgdG8gc2FtZS1vcmlnaW4gaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IG9taXQgdG8gaW5jbHVkZSBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNo
YXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2Ft
ZS1vcmlnaW4gdG8gb21pdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3
b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmln
aW4gdG8gaW5jbHVkZSBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3Jr
ZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBk
ZWZhdWx0IGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4g
bW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50
IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gc2FtZS1vcmlnaW4gaW4gbW9k
dWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIG1vZHVsZQorUEFTUyBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogbW9kdWxlIHRvIGRlZmF1bHQKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdp
dGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGNsYXNzaWMgdG8gbW9kdWxl
CitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25z
IHNob3VsZCBiZSBibG9ja2VkOiBtb2R1bGUgdG8gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRv
IHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDog
ZGVmYXVsdCB0byBvbWl0IGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29y
a2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8g
aW5jbHVkZSBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4g
Y2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQg
b3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2lj
CitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25z
IHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGluY2x1ZGUgaW4gY2xhc3NpYworUEFTUyBDb25u
ZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUg
YmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBz
aGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGlu
Y2x1ZGUgdG8gZGVmYXVsdCBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRv
IG9taXQgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBzYW1lLW9yaWdp
biBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZl
cmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIG9taXQgaW4gbW9kdWxl
CitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25z
IHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIGluY2x1ZGUgaW4gbW9kdWxlCitQQVNTIENv
bm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBi
ZSBibG9ja2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8g
c2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBv
bWl0IHRvIHNhbWUtb3JpZ2luIGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3
b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBp
bmNsdWRlIGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBp
biBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50
IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIGluY2x1ZGUgaW4gbW9k
dWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIGRlZmF1bHQgaW4gbW9kdWxlCitQQVNT
IENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3Vs
ZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBpbmNsdWRlIHRvIHNhbWUtb3JpZ2luIGluIG1vZHVsZQogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVj
dGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3
b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dAppbmRleCAxZTJkMzk5MmY2ZDUuLjU5Y2FjYTQ4NmY4
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9v
cGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0x
LDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHA6Ly93d3cyLmxv
Y2FsaG9zdDo4ODAwL3hoci9yZXNvdXJjZXMvaW5zcGVjdC1oZWFkZXJzLnB5P2ZpbHRlcl9uYW1l
PW9yaWdpbiZjb3JzCiAKIEZBSUwgUmVmZXJlciBoZWFkZXIgYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgIlJlZmVyZXI6IGh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC94aHIvcmVzb3VyY2VzL3dvcmtlcnho
ci1vcmlnaW4tcmVmZXJyZXIuanNcbiIgYnV0IGdvdCAiUmVmZXJlcjogaHR0cDovL2xvY2FsaG9z
dDo4ODAwL3hoci9yZXNvdXJjZXMvcmVkaXJlY3QucHk/bG9jYXRpb249d29ya2VyeGhyLW9yaWdp
bi1yZWZlcnJlci5qc1xuIgogRkFJTCBPcmlnaW4gaGVhZGVyIGFzc2VydF9lcXVhbHM6IGV4cGVj
dGVkICJPcmlnaW46IGh0dHA6Ly9sb2NhbGhvc3Q6ODgwMFxuIiBidXQgZ290ICIiCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3Jr
ZXItY29ubmVjdC1zcmMuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBv
bGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1jb25uZWN0LXNyYy5zdWItZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjM3NzhiYmE0Njlk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13
b3JrZXIvc2hhcmVkd29ya2VyLWNvbm5lY3Qtc3JjLnN1Yi1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNiBAQAorCitIYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKKworVElN
RU9VVCBzaGFyZWR3b3JrZXItY29ubmVjdC1zcmMgVGVzdCB0aW1lZCBvdXQKK1BBU1MgU2FtZS1v
cmlnaW4gJ2ZldGNoKCknIGluIGh0dHA6IHdpdGhvdXQgQ1NQCitQQVNTIFNhbWUtb3JpZ2luIFhI
UiBpbiBodHRwOiB3aXRob3V0IENTUAorUEFTUyBDcm9zcy1vcmlnaW4gJ2ZldGNoKCknIGluIGh0
dHA6IHdpdGhvdXQgQ1NQCitQQVNTIENyb3NzLW9yaWdpbiBYSFIgaW4gaHR0cDogd2l0aG91dCBD
U1AKK1BBU1MgU2FtZS1vcmlnaW4gPT4gY3Jvc3Mtb3JpZ2luICdmZXRjaCgpJyBpbiBodHRwOiB3
aXRob3V0IENTUAorUEFTUyBTYW1lLW9yaWdpbiAnZmV0Y2goKScgaW4gaHR0cDogd2l0aCBjb25u
ZWN0LXNyYyAnc2VsZicKK1BBU1MgU2FtZS1vcmlnaW4gWEhSIGluIGh0dHA6IHdpdGggY29ubmVj
dC1zcmMgJ3NlbGYnCitUSU1FT1VUIENyb3NzLW9yaWdpbiAnZmV0Y2goKScgaW4gaHR0cDogd2l0
aCBjb25uZWN0LXNyYyAnc2VsZicgVGVzdCB0aW1lZCBvdXQKK05PVFJVTiBDcm9zcy1vcmlnaW4g
WEhSIGluIGh0dHA6IHdpdGggY29ubmVjdC1zcmMgJ3NlbGYnCitOT1RSVU4gU2FtZS1vcmlnaW4g
PT4gY3Jvc3Mtb3JpZ2luICdmZXRjaCgpJyBpbiBodHRwOiB3aXRoIGNvbm5lY3Qtc3JjICdzZWxm
JworTk9UUlVOIFJlcG9ydHMgbWF0Y2ggaW4gaHR0cDogd2l0aCBjb25uZWN0LXNyYyAnc2VsZicK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIv
c2hhcmVkd29ya2VyLXJlcG9ydC1vbmx5LnN1Yi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3Vi
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjc3
N2NlZDQ1MWUyYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13
azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTAgQEAKKworSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBu
dWxsCisKK1BBU1MgU2FtZS1vcmlnaW4gJ2ZldGNoKCknLgorUEFTUyBTYW1lLW9yaWdpbiBYSFIu
CitUSU1FT1VUIENyb3NzLW9yaWdpbiAnZmV0Y2goKScuIFRlc3QgdGltZWQgb3V0CitOT1RSVU4g
Q3Jvc3Mtb3JpZ2luIFhIUi4KK05PVFJVTiBTYW1lLW9yaWdpbiA9PiBjcm9zcy1vcmlnaW4gJ2Zl
dGNoKCknLgorTk9UUlVOIGNvbm5lY3Qtc3JjLXNlbGYtcmVwb3J0LW9ubHkKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2Vy
LXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13
azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1zY3JpcHQtc3JjLnN1Yi1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43N2RjZTU1MDBhN2IKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtl
ci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIg
QEAKKworSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCisKK1RJTUVPVVQg
c2hhcmVkd29ya2VyLXNjcmlwdC1zcmMgVGVzdCB0aW1lZCBvdXQKK1BBU1MgQ3Jvc3Mtb3JpZ2lu
IGBpbXBvcnRTY3JpcHRzKClgIG5vdCBibG9ja2VkIGluIGh0dHA6IHdpdGhvdXIgQ1NQCitQQVNT
IGBldmFsKClgIG5vdCBibG9ja2VkIGluIGh0dHA6IHdpdGhvdXQgQ1NQCitQQVNTIGBzZXRUaW1l
b3V0KFtzdHJpbmddKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AKK1RJTUVPVVQg
Q3Jvc3Mtb3JpZ2luIGBpbXBvcnRTY3JpcHRzKClgIGJsb2NrZWQgaW4gaHR0cDogd2l0aCBzY3Jp
cHQtc3JjICdzZWxmJyBUZXN0IHRpbWVkIG91dAorTk9UUlVOIGBldmFsKClgIGJsb2NrZWQgaW4g
aHR0cDogd2l0aCBzY3JpcHQtc3JjICdzZWxmJworTk9UUlVOIGBzZXRUaW1lb3V0KFtzdHJpbmdd
KWAgYmxvY2tlZCBpbiBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCitOT1RSVU4gUmVwb3J0
cyBhcmUgc2VudCBmb3IgaHR0cDogd2l0aCBzY3JpcHQtc3JjICdzZWxmJworCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRv
dy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0
LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi42NTE5Y2QxZjY5NDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMSBAQAorCitQQVNTIFN0YXRpYyBpbXBvcnQuCitQQVNTIFN0YXRpYyBp
bXBvcnQgKGNyb3NzLW9yaWdpbikuCitQQVNTIFN0YXRpYyBpbXBvcnQgKHJlZGlyZWN0KS4KK1BB
U1MgTmVzdGVkIHN0YXRpYyBpbXBvcnQuCitQQVNTIFN0YXRpYyBpbXBvcnQgYW5kIHRoZW4gZHlu
YW1pYyBpbXBvcnQuCitQQVNTIER5bmFtaWMgaW1wb3J0LgorUEFTUyBOZXN0ZWQgZHluYW1pYyBp
bXBvcnQuCitQQVNTIER5bmFtaWMgaW1wb3J0IGFuZCB0aGVuIHN0YXRpYyBpbXBvcnQuCitQQVNT
IGV2YWwoaW1wb3J0KCkpLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGst
d2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJl
ZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lMzZjMDQ5ZjgyNTYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorCitIYXJu
ZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKKworUEFTUyBTdGF0aWMgaW1wb3J0
LgorUEFTUyBTdGF0aWMgaW1wb3J0IChjcm9zcy1vcmlnaW4pLgorVElNRU9VVCBTdGF0aWMgaW1w
b3J0IChyZWRpcmVjdCkuIFRlc3QgdGltZWQgb3V0CitOT1RSVU4gTmVzdGVkIHN0YXRpYyBpbXBv
cnQuCitOT1RSVU4gU3RhdGljIGltcG9ydCBhbmQgdGhlbiBkeW5hbWljIGltcG9ydC4KK05PVFJV
TiBEeW5hbWljIGltcG9ydC4KK05PVFJVTiBOZXN0ZWQgZHluYW1pYyBpbXBvcnQuCitOT1RSVU4g
RHluYW1pYyBpbXBvcnQgYW5kIHRoZW4gc3RhdGljIGltcG9ydC4KK05PVFJVTiBldmFsKGltcG9y
dCgpKS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWlt
cG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29y
a2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uNjUxOWNkMWY2OTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTEgQEAKKworUEFTUyBTdGF0aWMgaW1wb3J0LgorUEFTUyBTdGF0aWMgaW1wb3J0IChj
cm9zcy1vcmlnaW4pLgorUEFTUyBTdGF0aWMgaW1wb3J0IChyZWRpcmVjdCkuCitQQVNTIE5lc3Rl
ZCBzdGF0aWMgaW1wb3J0LgorUEFTUyBTdGF0aWMgaW1wb3J0IGFuZCB0aGVuIGR5bmFtaWMgaW1w
b3J0LgorUEFTUyBEeW5hbWljIGltcG9ydC4KK1BBU1MgTmVzdGVkIGR5bmFtaWMgaW1wb3J0Lgor
UEFTUyBEeW5hbWljIGltcG9ydCBhbmQgdGhlbiBzdGF0aWMgaW1wb3J0LgorUEFTUyBldmFsKGlt
cG9ydCgpKS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2Vy
LW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9z
aGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTJiMThiNTI0OTI4Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlh
bHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzUgQEAKKworUEFTUyBUZXN0IGluaXRpYWxpemF0
aW9uOiBzZXR0aW5nIHVwIGNyb3NzLW9yaWdpbiBjb29raWUKK1BBU1MgbmV3IFNoYXJlZFdvcmtl
cigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGRlZmF1bHQgY3JlZGVudGlhbHMgb3B0aW9uIHNob3Vs
ZCBiZWhhdmUgYXMgY3JlZGVudGlhbHM9c2FtZS1vcmlnaW4gYW5kIHNlbmQgdGhlIGNyZWRlbnRp
YWxzCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBjcmVkZW50
aWFscz1vbWl0IHNob3VsZCBub3Qgc2VuZCB0aGUgY3JlZGVudGlhbHMKK1BBU1MgbmV3IFNoYXJl
ZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPXNhbWUtb3JpZ2luIHNo
b3VsZCBzZW5kIHRoZSBjcmVkZW50aWFscworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0
eXBlPW1vZHVsZSBhbmQgY3JlZGVudGlhbHM9aW5jbHVkZSBzaG91bGQgc2VuZCB0aGUgY3JlZGVu
dGlhbHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGRlZmF1
bHQgY3JlZGVudGlhbHMgb3B0aW9uIHNob3VsZCBiZWhhdmUgYXMgY3JlZGVudGlhbHM9c2FtZS1v
cmlnaW4gYW5kIHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBzYW1lLW9yaWdpbiBzdGF0aWMgaW1w
b3J0cworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQgY3JlZGVu
dGlhbHM9b21pdCBzaG91bGQgbm90IHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBzYW1lLW9yaWdp
biBzdGF0aWMgaW1wb3J0cworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVs
ZSBhbmQgY3JlZGVudGlhbHM9c2FtZS1vcmlnaW4gc2hvdWxkIHNlbmQgdGhlIGNyZWRlbnRpYWxz
IGZvciBzYW1lLW9yaWdpbiBzdGF0aWMgaW1wb3J0cworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkg
d2l0aCB0eXBlPW1vZHVsZSBhbmQgY3JlZGVudGlhbHM9aW5jbHVkZSBzaG91bGQgc2VuZCB0aGUg
Y3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2luIHN0YXRpYyBpbXBvcnRzCitQQVNTIG5ldyBTaGFy
ZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBkZWZhdWx0IGNyZWRlbnRpYWxzIG9wdGlv
biBzaG91bGQgYmVoYXZlIGFzIGNyZWRlbnRpYWxzPXNhbWUtb3JpZ2luIGFuZCBub3Qgc2VuZCB0
aGUgY3JlZGVudGlhbHMgZm9yIGNyb3NzLW9yaWdpbiBzdGF0aWMgaW1wb3J0cworUEFTUyBuZXcg
U2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQgY3JlZGVudGlhbHM9b21pdCBzaG91
bGQgbm90IHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gc3RhdGljIGltcG9y
dHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRp
YWxzPXNhbWUtb3JpZ2luIHNob3VsZCBub3Qgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIGNyb3Nz
LW9yaWdpbiBzdGF0aWMgaW1wb3J0cworRkFJTCBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBl
PW1vZHVsZSBhbmQgY3JlZGVudGlhbHM9aW5jbHVkZSBzaG91bGQgc2VuZCB0aGUgY3JlZGVudGlh
bHMgZm9yIGNyb3NzLW9yaWdpbiBzdGF0aWMgaW1wb3J0cyBhc3NlcnRfZXF1YWxzOiBleHBlY3Rl
ZCAiMSIgYnV0IGdvdCAiIgorUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVs
ZSBhbmQgZGVmYXVsdCBjcmVkZW50aWFscyBvcHRpb24gc2hvdWxkIGJlaGF2ZSBhcyBjcmVkZW50
aWFscz1zYW1lLW9yaWdpbiBhbmQgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2lu
IGR5bmFtaWMgaW1wb3J0cworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVs
ZSBhbmQgY3JlZGVudGlhbHM9b21pdCBzaG91bGQgbm90IHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZv
ciBzYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdp
dGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPXNhbWUtb3JpZ2luIHNob3VsZCBzZW5kIHRo
ZSBjcmVkZW50aWFscyBmb3Igc2FtZS1vcmlnaW4gZHluYW1pYyBpbXBvcnRzCitQQVNTIG5ldyBT
aGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBjcmVkZW50aWFscz1pbmNsdWRlIHNo
b3VsZCBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3Igc2FtZS1vcmlnaW4gZHluYW1pYyBpbXBvcnRz
CitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBkZWZhdWx0IGNy
ZWRlbnRpYWxzIG9wdGlvbiBzaG91bGQgYmVoYXZlIGFzIGNyZWRlbnRpYWxzPXNhbWUtb3JpZ2lu
IGFuZCBub3Qgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIGNyb3NzLW9yaWdpbiBkeW5hbWljIGlt
cG9ydHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRl
bnRpYWxzPW9taXQgc2hvdWxkIG5vdCBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3IgY3Jvc3Mtb3Jp
Z2luIGR5bmFtaWMgaW1wb3J0cworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1v
ZHVsZSBhbmQgY3JlZGVudGlhbHM9c2FtZS1vcmlnaW4gc2hvdWxkIG5vdCBzZW5kIHRoZSBjcmVk
ZW50aWFscyBmb3IgY3Jvc3Mtb3JpZ2luIGR5bmFtaWMgaW1wb3J0cworRkFJTCBuZXcgU2hhcmVk
V29ya2VyKCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQgY3JlZGVudGlhbHM9aW5jbHVkZSBzaG91bGQg
c2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIGNyb3NzLW9yaWdpbiBkeW5hbWljIGltcG9ydHMgYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjEiIGJ1dCBnb3QgIiIKK1BBU1MgbmV3IFNoYXJlZFdvcmtl
cigpIHdpdGggdHlwZT1jbGFzc2ljIHNob3VsZCBhbHdheXMgc2VuZCB0aGUgY3JlZGVudGlhbHMg
cmVnYXJkbGVzcyBvZiB0aGUgY3JlZGVudGlhbHMgb3B0aW9uIChkZWZhdWx0KS4KK1BBU1MgbmV3
IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1jbGFzc2ljIHNob3VsZCBhbHdheXMgc2VuZCB0aGUg
Y3JlZGVudGlhbHMgcmVnYXJkbGVzcyBvZiB0aGUgY3JlZGVudGlhbHMgb3B0aW9uIChvbWl0KS4K
K1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1jbGFzc2ljIHNob3VsZCBhbHdheXMg
c2VuZCB0aGUgY3JlZGVudGlhbHMgcmVnYXJkbGVzcyBvZiB0aGUgY3JlZGVudGlhbHMgb3B0aW9u
IChzYW1lLW9yaWdpbikuCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9Y2xhc3Np
YyBzaG91bGQgYWx3YXlzIHNlbmQgdGhlIGNyZWRlbnRpYWxzIHJlZ2FyZGxlc3Mgb2YgdGhlIGNy
ZWRlbnRpYWxzIG9wdGlvbiAoaW5jbHVkZSkuCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRo
IHR5cGU9Y2xhc3NpYyBzaG91bGQgYWx3YXlzIHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBzYW1l
LW9yaWdpbiBkeW5hbWljIGltcG9ydHMgcmVnYXJkbGVzcyBvZiB0aGUgY3JlZGVudGlhbHMgb3B0
aW9uIChkZWZhdWx0KS4KK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1jbGFzc2lj
IHNob3VsZCBhbHdheXMgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2luIGR5bmFt
aWMgaW1wb3J0cyByZWdhcmRsZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKG9taXQpLgor
UEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPWNsYXNzaWMgc2hvdWxkIGFsd2F5cyBz
ZW5kIHRoZSBjcmVkZW50aWFscyBmb3Igc2FtZS1vcmlnaW4gZHluYW1pYyBpbXBvcnRzIHJlZ2Fy
ZGxlc3Mgb2YgdGhlIGNyZWRlbnRpYWxzIG9wdGlvbiAoc2FtZS1vcmlnaW4pLgorUEFTUyBuZXcg
U2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPWNsYXNzaWMgc2hvdWxkIGFsd2F5cyBzZW5kIHRoZSBj
cmVkZW50aWFscyBmb3Igc2FtZS1vcmlnaW4gZHluYW1pYyBpbXBvcnRzIHJlZ2FyZGxlc3Mgb2Yg
dGhlIGNyZWRlbnRpYWxzIG9wdGlvbiAoaW5jbHVkZSkuCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIo
KSB3aXRoIHR5cGU9Y2xhc3NpYyBzaG91bGQgbmV2ZXIgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9y
IGNyb3NzLW9yaWdpbiBkeW5hbWljIGltcG9ydHMgcmVnYXJkbGVzcyBvZiB0aGUgY3JlZGVudGlh
bHMgb3B0aW9uIChkZWZhdWx0KS4KK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1j
bGFzc2ljIHNob3VsZCBuZXZlciBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3IgY3Jvc3Mtb3JpZ2lu
IGR5bmFtaWMgaW1wb3J0cyByZWdhcmRsZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKG9t
aXQpLgorUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPWNsYXNzaWMgc2hvdWxkIG5l
dmVyIHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gZHluYW1pYyBpbXBvcnRz
IHJlZ2FyZGxlc3Mgb2YgdGhlIGNyZWRlbnRpYWxzIG9wdGlvbiAoc2FtZS1vcmlnaW4pLgorUEFT
UyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPWNsYXNzaWMgc2hvdWxkIG5ldmVyIHNlbmQg
dGhlIGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gZHluYW1pYyBpbXBvcnRzIHJlZ2FyZGxl
c3Mgb2YgdGhlIGNyZWRlbnRpYWxzIG9wdGlvbiAoaW5jbHVkZSkuCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmVlNTNmMmZm
MmQ1ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFy
ZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKworRkFJTCBSZWZl
cmVyIGhlYWRlciBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiUmVmZXJlcjogaHR0cDovL2xvY2Fs
aG9zdDo4ODAwL3hoci9yZXNvdXJjZXMvd29ya2VyeGhyLW9yaWdpbi1yZWZlcnJlci5qc1xuIiBi
dXQgZ290ICJSZWZlcmVyOiBodHRwOi8vbG9jYWxob3N0Ojg4MDAveGhyL3Jlc291cmNlcy9yZWRp
cmVjdC5weT9sb2NhdGlvbj13b3JrZXJ4aHItb3JpZ2luLXJlZmVycmVyLmpzXG4iCitQQVNTIE9y
aWdpbiBoZWFkZXIKK1BBU1MgUmVxdWVzdCBVUkwgdGVzdAorCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRl
eCA2NTM5MzdhY2U2NWMuLmQzM2ZjNGFhNGQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xOTU3
LDkgKzE5NTcsMTIgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAg
IHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKICAgICB3b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmgKICAgICB3b3JrZXJzL1dvcmtlckxvYWRlclByb3h5LmgKKyAgICB3b3JrZXJzL1dv
cmtlck9iamVjdFByb3h5LmgKKyAgICB3b3JrZXJzL1dvcmtlck9wdGlvbnMuaAogICAgIHdvcmtl
cnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaAogICAgIHdvcmtlcnMvV29ya2VyT3JXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlci5oCiAgICAgd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQu
aAorICAgIHdvcmtlcnMvV29ya2VyUmVwb3J0aW5nUHJveHkuaAogICAgIHdvcmtlcnMvV29ya2Vy
UnVuTG9vcC5oCiAgICAgd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAogICAgIHdvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50LmgKQEAgLTIwMDMsOSArMjAwNiwxMiBAQCBzZXQoV2Vi
Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlcldvcmtlci5oCiAKICAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJJZGVu
dGlmaWVyLmgKLSAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmgKKyAgICB3
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaAogICAgIHdvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaAorICAgIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIuaAogICAgIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3Zp
ZGVyLmgKKworICAgIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXIuaAogICAgIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkLmgK
ICAgICB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmgKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dAppbmRleCBiM2Y1ZTBiNzg0MTcuLjVlZTUwMGNiNmQxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKQEAgLTI3ODUsMTAgKzI3ODUsMTAgQEAgd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
V29ya2VyLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNwcAogd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCi13b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJNYW5hZ2VyLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bi5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmNwcAogd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcAord29ya2Vycy9zaGFyZWQvY29udGV4
dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQv
U2hhcmVkV29ya2VyVGhyZWFkLmNwcAogd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3Jr
ZXJUaHJlYWRQcm94eS5jcHAKIHdvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGM1ZjQ0ZWYwNGE3MC4uNTZhNzE1OWRiYWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MDMsNyArOTAzLDcgQEAKIAkJ
MkU0MzQ2NEIwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjM5MEY1NDZB
ODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZVByb3h5LmggKi87IH07CiAJCTJFNDM0NjRE
MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2M0IwRjU0NkE4MjAwQjBGMUJBIC8qIFdv
cmtlckxvY2F0aW9uLmggKi87IH07CiAJCTJFNDM0NjUwMEY1NDZBODIwMEIwRjFCQSAvKiBXb3Jr
ZXJNZXNzYWdpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkU0MzQ2M0UwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck1lc3NhZ2luZ1Byb3h5
LmggKi87IH07Ci0JCTJFNDM0NjUxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2
M0YwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5LmggKi87IH07CisJCTJFNDM0
NjUxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2M0YwRjU0NkE4MjAwQjBGMUJB
IC8qIFdvcmtlck9iamVjdFByb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2NTMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclJ1bkxv
b3AuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0
NjQxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJSdW5Mb29wLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2NTUwRjU0NkE4MjAwQjBGMUJB
IC8qIFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkU0MzQ2NDMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFNzU4NDFFMTI3
NzlBREEwMDYyNjI4QiAvKiBGaWxlUmVhZGVyTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTc1ODQxQjEyNzc5QURBMDA2MjYyOEIgLyogRmls
ZVJlYWRlckxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0xMTI1LDcgKzExMjUsNyBAQAogCQk0MTZBMDZBMTIzQ0NBRDAzMDAzNDcxMDkg
LyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkEwNjk2MjNDQ0FBOUYwMDM0NzEwOSAvKiBBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQxNkQ3NUEyMjBDNjUxQTUwMEQwMkQyQyAvKiBOZXR3b3Jr
TG9hZEluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTZENzU5RjIwQzY0NDEzMDBEMDJEMkMgLyogTmV0d29ya0xvYWRJbmZvcm1hdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQx
NkUwQjNBMjA5QkMzQ0IwMDRBOTVEOSAvKiBGZXRjaElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkUwQjM3MjA5QkMzQzIwMDRBOTVE
OSAvKiBGZXRjaElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQk0MTZFMjlBNjEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0
aW5nUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxNkUyOUE1MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovOyB9
OworCQk0MTZFMjlBNjEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkUyOUE1MTAy
RkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU4MUJCRDEyREYwMDBBM0Y2
NCAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RDkgLyog
UmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU4MUJCRDEyREYwMDBBM0Y2NSAvKiBK
U0RPTUJpbmRpbmdJbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NERBIC8qIEpTRE9NQmlu
ZGluZ0ludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgxQkJEMTJERjAwMEEzRjc0IC8qIFRyYW5zZm9ybVN0
cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RUEgLyogVHJhbnNmb3JtU3RyZWFt
SW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTM0NywxNCArMTM0NywxNiBAQAogCQk0NjdBNjhENzI3NUVBOTkxMDA5
QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdBNjhENDI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29y
a2VyVGhyZWFkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDY3QTY4RDgyNzVFQTk5NTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3QTY4
RDUyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oICovOyB9Owog
CQk0NjdBNjhEOTI3NUVBOTk4MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0E2OEQ2Mjc1
RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQ2N0E2OERBMjc1RUE5OUMwMDlC
MzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdBNjhEMjI3NUVBOThBMDA5QjMxQzUgLyogU2hhcmVkV29y
a2VyTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQ2ODJEMjAwMUY3OTc4MzAwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MkQx
RkYxRjc5NzgyMzAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4MzQ0RTAxRURERkFB
QTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3Qu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0Njgz
REY0MDI3NjdERjk4MDA3RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4M0RGM0UyNzY3
REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaCAqLzsgfTsKIAkJ
NDY4M0RGNDEyNzY3RTkxQTAwN0QwMEM4IC8qIFNoYWRvd1JlYWxtR2xvYmFsU2NvcGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODNERjNCMjc2N0RG
MjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4OEVFM0MyNkREMjYxMDAwMkFGNUM0
IC8qIENyb3NzT3JpZ2luTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDY4OEVFM0EyNkREMjYwQzAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2OTQz
REM5Mjc2M0Y4MTcwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0M0RDNzI3NjNG
ODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2OTg1RjIzMjdBNEE2QUQw
MDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTg1RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3Jr
ZXJLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0NjlDQ0NGRTI2OUQwMjFDMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5Q0NDRkMyNjlEMDIwMjAw
NkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjlENzdCODI3MDE2MjUxMDAxNDJGQTYgLyogTmF2aWdh
dGlvblJlcXVlc3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY5RDc3QjYyNzAxNjI1MDAwMTQyRkE2IC8qIE5hdmlnYXRpb25SZXF1ZXN0ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NkE3OEIz
NDI3OTlCRDcxMDAxMTU0RkUgLyogV29ya2VyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxQjFEMjYyNkYxOEE0QjAwODgyREEyIC8qIFdv
cmtlck9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0NkFBQUEzRDI1RDM2MzIwMDBCQUY0MkYgLyogQXVkaW9GaWxlUmVhZGVyQ29jb2Eu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QUFBQTNB
MjVEMzYzMTQwMEJBRjQyRiAvKiBBdWRpb0ZpbGVSZWFkZXJDb2NvYS5oICovOyB9OwogCQk0NkI2
M0Y2QzFDNkU4RDE5MDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjNGNkIxQzZFOENERjAwMkU5
MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI2NTBERDIyOTYyNjI3MDBGRDhBQTQgLyogUGFnZUlk
ZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2QjY1MERCMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzc1LDYgKzEzNzcsNyBA
QAogCQk0NkM2OTZDQzFFNzIwNUZDMDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM2OTZDQTFFNzIwNUU0MDA1
OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgKi87IH07CiAJCTQ2QzgzRUZFMUE5QkJFMjkwMEE3OUE0
MSAvKiBHZW9Ob3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZDODNFRkMxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZDQTlDNDQxRjk3
QkJFOTAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDQTlDNDExRjk3QkJFNzAwNENGQzNBIC8qIFZpc2li
aWxpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTQ2Q0Y1MDRBMjdBQjFFQTQwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZD
RjUwNDgyN0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZEMDAwNDAy
NkEwRkVCMzAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkQwMDAzRTI2QTBGRTZGMDBEMUJGMUUgLyogU3VibWl0
RXZlbnQuaCAqLzsgfTsKIAkJNDZEQTRBMDIyN0FCMDM5MzAwRTM3NUE4IC8qIFRyYW5zZmVycmVk
TWVzc2FnZVBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2REE0QTAwMjdBQjAzOEQwMEUzNzVBOCAvKiBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZEQkI2
NTAxQUI4Qzk2RjAwRDlBODEzIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REJCNjRFMUFCOEM5NkYwMEQ5QTgxMyAv
KiBQb3dlck9ic2VydmVyTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTkyNDUsOCArOTI0OCw2IEBACiAJCTQ2N0E2OENGMjc1RUE5ODkwMDlC
MzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2N0E2OEQwMjc1RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDY3QTY4RDEyNzVFQTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlw
dExvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NjdBNjhEMjI3NUVBOThBMDA5QjMx
QzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJN
YW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2N0E2OEQzMjc1RUE5OEIw
MDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNo
YXJlZFdvcmtlck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdB
NjhENDI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNoYXJlZFdvcmtlclRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjdBNjhENTI3NUVBOThDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NjdBNjhENjI3NUVBOThDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkyNjIsNiArOTI2Myw4IEBACiAJCTQ2ODNERjNF
Mjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OEVFM0EyNkREMjYwQzAwMkFGNUM0
IC8qIENyb3NzT3JpZ2luTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcm9zc09yaWdpbk1vZGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4QjhCREUyNUNDODQ5MzAwRjY3ODIyIC8q
IEpTQmFzZUF1ZGlvQ29udGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Jhc2VB
dWRpb0NvbnRleHRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0
M0RDNzI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQ2OTg1RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3Jr
ZXJLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyS2V5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OUNDQ0ZBMjY5RDAyMDIwMDZFMDMx
NCAvKiBCcm9hZGNhc3RDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJyb2FkY2FzdENo
YW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlDQ0NGQzI2OUQwMjAy
MDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCcm9hZGNhc3RD
aGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OUNDQ0ZEMjY5RDAyMDMw
MDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBCcm9hZGNhc3RDaGFubmVsLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkzMDIsNiArOTMwNSw4IEBACiAJCTQ2
QzgzRUZDMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHZW9Ob3RpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NkNBOUM0MTFGOTdCQkU3MDA0Q0ZDM0EgLyogVmlzaWJpbGl0eVN0YXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpc2liaWxpdHlTdGF0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NkNBOUM0MjFGOTdCQkU3MDA0Q0ZDM0EgLyogVmlzaWJpbGl0
eVN0YXRlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBWaXNpYmlsaXR5U3RhdGUuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkNGNTA0ODI3QUIxRUExMDA3MERCQzggLyog
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZDRjUwNDky
N0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDZEMDAwM0MyNkEwRkU2RjAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN1Ym1pdEV2ZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZEMDAwM0UyNkEwRkU2RjAwRDFCRjFF
IC8qIFN1Ym1pdEV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1Ym1p
dEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RDAwMDNGMjZBMEZFNzAw
MEQxQkYxRSAvKiBTdWJtaXRFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU3VibWl0
RXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE1NjgsNiArMjE1NzMs
OCBAQAogCQk0NjQ3Q0U2MTI3QUFFMURBMDA5Q0JENDggLyogY29udGV4dCAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDZDRjUwNDkyN0FCMUVBMTAwNzBE
QkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcCAqLywKKwkJCQk0NkNGNTA0ODI3
QUIxRUExMDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCAqLywKIAkJCQk0
NjdBNjhEMDI3NUVBOTg5MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmNwcCAqLywKIAkJ
CQk0NjdBNjhENDI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggKi8sCiAJ
CQkJNDY3QTY4Q0YyNzVFQTk4OTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmNw
cCAqLywKQEAgLTIxNTg3LDEwICsyMTU5NCwxMCBAQAogCQkJCTQ2Njk0Q0UxMjc1OTQ0OEMwMEUz
MTUwRSAvKiBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oICovLAogCQkJCTQ2Njk0Q0UwMjc1OTQ0
OEMwMEUzMTUwRSAvKiBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5pZGwgKi8sCiAJCQkJNDZFQzQ0
NDgyN0FCMzM3RjAwRkZDRDk2IC8qIFNoYXJlZFdvcmtlcklkZW50aWZpZXIuaCAqLywKLQkJCQk0
NjdBNjhEMzI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5jcHAgKi8sCi0J
CQkJNDY3QTY4RDIyNzVFQTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCAqLywK
KwkJCQk0Njk4NUYyMjI3QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggKi8sCiAJ
CQkJNDY2OEEwQjMyN0FCNjAwQjAwQzcyMEJDIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b24uY3BwICovLAogCQkJCTQ2NjhBMEIxMjdBQjYwMEIwMEM3MjBCQyAvKiBTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uLmggKi8sCisJCQkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAqLywKIAkJCQk0NjY4QTBCNDI3QUI2MDBDMDBD
NzIwQkMgLyogU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwICovLAogCQkJCTQ2NjhBMEI1MjdBQjYw
MEMwMEM3MjBCQyAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5oICovLAogCQkJCTQ2N0E2OEQxMjc1
RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwICovLApAQCAtMzcy
MDQsOSArMzcyMTEsMTEgQEAKIAkJCQk4MzRERkFEMDFGN0RBRTVEMDBDMjcyNUIgLyogU2hhcmVk
U3RyaW5nSGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFQTMwOTlFQjc4QzAwNTZFNTgx
IC8qIFNoYXJlZFRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURDMDRGRTI3QTgzQzkzMDA4
Q0Y5NjggLyogU2hhcmVkVmlkZW9GcmFtZUluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2Q0Y1
MDRBMjdBQjFFQTQwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDZFQzQ0NEEyN0FCMzM4OTAwRkZDRDk2IC8qIFNoYXJlZFdvcmtlcklk
ZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ2N0E2OERBMjc1RUE5OUMwMDlCMzFDNSAv
KiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0Njk4NUYyMzI3QTRB
NkFEMDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjY4
QTBCNjI3QUI2MDFCMDBDNzIwQkMgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDY5NDNEQzkyNzYzRjgxNzAwNEI2MTBFIC8qIFNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2NjhBMEI3MjdBQjYwMjEw
MEM3MjBCQyAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY3
QTY4RDgyNzVFQTk5NTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDY3QTY4RDcyNzVFQTk5MTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRo
cmVhZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zODA2Nyw2ICszODA3Niw3IEBACiAJCQkJRTEyNzFB
MEIwRUVFQzc3QTAwRjYxMjEzIC8qIFdvcmtlck5hdmlnYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTVDQjA1MjUxRkI1MUYzQTAwMDg5Qjk3IC8qIFdvcmtlck5ldHdvcmtBZ2VudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMkU0MzQ2NTEwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFBy
b3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkE3OEIzNDI3OTlCRDcxMDAxMTU0RkUgLyogV29y
a2VyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNENkFBRTYyNTI0RUUxQzAwNDI4QjRC
IC8qIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzlB
MDk1RDI1MjRGMzdGMDBFRUYzMjggLyogV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODNGNkFFQkYyNTI3QkIwQzAwMzRCQ0QzIC8qIFdvcmtlck9y
V29ya2xldFRocmVhZC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgK
aW5kZXggNWZlZjQyZWUwNmVjLi5mYTdkMjMwMmVjMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dn
aW5nLmgKQEAgLTEyNyw2ICsxMjcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgTShXZWJH
TCkgXAogICAgIE0oV2ViUlRDKSBcCiAgICAgTShXZWJSVENTdGF0cykgXAorICAgIE0oV29ya2Vy
KSBcCiAgICAgTShYUikgXAogICAgIE0oV2hlZWxFdmVudFRlc3RNb25pdG9yKSBcCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCmluZGV4IGI0ODc0
N2EyYzA5OS4uNDZkYzQ1NGRmZGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTUgKzI2LDE3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCiAKKyNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIK
ICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZUNoYW5uZWwuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUg
IlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUg
IlNoYXJlZFdvcmtlck1hbmFnZXIuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyUHJvdmlkZXIuaCIKLSNpbmNsdWRlICJT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlck9wdGlvbnMuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtNDMsMTIgKzQ1LDI3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFNoYXJlZFdvcmtlcik7CiAKKyNk
ZWZpbmUgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hh
cmVkV29ya2VyLCAiJXAgLSBbaWRlbnRpZmllcj0le3B1YmxpY31zXSBTaGFyZWRXb3JrZXI6OiIg
Zm10LCB0aGlzLCBtX2lkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAjI19fVkFf
QVJHU19fKQorI2RlZmluZSBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HX0VSUk9SKGZtdCwgLi4u
KSBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICIlcCAtIFtpZGVudGlmaWVyPSV7cHVi
bGljfXNdIFNoYXJlZFdvcmtlcjo6IiBmbXQsIHRoaXMsIG1faWRlbnRpZmllci50b1N0cmluZygp
LnV0ZjgoKS5kYXRhKCksICMjX19WQV9BUkdTX18pCisKK3N0YXRpYyBIYXNoTWFwPFNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIsIFNoYXJlZFdvcmtlcio+JiBhbGxTaGFyZWRXb3JrZXJzKCkK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxIYXNoTWFwPFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFNoYXJlZFdvcmtlcio+PiBh
bGxTaGFyZWRXb3JrZXJzOworICAgIHJldHVybiBhbGxTaGFyZWRXb3JrZXJzOworfQorCitTaGFy
ZWRXb3JrZXIqIFNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIoU2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBhbGxTaGFyZWRXb3JrZXJzKCku
Z2V0KGlkZW50aWZpZXIpOworfQorCiBzdGF0aWMgaW5saW5lIFNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24qIG1haW5UaHJlYWRDb25uZWN0aW9uKCkKIHsKICAgICByZXR1cm4gU2hhcmVkV29y
a2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKIH0KIAot
RXhjZXB0aW9uT3I8UmVmPFNoYXJlZFdvcmtlcj4+IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKERvY3Vt
ZW50JiBkb2N1bWVudCwgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzLCBTdHJpbmcmJiBz
Y3JpcHRVUkxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2Vy
T3B0aW9ucz4+JiYgbWF5YmVPcHRpb25zKQorRXhjZXB0aW9uT3I8UmVmPFNoYXJlZFdvcmtlcj4+
IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nJiYgc2NyaXB0
VVJMU3RyaW5nLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxTdHJpbmcsIFdvcmtlck9wdGlv
bnM+PiYmIG1heWJlT3B0aW9ucykKIHsKICAgICBpZiAoIW1haW5UaHJlYWRDb25uZWN0aW9uKCkp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIlNoYXJlZCB3
b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkIiB9OwpAQCAtNzcsMjYgKzk0LDM0IEBAIEV4Y2VwdGlv
bk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBTaGFyZWRXb3JrZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9j
dW1lbnQsIEpTQzo6UnVuCiAgICAgYXV0byBjaGFubmVsID0gTWVzc2FnZUNoYW5uZWw6OmNyZWF0
ZShkb2N1bWVudCk7CiAgICAgYXV0byB0cmFuc2ZlcnJlZFBvcnQgPSBjaGFubmVsLT5wb3J0Migp
LmRpc2VudGFuZ2xlKCk7CiAKLSAgICBhdXRvIHNoYXJlZFdvcmtlciA9IGFkb3B0UmVmKCpuZXcg
U2hhcmVkV29ya2VyKGRvY3VtZW50LCBjaGFubmVsLT5wb3J0MSgpLCBydW50aW1lRmxhZ3MpKTsK
KyAgICBhdXRvIHNoYXJlZFdvcmtlciA9IGFkb3B0UmVmKCpuZXcgU2hhcmVkV29ya2VyKGRvY3Vt
ZW50LCB1cmwsIGNoYW5uZWwtPnBvcnQxKCkpKTsKICAgICBzaGFyZWRXb3JrZXItPnN1c3BlbmRJ
Zk5lZWRlZCgpOwogCi0gICAgbWFpblRocmVhZENvbm5lY3Rpb24oKS0+cmVxdWVzdFNoYXJlZFdv
cmtlcih1cmwsIHNoYXJlZFdvcmtlci5nZXQoKSwgV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBX
VEZNb3ZlKG9wdGlvbnMpKTsKKyAgICBDbGllbnRPcmlnaW4gY2xpZW50T3JpZ2luIHsgZG9jdW1l
bnQudG9wRG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSwgZG9jdW1lbnQuc2VjdXJp
dHlPcmlnaW4oKS5kYXRhKCkgfTsKKyAgICBtYWluVGhyZWFkQ29ubmVjdGlvbigpLT5yZXF1ZXN0
U2hhcmVkV29ya2VyKGNsaWVudE9yaWdpbiwgc2hhcmVkV29ya2VyLT5pZGVudGlmaWVyKCksIHVy
bCwgV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBvcHRpb25zKTsKICAgICByZXR1cm4gc2hhcmVk
V29ya2VyOwogfQogCi1TaGFyZWRXb3JrZXI6OlNoYXJlZFdvcmtlcihEb2N1bWVudCYgZG9jdW1l
bnQsIFJlZjxNZXNzYWdlUG9ydD4mJiBwb3J0LCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxh
Z3MpCitTaGFyZWRXb3JrZXI6OlNoYXJlZFdvcmtlcihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0
IFVSTCYgdXJsLCBSZWY8TWVzc2FnZVBvcnQ+JiYgcG9ydCkKICAgICA6IEFjdGl2ZURPTU9iamVj
dCgmZG9jdW1lbnQpCisgICAgLCBtX2lkZW50aWZpZXIoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllcjo6Z2VuZXJhdGUoKSkKICAgICAsIG1fcG9ydChXVEZNb3ZlKHBvcnQpKQogICAgICwgbV9p
ZGVudGlmaWVyRm9ySW5zcGVjdG9yKCJTaGFyZWRXb3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRp
ZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCkpCi0gICAgLCBtX3J1bnRpbWVGbGFncyhy
dW50aW1lRmxhZ3MpCi0gICAgLCBtX2NyZWF0aW9uVGltZShNb25vdG9uaWNUaW1lOjpub3coKSkK
LSAgICAsIG1fcHJveHkoU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZSgqdGhpcykpCiB7
CisgICAgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRygiU2hhcmVkV29ya2VyOiIpOworICAgIGFs
bFNoYXJlZFdvcmtlcnMoKS5hZGQobV9pZGVudGlmaWVyLCB0aGlzKTsKKworICAgIC8vIElmIHRo
ZSBzaGFyZWQgd29ya2VyIFVSTCBpcyBhIGJsb2IgVVJMLCBtYWtlIHN1cmUgdG8ga2VlcCBpdCBh
bGl2ZSB1bnRpbCB0aGUgd29ya2VyIGhhcyBmaW5pc2hlZCBsb2FkaW5nLgorICAgIGlmICh1cmwu
cHJvdG9jb2xJc0Jsb2IoKSkKKyAgICAgICAgbV9ibG9iVVJMRXh0ZW5zaW9uID0gdXJsOwogfQog
CiBTaGFyZWRXb3JrZXI6On5TaGFyZWRXb3JrZXIoKQogewotICAgIG1fcHJveHkud29ya2VyT2Jq
ZWN0RGVzdHJveWVkKCk7CisgICAgQVNTRVJUKGFsbFNoYXJlZFdvcmtlcnMoKS5nZXQobV9pZGVu
dGlmaWVyKSA9PSB0aGlzKTsKKyAgICBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HKCJ+U2hhcmVk
V29ya2VyOiIpOworICAgIGFsbFNoYXJlZFdvcmtlcnMoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsK
KyAgICBBU1NFUlQoIW1faXNBY3RpdmUpOwogfQogCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBT
aGFyZWRXb3JrZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdApAQCAtMTE0LDE5ICsx
MzksMjkgQEAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgU2hhcmVkV29ya2VyOjpldmVudFRhcmdldElu
dGVyZmFjZSgpIGNvbnN0CiAgICAgcmV0dXJuIFNoYXJlZFdvcmtlckV2ZW50VGFyZ2V0SW50ZXJm
YWNlVHlwZTsKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXI6OnN0b3AoKQordm9pZCBTaGFyZWRXb3Jr
ZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAg
dGVybWluYXRlKCk7CisgICAgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRygiZmluaXNoTG9hZGlu
Zzogc3VjY2Vzcz0lZCIsIGVycm9yLmlzTnVsbCgpKTsKKyAgICBpZiAoIWVycm9yLmlzTnVsbCgp
KSB7CisgICAgICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6
RE9NTWFuaXB1bGF0aW9uLCBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBF
dmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7CisgICAgICAg
IG1faXNBY3RpdmUgPSBmYWxzZTsKKyAgICB9CisgICAgbV9ibG9iVVJMRXh0ZW5zaW9uLmNsZWFy
KCk7CiB9CiAKIGJvb2wgU2hhcmVkV29ya2VyOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9wcm94eS5oYXNQZW5kaW5nQWN0aXZpdHkoKSB8fCBtX2lz
TG9hZGluZzsKKyAgICByZXR1cm4gbV9pc0FjdGl2ZTsKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXI6
OnRlcm1pbmF0ZSgpCit2b2lkIFNoYXJlZFdvcmtlcjo6c3RvcCgpCiB7Ci0gICAgbV9wcm94eS50
ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpOworICAgIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9M
T0coInN0b3A6Iik7CisgICAgbV9pc0FjdGl2ZSA9IGZhbHNlOworICAgIG1haW5UaHJlYWRDb25u
ZWN0aW9uKCktPnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KG1faWRlbnRpZmllcik7CiB9
CiAKKyN1bmRlZiBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HCisjdW5kZWYgU0hBUkVEX1dPUktF
Ul9SRUxFQVNFX0xPR19FUlJPUgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5oCmluZGV4IGU1NWIxY2Y1NTEzZC4u
YmU1Nzc4MzVhMDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9T
aGFyZWRXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNywzOSArMjcsMzYgQEAKIAogI2luY2x1ZGUgIkFic3RyYWN0V29ya2VyLmgiCiAj
aW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUnVu
dGltZUZsYWdzLmg+CisjaW5jbHVkZSAiQmxvYlVSTC5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lc3NhZ2VQb3J0OwotY2xhc3MgU2hhcmVkV29y
a2VyVGhyZWFkUHJveHk7CitjbGFzcyBSZXNvdXJjZUVycm9yOwogCiBzdHJ1Y3QgV29ya2VyT3B0
aW9uczsKIAogY2xhc3MgU2hhcmVkV29ya2VyIGZpbmFsIDogcHVibGljIEFic3RyYWN0V29ya2Vy
LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNo
YXJlZFdvcmtlcik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxTaGFyZWRX
b3JrZXI+PiBjcmVhdGUoRG9jdW1lbnQmLCBKU0M6OlJ1bnRpbWVGbGFncywgU3RyaW5nJiYgc2Ny
aXB0VVJMLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxTdHJpbmcsIFdvcmtlck9wdGlvbnM+
PiYmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFNoYXJlZFdvcmtlcj4+IGNyZWF0ZShE
b2N1bWVudCYsIFN0cmluZyYmIHNjcmlwdFVSTCwgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8
U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4mJik7CiAgICAgflNoYXJlZFdvcmtlcigpOwogCisgICAg
c3RhdGljIFNoYXJlZFdvcmtlciogZnJvbUlkZW50aWZpZXIoU2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllcik7CisgICAgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBpZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgTWVzc2FnZVBvcnQmIHBvcnQoKSBj
b25zdCB7IHJldHVybiBtX3BvcnQuZ2V0KCk7IH0KLSAgICBKU0M6OlJ1bnRpbWVGbGFncyBydW50
aW1lRmxhZ3MoKSB7IHJldHVybiBtX3J1bnRpbWVGbGFnczsgfQogCiAgICAgY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyRm9ySW5zcGVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyRm9y
SW5zcGVjdG9yOyB9Ci0gICAgTW9ub3RvbmljVGltZSBjcmVhdGlvblRpbWUoKSBjb25zdCB7IHJl
dHVybiBtX2NyZWF0aW9uVGltZTsgfQogCi0gICAgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkmIHBy
b3h5KCkgeyByZXR1cm4gbV9wcm94eTsgfQotCi0gICAgdm9pZCBzZXRJc0xvYWRpbmcoYm9vbCBp
c0xvYWRpbmcpIHsgbV9pc0xvYWRpbmcgPSBpc0xvYWRpbmc7IH0KKyAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQuCiAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0
IGZpbmFsOwogCiBwcml2YXRlOgotICAgIFNoYXJlZFdvcmtlcihEb2N1bWVudCYsIFJlZjxNZXNz
YWdlUG9ydD4mJiwgSlNDOjpSdW50aW1lRmxhZ3MpOwotCi0gICAgdm9pZCB0ZXJtaW5hdGUoKTsK
KyAgICBTaGFyZWRXb3JrZXIoRG9jdW1lbnQmLCBjb25zdCBVUkwmLCBSZWY8TWVzc2FnZVBvcnQ+
JiYpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQuCiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZl
bnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbDsKQEAgLTcwLDEyICs2NywxMSBAQCBwcml2
YXRlOgogICAgIGJvb2wgdmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwog
CiAKKyAgICBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBS
ZWY8TWVzc2FnZVBvcnQ+IG1fcG9ydDsKICAgICBTdHJpbmcgbV9pZGVudGlmaWVyRm9ySW5zcGVj
dG9yOwotICAgIEpTQzo6UnVudGltZUZsYWdzIG1fcnVudGltZUZsYWdzOwotICAgIE1vbm90b25p
Y1RpbWUgbV9jcmVhdGlvblRpbWU7Ci0gICAgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkmIG1fcHJv
eHk7IC8vIFRoZSBwcm94eSBvdXRsaXZlcyB0aGUgd29ya2VyIHRvIHBlcmZvcm0gdGhyZWFkIHNo
dXRkb3duLgotICAgIGJvb2wgbV9pc0xvYWRpbmcgeyBmYWxzZSB9OworICAgIEJsb2JVUkxIYW5k
bGUgbV9ibG9iVVJMRXh0ZW5zaW9uOworICAgIGJvb2wgbV9pc0FjdGl2ZSB7IHRydWUgfTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXIuaWRsCmluZGV4IGIxNzFjOWVkZjgxYi4uNGM3NDE1NGQ4MjA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5pZGwKQEAg
LTI4LDcgKzI4LDcgQEAKICAgICBFeHBvc2VkPVdpbmRvdwogXQogaW50ZXJmYWNlIFNoYXJlZFdv
cmtlciA6IEV2ZW50VGFyZ2V0IHsKLSAgW0NhbGxXaXRoPURvY3VtZW50JlJ1bnRpbWVGbGFnc10g
Y29uc3RydWN0b3IoVVNWU3RyaW5nIHNjcmlwdFVSTCwgb3B0aW9uYWwgKERPTVN0cmluZyBvciBX
b3JrZXJPcHRpb25zKSBvcHRpb25zKTsKKyAgW0NhbGxXaXRoPURvY3VtZW50XSBjb25zdHJ1Y3Rv
cihVU1ZTdHJpbmcgc2NyaXB0VVJMLCBvcHRpb25hbCAoRE9NU3RyaW5nIG9yIFdvcmtlck9wdGlv
bnMpIG9wdGlvbnMpOwogCiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZXNzYWdlUG9ydCBwb3J0Owog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
cktleS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyS2V5LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41ZjllNmRjOTBiYTkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJLZXkuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJDbGllbnRPcmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0cnVjdCBTaGFyZWRXb3JrZXJLZXkgeworICAgIFdlYkNvcmU6OkNs
aWVudE9yaWdpbiBvcmlnaW47CisgICAgVVJMIHVybDsKKyAgICBTdHJpbmcgbmFtZTsKKworICAg
IHVuc2lnbmVkIGhhc2goKSBjb25zdDsKK307CisKK2lubGluZSB1bnNpZ25lZCBTaGFyZWRXb3Jr
ZXJLZXk6Omhhc2goKSBjb25zdAoreworICAgIEhhc2hlciBoYXNoZXI7CisgICAgYWRkKGhhc2hl
ciwgb3JpZ2luLmhhc2goKSk7CisgICAgYWRkKGhhc2hlciwgdXJsKTsKKyAgICBhZGQoaGFzaGVy
LCBuYW1lKTsKKyAgICByZXR1cm4gaGFzaGVyLmhhc2goKTsKK30KKworaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBTaGFyZWRXb3JrZXJLZXkmIGEsIGNvbnN0IFNoYXJlZFdvcmtlcktleSYg
YikKK3sKKyAgICByZXR1cm4gYS5vcmlnaW4gPT0gYi5vcmlnaW4gJiYgYS51cmwgPT0gYi51cmwg
JiYgYS5uYW1lID09IGIubmFtZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1l
c3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6U2hh
cmVkV29ya2VyS2V5PiB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViQ29yZTo6
U2hhcmVkV29ya2VyS2V5JiBrZXkpCisgICAgeworICAgICAgICByZXR1cm4ga2V5Lmhhc2goKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJLZXkmIGEsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgYikKKyAgICB7CisgICAg
ICAgIHJldHVybiBhID09IGI7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRv
Q29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0
IEhhc2hUcmFpdHM8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5PiA6IEdlbmVyaWNIYXNoVHJhaXRz
PFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleT4geworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBl
bXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRl
ZFZhbHVlKFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgc2xvdCkgeyBuZXcgKE5vdE51bGwsICZz
bG90LnVybCkgVVJMKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQorICAgIHN0YXRpYyBi
b29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgc2xvdCkg
eyByZXR1cm4gc2xvdC51cmwuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorfTsKKworfSAv
LyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlck1hbmFnZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh
NzQxMDg3N2RiMzIuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlZFdv
cmtlck1hbmFnZXIuaCIKLQotI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgotI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgotI2luY2x1
ZGUgIk1lc3NhZ2VFdmVudC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgotI2lu
Y2x1ZGUgIlNoYXJlZFdvcmtlci5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlckdsb2JhbFNjb3Bl
LmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgiCi0jaW5jbHVkZSAiU2hh
cmVkV29ya2VyVGhyZWFkLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCIK
LSNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCi0jaW5jbHVkZSAiV29ya2VyU2NyaXB0TG9hZGVy
LmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1TaGFyZWRXb3JrZXJNYW5hZ2VyJiBTaGFy
ZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24oKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTaGFyZWRXb3JrZXJNYW5hZ2VyPiBpbnN0YW5jZTsKLSAgICByZXR1cm4gaW5zdGFuY2UuZ2V0
KCk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyTWFuYWdlcjo6Y29ubmVjdChjb25zdCBVUkwmIHVy
bCwgU2hhcmVkV29ya2VyJiB3b3JrZXIsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBtZXNzYWdl
UG9ydCwgV29ya2VyT3B0aW9ucyYmIG9wdGlvbnMpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKLSAgICAvLyBGSVhNRTogSGFuZGxlIHdvcmtlcnMgZnJvbSBvdGhlciBwcm9jZXNz
ZXMsIHdoaWNoIHdpbGwgcHJvYmFibHkgcmVxdWlyZSBtb3ZpbmcgY29ubmVjdCB0byB0aGUgRnJh
bWVMb2FkZXJDbGllbnQgb3Igc29tZXRoaW5nLgotICAgIC8vIE1heWJlIHNvbWV0aGluZyBtb3Jl
IGxpa2Ugd2hhdCBTZXJ2aWNlV29ya2VycyBkb2VzLgotCi0gICAgLy8gRklYTUU6IENoZWNrIGlm
IHdlIGFscmVhZHkgbWFkZSBhIHRocmVhZC4KLSAgICAvLyBGSVhNRTogQ2hlY2sgaWYgdGhlcmUn
cyBhbHJlYWR5IGEgc2hhcmVkIHdvcmtlciBhbmQgdXNlIHRoYXQgaWYgdGhlcmUgaXMuCi0KLSAg
ICBhdXRvIGxvYWRlciA9IG1ha2VVbmlxdWVSZWY8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPih1
cmwsIHdvcmtlciwgV1RGTW92ZShtZXNzYWdlUG9ydCksIFdURk1vdmUob3B0aW9ucykpOwotICAg
IGF1dG8gaWRlbnRpZmllciA9IGxvYWRlci0+aWRlbnRpZmllcigpOwotICAgIG1fbG9hZGVycy5h
ZGQoaWRlbnRpZmllciwgV1RGTW92ZShsb2FkZXIpKTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJN
YW5hZ2VyOjpzY3JpcHRMb2FkRmFpbGVkKFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYgbG9hZGVy
KQotewotICAgIEFjdGl2ZURPTU9iamVjdDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KGxvYWRl
ci53b3JrZXIoKSwgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2Fu
Y2VsYWJsZTo6WWVzKSk7Ci0gICAgbV9sb2FkZXJzLnJlbW92ZShsb2FkZXIuaWRlbnRpZmllcigp
KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzY3JpcHRMb2FkZWRTdWNjZXNzZnVs
bHkoU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJiBsb2FkZXIsIGNvbnN0IFNjcmlwdEJ1ZmZlciYg
c2NyaXB0QnVmZmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBTaGFyZWRXb3JrZXImIHNoYXJlZFdvcmtlciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYm
IHRyYW5zZmVycmVkUG9ydCkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAg
IGF1dG8mIHdvcmtlciA9IGxvYWRlci53b3JrZXIoKTsKLSAgICBhdXRvJiBvcHRpb25zID0gbG9h
ZGVyLm9wdGlvbnMoKTsKLQotICAgIGF1dG8mIHByb3h5ID0gc2hhcmVkV29ya2VyLnByb3h5KCk7
Ci0KLSAgICBwcm94eS5zdGFydFdvcmtlckdsb2JhbFNjb3BlKAotICAgICAgICBsb2FkZXIudXJs
KCksCi0gICAgICAgIG9wdGlvbnMubmFtZSwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC51c2VyQWdlbnQobG9hZGVyLnVybCgpKSwKLSAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PmxvYWRlclN0cmF0ZWd5KCktPmlzT25MaW5lKCksCi0gICAgICAgIHNjcmlwdEJ1ZmZlciwKLSAg
ICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+cmVz
cG9uc2VIZWFkZXJzKCksCi0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuc2hvdWxkQnlw
YXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KCksCi0gICAgICAgIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSgpLAotICAgICAgICB3b3JrZXIu
Y3JlYXRpb25UaW1lKCksCi0gICAgICAgIFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZywKLSAg
ICAgICAgb3B0aW9ucy50eXBlLAotICAgICAgICBvcHRpb25zLmNyZWRlbnRpYWxzLAotICAgICAg
ICB3b3JrZXIucnVudGltZUZsYWdzKCkKLSAgICApOwotICAgIGlmICghcHJveHkudGhyZWFkKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04oaXM8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsKLSAgICBhdXRv
IHNvdXJjZU9yaWdpbiA9IGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0
KS5zZWN1cml0eU9yaWdpbigpLnRvU3RyaW5nKCk7Ci0KLSAgICBwcm94eS50aHJlYWQoKS0+cnVu
TG9vcCgpLnBvc3RUYXNrKFt0cmFuc2ZlcnJlZFBvcnQgPSBXVEZNb3ZlKHRyYW5zZmVycmVkUG9y
dCksIHNvdXJjZU9yaWdpbiA9IFdURk1vdmUoc291cmNlT3JpZ2luKS5pc29sYXRlZENvcHkoKV0g
KGF1dG8mIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIG11dGFibGUgewotICAgICAgICBkb3duY2Fz
dDxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkucG9zdENv
bm5lY3RFdmVudChXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCksIHNvdXJjZU9yaWdpbik7Ci0gICAg
fSk7Ci0KLSAgICBtX2xvYWRlcnMucmVtb3ZlKGxvYWRlci5pZGVudGlmaWVyKCkpOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCmluZGV4IGRk
YTM4NGQyMjkxMi4uMWNkZTBiYTM1OTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcApA
QCAtMjYsMTAgKzI2LDY2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIgogCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0Lmgi
CisjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJTY3JpcHRCdWZmZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKKyNpbmNsdWRlICJT
aGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJGZXRjaFJlc3VsdC5o
IgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xP
RyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgQ09O
TkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoU2hh
cmVkV29ya2VyLCAiJXAgLSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjoiIGZtdCwgdGhp
cywgIyNfX1ZBX0FSR1NfXykKKworc3RhdGljIHVpbnQ2NF90IGxvYWRlcklkZW50aWZpZXJTZWVk
ID0gMDsKKwogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6U2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbigpID0gZGVmYXVsdDsKIAogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6
flNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CiAKK3ZvaWQgU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6ZmV0Y2hTY3JpcHRJbkNsaWVudChVUkwmJiB1cmwsIFdl
YkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciwgV29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byogd29ya2VyT2JqZWN0ID0g
U2hhcmVkV29ya2VyOjpmcm9tSWRlbnRpZmllcihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
KTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJmZXRjaFNjcmlwdEluQ2xpZW50OiBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMsIHdvcmtlcj0lcCIsIHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB3b3JrZXJPYmpl
Y3QpOworICAgIGlmICghd29ya2VyT2JqZWN0KQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIod29ya2VyRmV0Y2hFcnJvcihSZXNvdXJjZUVycm9yIHsgUmVzb3VyY2VFcnJvcjo6VHlw
ZTo6Q2FuY2VsbGF0aW9uIH0pKTsKKworICAgIGF1dG8gbG9hZGVySWRlbnRpZmllciA9ICsrbG9h
ZGVySWRlbnRpZmllclNlZWQ7CisgICAgYXV0byBsb2FkZXIgPSBtYWtlVW5pcXVlUmVmPFNoYXJl
ZFdvcmtlclNjcmlwdExvYWRlcj4oV1RGTW92ZSh1cmwpLCAqd29ya2VyT2JqZWN0LCBXVEZNb3Zl
KHdvcmtlck9wdGlvbnMpKTsKKyAgICBhdXRvIGxvYWRlclB0ciA9IGxvYWRlci5wdHIoKTsKKyAg
ICBtX2xvYWRlcnMuYWRkKGxvYWRlcklkZW50aWZpZXIsIFdURk1vdmUobG9hZGVyKSk7CisKKyAg
ICBsb2FkZXJQdHItPmxvYWQoW3RoaXMsIGxvYWRlcklkZW50aWZpZXIsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IFdvcmtlckZldGNoUmVzdWx0
JiBmZXRjaFJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0co
ImZldGNoU2NyaXB0SW5DbGllbnQ6IGZpbmlzaGVkIHNjcmlwdCBsb2FkLCBzdWNjZXNzPSVkIiwg
ZmV0Y2hSZXN1bHQuZXJyb3IuaXNOdWxsKCkpOworICAgICAgICBhdXRvIGxvYWRlciA9IG1fbG9h
ZGVycy50YWtlKGxvYWRlcklkZW50aWZpZXIpOworICAgICAgICBBU1NFUlQobG9hZGVyKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmV0Y2hSZXN1bHQpOworICAgIH0pOworfQorCit2b2lk
IFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Om5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENv
bXBsZXRpb24oV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8qIHdvcmtlck9iamVjdCA9IFNoYXJlZFdv
cmtlcjo6ZnJvbUlkZW50aWZpZXIoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAg
Q09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUigibm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29t
cGxldGlvbjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zLCB3b3JrZXI9
JXAsIHN1Y2Nlc3M9JWQiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgd29ya2VyT2JqZWN0LCBlcnJvci5pc051bGwoKSk7CisgICAgaWYgKHdv
cmtlck9iamVjdCkKKyAgICAgICAgd29ya2VyT2JqZWN0LT5kaWRGaW5pc2hMb2FkaW5nKGVycm9y
KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpwb3N0RXhjZXB0aW9u
VG9Xb3JrZXJPYmplY3QoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgYXV0byogd29ya2VyT2JqZWN0ID0gU2hhcmVkV29y
a2VyOjpmcm9tSWRlbnRpZmllcihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBD
T05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKCJwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Q6
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cywgd29ya2VyPSVwIiwgc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHdvcmtl
ck9iamVjdCk7CisgICAgaWYgKHdvcmtlck9iamVjdCkKKyAgICAgICAgQWN0aXZlRE9NT2JqZWN0
OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKndvcmtlck9iamVjdCwgVGFza1NvdXJjZTo6RE9N
TWFuaXB1bGF0aW9uLCBFcnJvckV2ZW50OjpjcmVhdGUoZXJyb3JNZXNzYWdlLCBzb3VyY2VVUkws
IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgeyB9KSk7Cit9CisKKyN1bmRlZiBDT05ORUNUSU9O
X1JFTEVBU0VfTE9HCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUgorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKaW5kZXggNGVkNWExYzY1
YjU4Li45NTZiNDczNGExMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKQEAgLTI1LDIyICsy
NSwzOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0LmgiCisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkV29y
a2VyOworY2xhc3MgTWVzc2FnZVBvcnQ7CitjbGFzcyBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI7
CisKK3N0cnVjdCBDbGllbnRPcmlnaW47CitzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7CiBzdHJ1
Y3QgV29ya2VyT3B0aW9uczsKIAogY2xhc3MgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiA6
IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24+IHsKIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFNoYXJlZFdvcmtlcihjb25zdCBVUkwm
LCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdvcmtlck9wdGlvbnMm
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0IENsaWVu
dE9yaWdpbiYsIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFVSTCYsIFRyYW5z
ZmVycmVkTWVzc2FnZVBvcnQmJiwgY29uc3QgV29ya2VyT3B0aW9ucyYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoU2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcikgPSAwOwogCiBwcm90ZWN0ZWQ6CisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZmV0Y2hTY3JpcHRJbkNsaWVudChVUkwmJiwgV2ViQ29yZTo6
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV29ya2VyT3B0aW9ucyYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFdvcmtlckZldGNoUmVzdWx0Jik+JiYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgbm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihXZWJDb3JlOjpT
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoU2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisKICAg
ICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCk7CisKK3ByaXZh
dGU6CisgICAgSGFzaE1hcDx1aW50NjRfdCwgVW5pcXVlUmVmPFNoYXJlZFdvcmtlclNjcmlwdExv
YWRlcj4+IG1fbG9hZGVyczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIuaApzaW1pbGFyaXR5IGluZGV4IDU5JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmgKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaAppbmRleCAyNTIx
ODE2ZTY1YzcuLmViY2Q0YTdhZTg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMjkgKzI1LDEyIEBACiAKICNw
cmFnbWEgb25jZQogCi0jaW5jbHVkZSAiTWVzc2FnZVBvcnRJZGVudGlmaWVyLmgiCisjaW5jbHVk
ZSAiUHJvY2Vzc1F1YWxpZmllZC5oIgorI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
LWNsYXNzIFNoYXJlZFdvcmtlcjsKLWNsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjsKLWNs
YXNzIFNjcmlwdEJ1ZmZlcjsKLXN0cnVjdCBXb3JrZXJPcHRpb25zOwotdXNpbmcgVHJhbnNmZXJy
ZWRNZXNzYWdlUG9ydCA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIs
IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllcj47Ci0KLXVzaW5nIFNoYXJlZFdvcmtlclNj
cmlwdExvYWRlcklkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFNoYXJlZFdvcmtlclNjcmlw
dExvYWRlcj47Ci0KLWNsYXNzIFNoYXJlZFdvcmtlck1hbmFnZXIgewotcHVibGljOgotICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBTaGFyZWRXb3JrZXJNYW5hZ2VyJiBzaW5nbGV0b24oKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbm5lY3QoY29uc3QgVVJMJiwgU2hhcmVkV29ya2VyJiwg
VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBXb3JrZXJPcHRpb25zJiYpOwotCi0gICAgdm9pZCBz
Y3JpcHRMb2FkRmFpbGVkKFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYpOwotICAgIHZvaWQgc2Ny
aXB0TG9hZGVkU3VjY2Vzc2Z1bGx5KFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYsIGNvbnN0IFNj
cmlwdEJ1ZmZlciYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBTaGFyZWRXb3JrZXImLCBUcmFu
c2ZlcnJlZE1lc3NhZ2VQb3J0JiYpOwotCi1wcml2YXRlOgotICAgIEhhc2hNYXA8U2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVySWRlbnRpZmllciwgVW5pcXVlUmVmPFNoYXJlZFdvcmtlclNjcmlwdExv
YWRlcj4+IG1fbG9hZGVyczsKLX07CitlbnVtIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXJU
eXBlIHsgfTsKK3VzaW5nIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgPSBQcm9jZXNzUXVh
bGlmaWVkPE9iamVjdElkZW50aWZpZXI8U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllclR5cGU+
PjsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXggMzEx
ZWJkNjA3OGJjLi5lYTJlMDQ4Yzc2MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwyMyArMjks
MjYgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVk
V29ya2VyTWFuYWdlci5oIgorI2luY2x1ZGUgIldvcmtlckZldGNoUmVzdWx0LmgiCiAjaW5jbHVk
ZSAiV29ya2VyUnVuTG9vcC5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRXb3JrZXImIHdvcmtlciwgVHJh
bnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBvcnQsIFdvcmtlck9wdGlvbnMmJiBvcHRpb25zKQotICAg
IDogbV9pZGVudGlmaWVyKFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcklkZW50aWZpZXI6OmdlbmVy
YXRlKCkpCi0gICAgLCBtX29wdGlvbnMoV1RGTW92ZShvcHRpb25zKSkKK1NoYXJlZFdvcmtlclNj
cmlwdExvYWRlcjo6U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyKFVSTCYmIHVybCwgU2hhcmVkV29y
a2VyJiB3b3JrZXIsIFdvcmtlck9wdGlvbnMmJiBvcHRpb25zKQorICAgIDogbV9vcHRpb25zKFdU
Rk1vdmUob3B0aW9ucykpCiAgICAgLCBtX3dvcmtlcih3b3JrZXIpCi0gICAgLCBtX3BvcnQoV1RG
TW92ZShwb3J0KSkKICAgICAsIG1fbG9hZGVyKFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlKCkp
Ci0gICAgLCBtX3BlbmRpbmdBY3Rpdml0eSh3b3JrZXIubWFrZVBlbmRpbmdBY3Rpdml0eSh3b3Jr
ZXIpKQotICAgICwgbV91cmwodXJsKQorICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQogewotICAg
IG1fd29ya2VyLT5zZXRJc0xvYWRpbmcodHJ1ZSk7Ci0gICAgbV9sb2FkZXItPmxvYWRBc3luY2hy
b25vdXNseSgqd29ya2VyLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgUmVzb3VyY2VSZXF1ZXN0
KHVybCksIHdvcmtlci53b3JrZXJGZXRjaE9wdGlvbnMob3B0aW9ucywgRmV0Y2hPcHRpb25zOjpE
ZXN0aW5hdGlvbjo6U2hhcmVkd29ya2VyKSwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1l
bnQ6OkVuZm9yY2VXb3JrZXJTcmNEaXJlY3RpdmUsIFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsLCAq
dGhpcywgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7Cit9CisKK3ZvaWQgU2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyOjpsb2FkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2Vy
RmV0Y2hSZXN1bHQmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoIW1fY29t
cGxldGlvbkhhbmRsZXIpOworICAgIG1fY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKTsKKworICAgIG1fbG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoKm1fd29y
a2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFJlc291cmNlUmVxdWVzdChtX3VybCksIG1f
d29ya2VyLT53b3JrZXJGZXRjaE9wdGlvbnMobV9vcHRpb25zLCBGZXRjaE9wdGlvbnM6OkRlc3Rp
bmF0aW9uOjpTaGFyZWR3b3JrZXIpLCBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6
RW5mb3JjZVdvcmtlclNyY0RpcmVjdGl2ZSwgU2VydmljZVdvcmtlcnNNb2RlOjpBbGwsICp0aGlz
LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKIH0KIAogdm9pZCBTaGFyZWRXb3JrZXJT
Y3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCkBAIC01NSwxNiArNTgsMTIgQEAg
dm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgaWRlbnQKIAogdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6
Om5vdGlmeUZpbmlzaGVkKCkKIHsKLSAgICBtX3dvcmtlci0+c2V0SXNMb2FkaW5nKGZhbHNlKTsK
KyAgICBpZiAobV9sb2FkZXItPmZhaWxlZCgpKQorICAgICAgICByZXR1cm4gbV9jb21wbGV0aW9u
SGFuZGxlcih3b3JrZXJGZXRjaEVycm9yKG1fbG9hZGVyLT5lcnJvcigpKSk7CiAKLSAgICBhdXRv
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKLSAgICBpZiAobV9sb2FkZXItPmZhaWxlZCgpIHx8ICFzY3JpcHRFeGVjdXRpb25Db250
ZXh0KSB7Ci0gICAgICAgIG1fd29ya2VyLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmVycm9yRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5j
ZWxhYmxlOjpZZXMpKTsKLSAgICAgICAgU2hhcmVkV29ya2VyTWFuYWdlcjo6c2luZ2xldG9uKCku
c2NyaXB0TG9hZEZhaWxlZCgqdGhpcyk7IC8vIGRlbGV0ZXMgdGhpcy4KLSAgICB9IGVsc2Ugewor
ICAgIGlmIChhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbV93b3JrZXItPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3Jp
cHRJbXBvcnRlZCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgbV9sb2FkZXItPmlkZW50aWZpZXIo
KSwgbV9sb2FkZXItPnNjcmlwdCgpLnRvU3RyaW5nKCkpOwotICAgICAgICBTaGFyZWRXb3JrZXJN
YW5hZ2VyOjpzaW5nbGV0b24oKS5zY3JpcHRMb2FkZWRTdWNjZXNzZnVsbHkoKnRoaXMsIG1fbG9h
ZGVyLT5zY3JpcHQoKSwgKm1fd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fd29y
a2VyLmdldCgpLCBzdGQ6OmV4Y2hhbmdlKG1fcG9ydCwgeyB9KSk7IC8vIGRlbGV0ZXMgdGhpcy4K
LSAgICB9CisgICAgbV9jb21wbGV0aW9uSGFuZGxlcih7IG1fbG9hZGVyLT5zY3JpcHQoKSwgbV9s
b2FkZXItPmNlcnRpZmljYXRlSW5mbygpLCBtX2xvYWRlci0+Y29udGVudFNlY3VyaXR5UG9saWN5
KCksIG1fbG9hZGVyLT5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KCksIG1fbG9hZGVyLT5yZWZl
cnJlclBvbGljeSgpLCB7IH0gfSk7IC8vIGRlbGV0ZXMgdGhpcy4KIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyU2NyaXB0TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9T
aGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaAppbmRleCBhYjMwOWExY2VmYjYuLmViMGI3MTQ1YmZh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lu
Y2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0SWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJl
c291cmNlUmVzcG9uc2UuaCIKQEAgLTM4LDMyICszNywyOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFNoYXJlZFdvcmtlcjsKIGNsYXNzIFdvcmtlclNjcmlwdExvYWRlcjsKLQotY2xh
c3MgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOwotCi11c2luZyBUcmFuc2ZlcnJlZE1lc3NhZ2VQ
b3J0ID0gc3RkOjpwYWlyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciwgV2ViQ29yZTo6
TWVzc2FnZVBvcnRJZGVudGlmaWVyPjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKIAogY2xh
c3MgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyIDogcHJpdmF0ZSBXb3JrZXJTY3JpcHRMb2FkZXJD
bGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNoYXJl
ZFdvcmtlclNjcmlwdExvYWRlcihjb25zdCBVUkwmLCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJl
ZE1lc3NhZ2VQb3J0JiYsIFdvcmtlck9wdGlvbnMmJik7CisgICAgU2hhcmVkV29ya2VyU2NyaXB0
TG9hZGVyKFVSTCYmLCBTaGFyZWRXb3JrZXImLCBXb3JrZXJPcHRpb25zJiYpOworCisgICAgdm9p
ZCBsb2FkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKT4m
Jik7CiAKLSAgICBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBjb25zdCBVUkwmIHVybCgpIGNv
bnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgU2hhcmVkV29ya2VyJiB3b3JrZXIoKSB7IHJldHVy
biBtX3dvcmtlci5nZXQoKTsgfQotICAgIGNvbnN0IFdvcmtlck9wdGlvbnMmIG9wdGlvbnMoKSB7
IHJldHVybiBtX29wdGlvbnM7IH0KKyAgICBjb25zdCBXb3JrZXJPcHRpb25zJiBvcHRpb25zKCkg
Y29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZCgpIGZpbmFsOwogCi0gICAgY29u
c3QgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAg
Y29uc3QgV29ya2VyT3B0aW9ucyBtX29wdGlvbnM7CiAgICAgY29uc3QgUmVmPFNoYXJlZFdvcmtl
cj4gbV93b3JrZXI7Ci0gICAgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBtX3BvcnQ7CiAgICAgY29u
c3QgUmVmPFdvcmtlclNjcmlwdExvYWRlcj4gbV9sb2FkZXI7Ci0gICAgY29uc3QgUmVmPEFjdGl2
ZURPTU9iamVjdDo6UGVuZGluZ0FjdGl2aXR5PFNoYXJlZFdvcmtlcj4+IG1fcGVuZGluZ0FjdGl2
aXR5OwogICAgIGNvbnN0IFVSTCBtX3VybDsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFdvcmtlckZldGNoUmVzdWx0Jik+IG1fY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3No
YXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDdhOTBkOTgwNTEyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9T
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXIuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJU
aHJlYWRQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyJiBTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI+IHNoYXJlZE1hbmFnZXI7CisgICAgcmV0dXJuIHNo
YXJlZE1hbmFnZXI7Cit9CisKK1NoYXJlZFdvcmtlclRocmVhZFByb3h5KiBTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlcjo6c2hhcmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVk
V29ya2VySWRlbnRpZmllcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV93b3JrZXJNYXAuZ2V0KHNo
YXJlZFdvcmtlcklkZW50aWZpZXIpOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyOjpzdG9wU2hhcmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2Vy
SWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHdvcmtlciA9IG1fd29ya2VyTWFwLnRha2Uoc2hhcmVk
V29ya2VySWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXI6OnN0b3BTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50
aWZpZXI9JSIgUFJJdTY0ICIsIHdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9V
SW50NjQoKSwgd29ya2VyLmdldCgpKTsKKyAgICBpZiAoIXdvcmtlcikKKyAgICAgICAgcmV0dXJu
OworCisgICAgd29ya2VyLT5zZXRBc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKCk7CisKKyAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gZGVhbCB3aXRoIHRoZSB0aHJlYWQgYmVpbmcg
dW5yZXNwb25zaXZlIGhlcmUuCisKKyAgICBhdXRvJiB0aHJlYWQgPSB3b3JrZXItPnRocmVhZCgp
OworICAgIHRocmVhZC5zdG9wKFt3b3JrZXIgPSBXVEZNb3ZlKHdvcmtlcildKCkgbXV0YWJsZSB7
CisgICAgICAgIC8vIFNwaW4gdGhlIHJ1bmxvb3AgYmVmb3JlIHJlbGVhc2luZyB0aGUgc2hhcmVk
IHdvcmtlciB0aHJlYWQgcHJveHksIGFzIHRoZXJlIHdvdWxkIG90aGVyd2lzZSBiZQorICAgICAg
ICAvLyBhIHJhY2UgdG93YXJkcyBpdHMgZGVzdHJ1Y3Rpb24uCisgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3dvcmtlciA9IFdURk1vdmUod29ya2VyKV0geyB9KTsKKyAgICB9KTsKK30KKwordm9p
ZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c3RvcEFsbFNoYXJlZFdvcmtlcnMoKQorewor
ICAgIHdoaWxlICghbV93b3JrZXJNYXAuaXNFbXB0eSgpKQorICAgICAgICBzdG9wU2hhcmVkV29y
a2VyKG1fd29ya2VyTWFwLmJlZ2luKCktPmtleSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXI6OnNldENvbm5lY3Rpb24oc3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+JiYg
Y29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbiB8fCBtX2Nvbm5lY3Rpb24t
PmlzQ2xvc2VkKCkpOworICAgIG1fY29ubmVjdGlvbiA9IFdURk1vdmUoY29ubmVjdGlvbik7Cit9
CisKK2F1dG8gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OmNvbm5lY3Rpb24oKSBjb25zdCAt
PiBDb25uZWN0aW9uKgoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7Cit9CisKK3Zv
aWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnJlZ2lzdGVyU2hhcmVkV29ya2VyVGhyZWFk
KFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4mJiBwcm94eSkKK3sKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyOjpyZWdpc3RlclNoYXJlZFdvcmtlclRocmVhZDogc2hhcmVkV29ya2Vy
SWRlbnRpZmllcj0lIiBQUkl1NjQsIHByb3h5LT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisK
KyAgICBhdXRvIHJlc3VsdCA9IG1fd29ya2VyTWFwLmFkZChwcm94eS0+aWRlbnRpZmllcigpLCBw
cm94eS5jb3B5UmVmKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdF
bnRyeSk7CisKKyAgICBwcm94eS0+dGhyZWFkKCkuc3RhcnQoW10oY29uc3QgU3RyaW5nJiAvKmV4
Y2VwdGlvbk1lc3NhZ2UqLykgeyB9KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlcjo6Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVudChTaGFyZWRXb3JrZXJJZGVudGlmaWVy
IHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiB0cmFuc2Zl
cnJlZFBvcnQsIFN0cmluZyYmIHNvdXJjZU9yaWdpbikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIGF1dG8qIHByb3h5ID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpLnNoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBSRUxF
QVNFX0xPRyhTaGFyZWRXb3JrZXIsICJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVj
dGlvbjo6cG9zdENvbm5lY3RFdmVudDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQg
IiwgcHJveHk9JXAiLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCksIHByb3h5KTsK
KyAgICBpZiAoIXByb3h5KQorICAgICAgICByZXR1cm47CisKKyAgICBwcm94eS0+dGhyZWFkKCku
cnVuTG9vcCgpLnBvc3RUYXNrKFt0cmFuc2ZlcnJlZFBvcnQgPSBXVEZNb3ZlKHRyYW5zZmVycmVk
UG9ydCksIHNvdXJjZU9yaWdpbiA9IFdURk1vdmUoc291cmNlT3JpZ2luKS5pc29sYXRlZENvcHko
KV0gKGF1dG8mIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIG11dGFibGUgeworICAgICAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgZG93bmNhc3Q8U2hhcmVkV29ya2VyR2xvYmFs
U2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnBvc3RDb25uZWN0RXZlbnQoV1RGTW92ZSh0
cmFuc2ZlcnJlZFBvcnQpLCBXVEZNb3ZlKHNvdXJjZU9yaWdpbikpOworICAgIH0pOworfQorCit2
b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uOjp0ZXJtaW5hdGVTaGFy
ZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyKQor
eworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29y
a2VyLCAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb246OnRlcm1pbmF0ZVNo
YXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtl
cklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6
OnNpbmdsZXRvbigpLnN0b3BTaGFyZWRXb3JrZXIoc2hhcmVkV29ya2VySWRlbnRpZmllcik7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjMzODI1Mjg5Mzcz
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRl
eHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaApAQCAtMCwwICsxLDc3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgi
CisjaW5jbHVkZSAiVHJhbnNmZXJyZWRNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFk
UHJveHk7CisKK2NsYXNzIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyIHsKK3B1YmxpYzoKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXImIHNpbmds
ZXRvbigpOworCisgICAgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkqIHNoYXJlZFdvcmtlcihTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyKSBjb25zdDsKKyAgICB2b2lkIHN0b3BTaGFyZWRXb3JrZXIoU2hh
cmVkV29ya2VySWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wQWxsU2hh
cmVkV29ya2VycygpOworCisgICAgY2xhc3MgQ29ubmVjdGlvbiB7CisgICAgICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+Q29ubmVjdGlv
bigpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RFeGNl
cHRpb25Ub1dvcmtlck9iamVjdChTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMKSA9IDA7CisgICAgICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ2xvc2VkOyB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZvaWQgc2V0QXND
bG9zZWQoKSB7IG1faXNDbG9zZWQgPSB0cnVlOyB9CisKKyAgICAgICAgLy8gSVBDIG1lc3NhZ2Ug
aGFuZGxlcnMuCisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdENvbm5lY3RFdmVudChT
aGFyZWRXb3JrZXJJZGVudGlmaWVyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFN0cmluZyYm
IHNvdXJjZU9yaWdpbik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdGVybWluYXRlU2hh
cmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworCisgICAgcHJpdmF0ZToKKyAgICAg
ICAgYm9vbCBtX2lzQ2xvc2VkIHsgZmFsc2UgfTsKKyAgICB9OworCisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBDb25uZWN0aW9uKiBjb25uZWN0aW9uKCkgY29uc3Q7CisKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlZ2lzdGVyU2hhcmVkV29ya2VyVGhyZWFkKFJlZjxTaGFyZWRX
b3JrZXJUaHJlYWRQcm94eT4mJik7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE5ldmVy
RGVzdHJveWVkPFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyPjsKKworICAgIFNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyKCkgPSBkZWZhdWx0OworCisgICAgc3RkOjp1bmlxdWVfcHRyPENvbm5l
Y3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBIYXNoTWFwPFNoYXJlZFdvcmtlcklkZW50aWZpZXIs
IFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4+IG1fd29ya2VyTWFwOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcAppbmRleCA5
YmQ5NzgzZDdhN2UuLjFlZGY3MzRmZjI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94
eS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjgsOTQgKzI4LDcyIEBACiAKICNpbmNsdWRlICJDYWNoZVN0b3JhZ2VQcm92aWRlci5o
IgogI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZUxv
YWRlci5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCisjaW5jbHVkZSAiTG9hZGVy
U3RyYXRlZ3kuaCIKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKICNpbmNsdWRlICJNZXNzYWdl
UG9ydC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXIuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUg
IlNoYXJlZFdvcmtlclRocmVhZC5oIgorI2luY2x1ZGUgIldvcmtlckZldGNoUmVzdWx0LmgiCisj
aW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRp
ZmllcnNGYWN0b3J5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHk6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5KFNoYXJlZFdvcmtlciYgc2hhcmVkV29y
a2VyKQotICAgIDogbV9zaGFyZWRXb3JrZXIoc2hhcmVkV29ya2VyKQotICAgICwgbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0KHNoYXJlZFdvcmtlci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0g
ICAgLCBtX2lkZW50aWZpZXJGb3JJbnNwZWN0b3Ioc2hhcmVkV29ya2VyLmlkZW50aWZpZXJGb3JJ
bnNwZWN0b3IoKSkKK3N0YXRpYyBIYXNoU2V0PFNoYXJlZFdvcmtlclRocmVhZFByb3h5Kj4mIGFs
bFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKQogeworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxIYXNoU2V0PFNoYXJlZFdvcmtlclRocmVhZFByb3h5Kj4+IHNldDsKKyAgICByZXR1cm4gc2V0
OwogfQogCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpzdGFydFdvcmtlckdsb2JhbFNj
b3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgdXNlckFnZW50LCBib29sIGlzT25saW5lLCBjb25zdCBTY3JpcHRCdWZmZXImIHNjcmlwdEJ1
ZmZlciwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxk
Q29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5JiBj
cm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIFJlZmVy
cmVyUG9saWN5IHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHdvcmtlclR5cGUsIEZldGNoUmVx
dWVzdENyZWRlbnRpYWxzIGNyZWRlbnRpYWxzLCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxh
Z3MpCitzdGF0aWMgV29ya2VyUGFyYW1ldGVycyBnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMoY29u
c3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFdvcmtlckZldGNoUmVzdWx0JiB3b3JrZXJGZXRjaFJl
c3VsdCwgV29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMsIGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50LCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBwYXJhbWV0ZXJzID0gV29ya2VyUGFyYW1ldGVy
cyB7CisgICAgcmV0dXJuIFdvcmtlclBhcmFtZXRlcnMgewogICAgICAgICBzY3JpcHRVUkwsCi0g
ICAgICAgIG5hbWUsCi0gICAgICAgIG1faWRlbnRpZmllckZvckluc3BlY3RvciwKKyAgICAgICAg
d29ya2VyT3B0aW9ucy5uYW1lLAorICAgICAgICAic2hhcmVkd29ya2VyOiIgKyBJbnNwZWN0b3I6
OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpLAogICAgICAgICB1c2VyQWdl
bnQsCi0gICAgICAgIGlzT25saW5lLAotICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnMsCi0gICAgICAgIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0
eVBvbGljeSwKLSAgICAgICAgY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwKLSAgICAgICAgdGlt
ZU9yaWdpbiwKLSAgICAgICAgcmVmZXJyZXJQb2xpY3ksCi0gICAgICAgIHdvcmtlclR5cGUsCi0g
ICAgICAgIGNyZWRlbnRpYWxzLAotICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNl
dHRpbmdzVmFsdWVzKCkKKyAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0
ZWd5KCktPmlzT25MaW5lKCksCisgICAgICAgIHdvcmtlckZldGNoUmVzdWx0LmNvbnRlbnRTZWN1
cml0eVBvbGljeSwKKyAgICAgICAgZmFsc2UsCisgICAgICAgIHdvcmtlckZldGNoUmVzdWx0LmNy
b3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ksCisgICAgICAgIE1vbm90b25pY1RpbWU6Om5vdygpLAor
ICAgICAgICBwYXJzZVJlZmVycmVyUG9saWN5KHdvcmtlckZldGNoUmVzdWx0LnJlZmVycmVyUG9s
aWN5LCBSZWZlcnJlclBvbGljeVNvdXJjZTo6SFRUUEhlYWRlcikudmFsdWVfb3IoUmVmZXJyZXJQ
b2xpY3k6OkVtcHR5U3RyaW5nKSwKKyAgICAgICAgd29ya2VyT3B0aW9ucy50eXBlLAorICAgICAg
ICB3b3JrZXJPcHRpb25zLmNyZWRlbnRpYWxzLAorICAgICAgICBkb2N1bWVudC5zZXR0aW5nc1Zh
bHVlcygpCiAgICAgfTsKLQotICAgIGlmICghbV93b3JrZXJUaHJlYWQpIHsKLSAgICAgICAgbV93
b3JrZXJUaHJlYWQgPSBTaGFyZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZShTaGFyZWRXb3JrZXJJZGVu
dGlmaWVyOjpnZW5lcmF0ZSgpLCBwYXJhbWV0ZXJzLCBzY3JpcHRCdWZmZXIsICp0aGlzLCAqdGhp
cywgKnRoaXMsIFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPnRvcE9yaWdpbigpLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlkYkNvbm5l
Y3Rpb25Qcm94eSgpLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNvY2tldFByb3ZpZGVyKCks
IHJ1bnRpbWVGbGFncyk7Ci0gICAgICAgIG1fd29ya2VyVGhyZWFkLT5zdGFydCgpOwotICAgIH0K
LX0KLQotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6dGVybWluYXRlV29ya2VyR2xvYmFs
U2NvcGUoKQotewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCi0gICAgICAgIHJldHVybjsK
LQotICAgIG1fYXNrZWRUb1Rlcm1pbmF0ZSA9IHRydWU7Ci0gICAgaWYgKG1fd29ya2VyVGhyZWFk
KQotICAgICAgICBtX3dvcmtlclRocmVhZC0+c3RvcChudWxscHRyKTsKIH0KIAotdm9pZCBTaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3Nh
Z2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSkKK1NoYXJlZFdvcmtlclRocmVhZFByb3h5OjpT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eShVbmlxdWVSZWY8UGFnZT4mJiBwYWdlLCBTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IENsaWVudE9yaWdpbiYg
Y2xpZW50T3JpZ2luLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgV29ya2VyRmV0Y2hSZXN1bHQmJiB3
b3JrZXJGZXRjaFJlc3VsdCwgV29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50LCBDYWNoZVN0b3JhZ2VQcm92aWRlciYgY2FjaGVTdG9yYWdlUHJvdmlk
ZXIpCisgICAgOiBtX3BhZ2UoV1RGTW92ZShwYWdlKSkKKyAgICAsIG1fZG9jdW1lbnQoKm1fcGFn
ZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKKyAgICAsIG1fd29ya2VyVGhyZWFkKFNoYXJlZFdv
cmtlclRocmVhZDo6Y3JlYXRlKHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGdlbmVyYXRlV29ya2Vy
UGFyYW1ldGVycyhzY3JpcHRVUkwsIHdvcmtlckZldGNoUmVzdWx0LCBXVEZNb3ZlKHdvcmtlck9w
dGlvbnMpLCB1c2VyQWdlbnQsIG1fZG9jdW1lbnQpLCBXVEZNb3ZlKHdvcmtlckZldGNoUmVzdWx0
LnNjcmlwdCksICp0aGlzLCAqdGhpcywgKnRoaXMsIFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9y
bWFsLCBjbGllbnRPcmlnaW4udG9wT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCksIG1fZG9jdW1lbnQt
PmlkYkNvbm5lY3Rpb25Qcm94eSgpLCBtX2RvY3VtZW50LT5zb2NrZXRQcm92aWRlcigpLCBKU0M6
OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpKSkKKyAgICAsIG1fY2FjaGVTdG9yYWdl
UHJvdmlkZXIoY2FjaGVTdG9yYWdlUHJvdmlkZXIpCiB7Ci0gICAgLy8gRklYTUU6IFNoYXJlZFdv
cmtlciBkb2Vzbid0IGhhdmUgcG9zdE1lc3NhZ2UsIHNvIHRoaXMgbWlnaHQgbm90IGJlIG5lY2Vz
c2FyeS4KLSAgICBwb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUoW21lc3NhZ2UgPSBXVEZNb3Zl
KG1lc3NhZ2UpXShhdXRvJiBzY3JpcHRDb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byYg
Y29udGV4dCA9IGRvd25jYXN0PFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRDb250ZXh0
KTsKLSAgICAgICAgYXV0byBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKHNjcmlw
dENvbnRleHQsIFdURk1vdmUobWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRzKSk7Ci0gICAgICAgIGNv
bnRleHQuZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwg
bWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxsKCkpKTsKLSAgICB9KTsKLX0KKyAgICBBU1NF
UlQoIWFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKS5jb250YWlucyh0aGlzKSk7CisgICAg
YWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGllcygpLmFkZCh0aGlzKTsKIAotdm9pZCBTaGFyZWRX
b3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1bmN0aW9uPHZv
aWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiYmIHRhc2spCi17Ci0gICAgaWYgKG1fYXNrZWRU
b1Rlcm1pbmF0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29w
KCkucG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7Ci19Ci0KLWJvb2wgU2hhcmVkV29ya2VyVGhyZWFk
UHJveHk6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faGFzUGVu
ZGluZ0FjdGl2aXR5ICYmICFtX2Fza2VkVG9UZXJtaW5hdGU7CisgICAgc3RhdGljIGJvb2wgYWRk
ZWRMaXN0ZW5lcjsKKyAgICBpZiAoIWFkZGVkTGlzdGVuZXIpIHsKKyAgICAgICAgcGxhdGZvcm1T
dHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmFkZE9ubGluZVN0YXRlQ2hhbmdlTGlzdGVu
ZXIoJm5ldHdvcmtTdGF0ZUNoYW5nZWQpOworICAgICAgICBhZGRlZExpc3RlbmVyID0gdHJ1ZTsK
KyAgICB9CiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Ondvcmtlck9iamVjdERl
c3Ryb3llZCgpCitTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6flNoYXJlZFdvcmtlclRocmVhZFBy
b3h5KCkKIHsKLSAgICBtX3NoYXJlZFdvcmtlciA9IG51bGxwdHI7Ci0gICAgbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpc10gKGF1dG8mKSB7Ci0gICAgICAgIG1fbWF5QmVE
ZXN0cm95ZWQgPSB0cnVlOwotICAgICAgICBpZiAobV93b3JrZXJUaHJlYWQpCi0gICAgICAgICAg
ICB0ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZEludGVybmFsKCk7Ci0gICAgfSk7CisgICAgQVNT
RVJUKGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKS5jb250YWlucyh0aGlzKSk7CisgICAg
YWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGllcygpLnJlbW92ZSh0aGlzKTsKIH0KIAogU2hhcmVk
V29ya2VySWRlbnRpZmllciBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6aWRlbnRpZmllcigpIGNv
bnN0CkBAIC0xMjUsODggKzEwMyw1MCBAQCBTaGFyZWRXb3JrZXJJZGVudGlmaWVyIFNoYXJlZFdv
cmtlclRocmVhZFByb3h5OjppZGVudGlmaWVyKCkgY29uc3QKIAogdm9pZCBTaGFyZWRXb3JrZXJU
aHJlYWRQcm94eTo6bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpCiB7Ci0g
ICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKKyAgICBpZiAobV9pc1Rlcm1pbmF0aW5nT3JUZXJt
aW5hdGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fd29ya2VyVGhyZWFkKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFtp
c09ubGluZV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICBwb3N0VGFz
a0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFtpc09ubGluZV0gKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgYXV0byYgZ2xvYmFsU2NvcGUgPSBk
b3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCk7CiAgICAgICAgIGdsb2JhbFNjb3Bl
LnNldElzT25saW5lKGlzT25saW5lKTsKLSAgICAgICAgZ2xvYmFsU2NvcGUuZGlzcGF0Y2hFdmVu
dChFdmVudDo6Y3JlYXRlKGlzT25saW5lID8gZXZlbnROYW1lcygpLm9ubGluZUV2ZW50IDogZXZl
bnROYW1lcygpLm9mZmxpbmVFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0Nh
bmNlbGFibGU6Ok5vKSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJv
eHk6OnN1c3BlbmRGb3JCYWNrRm9yd2FyZENhY2hlKCkKLXsKLQotfQotCi12b2lkIFNoYXJlZFdv
cmtlclRocmVhZFByb3h5OjpyZXN1bWVGb3JCYWNrRm9yd2FyZENhY2hlKCkKLXsKLQorICAgICAg
ICBnbG9iYWxTY29wZS5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1
bGF0aW9uLCBbZ2xvYmFsU2NvcGUgPSBSZWYgeyBnbG9iYWxTY29wZSB9LCBpc09ubGluZV0gewor
ICAgICAgICAgICAgZ2xvYmFsU2NvcGUtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShpc09u
bGluZSA/IGV2ZW50TmFtZXMoKS5vbmxpbmVFdmVudCA6IGV2ZW50TmFtZXMoKS5vZmZsaW5lRXZl
bnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOworICAg
ICAgICB9KTsKKyAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKIH0KIAogdm9p
ZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5wb3N0VGFzayhbdGhpcywgZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlLmlzb2xhdGVk
Q29weSgpLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCksIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlcl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0gICAgICAgIGlmICgh
bV9zaGFyZWRXb3JrZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gV2UgZG9u
J3QgYm90aGVyIGNoZWNraW5nIHRoZSBhc2tlZFRvVGVybWluYXRlKCkgZmxhZyBoZXJlLCBiZWNh
dXNlIGV4Y2VwdGlvbnMgc2hvdWxkICphbHdheXMqIGJlIHJlcG9ydGVkIGV2ZW4gaWYgdGhlIHRo
cmVhZCBpcyB0ZXJtaW5hdGVkLgotICAgICAgICAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgZGlm
ZmVyZW50IHRoYW4gdGhlIGJlaGF2aW9yIGluIE1lc3NhZ2VXb3JrZXJUYXNrLCBiZWNhdXNlIHRl
cm1pbmF0ZWQgd29ya2VycyBubyBsb25nZXIgZGVsaXZlciBtZXNzYWdlcyAoc2VjdGlvbiA0LjYg
b2YgdGhlIFdlYldvcmtlciBzcGVjKSwgYnV0IHRoZXkgZG8gcmVwb3J0IGV4Y2VwdGlvbnMuCi0g
ICAgICAgIEFjdGl2ZURPTU9iamVjdDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCptX3NoYXJl
ZFdvcmtlciwgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFcnJvckV2ZW50OjpjcmVhdGUo
ZXJyb3JNZXNzYWdlLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgeyB9KSk7
Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Ondvcmtlckdsb2Jh
bFNjb3BlRGVzdHJveWVkKCkKLXsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RU
YXNrKFt0aGlzXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKLSAgICAgICAgd29ya2VyR2xv
YmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpOwotICAgIH0pOwotfQotCi12b2lkIFNoYXJlZFdv
cmtlclRocmVhZFByb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzJiYpCi17Ci0KLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y29u
ZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wpCi17Ci19Ci0KLXZvaWQgU2hhcmVkV29y
a2VyVGhyZWFkUHJveHk6OnJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGhhc1BlbmRpbmdBY3Rp
dml0eSkKLXsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzLCBo
YXNQZW5kaW5nQWN0aXZpdHldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewotICAgICAgICBt
X2hhc1BlbmRpbmdBY3Rpdml0eSA9IGhhc1BlbmRpbmdBY3Rpdml0eTsKKyAgICBjYWxsT25NYWlu
VGhyZWFkKFtzaGFyZWRXb3JrZXJJZGVudGlmaWVyID0gbV93b3JrZXJUaHJlYWQtPmlkZW50aWZp
ZXIoKSwgZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlLmlzb2xhdGVkQ29weSgpLCBsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCA9IHNvdXJjZVVSTC5pc29sYXRlZENvcHkoKV0g
eworICAgICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCisgICAgICAgICAgICBjb25uZWN0aW9uLT5w
b3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qoc2hhcmVkV29ya2VySWRlbnRpZmllciwgZXJyb3JN
ZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCk7CiAgICAgfSk7CiB9
CiAKIFJlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eTo6Y3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKLSAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICByZXR1cm4gZG9jdW1lbnQucGFnZSgpLT5jYWNoZVN0
b3JhZ2VQcm92aWRlcigpLmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKTsKKyAgICBpZiAo
IW1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbikKKyAgICAgICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0
aW9uID0gbV9jYWNoZVN0b3JhZ2VQcm92aWRlci5jcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
KCk7CisgICAgcmV0dXJuIG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKIH0KIAogUmVmUHRyPFJU
Q0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24+IFNoYXJlZFdvcmtlclRocmVhZFBy
b3h5OjpjcmVhdGVSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCkKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8
RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIGlmICghZG9jdW1lbnQu
cGFnZSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gZG9jdW1lbnQucGFn
ZSgpLT5saWJXZWJSVENQcm92aWRlcigpLmNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxl
ckNvbm5lY3Rpb24oKTsKKyAgICByZXR1cm4gbV9wYWdlLT5saWJXZWJSVENQcm92aWRlcigpLmNy
ZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24oKTsKIH0KIAogdm9pZCBT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tUb0xvYWRlcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrJiYgdGFzaykKIHsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBv
c3RUYXNrKFdURk1vdmUodGFzaykpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Rhc2sgPSBXVEZN
b3ZlKHRhc2spLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgbXV0YWJsZSB7Cisg
ICAgICAgIHRhc2sucGVyZm9ybVRhc2socHJvdGVjdGVkVGhpcy0+bV9kb2N1bWVudC5nZXQoKSk7
CisgICAgfSk7CiB9CiAKIGJvb2wgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RUYXNrRm9y
TW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzayYmIHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKLSAgICBpZiAobV9hc2tlZFRvVGVy
bWluYXRlKQorICAgIGlmIChtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JN
b2RlKFdURk1vdmUodGFzayksIG1vZGUpOwpAQCAtMjIzLDE2ICsxNjMsMTAgQEAgdm9pZCBTaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3Bl
Y3Rvcihib29sKQogCiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Ondvcmtlckds
b2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwoKQordm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eTo6bmV0d29ya1N0YXRlQ2hhbmdlZChib29sIGlzT25MaW5lKQogewotICAgIC8vIFRoaXMgaXMg
YWx3YXlzIHRoZSBsYXN0IHRhc2sgdG8gYmUgcGVyZm9ybWVkLCBzbyB0aGUgcHJveHkgaXMgbm90
IG5lZWRlZCBmb3IgY29tbXVuaWNhdGlvbgotICAgIC8vIGluIGVpdGhlciBzaWRlIGFueSBtb3Jl
LiBIb3dldmVyLCB0aGUgV29ya2VyIG9iamVjdCBtYXkgc3RpbGwgZXhpc3QsIGFuZCBpdCBhc3N1
bWVzIHRoYXQgdGhlIHByb3h5IGV4aXN0cywgdG9vLgotICAgIG1fYXNrZWRUb1Rlcm1pbmF0ZSA9
IHRydWU7Ci0gICAgbV93b3JrZXJUaHJlYWQgPSBudWxscHRyOwotCi0gICAgLy8gVGhpcyBiYWxh
bmNlcyB0aGUgb3JpZ2luYWwgcmVmIGluIGNvbnN0cnVjdGlvbi4KLSAgICBpZiAobV9tYXlCZURl
c3Ryb3llZCkKLSAgICAgICAgZGVyZWYoKTsKKyAgICBmb3IgKGF1dG8qIHByb3h5IDogYWxsU2hh
cmVkV29ya2VyVGhyZWFkUHJveGllcygpKQorICAgICAgICBwcm94eS0+bm90aWZ5TmV0d29ya1N0
YXRlQ2hhbmdlKGlzT25MaW5lKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJU
aHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eS5oCmluZGV4IDRlOTJlNDU2MTcxYy4uMzM2NDI0MGFiYmI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdv
cmtlclRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29u
dGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUg
IlNoYXJlZFdvcmtlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXb3JrZXJEZWJ1Z2dlclByb3h5
LmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIgogI2luY2x1ZGUgIldvcmtl
ckxvYWRlclByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyT2JqZWN0UHJveHkuaCIKICNpbmNsdWRl
ICJXb3JrZXJPcHRpb25zLmgiCkBAIC0zNSw1MCArMzQsNTQgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBDYWNoZVN0b3JhZ2VQcm92aWRlcjsKK2NsYXNzIFBhZ2U7CiBjbGFzcyBT
aGFyZWRXb3JrZXI7CiBjbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWQ7CiAKLWNsYXNzIFNoYXJlZFdv
cmtlclRocmVhZFByb3h5IGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJl
ZFdvcmtlclRocmVhZFByb3h5PiwgcHVibGljIFdvcmtlckdsb2JhbFNjb3BlUHJveHksIHB1Ymxp
YyBXb3JrZXJPYmplY3RQcm94eSwgcHVibGljIFdvcmtlckxvYWRlclByb3h5LCBwdWJsaWMgV29y
a2VyRGVidWdnZXJQcm94eSB7CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworc3RydWN0IFdvcmtlckZl
dGNoUmVzdWx0OworCitjbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSBmaW5hbCA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4sIHB1YmxpYyBX
b3JrZXJPYmplY3RQcm94eSwgcHVibGljIFdvcmtlckxvYWRlclByb3h5LCBwdWJsaWMgV29ya2Vy
RGVidWdnZXJQcm94eSB7CiBwdWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4g
c3RhdGljIFNoYXJlZFdvcmtlclRocmVhZFByb3h5JiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpIHsg
cmV0dXJuICpuZXcgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkoc3RkOjpmb3J3YXJkPEFyZ3M+KGFy
Z3MpLi4uKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBSZWY8U2hh
cmVkV29ya2VyVGhyZWFkUHJveHk+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShzdGQ6OmZvcndhcmQ8QXJncz4oYXJn
cykuLi4pKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIH5TaGFyZWRXb3JrZXJUaHJlYWRQcm94eSgp
OwogCiAgICAgU2hhcmVkV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Q7Ci0gICAg
U2hhcmVkV29ya2VyVGhyZWFkKiB0aHJlYWQoKSB7IHJldHVybiBtX3dvcmtlclRocmVhZC5nZXQo
KTsgfQorICAgIFNoYXJlZFdvcmtlclRocmVhZCYgdGhyZWFkKCkgeyByZXR1cm4gbV93b3JrZXJU
aHJlYWQ7IH0KIAotICAgIHZvaWQgc3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNj
cmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9v
bCBpc09ubGluZSwgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VDb2RlLCBjb25zdCBDb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3Js
ZENvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSYs
IE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIEZl
dGNoUmVxdWVzdENyZWRlbnRpYWxzLCBKU0M6OlJ1bnRpbWVGbGFncykgZmluYWw7Ci0gICAgdm9p
ZCB3b3JrZXJPYmplY3REZXN0cm95ZWQoKSBmaW5hbDsKLSAgICBib29sIGhhc1BlbmRpbmdBY3Rp
dml0eSgpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgdGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUo
KSBmaW5hbDsKKyAgICBib29sIGlzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKSBjb25zdCB7IHJl
dHVybiBtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQ7IH0KKyAgICB2b2lkIHNldEFzVGVybWlu
YXRpbmdPclRlcm1pbmF0ZWQoKSB7IG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCA9IHRydWU7
IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShTaGFy
ZWRXb3JrZXImKTsKLQotICAgIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5h
bCgpOworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZFdvcmtlclRocmVhZFByb3h5KFVuaXF1ZVJl
ZjxQYWdlPiYmLCBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4mLCBj
b25zdCBVUkwmIHNjcmlwdFVSTCwgV29ya2VyRmV0Y2hSZXN1bHQmJiwgV29ya2VyT3B0aW9ucyYm
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImKTsKIAotICAg
IHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBv
cnRzJiYpIGZpbmFsOwotICAgIHZvaWQgcG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1bmN0
aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiYmKSBmaW5hbDsKLSAgICB2b2lkIG5v
dGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25saW5lKSBmaW5hbDsKLSAgICB2b2lkIHN1
c3BlbmRGb3JCYWNrRm9yd2FyZENhY2hlKCkgZmluYWw7Ci0gICAgdm9pZCByZXN1bWVGb3JCYWNr
Rm9yd2FyZENhY2hlKCkgZmluYWw7CisgICAgLy8gV29ya2VyT2JqZWN0UHJveHkuCiAgICAgdm9p
ZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2Us
IGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCkgZmluYWw7Ci0gICAgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgpIGZpbmFsOwot
ICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cyYmKSBmaW5hbDsKLSAgICB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29s
IGhhc1BlbmRpbmdBY3Rpdml0eSkgZmluYWw7Ci0gICAgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZp
dHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpIGZpbmFsOworICAgIHZvaWQgcG9zdE1lc3NhZ2VU
b1dvcmtlck9iamVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKSBmaW5hbCB7IH0KKyAgICB2
b2lkIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkKCkgZmluYWwgeyB9CisgICAgdm9pZCBjb25m
aXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCkgZmluYWwgeyB9CisgICAgdm9pZCByZXBv
cnRQZW5kaW5nQWN0aXZpdHkoYm9vbCkgZmluYWwgeyB9CisKKyAgICAvLyBXb3JrZXJMb2FkZXJQ
cm94eS4KICAgICBSZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gY3JlYXRlQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbigpIGZpbmFsOwogICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXJDb25uZWN0aW9uPiBjcmVhdGVSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0
aW9uKCkgZmluYWw7CiAgICAgdm9pZCBwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2smJikgZmluYWw7CiAgICAgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiwgY29uc3Qg
U3RyaW5nJiBtb2RlKSBmaW5hbDsKKworICAgIC8vIFdvcmtlckRlYnVnZ2VyUHJveHkuCiAgICAg
dm9pZCBwb3N0TWVzc2FnZVRvRGVidWdnZXIoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgdm9p
ZCBzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yKGJvb2wpIGZpbmFsOwog
Ci0gICAgV2Vha1B0cjxTaGFyZWRXb3JrZXI+IG1fc2hhcmVkV29ya2VyOwotICAgIFJlZlB0cjxT
aGFyZWRXb3JrZXJUaHJlYWQ+IG1fd29ya2VyVGhyZWFkOwotICAgIGNvbnN0IFJlZlB0cjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0gICAgY29uc3Qg
U3RyaW5nIG1faWRlbnRpZmllckZvckluc3BlY3RvcjsKLSAgICBib29sIG1fYXNrZWRUb1Rlcm1p
bmF0ZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2hhc1BlbmRpbmdBY3Rpdml0eSB7IGZhbHNlIH07
Ci0gICAgYm9vbCBtX21heUJlRGVzdHJveWVkIHsgZmFsc2UgfTsKKyAgICBzdGF0aWMgdm9pZCBu
ZXR3b3JrU3RhdGVDaGFuZ2VkKGJvb2wgaXNPbkxpbmUpOworICAgIHZvaWQgbm90aWZ5TmV0d29y
a1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpOworCisgICAgVW5pcXVlUmVmPFBhZ2U+IG1fcGFn
ZTsKKyAgICBSZWY8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CisgICAgUmVmPFNoYXJlZFdvcmtlclRo
cmVhZD4gbV93b3JrZXJUaHJlYWQ7CisgICAgQ2FjaGVTdG9yYWdlUHJvdmlkZXImIG1fY2FjaGVT
dG9yYWdlUHJvdmlkZXI7CisgICAgUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IG1fY2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjsKKyAgICBib29sIG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRl
ZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4
dAppbmRleCA3NTZkYTg4YjQ1ZjcuLjI5ZjRjNzgxODE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBA
IC0yOCw2ICsyOCw3IEBAIHNldChXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dF
QktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMiCiAgICAgIiR7V0VCS0lUX0RJ
Un0vTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiCiAgICAgIiR7V0VCS0lU
X0RJUn0vTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlciIKKyAgICAiJHtXRUJLSVRfRElSfS9O
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZSIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZSIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlIgpAQCAtMjAyLDYg
KzIwMyw5IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKICAgICBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbgogICAgIE5ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCiAKKyAgICBOZXR3
b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbgor
ICAgIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uCisKICAgICBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VN
YW5hZ2VyU2V0CiAKICAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uCkBAIC0zMDUsNiArMzA5LDggQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxF
UwogCiAgICAgV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlh
U291cmNlTWFuYWdlcgogCisgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbgorICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uCiAgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50
Q29ubmVjdGlvbgogICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3QKaW5kZXggNGM2NjIyMGNmMTIyLi43MjI5YzFiOTg3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTkxLDYgKzkxLDggQEAgJChQUk9K
RUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxv
YWRUYXNrLm1lc3NhZ2VzLmkKICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9OZXR3
b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9j
ZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluCkBAIC0yMTcsNiAr
MjE5LDggQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IubWVzc2FnZXMu
aW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aG5Q
cm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggZTNiNTU4NDBhZTFlLi5hODYzMjgxNDdiNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApA
QCAtNjA3LDYgKzYwNywxOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0L1dlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcwogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdl
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdl
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3Nh
Z2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNvY2tldENoYW5uZWxN
ZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0L1dlYlNvY2tldENoYW5uZWxNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNvY2tldENoYW5uZWxNZXNzYWdlc1JlcGxpZXMuaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDdhZDQ5ZTM3MzVmNC4uMzUxZmZhZTBhNTg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xMzMsNiArMTMzLDggQEAgTUVTU0FH
RV9SRUNFSVZFUlMgPSBcCiAJTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyRG93bmxvYWRUYXNrIFwKIAlOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJGZXRjaFRhc2sgXAogCU5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uIFwKKwlOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbiBcCisJTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29y
a2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gXAogCU5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0gXAogCU5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzIFwKIAlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIgXApAQCAtMjI1LDYg
KzIyNyw4IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9TcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlciBcCisJV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBcCisJ
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24gXAogCVdl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBcCiAJV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNjg3YzhkYjY5MTJjLi5jN2Ix
N2ZkNzA3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC02Niw2ICs2NiwxMSBA
QAogI2luY2x1ZGUgIldlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXIuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgorI2luY2x1
ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBDb29raWVB
Y2NlcHRQb2xpY3kuaD4KQEAgLTEzMiw2ICsxMzcsNyBAQCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmIG5l
dAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBlc3RhYmxpc2hTV1NlcnZlckNvbm5l
Y3Rpb24oKTsKICNlbmRpZgorICAgIGVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b24oKTsKIH0KIAogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcygpCkBAIC0xNjYsNiArMTcyLDcgQEAgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6On5OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgor
ICAgIHVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiB9CiAKIHZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhhc1VwbG9hZFN0YXRlQ2hhbmdlZChib29sIGhhc1Vw
bG9hZCkKQEAgLTI3NSw2ICsyODIsMTcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW8KICAgICB9
CiAjZW5kaWYKIAorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNz
YWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKSB7CisgICAgICAgIGlmIChtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAgICAg
ICBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGlmIChtX3No
YXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKQorICAgICAgICAgICAgbV9zaGFyZWRXb3JrZXJD
b250ZXh0Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9V
SSkKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6Oldl
YlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpCiAgICAgICAg
IHJldHVybiBwYXltZW50Q29vcmRpbmF0b3IoKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyKTsKQEAgLTM5OCw5ICs0MTYsOCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxw
dHI7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICNlbmRpZgorICAgIG1f
c2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwogCiAgICAgLy8gUHJvdGVj
dCBvdXJzZWxmIGFzIHdlIG1pZ2h0IGJlIG90aGVyd2lzZSBiZSBkZWxldGVkIGR1cmluZyB0aGlz
IGZ1bmN0aW9uLgogICAgIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gcHJvdGVj
dG9yKCp0aGlzKTsKQEAgLTQ0MSw2ICs0NTgsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRp
ZgorICAgIHVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiAKICNpZiBFTkFCTEUo
QVBQTEVfUEFZX1JFTU9URV9VSSkKICAgICBtX3BheW1lbnRDb29yZGluYXRvciA9IG51bGxwdHI7
CkBAIC0xMTg2LDYgKzEyMDQsNjEgQEAgc2l6ZV90IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpmaW5kTmV0d29ya0FjdGl2aXR5VHJhY2tlcihXZWJDb3JlOjpSZXNvdXIKICAgICAgICAg
cmV0dXJuIGl0ZW0ucmVzb3VyY2VJRCA9PSByZXNvdXJjZUlEOwogICAgIH0pOwogfQorCit2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250
ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTaGFyZWRX
b3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbjoiKTsKKyAgICBh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsKKyAgICBpZiAoYXV0byogc3dTZXJ2ZXIg
PSBzZXNzaW9uID8gc2Vzc2lvbi0+c2hhcmVkV29ya2VyU2VydmVyKCkgOiBudWxscHRyKQorICAg
ICAgICBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPigqdGhpcywgV1RGTW92ZShyZWdpc3Ry
YWJsZURvbWFpbiksICpzd1NlcnZlcik7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbigpCit7CisgICAgaWYgKG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbikK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7
CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBDT05ORUNUSU9OX1JF
TEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb246Iik7CisKKyAgICBhdXRvJiBzZXJ2ZXIgPSBzZXNzaW9uLT5lbnN1cmVTaGFyZWRXb3Jr
ZXJTZXJ2ZXIoKTsKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29ya1Byb2Nlc3MsIHNlcnZlciwgbV9jb25uZWN0
aW9uLmdldCgpLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsKKworICAgIG1fc2hhcmVkV29ya2Vy
Q29ubmVjdGlvbiA9ICpjb25uZWN0aW9uOworICAgIHNlcnZlci5hZGRDb25uZWN0aW9uKFdURk1v
dmUoY29ubmVjdGlvbikpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpjbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9O
X1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImNsb3NlU2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb246Iik7CisgICAgbV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7
Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJTaGFy
ZWRXb3JrZXJDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJl
ZFdvcmtlciwgInVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uOiIpOworICAgIGlmICht
X3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAgIG1fc2hhcmVkV29ya2VyQ29ubmVjdGlv
bi0+c2VydmVyKCkucmVtb3ZlQ29ubmVjdGlvbihtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24tPndl
YlByb2Nlc3NJZGVudGlmaWVyKCkpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpzaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5l
ZWRlZCgpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJzaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZDoiKTsKKyAg
ICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5v
TG9uZ2VyTmVlZGVkIHsgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKKworICAgIG1fc2hh
cmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOworfQorCitXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2hhcmVk
V29ya2VyQ29ubmVjdGlvbigpCit7CisgICAgaWYgKCFtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24p
CisgICAgICAgIGVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oKTsKKyAgICBy
ZXR1cm4gbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uLmdldCgpOworfQogICAgIAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVu
cmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKQpAQCAtMTIyMyw5ICsxMjk2LDkgQEAgdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xvc2VTV0NvbnRleHRDb25uZWN0aW9uKCkKICAgICBt
X3N3Q29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQo
KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2VydmljZVdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCgpCiB7Ci0gICAgQ09OTkVDVElPTl9S
RUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAic2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9u
Z2VyTmVlZGVkOiBXZWJQcm9jZXNzIG5vIGxvbmdlciB1c2VmdWwgZm9yIHJ1bm5pbmcgc2Vydmlj
ZSB3b3JrZXJzIik7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAi
c2VydmljZVdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZDogV2Vi
UHJvY2VzcyBubyBsb25nZXIgdXNlZnVsIGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycyIpOwog
ICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlv
bk5vTG9uZ2VyTmVlZGVkIHsgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKIAogICAgIG1f
c3dDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5k
ZXggM2ExZTE0MDQzMzhmLi5kMGFhNGVmNzQ1MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
QEAgLTkyLDYgKzkyLDggQEAgY2xhc3MgTmV0d29ya1NvY2tldFN0cmVhbTsKIGNsYXNzIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CiBjbGFzcyBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjsKIAogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiBzdHJ1Y3QgRGF0YUtleTsKQEAgLTE4
MSwxMCArMTgzLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZv
ckFjdGl2aXR5KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0Fj
dGl2aXR5KT4mJik7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgdm9pZCBzZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKTsKKyAgICB2b2lkIHNlcnZpY2VX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKTsKICAgICBXZWJT
V1NlcnZlckNvbm5lY3Rpb24qIHN3Q29ubmVjdGlvbigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBjcmVhdGVGZXRjaFRhc2soTmV0d29ya1Jlc291cmNlTG9h
ZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKKyAgICB2b2lk
IHNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7
CisKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKiBzaGFyZWRXb3JrZXJDb25u
ZWN0aW9uKCk7CiAKICAgICBOZXR3b3JrU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KCkg
eyByZXR1cm4gbV9zY2hlbWVSZWdpc3RyeS5nZXQoKTsgfQogCkBAIC0yNTMsNiArMjU4LDkgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZVNvY2tldENoYW5uZWwoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgV2ViQ29yZTo6V2ViU29ja2V0
SWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJik7CiAgICAgdm9pZCB1cGRhdGVRdW90YUJhc2VkT25TcGFjZVVzYWdlRm9yVGVzdGlu
Zyhjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKIAorICAgIHZvaWQgZXN0YWJsaXNoU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpOworICAgIHZvaWQgdW5yZWdpc3RlclNoYXJlZFdv
cmtlckNvbm5lY3Rpb24oKTsKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lk
IGVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigpOwogICAgIHZvaWQgZXN0YWJsaXNoU1dDb250
ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CkBAIC0yNjAsNiArMjY4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVucmVn
aXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgogCisgICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRX
b3JrZXJDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZv
aWQgY2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpOworCiAgICAgdm9pZCBjcmVh
dGVSVENQcm92aWRlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2lmIEVOQUJMRShX
RUJfUlRDKQogICAgIHZvaWQgY29ubmVjdFRvUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UoV2Vi
Q29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWxJZGVudGlmaWVyIGhhbmRsZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDxib29sPik+JiYpOwpAQCAtNDA0LDYgKzQxNSw4IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0
cjxXZWJTV1NlcnZlckNvbm5lY3Rpb24+IG1fc3dDb25uZWN0aW9uOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+IG1fc3dDb250ZXh0Q29ubmVjdGlv
bjsKICNlbmRpZgorICAgIFdlYWtQdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4g
bV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uOwogCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgYm9vbCBtX2lzUmVnaXN0ZXJlZFRv
UlRDRGF0YUNoYW5uZWxQcm94eSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgppbmRleCAyNDI4MzUwNTBiMjQuLmI5N2NhMzQ3OWI0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC04OCw2ICs4OCw5IEBA
IG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVy
IHsKICAgICBDbG9zZVNXQ29udGV4dENvbm5lY3Rpb24oKQogI2VuZGlmCiAKKyAgICBFc3RhYmxp
c2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50
aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikg
LT4gKCkgQXN5bmMKKyAgICBDbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKCkKKwog
ICAgIENyZWF0ZVJUQ1Byb3ZpZGVyKCkgLT4gKCkgQXN5bmMKICNpZiBFTkFCTEUoV0VCX1JUQykK
ICAgICBDb25uZWN0VG9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZShzdHJ1Y3QgV2ViQ29yZTo6
UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgc3RydWN0IFdlYkNvcmU6OlJUQ0RhdGFD
aGFubmVsSWRlbnRpZmllciBoYW5kbGVyKSAtPiAoc3RkOjpvcHRpb25hbDxib29sPiByZXN1bHQp
IEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
Y3BwCmluZGV4IGUyYjI0ZDgzMjJiNi4uZDc2MTYyODUwY2FkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtNDcsNiArNDcsNyBAQAog
I2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1By
b3h5LmgiCiAjaW5jbHVkZSAiV2ViU1dPcmlnaW5TdG9yZS5oIgorI2luY2x1ZGUgIldlYlNoYXJl
ZFdvcmtlclNlcnZlci5oIgogI2luY2x1ZGUgIldlYlNvY2tldFRhc2suaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0Nvb2tpZUphci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+
CkBAIC02NTMsNiArNjU0LDEzIEBAIGJvb2wgTmV0d29ya1Nlc3Npb246Omhhc1NlcnZpY2VXb3Jr
ZXJEYXRhYmFzZVBhdGgoKSBjb25zdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVTaGFyZWRX
b3JrZXJTZXJ2ZXIoKQoreworICAgIGlmICghbV9zaGFyZWRXb3JrZXJTZXJ2ZXIpCisgICAgICAg
IG1fc2hhcmVkV29ya2VyU2VydmVyID0gbWFrZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI+
KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fc2hhcmVkV29ya2VyU2VydmVyOworfQorCiBXZWJJREJT
ZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVXZWJJREJTZXJ2ZXIoKQogewogICAgIGlmICgh
bV93ZWJJREJTZXJ2ZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uaAppbmRleCAxOTMwN2NmNDBiZTMuLjNmOWQ2Yzk1NTBhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtNzksNiArNzksNyBA
QCBjbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOwogY2xhc3MgV2ViSURCU2VydmVyOwogY2xh
c3MgV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzOwogY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyOwogY2xhc3MgV2ViU29ja2V0
VGFzazsKIGNsYXNzIFdlYlNXT3JpZ2luU3RvcmU7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rp
b247CkBAIC0yMTAsNiArMjExLDkgQEAgcHVibGljOgogICAgIHZvaWQgYWRkU2VydmljZVdvcmtl
clNlc3Npb24oYm9vbCBwcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFN0cmluZyYmIHNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIGNvbnN0IFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYpOwogI2VuZGlmCiAKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIqIHNoYXJlZFdv
cmtlclNlcnZlcigpIHsgcmV0dXJuIG1fc2hhcmVkV29ya2VyU2VydmVyLmdldCgpOyB9CisgICAg
V2ViU2hhcmVkV29ya2VyU2VydmVyJiBlbnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKTsKKwogICAg
IFdlYklEQlNlcnZlciogd2ViSURCU2VydmVyKCkgeyByZXR1cm4gbV93ZWJJREJTZXJ2ZXIuZ2V0
KCk7IH0KICAgICBXZWJJREJTZXJ2ZXImIGVuc3VyZVdlYklEQlNlcnZlcigpOwogICAgIHZvaWQg
Y2xvc2VJREJTZXJ2ZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTMxOCw2ICsz
MjIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySW5mbz4g
bV9zZXJ2aWNlV29ya2VySW5mbzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1dTZXJ2
ZXI+IG1fc3dTZXJ2ZXI7CiAjZW5kaWYKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29y
a2VyU2VydmVyPiBtX3NoYXJlZFdvcmtlclNlcnZlcjsKIAogICAgIFN0cmluZyBtX2lkYkRhdGFi
YXNlUGF0aDsKICAgICBSZWZQdHI8V2ViSURCU2VydmVyPiBtX3dlYklEQlNlcnZlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXgg
NWE4NzAzZWZkNmQ1Li4yN2Y2ZThkYTVmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0xNjIsNyArMTYyLDcgQEAgdm9pZCBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWUKIAogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkKIHsKLSAgICBtX2Nvbm5lY3Rpb24uc2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCk7CisgICAgbV9jb25uZWN0aW9uLnNl
cnZpY2VXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKTsKIH0K
IAogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNldFRocm90dGxlU3RhdGUo
Ym9vbCBpc1Rocm90dGxlYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTlhY2EwMDE1YmUwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcApAQCAtMCwwICsxLDMwMCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIu
aCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgor
I2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdv
cmtTZXNzaW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlcjo6V2ViU2hhcmVk
V29ya2VyU2VydmVyKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uKQorICAgIDogbV9zZXNzaW9uKHNl
c3Npb24pCit7Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlcjo6fldlYlNoYXJlZFdvcmtlclNl
cnZlcigpID0gZGVmYXVsdDsKKworUEFMOjpTZXNzaW9uSUQgV2ViU2hhcmVkV29ya2VyU2VydmVy
OjpzZXNzaW9uSUQoKQoreworICAgIHJldHVybiBtX3Nlc3Npb24uc2Vzc2lvbklEKCk7Cit9CisK
K3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyKFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBVUkwmJiB1cmwsIFdlYkNvcmU6OlRy
YW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYgd29y
a2VyT3B0aW9ucykKK3sKKyAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkga2V5IHsgb3JpZ2lu
LCB1cmwsIHdvcmtlck9wdGlvbnMubmFtZSB9OworICAgIGF1dG8mIHNoYXJlZFdvcmtlciA9IG1f
c2hhcmVkV29ya2Vycy5lbnN1cmUoa2V5LCBbJl0geworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxTaGFyZWRXb3JrZXI+KG9yaWdpbiwgdXJsLCB3b3JrZXJPcHRpb25zKTsKKyAgICB9KS5pdGVy
YXRvci0+dmFsdWU7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29y
a2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyPSV7cHJpdmF0ZX1zLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHNoYXJlZFdv
cmtlci0+aWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKworICAgIGlmIChzaGFyZWRXb3JrZXItPndv
cmtlck9wdGlvbnMudHlwZSAhPSB3b3JrZXJPcHRpb25zLnR5cGUgfHwgc2hhcmVkV29ya2VyLT53
b3JrZXJPcHRpb25zLmNyZWRlbnRpYWxzICE9IHdvcmtlck9wdGlvbnMuY3JlZGVudGlhbHMpIHsK
KyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2Vy
U2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyOiBBIHdvcmtlciBhbHJlYWR5IGV4aXN0cyB3aXRo
IHRoaXMgbmFtZSBidXQgaGFzIGRpZmZlcmVudCB0eXBlIC8gY3JlZGVudGlhbHMiKTsKKyAgICAg
ICAgaWYgKGF1dG8qIHNlcnZlckNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkpKQorICAgICAgICAgICAg
c2VydmVyQ29ubmVjdGlvbi0+bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCB7IFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlR5cGU6
OkFjY2Vzc0NvbnRyb2wgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaGFyZWRX
b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMuYWRkKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIsIHBvcnQpOworCisgICAgaWYgKHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5z
aXplKCkgPiAxKSB7CisgICAgICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJl
ZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtlcjogQSBzaGFyZWQgd29ya2VyIHdpdGgg
dGhpcyBVUkwgYWxyZWFkeSBleGlzdHMgKG5vdyBzaGFyZWQgYnkgJXUgc2hhcmVkIHdvcmtlciBv
YmplY3RzKSIsIHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5zaXplKCkpOworICAg
ICAgICBpZiAoc2hhcmVkV29ya2VyLT5kaWRGaW5pc2hGZXRjaGluZygpKSB7CisgICAgICAgICAg
ICBpZiAoYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSkpCisgICAgICAgICAgICAg
ICAgc2VydmVyQ29ubmVjdGlvbi0+bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCB7IH0pOworICAgICAgICB9CisgICAgICAgIGlm
IChzaGFyZWRXb3JrZXItPmlzUnVubmluZykgeworICAgICAgICAgICAgYXV0byogY29udGV4dENv
bm5lY3Rpb24gPSBtX2NvbnRleHRDb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyLT5yZWdpc3Ry
YWJsZURvbWFpbigpKTsKKyAgICAgICAgICAgIEFTU0VSVChjb250ZXh0Q29ubmVjdGlvbik7Cisg
ICAgICAgICAgICBpZiAoY29udGV4dENvbm5lY3Rpb24pCisgICAgICAgICAgICAgICAgcG9zdENv
bm5lY3RFdmVudCgqY29udGV4dENvbm5lY3Rpb24sIHNoYXJlZFdvcmtlci0+aWRlbnRpZmllciwg
cG9ydCwgb3JpZ2luLmNsaWVudE9yaWdpbi50b1N0cmluZygpKTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVCghc2hhcmVkV29ya2VyLT5pc1J1bm5pbmcpOwor
CisgICAgYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgQVNTRVJUKHNl
cnZlckNvbm5lY3Rpb24pOworCisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hh
cmVkV29ya2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyOiBGZXRjaGluZyBzaGFyZWQgd29y
a2VyIHNjcmlwdCBpbiBjbGllbnQiKTsKKyAgICBzZXJ2ZXJDb25uZWN0aW9uLT5mZXRjaFNjcmlw
dEluQ2xpZW50KHVybCwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgd29ya2VyT3B0aW9u
cywgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHNoYXJlZFdvcmtlciA9IFdlYWtQdHIg
eyAqc2hhcmVkV29ya2VyIH1dKFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYgZmV0Y2hSZXN1
bHQpIHsKKyAgICAgICAgaWYgKHdlYWtUaGlzICYmIHNoYXJlZFdvcmtlcikKKyAgICAgICAgICAg
IHdlYWtUaGlzLT5kaWRGaW5pc2hGZXRjaGluZ1NoYXJlZFdvcmtlclNjcmlwdCgqc2hhcmVkV29y
a2VyLCBXVEZNb3ZlKGZldGNoUmVzdWx0KSk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVk
V29ya2VyU2VydmVyOjpsYXVuY2hTaGFyZWRXb3JrZXIoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24sIFNoYXJlZFdvcmtlciYgc2hhcmVk
V29ya2VyKQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtl
clNlcnZlcjo6bGF1bmNoU2hhcmVkV29ya2VyOiBjb250ZXh0Q29ubmVjdGlvbj0lcCwgc2hhcmVk
V29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsICZjb250ZXh0Q29ubmVjdGlvbiwgc2hhcmVkV29y
a2VyLmlkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgY29udGV4dENvbm5lY3Rpb24ubGF1bmNo
U2hhcmVkV29ya2VyKHNoYXJlZFdvcmtlci5vcmlnaW4sIHNoYXJlZFdvcmtlci5pZGVudGlmaWVy
LCBzaGFyZWRXb3JrZXIudXJsLCBzaGFyZWRXb3JrZXIud29ya2VyT3B0aW9ucywgc2hhcmVkV29y
a2VyLmZldGNoUmVzdWx0KTsKKyAgICBzaGFyZWRXb3JrZXIuaXNSdW5uaW5nID0gdHJ1ZTsKKyAg
ICBhdXRvIHNvdXJjZU9yaWdpbiA9IHNoYXJlZFdvcmtlci5vcmlnaW4uY2xpZW50T3JpZ2luLnRv
U3RyaW5nKCk7CisgICAgZm9yIChhdXRvJiBwb3J0IDogc2hhcmVkV29ya2VyLnNoYXJlZFdvcmtl
ck9iamVjdHMudmFsdWVzKCkpCisgICAgICAgIHBvc3RDb25uZWN0RXZlbnQoY29udGV4dENvbm5l
Y3Rpb24sIHNoYXJlZFdvcmtlci5pZGVudGlmaWVyLCBwb3J0LCBzb3VyY2VPcmlnaW4pOworfQor
Cit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cG9zdENvbm5lY3RFdmVudChXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbiwgV2ViQ29y
ZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiBzb3VyY2VQb3J0LCBjb25zdCBTdHJpbmcm
IHNvdXJjZU9yaWdpbikKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6OnBvc3RDb25uZWN0RXZlbnQ6IGNvbnRleHRDb25uZWN0aW9uPSVwLCBz
aGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgJmNvbnRleHRDb25uZWN0aW9uLCBzaGFy
ZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIGNvbnRleHRDb25uZWN0aW9uLnBv
c3RDb25uZWN0RXZlbnQoc2hhcmVkV29ya2VySWRlbnRpZmllciwgc291cmNlUG9ydCwgc291cmNl
T3JpZ2luKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNo
aW5nU2hhcmVkV29ya2VyU2NyaXB0KFNoYXJlZFdvcmtlciYgd29ya2VyLCBXZWJDb3JlOjpXb3Jr
ZXJGZXRjaFJlc3VsdCYmIGZldGNoUmVzdWx0KQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdv
cmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6ZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRXb3Jr
ZXJTY3JpcHQgc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgd29ya2VyPSVwLCBz
dWNjZXNzPSVkIiwgd29ya2VyLmlkZW50aWZpZXIudG9VSW50NjQoKSwgJndvcmtlciwgZmV0Y2hS
ZXN1bHQuZXJyb3IuaXNOdWxsKCkpOworCisgICAgZm9yIChhdXRvIHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIgOiB3b3JrZXIuc2hhcmVkV29ya2VyT2JqZWN0cy5rZXlzKCkpIHsKKyAgICAg
ICAgaWYgKGF1dG8qIHNlcnZlckNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkpKQorICAgICAgICAgICAg
c2VydmVyQ29ubmVjdGlvbi0+bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBmZXRjaFJlc3VsdC5lcnJvcik7CisgICAgfQorCisg
ICAgaWYgKCFmZXRjaFJlc3VsdC5lcnJvci5pc051bGwoKSkgeworICAgICAgICBtX3NoYXJlZFdv
cmtlcnMucmVtb3ZlKHdvcmtlci5rZXkoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICB3b3JrZXIuZmV0Y2hSZXN1bHQgPSBXVEZNb3ZlKGZldGNoUmVzdWx0KTsKKworICAgIGF1dG8g
cmVnaXN0cmFibGVEb21haW4gPSB3b3JrZXIucmVnaXN0cmFibGVEb21haW4oKTsKKyAgICBhdXRv
KiBjb250ZXh0Q29ubmVjdGlvbiA9IGNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21h
aW4ocmVnaXN0cmFibGVEb21haW4pOworICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pIHsKKyAg
ICAgICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4pOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbGF1bmNoU2hhcmVkV29ya2VyKCpjb250ZXh0Q29ubmVj
dGlvbiwgd29ya2VyKTsKK30KKworYm9vbCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6Om5lZWRzQ29u
dGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pIGNvbnN0Cit7CisgICAgZm9yIChhdXRvJiBz
aGFyZWRXb3JrZXIgOiBtX3NoYXJlZFdvcmtlcnMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHJl
Z2lzdHJhYmxlRG9tYWluLm1hdGNoZXMoc2hhcmVkV29ya2VyLT51cmwpKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6OmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKK3sKKyAgICBBU1NFUlQoIW1fY29u
dGV4dENvbm5lY3Rpb25zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSk7CisgICAgaWYgKG1f
cGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWlucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFp
bikpCisgICAgICAgIHJldHVybjsKKworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldl
YlNoYXJlZFdvcmtlclNlcnZlcjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24gd2lsbCBjcmVhdGUg
YSBjb25uZWN0aW9uIik7CisKKyAgICBtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnMu
YWRkKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBtX3Nlc3Npb24ubmV0d29ya1Byb2Nlc3MoKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyB7IHJlZ2lzdHJhYmxlRG9tYWluLCBtX3Nlc3Npb24uc2Vzc2lvbklE
KCkgfSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlZ2lzdHJhYmxlRG9t
YWluXSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpj
cmVhdGVDb250ZXh0Q29ubmVjdGlvbiBzaG91bGQgbm93IGhhdmUgY3JlYXRlZCBhIGNvbm5lY3Rp
b24iKTsKKworICAgICAgICBBU1NFUlQobV9wZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5z
LmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSk7CisgICAgICAgIG1fcGVuZGluZ0NvbnRleHRD
b25uZWN0aW9uRG9tYWlucy5yZW1vdmUocmVnaXN0cmFibGVEb21haW4pOworCisgICAgICAgIGlm
IChtX2NvbnRleHRDb25uZWN0aW9ucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JS
ZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgICAgICBjcmVhdGVD
b250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbik7CisgICAgfSwgMCk7Cit9CisKK3Zv
aWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjphZGRDb250ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbikKK3sKKyAg
ICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmFkZENv
bnRleHRDb25uZWN0aW9uKCVwKSB3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQsICZjb250
ZXh0Q29ubmVjdGlvbiwgY29udGV4dENvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50
b1VJbnQ2NCgpKTsKKworICAgIEFTU0VSVCghbV9jb250ZXh0Q29ubmVjdGlvbnMuY29udGFpbnMo
Y29udGV4dENvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSkpOworCisgICAgbV9jb250ZXh0
Q29ubmVjdGlvbnMuYWRkKGNvbnRleHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCksICZj
b250ZXh0Q29ubmVjdGlvbik7CisKKyAgICBjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoY29udGV4
dENvbm5lY3Rpb24pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29u
dGV4dENvbm5lY3Rpb24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYg
Y29udGV4dENvbm5lY3Rpb24pCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2Vi
U2hhcmVkV29ya2VyU2VydmVyOjpyZW1vdmVDb250ZXh0Q29ubmVjdGlvbiglcCkgd2ViUHJvY2Vz
c0lkZW50aWZpZXI9JSIgUFJJdTY0LCAmY29udGV4dENvbm5lY3Rpb24sIGNvbnRleHRDb25uZWN0
aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBhdXRvIHJlZ2lz
dHJhYmxlRG9tYWluID0gY29udGV4dENvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKTsKKwor
ICAgIEFTU0VSVChtX2NvbnRleHRDb25uZWN0aW9ucy5nZXQocmVnaXN0cmFibGVEb21haW4pID09
ICZjb250ZXh0Q29ubmVjdGlvbik7CisKKyAgICBtX2NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUo
cmVnaXN0cmFibGVEb21haW4pOworCisgICAgaWYgKG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JS
ZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgIGNyZWF0ZUNvbnRl
eHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbikKK3sKKyAgICBSRUxFQVNFX0xP
RyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9u
Q3JlYXRlZCglcCkgd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCAmY29udGV4dENvbm5l
Y3Rpb24sIGNvbnRleHRDb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQo
KSk7CisgICAgYXV0byYgcmVnaXN0cmFibGVEb21haW4gPSBjb250ZXh0Q29ubmVjdGlvbi5yZWdp
c3RyYWJsZURvbWFpbigpOworICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9zaGFyZWRXb3JrZXJz
LnZhbHVlcygpKSB7CisgICAgICAgIGlmICh3b3JrZXItPmRpZEZpbmlzaEZldGNoaW5nKCkgJiYg
cmVnaXN0cmFibGVEb21haW4ubWF0Y2hlcyh3b3JrZXItPnVybCkpCisgICAgICAgICAgICBsYXVu
Y2hTaGFyZWRXb3JrZXIoY29udGV4dENvbm5lY3Rpb24sICp3b3JrZXIpOworICAgIH0KK30KKwor
YXV0byBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNoYXJlZFdvcmtlckJ5SWRlbnRpZmllcihXZWJD
b3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIpIC0+IFNo
YXJlZFdvcmtlcioKK3sKKyAgICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fc2hhcmVkV29ya2Vycy52
YWx1ZXMoKSkgeworICAgICAgICBpZiAod29ya2VyLT5pZGVudGlmaWVyID09IHNoYXJlZFdvcmtl
cklkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gd29ya2VyLmdldCgpOworICAgIH0KKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKworYXV0byBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNoYXJl
ZFdvcmtlckJ5T2JqZWN0SWRlbnRpZmllcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpIC0+IFNoYXJlZFdvcmtlcioKK3sK
KyAgICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAg
ICAgICBpZiAod29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzLmNvbnRhaW5zKHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIpKQorICAgICAgICAgICAgcmV0dXJuIHdvcmtlci5nZXQoKTsKKyAg
ICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVy
OjpzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7CisgICAgYXV0byog
d29ya2VyID0gc2hhcmVkV29ya2VyQnlPYmplY3RJZGVudGlmaWVyKHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdv
cmtlclNlcnZlcjo6c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXk6IHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXI9JXtwdWJsaWN9cywgd29ya2VyPSVwIiwgc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHdvcmtlcik7CisgICAgaWYgKCF3
b3JrZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0
cy5yZW1vdmUoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgaWYgKCF3b3JrZXIt
PnNoYXJlZFdvcmtlck9iamVjdHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBz
aHV0RG93blNoYXJlZFdvcmtlcih3b3JrZXItPmtleSgpKTsKK30KKwordm9pZCBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXI6OnNodXREb3duU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdv
cmtlcktleSYga2V5KQoreworICAgIGF1dG8gd29ya2VyID0gbV9zaGFyZWRXb3JrZXJzLnRha2Uo
a2V5KTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXI6OnNodXREb3duU2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2
NCAiLCB3b3JrZXI9JXAiLCB3b3JrZXIgPyB3b3JrZXItPmlkZW50aWZpZXIudG9VSW50NjQoKSA6
IDAsIHdvcmtlci5nZXQoKSk7CisgICAgaWYgKCF3b3JrZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3Ry
YWJsZURvbWFpbih3b3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgIGlmICghY29udGV4
dENvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnRleHRDb25uZWN0aW9uLT50
ZXJtaW5hdGVTaGFyZWRXb3JrZXIod29ya2VyLT5pZGVudGlmaWVyKTsKKworICAgIGlmICghbmVl
ZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHdvcmtlci0+cmVnaXN0cmFi
bGVEb21haW4oKSkpCisgICAgICAgIGNvbnRleHRDb25uZWN0aW9uLT5jb25uZWN0aW9uSXNOb0xv
bmdlck5lZWRlZCgpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29ubmVj
dGlvbihzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4mJiBj
b25uZWN0aW9uKQoreworICAgIGF1dG8gcHJvY2Vzc0lkZW50aWZpZXIgPSBjb25uZWN0aW9uLT53
ZWJQcm9jZXNzSWRlbnRpZmllcigpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldl
YlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29ubmVjdGlvbiglcCk6IHByb2Nlc3NJZGVudGlmaWVy
PSUiIFBSSXU2NCwgY29ubmVjdGlvbi5nZXQoKSwgcHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQo
KSk7CisgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKHByb2Nlc3NJZGVudGlmaWVy
KSk7CisgICAgbV9jb25uZWN0aW9ucy5hZGQocHJvY2Vzc0lkZW50aWZpZXIsIFdURk1vdmUoY29u
bmVjdGlvbikpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29ubmVj
dGlvbihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcikKK3sKKyAg
ICBhdXRvIGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLnRha2UocHJvY2Vzc0lkZW50aWZpZXIp
OworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6
cmVtb3ZlQ29ubmVjdGlvbiglcCk6IHByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgY29ubmVj
dGlvbi5nZXQoKSwgcHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgQVNTRVJUKGNv
bm5lY3Rpb24pOworCisgICAgVmVjdG9yPFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXI+IHNoYXJlZFdvcmtlck9iamVjdHNHb2luZ0F3YXk7CisgICAgZm9yIChhdXRvJiB3b3Jr
ZXIgOiBtX3NoYXJlZFdvcmtlcnMudmFsdWVzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIDogd29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzLmtl
eXMoKSkgeworICAgICAgICAgICAgaWYgKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJv
Y2Vzc0lkZW50aWZpZXIoKSA9PSBwcm9jZXNzSWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICBz
aGFyZWRXb3JrZXJPYmplY3RzR29pbmdBd2F5LmFwcGVuZChzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBmb3IgKGF1dG8gc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllciA6IHNoYXJlZFdvcmtlck9iamVjdHNHb2luZ0F3YXkpCisgICAgICAgIHNo
YXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIp
OworfQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OlNoYXJlZFdvcmtlcjo6U2hhcmVkV29ya2Vy
KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYgd29ya2VyT3B0aW9ucykKKyAgICA6IGlkZW50aWZp
ZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKKyAgICAsIG9y
aWdpbihvcmlnaW4pCisgICAgLCB1cmwodXJsKQorICAgICwgd29ya2VyT3B0aW9ucyh3b3JrZXJP
cHRpb25zKQoreworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cG9zdEV4Y2VwdGlv
blRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29y
a2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBhdXRv
KiB3b3JrZXIgPSBzaGFyZWRXb3JrZXJCeUlkZW50aWZpZXIoc2hhcmVkV29ya2VySWRlbnRpZmll
cik7CisgICAgUkVMRUFTRV9MT0dfRVJST1IoU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2Vy
U2VydmVyOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Q6IHNoYXJlZFdvcmtlcklkZW50aWZp
ZXI9JSIgUFJJdTY0ICIsIHdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50
NjQoKSwgd29ya2VyKTsKKyAgICBpZiAoIXdvcmtlcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
Zm9yIChhdXRvIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgOiB3b3JrZXItPnNoYXJlZFdv
cmtlck9iamVjdHMua2V5cygpKSB7CisgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9u
ID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNz
SWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIHNlcnZlckNvbm5lY3Rpb24tPnBvc3RFeGNlcHRp
b25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBlcnJvck1lc3Nh
Z2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMKTsKKyAgICB9Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmNlYjYyM2NjNmU1NgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dl
YlNoYXJlZFdvcmtlclNlcnZlci5oCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJl
ZFdvcmtlcklkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcktleS5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvVHJhbnNmZXJyZWRNZXNzYWdlUG9ydC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvV29ya2VyRmV0Y2hSZXN1bHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlck9wdGlvbnMu
aD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1
Y3QgQ2xpZW50T3JpZ2luOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29y
a1Nlc3Npb247CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOworY2xhc3Mg
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKKworY2xhc3MgV2ViU2hh
cmVkV29ya2VyU2VydmVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlNoYXJlZFdvcmtlclNl
cnZlcj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxp
Y2l0IFdlYlNoYXJlZFdvcmtlclNlcnZlcihOZXR3b3JrU2Vzc2lvbiYpOworICAgIH5XZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXIoKTsKKworICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpOworCisg
ICAgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBXZWJD
b3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6VHJhbnNm
ZXJyZWRNZXNzYWdlUG9ydCYmLCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYpOworICAgIHZvaWQg
c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcik7CisKKyAgICB2b2lkIGFkZENvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKKyAgICB2b2lkIHJlbW92ZUNvbnRleHRD
b25uZWN0aW9uKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKKwor
ICAgIHZvaWQgYWRkQ29ubmVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbj4mJik7CisgICAgdm9pZCByZW1vdmVDb25uZWN0aW9uKFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyKTsKKworICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24qIGNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikgeyByZXR1cm4gbV9jb250ZXh0Q29ubmVj
dGlvbnMuZ2V0KGRvbWFpbik7IH0KKworICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2Jq
ZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkwpOworCitwcml2YXRlOgorICAgIHZvaWQgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24o
Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKKworICAgIGJvb2wgbmVlZHNDb250
ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJikgY29uc3Q7CisgICAgdm9pZCBjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOworCisgICAgc3RydWN0IFNo
YXJlZFdvcmtlciA6IENhbk1ha2VXZWFrUHRyPFNoYXJlZFdvcmtlcj4geworICAgICAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisKKyAgICAgICAgU2hhcmVkV29ya2VyKGNvbnN0
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFdlYkNvcmU6Oldvcmtl
ck9wdGlvbnMmKTsKKworICAgICAgICBib29sIGRpZEZpbmlzaEZldGNoaW5nKCkgY29uc3QgeyBy
ZXR1cm4gISFmZXRjaFJlc3VsdC5zY3JpcHQ7IH0KKyAgICAgICAgV2ViQ29yZTo6U2hhcmVkV29y
a2VyS2V5IGtleSgpIGNvbnN0IHsgcmV0dXJuIHsgb3JpZ2luLCB1cmwsIHdvcmtlck9wdGlvbnMu
bmFtZSB9OyB9CisgICAgICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxl
RG9tYWluKCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwg
fTsgfQorCisgICAgICAgIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmll
cjsKKyAgICAgICAgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbjsKKyAgICAgICAgVVJMIHVy
bDsKKyAgICAgICAgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyB3b3JrZXJPcHRpb25zOworICAgICAg
ICBIYXNoTWFwPFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6
OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQ+IHNoYXJlZFdvcmtlck9iamVjdHM7CisgICAgICAgIFdl
YkNvcmU6OldvcmtlckZldGNoUmVzdWx0IGZldGNoUmVzdWx0OworICAgICAgICBib29sIGlzUnVu
bmluZyB7IGZhbHNlIH07CisgICAgfTsKKworICAgIFNoYXJlZFdvcmtlciogc2hhcmVkV29ya2Vy
QnlJZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworICAgIFNoYXJl
ZFdvcmtlciogc2hhcmVkV29ya2VyQnlPYmplY3RJZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIpOworICAgIHZvaWQgZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRX
b3JrZXJTY3JpcHQoU2hhcmVkV29ya2VyJiwgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJik7
CisgICAgdm9pZCBsYXVuY2hTaGFyZWRXb3JrZXIoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbiYsIFNoYXJlZFdvcmtlciYpOworICAgIHZvaWQgcG9zdENvbm5lY3RFdmVu
dChXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiwgV2ViQ29yZTo6U2hh
cmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9y
dCYsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKKyAgICB2b2lkIHNodXREb3duU2hhcmVk
V29ya2VyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYpOworCisgICAgTmV0d29ya1Nl
c3Npb24mIG1fc2Vzc2lvbjsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4+IG1fY29u
bmVjdGlvbnM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbio+IG1fY29udGV4dENvbm5lY3Rpb25z
OworICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fcGVuZGluZ0NvbnRl
eHRDb25uZWN0aW9uRG9tYWluczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktl
eSwgc3RkOjp1bmlxdWVfcHRyPFNoYXJlZFdvcmtlcj4+IG1fc2hhcmVkV29ya2VyczsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLmJiMDkxNzM0NTgzOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24u
Y3BwCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgor
I2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbk1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Xb3JrZXJGZXRjaFJlc3VsdC5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxF
QVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1
NjQgIl0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsIG1fd2Vi
UHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgQ09O
TkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoU2hh
cmVkV29ya2VyLCAiJXAgLSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OiIgZm10LCB0aGlzLCBtX3dlYlByb2Nlc3NJZGVu
dGlmaWVyLnRvVUludDY0KCksICMjX19WQV9BUkdTX18pCisKK1dlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb246OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oTmV0d29ya1Byb2Nl
c3MmIG5ldHdvcmtQcm9jZXNzLCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlciwgSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9j
ZXNzSWRlbnRpZmllcikKKyAgICA6IG1fY29udGVudENvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAg
ICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCisgICAgLCBtX3NlcnZlcihzZXJ2
ZXIpCisgICAgLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKHdlYlByb2Nlc3NJZGVudGlmaWVyKQor
eworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb246Iik7Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246On5XZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9H
KCJ+V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjoiKTsKK30KKworSVBDOjpDb25uZWN0
aW9uKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGVudENvbm5lY3Rpb24ucHRyKCk7Cit9
CisKK1BBTDo6U2Vzc2lvbklEIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OnNlc3Np
b25JRCgpCit7CisgICAgcmV0dXJuIHNlcnZlcigpLnNlc3Npb25JRCgpOworfQorCitOZXR3b3Jr
U2Vzc2lvbiogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2Vzc2lvbigpCit7Cisg
ICAgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKTsK
K30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpyZXF1ZXN0U2hhcmVk
V29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBVUkwmJiB1
cmwsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBXZWJDb3JlOjpXb3Jr
ZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucykKK3sKKyAgICBBU1NFUlQoc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fd2ViUHJvY2Vzc0lkZW50aWZp
ZXIpOyAvLyBGSVhNRTogU2hvdWxkIGJlIGEgTUVTU0FHRV9DSEVDSygpLgorICAgIENPTk5FQ1RJ
T05fUkVMRUFTRV9MT0coInJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHRoaXMtPnNlc3Np
b24oKSkKKyAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCkucmVxdWVz
dFNoYXJlZFdvcmtlcihXVEZNb3ZlKG9yaWdpbiksIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIsIFdURk1vdmUodXJsKSwgV1RGTW92ZShwb3J0KSwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSk7
Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6ZmV0Y2hTY3JpcHRJ
bkNsaWVudChjb25zdCBVUkwmIHVybCwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJP
cHRpb25zJiB3b3JrZXJPcHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Oldv
cmtlckZldGNoUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIENPTk5FQ1RJ
T05fUkVMRUFTRV9MT0coImZldGNoU2NyaXB0SW5DbGllbnQ6IHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OkZldGNoU2NyaXB0SW5DbGllbnQgeyB1cmws
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHdvcmtlck9wdGlvbnMgfSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb246Om5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24oV2ViQ29yZTo6U2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVB
U0VfTE9HKCJub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uOiBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMsIHN1Y2Nlc3M9JWQiLCBzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuaXNOdWxsKCkpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Ok5vdGlm
eVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24geyBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyLCBlcnJvciB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
Ojpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IoInBvc3RF
eGNlcHRpb25Ub1dvcmtlck9iamVjdDogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1
YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b246OlBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdCB7IHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwg
fSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2hhcmVkV29y
a2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQoreworICAgIEFTU0VSVChzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRl
bnRpZmllcik7IC8vIEZJWE1FOiBTaG91bGQgYmUgYSBNRVNTQUdFX0NIRUNLKCkuCisgICAgQ09O
TkVDVElPTl9SRUxFQVNFX0xPRygic2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXk6IHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAoYXV0byogc2Vzc2lv
biA9IHRoaXMtPnNlc3Npb24oKSkKKyAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU2hhcmVkV29ya2Vy
U2VydmVyKCkuc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcik7Cit9CisKKyN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HCisjdW5kZWYg
Q09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQzZGU0ZTFiNDliZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRl
ICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7CitzdHJ1Y3QgV29y
a2VyT3B0aW9uczsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtQcm9j
ZXNzOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyOworY2xhc3MgV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbiA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbihOZXR3b3JrUHJvY2VzcyYsIFdlYlNoYXJl
ZFdvcmtlclNlcnZlciYsIElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyKTsKKyAgICB+V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpOworCisgICAgV2Vi
U2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIoKSB7IHJldHVybiBtX3NlcnZlcjsgfQorICAgIGNv
bnN0IFdlYlNoYXJlZFdvcmtlclNlcnZlciYgc2VydmVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2
ZXI7IH0KKworICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpOworICAgIE5ldHdvcmtTZXNz
aW9uKiBzZXNzaW9uKCk7CisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vz
c0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOyB9CisK
KyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIGZpbmFsOworCisgICAgdm9pZCBmZXRjaFNjcmlwdEluQ2xpZW50KGNvbnN0IFVSTCYsIFdl
YkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Oldvcmtl
ck9wdGlvbnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldvcmtlckZldGNoUmVz
dWx0JiYpPiYmKTsKKyAgICB2b2lkIG5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24o
V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpOworICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNv
cmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwpOworCitwcml2YXRlOgorICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlci4KKyAgICBJUEM6
OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAg
dWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biAwOyB9CisKKyAgICAvLyBJUEMgbWVzc2FnZXMuCisgICAgdm9pZCByZXF1ZXN0U2hhcmVkV29y
a2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBXZWJD
b3JlOjpXb3JrZXJPcHRpb25zJiYpOworICAgIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2lu
Z0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisKKyAgICBSZWY8
SVBDOjpDb25uZWN0aW9uPiBtX2NvbnRlbnRDb25uZWN0aW9uOworICAgIFJlZjxOZXR3b3JrUHJv
Y2Vzcz4gbV9uZXR3b3JrUHJvY2VzczsKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIG1fc2Vy
dmVyOworICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lkZW50aWZp
ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdv
cmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmFlNGEwODAzNzc5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI2IEBACisj
IENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisj
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFdlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CisgICAgUmVxdWVzdFNo
YXJlZFdvcmtlcihzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgV2ViQ29yZTo6
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LCBVUkwgdXJsLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0IHBvcnQsIHN0cnVjdCBX
ZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdvcmtlck9wdGlvbnMpCisgICAgU2hhcmVkV29ya2VyT2Jq
ZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtl
ci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjQ5YzExMjQxNTIxOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTA3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNp
bmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
V2ViU2hhcmVkV29ya2VyU2VydmVyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjZGVmaW5l
IENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hh
cmVkV29ya2VyLCAiJXAgLSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OiIgZm10LCB0aGlzLCB3ZWJQcm9j
ZXNzSWRlbnRpZmllcigpLnRvVUludDY0KCksICMjX19WQV9BUkdTX18pCisKK1dlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24s
IGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vi
U2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIpCisgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlv
bikKKyAgICAsIG1fc2VydmVyKHNlcnZlcikKKyAgICAsIG1fcmVnaXN0cmFibGVEb21haW4ocmVn
aXN0cmFibGVEb21haW4pCit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOiIpOworICAgIHNlcnZlci5h
ZGRDb250ZXh0Q29ubmVjdGlvbigqdGhpcyk7Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246On5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uKCkKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coIn5XZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOiIpOworICAgIGlmIChtX3NlcnZlciAmJiBt
X3NlcnZlci0+Y29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJs
ZURvbWFpbigpKSA9PSB0aGlzKQorICAgICAgICBtX3NlcnZlci0+cmVtb3ZlQ29udGV4dENvbm5l
Y3Rpb24oKnRoaXMpOworfQorCitXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp3ZWJQcm9jZXNzSWRlbnRpZmllcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpOwor
fQorCitJUEM6OkNvbm5lY3Rpb24mIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OmlwY0Nvbm5lY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24u
Y29ubmVjdGlvbigpOworfQorCitJUEM6OkNvbm5lY3Rpb24qIFdlYlNoYXJlZFdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gJmlwY0Nvbm5lY3Rpb24oKTsKK30KKwordWludDY0X3QgV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQo
KSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkKK3sKKyAg
ICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coImNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVl
ZGVkOiIpOworICAgIG1fY29ubmVjdGlvbi5zaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0Vf
TE9HKCJwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Q6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9
JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIGlmICht
X3NlcnZlcikKKyAgICAgICAgbV9zZXJ2ZXItPnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChz
aGFyZWRXb3JrZXJJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgc291cmNlVVJMKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpsYXVuY2hTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2Vy
SWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMm
IHdvcmtlck9wdGlvbnMsIGNvbnN0IFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiBmZXRjaFJl
c3VsdCkKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coImxhdW5jaFNoYXJl
ZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklk
ZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpMYXVuY2hTaGFyZWRXb3JrZXIgeyBvcmlnaW4sIHNo
YXJlZFdvcmtlcklkZW50aWZpZXIsIHVybCwgd29ya2VyT3B0aW9ucywgZmV0Y2hSZXN1bHQgfSk7
Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cG9z
dENvbm5lY3RFdmVudChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtl
cklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmIHBvcnQs
IGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9S
RUxFQVNFX0xPRygicG9zdENvbm5lY3RFdmVudDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQ
Ukl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpQb3N0Q29ubmVj
dEV2ZW50IHsgc2hhcmVkV29ya2VySWRlbnRpZmllciwgcG9ydCwgc291cmNlT3JpZ2luIH0pOwor
fQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1p
bmF0ZVNoYXJlZFdvcmtlcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdv
cmtlcklkZW50aWZpZXIpCit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJ0
ZXJtaW5hdGVTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBz
aGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VGVybWluYXRlU2hhcmVkV29y
a2VyIHsgc2hhcmVkV29ya2VySWRlbnRpZmllciB9KTsKK30KKworI3VuZGVmIENPTlRFWFRfQ09O
TkVDVElPTl9SRUxFQVNFX0xPRworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmI2NzNlY2FlMjgzZgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29y
a2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtMCwwICsx
LDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1RyYW5zZmVycmVkTWVzc2FnZVBvcnQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgUmVnaXN0cmFibGVEb21haW47CitjbGFzcyBTY3JpcHRCdWZmZXI7CitzdHJ1Y3QgQ2xp
ZW50T3JpZ2luOworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0Oworc3RydWN0IFdvcmtlck9wdGlv
bnM7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzczsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlcjsKKworY2xhc3MgV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBJUEM6Ok1l
c3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2ViU2hhcmVkV29ya2VyU2VydmVyJik7CisgICAgfldl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKKworICAgIFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQorICAgIElQQzo6Q29ubmVjdGlvbiYgaXBj
Q29ubmVjdGlvbigpIGNvbnN0OworCisgICAgdm9pZCBsYXVuY2hTaGFyZWRXb3JrZXIoY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwg
Y29uc3QgVVJMJiwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYsIGNvbnN0IFdlYkNvcmU6
OldvcmtlckZldGNoUmVzdWx0Jik7CisgICAgdm9pZCBwb3N0Q29ubmVjdEV2ZW50KFdlYkNvcmU6
OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2Fn
ZVBvcnQmLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CisgICAgdm9pZCB0ZXJtaW5hdGVT
aGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllcik7CisKKyAgICB2b2lk
IGNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCitwcml2YXRlOgor
ICAgIC8vIElQQyBtZXNzYWdlcy4KKyAgICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVj
dChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlci4KKyAgICBJUEM6OkNvbm5lY3Rp
b24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3Qg
bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKKworICAgIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2Nvbm5lY3Rpb247CisgICAgV2Vha1B0cjxXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI+IG1fc2VydmVyOworICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IG1fcmVnaXN0cmFibGVEb21haW47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uYWU0N2MxMjJjYmFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI1IEBACisjIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisj
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFdlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CisgICAgUG9zdEV4Y2VwdGlv
blRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29y
a2VySWRlbnRpZmllciwgU3RyaW5nIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBj
b2x1bW5OdW1iZXIsIFN0cmluZyBzb3VyY2VVUkwpCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5o
CmluZGV4IDFjNDJkMDQwYzFhOS4uZGUzMmY4MTcxNzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dp
bmcuaApAQCAtOTcsNiArOTcsNyBAQCBleHRlcm4gIkMiIHsKICAgICBNKFNlcnZpY2VXb3JrZXIp
IFwKICAgICBNKFNlc3Npb25TdGF0ZSkgXAogICAgIE0oU2hhcmVkRGlzcGxheUxpc3RzKSBcCisg
ICAgTShTaGFyZWRXb3JrZXIpIFwKICAgICBNKFN0b3JhZ2UpIFwKICAgICBNKFN0b3JhZ2VBUEkp
IFwKICAgICBNKFRleHRJbnB1dCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkKaW5kZXggN2ViZmE1MTZiNTAzLi40YzhjYWQwNDY0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMzAzLDEwICszMDMsMTMgQEAgZGVmIHR5cGVz
X3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6OlNl
cnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U2hhcmVk
U3RyaW5nSGFzaCcsCisgICAgICAgICdXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyJywK
KyAgICAgICAgJ1dlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXInLAogICAgICAg
ICAnV2ViQ29yZTo6U2xlZXBEaXNhYmxlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6
U291cmNlQnVmZmVyQXBwZW5kTW9kZScsCiAgICAgICAgICdXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlN0b3Jh
Z2VUeXBlJywKKyAgICAgICAgJ1dlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQnLAogICAg
ICAgICAnV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdElkZW50aWZpZXInLAogICAgICAgICAnV2Vi
Q29yZTo6V2ViTG9ja0lkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6V2ViU29ja2V0SWRl
bnRpZmllcicsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAxZTliZjE3YzRlNmMuLmQ5ZTYwY2U3ODk4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CkBAIC0xNDEsNiArMTQxLDEwIEBAIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dPcmlnaW5TdG9yZS5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgQG5vLXVu
aWZ5CiAKK05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIu
Y3BwCitOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbi5jcHAKK05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0Zp
bGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5
c3RlbVN0b3JhZ2VIYW5kbGUuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1T
dG9yYWdlSGFuZGxlUmVnaXN0cnkuY3BwCkBAIC03ODMsOCArNzg3LDkgQEAgV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXT3JpZ2luVGFibGUuY3BwCiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudC5jcHAKIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyUHJvdmlkZXIuY3BwCi1XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlk
ZXIuY3BwCitXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24uY3BwCitXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIu
Y3BwCiAKIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNw
cAogCkBAIC04ODcsMyArODkyLDcgQEAgUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5TWVzc2FnZVJlY2Vp
dmVyLmNwcAogU2VydmljZVdvcmtlckRvd25sb2FkVGFza01lc3NhZ2VSZWNlaXZlci5jcHAKIFdl
YkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeU1lc3NhZ2VSZWNlaXZlci5jcHAKIFdlYkxvY2tSZWdp
c3RyeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKK1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b25NZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggYTY3ODM2N2E3NzVh
Li4zMzAyMGJkNWMzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTI5LDcgKzUyOSw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6dGVybWluYXRlV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllciB3ZWJQcm9jCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVVu
cmVzcG9uc2l2ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXIgcHJvY2Vzc0lkZW50aWZpZXIpCiB7CiAgICAgaWYgKFJlZlB0ciBwcm9jZXNzID0gV2ViUHJv
Y2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihwcm9jZXNzSWRlbnRpZmllcikpIHsKLSAg
ICAgICAgcHJvY2Vzcy0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgICAgIHByb2Nlc3Mt
PmRpc2FibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtl
cik7CiAgICAgICAgIHByb2Nlc3MtPnJlcXVlc3RUZXJtaW5hdGlvbihQcm9jZXNzVGVybWluYXRp
b25SZWFzb246OkV4Y2VlZGVkQ1BVTGltaXQpOwogICAgIH0KIH0KQEAgLTE0MTUsMTYgKzE0MTUs
MjEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWREZXN0cm95V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkoV2ViVXNlckNvbnRlbnQKIH0KICNlbmRpZgogCit2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWlu
LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2hhcmVk
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUocmVnaXN0cmFi
bGVEb21haW4pLCBzZXNzaW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0
YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWdp
c3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKCp0aGlzLCBXVEZNb3ZlKHJlZ2lz
dHJhYmxlRG9tYWluKSwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBzZXNzaW9uSUQsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNo
U2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXVEZNb3ZlKHJl
Z2lzdHJhYmxlRG9tYWluKSwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBzZXNzaW9uSUQs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpzZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIGlmIChhdXRvKiBwcm9jZXNz
ID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihpZGVudGlmaWVyKSkKLSAg
ICAgICAgcHJvY2Vzcy0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgICAgIHByb2Nlc3Mt
PmRpc2FibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtl
cik7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
Q2xpZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRp
ZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVu
dGlmaWVyKQpAQCAtMTQ2MCw2ICsxNDY1LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
ZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJCiB9
CiAjZW5kaWYKIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzaGFyZWRXb3JrZXJDb250ZXh0
Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50
aWZpZXIpCit7CisgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nl
c3NGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIpKQorICAgICAgICBwcm9jZXNzLT5kaXNhYmxlV29y
a2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlcik7Cit9CisKIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRf
dCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVp
cmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHF1b3Rh
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSRUxFQVNFX0xPRyhTdG9yYWdlLCAiJXAg
LSBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlIiwgdGhpcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCmluZGV4IGE0ZTM2NDVlYmFhZS4uNjg0MWEzNGZlMDlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMzM0
LDYgKzMzNCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3Jv
dW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc0lkZW50aWZpZXIpOwogICAgIHZvaWQgZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9j
ZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRl
bnRpZmllcik7CiAjZW5kaWYKKyAgICB2b2lkIHNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9u
Tm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOworICAgIHZvaWQgZXN0
YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCB0ZXJtaW5hdGVXZWJQcm9jZXNzKFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDEy
ZDA2Y2ViZDYyYS4uMTU3NTdlZDlhMjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmlu
CkBAIC02MCw2ICs2MCw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5
UmVjZWl2ZXIgewogICAgIFN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikK
ICAgICBFbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQogI2VuZGlmCisgICAg
RXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCisgICAgU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQog
CiAgICAgU2V0V2ViUHJvY2Vzc0hhc1VwbG9hZHMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIg
cHJvY2Vzc0lELCBib29sIGhhc1VwbG9hZCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggZTQ5OTM1YzMyNWY2Li4xYWNiMzQ0NGFmYTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzY5MSwxMSArMzY5MSw5IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KQogICAgICAg
ICByZXR1cm47CiAgICAgbV91c2VyQWdlbnQgPSBXVEZNb3ZlKHVzZXJBZ2VudCk7CiAKLSNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgLy8gV2UgdXBkYXRlIHRoZSBzZXJ2aWNlIHdvcmtl
ciB0aGVyZSBhdCB0aGUgbW9tZW50IHRvIGJlIHN1cmUgd2UgdXNlIHZhbHVlcyB1c2VkIGJ5IGFj
dHVhbCB3ZWIgcGFnZXMuCiAgICAgLy8gRklYTUU6IFJlZmFjdG9yIHRoaXMgd2hlbiB3ZSBoYXZl
IGEgYmV0dGVyIFVzZXItQWdlbnQgc3RvcnkuCi0gICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCku
dXBkYXRlU2VydmljZVdvcmtlclVzZXJBZ2VudChtX3VzZXJBZ2VudCk7Ci0jZW5kaWYKKyAgICBw
cm9jZXNzKCkucHJvY2Vzc1Bvb2woKS51cGRhdGVXb3JrZXJVc2VyQWdlbnQobV91c2VyQWdlbnQp
OwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggYWZjMjNlZTUzZjEy
Li40YjE5YjBkMWQzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKQEAgLTUyOSw3ICs1MjksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRXZWJBdXRo
blByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1BybwogYm9vbCBX
ZWJQcm9jZXNzUG9vbDo6c191c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzID0gZmFsc2U7
CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3NQb29sOjplc3Rh
Ymxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdv
cmtQcm9jZXNzUHJveHkmIHByb3h5LCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9t
YWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2
aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQcm9jZXNz
UG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFs
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50
aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8qIHdlYnNpdGVEYXRhU3RvcmUgPSBX
ZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChzZXNzaW9uSUQp
OwogICAgIGlmICghd2Vic2l0ZURhdGFTdG9yZSkKQEAgLTU0Niw3ICs1NDYsNyBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzKE5ldAogICAgIGlmIChzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIpIHsK
ICAgICAgICAgLy8gVGhpcyBpcyBhIHNlcnZpY2Ugd29ya2VyIGZvciBhIHNlcnZpY2Ugd29ya2Vy
IHBhZ2Ugc28gd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgdXNlIHVzZSB0aGUgcGFnZSdzIFdlYlBy
b2Nlc3MgZm9yIHRoZSBzZXJ2aWNlIHdvcmtlci4KICAgICAgICAgaWYgKChzZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihzZXJ2
aWNlV29ya2VyUGFnZUlkZW50aWZpZXItPnByb2Nlc3NJZGVudGlmaWVyKCkpKSkgewotICAgICAg
ICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlU2VydmljZVdvcmtlcnMocHJv
Y2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2aWNlV29ya2Vy
cygpKTsKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVdvcmtl
cnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBwcm9jZXNzUG9v
bC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CiAgICAgICAg
ICAgICBpZiAoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKSB7
CiAgICAgICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLnJlbW92ZVBy
b2Nlc3MoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NDYWNoZTo6U2hvdWxk
U2h1dERvd25Qcm9jZXNzOjpObyk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFzZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpOwpAQCAtNTY0LDcgKzU2NCw3IEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBwcm9jZXNzLnB0cigpOwotICAg
ICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlU2VydmljZVdvcmtlcnMo
cHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2aWNlV29y
a2VycygpKTsKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVdv
cmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBwcm9jZXNz
UG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CiAKICAg
ICAgICAgICAgIGlmIChzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hl
KCkpIHsKICAgICAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hlKCkucmVt
b3ZlUHJvY2Vzcygqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0NhY2hlOjpT
aG91bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKE5ldAogICAgIH0KIAogICAgIGlmICghc2VydmljZVdvcmtlclByb2Nlc3NQcm94
eSkgewotICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3Jl
YXRlRm9yU2VydmljZVdvcmtlcnMoKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiAgeyBy
ZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIGF1dG8gbmV3
UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdlYlByb2Nl
c3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgKnByb2Nlc3NQb29sLCBSZWdpc3Ry
YWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CiAg
ICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBuZXdQcm9jZXNzUHJveHkucHRyKCk7
CiAKICAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElDKFNlcnZpY2VXb3Jr
ZXIsICJlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzIGNyZWF0aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nlcz0lcCwgUElE
PSVkKSIsIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOwpAQCAtNTg2LDIwICs1ODYsNzAgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyhOZXQKICAgICAgICAgcHJvY2Vzc1Bvb2wtPm1fcHJvY2Vzc2VzLmFwcGVuZChX
VEZNb3ZlKG5ld1Byb2Nlc3NQcm94eSkpOwogICAgIH0KIAotICAgIEFTU0VSVCghc2VydmljZVdv
cmtlclByb2Nlc3NlcygpLmNvbnRhaW5zKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KSk7Ci0g
ICAgc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2VydmljZVdvcmtlclByb2Nlc3NQcm94
eSk7CisgICAgd29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
KTsKIAotICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZpY2VXb3Jr
ZXJDb250ZXh0KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nl
c3NQb29sLT5tX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wt
Pm1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJsZURv
bWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Ci0gICAgaWYgKCFwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyVXNlckFnZW50Lmlz
TnVsbCgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRTZXJ2aWNlV29y
a2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQpOworICAg
IHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0
KHByb2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bvb2wtPm1fd29ya2Vy
UHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3JvdXAtPnBy
ZWZlcmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdl
SWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmICghcHJvY2Vz
c1Bvb2wtPm1fd29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQorICAgICAgICBzZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5LT5zZXRXb3JrZXJVc2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNl
ckFnZW50KTsKIH0KKyNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVGcm9tU2Vy
dmljZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCit2b2lkIFdlYlBy
b2Nlc3NQb29sOjpyZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYgcHJv
Y2VzcykKIHsKLSAgICBBU1NFUlQoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmNvbnRhaW5zKHBy
b2Nlc3MpKTsKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkucmVtb3ZlKHByb2Nlc3MpOwor
ICAgIEFTU0VSVCh3b3JrZXJQcm9jZXNzZXMoKS5jb250YWlucyhwcm9jZXNzKSk7CisgICAgd29y
a2VyUHJvY2Vzc2VzKCkucmVtb3ZlKHByb2Nlc3MpOworfQorCit2b2lkIFdlYlByb2Nlc3NQb29s
Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6
OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Npb25JRCk7CisgICAgaWYgKCF3ZWJz
aXRlRGF0YVN0b3JlKQorICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOworICAgIGlmICghcHJvY2Vzc1Bvb2xzKCkuc2l6
ZSgpKQorICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPFdlYlByb2Nlc3NQb29sPj4g
c2hhcmVkV29ya2VyUHJvY2Vzc1Bvb2woV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6OlByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCkuZ2V0KCkpKTsKKworICAgIC8vIEFyYml0cmFy
aWx5IGNob29zZSB0aGUgZmlyc3QgcHJvY2VzcyBwb29sIHRvIGhvc3QgdGhlIHNoYXJlZCB3b3Jr
ZXIgcHJvY2Vzcy4KKyAgICBhdXRvKiBwcm9jZXNzUG9vbCA9IHByb2Nlc3NQb29scygpWzBdOwor
ICAgIEFTU0VSVChwcm9jZXNzUG9vbCk7CisKKyAgICBXZWJQcm9jZXNzUHJveHkqIHNoYXJlZFdv
cmtlclByb2Nlc3NQcm94eSB7IG51bGxwdHIgfTsKKworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6
IHByb2Nlc3NQb29sLT5tX3Byb2Nlc3NlcykgeworICAgICAgICBpZiAocHJvY2Vzcy5wdHIoKSA9
PSBwcm9jZXNzUG9vbC0+bV9wcmV3YXJtZWRQcm9jZXNzLmdldCgpIHx8IHByb2Nlc3MtPmlzRHVt
bXlQcm9jZXNzUHJveHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoJnBy
b2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIGlmICghcHJvY2Vzcy0+aXNNYXRjaGluZ1JlZ2lzdHJhYmxl
RG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSA9IHByb2Nlc3MucHRyKCk7CisgICAgICAgIHNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6Oldv
cmtlclR5cGU6OlNoYXJlZFdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOworCisgICAgICAgIGlmIChzaGFyZWRXb3JrZXJQcm9j
ZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSkgeworICAgICAgICAgICAgcHJvY2Vzc1Bvb2wt
PndlYlByb2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nlc3MoKnNoYXJlZFdvcmtlclByb2Nlc3NQcm94
eSwgV2ViUHJvY2Vzc0NhY2hlOjpTaG91bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKKyAgICAgICAg
ICAgIEFTU0VSVCghc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkp
OworICAgICAgICB9CisKKyAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElD
KFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyByZXVzaW5nIGFuIGV4aXN0aW5nIHdlYiBwcm9jZXNzIChwcm9jZXNzPSVw
LCBQSUQ9JWQpIiwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LCBzaGFyZWRXb3JrZXJQcm9jZXNz
UHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBpZiAoIXNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSkgeworICAgICAgICBhdXRvIG5ld1Byb2Nl
c3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yV29ya2VycyhXZWJQcm9jZXNzUHJv
eHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURv
bWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAg
IHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSA9IG5ld1Byb2Nlc3NQcm94eS5wdHIoKTsKKworICAg
ICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoU2hhcmVkV29ya2VyLCAiZXN0
YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIGNyZWF0
aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nlc3M9JXAsIFBJRD0lZCkiLCBz
aGFyZWRXb3JrZXJQcm9jZXNzUHJveHksIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+cHJvY2Vz
c0lkZW50aWZpZXIoKSk7CisKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmluaXRpYWxpemVOZXdXZWJQ
cm9jZXNzKG5ld1Byb2Nlc3NQcm94eSwgd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIHByb2Nl
c3NQb29sLT5tX3Byb2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdQcm9jZXNzUHJveHkpKTsKKyAg
ICB9CisKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNoYXJlZFdvcmtlclByb2Nlc3NQcm94
eSk7CisKKyAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNoYXJlZFdvcmtl
ckNvbnRleHQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNzUG9vbC0+
bV93b3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVsdFBhZ2VH
cm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJsZURvbWFpbiwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFn
ZW50LmlzTnVsbCgpKQorICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPnNldFdvcmtl
clVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV93b3JrZXJVc2VyQWdlbnQpOwogfQotI2VuZGlmCiAK
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQo
KQogewpAQCAtMTAwMywxMCArMTA1Myw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5l
Y3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIAogICAgIG1fYmFja0ZvcndhcmRD
YWNoZS0+cmVtb3ZlRW50cmllc0ZvclByb2Nlc3MocHJvY2Vzcyk7CiAKLSNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCi0gICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkK
LSAgICAgICAgcmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7Ci0jZW5k
aWYKKyAgICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdXb3JrZXJzKCkpCisgICAgICAgIHJlbW92ZUZy
b21Xb3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7CiAKICAgICBzdGF0aWNfY2FzdDxXZWJDb250ZXh0
U3VwcGxlbWVudCo+KHN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpLT5w
cm9jZXNzRGlkQ2xvc2UoJnByb2Nlc3MpOwogCkBAIC0xMDY3LDEyICsxMTE1LDEyIEBAIFJlZjxX
ZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21h
aW4oV2Vic2l0ZURhdGFTdG9yCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1Vc2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIFdlYlByb2Nlc3NQb29sOjp1c2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKQorVXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllciBXZWJQcm9jZXNzUG9vbDo6dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
ZmllckZvcldvcmtlcnMoKQogewotICAgIGlmICghbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JT
ZXJ2aWNlV29ya2VyKQotICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclNlcnZpY2VX
b3JrZXIgPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKCk7CisgICAgaWYg
KCFtX3VzZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtlcnMpCisgICAgICAgIG1fdXNlckNvbnRl
bnRDb250cm9sbGVyRm9yV29ya2VycyA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojpj
cmVhdGUoKTsKIAotICAgIHJldHVybiBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclNlcnZpY2VX
b3JrZXItPmlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gbV91c2VyQ29udGVudENvbnRyb2xsZXJG
b3JXb3JrZXJzLT5pZGVudGlmaWVyKCk7CiB9CiAjZW5kaWYKIApAQCAtMTExOSwxNSArMTE2Nywx
MyBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdl
Q2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogCiAgICAgYXV0byBwYWdlID0gcHJvY2Vzcy0+
Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAK
LSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJQcmVm
ZXJlbmNlcykgewotICAgICAgICBtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA9IHBhZ2UtPnBy
ZWZlcmVuY2VzU3RvcmUoKTsKLSAgICAgICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2VyUHJvY2Vz
cyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSkKLSAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzLnVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKCptX3NlcnZpY2VXb3Jr
ZXJQcmVmZXJlbmNlcyk7CisgICAgaWYgKCFtX3dvcmtlclByZWZlcmVuY2VzKSB7CisgICAgICAg
IG1fd29ya2VyUHJlZmVyZW5jZXMgPSBwYWdlLT5wcmVmZXJlbmNlc1N0b3JlKCk7CisgICAgICAg
IGZvciAoYXV0byYgd29ya2VyUHJvY2VzcyA6IHdvcmtlclByb2Nlc3NlcygpKQorICAgICAgICAg
ICAgd29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKCptX3dvcmtlclBy
ZWZlcmVuY2VzKTsKICAgICB9CiAgICAgaWYgKHVzZXJDb250ZW50Q29udHJvbGxlcikKLSAgICAg
ICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyID0gdXNlckNvbnRlbnRD
b250cm9sbGVyOwotI2VuZGlmCisgICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29y
a2VycyA9IHVzZXJDb250ZW50Q29udHJvbGxlcjsKIAogICAgIGJvb2wgZW5hYmxlUHJvY2Vzc1N3
YXBPbkNyb3NzU2l0ZU5hdmlnYXRpb24gPSBwYWdlLT5wcmVmZXJlbmNlcygpLnByb2Nlc3NTd2Fw
T25Dcm9zc1NpdGVOYXZpZ2F0aW9uRW5hYmxlZCgpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CkBAIC0xMTUwLDE2ICsxMTk2LDE0IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29s
OjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAgICAgcmV0
dXJuIHBhZ2U7CiB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nl
c3NQb29sOjp1cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0
cmluZyYgdXNlckFnZW50KQogewotICAgIGlmIChtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQgPT0g
dXNlckFnZW50KQorICAgIGlmIChtX3dvcmtlclVzZXJBZ2VudCA9PSB1c2VyQWdlbnQpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQgPSB1c2VyQWdlbnQ7Ci0g
ICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNz
ZXMoKSkKLSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3Muc2V0U2VydmljZVdvcmtlclVzZXJB
Z2VudChtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQpOworICAgIG1fd29ya2VyVXNlckFnZW50ID0g
dXNlckFnZW50OworICAgIGZvciAoYXV0byYgd29ya2VyUHJvY2VzcyA6IHdvcmtlclByb2Nlc3Nl
cygpKQorICAgICAgICB3b3JrZXJQcm9jZXNzLnNldFdvcmtlclVzZXJBZ2VudChtX3dvcmtlclVz
ZXJBZ2VudCk7CiB9Ci0jZW5kaWYKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUJlZ2luVXNp
bmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJzaXRl
RGF0YVN0b3JlJiBkYXRhU3RvcmUpCiB7CkBAIC0xNTM4LDggKzE1ODIsMTMgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6dGVybWluYXRlU2VydmljZVdvcmtlcnMoKQogewogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07Ci0gICAgd2hpbGUg
KHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb21wdXRlU2l6ZSgpKQotICAgICAgICBzZXJ2aWNl
V29ya2VyUHJvY2Vzc2VzKCkuYmVnaW4oKS0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAg
VmVjdG9yPFJlZjxXZWJQcm9jZXNzUHJveHk+PiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOworICAg
IHdvcmtlclByb2Nlc3NlcygpLmZvckVhY2goWyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICAgICAg
aWYgKHByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKKyAgICAgICAgICAgIHNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMuYXBwZW5kKHByb2Nlc3MpOworICAgIH0pOworICAgIGZvciAoYXV0
byYgc2VydmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKQorICAgICAg
ICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpX
b3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgogfQogCkBAIC0xNzY3LDEzICsxODE2
LDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcG9ydFdlYkNvbnRlbnRDUFVUaW1lKFNlY29u
ZHMgY3B1VGltZSwgdWludDY0X3QgYWN0aXZpdHlTCiAjZW5kaWYKIH0KIAotI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKLVdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIFdlYlByb2Nlc3NQ
b29sOjpzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkKK1dlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94
eT4mIFdlYlByb2Nlc3NQb29sOjp3b3JrZXJQcm9jZXNzZXMoKQogewogICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+PiBwcm9jZXNzZXM7CiAgICAg
cmV0dXJuIHByb2Nlc3NlczsKIH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRh
dGVQcm9jZXNzQXNzZXJ0aW9ucygpCiB7CkBAIC0xNzg1LDIwICsxODMyLDI1IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkKICAgICBpZiAoYXV0byogZ3B1
UHJvY2VzcyA9IEdQVVByb2Nlc3NQcm94eTo6c2luZ2xldG9uSWZDcmVhdGVkKCkpCiAgICAgICAg
IGdwdVByb2Nlc3MtPnVwZGF0ZVByb2Nlc3NBc3NlcnRpb24oKTsKICNlbmRpZgotI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKKwogICAgIC8vIENoZWNrIG9uIG5leHQgcnVuIGxvb3Agc2luY2Ug
dGhlIHdlYiBwcm9jZXNzIHByb3h5IHRva2VucyBhcmUgcHJvYmFibHkgYmVpbmcgdXBkYXRlZC4K
ICAgICBjYWxsT25NYWluUnVuTG9vcChbXSB7Ci0gICAgICAgIGZvciAoYXV0byYgc2VydmljZVdv
cmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkpCi0gICAgICAgICAgICBzZXJ2
aWNlV29ya2VyUHJvY2Vzcy51cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOwot
ICAgIH0pOworICAgICAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFtdKGF1dG8mIHdvcmtl
clByb2Nlc3MpIHsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgICAgICAgICBpZiAo
d29ya2VyUHJvY2Vzcy5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQorICAgICAgICAgICAgICAg
IHdvcmtlclByb2Nlc3MudXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXZWJQcm9jZXNzUHJv
eHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogI2VuZGlmCisgICAgICAgICAgICBpZiAo
d29ya2VyUHJvY2Vzcy5pc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkpCisgICAgICAgICAgICAgICAg
d29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdlYlByb2Nlc3NQcm94
eTo6V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAK
IGJvb2wgV2ViUHJvY2Vzc1Bvb2w6OmlzU2VydmljZVdvcmtlclBhZ2VJRChXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAg
ICAgLy8gRklYTUU6IFRoaXMgaXMgaW5lZmZpY2llbnQuCi0gICAgcmV0dXJuIFdURjo6YW55T2Yo
c2VydmljZVdvcmtlclByb2Nlc3NlcygpLCBbcGFnZUlEXShhdXRvJiBwcm9jZXNzKSB7CisgICAg
cmV0dXJuIFdURjo6YW55T2Yod29ya2VyUHJvY2Vzc2VzKCksIFtwYWdlSURdKGF1dG8mIHByb2Nl
c3MpIHsKICAgICAgICAgcmV0dXJuIHByb2Nlc3MuaGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShw
YWdlSUQpOwogICAgIH0pOwogI2VuZGlmCkBAIC0yMTI0LDE2ICsyMTc2LDI2IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnNldFVzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoYm9vbCB1c2VT
ZXBhcmF0ZVNlcnZpY2VXCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCitzaXplX3Qg
V2ViUHJvY2Vzc1Bvb2w6OnNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25zdAoreworICAg
IHVuc2lnbmVkIGNvdW50ID0gMDsKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFsmXShh
dXRvJiBwcm9jZXNzKSB7CisgICAgICAgIGlmIChwcm9jZXNzLmlzUnVubmluZ1NlcnZpY2VXb3Jr
ZXJzKCkpCisgICAgICAgICAgICArK2NvdW50OworICAgIH0pOworICAgIHJldHVybiBjb3VudDsK
K30KKwogYm9vbCBXZWJQcm9jZXNzUG9vbDo6aGFzU2VydmljZVdvcmtlckZvcmVncm91bmRBY3Rp
dml0eUZvclRlc3RpbmcoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6OmFueU9mKHNlcnZpY2VX
b3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2VzcykgeworICAgIHJldHVybiBXVEY6OmFu
eU9mKHdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVy
biBwcm9jZXNzLmhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCk7
CiAgICAgfSk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6Omhhc1NlcnZpY2VXb3JrZXJCYWNr
Z3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjphbnlP
ZihzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICByZXR1
cm4gV1RGOjphbnlPZih3b3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2VzcykgewogICAg
ICAgICByZXR1cm4gcHJvY2Vzcy5oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9y
VGVzdGluZygpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmgKaW5kZXggZWI2NmQ4OTQ5MGRmLi5lNzBiNmY0MjlmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMzc0LDE3ICszNzQsMjAgQEAgcHVibGljOgog
ICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NEaWRUZXJtaW5hdGUoTmV0d29ya1Byb2Nlc3NQcm94eSYs
IE5ldHdvcmtQcm9jZXNzUHJveHk6OlRlcm1pbmF0aW9uUmVhc29uKTsKIAogICAgIGJvb2wgaXNT
ZXJ2aWNlV29ya2VyUGFnZUlEKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpIGNvbnN0OworICAgIHZv
aWQgcmVtb3ZlRnJvbVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmKTsKKwogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkm
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZp
ZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZv
aWQgcmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5Jik7Ci0g
ICAgc2l6ZV90IHNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25zdCB7IHJldHVybiBzZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzKCkuY29tcHV0ZVNpemUoKTsgfQotICAgIHZvaWQgdXBkYXRlU2Vy
dmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCk7Ci0gICAgVXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllciB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
Rm9yU2VydmljZVdvcmtlcnMoKTsKKyAgICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgc2l6ZV90IHNlcnZpY2VXb3JrZXJQcm94
aWVzQ291bnQoKSBjb25zdDsKKyAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCk7CiAgICAgYm9vbCBoYXNT
ZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0OwogICAgIGJv
b2wgaGFzU2VydmljZVdvcmtlckJhY2tncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdDsK
ICNlbmRpZgogICAgIHZvaWQgc2VydmljZVdvcmtlclByb2Nlc3NDcmFzaGVkKFdlYlByb2Nlc3NQ
cm94eSYpOwogCisgICAgdm9pZCB1cGRhdGVXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQpOworICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQ
QUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKwogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgpIGNvbnN0Owog
I2VuZGlmCkBAIC02MTgsMTMgKzYyMSwxMSBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDxQQUw6
OlNlc3Npb25JRCwgV2Vha1B0cjxXZWJQcm9jZXNzUHJveHk+PiBtX2R1bW15UHJvY2Vzc1Byb3hp
ZXM7IC8vIExpZ2h0d2VpZ2h0IFdlYlByb2Nlc3NQcm94eSBvYmplY3RzIHdpdGhvdXQgYmFja2lu
ZyBwcm9jZXNzLgogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHN0YXRpYyBXZWFr
SGFzaFNldDxXZWJQcm9jZXNzUHJveHk+JiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCk7Ci0gICAg
Ym9vbCBtX3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24geyBmYWxzZSB9
OwotICAgIFN0cmluZyBtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQ7Ci0gICAgc3RkOjpvcHRpb25h
bDxXZWJQcmVmZXJlbmNlc1N0b3JlPiBtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlczsKLSAgICBS
ZWZQdHI8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+IG1fdXNlckNvbnRlbnRDb250cm9s
bGVyRm9yU2VydmljZVdvcmtlcjsKLSNlbmRpZgorICAgIHN0YXRpYyBXZWFrSGFzaFNldDxXZWJQ
cm9jZXNzUHJveHk+JiB3b3JrZXJQcm9jZXNzZXMoKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
UHJlZmVyZW5jZXNTdG9yZT4gbV93b3JrZXJQcmVmZXJlbmNlczsKKyAgICBSZWZQdHI8V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk+IG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2Vy
czsKKyAgICBTdHJpbmcgbV93b3JrZXJVc2VyQWdlbnQ7CiAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAgICAgUmVmUHRyPEdQVVByb2Nlc3NQcm94eT4gbV9ncHVQcm9jZXNzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggY2FjMzY3ZjExMTlmLi41
Y2Y4NmNjNzg2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSAi
V2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgpAQCAtMTgyLDExICsxODMsMTEgQEAgUmVmPFdlYlBy
b2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nl
c3NQb29sLCBXZWJzaXQKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLVJlZjxXZWJQ
cm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMoV2Vi
UHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxl
RG9tYWluLCBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQorUmVmPFdlYlByb2Nl
c3NQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdvcmtlclR5cGUgd29y
a2VyVHlwZSwgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiYm
IHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQog
ewogICAgIGF1dG8gcHJveHkgPSBhZG9wdFJlZigqbmV3IFdlYlByb2Nlc3NQcm94eShwcm9jZXNz
UG9vbCwgJndlYnNpdGVEYXRhU3RvcmUsIElzUHJld2FybWVkOjpObywgQ3Jvc3NPcmlnaW5Nb2Rl
OjpTaGFyZWQsIENhcHRpdmVQb3J0YWxNb2RlOjpEaXNhYmxlZCkpOwogICAgIHByb3h5LT5tX3Jl
Z2lzdHJhYmxlRG9tYWluID0gV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgcHJveHkt
PmVuYWJsZVNlcnZpY2VXb3JrZXJzKHByb2Nlc3NQb29sLnVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXJGb3JTZXJ2aWNlV29ya2VycygpKTsKKyAgICBwcm94eS0+ZW5hYmxlV29ya2Vycyh3
b3JrZXJUeXBlLCBwcm9jZXNzUG9vbC51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9y
V29ya2VycygpKTsKICAgICBwcm94eS0+Y29ubmVjdCgpOwogICAgIHJldHVybiBwcm94eTsKIH0K
QEAgLTk5NSwxMCArOTk2LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJl
c3BvbnNpdmUoKQogICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBpc1Jlc3BvbnNpdmVDYWxsYmFj
a3MpCiAgICAgICAgIGNhbGxiYWNrKGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUpOwogCi0gICAgLy8g
SWYgdGhlIHdlYiBwcm9jZXNzIGJlY29tZXMgdW5yZXNwb25zaXZlIGFuZCBvbmx5IHJ1bnMgc2Vy
dmljZSB3b3JrZXJzLCBraWxsIGl0IG91cnNlbHZlcyBzaW5jZSB0aGVyZSBhcmUgbm8gbmF0aXZl
IGNsaWVudHMgdG8gZG8gaXQuCi0gICAgaWYgKGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkgJiYg
bV9wYWdlTWFwLmlzRW1wdHkoKSkgewotICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9M
T0dfRVJST1IoUGVyZm9ybWFuY2VMb2dnaW5nLCAiZGlkQmVjb21lVW5yZXNwb25zaXZlOiBUZXJt
aW5hdGluZyBzZXJ2aWNlIHdvcmtlci1vbmx5IHdlYiBwcm9jZXNzIGJlY2F1c2UgaXQgaXMgdW5y
ZXNwb25zaXZlIik7Ci0gICAgICAgIGRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgIC8vIElm
IHRoZSB3ZWIgcHJvY2VzcyBiZWNvbWVzIHVucmVzcG9uc2l2ZSBhbmQgb25seSBydW5zIHNlcnZp
Y2Uvc2hhcmVkIHdvcmtlcnMsIGtpbGwgaXQgb3Vyc2VsdmVzIHNpbmNlIHRoZXJlIGFyZSBubyBu
YXRpdmUgY2xpZW50cyB0byBkbyBpdC4KKyAgICBpZiAoaXNSdW5uaW5nV29ya2VycygpICYmIG1f
cGFnZU1hcC5pc0VtcHR5KCkpIHsKKyAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9H
X0VSUk9SKFBlcmZvcm1hbmNlTG9nZ2luZywgImRpZEJlY29tZVVucmVzcG9uc2l2ZTogVGVybWlu
YXRpbmcgd29ya2VyLW9ubHkgd2ViIHByb2Nlc3MgYmVjYXVzZSBpdCBpcyB1bnJlc3BvbnNpdmUi
KTsKKyAgICAgICAgZGlzYWJsZVdvcmtlcnMoeyBXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBX
b3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgfSk7CiAgICAgICAgIHRlcm1pbmF0ZSgpOwogICAgIH0K
IH0KQEAgLTE2OTQsOCArMTY5NSw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZShjb25zdCBVUkwmIHVybCkKICAgICBhdXRvIHJlZ2lz
dHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfTsKICAgICBp
ZiAobV9yZWdpc3RyYWJsZURvbWFpbiAmJiAqbV9yZWdpc3RyYWJsZURvbWFpbiAhPSByZWdpc3Ry
YWJsZURvbWFpbikgewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICAgICAgZGlzYWJs
ZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgICAgIGRpc2FibGVXb3JrZXJzKFdvcmtlclR5cGU6OlNl
cnZpY2VXb3JrZXIpOwogI2VuZGlmCisKICAgICAgICAgLy8gTnVsbCBvdXQgcmVnaXN0cmFibGUg
ZG9tYWluIHNpbmNlIHRoaXMgcHJvY2VzcyBoYXMgbm93IGJlZW4gdXNlZCBmb3Igc2V2ZXJhbCBk
b21haW5zLgogICAgICAgICBtX3JlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4geyB9OwogICAgICAgICByZXR1cm47CkBAIC0xODY2LDYwICsxODY4LDg1IEBAIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlJiBzCiB7CiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9H
KExvYWRpbmcsICJlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dDogU3RhcnRlZCIpOwogICAg
IG1hcmtQcm9jZXNzQXNSZWNlbnRseVVzZWQoKTsKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRlZmF1bHRQYWdlR3JvdXAoKS5wYWdl
R3JvdXBJRCgpLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VQ
cm94eUlELCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VJRCwg
c3RvcmUsIHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIG1f
c2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5pbml0aWFsaXphdGlvbkRhdGEgfSwgW3RoaXMsIHdl
YWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bvb2woKS5kZWZhdWx0UGFnZUdyb3VwKCkucGFn
ZUdyb3VwSUQoKSwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPndvcmtlclBhZ2VQcm94eUlE
LCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+d29ya2VyUGFnZUlELCBzdG9yZSwgcmVnaXN0
cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgbV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb24tPmluaXRpYWxpemF0aW9uRGF0YSB9LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFr
UHRyIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAgICAgICAgICAgV0VC
UFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJlc3RhYmxpc2hTZXJ2aWNlV29ya2Vy
Q29udGV4dDogRmluaXNoZWQiKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9
LCAwKTsKIH0KKyNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0U2VydmljZVdvcmtl
clVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpzZXRXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiB7Ci0gICAgQVNT
RVJUKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U2V0VXNlckFnZW50IHsgdXNlckFnZW50IH0sIDAp
OworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb24pCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2VyQWdlbnQgfSwgMCk7CisjZW5kaWYKKyAgICBpZiAo
bV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbikKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2VyQWdl
bnQgfSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29ya2Vy
UHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKK3ZvaWQg
V2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogewotICAgIEFTU0VSVChtX3NlcnZpY2VXb3JrZXJJbmZv
cm1hdGlvbik7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OlVwZGF0ZVByZWZlcmVuY2VzU3RvcmUgeyBzdG9yZSB9LCAwKTsKKyNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCisgICAgaWYgKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQorICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlUHJl
ZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDApOworI2VuZGlmCisgICAgaWYgKG1fc2hhcmVkV29y
a2VySW5mb3JtYXRpb24pCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0s
IDApOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlU2VydmljZVdvcmtlclByb2Nl
c3NBc3NlcnRpb24oKQorLy8gRklYTUU6IENsaWVudHMgZG8gbm90IHByb3Blcmx5IGdldCBwb3B1
bGF0ZWQgaW4gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbi4KK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5
Ojp1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGUgd29ya2VyVHlwZSkKIHsK
LSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRh
dGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbjoiKTsKLSAgICBBU1NFUlQobV9zZXJ2aWNl
V29ya2VySW5mb3JtYXRpb24pOwotICAgIGlmICghbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24p
CisgICAgYXV0byYgd29ya2VySW5mb3JtYXRpb24gPSB3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6
OlNoYXJlZFdvcmtlciA/IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gOiBtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbjsKKyAgICBBU1NFUlQod29ya2VySW5mb3JtYXRpb24pOworICAgIGlmICgh
d29ya2VySW5mb3JtYXRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgc2hvdWxkVGFr
ZUZvcmVncm91bmRBY3Rpdml0eSA9IFdURjo6YW55T2YobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24tPmNsaWVudFByb2Nlc3NlcywgWyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICBXRUJQUk9DRVNT
UFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVXb3JrZXJQcm9jZXNz
QXNzZXJ0aW9uOiB3b3JrZXJUeXBlPSV7cHVibGljfXMiLCB3b3JrZXJUeXBlID09IFdvcmtlclR5
cGU6OlNoYXJlZFdvcmtlciA/ICJzaGFyZWQiIDogInNlcnZpY2UiKTsKKworICAgIGJvb2wgc2hv
dWxkVGFrZUZvcmVncm91bmRBY3Rpdml0eSA9IFdURjo6YW55T2Yod29ya2VySW5mb3JtYXRpb24t
PmNsaWVudFByb2Nlc3NlcywgWyZdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuICZw
cm9jZXNzICE9IHRoaXMgJiYgISFwcm9jZXNzLm1fZm9yZWdyb3VuZFRva2VuOwogICAgIH0pOwog
ICAgIGlmIChzaG91bGRUYWtlRm9yZWdyb3VuZEFjdGl2aXR5KSB7Ci0gICAgICAgIGlmICghUHJv
Y2Vzc1Rocm90dGxlcjo6aXNWYWxpZEZvcmVncm91bmRBY3Rpdml0eShtX3NlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbi0+YWN0aXZpdHkpKQotICAgICAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3Jt
YXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuZm9yZWdyb3VuZEFjdGl2aXR5KCJTZXJ2aWNl
IFdvcmtlciBmb3IgZm9yZWdyb3VuZCB2aWV3KHMpIl9zKTsKKyAgICAgICAgaWYgKCFQcm9jZXNz
VGhyb3R0bGVyOjppc1ZhbGlkRm9yZWdyb3VuZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0aW9uLT5h
Y3Rpdml0eSkpCisgICAgICAgICAgICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Ro
cm90dGxlci5mb3JlZ3JvdW5kQWN0aXZpdHkoIldvcmtlciBmb3IgZm9yZWdyb3VuZCB2aWV3KHMp
Il9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGJvb2wgc2hvdWxkVGFrZUJhY2tn
cm91bmRBY3Rpdml0eSA9IFdURjo6YW55T2YobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNs
aWVudFByb2Nlc3NlcywgWyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICBib29sIHNob3VsZFRha2VC
YWNrZ3JvdW5kQWN0aXZpdHkgPSBXVEY6OmFueU9mKHdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQ
cm9jZXNzZXMsIFsmXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiAmcHJvY2VzcyAh
PSB0aGlzICYmICEhcHJvY2Vzcy5tX2JhY2tncm91bmRUb2tlbjsKICAgICB9KTsKICAgICBpZiAo
c2hvdWxkVGFrZUJhY2tncm91bmRBY3Rpdml0eSkgewotICAgICAgICBpZiAoIVByb2Nlc3NUaHJv
dHRsZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24tPmFjdGl2aXR5KSkKLSAgICAgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5h
Y3Rpdml0eSA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIg
Zm9yIGJhY2tncm91bmQgdmlldyhzKSJfcyk7CisgICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxl
cjo6aXNWYWxpZEJhY2tncm91bmRBY3Rpdml0eSh3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkp
KQorICAgICAgICAgICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIu
YmFja2dyb3VuZEFjdGl2aXR5KCJXb3JrZXIgZm9yIGJhY2tncm91bmQgdmlldyhzKSJfcyk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9oYXNTZXJ2aWNlV29ya2VyQmFja2dy
b3VuZFByb2Nlc3NpbmcpIHsKKyAgICBpZiAod29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTZXJ2
aWNlV29ya2VyICYmIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKSB7CiAg
ICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlNl
cnZpY2UgV29ya2VyIGZvciBiYWNrZ3JvdW5kIHByb2Nlc3NpbmciKTsKLSAgICAgICAgaWYgKCFQ
cm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5KG1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCi0gICAgICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZv
cm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIlNlcnZp
Y2UgV29ya2VyIGZvciBiYWNrZ3JvdW5kIHByb2Nlc3NpbmciX3MpOworICAgICAgICBpZiAoIVBy
b2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkod29ya2VySW5mb3JtYXRp
b24tPmFjdGl2aXR5KSkKKyAgICAgICAgICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9
IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tn
cm91bmQgcHJvY2Vzc2luZyJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Nl
cnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBudWxscHRyOworICAgIHdvcmtlcklu
Zm9ybWF0aW9uLT5hY3Rpdml0eSA9IG51bGxwdHI7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5
Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
IHN0b3JlLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBXRUJQUk9D
RVNTUFJPWFlfUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2Vy
Q29udGV4dDogU3RhcnRlZCIpOworICAgIG1hcmtQcm9jZXNzQXNSZWNlbnRseVVzZWQoKTsKKyAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFNoYXJl
ZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHByb2Nlc3NQb29sKCku
ZGVmYXVsdFBhZ2VHcm91cCgpLnBhZ2VHcm91cElEKCksIG1fc2hhcmVkV29ya2VySW5mb3JtYXRp
b24tPndvcmtlclBhZ2VQcm94eUlELCBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uLT53b3JrZXJQ
YWdlSUQsIHN0b3JlLCByZWdpc3RyYWJsZURvbWFpbiwgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlv
bi0+aW5pdGlhbGl6YXRpb25EYXRhIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhp
cyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgeworICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICBXRUJQUk9DRVNTUFJP
WFlfUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4
dDogRmluaXNoZWQiKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9LCAwKTsK
K30KKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKwogdm9pZCBXZWJQcm9jZXNzUHJveHk6
OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94
eSkKIHsKICAgICBpZiAoIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQpAQCAtMTkyNyw3ICsx
OTU0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKIAogICAgIFdFQlBST0NFU1NQUk9YWV9S
RUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAicmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJv
Y2VzczogY2xpZW50UHJvY2Vzcz0lcCwgY2xpZW50UElEPSVkIiwgJnByb3h5LCBwcm94eS5wcm9j
ZXNzSWRlbnRpZmllcigpKTsKICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50
UHJvY2Vzc2VzLmFkZChwcm94eSk7Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3Nl
cnRpb24oKTsKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6OlNl
cnZpY2VXb3JrZXIpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dW5yZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCkBAIC0xOTM3LDcg
KzE5NjQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveAogCiAgICAgV0VCUFJPQ0VTU1BST1hZ
X1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJ1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dFByb2Nlc3M6IGNsaWVudFByb2Nlc3M9JXAsIGNsaWVudFBJRD0lZCIsICZwcm94eSwgcHJveHku
cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNs
aWVudFByb2Nlc3Nlcy5yZW1vdmUocHJveHkpOwotICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9j
ZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJU
eXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KIAogYm9vbCBXZWJQcm9jZXNzUHJveHk6Omhhc1NlcnZp
Y2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKQEAgLTE5NTcsNyAr
MTk4NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3Jv
dW5kUHJvY2Vzc2luZygpCiAKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vz
c1N1c3BlbnNpb24sICJzdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyIpOwog
ICAgIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nID0gdHJ1ZTsKLSAgICB1
cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOworICAgIHVwZGF0ZVdvcmtlclBy
b2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAKIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjplbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoKQpAQCAt
MTk2NywyMyArMTk5NCwzOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5kU2VydmljZVdvcmtl
ckJhY2tncm91bmRQcm9jZXNzaW5nKCkKIAogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xP
RyhQcm9jZXNzU3VzcGVuc2lvbiwgImVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2lu
ZyIpOwogICAgIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nID0gZmFsc2U7
Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKKyAgICB1cGRhdGVX
b3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogfQogI2Vu
ZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRp
c2FibGVTZXJ2aWNlV29ya2VycygpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlzYWJsZVdvcmtl
cnMoT3B0aW9uU2V0PFdvcmtlclR5cGU+IHdvcmtlclR5cGUpCiB7Ci0gICAgaWYgKCFtX3NlcnZp
Y2VXb3JrZXJJbmZvcm1hdGlvbikKKyAgICBBU1NFUlQoIXdvcmtlclR5cGUuaXNFbXB0eSgpKTsK
KworICAgIGJvb2wgZGlkQ2hhbmdlID0gZmFsc2U7CisgICAgaWYgKHdvcmtlclR5cGUuY29udGFp
bnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikgJiYgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24pIHsKKyAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gPSB7IH07CisgICAgICAg
IGRpZENoYW5nZSA9IHRydWU7CisgICAgfQorICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdv
cmtlclR5cGU6OlNoYXJlZFdvcmtlcikgJiYgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbikgewor
ICAgICAgICBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uID0geyB9OworICAgICAgICBkaWRDaGFu
Z2UgPSB0cnVlOworICAgIH0KKyAgICBpZiAoIWRpZENoYW5nZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJkaXNhYmxl
U2VydmljZVdvcmtlcnM6Iik7Ci0gICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gPSB7IH07
CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJkaXNhYmxlV29ya2Vy
czogRGlzYWJsaW5nIHdvcmtlcnMgKFNoYXJlZFdvcmtlcnM9JWQsIFNlcnZpY2VXb3JrZXJzPSVk
KSIsIHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSwgd29ya2Vy
VHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSk7CisKICAgICB1cGRhdGVC
YWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwogCisgICAgaWYgKCFpc1J1bm5pbmdXb3Jr
ZXJzKCkpCisgICAgICAgIHByb2Nlc3NQb29sKCkucmVtb3ZlRnJvbVdvcmtlclByb2Nlc3Nlcygq
dGhpcyk7CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgcHJvY2Vzc1Bvb2woKS5y
ZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcygqdGhpcyk7Ci0gICAgc2VuZChNZXNzYWdl
czo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNsb3NlIHsgfSwgMCk7CisgICAgaWYg
KHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikpCisgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9zZSB7IH0s
IDApOwogI2VuZGlmCisgICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2hh
cmVkV29ya2VyKSkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9zZSB7IH0sIDApOwogCiAgICAgbWF5YmVTaHV0RG93bigp
OwogfQpAQCAtMjAwNCwxMSArMjA0NywxMyBAQCBzdGF0aWMgVmVjdG9yPHN0ZDo6cGFpcjxXZWJD
b21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEsIFVSTD4+IGNvbnRlbnRSdWxlTGlzdHNGcgogfQog
I2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVTZXJ2aWNlV29ya2Vycyhjb25z
dCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJiB1c2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVdvcmtlcnMoV29ya2VyVHlw
ZSB3b3JrZXJUeXBlLCBjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJiB1c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKQogewotICAgIEFTU0VSVCghbV9zZXJ2aWNlV29y
a2VySW5mb3JtYXRpb24pOwotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNl
V29ya2VyLCAiZW5hYmxlU2VydmljZVdvcmtlcnM6Iik7Ci0gICAgbV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb24gPSBTZXJ2aWNlV29ya2VySW5mb3JtYXRpb24geworICAgIFdFQlBST0NFU1NQUk9Y
WV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiZW5hYmxlV29ya2Vyczogd29ya2VyVHlwZT0l
dSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih3b3JrZXJUeXBlKSk7CisgICAgYXV0byYgd29ya2Vy
SW5mb3JtYXRpb24gPSB3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/IG1f
c2hhcmVkV29ya2VySW5mb3JtYXRpb24gOiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsKKyAg
ICBBU1NFUlQoIXdvcmtlckluZm9ybWF0aW9uKTsKKworICAgIHdvcmtlckluZm9ybWF0aW9uID0g
V29ya2VySW5mb3JtYXRpb24gewogICAgICAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyOjpnZW5l
cmF0ZSgpLAogICAgICAgICBQYWdlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwKICAgICAgICAgU2Vy
dmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSB7CkBAIC0yMDIxLDkgKzIwNjYsOCBAQCB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlU2VydmljZVdvcmtlcnMoY29uc3QgVXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllcgogICAgICAgICB7IH0KICAgICB9OwogICAgIHVwZGF0ZUJhY2tn
cm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQot
ICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKKworICAg
IHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24od29ya2VyVHlwZSk7CiB9CiAKIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVTbGVlcERpc2FibGVyKFNsZWVwRGlzYWJsZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcmVhc29uLCBib29sIGRpc3BsYXkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGY1MTRiOTkxNmFkNC4u
MTkyZDVkMmI2ZjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aApAQCAtMTM2LDkgKzEzNiwxMyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZExh
dW5jaFByb2Nlc3MgOiBib29sIHsgTm8sIFllcyB9OwogICAgIGVudW0gY2xhc3MgQ2FwdGl2ZVBv
cnRhbE1vZGUgOiBib29sIHsgRGlzYWJsZWQsIEVuYWJsZWQgfTsKKyAgICBlbnVtIGNsYXNzIFdv
cmtlclR5cGUgOiB1aW50MzJfdCB7CisgICAgICAgIFNlcnZpY2VXb3JrZXIgPSAxIDw8IDAsCisg
ICAgICAgIFNoYXJlZFdvcmtlciA9IDEgPDwgMQorICAgIH07CiAKICAgICBzdGF0aWMgUmVmPFdl
YlByb2Nlc3NQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sJiwgV2Vic2l0ZURhdGFTdG9yZSos
IENhcHRpdmVQb3J0YWxNb2RlLCBJc1ByZXdhcm1lZCwgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2Rl
ID0gV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQsIFNob3VsZExhdW5jaFByb2Nlc3Mg
PSBTaG91bGRMYXVuY2hQcm9jZXNzOjpZZXMpOwotICAgIHN0YXRpYyBSZWY8V2ViUHJvY2Vzc1By
b3h5PiBjcmVhdGVGb3JTZXJ2aWNlV29ya2VycyhXZWJQcm9jZXNzUG9vbCYsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKKyAgICBzdGF0aWMgUmVmPFdl
YlByb2Nlc3NQcm94eT4gY3JlYXRlRm9yV29ya2VycyhXb3JrZXJUeXBlLCBXZWJQcm9jZXNzUG9v
bCYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKIAog
ICAgIH5XZWJQcm9jZXNzUHJveHkoKTsKIApAQCAtMTYxLDggKzE2NSw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldElzSW5Qcm9jZXNzQ2FjaGUoYm9vbCwgV2lsbFNodXREb3duID0gV2lsbFNodXRE
b3duOjpObyk7CiAgICAgYm9vbCBpc0luUHJvY2Vzc0NhY2hlKCkgY29uc3QgeyByZXR1cm4gbV9p
c0luUHJvY2Vzc0NhY2hlOyB9CiAKLSAgICB2b2lkIGVuYWJsZVNlcnZpY2VXb3JrZXJzKGNvbnN0
IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImKTsKLSAgICB2b2lkIGRpc2FibGVTZXJ2
aWNlV29ya2VycygpOworICAgIHZvaWQgZW5hYmxlV29ya2VycyhXb3JrZXJUeXBlLCBjb25zdCBV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJik7CisgICAgdm9pZCBkaXNhYmxlV29ya2Vy
cyhPcHRpb25TZXQ8V29ya2VyVHlwZT4pOwogCiAgICAgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0
ZURhdGFTdG9yZSgpIGNvbnN0IHsgQVNTRVJUKG1fd2Vic2l0ZURhdGFTdG9yZSk7IHJldHVybiAq
bV93ZWJzaXRlRGF0YVN0b3JlOyB9CiAgICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFdlYnNp
dGVEYXRhU3RvcmUmKTsKQEAgLTE5NCw2ICsxOTgsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGlz
UnVubmluZ1NlcnZpY2VXb3JrZXJzKCkgY29uc3QgeyByZXR1cm4gISFtX3NlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbjsgfQogICAgIGJvb2wgaXNTdGFuZGFsb25lU2VydmljZVdvcmtlclByb2Nlc3Mo
KSBjb25zdCB7IHJldHVybiBpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpICYmICFwYWdlQ291bnQo
KTsgfQorICAgIGJvb2wgaXNSdW5uaW5nU2hhcmVkV29ya2VycygpIGNvbnN0IHsgcmV0dXJuICEh
bV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbjsgfQorICAgIGJvb2wgaXNTdGFuZGFsb25lU2hhcmVk
V29ya2VyUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIGlzUnVubmluZ1NoYXJlZFdvcmtlcnMoKSAm
JiAhcGFnZUNvdW50KCk7IH0KKyAgICBib29sIGlzUnVubmluZ1dvcmtlcnMoKSBjb25zdCB7IHJl
dHVybiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIHx8IG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uOyB9CiAKICAgICBib29sIGlzRHVtbXlQcm9jZXNzUHJveHkoKSBjb25zdDsKIApAQCAtMzU5
LDEyICszNjYsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVBdWRpYmxlTWVkaWFBc3Nl
cnRpb25zKCk7CiAKKyAgICB2b2lkIHNldFdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsK
KyAgICB2b2lkIHVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZSYpOworICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dChjb25zdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgdXBkYXRlV29ya2VyUHJvY2Vz
c0Fzc2VydGlvbihXb3JrZXJUeXBlKTsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAg
dm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRT
ZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgdXBkYXRlU2Vy
dmljZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwot
ICAgIGJvb2wgaGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHBhZ2VQcm94eUlEKSB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiAmJiBtX3Nl
cnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VQcm94eUlEID09IHBhZ2VQ
cm94eUlEOyB9Ci0gICAgdm9pZCB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigp
OworICAgIGJvb2wgaGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHBhZ2VQcm94eUlEKSB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiAmJiBt
X3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+d29ya2VyUGFnZVByb3h5SUQgPT0gcGFnZVByb3h5
SUQ7IH0KICAgICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJv
Y2Vzc1Byb3h5Jik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nl
c3MoV2ViUHJvY2Vzc1Byb3h5Jik7CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3Vu
ZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0OwpAQCAtNjQ4LDE0ICs2NTYsMTUgQEAgcHJpdmF0
ZToKICNlbmRpZgogICAgIFJlZlB0cjxMb2dnZXI+IG1fbG9nZ2VyOwogCi0gICAgc3RydWN0IFNl
cnZpY2VXb3JrZXJJbmZvcm1hdGlvbiB7Ci0gICAgICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
c2VydmljZVdvcmtlclBhZ2VQcm94eUlEOwotICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VyUGFnZUlEOworICAgIHN0cnVjdCBXb3JrZXJJbmZvcm1hdGlvbiB7Cisg
ICAgICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd29ya2VyUGFnZVByb3h5SUQ7CisgICAgICAg
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdvcmtlclBhZ2VJRDsKICAgICAgICAgU2VydmljZVdv
cmtlckluaXRpYWxpemF0aW9uRGF0YSBpbml0aWFsaXphdGlvbkRhdGE7CiAgICAgICAgIFByb2Nl
c3NUaHJvdHRsZXI6OkFjdGl2aXR5VmFyaWFudCBhY3Rpdml0eTsKICAgICAgICAgV2Vha0hhc2hT
ZXQ8V2ViUHJvY2Vzc1Byb3h5PiBjbGllbnRQcm9jZXNzZXM7CiAgICAgfTsKLSAgICBzdGQ6Om9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbj4gbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b247CisgICAgc3RkOjpvcHRpb25hbDxXb3JrZXJJbmZvcm1hdGlvbj4gbV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxXb3JrZXJJbmZvcm1hdGlvbj4gbV9zaGFy
ZWRXb3JrZXJJbmZvcm1hdGlvbjsKICAgICBib29sIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91
bmRQcm9jZXNzaW5nIHsgZmFsc2UgfTsKIAogICAgIEhhc2hNYXA8V2ViQ29yZTo6U2xlZXBEaXNh
YmxlcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTbGVlcERpc2FibGVyPj4g
bV9zbGVlcERpc2FibGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDc3ZTBhOWZkNDZjNi4uNDdkYzZkOWQ5ZmYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg4MSw2ICs4
ODEsNyBAQAogCQk0NjE0RjEzMjI1REVEODc1MDA3MDA2RTcgLyogR1BVUHJvY2Vzc0Nvbm5lY3Rp
b25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NkFDNTMyNDI1REVEODFFMDAzQjU3RUMgLyogR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJh
bWV0ZXJzLmggKi87IH07CiAJCTQ2MUNDQ0E1MjMxNDg1QTcwMEI2NTlCOSAvKiBVSVJlbW90ZU9i
amVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NjMyMzY4NTIzMTQ4MzNGMDBBNDhGQTcgLyogVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5o
ICovOyB9OwogCQk0NjFDQ0NBNjIzMTQ4NUFBMDBCNjU5QjkgLyogV2ViUmVtb3RlT2JqZWN0UmVn
aXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
MzIzNjgzMjMxNDgxRUYwMEE0OEZBNyAvKiBXZWJSZW1vdGVPYmplY3RSZWdpc3RyeS5oICovOyB9
OworCQk0NjFFMUJGMjI3OUEwMTE2MDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjFFMUJFRjI3OUEwMTBGMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2M0ZENDgwMUVCOTQ1OTYwMEEyOTgyQyAv
KiBXS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzRkQ0N0YxRUI5NDU4NDAwQTI5ODJDIC8qIFdLUHJvY2Vz
c1Rlcm1pbmF0aW9uUmVhc29uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDYzRkQ0ODIxRUI5NEVDMDAwQTI5ODJDIC8qIFByb2Nlc3NUZXJtaW5h
dGlvblJlYXNvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDYzRkQ0ODExRUI5NEVBRDAwQTI5ODJDIC8qIFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5o
ICovOyB9OwogCQk0NjU5RjI1RjI3NUZGNkIyMDBCQkIzNjkgLyogQ2FwdGl2ZVBvcnRhbE1vZGVP
YnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDY1OUYyNUUyNzVGRjZCMjAwQkJCMzY5IC8qIENhcHRpdmVQb3J0YWxNb2RlT2JzZXJ2ZXIuaCAq
LzsgfTsKQEAgLTkwMSwxMCArOTAyLDEzIEBACiAJCTQ2QzM5MjI5MjMxNkVDNEQwMDhFRUQ5QiAv
KiBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NkMzOTIyODIzMTZFQzREMDA4RUVEOUIgLyogV2ViUGFnZVByb3h5
SWRlbnRpZmllci5oICovOyB9OwogCQk0NkM1QjdDRTI3QUFEREQzMDAwQzVCNDcgLyogUmVtb3Rl
V29ya2VyRnJhbWVMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2QzVCN0NEMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJG
cmFtZUxvYWRlckNsaWVudC5oICovOyB9OwogCQk0NkM1QjdDRjI3QUFEREQ2MDAwQzVCNDcgLyog
UmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzVCN0NCMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1vdGVX
b3JrZXJMaWJXZWJSVENQcm92aWRlci5oICovOyB9OworCQk0NkM5MTZBQTI3OTlEMEEyMDAxQTRF
N0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM5MTZBOTI3OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hhcmVk
V29ya2VyU2VydmVyLmggKi87IH07CiAJCTQ2Q0UzQjExMjNEOEM4NDkwMDE2QTk2QSAvKiBXZWJC
YWNrRm9yd2FyZExpc3RDb3VudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2Q0UzQjEwMjNEOEM4M0QwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExp
c3RDb3VudHMuaCAqLzsgfTsKKwkJNDZENDhGQ0UyNzk5RDdFMTAwN0QyMDE0IC8qIFdlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RDQ4RkNEMjc5OUQ3REUwMDdEMjAxNCAvKiBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2REYwNjND
MUYzOTA1RjgwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REYwNjNBMUYzOTA1RTUw
MDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCAqLzsgfTsKIAkJNDZFRTI4
NDkyNjlFMDRBQzAwREQ0OEFCIC8qIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFRTI4NDgyNjlFMDQ5
QjAwREQ0OEFCIC8qIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oICovOyB9OwogCQk0NkVF
Mjg0RDI2OUUwNTI1MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFRTI4NEMy
NjlFMDUxNzAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCAqLzsg
fTsKKwkJNDZFRTNFOEIyNzYzRkQyRjAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2ODM4NjY3Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uLmggKi87IH07CiAJCTQ2RjM4RThDMjQxNkU2NzMwMDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRT
ZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZGMzhFOEIyNDE2RTY2RDAwNTkzNzVBIC8qIFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmgg
Ki87IH07CiAJCTQ2RjlCMjYzMjM1MjZFRjMwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hl
RW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
RjlCMjYyMjM1MjZFRDAwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCAqLzsg
fTsKIAkJNDkzMTAyQkQyNjgzRjNEMDAwMkJCODg1IC8qIEFwcFByaXZhY3lSZXBvcnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5MzEwMkJDMjY4M0Yz
QTUwMDJCQjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggKi87IH07CkBAIC00MjI0LDYgKzQyMjgs
OSBAQAogCQk0NjA4ODlGRjI2MUZBOEE5MDBFMjUwMEQgLyogUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZENyZWF0aW9uUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
MEY0ODhEMUY5OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1l
c3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBE
ZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdl
UmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk0NjBG
NDg4RTFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNz
YWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OworCQk0NjFFMUJFQzI3OUEwMTBFMDA2QUY1M0IgLyogV2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MUUxQkVGMjc5QTAxMEYwMDZBRjUz
QiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MUUxQkYwMjc5QTAxMEYw
MDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjIxMDdENzFGMzhEQkQzMDBERDc4MTAgLyogUGluZ0xvYWQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUGluZ0xvYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjMyMzY4MzIzMTQ4MUVGMDBBNDhGQTcgLyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0
cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzMjM2ODQyMzE0ODI1QzAwQTQ4RkE3IC8qIFdlYlJlbW90
ZU9iamVjdFJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlbW90ZU9iamVjdFJl
Z2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyNTUsOCArNDI2Miwx
MSBAQAogCQk0NjgwOUE3QjIzRDkyMjUzMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29va2llQ2FjaGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgzNTY5QTIxRTgxQ0M3MDA2RTI3QTMgLyog
UHJvdmlzaW9uYWxQYWdlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UHJvdmlzaW9uYWxQYWdlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4
MzU2OUIyMUU4MUNDNzAwNkUyN0EzIC8qIFByb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4Mzg2NjcyNzYzRkFCMTAwQ0Y5MTgyIC8q
IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0NjgzODY2ODI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OUI5MEYyNzU2RDE0MzAw
MDdDNjUxIC8qIFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVX
ZWJMb2NrUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OUI5MTAy
NzU2RDE0MzAwMDdDNjUxIC8qIFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0Njk0M0RDQjI3NjNGODM0MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlERTgwMjI3
M0VDQzVEMDA5MzAyNzYgLyogUHJvY2Vzc0xhdW5jaGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcm9jZXNzTGF1bmNoZXJDb2NvYS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZBMkI2MDYxRTU2NzVBMjAwQzNERURBIC8qIEJhY2tn
cm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkEyQjYwNzFFNTY3NUEyMDBDM0RFREEg
LyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI3NSw3ICs0Mjg1LDExIEBACiAJCTQ2
QzVCN0NCMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92aWRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92aWRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkM1QjdDQzI3QUFEREJFMDAwQzVCNDcgLyogUmVtb3Rl
V29ya2VyRnJhbWVMb2FkZXJDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlV29y
a2VyRnJhbWVMb2FkZXJDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NkM1QjdDRDI3QUFEREJFMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZDOTE2QTgyNzk5RDA5RDAwMUE0RTdDIC8qIFdlYlNo
YXJlZFdvcmtlclNlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkM5MTZBOTI3OTlEMDlE
MDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNo
YXJlZFdvcmtlclNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkNFM0Ix
MDIzRDhDODNEMDAxNkE5NkEgLyogV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkQ0OEZDQzI3OTlEN0REMDA3RDIwMTQgLyogV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZENDhGQ0QyNzk5RDdERTAwN0QyMDE0IC8qIFdlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NkRGMDYzOTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVm
bGlnaHRDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2REYwNjNBMUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNr
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RTk3NjBBMjc1N0Y2
QzkwMEFDREQzNyAvKiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW4gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI4NSw2ICs0Mjk5LDcgQEAKIAkJ
NDZFRTI4NEEyNjlFMDUxNzAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0
cnkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmV0d29ya0Jyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDZFRTI4NEIyNjlFMDUxNzAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0
cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0Jyb2Fk
Y2FzdENoYW5uZWxSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
RUUyODRDMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtCcm9hZGNhc3RDaGFu
bmVsUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZFRTNFOEEyNzYz
RkQyQTAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMu
aW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZGMzhFOEIyNDE2RTY2RDAwNTkzNzVBIC8qIFJ1
bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2RjlCMjYyMjM1MjZFRDAwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5MzEwMkJDMjY4M0YzQTUwMDJCQjg4
NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcFByaXZhY3lSZXBvcnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkyOTQsNiArOTMwOSwyMCBAQAogCQkJ
cGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNDY4Mzg2
NjUyNzYzRkExQjAwQ0Y5MTgyIC8qIFNoYXJlZFdvcmtlciAqLyA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNDZDOTE2QTgyNzk5RDA5RDAwMUE0RTdDIC8qIFdl
YlNoYXJlZFdvcmtlclNlcnZlci5jcHAgKi8sCisJCQkJNDZDOTE2QTkyNzk5RDA5RDAwMUE0RTdD
IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5oICovLAorCQkJCTQ2ODM4NjY4Mjc2M0ZBQjEwMENG
OTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk0Njgz
ODY2NzI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5o
ICovLAorCQkJCTQ2RUUzRThBMjc2M0ZEMkEwMDYwQzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovLAorCQkJCTQ2RDQ4RkNDMjc5OUQ3REQwMDdEMjAx
NCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCAqLywKKwkJ
CQk0NkQ0OEZDRDI3OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oICovLAorCQkJKTsKKwkJCXBhdGggPSBTaGFyZWRXb3JrZXI7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk0NjlERTgwMTI3M0VDQzVEMDA5MzAyNzYg
LyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAt
OTM1OCw2ICs5Mzg3LDcgQEAKIAkJCQk1MTQ1MjZFQTI3MUUxNjEwMDAwNDY3QjYgLyogTm90aWZp
Y2F0aW9ucyAqLywKIAkJCQk1QzAxQkMzNTI2RDQ2QUQ0MDBGRUI0MkYgLyogUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQgKi8sCiAJCQkJOTNCQTA0RDkyMTUxQURDRDAwN0Y0NTVGIC8qIFNlcnZpY2VX
b3JrZXIgKi8sCisJCQkJNDY4Mzg2NjUyNzYzRkExQjAwQ0Y5MTgyIC8qIFNoYXJlZFdvcmtlciAq
LywKIAkJCQk5MzA4NURDMjI2RTFCQjY1MDAwRUM2QTcgLyogc3RvcmFnZSAqLywKIAkJCQk0MTMw
NzU5NzFERTg0RUQ3MDAzOUVDNjkgLyogd2VicnRjICovLAogCQkJCTkzQjI2MTQzMjI3RDE0MzEw
MEI5N0E3NiAvKiBXZWJTdG9yYWdlICovLApAQCAtOTQ2MCw4ICs5NDkwLDEyIEBACiAJCQkJNDE5
QUNGOUIxRjk4MUQyNjAwOUYxQTgzIC8qIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
aCAqLywKIAkJCQk1MUJFQjYyOTFGM0E1QUNEMDA1MDI5QjkgLyogV2ViU2VydmljZVdvcmtlclBy
b3ZpZGVyLmNwcCAqLywKIAkJCQk1MUJFQjYyQTFGM0E1QUNEMDA1MDI5QjkgLyogV2ViU2Vydmlj
ZVdvcmtlclByb3ZpZGVyLmggKi8sCisJCQkJNDYxRTFCRUMyNzlBMDEwRTAwNkFGNTNCIC8qIFdl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgKi8sCisJCQkJNDYxRTFC
RUYyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5oICovLAorCQkJCTQ2MUUxQkYwMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDY2OEEwQkIy
N0FCNjA0MDAwQzcyMEJDIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwICov
LAogCQkJCTQ2NjhBMEI4MjdBQjYwM0YwMEM3MjBCQyAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLmggKi8sCisJCQkJNDY5NDNEQ0IyNzYzRjgzNDAwNEI2MTBFIC8qIFdlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDY2OEEwQjkyN0FC
NjAzRjAwQzcyMEJDIC8qIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmNwcCAqLywKIAkJCQk0NjY4
QTBCQTI3QUI2MDQwMDBDNzIwQkMgLyogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaCAqLywKIAkJ
CQk1MTdBNTMwMzFGNDc5M0IyMDBEQ0RDMEEgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcCAq
LywKQEAgLTEzNjU4LDggKzEzNjkyLDEyIEBACiAJCQkJN0MzNjFENzMxOTI3RkEzNjAwMzZBNTlE
IC8qIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlEM0I5NDg0
OTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MUJFQjYyQzFGM0E1QUQ3MDA1MDI5QjkgLyogV2ViU2VydmljZVdvcmtlclByb3ZpZGVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjFFMUJGMjI3OUEwMTE2MDA2QUY1M0IgLyogV2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
NjY4QTBCRDI3QUI2MDU2MDBDNzIwQkMgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY2OEEwQkMyN0FCNjA1MDAwQzcyMEJDIC8qIFdlYlNo
YXJlZFdvcmtlclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkM5MTZBQTI3OTlEMEEy
MDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0
NkVFM0U4QjI3NjNGRDJGMDA2MEM3MEYgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlv
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZENDhGQ0UyNzk5RDdFMTAwN0QyMDE0IC8qIFdlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDOEREMzgwMUZFNDUyMTYwMEYyQTU1NiAvKiBXZWJzaXRlQXV0b3BsYXlQb2xpY3kuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBNDgzMkQ3MUE5Q0RGOTYwMDhCNERGRSAvKiBXZWJzaXRlRGF0YS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0ODMyRDExQTlCREMyRjAwOEI0REZFIC8qIFdlYnNpdGVE
YXRhUmVjb3JkLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4
IDgxZGQwNDExYTIzOS4uYmIzNTQ3ZjQ2YWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAK
QEAgLTU3LDcgKzU3LDEwIEBACiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uaCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5o
IgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWxNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNv
Y2tldFN0cmVhbS5oIgpAQCAtMTc0LDYgKzE3NywxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UAogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCisgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgc2hhcmVkV29ya2VyQ29ubmVj
dGlvbigpLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBN
ZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgQVNTRVJUKFNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpOworICAgICAgICBpZiAoYXV0byogY29udGV4
dE1hbmFnZXJDb25uZWN0aW9uID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRv
bigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFdlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiY+KCpjb250ZXh0TWFuYWdlckNvbm5lY3Rpb24pLmRp
ZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAgaWYgKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCBlZGMw
NDkzYmQzZWQuLjBiNjQ4MGE2MWQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTQ4LDYg
KzQ4LDcgQEAgZW51bSBjbGFzcyBIVFRQQ29va2llQWNjZXB0UG9saWN5IDogdWludDhfdDsKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI7CitjbGFz
cyBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOwogY2xhc3MgV2ViU1dDbGllbnRDb25u
ZWN0aW9uOwogY2xhc3MgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41YjAxYWQwNTI5NWYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTI5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZVdlYkxvY2tSZWdpc3RyeS5oIgorI2lu
Y2x1ZGUgIlJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiUmVtb3Rl
V29ya2VyTGliV2ViUlRDUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJCcm9hZGNhc3RDaGFubmVs
UmVnaXN0cnkuaCIKKyNpbmNsdWRlICJXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5oIgorI2luY2x1
ZGUgIldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5oIgorI2luY2x1ZGUgIldlYkRhdGFi
YXNlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUHJlZmVy
ZW5jZXNLZXlzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldl
YlNvY2tldFByb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9FbXB0eUNsaWVudHMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Bh
Z2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VDb25maWd1cmF0aW9uLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VzZXJBZ2VudC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyRmV0Y2hSZXN1bHQuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYg
Y29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYg
cmVnaXN0cmFibGVEb21haW4sIFBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgcHJlZmVyZW5jZXNTdG9yZSwgU2Vy
dmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmIGluaXRpYWxpemF0aW9uRGF0YSkKKyAgICA6
IG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV1RGTW92ZShjb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcykpCisgICAgLCBtX3JlZ2lzdHJhYmxlRG9tYWluKFdURk1vdmUocmVnaXN0cmFibGVE
b21haW4pKQorICAgICwgbV9wYWdlR3JvdXBJRChwYWdlR3JvdXBJRCkKKyAgICAsIG1fd2ViUGFn
ZVByb3h5SUQod2ViUGFnZVByb3h5SUQpCisgICAgLCBtX3BhZ2VJRChwYWdlSUQpCisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgLCBtX3VzZXJBZ2VudChXZWJDb3JlOjpzdGFuZGFyZFVzZXJBZ2Vu
dFdpdGhBcHBsaWNhdGlvbk5hbWUoeyB9KSkKKyNlbHNlCisgICAgLCBtX3VzZXJBZ2VudChzdGFu
ZGFyZFVzZXJBZ2VudCgpKQorI2VuZGlmCisgICAgLCBtX3VzZXJDb250ZW50Q29udHJvbGxlcihX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmdldE9yQ3JlYXRlKGluaXRpYWxpemF0aW9uRGF0YS51
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKSkKK3sKKyNpZiBFTkFCTEUoQ09OVEVOVF9F
WFRFTlNJT05TKQorICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRDb250ZW50UnVsZUxp
c3RzKFdURk1vdmUoaW5pdGlhbGl6YXRpb25EYXRhLmNvbnRlbnRSdWxlTGlzdHMpKTsKKyNlbmRp
ZgorCisgICAgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShwcmVmZXJlbmNlc1N0b3JlKTsKKyAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5kaXNhYmxlVGVybWluYXRpb24oKTsKK30KKworV2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp+V2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uKCkgPSBkZWZhdWx0OworCit2b2lkIFdlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZXN0YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9jb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2Vzcy0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6RXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24g
eyBtX3dlYlBhZ2VQcm94eUlELCBtX3JlZ2lzdHJhYmxlRG9tYWluIH0sIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCAwKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRX
b3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwpCit7CisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6UG9zdEV4
Y2VwdGlvblRvV29ya2VyT2JqZWN0IHsgc2hhcmVkV29ya2VySWRlbnRpZmllciwgZXJyb3JNZXNz
YWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCB9LCAwKTsKK30KKwordm9p
ZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnVwZGF0ZVByZWZlcmVu
Y2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCit7CisgICAgV2ViUGFn
ZTo6dXBkYXRlUHJlZmVyZW5jZXNHZW5lcmF0ZWQoc3RvcmUpOworICAgIG1fcHJlZmVyZW5jZXNT
dG9yZSA9IHN0b3JlOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6bGF1bmNoU2hhcmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdp
biwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVy
LCBVUkwmJiB1cmwsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zLCBXZWJD
b3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmIHdvcmtlckZldGNoUmVzdWx0KQoreworICAgIFJFTEVB
U0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6bGF1bmNoU2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2
NCwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBhdXRvIHBhZ2VDb25m
aWd1cmF0aW9uID0gV2ViQ29yZTo6cGFnZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnNlc3Npb25JRCgpKTsKKworICAgIHBhZ2VDb25maWd1cmF0
aW9uLmRhdGFiYXNlUHJvdmlkZXIgPSBXZWJEYXRhYmFzZVByb3ZpZGVyOjpnZXRPckNyZWF0ZSht
X3BhZ2VHcm91cElEKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5zb2NrZXRQcm92aWRlciA9IFdl
YlNvY2tldFByb3ZpZGVyOjpjcmVhdGUobV93ZWJQYWdlUHJveHlJRCk7CisgICAgcGFnZUNvbmZp
Z3VyYXRpb24uYnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuYnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5KCk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24ud2Vi
TG9ja1JlZ2lzdHJ5ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9ja1JlZ2lzdHJ5KCk7
CisgICAgcGFnZUNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRQcm92aWRlciA9IG1fdXNlckNvbnRl
bnRDb250cm9sbGVyOworI2lmIEVOQUJMRShXRUJfUlRDKQorICAgIHBhZ2VDb25maWd1cmF0aW9u
LmxpYldlYlJUQ1Byb3ZpZGVyID0gbWFrZVVuaXF1ZVJlZjxSZW1vdGVXb3JrZXJMaWJXZWJSVENQ
cm92aWRlcj4oKTsKKyNlbmRpZgorCisgICAgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50
Rm9yTWFpbkZyYW1lID0gbWFrZVVuaXF1ZVJlZjxSZW1vdGVXb3JrZXJGcmFtZUxvYWRlckNsaWVu
dD4obV93ZWJQYWdlUHJveHlJRCwgbV9wYWdlSUQsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcjo6
Z2VuZXJhdGUoKSwgbV91c2VyQWdlbnQpOworCisgICAgYXV0byBwYWdlID0gbWFrZVVuaXF1ZVJl
ZjxXZWJDb3JlOjpQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CisgICAgaWYgKG1f
cHJlZmVyZW5jZXNTdG9yZSkgeworICAgICAgICBXZWJQYWdlOjp1cGRhdGVTZXR0aW5nc0dlbmVy
YXRlZCgqbV9wcmVmZXJlbmNlc1N0b3JlLCBwYWdlLT5zZXR0aW5ncygpKTsKKyAgICAgICAgcGFn
ZS0+c2V0dGluZ3MoKS5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6U3RvcmFnZUJsb2NraW5nUG9saWN5PihtX3ByZWZlcmVuY2VzU3RvcmUtPmdldFVJbnQzMlZh
bHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpzdG9yYWdlQmxvY2tpbmdQb2xpY3lLZXkoKSkp
KTsKKyAgICB9CisgICAgcGFnZS0+c2V0dXBGb3JSZW1vdGVXb3JrZXIodXJsLCBvcmlnaW4udG9w
T3JpZ2luLCB3b3JrZXJGZXRjaFJlc3VsdC5yZWZlcnJlclBvbGljeSk7CisgICAgYXV0byBzaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eSA9IFdlYkNvcmU6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpj
cmVhdGUoV1RGTW92ZShwYWdlKSwgc2hhcmVkV29ya2VySWRlbnRpZmllciwgb3JpZ2luLCB1cmws
IFdURk1vdmUod29ya2VyRmV0Y2hSZXN1bHQpLCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMpLCBtX3Vz
ZXJBZ2VudCwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FjaGVTdG9yYWdlUHJvdmlkZXIoKSk7
CisKKyAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCku
cmVnaXN0ZXJTaGFyZWRXb3JrZXJUaHJlYWQoV1RGTW92ZShzaGFyZWRXb3JrZXJUaHJlYWRQcm94
eSkpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
Y2xvc2UoKQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Y2xvc2U6IFNoYXJlZCB3b3JrZXIgcHJvY2VzcyBp
cyByZXF1ZXN0ZWQgdG8gc3RvcCBhbGwgc2hhcmVkIHdvcmtlcnMiKTsKKyAgICBzZXRBc0Nsb3Nl
ZCgpOworCisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNsb3NlU2hhcmVkV29ya2VyQ29udGV4dENv
bm5lY3Rpb24geyB9LCAwKTsKKyAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
cjo6c2luZ2xldG9uKCkuc3RvcEFsbFNoYXJlZFdvcmtlcnMoKTsKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbmFibGVUZXJtaW5hdGlvbigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hZTIzMjM2NTYyOGEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAtMCwwICsxLDc2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
SWRlbnRpZmllclR5cGVzLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3Rv
cmUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZp
ZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IENsaWVudE9yaWdpbjsKK3N0cnVj
dCBXb3JrZXJGZXRjaFJlc3VsdDsKK3N0cnVjdCBXb3JrZXJPcHRpb25zOworfQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOworc3RydWN0IFNl
cnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGE7CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVy
IHsKK3B1YmxpYzoKKyAgICBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24o
UmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUGFn
ZUdyb3VwSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBTZXJ2aWNlV29ya2VySW5pdGlh
bGl6YXRpb25EYXRhJiYpOworICAgIH5XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24oKTsKKworICAgIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0
KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwpIGZpbmFsOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICAvLyBJUEMgTWVzc2Fn
ZXMuCisgICAgdm9pZCBsYXVuY2hTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYs
IFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpXb3JrZXJP
cHRpb25zJiYsIFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYpOworICAgIHZvaWQgdXBkYXRl
UHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CisgICAgdm9pZCBz
ZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KSB7IG1fdXNlckFnZW50ID0gV1RGTW92ZSh1
c2VyQWdlbnQpOyB9CisgICAgdm9pZCBjbG9zZSgpOworCisgICAgUmVmPElQQzo6Q29ubmVjdGlv
bj4gbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzczsKKyAgICBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluOworICAgIFBhZ2VHcm91cElkZW50aWZpZXIgbV9w
YWdlR3JvdXBJRDsKKyAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIG1fd2ViUGFnZVByb3h5SUQ7
CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CisgICAgU3RyaW5nIG1fdXNl
ckFnZW50OworICAgIFJlZjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXI+IG1fdXNlckNvbnRlbnRD
b250cm9sbGVyOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViUHJlZmVyZW5jZXNTdG9yZT4gbV9wcmVm
ZXJlbmNlc1N0b3JlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kODJhNGFkYTUzZmQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwz
MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisj
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAt
PiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7
CisgICAgTGF1bmNoU2hhcmVkV29ya2VyKHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3Jp
Z2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZp
ZXIsIFVSTCB1cmwsIHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdvcmtlck9wdGlvbnMs
IHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCB3b3JrZXJGZXRjaFJlc3VsdCkKKyAg
ICBQb3N0Q29ubmVjdEV2ZW50KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVk
V29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBwb3J0LCBT
dHJpbmcgc291cmNlT3JpZ2luKQorICAgIFRlcm1pbmF0ZVNoYXJlZFdvcmtlcihXZWJDb3JlOjpT
aGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIpCisgICAgVXBkYXRl
UHJlZmVyZW5jZXNTdG9yZShzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3Jl
KQorICAgIFNldFVzZXJBZ2VudChTdHJpbmcgdXNlckFnZW50KQorICAgIENsb3NlKCkKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKaW5kZXggNWM1ZmRhYTYwMDU3Li5k
N2Q5OTRkZTFmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCkBA
IC0yNiwyMyArMjYsNDQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgiCiAKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5o
IgotI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyTWFuYWdlci5oPgorI2luY2x1ZGUgIldl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlck9wdGlvbnMu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b246OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CisjZGVmaW5l
IENPTk5FQ1RJT05fUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtl
ciwgIiVwIC0gW3dlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBXZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgV2ViQ29yZTo6UHJvY2Vzczo6aWRlbnRp
ZmllcigpLnRvVUludDY0KCksICMjX19WQV9BUkdTX18pCisKK1dlYlNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb246OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKQoreworICAgIENP
Tk5FQ1RJT05fUkVMRUFTRV9MT0coIldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Iik7
Cit9CisKK1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246On5XZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJ+V2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjoiKTsKK30KIAogSVBDOjpDb25uZWN0aW9uKiBXZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNv
bnN0CiB7CiAgICAgcmV0dXJuICZXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7CiB9CiAKLXZvaWQgV2ViU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbjo6cmVxdWVzdFNoYXJlZFdvcmtlcihjb25zdCBVUkwmIHVybCwg
V2ViQ29yZTo6U2hhcmVkV29ya2VyJiBzaGFyZWRXb3JrZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVk
TWVzc2FnZVBvcnQmJiBwb3J0LCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9u
cykKK3ZvaWQgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6cmVxdWVzdFNoYXJlZFdv
cmtlcihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25z
dCBVUkwmIHVybCwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBvcnQsIGNvbnN0
IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMpCiB7Ci0gICAgLy8gRklYTUU6
IFNob3VsZCBzZW5kIElQQyB0byB0aGUgbmV0d29yayBwcm9jZXNzLgotICAgIFdlYkNvcmU6OlNo
YXJlZFdvcmtlck1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3QodXJsLCBzaGFyZWRXb3JrZXIs
IFdURk1vdmUocG9ydCksIFdURk1vdmUod29ya2VyT3B0aW9ucykpOworICAgIENPTk5FQ1RJT05f
UkVMRUFTRV9MT0coInJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uOjpSZXF1ZXN0U2hhcmVkV29ya2VyIHsgb3JpZ2luLCBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLCB1cmwsIFdURk1vdmUocG9ydCksIHdvcmtlck9wdGlvbnMgfSk7CiB9
CiAKK3ZvaWQgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6c2hhcmVkV29ya2VyT2Jq
ZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0co
InNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyPSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbjo6U2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkgeyBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyIH0pOworfQorCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPRwor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24u
aAppbmRleCA2MWVlNWFmNDI0ZGMuLmQzMmM1MmUxZTE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24uaApAQCAtMjUsMjAgKzI1LDI1IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLCBwcml2
YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b24sIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uKTsgfQorICAgIH5XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCk7
CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24oKTsKIAogICAgIC8vIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24u
Ci0gICAgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0IFVSTCYsIFdlYkNvcmU6OlNoYXJl
ZFdvcmtlciYsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgV2ViQ29yZTo6V29y
a2VyT3B0aW9ucyYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciwgY29uc3QgVVJMJiwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBjb25z
dCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJikgZmluYWw7CisgICAgdm9pZCBzaGFyZWRXb3JrZXJP
YmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKSBm
aW5hbDsKIAogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlci4KICAgICBJUEM6OkNvbm5lY3Rpb24q
IG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjcyMmFlMWEzMmM5MwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uIHsKKyAgICBGZXRjaFNjcmlwdEluQ2xpZW50KFVSTCB1cmwsIFdlYkNvcmU6OlNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgc3Ry
dWN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMgd29ya2VyT3B0aW9ucykgLT4gKHN0cnVjdCBXZWJD
b3JlOjpXb3JrZXJGZXRjaFJlc3VsdCBmZXRjaFJlc3VsdCkgQXN5bmMKKyAgICBOb3RpZnlXb3Jr
ZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciBlcnJvcikKKyAgICBQb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBTdHJp
bmcgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgU3RyaW5n
IHNvdXJjZVVSTCkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRl
eCBkNWRkYTcxNjMxNmIuLjhjNzRjN2NiY2E0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcApAQCAtODQsNiArODQsOCBAQAogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgorI2lu
Y2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIgorI2luY2x1
ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRT
dHJlYW0uaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgpAQCAtMTM0LDYgKzEzNiw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAjaW5jbHVkZSA8cGFsL0xvZ2dpbmcu
aD4KICNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgpAQCAtOTA0LDcgKzkwNyw2IEBAIHZvaWQg
V2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBJUEM6OkRlY29kZXImIGRlCiAgICAgfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQot
ICAgIC8vIEZJWE1FOiBSZW1vdmU/CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFt
ZSgpID09IE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIEFTU0VSVChTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0
b24oKS5jb25uZWN0aW9uKCkpOwogICAgICAgICBpZiAoYXV0byogY29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKQpAQCAt
OTEzLDYgKzkxNSwxMyBAQCB2b2lkIFdlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZQogICAgIH0KICNlbmRpZgog
CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSkgeworICAgICAgICBBU1NFUlQoU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRv
bigpLmNvbm5lY3Rpb24oKSk7CisgICAgICAgIGlmIChhdXRvKiBjb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24gPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlv
bigpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uJj4oKmNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbikuZGlkUmVjZWl2ZU1lc3Nh
Z2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBM
T0dfRVJST1IoIlVuaGFuZGxlZCB3ZWIgcHJvY2VzcyBtZXNzYWdlICclcycgKGRlc3RpbmF0aW9u
OiAlIiBQUkl1NjQgIiBwaWQ6ICVkKSIsIGRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2FnZU5hbWUo
KSksIGRlY29kZXIuZGVzdGluYXRpb25JRCgpLCBzdGF0aWNfY2FzdDxpbnQ+KGdldEN1cnJlbnRQ
cm9jZXNzSUQoKSkpOwogfQogCkBAIC0xOTE5LDYgKzE5MjgsMTYgQEAgTGliV2ViUlRDTmV0d29y
ayYgV2ViUHJvY2Vzczo6bGliV2ViUlRDTmV0d29yaygpCiAgICAgcmV0dXJuICptX2xpYldlYlJU
Q05ldHdvcms7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdy
b3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFJlZ2lzdHJhYmxl
RG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRh
dGEmJiBpbml0aWFsaXphdGlvbkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICAvLyBXZSBhcmUgaW4gdGhlIFNoYXJlZCBXb3JrZXIgY29u
dGV4dCBwcm9jZXNzIGFuZCB0aGUgY2FsbCBiZWxvdyBlc3RhYmxpc2hlcyBvdXIgY29ubmVjdGlv
biB0byB0aGUgTmV0d29yayBQcm9jZXNzCisgICAgLy8gYnkgY2FsbGluZyBlbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVz
ZSB0aGUgc2FtZSB1bmRlcmx5aW5nIElQQzo6Q29ubmVjdGlvbiBhcyB0aGUKKyAgICAvLyBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gZm9yIHN5bmNocm9uaXphdGlvbiBwdXJwb3Nlcy4KKyAgICBh
dXRvJiBpcGNDb25uZWN0aW9uID0gZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpOworICAgIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5z
ZXRDb25uZWN0aW9uKG1ha2VVbmlxdWU8V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uPihpcGNDb25uZWN0aW9uLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgcGFnZUdy
b3VwSUQsIHdlYlBhZ2VQcm94eUlELCBwYWdlSUQsIHN0b3JlLCBXVEZNb3ZlKGluaXRpYWxpemF0
aW9uRGF0YSkpKTsKKyAgICBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCku
Y29ubmVjdGlvbigpLT5lc3RhYmxpc2hDb25uZWN0aW9uKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKK30KKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgV2ViUHJvY2Vzczo6
ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQ
YWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdl
YlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2Vz
U3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6
Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2Vy
UGFnZUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFs
aXphdGlvbkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGRkOGQ3NGZmZjI2
OS4uNjVmNzczMjAxYTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAg
LTQ2OSw2ICs0NjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2FtZXBhZERpc2Nvbm5lY3RlZCh1
bnNpZ25lZCBpbmRleCk7CiAjZW5kaWYKIAorICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZpZXIsIFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgU2VydmljZVdv
cmtlckluaXRpYWxpemF0aW9uRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmllciwg
V2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNl
V29ya2VyUGFnZUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBkZmQzMDY0NTYzZjkuLmU1
NTI5NmI5MDRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KQEAgLTEwMCw2ICsxMDAsOCBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewogICAgIEdhbWVwYWREaXNjb25uZWN0ZWQodW5z
aWduZWQgaW5kZXgpCiAjZW5kaWYKIAorICAgIEVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJLaXQ6OlBhZ2VHcm91cElkZW50aWZpZXIgcGFn
ZUdyb3VwSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJl
bmNlc1N0b3JlIHN0b3JlLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIHN0cnVj
dCBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25E
YXRhKSAtPiAoKSBBc3luYworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIEVzdGFi
bGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViS2l0
OjpQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
c3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gZG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHN0cnVjdCBX
ZWJLaXQ6OlNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRh
KSAtPiAoKSBBc3luYwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450803</attachid>
            <date>2022-02-03 12:22:50 -0800</date>
            <delta_ts>2022-02-03 13:05:50 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>235958_SharedWorker_multiProcess_wip.patch</filename>
            <type>text/plain</type>
            <size>259885</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDQwMjQ2NmU0OWYwZS4uMTcwNGMzMDNkY2JjIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTQ2Myw3ICs0NjMsNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYi1sb2Nrcy9zdGVhbC50ZW50YXRpdmUuaHR0cHMuYW55Lmh0bWwgWyBEdW1wSgog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3Ro
ZS1hbmFseXNlcm5vZGUtaW50ZXJmYWNlL3Rlc3QtYW5hbHlzZXItbWluaW11bS5odG1sIFsgRHVt
cEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUt
ZGlzY29ubmVjdC1hdWRpb3BhcmFtLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NhbWUtb3JpZ2luLWNoZWNr
LnN1Yi5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMuaHRt
bCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCiBmYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWJh
Y2stZm9yd2FyZC1jYWNoZS5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGZhc3Qv
aGlzdG9yeS9wYWdlLWNhY2hlLWNyZWF0ZUltYWdlQml0bWFwLmh0bWwgWyBEdW1wSlNDb25zb2xl
TG9nSW5TdGRFcnIgXQogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLWluLWxv
YWRpbmctaWZyYW1lLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQpAQCAtODUzLDYg
Kzg1Miw3IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdXNlci10aW1pbmcvbWFy
ay5odG1sIFsgRmFpbHVyZSBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dXNlci10aW1pbmcvbWVhc3VyZV9hc3NvY2lhdGVkX3dpdGhfbmF2aWdhdGlvbl90aW1pbmcuaHRt
bCBbIEZhaWx1cmUgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
d2ViYXBwYXBpcy9zeXN0ZW0tc3RhdGUtYW5kLWNhcGFiaWxpdGllcy90aGUtbmF2aWdhdG9yLW9i
amVjdC9wbHVnaW5zLWFuZC1taW1ldHlwZXMuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2JlYWNvbi9iZWFjb24tcmVkaXJlY3Quc3ViLndpbmRv
dy5odG1sIFsgRmFpbHVyZSBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L2Fub255bW91cy1pZnJhbWUvc2hhcmVk
d29ya2VyLXBhcnRpdGlvbmluZy50ZW50YXRpdmUuaHR0cHMud2luZG93Lmh0bWwgWyBGYWlsdXJl
IFBhc3MgXQogCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2RvY3VtZW50LW1ldGFkYXRhL3RoZS1saW5rLWVsZW1lbnQvbGluay1sb2FkLWVycm9yLWV2ZW50
cy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZG9jdW1lbnQtbWV0YWRhdGEvdGhlLWxpbmstZWxl
bWVudC9saW5rLWxvYWQtZXJyb3ItZXZlbnRzLmh0dHBzLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9n
SW5TdGRFcnIgXQpAQCAtNTE1Nyw2ICs1MTU3LDEwIEBAIHdlYmtpdC5vcmcvYi8xODM5OTQgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nzb20vY3NzLXN0eWxlLWF0dHItZGVj
CiAjIFRlc3QgaXMgY3Jhc2hpbmcgaW4gRGVidWcgYnVpbGRzIHNpbmNlIGltcG9ydC4KIHdlYmtp
dC5vcmcvYi8yMzQ5NzcgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
ZG9tL2V2ZW50cy9mb2N1cy1ldmVudC1kb2N1bWVudC1tb3ZlLmh0bWwgWyBTa2lwIF0KIAorIyBU
ZXN0IGlzIGZsYWt5IGJlY2F1c2UgTWVzc2FnZVBvcnQgbWVzc2FnZXMgbWF5IGdldCByZWNlaXZl
ZCBpbiBhIGRpZmZlcmVudCBvcmRlciB3aGVuIHNldmVyYWwgTWVzc2FnZVBvcnRzIGFyZSBpbnZv
bHZlZCwKKyMgZHVlIHRvIGhvdyBNZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpIGlzIGlt
cGxlbWVudGVkLgoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJl
ZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJy
IEZhaWx1cmUgUGFzcyBdCisKICMgUGx1Z2lucwogIyBGSVhNRTogUmVtb3ZlIHRoZXNlIHRlc3Rz
LgogcGx1Z2lucy8gWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtl
ci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
aW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dApp
bmRleCAwZTk5NzI0Yjg2NGIuLjY4OThiNTRhYWI2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9p
bnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3Vi
LWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFs
IFVSTCBodHRwczovL3d3dy5sb2NhbGhvc3Q6OTQ0NC9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9z
dXBwb3J0L3Jlc291cmNlLnB5P2Nyb3NzLW9yaWdpbi1mZXRjaAotQmxvY2tlZCBhY2Nlc3MgdG8g
ZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHkt
cG9saWN5L3N1cHBvcnQvcmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLXhocgotQmxvY2tlZCBhY2Nl
c3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L3N1cHBvcnQvcmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLWZldGNoCiAKIFBB
U1MgU2FtZS1vcmlnaW4gJ2ZldGNoKCknLgogUEFTUyBTYW1lLW9yaWdpbiBYSFIuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3Vi
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2Ny
aXB0LXNyYy5zdWItZXhwZWN0ZWQudHh0CmluZGV4IDk3OTEwNjMwMzc4NS4uYmI2NDUyZjQ0YTBh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlw
dC1zcmMuc3ViLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hh
cmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dApAQCAtMiwxMCArMiw5IEBACiBI
YXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIAogVElNRU9VVCBzaGFyZWR3
b3JrZXItc2NyaXB0LXNyYyBUZXN0IHRpbWVkIG91dAotRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9y
dFNjcmlwdHMoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgIEEgbmV0d29yayBl
cnJvciBvY2N1cnJlZC4KLUZBSUwgYGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91
dCBDU1AgUmVmdXNlZCB0byBldmFsdWF0ZSBhIHN0cmluZyBhcyBKYXZhU2NyaXB0IGJlY2F1c2Ug
J3Vuc2FmZS1ldmFsJyBpcyBub3QgYW4gYWxsb3dlZCBzb3VyY2Ugb2Ygc2NyaXB0IGluIHRoZSBm
b2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAic2NyaXB0LXNyYyAn
c2VsZicgJ25vbmNlLWEnIGJsb2I6IGZpbGVzeXN0ZW06Ii4KLQotRkFJTCBgc2V0VGltZW91dChb
c3RyaW5nXSlgIG5vdCBibG9ja2VkIGluIGh0dHA6IHdpdGhvdXQgQ1NQIGFzc2VydF91bnJlYWNo
ZWQ6IGNhbGxiYWNrIG5vdCBjYWxsZWQuIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBD
cm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91
ciBDU1AgTG9hZCBmYWlsZWQKK1BBU1MgYGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0
aG91dCBDU1AKK1BBU1MgYHNldFRpbWVvdXQoW3N0cmluZ10pYCBub3QgYmxvY2tlZCBpbiBodHRw
OiB3aXRob3V0IENTUAogVElNRU9VVCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgYmxv
Y2tlZCBpbiBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnIFRlc3QgdGltZWQgb3V0CiBOT1RS
VU4gYGV2YWwoKWAgYmxvY2tlZCBpbiBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCiBOT1RS
VU4gYHNldFRpbWVvdXQoW3N0cmluZ10pYCBibG9ja2VkIGluIGh0dHA6IHdpdGggc2NyaXB0LXNy
YyAnc2VsZicKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRp
bWVvdXQuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0
LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4dAppbmRleCA0ZWFjMWNjYzA1MjYuLmI4ZWUxM2IwZmZj
ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91dC5z
dWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRp
bWVvdXQuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKIAogRkFJTCBEZWRpY2F0ZWQg
d29ya2VyIGluaGVyaXRzIENTUCBmcm9tIG1haW4gZG9jdW1lbnQgYXNzZXJ0X2VxdWFsczogZXhw
ZWN0ZWQgInNldFRpbWVvdXQgYWxsb3dlZCIgYnV0IGdvdCAic2V0VGltZW91dCBibG9ja2VkIgot
RkFJTCBTaGFyZWQgd29ya2VyIGRlbGl2ZXJzIGl0cyBvd24gQ1NQIGFzc2VydF9lcXVhbHM6IGV4
cGVjdGVkICJzZXRUaW1lb3V0IGJsb2NrZWQiIGJ1dCBnb3QgInNldFRpbWVvdXQgYWxsb3dlZCIK
K1BBU1MgU2hhcmVkIHdvcmtlciBkZWxpdmVycyBpdHMgb3duIENTUAogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMv
b2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJv
d3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBl
Y3RlZC50eHQKaW5kZXggYzEwNzEzNjU1MjgwLi42Zjg0NGRkNWQ5NDkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9v
ZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
YnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1l
eHBlY3RlZC50eHQKQEAgLTUsNyArNSw3IEBAIEhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNz
YWdlID0gbnVsbAogUEFTUyBEZWRpY2F0ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0CiBQ
QVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0CiBQQVNTIERlZGlj
YXRlZCB3b3JrZXIgb2YgdGhlIG5vdC1pbi1jYWNoZSBzY3JpcHQKLVBBU1MgU2hhcmVkIHdvcmtl
ciBvZiB0aGUgY2FjaGVkIHNjcmlwdAotUEFTUyBTaGFyZWQgd29ya2VyIG9mIHRoZSBmYWxsYmFj
a2VkIHNjcmlwdAorRkFJTCBTaGFyZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0IGFzc2Vy
dF9lcXVhbHM6IGV4cGVjdGVkICJEb25lOiBjYWNoZWQiIGJ1dCBnb3QgIkVycm9yOiBJbXBvcnRp
bmcgYSBub24tY2FjaGVkIHNjcmlwdCBtdXN0IGZhaWwuIgorRkFJTCBTaGFyZWQgd29ya2VyIG9m
IHRoZSBmYWxsYmFja2VkIHNjcmlwdCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiRG9uZTogZmFs
bGJhY2tlZCIgYnV0IGdvdCAiRXJyb3I6IEltcG9ydGluZyBhIG5vbi1jYWNoZWQgc2NyaXB0IG11
c3QgZmFpbC4iCiBUSU1FT1VUIFNoYXJlZCB3b3JrZXIgb2YgdGhlIG5vdC1pbi1jYWNoZSBzY3Jp
cHQgVGVzdCB0aW1lZCBvdXQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5v
bnltb3VzLWlmcmFtZS9zaGFyZWR3b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53
aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlmcmFt
ZS9zaGFyZWR3b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0
ZWQudHh0CmluZGV4IDRlZDg3NDc0NzZjNy4uNTg2ZDEwMTUyYTM2IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2lu
LWVtYmVkZGVyLXBvbGljeS9hbm9ueW1vdXMtaWZyYW1lL3NoYXJlZHdvcmtlci1wYXJ0aXRpb25p
bmcudGVudGF0aXZlLmh0dHBzLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRl
ci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3b3JrZXItcGFydGl0aW9uaW5nLnRlbnRh
dGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIEFu
b255bW91cyBpZnJhbWVzIGdldCBwYXJ0aXRpb25lZCBzaGFyZWQgd29ya2Vycy4gYXNzZXJ0X3Ry
dWU6IFRoZSAibm9ybWFsIiBpZnJhbWUncyBzaGFyZWR3b3JrZXIgc2hvdWxkIHJldHVybiB7Im5v
cm1hbCI6IHRydWUsICJub3JtYWxfY29udHJvbCI6IHRydWV9LCBidXQgaW5zdGVhZCByZXR1cm5l
ZCB7Im5vcm1hbCI6dHJ1ZX0gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK0ZBSUwgQW5vbnltb3Vz
IGlmcmFtZXMgZ2V0IHBhcnRpdGlvbmVkIHNoYXJlZCB3b3JrZXJzLiBhc3NlcnRfdHJ1ZTogVGhl
ICJub3JtYWwiIGlmcmFtZSdzIHNoYXJlZHdvcmtlciBzaG91bGQgcmV0dXJuIHsibm9ybWFsIjog
dHJ1ZSwgIm5vcm1hbF9jb250cm9sIjogdHJ1ZX0sIGJ1dCBpbnN0ZWFkIHJldHVybmVkIHsibm9y
bWFsX2NvbnRyb2wiOnRydWUsIm5vcm1hbCI6dHJ1ZSwiYW5vbnltb3VzIjp0cnVlLCJhbm9ueW1v
dXNfY29udHJvbCI6dHJ1ZX0gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9y
aWdpbi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0
cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xh
dGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IDYzNTViNjhkZTcwYi4uYzhi
Zjc1ZTdlYTg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4t
aXNvbGF0ZWQtcGVybWlzc2lvbi5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRl
ci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQu
dHh0CkBAIC0yMCw3ICsyMCw3IEBAIFBBU1MgZGVkaWNhdGVkIHdvcmtlcjogc2NoZW1lID0gYmxv
YiwgdmFsdWUgPSAqCiBQQVNTIGRlZGljYXRlZCB3b3JrZXI6IHNjaGVtZSA9IGJsb2IsIHZhbHVl
ID0gc2VsZgogRkFJTCBkZWRpY2F0ZWQgd29ya2VyOiBzY2hlbWUgPSBibG9iLCB2YWx1ZSA9IChc
KSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCBmYWxzZSBidXQgZ290IHRydWUKIFBBU1Mgc2hhcmVk
IHdvcmtlcjogd2l0aENvb3BDb2VwID0gZmFsc2UKLVBBU1Mgc2hhcmVkIHdvcmtlcjogd2l0aENv
b3BDb2VwID0gdHJ1ZQorRkFJTCBzaGFyZWQgd29ya2VyOiB3aXRoQ29vcENvZXAgPSB0cnVlIGFz
c2VydF9lcXVhbHM6IGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZQogUEFTUyBzZXJ2aWNlIHdv
cmtlcjogd2l0aENvb3BDb2VwID0gZmFsc2UKIEZBSUwgc2VydmljZSB3b3JrZXI6IHdpdGhDb29w
Q29lcCA9IHRydWUgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4
cGVjdGVkLnR4dAppbmRleCAzMzk4YmQ4ODkzMWIuLjRjODY2ZWIyOTI2MyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9y
aWdpbi1lbWJlZGRlci1wb2xpY3kvc2hhcmVkLXdvcmtlcnMuaHR0cHMtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9z
cy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4
dApAQCAtMiw3ICsyLDcgQEAgVmVyaWZ5IHRoZSBDcm9zcy1PcmlnaW4gRW1iZWRkZXIgUG9saWN5
IGZvciBTaGFyZWQgV29ya2VycyBieSBwZXJmb3JtaW5nIGEgY3Jvc3MKIAogCiBQQVNTIGRlZmF1
bHQgcG9saWN5IChkZXJpdmVkIGZyb20gcmVzcG9uc2UpCi1GQUlMICJyZXF1aXJlLWNvcnAiIChk
ZXJpdmVkIGZyb20gcmVzcG9uc2UpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJmYWlsdXJlIiBi
dXQgZ290ICJzdWNjZXNzIgorUEFTUyAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIHJlc3Bv
bnNlKQogUEFTUyBkZWZhdWx0IHBvbGljeSAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBkdWUgdG8g
dXNlIG9mIGxvY2FsIHNjaGVtZSAtIGJsb2IgVVJMKQogRkFJTCAicmVxdWlyZS1jb3JwIiAoZGVy
aXZlZCBmcm9tIG93bmVyIHNldCBkdWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAtIGJsb2IgVVJM
KSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiZmFpbHVyZSIgYnV0IGdvdCAic3VjY2VzcyIKIFBB
U1MgZGVmYXVsdCBwb2xpY3kgKGRlcml2ZWQgZnJvbSBvd25lciBzZXQgZHVlIHRvIHVzZSBvZiBs
b2NhbCBzY2hlbWUgLSBkYXRhIFVSTCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5
L3dvcmtlci1pbmhlcml0YW5jZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRl
ci1wb2xpY3kvd29ya2VyLWluaGVyaXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKaW5kZXgg
NzViMWQzM2U1MjYwLi5iMmJmMmUzYmZmM2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9s
aWN5L3dvcmtlci1pbmhlcml0YW5jZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4t
ZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5jZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0
CkBAIC0xLDcgKzEsNiBAQAogQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8v
d3d3LmxvY2FsaG9zdDo5NDQ0L2NvbW1vbi9ibGFuay5odG1sCiBCbG9ja2VkIGFjY2VzcyB0byBl
eHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29tbW9uL2JsYW5rLmh0bWwK
IEJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2NhbGhvc3Q6OTQ0
NC9jb21tb24vYmxhbmsuaHRtbAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBz
Oi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbW1vbi9ibGFuay5odG1sCiAKIFBBU1MgVGVzdCB0aGF0
IGxvY2FsIHNjaGVtZSB3b3JrZXJzIGluaGVyaXQgQ09FUDogcmVxdWlyZS1jb3JwIGZyb20gdGhl
IGNyZWF0aW5nIGRvY3VtZW50CiBQQVNTIGJsb2IgVVJMIGRlZGljYXRlZCB3b3JrZXI6IFNhbWUg
b3JpZ2luIHNob3VsZCBiZSBhbGxvd2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9TaGFyZWRXb3JrZXJfZGF0YVVybC1leHBlY3RlZC50eHQKaW5kZXggOTk1YTA2MDE5
Yjg0Li45YjU4MjBhYWU4Y2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJfZGF0YVVybC1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4cGVjdGVkLnR4dApAQCAtMSwxMyArMSw1IEBACi1D
T05TT0xFIE1FU1NBR0U6IEVycm9yOiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3Qg
MQogCiAKLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gRXJyb3I6IGFzc2VydF9lcXVh
bHM6IGV4cGVjdGVkIDIgYnV0IGdvdCAxCi0KLVBBU1MgRGF0YSBVUkwgbm90IHNoYXJlZCBieSBj
cm9zcy1vcmlnaW4gU2hhcmVkV29ya2VycwotVElNRU9VVCBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNh
bWUtb3JpZ2luIFNoYXJlZFdvcmtlcnMgVGVzdCB0aW1lZCBvdXQKLQotSGFybmVzcyBFcnJvciAo
RkFJTCksIG1lc3NhZ2UgPSBFcnJvcjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290
IDEKLQogUEFTUyBEYXRhIFVSTCBub3Qgc2hhcmVkIGJ5IGNyb3NzLW9yaWdpbiBTaGFyZWRXb3Jr
ZXJzCi1USU1FT1VUIERhdGEgVVJMcyBzaGFyZWQgYnkgc2FtZS1vcmlnaW4gU2hhcmVkV29ya2Vy
cyBUZXN0IHRpbWVkIG91dAorUEFTUyBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNo
YXJlZFdvcmtlcnMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11
cmwud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJs
LndpbmRvdy1leHBlY3RlZC50eHQKaW5kZXggNTc2ZTZkMmI3ZWQyLi40YTI2YmU5MjlhOGQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVj
dGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBo
dHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBv
cnQtb24tbG9hZC1zY3JpcHQucHkKIAogUEFTUyBTdGF0aWMgaW1wb3J0LgogRkFJTCBTdGF0aWMg
aW1wb3J0IChjcm9zcy1vcmlnaW4pLiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24g
d2l0aCB2YWx1ZTogIkltcG9ydGluZyBhIG1vZHVsZSBzY3JpcHQgZmFpbGVkLiIKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhw
ZWN0ZWQudHh0CmluZGV4IDRmODY0MWU1MTQ4MC4uMjk5N2Y3ZTFmMzA4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxl
cy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBl
Y3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IE9yaWdpbiBudWxsIGlz
IG5vdCBhbGxvd2VkIGJ5IEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbi4gU3RhdHVzIGNvZGU6
IDIwMAogCiBIYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQK
aW5kZXggZWFjN2Y5NWRlNmYyLi5jYmMwNDI5ZTBjNzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13
b3JrZXItaW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVk
LXdvcmtlci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMg
QEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0
Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkK
IAogSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1
bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQt
d29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0CmluZGV4IDU3NmU2ZDJiN2VkMi4uNGEy
NmJlOTI5YThkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50
eHQKQEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6
Ly93d3cxLmxvY2FsaG9zdDo5NDQzL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LW9u
LWxvYWQtc2NyaXB0LnB5CiAKIFBBU1MgU3RhdGljIGltcG9ydC4KIEZBSUwgU3RhdGljIGltcG9y
dCAoY3Jvc3Mtb3JpZ2luKS4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGgg
dmFsdWU6ICJJbXBvcnRpbmcgYSBtb2R1bGUgc2NyaXB0IGZhaWxlZC4iCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxl
cy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hh
cmVkLXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAppbmRleCBlMWJlZGY1
NDMwZWYuLmE3MGYwNWFmNTRmNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25z
LWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMt
Y3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3Mg
dG8gZXh0ZXJuYWwgVVJMIGh0dHA6Ly93d3cxLmxvY2FsaG9zdDo4ODAwL3dvcmtlcnMvbW9kdWxl
cy9yZXNvdXJjZXMvZXhwb3J0LWNyZWRlbnRpYWxzLnB5CiAKIEhhcm5lc3MgRXJyb3IgKFRJTUVP
VVQpLCBtZXNzYWdlID0gbnVsbAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMv
MDA0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhwZWN0ZWQudHh0
CmluZGV4IDAxOGRiNjA0NTY5ZC4uY2ZlNDY1NTY3NWNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRp
cGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMv
MDA0LWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDMgQEAKIAotSGFybmVzcyBFcnJvciAoVElNRU9V
VCksIG1lc3NhZ2UgPSBudWxsCi0KLU5PVFJVTiBzaGFyZWQgd29ya2VyIHdpdGggbXVsdGlwbGUg
ZG9jdW1lbnRzCitQQVNTIHNoYXJlZCB3b3JrZXIgd2l0aCBtdWx0aXBsZSBkb2N1bWVudHMKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNz
L211bHRpcGxlLXdvcmtlcnMvMDA4LWV4cGVjdGVkLnR4dAppbmRleCA5N2E0ZTdhNzNhNjMuLjA5
ZjY3MmQxYzYyMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKQEAgLTEs
NSArMSwzIEBACiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1U
SU1FT1VUIG1lc3NhZ2VjaGFubmVsIGluIHNoYXJlZCB3b3JrZXIgVGVzdCB0aW1lZCBvdXQKK1BB
U1MgbWVzc2FnZWNoYW5uZWwgaW4gc2hhcmVkIHdvcmtlcgogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtl
ci1mcm9tLWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2It
dXJsLndpbmRvdy1leHBlY3RlZC50eHQKaW5kZXggYTA4OWMyMjQ4OWUyLi4xOWU0NmIwOWE1NmEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
c2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNyAr
MSw1IEBACiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1GQUlM
IENyZWF0aW5nIGEgc2hhcmVkIHdvcmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MuIGFzc2VydF9l
cXVhbHM6IGV4cGVjdGVkICJ3b3JrZXJfT0tfMiIgYnV0IGdvdCAid29ya2VyX09LXzEiCitQQVNT
IENyZWF0aW5nIGEgc2hhcmVkIHdvcmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MuCiBQQVNTIENy
ZWF0aW5nIGEgc2hhcmVkIHdvcmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MgaW1tZWRpYXRlbHkg
YmVmb3JlIHJldm9raW5nLgotVElNRU9VVCBDb25uZWN0aW5nIHRvIGEgc2hhcmVkIHdvcmtlciBv
biBhIHJldm9rZWQgYmxvYiBVUkwgd29ya3MuIFRlc3QgdGltZWQgb3V0CitQQVNTIENvbm5lY3Rp
bmcgdG8gYSBzaGFyZWQgd29ya2VyIG9uIGEgcmV2b2tlZCBibG9iIFVSTCB3b3Jrcy4KIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtl
ci1uYW1lLXZpYS1vcHRpb25zLWV4cGVjdGVkLnR4dAppbmRleCA2ZmZlZTI3MzkwZDkuLmFlNDVi
NGQyNzM5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQKQEAgLTEsMyAr
MSwzIEBACiAKLUZBSUwgVGVzdCB0aGUgbmFtZSBwcm9wZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBt
aXhpbmcgY29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29uc3RydWN0b3Igc3RyaW5ncyBFcnJvcjog
YXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290IDEKK1BBU1MgVGVzdCB0aGUgbmFtZSBw
cm9wZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBtaXhpbmcgY29uc3RydWN0b3Igb3B0aW9ucyBhbmQg
Y29uc3RydWN0b3Igc3RyaW5ncwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25zLW1pc21h
dGNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0
CmluZGV4IGY2NTY5NDYxNTBkYi4uNGY5OWExMzQwOWU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1v
cHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25zLW1pc21h
dGNoLWV4cGVjdGVkLnR4dApAQCAtMSwyOCArMSwyNiBAQAogCi1IYXJuZXNzIEVycm9yIChUSU1F
T1VUKSwgbWVzc2FnZSA9IG51bGwKLQotVElNRU9VVCBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3Jr
ZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBt
b2R1bGUgVGVzdCB0aW1lZCBvdXQKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIg
d2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGRlZmF1
bHQKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogY2xhc3NpYyB0byBtb2R1bGUKLU5PVFJVTiBDb25uZWN0
aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxv
Y2tlZDogbW9kdWxlIHRvIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3Jr
ZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBv
bWl0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBpbmNsdWRlIGlu
IGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJl
bnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBkZWZhdWx0IGluIGNsYXNzaWMK
LU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9u
cyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCi1OT1RS
VU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hv
dWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVkZSBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IHNhbWUtb3JpZ2luIHRvIG9taXQgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRv
IHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDog
aW5jbHVkZSB0byBkZWZhdWx0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJl
ZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVk
ZSB0byBvbWl0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIg
d2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBzYW1l
LW9yaWdpbiBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdp
dGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gb21pdCBp
biBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJl
bnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBpbmNsdWRlIGluIG1vZHVs
ZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4gbW9kdWxlCi1OT1RSVU4g
Q29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxk
IGJlIGJsb2NrZWQ6IG9taXQgdG8gc2FtZS1vcmlnaW4gaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IG9taXQgdG8gaW5jbHVkZSBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNo
YXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2Ft
ZS1vcmlnaW4gdG8gb21pdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3
b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmln
aW4gdG8gaW5jbHVkZSBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3Jr
ZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBk
ZWZhdWx0IGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4g
bW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50
IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gc2FtZS1vcmlnaW4gaW4gbW9k
dWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIG1vZHVsZQorUEFTUyBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogbW9kdWxlIHRvIGRlZmF1bHQKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdp
dGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGNsYXNzaWMgdG8gbW9kdWxl
CitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25z
IHNob3VsZCBiZSBibG9ja2VkOiBtb2R1bGUgdG8gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRv
IHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDog
ZGVmYXVsdCB0byBvbWl0IGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29y
a2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8g
aW5jbHVkZSBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4g
Y2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQg
b3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2lj
CitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25z
IHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGluY2x1ZGUgaW4gY2xhc3NpYworUEFTUyBDb25u
ZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUg
YmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBz
aGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGlu
Y2x1ZGUgdG8gZGVmYXVsdCBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRv
IG9taXQgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBzYW1lLW9yaWdp
biBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZl
cmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIG9taXQgaW4gbW9kdWxl
CitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25z
IHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIGluY2x1ZGUgaW4gbW9kdWxlCitQQVNTIENv
bm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBi
ZSBibG9ja2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8g
c2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBv
bWl0IHRvIHNhbWUtb3JpZ2luIGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3
b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBp
bmNsdWRlIGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBp
biBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50
IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIGluY2x1ZGUgaW4gbW9k
dWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIGRlZmF1bHQgaW4gbW9kdWxlCitQQVNT
IENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3Vs
ZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBpbmNsdWRlIHRvIHNhbWUtb3JpZ2luIGluIG1vZHVsZQogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVj
dGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3
b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dAppbmRleCAxZTJkMzk5MmY2ZDUuLjU5Y2FjYTQ4NmY4
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9v
cGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0x
LDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHA6Ly93d3cyLmxv
Y2FsaG9zdDo4ODAwL3hoci9yZXNvdXJjZXMvaW5zcGVjdC1oZWFkZXJzLnB5P2ZpbHRlcl9uYW1l
PW9yaWdpbiZjb3JzCiAKIEZBSUwgUmVmZXJlciBoZWFkZXIgYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgIlJlZmVyZXI6IGh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC94aHIvcmVzb3VyY2VzL3dvcmtlcnho
ci1vcmlnaW4tcmVmZXJyZXIuanNcbiIgYnV0IGdvdCAiUmVmZXJlcjogaHR0cDovL2xvY2FsaG9z
dDo4ODAwL3hoci9yZXNvdXJjZXMvcmVkaXJlY3QucHk/bG9jYXRpb249d29ya2VyeGhyLW9yaWdp
bi1yZWZlcnJlci5qc1xuIgogRkFJTCBPcmlnaW4gaGVhZGVyIGFzc2VydF9lcXVhbHM6IGV4cGVj
dGVkICJPcmlnaW46IGh0dHA6Ly9sb2NhbGhvc3Q6ODgwMFxuIiBidXQgZ290ICIiCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3Jr
ZXItY29ubmVjdC1zcmMuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBv
bGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1jb25uZWN0LXNyYy5zdWItZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjM3NzhiYmE0Njlk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13
b3JrZXIvc2hhcmVkd29ya2VyLWNvbm5lY3Qtc3JjLnN1Yi1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNiBAQAorCitIYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKKworVElN
RU9VVCBzaGFyZWR3b3JrZXItY29ubmVjdC1zcmMgVGVzdCB0aW1lZCBvdXQKK1BBU1MgU2FtZS1v
cmlnaW4gJ2ZldGNoKCknIGluIGh0dHA6IHdpdGhvdXQgQ1NQCitQQVNTIFNhbWUtb3JpZ2luIFhI
UiBpbiBodHRwOiB3aXRob3V0IENTUAorUEFTUyBDcm9zcy1vcmlnaW4gJ2ZldGNoKCknIGluIGh0
dHA6IHdpdGhvdXQgQ1NQCitQQVNTIENyb3NzLW9yaWdpbiBYSFIgaW4gaHR0cDogd2l0aG91dCBD
U1AKK1BBU1MgU2FtZS1vcmlnaW4gPT4gY3Jvc3Mtb3JpZ2luICdmZXRjaCgpJyBpbiBodHRwOiB3
aXRob3V0IENTUAorUEFTUyBTYW1lLW9yaWdpbiAnZmV0Y2goKScgaW4gaHR0cDogd2l0aCBjb25u
ZWN0LXNyYyAnc2VsZicKK1BBU1MgU2FtZS1vcmlnaW4gWEhSIGluIGh0dHA6IHdpdGggY29ubmVj
dC1zcmMgJ3NlbGYnCitUSU1FT1VUIENyb3NzLW9yaWdpbiAnZmV0Y2goKScgaW4gaHR0cDogd2l0
aCBjb25uZWN0LXNyYyAnc2VsZicgVGVzdCB0aW1lZCBvdXQKK05PVFJVTiBDcm9zcy1vcmlnaW4g
WEhSIGluIGh0dHA6IHdpdGggY29ubmVjdC1zcmMgJ3NlbGYnCitOT1RSVU4gU2FtZS1vcmlnaW4g
PT4gY3Jvc3Mtb3JpZ2luICdmZXRjaCgpJyBpbiBodHRwOiB3aXRoIGNvbm5lY3Qtc3JjICdzZWxm
JworTk9UUlVOIFJlcG9ydHMgbWF0Y2ggaW4gaHR0cDogd2l0aCBjb25uZWN0LXNyYyAnc2VsZicK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIv
c2hhcmVkd29ya2VyLXJlcG9ydC1vbmx5LnN1Yi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3Vi
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjc3
N2NlZDQ1MWUyYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13
azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTAgQEAKKworSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBu
dWxsCisKK1BBU1MgU2FtZS1vcmlnaW4gJ2ZldGNoKCknLgorUEFTUyBTYW1lLW9yaWdpbiBYSFIu
CitUSU1FT1VUIENyb3NzLW9yaWdpbiAnZmV0Y2goKScuIFRlc3QgdGltZWQgb3V0CitOT1RSVU4g
Q3Jvc3Mtb3JpZ2luIFhIUi4KK05PVFJVTiBTYW1lLW9yaWdpbiA9PiBjcm9zcy1vcmlnaW4gJ2Zl
dGNoKCknLgorTk9UUlVOIGNvbm5lY3Qtc3JjLXNlbGYtcmVwb3J0LW9ubHkKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2Vy
LXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13
azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1zY3JpcHQtc3JjLnN1Yi1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43N2RjZTU1MDBhN2IKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtl
ci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIg
QEAKKworSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCisKK1RJTUVPVVQg
c2hhcmVkd29ya2VyLXNjcmlwdC1zcmMgVGVzdCB0aW1lZCBvdXQKK1BBU1MgQ3Jvc3Mtb3JpZ2lu
IGBpbXBvcnRTY3JpcHRzKClgIG5vdCBibG9ja2VkIGluIGh0dHA6IHdpdGhvdXIgQ1NQCitQQVNT
IGBldmFsKClgIG5vdCBibG9ja2VkIGluIGh0dHA6IHdpdGhvdXQgQ1NQCitQQVNTIGBzZXRUaW1l
b3V0KFtzdHJpbmddKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AKK1RJTUVPVVQg
Q3Jvc3Mtb3JpZ2luIGBpbXBvcnRTY3JpcHRzKClgIGJsb2NrZWQgaW4gaHR0cDogd2l0aCBzY3Jp
cHQtc3JjICdzZWxmJyBUZXN0IHRpbWVkIG91dAorTk9UUlVOIGBldmFsKClgIGJsb2NrZWQgaW4g
aHR0cDogd2l0aCBzY3JpcHQtc3JjICdzZWxmJworTk9UUlVOIGBzZXRUaW1lb3V0KFtzdHJpbmdd
KWAgYmxvY2tlZCBpbiBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCitOT1RSVU4gUmVwb3J0
cyBhcmUgc2VudCBmb3IgaHR0cDogd2l0aCBzY3JpcHQtc3JjICdzZWxmJworCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRv
dy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0
LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi42NTE5Y2QxZjY5NDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMSBAQAorCitQQVNTIFN0YXRpYyBpbXBvcnQuCitQQVNTIFN0YXRpYyBp
bXBvcnQgKGNyb3NzLW9yaWdpbikuCitQQVNTIFN0YXRpYyBpbXBvcnQgKHJlZGlyZWN0KS4KK1BB
U1MgTmVzdGVkIHN0YXRpYyBpbXBvcnQuCitQQVNTIFN0YXRpYyBpbXBvcnQgYW5kIHRoZW4gZHlu
YW1pYyBpbXBvcnQuCitQQVNTIER5bmFtaWMgaW1wb3J0LgorUEFTUyBOZXN0ZWQgZHluYW1pYyBp
bXBvcnQuCitQQVNTIER5bmFtaWMgaW1wb3J0IGFuZCB0aGVuIHN0YXRpYyBpbXBvcnQuCitQQVNT
IGV2YWwoaW1wb3J0KCkpLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGst
d2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJl
ZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lMzZjMDQ5ZjgyNTYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorCitIYXJu
ZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKKworUEFTUyBTdGF0aWMgaW1wb3J0
LgorUEFTUyBTdGF0aWMgaW1wb3J0IChjcm9zcy1vcmlnaW4pLgorVElNRU9VVCBTdGF0aWMgaW1w
b3J0IChyZWRpcmVjdCkuIFRlc3QgdGltZWQgb3V0CitOT1RSVU4gTmVzdGVkIHN0YXRpYyBpbXBv
cnQuCitOT1RSVU4gU3RhdGljIGltcG9ydCBhbmQgdGhlbiBkeW5hbWljIGltcG9ydC4KK05PVFJV
TiBEeW5hbWljIGltcG9ydC4KK05PVFJVTiBOZXN0ZWQgZHluYW1pYyBpbXBvcnQuCitOT1RSVU4g
RHluYW1pYyBpbXBvcnQgYW5kIHRoZW4gc3RhdGljIGltcG9ydC4KK05PVFJVTiBldmFsKGltcG9y
dCgpKS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWlt
cG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29y
a2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uNjUxOWNkMWY2OTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTEgQEAKKworUEFTUyBTdGF0aWMgaW1wb3J0LgorUEFTUyBTdGF0aWMgaW1wb3J0IChj
cm9zcy1vcmlnaW4pLgorUEFTUyBTdGF0aWMgaW1wb3J0IChyZWRpcmVjdCkuCitQQVNTIE5lc3Rl
ZCBzdGF0aWMgaW1wb3J0LgorUEFTUyBTdGF0aWMgaW1wb3J0IGFuZCB0aGVuIGR5bmFtaWMgaW1w
b3J0LgorUEFTUyBEeW5hbWljIGltcG9ydC4KK1BBU1MgTmVzdGVkIGR5bmFtaWMgaW1wb3J0Lgor
UEFTUyBEeW5hbWljIGltcG9ydCBhbmQgdGhlbiBzdGF0aWMgaW1wb3J0LgorUEFTUyBldmFsKGlt
cG9ydCgpKS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2Vy
LW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9z
aGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTJiMThiNTI0OTI4Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlh
bHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzUgQEAKKworUEFTUyBUZXN0IGluaXRpYWxpemF0
aW9uOiBzZXR0aW5nIHVwIGNyb3NzLW9yaWdpbiBjb29raWUKK1BBU1MgbmV3IFNoYXJlZFdvcmtl
cigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGRlZmF1bHQgY3JlZGVudGlhbHMgb3B0aW9uIHNob3Vs
ZCBiZWhhdmUgYXMgY3JlZGVudGlhbHM9c2FtZS1vcmlnaW4gYW5kIHNlbmQgdGhlIGNyZWRlbnRp
YWxzCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBjcmVkZW50
aWFscz1vbWl0IHNob3VsZCBub3Qgc2VuZCB0aGUgY3JlZGVudGlhbHMKK1BBU1MgbmV3IFNoYXJl
ZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPXNhbWUtb3JpZ2luIHNo
b3VsZCBzZW5kIHRoZSBjcmVkZW50aWFscworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0
eXBlPW1vZHVsZSBhbmQgY3JlZGVudGlhbHM9aW5jbHVkZSBzaG91bGQgc2VuZCB0aGUgY3JlZGVu
dGlhbHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGRlZmF1
bHQgY3JlZGVudGlhbHMgb3B0aW9uIHNob3VsZCBiZWhhdmUgYXMgY3JlZGVudGlhbHM9c2FtZS1v
cmlnaW4gYW5kIHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBzYW1lLW9yaWdpbiBzdGF0aWMgaW1w
b3J0cworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQgY3JlZGVu
dGlhbHM9b21pdCBzaG91bGQgbm90IHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBzYW1lLW9yaWdp
biBzdGF0aWMgaW1wb3J0cworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVs
ZSBhbmQgY3JlZGVudGlhbHM9c2FtZS1vcmlnaW4gc2hvdWxkIHNlbmQgdGhlIGNyZWRlbnRpYWxz
IGZvciBzYW1lLW9yaWdpbiBzdGF0aWMgaW1wb3J0cworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkg
d2l0aCB0eXBlPW1vZHVsZSBhbmQgY3JlZGVudGlhbHM9aW5jbHVkZSBzaG91bGQgc2VuZCB0aGUg
Y3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2luIHN0YXRpYyBpbXBvcnRzCitQQVNTIG5ldyBTaGFy
ZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBkZWZhdWx0IGNyZWRlbnRpYWxzIG9wdGlv
biBzaG91bGQgYmVoYXZlIGFzIGNyZWRlbnRpYWxzPXNhbWUtb3JpZ2luIGFuZCBub3Qgc2VuZCB0
aGUgY3JlZGVudGlhbHMgZm9yIGNyb3NzLW9yaWdpbiBzdGF0aWMgaW1wb3J0cworUEFTUyBuZXcg
U2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQgY3JlZGVudGlhbHM9b21pdCBzaG91
bGQgbm90IHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gc3RhdGljIGltcG9y
dHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRp
YWxzPXNhbWUtb3JpZ2luIHNob3VsZCBub3Qgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIGNyb3Nz
LW9yaWdpbiBzdGF0aWMgaW1wb3J0cworRkFJTCBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBl
PW1vZHVsZSBhbmQgY3JlZGVudGlhbHM9aW5jbHVkZSBzaG91bGQgc2VuZCB0aGUgY3JlZGVudGlh
bHMgZm9yIGNyb3NzLW9yaWdpbiBzdGF0aWMgaW1wb3J0cyBhc3NlcnRfZXF1YWxzOiBleHBlY3Rl
ZCAiMSIgYnV0IGdvdCAiIgorUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVs
ZSBhbmQgZGVmYXVsdCBjcmVkZW50aWFscyBvcHRpb24gc2hvdWxkIGJlaGF2ZSBhcyBjcmVkZW50
aWFscz1zYW1lLW9yaWdpbiBhbmQgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2lu
IGR5bmFtaWMgaW1wb3J0cworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVs
ZSBhbmQgY3JlZGVudGlhbHM9b21pdCBzaG91bGQgbm90IHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZv
ciBzYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdp
dGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPXNhbWUtb3JpZ2luIHNob3VsZCBzZW5kIHRo
ZSBjcmVkZW50aWFscyBmb3Igc2FtZS1vcmlnaW4gZHluYW1pYyBpbXBvcnRzCitQQVNTIG5ldyBT
aGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBjcmVkZW50aWFscz1pbmNsdWRlIHNo
b3VsZCBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3Igc2FtZS1vcmlnaW4gZHluYW1pYyBpbXBvcnRz
CitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBkZWZhdWx0IGNy
ZWRlbnRpYWxzIG9wdGlvbiBzaG91bGQgYmVoYXZlIGFzIGNyZWRlbnRpYWxzPXNhbWUtb3JpZ2lu
IGFuZCBub3Qgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIGNyb3NzLW9yaWdpbiBkeW5hbWljIGlt
cG9ydHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRl
bnRpYWxzPW9taXQgc2hvdWxkIG5vdCBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3IgY3Jvc3Mtb3Jp
Z2luIGR5bmFtaWMgaW1wb3J0cworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1v
ZHVsZSBhbmQgY3JlZGVudGlhbHM9c2FtZS1vcmlnaW4gc2hvdWxkIG5vdCBzZW5kIHRoZSBjcmVk
ZW50aWFscyBmb3IgY3Jvc3Mtb3JpZ2luIGR5bmFtaWMgaW1wb3J0cworRkFJTCBuZXcgU2hhcmVk
V29ya2VyKCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQgY3JlZGVudGlhbHM9aW5jbHVkZSBzaG91bGQg
c2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIGNyb3NzLW9yaWdpbiBkeW5hbWljIGltcG9ydHMgYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjEiIGJ1dCBnb3QgIiIKK1BBU1MgbmV3IFNoYXJlZFdvcmtl
cigpIHdpdGggdHlwZT1jbGFzc2ljIHNob3VsZCBhbHdheXMgc2VuZCB0aGUgY3JlZGVudGlhbHMg
cmVnYXJkbGVzcyBvZiB0aGUgY3JlZGVudGlhbHMgb3B0aW9uIChkZWZhdWx0KS4KK1BBU1MgbmV3
IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1jbGFzc2ljIHNob3VsZCBhbHdheXMgc2VuZCB0aGUg
Y3JlZGVudGlhbHMgcmVnYXJkbGVzcyBvZiB0aGUgY3JlZGVudGlhbHMgb3B0aW9uIChvbWl0KS4K
K1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1jbGFzc2ljIHNob3VsZCBhbHdheXMg
c2VuZCB0aGUgY3JlZGVudGlhbHMgcmVnYXJkbGVzcyBvZiB0aGUgY3JlZGVudGlhbHMgb3B0aW9u
IChzYW1lLW9yaWdpbikuCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9Y2xhc3Np
YyBzaG91bGQgYWx3YXlzIHNlbmQgdGhlIGNyZWRlbnRpYWxzIHJlZ2FyZGxlc3Mgb2YgdGhlIGNy
ZWRlbnRpYWxzIG9wdGlvbiAoaW5jbHVkZSkuCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRo
IHR5cGU9Y2xhc3NpYyBzaG91bGQgYWx3YXlzIHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBzYW1l
LW9yaWdpbiBkeW5hbWljIGltcG9ydHMgcmVnYXJkbGVzcyBvZiB0aGUgY3JlZGVudGlhbHMgb3B0
aW9uIChkZWZhdWx0KS4KK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1jbGFzc2lj
IHNob3VsZCBhbHdheXMgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2luIGR5bmFt
aWMgaW1wb3J0cyByZWdhcmRsZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKG9taXQpLgor
UEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPWNsYXNzaWMgc2hvdWxkIGFsd2F5cyBz
ZW5kIHRoZSBjcmVkZW50aWFscyBmb3Igc2FtZS1vcmlnaW4gZHluYW1pYyBpbXBvcnRzIHJlZ2Fy
ZGxlc3Mgb2YgdGhlIGNyZWRlbnRpYWxzIG9wdGlvbiAoc2FtZS1vcmlnaW4pLgorUEFTUyBuZXcg
U2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPWNsYXNzaWMgc2hvdWxkIGFsd2F5cyBzZW5kIHRoZSBj
cmVkZW50aWFscyBmb3Igc2FtZS1vcmlnaW4gZHluYW1pYyBpbXBvcnRzIHJlZ2FyZGxlc3Mgb2Yg
dGhlIGNyZWRlbnRpYWxzIG9wdGlvbiAoaW5jbHVkZSkuCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIo
KSB3aXRoIHR5cGU9Y2xhc3NpYyBzaG91bGQgbmV2ZXIgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9y
IGNyb3NzLW9yaWdpbiBkeW5hbWljIGltcG9ydHMgcmVnYXJkbGVzcyBvZiB0aGUgY3JlZGVudGlh
bHMgb3B0aW9uIChkZWZhdWx0KS4KK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1j
bGFzc2ljIHNob3VsZCBuZXZlciBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3IgY3Jvc3Mtb3JpZ2lu
IGR5bmFtaWMgaW1wb3J0cyByZWdhcmRsZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKG9t
aXQpLgorUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPWNsYXNzaWMgc2hvdWxkIG5l
dmVyIHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gZHluYW1pYyBpbXBvcnRz
IHJlZ2FyZGxlc3Mgb2YgdGhlIGNyZWRlbnRpYWxzIG9wdGlvbiAoc2FtZS1vcmlnaW4pLgorUEFT
UyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPWNsYXNzaWMgc2hvdWxkIG5ldmVyIHNlbmQg
dGhlIGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gZHluYW1pYyBpbXBvcnRzIHJlZ2FyZGxl
c3Mgb2YgdGhlIGNyZWRlbnRpYWxzIG9wdGlvbiAoaW5jbHVkZSkuCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmVlNTNmMmZm
MmQ1ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFy
ZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKworRkFJTCBSZWZl
cmVyIGhlYWRlciBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiUmVmZXJlcjogaHR0cDovL2xvY2Fs
aG9zdDo4ODAwL3hoci9yZXNvdXJjZXMvd29ya2VyeGhyLW9yaWdpbi1yZWZlcnJlci5qc1xuIiBi
dXQgZ290ICJSZWZlcmVyOiBodHRwOi8vbG9jYWxob3N0Ojg4MDAveGhyL3Jlc291cmNlcy9yZWRp
cmVjdC5weT9sb2NhdGlvbj13b3JrZXJ4aHItb3JpZ2luLXJlZmVycmVyLmpzXG4iCitQQVNTIE9y
aWdpbiBoZWFkZXIKK1BBU1MgUmVxdWVzdCBVUkwgdGVzdAorCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRl
eCA2NTM5MzdhY2U2NWMuLmQzM2ZjNGFhNGQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xOTU3
LDkgKzE5NTcsMTIgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAg
IHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKICAgICB3b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmgKICAgICB3b3JrZXJzL1dvcmtlckxvYWRlclByb3h5LmgKKyAgICB3b3JrZXJzL1dv
cmtlck9iamVjdFByb3h5LmgKKyAgICB3b3JrZXJzL1dvcmtlck9wdGlvbnMuaAogICAgIHdvcmtl
cnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaAogICAgIHdvcmtlcnMvV29ya2VyT3JXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlci5oCiAgICAgd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQu
aAorICAgIHdvcmtlcnMvV29ya2VyUmVwb3J0aW5nUHJveHkuaAogICAgIHdvcmtlcnMvV29ya2Vy
UnVuTG9vcC5oCiAgICAgd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAogICAgIHdvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50LmgKQEAgLTIwMDMsOSArMjAwNiwxMiBAQCBzZXQoV2Vi
Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlcldvcmtlci5oCiAKICAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJJZGVu
dGlmaWVyLmgKLSAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmgKKyAgICB3
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaAogICAgIHdvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaAorICAgIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIuaAogICAgIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3Zp
ZGVyLmgKKworICAgIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXIuaAogICAgIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkLmgK
ICAgICB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmgKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dAppbmRleCBiM2Y1ZTBiNzg0MTcuLjVlZTUwMGNiNmQxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKQEAgLTI3ODUsMTAgKzI3ODUsMTAgQEAgd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
V29ya2VyLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNwcAogd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCi13b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJNYW5hZ2VyLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bi5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmNwcAogd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcAord29ya2Vycy9zaGFyZWQvY29udGV4
dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQv
U2hhcmVkV29ya2VyVGhyZWFkLmNwcAogd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3Jr
ZXJUaHJlYWRQcm94eS5jcHAKIHdvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGM1ZjQ0ZWYwNGE3MC4uNTZhNzE1OWRiYWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MDMsNyArOTAzLDcgQEAKIAkJ
MkU0MzQ2NEIwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjM5MEY1NDZB
ODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZVByb3h5LmggKi87IH07CiAJCTJFNDM0NjRE
MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2M0IwRjU0NkE4MjAwQjBGMUJBIC8qIFdv
cmtlckxvY2F0aW9uLmggKi87IH07CiAJCTJFNDM0NjUwMEY1NDZBODIwMEIwRjFCQSAvKiBXb3Jr
ZXJNZXNzYWdpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkU0MzQ2M0UwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck1lc3NhZ2luZ1Byb3h5
LmggKi87IH07Ci0JCTJFNDM0NjUxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2
M0YwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5LmggKi87IH07CisJCTJFNDM0
NjUxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2M0YwRjU0NkE4MjAwQjBGMUJB
IC8qIFdvcmtlck9iamVjdFByb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2NTMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclJ1bkxv
b3AuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0
NjQxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJSdW5Mb29wLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2NTUwRjU0NkE4MjAwQjBGMUJB
IC8qIFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkU0MzQ2NDMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFNzU4NDFFMTI3
NzlBREEwMDYyNjI4QiAvKiBGaWxlUmVhZGVyTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTc1ODQxQjEyNzc5QURBMDA2MjYyOEIgLyogRmls
ZVJlYWRlckxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0xMTI1LDcgKzExMjUsNyBAQAogCQk0MTZBMDZBMTIzQ0NBRDAzMDAzNDcxMDkg
LyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkEwNjk2MjNDQ0FBOUYwMDM0NzEwOSAvKiBBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQxNkQ3NUEyMjBDNjUxQTUwMEQwMkQyQyAvKiBOZXR3b3Jr
TG9hZEluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTZENzU5RjIwQzY0NDEzMDBEMDJEMkMgLyogTmV0d29ya0xvYWRJbmZvcm1hdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQx
NkUwQjNBMjA5QkMzQ0IwMDRBOTVEOSAvKiBGZXRjaElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkUwQjM3MjA5QkMzQzIwMDRBOTVE
OSAvKiBGZXRjaElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQk0MTZFMjlBNjEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0
aW5nUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxNkUyOUE1MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovOyB9
OworCQk0MTZFMjlBNjEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkUyOUE1MTAy
RkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU4MUJCRDEyREYwMDBBM0Y2
NCAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RDkgLyog
UmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU4MUJCRDEyREYwMDBBM0Y2NSAvKiBK
U0RPTUJpbmRpbmdJbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NERBIC8qIEpTRE9NQmlu
ZGluZ0ludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgxQkJEMTJERjAwMEEzRjc0IC8qIFRyYW5zZm9ybVN0
cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RUEgLyogVHJhbnNmb3JtU3RyZWFt
SW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTM0NywxNCArMTM0NywxNiBAQAogCQk0NjdBNjhENzI3NUVBOTkxMDA5
QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdBNjhENDI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29y
a2VyVGhyZWFkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDY3QTY4RDgyNzVFQTk5NTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3QTY4
RDUyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oICovOyB9Owog
CQk0NjdBNjhEOTI3NUVBOTk4MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0E2OEQ2Mjc1
RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQ2N0E2OERBMjc1RUE5OUMwMDlC
MzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdBNjhEMjI3NUVBOThBMDA5QjMxQzUgLyogU2hhcmVkV29y
a2VyTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQ2ODJEMjAwMUY3OTc4MzAwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MkQx
RkYxRjc5NzgyMzAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4MzQ0RTAxRURERkFB
QTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3Qu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0Njgz
REY0MDI3NjdERjk4MDA3RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4M0RGM0UyNzY3
REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaCAqLzsgfTsKIAkJ
NDY4M0RGNDEyNzY3RTkxQTAwN0QwMEM4IC8qIFNoYWRvd1JlYWxtR2xvYmFsU2NvcGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODNERjNCMjc2N0RG
MjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4OEVFM0MyNkREMjYxMDAwMkFGNUM0
IC8qIENyb3NzT3JpZ2luTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDY4OEVFM0EyNkREMjYwQzAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2OTQz
REM5Mjc2M0Y4MTcwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0M0RDNzI3NjNG
ODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2OTg1RjIzMjdBNEE2QUQw
MDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTg1RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3Jr
ZXJLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0NjlDQ0NGRTI2OUQwMjFDMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5Q0NDRkMyNjlEMDIwMjAw
NkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjlENzdCODI3MDE2MjUxMDAxNDJGQTYgLyogTmF2aWdh
dGlvblJlcXVlc3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY5RDc3QjYyNzAxNjI1MDAwMTQyRkE2IC8qIE5hdmlnYXRpb25SZXF1ZXN0ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NkE3OEIz
NDI3OTlCRDcxMDAxMTU0RkUgLyogV29ya2VyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxQjFEMjYyNkYxOEE0QjAwODgyREEyIC8qIFdv
cmtlck9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0NkFBQUEzRDI1RDM2MzIwMDBCQUY0MkYgLyogQXVkaW9GaWxlUmVhZGVyQ29jb2Eu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QUFBQTNB
MjVEMzYzMTQwMEJBRjQyRiAvKiBBdWRpb0ZpbGVSZWFkZXJDb2NvYS5oICovOyB9OwogCQk0NkI2
M0Y2QzFDNkU4RDE5MDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjNGNkIxQzZFOENERjAwMkU5
MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI2NTBERDIyOTYyNjI3MDBGRDhBQTQgLyogUGFnZUlk
ZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2QjY1MERCMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzc1LDYgKzEzNzcsNyBA
QAogCQk0NkM2OTZDQzFFNzIwNUZDMDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM2OTZDQTFFNzIwNUU0MDA1
OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgKi87IH07CiAJCTQ2QzgzRUZFMUE5QkJFMjkwMEE3OUE0
MSAvKiBHZW9Ob3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZDODNFRkMxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZDQTlDNDQxRjk3
QkJFOTAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDQTlDNDExRjk3QkJFNzAwNENGQzNBIC8qIFZpc2li
aWxpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTQ2Q0Y1MDRBMjdBQjFFQTQwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZD
RjUwNDgyN0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZEMDAwNDAy
NkEwRkVCMzAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkQwMDAzRTI2QTBGRTZGMDBEMUJGMUUgLyogU3VibWl0
RXZlbnQuaCAqLzsgfTsKIAkJNDZEQTRBMDIyN0FCMDM5MzAwRTM3NUE4IC8qIFRyYW5zZmVycmVk
TWVzc2FnZVBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2REE0QTAwMjdBQjAzOEQwMEUzNzVBOCAvKiBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZEQkI2
NTAxQUI4Qzk2RjAwRDlBODEzIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REJCNjRFMUFCOEM5NkYwMEQ5QTgxMyAv
KiBQb3dlck9ic2VydmVyTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTkyNDUsOCArOTI0OCw2IEBACiAJCTQ2N0E2OENGMjc1RUE5ODkwMDlC
MzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2N0E2OEQwMjc1RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDY3QTY4RDEyNzVFQTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlw
dExvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NjdBNjhEMjI3NUVBOThBMDA5QjMx
QzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJN
YW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2N0E2OEQzMjc1RUE5OEIw
MDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNo
YXJlZFdvcmtlck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdB
NjhENDI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNoYXJlZFdvcmtlclRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjdBNjhENTI3NUVBOThDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NjdBNjhENjI3NUVBOThDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkyNjIsNiArOTI2Myw4IEBACiAJCTQ2ODNERjNF
Mjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OEVFM0EyNkREMjYwQzAwMkFGNUM0
IC8qIENyb3NzT3JpZ2luTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcm9zc09yaWdpbk1vZGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4QjhCREUyNUNDODQ5MzAwRjY3ODIyIC8q
IEpTQmFzZUF1ZGlvQ29udGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Jhc2VB
dWRpb0NvbnRleHRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0
M0RDNzI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQ2OTg1RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3Jr
ZXJLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyS2V5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OUNDQ0ZBMjY5RDAyMDIwMDZFMDMx
NCAvKiBCcm9hZGNhc3RDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJyb2FkY2FzdENo
YW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlDQ0NGQzI2OUQwMjAy
MDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCcm9hZGNhc3RD
aGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OUNDQ0ZEMjY5RDAyMDMw
MDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBCcm9hZGNhc3RDaGFubmVsLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkzMDIsNiArOTMwNSw4IEBACiAJCTQ2
QzgzRUZDMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHZW9Ob3RpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NkNBOUM0MTFGOTdCQkU3MDA0Q0ZDM0EgLyogVmlzaWJpbGl0eVN0YXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpc2liaWxpdHlTdGF0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NkNBOUM0MjFGOTdCQkU3MDA0Q0ZDM0EgLyogVmlzaWJpbGl0
eVN0YXRlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBWaXNpYmlsaXR5U3RhdGUuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkNGNTA0ODI3QUIxRUExMDA3MERCQzggLyog
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZDRjUwNDky
N0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDZEMDAwM0MyNkEwRkU2RjAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN1Ym1pdEV2ZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZEMDAwM0UyNkEwRkU2RjAwRDFCRjFF
IC8qIFN1Ym1pdEV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1Ym1p
dEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RDAwMDNGMjZBMEZFNzAw
MEQxQkYxRSAvKiBTdWJtaXRFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU3VibWl0
RXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE1NjgsNiArMjE1NzMs
OCBAQAogCQk0NjQ3Q0U2MTI3QUFFMURBMDA5Q0JENDggLyogY29udGV4dCAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDZDRjUwNDkyN0FCMUVBMTAwNzBE
QkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcCAqLywKKwkJCQk0NkNGNTA0ODI3
QUIxRUExMDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCAqLywKIAkJCQk0
NjdBNjhEMDI3NUVBOTg5MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmNwcCAqLywKIAkJ
CQk0NjdBNjhENDI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggKi8sCiAJ
CQkJNDY3QTY4Q0YyNzVFQTk4OTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmNw
cCAqLywKQEAgLTIxNTg3LDEwICsyMTU5NCwxMCBAQAogCQkJCTQ2Njk0Q0UxMjc1OTQ0OEMwMEUz
MTUwRSAvKiBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oICovLAogCQkJCTQ2Njk0Q0UwMjc1OTQ0
OEMwMEUzMTUwRSAvKiBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5pZGwgKi8sCiAJCQkJNDZFQzQ0
NDgyN0FCMzM3RjAwRkZDRDk2IC8qIFNoYXJlZFdvcmtlcklkZW50aWZpZXIuaCAqLywKLQkJCQk0
NjdBNjhEMzI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5jcHAgKi8sCi0J
CQkJNDY3QTY4RDIyNzVFQTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCAqLywK
KwkJCQk0Njk4NUYyMjI3QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggKi8sCiAJ
CQkJNDY2OEEwQjMyN0FCNjAwQjAwQzcyMEJDIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b24uY3BwICovLAogCQkJCTQ2NjhBMEIxMjdBQjYwMEIwMEM3MjBCQyAvKiBTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uLmggKi8sCisJCQkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAqLywKIAkJCQk0NjY4QTBCNDI3QUI2MDBDMDBD
NzIwQkMgLyogU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwICovLAogCQkJCTQ2NjhBMEI1MjdBQjYw
MEMwMEM3MjBCQyAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5oICovLAogCQkJCTQ2N0E2OEQxMjc1
RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwICovLApAQCAtMzcy
MDQsOSArMzcyMTEsMTEgQEAKIAkJCQk4MzRERkFEMDFGN0RBRTVEMDBDMjcyNUIgLyogU2hhcmVk
U3RyaW5nSGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFQTMwOTlFQjc4QzAwNTZFNTgx
IC8qIFNoYXJlZFRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURDMDRGRTI3QTgzQzkzMDA4
Q0Y5NjggLyogU2hhcmVkVmlkZW9GcmFtZUluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2Q0Y1
MDRBMjdBQjFFQTQwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDZFQzQ0NEEyN0FCMzM4OTAwRkZDRDk2IC8qIFNoYXJlZFdvcmtlcklk
ZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ2N0E2OERBMjc1RUE5OUMwMDlCMzFDNSAv
KiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0Njk4NUYyMzI3QTRB
NkFEMDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjY4
QTBCNjI3QUI2MDFCMDBDNzIwQkMgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDY5NDNEQzkyNzYzRjgxNzAwNEI2MTBFIC8qIFNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2NjhBMEI3MjdBQjYwMjEw
MEM3MjBCQyAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY3
QTY4RDgyNzVFQTk5NTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDY3QTY4RDcyNzVFQTk5MTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRo
cmVhZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zODA2Nyw2ICszODA3Niw3IEBACiAJCQkJRTEyNzFB
MEIwRUVFQzc3QTAwRjYxMjEzIC8qIFdvcmtlck5hdmlnYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTVDQjA1MjUxRkI1MUYzQTAwMDg5Qjk3IC8qIFdvcmtlck5ldHdvcmtBZ2VudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMkU0MzQ2NTEwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFBy
b3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkE3OEIzNDI3OTlCRDcxMDAxMTU0RkUgLyogV29y
a2VyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNENkFBRTYyNTI0RUUxQzAwNDI4QjRC
IC8qIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzlB
MDk1RDI1MjRGMzdGMDBFRUYzMjggLyogV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODNGNkFFQkYyNTI3QkIwQzAwMzRCQ0QzIC8qIFdvcmtlck9y
V29ya2xldFRocmVhZC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgK
aW5kZXggNWZlZjQyZWUwNmVjLi5mYTdkMjMwMmVjMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dn
aW5nLmgKQEAgLTEyNyw2ICsxMjcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgTShXZWJH
TCkgXAogICAgIE0oV2ViUlRDKSBcCiAgICAgTShXZWJSVENTdGF0cykgXAorICAgIE0oV29ya2Vy
KSBcCiAgICAgTShYUikgXAogICAgIE0oV2hlZWxFdmVudFRlc3RNb25pdG9yKSBcCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCmluZGV4IGI0ODc0
N2EyYzA5OS4uNDZkYzQ1NGRmZGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTUgKzI2LDE3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCiAKKyNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIK
ICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZUNoYW5uZWwuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUg
IlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUg
IlNoYXJlZFdvcmtlck1hbmFnZXIuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyUHJvdmlkZXIuaCIKLSNpbmNsdWRlICJT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlck9wdGlvbnMuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtNDMsMTIgKzQ1LDI3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFNoYXJlZFdvcmtlcik7CiAKKyNk
ZWZpbmUgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hh
cmVkV29ya2VyLCAiJXAgLSBbaWRlbnRpZmllcj0le3B1YmxpY31zXSBTaGFyZWRXb3JrZXI6OiIg
Zm10LCB0aGlzLCBtX2lkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAjI19fVkFf
QVJHU19fKQorI2RlZmluZSBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HX0VSUk9SKGZtdCwgLi4u
KSBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICIlcCAtIFtpZGVudGlmaWVyPSV7cHVi
bGljfXNdIFNoYXJlZFdvcmtlcjo6IiBmbXQsIHRoaXMsIG1faWRlbnRpZmllci50b1N0cmluZygp
LnV0ZjgoKS5kYXRhKCksICMjX19WQV9BUkdTX18pCisKK3N0YXRpYyBIYXNoTWFwPFNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIsIFNoYXJlZFdvcmtlcio+JiBhbGxTaGFyZWRXb3JrZXJzKCkK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxIYXNoTWFwPFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFNoYXJlZFdvcmtlcio+PiBh
bGxTaGFyZWRXb3JrZXJzOworICAgIHJldHVybiBhbGxTaGFyZWRXb3JrZXJzOworfQorCitTaGFy
ZWRXb3JrZXIqIFNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIoU2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBhbGxTaGFyZWRXb3JrZXJzKCku
Z2V0KGlkZW50aWZpZXIpOworfQorCiBzdGF0aWMgaW5saW5lIFNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24qIG1haW5UaHJlYWRDb25uZWN0aW9uKCkKIHsKICAgICByZXR1cm4gU2hhcmVkV29y
a2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKIH0KIAot
RXhjZXB0aW9uT3I8UmVmPFNoYXJlZFdvcmtlcj4+IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKERvY3Vt
ZW50JiBkb2N1bWVudCwgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzLCBTdHJpbmcmJiBz
Y3JpcHRVUkxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2Vy
T3B0aW9ucz4+JiYgbWF5YmVPcHRpb25zKQorRXhjZXB0aW9uT3I8UmVmPFNoYXJlZFdvcmtlcj4+
IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nJiYgc2NyaXB0
VVJMU3RyaW5nLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxTdHJpbmcsIFdvcmtlck9wdGlv
bnM+PiYmIG1heWJlT3B0aW9ucykKIHsKICAgICBpZiAoIW1haW5UaHJlYWRDb25uZWN0aW9uKCkp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIlNoYXJlZCB3
b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkIiB9OwpAQCAtNzcsMjYgKzk0LDM0IEBAIEV4Y2VwdGlv
bk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBTaGFyZWRXb3JrZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9j
dW1lbnQsIEpTQzo6UnVuCiAgICAgYXV0byBjaGFubmVsID0gTWVzc2FnZUNoYW5uZWw6OmNyZWF0
ZShkb2N1bWVudCk7CiAgICAgYXV0byB0cmFuc2ZlcnJlZFBvcnQgPSBjaGFubmVsLT5wb3J0Migp
LmRpc2VudGFuZ2xlKCk7CiAKLSAgICBhdXRvIHNoYXJlZFdvcmtlciA9IGFkb3B0UmVmKCpuZXcg
U2hhcmVkV29ya2VyKGRvY3VtZW50LCBjaGFubmVsLT5wb3J0MSgpLCBydW50aW1lRmxhZ3MpKTsK
KyAgICBhdXRvIHNoYXJlZFdvcmtlciA9IGFkb3B0UmVmKCpuZXcgU2hhcmVkV29ya2VyKGRvY3Vt
ZW50LCB1cmwsIGNoYW5uZWwtPnBvcnQxKCkpKTsKICAgICBzaGFyZWRXb3JrZXItPnN1c3BlbmRJ
Zk5lZWRlZCgpOwogCi0gICAgbWFpblRocmVhZENvbm5lY3Rpb24oKS0+cmVxdWVzdFNoYXJlZFdv
cmtlcih1cmwsIHNoYXJlZFdvcmtlci5nZXQoKSwgV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBX
VEZNb3ZlKG9wdGlvbnMpKTsKKyAgICBDbGllbnRPcmlnaW4gY2xpZW50T3JpZ2luIHsgZG9jdW1l
bnQudG9wRG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSwgZG9jdW1lbnQuc2VjdXJp
dHlPcmlnaW4oKS5kYXRhKCkgfTsKKyAgICBtYWluVGhyZWFkQ29ubmVjdGlvbigpLT5yZXF1ZXN0
U2hhcmVkV29ya2VyKGNsaWVudE9yaWdpbiwgc2hhcmVkV29ya2VyLT5pZGVudGlmaWVyKCksIHVy
bCwgV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBvcHRpb25zKTsKICAgICByZXR1cm4gc2hhcmVk
V29ya2VyOwogfQogCi1TaGFyZWRXb3JrZXI6OlNoYXJlZFdvcmtlcihEb2N1bWVudCYgZG9jdW1l
bnQsIFJlZjxNZXNzYWdlUG9ydD4mJiBwb3J0LCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxh
Z3MpCitTaGFyZWRXb3JrZXI6OlNoYXJlZFdvcmtlcihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0
IFVSTCYgdXJsLCBSZWY8TWVzc2FnZVBvcnQ+JiYgcG9ydCkKICAgICA6IEFjdGl2ZURPTU9iamVj
dCgmZG9jdW1lbnQpCisgICAgLCBtX2lkZW50aWZpZXIoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllcjo6Z2VuZXJhdGUoKSkKICAgICAsIG1fcG9ydChXVEZNb3ZlKHBvcnQpKQogICAgICwgbV9p
ZGVudGlmaWVyRm9ySW5zcGVjdG9yKCJTaGFyZWRXb3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRp
ZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCkpCi0gICAgLCBtX3J1bnRpbWVGbGFncyhy
dW50aW1lRmxhZ3MpCi0gICAgLCBtX2NyZWF0aW9uVGltZShNb25vdG9uaWNUaW1lOjpub3coKSkK
LSAgICAsIG1fcHJveHkoU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZSgqdGhpcykpCiB7
CisgICAgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRygiU2hhcmVkV29ya2VyOiIpOworICAgIGFs
bFNoYXJlZFdvcmtlcnMoKS5hZGQobV9pZGVudGlmaWVyLCB0aGlzKTsKKworICAgIC8vIElmIHRo
ZSBzaGFyZWQgd29ya2VyIFVSTCBpcyBhIGJsb2IgVVJMLCBtYWtlIHN1cmUgdG8ga2VlcCBpdCBh
bGl2ZSB1bnRpbCB0aGUgd29ya2VyIGhhcyBmaW5pc2hlZCBsb2FkaW5nLgorICAgIGlmICh1cmwu
cHJvdG9jb2xJc0Jsb2IoKSkKKyAgICAgICAgbV9ibG9iVVJMRXh0ZW5zaW9uID0gdXJsOwogfQog
CiBTaGFyZWRXb3JrZXI6On5TaGFyZWRXb3JrZXIoKQogewotICAgIG1fcHJveHkud29ya2VyT2Jq
ZWN0RGVzdHJveWVkKCk7CisgICAgQVNTRVJUKGFsbFNoYXJlZFdvcmtlcnMoKS5nZXQobV9pZGVu
dGlmaWVyKSA9PSB0aGlzKTsKKyAgICBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HKCJ+U2hhcmVk
V29ya2VyOiIpOworICAgIGFsbFNoYXJlZFdvcmtlcnMoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsK
KyAgICBBU1NFUlQoIW1faXNBY3RpdmUpOwogfQogCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBT
aGFyZWRXb3JrZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdApAQCAtMTE0LDE5ICsx
MzksMjkgQEAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgU2hhcmVkV29ya2VyOjpldmVudFRhcmdldElu
dGVyZmFjZSgpIGNvbnN0CiAgICAgcmV0dXJuIFNoYXJlZFdvcmtlckV2ZW50VGFyZ2V0SW50ZXJm
YWNlVHlwZTsKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXI6OnN0b3AoKQordm9pZCBTaGFyZWRXb3Jr
ZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAg
dGVybWluYXRlKCk7CisgICAgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRygiZmluaXNoTG9hZGlu
Zzogc3VjY2Vzcz0lZCIsIGVycm9yLmlzTnVsbCgpKTsKKyAgICBpZiAoIWVycm9yLmlzTnVsbCgp
KSB7CisgICAgICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6
RE9NTWFuaXB1bGF0aW9uLCBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBF
dmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7CisgICAgICAg
IG1faXNBY3RpdmUgPSBmYWxzZTsKKyAgICB9CisgICAgbV9ibG9iVVJMRXh0ZW5zaW9uLmNsZWFy
KCk7CiB9CiAKIGJvb2wgU2hhcmVkV29ya2VyOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9wcm94eS5oYXNQZW5kaW5nQWN0aXZpdHkoKSB8fCBtX2lz
TG9hZGluZzsKKyAgICByZXR1cm4gbV9pc0FjdGl2ZTsKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXI6
OnRlcm1pbmF0ZSgpCit2b2lkIFNoYXJlZFdvcmtlcjo6c3RvcCgpCiB7Ci0gICAgbV9wcm94eS50
ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpOworICAgIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9M
T0coInN0b3A6Iik7CisgICAgbV9pc0FjdGl2ZSA9IGZhbHNlOworICAgIG1haW5UaHJlYWRDb25u
ZWN0aW9uKCktPnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KG1faWRlbnRpZmllcik7CiB9
CiAKKyN1bmRlZiBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HCisjdW5kZWYgU0hBUkVEX1dPUktF
Ul9SRUxFQVNFX0xPR19FUlJPUgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5oCmluZGV4IGU1NWIxY2Y1NTEzZC4u
YmU1Nzc4MzVhMDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9T
aGFyZWRXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNywzOSArMjcsMzYgQEAKIAogI2luY2x1ZGUgIkFic3RyYWN0V29ya2VyLmgiCiAj
aW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUnVu
dGltZUZsYWdzLmg+CisjaW5jbHVkZSAiQmxvYlVSTC5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lc3NhZ2VQb3J0OwotY2xhc3MgU2hhcmVkV29y
a2VyVGhyZWFkUHJveHk7CitjbGFzcyBSZXNvdXJjZUVycm9yOwogCiBzdHJ1Y3QgV29ya2VyT3B0
aW9uczsKIAogY2xhc3MgU2hhcmVkV29ya2VyIGZpbmFsIDogcHVibGljIEFic3RyYWN0V29ya2Vy
LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNo
YXJlZFdvcmtlcik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxTaGFyZWRX
b3JrZXI+PiBjcmVhdGUoRG9jdW1lbnQmLCBKU0M6OlJ1bnRpbWVGbGFncywgU3RyaW5nJiYgc2Ny
aXB0VVJMLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxTdHJpbmcsIFdvcmtlck9wdGlvbnM+
PiYmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFNoYXJlZFdvcmtlcj4+IGNyZWF0ZShE
b2N1bWVudCYsIFN0cmluZyYmIHNjcmlwdFVSTCwgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8
U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4mJik7CiAgICAgflNoYXJlZFdvcmtlcigpOwogCisgICAg
c3RhdGljIFNoYXJlZFdvcmtlciogZnJvbUlkZW50aWZpZXIoU2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllcik7CisgICAgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBpZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgTWVzc2FnZVBvcnQmIHBvcnQoKSBj
b25zdCB7IHJldHVybiBtX3BvcnQuZ2V0KCk7IH0KLSAgICBKU0M6OlJ1bnRpbWVGbGFncyBydW50
aW1lRmxhZ3MoKSB7IHJldHVybiBtX3J1bnRpbWVGbGFnczsgfQogCiAgICAgY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyRm9ySW5zcGVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyRm9y
SW5zcGVjdG9yOyB9Ci0gICAgTW9ub3RvbmljVGltZSBjcmVhdGlvblRpbWUoKSBjb25zdCB7IHJl
dHVybiBtX2NyZWF0aW9uVGltZTsgfQogCi0gICAgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkmIHBy
b3h5KCkgeyByZXR1cm4gbV9wcm94eTsgfQotCi0gICAgdm9pZCBzZXRJc0xvYWRpbmcoYm9vbCBp
c0xvYWRpbmcpIHsgbV9pc0xvYWRpbmcgPSBpc0xvYWRpbmc7IH0KKyAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQuCiAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0
IGZpbmFsOwogCiBwcml2YXRlOgotICAgIFNoYXJlZFdvcmtlcihEb2N1bWVudCYsIFJlZjxNZXNz
YWdlUG9ydD4mJiwgSlNDOjpSdW50aW1lRmxhZ3MpOwotCi0gICAgdm9pZCB0ZXJtaW5hdGUoKTsK
KyAgICBTaGFyZWRXb3JrZXIoRG9jdW1lbnQmLCBjb25zdCBVUkwmLCBSZWY8TWVzc2FnZVBvcnQ+
JiYpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQuCiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZl
bnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbDsKQEAgLTcwLDEyICs2NywxMSBAQCBwcml2
YXRlOgogICAgIGJvb2wgdmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwog
CiAKKyAgICBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBS
ZWY8TWVzc2FnZVBvcnQ+IG1fcG9ydDsKICAgICBTdHJpbmcgbV9pZGVudGlmaWVyRm9ySW5zcGVj
dG9yOwotICAgIEpTQzo6UnVudGltZUZsYWdzIG1fcnVudGltZUZsYWdzOwotICAgIE1vbm90b25p
Y1RpbWUgbV9jcmVhdGlvblRpbWU7Ci0gICAgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkmIG1fcHJv
eHk7IC8vIFRoZSBwcm94eSBvdXRsaXZlcyB0aGUgd29ya2VyIHRvIHBlcmZvcm0gdGhyZWFkIHNo
dXRkb3duLgotICAgIGJvb2wgbV9pc0xvYWRpbmcgeyBmYWxzZSB9OworICAgIEJsb2JVUkxIYW5k
bGUgbV9ibG9iVVJMRXh0ZW5zaW9uOworICAgIGJvb2wgbV9pc0FjdGl2ZSB7IHRydWUgfTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXIuaWRsCmluZGV4IGIxNzFjOWVkZjgxYi4uNGM3NDE1NGQ4MjA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5pZGwKQEAg
LTI4LDcgKzI4LDcgQEAKICAgICBFeHBvc2VkPVdpbmRvdwogXQogaW50ZXJmYWNlIFNoYXJlZFdv
cmtlciA6IEV2ZW50VGFyZ2V0IHsKLSAgW0NhbGxXaXRoPURvY3VtZW50JlJ1bnRpbWVGbGFnc10g
Y29uc3RydWN0b3IoVVNWU3RyaW5nIHNjcmlwdFVSTCwgb3B0aW9uYWwgKERPTVN0cmluZyBvciBX
b3JrZXJPcHRpb25zKSBvcHRpb25zKTsKKyAgW0NhbGxXaXRoPURvY3VtZW50XSBjb25zdHJ1Y3Rv
cihVU1ZTdHJpbmcgc2NyaXB0VVJMLCBvcHRpb25hbCAoRE9NU3RyaW5nIG9yIFdvcmtlck9wdGlv
bnMpIG9wdGlvbnMpOwogCiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZXNzYWdlUG9ydCBwb3J0Owog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
cktleS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyS2V5LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41ZjllNmRjOTBiYTkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJLZXkuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJDbGllbnRPcmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0cnVjdCBTaGFyZWRXb3JrZXJLZXkgeworICAgIFdlYkNvcmU6OkNs
aWVudE9yaWdpbiBvcmlnaW47CisgICAgVVJMIHVybDsKKyAgICBTdHJpbmcgbmFtZTsKKworICAg
IHVuc2lnbmVkIGhhc2goKSBjb25zdDsKK307CisKK2lubGluZSB1bnNpZ25lZCBTaGFyZWRXb3Jr
ZXJLZXk6Omhhc2goKSBjb25zdAoreworICAgIEhhc2hlciBoYXNoZXI7CisgICAgYWRkKGhhc2hl
ciwgb3JpZ2luLmhhc2goKSk7CisgICAgYWRkKGhhc2hlciwgdXJsKTsKKyAgICBhZGQoaGFzaGVy
LCBuYW1lKTsKKyAgICByZXR1cm4gaGFzaGVyLmhhc2goKTsKK30KKworaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBTaGFyZWRXb3JrZXJLZXkmIGEsIGNvbnN0IFNoYXJlZFdvcmtlcktleSYg
YikKK3sKKyAgICByZXR1cm4gYS5vcmlnaW4gPT0gYi5vcmlnaW4gJiYgYS51cmwgPT0gYi51cmwg
JiYgYS5uYW1lID09IGIubmFtZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1l
c3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6U2hh
cmVkV29ya2VyS2V5PiB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViQ29yZTo6
U2hhcmVkV29ya2VyS2V5JiBrZXkpCisgICAgeworICAgICAgICByZXR1cm4ga2V5Lmhhc2goKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJLZXkmIGEsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgYikKKyAgICB7CisgICAg
ICAgIHJldHVybiBhID09IGI7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRv
Q29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0
IEhhc2hUcmFpdHM8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5PiA6IEdlbmVyaWNIYXNoVHJhaXRz
PFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleT4geworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBl
bXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRl
ZFZhbHVlKFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgc2xvdCkgeyBuZXcgKE5vdE51bGwsICZz
bG90LnVybCkgVVJMKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQorICAgIHN0YXRpYyBi
b29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgc2xvdCkg
eyByZXR1cm4gc2xvdC51cmwuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorfTsKKworfSAv
LyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlck1hbmFnZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh
NzQxMDg3N2RiMzIuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlZFdv
cmtlck1hbmFnZXIuaCIKLQotI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgotI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgotI2luY2x1
ZGUgIk1lc3NhZ2VFdmVudC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgotI2lu
Y2x1ZGUgIlNoYXJlZFdvcmtlci5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlckdsb2JhbFNjb3Bl
LmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgiCi0jaW5jbHVkZSAiU2hh
cmVkV29ya2VyVGhyZWFkLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCIK
LSNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCi0jaW5jbHVkZSAiV29ya2VyU2NyaXB0TG9hZGVy
LmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1TaGFyZWRXb3JrZXJNYW5hZ2VyJiBTaGFy
ZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24oKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTaGFyZWRXb3JrZXJNYW5hZ2VyPiBpbnN0YW5jZTsKLSAgICByZXR1cm4gaW5zdGFuY2UuZ2V0
KCk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyTWFuYWdlcjo6Y29ubmVjdChjb25zdCBVUkwmIHVy
bCwgU2hhcmVkV29ya2VyJiB3b3JrZXIsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBtZXNzYWdl
UG9ydCwgV29ya2VyT3B0aW9ucyYmIG9wdGlvbnMpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKLSAgICAvLyBGSVhNRTogSGFuZGxlIHdvcmtlcnMgZnJvbSBvdGhlciBwcm9jZXNz
ZXMsIHdoaWNoIHdpbGwgcHJvYmFibHkgcmVxdWlyZSBtb3ZpbmcgY29ubmVjdCB0byB0aGUgRnJh
bWVMb2FkZXJDbGllbnQgb3Igc29tZXRoaW5nLgotICAgIC8vIE1heWJlIHNvbWV0aGluZyBtb3Jl
IGxpa2Ugd2hhdCBTZXJ2aWNlV29ya2VycyBkb2VzLgotCi0gICAgLy8gRklYTUU6IENoZWNrIGlm
IHdlIGFscmVhZHkgbWFkZSBhIHRocmVhZC4KLSAgICAvLyBGSVhNRTogQ2hlY2sgaWYgdGhlcmUn
cyBhbHJlYWR5IGEgc2hhcmVkIHdvcmtlciBhbmQgdXNlIHRoYXQgaWYgdGhlcmUgaXMuCi0KLSAg
ICBhdXRvIGxvYWRlciA9IG1ha2VVbmlxdWVSZWY8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPih1
cmwsIHdvcmtlciwgV1RGTW92ZShtZXNzYWdlUG9ydCksIFdURk1vdmUob3B0aW9ucykpOwotICAg
IGF1dG8gaWRlbnRpZmllciA9IGxvYWRlci0+aWRlbnRpZmllcigpOwotICAgIG1fbG9hZGVycy5h
ZGQoaWRlbnRpZmllciwgV1RGTW92ZShsb2FkZXIpKTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJN
YW5hZ2VyOjpzY3JpcHRMb2FkRmFpbGVkKFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYgbG9hZGVy
KQotewotICAgIEFjdGl2ZURPTU9iamVjdDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KGxvYWRl
ci53b3JrZXIoKSwgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2Fu
Y2VsYWJsZTo6WWVzKSk7Ci0gICAgbV9sb2FkZXJzLnJlbW92ZShsb2FkZXIuaWRlbnRpZmllcigp
KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzY3JpcHRMb2FkZWRTdWNjZXNzZnVs
bHkoU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJiBsb2FkZXIsIGNvbnN0IFNjcmlwdEJ1ZmZlciYg
c2NyaXB0QnVmZmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBTaGFyZWRXb3JrZXImIHNoYXJlZFdvcmtlciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYm
IHRyYW5zZmVycmVkUG9ydCkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAg
IGF1dG8mIHdvcmtlciA9IGxvYWRlci53b3JrZXIoKTsKLSAgICBhdXRvJiBvcHRpb25zID0gbG9h
ZGVyLm9wdGlvbnMoKTsKLQotICAgIGF1dG8mIHByb3h5ID0gc2hhcmVkV29ya2VyLnByb3h5KCk7
Ci0KLSAgICBwcm94eS5zdGFydFdvcmtlckdsb2JhbFNjb3BlKAotICAgICAgICBsb2FkZXIudXJs
KCksCi0gICAgICAgIG9wdGlvbnMubmFtZSwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC51c2VyQWdlbnQobG9hZGVyLnVybCgpKSwKLSAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PmxvYWRlclN0cmF0ZWd5KCktPmlzT25MaW5lKCksCi0gICAgICAgIHNjcmlwdEJ1ZmZlciwKLSAg
ICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+cmVz
cG9uc2VIZWFkZXJzKCksCi0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuc2hvdWxkQnlw
YXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KCksCi0gICAgICAgIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSgpLAotICAgICAgICB3b3JrZXIu
Y3JlYXRpb25UaW1lKCksCi0gICAgICAgIFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZywKLSAg
ICAgICAgb3B0aW9ucy50eXBlLAotICAgICAgICBvcHRpb25zLmNyZWRlbnRpYWxzLAotICAgICAg
ICB3b3JrZXIucnVudGltZUZsYWdzKCkKLSAgICApOwotICAgIGlmICghcHJveHkudGhyZWFkKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04oaXM8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsKLSAgICBhdXRv
IHNvdXJjZU9yaWdpbiA9IGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0
KS5zZWN1cml0eU9yaWdpbigpLnRvU3RyaW5nKCk7Ci0KLSAgICBwcm94eS50aHJlYWQoKS0+cnVu
TG9vcCgpLnBvc3RUYXNrKFt0cmFuc2ZlcnJlZFBvcnQgPSBXVEZNb3ZlKHRyYW5zZmVycmVkUG9y
dCksIHNvdXJjZU9yaWdpbiA9IFdURk1vdmUoc291cmNlT3JpZ2luKS5pc29sYXRlZENvcHkoKV0g
KGF1dG8mIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIG11dGFibGUgewotICAgICAgICBkb3duY2Fz
dDxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkucG9zdENv
bm5lY3RFdmVudChXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCksIHNvdXJjZU9yaWdpbik7Ci0gICAg
fSk7Ci0KLSAgICBtX2xvYWRlcnMucmVtb3ZlKGxvYWRlci5pZGVudGlmaWVyKCkpOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCmluZGV4IGRk
YTM4NGQyMjkxMi4uMWNkZTBiYTM1OTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcApA
QCAtMjYsMTAgKzI2LDY2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIgogCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0Lmgi
CisjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJTY3JpcHRCdWZmZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKKyNpbmNsdWRlICJT
aGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJGZXRjaFJlc3VsdC5o
IgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xP
RyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgQ09O
TkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoU2hh
cmVkV29ya2VyLCAiJXAgLSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjoiIGZtdCwgdGhp
cywgIyNfX1ZBX0FSR1NfXykKKworc3RhdGljIHVpbnQ2NF90IGxvYWRlcklkZW50aWZpZXJTZWVk
ID0gMDsKKwogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6U2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbigpID0gZGVmYXVsdDsKIAogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6
flNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CiAKK3ZvaWQgU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6ZmV0Y2hTY3JpcHRJbkNsaWVudChVUkwmJiB1cmwsIFdl
YkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciwgV29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byogd29ya2VyT2JqZWN0ID0g
U2hhcmVkV29ya2VyOjpmcm9tSWRlbnRpZmllcihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
KTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJmZXRjaFNjcmlwdEluQ2xpZW50OiBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMsIHdvcmtlcj0lcCIsIHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB3b3JrZXJPYmpl
Y3QpOworICAgIGlmICghd29ya2VyT2JqZWN0KQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIod29ya2VyRmV0Y2hFcnJvcihSZXNvdXJjZUVycm9yIHsgUmVzb3VyY2VFcnJvcjo6VHlw
ZTo6Q2FuY2VsbGF0aW9uIH0pKTsKKworICAgIGF1dG8gbG9hZGVySWRlbnRpZmllciA9ICsrbG9h
ZGVySWRlbnRpZmllclNlZWQ7CisgICAgYXV0byBsb2FkZXIgPSBtYWtlVW5pcXVlUmVmPFNoYXJl
ZFdvcmtlclNjcmlwdExvYWRlcj4oV1RGTW92ZSh1cmwpLCAqd29ya2VyT2JqZWN0LCBXVEZNb3Zl
KHdvcmtlck9wdGlvbnMpKTsKKyAgICBhdXRvIGxvYWRlclB0ciA9IGxvYWRlci5wdHIoKTsKKyAg
ICBtX2xvYWRlcnMuYWRkKGxvYWRlcklkZW50aWZpZXIsIFdURk1vdmUobG9hZGVyKSk7CisKKyAg
ICBsb2FkZXJQdHItPmxvYWQoW3RoaXMsIGxvYWRlcklkZW50aWZpZXIsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IFdvcmtlckZldGNoUmVzdWx0
JiBmZXRjaFJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0co
ImZldGNoU2NyaXB0SW5DbGllbnQ6IGZpbmlzaGVkIHNjcmlwdCBsb2FkLCBzdWNjZXNzPSVkIiwg
ZmV0Y2hSZXN1bHQuZXJyb3IuaXNOdWxsKCkpOworICAgICAgICBhdXRvIGxvYWRlciA9IG1fbG9h
ZGVycy50YWtlKGxvYWRlcklkZW50aWZpZXIpOworICAgICAgICBBU1NFUlQobG9hZGVyKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmV0Y2hSZXN1bHQpOworICAgIH0pOworfQorCit2b2lk
IFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Om5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENv
bXBsZXRpb24oV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8qIHdvcmtlck9iamVjdCA9IFNoYXJlZFdv
cmtlcjo6ZnJvbUlkZW50aWZpZXIoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAg
Q09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUigibm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29t
cGxldGlvbjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zLCB3b3JrZXI9
JXAsIHN1Y2Nlc3M9JWQiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgd29ya2VyT2JqZWN0LCBlcnJvci5pc051bGwoKSk7CisgICAgaWYgKHdv
cmtlck9iamVjdCkKKyAgICAgICAgd29ya2VyT2JqZWN0LT5kaWRGaW5pc2hMb2FkaW5nKGVycm9y
KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpwb3N0RXhjZXB0aW9u
VG9Xb3JrZXJPYmplY3QoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgYXV0byogd29ya2VyT2JqZWN0ID0gU2hhcmVkV29y
a2VyOjpmcm9tSWRlbnRpZmllcihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBD
T05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKCJwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Q6
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cywgd29ya2VyPSVwIiwgc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHdvcmtl
ck9iamVjdCk7CisgICAgaWYgKHdvcmtlck9iamVjdCkKKyAgICAgICAgQWN0aXZlRE9NT2JqZWN0
OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKndvcmtlck9iamVjdCwgVGFza1NvdXJjZTo6RE9N
TWFuaXB1bGF0aW9uLCBFcnJvckV2ZW50OjpjcmVhdGUoZXJyb3JNZXNzYWdlLCBzb3VyY2VVUkws
IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgeyB9KSk7Cit9CisKKyN1bmRlZiBDT05ORUNUSU9O
X1JFTEVBU0VfTE9HCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUgorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKaW5kZXggNGVkNWExYzY1
YjU4Li45NTZiNDczNGExMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKQEAgLTI1LDIyICsy
NSwzOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0LmgiCisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkV29y
a2VyOworY2xhc3MgTWVzc2FnZVBvcnQ7CitjbGFzcyBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI7
CisKK3N0cnVjdCBDbGllbnRPcmlnaW47CitzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7CiBzdHJ1
Y3QgV29ya2VyT3B0aW9uczsKIAogY2xhc3MgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiA6
IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24+IHsKIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFNoYXJlZFdvcmtlcihjb25zdCBVUkwm
LCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdvcmtlck9wdGlvbnMm
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0IENsaWVu
dE9yaWdpbiYsIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFVSTCYsIFRyYW5z
ZmVycmVkTWVzc2FnZVBvcnQmJiwgY29uc3QgV29ya2VyT3B0aW9ucyYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoU2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcikgPSAwOwogCiBwcm90ZWN0ZWQ6CisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZmV0Y2hTY3JpcHRJbkNsaWVudChVUkwmJiwgV2ViQ29yZTo6
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV29ya2VyT3B0aW9ucyYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFdvcmtlckZldGNoUmVzdWx0Jik+JiYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgbm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihXZWJDb3JlOjpT
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoU2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisKICAg
ICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCk7CisKK3ByaXZh
dGU6CisgICAgSGFzaE1hcDx1aW50NjRfdCwgVW5pcXVlUmVmPFNoYXJlZFdvcmtlclNjcmlwdExv
YWRlcj4+IG1fbG9hZGVyczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIuaApzaW1pbGFyaXR5IGluZGV4IDU5JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmgKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaAppbmRleCAyNTIx
ODE2ZTY1YzcuLmViY2Q0YTdhZTg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMjkgKzI1LDEyIEBACiAKICNw
cmFnbWEgb25jZQogCi0jaW5jbHVkZSAiTWVzc2FnZVBvcnRJZGVudGlmaWVyLmgiCisjaW5jbHVk
ZSAiUHJvY2Vzc1F1YWxpZmllZC5oIgorI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
LWNsYXNzIFNoYXJlZFdvcmtlcjsKLWNsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjsKLWNs
YXNzIFNjcmlwdEJ1ZmZlcjsKLXN0cnVjdCBXb3JrZXJPcHRpb25zOwotdXNpbmcgVHJhbnNmZXJy
ZWRNZXNzYWdlUG9ydCA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIs
IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllcj47Ci0KLXVzaW5nIFNoYXJlZFdvcmtlclNj
cmlwdExvYWRlcklkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFNoYXJlZFdvcmtlclNjcmlw
dExvYWRlcj47Ci0KLWNsYXNzIFNoYXJlZFdvcmtlck1hbmFnZXIgewotcHVibGljOgotICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBTaGFyZWRXb3JrZXJNYW5hZ2VyJiBzaW5nbGV0b24oKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbm5lY3QoY29uc3QgVVJMJiwgU2hhcmVkV29ya2VyJiwg
VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBXb3JrZXJPcHRpb25zJiYpOwotCi0gICAgdm9pZCBz
Y3JpcHRMb2FkRmFpbGVkKFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYpOwotICAgIHZvaWQgc2Ny
aXB0TG9hZGVkU3VjY2Vzc2Z1bGx5KFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYsIGNvbnN0IFNj
cmlwdEJ1ZmZlciYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBTaGFyZWRXb3JrZXImLCBUcmFu
c2ZlcnJlZE1lc3NhZ2VQb3J0JiYpOwotCi1wcml2YXRlOgotICAgIEhhc2hNYXA8U2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVySWRlbnRpZmllciwgVW5pcXVlUmVmPFNoYXJlZFdvcmtlclNjcmlwdExv
YWRlcj4+IG1fbG9hZGVyczsKLX07CitlbnVtIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXJU
eXBlIHsgfTsKK3VzaW5nIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgPSBQcm9jZXNzUXVh
bGlmaWVkPE9iamVjdElkZW50aWZpZXI8U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllclR5cGU+
PjsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXggMzEx
ZWJkNjA3OGJjLi5lYTJlMDQ4Yzc2MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwyMyArMjks
MjYgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVk
V29ya2VyTWFuYWdlci5oIgorI2luY2x1ZGUgIldvcmtlckZldGNoUmVzdWx0LmgiCiAjaW5jbHVk
ZSAiV29ya2VyUnVuTG9vcC5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRXb3JrZXImIHdvcmtlciwgVHJh
bnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBvcnQsIFdvcmtlck9wdGlvbnMmJiBvcHRpb25zKQotICAg
IDogbV9pZGVudGlmaWVyKFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcklkZW50aWZpZXI6OmdlbmVy
YXRlKCkpCi0gICAgLCBtX29wdGlvbnMoV1RGTW92ZShvcHRpb25zKSkKK1NoYXJlZFdvcmtlclNj
cmlwdExvYWRlcjo6U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyKFVSTCYmIHVybCwgU2hhcmVkV29y
a2VyJiB3b3JrZXIsIFdvcmtlck9wdGlvbnMmJiBvcHRpb25zKQorICAgIDogbV9vcHRpb25zKFdU
Rk1vdmUob3B0aW9ucykpCiAgICAgLCBtX3dvcmtlcih3b3JrZXIpCi0gICAgLCBtX3BvcnQoV1RG
TW92ZShwb3J0KSkKICAgICAsIG1fbG9hZGVyKFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlKCkp
Ci0gICAgLCBtX3BlbmRpbmdBY3Rpdml0eSh3b3JrZXIubWFrZVBlbmRpbmdBY3Rpdml0eSh3b3Jr
ZXIpKQotICAgICwgbV91cmwodXJsKQorICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQogewotICAg
IG1fd29ya2VyLT5zZXRJc0xvYWRpbmcodHJ1ZSk7Ci0gICAgbV9sb2FkZXItPmxvYWRBc3luY2hy
b25vdXNseSgqd29ya2VyLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgUmVzb3VyY2VSZXF1ZXN0
KHVybCksIHdvcmtlci53b3JrZXJGZXRjaE9wdGlvbnMob3B0aW9ucywgRmV0Y2hPcHRpb25zOjpE
ZXN0aW5hdGlvbjo6U2hhcmVkd29ya2VyKSwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1l
bnQ6OkVuZm9yY2VXb3JrZXJTcmNEaXJlY3RpdmUsIFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsLCAq
dGhpcywgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7Cit9CisKK3ZvaWQgU2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyOjpsb2FkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2Vy
RmV0Y2hSZXN1bHQmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoIW1fY29t
cGxldGlvbkhhbmRsZXIpOworICAgIG1fY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKTsKKworICAgIG1fbG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoKm1fd29y
a2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFJlc291cmNlUmVxdWVzdChtX3VybCksIG1f
d29ya2VyLT53b3JrZXJGZXRjaE9wdGlvbnMobV9vcHRpb25zLCBGZXRjaE9wdGlvbnM6OkRlc3Rp
bmF0aW9uOjpTaGFyZWR3b3JrZXIpLCBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6
RW5mb3JjZVdvcmtlclNyY0RpcmVjdGl2ZSwgU2VydmljZVdvcmtlcnNNb2RlOjpBbGwsICp0aGlz
LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKIH0KIAogdm9pZCBTaGFyZWRXb3JrZXJT
Y3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCkBAIC01NSwxNiArNTgsMTIgQEAg
dm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgaWRlbnQKIAogdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6
Om5vdGlmeUZpbmlzaGVkKCkKIHsKLSAgICBtX3dvcmtlci0+c2V0SXNMb2FkaW5nKGZhbHNlKTsK
KyAgICBpZiAobV9sb2FkZXItPmZhaWxlZCgpKQorICAgICAgICByZXR1cm4gbV9jb21wbGV0aW9u
SGFuZGxlcih3b3JrZXJGZXRjaEVycm9yKG1fbG9hZGVyLT5lcnJvcigpKSk7CiAKLSAgICBhdXRv
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKLSAgICBpZiAobV9sb2FkZXItPmZhaWxlZCgpIHx8ICFzY3JpcHRFeGVjdXRpb25Db250
ZXh0KSB7Ci0gICAgICAgIG1fd29ya2VyLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmVycm9yRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5j
ZWxhYmxlOjpZZXMpKTsKLSAgICAgICAgU2hhcmVkV29ya2VyTWFuYWdlcjo6c2luZ2xldG9uKCku
c2NyaXB0TG9hZEZhaWxlZCgqdGhpcyk7IC8vIGRlbGV0ZXMgdGhpcy4KLSAgICB9IGVsc2Ugewor
ICAgIGlmIChhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbV93b3JrZXItPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3Jp
cHRJbXBvcnRlZCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgbV9sb2FkZXItPmlkZW50aWZpZXIo
KSwgbV9sb2FkZXItPnNjcmlwdCgpLnRvU3RyaW5nKCkpOwotICAgICAgICBTaGFyZWRXb3JrZXJN
YW5hZ2VyOjpzaW5nbGV0b24oKS5zY3JpcHRMb2FkZWRTdWNjZXNzZnVsbHkoKnRoaXMsIG1fbG9h
ZGVyLT5zY3JpcHQoKSwgKm1fd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fd29y
a2VyLmdldCgpLCBzdGQ6OmV4Y2hhbmdlKG1fcG9ydCwgeyB9KSk7IC8vIGRlbGV0ZXMgdGhpcy4K
LSAgICB9CisgICAgbV9jb21wbGV0aW9uSGFuZGxlcih7IG1fbG9hZGVyLT5zY3JpcHQoKSwgbV9s
b2FkZXItPmNlcnRpZmljYXRlSW5mbygpLCBtX2xvYWRlci0+Y29udGVudFNlY3VyaXR5UG9saWN5
KCksIG1fbG9hZGVyLT5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KCksIG1fbG9hZGVyLT5yZWZl
cnJlclBvbGljeSgpLCB7IH0gfSk7IC8vIGRlbGV0ZXMgdGhpcy4KIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyU2NyaXB0TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9T
aGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaAppbmRleCBhYjMwOWExY2VmYjYuLmViMGI3MTQ1YmZh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lu
Y2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0SWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJl
c291cmNlUmVzcG9uc2UuaCIKQEAgLTM4LDMyICszNywyOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFNoYXJlZFdvcmtlcjsKIGNsYXNzIFdvcmtlclNjcmlwdExvYWRlcjsKLQotY2xh
c3MgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOwotCi11c2luZyBUcmFuc2ZlcnJlZE1lc3NhZ2VQ
b3J0ID0gc3RkOjpwYWlyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciwgV2ViQ29yZTo6
TWVzc2FnZVBvcnRJZGVudGlmaWVyPjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKIAogY2xh
c3MgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyIDogcHJpdmF0ZSBXb3JrZXJTY3JpcHRMb2FkZXJD
bGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNoYXJl
ZFdvcmtlclNjcmlwdExvYWRlcihjb25zdCBVUkwmLCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJl
ZE1lc3NhZ2VQb3J0JiYsIFdvcmtlck9wdGlvbnMmJik7CisgICAgU2hhcmVkV29ya2VyU2NyaXB0
TG9hZGVyKFVSTCYmLCBTaGFyZWRXb3JrZXImLCBXb3JrZXJPcHRpb25zJiYpOworCisgICAgdm9p
ZCBsb2FkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKT4m
Jik7CiAKLSAgICBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBjb25zdCBVUkwmIHVybCgpIGNv
bnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgU2hhcmVkV29ya2VyJiB3b3JrZXIoKSB7IHJldHVy
biBtX3dvcmtlci5nZXQoKTsgfQotICAgIGNvbnN0IFdvcmtlck9wdGlvbnMmIG9wdGlvbnMoKSB7
IHJldHVybiBtX29wdGlvbnM7IH0KKyAgICBjb25zdCBXb3JrZXJPcHRpb25zJiBvcHRpb25zKCkg
Y29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZCgpIGZpbmFsOwogCi0gICAgY29u
c3QgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAg
Y29uc3QgV29ya2VyT3B0aW9ucyBtX29wdGlvbnM7CiAgICAgY29uc3QgUmVmPFNoYXJlZFdvcmtl
cj4gbV93b3JrZXI7Ci0gICAgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBtX3BvcnQ7CiAgICAgY29u
c3QgUmVmPFdvcmtlclNjcmlwdExvYWRlcj4gbV9sb2FkZXI7Ci0gICAgY29uc3QgUmVmPEFjdGl2
ZURPTU9iamVjdDo6UGVuZGluZ0FjdGl2aXR5PFNoYXJlZFdvcmtlcj4+IG1fcGVuZGluZ0FjdGl2
aXR5OwogICAgIGNvbnN0IFVSTCBtX3VybDsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFdvcmtlckZldGNoUmVzdWx0Jik+IG1fY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3No
YXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDdhOTBkOTgwNTEyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9T
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXIuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJU
aHJlYWRQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyJiBTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI+IHNoYXJlZE1hbmFnZXI7CisgICAgcmV0dXJuIHNo
YXJlZE1hbmFnZXI7Cit9CisKK1NoYXJlZFdvcmtlclRocmVhZFByb3h5KiBTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlcjo6c2hhcmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVk
V29ya2VySWRlbnRpZmllcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV93b3JrZXJNYXAuZ2V0KHNo
YXJlZFdvcmtlcklkZW50aWZpZXIpOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyOjpzdG9wU2hhcmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2Vy
SWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHdvcmtlciA9IG1fd29ya2VyTWFwLnRha2Uoc2hhcmVk
V29ya2VySWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXI6OnN0b3BTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50
aWZpZXI9JSIgUFJJdTY0ICIsIHdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9V
SW50NjQoKSwgd29ya2VyLmdldCgpKTsKKyAgICBpZiAoIXdvcmtlcikKKyAgICAgICAgcmV0dXJu
OworCisgICAgd29ya2VyLT5zZXRBc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKCk7CisKKyAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gZGVhbCB3aXRoIHRoZSB0aHJlYWQgYmVpbmcg
dW5yZXNwb25zaXZlIGhlcmUuCisKKyAgICBhdXRvJiB0aHJlYWQgPSB3b3JrZXItPnRocmVhZCgp
OworICAgIHRocmVhZC5zdG9wKFt3b3JrZXIgPSBXVEZNb3ZlKHdvcmtlcildKCkgbXV0YWJsZSB7
CisgICAgICAgIC8vIFNwaW4gdGhlIHJ1bmxvb3AgYmVmb3JlIHJlbGVhc2luZyB0aGUgc2hhcmVk
IHdvcmtlciB0aHJlYWQgcHJveHksIGFzIHRoZXJlIHdvdWxkIG90aGVyd2lzZSBiZQorICAgICAg
ICAvLyBhIHJhY2UgdG93YXJkcyBpdHMgZGVzdHJ1Y3Rpb24uCisgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3dvcmtlciA9IFdURk1vdmUod29ya2VyKV0geyB9KTsKKyAgICB9KTsKK30KKwordm9p
ZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c3RvcEFsbFNoYXJlZFdvcmtlcnMoKQorewor
ICAgIHdoaWxlICghbV93b3JrZXJNYXAuaXNFbXB0eSgpKQorICAgICAgICBzdG9wU2hhcmVkV29y
a2VyKG1fd29ya2VyTWFwLmJlZ2luKCktPmtleSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXI6OnNldENvbm5lY3Rpb24oc3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+JiYg
Y29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbiB8fCBtX2Nvbm5lY3Rpb24t
PmlzQ2xvc2VkKCkpOworICAgIG1fY29ubmVjdGlvbiA9IFdURk1vdmUoY29ubmVjdGlvbik7Cit9
CisKK2F1dG8gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OmNvbm5lY3Rpb24oKSBjb25zdCAt
PiBDb25uZWN0aW9uKgoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7Cit9CisKK3Zv
aWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnJlZ2lzdGVyU2hhcmVkV29ya2VyVGhyZWFk
KFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4mJiBwcm94eSkKK3sKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyOjpyZWdpc3RlclNoYXJlZFdvcmtlclRocmVhZDogc2hhcmVkV29ya2Vy
SWRlbnRpZmllcj0lIiBQUkl1NjQsIHByb3h5LT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisK
KyAgICBhdXRvIHJlc3VsdCA9IG1fd29ya2VyTWFwLmFkZChwcm94eS0+aWRlbnRpZmllcigpLCBw
cm94eS5jb3B5UmVmKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdF
bnRyeSk7CisKKyAgICBwcm94eS0+dGhyZWFkKCkuc3RhcnQoW10oY29uc3QgU3RyaW5nJiAvKmV4
Y2VwdGlvbk1lc3NhZ2UqLykgeyB9KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlcjo6Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVudChTaGFyZWRXb3JrZXJJZGVudGlmaWVy
IHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiB0cmFuc2Zl
cnJlZFBvcnQsIFN0cmluZyYmIHNvdXJjZU9yaWdpbikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIGF1dG8qIHByb3h5ID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpLnNoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBSRUxF
QVNFX0xPRyhTaGFyZWRXb3JrZXIsICJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVj
dGlvbjo6cG9zdENvbm5lY3RFdmVudDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQg
IiwgcHJveHk9JXAiLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCksIHByb3h5KTsK
KyAgICBpZiAoIXByb3h5KQorICAgICAgICByZXR1cm47CisKKyAgICBwcm94eS0+dGhyZWFkKCku
cnVuTG9vcCgpLnBvc3RUYXNrKFt0cmFuc2ZlcnJlZFBvcnQgPSBXVEZNb3ZlKHRyYW5zZmVycmVk
UG9ydCksIHNvdXJjZU9yaWdpbiA9IFdURk1vdmUoc291cmNlT3JpZ2luKS5pc29sYXRlZENvcHko
KV0gKGF1dG8mIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIG11dGFibGUgeworICAgICAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgZG93bmNhc3Q8U2hhcmVkV29ya2VyR2xvYmFs
U2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnBvc3RDb25uZWN0RXZlbnQoV1RGTW92ZSh0
cmFuc2ZlcnJlZFBvcnQpLCBXVEZNb3ZlKHNvdXJjZU9yaWdpbikpOworICAgIH0pOworfQorCit2
b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uOjp0ZXJtaW5hdGVTaGFy
ZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyKQor
eworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29y
a2VyLCAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb246OnRlcm1pbmF0ZVNo
YXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtl
cklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6
OnNpbmdsZXRvbigpLnN0b3BTaGFyZWRXb3JrZXIoc2hhcmVkV29ya2VySWRlbnRpZmllcik7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjMzODI1Mjg5Mzcz
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRl
eHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaApAQCAtMCwwICsxLDc3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgi
CisjaW5jbHVkZSAiVHJhbnNmZXJyZWRNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFk
UHJveHk7CisKK2NsYXNzIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyIHsKK3B1YmxpYzoKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXImIHNpbmds
ZXRvbigpOworCisgICAgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkqIHNoYXJlZFdvcmtlcihTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyKSBjb25zdDsKKyAgICB2b2lkIHN0b3BTaGFyZWRXb3JrZXIoU2hh
cmVkV29ya2VySWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wQWxsU2hh
cmVkV29ya2VycygpOworCisgICAgY2xhc3MgQ29ubmVjdGlvbiB7CisgICAgICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+Q29ubmVjdGlv
bigpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RFeGNl
cHRpb25Ub1dvcmtlck9iamVjdChTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMKSA9IDA7CisgICAgICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ2xvc2VkOyB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZvaWQgc2V0QXND
bG9zZWQoKSB7IG1faXNDbG9zZWQgPSB0cnVlOyB9CisKKyAgICAgICAgLy8gSVBDIG1lc3NhZ2Ug
aGFuZGxlcnMuCisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdENvbm5lY3RFdmVudChT
aGFyZWRXb3JrZXJJZGVudGlmaWVyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFN0cmluZyYm
IHNvdXJjZU9yaWdpbik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdGVybWluYXRlU2hh
cmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworCisgICAgcHJpdmF0ZToKKyAgICAg
ICAgYm9vbCBtX2lzQ2xvc2VkIHsgZmFsc2UgfTsKKyAgICB9OworCisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBDb25uZWN0aW9uKiBjb25uZWN0aW9uKCkgY29uc3Q7CisKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlZ2lzdGVyU2hhcmVkV29ya2VyVGhyZWFkKFJlZjxTaGFyZWRX
b3JrZXJUaHJlYWRQcm94eT4mJik7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE5ldmVy
RGVzdHJveWVkPFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyPjsKKworICAgIFNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyKCkgPSBkZWZhdWx0OworCisgICAgc3RkOjp1bmlxdWVfcHRyPENvbm5l
Y3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBIYXNoTWFwPFNoYXJlZFdvcmtlcklkZW50aWZpZXIs
IFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4+IG1fd29ya2VyTWFwOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcAppbmRleCA5
YmQ5NzgzZDdhN2UuLjFlZGY3MzRmZjI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94
eS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjgsOTQgKzI4LDcyIEBACiAKICNpbmNsdWRlICJDYWNoZVN0b3JhZ2VQcm92aWRlci5o
IgogI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZUxv
YWRlci5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCisjaW5jbHVkZSAiTG9hZGVy
U3RyYXRlZ3kuaCIKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKICNpbmNsdWRlICJNZXNzYWdl
UG9ydC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXIuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUg
IlNoYXJlZFdvcmtlclRocmVhZC5oIgorI2luY2x1ZGUgIldvcmtlckZldGNoUmVzdWx0LmgiCisj
aW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRp
ZmllcnNGYWN0b3J5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHk6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5KFNoYXJlZFdvcmtlciYgc2hhcmVkV29y
a2VyKQotICAgIDogbV9zaGFyZWRXb3JrZXIoc2hhcmVkV29ya2VyKQotICAgICwgbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0KHNoYXJlZFdvcmtlci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0g
ICAgLCBtX2lkZW50aWZpZXJGb3JJbnNwZWN0b3Ioc2hhcmVkV29ya2VyLmlkZW50aWZpZXJGb3JJ
bnNwZWN0b3IoKSkKK3N0YXRpYyBIYXNoU2V0PFNoYXJlZFdvcmtlclRocmVhZFByb3h5Kj4mIGFs
bFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKQogeworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxIYXNoU2V0PFNoYXJlZFdvcmtlclRocmVhZFByb3h5Kj4+IHNldDsKKyAgICByZXR1cm4gc2V0
OwogfQogCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpzdGFydFdvcmtlckdsb2JhbFNj
b3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgdXNlckFnZW50LCBib29sIGlzT25saW5lLCBjb25zdCBTY3JpcHRCdWZmZXImIHNjcmlwdEJ1
ZmZlciwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxk
Q29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5JiBj
cm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIFJlZmVy
cmVyUG9saWN5IHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHdvcmtlclR5cGUsIEZldGNoUmVx
dWVzdENyZWRlbnRpYWxzIGNyZWRlbnRpYWxzLCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxh
Z3MpCitzdGF0aWMgV29ya2VyUGFyYW1ldGVycyBnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMoY29u
c3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFdvcmtlckZldGNoUmVzdWx0JiB3b3JrZXJGZXRjaFJl
c3VsdCwgV29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMsIGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50LCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBwYXJhbWV0ZXJzID0gV29ya2VyUGFyYW1ldGVy
cyB7CisgICAgcmV0dXJuIFdvcmtlclBhcmFtZXRlcnMgewogICAgICAgICBzY3JpcHRVUkwsCi0g
ICAgICAgIG5hbWUsCi0gICAgICAgIG1faWRlbnRpZmllckZvckluc3BlY3RvciwKKyAgICAgICAg
d29ya2VyT3B0aW9ucy5uYW1lLAorICAgICAgICAic2hhcmVkd29ya2VyOiIgKyBJbnNwZWN0b3I6
OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpLAogICAgICAgICB1c2VyQWdl
bnQsCi0gICAgICAgIGlzT25saW5lLAotICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnMsCi0gICAgICAgIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0
eVBvbGljeSwKLSAgICAgICAgY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwKLSAgICAgICAgdGlt
ZU9yaWdpbiwKLSAgICAgICAgcmVmZXJyZXJQb2xpY3ksCi0gICAgICAgIHdvcmtlclR5cGUsCi0g
ICAgICAgIGNyZWRlbnRpYWxzLAotICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNl
dHRpbmdzVmFsdWVzKCkKKyAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0
ZWd5KCktPmlzT25MaW5lKCksCisgICAgICAgIHdvcmtlckZldGNoUmVzdWx0LmNvbnRlbnRTZWN1
cml0eVBvbGljeSwKKyAgICAgICAgZmFsc2UsCisgICAgICAgIHdvcmtlckZldGNoUmVzdWx0LmNy
b3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ksCisgICAgICAgIE1vbm90b25pY1RpbWU6Om5vdygpLAor
ICAgICAgICBwYXJzZVJlZmVycmVyUG9saWN5KHdvcmtlckZldGNoUmVzdWx0LnJlZmVycmVyUG9s
aWN5LCBSZWZlcnJlclBvbGljeVNvdXJjZTo6SFRUUEhlYWRlcikudmFsdWVfb3IoUmVmZXJyZXJQ
b2xpY3k6OkVtcHR5U3RyaW5nKSwKKyAgICAgICAgd29ya2VyT3B0aW9ucy50eXBlLAorICAgICAg
ICB3b3JrZXJPcHRpb25zLmNyZWRlbnRpYWxzLAorICAgICAgICBkb2N1bWVudC5zZXR0aW5nc1Zh
bHVlcygpCiAgICAgfTsKLQotICAgIGlmICghbV93b3JrZXJUaHJlYWQpIHsKLSAgICAgICAgbV93
b3JrZXJUaHJlYWQgPSBTaGFyZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZShTaGFyZWRXb3JrZXJJZGVu
dGlmaWVyOjpnZW5lcmF0ZSgpLCBwYXJhbWV0ZXJzLCBzY3JpcHRCdWZmZXIsICp0aGlzLCAqdGhp
cywgKnRoaXMsIFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPnRvcE9yaWdpbigpLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlkYkNvbm5l
Y3Rpb25Qcm94eSgpLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNvY2tldFByb3ZpZGVyKCks
IHJ1bnRpbWVGbGFncyk7Ci0gICAgICAgIG1fd29ya2VyVGhyZWFkLT5zdGFydCgpOwotICAgIH0K
LX0KLQotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6dGVybWluYXRlV29ya2VyR2xvYmFs
U2NvcGUoKQotewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCi0gICAgICAgIHJldHVybjsK
LQotICAgIG1fYXNrZWRUb1Rlcm1pbmF0ZSA9IHRydWU7Ci0gICAgaWYgKG1fd29ya2VyVGhyZWFk
KQotICAgICAgICBtX3dvcmtlclRocmVhZC0+c3RvcChudWxscHRyKTsKIH0KIAotdm9pZCBTaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3Nh
Z2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSkKK1NoYXJlZFdvcmtlclRocmVhZFByb3h5OjpT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eShVbmlxdWVSZWY8UGFnZT4mJiBwYWdlLCBTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IENsaWVudE9yaWdpbiYg
Y2xpZW50T3JpZ2luLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgV29ya2VyRmV0Y2hSZXN1bHQmJiB3
b3JrZXJGZXRjaFJlc3VsdCwgV29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50LCBDYWNoZVN0b3JhZ2VQcm92aWRlciYgY2FjaGVTdG9yYWdlUHJvdmlk
ZXIpCisgICAgOiBtX3BhZ2UoV1RGTW92ZShwYWdlKSkKKyAgICAsIG1fZG9jdW1lbnQoKm1fcGFn
ZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKKyAgICAsIG1fd29ya2VyVGhyZWFkKFNoYXJlZFdv
cmtlclRocmVhZDo6Y3JlYXRlKHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGdlbmVyYXRlV29ya2Vy
UGFyYW1ldGVycyhzY3JpcHRVUkwsIHdvcmtlckZldGNoUmVzdWx0LCBXVEZNb3ZlKHdvcmtlck9w
dGlvbnMpLCB1c2VyQWdlbnQsIG1fZG9jdW1lbnQpLCBXVEZNb3ZlKHdvcmtlckZldGNoUmVzdWx0
LnNjcmlwdCksICp0aGlzLCAqdGhpcywgKnRoaXMsIFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9y
bWFsLCBjbGllbnRPcmlnaW4udG9wT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCksIG1fZG9jdW1lbnQt
PmlkYkNvbm5lY3Rpb25Qcm94eSgpLCBtX2RvY3VtZW50LT5zb2NrZXRQcm92aWRlcigpLCBKU0M6
OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpKSkKKyAgICAsIG1fY2FjaGVTdG9yYWdl
UHJvdmlkZXIoY2FjaGVTdG9yYWdlUHJvdmlkZXIpCiB7Ci0gICAgLy8gRklYTUU6IFNoYXJlZFdv
cmtlciBkb2Vzbid0IGhhdmUgcG9zdE1lc3NhZ2UsIHNvIHRoaXMgbWlnaHQgbm90IGJlIG5lY2Vz
c2FyeS4KLSAgICBwb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUoW21lc3NhZ2UgPSBXVEZNb3Zl
KG1lc3NhZ2UpXShhdXRvJiBzY3JpcHRDb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byYg
Y29udGV4dCA9IGRvd25jYXN0PFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRDb250ZXh0
KTsKLSAgICAgICAgYXV0byBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKHNjcmlw
dENvbnRleHQsIFdURk1vdmUobWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRzKSk7Ci0gICAgICAgIGNv
bnRleHQuZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwg
bWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxsKCkpKTsKLSAgICB9KTsKLX0KKyAgICBBU1NF
UlQoIWFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKS5jb250YWlucyh0aGlzKSk7CisgICAg
YWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGllcygpLmFkZCh0aGlzKTsKIAotdm9pZCBTaGFyZWRX
b3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1bmN0aW9uPHZv
aWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiYmIHRhc2spCi17Ci0gICAgaWYgKG1fYXNrZWRU
b1Rlcm1pbmF0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29w
KCkucG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7Ci19Ci0KLWJvb2wgU2hhcmVkV29ya2VyVGhyZWFk
UHJveHk6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faGFzUGVu
ZGluZ0FjdGl2aXR5ICYmICFtX2Fza2VkVG9UZXJtaW5hdGU7CisgICAgc3RhdGljIGJvb2wgYWRk
ZWRMaXN0ZW5lcjsKKyAgICBpZiAoIWFkZGVkTGlzdGVuZXIpIHsKKyAgICAgICAgcGxhdGZvcm1T
dHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmFkZE9ubGluZVN0YXRlQ2hhbmdlTGlzdGVu
ZXIoJm5ldHdvcmtTdGF0ZUNoYW5nZWQpOworICAgICAgICBhZGRlZExpc3RlbmVyID0gdHJ1ZTsK
KyAgICB9CiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Ondvcmtlck9iamVjdERl
c3Ryb3llZCgpCitTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6flNoYXJlZFdvcmtlclRocmVhZFBy
b3h5KCkKIHsKLSAgICBtX3NoYXJlZFdvcmtlciA9IG51bGxwdHI7Ci0gICAgbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpc10gKGF1dG8mKSB7Ci0gICAgICAgIG1fbWF5QmVE
ZXN0cm95ZWQgPSB0cnVlOwotICAgICAgICBpZiAobV93b3JrZXJUaHJlYWQpCi0gICAgICAgICAg
ICB0ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZEludGVybmFsKCk7Ci0gICAgfSk7CisgICAgQVNT
RVJUKGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKS5jb250YWlucyh0aGlzKSk7CisgICAg
YWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGllcygpLnJlbW92ZSh0aGlzKTsKIH0KIAogU2hhcmVk
V29ya2VySWRlbnRpZmllciBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6aWRlbnRpZmllcigpIGNv
bnN0CkBAIC0xMjUsODggKzEwMyw1MCBAQCBTaGFyZWRXb3JrZXJJZGVudGlmaWVyIFNoYXJlZFdv
cmtlclRocmVhZFByb3h5OjppZGVudGlmaWVyKCkgY29uc3QKIAogdm9pZCBTaGFyZWRXb3JrZXJU
aHJlYWRQcm94eTo6bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpCiB7Ci0g
ICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKKyAgICBpZiAobV9pc1Rlcm1pbmF0aW5nT3JUZXJt
aW5hdGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fd29ya2VyVGhyZWFkKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFtp
c09ubGluZV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICBwb3N0VGFz
a0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFtpc09ubGluZV0gKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgYXV0byYgZ2xvYmFsU2NvcGUgPSBk
b3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCk7CiAgICAgICAgIGdsb2JhbFNjb3Bl
LnNldElzT25saW5lKGlzT25saW5lKTsKLSAgICAgICAgZ2xvYmFsU2NvcGUuZGlzcGF0Y2hFdmVu
dChFdmVudDo6Y3JlYXRlKGlzT25saW5lID8gZXZlbnROYW1lcygpLm9ubGluZUV2ZW50IDogZXZl
bnROYW1lcygpLm9mZmxpbmVFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0Nh
bmNlbGFibGU6Ok5vKSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJv
eHk6OnN1c3BlbmRGb3JCYWNrRm9yd2FyZENhY2hlKCkKLXsKLQotfQotCi12b2lkIFNoYXJlZFdv
cmtlclRocmVhZFByb3h5OjpyZXN1bWVGb3JCYWNrRm9yd2FyZENhY2hlKCkKLXsKLQorICAgICAg
ICBnbG9iYWxTY29wZS5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1
bGF0aW9uLCBbZ2xvYmFsU2NvcGUgPSBSZWYgeyBnbG9iYWxTY29wZSB9LCBpc09ubGluZV0gewor
ICAgICAgICAgICAgZ2xvYmFsU2NvcGUtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShpc09u
bGluZSA/IGV2ZW50TmFtZXMoKS5vbmxpbmVFdmVudCA6IGV2ZW50TmFtZXMoKS5vZmZsaW5lRXZl
bnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOworICAg
ICAgICB9KTsKKyAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKIH0KIAogdm9p
ZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5wb3N0VGFzayhbdGhpcywgZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlLmlzb2xhdGVk
Q29weSgpLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCksIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlcl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0gICAgICAgIGlmICgh
bV9zaGFyZWRXb3JrZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gV2UgZG9u
J3QgYm90aGVyIGNoZWNraW5nIHRoZSBhc2tlZFRvVGVybWluYXRlKCkgZmxhZyBoZXJlLCBiZWNh
dXNlIGV4Y2VwdGlvbnMgc2hvdWxkICphbHdheXMqIGJlIHJlcG9ydGVkIGV2ZW4gaWYgdGhlIHRo
cmVhZCBpcyB0ZXJtaW5hdGVkLgotICAgICAgICAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgZGlm
ZmVyZW50IHRoYW4gdGhlIGJlaGF2aW9yIGluIE1lc3NhZ2VXb3JrZXJUYXNrLCBiZWNhdXNlIHRl
cm1pbmF0ZWQgd29ya2VycyBubyBsb25nZXIgZGVsaXZlciBtZXNzYWdlcyAoc2VjdGlvbiA0LjYg
b2YgdGhlIFdlYldvcmtlciBzcGVjKSwgYnV0IHRoZXkgZG8gcmVwb3J0IGV4Y2VwdGlvbnMuCi0g
ICAgICAgIEFjdGl2ZURPTU9iamVjdDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCptX3NoYXJl
ZFdvcmtlciwgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFcnJvckV2ZW50OjpjcmVhdGUo
ZXJyb3JNZXNzYWdlLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgeyB9KSk7
Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Ondvcmtlckdsb2Jh
bFNjb3BlRGVzdHJveWVkKCkKLXsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RU
YXNrKFt0aGlzXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKLSAgICAgICAgd29ya2VyR2xv
YmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpOwotICAgIH0pOwotfQotCi12b2lkIFNoYXJlZFdv
cmtlclRocmVhZFByb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzJiYpCi17Ci0KLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y29u
ZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wpCi17Ci19Ci0KLXZvaWQgU2hhcmVkV29y
a2VyVGhyZWFkUHJveHk6OnJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGhhc1BlbmRpbmdBY3Rp
dml0eSkKLXsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzLCBo
YXNQZW5kaW5nQWN0aXZpdHldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewotICAgICAgICBt
X2hhc1BlbmRpbmdBY3Rpdml0eSA9IGhhc1BlbmRpbmdBY3Rpdml0eTsKKyAgICBjYWxsT25NYWlu
VGhyZWFkKFtzaGFyZWRXb3JrZXJJZGVudGlmaWVyID0gbV93b3JrZXJUaHJlYWQtPmlkZW50aWZp
ZXIoKSwgZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlLmlzb2xhdGVkQ29weSgpLCBsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCA9IHNvdXJjZVVSTC5pc29sYXRlZENvcHkoKV0g
eworICAgICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCisgICAgICAgICAgICBjb25uZWN0aW9uLT5w
b3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qoc2hhcmVkV29ya2VySWRlbnRpZmllciwgZXJyb3JN
ZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCk7CiAgICAgfSk7CiB9
CiAKIFJlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eTo6Y3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKLSAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICByZXR1cm4gZG9jdW1lbnQucGFnZSgpLT5jYWNoZVN0
b3JhZ2VQcm92aWRlcigpLmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKTsKKyAgICBpZiAo
IW1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbikKKyAgICAgICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0
aW9uID0gbV9jYWNoZVN0b3JhZ2VQcm92aWRlci5jcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
KCk7CisgICAgcmV0dXJuIG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKIH0KIAogUmVmUHRyPFJU
Q0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24+IFNoYXJlZFdvcmtlclRocmVhZFBy
b3h5OjpjcmVhdGVSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCkKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8
RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIGlmICghZG9jdW1lbnQu
cGFnZSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gZG9jdW1lbnQucGFn
ZSgpLT5saWJXZWJSVENQcm92aWRlcigpLmNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxl
ckNvbm5lY3Rpb24oKTsKKyAgICByZXR1cm4gbV9wYWdlLT5saWJXZWJSVENQcm92aWRlcigpLmNy
ZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24oKTsKIH0KIAogdm9pZCBT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tUb0xvYWRlcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrJiYgdGFzaykKIHsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBv
c3RUYXNrKFdURk1vdmUodGFzaykpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Rhc2sgPSBXVEZN
b3ZlKHRhc2spLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgbXV0YWJsZSB7Cisg
ICAgICAgIHRhc2sucGVyZm9ybVRhc2socHJvdGVjdGVkVGhpcy0+bV9kb2N1bWVudC5nZXQoKSk7
CisgICAgfSk7CiB9CiAKIGJvb2wgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RUYXNrRm9y
TW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzayYmIHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKLSAgICBpZiAobV9hc2tlZFRvVGVy
bWluYXRlKQorICAgIGlmIChtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JN
b2RlKFdURk1vdmUodGFzayksIG1vZGUpOwpAQCAtMjIzLDE2ICsxNjMsMTAgQEAgdm9pZCBTaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3Bl
Y3Rvcihib29sKQogCiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Ondvcmtlckds
b2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwoKQordm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eTo6bmV0d29ya1N0YXRlQ2hhbmdlZChib29sIGlzT25MaW5lKQogewotICAgIC8vIFRoaXMgaXMg
YWx3YXlzIHRoZSBsYXN0IHRhc2sgdG8gYmUgcGVyZm9ybWVkLCBzbyB0aGUgcHJveHkgaXMgbm90
IG5lZWRlZCBmb3IgY29tbXVuaWNhdGlvbgotICAgIC8vIGluIGVpdGhlciBzaWRlIGFueSBtb3Jl
LiBIb3dldmVyLCB0aGUgV29ya2VyIG9iamVjdCBtYXkgc3RpbGwgZXhpc3QsIGFuZCBpdCBhc3N1
bWVzIHRoYXQgdGhlIHByb3h5IGV4aXN0cywgdG9vLgotICAgIG1fYXNrZWRUb1Rlcm1pbmF0ZSA9
IHRydWU7Ci0gICAgbV93b3JrZXJUaHJlYWQgPSBudWxscHRyOwotCi0gICAgLy8gVGhpcyBiYWxh
bmNlcyB0aGUgb3JpZ2luYWwgcmVmIGluIGNvbnN0cnVjdGlvbi4KLSAgICBpZiAobV9tYXlCZURl
c3Ryb3llZCkKLSAgICAgICAgZGVyZWYoKTsKKyAgICBmb3IgKGF1dG8qIHByb3h5IDogYWxsU2hh
cmVkV29ya2VyVGhyZWFkUHJveGllcygpKQorICAgICAgICBwcm94eS0+bm90aWZ5TmV0d29ya1N0
YXRlQ2hhbmdlKGlzT25MaW5lKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJU
aHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eS5oCmluZGV4IDRlOTJlNDU2MTcxYy4uMzM2NDI0MGFiYmI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdv
cmtlclRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29u
dGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUg
IlNoYXJlZFdvcmtlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXb3JrZXJEZWJ1Z2dlclByb3h5
LmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIgogI2luY2x1ZGUgIldvcmtl
ckxvYWRlclByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyT2JqZWN0UHJveHkuaCIKICNpbmNsdWRl
ICJXb3JrZXJPcHRpb25zLmgiCkBAIC0zNSw1MCArMzQsNTQgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBDYWNoZVN0b3JhZ2VQcm92aWRlcjsKK2NsYXNzIFBhZ2U7CiBjbGFzcyBT
aGFyZWRXb3JrZXI7CiBjbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWQ7CiAKLWNsYXNzIFNoYXJlZFdv
cmtlclRocmVhZFByb3h5IGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJl
ZFdvcmtlclRocmVhZFByb3h5PiwgcHVibGljIFdvcmtlckdsb2JhbFNjb3BlUHJveHksIHB1Ymxp
YyBXb3JrZXJPYmplY3RQcm94eSwgcHVibGljIFdvcmtlckxvYWRlclByb3h5LCBwdWJsaWMgV29y
a2VyRGVidWdnZXJQcm94eSB7CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworc3RydWN0IFdvcmtlckZl
dGNoUmVzdWx0OworCitjbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSBmaW5hbCA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4sIHB1YmxpYyBX
b3JrZXJPYmplY3RQcm94eSwgcHVibGljIFdvcmtlckxvYWRlclByb3h5LCBwdWJsaWMgV29ya2Vy
RGVidWdnZXJQcm94eSB7CiBwdWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4g
c3RhdGljIFNoYXJlZFdvcmtlclRocmVhZFByb3h5JiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpIHsg
cmV0dXJuICpuZXcgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkoc3RkOjpmb3J3YXJkPEFyZ3M+KGFy
Z3MpLi4uKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBSZWY8U2hh
cmVkV29ya2VyVGhyZWFkUHJveHk+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShzdGQ6OmZvcndhcmQ8QXJncz4oYXJn
cykuLi4pKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIH5TaGFyZWRXb3JrZXJUaHJlYWRQcm94eSgp
OwogCiAgICAgU2hhcmVkV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Q7Ci0gICAg
U2hhcmVkV29ya2VyVGhyZWFkKiB0aHJlYWQoKSB7IHJldHVybiBtX3dvcmtlclRocmVhZC5nZXQo
KTsgfQorICAgIFNoYXJlZFdvcmtlclRocmVhZCYgdGhyZWFkKCkgeyByZXR1cm4gbV93b3JrZXJU
aHJlYWQ7IH0KIAotICAgIHZvaWQgc3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNj
cmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9v
bCBpc09ubGluZSwgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VDb2RlLCBjb25zdCBDb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3Js
ZENvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSYs
IE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIEZl
dGNoUmVxdWVzdENyZWRlbnRpYWxzLCBKU0M6OlJ1bnRpbWVGbGFncykgZmluYWw7Ci0gICAgdm9p
ZCB3b3JrZXJPYmplY3REZXN0cm95ZWQoKSBmaW5hbDsKLSAgICBib29sIGhhc1BlbmRpbmdBY3Rp
dml0eSgpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgdGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUo
KSBmaW5hbDsKKyAgICBib29sIGlzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKSBjb25zdCB7IHJl
dHVybiBtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQ7IH0KKyAgICB2b2lkIHNldEFzVGVybWlu
YXRpbmdPclRlcm1pbmF0ZWQoKSB7IG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCA9IHRydWU7
IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShTaGFy
ZWRXb3JrZXImKTsKLQotICAgIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5h
bCgpOworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZFdvcmtlclRocmVhZFByb3h5KFVuaXF1ZVJl
ZjxQYWdlPiYmLCBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4mLCBj
b25zdCBVUkwmIHNjcmlwdFVSTCwgV29ya2VyRmV0Y2hSZXN1bHQmJiwgV29ya2VyT3B0aW9ucyYm
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImKTsKIAotICAg
IHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBv
cnRzJiYpIGZpbmFsOwotICAgIHZvaWQgcG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1bmN0
aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiYmKSBmaW5hbDsKLSAgICB2b2lkIG5v
dGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25saW5lKSBmaW5hbDsKLSAgICB2b2lkIHN1
c3BlbmRGb3JCYWNrRm9yd2FyZENhY2hlKCkgZmluYWw7Ci0gICAgdm9pZCByZXN1bWVGb3JCYWNr
Rm9yd2FyZENhY2hlKCkgZmluYWw7CisgICAgLy8gV29ya2VyT2JqZWN0UHJveHkuCiAgICAgdm9p
ZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2Us
IGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCkgZmluYWw7Ci0gICAgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgpIGZpbmFsOwot
ICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cyYmKSBmaW5hbDsKLSAgICB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29s
IGhhc1BlbmRpbmdBY3Rpdml0eSkgZmluYWw7Ci0gICAgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZp
dHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpIGZpbmFsOworICAgIHZvaWQgcG9zdE1lc3NhZ2VU
b1dvcmtlck9iamVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKSBmaW5hbCB7IH0KKyAgICB2
b2lkIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkKCkgZmluYWwgeyB9CisgICAgdm9pZCBjb25m
aXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCkgZmluYWwgeyB9CisgICAgdm9pZCByZXBv
cnRQZW5kaW5nQWN0aXZpdHkoYm9vbCkgZmluYWwgeyB9CisKKyAgICAvLyBXb3JrZXJMb2FkZXJQ
cm94eS4KICAgICBSZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gY3JlYXRlQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbigpIGZpbmFsOwogICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXJDb25uZWN0aW9uPiBjcmVhdGVSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0
aW9uKCkgZmluYWw7CiAgICAgdm9pZCBwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2smJikgZmluYWw7CiAgICAgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiwgY29uc3Qg
U3RyaW5nJiBtb2RlKSBmaW5hbDsKKworICAgIC8vIFdvcmtlckRlYnVnZ2VyUHJveHkuCiAgICAg
dm9pZCBwb3N0TWVzc2FnZVRvRGVidWdnZXIoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgdm9p
ZCBzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yKGJvb2wpIGZpbmFsOwog
Ci0gICAgV2Vha1B0cjxTaGFyZWRXb3JrZXI+IG1fc2hhcmVkV29ya2VyOwotICAgIFJlZlB0cjxT
aGFyZWRXb3JrZXJUaHJlYWQ+IG1fd29ya2VyVGhyZWFkOwotICAgIGNvbnN0IFJlZlB0cjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0gICAgY29uc3Qg
U3RyaW5nIG1faWRlbnRpZmllckZvckluc3BlY3RvcjsKLSAgICBib29sIG1fYXNrZWRUb1Rlcm1p
bmF0ZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2hhc1BlbmRpbmdBY3Rpdml0eSB7IGZhbHNlIH07
Ci0gICAgYm9vbCBtX21heUJlRGVzdHJveWVkIHsgZmFsc2UgfTsKKyAgICBzdGF0aWMgdm9pZCBu
ZXR3b3JrU3RhdGVDaGFuZ2VkKGJvb2wgaXNPbkxpbmUpOworICAgIHZvaWQgbm90aWZ5TmV0d29y
a1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpOworCisgICAgVW5pcXVlUmVmPFBhZ2U+IG1fcGFn
ZTsKKyAgICBSZWY8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CisgICAgUmVmPFNoYXJlZFdvcmtlclRo
cmVhZD4gbV93b3JrZXJUaHJlYWQ7CisgICAgQ2FjaGVTdG9yYWdlUHJvdmlkZXImIG1fY2FjaGVT
dG9yYWdlUHJvdmlkZXI7CisgICAgUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IG1fY2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjsKKyAgICBib29sIG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRl
ZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4
dAppbmRleCA3NTZkYTg4YjQ1ZjcuLjI5ZjRjNzgxODE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBA
IC0yOCw2ICsyOCw3IEBAIHNldChXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dF
QktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMiCiAgICAgIiR7V0VCS0lUX0RJ
Un0vTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiCiAgICAgIiR7V0VCS0lU
X0RJUn0vTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlciIKKyAgICAiJHtXRUJLSVRfRElSfS9O
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZSIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZSIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlIgpAQCAtMjAyLDYg
KzIwMyw5IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKICAgICBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbgogICAgIE5ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCiAKKyAgICBOZXR3
b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbgor
ICAgIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uCisKICAgICBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VN
YW5hZ2VyU2V0CiAKICAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uCkBAIC0zMDUsNiArMzA5LDggQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxF
UwogCiAgICAgV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlh
U291cmNlTWFuYWdlcgogCisgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbgorICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uCiAgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50
Q29ubmVjdGlvbgogICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3QKaW5kZXggNGM2NjIyMGNmMTIyLi43MjI5YzFiOTg3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTkxLDYgKzkxLDggQEAgJChQUk9K
RUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxv
YWRUYXNrLm1lc3NhZ2VzLmkKICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9OZXR3
b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9j
ZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluCkBAIC0yMTcsNiAr
MjE5LDggQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IubWVzc2FnZXMu
aW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aG5Q
cm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggZTNiNTU4NDBhZTFlLi5hODYzMjgxNDdiNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApA
QCAtNjA3LDYgKzYwNywxOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0L1dlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcwogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdl
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdl
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3Nh
Z2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNvY2tldENoYW5uZWxN
ZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0L1dlYlNvY2tldENoYW5uZWxNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNvY2tldENoYW5uZWxNZXNzYWdlc1JlcGxpZXMuaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDdhZDQ5ZTM3MzVmNC4uMzUxZmZhZTBhNTg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xMzMsNiArMTMzLDggQEAgTUVTU0FH
RV9SRUNFSVZFUlMgPSBcCiAJTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyRG93bmxvYWRUYXNrIFwKIAlOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJGZXRjaFRhc2sgXAogCU5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uIFwKKwlOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbiBcCisJTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29y
a2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gXAogCU5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0gXAogCU5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzIFwKIAlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIgXApAQCAtMjI1LDYg
KzIyNyw4IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9TcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlciBcCisJV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBcCisJ
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24gXAogCVdl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBcCiAJV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYTM0Zjc5YmRlM2UwLi5jN2Ix
N2ZkNzA3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC02Niw2ICs2NiwxMSBA
QAogI2luY2x1ZGUgIldlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXIuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgorI2luY2x1
ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBDb29raWVB
Y2NlcHRQb2xpY3kuaD4KQEAgLTEzMiw2ICsxMzcsNyBAQCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmIG5l
dAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBlc3RhYmxpc2hTV1NlcnZlckNvbm5l
Y3Rpb24oKTsKICNlbmRpZgorICAgIGVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b24oKTsKIH0KIAogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcygpCkBAIC0xNjYsNiArMTcyLDcgQEAgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6On5OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgor
ICAgIHVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiB9CiAKIHZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhhc1VwbG9hZFN0YXRlQ2hhbmdlZChib29sIGhhc1Vw
bG9hZCkKQEAgLTI3NSw2ICsyODIsMTcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW8KICAgICB9
CiAjZW5kaWYKIAorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNz
YWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKSB7CisgICAgICAgIGlmIChtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAgICAg
ICBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGlmIChtX3No
YXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKQorICAgICAgICAgICAgbV9zaGFyZWRXb3JrZXJD
b250ZXh0Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9V
SSkKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6Oldl
YlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpCiAgICAgICAg
IHJldHVybiBwYXltZW50Q29vcmRpbmF0b3IoKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyKTsKQEAgLTM5OCw5ICs0MTYsOCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxw
dHI7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICNlbmRpZgorICAgIG1f
c2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwogCiAgICAgLy8gUHJvdGVj
dCBvdXJzZWxmIGFzIHdlIG1pZ2h0IGJlIG90aGVyd2lzZSBiZSBkZWxldGVkIGR1cmluZyB0aGlz
IGZ1bmN0aW9uLgogICAgIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gcHJvdGVj
dG9yKCp0aGlzKTsKQEAgLTQ0MSw2ICs0NTgsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRp
ZgorICAgIHVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiAKICNpZiBFTkFCTEUo
QVBQTEVfUEFZX1JFTU9URV9VSSkKICAgICBtX3BheW1lbnRDb29yZGluYXRvciA9IG51bGxwdHI7
CkBAIC0xMTg2LDYgKzEyMDQsNjEgQEAgc2l6ZV90IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpmaW5kTmV0d29ya0FjdGl2aXR5VHJhY2tlcihXZWJDb3JlOjpSZXNvdXIKICAgICAgICAg
cmV0dXJuIGl0ZW0ucmVzb3VyY2VJRCA9PSByZXNvdXJjZUlEOwogICAgIH0pOwogfQorCit2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250
ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTaGFyZWRX
b3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbjoiKTsKKyAgICBh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsKKyAgICBpZiAoYXV0byogc3dTZXJ2ZXIg
PSBzZXNzaW9uID8gc2Vzc2lvbi0+c2hhcmVkV29ya2VyU2VydmVyKCkgOiBudWxscHRyKQorICAg
ICAgICBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPigqdGhpcywgV1RGTW92ZShyZWdpc3Ry
YWJsZURvbWFpbiksICpzd1NlcnZlcik7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbigpCit7CisgICAgaWYgKG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbikK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7
CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBDT05ORUNUSU9OX1JF
TEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb246Iik7CisKKyAgICBhdXRvJiBzZXJ2ZXIgPSBzZXNzaW9uLT5lbnN1cmVTaGFyZWRXb3Jr
ZXJTZXJ2ZXIoKTsKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29ya1Byb2Nlc3MsIHNlcnZlciwgbV9jb25uZWN0
aW9uLmdldCgpLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsKKworICAgIG1fc2hhcmVkV29ya2Vy
Q29ubmVjdGlvbiA9ICpjb25uZWN0aW9uOworICAgIHNlcnZlci5hZGRDb25uZWN0aW9uKFdURk1v
dmUoY29ubmVjdGlvbikpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpjbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9O
X1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImNsb3NlU2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb246Iik7CisgICAgbV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7
Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJTaGFy
ZWRXb3JrZXJDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJl
ZFdvcmtlciwgInVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uOiIpOworICAgIGlmICht
X3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAgIG1fc2hhcmVkV29ya2VyQ29ubmVjdGlv
bi0+c2VydmVyKCkucmVtb3ZlQ29ubmVjdGlvbihtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24tPndl
YlByb2Nlc3NJZGVudGlmaWVyKCkpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpzaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5l
ZWRlZCgpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJzaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZDoiKTsKKyAg
ICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5v
TG9uZ2VyTmVlZGVkIHsgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKKworICAgIG1fc2hh
cmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOworfQorCitXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2hhcmVk
V29ya2VyQ29ubmVjdGlvbigpCit7CisgICAgaWYgKCFtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24p
CisgICAgICAgIGVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oKTsKKyAgICBy
ZXR1cm4gbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uLmdldCgpOworfQogICAgIAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVu
cmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGFiOTY2
NTdkMGRmNC4uZDBhYTRlZjc0NTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC05Miw2
ICs5Miw4IEBAIGNsYXNzIE5ldHdvcmtTb2NrZXRTdHJlYW07CiBjbGFzcyBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwogY2xhc3MgV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CiAK
IG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogc3RydWN0IERhdGFLZXk7CkBAIC0xODUsNiArMTg3
LDkgQEAgcHVibGljOgogICAgIFdlYlNXU2VydmVyQ29ubmVjdGlvbiogc3dDb25uZWN0aW9uKCk7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IGNyZWF0ZUZldGNo
VGFzayhOZXR3b3JrUmVzb3VyY2VMb2FkZXImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmKTsKICNlbmRpZgorICAgIHZvaWQgc2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbklzTm9Mb25nZXJOZWVkZWQoKTsKKworICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb24qIHNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKIAogICAgIE5ldHdvcmtTY2hlbWVSZWdp
c3RyeSYgc2NoZW1lUmVnaXN0cnkoKSB7IHJldHVybiBtX3NjaGVtZVJlZ2lzdHJ5LmdldCgpOyB9
CiAKQEAgLTI1Myw2ICsyNTgsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlU29ja2V0Q2hh
bm5lbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHByb3Rv
Y29sLCBXZWJDb3JlOjpXZWJTb2NrZXRJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKICAgICB2b2lkIHVwZGF0ZVF1b3RhQmFz
ZWRPblNwYWNlVXNhZ2VGb3JUZXN0aW5nKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwog
CisgICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCk7CisgICAg
dm9pZCB1bnJlZ2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOworCiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKCk7CiAg
ICAgdm9pZCBlc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTI2MCw2ICsyNjgsOSBAQCBw
cml2YXRlOgogICAgIHZvaWQgdW5yZWdpc3RlclNXQ29ubmVjdGlvbigpOwogI2VuZGlmCiAKKyAg
ICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBjbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0
aW9uKCk7CisKICAgICB2b2lkIGNyZWF0ZVJUQ1Byb3ZpZGVyKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgdm9pZCBjb25uZWN0VG9SVENEYXRh
Q2hhbm5lbFJlbW90ZVNvdXJjZShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgc291
cmNlLCBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgaGFuZGxlciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPGJvb2w+KT4mJik7CkBAIC00MDQsNiArNDE1LDgg
QEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4gbV9zd0Nvbm5l
Y3Rpb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bj4gbV9zd0NvbnRleHRDb25uZWN0aW9uOwogI2VuZGlmCisgICAgV2Vha1B0cjxXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uPiBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb247CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+IG1f
c2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb247CiAKICNpZiBFTkFCTEUoV0VCX1JUQykKICAg
ICBib29sIG1faXNSZWdpc3RlcmVkVG9SVENEYXRhQ2hhbm5lbFByb3h5IHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDI0MjgzNTA1MGIy
NC4uYjk3Y2EzNDc5YjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KQEAgLTg4LDYgKzg4LDkgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIENsb3NlU1dDb250ZXh0Q29ubmVjdGlvbigp
CiAjZW5kaWYKIAorICAgIEVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKFdl
YktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gZG9tYWluKSAtPiAoKSBBc3luYworICAgIENsb3NlU2hhcmVkV29ya2Vy
Q29udGV4dENvbm5lY3Rpb24oKQorCiAgICAgQ3JlYXRlUlRDUHJvdmlkZXIoKSAtPiAoKSBBc3lu
YwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIENvbm5lY3RUb1JUQ0RhdGFDaGFubmVsUmVtb3Rl
U291cmNlKHN0cnVjdCBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgc291cmNlLCBz
dHJ1Y3QgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGhhbmRsZXIpIC0+IChzdGQ6
Om9wdGlvbmFsPGJvb2w+IHJlc3VsdCkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggZTJiMjRkODMyMmI2Li5kNzYxNjI4NTBj
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
Y3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJTV09yaWdpblN0b3Jl
LmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViU29j
a2V0VGFzay5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llSmFyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KQEAgLTY1Myw2ICs2NTQsMTMgQEAgYm9vbCBOZXR3b3Jr
U2Vzc2lvbjo6aGFzU2VydmljZVdvcmtlckRhdGFiYXNlUGF0aCgpIGNvbnN0CiAKICNlbmRpZiAv
LyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKK1dlYlNoYXJlZFdvcmtlclNlcnZlciYgTmV0d29y
a1Nlc3Npb246OmVuc3VyZVNoYXJlZFdvcmtlclNlcnZlcigpCit7CisgICAgaWYgKCFtX3NoYXJl
ZFdvcmtlclNlcnZlcikKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJTZXJ2ZXIgPSBtYWtlVW5pcXVl
PFdlYlNoYXJlZFdvcmtlclNlcnZlcj4oKnRoaXMpOworICAgIHJldHVybiAqbV9zaGFyZWRXb3Jr
ZXJTZXJ2ZXI7Cit9CisKIFdlYklEQlNlcnZlciYgTmV0d29ya1Nlc3Npb246OmVuc3VyZVdlYklE
QlNlcnZlcigpCiB7CiAgICAgaWYgKCFtX3dlYklEQlNlcnZlcikgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDE5MzA3Y2Y0MGJlMy4uM2Y5
ZDZjOTU1MGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5oCkBAIC03OSw2ICs3OSw3IEBAIGNsYXNzIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s7CiBj
bGFzcyBXZWJJREJTZXJ2ZXI7CiBjbGFzcyBXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnM7CiBjbGFz
cyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXI7CiBjbGFzcyBXZWJTb2NrZXRUYXNrOwogY2xhc3MgV2ViU1dPcmlnaW5TdG9yZTsKIGNs
YXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKQEAgLTIxMCw2ICsyMTEsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihib29sIHByb2Nlc3NUZXJtaW5hdGlvbkRl
bGF5RW5hYmxlZCwgU3RyaW5nJiYgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSwg
Y29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CiAjZW5kaWYKIAorICAgIFdlYlNoYXJl
ZFdvcmtlclNlcnZlciogc2hhcmVkV29ya2VyU2VydmVyKCkgeyByZXR1cm4gbV9zaGFyZWRXb3Jr
ZXJTZXJ2ZXIuZ2V0KCk7IH0KKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIGVuc3VyZVNoYXJl
ZFdvcmtlclNlcnZlcigpOworCiAgICAgV2ViSURCU2VydmVyKiB3ZWJJREJTZXJ2ZXIoKSB7IHJl
dHVybiBtX3dlYklEQlNlcnZlci5nZXQoKTsgfQogICAgIFdlYklEQlNlcnZlciYgZW5zdXJlV2Vi
SURCU2VydmVyKCk7CiAgICAgdm9pZCBjbG9zZUlEQlNlcnZlcihDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwpAQCAtMzE4LDYgKzMyMiw3IEBAIHByb3RlY3RlZDoKICAgICBzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJJbmZvPiBtX3NlcnZpY2VXb3JrZXJJbmZvOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpTV1NlcnZlcj4gbV9zd1NlcnZlcjsKICNlbmRpZgorICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI+IG1fc2hhcmVkV29ya2VyU2VydmVyOwog
CiAgICAgU3RyaW5nIG1faWRiRGF0YWJhc2VQYXRoOwogICAgIFJlZlB0cjxXZWJJREJTZXJ2ZXI+
IG1fd2ViSURCU2VydmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41OWFjYTAwMTViZTAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwCkBAIC0wLDAgKzEsMzAwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlci5oIgor
CisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisjaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Nl
c3Npb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU2hhcmVkV29ya2VyU2VydmVyOjpXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXIoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24pCisgICAgOiBtX3Nlc3Npb24oc2Vzc2lv
bikKK3sKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVyOjp+V2ViU2hhcmVkV29ya2VyU2VydmVy
KCkgPSBkZWZhdWx0OworCitQQUw6OlNlc3Npb25JRCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNl
c3Npb25JRCgpCit7CisgICAgcmV0dXJuIG1fc2Vzc2lvbi5zZXNzaW9uSUQoKTsKK30KKwordm9p
ZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiYgb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFVSTCYmIHVybCwgV2ViQ29yZTo6VHJhbnNm
ZXJyZWRNZXNzYWdlUG9ydCYmIHBvcnQsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJiB3b3JrZXJP
cHRpb25zKQoreworICAgIFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSBrZXkgeyBvcmlnaW4sIHVy
bCwgd29ya2VyT3B0aW9ucy5uYW1lIH07CisgICAgYXV0byYgc2hhcmVkV29ya2VyID0gbV9zaGFy
ZWRXb3JrZXJzLmVuc3VyZShrZXksIFsmXSB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNo
YXJlZFdvcmtlcj4ob3JpZ2luLCB1cmwsIHdvcmtlck9wdGlvbnMpOworICAgIH0pLml0ZXJhdG9y
LT52YWx1ZTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9
JXtwcml2YXRlfXMsIHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgc2hhcmVkV29ya2Vy
LT5pZGVudGlmaWVyLnRvVUludDY0KCkpOworCisgICAgaWYgKHNoYXJlZFdvcmtlci0+d29ya2Vy
T3B0aW9ucy50eXBlICE9IHdvcmtlck9wdGlvbnMudHlwZSB8fCBzaGFyZWRXb3JrZXItPndvcmtl
ck9wdGlvbnMuY3JlZGVudGlhbHMgIT0gd29ya2VyT3B0aW9ucy5jcmVkZW50aWFscykgeworICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6IEEgd29ya2VyIGFscmVhZHkgZXhpc3RzIHdpdGggdGhp
cyBuYW1lIGJ1dCBoYXMgZGlmZmVyZW50IHR5cGUgLyBjcmVkZW50aWFscyIpOworICAgICAgICBp
ZiAoYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSkpCisgICAgICAgICAgICBzZXJ2
ZXJDb25uZWN0aW9uLT5ub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIsIHsgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNj
ZXNzQ29udHJvbCB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNoYXJlZFdvcmtl
ci0+c2hhcmVkV29ya2VyT2JqZWN0cy5hZGQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwg
cG9ydCk7CisKKyAgICBpZiAoc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzLnNpemUo
KSA+IDEpIHsKKyAgICAgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29y
a2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyOiBBIHNoYXJlZCB3b3JrZXIgd2l0aCB0aGlz
IFVSTCBhbHJlYWR5IGV4aXN0cyAobm93IHNoYXJlZCBieSAldSBzaGFyZWQgd29ya2VyIG9iamVj
dHMpIiwgc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzLnNpemUoKSk7CisgICAgICAg
IGlmIChzaGFyZWRXb3JrZXItPmRpZEZpbmlzaEZldGNoaW5nKCkpIHsKKyAgICAgICAgICAgIGlm
IChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgICAgICBz
ZXJ2ZXJDb25uZWN0aW9uLT5ub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHsgfSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNo
YXJlZFdvcmtlci0+aXNSdW5uaW5nKSB7CisgICAgICAgICAgICBhdXRvKiBjb250ZXh0Q29ubmVj
dGlvbiA9IG1fY29udGV4dENvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXItPnJlZ2lzdHJhYmxl
RG9tYWluKCkpOworICAgICAgICAgICAgQVNTRVJUKGNvbnRleHRDb25uZWN0aW9uKTsKKyAgICAg
ICAgICAgIGlmIChjb250ZXh0Q29ubmVjdGlvbikKKyAgICAgICAgICAgICAgICBwb3N0Q29ubmVj
dEV2ZW50KCpjb250ZXh0Q29ubmVjdGlvbiwgc2hhcmVkV29ya2VyLT5pZGVudGlmaWVyLCBwb3J0
LCBvcmlnaW4uY2xpZW50T3JpZ2luLnRvU3RyaW5nKCkpOworICAgICAgICB9CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgQVNTRVJUKCFzaGFyZWRXb3JrZXItPmlzUnVubmluZyk7CisKKyAg
ICBhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlQoc2VydmVy
Q29ubmVjdGlvbik7CisKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6IEZldGNoaW5nIHNoYXJlZCB3b3JrZXIg
c2NyaXB0IGluIGNsaWVudCIpOworICAgIHNlcnZlckNvbm5lY3Rpb24tPmZldGNoU2NyaXB0SW5D
bGllbnQodXJsLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCB3b3JrZXJPcHRpb25zLCBb
d2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgc2hhcmVkV29ya2VyID0gV2Vha1B0ciB7ICpz
aGFyZWRXb3JrZXIgfV0oV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJiBmZXRjaFJlc3VsdCkg
eworICAgICAgICBpZiAod2Vha1RoaXMgJiYgc2hhcmVkV29ya2VyKQorICAgICAgICAgICAgd2Vh
a1RoaXMtPmRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29ya2VyU2NyaXB0KCpzaGFyZWRXb3JrZXIs
IFdURk1vdmUoZmV0Y2hSZXN1bHQpKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXI6OmxhdW5jaFNoYXJlZFdvcmtlcihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbiwgU2hhcmVkV29ya2VyJiBzaGFyZWRXb3Jr
ZXIpCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2Vy
dmVyOjpsYXVuY2hTaGFyZWRXb3JrZXI6IGNvbnRleHRDb25uZWN0aW9uPSVwLCBzaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgJmNvbnRleHRDb25uZWN0aW9uLCBzaGFyZWRXb3JrZXIu
aWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBjb250ZXh0Q29ubmVjdGlvbi5sYXVuY2hTaGFy
ZWRXb3JrZXIoc2hhcmVkV29ya2VyLm9yaWdpbiwgc2hhcmVkV29ya2VyLmlkZW50aWZpZXIsIHNo
YXJlZFdvcmtlci51cmwsIHNoYXJlZFdvcmtlci53b3JrZXJPcHRpb25zLCBzaGFyZWRXb3JrZXIu
ZmV0Y2hSZXN1bHQpOworICAgIHNoYXJlZFdvcmtlci5pc1J1bm5pbmcgPSB0cnVlOworICAgIGF1
dG8gc291cmNlT3JpZ2luID0gc2hhcmVkV29ya2VyLm9yaWdpbi5jbGllbnRPcmlnaW4udG9TdHJp
bmcoKTsKKyAgICBmb3IgKGF1dG8mIHBvcnQgOiBzaGFyZWRXb3JrZXIuc2hhcmVkV29ya2VyT2Jq
ZWN0cy52YWx1ZXMoKSkKKyAgICAgICAgcG9zdENvbm5lY3RFdmVudChjb250ZXh0Q29ubmVjdGlv
biwgc2hhcmVkV29ya2VyLmlkZW50aWZpZXIsIHBvcnQsIHNvdXJjZU9yaWdpbik7Cit9CisKK3Zv
aWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpwb3N0Q29ubmVjdEV2ZW50KFdlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uLCBXZWJDb3JlOjpT
aGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmIHNvdXJjZVBvcnQsIGNvbnN0IFN0cmluZyYgc291
cmNlT3JpZ2luKQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdv
cmtlclNlcnZlcjo6cG9zdENvbm5lY3RFdmVudDogY29udGV4dENvbm5lY3Rpb249JXAsIHNoYXJl
ZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCAmY29udGV4dENvbm5lY3Rpb24sIHNoYXJlZFdv
cmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgY29udGV4dENvbm5lY3Rpb24ucG9zdENv
bm5lY3RFdmVudChzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBzb3VyY2VQb3J0LCBzb3VyY2VPcmln
aW4pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6ZGlkRmluaXNoRmV0Y2hpbmdT
aGFyZWRXb3JrZXJTY3JpcHQoU2hhcmVkV29ya2VyJiB3b3JrZXIsIFdlYkNvcmU6OldvcmtlckZl
dGNoUmVzdWx0JiYgZmV0Y2hSZXN1bHQpCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2Vy
LCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpkaWRGaW5pc2hGZXRjaGluZ1NoYXJlZFdvcmtlclNj
cmlwdCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCAiLCB3b3JrZXI9JXAsIHN1Y2Nl
c3M9JWQiLCB3b3JrZXIuaWRlbnRpZmllci50b1VJbnQ2NCgpLCAmd29ya2VyLCBmZXRjaFJlc3Vs
dC5lcnJvci5pc051bGwoKSk7CisKKyAgICBmb3IgKGF1dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciA6IHdvcmtlci5zaGFyZWRXb3JrZXJPYmplY3RzLmtleXMoKSkgeworICAgICAgICBp
ZiAoYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSkpCisgICAgICAgICAgICBzZXJ2
ZXJDb25uZWN0aW9uLT5ub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIsIGZldGNoUmVzdWx0LmVycm9yKTsKKyAgICB9CisKKyAgICBp
ZiAoIWZldGNoUmVzdWx0LmVycm9yLmlzTnVsbCgpKSB7CisgICAgICAgIG1fc2hhcmVkV29ya2Vy
cy5yZW1vdmUod29ya2VyLmtleSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdv
cmtlci5mZXRjaFJlc3VsdCA9IFdURk1vdmUoZmV0Y2hSZXN1bHQpOworCisgICAgYXV0byByZWdp
c3RyYWJsZURvbWFpbiA9IHdvcmtlci5yZWdpc3RyYWJsZURvbWFpbigpOworICAgIGF1dG8qIGNv
bnRleHRDb25uZWN0aW9uID0gY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihy
ZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKCFjb250ZXh0Q29ubmVjdGlvbikgeworICAgICAg
ICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBsYXVuY2hTaGFyZWRXb3JrZXIoKmNvbnRleHRDb25uZWN0aW9u
LCB3b3JrZXIpOworfQorCitib29sIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6bmVlZHNDb250ZXh0
Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8mIHNoYXJl
ZFdvcmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAocmVnaXN0
cmFibGVEb21haW4ubWF0Y2hlcyhzaGFyZWRXb3JrZXItPnVybCkpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFdlYlNoYXJlZFdv
cmtlclNlcnZlcjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQoreworICAgIEFTU0VSVCghbV9jb250ZXh0
Q29ubmVjdGlvbnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKTsKKyAgICBpZiAobV9wZW5k
aW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hh
cmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbiB3aWxsIGNyZWF0ZSBhIGNv
bm5lY3Rpb24iKTsKKworICAgIG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWlucy5hZGQo
cmVnaXN0cmFibGVEb21haW4pOworICAgIG1fc2Vzc2lvbi5uZXR3b3JrUHJvY2VzcygpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6RXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzIHsgcmVnaXN0cmFibGVEb21haW4sIG1fc2Vzc2lvbi5zZXNzaW9uSUQoKSB9
LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVnaXN0cmFibGVEb21haW5d
IHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNyZWF0
ZUNvbnRleHRDb25uZWN0aW9uIHNob3VsZCBub3cgaGF2ZSBjcmVhdGVkIGEgY29ubmVjdGlvbiIp
OworCisgICAgICAgIEFTU0VSVChtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnMuY29u
dGFpbnMocmVnaXN0cmFibGVEb21haW4pKTsKKyAgICAgICAgbV9wZW5kaW5nQ29udGV4dENvbm5l
Y3Rpb25Eb21haW5zLnJlbW92ZShyZWdpc3RyYWJsZURvbWFpbik7CisKKyAgICAgICAgaWYgKG1f
Y29udGV4dENvbm5lY3Rpb25zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBpZiAobmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lz
dHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgICAgIGNyZWF0ZUNvbnRl
eHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICB9LCAwKTsKK30KKwordm9pZCBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmFkZENvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uKQoreworICAgIFJF
TEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29udGV4
dENvbm5lY3Rpb24oJXApIHdlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgJmNvbnRleHRD
b25uZWN0aW9uLCBjb250ZXh0Q29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUlu
dDY0KCkpOworCisgICAgQVNTRVJUKCFtX2NvbnRleHRDb25uZWN0aW9ucy5jb250YWlucyhjb250
ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpKSk7CisKKyAgICBtX2NvbnRleHRDb25u
ZWN0aW9ucy5hZGQoY29udGV4dENvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSwgJmNvbnRl
eHRDb25uZWN0aW9uKTsKKworICAgIGNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChjb250ZXh0Q29u
bmVjdGlvbik7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1vdmVDb250ZXh0
Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250
ZXh0Q29ubmVjdGlvbikKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6OnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKCVwKSB3ZWJQcm9jZXNzSWRl
bnRpZmllcj0lIiBQUkl1NjQsICZjb250ZXh0Q29ubmVjdGlvbiwgY29udGV4dENvbm5lY3Rpb24u
d2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKworICAgIGF1dG8gcmVnaXN0cmFi
bGVEb21haW4gPSBjb250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpOworCisgICAg
QVNTRVJUKG1fY29udGV4dENvbm5lY3Rpb25zLmdldChyZWdpc3RyYWJsZURvbWFpbikgPT0gJmNv
bnRleHRDb25uZWN0aW9uKTsKKworICAgIG1fY29udGV4dENvbm5lY3Rpb25zLnJlbW92ZShyZWdp
c3RyYWJsZURvbWFpbik7CisKKyAgICBpZiAobmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lz
dHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgY3JlYXRlQ29udGV4dENv
bm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNl
cnZlcjo6Y29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uKQoreworICAgIFJFTEVBU0VfTE9HKFNo
YXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y29udGV4dENvbm5lY3Rpb25DcmVh
dGVkKCVwKSB3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQsICZjb250ZXh0Q29ubmVjdGlv
biwgY29udGV4dENvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsK
KyAgICBhdXRvJiByZWdpc3RyYWJsZURvbWFpbiA9IGNvbnRleHRDb25uZWN0aW9uLnJlZ2lzdHJh
YmxlRG9tYWluKCk7CisgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3NoYXJlZFdvcmtlcnMudmFs
dWVzKCkpIHsKKyAgICAgICAgaWYgKHdvcmtlci0+ZGlkRmluaXNoRmV0Y2hpbmcoKSAmJiByZWdp
c3RyYWJsZURvbWFpbi5tYXRjaGVzKHdvcmtlci0+dXJsKSkKKyAgICAgICAgICAgIGxhdW5jaFNo
YXJlZFdvcmtlcihjb250ZXh0Q29ubmVjdGlvbiwgKndvcmtlcik7CisgICAgfQorfQorCithdXRv
IFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hhcmVkV29ya2VyQnlJZGVudGlmaWVyKFdlYkNvcmU6
OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikgLT4gU2hhcmVk
V29ya2VyKgoreworICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9zaGFyZWRXb3JrZXJzLnZhbHVl
cygpKSB7CisgICAgICAgIGlmICh3b3JrZXItPmlkZW50aWZpZXIgPT0gc2hhcmVkV29ya2VySWRl
bnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiB3b3JrZXIuZ2V0KCk7CisgICAgfQorICAgIHJl
dHVybiBudWxscHRyOworfQorCithdXRvIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hhcmVkV29y
a2VyQnlPYmplY3RJZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikgLT4gU2hhcmVkV29ya2VyKgoreworICAg
IGZvciAoYXV0byYgd29ya2VyIDogbV9zaGFyZWRXb3JrZXJzLnZhbHVlcygpKSB7CisgICAgICAg
IGlmICh3b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMuY29udGFpbnMoc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllcikpCisgICAgICAgICAgICByZXR1cm4gd29ya2VyLmdldCgpOworICAgIH0K
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNo
YXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK3sKKyAgICBhdXRvKiB3b3Jr
ZXIgPSBzaGFyZWRXb3JrZXJCeU9iamVjdElkZW50aWZpZXIoc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllcik7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2Vy
U2VydmVyOjpzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheTogc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcj0le3B1YmxpY31zLCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgd29ya2VyKTsKKyAgICBpZiAoIXdvcmtl
cikKKyAgICAgICAgcmV0dXJuOworCisgICAgd29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzLnJl
bW92ZShzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBpZiAoIXdvcmtlci0+c2hh
cmVkV29ya2VyT2JqZWN0cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHNodXRE
b3duU2hhcmVkV29ya2VyKHdvcmtlci0+a2V5KCkpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtl
clNlcnZlcjo6c2h1dERvd25TaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2Vy
S2V5JiBrZXkpCit7CisgICAgYXV0byB3b3JrZXIgPSBtX3NoYXJlZFdvcmtlcnMudGFrZShrZXkp
OworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6
c2h1dERvd25TaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIs
IHdvcmtlcj0lcCIsIHdvcmtlciA/IHdvcmtlci0+aWRlbnRpZmllci50b1VJbnQ2NCgpIDogMCwg
d29ya2VyLmdldCgpKTsKKyAgICBpZiAoIXdvcmtlcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byogY29udGV4dENvbm5lY3Rpb24gPSBjb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxl
RG9tYWluKHdvcmtlci0+cmVnaXN0cmFibGVEb21haW4oKSk7CisgICAgaWYgKCFjb250ZXh0Q29u
bmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgY29udGV4dENvbm5lY3Rpb24tPnRlcm1p
bmF0ZVNoYXJlZFdvcmtlcih3b3JrZXItPmlkZW50aWZpZXIpOworCisgICAgaWYgKCFuZWVkc0Nv
bnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4od29ya2VyLT5yZWdpc3RyYWJsZURv
bWFpbigpKSkKKyAgICAgICAgY29udGV4dENvbm5lY3Rpb24tPmNvbm5lY3Rpb25Jc05vTG9uZ2Vy
TmVlZGVkKCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjphZGRDb25uZWN0aW9u
KHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uPiYmIGNvbm5l
Y3Rpb24pCit7CisgICAgYXV0byBwcm9jZXNzSWRlbnRpZmllciA9IGNvbm5lY3Rpb24tPndlYlBy
b2Nlc3NJZGVudGlmaWVyKCk7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hh
cmVkV29ya2VyU2VydmVyOjphZGRDb25uZWN0aW9uKCVwKTogcHJvY2Vzc0lkZW50aWZpZXI9JSIg
UFJJdTY0LCBjb25uZWN0aW9uLmdldCgpLCBwcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKTsK
KyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbnMuY29udGFpbnMocHJvY2Vzc0lkZW50aWZpZXIpKTsK
KyAgICBtX2Nvbm5lY3Rpb25zLmFkZChwcm9jZXNzSWRlbnRpZmllciwgV1RGTW92ZShjb25uZWN0
aW9uKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1vdmVDb25uZWN0aW9u
KFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQoreworICAgIGF1
dG8gY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMudGFrZShwcm9jZXNzSWRlbnRpZmllcik7Cisg
ICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1v
dmVDb25uZWN0aW9uKCVwKTogcHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCBjb25uZWN0aW9u
LmdldCgpLCBwcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBBU1NFUlQoY29ubmVj
dGlvbik7CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
cj4gc2hhcmVkV29ya2VyT2JqZWN0c0dvaW5nQXdheTsKKyAgICBmb3IgKGF1dG8mIHdvcmtlciA6
IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBmb3IgKGF1dG8mIHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIgOiB3b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMua2V5cygp
KSB7CisgICAgICAgICAgICBpZiAoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNz
SWRlbnRpZmllcigpID09IHByb2Nlc3NJZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIHNoYXJl
ZFdvcmtlck9iamVjdHNHb2luZ0F3YXkuYXBwZW5kKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIpOworICAgICAgICB9CisgICAgfQorICAgIGZvciAoYXV0byBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyIDogc2hhcmVkV29ya2VyT2JqZWN0c0dvaW5nQXdheSkKKyAgICAgICAgc2hhcmVk
V29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7Cit9
CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlcjo6U2hhcmVkV29ya2VyOjpTaGFyZWRXb3JrZXIoY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBX
ZWJDb3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25zKQorICAgIDogaWRlbnRpZmllcihX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQorICAgICwgb3JpZ2lu
KG9yaWdpbikKKyAgICAsIHVybCh1cmwpCisgICAgLCB3b3JrZXJPcHRpb25zKHdvcmtlck9wdGlv
bnMpCit7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpwb3N0RXhjZXB0aW9uVG9X
b3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIGF1dG8qIHdv
cmtlciA9IHNoYXJlZFdvcmtlckJ5SWRlbnRpZmllcihzaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsK
KyAgICBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXI6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0l
IiBQUkl1NjQgIiwgd29ya2VyPSVwIiwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgp
LCB3b3JrZXIpOworICAgIGlmICghd29ya2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3Ig
KGF1dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA6IHdvcmtlci0+c2hhcmVkV29ya2Vy
T2JqZWN0cy5rZXlzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHNlcnZlckNvbm5lY3Rpb24gPSBt
X2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVu
dGlmaWVyKCkpKQorICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlvbi0+cG9zdEV4Y2VwdGlvblRv
V29ya2VyT2JqZWN0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGVycm9yTWVzc2FnZSwg
bGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwpOworICAgIH0KK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2ViNjIzY2M2ZTU2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hh
cmVkV29ya2VyU2VydmVyLmgKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29y
a2VySWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyS2V5Lmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9UcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9X
b3JrZXJGZXRjaFJlc3VsdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyT3B0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBD
bGllbnRPcmlnaW47Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrU2Vz
c2lvbjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb247CitjbGFzcyBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOworCitjbGFzcyBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViU2hhcmVkV29ya2VyU2VydmVy
PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQg
V2ViU2hhcmVkV29ya2VyU2VydmVyKE5ldHdvcmtTZXNzaW9uJik7CisgICAgfldlYlNoYXJlZFdv
cmtlclNlcnZlcigpOworCisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCk7CisKKyAgICB2
b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFdlYkNvcmU6
OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpUcmFuc2ZlcnJl
ZE1lc3NhZ2VQb3J0JiYsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJik7CisgICAgdm9pZCBzaGFy
ZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyKTsKKworICAgIHZvaWQgYWRkQ29udGV4dENvbm5lY3Rpb24oV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOworICAgIHZvaWQgcmVtb3ZlQ29udGV4dENvbm5l
Y3Rpb24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOworCisgICAg
dm9pZCBhZGRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uPiYmKTsKKyAgICB2b2lkIHJlbW92ZUNvbm5lY3Rpb24oV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIpOworCisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbiogY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSB7IHJldHVybiBtX2NvbnRleHRDb25uZWN0aW9u
cy5nZXQoZG9tYWluKTsgfQorCisgICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qo
V2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOworCisgICAgYm9vbCBuZWVkc0NvbnRleHRD
b25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mKSBjb25zdDsKKyAgICB2b2lkIGNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CisKKyAgICBzdHJ1Y3QgU2hhcmVk
V29ya2VyIDogQ2FuTWFrZVdlYWtQdHI8U2hhcmVkV29ya2VyPiB7CisgICAgICAgIFdURl9NQUtF
X1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKworICAgICAgICBTaGFyZWRXb3JrZXIoY29uc3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiwgY29uc3QgVVJMJiwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0
aW9ucyYpOworCisgICAgICAgIGJvb2wgZGlkRmluaXNoRmV0Y2hpbmcoKSBjb25zdCB7IHJldHVy
biAhIWZldGNoUmVzdWx0LnNjcmlwdDsgfQorICAgICAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJL
ZXkga2V5KCkgY29uc3QgeyByZXR1cm4geyBvcmlnaW4sIHVybCwgd29ya2VyT3B0aW9ucy5uYW1l
IH07IH0KKyAgICAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21h
aW4oKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9OyB9
CisKKyAgICAgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyOwor
ICAgICAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luOworICAgICAgICBVUkwgdXJsOwor
ICAgICAgICBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdvcmtlck9wdGlvbnM7CisgICAgICAgIEhh
c2hNYXA8V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29yZTo6VHJh
bnNmZXJyZWRNZXNzYWdlUG9ydD4gc2hhcmVkV29ya2VyT2JqZWN0czsKKyAgICAgICAgV2ViQ29y
ZTo6V29ya2VyRmV0Y2hSZXN1bHQgZmV0Y2hSZXN1bHQ7CisgICAgICAgIGJvb2wgaXNSdW5uaW5n
IHsgZmFsc2UgfTsKKyAgICB9OworCisgICAgU2hhcmVkV29ya2VyKiBzaGFyZWRXb3JrZXJCeUlk
ZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgU2hhcmVkV29y
a2VyKiBzaGFyZWRXb3JrZXJCeU9iamVjdElkZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRGaW5pc2hGZXRjaGluZ1NoYXJlZFdvcmtl
clNjcmlwdChTaGFyZWRXb3JrZXImLCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmKTsKKyAg
ICB2b2lkIGxhdW5jaFNoYXJlZFdvcmtlcihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uJiwgU2hhcmVkV29ya2VyJik7CisgICAgdm9pZCBwb3N0Q29ubmVjdEV2ZW50KFdl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mLCBXZWJDb3JlOjpTaGFyZWRX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0Jiwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOworICAgIHZvaWQgc2h1dERvd25TaGFyZWRXb3Jr
ZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5Jik7CisKKyAgICBOZXR3b3JrU2Vzc2lv
biYgbV9zZXNzaW9uOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIHN0
ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uPj4gbV9jb25uZWN0
aW9uczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4gbV9jb250ZXh0Q29ubmVjdGlvbnM7Cisg
ICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9wZW5kaW5nQ29udGV4dENv
bm5lY3Rpb25Eb21haW5zOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5LCBz
dGQ6OnVuaXF1ZV9wdHI8U2hhcmVkV29ya2VyPj4gbV9zaGFyZWRXb3JrZXJzOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNl
cnZlckNvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uYmIwOTE3MzQ1ODM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAK
QEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAiTG9n
Z2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZXMuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlckZldGNoUmVzdWx0Lmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCisjZGVmaW5lIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0Vf
TE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gW3dlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCAi
XSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgbV93ZWJQcm9j
ZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBDT05ORUNU
SU9OX1JFTEVBU0VfTE9HX0VSUk9SKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRX
b3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsIG1fd2ViUHJvY2Vzc0lkZW50aWZp
ZXIudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKKworV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbjo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbihOZXR3b3JrUHJvY2VzcyYg
bmV0d29ya1Byb2Nlc3MsIFdlYlNoYXJlZFdvcmtlclNlcnZlciYgc2VydmVyLCBJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJ
ZGVudGlmaWVyKQorICAgIDogbV9jb250ZW50Q29ubmVjdGlvbihjb25uZWN0aW9uKQorICAgICwg
bV9uZXR3b3JrUHJvY2VzcyhuZXR3b3JrUHJvY2VzcykKKyAgICAsIG1fc2VydmVyKHNlcnZlcikK
KyAgICAsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIod2ViUHJvY2Vzc0lkZW50aWZpZXIpCit7Cisg
ICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlv
bjoiKTsKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6fldlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb24oKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coIn5X
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOiIpOworfQorCitJUEM6OkNvbm5lY3Rpb24q
IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9u
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZW50Q29ubmVjdGlvbi5wdHIoKTsKK30KKwor
UEFMOjpTZXNzaW9uSUQgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2Vzc2lvbklE
KCkKK3sKKyAgICByZXR1cm4gc2VydmVyKCkuc2Vzc2lvbklEKCk7Cit9CisKK05ldHdvcmtTZXNz
aW9uKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpzZXNzaW9uKCkKK3sKKyAgICBy
ZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpOworfQor
Cit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OnJlcXVlc3RTaGFyZWRXb3Jr
ZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFVSTCYmIHVybCwg
V2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBvcnQsIFdlYkNvcmU6Oldvcmtlck9w
dGlvbnMmJiB3b3JrZXJPcHRpb25zKQoreworICAgIEFTU0VSVChzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7
IC8vIEZJWE1FOiBTaG91bGQgYmUgYSBNRVNTQUdFX0NIRUNLKCkuCisgICAgQ09OTkVDVElPTl9S
RUxFQVNFX0xPRygicmVxdWVzdFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllcj0le3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gdGhpcy0+c2Vzc2lvbigp
KQorICAgICAgICBzZXNzaW9uLT5lbnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKS5yZXF1ZXN0U2hh
cmVkV29ya2VyKFdURk1vdmUob3JpZ2luKSwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwg
V1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHBvcnQpLCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMpKTsKK30K
Kwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpmZXRjaFNjcmlwdEluQ2xp
ZW50KGNvbnN0IFVSTCYgdXJsLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlv
bnMmIHdvcmtlck9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V29ya2Vy
RmV0Y2hSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQ09OTkVDVElPTl9S
RUxFQVNFX0xPRygiZmV0Y2hTY3JpcHRJbkNsaWVudDogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllcj0le3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6RmV0Y2hTY3JpcHRJbkNsaWVudCB7IHVybCwgc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgd29ya2VyT3B0aW9ucyB9LCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlv
bjo6bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9M
T0coIm5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb246IHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXI9JXtwdWJsaWN9cywgc3VjY2Vzcz0lZCIsIHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBlcnJvci5pc051bGwoKSk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6Tm90aWZ5V29y
a2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbiB7IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIs
IGVycm9yIH0pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OnBv
c3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkwpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUigicG9zdEV4Y2Vw
dGlvblRvV29ya2VyT2JqZWN0OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGlj
fXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6
UG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0IHsgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCB9KTsK
K30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpzaGFyZWRXb3JrZXJP
YmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7CisgICAgQVNTRVJUKHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVudGlm
aWVyKTsgLy8gRklYTUU6IFNob3VsZCBiZSBhIE1FU1NBR0VfQ0hFQ0soKS4KKyAgICBDT05ORUNU
SU9OX1JFTEVBU0VfTE9HKCJzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheTogc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0g
dGhpcy0+c2Vzc2lvbigpKQorICAgICAgICBzZXNzaW9uLT5lbnN1cmVTaGFyZWRXb3JrZXJTZXJ2
ZXIoKS5zaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyKTsKK30KKworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0cKKyN1bmRlZiBDT05O
RUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
aGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDNkZTRlMWI0OWJkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1l
c3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKK3N0cnVjdCBXb3JrZXJP
cHRpb25zOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya1Byb2Nlc3M7
CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJl
Y2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiwgV2ViU2hhcmVkV29y
a2VyU2VydmVyJiwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIp
OworICAgIH5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCk7CisKKyAgICBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXImIHNlcnZlcigpIHsgcmV0dXJuIG1fc2VydmVyOyB9CisgICAgY29uc3Qg
V2ViU2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZlcjsg
fQorCisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCk7CisgICAgTmV0d29ya1Nlc3Npb24q
IHNlc3Npb24oKTsKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7IH0KKworICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
ZmluYWw7CisKKyAgICB2b2lkIGZldGNoU2NyaXB0SW5DbGllbnQoY29uc3QgVVJMJiwgV2ViQ29y
ZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0
aW9ucyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQm
Jik+JiYpOworICAgIHZvaWQgbm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihXZWJD
b3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJik7CisgICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2Us
IGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCk7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyLgorICAgIElQQzo6Q29u
bmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50
NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7
IH0KKworICAgIC8vIElQQyBtZXNzYWdlcy4KKyAgICB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIo
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdlYkNvcmU6
Oldvcmtlck9wdGlvbnMmJik7CisgICAgdm9pZCBzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdh
eShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKworICAgIFJlZjxJUEM6
OkNvbm5lY3Rpb24+IG1fY29udGVudENvbm5lY3Rpb247CisgICAgUmVmPE5ldHdvcmtQcm9jZXNz
PiBtX25ldHdvcmtQcm9jZXNzOworICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlciYgbV9zZXJ2ZXI7
CisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV93ZWJQcm9jZXNzSWRlbnRpZmllcjsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2Vy
L1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mYWU0YTA4MDM3NzkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjYgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKKyAgICBSZXF1ZXN0U2hhcmVk
V29ya2VyKHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCBXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFVS
TCB1cmwsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQgcG9ydCwgc3RydWN0IFdlYkNv
cmU6Oldvcmtlck9wdGlvbnMgd29ya2VyT3B0aW9ucykKKyAgICBTaGFyZWRXb3JrZXJPYmplY3RJ
c0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIpCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDljMTEyNDE1MjE4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1
ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNkZWZpbmUgQ09O
VEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhTaGFyZWRX
b3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsIHdlYlByb2Nlc3NJ
ZGVudGlmaWVyKCkudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKKworV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXImIHNlcnZlcikKKyAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQor
ICAgICwgbV9zZXJ2ZXIoc2VydmVyKQorICAgICwgbV9yZWdpc3RyYWJsZURvbWFpbihyZWdpc3Ry
YWJsZURvbWFpbikKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coIldlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Iik7CisgICAgc2VydmVyLmFkZENv
bnRleHRDb25uZWN0aW9uKCp0aGlzKTsKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24o
KQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygifldlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Iik7CisgICAgaWYgKG1fc2VydmVyICYmIG1fc2Vy
dmVyLT5jb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9t
YWluKCkpID09IHRoaXMpCisgICAgICAgIG1fc2VydmVyLT5yZW1vdmVDb250ZXh0Q29ubmVjdGlv
bigqdGhpcyk7Cit9CisKK1dlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIFdlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OndlYlByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCk7Cit9CisK
K0lQQzo6Q29ubmVjdGlvbiYgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6aXBjQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlvbi5jb25u
ZWN0aW9uKCk7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAoreworICAg
IHJldHVybiAmaXBjQ29ubmVjdGlvbigpOworfQorCit1aW50NjRfdCBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKQoreworICAgIENP
TlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiY29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQ6
Iik7CisgICAgbV9jb25uZWN0aW9uLnNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b25Jc05vTG9uZ2VyTmVlZGVkKCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNo
YXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0co
InBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQ
Ukl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgaWYgKG1fc2Vy
dmVyKQorICAgICAgICBtX3NlcnZlci0+cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KHNoYXJl
ZFdvcmtlcklkZW50aWZpZXIsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVy
LCBzb3VyY2VVUkwpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246OmxhdW5jaFNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
IG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVu
dGlmaWVyLCBjb25zdCBVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYgd29y
a2VyT3B0aW9ucywgY29uc3QgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmIGZldGNoUmVzdWx0
KQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygibGF1bmNoU2hhcmVkV29y
a2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VySWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OkxhdW5jaFNoYXJlZFdvcmtlciB7IG9yaWdpbiwgc2hhcmVk
V29ya2VySWRlbnRpZmllciwgdXJsLCB3b3JrZXJPcHRpb25zLCBmZXRjaFJlc3VsdCB9KTsKK30K
Kwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpwb3N0Q29u
bmVjdEV2ZW50KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYgcG9ydCwgY29u
c3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVB
U0VfTE9HKCJwb3N0Q29ubmVjdEV2ZW50OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2
NCwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlBvc3RDb25uZWN0RXZl
bnQgeyBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBwb3J0LCBzb3VyY2VPcmlnaW4gfSk7Cit9CisK
K3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRl
U2hhcmVkV29ya2VyKFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2Vy
SWRlbnRpZmllcikKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coInRlcm1p
bmF0ZVNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJl
ZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpUZXJtaW5hdGVTaGFyZWRXb3JrZXIg
eyBzaGFyZWRXb3JrZXJJZGVudGlmaWVyIH0pOworfQorCisjdW5kZWYgQ09OVEVYVF9DT05ORUNU
SU9OX1JFTEVBU0VfTE9HCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
aGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjY3M2VjYWUyODNmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNzkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VySWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvVHJhbnNmZXJyZWRNZXNzYWdlUG9ydC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFz
cyBSZWdpc3RyYWJsZURvbWFpbjsKK2NsYXNzIFNjcmlwdEJ1ZmZlcjsKK3N0cnVjdCBDbGllbnRP
cmlnaW47CitzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7CitzdHJ1Y3QgV29ya2VyT3B0aW9uczsK
K30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyOworCitjbGFzcyBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIElQQzo6TWVzc2Fn
ZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mLCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImKTsKKyAgICB+V2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOworCisgICAgV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdDsKKyAgICBjb25zdCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJl
dHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9CisgICAgSVBDOjpDb25uZWN0aW9uJiBpcGNDb25u
ZWN0aW9uKCkgY29uc3Q7CisKKyAgICB2b2lkIGxhdW5jaFNoYXJlZFdvcmtlcihjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25z
dCBVUkwmLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiwgY29uc3QgV2ViQ29yZTo6V29y
a2VyRmV0Y2hSZXN1bHQmKTsKKyAgICB2b2lkIHBvc3RDb25uZWN0RXZlbnQoV2ViQ29yZTo6U2hh
cmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9y
dCYsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKKyAgICB2b2lkIHRlcm1pbmF0ZVNoYXJl
ZFdvcmtlcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKKworICAgIHZvaWQgY29u
bmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKK3ByaXZhdGU6CisgICAg
Ly8gSVBDIG1lc3NhZ2VzLgorICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdl
YkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
LCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwpOworCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyLgorICAgIElQQzo6Q29ubmVjdGlvbiog
bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNz
YWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOworCisgICAgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIG1fY29ubmVjdGlvbjsKKyAgICBXZWFrUHRyPFdlYlNoYXJlZFdv
cmtlclNlcnZlcj4gbV9zZXJ2ZXI7CisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9y
ZWdpc3RyYWJsZURvbWFpbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi5hZTQ3YzEyMmNiYWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjUgQEAKKyMgQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKKyAgICBQb3N0RXhjZXB0aW9uVG9X
b3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLCBTdHJpbmcgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgU3RyaW5nIHNvdXJjZVVSTCkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKaW5k
ZXggMWM0MmQwNDBjMWE5Li5kZTMyZjgxNzE3MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5o
CkBAIC05Nyw2ICs5Nyw3IEBAIGV4dGVybiAiQyIgewogICAgIE0oU2VydmljZVdvcmtlcikgXAog
ICAgIE0oU2Vzc2lvblN0YXRlKSBcCiAgICAgTShTaGFyZWREaXNwbGF5TGlzdHMpIFwKKyAgICBN
KFNoYXJlZFdvcmtlcikgXAogICAgIE0oU3RvcmFnZSkgXAogICAgIE0oU3RvcmFnZUFQSSkgXAog
ICAgIE0oVGV4dElucHV0KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQppbmRleCA3ZWJmYTUxNmI1MDMuLjRjOGNhZDA0NjQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0zMDMsMTAgKzMwMywxMyBAQCBkZWYgdHlwZXNfdGhh
dF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTaGFyZWRTdHJp
bmdIYXNoJywKKyAgICAgICAgJ1dlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXInLAorICAg
ICAgICAnV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJDb3JlOjpTbGVlcERpc2FibGVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTb3Vy
Y2VCdWZmZXJBcHBlbmRNb2RlJywKICAgICAgICAgJ1dlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U3RvcmFnZVR5
cGUnLAorICAgICAgICAnV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCcsCiAgICAgICAg
ICdXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3Jl
OjpXZWJMb2NrSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpXZWJTb2NrZXRJZGVudGlm
aWVyJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CmluZGV4IDU3ZWYzYjE0ZWFmMi4uMzVmNmM3NDhlZTNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQKQEAgLTE0MSw2ICsxNDEsMTAgQEAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV09yaWdpblN0b3JlLmNwcCBAbm8tdW5pZnkKIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBAbm8tdW5pZnkKIE5ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBAbm8tdW5pZnkK
IAorTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAK
K05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uLmNwcAorTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5
c3RlbVN0b3JhZ2VNYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVt
U3RvcmFnZUhhbmRsZS5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3Jh
Z2VIYW5kbGVSZWdpc3RyeS5jcHAKQEAgLTc4Myw4ICs3ODcsOSBAQCBXZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCiBXZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dPcmlnaW5UYWJsZS5jcHAKIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQ
cm92aWRlci5jcHAKLVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJQcm92aWRlci5j
cHAKK1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uY3BwCiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbi5jcHAKK1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAK
IAogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCiAK
QEAgLTg4NywzICs4OTIsNyBAQCBSZW1vdGVXZWJMb2NrUmVnaXN0cnlNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrTWVzc2FnZVJlY2VpdmVyLmNwcAogV2ViQnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5TWVzc2FnZVJlY2VpdmVyLmNwcAogV2ViTG9ja1JlZ2lzdHJ5
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1l
c3NhZ2VSZWNlaXZlci5jcHAKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b25NZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBhNjc4MzY3YTc3NWEuLjMz
MDIwYmQ1YzNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC01MjksNyArNTI5LDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5Ojp0ZXJtaW5hdGVXZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyIHdlYlByb2MKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6dGVybWluYXRlVW5yZXNw
b25zaXZlU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBw
cm9jZXNzSWRlbnRpZmllcikKIHsKICAgICBpZiAoUmVmUHRyIHByb2Nlc3MgPSBXZWJQcm9jZXNz
UHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHByb2Nlc3NJZGVudGlmaWVyKSkgewotICAgICAg
ICBwcm9jZXNzLT5kaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICAgICAgcHJvY2Vzcy0+ZGlz
YWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsK
ICAgICAgICAgcHJvY2Vzcy0+cmVxdWVzdFRlcm1pbmF0aW9uKFByb2Nlc3NUZXJtaW5hdGlvblJl
YXNvbjo6RXhjZWVkZWRDUFVMaW1pdCk7CiAgICAgfQogfQpAQCAtMTQxNSwxNiArMTQxNSwyMSBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZERlc3Ryb3lXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eShXZWJVc2VyQ29udGVudAogfQogI2VuZGlmCiAKK3ZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTaGFyZWRXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV1RGTW92ZShyZWdpc3RyYWJsZURv
bWFpbiksIHNlc3Npb25JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxp
c2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlZ2lzdHJh
YmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoKnRoaXMsIFdURk1vdmUocmVnaXN0cmFi
bGVEb21haW4pLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHNlc3Npb25JRCwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2
aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUocmVnaXN0
cmFibGVEb21haW4pLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHNlc3Npb25JRCwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OnNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBX
ZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIpKQotICAgICAg
ICBwcm9jZXNzLT5kaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICAgICAgcHJvY2Vzcy0+ZGlz
YWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsK
IH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnRQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVy
LCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZp
ZXIpCkBAIC0xNDYwLDYgKzE0NjUsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjplbmRT
ZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0kKIH0KICNl
bmRpZgogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNoYXJlZFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmll
cikKK3sKKyAgICBpZiAoYXV0byogcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0Zv
cklkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAgICAgIHByb2Nlc3MtPmRpc2FibGVXb3JrZXJz
KFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKTsKK30KKwogdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IGN1
cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcXVvdGEpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9HKFN0b3JhZ2UsICIlcCAtIE5l
dHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UiLCB0aGlzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgK
aW5kZXggYTRlMzY0NWViYWFlLi42ODQxYTM0ZmUwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0zMzQsNiAr
MzM0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQ
cm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNz
SWRlbnRpZmllcik7CiAgICAgdm9pZCBlbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3Np
bmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlm
aWVyKTsKICNlbmRpZgorICAgIHZvaWQgc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xv
bmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CisgICAgdm9pZCBlc3RhYmxp
c2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAKICAgICB2b2lkIHRlcm1pbmF0ZVdlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMTJkMDZj
ZWJkNjJhLi4xNTc1N2VkOWEyNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAg
LTYwLDYgKzYwLDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNl
aXZlciB7CiAgICAgU3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQogICAg
IEVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpCiAjZW5kaWYKKyAgICBFc3Rh
Ymxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkgLT4gKCkgQXN5bmMKKyAgICBTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5v
TG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAKICAg
ICBTZXRXZWJQcm9jZXNzSGFzVXBsb2FkcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9j
ZXNzSUQsIGJvb2wgaGFzVXBsb2FkKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAppbmRleCBlNDk5MzVjMzI1ZjYuLjFhY2IzNDQ0YWZhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zNjkxLDExICszNjkxLDkgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnNldFVzZXJBZ2VudChTdHJpbmcmJiB1c2VyQWdlbnQpCiAgICAgICAgIHJl
dHVybjsKICAgICBtX3VzZXJBZ2VudCA9IFdURk1vdmUodXNlckFnZW50KTsKIAotI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKICAgICAvLyBXZSB1cGRhdGUgdGhlIHNlcnZpY2Ugd29ya2VyIHRo
ZXJlIGF0IHRoZSBtb21lbnQgdG8gYmUgc3VyZSB3ZSB1c2UgdmFsdWVzIHVzZWQgYnkgYWN0dWFs
IHdlYiBwYWdlcy4KICAgICAvLyBGSVhNRTogUmVmYWN0b3IgdGhpcyB3aGVuIHdlIGhhdmUgYSBi
ZXR0ZXIgVXNlci1BZ2VudCBzdG9yeS4KLSAgICBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS51cGRh
dGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KG1fdXNlckFnZW50KTsKLSNlbmRpZgorICAgIHByb2Nl
c3MoKS5wcm9jZXNzUG9vbCgpLnVwZGF0ZVdvcmtlclVzZXJBZ2VudChtX3VzZXJBZ2VudCk7CiAK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBhZmMyM2VlNTNmMTIuLjRi
MTliMGQxZDNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cApAQCAtNTI5LDcgKzUyOSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdldFdlYkF1dGhuUHJv
Y2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJvCiBib29sIFdlYlBy
b2Nlc3NQb29sOjpzX3VzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MgPSBmYWxzZTsKIAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlz
aFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1By
b2Nlc3NQcm94eSYgcHJveHksIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4s
IHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlByb2Nlc3NQb29s
Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmll
ciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNp
dGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Npb25JRCk7CiAg
ICAgaWYgKCF3ZWJzaXRlRGF0YVN0b3JlKQpAQCAtNTQ2LDcgKzU0Niw3IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MoTmV0CiAgICAgaWYgKHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcikgewogICAg
ICAgICAvLyBUaGlzIGlzIGEgc2VydmljZSB3b3JrZXIgZm9yIGEgc2VydmljZSB3b3JrZXIgcGFn
ZSBzbyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSB1c2UgdXNlIHRoZSBwYWdlJ3MgV2ViUHJvY2Vz
cyBmb3IgdGhlIHNlcnZpY2Ugd29ya2VyLgogICAgICAgICBpZiAoKHNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHNlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllci0+cHJvY2Vzc0lkZW50aWZpZXIoKSkpKSB7Ci0gICAgICAgICAg
ICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVTZXJ2aWNlV29ya2Vycyhwcm9jZXNz
UG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvclNlcnZpY2VXb3JrZXJzKCkp
OworICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlV29ya2VycyhX
ZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIHByb2Nlc3NQb29sLT51
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpKTsKICAgICAgICAgICAg
IGlmIChzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpIHsKICAg
ICAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hlKCkucmVtb3ZlUHJvY2Vz
cygqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0NhY2hlOjpTaG91bGRTaHV0
RG93blByb2Nlc3M6Ok5vKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIXNlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSk7CkBAIC01NjQsNyArNTY0LDcgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhOZXQKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAg
ICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IHByb2Nlc3MucHRyKCk7Ci0gICAgICAg
ICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVTZXJ2aWNlV29ya2Vycyhwcm9j
ZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvclNlcnZpY2VXb3JrZXJz
KCkpOworICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlV29ya2Vy
cyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIHByb2Nlc3NQb29s
LT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpKTsKIAogICAgICAg
ICAgICAgaWYgKHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSkg
ewogICAgICAgICAgICAgICAgIHByb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5yZW1vdmVQ
cm9jZXNzKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBXZWJQcm9jZXNzQ2FjaGU6OlNob3Vs
ZFNodXREb3duUHJvY2Vzczo6Tm8pOwpAQCAtNTc3LDcgKzU3Nyw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoTmV0CiAgICAgfQogCiAgICAgaWYgKCFzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KSB7
Ci0gICAgICAgIGF1dG8gbmV3UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVG
b3JTZXJ2aWNlV29ya2VycygqcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWluICB7IHJlZ2lz
dHJhYmxlRG9tYWluIH0sICp3ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICAgICAgYXV0byBuZXdQcm9j
ZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvcldvcmtlcnMoV2ViUHJvY2Vzc1By
b3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCAqcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxl
RG9tYWluICB7IHJlZ2lzdHJhYmxlRG9tYWluIH0sICp3ZWJzaXRlRGF0YVN0b3JlKTsKICAgICAg
ICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IG5ld1Byb2Nlc3NQcm94eS5wdHIoKTsKIAog
ICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoU2VydmljZVdvcmtlciwg
ImVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mg
Y3JlYXRpbmcgYSBuZXcgc2VydmljZSB3b3JrZXIgcHJvY2VzcyAocHJvY2VzPSVwLCBQSUQ9JWQp
Iiwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+
cHJvY2Vzc0lkZW50aWZpZXIoKSk7CkBAIC01ODYsMjAgKzU4Niw3MCBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKE5ldAogICAgICAgICBwcm9jZXNzUG9vbC0+bV9wcm9jZXNzZXMuYXBwZW5kKFdURk1v
dmUobmV3UHJvY2Vzc1Byb3h5KSk7CiAgICAgfQogCi0gICAgQVNTRVJUKCFzZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzKCkuY29udGFpbnMoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpKTsKLSAgICBz
ZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KTsK
KyAgICB3b3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpOwog
Ci0gICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2VydmljZVdvcmtlckNv
bnRleHQocHJvY2Vzc1Bvb2wtPm1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bv
b2wtPm1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBwcm9jZXNzUG9vbC0+bV9k
ZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3JlKCksIHJlZ2lzdHJhYmxlRG9tYWlu
LCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKLSAgICBpZiAoIXByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQuaXNOdWxs
KCkpCi0gICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPnNldFNlcnZpY2VXb3JrZXJV
c2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fc2VydmljZVdvcmtlclVzZXJBZ2VudCk7CisgICAgc2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQocHJv
Y2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNzUG9vbC0+bV93b3JrZXJQcmVm
ZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVy
ZW5jZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVu
dGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgaWYgKCFwcm9jZXNzUG9v
bC0+bV93b3JrZXJVc2VyQWdlbnQuaXNOdWxsKCkpCisgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHktPnNldFdvcmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV93b3JrZXJVc2VyQWdl
bnQpOwogfQorI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZUZyb21TZXJ2aWNl
V29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKK3ZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnJlbW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNz
KQogewotICAgIEFTU0VSVChzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkuY29udGFpbnMocHJvY2Vz
cykpOwotICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5yZW1vdmUocHJvY2Vzcyk7CisgICAg
QVNTRVJUKHdvcmtlclByb2Nlc3NlcygpLmNvbnRhaW5zKHByb2Nlc3MpKTsKKyAgICB3b3JrZXJQ
cm9jZXNzZXMoKS5yZW1vdmUocHJvY2Vzcyk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVz
dGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBhdXRvKiB3ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhp
c3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQoc2Vzc2lvbklEKTsKKyAgICBpZiAoIXdlYnNpdGVE
YXRhU3RvcmUpCisgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0RGF0YVN0b3JlKCkucHRyKCk7CisgICAgaWYgKCFwcm9jZXNzUG9vbHMoKS5zaXplKCkp
CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWY8V2ViUHJvY2Vzc1Bvb2w+PiBzaGFy
ZWRXb3JrZXJQcm9jZXNzUG9vbChXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKEFQSTo6UHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKS5nZXQoKSkpOworCisgICAgLy8gQXJiaXRyYXJpbHkg
Y2hvb3NlIHRoZSBmaXJzdCBwcm9jZXNzIHBvb2wgdG8gaG9zdCB0aGUgc2hhcmVkIHdvcmtlciBw
cm9jZXNzLgorICAgIGF1dG8qIHByb2Nlc3NQb29sID0gcHJvY2Vzc1Bvb2xzKClbMF07CisgICAg
QVNTRVJUKHByb2Nlc3NQb29sKTsKKworICAgIFdlYlByb2Nlc3NQcm94eSogc2hhcmVkV29ya2Vy
UHJvY2Vzc1Byb3h5IHsgbnVsbHB0ciB9OworCisgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogcHJv
Y2Vzc1Bvb2wtPm1fcHJvY2Vzc2VzKSB7CisgICAgICAgIGlmIChwcm9jZXNzLnB0cigpID09IHBy
b2Nlc3NQb29sLT5tX3ByZXdhcm1lZFByb2Nlc3MuZ2V0KCkgfHwgcHJvY2Vzcy0+aXNEdW1teVBy
b2Nlc3NQcm94eSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICgmcHJvY2Vz
cy0+d2Vic2l0ZURhdGFTdG9yZSgpICE9IHdlYnNpdGVEYXRhU3RvcmUpCisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgaWYgKCFwcm9jZXNzLT5pc01hdGNoaW5nUmVnaXN0cmFibGVEb21h
aW4ocmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
c2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5ID0gcHJvY2Vzcy5wdHIoKTsKKyAgICAgICAgc2hhcmVk
V29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2Vy
VHlwZTo6U2hhcmVkV29ya2VyLCBwcm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllckZvcldvcmtlcnMoKSk7CisKKyAgICAgICAgaWYgKHNoYXJlZFdvcmtlclByb2Nlc3NQ
cm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKSB7CisgICAgICAgICAgICBwcm9jZXNzUG9vbC0+d2Vi
UHJvY2Vzc0NhY2hlKCkucmVtb3ZlUHJvY2Vzcygqc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LCBX
ZWJQcm9jZXNzQ2FjaGU6OlNob3VsZFNodXREb3duUHJvY2Vzczo6Tm8pOworICAgICAgICAgICAg
QVNTRVJUKCFzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSk7Cisg
ICAgICAgIH0KKworICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoU2hh
cmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzIHJldXNpbmcgYW4gZXhpc3Rpbmcgd2ViIHByb2Nlc3MgKHByb2Nlc3M9JXAsIFBJ
RD0lZCkiLCBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHksIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94
eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlm
ICghc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5KSB7CisgICAgICAgIGF1dG8gbmV3UHJvY2Vzc1By
b3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6
V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyLCAqcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWlu
ICB7IHJlZ2lzdHJhYmxlRG9tYWluIH0sICp3ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICAgICAgc2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5ID0gbmV3UHJvY2Vzc1Byb3h5LnB0cigpOworCisgICAgICAg
IFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhTaGFyZWRXb3JrZXIsICJlc3RhYmxp
c2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgY3JlYXRpbmcg
YSBuZXcgc2VydmljZSB3b3JrZXIgcHJvY2VzcyAocHJvY2Vzcz0lcCwgUElEPSVkKSIsIHNoYXJl
ZFdvcmtlclByb2Nlc3NQcm94eSwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRl
bnRpZmllcigpKTsKKworICAgICAgICBwcm9jZXNzUG9vbC0+aW5pdGlhbGl6ZU5ld1dlYlByb2Nl
c3MobmV3UHJvY2Vzc1Byb3h5LCB3ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICAgICAgcHJvY2Vzc1Bv
b2wtPm1fcHJvY2Vzc2VzLmFwcGVuZChXVEZNb3ZlKG5ld1Byb2Nlc3NQcm94eSkpOworICAgIH0K
KworICAgIHdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5KTsK
KworICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29u
dGV4dChwcm9jZXNzUG9vbC0+bV93b3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQb29sLT5tX3dv
cmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZhdWx0UGFnZUdyb3Vw
LT5wcmVmZXJlbmNlcygpLnN0b3JlKCksIHJlZ2lzdHJhYmxlRG9tYWluLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CisgICAgaWYgKCFwcm9jZXNzUG9vbC0+bV93b3JrZXJVc2VyQWdlbnQu
aXNOdWxsKCkpCisgICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+c2V0V29ya2VyVXNl
ckFnZW50KHByb2Nlc3NQb29sLT5tX3dvcmtlclVzZXJBZ2VudCk7CiB9Ci0jZW5kaWYKIAogdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6d2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdlZCgpCiB7
CkBAIC0xMDAzLDEwICsxMDUzLDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFBy
b2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogCiAgICAgbV9iYWNrRm9yd2FyZENhY2hl
LT5yZW1vdmVFbnRyaWVzRm9yUHJvY2Vzcyhwcm9jZXNzKTsKIAotI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLSAgICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQotICAg
ICAgICByZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3Nlcyhwcm9jZXNzKTsKLSNlbmRpZgor
ICAgIGlmIChwcm9jZXNzLmlzUnVubmluZ1dvcmtlcnMoKSkKKyAgICAgICAgcmVtb3ZlRnJvbVdv
cmtlclByb2Nlc3Nlcyhwcm9jZXNzKTsKIAogICAgIHN0YXRpY19jYXN0PFdlYkNvbnRleHRTdXBw
bGVtZW50Kj4oc3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKSktPnByb2Nl
c3NEaWRDbG9zZSgmcHJvY2Vzcyk7CiAKQEAgLTEwNjcsMTIgKzExMTUsMTIgQEAgUmVmPFdlYlBy
b2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbihX
ZWJzaXRlRGF0YVN0b3IKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLVVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXIgV2ViUHJvY2Vzc1Bvb2w6OnVzZXJDb250ZW50Q29udHJv
bGxlcklkZW50aWZpZXJGb3JTZXJ2aWNlV29ya2VycygpCitVc2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyIFdlYlByb2Nlc3NQb29sOjp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
Rm9yV29ya2VycygpCiB7Ci0gICAgaWYgKCFtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclNlcnZp
Y2VXb3JrZXIpCi0gICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yU2VydmljZVdvcmtl
ciA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpjcmVhdGUoKTsKKyAgICBpZiAoIW1f
dXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2VycykKKyAgICAgICAgbV91c2VyQ29udGVudENv
bnRyb2xsZXJGb3JXb3JrZXJzID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmNyZWF0
ZSgpOwogCi0gICAgcmV0dXJuIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yU2VydmljZVdvcmtl
ci0+aWRlbnRpZmllcigpOworICAgIHJldHVybiBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvcldv
cmtlcnMtPmlkZW50aWZpZXIoKTsKIH0KICNlbmRpZgogCkBAIC0xMTE5LDE1ICsxMTY3LDEzIEBA
IFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGll
bnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAKICAgICBhdXRvIHBhZ2UgPSBwcm9jZXNzLT5jcmVh
dGVXZWJQYWdlKHBhZ2VDbGllbnQsIFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKIAotI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAoIW1fc2VydmljZVdvcmtlclByZWZlcmVu
Y2VzKSB7Ci0gICAgICAgIG1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzID0gcGFnZS0+cHJlZmVy
ZW5jZXNTdG9yZSgpOwotICAgICAgICBmb3IgKGF1dG8mIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDog
c2VydmljZVdvcmtlclByb2Nlc3NlcygpKQotICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nl
c3MudXBkYXRlU2VydmljZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoKm1fc2VydmljZVdvcmtlclBy
ZWZlcmVuY2VzKTsKKyAgICBpZiAoIW1fd29ya2VyUHJlZmVyZW5jZXMpIHsKKyAgICAgICAgbV93
b3JrZXJQcmVmZXJlbmNlcyA9IHBhZ2UtPnByZWZlcmVuY2VzU3RvcmUoKTsKKyAgICAgICAgZm9y
IChhdXRvJiB3b3JrZXJQcm9jZXNzIDogd29ya2VyUHJvY2Vzc2VzKCkpCisgICAgICAgICAgICB3
b3JrZXJQcm9jZXNzLnVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoKm1fd29ya2VyUHJlZmVy
ZW5jZXMpOwogICAgIH0KICAgICBpZiAodXNlckNvbnRlbnRDb250cm9sbGVyKQotICAgICAgICBt
X3VzZXJDb250ZW50Q29udHJvbGxlckZvclNlcnZpY2VXb3JrZXIgPSB1c2VyQ29udGVudENvbnRy
b2xsZXI7Ci0jZW5kaWYKKyAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JXb3JrZXJz
ID0gdXNlckNvbnRlbnRDb250cm9sbGVyOwogCiAgICAgYm9vbCBlbmFibGVQcm9jZXNzU3dhcE9u
Q3Jvc3NTaXRlTmF2aWdhdGlvbiA9IHBhZ2UtPnByZWZlcmVuY2VzKCkucHJvY2Vzc1N3YXBPbkNy
b3NzU2l0ZU5hdmlnYXRpb25FbmFibGVkKCk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAg
LTExNTAsMTYgKzExOTYsMTQgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNy
ZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSToKICAgICByZXR1cm4g
cGFnZTsKIH0KIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnVwZGF0ZVNlcnZpY2VXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQp
Cit2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5n
JiB1c2VyQWdlbnQpCiB7Ci0gICAgaWYgKG1fc2VydmljZVdvcmtlclVzZXJBZ2VudCA9PSB1c2Vy
QWdlbnQpCisgICAgaWYgKG1fd29ya2VyVXNlckFnZW50ID09IHVzZXJBZ2VudCkKICAgICAgICAg
cmV0dXJuOwotICAgIG1fc2VydmljZVdvcmtlclVzZXJBZ2VudCA9IHVzZXJBZ2VudDsKLSAgICBm
b3IgKGF1dG8mIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogc2VydmljZVdvcmtlclByb2Nlc3Nlcygp
KQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy5zZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50
KG1fc2VydmljZVdvcmtlclVzZXJBZ2VudCk7CisgICAgbV93b3JrZXJVc2VyQWdlbnQgPSB1c2Vy
QWdlbnQ7CisgICAgZm9yIChhdXRvJiB3b3JrZXJQcm9jZXNzIDogd29ya2VyUHJvY2Vzc2VzKCkp
CisgICAgICAgIHdvcmtlclByb2Nlc3Muc2V0V29ya2VyVXNlckFnZW50KG1fd29ya2VyVXNlckFn
ZW50KTsKIH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dl
YnNpdGVEYXRhU3RvcmUoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFdlYnNpdGVEYXRh
U3RvcmUmIGRhdGFTdG9yZSkKIHsKQEAgLTE1MzgsOCArMTU4MiwxMyBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjp0ZXJtaW5hdGVTZXJ2aWNlV29ya2VycygpCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKLSAgICB3aGlsZSAoc2Vy
dmljZVdvcmtlclByb2Nlc3NlcygpLmNvbXB1dGVTaXplKCkpCi0gICAgICAgIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzZXMoKS5iZWdpbigpLT5kaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICBWZWN0
b3I8UmVmPFdlYlByb2Nlc3NQcm94eT4+IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXM7CisgICAgd29y
a2VyUHJvY2Vzc2VzKCkuZm9yRWFjaChbJl0oYXV0byYgcHJvY2VzcykgeworICAgICAgICBpZiAo
cHJvY2Vzcy5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQorICAgICAgICAgICAgc2VydmljZVdv
cmtlclByb2Nlc3Nlcy5hcHBlbmQocHJvY2Vzcyk7CisgICAgfSk7CisgICAgZm9yIChhdXRvJiBz
ZXJ2aWNlV29ya2VyUHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMpCisgICAgICAgIHNl
cnZpY2VXb3JrZXJQcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6Oldvcmtl
clR5cGU6OlNlcnZpY2VXb3JrZXIpOwogI2VuZGlmCiB9CiAKQEAgLTE3NjcsMTMgKzE4MTYsMTEg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVwb3J0V2ViQ29udGVudENQVVRpbWUoU2Vjb25kcyBj
cHVUaW1lLCB1aW50NjRfdCBhY3Rpdml0eVMKICNlbmRpZgogfQogCi0jaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQotV2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5PiYgV2ViUHJvY2Vzc1Bvb2w6
OnNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKQorV2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5PiYg
V2ViUHJvY2Vzc1Bvb2w6OndvcmtlclByb2Nlc3NlcygpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4+IHByb2Nlc3NlczsKICAgICByZXR1
cm4gcHJvY2Vzc2VzOwogfQotI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVBy
b2Nlc3NBc3NlcnRpb25zKCkKIHsKQEAgLTE3ODUsMjAgKzE4MzIsMjUgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKQogICAgIGlmIChhdXRvKiBncHVQcm9j
ZXNzID0gR1BVUHJvY2Vzc1Byb3h5OjpzaW5nbGV0b25JZkNyZWF0ZWQoKSkKICAgICAgICAgZ3B1
UHJvY2Vzcy0+dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbigpOwogI2VuZGlmCi0jaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQorCiAgICAgLy8gQ2hlY2sgb24gbmV4dCBydW4gbG9vcCBzaW5jZSB0aGUg
d2ViIHByb2Nlc3MgcHJveHkgdG9rZW5zIGFyZSBwcm9iYWJseSBiZWluZyB1cGRhdGVkLgogICAg
IGNhbGxPbk1haW5SdW5Mb29wKFtdIHsKLSAgICAgICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2Vy
UHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSkKLSAgICAgICAgICAgIHNlcnZpY2VX
b3JrZXJQcm9jZXNzLnVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7Ci0gICAg
fSk7CisgICAgICAgIHdvcmtlclByb2Nlc3NlcygpLmZvckVhY2goW10oYXV0byYgd29ya2VyUHJv
Y2VzcykgeworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICAgICAgICAgIGlmICh3b3Jr
ZXJQcm9jZXNzLmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCisgICAgICAgICAgICAgICAgd29y
a2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdlYlByb2Nlc3NQcm94eTo6
V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiAjZW5kaWYKKyAgICAgICAgICAgIGlmICh3b3Jr
ZXJQcm9jZXNzLmlzUnVubmluZ1NoYXJlZFdvcmtlcnMoKSkKKyAgICAgICAgICAgICAgICB3b3Jr
ZXJQcm9jZXNzLnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV2ViUHJvY2Vzc1Byb3h5OjpX
b3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpOworICAgICAgICB9KTsKKyAgICB9KTsKIH0KIAogYm9v
bCBXZWJQcm9jZXNzUG9vbDo6aXNTZXJ2aWNlV29ya2VyUGFnZUlEKFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgcGFnZUlEKSBjb25zdAogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICAv
LyBGSVhNRTogVGhpcyBpcyBpbmVmZmljaWVudC4KLSAgICByZXR1cm4gV1RGOjphbnlPZihzZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzKCksIFtwYWdlSURdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICByZXR1
cm4gV1RGOjphbnlPZih3b3JrZXJQcm9jZXNzZXMoKSwgW3BhZ2VJRF0oYXV0byYgcHJvY2Vzcykg
ewogICAgICAgICByZXR1cm4gcHJvY2Vzcy5oYXNTZXJ2aWNlV29ya2VyUGFnZVByb3h5KHBhZ2VJ
RCk7CiAgICAgfSk7CiAjZW5kaWYKQEAgLTIxMjQsMTYgKzIxNzYsMjYgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6c2V0VXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyhib29sIHVzZVNlcGFy
YXRlU2VydmljZVcKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK3NpemVfdCBXZWJQ
cm9jZXNzUG9vbDo6c2VydmljZVdvcmtlclByb3hpZXNDb3VudCgpIGNvbnN0Cit7CisgICAgdW5z
aWduZWQgY291bnQgPSAwOworICAgIHdvcmtlclByb2Nlc3NlcygpLmZvckVhY2goWyZdKGF1dG8m
IHByb2Nlc3MpIHsKKyAgICAgICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMo
KSkKKyAgICAgICAgICAgICsrY291bnQ7CisgICAgfSk7CisgICAgcmV0dXJuIGNvdW50OworfQor
CiBib29sIFdlYlByb2Nlc3NQb29sOjpoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5
Rm9yVGVzdGluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6YW55T2Yoc2VydmljZVdvcmtl
clByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9jZXNzKSB7CisgICAgcmV0dXJuIFdURjo6YW55T2Yo
d29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuIHBy
b2Nlc3MuaGFzU2VydmljZVdvcmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKTsKICAg
ICB9KTsKIH0KIAogYm9vbCBXZWJQcm9jZXNzUG9vbDo6aGFzU2VydmljZVdvcmtlckJhY2tncm91
bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6OmFueU9mKHNl
cnZpY2VXb3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2VzcykgeworICAgIHJldHVybiBX
VEY6OmFueU9mKHdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAg
IHJldHVybiBwcm9jZXNzLmhhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kQWN0aXZpdHlGb3JUZXN0
aW5nKCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aAppbmRleCBlYjY2ZDg5NDkwZGYuLmU3MGI2ZjQyOWY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0zNzQsMTcgKzM3NCwyMCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBuZXR3b3JrUHJvY2Vzc0RpZFRlcm1pbmF0ZShOZXR3b3JrUHJvY2Vzc1Byb3h5JiwgTmV0
d29ya1Byb2Nlc3NQcm94eTo6VGVybWluYXRpb25SZWFzb24pOwogCiAgICAgYm9vbCBpc1NlcnZp
Y2VXb3JrZXJQYWdlSUQoV2ViUGFnZVByb3h5SWRlbnRpZmllcikgY29uc3Q7CisgICAgdm9pZCBy
ZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYpOworCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQotICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwg
UEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBy
ZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmKTsKLSAgICBz
aXplX3Qgc2VydmljZVdvcmtlclByb3hpZXNDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHNlcnZpY2VX
b3JrZXJQcm9jZXNzZXMoKS5jb21wdXRlU2l6ZSgpOyB9Ci0gICAgdm9pZCB1cGRhdGVTZXJ2aWNl
V29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKLSAgICBVc2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyIHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JT
ZXJ2aWNlV29ya2VycygpOworICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRp
Zmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICBzaXplX3Qgc2VydmljZVdvcmtlclByb3hpZXND
b3VudCgpIGNvbnN0OworICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgdXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKTsKICAgICBib29sIGhhc1NlcnZp
Y2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3Q7CiAgICAgYm9vbCBo
YXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0OwogI2Vu
ZGlmCiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyUHJvY2Vzc0NyYXNoZWQoV2ViUHJvY2Vzc1Byb3h5
Jik7CiAKKyAgICB2b2lkIHVwZGF0ZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCk7CisgICAgc3RhdGljIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6
U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkgY29uc3Q7CiAjZW5k
aWYKQEAgLTYxOCwxMyArNjIxLDExIEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFwPFBBTDo6U2Vz
c2lvbklELCBXZWFrUHRyPFdlYlByb2Nlc3NQcm94eT4+IG1fZHVtbXlQcm9jZXNzUHJveGllczsg
Ly8gTGlnaHR3ZWlnaHQgV2ViUHJvY2Vzc1Byb3h5IG9iamVjdHMgd2l0aG91dCBiYWNraW5nIHBy
b2Nlc3MuCiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgc3RhdGljIFdlYWtIYXNo
U2V0PFdlYlByb2Nlc3NQcm94eT4mIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKTsKLSAgICBib29s
IG1fd2FpdGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNlIH07Ci0g
ICAgU3RyaW5nIG1fc2VydmljZVdvcmtlclVzZXJBZ2VudDsKLSAgICBzdGQ6Om9wdGlvbmFsPFdl
YlByZWZlcmVuY2VzU3RvcmU+IG1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzOwotICAgIFJlZlB0
cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gbV91c2VyQ29udGVudENvbnRyb2xsZXJG
b3JTZXJ2aWNlV29ya2VyOwotI2VuZGlmCisgICAgc3RhdGljIFdlYWtIYXNoU2V0PFdlYlByb2Nl
c3NQcm94eT4mIHdvcmtlclByb2Nlc3NlcygpOworCisgICAgc3RkOjpvcHRpb25hbDxXZWJQcmVm
ZXJlbmNlc1N0b3JlPiBtX3dvcmtlclByZWZlcmVuY2VzOworICAgIFJlZlB0cjxXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eT4gbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JXb3JrZXJzOwor
ICAgIFN0cmluZyBtX3dvcmtlclVzZXJBZ2VudDsKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
ICAgICBSZWZQdHI8R1BVUHJvY2Vzc1Byb3h5PiBtX2dwdVByb2Nlc3M7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAwNTdkNDk5MjQxOGEuLmI3NDZh
N2Q3ZDIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNpbmNsdWRlICJXZWJz
aXRlRGF0YUZldGNoT3B0aW9uLmgiCkBAIC0xODIsMTEgKzE4MywxMSBAQCBSZWY8V2ViUHJvY2Vz
c1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bv
b2wsIFdlYnNpdAogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotUmVmPFdlYlByb2Nl
c3NQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JTZXJ2aWNlV29ya2VycyhXZWJQcm9j
ZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21h
aW4sIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCitSZWY8V2ViUHJvY2Vzc1By
b3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvcldvcmtlcnMoV29ya2VyVHlwZSB3b3JrZXJU
eXBlLCBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVn
aXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCiB7CiAg
ICAgYXV0byBwcm94eSA9IGFkb3B0UmVmKCpuZXcgV2ViUHJvY2Vzc1Byb3h5KHByb2Nlc3NQb29s
LCAmd2Vic2l0ZURhdGFTdG9yZSwgSXNQcmV3YXJtZWQ6Ok5vLCBDcm9zc09yaWdpbk1vZGU6OlNo
YXJlZCwgQ2FwdGl2ZVBvcnRhbE1vZGU6OkRpc2FibGVkKSk7CiAgICAgcHJveHktPm1fcmVnaXN0
cmFibGVEb21haW4gPSBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKLSAgICBwcm94eS0+ZW5h
YmxlU2VydmljZVdvcmtlcnMocHJvY2Vzc1Bvb2wudXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
ZmllckZvclNlcnZpY2VXb3JrZXJzKCkpOworICAgIHByb3h5LT5lbmFibGVXb3JrZXJzKHdvcmtl
clR5cGUsIHByb2Nlc3NQb29sLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3Jr
ZXJzKCkpOwogICAgIHByb3h5LT5jb25uZWN0KCk7CiAgICAgcmV0dXJuIHByb3h5OwogfQpAQCAt
OTk1LDEwICs5OTYsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZEJlY29tZVVucmVzcG9u
c2l2ZSgpCiAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGlzUmVzcG9uc2l2ZUNhbGxiYWNrcykK
ICAgICAgICAgY2FsbGJhY2soaXNXZWJQcm9jZXNzUmVzcG9uc2l2ZSk7CiAKLSAgICAvLyBJZiB0
aGUgd2ViIHByb2Nlc3MgYmVjb21lcyB1bnJlc3BvbnNpdmUgYW5kIG9ubHkgcnVucyBzZXJ2aWNl
IHdvcmtlcnMsIGtpbGwgaXQgb3Vyc2VsdmVzIHNpbmNlIHRoZXJlIGFyZSBubyBuYXRpdmUgY2xp
ZW50cyB0byBkbyBpdC4KLSAgICBpZiAoaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSAmJiBtX3Bh
Z2VNYXAuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPR19F
UlJPUihQZXJmb3JtYW5jZUxvZ2dpbmcsICJkaWRCZWNvbWVVbnJlc3BvbnNpdmU6IFRlcm1pbmF0
aW5nIHNlcnZpY2Ugd29ya2VyLW9ubHkgd2ViIHByb2Nlc3MgYmVjYXVzZSBpdCBpcyB1bnJlc3Bv
bnNpdmUiKTsKLSAgICAgICAgZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgLy8gSWYgdGhl
IHdlYiBwcm9jZXNzIGJlY29tZXMgdW5yZXNwb25zaXZlIGFuZCBvbmx5IHJ1bnMgc2VydmljZS9z
aGFyZWQgd29ya2Vycywga2lsbCBpdCBvdXJzZWx2ZXMgc2luY2UgdGhlcmUgYXJlIG5vIG5hdGl2
ZSBjbGllbnRzIHRvIGRvIGl0LgorICAgIGlmIChpc1J1bm5pbmdXb3JrZXJzKCkgJiYgbV9wYWdl
TWFwLmlzRW1wdHkoKSkgeworICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0dfRVJS
T1IoUGVyZm9ybWFuY2VMb2dnaW5nLCAiZGlkQmVjb21lVW5yZXNwb25zaXZlOiBUZXJtaW5hdGlu
ZyB3b3JrZXItb25seSB3ZWIgcHJvY2VzcyBiZWNhdXNlIGl0IGlzIHVucmVzcG9uc2l2ZSIpOwor
ICAgICAgICBkaXNhYmxlV29ya2Vycyh7IFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIFdvcmtl
clR5cGU6OlNoYXJlZFdvcmtlciB9KTsKICAgICAgICAgdGVybWluYXRlKCk7CiAgICAgfQogfQpA
QCAtMTY5NCw4ICsxNjk1LDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yTWFpbkZyYW1lKGNvbnN0IFVSTCYgdXJsKQogICAgIGF1dG8gcmVnaXN0cmFi
bGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9OwogICAgIGlmICht
X3JlZ2lzdHJhYmxlRG9tYWluICYmICptX3JlZ2lzdHJhYmxlRG9tYWluICE9IHJlZ2lzdHJhYmxl
RG9tYWluKSB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgICAgICBkaXNhYmxlU2Vy
dmljZVdvcmtlcnMoKTsKKyAgICAgICAgZGlzYWJsZVdvcmtlcnMoV29ya2VyVHlwZTo6U2Vydmlj
ZVdvcmtlcik7CiAjZW5kaWYKKwogICAgICAgICAvLyBOdWxsIG91dCByZWdpc3RyYWJsZSBkb21h
aW4gc2luY2UgdGhpcyBwcm9jZXNzIGhhcyBub3cgYmVlbiB1c2VkIGZvciBzZXZlcmFsIGRvbWFp
bnMuCiAgICAgICAgIG1fcmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiB7IH07CiAgICAgICAgIHJldHVybjsKQEAgLTE4NzIsNTQgKzE4NzQsODUgQEAgdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmIHMKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9LCAw
KTsKIH0KKyNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0U2VydmljZVdvcmtlclVz
ZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpz
ZXRXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiB7Ci0gICAgQVNTRVJU
KG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U2V0VXNlckFnZW50IHsgdXNlckFnZW50IH0sIDApOwor
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VySW5mb3Jt
YXRpb24pCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2VyQWdlbnQgfSwgMCk7CisjZW5kaWYKKyAgICBpZiAobV9z
aGFyZWRXb3JrZXJJbmZvcm1hdGlvbikKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2VyQWdlbnQg
fSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29ya2VyUHJl
ZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKK3ZvaWQgV2Vi
UHJvY2Vzc1Byb3h5Ojp1cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUmIHN0b3JlKQogewotICAgIEFTU0VSVChtX3NlcnZpY2VXb3JrZXJJbmZvcm1h
dGlvbik7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OlVwZGF0ZVByZWZlcmVuY2VzU3RvcmUgeyBzdG9yZSB9LCAwKTsKKyNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCisgICAgaWYgKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQorICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlUHJlZmVy
ZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDApOworI2VuZGlmCisgICAgaWYgKG1fc2hhcmVkV29ya2Vy
SW5mb3JtYXRpb24pCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDAp
OwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NB
c3NlcnRpb24oKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByb2Nlc3NBc3Nl
cnRpb24oV29ya2VyVHlwZSB3b3JrZXJUeXBlKQogewotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxF
QVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNz
ZXJ0aW9uOiIpOwotICAgIEFTU0VSVChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbik7Ci0gICAg
aWYgKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKKyAgICBhdXRvJiB3b3JrZXJJbmZvcm1h
dGlvbiA9IHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8gbV9zaGFyZWRX
b3JrZXJJbmZvcm1hdGlvbiA6IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOworICAgIEFTU0VS
VCh3b3JrZXJJbmZvcm1hdGlvbik7CisgICAgaWYgKCF3b3JrZXJJbmZvcm1hdGlvbikKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgYm9vbCBzaG91bGRUYWtlRm9yZWdyb3VuZEFjdGl2aXR5ID0gV1RG
OjphbnlPZihtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2VzLCBbJl0o
YXV0byYgcHJvY2VzcykgeworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNz
U3VzcGVuc2lvbiwgInVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb246IHdvcmtlclR5cGU9JXtw
dWJsaWN9cyIsIHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8gInNoYXJl
ZCIgOiAic2VydmljZSIpOworCisgICAgLy8gRklYTUU6IENsaWVudHMgZG8gbm90IHByb3Blcmx5
IGdldCBwb3B1bGF0ZWQgaW4gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiBzbyB3ZSBjdXJyZW50
bHkgdGFrZSBhbiBhc3NlcnRpb24gbm8gbWF0dGVyIHdoYXQuCisgICAgaWYgKHdvcmtlclR5cGUg
PT0gV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSB7CisgICAgICAgIGlmICghUHJvY2Vzc1Rocm90
dGxlcjo6aXNWYWxpZEZvcmVncm91bmRBY3Rpdml0eSh3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZp
dHkpKQorICAgICAgICAgICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRs
ZXIuZm9yZWdyb3VuZEFjdGl2aXR5KCJXb3JrZXIgZm9yIGZvcmVncm91bmQgdmlldyhzKSJfcyk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBib29sIHNob3VsZFRha2VGb3JlZ3JvdW5k
QWN0aXZpdHkgPSBXVEY6OmFueU9mKHdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMs
IFsmXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiAmcHJvY2VzcyAhPSB0aGlzICYm
ICEhcHJvY2Vzcy5tX2ZvcmVncm91bmRUb2tlbjsKICAgICB9KTsKICAgICBpZiAoc2hvdWxkVGFr
ZUZvcmVncm91bmRBY3Rpdml0eSkgewotICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6Omlz
VmFsaWRGb3JlZ3JvdW5kQWN0aXZpdHkobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2
aXR5KSkKLSAgICAgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9
IG1fdGhyb3R0bGVyLmZvcmVncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGZvcmVn
cm91bmQgdmlldyhzKSJfcyk7CisgICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxp
ZEZvcmVncm91bmRBY3Rpdml0eSh3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQorICAgICAg
ICAgICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuZm9yZWdyb3Vu
ZEFjdGl2aXR5KCJXb3JrZXIgZm9yIGZvcmVncm91bmQgdmlldyhzKSJfcyk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBib29sIHNob3VsZFRha2VCYWNrZ3JvdW5kQWN0aXZpdHkgPSBX
VEY6OmFueU9mKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMsIFsm
XShhdXRvJiBwcm9jZXNzKSB7CisgICAgYm9vbCBzaG91bGRUYWtlQmFja2dyb3VuZEFjdGl2aXR5
ID0gV1RGOjphbnlPZih3b3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2VzLCBbJl0oYXV0
byYgcHJvY2VzcykgewogICAgICAgICByZXR1cm4gJnByb2Nlc3MgIT0gdGhpcyAmJiAhIXByb2Nl
c3MubV9iYWNrZ3JvdW5kVG9rZW47CiAgICAgfSk7CiAgICAgaWYgKHNob3VsZFRha2VCYWNrZ3Jv
dW5kQWN0aXZpdHkpIHsKLSAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkQmFj
a2dyb3VuZEFjdGl2aXR5KG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCi0g
ICAgICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90
dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2VyIGZvciBiYWNrZ3JvdW5kIHZp
ZXcocykiX3MpOworICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRCYWNrZ3Jv
dW5kQWN0aXZpdHkod29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKKyAgICAgICAgICAgIHdv
cmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0
eSgiV29ya2VyIGZvciBiYWNrZ3JvdW5kIHZpZXcocykiX3MpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgaWYgKG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKSB7
CisgICAgaWYgKHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciAmJiBtX2hh
c1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZykgewogICAgICAgICBXRUJQUk9DRVNT
UFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJTZXJ2aWNlIFdvcmtlciBmb3Ig
YmFja2dyb3VuZCBwcm9jZXNzaW5nIik7Ci0gICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6
aXNWYWxpZEJhY2tncm91bmRBY3Rpdml0eShtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0
aXZpdHkpKQotICAgICAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5
ID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3IgYmFj
a2dyb3VuZCBwcm9jZXNzaW5nIl9zKTsKKyAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjpp
c1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCisg
ICAgICAgICAgICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNr
Z3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2VyIGZvciBiYWNrZ3JvdW5kIHByb2Nlc3Npbmci
X3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9zZXJ2aWNlV29ya2VySW5mb3Jt
YXRpb24tPmFjdGl2aXR5ID0gbnVsbHB0cjsKKyAgICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZp
dHkgPSBudWxscHRyOworfQorCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2hhcmVk
V29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0Vf
TE9HKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHQ6IFN0YXJ0ZWQi
KTsKKyAgICBtYXJrUHJvY2Vzc0FzUmVjZW50bHlVc2VkKCk7CisgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRlZmF1bHRQYWdlR3JvdXAo
KS5wYWdlR3JvdXBJRCgpLCBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uLT5yZW1vdGVXb3JrZXJQ
YWdlUHJveHlJRCwgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbi0+cmVtb3RlV29ya2VyUGFnZUlE
LCBzdG9yZSwgcmVnaXN0cmFibGVEb21haW4sIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24tPmlu
aXRpYWxpemF0aW9uRGF0YSB9LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxl
IHsKKyAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JF
TEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHQ6IEZp
bmlzaGVkIik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSwgMCk7CiB9CiAK
KyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZWdp
c3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCiB7
CiAgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKQEAgLTE5MjcsNyArMTk2MCw3
IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9j
ZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCiAKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFT
RV9MT0coU2VydmljZVdvcmtlciwgInJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3M6
IGNsaWVudFByb2Nlc3M9JXAsIGNsaWVudFBJRD0lZCIsICZwcm94eSwgcHJveHkucHJvY2Vzc0lk
ZW50aWZpZXIoKSk7CiAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nl
c3Nlcy5hZGQocHJveHkpOwotICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9u
KCk7CisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlOjpTZXJ2aWNl
V29ya2VyKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVucmVnaXN0ZXJTZXJ2aWNlV29y
a2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb3h5KQpAQCAtMTkzNyw3ICsxOTcw
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50
UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb3gKIAogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxF
QVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAidW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9j
ZXNzOiBjbGllbnRQcm9jZXNzPSVwLCBjbGllbnRQSUQ9JWQiLCAmcHJveHksIHByb3h5LnByb2Nl
c3NJZGVudGlmaWVyKCkpOwogICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQ
cm9jZXNzZXMucmVtb3ZlKHByb3h5KTsKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fz
c2VydGlvbigpOworICAgIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6
U2VydmljZVdvcmtlcik7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpoYXNTZXJ2aWNlV29y
a2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0CkBAIC0xOTU3LDcgKzE5OTAs
NyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFBy
b2Nlc3NpbmcoKQogCiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNw
ZW5zaW9uLCAic3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmciKTsKICAgICBt
X2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyA9IHRydWU7Ci0gICAgdXBkYXRl
U2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNz
QXNzZXJ0aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogfQogCiB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6ZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKCkKQEAgLTE5Njcs
MjMgKzIwMDAsMzkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNr
Z3JvdW5kUHJvY2Vzc2luZygpCiAKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJv
Y2Vzc1N1c3BlbnNpb24sICJlbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmciKTsK
ICAgICBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyA9IGZhbHNlOwotICAg
IHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBkYXRlV29ya2Vy
UHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KICNlbmRpZiAv
LyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaXNhYmxl
U2VydmljZVdvcmtlcnMoKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpc2FibGVXb3JrZXJzKE9w
dGlvblNldDxXb3JrZXJUeXBlPiB3b3JrZXJUeXBlKQogewotICAgIGlmICghbV9zZXJ2aWNlV29y
a2VySW5mb3JtYXRpb24pCisgICAgQVNTRVJUKCF3b3JrZXJUeXBlLmlzRW1wdHkoKSk7CisKKyAg
ICBib29sIGRpZENoYW5nZSA9IGZhbHNlOworICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdv
cmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpICYmIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKSB7
CisgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uID0geyB9OworICAgICAgICBkaWRD
aGFuZ2UgPSB0cnVlOworICAgIH0KKyAgICBpZiAod29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJU
eXBlOjpTaGFyZWRXb3JrZXIpICYmIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24pIHsKKyAgICAg
ICAgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA9IHsgfTsKKyAgICAgICAgZGlkQ2hhbmdlID0g
dHJ1ZTsKKyAgICB9CisgICAgaWYgKCFkaWRDaGFuZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiZGlzYWJsZVNlcnZp
Y2VXb3JrZXJzOiIpOwotICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uID0geyB9OworICAg
IFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzLCAiZGlzYWJsZVdvcmtlcnM6IERp
c2FibGluZyB3b3JrZXJzIChTaGFyZWRXb3JrZXJzPSVkLCBTZXJ2aWNlV29ya2Vycz0lZCkiLCB3
b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciksIHdvcmtlclR5cGUu
Y29udGFpbnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikpOworCiAgICAgdXBkYXRlQmFja2dy
b3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKIAorICAgIGlmICghaXNSdW5uaW5nV29ya2Vycygp
KQorICAgICAgICBwcm9jZXNzUG9vbCgpLnJlbW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMoKnRoaXMp
OworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHByb2Nlc3NQb29sKCkucmVtb3Zl
RnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKnRoaXMpOwotICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9zZSB7IH0sIDApOworICAgIGlmICh3b3Jr
ZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpKQorICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q2xvc2UgeyB9LCAwKTsK
ICNlbmRpZgorICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNoYXJlZFdv
cmtlcikpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6Q2xvc2UgeyB9LCAwKTsKIAogICAgIG1heWJlU2h1dERvd24oKTsKIH0K
QEAgLTIwMDQsMTEgKzIwNTMsMTMgQEAgc3RhdGljIFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29tcGls
ZWRDb250ZW50UnVsZUxpc3REYXRhLCBVUkw+PiBjb250ZW50UnVsZUxpc3RzRnIKIH0KICNlbmRp
ZgogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlU2VydmljZVdvcmtlcnMoY29uc3QgVXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
ZmllcikKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVXb3JrZXJzKFdvcmtlclR5cGUgd29y
a2VyVHlwZSwgY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYgdXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllcikKIHsKLSAgICBBU1NFUlQoIW1fc2VydmljZVdvcmtlcklu
Zm9ybWF0aW9uKTsKLSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtl
ciwgImVuYWJsZVNlcnZpY2VXb3JrZXJzOiIpOwotICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uID0gUmVtb3RlV29ya2VySW5mb3JtYXRpb24geworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxF
QVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiZW5hYmxlV29ya2Vyczogd29ya2VyVHlwZT0ldSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPih3b3JrZXJUeXBlKSk7CisgICAgYXV0byYgd29ya2VySW5mb3Jt
YXRpb24gPSB3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/IG1fc2hhcmVk
V29ya2VySW5mb3JtYXRpb24gOiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsKKyAgICBBU1NF
UlQoIXdvcmtlckluZm9ybWF0aW9uKTsKKworICAgIHdvcmtlckluZm9ybWF0aW9uID0gUmVtb3Rl
V29ya2VySW5mb3JtYXRpb24gewogICAgICAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyOjpnZW5l
cmF0ZSgpLAogICAgICAgICBQYWdlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwKICAgICAgICAgUmVt
b3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhIHsKQEAgLTIwMjEsOSArMjA3Miw4IEBAIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjplbmFibGVTZXJ2aWNlV29ya2Vycyhjb25zdCBVc2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyCiAgICAgICAgIHsgfQogICAgIH07CiAgICAgdXBkYXRlQmFja2dy
b3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0g
ICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKLSNlbmRpZgorCisgICAg
dXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbih3b3JrZXJUeXBlKTsKIH0KIAogdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OmRpZENyZWF0ZVNsZWVwRGlzYWJsZXIoU2xlZXBEaXNhYmxlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiByZWFzb24sIGJvb2wgZGlzcGxheSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggZjhiNzk1YjFkMzQzLi43
MGU4OTA1MWNjYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CkBAIC0xMzYsOSArMTM2LDEzIEBAIHB1YmxpYzoKIAogICAgIGVudW0gY2xhc3MgU2hvdWxkTGF1
bmNoUHJvY2VzcyA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgZW51bSBjbGFzcyBDYXB0aXZlUG9y
dGFsTW9kZSA6IGJvb2wgeyBEaXNhYmxlZCwgRW5hYmxlZCB9OworICAgIGVudW0gY2xhc3MgV29y
a2VyVHlwZSA6IHVpbnQzMl90IHsKKyAgICAgICAgU2VydmljZVdvcmtlciA9IDEgPDwgMCwKKyAg
ICAgICAgU2hhcmVkV29ya2VyID0gMSA8PCAxCisgICAgfTsKIAogICAgIHN0YXRpYyBSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmLCBXZWJzaXRlRGF0YVN0b3JlKiwg
Q2FwdGl2ZVBvcnRhbE1vZGUsIElzUHJld2FybWVkLCBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGUg
PSBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGU6OlNoYXJlZCwgU2hvdWxkTGF1bmNoUHJvY2VzcyA9
IFNob3VsZExhdW5jaFByb2Nlc3M6Olllcyk7Ci0gICAgc3RhdGljIFJlZjxXZWJQcm9jZXNzUHJv
eHk+IGNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKFdlYlByb2Nlc3NQb29sJiwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJiwgV2Vic2l0ZURhdGFTdG9yZSYpOworICAgIHN0YXRpYyBSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiBjcmVhdGVGb3JXb3JrZXJzKFdvcmtlclR5cGUsIFdlYlByb2Nlc3NQb29s
JiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgV2Vic2l0ZURhdGFTdG9yZSYpOwogCiAg
ICAgfldlYlByb2Nlc3NQcm94eSgpOwogCkBAIC0xNjEsOCArMTY1LDggQEAgcHVibGljOgogICAg
IHZvaWQgc2V0SXNJblByb2Nlc3NDYWNoZShib29sLCBXaWxsU2h1dERvd24gPSBXaWxsU2h1dERv
d246Ok5vKTsKICAgICBib29sIGlzSW5Qcm9jZXNzQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtX2lz
SW5Qcm9jZXNzQ2FjaGU7IH0KIAotICAgIHZvaWQgZW5hYmxlU2VydmljZVdvcmtlcnMoY29uc3Qg
VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYpOwotICAgIHZvaWQgZGlzYWJsZVNlcnZp
Y2VXb3JrZXJzKCk7CisgICAgdm9pZCBlbmFibGVXb3JrZXJzKFdvcmtlclR5cGUsIGNvbnN0IFVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImKTsKKyAgICB2b2lkIGRpc2FibGVXb3JrZXJz
KE9wdGlvblNldDxXb3JrZXJUeXBlPik7CiAKICAgICBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRl
RGF0YVN0b3JlKCkgY29uc3QgeyBBU1NFUlQobV93ZWJzaXRlRGF0YVN0b3JlKTsgcmV0dXJuICpt
X3dlYnNpdGVEYXRhU3RvcmU7IH0KICAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0
ZURhdGFTdG9yZSYpOwpAQCAtMTk0LDYgKzE5OCw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNS
dW5uaW5nU2VydmljZVdvcmtlcnMoKSBjb25zdCB7IHJldHVybiAhIW1fc2VydmljZVdvcmtlcklu
Zm9ybWF0aW9uOyB9CiAgICAgYm9vbCBpc1N0YW5kYWxvbmVTZXJ2aWNlV29ya2VyUHJvY2Vzcygp
IGNvbnN0IHsgcmV0dXJuIGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkgJiYgIXBhZ2VDb3VudCgp
OyB9CisgICAgYm9vbCBpc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkgY29uc3QgeyByZXR1cm4gISFt
X3NoYXJlZFdvcmtlckluZm9ybWF0aW9uOyB9CisgICAgYm9vbCBpc1N0YW5kYWxvbmVTaGFyZWRX
b3JrZXJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gaXNSdW5uaW5nU2hhcmVkV29ya2VycygpICYm
ICFwYWdlQ291bnQoKTsgfQorICAgIGJvb2wgaXNSdW5uaW5nV29ya2VycygpIGNvbnN0IHsgcmV0
dXJuIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gfHwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b247IH0KIAogICAgIGJvb2wgaXNEdW1teVByb2Nlc3NQcm94eSgpIGNvbnN0OwogCkBAIC0zNTks
MTIgKzM2NiwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZUF1ZGlibGVNZWRpYUFzc2Vy
dGlvbnMoKTsKIAorICAgIHZvaWQgc2V0V29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwor
ICAgIHZvaWQgdXBkYXRlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlJik7CisgICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0KGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCB1cGRhdGVXb3JrZXJQcm9jZXNz
QXNzZXJ0aW9uKFdvcmtlclR5cGUpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2
b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdl
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNldFNl
cnZpY2VXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCB1cGRhdGVTZXJ2
aWNlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CiAg
ICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyUGFnZVByb3h5KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZVByb3h5SUQpIHsgcmV0dXJuIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uICYmIG1fc2Vy
dmljZVdvcmtlckluZm9ybWF0aW9uLT5yZW1vdGVXb3JrZXJQYWdlUHJveHlJRCA9PSBwYWdlUHJv
eHlJRDsgfQotICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsK
ICAgICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1By
b3h5Jik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2Vi
UHJvY2Vzc1Byb3h5Jik7CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2
aXR5Rm9yVGVzdGluZygpIGNvbnN0OwpAQCAtNjU2LDYgKzY2NCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4gY2xpZW50UHJvY2Vzc2VzOwogICAgIH07
CiAgICAgc3RkOjpvcHRpb25hbDxSZW1vdGVXb3JrZXJJbmZvcm1hdGlvbj4gbV9zZXJ2aWNlV29y
a2VySW5mb3JtYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxSZW1vdGVXb3JrZXJJbmZvcm1hdGlv
bj4gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbjsKICAgICBib29sIG1faGFzU2VydmljZVdvcmtl
ckJhY2tncm91bmRQcm9jZXNzaW5nIHsgZmFsc2UgfTsKIAogICAgIEhhc2hNYXA8V2ViQ29yZTo6
U2xlZXBEaXNhYmxlcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTbGVlcERp
c2FibGVyPj4gbV9zbGVlcERpc2FibGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRjMDJmODk0MTJkZi4uMWE5YjA5M2I0NzJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTg4MSw2ICs4ODEsNyBAQAogCQk0NjE0RjEzMjI1REVEODc1MDA3MDA2RTcgLyogR1BVUHJvY2Vz
c0Nvbm5lY3Rpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NkFDNTMyNDI1REVEODFFMDAzQjU3RUMgLyogR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb25QYXJhbWV0ZXJzLmggKi87IH07CiAJCTQ2MUNDQ0E1MjMxNDg1QTcwMEI2NTlCOSAvKiBV
SVJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjMyMzY4NTIzMTQ4MzNGMDBBNDhGQTcgLyogVUlSZW1vdGVPYmplY3RS
ZWdpc3RyeS5oICovOyB9OwogCQk0NjFDQ0NBNjIzMTQ4NUFBMDBCNjU5QjkgLyogV2ViUmVtb3Rl
T2JqZWN0UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2MzIzNjgzMjMxNDgxRUYwMEE0OEZBNyAvKiBXZWJSZW1vdGVPYmplY3RSZWdpc3Ry
eS5oICovOyB9OworCQk0NjFFMUJGMjI3OUEwMTE2MDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NjFFMUJFRjI3OUEwMTBGMDA2QUY1M0IgLyogV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2M0ZENDgwMUVCOTQ1OTYw
MEEyOTgyQyAvKiBXS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzRkQ0N0YxRUI5NDU4NDAwQTI5ODJDIC8q
IFdLUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYzRkQ0ODIxRUI5NEVDMDAwQTI5ODJDIC8qIFByb2Nl
c3NUZXJtaW5hdGlvblJlYXNvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDYzRkQ0ODExRUI5NEVBRDAwQTI5ODJDIC8qIFByb2Nlc3NUZXJtaW5hdGlv
blJlYXNvbi5oICovOyB9OwogCQk0NjU5RjI1RjI3NUZGNkIyMDBCQkIzNjkgLyogQ2FwdGl2ZVBv
cnRhbE1vZGVPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDY1OUYyNUUyNzVGRjZCMjAwQkJCMzY5IC8qIENhcHRpdmVQb3J0YWxNb2RlT2Jz
ZXJ2ZXIuaCAqLzsgfTsKQEAgLTkwMSwxMCArOTAyLDEzIEBACiAJCTQ2QzM5MjI5MjMxNkVDNEQw
MDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkMzOTIyODIzMTZFQzREMDA4RUVEOUIgLyogV2Vi
UGFnZVByb3h5SWRlbnRpZmllci5oICovOyB9OwogCQk0NkM1QjdDRTI3QUFEREQzMDAwQzVCNDcg
LyogUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzVCN0NEMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1v
dGVXb3JrZXJGcmFtZUxvYWRlckNsaWVudC5oICovOyB9OwogCQk0NkM1QjdDRjI3QUFEREQ2MDAw
QzVCNDcgLyogUmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzVCN0NCMjdBQUREQkUwMDBDNUI0NyAv
KiBSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92aWRlci5oICovOyB9OworCQk0NkM5MTZBQTI3OTlE
MEEyMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM5MTZBOTI3OTlEMDlEMDAxQTRFN0MgLyog
V2ViU2hhcmVkV29ya2VyU2VydmVyLmggKi87IH07CiAJCTQ2Q0UzQjExMjNEOEM4NDkwMDE2QTk2
QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Q0UzQjEwMjNEOEM4M0QwMDE2QTk2QSAvKiBXZWJCYWNr
Rm9yd2FyZExpc3RDb3VudHMuaCAqLzsgfTsKKwkJNDZENDhGQ0UyNzk5RDdFMTAwN0QyMDE0IC8q
IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RDQ4RkNEMjc5OUQ3REUwMDdEMjAx
NCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi87IH07CiAJ
CTQ2REYwNjNDMUYzOTA1RjgwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REYwNjNB
MUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCAqLzsgfTsK
IAkJNDZFRTI4NDkyNjlFMDRBQzAwREQ0OEFCIC8qIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3Ry
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFRTI4
NDgyNjlFMDQ5QjAwREQ0OEFCIC8qIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oICovOyB9
OwogCQk0NkVFMjg0RDI2OUUwNTI1MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxS
ZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDZFRTI4NEMyNjlFMDUxNzAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0
cnkuaCAqLzsgfTsKKwkJNDZFRTNFOEIyNzYzRkQyRjAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2ODM4NjY3Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2RjM4RThDMjQxNkU2NzMwMDU5Mzc1QSAvKiBSdW5u
aW5nQm9hcmRTZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDZGMzhFOEIyNDE2RTY2RDAwNTkzNzVBIC8qIFJ1bm5pbmdCb2FyZFNlcnZp
Y2VzU1BJLmggKi87IH07CiAJCTQ2RjlCMjYzMjM1MjZFRjMwMDZGRTVGQSAvKiBXZWJCYWNrRm9y
d2FyZENhY2hlRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2RjlCMjYyMjM1MjZFRDAwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50
cnkuaCAqLzsgfTsKIAkJNDkzMTAyQkQyNjgzRjNEMDAwMkJCODg1IC8qIEFwcFByaXZhY3lSZXBv
cnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5MzEw
MkJDMjY4M0YzQTUwMDJCQjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggKi87IH07CkBAIC00MjI0
LDYgKzQyMjgsOSBAQAogCQk0NjA4ODlGRjI2MUZBOEE5MDBFMjUwMEQgLyogUmVtb3RlUmVuZGVy
aW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2MEY0ODhEMUY5OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7
IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwogCQk0NjBGNDg4RTFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9X
ZWJLaXQvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk0NjFFMUJFQzI3OUEwMTBFMDA2QUY1M0IgLyog
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MUUxQkVGMjc5QTAx
MEYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MUUxQkYw
Mjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjIxMDdENzFGMzhEQkQzMDBERDc4MTAgLyogUGluZ0xvYWQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGluZ0xvYWQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NjMyMzY4MzIzMTQ4MUVGMDBBNDhGQTcgLyogV2ViUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzMjM2ODQyMzE0ODI1QzAwQTQ4RkE3IC8q
IFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlbW90
ZU9iamVjdFJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyNTUs
OCArNDI2MiwxMSBAQAogCQk0NjgwOUE3QjIzRDkyMjUzMDBDMjk3RDAgLyogV2ViQ29va2llQ2Fj
aGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29va2llQ2Fj
aGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgzNTY5QTIxRTgxQ0M3MDA2
RTI3QTMgLyogUHJvdmlzaW9uYWxQYWdlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUHJvdmlzaW9uYWxQYWdlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDY4MzU2OUIyMUU4MUNDNzAwNkUyN0EzIC8qIFByb3Zpc2lvbmFsUGFnZVByb3h5LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb3Zpc2lvbmFsUGFnZVBy
b3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4Mzg2NjcyNzYzRkFCMTAw
Q0Y5MTgyIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0NjgzODY2ODI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OUI5MEYy
NzU2RDE0MzAwMDdDNjUxIC8qIFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDY4OUI5MTAyNzU2RDE0MzAwMDdDNjUxIC8qIFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0Njk0M0RDQjI3NjNGODM0MDA0QjYxMEUgLyogV2ViU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjlERTgwMjI3M0VDQzVEMDA5MzAyNzYgLyogUHJvY2Vzc0xhdW5jaGVyQ29jb2EubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcm9jZXNzTGF1bmNoZXJDb2NvYS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZBMkI2MDYxRTU2NzVBMjAwQzNERURB
IC8qIEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNz
VGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkEyQjYwNzFFNTY3NUEy
MDBDM0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5l
c3NUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI3NSw3ICs0Mjg1LDEx
IEBACiAJCTQ2QzVCN0NCMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJMaWJXZWJSVENQ
cm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92aWRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkM1QjdDQzI3QUFEREJFMDAwQzVCNDcg
LyogUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NkM1QjdDRDI3QUFEREJFMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyRnJhbWVMb2Fk
ZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZDOTE2QTgyNzk5RDA5RDAwMUE0RTdD
IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkM5MTZB
OTI3OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NkNFM0IxMDIzRDhDODNEMDAxNkE5NkEgLyogV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkQ0OEZDQzI3OTlEN0REMDA3RDIw
MTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZENDhGQ0QyNzk5RDdERTAwN0QyMDE0
IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRGMDYzOTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2REYwNjNBMUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RTk3
NjBBMjc1N0Y2QzkwMEFDREQzNyAvKiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2Fn
ZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5
Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI4NSw2ICs0Mjk5
LDcgQEAKIAkJNDZFRTI4NEEyNjlFMDUxNzAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFu
bmVsUmVnaXN0cnkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmV0d29ya0Jy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDZFRTI4NEIyNjlFMDUxNzAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFu
bmVsUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0
d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2RUUyODRDMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5l
bFJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtCcm9h
ZGNhc3RDaGFubmVsUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZF
RTNFOEEyNzYzRkQyQTAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZGMzhFOEIyNDE2RTY2RDAwNTkz
NzVBIC8qIFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2RjlCMjYyMjM1MjZFRDAwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hl
RW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0ZvcndhcmRD
YWNoZUVudHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5MzEwMkJDMjY4M0Yz
QTUwMDJCQjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcFByaXZh
Y3lSZXBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkyOTQsNiArOTMwOSwy
MCBAQAogCQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsK
KwkJNDY4Mzg2NjUyNzYzRkExQjAwQ0Y5MTgyIC8qIFNoYXJlZFdvcmtlciAqLyA9IHsKKwkJCWlz
YSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNDZDOTE2QTgyNzk5RDA5RDAwMUE0
RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAgKi8sCisJCQkJNDZDOTE2QTkyNzk5RDA5
RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5oICovLAorCQkJCTQ2ODM4NjY4Mjc2
M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLywK
KwkJCQk0NjgzODY2NzI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbi5oICovLAorCQkJCTQ2RUUzRThBMjc2M0ZEMkEwMDYwQzcwRiAvKiBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovLAorCQkJCTQ2RDQ4RkNDMjc5OUQ3
REQwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cCAqLywKKwkJCQk0NkQ0OEZDRDI3OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oICovLAorCQkJKTsKKwkJCXBhdGggPSBTaGFyZWRXb3Jr
ZXI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk0NjlERTgwMTI3M0VDQzVE
MDA5MzAyNzYgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKApAQCAtOTM1OCw2ICs5Mzg3LDcgQEAKIAkJCQk1MTQ1MjZFQTI3MUUxNjEwMDAwNDY3QjYg
LyogTm90aWZpY2F0aW9ucyAqLywKIAkJCQk1QzAxQkMzNTI2RDQ2QUQ0MDBGRUI0MkYgLyogUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQgKi8sCiAJCQkJOTNCQTA0RDkyMTUxQURDRDAwN0Y0NTVGIC8q
IFNlcnZpY2VXb3JrZXIgKi8sCisJCQkJNDY4Mzg2NjUyNzYzRkExQjAwQ0Y5MTgyIC8qIFNoYXJl
ZFdvcmtlciAqLywKIAkJCQk5MzA4NURDMjI2RTFCQjY1MDAwRUM2QTcgLyogc3RvcmFnZSAqLywK
IAkJCQk0MTMwNzU5NzFERTg0RUQ3MDAzOUVDNjkgLyogd2VicnRjICovLAogCQkJCTkzQjI2MTQz
MjI3RDE0MzEwMEI5N0E3NiAvKiBXZWJTdG9yYWdlICovLApAQCAtOTQ2MCw4ICs5NDkwLDEyIEBA
CiAJCQkJNDE5QUNGOUIxRjk4MUQyNjAwOUYxQTgzIC8qIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQuaCAqLywKIAkJCQk1MUJFQjYyOTFGM0E1QUNEMDA1MDI5QjkgLyogV2ViU2Vydmlj
ZVdvcmtlclByb3ZpZGVyLmNwcCAqLywKIAkJCQk1MUJFQjYyQTFGM0E1QUNEMDA1MDI5QjkgLyog
V2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmggKi8sCisJCQkJNDYxRTFCRUMyNzlBMDEwRTAwNkFG
NTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgKi8sCisJ
CQkJNDYxRTFCRUYyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5oICovLAorCQkJCTQ2MUUxQkYwMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCiAJCQkJ
NDY2OEEwQkIyN0FCNjA0MDAwQzcyMEJDIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b24uY3BwICovLAogCQkJCTQ2NjhBMEI4MjdBQjYwM0YwMEM3MjBCQyAvKiBXZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uLmggKi8sCisJCQkJNDY5NDNEQ0IyNzYzRjgzNDAwNEI2MTBFIC8q
IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDY2
OEEwQjkyN0FCNjAzRjAwQzcyMEJDIC8qIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmNwcCAqLywK
IAkJCQk0NjY4QTBCQTI3QUI2MDQwMDBDNzIwQkMgLyogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIu
aCAqLywKIAkJCQk1MTdBNTMwMzFGNDc5M0IyMDBEQ0RDMEEgLyogV2ViU1dDbGllbnRDb25uZWN0
aW9uLmNwcCAqLywKQEAgLTEzNjU4LDggKzEzNjkyLDEyIEBACiAJCQkJN0MzNjFENzMxOTI3RkEz
NjAwMzZBNTlEIC8qIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlEM0I5NDg0OTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MUJFQjYyQzFGM0E1QUQ3MDA1MDI5QjkgLyogV2ViU2VydmljZVdvcmtl
clByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjFFMUJGMjI3OUEwMTE2MDA2QUY1M0Ig
LyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0NjY4QTBCRDI3QUI2MDU2MDBDNzIwQkMgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY2OEEwQkMyN0FCNjA1MDAwQzcyMEJD
IC8qIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkM5MTZB
QTI3OTlEMEEyMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQk0NkVFM0U4QjI3NjNGRDJGMDA2MEM3MEYgLyogV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZENDhGQ0UyNzk5RDdFMTAwN0QyMDE0
IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVDOEREMzgwMUZFNDUyMTYwMEYyQTU1NiAvKiBXZWJzaXRlQXV0b3BsYXlQb2xp
Y3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDgzMkQ3MUE5Q0RGOTYwMDhCNERGRSAvKiBXZWJz
aXRlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0ODMyRDExQTlCREMyRjAwOEI0REZFIC8q
IFdlYnNpdGVEYXRhUmVjb3JkLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCmluZGV4IDgxZGQwNDExYTIzOS4uYmIzNTQ3ZjQ2YWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHAKQEAgLTU3LDcgKzU3LDEwIEBACiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmgiCisjaW5jbHVk
ZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0
Q2hhbm5lbC5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWxNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIldlYlNvY2tldFN0cmVhbS5oIgpAQCAtMTc0LDYgKzE3NywxNiBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBJUAogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCisgICAgaWYgKGRlY29k
ZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgc2hhcmVkV29y
a2VyQ29ubmVjdGlvbigpLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgQVNTRVJUKFNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpOworICAgICAgICBpZiAoYXV0
byogY29udGV4dE1hbmFnZXJDb25uZWN0aW9uID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6
OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFdlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiY+KCpjb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24pLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAgaWYg
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYXltZW50Q29v
cmRpbmF0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApp
bmRleCBlZGMwNDkzYmQzZWQuLjBiNjQ4MGE2MWQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgK
QEAgLTQ4LDYgKzQ4LDcgQEAgZW51bSBjbGFzcyBIVFRQQ29va2llQWNjZXB0UG9saWN5IDogdWlu
dDhfdDsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXI7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOwogY2xhc3MgV2ViU1dD
bGllbnRDb25uZWN0aW9uOwogY2xhc3MgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44NDMwNjQ3NjY1ZmEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTI5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZVdlYkxvY2tSZWdpc3Ry
eS5oIgorI2luY2x1ZGUgIlJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVk
ZSAiUmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJCcm9hZGNh
c3RDaGFubmVsUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5o
IgorI2luY2x1ZGUgIldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5oIgorI2luY2x1ZGUg
IldlYkRhdGFiYXNlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAi
V2ViUHJlZmVyZW5jZXNLZXlzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUg
IldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIldlYlNvY2tldFByb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9FbXB0eUNsaWVudHMuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1BhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VDb25maWd1cmF0aW9uLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Vz
ZXJBZ2VudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyRmV0Y2hSZXN1bHQuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5l
Y3Rpb24+JiYgY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MsIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3Vw
SUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgcHJlZmVyZW5jZXNT
dG9yZSwgUmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYgaW5pdGlhbGl6YXRpb25EYXRh
KQorICAgIDogbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXVEZNb3ZlKGNvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKSkKKyAgICAsIG1fcmVnaXN0cmFibGVEb21haW4oV1RGTW92ZShyZWdp
c3RyYWJsZURvbWFpbikpCisgICAgLCBtX3BhZ2VHcm91cElEKHBhZ2VHcm91cElEKQorICAgICwg
bV93ZWJQYWdlUHJveHlJRCh3ZWJQYWdlUHJveHlJRCkKKyAgICAsIG1fcGFnZUlEKHBhZ2VJRCkK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAsIG1fdXNlckFnZW50KFdlYkNvcmU6OnN0YW5kYXJk
VXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSh7IH0pKQorI2Vsc2UKKyAgICAsIG1fdXNlckFn
ZW50KHN0YW5kYXJkVXNlckFnZW50KCkpCisjZW5kaWYKKyAgICAsIG1fdXNlckNvbnRlbnRDb250
cm9sbGVyKFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6Z2V0T3JDcmVhdGUoaW5pdGlhbGl6YXRp
b25EYXRhLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpKQoreworI2lmIEVOQUJMRShD
T05URU5UX0VYVEVOU0lPTlMpCisgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZENvbnRl
bnRSdWxlTGlzdHMoV1RGTW92ZShpbml0aWFsaXphdGlvbkRhdGEuY29udGVudFJ1bGVMaXN0cykp
OworI2VuZGlmCisKKyAgICB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKHByZWZlcmVuY2VzU3RvcmUp
OworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmRpc2FibGVUZXJtaW5hdGlvbigpOworfQor
CitXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246On5XZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CisKK3ZvaWQgV2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjplc3RhYmxpc2hDb25uZWN0aW9uKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX2Nvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29u
bmVjdGlvbiB7IG1fd2ViUGFnZVByb3h5SUQsIG1fcmVnaXN0cmFibGVEb21haW4gfSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIDApOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6
OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjpQb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QgeyBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBl
cnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMIH0sIDApOwor
fQorCit2b2lkIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6dXBkYXRl
UHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKK3sKKyAg
ICBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlc0dlbmVyYXRlZChzdG9yZSk7CisgICAgbV9wcmVm
ZXJlbmNlc1N0b3JlID0gc3RvcmU7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uOjpsYXVuY2hTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiYgb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklk
ZW50aWZpZXIsIFVSTCYmIHVybCwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlv
bnMsIFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYgd29ya2VyRmV0Y2hSZXN1bHQpCit7Cisg
ICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpsYXVuY2hTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9
JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIGF1dG8g
cGFnZUNvbmZpZ3VyYXRpb24gPSBXZWJDb3JlOjpwYWdlQ29uZmlndXJhdGlvbldpdGhFbXB0eUNs
aWVudHMoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2Vzc2lvbklEKCkpOworCisgICAgcGFnZUNv
bmZpZ3VyYXRpb24uZGF0YWJhc2VQcm92aWRlciA9IFdlYkRhdGFiYXNlUHJvdmlkZXI6OmdldE9y
Q3JlYXRlKG1fcGFnZUdyb3VwSUQpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnNvY2tldFByb3Zp
ZGVyID0gV2ViU29ja2V0UHJvdmlkZXI6OmNyZWF0ZShtX3dlYlBhZ2VQcm94eUlEKTsKKyAgICBw
YWdlQ29uZmlndXJhdGlvbi5icm9hZGNhc3RDaGFubmVsUmVnaXN0cnkgPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5icm9hZGNhc3RDaGFubmVsUmVnaXN0cnkoKTsKKyAgICBwYWdlQ29uZmlndXJh
dGlvbi53ZWJMb2NrUmVnaXN0cnkgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJMb2NrUmVn
aXN0cnkoKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudFByb3ZpZGVyID0gbV91
c2VyQ29udGVudENvbnRyb2xsZXI7CisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAgcGFnZUNvbmZp
Z3VyYXRpb24ubGliV2ViUlRDUHJvdmlkZXIgPSBtYWtlVW5pcXVlUmVmPFJlbW90ZVdvcmtlckxp
YldlYlJUQ1Byb3ZpZGVyPigpOworI2VuZGlmCisKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5sb2Fk
ZXJDbGllbnRGb3JNYWluRnJhbWUgPSBtYWtlVW5pcXVlUmVmPFJlbW90ZVdvcmtlckZyYW1lTG9h
ZGVyQ2xpZW50PihtX3dlYlBhZ2VQcm94eUlELCBtX3BhZ2VJRCwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyOjpnZW5lcmF0ZSgpLCBtX3VzZXJBZ2VudCk7CisKKyAgICBhdXRvIHBhZ2UgPSBtYWtl
VW5pcXVlUmVmPFdlYkNvcmU6OlBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKKyAg
ICBpZiAobV9wcmVmZXJlbmNlc1N0b3JlKSB7CisgICAgICAgIFdlYlBhZ2U6OnVwZGF0ZVNldHRp
bmdzR2VuZXJhdGVkKCptX3ByZWZlcmVuY2VzU3RvcmUsIHBhZ2UtPnNldHRpbmdzKCkpOworICAg
ICAgICBwYWdlLT5zZXR0aW5ncygpLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpTdG9yYWdlQmxvY2tpbmdQb2xpY3k+KG1fcHJlZmVyZW5jZXNTdG9yZS0+Z2V0
VUludDMyVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnN0b3JhZ2VCbG9ja2luZ1BvbGlj
eUtleSgpKSkpOworICAgIH0KKyAgICBwYWdlLT5zZXR1cEZvclJlbW90ZVdvcmtlcih1cmwsIG9y
aWdpbi50b3BPcmlnaW4sIHdvcmtlckZldGNoUmVzdWx0LnJlZmVycmVyUG9saWN5KTsKKyAgICBh
dXRvIHNoYXJlZFdvcmtlclRocmVhZFByb3h5ID0gV2ViQ29yZTo6U2hhcmVkV29ya2VyVGhyZWFk
UHJveHk6OmNyZWF0ZShXVEZNb3ZlKHBhZ2UpLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBvcmln
aW4sIHVybCwgV1RGTW92ZSh3b3JrZXJGZXRjaFJlc3VsdCksIFdURk1vdmUod29ya2VyT3B0aW9u
cyksIG1fdXNlckFnZW50LCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZVN0b3JhZ2VQcm92
aWRlcigpKTsKKworICAgIFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5n
bGV0b24oKS5yZWdpc3RlclNoYXJlZFdvcmtlclRocmVhZChXVEZNb3ZlKHNoYXJlZFdvcmtlclRo
cmVhZFByb3h5KSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpjbG9zZSgpCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpjbG9zZTogU2hhcmVkIHdvcmtlciBw
cm9jZXNzIGlzIHJlcXVlc3RlZCB0byBzdG9wIGFsbCBzaGFyZWQgd29ya2VycyIpOworICAgIHNl
dEFzQ2xvc2VkKCk7CisKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q2xvc2VTaGFyZWRXb3JrZXJD
b250ZXh0Q29ubmVjdGlvbiB7IH0sIDApOworICAgIFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zdG9wQWxsU2hhcmVkV29ya2VycygpOworICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuYWJsZVRlcm1pbmF0aW9uKCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjFhY2ZkMGM0MTI5
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNzYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJJZGVudGlmaWVyVHlwZXMuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
KyNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiV2ViUHJlZmVy
ZW5jZXNTdG9yZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2Vy
SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgQ2xpZW50T3JpZ2lu
Oworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0Oworc3RydWN0IFdvcmtlck9wdGlvbnM7Cit9CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI7Citz
dHJ1Y3QgUmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhOworCitjbGFzcyBXZWJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlciB7CitwdWJsaWM6CisgICAgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYsIFBhZ2VHcm91cElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgUmVtb3RlV29ya2Vy
SW5pdGlhbGl6YXRpb25EYXRhJiYpOworICAgIH5XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24oKTsKKworICAgIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2Vy
T2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwpIGZpbmFsOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICAvLyBJUEMg
TWVzc2FnZXMuCisgICAgdm9pZCBsYXVuY2hTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpX
b3JrZXJPcHRpb25zJiYsIFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYpOworICAgIHZvaWQg
dXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CisgICAg
dm9pZCBzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KSB7IG1fdXNlckFnZW50ID0gV1RG
TW92ZSh1c2VyQWdlbnQpOyB9CisgICAgdm9pZCBjbG9zZSgpOworCisgICAgUmVmPElQQzo6Q29u
bmVjdGlvbj4gbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzczsKKyAgICBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluOworICAgIFBhZ2VHcm91cElkZW50aWZp
ZXIgbV9wYWdlR3JvdXBJRDsKKyAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIG1fd2ViUGFnZVBy
b3h5SUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CisgICAgU3RyaW5n
IG1fdXNlckFnZW50OworICAgIFJlZjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXI+IG1fdXNlckNv
bnRlbnRDb250cm9sbGVyOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViUHJlZmVyZW5jZXNTdG9yZT4g
bV9wcmVmZXJlbmNlc1N0b3JlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kODJhNGFkYTUz
ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAs
MCArMSwzMCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNz
YWdlcyAtPiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gTm90UmVmQ291
bnRlZCB7CisgICAgTGF1bmNoU2hhcmVkV29ya2VyKHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4gb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklk
ZW50aWZpZXIsIFVSTCB1cmwsIHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdvcmtlck9w
dGlvbnMsIHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCB3b3JrZXJGZXRjaFJlc3Vs
dCkKKyAgICBQb3N0Q29ubmVjdEV2ZW50KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIg
c2hhcmVkV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBw
b3J0LCBTdHJpbmcgc291cmNlT3JpZ2luKQorICAgIFRlcm1pbmF0ZVNoYXJlZFdvcmtlcihXZWJD
b3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIpCisgICAg
VXBkYXRlUHJlZmVyZW5jZXNTdG9yZShzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3Jl
IHN0b3JlKQorICAgIFNldFVzZXJBZ2VudChTdHJpbmcgdXNlckFnZW50KQorICAgIENsb3NlKCkK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKaW5kZXggNWM1ZmRhYTYw
MDU3Li5kN2Q5OTRkZTFmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24u
Y3BwCkBAIC0yNiwyMyArMjYsNDQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJX
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgiCiAKKyNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyTWFuYWdlci5oPgorI2luY2x1
ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlck9w
dGlvbnMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb246OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7Cisj
ZGVmaW5lIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJl
ZFdvcmtlciwgIiVwIC0gW3dlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgV2ViQ29yZTo6UHJvY2Vzczo6
aWRlbnRpZmllcigpLnRvVUludDY0KCksICMjX19WQV9BUkdTX18pCisKK1dlYlNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb246OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKQorewor
ICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coIldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b246Iik7Cit9CisKK1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246On5XZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJ+
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjoiKTsKK30KIAogSVBDOjpDb25uZWN0aW9u
KiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlv
bigpIGNvbnN0CiB7CiAgICAgcmV0dXJuICZXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7CiB9CiAKLXZvaWQgV2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6cmVxdWVzdFNoYXJlZFdvcmtlcihjb25zdCBVUkwm
IHVybCwgV2ViQ29yZTo6U2hhcmVkV29ya2VyJiBzaGFyZWRXb3JrZXIsIFdlYkNvcmU6OlRyYW5z
ZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYgd29ya2Vy
T3B0aW9ucykKK3ZvaWQgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6cmVxdWVzdFNo
YXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgV2ViQ29yZTo6
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LCBjb25zdCBVUkwmIHVybCwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBvcnQs
IGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMpCiB7Ci0gICAgLy8g
RklYTUU6IFNob3VsZCBzZW5kIElQQyB0byB0aGUgbmV0d29yayBwcm9jZXNzLgotICAgIFdlYkNv
cmU6OlNoYXJlZFdvcmtlck1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3QodXJsLCBzaGFyZWRX
b3JrZXIsIFdURk1vdmUocG9ydCksIFdURk1vdmUod29ya2VyT3B0aW9ucykpOworICAgIENPTk5F
Q1RJT05fUkVMRUFTRV9MT0coInJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9T
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uOjpSZXF1ZXN0U2hhcmVkV29ya2VyIHsgb3JpZ2luLCBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLCB1cmwsIFdURk1vdmUocG9ydCksIHdvcmtlck9wdGlvbnMg
fSk7CiB9CiAKK3ZvaWQgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6c2hhcmVkV29y
a2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFT
RV9MT0coInNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5OiBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyPSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbjo6U2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkgeyBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyIH0pOworfQorCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNF
X0xPRworCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24uaAppbmRleCA2MWVlNWFmNDI0ZGMuLmQzMmM1MmUxZTE2YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uaApAQCAtMjUsMjAgKzI1LDI1IEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRl
ci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
LCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24sIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdl
UmVjZWl2ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uKTsgfQorICAgIH5XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uKCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIFdlYlNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24oKTsKIAogICAgIC8vIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24uCi0gICAgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0IFVSTCYsIFdlYkNvcmU6
OlNoYXJlZFdvcmtlciYsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgV2ViQ29y
ZTo6V29ya2VyT3B0aW9ucyYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIo
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllciwgY29uc3QgVVJMJiwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYm
LCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJikgZmluYWw7CisgICAgdm9pZCBzaGFyZWRX
b3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyKSBmaW5hbDsKIAogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlci4KICAgICBJUEM6OkNvbm5l
Y3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjcyMmFlMWEzMmM5MwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNyBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBXZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uIHsKKyAgICBGZXRjaFNjcmlwdEluQ2xpZW50KFVSTCB1cmwsIFdlYkNvcmU6
OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciwgc3RydWN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMgd29ya2VyT3B0aW9ucykgLT4gKHN0cnVj
dCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCBmZXRjaFJlc3VsdCkgQXN5bmMKKyAgICBOb3Rp
ZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciBlcnJvcikKKyAgICBQb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LCBTdHJpbmcgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
U3RyaW5nIHNvdXJjZVVSTCkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAppbmRleCBkZDhkNTgxYWM1YjIuLmRkNDViNDU4OGJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtODQsNiArODQsOCBAQAogI2luY2x1ZGUgIldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5o
IgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJT
b2NrZXRTdHJlYW0uaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgpAQCAtMTM0LDYgKzEzNiw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5n
cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAjaW5jbHVkZSA8cGFsL0xv
Z2dpbmcuaD4KICNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgpAQCAtOTA0LDcgKzkwNyw2IEBA
IHZvaWQgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlCiAgICAgfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotICAgIC8vIEZJWE1FOiBSZW1vdmU/CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIEFTU0VSVChTV0NvbnRleHRNYW5hZ2VyOjpz
aW5nbGV0b24oKS5jb25uZWN0aW9uKCkpOwogICAgICAgICBpZiAoYXV0byogY29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigp
KQpAQCAtOTEzLDYgKzkxNSwxMyBAQCB2b2lkIFdlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZQogICAgIH0KICNl
bmRpZgogCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSkgeworICAgICAgICBBU1NFUlQoU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpLmNvbm5lY3Rpb24oKSk7CisgICAgICAgIGlmIChhdXRvKiBjb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24gPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29u
bmVjdGlvbigpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uJj4oKmNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbikuZGlkUmVjZWl2
ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
ICAgICBMT0dfRVJST1IoIlVuaGFuZGxlZCB3ZWIgcHJvY2VzcyBtZXNzYWdlICclcycgKGRlc3Rp
bmF0aW9uOiAlIiBQUkl1NjQgIiBwaWQ6ICVkKSIsIGRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSksIGRlY29kZXIuZGVzdGluYXRpb25JRCgpLCBzdGF0aWNfY2FzdDxpbnQ+KGdldEN1
cnJlbnRQcm9jZXNzSUQoKSkpOwogfQogCkBAIC0xOTE5LDYgKzE5MjgsMTYgQEAgTGliV2ViUlRD
TmV0d29yayYgV2ViUHJvY2Vzczo6bGliV2ViUlRDTmV0d29yaygpCiAgICAgcmV0dXJuICptX2xp
YldlYlJUQ05ldHdvcms7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZpZXIg
cGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFJlZ2lz
dHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFJlbW90ZVdvcmtlckluaXRpYWxpemF0
aW9uRGF0YSYmIGluaXRpYWxpemF0aW9uRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIC8vIFdlIGFyZSBpbiB0aGUgU2hhcmVkIFdvcmtl
ciBjb250ZXh0IHByb2Nlc3MgYW5kIHRoZSBjYWxsIGJlbG93IGVzdGFibGlzaGVzIG91ciBjb25u
ZWN0aW9uIHRvIHRoZSBOZXR3b3JrIFByb2Nlc3MKKyAgICAvLyBieSBjYWxsaW5nIGVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi4gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIgbmVlZHMg
dG8gdXNlIHRoZSBzYW1lIHVuZGVybHlpbmcgSVBDOjpDb25uZWN0aW9uIGFzIHRoZQorICAgIC8v
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiBmb3Igc3luY2hyb25pemF0aW9uIHB1cnBvc2VzLgor
ICAgIGF1dG8mIGlwY0Nvbm5lY3Rpb24gPSBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCk7CisgICAgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRv
bigpLnNldENvbm5lY3Rpb24obWFrZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24+KGlwY0Nvbm5lY3Rpb24sIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBw
YWdlR3JvdXBJRCwgd2ViUGFnZVByb3h5SUQsIHBhZ2VJRCwgc3RvcmUsIFdURk1vdmUoaW5pdGlh
bGl6YXRpb25EYXRhKSkpOworICAgIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0
b24oKS5jb25uZWN0aW9uKCktPmVzdGFibGlzaENvbm5lY3Rpb24oV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworfQorCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogdm9pZCBXZWJQcm9j
ZXNzOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKFBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVy
ZW5jZXNTdG9yZSYgc3RvcmUsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4s
IHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllciwgUmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYgaW5p
dGlhbGl6YXRpb25EYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCAwM2ZjMGM3
MWQ3YzMuLjQyM2RlZmYyYWY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CkBAIC00NzEsNiArNDcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdhbWVwYWREaXNjb25uZWN0
ZWQodW5zaWduZWQgaW5kZXgpOwogI2VuZGlmCiAKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVy
LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFJlbW90
ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFNlcnZpY2VX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmll
ciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2
aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDNiYzQ3MzE5ZTM2ZC4u
ZjVlNzM2ZWQzNDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgpAQCAtMTAwLDYgKzEwMCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3Mg
TGVnYWN5UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7CiAgICAgR2FtZXBhZERpc2Nvbm5lY3RlZCh1
bnNpZ25lZCBpbmRleCkKICNlbmRpZgogCisgICAgRXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYktpdDo6UGFnZUdyb3VwSWRlbnRpZmllciBw
YWdlR3JvdXBJRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlE
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OldlYlByZWZl
cmVuY2VzU3RvcmUgc3RvcmUsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgc3Ry
dWN0IFdlYktpdDo6UmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhIGluaXRpYWxpemF0aW9u
RGF0YSkgLT4gKCkgQXN5bmMKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBFc3Rh
Ymxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYktp
dDo6UGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IHN0cnVjdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIGRvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3Qg
V2ViS2l0OjpSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRh
KSAtPiAoKSBBc3luYwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450806</attachid>
            <date>2022-02-03 13:05:50 -0800</date>
            <delta_ts>2022-02-03 15:17:57 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>235958_SharedWorker_multiProcess_wip.patch</filename>
            <type>text/plain</type>
            <size>304619</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDQwMjQ2NmU0OWYwZS4uY2MyOWM1MDAxYjFlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTMwMiwxMiArMzAyLDExIEBAIG1lZGlhL3JlbW92ZS12aWRlby1lbGVt
ZW50LWluLXBpcC1mcm9tLWRvY3VtZW50Lmh0bWwgWyBTa2lwIF0KICMgVGhpcyB0ZXN0IGlzIG9u
bHkgcmVsZXZlbnQgb24gaVBob25lIHdoZXJlIHZpZGVvcyBhbHdheXMgcGxheSBpbiBmdWxsc2Ny
ZWVuLgogbWVkaWEvdmlkZW8tZWxlbWVudC1mdWxsc2NyZWVuLW5vdC1pbi1kb20tYWNjZWxlcmF0
ZWQtaXBob25lLmh0bWwgWyBTa2lwIF0KIAotIyBTaGFyZWQgV29ya2VycyBhcmUgdW5zdXBwb3J0
ZWQKKyMgVGVzdHMgcmVseSBvbiBkb21haW4gbmFtZXMgb3VyIHRlc3QgaW5mcmFzdHJ1Y3R1cmUg
ZG9lc24ndCBzdXBwb3J0LgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZWN1cmUt
Y29udGV4dHMvYmFzaWMtc2hhcmVkLXdvcmtlci5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3NlY3VyZS1jb250ZXh0cy9iYXNpYy1zaGFyZWQtd29ya2VyLmh0
dHBzLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VjdXJl
LWNvbnRleHRzL3NoYXJlZC13b3JrZXItaW5zZWN1cmUtZmlyc3QuaHR0cHMuaHRtbCBbIFNraXAg
XQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZWN1cmUtY29udGV4dHMvc2hhcmVk
LXdvcmtlci1zZWN1cmUtZmlyc3QuaHR0cHMuaHRtbCBbIFNraXAgXQotaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9ldmVudHNvdXJjZS9zaGFyZWQtd29ya2VyIFsgU2tpcCBdCiAKICMg
VGhpcyB0ZXN0IHNlZW1zIHdyb25nIGFzIGl0IGNhbGwgdXBkYXRlKCkgZm9yIGEgc2NyaXB0IHRo
YXQgZG9lcyBub3QgY2hhbmdlIGFuZCBleHBlY3RlZCBhbiB1cGRhdGVmb3VuZCBldmVudC4KICMg
UGVyIHNwZWNpZmljYXRpb24sIGlmIHRoZSBzY3JpcHRzIGFyZSBpZGVudGljYWwsIHdlIGRvIG5v
dCBpbnN0YWxsIHRoZSBuZXcgc2NyaXB0IGFuZCByZXR1cm4gdGhlIGV4aXN0aW5nIHJlZ2lzdHJh
dGlvbi4KQEAgLTQxNiw5ICs0MTUsNiBAQCB3ZWJraXQub3JnL2IvMTc2OTI5IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udAogIyBSZXF1
aXJlcyBhZGRpdGlvbmFsIHRlc3QgaW5mcmFzdHJ1Y3R1cmUuCiBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci91cGRhdGUtYWZ0ZXIt
b25lZGF5Lmh0dHBzLmh0bWwgWyBTa2lwIF0KIAotIyBVbnN1cHBvcnRlZCBmZWF0dXJlczogU2hh
cmVkV29ya2VyCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vy
cy9zZXJ2aWNlLXdvcmtlci9jbGFpbS1zaGFyZWQtd29ya2VyLWZldGNoLmh0dHBzLmh0bWwgWyBT
a2lwIF0KLQogIyBVbnN1cHBvcnRlZCBmZWF0dXJlczogUGVyZm9ybWFuY2VOYXZpZ2F0aW9uVGlt
aW5nCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZlci10aW1pbmcvdGVzdF9z
ZXJ2ZXJfdGltaW5nLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc2VydmVyLXRpbWluZy90ZXN0X3NlcnZlcl90aW1pbmcuaHR0cHMuaHRtbCBbIFNraXAgXQpA
QCAtNDYzLDcgKzQ1OSw2IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViLWxv
Y2tzL3N0ZWFsLnRlbnRhdGl2ZS5odHRwcy5hbnkuaHRtbCBbIER1bXBKCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWFuYWx5c2Vybm9k
ZS1pbnRlcmZhY2UvdGVzdC1hbmFseXNlci1taW5pbXVtLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9n
SW5TdGRFcnIgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUt
YXVkaW8tYXBpL3RoZS1hdWRpb25vZGUtaW50ZXJmYWNlL2F1ZGlvbm9kZS1kaXNjb25uZWN0LWF1
ZGlvcGFyYW0uaHRtbCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2FtZS1vcmlnaW4tY2hlY2suc3ViLmh0bWwgWyBE
dW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy5odG1sIFsgRHVtcEpTQ29u
c29sZUxvZ0luU3RkRXJyIF0KIGZhc3QvZmlsZXMvZmlsZS1yZWFkZXItYmFjay1mb3J3YXJkLWNh
Y2hlLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQogZmFzdC9oaXN0b3J5L3BhZ2Ut
Y2FjaGUtY3JlYXRlSW1hZ2VCaXRtYXAuaHRtbCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBd
CiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS14aHItaW4tbG9hZGluZy1pZnJhbWUu
aHRtbCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCkBAIC04NTMsNiArODQ4LDcgQEAgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy91c2VyLXRpbWluZy9tYXJrLmh0bWwgWyBGYWls
dXJlIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy91c2VyLXRpbWluZy9t
ZWFzdXJlX2Fzc29jaWF0ZWRfd2l0aF9uYXZpZ2F0aW9uX3RpbWluZy5odG1sIFsgRmFpbHVyZSBQ
YXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3N5
c3RlbS1zdGF0ZS1hbmQtY2FwYWJpbGl0aWVzL3RoZS1uYXZpZ2F0b3Itb2JqZWN0L3BsdWdpbnMt
YW5kLW1pbWV0eXBlcy5odG1sIFsgRmFpbHVyZSBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvYmVhY29uL2JlYWNvbi1yZWRpcmVjdC5zdWIud2luZG93Lmh0bWwgWyBGYWls
dXJlIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9y
aWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3b3JrZXItcGFydGl0
aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3cuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiAKIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZG9jdW1lbnQtbWV0
YWRhdGEvdGhlLWxpbmstZWxlbWVudC9saW5rLWxvYWQtZXJyb3ItZXZlbnRzLmh0bWwgWyBEdW1w
SlNDb25zb2xlTG9nSW5TdGRFcnIgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9kb2N1bWVudC1tZXRhZGF0YS90aGUtbGluay1lbGVtZW50L2xpbmstbG9h
ZC1lcnJvci1ldmVudHMuaHR0cHMuaHRtbCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCkBA
IC04OTcsMzQgKzg5MywyMSBAQCBmYXN0L2RvbS9jb25uZWN0ZWQtc3ViZnJhbWUtY291bnRlci1v
dmVyZmxvdy5odG1sIFsgU2xvdyBdCiBbIERlYnVnIF0gaHR0cC90ZXN0cy93b3JrZXJzL3dvcmtl
ci1tZXNzYWdlcG9ydC0yLmh0bWwgWyBTbG93IF0KIAogIyBTa2lwIHdvcmtlcnMgdGVzdHMgdGhh
dCBhcmUgdGltaW5nIG91dCBvciBhcmUgU2hhcmVkV29ya2VyIHJlbGF0ZWQgb25seQotaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2RhdGEtdXJsLXNoYXJlZC5odG1sIFsg
U2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvZXhhbXBsZXMv
b25jb25uZWN0LmFueS5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvZXhhbXBsZXMvb25jb25uZWN0LmFueS53b3JrZXIuaHRtbCBbIFNraXAgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2ludGVyZmFjZXMvV29ya2Vy
VXRpbHMvaW1wb3J0U2NyaXB0cy8wMDYuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL25lc3RlZF93b3JrZXIud29ya2VyLmh0bWwgWyBTa2lwIF0K
LWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9vcGFxdWUtb3JpZ2luLmh0
bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1h
bnRpY3MvaW50ZXJmYWNlLW9iamVjdHMvMDAzLmFueS5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL2ludGVyZmFjZS1vYmplY3Rz
LzAwMy5hbnkud29ya2VyLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvaW50ZXJmYWNlLW9iamVjdHMvMDA0LmFueS5odG1sIFsg
U2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNz
L2ludGVyZmFjZS1vYmplY3RzLzAwNC5hbnkud29ya2VyLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vy
cy8wMDMuaHRtbCBbIFNraXAgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL1dvcmtlcl9jcm9zc19vcmlnaW5fc2VjdXJpdHlfZXJyLmh0bSBbIFNraXAgXQogaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlci1NZXNzYWdlRXZl
bnQtc291cmNlLmFueS5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyLU1lc3NhZ2VFdmVudC1zb3VyY2UuYW55Lndvcmtlci5o
dG1sIFsgU2tpcCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hh
cmVkV29ya2VyLWNvbnN0cnVjdG9yLmh0bWwgWyBTa2lwIF0KLWltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXItZGV0YWNoLWZyYW1lLWluLWVycm9yLWV2
ZW50Lmh0bWwgWyBTa2lwIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9TaGFyZWRXb3JrZXItZXhjZXB0aW9uLXByb3BhZ2F0aW9uLmh0bWwgWyBTa2lwIF0KLWltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXItZXhjZXB0aW9u
Lmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9T
aGFyZWRXb3JrZXItcmVwbGFjZS1FdmVudEhhbmRsZXIuYW55Lmh0bWwgWyBTa2lwIF0KIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXItcmVwbGFjZS1F
dmVudEhhbmRsZXIuYW55Lndvcmtlci5odG1sIFsgU2tpcCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyLXNjcmlwdC1lcnJvci5odG1sIFsgU2tp
cCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2Vy
LXNpbXBsZS5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvbW9kdWxlcy9kZWRpY2F0ZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMuaHRtbCBb
IFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMv
c2hhcmVkLXdvcmtlci1pbXBvcnQtY3NwLmh0bWwgWyBTa2lwIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LXJlZmVy
cmVyLmh0bWwgWyBTa2lwIF0KLQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIgWyBTa2lwIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJfYmxvYlVybC5odG1sIFsgU2tpcCBd
CiAKIGh0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9wYWdlLWNhY2hlLWRvbWNhY2hlLXBlbmRpbmct
cHJvbWlzZS5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIApAQCAtOTkyLDkgKzk3
NSw3IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvcmVwb3J0aW5nL3JlcG9ydC1jcm9zcy1vCiAjIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5
OiBFbWJlZGRlZCBFbmZvcmNlbWVudCBpcyBub3Qgc3VwcG9ydGVkCiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2VtYmVkZGVkLWVuZm9yY2Vt
ZW50CiAKLSMgU2tpcCBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBzaGFyZWQgd29ya2VycyB0ZXN0
cyBhcyB3ZSBkbyBub3Qgc3VwcG9ydCBzaGFyZWQgd29ya2VycwotaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9zaGFyZWQt
d29ya2VyLWNvbm5lY3Qtc3JjLWFsbG93ZWQuc3ViLmh0bWwKLWltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvY29ubmVjdC1zcmMvc2hhcmVkLXdv
cmtlci1jb25uZWN0LXNyYy1ibG9ja2VkLnN1Yi5odG1sCisjIFRlc3QgaXMgdGltaW5nIG91dC4K
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
c2VjdXJpdHlwb2xpY3l2aW9sYXRpb24vaW5zaWRlLXNoYXJlZC13b3JrZXIuaHRtbAogCiAjIFNv
bWV0aW1lcyBsb2dzIGEgbGluZSBhYm91dCB0cnlpbmcgdG8gY29ubmVjdCB0byBhbiBleHRlcm5h
bCBVUkwuCkBAIC01MTU3LDYgKzUxMzgsMTAgQEAgd2Via2l0Lm9yZy9iLzE4Mzk5NCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3NvbS9jc3Mtc3R5bGUtYXR0ci1kZWMKICMg
VGVzdCBpcyBjcmFzaGluZyBpbiBEZWJ1ZyBidWlsZHMgc2luY2UgaW1wb3J0Lgogd2Via2l0Lm9y
Zy9iLzIzNDk3NyBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20v
ZXZlbnRzL2ZvY3VzLWV2ZW50LWRvY3VtZW50LW1vdmUuaHRtbCBbIFNraXAgXQogCisjIFRlc3Qg
aXMgZmxha3kgYmVjYXVzZSBNZXNzYWdlUG9ydCBtZXNzYWdlcyBtYXkgZ2V0IHJlY2VpdmVkIGlu
IGEgZGlmZmVyZW50IG9yZGVyIHdoZW4gc2V2ZXJhbCBNZXNzYWdlUG9ydHMgYXJlIGludm9sdmVk
LAorIyBkdWUgdG8gaG93IE1lc3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2VzKCkgaXMgaW1wbGVt
ZW50ZWQuCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdv
cmtlci1uYW1lLXZpYS1vcHRpb25zLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgRmFp
bHVyZSBQYXNzIF0KKwogIyBQbHVnaW5zCiAjIEZJWE1FOiBSZW1vdmUgdGhlc2UgdGVzdHMuCiBw
bHVnaW5zLyBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3No
YXJlZHdvcmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNp
ZGUtd29ya2VyL3NoYXJlZHdvcmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0CmluZGV4
IDBlOTk3MjRiODY0Yi4uNjg5OGI1NGFhYjZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lk
ZS13b3JrZXIvc2hhcmVkd29ya2VyLXJlcG9ydC1vbmx5LnN1Yi1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3Vy
aXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1yZXBvcnQtb25seS5zdWItZXhw
ZWN0ZWQudHh0CkBAIC0xLDYgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJM
IGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBv
cnQvcmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLWZldGNoCi1CbG9ja2VkIGFjY2VzcyB0byBleHRl
cm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvc3VwcG9ydC9yZXNvdXJjZS5weT9jcm9zcy1vcmlnaW4teGhyCi1CbG9ja2VkIGFjY2VzcyB0
byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29udGVudC1zZWN1cml0
eS1wb2xpY3kvc3VwcG9ydC9yZXNvdXJjZS5weT9jcm9zcy1vcmlnaW4tZmV0Y2gKIAogUEFTUyBT
YW1lLW9yaWdpbiAnZmV0Y2goKScuCiBQQVNTIFNhbWUtb3JpZ2luIFhIUi4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
b250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1zY3JpcHQt
c3JjLnN1Yi1leHBlY3RlZC50eHQKaW5kZXggOTc5MTA2MzAzNzg1Li5iYjY0NTJmNDRhMGEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0LXNy
Yy5zdWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3
b3JrZXItc2NyaXB0LXNyYy5zdWItZXhwZWN0ZWQudHh0CkBAIC0yLDEwICsyLDkgQEAKIEhhcm5l
c3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAogCiBUSU1FT1VUIHNoYXJlZHdvcmtl
ci1zY3JpcHQtc3JjIFRlc3QgdGltZWQgb3V0Ci1GQUlMIENyb3NzLW9yaWdpbiBgaW1wb3J0U2Ny
aXB0cygpYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3VyIENTUCAgQSBuZXR3b3JrIGVycm9y
IG9jY3VycmVkLgotRkFJTCBgZXZhbCgpYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3V0IENT
UCBSZWZ1c2VkIHRvIGV2YWx1YXRlIGEgc3RyaW5nIGFzIEphdmFTY3JpcHQgYmVjYXVzZSAndW5z
YWZlLWV2YWwnIGlzIG5vdCBhbiBhbGxvd2VkIHNvdXJjZSBvZiBzY3JpcHQgaW4gdGhlIGZvbGxv
d2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICJzY3JpcHQtc3JjICdzZWxm
JyAnbm9uY2UtYScgYmxvYjogZmlsZXN5c3RlbToiLgotCi1GQUlMIGBzZXRUaW1lb3V0KFtzdHJp
bmddKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AgYXNzZXJ0X3VucmVhY2hlZDog
Y2FsbGJhY2sgbm90IGNhbGxlZC4gUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCitGQUlMIENyb3Nz
LW9yaWdpbiBgaW1wb3J0U2NyaXB0cygpYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3VyIENT
UCBMb2FkIGZhaWxlZAorUEFTUyBgZXZhbCgpYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3V0
IENTUAorUEFTUyBgc2V0VGltZW91dChbc3RyaW5nXSlgIG5vdCBibG9ja2VkIGluIGh0dHA6IHdp
dGhvdXQgQ1NQCiBUSU1FT1VUIENyb3NzLW9yaWdpbiBgaW1wb3J0U2NyaXB0cygpYCBibG9ja2Vk
IGluIGh0dHA6IHdpdGggc2NyaXB0LXNyYyAnc2VsZicgVGVzdCB0aW1lZCBvdXQKIE5PVFJVTiBg
ZXZhbCgpYCBibG9ja2VkIGluIGh0dHA6IHdpdGggc2NyaXB0LXNyYyAnc2VsZicKIE5PVFJVTiBg
c2V0VGltZW91dChbc3RyaW5nXSlgIGJsb2NrZWQgaW4gaHR0cDogd2l0aCBzY3JpcHQtc3JjICdz
ZWxmJwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91
dC5zdWItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGlt
ZW91dC5zdWItZXhwZWN0ZWQudHh0CmluZGV4IDRlYWMxY2NjMDUyNi4uYjhlZTEzYjBmZmNlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nv
bnRlbnQtc2VjdXJpdHktcG9saWN5L3NjcmlwdC1zcmMvd29ya2VyLXNldC10aW1lb3V0LnN1Yi1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91
dC5zdWItZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAogCiBGQUlMIERlZGljYXRlZCB3b3Jr
ZXIgaW5oZXJpdHMgQ1NQIGZyb20gbWFpbiBkb2N1bWVudCBhc3NlcnRfZXF1YWxzOiBleHBlY3Rl
ZCAic2V0VGltZW91dCBhbGxvd2VkIiBidXQgZ290ICJzZXRUaW1lb3V0IGJsb2NrZWQiCi1GQUlM
IFNoYXJlZCB3b3JrZXIgZGVsaXZlcnMgaXRzIG93biBDU1AgYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgInNldFRpbWVvdXQgYmxvY2tlZCIgYnV0IGdvdCAic2V0VGltZW91dCBhbGxvd2VkIgorUEFT
UyBTaGFyZWQgd29ya2VyIGRlbGl2ZXJzIGl0cyBvd24gQ1NQCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZXZlbnRzb3VyY2Uvc2hhcmVk
LXdvcmtlci9ldmVudHNvdXJjZS1jbG9zZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2V2ZW50c291cmNlL3NoYXJlZC13b3JrZXIvZXZl
bnRzb3VyY2UtY2xvc2UtZXhwZWN0ZWQudHh0CmluZGV4IDUyMWM4MDA4MGVkYi4uOGE3MWZmZTIz
Mzg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2V2ZW50c291cmNlL3NoYXJlZC13b3JrZXIvZXZlbnRzb3VyY2UtY2xvc2UtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZXZl
bnRzb3VyY2Uvc2hhcmVkLXdvcmtlci9ldmVudHNvdXJjZS1jbG9zZS1leHBlY3RlZC50eHQKQEAg
LTEsMyArMSwzIEBACiAKLUZBSUwgc2hhcmVkIHdvcmtlciAtIEV2ZW50U291cmNlOiBjbG9zZSgp
IENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtlcgorUEFTUyBzaGFyZWQgd29ya2VyIC0g
RXZlbnRTb3VyY2U6IGNsb3NlKCkKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ldmVudHNvdXJjZS9zaGFyZWQtd29ya2VyL2V2ZW50c291
cmNlLWNvbnN0cnVjdG9yLW5vbi1zYW1lLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2V2ZW50c291cmNlL3NoYXJlZC13b3Jr
ZXIvZXZlbnRzb3VyY2UtY29uc3RydWN0b3Itbm9uLXNhbWUtb3JpZ2luLWV4cGVjdGVkLnR4dApp
bmRleCA0NWFmMDg5MGM0YTguLjYzY2FhYTdkNTc2ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ldmVudHNvdXJjZS9zaGFyZWQtd29ya2Vy
L2V2ZW50c291cmNlLWNvbnN0cnVjdG9yLW5vbi1zYW1lLW9yaWdpbi1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ldmVudHNvdXJj
ZS9zaGFyZWQtd29ya2VyL2V2ZW50c291cmNlLWNvbnN0cnVjdG9yLW5vbi1zYW1lLW9yaWdpbi1l
eHBlY3RlZC50eHQKQEAgLTEsNiArMSw2IEBACiAKLUZBSUwgc2hhcmVkIHdvcmtlciAtIEV2ZW50
U291cmNlOiBjb25zdHJ1Y3RvciAoYWN0IGFzIGlmIHRoZXJlIGlzIGEgbmV0d29yayBlcnJvcikg
KGZ0cDovL2V4YW1wbGUubm90KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLUZB
SUwgc2hhcmVkIHdvcmtlciAtIEV2ZW50U291cmNlOiBjb25zdHJ1Y3RvciAoYWN0IGFzIGlmIHRo
ZXJlIGlzIGEgbmV0d29yayBlcnJvcikgKGFib3V0OmJsYW5rKSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBTaGFyZWRXb3JrZXIKLUZBSUwgc2hhcmVkIHdvcmtlciAtIEV2ZW50U291cmNlOiBjb25zdHJ1
Y3RvciAoYWN0IGFzIGlmIHRoZXJlIGlzIGEgbmV0d29yayBlcnJvcikgKG1haWx0bzp3aGF0d2dA
YXdlc29tZS5leGFtcGxlKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLUZBSUwg
c2hhcmVkIHdvcmtlciAtIEV2ZW50U291cmNlOiBjb25zdHJ1Y3RvciAoYWN0IGFzIGlmIHRoZXJl
IGlzIGEgbmV0d29yayBlcnJvcikgKGphdmFzY3JpcHQ6YWxlcnQoJ0ZBSUwnKSkgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCitQQVNTIHNoYXJlZCB3b3JrZXIgLSBFdmVudFNvdXJj
ZTogY29uc3RydWN0b3IgKGFjdCBhcyBpZiB0aGVyZSBpcyBhIG5ldHdvcmsgZXJyb3IpIChmdHA6
Ly9leGFtcGxlLm5vdCkKK1BBU1Mgc2hhcmVkIHdvcmtlciAtIEV2ZW50U291cmNlOiBjb25zdHJ1
Y3RvciAoYWN0IGFzIGlmIHRoZXJlIGlzIGEgbmV0d29yayBlcnJvcikgKGFib3V0OmJsYW5rKQor
UEFTUyBzaGFyZWQgd29ya2VyIC0gRXZlbnRTb3VyY2U6IGNvbnN0cnVjdG9yIChhY3QgYXMgaWYg
dGhlcmUgaXMgYSBuZXR3b3JrIGVycm9yKSAobWFpbHRvOndoYXR3Z0Bhd2Vzb21lLmV4YW1wbGUp
CitQQVNTIHNoYXJlZCB3b3JrZXIgLSBFdmVudFNvdXJjZTogY29uc3RydWN0b3IgKGFjdCBhcyBp
ZiB0aGVyZSBpcyBhIG5ldHdvcmsgZXJyb3IpIChqYXZhc2NyaXB0OmFsZXJ0KCdGQUlMJykpCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
ZXZlbnRzb3VyY2Uvc2hhcmVkLXdvcmtlci9ldmVudHNvdXJjZS1ldmVudHRhcmdldC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2V2ZW50
c291cmNlL3NoYXJlZC13b3JrZXIvZXZlbnRzb3VyY2UtZXZlbnR0YXJnZXQtZXhwZWN0ZWQudHh0
CmluZGV4IDZkN2QyZWE2MjZlYi4uYmMyNzdiODA2MGJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2V2ZW50c291cmNlL3NoYXJlZC13b3Jr
ZXIvZXZlbnRzb3VyY2UtZXZlbnR0YXJnZXQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZXZlbnRzb3VyY2Uvc2hhcmVkLXdvcmtl
ci9ldmVudHNvdXJjZS1ldmVudHRhcmdldC1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAK
LUZBSUwgc2hhcmVkIHdvcmtlciAtIEV2ZW50U291cmNlOiBhZGRFdmVudExpc3RlbmVyKCkgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCitQQVNTIHNoYXJlZCB3b3JrZXIgLSBFdmVu
dFNvdXJjZTogYWRkRXZlbnRMaXN0ZW5lcigpCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZXZlbnRzb3VyY2Uvc2hhcmVkLXdvcmtlci9l
dmVudHNvdXJjZS1vbm1lc3NhZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ldmVudHNvdXJjZS9zaGFyZWQtd29ya2VyL2V2ZW50c291
cmNlLW9ubWVzc2FnZS1leHBlY3RlZC50eHQKaW5kZXggY2VhMmQ3YzU3YjE5Li5iMDdmNDcyOTAz
NTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvZXZlbnRzb3VyY2Uvc2hhcmVkLXdvcmtlci9ldmVudHNvdXJjZS1vbm1lc3NhZ2UtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
ZXZlbnRzb3VyY2Uvc2hhcmVkLXdvcmtlci9ldmVudHNvdXJjZS1vbm1lc3NhZ2UtZXhwZWN0ZWQu
dHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIHNoYXJlZCB3b3JrZXIgLSBFdmVudFNvdXJjZTog
b25tZXNzYWdlIENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtlcgorUEFTUyBzaGFyZWQg
d29ya2VyIC0gRXZlbnRTb3VyY2U6IG9ubWVzc2FnZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2V2ZW50c291cmNlL3NoYXJlZC13b3Jr
ZXIvZXZlbnRzb3VyY2Utb25vcGVuLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZXZlbnRzb3VyY2Uvc2hhcmVkLXdvcmtlci9ldmVudHNv
dXJjZS1vbm9wZW4tZXhwZWN0ZWQudHh0CmluZGV4IDQyMTIyODQ4MTFhZi4uZmI2NzRmZTI4YWVh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2V2ZW50c291cmNlL3NoYXJlZC13b3JrZXIvZXZlbnRzb3VyY2Utb25vcGVuLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2V2ZW50
c291cmNlL3NoYXJlZC13b3JrZXIvZXZlbnRzb3VyY2Utb25vcGVuLWV4cGVjdGVkLnR4dApAQCAt
MSwzICsxLDMgQEAKIAotRkFJTCBzaGFyZWQgd29ya2VyIC0gRXZlbnRTb3VyY2U6IG9ub3BlbiAo
YW5ub3VuY2luZyB0aGUgY29ubmVjdGlvbikgQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29y
a2VyCitQQVNTIHNoYXJlZCB3b3JrZXIgLSBFdmVudFNvdXJjZTogb25vcGVuIChhbm5vdW5jaW5n
IHRoZSBjb25uZWN0aW9uKQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2V2ZW50c291cmNlL3NoYXJlZC13b3JrZXIvZXZlbnRzb3VyY2Ut
cHJvdG90eXBlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvZXZlbnRzb3VyY2Uvc2hhcmVkLXdvcmtlci9ldmVudHNvdXJjZS1wcm90b3R5
cGUtZXhwZWN0ZWQudHh0CmluZGV4IGFhNjVlOTllMWE5Zi4uMjAyYWFhNjJmZmZmIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2V2ZW50c291
cmNlL3NoYXJlZC13b3JrZXIvZXZlbnRzb3VyY2UtcHJvdG90eXBlLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2V2ZW50c291cmNl
L3NoYXJlZC13b3JrZXIvZXZlbnRzb3VyY2UtcHJvdG90eXBlLWV4cGVjdGVkLnR4dApAQCAtMSwz
ICsxLDMgQEAKIAotRkFJTCBzaGFyZWQgd29ya2VyIC0gRXZlbnRTb3VyY2U6IHByb3RvdHlwZSBl
dCBhbCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKK1BBU1Mgc2hhcmVkIHdvcmtl
ciAtIEV2ZW50U291cmNlOiBwcm90b3R5cGUgZXQgYWwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ldmVudHNvdXJjZS9zaGFyZWQtd29y
a2VyL2V2ZW50c291cmNlLXVybC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2V2ZW50c291cmNlL3NoYXJlZC13b3JrZXIvZXZlbnRzb3Vy
Y2UtdXJsLWV4cGVjdGVkLnR4dAppbmRleCA1MTAzYmQ4ZWNmMmQuLjc2YWQ1ODViNGY0NyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ldmVu
dHNvdXJjZS9zaGFyZWQtd29ya2VyL2V2ZW50c291cmNlLXVybC1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ldmVudHNvdXJjZS9z
aGFyZWQtd29ya2VyL2V2ZW50c291cmNlLXVybC1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBA
CiAKLUZBSUwgc2hhcmVkIHdvcmtlciAtIEV2ZW50U291cmNlOiB1cmwgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogU2hhcmVkV29ya2VyCitQQVNTIHNoYXJlZCB3b3JrZXIgLSBFdmVudFNvdXJjZTogdXJs
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2Vy
Lmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUt
d29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCBjMTA3MTM2NTUyODAuLjZmODQ0ZGQ1ZDk0
OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2Jyb3dzZXJzL29mZmxpbmUvYXBwY2FjaGUvd29ya2Vycy9hcHBjYWNoZS13b3JrZXIu
aHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2Fj
aGUtd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtNSw3ICs1LDcgQEAgSGFybmVzcyBFcnJv
ciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCiBQQVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhl
IGNhY2hlZCBzY3JpcHQKIFBBU1MgRGVkaWNhdGVkIHdvcmtlciBvZiB0aGUgZmFsbGJhY2tlZCBz
Y3JpcHQKIFBBU1MgRGVkaWNhdGVkIHdvcmtlciBvZiB0aGUgbm90LWluLWNhY2hlIHNjcmlwdAot
UEFTUyBTaGFyZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0Ci1QQVNTIFNoYXJlZCB3b3Jr
ZXIgb2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0CitGQUlMIFNoYXJlZCB3b3JrZXIgb2YgdGhlIGNh
Y2hlZCBzY3JpcHQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIkRvbmU6IGNhY2hlZCIgYnV0IGdv
dCAiRXJyb3I6IEltcG9ydGluZyBhIG5vbi1jYWNoZWQgc2NyaXB0IG11c3QgZmFpbC4iCitGQUlM
IFNoYXJlZCB3b3JrZXIgb2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0IGFzc2VydF9lcXVhbHM6IGV4
cGVjdGVkICJEb25lOiBmYWxsYmFja2VkIiBidXQgZ290ICJFcnJvcjogSW1wb3J0aW5nIGEgbm9u
LWNhY2hlZCBzY3JpcHQgbXVzdCBmYWlsLiIKIFRJTUVPVVQgU2hhcmVkIHdvcmtlciBvZiB0aGUg
bm90LWluLWNhY2hlIHNjcmlwdCBUZXN0IHRpbWVkIG91dAogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVt
YmVkZGVyLXBvbGljeS9hbm9ueW1vdXMtaWZyYW1lL3NoYXJlZHdvcmtlci1wYXJ0aXRpb25pbmcu
dGVudGF0aXZlLmh0dHBzLndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGlj
eS9hbm9ueW1vdXMtaWZyYW1lL3NoYXJlZHdvcmtlci1wYXJ0aXRpb25pbmcudGVudGF0aXZlLmh0
dHBzLndpbmRvdy1leHBlY3RlZC50eHQKaW5kZXggNGVkODc0NzQ3NmM3Li41ODZkMTAxNTJhMzYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L2Fub255bW91cy1pZnJhbWUvc2hhcmVk
d29ya2VyLXBhcnRpdGlvbmluZy50ZW50YXRpdmUuaHR0cHMud2luZG93LWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jv
c3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9hbm9ueW1vdXMtaWZyYW1lL3NoYXJlZHdvcmtlci1w
YXJ0aXRpb25pbmcudGVudGF0aXZlLmh0dHBzLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsMyAr
MSwzIEBACiAKLUZBSUwgQW5vbnltb3VzIGlmcmFtZXMgZ2V0IHBhcnRpdGlvbmVkIHNoYXJlZCB3
b3JrZXJzLiBhc3NlcnRfdHJ1ZTogVGhlICJub3JtYWwiIGlmcmFtZSdzIHNoYXJlZHdvcmtlciBz
aG91bGQgcmV0dXJuIHsibm9ybWFsIjogdHJ1ZSwgIm5vcm1hbF9jb250cm9sIjogdHJ1ZX0sIGJ1
dCBpbnN0ZWFkIHJldHVybmVkIHsibm9ybWFsIjp0cnVlfSBleHBlY3RlZCB0cnVlIGdvdCBmYWxz
ZQorRkFJTCBBbm9ueW1vdXMgaWZyYW1lcyBnZXQgcGFydGl0aW9uZWQgc2hhcmVkIHdvcmtlcnMu
IGFzc2VydF90cnVlOiBUaGUgIm5vcm1hbCIgaWZyYW1lJ3Mgc2hhcmVkd29ya2VyIHNob3VsZCBy
ZXR1cm4geyJub3JtYWwiOiB0cnVlLCAibm9ybWFsX2NvbnRyb2wiOiB0cnVlfSwgYnV0IGluc3Rl
YWQgcmV0dXJuZWQgeyJub3JtYWxfY29udHJvbCI6dHJ1ZSwibm9ybWFsIjp0cnVlLCJhbm9ueW1v
dXMiOnRydWUsImFub255bW91c19jb250cm9sIjp0cnVlfSBleHBlY3RlZCB0cnVlIGdvdCBmYWxz
ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNvbGF0
ZWQtcGVybWlzc2lvbi5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9j
cm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5odHRwcy1leHBlY3RlZC50eHQKaW5kZXgg
NjM1NWI2OGRlNzBiLi5jOGJmNzVlN2VhODUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9s
aWN5L2Nyb3NzLW9yaWdpbi1pc29sYXRlZC1wZXJtaXNzaW9uLmh0dHBzLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jv
c3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lv
bi5odHRwcy1leHBlY3RlZC50eHQKQEAgLTIwLDcgKzIwLDcgQEAgUEFTUyBkZWRpY2F0ZWQgd29y
a2VyOiBzY2hlbWUgPSBibG9iLCB2YWx1ZSA9ICoKIFBBU1MgZGVkaWNhdGVkIHdvcmtlcjogc2No
ZW1lID0gYmxvYiwgdmFsdWUgPSBzZWxmCiBGQUlMIGRlZGljYXRlZCB3b3JrZXI6IHNjaGVtZSA9
IGJsb2IsIHZhbHVlID0gKFwpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIGZhbHNlIGJ1dCBnb3Qg
dHJ1ZQogUEFTUyBzaGFyZWQgd29ya2VyOiB3aXRoQ29vcENvZXAgPSBmYWxzZQotUEFTUyBzaGFy
ZWQgd29ya2VyOiB3aXRoQ29vcENvZXAgPSB0cnVlCitGQUlMIHNoYXJlZCB3b3JrZXI6IHdpdGhD
b29wQ29lcCA9IHRydWUgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNl
CiBQQVNTIHNlcnZpY2Ugd29ya2VyOiB3aXRoQ29vcENvZXAgPSBmYWxzZQogRkFJTCBzZXJ2aWNl
IHdvcmtlcjogd2l0aENvb3BDb2VwID0gdHJ1ZSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCB0cnVl
IGJ1dCBnb3QgZmFsc2UKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvc2hhcmVk
LXdvcmtlcnMuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvc2hhcmVk
LXdvcmtlcnMuaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IDMzOThiZDg4OTMxYi4uNGM4NjZlYjI5
MjYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9zaGFyZWQtd29ya2Vycy5odHRw
cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvc2hhcmVkLXdvcmtlcnMu
aHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0yLDcgKzIsNyBAQCBWZXJpZnkgdGhlIENyb3NzLU9yaWdp
biBFbWJlZGRlciBQb2xpY3kgZm9yIFNoYXJlZCBXb3JrZXJzIGJ5IHBlcmZvcm1pbmcgYSBjcm9z
cwogCiAKIFBBU1MgZGVmYXVsdCBwb2xpY3kgKGRlcml2ZWQgZnJvbSByZXNwb25zZSkKLUZBSUwg
InJlcXVpcmUtY29ycCIgKGRlcml2ZWQgZnJvbSByZXNwb25zZSkgYXNzZXJ0X2VxdWFsczogZXhw
ZWN0ZWQgImZhaWx1cmUiIGJ1dCBnb3QgInN1Y2Nlc3MiCitQQVNTICJyZXF1aXJlLWNvcnAiIChk
ZXJpdmVkIGZyb20gcmVzcG9uc2UpCiBQQVNTIGRlZmF1bHQgcG9saWN5IChkZXJpdmVkIGZyb20g
b3duZXIgc2V0IGR1ZSB0byB1c2Ugb2YgbG9jYWwgc2NoZW1lIC0gYmxvYiBVUkwpCiBGQUlMICJy
ZXF1aXJlLWNvcnAiIChkZXJpdmVkIGZyb20gb3duZXIgc2V0IGR1ZSB0byB1c2Ugb2YgbG9jYWwg
c2NoZW1lIC0gYmxvYiBVUkwpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJmYWlsdXJlIiBidXQg
Z290ICJzdWNjZXNzIgogUEFTUyBkZWZhdWx0IHBvbGljeSAoZGVyaXZlZCBmcm9tIG93bmVyIHNl
dCBkdWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAtIGRhdGEgVVJMKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdp
bi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVyaXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jv
c3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS93b3JrZXItaW5oZXJpdGFuY2Uuc3ViLmh0dHBzLWV4
cGVjdGVkLnR4dAppbmRleCA3NWIxZDMzZTUyNjAuLmIyYmYyZTNiZmYzZiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9y
aWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVyaXRhbmNlLnN1Yi5odHRwcy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVyaXRhbmNlLnN1Yi5o
dHRwcy1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw2IEBACiBCbG9ja2VkIGFjY2VzcyB0byBleHRl
cm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29tbW9uL2JsYW5rLmh0bWwKIEJs
b2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2NhbGhvc3Q6OTQ0NC9j
b21tb24vYmxhbmsuaHRtbAogQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8v
d3d3LmxvY2FsaG9zdDo5NDQ0L2NvbW1vbi9ibGFuay5odG1sCi1CbG9ja2VkIGFjY2VzcyB0byBl
eHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29tbW9uL2JsYW5rLmh0bWwK
IAogUEFTUyBUZXN0IHRoYXQgbG9jYWwgc2NoZW1lIHdvcmtlcnMgaW5oZXJpdCBDT0VQOiByZXF1
aXJlLWNvcnAgZnJvbSB0aGUgY3JlYXRpbmcgZG9jdW1lbnQKIFBBU1MgYmxvYiBVUkwgZGVkaWNh
dGVkIHdvcmtlcjogU2FtZSBvcmlnaW4gc2hvdWxkIGJlIGFsbG93ZWQuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vy
cy9zZXJ2aWNlLXdvcmtlci9jbGFpbS1zaGFyZWQtd29ya2VyLWZldGNoLmh0dHBzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2Vydmlj
ZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2NsYWltLXNoYXJlZC13b3JrZXItZmV0Y2guaHR0cHMt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTBk
OTFhZDUxMDFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvY2xhaW0tc2hh
cmVkLXdvcmtlci1mZXRjaC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKKwor
RkFJTCBmZXRjaCgpIGluIFNoYXJlZFdvcmtlciBzaG91bGQgYmUgaW50ZXJjZXB0ZWQgYWZ0ZXIg
dGhlIGNsaWVudCBpcyBjbGFpbWVkLiBhc3NlcnRfZXF1YWxzOiBmZXRjaCgpIGluIHRoZSBzaGFy
ZWQgd29ya2VyIHNob3VsZCBiZSBpbnRlcmNlcHRlZC4gZXhwZWN0ZWQgIkludGVyY2VwdGVkISIg
YnV0IGdvdCAiYSBzaW1wbGUgdGV4dCBmaWxlXG4iCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXItZGV0
YWNoLWZyYW1lLWluLWVycm9yLWV2ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXItZGV0YWNoLWZy
YW1lLWluLWVycm9yLWV2ZW50LWV4cGVjdGVkLnR4dAppbmRleCBlZGUwMjdiZmVjYWEuLmVhODRh
N2ZmMDIyOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlci1kZXRhY2gtZnJhbWUtaW4tZXJyb3ItZXZlbnQt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXItZGV0YWNoLWZyYW1lLWluLWVycm9yLWV2ZW50LWV4
cGVjdGVkLnR4dApAQCAtMSw2ICsxLDMgQEAKIAotCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwg
bWVzc2FnZSA9IG51bGwKLQotVElNRU9VVCBUZXN0IGZyYW1lIGRldGFjaCBpbiBzaGFyZWQgd29y
a2VyJ3MgZXJyb3IgaGFuZGxlciBUZXN0IHRpbWVkIG91dAorUEFTUyBUZXN0IGZyYW1lIGRldGFj
aCBpbiBzaGFyZWQgd29ya2VyJ3MgZXJyb3IgaGFuZGxlcgogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2Vy
LWV4Y2VwdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQK
aW5kZXggMTU4ODI2OTIyMjgxLi41ODM5ZTQ2ZTMyOWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXItZXhj
ZXB0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQK
QEAgLTEsMyArMSwzIEBACiAKLUZBSUwgVGhpcyB0ZXN0IGNoZWNrcyB3aGV0aGVyIGV4Y2VwdGlv
bnMgaW4gU2hhcmVkV29ya2VycyBhcmUgbG9nZ2VkIHRvIHRoZSBwYXJlbnQgZG9jdW1lbnQuIEFu
IGV4Y2VwdGlvbiBzaG91bGQgYmUgbG9nZ2VkIHRvIHRoZSBlcnJvciBjb25zb2xlLiBudWxsIGlz
IG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3dvcmtlci5wb3J0Lm9ubWVzc2FnZSA9IGZ1bmN0
aW9uKGV2dCkgeyB3b3JrZXIub25tZXNzYWdlKGV2dCk7IH0nKQorUEFTUyBUaGlzIHRlc3QgY2hl
Y2tzIHdoZXRoZXIgZXhjZXB0aW9ucyBpbiBTaGFyZWRXb3JrZXJzIGFyZSBsb2dnZWQgdG8gdGhl
IHBhcmVudCBkb2N1bWVudC4gQW4gZXhjZXB0aW9uIHNob3VsZCBiZSBsb2dnZWQgdG8gdGhlIGVy
cm9yIGNvbnNvbGUuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXItZXhjZXB0aW9uLXByb3BhZ2F0aW9u
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9TaGFyZWRXb3JrZXItZXhjZXB0aW9uLXByb3BhZ2F0aW9uLWV4cGVjdGVkLnR4
dAppbmRleCA0ZDEzOWI1YWFkNzcuLjQ2YmI4OTdmMDc0MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlci1l
eGNlcHRpb24tcHJvcGFnYXRpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXItZXhjZXB0aW9u
LXByb3BhZ2F0aW9uLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKIAotRkFJTCBVbmNhdWdo
dCBlcnJvciBpbiBzaGFyZWQgd29ya2VyIHNob3VsZCBub3QgcHJvcGFnYXRlIHRvIHdpbmRvdyBu
dWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3dvcmtlci5wb3J0Lm9ubWVzc2FnZSA9
IGZ1bmN0aW9uKGV2dCkgeyB3b3JrZXIub25tZXNzYWdlKGV2dCk7IH0nKQorUEFTUyBVbmNhdWdo
dCBlcnJvciBpbiBzaGFyZWQgd29ya2VyIHNob3VsZCBub3QgcHJvcGFnYXRlIHRvIHdpbmRvdwog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvU2hhcmVkV29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2Vy
LXNjcmlwdC1lcnJvci1leHBlY3RlZC50eHQKaW5kZXggNzQ4NjcwYzc1ZjNmLi5lODEzMzgwMGQy
Y2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9TaGFyZWRXb3JrZXItc2NyaXB0LWVycm9yLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVk
V29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw3IEBACitDT05TT0xF
IE1FU1NBR0U6IEVycm9yOiBhc3NlcnRfdW5yZWFjaGVkOiBGQUlMOiBvbmVycm9yIGludm9rZWQg
Zm9yIGEgc2NyaXB0IGVycm9yLiBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKIAotRkFJTCBUZXN0
IHNjcmlwdCBlcnJvciB1bmhhbmRsZWQuIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlv
biB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogbnVsbCBpcyBub3QgYW4gb2JqZWN0IChl
dmFsdWF0aW5nICd3b3JrZXIucG9ydC5wb3N0TWVzc2FnZScpIgotRkFJTCBUZXN0IHNjcmlwdCBl
cnJvciBoYW5kbGVkLiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1
ZTogb2JqZWN0ICJUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAn
d29ya2VyLnBvcnQucG9zdE1lc3NhZ2UnKSIKK0hhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdl
ID0gRXJyb3I6IGFzc2VydF91bnJlYWNoZWQ6IEZBSUw6IG9uZXJyb3IgaW52b2tlZCBmb3IgYSBz
Y3JpcHQgZXJyb3IuIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorCitQQVNTIFRlc3Qgc2NyaXB0
IGVycm9yIHVuaGFuZGxlZC4KK1BBU1MgVGVzdCBzY3JpcHQgZXJyb3IgaGFuZGxlZC4KIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL1NoYXJlZFdvcmtlci1zaW1wbGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlci1zaW1wbGUtZXhw
ZWN0ZWQudHh0CmluZGV4IDJhYmU1MjlkMjE1My4uODM3NjMxOTcxZTRiIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVk
V29ya2VyLXNpbXBsZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlci1zaW1wbGUtZXhwZWN0ZWQu
dHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIFRlc3Qgc2ltcGxlIHNoYXJlZCB3b3JrZXIgY29u
c3RydWN0aW9uIGNhc2UuIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZh
bHVlOiBvYmplY3QgIlR5cGVFcnJvcjogbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5n
ICd3b3JrZXIucG9ydC5wb3N0TWVzc2FnZScpIgorUEFTUyBUZXN0IHNpbXBsZSBzaGFyZWQgd29y
a2VyIGNvbnN0cnVjdGlvbiBjYXNlLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyX2Jsb2JVcmwtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL1NoYXJlZFdvcmtlcl9ibG9iVXJsLWV4cGVjdGVkLnR4dAppbmRleCBmYTUzZTg3ZmEz
MGUuLjZjNjA3Zjg4Nzg0NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9ibG9iVXJsLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvU2hhcmVkV29ya2VyX2Jsb2JVcmwtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1G
QUlMIEJsb2IgVVJMIHNoYXJlZCBieSBkb2N1bWVudCBvbiBTaGFyZWRXb3JrZXIgcHJvbWlzZV90
ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBu
dWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3dvcmtlci5wb3J0LnBvc3RNZXNzYWdl
JykiCitQQVNTIEJsb2IgVVJMIHNoYXJlZCBieSBkb2N1bWVudCBvbiBTaGFyZWRXb3JrZXIKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJfZGF0YVVy
bC1leHBlY3RlZC50eHQKaW5kZXggOTk1YTA2MDE5Yjg0Li45YjU4MjBhYWU4Y2IgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9T
aGFyZWRXb3JrZXJfZGF0YVVybC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4
cGVjdGVkLnR4dApAQCAtMSwxMyArMSw1IEBACi1DT05TT0xFIE1FU1NBR0U6IEVycm9yOiBhc3Nl
cnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3QgMQogCiAKLUhhcm5lc3MgRXJyb3IgKEZBSUwp
LCBtZXNzYWdlID0gRXJyb3I6IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDIgYnV0IGdvdCAxCi0K
LVBBU1MgRGF0YSBVUkwgbm90IHNoYXJlZCBieSBjcm9zcy1vcmlnaW4gU2hhcmVkV29ya2Vycwot
VElNRU9VVCBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtlcnMgVGVz
dCB0aW1lZCBvdXQKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBFcnJvcjogYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290IDEKLQogUEFTUyBEYXRhIFVSTCBub3Qgc2hh
cmVkIGJ5IGNyb3NzLW9yaWdpbiBTaGFyZWRXb3JrZXJzCi1USU1FT1VUIERhdGEgVVJMcyBzaGFy
ZWQgYnkgc2FtZS1vcmlnaW4gU2hhcmVkV29ya2VycyBUZXN0IHRpbWVkIG91dAorUEFTUyBEYXRh
IFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtlcnMKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1dvcmtl
cl9jcm9zc19vcmlnaW5fc2VjdXJpdHlfZXJyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9Xb3JrZXJfY3Jvc3Nfb3JpZ2lu
X3NlY3VyaXR5X2Vyci1leHBlY3RlZC50eHQKaW5kZXggNzcxZWQ5YmEyMzk0Li4zMDdlOWRhY2Vh
NjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9Xb3JrZXJfY3Jvc3Nfb3JpZ2luX3NlY3VyaXR5X2Vyci1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L1dvcmtlcl9jcm9zc19vcmlnaW5fc2VjdXJpdHlfZXJyLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsx
LDQgQEAKIAotSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0KLVRJTUVP
VVQgIFdvcmtlciBjcm9zcy1vcmlnaW4gVVJMICBUZXN0IHRpbWVkIG91dAorUEFTUyBDcm9zcy1v
cmlnaW4gY2xhc3NpYyB3b3JrZXJzIHNob3VsZCBmYWlsIHRvIGZldGNoCitQQVNTIENyb3NzLW9y
aWdpbiBtb2R1bGUgd29ya2VycyBzaG91bGQgZmFpbCB0byBmZXRjaAogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3Ry
dWN0b3JzL1NoYXJlZFdvcmtlci9VUkxNaXNtYXRjaEVycm9yLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9jb25zdHJ1Y3Rv
cnMvU2hhcmVkV29ya2VyL1VSTE1pc21hdGNoRXJyb3ItZXhwZWN0ZWQudHh0CmluZGV4IDc0NDkw
ZTUyYzc2Zi4uMTNlODJmZTUwZWExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci9V
UkxNaXNtYXRjaEVycm9yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci9V
UkxNaXNtYXRjaEVycm9yLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUNPTlNPTEUgTUVT
U0FHRTogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtlcgog
Ci1GQUlMIFdlYiBXb3JrZXJzOiBTaGFyZWRXb3JrZXIgLSBzYW1lIG5hbWUsIGRpZmZlcmVudCBV
UkwgUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtlcgorUEFT
UyBXZWIgV29ya2VyczogU2hhcmVkV29ya2VyIC0gc2FtZSBuYW1lLCBkaWZmZXJlbnQgVVJMCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29ya2VyL2Nvbm5lY3QtZXZlbnQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvY29ubmVjdC1ldmVudC1leHBlY3RlZC50eHQKaW5k
ZXggM2ZiOWUwMjAwMmMwLi45N2ZlMjk0N2U0YmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hhcmVk
V29ya2VyL2Nvbm5lY3QtZXZlbnQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29y
a2VyL2Nvbm5lY3QtZXZlbnQtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIFRl
c3QgY29ubmVjdCBldmVudCBmb3IgYSBzaGFyZWQgd29ya2VyIG51bGwgaXMgbm90IGFuIG9iamVj
dCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQnKQorUEFTUyBUZXN0IGNvbm5lY3QgZXZlbnQgZm9y
IGEgc2hhcmVkIHdvcmtlcgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci9nbG9i
YWwtbWVtYmVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci9nbG9iYWwtbWVt
YmVycy1leHBlY3RlZC50eHQKaW5kZXggYWE3YzUxZGMwODM4Li5lYTUzNDQ0NGQ2YmEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29ya2VyL2dsb2JhbC1tZW1iZXJzLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
Y29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci9nbG9iYWwtbWVtYmVycy1leHBlY3RlZC50eHQKQEAg
LTEsNSArMSwzIEBACiAKLUZBSUwgVGVzdCBpZiBnbG9iYWwgbWVtYmVycyBleGlzdCBpbiBhIHNo
YXJlZCB3b3JrZXIgbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3JrZXIucG9y
dC5vbm1lc3NhZ2UgPSB0LnN0ZXBfZnVuY19kb25lKGUgPT4gewotICAgIGFzc2VydF9lcXVhbHMo
ZS5kYXRhLCAnJyk7Ci0gIH0pJykKK1BBU1MgVGVzdCBpZiBnbG9iYWwgbWVtYmVycyBleGlzdCBp
biBhIHNoYXJlZCB3b3JrZXIKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvaW50
ZXJmYWNlLW9iamVjdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvaW50ZXJm
YWNlLW9iamVjdHMtZXhwZWN0ZWQudHh0CmluZGV4IDk3MzdmNmFiMjMzOS4uN2YyNWI4MzY0NGQ3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci9pbnRlcmZhY2Utb2JqZWN0cy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvaW50ZXJmYWNlLW9iamVjdHMtZXhw
ZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIFRlc3QgaWYgaW50ZXJmYWNlIG9iamVj
dHMgZXhpc3QgaW4gYSBzaGFyZWQgd29ya2VyIG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVh
dGluZyAnd29ya2VyLnBvcnQuc3RhcnQnKQorRkFJTCBUZXN0IGlmIGludGVyZmFjZSBvYmplY3Rz
IGV4aXN0IGluIGEgc2hhcmVkIHdvcmtlciBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiIiBidXQg
Z290ICJUaGVzZSB3ZXJlIG1pc3Npbmc6IFdvcmtlciwgU2hhcmVkV29ya2VyLCBBcHBsaWNhdGlv
bkNhY2hlIgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci9uYW1lLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29ya2VyL25hbWUtZXhwZWN0ZWQudHh0CmluZGV4IGNjNTA5
MWI3MzRiMS4uZmY2NzIzNTM5MzFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci9u
YW1lLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci9uYW1lLWV4cGVjdGVk
LnR4dApAQCAtMSw1ICsxLDMgQEAKIAotRkFJTCBUZXN0IHNlbGYubmFtZSBpbiBhIHNoYXJlZCB3
b3JrZXIgbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3JrZXIucG9ydC5vbm1l
c3NhZ2UgPSB0LnN0ZXBfZnVuY19kb25lKGUgPT4gewotICAgIGFzc2VydF9lcXVhbHMoZS5kYXRh
LCAnaGVsbG8nKTsKLSAgfSknKQorUEFTUyBUZXN0IHNlbGYubmFtZSBpbiBhIHNoYXJlZCB3b3Jr
ZXIKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvbnVsbC1hcmd1bWVudHMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvbnVsbC1hcmd1bWVudHMtZXhwZWN0ZWQu
dHh0CmluZGV4IDUyMWYxM2M2MGFjMi4uNzNkMDY0YWUxZjUyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3Jz
L1NoYXJlZFdvcmtlci9udWxsLWFyZ3VtZW50cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9T
aGFyZWRXb3JrZXIvbnVsbC1hcmd1bWVudHMtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAog
Ci1GQUlMIFRlc3QgY29uc3RydWN0aW5nIGEgc2hhcmVkIHdvcmtlciB3aXRoIG51bGwgbnVsbCBp
cyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3JrZXIucG9ydCcpCitQQVNTIFRlc3QgY29u
c3RydWN0aW5nIGEgc2hhcmVkIHdvcmtlciB3aXRoIG51bGwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9y
cy9TaGFyZWRXb3JrZXIvbnVtYmVyLWFyZ3VtZW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1No
YXJlZFdvcmtlci9udW1iZXItYXJndW1lbnRzLWV4cGVjdGVkLnR4dAppbmRleCBhYTAxZDI0YjVm
N2UuLjZhZTJkYjQ5MjI0ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvbnVtYmVy
LWFyZ3VtZW50cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvbnVtYmVy
LWFyZ3VtZW50cy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgVGVzdCBjb25z
dHJ1Y3RpbmcgYSBzaGFyZWQgd29ya2VyIHdpdGggMSBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2
YWx1YXRpbmcgJ3dvcmtlci5wb3J0JykKK1BBU1MgVGVzdCBjb25zdHJ1Y3RpbmcgYSBzaGFyZWQg
d29ya2VyIHdpdGggMQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci9wb3J0LW9u
bWVzc2FnZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci9wb3J0LW9ubWVzc2Fn
ZS1leHBlY3RlZC50eHQKaW5kZXggYmRjYjU4NjRmYWEzLi4yMDRlMTMwNmYyMzYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9j
b25zdHJ1Y3RvcnMvU2hhcmVkV29ya2VyL3BvcnQtb25tZXNzYWdlLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29u
c3RydWN0b3JzL1NoYXJlZFdvcmtlci9wb3J0LW9ubWVzc2FnZS1leHBlY3RlZC50eHQKQEAgLTEs
NSArMSwzIEBACiAKLUZBSUwgVGVzdCBTaGFyZWRXb3JrZXIucG9ydC5vbm1lc3NhZ2UgbnVsbCBp
cyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3JrZXIucG9ydC5vbm1lc3NhZ2UgPSB0LnN0
ZXBfZnVuY19kb25lKGUgPT4gewotICAgIGFzc2VydF90cnVlKGUuZGF0YSk7Ci0gIH0pJykKK1BB
U1MgVGVzdCBTaGFyZWRXb3JrZXIucG9ydC5vbm1lc3NhZ2UKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9y
cy9TaGFyZWRXb3JrZXIvcG9ydC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hh
cmVkV29ya2VyL3BvcnQtcHJvcGVydGllcy1leHBlY3RlZC50eHQKaW5kZXggMjUzZDc2ZTQwY2Fi
Li4zNDgyMmQwNGI3ZTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29ya2VyL3BvcnQtcHJv
cGVydGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvcG9ydC1wcm9w
ZXJ0aWVzLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKIAotRkFJTCB3b3JrZXIucG9ydCB3
b3JrZXIucG9ydCBpcyBub3QgYW4gT2JqZWN0LiAoZXZhbHVhdGluZyAnJ3Bvc3RNZXNzYWdlJyBp
biB3b3JrZXIucG9ydCcpCitQQVNTIHdvcmtlci5wb3J0CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMv
U2hhcmVkV29ya2VyL3NhbWUtb3JpZ2luLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29y
a2VyL3NhbWUtb3JpZ2luLWV4cGVjdGVkLnR4dAppbmRleCBmMWE1YWUwMDNhOTMuLmNlZmY4Nzcw
NDc5MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvc2FtZS1vcmlnaW4tZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29ya2VyL3NhbWUtb3JpZ2luLWV4cGVjdGVkLnR4
dApAQCAtMSwxNSArMSwxOSBAQAotCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9
IG51bGwKK0NPTlNPTEUgTUVTU0FHRTogQ2Fubm90IGxvYWQgdW5zdXBwb3J0ZWQ6LgorQ09OU09M
RSBNRVNTQUdFOiBDYW5ub3QgbG9hZCBqYXZhc2NyaXB0OiIiLgorQ09OU09MRSBNRVNTQUdFOiBD
YW5ub3QgbG9hZCBhYm91dDpibGFuay4KK0NPTlNPTEUgTUVTU0FHRTogQ2Fubm90IGxvYWQgaHR0
cDovL3d3dy5vcGVyYS5jb20vLgorQ09OU09MRSBNRVNTQUdFOiBDYW5ub3QgbG9hZCBodHRwOi8v
bG9jYWxob3N0OjgxLy4KK0NPTlNPTEUgTUVTU0FHRTogQ2Fubm90IGxvYWQgaHR0cHM6Ly9sb2Nh
bGhvc3Q6ODAvLgorQ09OU09MRSBNRVNTQUdFOiBDYW5ub3QgbG9hZCBodHRwczovL2xvY2FsaG9z
dDo4MDAwLy4KK0NPTlNPTEUgTUVTU0FHRTogQ2Fubm90IGxvYWQgaHR0cDovL2xvY2FsaG9zdDo4
MDEyLy4KIAogRkFJTCB1bnN1cHBvcnRlZF9zY2hlbWUgYXNzZXJ0X3Rocm93c19kb206IGZ1bmN0
aW9uICIoKSA9PiB7IG5ldyBTaGFyZWRXb3JrZXIoJ3Vuc3VwcG9ydGVkOicsICcnKTsgfSIgZGlk
IG5vdCB0aHJvdwotRkFJTCBkYXRhX3VybCBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRp
bmcgJ3dvcmtlci5wb3J0Lm9ubWVzc2FnZSA9IHQuc3RlcF9mdW5jX2RvbmUoZSA9PiB7Ci0gICAg
YXNzZXJ0X2VxdWFscyhlLmRhdGEsIDEpOwotICB9KScpCi1USU1FT1VUIGphdmFzY3JpcHRfdXJs
IFRlc3QgdGltZWQgb3V0Ci1USU1FT1VUIGFib3V0X2JsYW5rIFRlc3QgdGltZWQgb3V0Ci1USU1F
T1VUIG9wZXJhX2NvbSBUZXN0IHRpbWVkIG91dAotVElNRU9VVCBwb3J0XzgxIFRlc3QgdGltZWQg
b3V0Ci1USU1FT1VUIGh0dHBzX3BvcnRfODAgVGVzdCB0aW1lZCBvdXQKLVRJTUVPVVQgaHR0cHNf
cG9ydF84MDAwIFRlc3QgdGltZWQgb3V0Ci1USU1FT1VUIGh0dHBfcG9ydF84MDEyIFRlc3QgdGlt
ZWQgb3V0CitQQVNTIGRhdGFfdXJsCitQQVNTIGphdmFzY3JpcHRfdXJsCitQQVNTIGFib3V0X2Js
YW5rCitQQVNTIG9wZXJhX2NvbQorUEFTUyBwb3J0XzgxCitQQVNTIGh0dHBzX3BvcnRfODAKK1BB
U1MgaHR0cHNfcG9ydF84MDAwCitQQVNTIGh0dHBfcG9ydF84MDEyCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9jb25zdHJ1
Y3RvcnMvU2hhcmVkV29ya2VyL3NldHRpbmctcG9ydC1tZW1iZXJzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9jb25zdHJ1
Y3RvcnMvU2hhcmVkV29ya2VyL3NldHRpbmctcG9ydC1tZW1iZXJzLWV4cGVjdGVkLnR4dAppbmRl
eCAxNjFmYTlhZmM1ZTMuLjA3ZjBhMzdkNjlkNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRX
b3JrZXIvc2V0dGluZy1wb3J0LW1lbWJlcnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hh
cmVkV29ya2VyL3NldHRpbmctcG9ydC1tZW1iZXJzLWV4cGVjdGVkLnR4dApAQCAtMSw5ICsxLDkg
QEAKIAotRkFJTCBwb3N0TWVzc2FnZSBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcg
J3dvcmtlci5wb3J0LnBvc3RNZXNzYWdlID0gMScpCi1GQUlMIHN0YXJ0IG51bGwgaXMgbm90IGFu
IG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQuc3RhcnQgPSAxJykKLUZBSUwgY2xvc2Ug
bnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3JrZXIucG9ydC5jbG9zZSA9IDEn
KQotRkFJTCBvbm1lc3NhZ2UgbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3Jr
ZXIucG9ydC5vbm1lc3NhZ2UgPSBmJykKLUZBSUwgYWRkRXZlbnRMaXN0ZW5lciBudWxsIGlzIG5v
dCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3dvcmtlci5wb3J0LmFkZEV2ZW50TGlzdGVuZXIgPSAx
JykKLUZBSUwgcmVtb3ZlRXZlbnRMaXN0ZW5lciBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1
YXRpbmcgJ3dvcmtlci5wb3J0LnJlbW92ZUV2ZW50TGlzdGVuZXIgPSAxJykKLUZBSUwgZGVzcGF0
Y2hFdmVudCBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3dvcmtlci5wb3J0LmRl
c3BhdGNoRXZlbnQgPSAxJykKK1BBU1MgcG9zdE1lc3NhZ2UKK1BBU1Mgc3RhcnQKK1BBU1MgY2xv
c2UKK0ZBSUwgb25tZXNzYWdlIGFzc2VydF9lcXVhbHM6IHtoYW5kbGVFdmVudDooKSA9PiB7fX0g
ZXhwZWN0ZWQgbnVsbCBidXQgZ290IG9iamVjdCAiW29iamVjdCBPYmplY3RdIgorUEFTUyBhZGRF
dmVudExpc3RlbmVyCitQQVNTIHJlbW92ZUV2ZW50TGlzdGVuZXIKK1BBU1MgZGVzcGF0Y2hFdmVu
dAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci91bmRlZmluZWQtYXJndW1lbnRz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29ya2VyL3VuZGVmaW5lZC1hcmd1bWVudHMt
ZXhwZWN0ZWQudHh0CmluZGV4IDdmYTc3ODVmNDYwOC4uYTViZDNjZDBiMzExIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29u
c3RydWN0b3JzL1NoYXJlZFdvcmtlci91bmRlZmluZWQtYXJndW1lbnRzLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
Y29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci91bmRlZmluZWQtYXJndW1lbnRzLWV4cGVjdGVkLnR4
dApAQCAtMSwzICsxLDMgQEAKIAotRkFJTCBUZXN0IGNvbnN0cnVjdGluZyBhIHNoYXJlZCB3b3Jr
ZXIgd2l0aCB1bmRlZmluZWQgbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3Jr
ZXIucG9ydCcpCitQQVNTIFRlc3QgY29uc3RydWN0aW5nIGEgc2hhcmVkIHdvcmtlciB3aXRoIHVu
ZGVmaW5lZAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci91bmV4cGVjdGVkLWds
b2JhbC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29ya2VyL3VuZXhw
ZWN0ZWQtZ2xvYmFsLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CmluZGV4IGFkOTc5Y2M5MDkxMC4u
YjQwZjUwMjM5NDNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci91bmV4cGVjdGVk
LWdsb2JhbC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtl
ci91bmV4cGVjdGVkLWdsb2JhbC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDMg
QEAKIAotRkFJTCBUZXN0IHVuZXhwZWN0ZWQgcHJvcGVydGllcyBhcmUgbm90IGluIGdsb2JhbCBz
Y29wZSBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3dvcmtlci5wb3J0Lm9ubWVz
c2FnZSA9IHQuc3RlcF9mdW5jX2RvbmUoZSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhlLmRhdGEs
ICcnKTsKLSAgfSknKQorUEFTUyBUZXN0IHVuZXhwZWN0ZWQgcHJvcGVydGllcyBhcmUgbm90IGlu
IGdsb2JhbCBzY29wZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci91bnJlc29s
dmFibGUtdXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29ya2VyL3VucmVzb2x2YWJs
ZS11cmwtZXhwZWN0ZWQudHh0CmluZGV4IDA2ZDVjOWFjMWI5My4uNTUyY2I5ZDUwMWI1IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci91bnJlc29sdmFibGUtdXJsLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci91bnJlc29sdmFibGUtdXJsLWV4cGVjdGVkLnR4
dApAQCAtMSw1ICsxLDMgQEAKIAotRkFJTCByZXNvbHZpbmcgYnJva2VuIHVybCBhc3NlcnRfdGhy
b3dzX2RvbTogZnVuY3Rpb24gIigpID0+IHsKLSAgICBjb25zdCB3b3JrZXIgPSBuZXcgU2hhcmVk
V29ya2VyKCdodHRwOi8vZm9vIGJhcicpOwotICB9IiBkaWQgbm90IHRocm93CitQQVNTIHJlc29s
dmluZyBicm9rZW4gdXJsCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9kYXRhLXVybC1zaGFyZWQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2RhdGEt
dXJsLXNoYXJlZC1leHBlY3RlZC50eHQKaW5kZXggYzgxMjAxNGRhMzFlLi4xM2ZjOTAzZDcwN2Yg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9kYXRhLXVybC1zaGFyZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9kYXRhLXVybC1zaGFyZWQtZXhw
ZWN0ZWQudHh0CkBAIC0xLDMwICsxLDExIEBACi1DT05TT0xFIE1FU1NBR0U6IFR5cGVFcnJvcjog
bnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3JrZXIucG9ydC5vbm1lc3NhZ2Ug
PSBlID0+IHBvcnQucG9zdE1lc3NhZ2UoZS5kYXRhKScpCiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVP
VVQpLCBtZXNzYWdlID0gbnVsbAotCi1GQUlMIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQgTUlNRSBh
bGxvd2VkIG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAndy5wb3J0Lm9ubWVzc2Fn
ZSA9IHQuc3RlcF9mdW5jX2RvbmUoZnVuY3Rpb24oZSkgewotICAgICAgYXNzZXJ0X2VxdWFscyhl
LmRhdGEsICdQQVNTJyk7Ci0gICAgfSknKQotRkFJTCB0ZXh0L3BsYWluIE1JTUUgYWxsb3dlZCBu
dWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3cucG9ydC5vbm1lc3NhZ2UgPSB0LnN0
ZXBfZnVuY19kb25lKGZ1bmN0aW9uKGUpIHsKLSAgICAgIGFzc2VydF9lcXVhbHMoZS5kYXRhLCAn
UEFTUycpOwotICAgIH0pJykKLUZBSUwgZW1wdHkgTUlNRSBhbGxvd2VkIG51bGwgaXMgbm90IGFu
IG9iamVjdCAoZXZhbHVhdGluZyAndy5wb3J0Lm9ubWVzc2FnZSA9IHQuc3RlcF9mdW5jX2RvbmUo
ZnVuY3Rpb24oZSkgewotICAgICAgYXNzZXJ0X2VxdWFscyhlLmRhdGEsICdQQVNTJyk7Ci0gICAg
fSknKQotRkFJTCBjb21tdW5pY2F0aW9uIGdvZXMgYm90aCB3YXlzIG51bGwgaXMgbm90IGFuIG9i
amVjdCAoZXZhbHVhdGluZyAndy5wb3J0Lm9ubWVzc2FnZSA9IHQuc3RlcF9mdW5jX2RvbmUoZnVu
Y3Rpb24oZSkgewotICAgICAgYXNzZXJ0X2VxdWFscyhlLmRhdGEsICdQQVNTJyk7Ci0gICAgfSkn
KQotRkFJTCBpbmRleGVkREIgaXMgcHJlc2VudCBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1
YXRpbmcgJ3cucG9ydC5vbm1lc3NhZ2UgPSB0LnN0ZXBfZnVuY19kb25lKGZ1bmN0aW9uKGUpIHsK
LSAgICAgIGFzc2VydF9lcXVhbHMoZS5kYXRhLCAnUEFTUycpOwotICAgIH0pJykKLUZBSUwgaW5k
ZXhlZERCIGlzIGluYWNjZXNzaWJsZSBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcg
J3cucG9ydC5vbm1lc3NhZ2UgPSB0LnN0ZXBfZnVuY19kb25lKGZ1bmN0aW9uKGUpIHsKLSAgICAg
IGFzc2VydF9lcXVhbHMoZS5kYXRhLCAnUEFTUycpOwotICAgIH0pJykKLUZBSUwgY3Jvc3Mtb3Jp
Z2luIHdvcmtlciBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3cucG9ydC5vbm1l
c3NhZ2UgPSB0LnN0ZXBfZnVuY19kb25lKGZ1bmN0aW9uKGUpIHsKLSAgICAgIGFzc2VydF9lcXVh
bHMoZS5kYXRhLCAnUEFTUycpOwotICAgIH0pJykKLUZBSUwgd29ya2VyIGhhcyBvcGFxdWUgb3Jp
Z2luIG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAndy5wb3J0Lm9ubWVzc2FnZSA9
IHQuc3RlcF9mdW5jX2RvbmUoZnVuY3Rpb24oZSkgewotICAgICAgYXNzZXJ0X2VxdWFscyhlLmRh
dGEsICdQQVNTJyk7Ci0gICAgfSknKQotVElNRU9VVCBBIGRhdGE6IFVSTCBzaGFyZWQgd29ya2Vy
IHNob3VsZCBub3QgYmUgc2hhcmVkIGFtb25nIG9yaWdpbnMuIFRlc3QgdGltZWQgb3V0CitQQVNT
IGFwcGxpY2F0aW9uL2phdmFzY3JpcHQgTUlNRSBhbGxvd2VkCitQQVNTIHRleHQvcGxhaW4gTUlN
RSBhbGxvd2VkCitQQVNTIGVtcHR5IE1JTUUgYWxsb3dlZAorUEFTUyBjb21tdW5pY2F0aW9uIGdv
ZXMgYm90aCB3YXlzCitQQVNTIGluZGV4ZWREQiBpcyBwcmVzZW50CitQQVNTIGluZGV4ZWREQiBp
cyBpbmFjY2Vzc2libGUKK1BBU1MgY3Jvc3Mtb3JpZ2luIHdvcmtlcgorUEFTUyB3b3JrZXIgaGFz
IG9wYXF1ZSBvcmlnaW4KK1BBU1MgQSBkYXRhOiBVUkwgc2hhcmVkIHdvcmtlciBzaG91bGQgbm90
IGJlIHNoYXJlZCBhbW9uZyBvcmlnaW5zLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2Vy
LWltcG9ydC1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1p
bXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dAppbmRleCA1NzZlNmQyYjdlZDIuLjRh
MjZiZTkyOWE4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwu
d2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1ibG9iLXVy
bC53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8g
ZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3MS5sb2NhbGhvc3Q6OTQ0My93b3JrZXJzL21vZHVsZXMv
cmVzb3VyY2VzL2V4cG9ydC1vbi1sb2FkLXNjcmlwdC5weQogCiBQQVNTIFN0YXRpYyBpbXBvcnQu
CiBGQUlMIFN0YXRpYyBpbXBvcnQgKGNyb3NzLW9yaWdpbikuIHByb21pc2VfdGVzdDogVW5oYW5k
bGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiAiSW1wb3J0aW5nIGEgbW9kdWxlIHNjcmlwdCBmYWls
ZWQuIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11cmwtY3Jvc3Mt
b3JpZ2luLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLWNy
b3NzLW9yaWdpbi1leHBlY3RlZC50eHQKaW5kZXggNGY4NjQxZTUxNDgwLi4yOTk3ZjdlMWYzMDgg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdp
bi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11cmwtY3Jv
c3Mtb3JpZ2luLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUNPTlNPTEUgTUVTU0FHRTog
T3JpZ2luIG51bGwgaXMgbm90IGFsbG93ZWQgYnkgQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2lu
LiBTdGF0dXMgY29kZTogMjAwCiAKIEhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0g
bnVsbAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC53aW5k
b3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11cmwud2luZG93
LWV4cGVjdGVkLnR4dAppbmRleCBlYWM3Zjk1ZGU2ZjIuLmNiYzA0MjllMGM3MSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21v
ZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
bW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0
CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8v
d3d3MS5sb2NhbGhvc3Q6OTQ0My93b3JrZXJzL21vZHVsZXMvcmVzb3VyY2VzL2V4cG9ydC1vbi1s
b2FkLXNjcmlwdC5weQogCiBIYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtcmVmZXJyZXItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtcmVmZXJyZXItZXhwZWN0ZWQudHh0CmluZGV4
IDVjZDJkYzI1ZWUwNS4uN2I0ZWU4YzE5ZWQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2Vy
LWltcG9ydC1yZWZlcnJlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBv
cnQtcmVmZXJyZXItZXhwZWN0ZWQudHh0CkBAIC0xLDMxICsxLDE2IEBACi1DT05TT0xFIE1FU1NB
R0U6IFR5cGVFcnJvcjogbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3JrZXIu
cG9ydC5vbm1lc3NhZ2UgPSBtc2cgPT4gd2luZG93Lm9wZW5lci5wb3N0TWVzc2FnZShtc2cuZGF0
YSwgJyonKScpCi1DT05TT0xFIE1FU1NBR0U6IFR5cGVFcnJvcjogbnVsbCBpcyBub3QgYW4gb2Jq
ZWN0IChldmFsdWF0aW5nICd3b3JrZXIucG9ydC5vbm1lc3NhZ2UgPSBtc2cgPT4gd2luZG93Lm9w
ZW5lci5wb3N0TWVzc2FnZShtc2cuZGF0YSwgJyonKScpCi1DT05TT0xFIE1FU1NBR0U6IFR5cGVF
cnJvcjogbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3JrZXIucG9ydC5vbm1l
c3NhZ2UgPSBtc2cgPT4gd2luZG93Lm9wZW5lci5wb3N0TWVzc2FnZShtc2cuZGF0YSwgJyonKScp
Ci1DT05TT0xFIE1FU1NBR0U6IFR5cGVFcnJvcjogbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFs
dWF0aW5nICd3b3JrZXIucG9ydC5vbm1lc3NhZ2UgPSBtc2cgPT4gd2luZG93Lm9wZW5lci5wb3N0
TWVzc2FnZShtc2cuZGF0YSwgJyonKScpCi1DT05TT0xFIE1FU1NBR0U6IFR5cGVFcnJvcjogbnVs
bCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3JrZXIucG9ydC5vbm1lc3NhZ2UgPSBt
c2cgPT4gd2luZG93Lm9wZW5lci5wb3N0TWVzc2FnZShtc2cuZGF0YSwgJyonKScpCi1DT05TT0xF
IE1FU1NBR0U6IFR5cGVFcnJvcjogbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3
b3JrZXIucG9ydC5vbm1lc3NhZ2UgPSBtc2cgPT4gd2luZG93Lm9wZW5lci5wb3N0TWVzc2FnZSht
c2cuZGF0YSwgJyonKScpCi1DT05TT0xFIE1FU1NBR0U6IFR5cGVFcnJvcjogbnVsbCBpcyBub3Qg
YW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3JrZXIucG9ydC5vbm1lc3NhZ2UgPSBtc2cgPT4gd2lu
ZG93Lm9wZW5lci5wb3N0TWVzc2FnZShtc2cuZGF0YSwgJyonKScpCi1DT05TT0xFIE1FU1NBR0U6
IFR5cGVFcnJvcjogbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3JrZXIucG9y
dC5vbm1lc3NhZ2UgPSBtc2cgPT4gd2luZG93Lm9wZW5lci5wb3N0TWVzc2FnZShtc2cuZGF0YSwg
JyonKScpCi1DT05TT0xFIE1FU1NBR0U6IFR5cGVFcnJvcjogbnVsbCBpcyBub3QgYW4gb2JqZWN0
IChldmFsdWF0aW5nICd3b3JrZXIucG9ydC5vbm1lc3NhZ2UgPSBtc2cgPT4gd2luZG93Lm9wZW5l
ci5wb3N0TWVzc2FnZShtc2cuZGF0YSwgJyonKScpCi1DT05TT0xFIE1FU1NBR0U6IFR5cGVFcnJv
cjogbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3JrZXIucG9ydC5vbm1lc3Nh
Z2UgPSBtc2cgPT4gd2luZG93Lm9wZW5lci5wb3N0TWVzc2FnZShtc2cuZGF0YSwgJyonKScpCi1D
T05TT0xFIE1FU1NBR0U6IFR5cGVFcnJvcjogbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0
aW5nICd3b3JrZXIucG9ydC5vbm1lc3NhZ2UgPSBtc2cgPT4gd2luZG93Lm9wZW5lci5wb3N0TWVz
c2FnZShtc2cuZGF0YSwgJyonKScpCi1DT05TT0xFIE1FU1NBR0U6IFR5cGVFcnJvcjogbnVsbCBp
cyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3JrZXIucG9ydC5vbm1lc3NhZ2UgPSBtc2cg
PT4gd2luZG93Lm9wZW5lci5wb3N0TWVzc2FnZShtc2cuZGF0YSwgJyonKScpCi1DT05TT0xFIE1F
U1NBR0U6IFR5cGVFcnJvcjogbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3Jr
ZXIucG9ydC5vbm1lc3NhZ2UgPSBtc2cgPT4gd2luZG93Lm9wZW5lci5wb3N0TWVzc2FnZShtc2cu
ZGF0YSwgJyonKScpCi1DT05TT0xFIE1FU1NBR0U6IFR5cGVFcnJvcjogbnVsbCBpcyBub3QgYW4g
b2JqZWN0IChldmFsdWF0aW5nICd3b3JrZXIucG9ydC5vbm1lc3NhZ2UgPSBtc2cgPT4gd2luZG93
Lm9wZW5lci5wb3N0TWVzc2FnZShtc2cuZGF0YSwgJyonKScpCi1DT05TT0xFIE1FU1NBR0U6IFR5
cGVFcnJvcjogbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3JrZXIucG9ydC5v
bm1lc3NhZ2UgPSBtc2cgPT4gd2luZG93Lm9wZW5lci5wb3N0TWVzc2FnZShtc2cuZGF0YSwgJyon
KScpCiAKLUZBSUwgU2FtZS1vcmlnaW4gdG9wLWxldmVsIG1vZHVsZSBzY3JpcHQgbG9hZGluZyB3
aXRoICJuby1yZWZlcnJlciIgcmVmZXJyZXIgcG9saWN5IHByb21pc2VfdGVzdDogVW5oYW5kbGVk
IHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogVHlwZSBlcnJvciIKLUZB
SUwgU2FtZS1vcmlnaW4gdG9wLWxldmVsIG1vZHVsZSBzY3JpcHQgbG9hZGluZyB3aXRoICJvcmln
aW4iIHJlZmVycmVyIHBvbGljeSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0
aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiCi1GQUlMIFNhbWUtb3JpZ2lu
IHRvcC1sZXZlbCBtb2R1bGUgc2NyaXB0IGxvYWRpbmcgd2l0aCAic2FtZS1vcmlnaW4iIHJlZmVy
cmVyIHBvbGljeSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTog
b2JqZWN0ICJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiCi1GQUlMIFNhbWUtb3JpZ2luIHN0YXRpYyBp
bXBvcnQgd2l0aCAibm8tcmVmZXJyZXIiIHJlZmVycmVyIHBvbGljeS4gcHJvbWlzZV90ZXN0OiBV
bmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBUeXBlIGVy
cm9yIgotRkFJTCBTYW1lLW9yaWdpbiBzdGF0aWMgaW1wb3J0IHdpdGggIm9yaWdpbiIgcmVmZXJy
ZXIgcG9saWN5LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTog
b2JqZWN0ICJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiCi1GQUlMIFNhbWUtb3JpZ2luIHN0YXRpYyBp
bXBvcnQgd2l0aCAic2FtZS1vcmlnaW4iIHJlZmVycmVyIHBvbGljeS4gcHJvbWlzZV90ZXN0OiBV
bmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBUeXBlIGVy
cm9yIgorUEFTUyBTYW1lLW9yaWdpbiB0b3AtbGV2ZWwgbW9kdWxlIHNjcmlwdCBsb2FkaW5nIHdp
dGggIm5vLXJlZmVycmVyIiByZWZlcnJlciBwb2xpY3kKK1BBU1MgU2FtZS1vcmlnaW4gdG9wLWxl
dmVsIG1vZHVsZSBzY3JpcHQgbG9hZGluZyB3aXRoICJvcmlnaW4iIHJlZmVycmVyIHBvbGljeQor
UEFTUyBTYW1lLW9yaWdpbiB0b3AtbGV2ZWwgbW9kdWxlIHNjcmlwdCBsb2FkaW5nIHdpdGggInNh
bWUtb3JpZ2luIiByZWZlcnJlciBwb2xpY3kKK0ZBSUwgU2FtZS1vcmlnaW4gc3RhdGljIGltcG9y
dCB3aXRoICJuby1yZWZlcnJlciIgcmVmZXJyZXIgcG9saWN5LiBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCAiIiBidXQgZ290ICJodHRwOi8vbG9jYWxob3N0Ojg4MDAvd29ya2Vycy9tb2R1bGVzL3Jl
c291cmNlcy9zdGF0aWMtaW1wb3J0LXNhbWUtb3JpZ2luLXJlZmVycmVyLWNoZWNrZXItd29ya2Vy
LmpzIgorRkFJTCBTYW1lLW9yaWdpbiBzdGF0aWMgaW1wb3J0IHdpdGggIm9yaWdpbiIgcmVmZXJy
ZXIgcG9saWN5LiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiaHR0cDovL2xvY2FsaG9zdDo4ODAw
LyIgYnV0IGdvdCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJj
ZXMvc3RhdGljLWltcG9ydC1zYW1lLW9yaWdpbi1yZWZlcnJlci1jaGVja2VyLXdvcmtlci5qcyIK
K1BBU1MgU2FtZS1vcmlnaW4gc3RhdGljIGltcG9ydCB3aXRoICJzYW1lLW9yaWdpbiIgcmVmZXJy
ZXIgcG9saWN5LgogRkFJTCBDcm9zcy1vcmlnaW4gc3RhdGljIGltcG9ydCB3aXRoICJuby1yZWZl
cnJlciIgcmVmZXJyZXIgcG9saWN5LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24g
d2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiCiBGQUlMIENyb3NzLW9y
aWdpbiBzdGF0aWMgaW1wb3J0IHdpdGggIm9yaWdpbiIgcmVmZXJyZXIgcG9saWN5LiBwcm9taXNl
X3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6
IFR5cGUgZXJyb3IiCiBGQUlMIENyb3NzLW9yaWdpbiBzdGF0aWMgaW1wb3J0IHdpdGggInNhbWUt
b3JpZ2luIiByZWZlcnJlciBwb2xpY3kuIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlv
biB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogVHlwZSBlcnJvciIKLUZBSUwgU2FtZS1v
cmlnaW4gZHluYW1pYyBpbXBvcnQgd2l0aCAibm8tcmVmZXJyZXIiIHJlZmVycmVyIHBvbGljeS4g
cHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlw
ZUVycm9yOiBUeXBlIGVycm9yIgotRkFJTCBTYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydCB3aXRo
ICJvcmlnaW4iIHJlZmVycmVyIHBvbGljeS4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0
aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBUeXBlIGVycm9yIgotRkFJTCBTYW1l
LW9yaWdpbiBkeW5hbWljIGltcG9ydCB3aXRoICJzYW1lLW9yaWdpbiIgcmVmZXJyZXIgcG9saWN5
LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJU
eXBlRXJyb3I6IFR5cGUgZXJyb3IiCitQQVNTIFNhbWUtb3JpZ2luIGR5bmFtaWMgaW1wb3J0IHdp
dGggIm5vLXJlZmVycmVyIiByZWZlcnJlciBwb2xpY3kuCitQQVNTIFNhbWUtb3JpZ2luIGR5bmFt
aWMgaW1wb3J0IHdpdGggIm9yaWdpbiIgcmVmZXJyZXIgcG9saWN5LgorUEFTUyBTYW1lLW9yaWdp
biBkeW5hbWljIGltcG9ydCB3aXRoICJzYW1lLW9yaWdpbiIgcmVmZXJyZXIgcG9saWN5LgogRkFJ
TCBDcm9zcy1vcmlnaW4gZHluYW1pYyBpbXBvcnQgd2l0aCAibm8tcmVmZXJyZXIiIHJlZmVycmVy
IHBvbGljeS4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9i
amVjdCAiVHlwZUVycm9yOiBUeXBlIGVycm9yIgogRkFJTCBDcm9zcy1vcmlnaW4gZHluYW1pYyBp
bXBvcnQgd2l0aCAib3JpZ2luIiByZWZlcnJlciBwb2xpY3kuIHByb21pc2VfdGVzdDogVW5oYW5k
bGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogVHlwZSBlcnJvciIK
IEZBSUwgQ3Jvc3Mtb3JpZ2luIGR5bmFtaWMgaW1wb3J0IHdpdGggInNhbWUtb3JpZ2luIiByZWZl
cnJlciBwb2xpY3kuIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVl
OiBvYmplY3QgIlR5cGVFcnJvcjogVHlwZSBlcnJvciIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13
b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9y
dC53aW5kb3ctZXhwZWN0ZWQudHh0CmluZGV4IDU3NmU2ZDJiN2VkMi4uNGEyNmJlOTI5YThkIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNCAr
MSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cxLmxvY2Fs
aG9zdDo5NDQzL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LW9uLWxvYWQtc2NyaXB0
LnB5CiAKIFBBU1MgU3RhdGljIGltcG9ydC4KIEZBSUwgU3RhdGljIGltcG9ydCAoY3Jvc3Mtb3Jp
Z2luKS4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6ICJJbXBv
cnRpbmcgYSBtb2R1bGUgc2NyaXB0IGZhaWxlZC4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29y
a2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1v
cHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAppbmRleCBlMWJlZGY1NDMwZWYuLmE3MGYw
NWFmNTRmNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMt
ZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwg
VVJMIGh0dHA6Ly93d3cxLmxvY2FsaG9zdDo4ODAwL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMv
ZXhwb3J0LWNyZWRlbnRpYWxzLnB5CiAKIEhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdl
ID0gbnVsbAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dvcmtlcnMvb3BhcXVlLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvb3BhcXVlLW9yaWdpbi1l
eHBlY3RlZC50eHQKaW5kZXggZjdkNjdmMThkNGE1Li42ODUwN2NhODY1YTAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9vcGFx
dWUtb3JpZ2luLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvb3BhcXVlLW9yaWdpbi1leHBlY3RlZC50eHQKQEAgLTEs
NSArMSw5IEBACiAKIAotSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0K
K1BBU1MgV29ya2VyIGhhcyBhbiBvcGFxdWUgb3JpZ2luLgorRkFJTCBXb3JrZXIgY2FuIHJlYWQg
aXRzIG93biBibG9icy4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgKHN0cmluZykgImZyb20gd29y
a2VyIiBidXQgZ290IChvYmplY3QpIG51bGwKK0ZBSUwgV29ya2VyIGNhbiByZWFkIGl0cyBvd25l
cnMgYmxvYnMuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIChzdHJpbmcpICJmcm9tIHBhZ2UiIGJ1
dCBnb3QgKG9iamVjdCkgbnVsbAorRkFJTCBXb3JrZXIgY2FuIFhIUiBmZXRjaCBhIGJsb2IuIGFz
c2VydF9lcXVhbHM6IGV4cGVjdGVkICJmcm9tIHBhZ2UiIGJ1dCBnb3QgIiIKK0ZBSUwgV29ya2Vy
IGNhbiBmZXRjaCBhIGJsb2IuIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRo
IHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogTG9hZCBmYWlsZWQiCitQQVNTIFdvcmtlciBjYW4g
YWNjZXNzIEJyb2FkY2FzdENoYW5uZWwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3Jr
ZXJzLzAwNC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVk
LnR4dAppbmRleCAwMThkYjYwNDU2OWQuLmNmZTQ2NTU2NzVjZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9t
dWx0aXBsZS13b3JrZXJzLzAwNC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3Jr
ZXJzLzAwNC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSwzIEBACiAKLUhhcm5lc3MgRXJyb3IgKFRJ
TUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1OT1RSVU4gc2hhcmVkIHdvcmtlciB3aXRoIG11bHRp
cGxlIGRvY3VtZW50cworUEFTUyBzaGFyZWQgd29ya2VyIHdpdGggbXVsdGlwbGUgZG9jdW1lbnRz
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDgtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFu
dGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKaW5kZXggOTdhNGU3YTczYTYz
Li4wOWY2NzJkMWM2MjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDgtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDgtZXhwZWN0ZWQudHh0CkBA
IC0xLDUgKzEsMyBAQAogCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwK
LQotVElNRU9VVCBtZXNzYWdlY2hhbm5lbCBpbiBzaGFyZWQgd29ya2VyIFRlc3QgdGltZWQgb3V0
CitQQVNTIG1lc3NhZ2VjaGFubmVsIGluIHNoYXJlZCB3b3JrZXIKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13
b3JrZXItZnJvbS1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItZnJvbS1i
bG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0CmluZGV4IGEwODljMjI0ODllMi4uMTllNDZiMDlh
NTZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL3NoYXJlZC13b3JrZXItZnJvbS1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0x
LDcgKzEsNSBAQAogCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKLQot
RkFJTCBDcmVhdGluZyBhIHNoYXJlZCB3b3JrZXIgZnJvbSBhIGJsb2IgVVJMIHdvcmtzLiBhc3Nl
cnRfZXF1YWxzOiBleHBlY3RlZCAid29ya2VyX09LXzIiIGJ1dCBnb3QgIndvcmtlcl9PS18xIgor
UEFTUyBDcmVhdGluZyBhIHNoYXJlZCB3b3JrZXIgZnJvbSBhIGJsb2IgVVJMIHdvcmtzLgogUEFT
UyBDcmVhdGluZyBhIHNoYXJlZCB3b3JrZXIgZnJvbSBhIGJsb2IgVVJMIHdvcmtzIGltbWVkaWF0
ZWx5IGJlZm9yZSByZXZva2luZy4KLVRJTUVPVVQgQ29ubmVjdGluZyB0byBhIHNoYXJlZCB3b3Jr
ZXIgb24gYSByZXZva2VkIGJsb2IgVVJMIHdvcmtzLiBUZXN0IHRpbWVkIG91dAorUEFTUyBDb25u
ZWN0aW5nIHRvIGEgc2hhcmVkIHdvcmtlciBvbiBhIHJldm9rZWQgYmxvYiBVUkwgd29ya3MuCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13
b3JrZXItbmFtZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQKaW5kZXggNmZmZWUyNzM5MGQ5Li5h
ZTQ1YjRkMjczOTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMtZXhwZWN0ZWQudHh0CkBAIC0x
LDMgKzEsMyBAQAogCi1GQUlMIFRlc3QgdGhlIG5hbWUgcHJvcGVydHkgb2Ygc2hhcmVkIHdvcmtl
cnMgbWl4aW5nIGNvbnN0cnVjdG9yIG9wdGlvbnMgYW5kIGNvbnN0cnVjdG9yIHN0cmluZ3MgRXJy
b3I6IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDIgYnV0IGdvdCAxCitQQVNTIFRlc3QgdGhlIG5h
bWUgcHJvcGVydHkgb2Ygc2hhcmVkIHdvcmtlcnMgbWl4aW5nIGNvbnN0cnVjdG9yIG9wdGlvbnMg
YW5kIGNvbnN0cnVjdG9yIHN0cmluZ3MKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1t
aXNtYXRjaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVk
LnR4dAppbmRleCBmNjU2OTQ2MTUwZGIuLjRmOTlhMTM0MDllNyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3Jr
ZXItb3B0aW9ucy1taXNtYXRjaC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1t
aXNtYXRjaC1leHBlY3RlZC50eHQKQEAgLTEsMjggKzEsMjYgQEAKIAotSGFybmVzcyBFcnJvciAo
VElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0KLVRJTUVPVVQgQ29ubmVjdGluZyB0byBzaGFyZWQg
d29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQg
dG8gbW9kdWxlIFRlc3QgdGltZWQgb3V0Ci1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29y
a2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG1vZHVsZSB0byBk
ZWZhdWx0Ci1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50
IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGNsYXNzaWMgdG8gbW9kdWxlCi1OT1RSVU4gQ29u
bmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJl
IGJsb2NrZWQ6IG1vZHVsZSB0byBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQg
d29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQg
dG8gb21pdCBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdp
dGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gaW5jbHVk
ZSBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlm
ZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gZGVmYXVsdCBpbiBjbGFz
c2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9w
dGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gc2FtZS1vcmlnaW4gaW4gY2xhc3NpYwot
Tk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25z
IHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGluY2x1ZGUgaW4gY2xhc3NpYwotTk9UUlVOIENv
bm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBi
ZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBvbWl0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0
aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxv
Y2tlZDogc2FtZS1vcmlnaW4gdG8gaW5jbHVkZSBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGlu
ZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2Nr
ZWQ6IGluY2x1ZGUgdG8gZGVmYXVsdCBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBz
aGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGlu
Y2x1ZGUgdG8gb21pdCBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29y
a2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8g
c2FtZS1vcmlnaW4gaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIG9t
aXQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlm
ZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gaW5jbHVkZSBpbiBt
b2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQg
b3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBkZWZhdWx0IGluIG1vZHVsZQotTk9U
UlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNo
b3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIHNhbWUtb3JpZ2luIGluIG1vZHVsZQotTk9UUlVOIENv
bm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBi
ZSBibG9ja2VkOiBvbWl0IHRvIGluY2x1ZGUgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0
byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6
IHNhbWUtb3JpZ2luIHRvIG9taXQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUt
b3JpZ2luIHRvIGluY2x1ZGUgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQg
d29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUg
dG8gZGVmYXVsdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIg
d2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBvbWl0
IGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZl
cmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIHNhbWUtb3JpZ2luIGlu
IG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQg
b3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBtb2R1bGUKK1BBU1MgQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IG1vZHVsZSB0byBkZWZhdWx0CitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBjbGFzc2ljIHRvIG1v
ZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGlu
ZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2Nr
ZWQ6IGRlZmF1bHQgdG8gb21pdCBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVk
IHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0
IHRvIGluY2x1ZGUgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIg
d2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBkZWZhdWx0
IGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVy
ZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gc2FtZS1vcmlnaW4gaW4gY2xh
c3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBpbmNsdWRlIGluIGNsYXNzaWMKK1BBU1Mg
Q29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxk
IGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIG9taXQgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0
aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxv
Y2tlZDogc2FtZS1vcmlnaW4gdG8gaW5jbHVkZSBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBpbmNsdWRlIHRvIGRlZmF1bHQgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJl
ZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVk
ZSB0byBvbWl0IGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdp
dGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gc2FtZS1v
cmlnaW4gaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBvbWl0IGluIG1v
ZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBpbmNsdWRlIGluIG1vZHVsZQorUEFT
UyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91
bGQgYmUgYmxvY2tlZDogb21pdCB0byBkZWZhdWx0IGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogb21pdCB0byBzYW1lLW9yaWdpbiBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQg
dG8gaW5jbHVkZSBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdp
dGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIG9t
aXQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZl
cmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGlu
IG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQg
b3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGluIG1vZHVsZQor
UEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBz
aG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBvbWl0IGluIG1vZHVsZQorUEFTUyBDb25uZWN0
aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxv
Y2tlZDogaW5jbHVkZSB0byBzYW1lLW9yaWdpbiBpbiBtb2R1bGUKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVk
aXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL29wZW4tdXJsLXJlZGlyZWN0ZWQtc2hh
cmVkd29ya2VyLW9yaWdpbi1leHBlY3RlZC50eHQKaW5kZXggMWUyZDM5OTJmNmQ1Li41OWNhY2E0
ODZmOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMveGhyL29wZW4tdXJsLXJlZGlyZWN0ZWQtc2hhcmVkd29ya2VyLW9yaWdpbi1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94
aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dApA
QCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwOi8vd3d3
Mi5sb2NhbGhvc3Q6ODgwMC94aHIvcmVzb3VyY2VzL2luc3BlY3QtaGVhZGVycy5weT9maWx0ZXJf
bmFtZT1vcmlnaW4mY29ycwogCiBGQUlMIFJlZmVyZXIgaGVhZGVyIGFzc2VydF9lcXVhbHM6IGV4
cGVjdGVkICJSZWZlcmVyOiBodHRwOi8vbG9jYWxob3N0Ojg4MDAveGhyL3Jlc291cmNlcy93b3Jr
ZXJ4aHItb3JpZ2luLXJlZmVycmVyLmpzXG4iIGJ1dCBnb3QgIlJlZmVyZXI6IGh0dHA6Ly9sb2Nh
bGhvc3Q6ODgwMC94aHIvcmVzb3VyY2VzL3JlZGlyZWN0LnB5P2xvY2F0aW9uPXdvcmtlcnhoci1v
cmlnaW4tcmVmZXJyZXIuanNcbiIKIEZBSUwgT3JpZ2luIGhlYWRlciBhc3NlcnRfZXF1YWxzOiBl
eHBlY3RlZCAiT3JpZ2luOiBodHRwOi8vbG9jYWxob3N0Ojg4MDBcbiIgYnV0IGdvdCAiIgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVk
d29ya2VyLWNvbm5lY3Qtc3JjLnN1Yi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0
eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItY29ubmVjdC1zcmMuc3ViLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmYzNzc4YmJh
NDY5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNp
ZGUtd29ya2VyL3NoYXJlZHdvcmtlci1jb25uZWN0LXNyYy5zdWItZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTYgQEAKKworSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCisK
K1RJTUVPVVQgc2hhcmVkd29ya2VyLWNvbm5lY3Qtc3JjIFRlc3QgdGltZWQgb3V0CitQQVNTIFNh
bWUtb3JpZ2luICdmZXRjaCgpJyBpbiBodHRwOiB3aXRob3V0IENTUAorUEFTUyBTYW1lLW9yaWdp
biBYSFIgaW4gaHR0cDogd2l0aG91dCBDU1AKK1BBU1MgQ3Jvc3Mtb3JpZ2luICdmZXRjaCgpJyBp
biBodHRwOiB3aXRob3V0IENTUAorUEFTUyBDcm9zcy1vcmlnaW4gWEhSIGluIGh0dHA6IHdpdGhv
dXQgQ1NQCitQQVNTIFNhbWUtb3JpZ2luID0+IGNyb3NzLW9yaWdpbiAnZmV0Y2goKScgaW4gaHR0
cDogd2l0aG91dCBDU1AKK1BBU1MgU2FtZS1vcmlnaW4gJ2ZldGNoKCknIGluIGh0dHA6IHdpdGgg
Y29ubmVjdC1zcmMgJ3NlbGYnCitQQVNTIFNhbWUtb3JpZ2luIFhIUiBpbiBodHRwOiB3aXRoIGNv
bm5lY3Qtc3JjICdzZWxmJworVElNRU9VVCBDcm9zcy1vcmlnaW4gJ2ZldGNoKCknIGluIGh0dHA6
IHdpdGggY29ubmVjdC1zcmMgJ3NlbGYnIFRlc3QgdGltZWQgb3V0CitOT1RSVU4gQ3Jvc3Mtb3Jp
Z2luIFhIUiBpbiBodHRwOiB3aXRoIGNvbm5lY3Qtc3JjICdzZWxmJworTk9UUlVOIFNhbWUtb3Jp
Z2luID0+IGNyb3NzLW9yaWdpbiAnZmV0Y2goKScgaW4gaHR0cDogd2l0aCBjb25uZWN0LXNyYyAn
c2VsZicKK05PVFJVTiBSZXBvcnRzIG1hdGNoIGluIGh0dHA6IHdpdGggY29ubmVjdC1zcmMgJ3Nl
bGYnCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29y
a2VyL3NoYXJlZHdvcmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXJlcG9ydC1vbmx5
LnN1Yi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li43NzdjZWQ0NTFlMmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDEwIEBACisKK0hhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdl
ID0gbnVsbAorCitQQVNTIFNhbWUtb3JpZ2luICdmZXRjaCgpJy4KK1BBU1MgU2FtZS1vcmlnaW4g
WEhSLgorVElNRU9VVCBDcm9zcy1vcmlnaW4gJ2ZldGNoKCknLiBUZXN0IHRpbWVkIG91dAorTk9U
UlVOIENyb3NzLW9yaWdpbiBYSFIuCitOT1RSVU4gU2FtZS1vcmlnaW4gPT4gY3Jvc3Mtb3JpZ2lu
ICdmZXRjaCgpJy4KK05PVFJVTiBjb25uZWN0LXNyYy1zZWxmLXJlcG9ydC1vbmx5CisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdv
cmtlci1zY3JpcHQtc3JjLnN1Yi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWItZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzdkY2U1NTAwYTdi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13
b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDEyIEBACisKK0hhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAorCitUSU1F
T1VUIHNoYXJlZHdvcmtlci1zY3JpcHQtc3JjIFRlc3QgdGltZWQgb3V0CitQQVNTIENyb3NzLW9y
aWdpbiBgaW1wb3J0U2NyaXB0cygpYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3VyIENTUAor
UEFTUyBgZXZhbCgpYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3V0IENTUAorUEFTUyBgc2V0
VGltZW91dChbc3RyaW5nXSlgIG5vdCBibG9ja2VkIGluIGh0dHA6IHdpdGhvdXQgQ1NQCitUSU1F
T1VUIENyb3NzLW9yaWdpbiBgaW1wb3J0U2NyaXB0cygpYCBibG9ja2VkIGluIGh0dHA6IHdpdGgg
c2NyaXB0LXNyYyAnc2VsZicgVGVzdCB0aW1lZCBvdXQKK05PVFJVTiBgZXZhbCgpYCBibG9ja2Vk
IGluIGh0dHA6IHdpdGggc2NyaXB0LXNyYyAnc2VsZicKK05PVFJVTiBgc2V0VGltZW91dChbc3Ry
aW5nXSlgIGJsb2NrZWQgaW4gaHR0cDogd2l0aCBzY3JpcHQtc3JjICdzZWxmJworTk9UUlVOIFJl
cG9ydHMgYXJlIHNlbnQgZm9yIGh0dHA6IHdpdGggc2NyaXB0LXNyYyAnc2VsZicKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1ibG9iLXVybC53
aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWlt
cG9ydC1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uNjUxOWNkMWY2OTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1ibG9iLXVybC53aW5kb3ctZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKKworUEFTUyBTdGF0aWMgaW1wb3J0LgorUEFTUyBTdGF0
aWMgaW1wb3J0IChjcm9zcy1vcmlnaW4pLgorUEFTUyBTdGF0aWMgaW1wb3J0IChyZWRpcmVjdCku
CitQQVNTIE5lc3RlZCBzdGF0aWMgaW1wb3J0LgorUEFTUyBTdGF0aWMgaW1wb3J0IGFuZCB0aGVu
IGR5bmFtaWMgaW1wb3J0LgorUEFTUyBEeW5hbWljIGltcG9ydC4KK1BBU1MgTmVzdGVkIGR5bmFt
aWMgaW1wb3J0LgorUEFTUyBEeW5hbWljIGltcG9ydCBhbmQgdGhlbiBzdGF0aWMgaW1wb3J0Lgor
UEFTUyBldmFsKGltcG9ydCgpKS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9z
aGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC53aW5kb3ctZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTM2YzA0OWY4
MjU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2Vy
LWltcG9ydC1kYXRhLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKKwor
SGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCisKK1BBU1MgU3RhdGljIGlt
cG9ydC4KK1BBU1MgU3RhdGljIGltcG9ydCAoY3Jvc3Mtb3JpZ2luKS4KK1RJTUVPVVQgU3RhdGlj
IGltcG9ydCAocmVkaXJlY3QpLiBUZXN0IHRpbWVkIG91dAorTk9UUlVOIE5lc3RlZCBzdGF0aWMg
aW1wb3J0LgorTk9UUlVOIFN0YXRpYyBpbXBvcnQgYW5kIHRoZW4gZHluYW1pYyBpbXBvcnQuCitO
T1RSVU4gRHluYW1pYyBpbXBvcnQuCitOT1RSVU4gTmVzdGVkIGR5bmFtaWMgaW1wb3J0LgorTk9U
UlVOIER5bmFtaWMgaW1wb3J0IGFuZCB0aGVuIHN0YXRpYyBpbXBvcnQuCitOT1RSVU4gZXZhbChp
bXBvcnQoKSkuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtl
ci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13
azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVk
LXdvcmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjY1MTljZDFmNjk0NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDExIEBACisKK1BBU1MgU3RhdGljIGltcG9ydC4KK1BBU1MgU3RhdGljIGltcG9y
dCAoY3Jvc3Mtb3JpZ2luKS4KK1BBU1MgU3RhdGljIGltcG9ydCAocmVkaXJlY3QpLgorUEFTUyBO
ZXN0ZWQgc3RhdGljIGltcG9ydC4KK1BBU1MgU3RhdGljIGltcG9ydCBhbmQgdGhlbiBkeW5hbWlj
IGltcG9ydC4KK1BBU1MgRHluYW1pYyBpbXBvcnQuCitQQVNTIE5lc3RlZCBkeW5hbWljIGltcG9y
dC4KK1BBU1MgRHluYW1pYyBpbXBvcnQgYW5kIHRoZW4gc3RhdGljIGltcG9ydC4KK1BBU1MgZXZh
bChpbXBvcnQoKSkuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdv
cmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVs
ZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmEyYjE4YjUyNDkyOAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNyZWRl
bnRpYWxzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM1IEBACisKK1BBU1MgVGVzdCBpbml0aWFs
aXphdGlvbjogc2V0dGluZyB1cCBjcm9zcy1vcmlnaW4gY29va2llCitQQVNTIG5ldyBTaGFyZWRX
b3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBkZWZhdWx0IGNyZWRlbnRpYWxzIG9wdGlvbiBz
aG91bGQgYmVoYXZlIGFzIGNyZWRlbnRpYWxzPXNhbWUtb3JpZ2luIGFuZCBzZW5kIHRoZSBjcmVk
ZW50aWFscworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQgY3Jl
ZGVudGlhbHM9b21pdCBzaG91bGQgbm90IHNlbmQgdGhlIGNyZWRlbnRpYWxzCitQQVNTIG5ldyBT
aGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBjcmVkZW50aWFscz1zYW1lLW9yaWdp
biBzaG91bGQgc2VuZCB0aGUgY3JlZGVudGlhbHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdp
dGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPWluY2x1ZGUgc2hvdWxkIHNlbmQgdGhlIGNy
ZWRlbnRpYWxzCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBk
ZWZhdWx0IGNyZWRlbnRpYWxzIG9wdGlvbiBzaG91bGQgYmVoYXZlIGFzIGNyZWRlbnRpYWxzPXNh
bWUtb3JpZ2luIGFuZCBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3Igc2FtZS1vcmlnaW4gc3RhdGlj
IGltcG9ydHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNy
ZWRlbnRpYWxzPW9taXQgc2hvdWxkIG5vdCBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3Igc2FtZS1v
cmlnaW4gc3RhdGljIGltcG9ydHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1t
b2R1bGUgYW5kIGNyZWRlbnRpYWxzPXNhbWUtb3JpZ2luIHNob3VsZCBzZW5kIHRoZSBjcmVkZW50
aWFscyBmb3Igc2FtZS1vcmlnaW4gc3RhdGljIGltcG9ydHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtl
cigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPWluY2x1ZGUgc2hvdWxkIHNlbmQg
dGhlIGNyZWRlbnRpYWxzIGZvciBzYW1lLW9yaWdpbiBzdGF0aWMgaW1wb3J0cworUEFTUyBuZXcg
U2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQgZGVmYXVsdCBjcmVkZW50aWFscyBv
cHRpb24gc2hvdWxkIGJlaGF2ZSBhcyBjcmVkZW50aWFscz1zYW1lLW9yaWdpbiBhbmQgbm90IHNl
bmQgdGhlIGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gc3RhdGljIGltcG9ydHMKK1BBU1Mg
bmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPW9taXQg
c2hvdWxkIG5vdCBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3IgY3Jvc3Mtb3JpZ2luIHN0YXRpYyBp
bXBvcnRzCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBjcmVk
ZW50aWFscz1zYW1lLW9yaWdpbiBzaG91bGQgbm90IHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBj
cm9zcy1vcmlnaW4gc3RhdGljIGltcG9ydHMKK0ZBSUwgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGgg
dHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPWluY2x1ZGUgc2hvdWxkIHNlbmQgdGhlIGNyZWRl
bnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gc3RhdGljIGltcG9ydHMgYXNzZXJ0X2VxdWFsczogZXhw
ZWN0ZWQgIjEiIGJ1dCBnb3QgIiIKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1t
b2R1bGUgYW5kIGRlZmF1bHQgY3JlZGVudGlhbHMgb3B0aW9uIHNob3VsZCBiZWhhdmUgYXMgY3Jl
ZGVudGlhbHM9c2FtZS1vcmlnaW4gYW5kIHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBzYW1lLW9y
aWdpbiBkeW5hbWljIGltcG9ydHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1t
b2R1bGUgYW5kIGNyZWRlbnRpYWxzPW9taXQgc2hvdWxkIG5vdCBzZW5kIHRoZSBjcmVkZW50aWFs
cyBmb3Igc2FtZS1vcmlnaW4gZHluYW1pYyBpbXBvcnRzCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIo
KSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBjcmVkZW50aWFscz1zYW1lLW9yaWdpbiBzaG91bGQgc2Vu
ZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2luIGR5bmFtaWMgaW1wb3J0cworUEFTUyBu
ZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQgY3JlZGVudGlhbHM9aW5jbHVk
ZSBzaG91bGQgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2luIGR5bmFtaWMgaW1w
b3J0cworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQgZGVmYXVs
dCBjcmVkZW50aWFscyBvcHRpb24gc2hvdWxkIGJlaGF2ZSBhcyBjcmVkZW50aWFscz1zYW1lLW9y
aWdpbiBhbmQgbm90IHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gZHluYW1p
YyBpbXBvcnRzCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBj
cmVkZW50aWFscz1vbWl0IHNob3VsZCBub3Qgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIGNyb3Nz
LW9yaWdpbiBkeW5hbWljIGltcG9ydHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlw
ZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPXNhbWUtb3JpZ2luIHNob3VsZCBub3Qgc2VuZCB0aGUg
Y3JlZGVudGlhbHMgZm9yIGNyb3NzLW9yaWdpbiBkeW5hbWljIGltcG9ydHMKK0ZBSUwgbmV3IFNo
YXJlZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPWluY2x1ZGUgc2hv
dWxkIHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gZHluYW1pYyBpbXBvcnRz
IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIxIiBidXQgZ290ICIiCitQQVNTIG5ldyBTaGFyZWRX
b3JrZXIoKSB3aXRoIHR5cGU9Y2xhc3NpYyBzaG91bGQgYWx3YXlzIHNlbmQgdGhlIGNyZWRlbnRp
YWxzIHJlZ2FyZGxlc3Mgb2YgdGhlIGNyZWRlbnRpYWxzIG9wdGlvbiAoZGVmYXVsdCkuCitQQVNT
IG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9Y2xhc3NpYyBzaG91bGQgYWx3YXlzIHNlbmQg
dGhlIGNyZWRlbnRpYWxzIHJlZ2FyZGxlc3Mgb2YgdGhlIGNyZWRlbnRpYWxzIG9wdGlvbiAob21p
dCkuCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9Y2xhc3NpYyBzaG91bGQgYWx3
YXlzIHNlbmQgdGhlIGNyZWRlbnRpYWxzIHJlZ2FyZGxlc3Mgb2YgdGhlIGNyZWRlbnRpYWxzIG9w
dGlvbiAoc2FtZS1vcmlnaW4pLgorUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPWNs
YXNzaWMgc2hvdWxkIGFsd2F5cyBzZW5kIHRoZSBjcmVkZW50aWFscyByZWdhcmRsZXNzIG9mIHRo
ZSBjcmVkZW50aWFscyBvcHRpb24gKGluY2x1ZGUpLgorUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkg
d2l0aCB0eXBlPWNsYXNzaWMgc2hvdWxkIGFsd2F5cyBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3Ig
c2FtZS1vcmlnaW4gZHluYW1pYyBpbXBvcnRzIHJlZ2FyZGxlc3Mgb2YgdGhlIGNyZWRlbnRpYWxz
IG9wdGlvbiAoZGVmYXVsdCkuCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9Y2xh
c3NpYyBzaG91bGQgYWx3YXlzIHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBzYW1lLW9yaWdpbiBk
eW5hbWljIGltcG9ydHMgcmVnYXJkbGVzcyBvZiB0aGUgY3JlZGVudGlhbHMgb3B0aW9uIChvbWl0
KS4KK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1jbGFzc2ljIHNob3VsZCBhbHdh
eXMgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2luIGR5bmFtaWMgaW1wb3J0cyBy
ZWdhcmRsZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKHNhbWUtb3JpZ2luKS4KK1BBU1Mg
bmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1jbGFzc2ljIHNob3VsZCBhbHdheXMgc2VuZCB0
aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2luIGR5bmFtaWMgaW1wb3J0cyByZWdhcmRsZXNz
IG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKGluY2x1ZGUpLgorUEFTUyBuZXcgU2hhcmVkV29y
a2VyKCkgd2l0aCB0eXBlPWNsYXNzaWMgc2hvdWxkIG5ldmVyIHNlbmQgdGhlIGNyZWRlbnRpYWxz
IGZvciBjcm9zcy1vcmlnaW4gZHluYW1pYyBpbXBvcnRzIHJlZ2FyZGxlc3Mgb2YgdGhlIGNyZWRl
bnRpYWxzIG9wdGlvbiAoZGVmYXVsdCkuCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5
cGU9Y2xhc3NpYyBzaG91bGQgbmV2ZXIgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIGNyb3NzLW9y
aWdpbiBkeW5hbWljIGltcG9ydHMgcmVnYXJkbGVzcyBvZiB0aGUgY3JlZGVudGlhbHMgb3B0aW9u
IChvbWl0KS4KK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1jbGFzc2ljIHNob3Vs
ZCBuZXZlciBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3IgY3Jvc3Mtb3JpZ2luIGR5bmFtaWMgaW1w
b3J0cyByZWdhcmRsZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKHNhbWUtb3JpZ2luKS4K
K1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1jbGFzc2ljIHNob3VsZCBuZXZlciBz
ZW5kIHRoZSBjcmVkZW50aWFscyBmb3IgY3Jvc3Mtb3JpZ2luIGR5bmFtaWMgaW1wb3J0cyByZWdh
cmRsZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKGluY2x1ZGUpLgorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMveGhyL29wZW4tdXJsLXJlZGlyZWN0ZWQtc2hhcmVkd29ya2VyLW9yaWdpbi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMveGhyL29wZW4tdXJsLXJlZGlyZWN0ZWQtc2hhcmVkd29ya2VyLW9yaWdpbi1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lZTUz
ZjJmZjJkNWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2sy
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL29wZW4tdXJsLXJlZGlyZWN0ZWQt
c2hhcmVkd29ya2VyLW9yaWdpbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACisKK0ZBSUwg
UmVmZXJlciBoZWFkZXIgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIlJlZmVyZXI6IGh0dHA6Ly9s
b2NhbGhvc3Q6ODgwMC94aHIvcmVzb3VyY2VzL3dvcmtlcnhoci1vcmlnaW4tcmVmZXJyZXIuanNc
biIgYnV0IGdvdCAiUmVmZXJlcjogaHR0cDovL2xvY2FsaG9zdDo4ODAwL3hoci9yZXNvdXJjZXMv
cmVkaXJlY3QucHk/bG9jYXRpb249d29ya2VyeGhyLW9yaWdpbi1yZWZlcnJlci5qc1xuIgorUEFT
UyBPcmlnaW4gaGVhZGVyCitQQVNTIFJlcXVlc3QgVVJMIHRlc3QKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDljZDhlYTU2OTBmYS4uOWE2
M2U2MTY4NWEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RF
eHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0
YXRpb25zCkBAIC02Nyw2ICs2Nyw4IEBAIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNhY2hl
LW1lZGlhc3RyZWFtLmh0bWwgWyBTa2lwIF0KIG1lZGlhL2F1ZGlvLXNlc3Npb24tY2F0ZWdvcnku
aHRtbCBbIFNraXAgXQogCiAjIFNoYXJlZCB3b3JrZXJzIGFyZSBvbmx5IGltcGxlbWVudGVkIGZv
ciBXZWJLaXQyLgoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3Vy
aXR5LXBvbGljeS9jb25uZWN0LXNyYy9zaGFyZWQtd29ya2VyLWNvbm5lY3Qtc3JjLWFsbG93ZWQu
c3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvY29ubmVjdC1zcmMvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1i
bG9ja2VkLnN1Yi5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXNlbGYv
c2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cC5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC9z
Y3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9n
ZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy1zZWxmL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cC5o
dG1sIFsgU2tpcCBdCkBAIC0xNTEsMTAgKzE1MywxNCBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudC9t
bwogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9zY3JpcHRp
bmctMS90aGUtc2NyaXB0LWVsZW1lbnQvZXZhbHVhdGlvbi1vcmRlci0xLW5vdGhyb3ctc2hhcmVk
d29ya2VyLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9zZW1hbnRpY3Mvc2NyaXB0aW5nLTEvdGhlLXNjcmlwdC1lbGVtZW50L2V2YWx1YXRpb24tb3Jk
ZXItMS1zaGFyZWR3b3JrZXIuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi91bmhh
bmRsZWQtcHJvbWlzZS1yZWplY3Rpb25zL3Byb21pc2UtcmVqZWN0aW9uLWV2ZW50cy5zaGFyZWR3
b3JrZXIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2
aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvY2xhaW0tc2hhcmVkLXdvcmtlci1mZXRjaC5odHRw
cy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vc2Vy
aWFsaXphdGlvbi9tb2R1bGUvYnJvYWRjYXN0Y2hhbm5lbC1zdWNjZXNzLWFuZC1mYWlsdXJlLmh0
bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFy
ZWRXb3JrZXJQZXJmb3JtYW5jZU5vdy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvZGF0YS11cmwtc2hhcmVkLmh0bWwgWyBTa2lwIF0KK2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9vcGFxdWUtb3JpZ2luLmh0bWwgWyBT
a2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9iYXNldXJsL2Fs
cGhhL2ltcG9ydFNjcmlwdHMtaW4tc2hhcmVkd29ya2VyLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9iYXNldXJsL2FscGhhL3hoci1pbi1zaGFy
ZWR3b3JrZXIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9pbnRlcmZhY2VzL1NoYXJlZFdvcmtlckdsb2JhbFNj
b3BlIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvaW50
ZXJmYWNlcy9Xb3JrZXJHbG9iYWxTY29wZS9sb2NhdGlvbi9yZWRpcmVjdC1zaGFyZWR3b3JrZXIu
aHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21v
ZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93Lmh0bWwgWyBTa2lwIF0K
QEAgLTE2NSw3ICsxNzEsMTUgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtbWV0YS5odG1sIFsKIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0
LndpbmRvdy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMuaHRtbCBbIFNr
aXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hh
cmVkLXdvcmtlci1vcHRpb25zLXR5cGUuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9ibG9iVXJsLmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXItY29u
c3RydWN0b3IuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXItZGV0YWNoLWZyYW1lLWluLWVy
cm9yLWV2ZW50Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9TaGFyZWRXb3JrZXItZXhjZXB0aW9uLXByb3BhZ2F0aW9uLmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXItZXhj
ZXB0aW9uLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9TaGFyZWRXb3JrZXItc2NyaXB0LWVycm9yLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXItc2ltcGxlLmh0bWwgWyBT
a2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3No
YXJlZC13b3JrZXItaW1wb3J0LXJlZmVycmVyLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItcGFyc2UtZXJy
b3ItZmFpbHVyZS5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2VtYW50aWNzL2VuY29kaW5ncy8wMDIuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9lbmNvZGluZ3MvMDA0Lmh0
bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggMDFhODc1Y2M4NDE1Li44ZGJjMzFkODY2OWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dp
bi9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNjUsNiArMTY1LDggQEAgaHR0cC90ZXN0cy9yZWZlcnJl
ci1wb2xpY3ktaW1nL3Vuc2FmZS11cmwvY3Jvc3Mtb3JpZ2luLWh0dHAtaHR0cC5odG1sIFsgU2tp
cCBdCiBodHRwL3Rlc3RzL3JlZmVycmVyLXBvbGljeS1pbWcvdW5zYWZlLXVybC9jcm9zcy1vcmln
aW4taHR0cC5odHRwcy5odG1sIFsgU2tpcCBdCiAKICMgU2hhcmVkIHdvcmtlcnMgYXJlIG9ubHkg
aW1wbGVtZW50ZWQgZm9yIFdlYktpdDIuCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3JrZXItY29ubmVj
dC1zcmMtYWxsb3dlZC5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9zaGFyZWQtd29ya2Vy
LWNvbm5lY3Qtc3JjLWJsb2NrZWQuc3ViLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3Nj
cmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwLmh0bWwgWyBTa2lwIF0KIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2Vu
L3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwcy5o
dG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2Vy
LW1vZHVsZS5odHRwLmh0bWwgWyBTa2lwIF0KQEAgLTI0OSwxMCArMjUxLDE0IEBAIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mvc2NyaXB0aW5nLTEvdGhlLXNj
cmlwdC1lbGVtZW50L21vCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2Vt
YW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudC9ldmFsdWF0aW9uLW9yZGVyLTEt
bm90aHJvdy1zaGFyZWR3b3JrZXIuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQv
ZXZhbHVhdGlvbi1vcmRlci0xLXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2lu
Zy1tb2RlbC0yL3VuaGFuZGxlZC1wcm9taXNlLXJlamVjdGlvbnMvcHJvbWlzZS1yZWplY3Rpb24t
ZXZlbnRzLnNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9jbGFpbS1zaGFyZWQtd29y
a2VyLWZldGNoLmh0dHBzLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2FzbS9zZXJpYWxpemF0aW9uL21vZHVsZS9icm9hZGNhc3RjaGFubmVsLXN1Y2Nlc3Mt
YW5kLWZhaWx1cmUuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrZXJzL1NoYXJlZFdvcmtlclBlcmZvcm1hbmNlTm93Lmh0bWwgWyBTa2lwIF0KK2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9kYXRhLXVybC1zaGFyZWQuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL29wYXF1ZS1v
cmlnaW4uaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL2Jhc2V1cmwvYWxwaGEvaW1wb3J0U2NyaXB0cy1pbi1zaGFyZWR3b3JrZXIuaHRtbCBbIFNr
aXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2Jhc2V1cmwvYWxw
aGEveGhyLWluLXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlciBbIFNraXAgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2ludGVyZmFjZXMvU2hhcmVk
V29ya2VyR2xvYmFsU2NvcGUgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9pbnRlcmZhY2VzL1dvcmtlckdsb2JhbFNjb3BlL2xvY2F0aW9uL3JlZGlyZWN0
LXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1ibG9iLXVybC53aW5kb3cu
aHRtbCBbIFNraXAgXQpAQCAtMjYzLDcgKzI2OSwxNSBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1tZXRhLmh0bWwg
WwogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVk
LXdvcmtlci1pbXBvcnQud2luZG93Lmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1jcmVkZW50
aWFscy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtdHlwZS5odG1sIFsgU2tpcCBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyX2Jsb2JVcmwu
aHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1No
YXJlZFdvcmtlci1jb25zdHJ1Y3Rvci5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyX2RhdGFVcmwuaHRtbCBbIFNraXAgXQor
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlci1kZXRh
Y2gtZnJhbWUtaW4tZXJyb3ItZXZlbnQuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlci1leGNlcHRpb24tcHJvcGFnYXRpb24u
aHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1No
YXJlZFdvcmtlci1leGNlcHRpb24uaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlci1zY3JpcHQtZXJyb3IuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlci1z
aW1wbGUuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtcmVmZXJyZXIuaHRtbCBbIFNraXAgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdv
cmtlci1wYXJzZS1lcnJvci1mYWlsdXJlLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvZW5jb2RpbmdzLzAwMi5odG1sIFsgU2tp
cCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL2Vu
Y29kaW5ncy8wMDQuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNjUzOTM3YWNl
NjVjLi5kMzNmYzRhYTRkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTk1Nyw5ICsxOTU3LDEy
IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICB3b3JrZXJzL1dv
cmtlckZvbnRMb2FkUmVxdWVzdC5oCiAgICAgd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCiAg
ICAgd29ya2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5oCisgICAgd29ya2Vycy9Xb3JrZXJPYmplY3RQ
cm94eS5oCisgICAgd29ya2Vycy9Xb3JrZXJPcHRpb25zLmgKICAgICB3b3JrZXJzL1dvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlLmgKICAgICB3b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXIuaAogICAgIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgKKyAgICB3b3Jr
ZXJzL1dvcmtlclJlcG9ydGluZ1Byb3h5LmgKICAgICB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuaAog
ICAgIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKICAgICB3b3JrZXJzL1dvcmtlclNjcmlw
dExvYWRlckNsaWVudC5oCkBAIC0yMDAzLDkgKzIwMDYsMTIgQEAgc2V0KFdlYkNvcmVfUFJJVkFU
RV9GUkFNRVdPUktfSEVBREVSUwogICAgIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuaAogCiAgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VySWRlbnRpZmllci5oCi0g
ICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5oCisgICAgd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyS2V5LmgKICAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uLmgKKyAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLmgKICAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5oCisKKyAg
ICB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgKICAg
ICB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZC5oCiAgICAgd29ya2Vy
cy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
aW5kZXggYjNmNWUwYjc4NDE3Li41ZWU1MDBjYjZkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yNzg1
LDEwICsyNzg1LDEwIEBAIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAK
IHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlckdsb2JhbFNjb3BlLmNwcAotd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5j
cHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCiB3b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlclNjcmlwdExvYWRlci5jcHAKK3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXIuY3BwCiB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtl
clRocmVhZC5jcHAKIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJv
eHkuY3BwCiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjNWY0NGVm
MDRhNzAuLjU2YTcxNTlkYmFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTAzLDcgKzkwMyw3IEBACiAJCTJFNDM0NjRCMEY1
NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZVByb3h5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzOTBGNTQ2QTgyMDBCMEYxQkEg
LyogV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oICovOyB9OwogCQkyRTQzNDY0RDBGNTQ2QTgyMDBC
MEYxQkEgLyogV29ya2VyTG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJFNDM0NjNCMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJMb2NhdGlv
bi5oICovOyB9OwogCQkyRTQzNDY1MDBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyTWVzc2FnaW5n
UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJF
NDM0NjNFMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJNZXNzYWdpbmdQcm94eS5oICovOyB9Owot
CQkyRTQzNDY1MTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyT2JqZWN0UHJveHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjNGMEY1NDZBODIw
MEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94eS5oICovOyB9OworCQkyRTQzNDY1MTBGNTQ2QTgy
MDBCMEYxQkEgLyogV29ya2VyT2JqZWN0UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjNGMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJP
YmplY3RQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTJFNDM0NjUzMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJSdW5Mb29wLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDY0MTBGNTQ2QTgy
MDBCMEYxQkEgLyogV29ya2VyUnVuTG9vcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTJFNDM0NjU1MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJU
aHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJF
NDM0NjQzMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJUaHJlYWQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTc1ODQxRTEyNzc5QURBMDA2MjYy
OEIgLyogRmlsZVJlYWRlckxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkU3NTg0MUIxMjc3OUFEQTAwNjI2MjhCIC8qIEZpbGVSZWFkZXJMb2Fk
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MTEyNSw3ICsxMTI1LDcgQEAKIAkJNDE2QTA2QTEyM0NDQUQwMzAwMzQ3MTA5IC8qIEF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTZBMDY5NjIzQ0NBQTlGMDAzNDcxMDkgLyogQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0MTZENzVBMjIwQzY1MUE1MDBEMDJEMkMgLyogTmV0d29ya0xvYWRJbmZvcm1h
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2
RDc1OUYyMEM2NDQxMzAwRDAyRDJDIC8qIE5ldHdvcmtMb2FkSW5mb3JtYXRpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFMEIzQTIwOUJD
M0NCMDA0QTk1RDkgLyogRmV0Y2hJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFMEIzNzIwOUJDM0MyMDA0QTk1RDkgLyogRmV0Y2hJ
ZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKLQkJNDE2RTI5QTYxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFMjlBNTEw
MkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCAqLzsgfTsKKwkJNDE2RTI5
QTYxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFMjlBNTEwMkZBOTYyMDA3RkMx
NEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFODFCQkQxMkRGMDAwQTNGNjQgLyogUmVhZGFi
bGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEQ5IC8qIFJlYWRhYmxlU3Ry
ZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFODFCQkQxMkRGMDAwQTNGNjUgLyogSlNET01CaW5kaW5n
SW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjREQSAvKiBKU0RPTUJpbmRpbmdJbnRlcm5h
bHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQxNkU2RkU4MUJCRDEyREYwMDBBM0Y3NCAvKiBUcmFuc2Zvcm1TdHJlYW1JbnRlcm5h
bHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEVBIC8qIFRyYW5zZm9ybVN0cmVhbUludGVybmFsc0J1
aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTEzNDcsMTQgKzEzNDcsMTYgQEAKIAkJNDY3QTY4RDcyNzVFQTk5MTAwOUIzMUM1IC8qIFNo
YXJlZFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDY3QTY4RDQyNzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2N0E2
OEQ4Mjc1RUE5OTUwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0E2OEQ1Mjc1RUE5OEMw
MDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCAqLzsgfTsKIAkJNDY3QTY4RDky
NzVFQTk5ODAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdBNjhENjI3NUVBOThDMDA5QjMx
QzUgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk0NjdBNjhEQTI3NUVBOTlDMDA5QjMxQzUgLyogU2hh
cmVkV29ya2VyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDY3QTY4RDIyNzVFQTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0Njgy
RDIwMDFGNzk3ODMwMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODJEMUZGMUY3OTc4MjMw
MEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODM0NEUwMUVEREZBQUEwMEI3Nzk1QiAv
KiBET01SZWN0TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY4MzQ0REUxRURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4M0RGNDAyNzY3REY5
ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODNERjNFMjc2N0RGOTgwMDdEMDBD
OCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmggKi87IH07CiAJCTQ2ODNERjQxMjc2
N0U5MUEwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzREYzQjI3NjdERjI2MDA3RDAwQzgg
LyogU2hhZG93UmVhbG1HbG9iYWxTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODhFRTNDMjZERDI2MTAwMDJBRjVDNCAvKiBDcm9zc09y
aWdpbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2ODhFRTNBMjZERDI2MEMwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0Njk0M0RDOTI3NjNGODE3
MDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBF
IC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0Njk4NUYyMzI3QTRBNkFEMDA5N0EzMkIgLyog
U2hhcmVkV29ya2VyS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0Njk4NUYyMjI3QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY5Q0NDRkUy
NjlEMDIxQzAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OUNDQ0ZDMjY5RDAyMDIwMDZFMDMxNCAvKiBC
cm9hZGNhc3RDaGFubmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNDY5RDc3QjgyNzAxNjI1MTAwMTQyRkE2IC8qIE5hdmlnYXRpb25SZXF1ZXN0
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OUQ3
N0I2MjcwMTYyNTAwMDE0MkZBNiAvKiBOYXZpZ2F0aW9uUmVxdWVzdGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDZBNzhCMzQyNzk5QkQ3MTAw
MTE1NEZFIC8qIFdvcmtlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDMUIxRDI2MjZGMThBNEIwMDg4MkRBMiAvKiBXb3JrZXJPcHRpb25z
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZB
QUFBM0QyNUQzNjMyMDAwQkFGNDJGIC8qIEF1ZGlvRmlsZVJlYWRlckNvY29hLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkFBQUEzQTI1RDM2MzE0MDBC
QUY0MkYgLyogQXVkaW9GaWxlUmVhZGVyQ29jb2EuaCAqLzsgfTsKIAkJNDZCNjNGNkMxQzZFOEQx
OTAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBKU0V2
ZW50VGFyZ2V0Q3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNDZCNjUwREQyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI2NTBEQjIy
OTYyNjI3MDBGRDhBQTQgLyogUGFnZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM3NSw2ICsxMzc3LDcgQEAKIAkJNDZDNjk2
Q0MxRTcyMDVGQzAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNjk2Q0ExRTcyMDVFNDAwNTk3OTM3IC8qIENQ
VU1vbml0b3IuY3BwICovOyB9OwogCQk0NkM4M0VGRTFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90
aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
QzgzRUZDMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2Q0E5QzQ0MUY5N0JCRTkwMDRDRkMz
QSAvKiBWaXNpYmlsaXR5U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2Q0E5QzQxMUY5N0JCRTcwMDRDRkMzQSAvKiBWaXNpYmlsaXR5U3RhdGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NkNG
NTA0QTI3QUIxRUE0MDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Q0Y1MDQ4MjdBQjFF
QTEwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2RDAwMDQwMjZBMEZFQjMwMEQx
QkYxRSAvKiBTdWJtaXRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDZEMDAwM0UyNkEwRkU2RjAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50LmggKi87
IH07CiAJCTQ2REE0QTAyMjdBQjAzOTMwMEUzNzVBOCAvKiBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRBNEEw
MDI3QUIwMzhEMDBFMzc1QTggLyogVHJhbnNmZXJyZWRNZXNzYWdlUG9ydC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2REJCNjUwMUFCOEM5NkYw
MEQ5QTgxMyAvKiBQb3dlck9ic2VydmVyTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRCQjY0RTFBQjhDOTZGMDBEOUE4MTMgLyogUG93ZXJPYnNl
cnZlck1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC05MjQ1LDggKzkyNDgsNiBAQAogCQk0NjdBNjhDRjI3NUVBOTg5MDA5QjMxQzUgLyogU2hh
cmVkV29ya2VyVGhyZWFkUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdBNjhEMDI3
NUVBOTg5MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNoYXJlZFdvcmtlclRocmVhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2N0E2OEQxMjc1RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDY3QTY4RDIyNzVFQTk4QTAwOUIzMUM1IC8qIFNoYXJl
ZFdvcmtlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyTWFuYWdlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NjdBNjhEMzI3NUVBOThCMDA5QjMxQzUgLyog
U2hhcmVkV29ya2VyTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJN
YW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3QTY4RDQyNzVFQTk4
QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRX
b3JrZXJUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3QTY4RDUyNzVF
QTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDY3QTY4RDYyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclRocmVhZFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC05MjYyLDYgKzkyNjMsOCBAQAogCQk0NjgzREYzRTI3NjdERjk4MDA3
RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODhFRTNBMjZERDI2MEMwMDJBRjVDNCAvKiBDcm9zc09y
aWdpbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NPcmlnaW5Nb2RlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2OEI4QkRFMjVDQzg0OTMwMEY2NzgyMiAvKiBKU0Jhc2VBdWRp
b0NvbnRleHRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCYXNlQXVkaW9Db250ZXh0
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQzcyNzYzRjgw
RTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0Njk4NUYyMjI3QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlcktleS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlDQ0NGQTI2OUQwMjAyMDA2RTAzMTQgLyogQnJvYWRj
YXN0Q2hhbm5lbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCcm9hZGNhc3RDaGFubmVsLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5Q0NDRkMyNjlEMDIwMjAwNkUwMzE0IC8q
IEJyb2FkY2FzdENoYW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnJvYWRjYXN0Q2hhbm5lbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlDQ0NGRDI2OUQwMjAzMDA2RTAzMTQgLyog
QnJvYWRjYXN0Q2hhbm5lbC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQnJvYWRjYXN0Q2hhbm5lbC5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MzAyLDYgKzkzMDUsOCBAQAogCQk0NkM4M0VGQzFBOUJC
RTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gR2VvTm90aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDQTlD
NDExRjk3QkJFNzAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBWaXNpYmlsaXR5U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDZDQTlDNDIxRjk3QkJFNzAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVmlzaWJpbGl0eVN0YXRlLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDZDRjUwNDgyN0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2Q0Y1MDQ5MjdBQjFFQTEwMDcw
REJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2RDAwMDNDMjZBMEZFNkYwMEQxQkYxRSAvKiBTdWJtaXRFdmVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdWJtaXRFdmVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RDAwMDNFMjZBMEZFNkYwMEQxQkYxRSAvKiBTdWJtaXRF
dmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdWJtaXRFdmVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkQwMDAzRjI2QTBGRTcwMDBEMUJGMUUgLyog
U3VibWl0RXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFN1Ym1pdEV2ZW50LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNTY4LDYgKzIxNTczLDggQEAKIAkJNDY0
N0NFNjEyN0FBRTFEQTAwOUNCRDQ4IC8qIGNvbnRleHQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQ2Q0Y1MDQ5MjdBQjFFQTEwMDcwREJDOCAvKiBTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAgKi8sCisJCQkJNDZDRjUwNDgyN0FCMUVBMTAwNzBE
QkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggKi8sCiAJCQkJNDY3QTY4RDAyNzVF
QTk4OTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5jcHAgKi8sCiAJCQkJNDY3QTY4RDQy
NzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5oICovLAogCQkJCTQ2N0E2OENG
Mjc1RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAgKi8sCkBAIC0y
MTU4NywxMCArMjE1OTQsMTAgQEAKIAkJCQk0NjY5NENFMTI3NTk0NDhDMDBFMzE1MEUgLyogU2hh
cmVkV29ya2VyR2xvYmFsU2NvcGUuaCAqLywKIAkJCQk0NjY5NENFMDI3NTk0NDhDMDBFMzE1MEUg
LyogU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaWRsICovLAogCQkJCTQ2RUM0NDQ4MjdBQjMzN0Yw
MEZGQ0Q5NiAvKiBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmggKi8sCi0JCQkJNDY3QTY4RDMyNzVF
QTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuY3BwICovLAotCQkJCTQ2N0E2OEQy
Mjc1RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggKi8sCisJCQkJNDY5ODVG
MjIyN0E0QTY4NjAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktleS5oICovLAogCQkJCTQ2NjhBMEIz
MjdBQjYwMEIwMEM3MjBCQyAvKiBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcCAqLywK
IAkJCQk0NjY4QTBCMTI3QUI2MDBCMDBDNzIwQkMgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbi5oICovLAorCQkJCTQ2OTQzREM3Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLmggKi8sCiAJCQkJNDY2OEEwQjQyN0FCNjAwQzAwQzcyMEJDIC8qIFNo
YXJlZFdvcmtlclByb3ZpZGVyLmNwcCAqLywKIAkJCQk0NjY4QTBCNTI3QUI2MDBDMDBDNzIwQkMg
LyogU2hhcmVkV29ya2VyUHJvdmlkZXIuaCAqLywKIAkJCQk0NjdBNjhEMTI3NUVBOThBMDA5QjMx
QzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcCAqLywKQEAgLTM3MjA0LDkgKzM3MjEx
LDExIEBACiAJCQkJODM0REZBRDAxRjdEQUU1RDAwQzI3MjVCIC8qIFNoYXJlZFN0cmluZ0hhc2gu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RUEzMDk5RUI3OEMwMDU2RTU4MSAvKiBTaGFyZWRU
aW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFEQzA0RkUyN0E4M0M5MzAwOENGOTY4IC8qIFNo
YXJlZFZpZGVvRnJhbWVJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkNGNTA0QTI3QUIxRUE0
MDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ2RUM0NDRBMjdBQjMzODkwMEZGQ0Q5NiAvKiBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgg
aW4gSGVhZGVycyAqLywKLQkJCQk0NjdBNjhEQTI3NUVBOTlDMDA5QjMxQzUgLyogU2hhcmVkV29y
a2VyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY5ODVGMjMyN0E0QTZBRDAwOTdBMzJC
IC8qIFNoYXJlZFdvcmtlcktleS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY2OEEwQjYyN0FCNjAx
QjAwQzcyMEJDIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
LAorCQkJCTQ2OTQzREM5Mjc2M0Y4MTcwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjY4QTBCNzI3QUI2MDIxMDBDNzIwQkMgLyog
U2hhcmVkV29ya2VyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2N0E2OEQ4Mjc1RUE5
OTUwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ2N0E2OEQ3Mjc1RUE5OTEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzgwNjcsNiArMzgwNzYsNyBAQAogCQkJCUUxMjcxQTBCMEVFRUM3N0Ew
MEY2MTIxMyAvKiBXb3JrZXJOYXZpZ2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1Q0IwNTI1
MUZCNTFGM0EwMDA4OUI5NyAvKiBXb3JrZXJOZXR3b3JrQWdlbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTJFNDM0NjUxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94eS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNDZBNzhCMzQyNzk5QkQ3MTAwMTE1NEZFIC8qIFdvcmtlck9wdGlvbnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTgzRDZBQUU2MjUyNEVFMUMwMDQyOEI0QiAvKiBXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM5QTA5NUQyNTI0RjM3
RjAwRUVGMzI4IC8qIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTgzRjZBRUJGMjUyN0JCMEMwMDM0QkNEMyAvKiBXb3JrZXJPcldvcmtsZXRUaHJl
YWQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TG9nZ2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDVmZWY0
MmVlMDZlYy4uZmE3ZDIzMDJlYzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCkBAIC0x
MjcsNiArMTI3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIE0oV2ViR0wpIFwKICAgICBN
KFdlYlJUQykgXAogICAgIE0oV2ViUlRDU3RhdHMpIFwKKyAgICBNKFdvcmtlcikgXAogICAgIE0o
WFIpIFwKICAgICBNKFdoZWVsRXZlbnRUZXN0TW9uaXRvcikgXAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNwcAppbmRleCBiNDg3NDdhMmMwOTkuLjQ2
ZGM0NTRkZmRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI2LDE1ICsyNiwxNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlNoYXJlZFdvcmtlci5oIgogCisjaW5jbHVkZSAiQ2xpZW50T3JpZ2luLmgiCiAjaW5jbHVkZSAi
Q29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VD
aGFubmVsLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUVy
cm9yLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJTaGFyZWRXb3Jr
ZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb3ZpZGVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJPcHRpb25zLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSWRlbnRpZmllcnNGYWN0b3J5Lmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Y0lubGluZXMuaD4KQEAgLTQzLDEyICs0NSwyNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdU
Rl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChTaGFyZWRXb3JrZXIpOwogCisjZGVmaW5lIFNIQVJF
RF9XT1JLRVJfUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwg
IiVwIC0gW2lkZW50aWZpZXI9JXtwdWJsaWN9c10gU2hhcmVkV29ya2VyOjoiIGZtdCwgdGhpcywg
bV9pZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgIyNfX1ZBX0FSR1NfXykKKyNk
ZWZpbmUgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9M
T0dfRVJST1IoU2hhcmVkV29ya2VyLCAiJXAgLSBbaWRlbnRpZmllcj0le3B1YmxpY31zXSBTaGFy
ZWRXb3JrZXI6OiIgZm10LCB0aGlzLCBtX2lkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0
YSgpLCAjI19fVkFfQVJHU19fKQorCitzdGF0aWMgSGFzaE1hcDxTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLCBTaGFyZWRXb3JrZXIqPiYgYWxsU2hhcmVkV29ya2VycygpCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxT
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBTaGFyZWRXb3JrZXIqPj4gYWxsU2hhcmVkV29y
a2VyczsKKyAgICByZXR1cm4gYWxsU2hhcmVkV29ya2VyczsKK30KKworU2hhcmVkV29ya2VyKiBT
aGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVyKFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIg
aWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gYWxsU2hhcmVkV29ya2VycygpLmdldChpZGVudGlm
aWVyKTsKK30KKwogc3RhdGljIGlubGluZSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKiBt
YWluVGhyZWFkQ29ubmVjdGlvbigpCiB7CiAgICAgcmV0dXJuIFNoYXJlZFdvcmtlclByb3ZpZGVy
OjpzaW5nbGV0b24oKS5zaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiB9CiAKLUV4Y2VwdGlvbk9y
PFJlZjxTaGFyZWRXb3JrZXI+PiBTaGFyZWRXb3JrZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1l
bnQsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncywgU3RyaW5nJiYgc2NyaXB0VVJMU3Ry
aW5nLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxTdHJpbmcsIFdvcmtlck9wdGlvbnM+PiYm
IG1heWJlT3B0aW9ucykKK0V4Y2VwdGlvbk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBTaGFyZWRXb3Jr
ZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZyYmIHNjcmlwdFVSTFN0cmluZywg
c3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4mJiBtYXli
ZU9wdGlvbnMpCiB7CiAgICAgaWYgKCFtYWluVGhyZWFkQ29ubmVjdGlvbigpKQogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJTaGFyZWQgd29ya2VycyBhcmUg
bm90IHN1cHBvcnRlZCIgfTsKQEAgLTc3LDI2ICs5NCwzNCBAQCBFeGNlcHRpb25PcjxSZWY8U2hh
cmVkV29ya2VyPj4gU2hhcmVkV29ya2VyOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBKU0M6
OlJ1bgogICAgIGF1dG8gY2hhbm5lbCA9IE1lc3NhZ2VDaGFubmVsOjpjcmVhdGUoZG9jdW1lbnQp
OwogICAgIGF1dG8gdHJhbnNmZXJyZWRQb3J0ID0gY2hhbm5lbC0+cG9ydDIoKS5kaXNlbnRhbmds
ZSgpOwogCi0gICAgYXV0byBzaGFyZWRXb3JrZXIgPSBhZG9wdFJlZigqbmV3IFNoYXJlZFdvcmtl
cihkb2N1bWVudCwgY2hhbm5lbC0+cG9ydDEoKSwgcnVudGltZUZsYWdzKSk7CisgICAgYXV0byBz
aGFyZWRXb3JrZXIgPSBhZG9wdFJlZigqbmV3IFNoYXJlZFdvcmtlcihkb2N1bWVudCwgdXJsLCBj
aGFubmVsLT5wb3J0MSgpKSk7CiAgICAgc2hhcmVkV29ya2VyLT5zdXNwZW5kSWZOZWVkZWQoKTsK
IAotICAgIG1haW5UaHJlYWRDb25uZWN0aW9uKCktPnJlcXVlc3RTaGFyZWRXb3JrZXIodXJsLCBz
aGFyZWRXb3JrZXIuZ2V0KCksIFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwgV1RGTW92ZShvcHRp
b25zKSk7CisgICAgQ2xpZW50T3JpZ2luIGNsaWVudE9yaWdpbiB7IGRvY3VtZW50LnRvcERvY3Vt
ZW50KCkuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCksIGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCku
ZGF0YSgpIH07CisgICAgbWFpblRocmVhZENvbm5lY3Rpb24oKS0+cmVxdWVzdFNoYXJlZFdvcmtl
cihjbGllbnRPcmlnaW4sIHNoYXJlZFdvcmtlci0+aWRlbnRpZmllcigpLCB1cmwsIFdURk1vdmUo
dHJhbnNmZXJyZWRQb3J0KSwgb3B0aW9ucyk7CiAgICAgcmV0dXJuIHNoYXJlZFdvcmtlcjsKIH0K
IAotU2hhcmVkV29ya2VyOjpTaGFyZWRXb3JrZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8TWVz
c2FnZVBvcnQ+JiYgcG9ydCwgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKQorU2hhcmVk
V29ya2VyOjpTaGFyZWRXb3JrZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwg
UmVmPE1lc3NhZ2VQb3J0PiYmIHBvcnQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmRvY3VtZW50
KQorICAgICwgbV9pZGVudGlmaWVyKFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI6OmdlbmVy
YXRlKCkpCiAgICAgLCBtX3BvcnQoV1RGTW92ZShwb3J0KSkKICAgICAsIG1faWRlbnRpZmllckZv
ckluc3BlY3RvcigiU2hhcmVkV29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9y
eTo6Y3JlYXRlSWRlbnRpZmllcigpKQotICAgICwgbV9ydW50aW1lRmxhZ3MocnVudGltZUZsYWdz
KQotICAgICwgbV9jcmVhdGlvblRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkpCi0gICAgLCBtX3By
b3h5KFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpjcmVhdGUoKnRoaXMpKQogeworICAgIFNIQVJF
RF9XT1JLRVJfUkVMRUFTRV9MT0coIlNoYXJlZFdvcmtlcjoiKTsKKyAgICBhbGxTaGFyZWRXb3Jr
ZXJzKCkuYWRkKG1faWRlbnRpZmllciwgdGhpcyk7CisKKyAgICAvLyBJZiB0aGUgc2hhcmVkIHdv
cmtlciBVUkwgaXMgYSBibG9iIFVSTCwgbWFrZSBzdXJlIHRvIGtlZXAgaXQgYWxpdmUgdW50aWwg
dGhlIHdvcmtlciBoYXMgZmluaXNoZWQgbG9hZGluZy4KKyAgICBpZiAodXJsLnByb3RvY29sSXNC
bG9iKCkpCisgICAgICAgIG1fYmxvYlVSTEV4dGVuc2lvbiA9IHVybDsKIH0KIAogU2hhcmVkV29y
a2VyOjp+U2hhcmVkV29ya2VyKCkKIHsKLSAgICBtX3Byb3h5Lndvcmtlck9iamVjdERlc3Ryb3ll
ZCgpOworICAgIEFTU0VSVChhbGxTaGFyZWRXb3JrZXJzKCkuZ2V0KG1faWRlbnRpZmllcikgPT0g
dGhpcyk7CisgICAgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRygiflNoYXJlZFdvcmtlcjoiKTsK
KyAgICBhbGxTaGFyZWRXb3JrZXJzKCkucmVtb3ZlKG1faWRlbnRpZmllcik7CisgICAgQVNTRVJU
KCFtX2lzQWN0aXZlKTsKIH0KIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogU2hhcmVkV29ya2Vy
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKQEAgLTExNCwxOSArMTM5LDI5IEBAIEV2
ZW50VGFyZ2V0SW50ZXJmYWNlIFNoYXJlZFdvcmtlcjo6ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdAogICAgIHJldHVybiBTaGFyZWRXb3JrZXJFdmVudFRhcmdldEludGVyZmFjZVR5cGU7CiB9
CiAKLXZvaWQgU2hhcmVkV29ya2VyOjpzdG9wKCkKK3ZvaWQgU2hhcmVkV29ya2VyOjpkaWRGaW5p
c2hMb2FkaW5nKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIHRlcm1pbmF0ZSgp
OworICAgIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coImZpbmlzaExvYWRpbmc6IHN1Y2Nlc3M9
JWQiLCBlcnJvci5pc051bGwoKSk7CisgICAgaWYgKCFlcnJvci5pc051bGwoKSkgeworICAgICAg
ICBxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxh
dGlvbiwgRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1
YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOworICAgICAgICBtX2lzQWN0aXZl
ID0gZmFsc2U7CisgICAgfQorICAgIG1fYmxvYlVSTEV4dGVuc2lvbi5jbGVhcigpOwogfQogCiBi
b29sIFNoYXJlZFdvcmtlcjo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fcHJveHkuaGFzUGVuZGluZ0FjdGl2aXR5KCkgfHwgbV9pc0xvYWRpbmc7Cisg
ICAgcmV0dXJuIG1faXNBY3RpdmU7CiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyOjp0ZXJtaW5hdGUo
KQordm9pZCBTaGFyZWRXb3JrZXI6OnN0b3AoKQogewotICAgIG1fcHJveHkudGVybWluYXRlV29y
a2VyR2xvYmFsU2NvcGUoKTsKKyAgICBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HKCJzdG9wOiIp
OworICAgIG1faXNBY3RpdmUgPSBmYWxzZTsKKyAgICBtYWluVGhyZWFkQ29ubmVjdGlvbigpLT5z
aGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShtX2lkZW50aWZpZXIpOwogfQogCisjdW5kZWYg
U0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRworI3VuZGVmIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9M
T0dfRVJST1IKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaAppbmRleCBlNTViMWNmNTUxM2QuLmJlNTc3ODM1YTA0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcs
MzkgKzI3LDM2IEBACiAKICNpbmNsdWRlICJBYnN0cmFjdFdvcmtlci5oIgogI2luY2x1ZGUgIkFj
dGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1bnRpbWVGbGFncy5o
PgorI2luY2x1ZGUgIkJsb2JVUkwuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBNZXNzYWdlUG9ydDsKLWNsYXNzIFNoYXJlZFdvcmtlclRocmVhZFBy
b3h5OworY2xhc3MgUmVzb3VyY2VFcnJvcjsKIAogc3RydWN0IFdvcmtlck9wdGlvbnM7CiAKIGNs
YXNzIFNoYXJlZFdvcmtlciBmaW5hbCA6IHB1YmxpYyBBYnN0cmFjdFdvcmtlciwgcHVibGljIEFj
dGl2ZURPTU9iamVjdCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChTaGFyZWRXb3JrZXIp
OwogcHVibGljOgotICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8U2hhcmVkV29ya2VyPj4gY3Jl
YXRlKERvY3VtZW50JiwgSlNDOjpSdW50aW1lRmxhZ3MsIFN0cmluZyYmIHNjcmlwdFVSTCwgc3Rk
OjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4mJik7CisgICAg
c3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBjcmVhdGUoRG9jdW1lbnQmLCBT
dHJpbmcmJiBzY3JpcHRVUkwsIHN0ZDo6b3B0aW9uYWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29y
a2VyT3B0aW9ucz4+JiYpOwogICAgIH5TaGFyZWRXb3JrZXIoKTsKIAorICAgIHN0YXRpYyBTaGFy
ZWRXb3JrZXIqIGZyb21JZGVudGlmaWVyKFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOwor
ICAgIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQogICAgIE1lc3NhZ2VQb3J0JiBwb3J0KCkgY29uc3QgeyByZXR1
cm4gbV9wb3J0LmdldCgpOyB9Ci0gICAgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKCkg
eyByZXR1cm4gbV9ydW50aW1lRmxhZ3M7IH0KIAogICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
ckZvckluc3BlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckluc3BlY3Rvcjsg
fQotICAgIE1vbm90b25pY1RpbWUgY3JlYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9jcmVh
dGlvblRpbWU7IH0KIAotICAgIFNoYXJlZFdvcmtlclRocmVhZFByb3h5JiBwcm94eSgpIHsgcmV0
dXJuIG1fcHJveHk7IH0KLQotICAgIHZvaWQgc2V0SXNMb2FkaW5nKGJvb2wgaXNMb2FkaW5nKSB7
IG1faXNMb2FkaW5nID0gaXNMb2FkaW5nOyB9CisgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0LgogICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbDsKIAog
cHJpdmF0ZToKLSAgICBTaGFyZWRXb3JrZXIoRG9jdW1lbnQmLCBSZWY8TWVzc2FnZVBvcnQ+JiYs
IEpTQzo6UnVudGltZUZsYWdzKTsKLQotICAgIHZvaWQgdGVybWluYXRlKCk7CisgICAgU2hhcmVk
V29ya2VyKERvY3VtZW50JiwgY29uc3QgVVJMJiwgUmVmPE1lc3NhZ2VQb3J0PiYmKTsKIAogICAg
IC8vIEV2ZW50VGFyZ2V0LgogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50
ZXJmYWNlKCkgY29uc3QgZmluYWw7CkBAIC03MCwxMiArNjcsMTEgQEAgcHJpdmF0ZToKICAgICBi
b29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogCisgICAgU2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgUmVmPE1lc3NhZ2VQ
b3J0PiBtX3BvcnQ7CiAgICAgU3RyaW5nIG1faWRlbnRpZmllckZvckluc3BlY3RvcjsKLSAgICBK
U0M6OlJ1bnRpbWVGbGFncyBtX3J1bnRpbWVGbGFnczsKLSAgICBNb25vdG9uaWNUaW1lIG1fY3Jl
YXRpb25UaW1lOwotICAgIFNoYXJlZFdvcmtlclRocmVhZFByb3h5JiBtX3Byb3h5OyAvLyBUaGUg
cHJveHkgb3V0bGl2ZXMgdGhlIHdvcmtlciB0byBwZXJmb3JtIHRocmVhZCBzaHV0ZG93bi4KLSAg
ICBib29sIG1faXNMb2FkaW5nIHsgZmFsc2UgfTsKKyAgICBCbG9iVVJMSGFuZGxlIG1fYmxvYlVS
TEV4dGVuc2lvbjsKKyAgICBib29sIG1faXNBY3RpdmUgeyB0cnVlIH07CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyLmlkbAppbmRleCBiMTcxYzllZGY4MWIuLjRjNzQxNTRkODIwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaWRsCkBAIC0yOCw3ICsyOCw3
IEBACiAgICAgRXhwb3NlZD1XaW5kb3cKIF0KIGludGVyZmFjZSBTaGFyZWRXb3JrZXIgOiBFdmVu
dFRhcmdldCB7Ci0gIFtDYWxsV2l0aD1Eb2N1bWVudCZSdW50aW1lRmxhZ3NdIGNvbnN0cnVjdG9y
KFVTVlN0cmluZyBzY3JpcHRVUkwsIG9wdGlvbmFsIChET01TdHJpbmcgb3IgV29ya2VyT3B0aW9u
cykgb3B0aW9ucyk7CisgIFtDYWxsV2l0aD1Eb2N1bWVudF0gY29uc3RydWN0b3IoVVNWU3RyaW5n
IHNjcmlwdFVSTCwgb3B0aW9uYWwgKERPTVN0cmluZyBvciBXb3JrZXJPcHRpb25zKSBvcHRpb25z
KTsKIAogICByZWFkb25seSBhdHRyaWJ1dGUgTWVzc2FnZVBvcnQgcG9ydDsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlcktleS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNWY5ZTZkYzkwYmE5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyS2V5LmgKQEAg
LTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ2xp
ZW50T3JpZ2luLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdHJ1Y3QgU2hhcmVkV29ya2VyS2V5IHsKKyAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4g
b3JpZ2luOworICAgIFVSTCB1cmw7CisgICAgU3RyaW5nIG5hbWU7CisKKyAgICB1bnNpZ25lZCBo
YXNoKCkgY29uc3Q7Cit9OworCitpbmxpbmUgdW5zaWduZWQgU2hhcmVkV29ya2VyS2V5OjpoYXNo
KCkgY29uc3QKK3sKKyAgICBIYXNoZXIgaGFzaGVyOworICAgIGFkZChoYXNoZXIsIG9yaWdpbi5o
YXNoKCkpOworICAgIGFkZChoYXNoZXIsIHVybCk7CisgICAgYWRkKGhhc2hlciwgbmFtZSk7Cisg
ICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29u
c3QgU2hhcmVkV29ya2VyS2V5JiBhLCBjb25zdCBTaGFyZWRXb3JrZXJLZXkmIGIpCit7CisgICAg
cmV0dXJuIGEub3JpZ2luID09IGIub3JpZ2luICYmIGEudXJsID09IGIudXJsICYmIGEubmFtZSA9
PSBiLm5hbWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7
CisKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktl
eT4geworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtl
cktleSYga2V5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGtleS5oYXNoKCk7CisgICAgfQorCisg
ICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBhLCBj
b25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIGIpCisgICAgeworICAgICAgICByZXR1cm4g
YSA9PSBiOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0Vt
cHR5T3JEZWxldGVkID0gZmFsc2U7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRz
PFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleT4gOiBHZW5lcmljSGFzaFRyYWl0czxXZWJDb3JlOjpT
aGFyZWRXb3JrZXJLZXk+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgZW1wdHlWYWx1ZUlz
WmVybyA9IGZhbHNlOworICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJD
b3JlOjpTaGFyZWRXb3JrZXJLZXkmIHNsb3QpIHsgbmV3IChOb3ROdWxsLCAmc2xvdC51cmwpIFVS
TChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0
ZWRWYWx1ZShjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIHNsb3QpIHsgcmV0dXJuIHNs
b3QudXJsLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KK307CisKK30gLy8gbmFtZXNwYWNl
IFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJNYW5hZ2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc0MTA4NzdkYjMy
Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyTWFuYWdlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJNYW5hZ2Vy
LmgiCi0KLSNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKLSNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCi0jaW5jbHVkZSAiTG9hZGVyU3RyYXRlZ3kuaCIKLSNpbmNsdWRlICJNZXNzYWdl
RXZlbnQuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKLSNpbmNsdWRlICJTaGFy
ZWRXb3JrZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oIgotI2luY2x1
ZGUgIlNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlclRo
cmVhZC5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlclRocmVhZFByb3h5LmgiCi0jaW5jbHVkZSAi
V29ya2VyUnVuTG9vcC5oIgotI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5oIgotI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotU2hhcmVkV29ya2VyTWFuYWdlciYgU2hhcmVkV29ya2VyTWFu
YWdlcjo6c2luZ2xldG9uKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhcmVkV29y
a2VyTWFuYWdlcj4gaW5zdGFuY2U7Ci0gICAgcmV0dXJuIGluc3RhbmNlLmdldCgpOwotfQotCi12
b2lkIFNoYXJlZFdvcmtlck1hbmFnZXI6OmNvbm5lY3QoY29uc3QgVVJMJiB1cmwsIFNoYXJlZFdv
cmtlciYgd29ya2VyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgbWVzc2FnZVBvcnQsIFdvcmtl
ck9wdGlvbnMmJiBvcHRpb25zKQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0g
ICAgLy8gRklYTUU6IEhhbmRsZSB3b3JrZXJzIGZyb20gb3RoZXIgcHJvY2Vzc2VzLCB3aGljaCB3
aWxsIHByb2JhYmx5IHJlcXVpcmUgbW92aW5nIGNvbm5lY3QgdG8gdGhlIEZyYW1lTG9hZGVyQ2xp
ZW50IG9yIHNvbWV0aGluZy4KLSAgICAvLyBNYXliZSBzb21ldGhpbmcgbW9yZSBsaWtlIHdoYXQg
U2VydmljZVdvcmtlcnMgZG9lcy4KLQotICAgIC8vIEZJWE1FOiBDaGVjayBpZiB3ZSBhbHJlYWR5
IG1hZGUgYSB0aHJlYWQuCi0gICAgLy8gRklYTUU6IENoZWNrIGlmIHRoZXJlJ3MgYWxyZWFkeSBh
IHNoYXJlZCB3b3JrZXIgYW5kIHVzZSB0aGF0IGlmIHRoZXJlIGlzLgotCi0gICAgYXV0byBsb2Fk
ZXIgPSBtYWtlVW5pcXVlUmVmPFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj4odXJsLCB3b3JrZXIs
IFdURk1vdmUobWVzc2FnZVBvcnQpLCBXVEZNb3ZlKG9wdGlvbnMpKTsKLSAgICBhdXRvIGlkZW50
aWZpZXIgPSBsb2FkZXItPmlkZW50aWZpZXIoKTsKLSAgICBtX2xvYWRlcnMuYWRkKGlkZW50aWZp
ZXIsIFdURk1vdmUobG9hZGVyKSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyTWFuYWdlcjo6c2Ny
aXB0TG9hZEZhaWxlZChTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXImIGxvYWRlcikKLXsKLSAgICBB
Y3RpdmVET01PYmplY3Q6OnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudChsb2FkZXIud29ya2VyKCks
IFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
ZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Olll
cykpOwotICAgIG1fbG9hZGVycy5yZW1vdmUobG9hZGVyLmlkZW50aWZpZXIoKSk7Ci19Ci0KLXZv
aWQgU2hhcmVkV29ya2VyTWFuYWdlcjo6c2NyaXB0TG9hZGVkU3VjY2Vzc2Z1bGx5KFNoYXJlZFdv
cmtlclNjcmlwdExvYWRlciYgbG9hZGVyLCBjb25zdCBTY3JpcHRCdWZmZXImIHNjcmlwdEJ1ZmZl
ciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgU2hhcmVk
V29ya2VyJiBzaGFyZWRXb3JrZXIsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiB0cmFuc2ZlcnJl
ZFBvcnQpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBhdXRvJiB3b3Jr
ZXIgPSBsb2FkZXIud29ya2VyKCk7Ci0gICAgYXV0byYgb3B0aW9ucyA9IGxvYWRlci5vcHRpb25z
KCk7Ci0KLSAgICBhdXRvJiBwcm94eSA9IHNoYXJlZFdvcmtlci5wcm94eSgpOwotCi0gICAgcHJv
eHkuc3RhcnRXb3JrZXJHbG9iYWxTY29wZSgKLSAgICAgICAgbG9hZGVyLnVybCgpLAotICAgICAg
ICBvcHRpb25zLm5hbWUsCi0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQudXNlckFnZW50
KGxvYWRlci51cmwoKSksCi0gICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJh
dGVneSgpLT5pc09uTGluZSgpLAotICAgICAgICBzY3JpcHRCdWZmZXIsCi0gICAgICAgIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuY29udGVudFNlY3VyaXR5UG9saWN5KCktPnJlc3BvbnNlSGVhZGVy
cygpLAotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LnNob3VsZEJ5cGFzc01haW5Xb3Js
ZENvbnRlbnRTZWN1cml0eVBvbGljeSgpLAotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LmNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3koKSwKLSAgICAgICAgd29ya2VyLmNyZWF0aW9uVGlt
ZSgpLAotICAgICAgICBSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcsCi0gICAgICAgIG9wdGlv
bnMudHlwZSwKLSAgICAgICAgb3B0aW9ucy5jcmVkZW50aWFscywKLSAgICAgICAgd29ya2VyLnJ1
bnRpbWVGbGFncygpCi0gICAgKTsKLSAgICBpZiAoIXByb3h5LnRocmVhZCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlz
PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7Ci0gICAgYXV0byBzb3VyY2VPcmln
aW4gPSBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkuc2VjdXJpdHlP
cmlnaW4oKS50b1N0cmluZygpOwotCi0gICAgcHJveHkudGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0
VGFzayhbdHJhbnNmZXJyZWRQb3J0ID0gV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBzb3VyY2VP
cmlnaW4gPSBXVEZNb3ZlKHNvdXJjZU9yaWdpbikuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgZG93bmNhc3Q8U2hhcmVkV29y
a2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnBvc3RDb25uZWN0RXZlbnQo
V1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBzb3VyY2VPcmlnaW4pOwotICAgIH0pOwotCi0gICAg
bV9sb2FkZXJzLnJlbW92ZShsb2FkZXIuaWRlbnRpZmllcigpKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcAppbmRleCBkZGEzODRkMjI5MTIu
LjFjZGUwYmEzNTk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKQEAgLTI2LDEwICsy
Niw2NiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24uaCIKIAorI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUg
IkVycm9yRXZlbnQuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiU2NyaXB0QnVm
ZmVyLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyLmgiCisjaW5jbHVkZSAiV29ya2VyRmV0Y2hSZXN1bHQuaCIKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCisjZGVmaW5lIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coZm10LCAuLi4p
IFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCisjZGVmaW5lIENPTk5FQ1RJT05fUkVM
RUFTRV9MT0dfRVJST1IoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKFNoYXJlZFdvcmtlciwg
IiVwIC0gU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsICMjX19WQV9B
UkdTX18pCisKK3N0YXRpYyB1aW50NjRfdCBsb2FkZXJJZGVudGlmaWVyU2VlZCA9IDA7CisKIFNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24o
KSA9IGRlZmF1bHQ7CiAKIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246On5TaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uKCkgPSBkZWZhdWx0OwogCit2b2lkIFNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb246OmZldGNoU2NyaXB0SW5DbGllbnQoVVJMJiYgdXJsLCBXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdv
cmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFdvcmtlckZldGNoUmVzdWx0Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKworICAgIGF1dG8qIHdvcmtlck9iamVjdCA9IFNoYXJlZFdvcmtl
cjo6ZnJvbUlkZW50aWZpZXIoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgQ09O
TkVDVElPTl9SRUxFQVNFX0xPRygiZmV0Y2hTY3JpcHRJbkNsaWVudDogc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllcj0le3B1YmxpY31zLCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgd29ya2VyT2JqZWN0KTsKKyAgICBp
ZiAoIXdvcmtlck9iamVjdCkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHdvcmtl
ckZldGNoRXJyb3IoUmVzb3VyY2VFcnJvciB7IFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxh
dGlvbiB9KSk7CisKKyAgICBhdXRvIGxvYWRlcklkZW50aWZpZXIgPSArK2xvYWRlcklkZW50aWZp
ZXJTZWVkOworICAgIGF1dG8gbG9hZGVyID0gbWFrZVVuaXF1ZVJlZjxTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXI+KFdURk1vdmUodXJsKSwgKndvcmtlck9iamVjdCwgV1RGTW92ZSh3b3JrZXJPcHRp
b25zKSk7CisgICAgYXV0byBsb2FkZXJQdHIgPSBsb2FkZXIucHRyKCk7CisgICAgbV9sb2FkZXJz
LmFkZChsb2FkZXJJZGVudGlmaWVyLCBXVEZNb3ZlKGxvYWRlcikpOworCisgICAgbG9hZGVyUHRy
LT5sb2FkKFt0aGlzLCBsb2FkZXJJZGVudGlmaWVyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYgZmV0Y2hSZXN1
bHQpIG11dGFibGUgeworICAgICAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJmZXRjaFNjcmlw
dEluQ2xpZW50OiBmaW5pc2hlZCBzY3JpcHQgbG9hZCwgc3VjY2Vzcz0lZCIsIGZldGNoUmVzdWx0
LmVycm9yLmlzTnVsbCgpKTsKKyAgICAgICAgYXV0byBsb2FkZXIgPSBtX2xvYWRlcnMudGFrZShs
b2FkZXJJZGVudGlmaWVyKTsKKyAgICAgICAgQVNTRVJUKGxvYWRlcik7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGZldGNoUmVzdWx0KTsKKyAgICB9KTsKK30KKwordm9pZCBTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uOjpub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKFdl
YkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBhdXRvKiB3b3JrZXJPYmplY3QgPSBTaGFyZWRXb3JrZXI6OmZyb21J
ZGVudGlmaWVyKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIENPTk5FQ1RJT05f
UkVMRUFTRV9MT0dfRVJST1IoIm5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb246IHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cywgd29ya2VyPSVwLCBzdWNjZXNz
PSVkIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRh
KCksIHdvcmtlck9iamVjdCwgZXJyb3IuaXNOdWxsKCkpOworICAgIGlmICh3b3JrZXJPYmplY3Qp
CisgICAgICAgIHdvcmtlck9iamVjdC0+ZGlkRmluaXNoTG9hZGluZyhlcnJvcik7Cit9CisKK3Zv
aWQgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2Jq
ZWN0KFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIGF1dG8qIHdvcmtlck9iamVjdCA9IFNoYXJlZFdvcmtlcjo6ZnJvbUlk
ZW50aWZpZXIoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgQ09OTkVDVElPTl9S
RUxFQVNFX0xPR19FUlJPUigicG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0OiBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMsIHdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB3b3JrZXJPYmplY3QpOwor
ICAgIGlmICh3b3JrZXJPYmplY3QpCisgICAgICAgIEFjdGl2ZURPTU9iamVjdDo6cXVldWVUYXNr
VG9EaXNwYXRjaEV2ZW50KCp3b3JrZXJPYmplY3QsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlv
biwgRXJyb3JFdmVudDo6Y3JlYXRlKGVycm9yTWVzc2FnZSwgc291cmNlVVJMLCBsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIHsgfSkpOworfQorCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xP
RworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oCmluZGV4IDRlZDVhMWM2NWI1OC4uOTU2YjQ3
MzRhMTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oCkBAIC0yNSwyMiArMjUsMzggQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSAiVHJhbnNmZXJyZWRNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZFdvcmtlcjsKK2NsYXNz
IE1lc3NhZ2VQb3J0OworY2xhc3MgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOworCitzdHJ1Y3Qg
Q2xpZW50T3JpZ2luOworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0Owogc3RydWN0IFdvcmtlck9w
dGlvbnM7CiAKIGNsYXNzIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24gOiBwdWJsaWMgUmVm
Q291bnRlZDxTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uPiB7CiBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB+U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpOwogCi0g
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoY29uc3QgVVJMJiwgU2hhcmVkV29y
a2VyJiwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBXb3JrZXJPcHRpb25zJiYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFNoYXJlZFdvcmtlcihjb25zdCBDbGllbnRPcmlnaW4mLCBT
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBUcmFuc2ZlcnJlZE1lc3Nh
Z2VQb3J0JiYsIGNvbnN0IFdvcmtlck9wdGlvbnMmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNo
YXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIp
ID0gMDsKIAogcHJvdGVjdGVkOgorICAgIC8vIElQQyBtZXNzYWdlcy4KKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGZldGNoU2NyaXB0SW5DbGllbnQoVVJMJiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIsIFdvcmtlck9wdGlvbnMmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IG5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24oV2ViQ29yZTo6U2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCiAgICAgV0VCQ09SRV9F
WFBPUlQgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpOworCitwcml2YXRlOgorICAgIEhh
c2hNYXA8dWludDY0X3QsIFVuaXF1ZVJlZjxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+PiBtX2xv
YWRlcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgKc2ltaWxh
cml0eSBpbmRleCA1OSUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VyTWFuYWdlci5oCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgKaW5kZXggMjUyMTgxNmU2NWM3Li5l
YmNkNGE3YWU4N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1No
YXJlZFdvcmtlck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9T
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDI5ICsyNSwxMiBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIk1lc3NhZ2VQb3J0SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlByb2Nlc3NR
dWFsaWZpZWQuaCIKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFy
ZWRXb3JrZXI7Ci1jbGFzcyBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI7Ci1jbGFzcyBTY3JpcHRC
dWZmZXI7Ci1zdHJ1Y3QgV29ya2VyT3B0aW9uczsKLXVzaW5nIFRyYW5zZmVycmVkTWVzc2FnZVBv
cnQgPSBzdGQ6OnBhaXI8V2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyLCBXZWJDb3JlOjpN
ZXNzYWdlUG9ydElkZW50aWZpZXI+OwotCi11c2luZyBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXJJ
ZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+Owot
Ci1jbGFzcyBTaGFyZWRXb3JrZXJNYW5hZ2VyIHsKLXB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgU2hhcmVkV29ya2VyTWFuYWdlciYgc2luZ2xldG9uKCk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBjb25uZWN0KGNvbnN0IFVSTCYsIFNoYXJlZFdvcmtlciYsIFRyYW5zZmVycmVk
TWVzc2FnZVBvcnQmJiwgV29ya2VyT3B0aW9ucyYmKTsKLQotICAgIHZvaWQgc2NyaXB0TG9hZEZh
aWxlZChTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXImKTsKLSAgICB2b2lkIHNjcmlwdExvYWRlZFN1
Y2Nlc3NmdWxseShTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXImLCBjb25zdCBTY3JpcHRCdWZmZXIm
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgU2hhcmVkV29ya2VyJiwgVHJhbnNmZXJyZWRNZXNz
YWdlUG9ydCYmKTsKLQotcHJpdmF0ZToKLSAgICBIYXNoTWFwPFNoYXJlZFdvcmtlclNjcmlwdExv
YWRlcklkZW50aWZpZXIsIFVuaXF1ZVJlZjxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+PiBtX2xv
YWRlcnM7Ci19OworZW51bSBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyVHlwZSB7IH07Cit1
c2luZyBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyID0gUHJvY2Vzc1F1YWxpZmllZDxPYmpl
Y3RJZGVudGlmaWVyPFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXJUeXBlPj47CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IDMxMWViZDYwNzhiYy4u
ZWEyZTA0OGM3NjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9T
aGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksMjMgKzI5LDI2IEBACiAjaW5j
bHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
IgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlck1hbmFn
ZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJGZXRjaFJlc3VsdC5oIgogI2luY2x1ZGUgIldvcmtlclJ1
bkxvb3AuaCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRMb2FkZXIuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OlNoYXJlZFdvcmtlclNjcmlwdExv
YWRlcihjb25zdCBVUkwmIHVybCwgU2hhcmVkV29ya2VyJiB3b3JrZXIsIFRyYW5zZmVycmVkTWVz
c2FnZVBvcnQmJiBwb3J0LCBXb3JrZXJPcHRpb25zJiYgb3B0aW9ucykKLSAgICA6IG1faWRlbnRp
ZmllcihTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQotICAg
ICwgbV9vcHRpb25zKFdURk1vdmUob3B0aW9ucykpCitTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6
OlNoYXJlZFdvcmtlclNjcmlwdExvYWRlcihVUkwmJiB1cmwsIFNoYXJlZFdvcmtlciYgd29ya2Vy
LCBXb3JrZXJPcHRpb25zJiYgb3B0aW9ucykKKyAgICA6IG1fb3B0aW9ucyhXVEZNb3ZlKG9wdGlv
bnMpKQogICAgICwgbV93b3JrZXIod29ya2VyKQotICAgICwgbV9wb3J0KFdURk1vdmUocG9ydCkp
CiAgICAgLCBtX2xvYWRlcihXb3JrZXJTY3JpcHRMb2FkZXI6OmNyZWF0ZSgpKQotICAgICwgbV9w
ZW5kaW5nQWN0aXZpdHkod29ya2VyLm1ha2VQZW5kaW5nQWN0aXZpdHkod29ya2VyKSkKLSAgICAs
IG1fdXJsKHVybCkKKyAgICAsIG1fdXJsKFdURk1vdmUodXJsKSkKIHsKLSAgICBtX3dvcmtlci0+
c2V0SXNMb2FkaW5nKHRydWUpOwotICAgIG1fbG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoKndv
cmtlci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFJlc291cmNlUmVxdWVzdCh1cmwpLCB3b3Jr
ZXIud29ya2VyRmV0Y2hPcHRpb25zKG9wdGlvbnMsIEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246
OlNoYXJlZHdvcmtlciksIENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50OjpFbmZvcmNl
V29ya2VyU3JjRGlyZWN0aXZlLCBTZXJ2aWNlV29ya2Vyc01vZGU6OkFsbCwgKnRoaXMsIFdvcmtl
clJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOworfQorCit2b2lkIFNoYXJlZFdvcmtlclNjcmlwdExv
YWRlcjo6bG9hZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdvcmtlckZldGNoUmVzdWx0
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKCFtX2NvbXBsZXRpb25IYW5k
bGVyKTsKKyAgICBtX2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cik7CisKKyAgICBtX2xvYWRlci0+bG9hZEFzeW5jaHJvbm91c2x5KCptX3dvcmtlci0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCBSZXNvdXJjZVJlcXVlc3QobV91cmwpLCBtX3dvcmtlci0+d29y
a2VyRmV0Y2hPcHRpb25zKG1fb3B0aW9ucywgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2hh
cmVkd29ya2VyKSwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQ6OkVuZm9yY2VXb3Jr
ZXJTcmNEaXJlY3RpdmUsIFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsLCAqdGhpcywgV29ya2VyUnVu
TG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiB9CiAKIHZvaWQgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVy
OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQpAQCAtNTUsMTYgKzU4LDEyIEBAIHZvaWQgU2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyIGlkZW50CiAKIHZvaWQgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpub3RpZnlGaW5p
c2hlZCgpCiB7Ci0gICAgbV93b3JrZXItPnNldElzTG9hZGluZyhmYWxzZSk7CisgICAgaWYgKG1f
bG9hZGVyLT5mYWlsZWQoKSkKKyAgICAgICAgcmV0dXJuIG1fY29tcGxldGlvbkhhbmRsZXIod29y
a2VyRmV0Y2hFcnJvcihtX2xvYWRlci0+ZXJyb3IoKSkpOwogCi0gICAgYXV0byogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCA9IG1fd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAg
aWYgKG1fbG9hZGVyLT5mYWlsZWQoKSB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgewotICAg
ICAgICBtX3dvcmtlci0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5l
cnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVz
KSk7Ci0gICAgICAgIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNpbmdsZXRvbigpLnNjcmlwdExvYWRG
YWlsZWQoKnRoaXMpOyAvLyBkZWxldGVzIHRoaXMuCi0gICAgfSBlbHNlIHsKKyAgICBpZiAoYXV0
byogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IG1fd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQo
KnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG1fbG9hZGVyLT5pZGVudGlmaWVyKCksIG1fbG9hZGVy
LT5zY3JpcHQoKS50b1N0cmluZygpKTsKLSAgICAgICAgU2hhcmVkV29ya2VyTWFuYWdlcjo6c2lu
Z2xldG9uKCkuc2NyaXB0TG9hZGVkU3VjY2Vzc2Z1bGx5KCp0aGlzLCBtX2xvYWRlci0+c2NyaXB0
KCksICptX3dvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX3dvcmtlci5nZXQoKSwg
c3RkOjpleGNoYW5nZShtX3BvcnQsIHsgfSkpOyAvLyBkZWxldGVzIHRoaXMuCi0gICAgfQorICAg
IG1fY29tcGxldGlvbkhhbmRsZXIoeyBtX2xvYWRlci0+c2NyaXB0KCksIG1fbG9hZGVyLT5jZXJ0
aWZpY2F0ZUluZm8oKSwgbV9sb2FkZXItPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLCBtX2xvYWRl
ci0+Y3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSgpLCBtX2xvYWRlci0+cmVmZXJyZXJQb2xpY3ko
KSwgeyB9IH0pOyAvLyBkZWxldGVzIHRoaXMuCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNj
cmlwdExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyLmgKaW5kZXggYWIzMDlhMWNlZmI2Li5lYjBiNzE0NWJmYTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlw
dExvYWRlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJBY3Rp
dmVET01PYmplY3QuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydElkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3Bv
bnNlLmgiCkBAIC0zOCwzMiArMzcsMjggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBT
aGFyZWRXb3JrZXI7CiBjbGFzcyBXb3JrZXJTY3JpcHRMb2FkZXI7Ci0KLWNsYXNzIFNoYXJlZFdv
cmtlclNjcmlwdExvYWRlcjsKLQotdXNpbmcgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCA9IHN0ZDo6
cGFpcjxXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
SWRlbnRpZmllcj47CitzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7CiAKIGNsYXNzIFNoYXJlZFdv
cmtlclNjcmlwdExvYWRlciA6IHByaXZhdGUgV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50IHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXIoY29uc3QgVVJMJiwgU2hhcmVkV29ya2VyJiwgVHJhbnNmZXJyZWRNZXNzYWdlUG9y
dCYmLCBXb3JrZXJPcHRpb25zJiYpOworICAgIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcihVUkwm
JiwgU2hhcmVkV29ya2VyJiwgV29ya2VyT3B0aW9ucyYmKTsKKworICAgIHZvaWQgbG9hZChDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdvcmtlckZldGNoUmVzdWx0Jik+JiYpOwogCi0gICAg
U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVy
biBtX3VybDsgfQogICAgIFNoYXJlZFdvcmtlciYgd29ya2VyKCkgeyByZXR1cm4gbV93b3JrZXIu
Z2V0KCk7IH0KLSAgICBjb25zdCBXb3JrZXJPcHRpb25zJiBvcHRpb25zKCkgeyByZXR1cm4gbV9v
cHRpb25zOyB9CisgICAgY29uc3QgV29ya2VyT3B0aW9ucyYgb3B0aW9ucygpIGNvbnN0IHsgcmV0
dXJuIG1fb3B0aW9uczsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFs
OwogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoKSBmaW5hbDsKIAotICAgIGNvbnN0IFNoYXJlZFdv
cmtlclNjcmlwdExvYWRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIGNvbnN0IFdvcmtl
ck9wdGlvbnMgbV9vcHRpb25zOwogICAgIGNvbnN0IFJlZjxTaGFyZWRXb3JrZXI+IG1fd29ya2Vy
OwotICAgIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQgbV9wb3J0OwogICAgIGNvbnN0IFJlZjxXb3Jr
ZXJTY3JpcHRMb2FkZXI+IG1fbG9hZGVyOwotICAgIGNvbnN0IFJlZjxBY3RpdmVET01PYmplY3Q6
OlBlbmRpbmdBY3Rpdml0eTxTaGFyZWRXb3JrZXI+PiBtX3BlbmRpbmdBY3Rpdml0eTsKICAgICBj
b25zdCBVUkwgbV91cmw7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXb3JrZXJG
ZXRjaFJlc3VsdCYpPiBtX2NvbXBsZXRpb25IYW5kbGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4
dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjA3YTkwZDk4MDUxMgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgiCisK
KyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkUHJveHku
aCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlciYgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyPiBzaGFyZWRNYW5hZ2VyOworICAgIHJldHVybiBzaGFyZWRNYW5hZ2Vy
OworfQorCitTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXI6OnNoYXJlZFdvcmtlcihTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50
aWZpZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd29ya2VyTWFwLmdldChzaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c3RvcFNo
YXJlZFdvcmtlcihTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIp
Cit7CisgICAgYXV0byB3b3JrZXIgPSBtX3dvcmtlck1hcC50YWtlKHNoYXJlZFdvcmtlcklkZW50
aWZpZXIpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyOjpzdG9wU2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBS
SXU2NCAiLCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCksIHdv
cmtlci5nZXQoKSk7CisgICAgaWYgKCF3b3JrZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHdv
cmtlci0+c2V0QXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCgpOworCisgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBiZSBhYmxlIHRvIGRlYWwgd2l0aCB0aGUgdGhyZWFkIGJlaW5nIHVucmVzcG9uc2l2
ZSBoZXJlLgorCisgICAgYXV0byYgdGhyZWFkID0gd29ya2VyLT50aHJlYWQoKTsKKyAgICB0aHJl
YWQuc3RvcChbd29ya2VyID0gV1RGTW92ZSh3b3JrZXIpXSgpIG11dGFibGUgeworICAgICAgICAv
LyBTcGluIHRoZSBydW5sb29wIGJlZm9yZSByZWxlYXNpbmcgdGhlIHNoYXJlZCB3b3JrZXIgdGhy
ZWFkIHByb3h5LCBhcyB0aGVyZSB3b3VsZCBvdGhlcndpc2UgYmUKKyAgICAgICAgLy8gYSByYWNl
IHRvd2FyZHMgaXRzIGRlc3RydWN0aW9uLgorICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3b3Jr
ZXIgPSBXVEZNb3ZlKHdvcmtlcildIHsgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXI6OnN0b3BBbGxTaGFyZWRXb3JrZXJzKCkKK3sKKyAgICB3aGlsZSAo
IW1fd29ya2VyTWFwLmlzRW1wdHkoKSkKKyAgICAgICAgc3RvcFNoYXJlZFdvcmtlcihtX3dvcmtl
ck1hcC5iZWdpbigpLT5rZXkpOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
OjpzZXRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24p
Cit7CisgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24gfHwgbV9jb25uZWN0aW9uLT5pc0Nsb3NlZCgp
KTsKKyAgICBtX2Nvbm5lY3Rpb24gPSBXVEZNb3ZlKGNvbm5lY3Rpb24pOworfQorCithdXRvIFNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpjb25uZWN0aW9uKCkgY29uc3QgLT4gQ29ubmVjdGlv
bioKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOworfQorCit2b2lkIFNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyOjpyZWdpc3RlclNoYXJlZFdvcmtlclRocmVhZChSZWY8U2hhcmVk
V29ya2VyVGhyZWFkUHJveHk+JiYgcHJveHkpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlcjo6cmVnaXN0ZXJTaGFyZWRXb3JrZXJUaHJlYWQ6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9
JSIgUFJJdTY0LCBwcm94eS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworCisgICAgYXV0byBy
ZXN1bHQgPSBtX3dvcmtlck1hcC5hZGQocHJveHktPmlkZW50aWZpZXIoKSwgcHJveHkuY29weVJl
ZigpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworCisg
ICAgcHJveHktPnRocmVhZCgpLnN0YXJ0KFtdKGNvbnN0IFN0cmluZyYgLypleGNlcHRpb25NZXNz
YWdlKi8pIHsgfSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNvbm5l
Y3Rpb246OnBvc3RDb25uZWN0RXZlbnQoU2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgdHJhbnNmZXJyZWRQb3J0LCBT
dHJpbmcmJiBzb3VyY2VPcmlnaW4pCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICBhdXRvKiBwcm94eSA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5z
aGFyZWRXb3JrZXIoc2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0coU2hh
cmVkV29ya2VyLCAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb246OnBvc3RD
b25uZWN0RXZlbnQ6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHByb3h5PSVw
Iiwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpLCBwcm94eSk7CisgICAgaWYgKCFw
cm94eSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJveHktPnRocmVhZCgpLnJ1bkxvb3AoKS5w
b3N0VGFzayhbdHJhbnNmZXJyZWRQb3J0ID0gV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBzb3Vy
Y2VPcmlnaW4gPSBXVEZNb3ZlKHNvdXJjZU9yaWdpbikuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKCFpc01haW5U
aHJlYWQoKSk7CisgICAgICAgIGRvd25jYXN0PFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlPihzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KS5wb3N0Q29ubmVjdEV2ZW50KFdURk1vdmUodHJhbnNmZXJyZWRQ
b3J0KSwgV1RGTW92ZShzb3VyY2VPcmlnaW4pKTsKKyAgICB9KTsKK30KKwordm9pZCBTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6dGVybWluYXRlU2hhcmVkV29ya2VyKFNo
YXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uOjp0ZXJtaW5hdGVTaGFyZWRXb3JrZXI6
IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVy
LnRvVUludDY0KCkpOworICAgIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24o
KS5zdG9wU2hhcmVkV29ya2VyKHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zMzgyNTI4OTM3M2UKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiU2hhcmVkV29ya2VySWRlbnRpZmllci5oIgorI2luY2x1ZGUg
IlRyYW5zZmVycmVkTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OworCitj
bGFzcyBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlciB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyJiBzaW5nbGV0b24oKTsKKwor
ICAgIFNoYXJlZFdvcmtlclRocmVhZFByb3h5KiBzaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRl
bnRpZmllcikgY29uc3Q7CisgICAgdm9pZCBzdG9wU2hhcmVkV29ya2VyKFNoYXJlZFdvcmtlcklk
ZW50aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcEFsbFNoYXJlZFdvcmtlcnMo
KTsKKworICAgIGNsYXNzIENvbm5lY3Rpb24geworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkNvbm5lY3Rpb24oKSB7IH0KKyAg
ICAgICAgdmlydHVhbCB2b2lkIGVzdGFibGlzaENvbm5lY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3Jr
ZXJPYmplY3QoU2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCkgPSAwOworICAgICAgICBib29sIGlzQ2xvc2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Ns
b3NlZDsgfQorCisgICAgcHJvdGVjdGVkOgorICAgICAgICB2b2lkIHNldEFzQ2xvc2VkKCkgeyBt
X2lzQ2xvc2VkID0gdHJ1ZTsgfQorCisgICAgICAgIC8vIElQQyBtZXNzYWdlIGhhbmRsZXJzLgor
ICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RDb25uZWN0RXZlbnQoU2hhcmVkV29ya2Vy
SWRlbnRpZmllciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBTdHJpbmcmJiBzb3VyY2VPcmln
aW4pOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRlcm1pbmF0ZVNoYXJlZFdvcmtlcihT
aGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIGJvb2wgbV9p
c0Nsb3NlZCB7IGZhbHNlIH07CisgICAgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
Q29ubmVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVjdGlvbj4mJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgQ29ubmVjdGlvbiogY29ubmVjdGlvbigpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZWdpc3RlclNoYXJlZFdvcmtlclRocmVhZChSZWY8U2hhcmVkV29ya2VyVGhyZWFk
UHJveHk+JiYpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcj47CisKKyAgICBTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlcigpID0gZGVmYXVsdDsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiBtX2Nv
bm5lY3Rpb247CisgICAgSGFzaE1hcDxTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2hhcmVk
V29ya2VyVGhyZWFkUHJveHk+PiBtX3dvcmtlck1hcDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQv
U2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAKaW5kZXggOWJkOTc4M2Q3YTdl
Li4xZWRmNzM0ZmYyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDk0
ICsyOCw3MiBAQAogCiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKICNpbmNsdWRl
ICJFcnJvckV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNp
bmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgorI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5Lmgi
CiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNp
bmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVk
ZSAiUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlNo
YXJlZFdvcmtlci5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJTaGFyZWRXb3Jr
ZXJUaHJlYWQuaCIKKyNpbmNsdWRlICJXb3JrZXJGZXRjaFJlc3VsdC5oIgorI2luY2x1ZGUgIldv
cmtlclRocmVhZC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXJzRmFjdG9y
eS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eShTaGFyZWRXb3JrZXImIHNoYXJlZFdvcmtlcikKLSAgICA6
IG1fc2hhcmVkV29ya2VyKHNoYXJlZFdvcmtlcikKLSAgICAsIG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dChzaGFyZWRXb3JrZXIuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICwgbV9pZGVu
dGlmaWVyRm9ySW5zcGVjdG9yKHNoYXJlZFdvcmtlci5pZGVudGlmaWVyRm9ySW5zcGVjdG9yKCkp
CitzdGF0aWMgSGFzaFNldDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSo+JiBhbGxTaGFyZWRXb3Jr
ZXJUaHJlYWRQcm94aWVzKCkKIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eSo+PiBzZXQ7CisgICAgcmV0dXJuIHNldDsKIH0KIAotdm9p
ZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6c3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBV
UkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCwgYm9vbCBpc09ubGluZSwgY29uc3QgU2NyaXB0QnVmZmVyJiBzY3JpcHRCdWZmZXIsIGNvbnN0
IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1
cml0eVBvbGljeSwgY29uc3QgQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSYgY3Jvc3NPcmlnaW5F
bWJlZGRlclBvbGljeSwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBSZWZlcnJlclBvbGljeSBy
ZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RDcmVkZW50
aWFscyBjcmVkZW50aWFscywgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKQorc3RhdGlj
IFdvcmtlclBhcmFtZXRlcnMgZ2VuZXJhdGVXb3JrZXJQYXJhbWV0ZXJzKGNvbnN0IFVSTCYgc2Ny
aXB0VVJMLCBjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYgd29ya2VyRmV0Y2hSZXN1bHQsIFdvcmtl
ck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgRG9jdW1l
bnQmIGRvY3VtZW50KQogewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGF1dG8gcGFyYW1ldGVycyA9IFdvcmtlclBhcmFtZXRlcnMgeworICAgIHJl
dHVybiBXb3JrZXJQYXJhbWV0ZXJzIHsKICAgICAgICAgc2NyaXB0VVJMLAotICAgICAgICBuYW1l
LAotICAgICAgICBtX2lkZW50aWZpZXJGb3JJbnNwZWN0b3IsCisgICAgICAgIHdvcmtlck9wdGlv
bnMubmFtZSwKKyAgICAgICAgInNoYXJlZHdvcmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVy
c0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKSwKICAgICAgICAgdXNlckFnZW50LAotICAgICAg
ICBpc09ubGluZSwKLSAgICAgICAgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJz
LAotICAgICAgICBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksCi0g
ICAgICAgIGNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ksCi0gICAgICAgIHRpbWVPcmlnaW4sCi0g
ICAgICAgIHJlZmVycmVyUG9saWN5LAotICAgICAgICB3b3JrZXJUeXBlLAotICAgICAgICBjcmVk
ZW50aWFscywKLSAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZXR0aW5nc1ZhbHVl
cygpCisgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5pc09u
TGluZSgpLAorICAgICAgICB3b3JrZXJGZXRjaFJlc3VsdC5jb250ZW50U2VjdXJpdHlQb2xpY3ks
CisgICAgICAgIGZhbHNlLAorICAgICAgICB3b3JrZXJGZXRjaFJlc3VsdC5jcm9zc09yaWdpbkVt
YmVkZGVyUG9saWN5LAorICAgICAgICBNb25vdG9uaWNUaW1lOjpub3coKSwKKyAgICAgICAgcGFy
c2VSZWZlcnJlclBvbGljeSh3b3JrZXJGZXRjaFJlc3VsdC5yZWZlcnJlclBvbGljeSwgUmVmZXJy
ZXJQb2xpY3lTb3VyY2U6OkhUVFBIZWFkZXIpLnZhbHVlX29yKFJlZmVycmVyUG9saWN5OjpFbXB0
eVN0cmluZyksCisgICAgICAgIHdvcmtlck9wdGlvbnMudHlwZSwKKyAgICAgICAgd29ya2VyT3B0
aW9ucy5jcmVkZW50aWFscywKKyAgICAgICAgZG9jdW1lbnQuc2V0dGluZ3NWYWx1ZXMoKQogICAg
IH07Ci0KLSAgICBpZiAoIW1fd29ya2VyVGhyZWFkKSB7Ci0gICAgICAgIG1fd29ya2VyVGhyZWFk
ID0gU2hhcmVkV29ya2VyVGhyZWFkOjpjcmVhdGUoU2hhcmVkV29ya2VySWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKSwgcGFyYW1ldGVycywgc2NyaXB0QnVmZmVyLCAqdGhpcywgKnRoaXMsICp0aGlzLCBX
b3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT50
b3BPcmlnaW4oKSwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pZGJDb25uZWN0aW9uUHJveHko
KSwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zb2NrZXRQcm92aWRlcigpLCBydW50aW1lRmxh
Z3MpOwotICAgICAgICBtX3dvcmtlclRocmVhZC0+c3RhcnQoKTsKLSAgICB9Ci19Ci0KLXZvaWQg
U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCkKLXsK
LSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2Fz
a2VkVG9UZXJtaW5hdGUgPSB0cnVlOwotICAgIGlmIChtX3dvcmtlclRocmVhZCkKLSAgICAgICAg
bV93b3JrZXJUaHJlYWQtPnN0b3AobnVsbHB0cik7CiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1lc3Nh
Z2VQb3J0cyYmIG1lc3NhZ2UpCitTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6U2hhcmVkV29ya2Vy
VGhyZWFkUHJveHkoVW5pcXVlUmVmPFBhZ2U+JiYgcGFnZSwgU2hhcmVkV29ya2VySWRlbnRpZmll
ciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdp
biwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIFdvcmtlckZldGNoUmVzdWx0JiYgd29ya2VyRmV0Y2hS
ZXN1bHQsIFdvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zLCBjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImIGNhY2hlU3RvcmFnZVByb3ZpZGVyKQorICAgIDog
bV9wYWdlKFdURk1vdmUocGFnZSkpCisgICAgLCBtX2RvY3VtZW50KCptX3BhZ2UtPm1haW5GcmFt
ZSgpLmRvY3VtZW50KCkpCisgICAgLCBtX3dvcmtlclRocmVhZChTaGFyZWRXb3JrZXJUaHJlYWQ6
OmNyZWF0ZShzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMo
c2NyaXB0VVJMLCB3b3JrZXJGZXRjaFJlc3VsdCwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSwgdXNl
ckFnZW50LCBtX2RvY3VtZW50KSwgV1RGTW92ZSh3b3JrZXJGZXRjaFJlc3VsdC5zY3JpcHQpLCAq
dGhpcywgKnRoaXMsICp0aGlzLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgY2xpZW50
T3JpZ2luLnRvcE9yaWdpbi5zZWN1cml0eU9yaWdpbigpLCBtX2RvY3VtZW50LT5pZGJDb25uZWN0
aW9uUHJveHkoKSwgbV9kb2N1bWVudC0+c29ja2V0UHJvdmlkZXIoKSwgSlNDOjpSdW50aW1lRmxh
Z3M6OmNyZWF0ZUFsbEVuYWJsZWQoKSkpCisgICAgLCBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyKGNh
Y2hlU3RvcmFnZVByb3ZpZGVyKQogewotICAgIC8vIEZJWE1FOiBTaGFyZWRXb3JrZXIgZG9lc24n
dCBoYXZlIHBvc3RNZXNzYWdlLCBzbyB0aGlzIG1pZ2h0IG5vdCBiZSBuZWNlc3NhcnkuCi0gICAg
cG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKFttZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKV0o
YXV0byYgc2NyaXB0Q29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIGNvbnRleHQgPSBk
b3duY2FzdDxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0Q29udGV4dCk7Ci0gICAgICAg
IGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhzY3JpcHRDb250ZXh0LCBX
VEZNb3ZlKG1lc3NhZ2UudHJhbnNmZXJyZWRQb3J0cykpOwotICAgICAgICBjb250ZXh0LmRpc3Bh
dGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIG1lc3NhZ2UubWVz
c2FnZS5yZWxlYXNlTm9uTnVsbCgpKSk7Ci0gICAgfSk7Ci19CisgICAgQVNTRVJUKCFhbGxTaGFy
ZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkuY29udGFpbnModGhpcykpOworICAgIGFsbFNoYXJlZFdv
cmtlclRocmVhZFByb3hpZXMoKS5hZGQodGhpcyk7CiAKLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFk
UHJveHk6OnBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShGdW5jdGlvbjx2b2lkKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKT4mJiB0YXNrKQotewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUp
Ci0gICAgICAgIHJldHVybjsKLSAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNr
KFdURk1vdmUodGFzaykpOwotfQotCi1ib29sIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpoYXNQ
ZW5kaW5nQWN0aXZpdHkoKSBjb25zdAotewotICAgIHJldHVybiBtX2hhc1BlbmRpbmdBY3Rpdml0
eSAmJiAhbV9hc2tlZFRvVGVybWluYXRlOworICAgIHN0YXRpYyBib29sIGFkZGVkTGlzdGVuZXI7
CisgICAgaWYgKCFhZGRlZExpc3RlbmVyKSB7CisgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5sb2FkZXJTdHJhdGVneSgpLT5hZGRPbmxpbmVTdGF0ZUNoYW5nZUxpc3RlbmVyKCZuZXR3b3Jr
U3RhdGVDaGFuZ2VkKTsKKyAgICAgICAgYWRkZWRMaXN0ZW5lciA9IHRydWU7CisgICAgfQogfQog
Ci12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojp3b3JrZXJPYmplY3REZXN0cm95ZWQoKQor
U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6On5TaGFyZWRXb3JrZXJUaHJlYWRQcm94eSgpCiB7Ci0g
ICAgbV9zaGFyZWRXb3JrZXIgPSBudWxscHRyOwotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+cG9zdFRhc2soW3RoaXNdIChhdXRvJikgewotICAgICAgICBtX21heUJlRGVzdHJveWVkID0g
dHJ1ZTsKLSAgICAgICAgaWYgKG1fd29ya2VyVGhyZWFkKQotICAgICAgICAgICAgdGVybWluYXRl
V29ya2VyR2xvYmFsU2NvcGUoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgd29ya2VyR2xv
YmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpOwotICAgIH0pOworICAgIEFTU0VSVChhbGxTaGFy
ZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkuY29udGFpbnModGhpcykpOworICAgIGFsbFNoYXJlZFdv
cmtlclRocmVhZFByb3hpZXMoKS5yZW1vdmUodGhpcyk7CiB9CiAKIFNoYXJlZFdvcmtlcklkZW50
aWZpZXIgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OmlkZW50aWZpZXIoKSBjb25zdApAQCAtMTI1
LDg4ICsxMDMsNTAgQEAgU2hhcmVkV29ya2VySWRlbnRpZmllciBTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eTo6aWRlbnRpZmllcigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6
Om5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25saW5lKQogewotICAgIGlmIChtX2Fz
a2VkVG9UZXJtaW5hdGUpCisgICAgaWYgKG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX3dvcmtlclRocmVhZCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhbaXNPbmxpbmVdIChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgcG9zdFRhc2tGb3JNb2RlVG9X
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbaXNPbmxpbmVdIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgIGF1dG8mIGdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29y
a2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpOwogICAgICAgICBnbG9iYWxTY29wZS5zZXRJc09ubGlu
ZShpc09ubGluZSk7Ci0gICAgICAgIGdsb2JhbFNjb3BlLmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNy
ZWF0ZShpc09ubGluZSA/IGV2ZW50TmFtZXMoKS5vbmxpbmVFdmVudCA6IGV2ZW50TmFtZXMoKS5v
ZmZsaW5lRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpO
bykpOwotICAgIH0pOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpzdXNwZW5k
Rm9yQmFja0ZvcndhcmRDYWNoZSgpCi17Ci0KLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eTo6cmVzdW1lRm9yQmFja0ZvcndhcmRDYWNoZSgpCi17Ci0KKyAgICAgICAgZ2xvYmFsU2Nv
cGUuZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW2ds
b2JhbFNjb3BlID0gUmVmIHsgZ2xvYmFsU2NvcGUgfSwgaXNPbmxpbmVdIHsKKyAgICAgICAgICAg
IGdsb2JhbFNjb3BlLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoaXNPbmxpbmUgPyBldmVu
dE5hbWVzKCkub25saW5lRXZlbnQgOiBldmVudE5hbWVzKCkub2ZmbGluZUV2ZW50LCBFdmVudDo6
Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKKyAgICAgICAgfSk7Cisg
ICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiB9CiAKIHZvaWQgU2hhcmVkV29y
a2VyVGhyZWFkUHJveHk6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMKQogewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRh
c2soW3RoaXMsIGVycm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZS5pc29sYXRlZENvcHkoKSwgc291
cmNlVVJMID0gc291cmNlVVJMLmlzb2xhdGVkQ29weSgpLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXJdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewotICAgICAgICBpZiAoIW1fc2hhcmVkV29y
a2VyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIC8vIFdlIGRvbid0IGJvdGhlciBj
aGVja2luZyB0aGUgYXNrZWRUb1Rlcm1pbmF0ZSgpIGZsYWcgaGVyZSwgYmVjYXVzZSBleGNlcHRp
b25zIHNob3VsZCAqYWx3YXlzKiBiZSByZXBvcnRlZCBldmVuIGlmIHRoZSB0aHJlYWQgaXMgdGVy
bWluYXRlZC4KLSAgICAgICAgLy8gVGhpcyBpcyBpbnRlbnRpb25hbGx5IGRpZmZlcmVudCB0aGFu
IHRoZSBiZWhhdmlvciBpbiBNZXNzYWdlV29ya2VyVGFzaywgYmVjYXVzZSB0ZXJtaW5hdGVkIHdv
cmtlcnMgbm8gbG9uZ2VyIGRlbGl2ZXIgbWVzc2FnZXMgKHNlY3Rpb24gNC42IG9mIHRoZSBXZWJX
b3JrZXIgc3BlYyksIGJ1dCB0aGV5IGRvIHJlcG9ydCBleGNlcHRpb25zLgotICAgICAgICBBY3Rp
dmVET01PYmplY3Q6OnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqbV9zaGFyZWRXb3JrZXIsIFRh
c2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgRXJyb3JFdmVudDo6Y3JlYXRlKGVycm9yTWVzc2Fn
ZSwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHsgfSkpOwotICAgIH0pOwot
fQotCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojp3b3JrZXJHbG9iYWxTY29wZURlc3Ry
b3llZCgpCi17Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpc10g
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0gICAgICAgIHdvcmtlckdsb2JhbFNjb3BlRGVz
dHJveWVkSW50ZXJuYWwoKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYm
KQotewotCi19Ci0KLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OmNvbmZpcm1NZXNzYWdl
RnJvbVdvcmtlck9iamVjdChib29sKQotewotfQotCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFBy
b3h5OjpyZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpCi17Ci0g
ICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpcywgaGFzUGVuZGluZ0Fj
dGl2aXR5XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKLSAgICAgICAgbV9oYXNQZW5kaW5n
QWN0aXZpdHkgPSBoYXNQZW5kaW5nQWN0aXZpdHk7CisgICAgY2FsbE9uTWFpblRocmVhZChbc2hh
cmVkV29ya2VySWRlbnRpZmllciA9IG1fd29ya2VyVGhyZWFkLT5pZGVudGlmaWVyKCksIGVycm9y
TWVzc2FnZSA9IGVycm9yTWVzc2FnZS5pc29sYXRlZENvcHkoKSwgbGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAg
aWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkuY29ubmVjdGlvbigpKQorICAgICAgICAgICAgY29ubmVjdGlvbi0+cG9zdEV4Y2VwdGlv
blRvV29ya2VyT2JqZWN0KHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGVycm9yTWVzc2FnZSwgbGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwpOwogICAgIH0pOwogfQogCiBSZWZQdHI8
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZUNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24oKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0g
ICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCk7Ci0gICAgcmV0dXJuIGRvY3VtZW50LnBhZ2UoKS0+Y2FjaGVTdG9yYWdlUHJvdmlk
ZXIoKS5jcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCk7CisgICAgaWYgKCFtX2NhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24pCisgICAgICAgIG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbiA9IG1fY2Fj
aGVTdG9yYWdlUHJvdmlkZXIuY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpOworICAgIHJl
dHVybiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247CiB9CiAKIFJlZlB0cjxSVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uPiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRl
UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKLSAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pigq
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICBpZiAoIWRvY3VtZW50LnBhZ2UoKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGRvY3VtZW50LnBhZ2UoKS0+bGliV2Vi
UlRDUHJvdmlkZXIoKS5jcmVhdGVSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9u
KCk7CisgICAgcmV0dXJuIG1fcGFnZS0+bGliV2ViUlRDUHJvdmlkZXIoKS5jcmVhdGVSVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCk7CiB9CiAKIHZvaWQgU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHk6OnBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
ayYmIHRhc2spCiB7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhXVEZN
b3ZlKHRhc2spKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0YXNrID0gV1RGTW92ZSh0YXNrKSwg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgeworICAgICAgICB0YXNr
LnBlcmZvcm1UYXNrKHByb3RlY3RlZFRoaXMtPm1fZG9jdW1lbnQuZ2V0KCkpOworICAgIH0pOwog
fQogCiBib29sIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNr
LCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKKyAg
ICBpZiAobV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShXVEZNb3Zl
KHRhc2spLCBtb2RlKTsKQEAgLTIyMywxNiArMTYzLDEwIEBAIHZvaWQgU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHk6OnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNwZWN0b3IoYm9vbCkK
IAogfQogCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojp3b3JrZXJHbG9iYWxTY29wZURl
c3Ryb3llZEludGVybmFsKCkKK3ZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Om5ldHdvcmtT
dGF0ZUNoYW5nZWQoYm9vbCBpc09uTGluZSkKIHsKLSAgICAvLyBUaGlzIGlzIGFsd2F5cyB0aGUg
bGFzdCB0YXNrIHRvIGJlIHBlcmZvcm1lZCwgc28gdGhlIHByb3h5IGlzIG5vdCBuZWVkZWQgZm9y
IGNvbW11bmljYXRpb24KLSAgICAvLyBpbiBlaXRoZXIgc2lkZSBhbnkgbW9yZS4gSG93ZXZlciwg
dGhlIFdvcmtlciBvYmplY3QgbWF5IHN0aWxsIGV4aXN0LCBhbmQgaXQgYXNzdW1lcyB0aGF0IHRo
ZSBwcm94eSBleGlzdHMsIHRvby4KLSAgICBtX2Fza2VkVG9UZXJtaW5hdGUgPSB0cnVlOwotICAg
IG1fd29ya2VyVGhyZWFkID0gbnVsbHB0cjsKLQotICAgIC8vIFRoaXMgYmFsYW5jZXMgdGhlIG9y
aWdpbmFsIHJlZiBpbiBjb25zdHJ1Y3Rpb24uCi0gICAgaWYgKG1fbWF5QmVEZXN0cm95ZWQpCi0g
ICAgICAgIGRlcmVmKCk7CisgICAgZm9yIChhdXRvKiBwcm94eSA6IGFsbFNoYXJlZFdvcmtlclRo
cmVhZFByb3hpZXMoKSkKKyAgICAgICAgcHJveHktPm5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShp
c09uTGluZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHku
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkuaAppbmRleCA0ZTkyZTQ1NjE3MWMuLjMzNjQyNDBhYmJiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVk
V29ya2VyVGhyZWFkUHJveHkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpbmNsdWRlICJTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV29ya2VyRGVidWdnZXJQcm94eS5oIgotI2luY2x1
ZGUgIldvcmtlckdsb2JhbFNjb3BlUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJMb2FkZXJQcm94
eS5oIgogI2luY2x1ZGUgIldvcmtlck9iamVjdFByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyT3B0
aW9ucy5oIgpAQCAtMzUsNTAgKzM0LDU0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgQ2FjaGVTdG9yYWdlUHJvdmlkZXI7CitjbGFzcyBQYWdlOwogY2xhc3MgU2hhcmVkV29ya2Vy
OwogY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkOwogCi1jbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eT4sIHB1YmxpYyBXb3JrZXJHbG9iYWxTY29wZVByb3h5LCBwdWJsaWMgV29ya2VyT2Jq
ZWN0UHJveHksIHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94eSwgcHVibGljIFdvcmtlckRlYnVnZ2Vy
UHJveHkgeworc3RydWN0IENsaWVudE9yaWdpbjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsK
KworY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8U2hhcmVkV29ya2VyVGhyZWFkUHJveHk+LCBwdWJsaWMgV29ya2VyT2JqZWN0
UHJveHksIHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94eSwgcHVibGljIFdvcmtlckRlYnVnZ2VyUHJv
eHkgewogcHVibGljOgotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBTaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eSYgY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKSB7IHJldHVybiAqbmV3
IFNoYXJlZFdvcmtlclRocmVhZFByb3h5KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7IH0K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmPFNoYXJlZFdvcmtlclRo
cmVhZFByb3h5PiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2hhcmVkV29ya2VyVGhyZWFkUHJveHkoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7IH0K
KyAgICBXRUJDT1JFX0VYUE9SVCB+U2hhcmVkV29ya2VyVGhyZWFkUHJveHkoKTsKIAogICAgIFNo
YXJlZFdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0OwotICAgIFNoYXJlZFdvcmtl
clRocmVhZCogdGhyZWFkKCkgeyByZXR1cm4gbV93b3JrZXJUaHJlYWQuZ2V0KCk7IH0KKyAgICBT
aGFyZWRXb3JrZXJUaHJlYWQmIHRocmVhZCgpIHsgcmV0dXJuIG1fd29ya2VyVGhyZWFkOyB9CiAK
LSAgICB2b2lkIHN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUs
IGNvbnN0IFNjcmlwdEJ1ZmZlciYgc291cmNlQ29kZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2Vj
dXJpdHlQb2xpY3ksIGNvbnN0IENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kmLCBNb25vdG9uaWNU
aW1lIHRpbWVPcmlnaW4sIFJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RD
cmVkZW50aWFscywgSlNDOjpSdW50aW1lRmxhZ3MpIGZpbmFsOwotICAgIHZvaWQgd29ya2VyT2Jq
ZWN0RGVzdHJveWVkKCkgZmluYWw7Ci0gICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25z
dCBmaW5hbDsKLSAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCkgZmluYWw7Cisg
ICAgYm9vbCBpc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1Rl
cm1pbmF0aW5nT3JUZXJtaW5hdGVkOyB9CisgICAgdm9pZCBzZXRBc1Rlcm1pbmF0aW5nT3JUZXJt
aW5hdGVkKCkgeyBtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQgPSB0cnVlOyB9CiAKIHByaXZh
dGU6Ci0gICAgZXhwbGljaXQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkoU2hhcmVkV29ya2VyJik7
Ci0KLSAgICB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShVbmlxdWVSZWY8UGFnZT4mJiwg
U2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgVVJMJiBz
Y3JpcHRVUkwsIFdvcmtlckZldGNoUmVzdWx0JiYsIFdvcmtlck9wdGlvbnMmJiwgY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQsIENhY2hlU3RvcmFnZVByb3ZpZGVyJik7CiAKLSAgICB2b2lkIHBvc3RN
ZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKSBmaW5h
bDsKLSAgICB2b2lkIHBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShGdW5jdGlvbjx2b2lkKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJikgZmluYWw7Ci0gICAgdm9pZCBub3RpZnlOZXR3b3Jr
U3RhdGVDaGFuZ2UoYm9vbCBpc09ubGluZSkgZmluYWw7Ci0gICAgdm9pZCBzdXNwZW5kRm9yQmFj
a0ZvcndhcmRDYWNoZSgpIGZpbmFsOwotICAgIHZvaWQgcmVzdW1lRm9yQmFja0ZvcndhcmRDYWNo
ZSgpIGZpbmFsOworICAgIC8vIFdvcmtlck9iamVjdFByb3h5LgogICAgIHZvaWQgcG9zdEV4Y2Vw
dGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpIGZpbmFsOwot
ICAgIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWQoKSBmaW5hbDsKLSAgICB2b2lkIHBv
c3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJikgZmluYWw7
Ci0gICAgdm9pZCBjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCBoYXNQZW5kaW5n
QWN0aXZpdHkpIGZpbmFsOwotICAgIHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wgaGFz
UGVuZGluZ0FjdGl2aXR5KSBmaW5hbDsKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmpl
Y3QoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJikgZmluYWwgeyB9CisgICAgdm9pZCB3b3JrZXJH
bG9iYWxTY29wZURlc3Ryb3llZCgpIGZpbmFsIHsgfQorICAgIHZvaWQgY29uZmlybU1lc3NhZ2VG
cm9tV29ya2VyT2JqZWN0KGJvb2wpIGZpbmFsIHsgfQorICAgIHZvaWQgcmVwb3J0UGVuZGluZ0Fj
dGl2aXR5KGJvb2wpIGZpbmFsIHsgfQorCisgICAgLy8gV29ya2VyTG9hZGVyUHJveHkuCiAgICAg
UmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IGNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rp
b24oKSBmaW5hbDsKICAgICBSZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVj
dGlvbj4gY3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpIGZpbmFs
OwogICAgIHZvaWQgcG9zdFRhc2tUb0xvYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
JiYpIGZpbmFsOwogICAgIGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYsIGNvbnN0IFN0cmluZyYgbW9k
ZSkgZmluYWw7CisKKyAgICAvLyBXb3JrZXJEZWJ1Z2dlclByb3h5LgogICAgIHZvaWQgcG9zdE1l
c3NhZ2VUb0RlYnVnZ2VyKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgc2V0UmVzb3Vy
Y2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3BlY3Rvcihib29sKSBmaW5hbDsKIAotICAgIFdlYWtQ
dHI8U2hhcmVkV29ya2VyPiBtX3NoYXJlZFdvcmtlcjsKLSAgICBSZWZQdHI8U2hhcmVkV29ya2Vy
VGhyZWFkPiBtX3dvcmtlclRocmVhZDsKLSAgICBjb25zdCBSZWZQdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dD4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwotICAgIGNvbnN0IFN0cmluZyBtX2lk
ZW50aWZpZXJGb3JJbnNwZWN0b3I7Ci0gICAgYm9vbCBtX2Fza2VkVG9UZXJtaW5hdGUgeyBmYWxz
ZSB9OwotICAgIGJvb2wgbV9oYXNQZW5kaW5nQWN0aXZpdHkgeyBmYWxzZSB9OwotICAgIGJvb2wg
bV9tYXlCZURlc3Ryb3llZCB7IGZhbHNlIH07CisgICAgc3RhdGljIHZvaWQgbmV0d29ya1N0YXRl
Q2hhbmdlZChib29sIGlzT25MaW5lKTsKKyAgICB2b2lkIG5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5n
ZShib29sIGlzT25saW5lKTsKKworICAgIFVuaXF1ZVJlZjxQYWdlPiBtX3BhZ2U7CisgICAgUmVm
PERvY3VtZW50PiBtX2RvY3VtZW50OworICAgIFJlZjxTaGFyZWRXb3JrZXJUaHJlYWQ+IG1fd29y
a2VyVGhyZWFkOworICAgIENhY2hlU3RvcmFnZVByb3ZpZGVyJiBtX2NhY2hlU3RvcmFnZVByb3Zp
ZGVyOworICAgIFJlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBtX2NhY2hlU3RvcmFnZUNv
bm5lY3Rpb247CisgICAgYm9vbCBtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQgeyBmYWxzZSB9
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggNzU2
ZGE4OGI0NWY3Li4yOWY0Yzc4MTgxODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMjgsNiArMjgs
NyBAQCBzZXQoV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVRfRElSfS9O
ZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zIgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50IgogICAgICIke1dFQktJVF9ESVJ9L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIiCisgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyIgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL1dlYlN0
b3JhZ2UiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvY2FjaGUiCiAgICAgIiR7
V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZSIKQEAgLTIwMiw2ICsyMDMsOSBAQCBz
ZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24KICAgICBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbgogCisgICAgTmV0d29ya1Byb2Nlc3Mv
U2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24KKyAgICBOZXR3b3Jr
UHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbgorCiAgICAgTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldAog
CiAgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbgpA
QCAtMzA1LDYgKzMwOSw4IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKIAogICAgIFdl
YlByb2Nlc3MvU3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFn
ZXIKIAorICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24KKyAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbgogICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24K
ICAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IDRj
NjYyMjBjZjEyMi4uNzIyOWMxYjk4NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC05MSw2ICs5MSw4IEBAICQoUFJPSkVDVF9ESVIpL05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5tZXNz
YWdlcy5pCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3Mv
U2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
KyQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9O
ZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9tYWMvY29t
LmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbgpAQCAtMjE3LDYgKzIxOSw4IEBAICQo
UFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGlt
ZU1lZGlhU291cmNlTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhuUHJvY2Vzc0Nvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0CmluZGV4IGUzYjU1ODQwYWUxZS4uYTg2MzI4MTQ3YjU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTYwNyw2ICs2
MDcsMTggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJT
V1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2Fn
ZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dC9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VS
ZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQv
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdC9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZXMuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VS
ZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQv
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdl
UmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTb2NrZXRDaGFubmVsTWVzc2FnZVJlY2Vp
dmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJT
b2NrZXRDaGFubmVsTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9XZWJTb2NrZXRDaGFubmVsTWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMubWFrZQppbmRleCA3YWQ0OWUzNzM1ZjQuLjM1MWZmYWUwYTU4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTMzLDYgKzEzMyw4IEBAIE1FU1NBR0VfUkVDRUlWRVJT
ID0gXAogCU5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2Fk
VGFzayBcCiAJTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrIFwKIAlOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbiBcCisJTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb24gXAorCU5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIFwKIAlOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU29ja2V0U3RyZWFtIFwKIAlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2VzcyBcCiAJTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyIFwKQEAgLTIyNSw2ICsyMjcsOCBAQCBN
RVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvU3BlZWNoL1NwZWVjaFJl
Y29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIgXAorCVdlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gXAorCVdlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NsaWVudENvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvV2ViUHJvY2VzcyBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGEzNGY3OWJkZTNlMC4uYzdiMTdmZDcwNzg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNjYsNiArNjYsMTEgQEAKICNpbmNsdWRl
ICJXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgiCisj
aW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRT
dG9yYWdlQWNjZXNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVFRQQ29va2llQWNjZXB0UG9saWN5
Lmg+CkBAIC0xMzIsNiArMTM3LDcgQEAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtQcm9jZXNzJiBuZXQKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiAgICAgZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKCk7CiAj
ZW5kaWYKKyAgICBlc3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCk7CiB9CiAK
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoKQpAQCAtMTY2LDYgKzE3Miw3IEBAIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKICAgICB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7CiAjZW5kaWYKKyAgICB1bnJlZ2lz
dGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpoYXNVcGxvYWRTdGF0ZUNoYW5nZWQoYm9vbCBoYXNVcGxvYWQpCkBAIC0y
NzUsNiArMjgyLDE3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvCiAgICAgfQogI2VuZGlmCiAK
KyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAg
ICAgICBpZiAobV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uKQorICAgICAgICAgICAgbV9zaGFyZWRX
b3JrZXJDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJO
YW1lKCkgPT0gTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBpZiAobV9zaGFyZWRXb3JrZXJD
b250ZXh0Q29ubmVjdGlvbikKKyAgICAgICAgICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAgaWYg
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKQogICAgICAgICByZXR1cm4gcGF5
bWVudENvb3JkaW5hdG9yKCkuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7
CkBAIC0zOTgsOSArNDE2LDggQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwotI2Vsc2UK
LSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAjZW5kaWYKKyAgICBtX3NoYXJlZFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKIAogICAgIC8vIFByb3RlY3Qgb3Vyc2VsZiBh
cyB3ZSBtaWdodCBiZSBvdGhlcndpc2UgYmUgZGVsZXRlZCBkdXJpbmcgdGhpcyBmdW5jdGlvbi4K
ICAgICBSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IHByb3RlY3RvcigqdGhpcyk7
CkBAIC00NDEsNiArNDU4LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7CiAjZW5kaWYKKyAgICB1bnJl
Z2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOwogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9S
RU1PVEVfVUkpCiAgICAgbV9wYXltZW50Q29vcmRpbmF0b3IgPSBudWxscHRyOwpAQCAtMTE4Niw2
ICsxMjA0LDYxIEBAIHNpemVfdCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZmluZE5l
dHdvcmtBY3Rpdml0eVRyYWNrZXIoV2ViQ29yZTo6UmVzb3VyCiAgICAgICAgIHJldHVybiBpdGVt
LnJlc291cmNlSUQgPT0gcmVzb3VyY2VJRDsKICAgICB9KTsKIH0KKwordm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rp
b24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBy
ZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0
YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb246Iik7CisgICAgYXV0byogc2Vzc2lv
biA9IG5ldHdvcmtTZXNzaW9uKCk7CisgICAgaWYgKGF1dG8qIHN3U2VydmVyID0gc2Vzc2lvbiA/
IHNlc3Npb24tPnNoYXJlZFdvcmtlclNlcnZlcigpIDogbnVsbHB0cikKKyAgICAgICAgbV9zaGFy
ZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbj4oKnRoaXMsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4p
LCAqc3dTZXJ2ZXIpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKK3ZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb24oKQoreworICAgIGlmIChtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAgIHJl
dHVybjsKKworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOworICAgIGlmICgh
c2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhT
aGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOiIpOwor
CisgICAgYXV0byYgc2VydmVyID0gc2Vzc2lvbi0+ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCk7
CisgICAgYXV0byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uPihtX25ldHdvcmtQcm9jZXNzLCBzZXJ2ZXIsIG1fY29ubmVjdGlvbi5nZXQoKSwg
bV93ZWJQcm9jZXNzSWRlbnRpZmllcik7CisKKyAgICBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24g
PSAqY29ubmVjdGlvbjsKKyAgICBzZXJ2ZXIuYWRkQ29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rp
b24pKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xvc2VTaGFy
ZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xP
RyhTaGFyZWRXb3JrZXIsICJjbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uOiIpOwor
ICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOworfQorCit2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU2hhcmVkV29ya2VyQ29u
bmVjdGlvbigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJ1
bnJlZ2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbjoiKTsKKyAgICBpZiAobV9zaGFyZWRXb3Jr
ZXJDb25uZWN0aW9uKQorICAgICAgICBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24tPnNlcnZlcigp
LnJlbW92ZUNvbm5lY3Rpb24obV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uLT53ZWJQcm9jZXNzSWRl
bnRpZmllcigpKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKQorewor
ICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAic2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQ6Iik7CisgICAgbV9uZXR3b3Jr
UHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6U2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRl
ZCB7IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CisKKyAgICBtX3NoYXJlZFdvcmtlckNv
bnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbiogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNoYXJlZFdvcmtlckNvbm5l
Y3Rpb24oKQoreworICAgIGlmICghbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uKQorICAgICAgICBl
c3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCk7CisgICAgcmV0dXJuIG1fc2hh
cmVkV29ya2VyQ29ubmVjdGlvbi5nZXQoKTsKK30KICAgICAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU1dD
b25uZWN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBhYjk2NjU3ZDBkZjQuLmQw
YWE0ZWY3NDUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtOTIsNiArOTIsOCBAQCBj
bGFzcyBOZXR3b3JrU29ja2V0U3RyZWFtOwogY2xhc3MgU2VydmljZVdvcmtlckZldGNoVGFzazsK
IGNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKIGNsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb247CitjbGFz
cyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOwogCiBuYW1lc3BhY2Ug
TmV0d29ya0NhY2hlIHsKIHN0cnVjdCBEYXRhS2V5OwpAQCAtMTg1LDYgKzE4Nyw5IEBAIHB1Ymxp
YzoKICAgICBXZWJTV1NlcnZlckNvbm5lY3Rpb24qIHN3Q29ubmVjdGlvbigpOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBjcmVhdGVGZXRjaFRhc2soTmV0d29y
a1Jlc291cmNlTG9hZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5k
aWYKKyAgICB2b2lkIHNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Jc05vTG9u
Z2VyTmVlZGVkKCk7CisKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKiBzaGFy
ZWRXb3JrZXJDb25uZWN0aW9uKCk7CiAKICAgICBOZXR3b3JrU2NoZW1lUmVnaXN0cnkmIHNjaGVt
ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9zY2hlbWVSZWdpc3RyeS5nZXQoKTsgfQogCkBAIC0yNTMs
NiArMjU4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZVNvY2tldENoYW5uZWwoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgV2ViQ29y
ZTo6V2ViU29ja2V0SWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJik7CiAgICAgdm9pZCB1cGRhdGVRdW90YUJhc2VkT25TcGFjZVVz
YWdlRm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKIAorICAgIHZvaWQg
ZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpOworICAgIHZvaWQgdW5yZWdp
c3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKICAgICB2b2lkIGVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigpOwogICAgIHZvaWQgZXN0
YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0yNjAsNiArMjY4LDkgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgogCisgICAgdm9pZCBlc3Rh
Ymxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVy
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOworICAgIHZvaWQgY2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpOworCiAg
ICAgdm9pZCBjcmVhdGVSVENQcm92aWRlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
I2lmIEVOQUJMRShXRUJfUlRDKQogICAgIHZvaWQgY29ubmVjdFRvUlRDRGF0YUNoYW5uZWxSZW1v
dGVTb3VyY2UoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgV2ViQ29y
ZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGhhbmRsZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoc3RkOjpvcHRpb25hbDxib29sPik+JiYpOwpAQCAtNDA0LDYgKzQxNSw4IEBAIHByaXZhdGU6
CiAgICAgV2Vha1B0cjxXZWJTV1NlcnZlckNvbm5lY3Rpb24+IG1fc3dDb25uZWN0aW9uOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+IG1fc3dDb250
ZXh0Q29ubmVjdGlvbjsKICNlbmRpZgorICAgIFdlYWtQdHI8V2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbj4gbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiBtX3NoYXJlZFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uOwogCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgYm9vbCBtX2lz
UmVnaXN0ZXJlZFRvUlRDRGF0YUNoYW5uZWxQcm94eSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAyNDI4MzUwNTBiMjQuLmI5N2NhMzQ3
OWI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC04
OCw2ICs4OCw5IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIHsKICAgICBDbG9zZVNXQ29udGV4dENvbm5lY3Rpb24oKQogI2VuZGlmCiAK
KyAgICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihXZWJLaXQ6OldlYlBh
Z2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIGRvbWFpbikgLT4gKCkgQXN5bmMKKyAgICBDbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uKCkKKwogICAgIENyZWF0ZVJUQ1Byb3ZpZGVyKCkgLT4gKCkgQXN5bmMKICNpZiBFTkFC
TEUoV0VCX1JUQykKICAgICBDb25uZWN0VG9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZShzdHJ1
Y3QgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgc3RydWN0IFdlYkNv
cmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBoYW5kbGVyKSAtPiAoc3RkOjpvcHRpb25hbDxi
b29sPiByZXN1bHQpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uY3BwCmluZGV4IGUyYjI0ZDgzMjJiNi4uZDc2MTYyODUwY2FkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtNDcs
NiArNDcsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2ViU1dPcmlnaW5TdG9yZS5oIgorI2luY2x1
ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlci5oIgogI2luY2x1ZGUgIldlYlNvY2tldFRhc2suaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZUphci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VSZXF1ZXN0Lmg+CkBAIC02NTMsNiArNjU0LDEzIEBAIGJvb2wgTmV0d29ya1Nlc3Npb246Omhh
c1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBhdGgoKSBjb25zdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjpl
bnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKQoreworICAgIGlmICghbV9zaGFyZWRXb3JrZXJTZXJ2
ZXIpCisgICAgICAgIG1fc2hhcmVkV29ya2VyU2VydmVyID0gbWFrZVVuaXF1ZTxXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXI+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fc2hhcmVkV29ya2VyU2VydmVyOwor
fQorCiBXZWJJREJTZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVXZWJJREJTZXJ2ZXIoKQog
ewogICAgIGlmICghbV93ZWJJREJTZXJ2ZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uaAppbmRleCAxOTMwN2NmNDBiZTMuLjNmOWQ2Yzk1NTBhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAt
NzksNiArNzksNyBAQCBjbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOwogY2xhc3MgV2ViSURC
U2VydmVyOwogY2xhc3MgV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzOwogY2xhc3MgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyOwogY2xh
c3MgV2ViU29ja2V0VGFzazsKIGNsYXNzIFdlYlNXT3JpZ2luU3RvcmU7CiBjbGFzcyBXZWJTV1Nl
cnZlckNvbm5lY3Rpb247CkBAIC0yMTAsNiArMjExLDkgQEAgcHVibGljOgogICAgIHZvaWQgYWRk
U2VydmljZVdvcmtlclNlc3Npb24oYm9vbCBwcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQs
IFN0cmluZyYmIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIGNvbnN0IFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYpOwogI2VuZGlmCiAKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXIqIHNoYXJlZFdvcmtlclNlcnZlcigpIHsgcmV0dXJuIG1fc2hhcmVkV29ya2VyU2VydmVyLmdl
dCgpOyB9CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBlbnN1cmVTaGFyZWRXb3JrZXJTZXJ2
ZXIoKTsKKwogICAgIFdlYklEQlNlcnZlciogd2ViSURCU2VydmVyKCkgeyByZXR1cm4gbV93ZWJJ
REJTZXJ2ZXIuZ2V0KCk7IH0KICAgICBXZWJJREJTZXJ2ZXImIGVuc3VyZVdlYklEQlNlcnZlcigp
OwogICAgIHZvaWQgY2xvc2VJREJTZXJ2ZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
QEAgLTMxOCw2ICszMjIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNl
V29ya2VySW5mbz4gbV9zZXJ2aWNlV29ya2VySW5mbzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6U1dTZXJ2ZXI+IG1fc3dTZXJ2ZXI7CiAjZW5kaWYKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViU2hhcmVkV29ya2VyU2VydmVyPiBtX3NoYXJlZFdvcmtlclNlcnZlcjsKIAogICAgIFN0cmlu
ZyBtX2lkYkRhdGFiYXNlUGF0aDsKICAgICBSZWZQdHI8V2ViSURCU2VydmVyPiBtX3dlYklEQlNl
cnZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29y
a2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTlhY2EwMDE1YmUwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29y
a2VyU2VydmVyLmNwcApAQCAtMCwwICsxLDMwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIKKworI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCisj
aW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlcjo6V2ViU2hhcmVkV29ya2VyU2VydmVyKE5l
dHdvcmtTZXNzaW9uJiBzZXNzaW9uKQorICAgIDogbV9zZXNzaW9uKHNlc3Npb24pCit7Cit9CisK
K1dlYlNoYXJlZFdvcmtlclNlcnZlcjo6fldlYlNoYXJlZFdvcmtlclNlcnZlcigpID0gZGVmYXVs
dDsKKworUEFMOjpTZXNzaW9uSUQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpzZXNzaW9uSUQoKQor
eworICAgIHJldHVybiBtX3Nlc3Npb24uc2Vzc2lvbklEKCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVk
V29ya2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYm
IG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLCBVUkwmJiB1cmwsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2Fn
ZVBvcnQmJiBwb3J0LCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucykKK3sK
KyAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkga2V5IHsgb3JpZ2luLCB1cmwsIHdvcmtlck9w
dGlvbnMubmFtZSB9OworICAgIGF1dG8mIHNoYXJlZFdvcmtlciA9IG1fc2hhcmVkV29ya2Vycy5l
bnN1cmUoa2V5LCBbJl0geworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTaGFyZWRXb3JrZXI+
KG9yaWdpbiwgdXJsLCB3b3JrZXJPcHRpb25zKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7Cisg
ICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZXF1
ZXN0U2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHJpdmF0ZX1z
LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHNoYXJlZFdvcmtlci0+aWRlbnRpZmll
ci50b1VJbnQ2NCgpKTsKKworICAgIGlmIChzaGFyZWRXb3JrZXItPndvcmtlck9wdGlvbnMudHlw
ZSAhPSB3b3JrZXJPcHRpb25zLnR5cGUgfHwgc2hhcmVkV29ya2VyLT53b3JrZXJPcHRpb25zLmNy
ZWRlbnRpYWxzICE9IHdvcmtlck9wdGlvbnMuY3JlZGVudGlhbHMpIHsKKyAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZXF1ZXN0
U2hhcmVkV29ya2VyOiBBIHdvcmtlciBhbHJlYWR5IGV4aXN0cyB3aXRoIHRoaXMgbmFtZSBidXQg
aGFzIGRpZmZlcmVudCB0eXBlIC8gY3JlZGVudGlhbHMiKTsKKyAgICAgICAgaWYgKGF1dG8qIHNl
cnZlckNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkpKQorICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlv
bi0+bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLCB7IFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wg
fSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaGFyZWRXb3JrZXItPnNoYXJlZFdv
cmtlck9iamVjdHMuYWRkKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHBvcnQpOworCisg
ICAgaWYgKHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5zaXplKCkgPiAxKSB7Cisg
ICAgICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6
cmVxdWVzdFNoYXJlZFdvcmtlcjogQSBzaGFyZWQgd29ya2VyIHdpdGggdGhpcyBVUkwgYWxyZWFk
eSBleGlzdHMgKG5vdyBzaGFyZWQgYnkgJXUgc2hhcmVkIHdvcmtlciBvYmplY3RzKSIsIHNoYXJl
ZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5zaXplKCkpOworICAgICAgICBpZiAoc2hhcmVk
V29ya2VyLT5kaWRGaW5pc2hGZXRjaGluZygpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogc2Vy
dmVyQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSkpCisgICAgICAgICAgICAgICAgc2VydmVyQ29ubmVj
dGlvbi0+bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLCB7IH0pOworICAgICAgICB9CisgICAgICAgIGlmIChzaGFyZWRXb3JrZXIt
PmlzUnVubmluZykgeworICAgICAgICAgICAgYXV0byogY29udGV4dENvbm5lY3Rpb24gPSBtX2Nv
bnRleHRDb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyLT5yZWdpc3RyYWJsZURvbWFpbigpKTsK
KyAgICAgICAgICAgIEFTU0VSVChjb250ZXh0Q29ubmVjdGlvbik7CisgICAgICAgICAgICBpZiAo
Y29udGV4dENvbm5lY3Rpb24pCisgICAgICAgICAgICAgICAgcG9zdENvbm5lY3RFdmVudCgqY29u
dGV4dENvbm5lY3Rpb24sIHNoYXJlZFdvcmtlci0+aWRlbnRpZmllciwgcG9ydCwgb3JpZ2luLmNs
aWVudE9yaWdpbi50b1N0cmluZygpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAg
fQorICAgIEFTU0VSVCghc2hhcmVkV29ya2VyLT5pc1J1bm5pbmcpOworCisgICAgYXV0byogc2Vy
dmVyQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgQVNTRVJUKHNlcnZlckNvbm5lY3Rpb24p
OworCisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVy
OjpyZXF1ZXN0U2hhcmVkV29ya2VyOiBGZXRjaGluZyBzaGFyZWQgd29ya2VyIHNjcmlwdCBpbiBj
bGllbnQiKTsKKyAgICBzZXJ2ZXJDb25uZWN0aW9uLT5mZXRjaFNjcmlwdEluQ2xpZW50KHVybCwg
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgd29ya2VyT3B0aW9ucywgW3dlYWtUaGlzID0g
V2Vha1B0ciB7ICp0aGlzIH0sIHNoYXJlZFdvcmtlciA9IFdlYWtQdHIgeyAqc2hhcmVkV29ya2Vy
IH1dKFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYgZmV0Y2hSZXN1bHQpIHsKKyAgICAgICAg
aWYgKHdlYWtUaGlzICYmIHNoYXJlZFdvcmtlcikKKyAgICAgICAgICAgIHdlYWtUaGlzLT5kaWRG
aW5pc2hGZXRjaGluZ1NoYXJlZFdvcmtlclNjcmlwdCgqc2hhcmVkV29ya2VyLCBXVEZNb3ZlKGZl
dGNoUmVzdWx0KSk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjps
YXVuY2hTaGFyZWRXb3JrZXIoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
biYgY29udGV4dENvbm5lY3Rpb24sIFNoYXJlZFdvcmtlciYgc2hhcmVkV29ya2VyKQoreworICAg
IFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6bGF1bmNo
U2hhcmVkV29ya2VyOiBjb250ZXh0Q29ubmVjdGlvbj0lcCwgc2hhcmVkV29ya2VySWRlbnRpZmll
cj0lIiBQUkl1NjQsICZjb250ZXh0Q29ubmVjdGlvbiwgc2hhcmVkV29ya2VyLmlkZW50aWZpZXIu
dG9VSW50NjQoKSk7CisgICAgY29udGV4dENvbm5lY3Rpb24ubGF1bmNoU2hhcmVkV29ya2VyKHNo
YXJlZFdvcmtlci5vcmlnaW4sIHNoYXJlZFdvcmtlci5pZGVudGlmaWVyLCBzaGFyZWRXb3JrZXIu
dXJsLCBzaGFyZWRXb3JrZXIud29ya2VyT3B0aW9ucywgc2hhcmVkV29ya2VyLmZldGNoUmVzdWx0
KTsKKyAgICBzaGFyZWRXb3JrZXIuaXNSdW5uaW5nID0gdHJ1ZTsKKyAgICBhdXRvIHNvdXJjZU9y
aWdpbiA9IHNoYXJlZFdvcmtlci5vcmlnaW4uY2xpZW50T3JpZ2luLnRvU3RyaW5nKCk7CisgICAg
Zm9yIChhdXRvJiBwb3J0IDogc2hhcmVkV29ya2VyLnNoYXJlZFdvcmtlck9iamVjdHMudmFsdWVz
KCkpCisgICAgICAgIHBvc3RDb25uZWN0RXZlbnQoY29udGV4dENvbm5lY3Rpb24sIHNoYXJlZFdv
cmtlci5pZGVudGlmaWVyLCBwb3J0LCBzb3VyY2VPcmlnaW4pOworfQorCit2b2lkIFdlYlNoYXJl
ZFdvcmtlclNlcnZlcjo6cG9zdENvbm5lY3RFdmVudChXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbiwgV2ViQ29yZTo6U2hhcmVkV29ya2Vy
SWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpUcmFuc2Zl
cnJlZE1lc3NhZ2VQb3J0JiBzb3VyY2VQb3J0LCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikK
K3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6
OnBvc3RDb25uZWN0RXZlbnQ6IGNvbnRleHRDb25uZWN0aW9uPSVwLCBzaGFyZWRXb3JrZXJJZGVu
dGlmaWVyPSUiIFBSSXU2NCwgJmNvbnRleHRDb25uZWN0aW9uLCBzaGFyZWRXb3JrZXJJZGVudGlm
aWVyLnRvVUludDY0KCkpOworICAgIGNvbnRleHRDb25uZWN0aW9uLnBvc3RDb25uZWN0RXZlbnQo
c2hhcmVkV29ya2VySWRlbnRpZmllciwgc291cmNlUG9ydCwgc291cmNlT3JpZ2luKTsKK30KKwor
dm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29ya2Vy
U2NyaXB0KFNoYXJlZFdvcmtlciYgd29ya2VyLCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYm
IGZldGNoUmVzdWx0KQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJl
ZFdvcmtlclNlcnZlcjo6ZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRXb3JrZXJTY3JpcHQgc2hhcmVk
V29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgd29ya2VyPSVwLCBzdWNjZXNzPSVkIiwgd29y
a2VyLmlkZW50aWZpZXIudG9VSW50NjQoKSwgJndvcmtlciwgZmV0Y2hSZXN1bHQuZXJyb3IuaXNO
dWxsKCkpOworCisgICAgZm9yIChhdXRvIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgOiB3
b3JrZXIuc2hhcmVkV29ya2VyT2JqZWN0cy5rZXlzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHNl
cnZlckNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkpKQorICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlv
bi0+bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLCBmZXRjaFJlc3VsdC5lcnJvcik7CisgICAgfQorCisgICAgaWYgKCFmZXRjaFJl
c3VsdC5lcnJvci5pc051bGwoKSkgeworICAgICAgICBtX3NoYXJlZFdvcmtlcnMucmVtb3ZlKHdv
cmtlci5rZXkoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3b3JrZXIuZmV0Y2hS
ZXN1bHQgPSBXVEZNb3ZlKGZldGNoUmVzdWx0KTsKKworICAgIGF1dG8gcmVnaXN0cmFibGVEb21h
aW4gPSB3b3JrZXIucmVnaXN0cmFibGVEb21haW4oKTsKKyAgICBhdXRvKiBjb250ZXh0Q29ubmVj
dGlvbiA9IGNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVE
b21haW4pOworICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAgICAgY3JlYXRlQ29u
dGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4pOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgbGF1bmNoU2hhcmVkV29ya2VyKCpjb250ZXh0Q29ubmVjdGlvbiwgd29ya2VyKTsK
K30KKworYm9vbCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6Om5lZWRzQ29udGV4dENvbm5lY3Rpb25G
b3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVn
aXN0cmFibGVEb21haW4pIGNvbnN0Cit7CisgICAgZm9yIChhdXRvJiBzaGFyZWRXb3JrZXIgOiBt
X3NoYXJlZFdvcmtlcnMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHJlZ2lzdHJhYmxlRG9tYWlu
Lm1hdGNoZXMoc2hhcmVkV29ya2VyLT51cmwpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6
OmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiByZWdpc3RyYWJsZURvbWFpbikKK3sKKyAgICBBU1NFUlQoIW1fY29udGV4dENvbm5lY3Rpb25z
LmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSk7CisgICAgaWYgKG1fcGVuZGluZ0NvbnRleHRD
b25uZWN0aW9uRG9tYWlucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgIHJl
dHVybjsKKworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNl
cnZlcjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24gd2lsbCBjcmVhdGUgYSBjb25uZWN0aW9uIik7
CisKKyAgICBtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnMuYWRkKHJlZ2lzdHJhYmxl
RG9tYWluKTsKKyAgICBtX3Nlc3Npb24ubmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OkVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyB7IHJlZ2lzdHJhYmxlRG9tYWluLCBtX3Nlc3Npb24uc2Vzc2lvbklEKCkgfSwgW3RoaXMsIHdl
YWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlZ2lzdHJhYmxlRG9tYWluXSB7CisgICAgICAg
IGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgUkVMRUFTRV9M
T0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0Q29u
bmVjdGlvbiBzaG91bGQgbm93IGhhdmUgY3JlYXRlZCBhIGNvbm5lY3Rpb24iKTsKKworICAgICAg
ICBBU1NFUlQobV9wZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5zLmNvbnRhaW5zKHJlZ2lz
dHJhYmxlRG9tYWluKSk7CisgICAgICAgIG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWlu
cy5yZW1vdmUocmVnaXN0cmFibGVEb21haW4pOworCisgICAgICAgIGlmIChtX2NvbnRleHRDb25u
ZWN0aW9ucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgaWYgKG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFp
bihyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlv
bihyZWdpc3RyYWJsZURvbWFpbik7CisgICAgfSwgMCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29y
a2VyU2VydmVyOjphZGRDb250ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbikKK3sKKyAgICBSRUxFQVNFX0xPRyhT
aGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmFkZENvbnRleHRDb25uZWN0aW9u
KCVwKSB3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQsICZjb250ZXh0Q29ubmVjdGlvbiwg
Y29udGV4dENvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKwor
ICAgIEFTU0VSVCghbV9jb250ZXh0Q29ubmVjdGlvbnMuY29udGFpbnMoY29udGV4dENvbm5lY3Rp
b24ucmVnaXN0cmFibGVEb21haW4oKSkpOworCisgICAgbV9jb250ZXh0Q29ubmVjdGlvbnMuYWRk
KGNvbnRleHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCksICZjb250ZXh0Q29ubmVjdGlv
bik7CisKKyAgICBjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoY29udGV4dENvbm5lY3Rpb24pOwor
fQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24o
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rp
b24pCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2Vy
dmVyOjpyZW1vdmVDb250ZXh0Q29ubmVjdGlvbiglcCkgd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIg
UFJJdTY0LCAmY29udGV4dENvbm5lY3Rpb24sIGNvbnRleHRDb25uZWN0aW9uLndlYlByb2Nlc3NJ
ZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0g
Y29udGV4dENvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKTsKKworICAgIEFTU0VSVChtX2Nv
bnRleHRDb25uZWN0aW9ucy5nZXQocmVnaXN0cmFibGVEb21haW4pID09ICZjb250ZXh0Q29ubmVj
dGlvbik7CisKKyAgICBtX2NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUocmVnaXN0cmFibGVEb21h
aW4pOworCisgICAgaWYgKG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFp
bihyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJl
Z2lzdHJhYmxlRG9tYWluKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNvbnRl
eHRDb25uZWN0aW9uQ3JlYXRlZChXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uJiBjb250ZXh0Q29ubmVjdGlvbikKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIs
ICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZCglcCkgd2Vi
UHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCAmY29udGV4dENvbm5lY3Rpb24sIGNvbnRleHRD
b25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgYXV0byYg
cmVnaXN0cmFibGVEb21haW4gPSBjb250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigp
OworICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9zaGFyZWRXb3JrZXJzLnZhbHVlcygpKSB7Cisg
ICAgICAgIGlmICh3b3JrZXItPmRpZEZpbmlzaEZldGNoaW5nKCkgJiYgcmVnaXN0cmFibGVEb21h
aW4ubWF0Y2hlcyh3b3JrZXItPnVybCkpCisgICAgICAgICAgICBsYXVuY2hTaGFyZWRXb3JrZXIo
Y29udGV4dENvbm5lY3Rpb24sICp3b3JrZXIpOworICAgIH0KK30KKworYXV0byBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXI6OnNoYXJlZFdvcmtlckJ5SWRlbnRpZmllcihXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIpIC0+IFNoYXJlZFdvcmtlcioKK3sK
KyAgICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAg
ICAgICBpZiAod29ya2VyLT5pZGVudGlmaWVyID09IHNoYXJlZFdvcmtlcklkZW50aWZpZXIpCisg
ICAgICAgICAgICByZXR1cm4gd29ya2VyLmdldCgpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworYXV0byBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNoYXJlZFdvcmtlckJ5T2JqZWN0
SWRlbnRpZmllcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIpIC0+IFNoYXJlZFdvcmtlcioKK3sKKyAgICBmb3IgKGF1dG8m
IHdvcmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAod29ya2Vy
LT5zaGFyZWRXb3JrZXJPYmplY3RzLmNvbnRhaW5zKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIpKQorICAgICAgICAgICAgcmV0dXJuIHdvcmtlci5nZXQoKTsKKyAgICB9CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaGFyZWRXb3JrZXJP
YmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7CisgICAgYXV0byogd29ya2VyID0gc2hhcmVk
V29ya2VyQnlPYmplY3RJZGVudGlmaWVyKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOwor
ICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hh
cmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXk6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9
JXtwdWJsaWN9cywgd29ya2VyPSVwIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0
cmluZygpLnV0ZjgoKS5kYXRhKCksIHdvcmtlcik7CisgICAgaWYgKCF3b3JrZXIpCisgICAgICAg
IHJldHVybjsKKworICAgIHdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5yZW1vdmUoc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgaWYgKCF3b3JrZXItPnNoYXJlZFdvcmtlck9i
amVjdHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzaHV0RG93blNoYXJlZFdv
cmtlcih3b3JrZXItPmtleSgpKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNo
dXREb3duU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYga2V5KQor
eworICAgIGF1dG8gd29ya2VyID0gbV9zaGFyZWRXb3JrZXJzLnRha2Uoa2V5KTsKKyAgICBSRUxF
QVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNodXREb3duU2hh
cmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCAiLCB3b3JrZXI9JXAi
LCB3b3JrZXIgPyB3b3JrZXItPmlkZW50aWZpZXIudG9VSW50NjQoKSA6IDAsIHdvcmtlci5nZXQo
KSk7CisgICAgaWYgKCF3b3JrZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIGNvbnRl
eHRDb25uZWN0aW9uID0gY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbih3b3Jr
ZXItPnJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pCisg
ICAgICAgIHJldHVybjsKKworICAgIGNvbnRleHRDb25uZWN0aW9uLT50ZXJtaW5hdGVTaGFyZWRX
b3JrZXIod29ya2VyLT5pZGVudGlmaWVyKTsKKworICAgIGlmICghbmVlZHNDb250ZXh0Q29ubmVj
dGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHdvcmtlci0+cmVnaXN0cmFibGVEb21haW4oKSkpCisg
ICAgICAgIGNvbnRleHRDb25uZWN0aW9uLT5jb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOwor
fQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29ubmVjdGlvbihzdGQ6OnVuaXF1
ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQorewor
ICAgIGF1dG8gcHJvY2Vzc0lkZW50aWZpZXIgPSBjb25uZWN0aW9uLT53ZWJQcm9jZXNzSWRlbnRp
ZmllcigpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNl
cnZlcjo6YWRkQ29ubmVjdGlvbiglcCk6IHByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgY29u
bmVjdGlvbi5nZXQoKSwgcHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgQVNTRVJU
KCFtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKHByb2Nlc3NJZGVudGlmaWVyKSk7CisgICAgbV9jb25u
ZWN0aW9ucy5hZGQocHJvY2Vzc0lkZW50aWZpZXIsIFdURk1vdmUoY29ubmVjdGlvbikpOworfQor
Cit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlvbihXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGNvbm5lY3Rp
b24gPSBtX2Nvbm5lY3Rpb25zLnRha2UocHJvY2Vzc0lkZW50aWZpZXIpOworICAgIFJFTEVBU0Vf
TE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlv
biglcCk6IHByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgY29ubmVjdGlvbi5nZXQoKSwgcHJv
Y2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgQVNTRVJUKGNvbm5lY3Rpb24pOworCisg
ICAgVmVjdG9yPFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI+IHNoYXJlZFdv
cmtlck9iamVjdHNHb2luZ0F3YXk7CisgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3NoYXJlZFdv
cmtlcnMudmFsdWVzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyIDogd29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzLmtleXMoKSkgeworICAgICAg
ICAgICAgaWYgKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIo
KSA9PSBwcm9jZXNzSWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICBzaGFyZWRXb3JrZXJPYmpl
Y3RzR29pbmdBd2F5LmFwcGVuZChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBmb3IgKGF1dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA6
IHNoYXJlZFdvcmtlck9iamVjdHNHb2luZ0F3YXkpCisgICAgICAgIHNoYXJlZFdvcmtlck9iamVj
dElzR29pbmdBd2F5KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworfQorCitXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6OlNoYXJlZFdvcmtlcjo6U2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBjb25zdCBVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6V29y
a2VyT3B0aW9ucyYgd29ya2VyT3B0aW9ucykKKyAgICA6IGlkZW50aWZpZXIoV2ViQ29yZTo6U2hh
cmVkV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKKyAgICAsIG9yaWdpbihvcmlnaW4pCisg
ICAgLCB1cmwodXJsKQorICAgICwgd29ya2VyT3B0aW9ucyh3b3JrZXJPcHRpb25zKQoreworfQor
Cit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0
KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBhdXRvKiB3b3JrZXIgPSBzaGFy
ZWRXb3JrZXJCeUlkZW50aWZpZXIoc2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgUkVMRUFT
RV9MT0dfRVJST1IoU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpwb3N0RXhj
ZXB0aW9uVG9Xb3JrZXJPYmplY3Q6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIs
IHdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSwgd29ya2VyKTsK
KyAgICBpZiAoIXdvcmtlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvIHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIgOiB3b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMua2V5
cygpKSB7CisgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9u
cy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkK
KyAgICAgICAgICAgIHNlcnZlckNvbm5lY3Rpb24tPnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVj
dChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgc291cmNlVVJMKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLmNlYjYyM2NjNmU1NgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNl
cnZlci5oCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9S
ZWdpc3RyYWJsZURvbWFpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dElkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZp
ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcktleS5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
VHJhbnNmZXJyZWRNZXNzYWdlUG9ydC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyRmV0Y2hS
ZXN1bHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlck9wdGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgQ2xpZW50T3JpZ2lu
OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya1Nlc3Npb247CitjbGFz
cyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVy
IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlcj4geworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYlNoYXJlZFdv
cmtlclNlcnZlcihOZXR3b3JrU2Vzc2lvbiYpOworICAgIH5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIo
KTsKKworICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpOworCisgICAgdm9pZCByZXF1ZXN0
U2hhcmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9y
dCYmLCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYpOworICAgIHZvaWQgc2hhcmVkV29ya2VyT2Jq
ZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisK
KyAgICB2b2lkIGFkZENvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24mKTsKKyAgICB2b2lkIHJlbW92ZUNvbnRleHRDb25uZWN0aW9uKFdlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKKworICAgIHZvaWQgYWRkQ29u
bmVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4m
Jik7CisgICAgdm9pZCByZW1vdmVDb25uZWN0aW9uKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
KTsKKworICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIGNvbnRl
eHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mIGRvbWFpbikgeyByZXR1cm4gbV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0KGRvbWFp
bik7IH0KKworICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNo
YXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCitw
cml2YXRlOgorICAgIHZvaWQgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mKTsKKworICAgIGJvb2wgbmVlZHNDb250ZXh0Q29ubmVjdGlvbkZv
clJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikgY29u
c3Q7CisgICAgdm9pZCBjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOworCisgICAgc3RydWN0IFNoYXJlZFdvcmtlciA6IENh
bk1ha2VXZWFrUHRyPFNoYXJlZFdvcmtlcj4geworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURUQ7CisKKyAgICAgICAgU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmKTsKKwor
ICAgICAgICBib29sIGRpZEZpbmlzaEZldGNoaW5nKCkgY29uc3QgeyByZXR1cm4gISFmZXRjaFJl
c3VsdC5zY3JpcHQ7IH0KKyAgICAgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5IGtleSgpIGNv
bnN0IHsgcmV0dXJuIHsgb3JpZ2luLCB1cmwsIHdvcmtlck9wdGlvbnMubmFtZSB9OyB9CisgICAg
ICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3Qg
eyByZXR1cm4gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfTsgfQorCisgICAgICAg
IFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICAgICAgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbjsKKyAgICAgICAgVVJMIHVybDsKKyAgICAgICAgV2Vi
Q29yZTo6V29ya2VyT3B0aW9ucyB3b3JrZXJPcHRpb25zOworICAgICAgICBIYXNoTWFwPFdlYkNv
cmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVz
c2FnZVBvcnQ+IHNoYXJlZFdvcmtlck9iamVjdHM7CisgICAgICAgIFdlYkNvcmU6OldvcmtlckZl
dGNoUmVzdWx0IGZldGNoUmVzdWx0OworICAgICAgICBib29sIGlzUnVubmluZyB7IGZhbHNlIH07
CisgICAgfTsKKworICAgIFNoYXJlZFdvcmtlciogc2hhcmVkV29ya2VyQnlJZGVudGlmaWVyKFdl
YkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworICAgIFNoYXJlZFdvcmtlciogc2hhcmVk
V29ya2VyQnlPYmplY3RJZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIpOworICAgIHZvaWQgZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRXb3JrZXJTY3JpcHQoU2hh
cmVkV29ya2VyJiwgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJik7CisgICAgdm9pZCBsYXVu
Y2hTaGFyZWRXb3JrZXIoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYs
IFNoYXJlZFdvcmtlciYpOworICAgIHZvaWQgcG9zdENvbm5lY3RFdmVudChXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYsIGNvbnN0IFN0cmlu
ZyYgc291cmNlT3JpZ2luKTsKKyAgICB2b2lkIHNodXREb3duU2hhcmVkV29ya2VyKGNvbnN0IFdl
YkNvcmU6OlNoYXJlZFdvcmtlcktleSYpOworCisgICAgTmV0d29ya1Nlc3Npb24mIG1fc2Vzc2lv
bjsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9w
dHI8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4+IG1fY29ubmVjdGlvbnM7CisgICAg
SGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbio+IG1fY29udGV4dENvbm5lY3Rpb25zOworICAgIEhhc2hTZXQ8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9t
YWluczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSwgc3RkOjp1bmlxdWVf
cHRyPFNoYXJlZFdvcmtlcj4+IG1fc2hhcmVkV29ya2VyczsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRX
b3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmJiMDkxNzM0
NTgzOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hh
cmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEs
MTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNp
bmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVk
ZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9Xb3JrZXJGZXRjaFJlc3VsdC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworI2Rl
ZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhTaGFyZWRX
b3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsIG1fd2ViUHJvY2Vzc0lkZW50aWZp
ZXIudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNF
X0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoU2hhcmVkV29ya2VyLCAiJXAg
LSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb246OiIgZm10LCB0aGlzLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0
KCksICMjX19WQV9BUkdTX18pCisKK1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Oldl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9j
ZXNzLCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlciwgSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllcikK
KyAgICA6IG1fY29udGVudENvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1fbmV0d29ya1By
b2Nlc3MobmV0d29ya1Byb2Nlc3MpCisgICAgLCBtX3NlcnZlcihzZXJ2ZXIpCisgICAgLCBtX3dl
YlByb2Nlc3NJZGVudGlmaWVyKHdlYlByb2Nlc3NJZGVudGlmaWVyKQoreworICAgIENPTk5FQ1RJ
T05fUkVMRUFTRV9MT0coIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Iik7Cit9CisK
K1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246On5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJ+V2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbjoiKTsKK30KKworSVBDOjpDb25uZWN0aW9uKiBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fY29udGVudENvbm5lY3Rpb24ucHRyKCk7Cit9CisKK1BBTDo6U2Vzc2lv
bklEIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OnNlc3Npb25JRCgpCit7CisgICAg
cmV0dXJuIHNlcnZlcigpLnNlc3Npb25JRCgpOworfQorCitOZXR3b3JrU2Vzc2lvbiogV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2Vzc2lvbigpCit7CisgICAgcmV0dXJuIG1fbmV0
d29ya1Byb2Nlc3MtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKTsKK30KKwordm9pZCBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpyZXF1ZXN0U2hhcmVkV29ya2VyKFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBVUkwmJiB1cmwsIFdlYkNvcmU6OlRy
YW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYgd29y
a2VyT3B0aW9ucykKK3sKKyAgICBBU1NFUlQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5w
cm9jZXNzSWRlbnRpZmllcigpID09IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOyAvLyBGSVhNRTog
U2hvdWxkIGJlIGEgTUVTU0FHRV9DSEVDSygpLgorICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0co
InJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJs
aWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHRoaXMtPnNlc3Npb24oKSkKKyAgICAgICAg
c2Vzc2lvbi0+ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCkucmVxdWVzdFNoYXJlZFdvcmtlcihX
VEZNb3ZlKG9yaWdpbiksIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdURk1vdmUodXJs
KSwgV1RGTW92ZShwb3J0KSwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSk7Cit9CisKK3ZvaWQgV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6ZmV0Y2hTY3JpcHRJbkNsaWVudChjb25zdCBV
UkwmIHVybCwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJP
cHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0co
ImZldGNoU2NyaXB0SW5DbGllbnQ6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJs
aWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb246OkZldGNoU2NyaXB0SW5DbGllbnQgeyB1cmwsIHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIsIHdvcmtlck9wdGlvbnMgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Om5vdGlmeVdv
cmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24oV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJub3RpZnlX
b3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uOiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
PSV7cHVibGljfXMsIHN1Y2Nlc3M9JWQiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRv
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuaXNOdWxsKCkpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Ok5vdGlmeVdvcmtlck9iamVjdE9m
TG9hZENvbXBsZXRpb24geyBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBlcnJvciB9KTsK
K30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0RXhjZXB0aW9u
VG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQor
eworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IoInBvc3RFeGNlcHRpb25Ub1dvcmtl
ck9iamVjdDogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OlBvc3RFeGNlcHRp
b25Ub1dvcmtlck9iamVjdCB7IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGVycm9yTWVz
c2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwgfSk7Cit9CisKK3ZvaWQg
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2hhcmVkV29ya2VyT2JqZWN0SXNHb2lu
Z0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyKQoreworICAgIEFTU0VSVChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7IC8vIEZJ
WE1FOiBTaG91bGQgYmUgYSBNRVNTQUdFX0NIRUNLKCkuCisgICAgQ09OTkVDVElPTl9SRUxFQVNF
X0xPRygic2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXk6IHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHRoaXMtPnNlc3Np
b24oKSkKKyAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCkuc2hhcmVk
V29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7Cit9
CisKKyN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HCisjdW5kZWYgQ09OTkVDVElPTl9SRUxF
QVNFX0xPR19FUlJPUgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2Vy
L1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLmQzZGU0ZTFiNDliZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb24uaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVy
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CitzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7CitzdHJ1Y3QgV29ya2VyT3B0aW9uczsKK30K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtQcm9jZXNzOworY2xhc3MgV2Vi
U2hhcmVkV29ya2VyU2VydmVyOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbiA6IHB1
YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbihOZXR3b3JrUHJvY2VzcyYsIFdlYlNoYXJlZFdvcmtlclNlcnZlciYs
IElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICB+V2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpOworCisgICAgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyJiBzZXJ2ZXIoKSB7IHJldHVybiBtX3NlcnZlcjsgfQorICAgIGNvbnN0IFdlYlNoYXJlZFdv
cmtlclNlcnZlciYgc2VydmVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXI7IH0KKworICAgIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpOworICAgIE5ldHdvcmtTZXNzaW9uKiBzZXNzaW9uKCk7
CisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOyB9CisKKyAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisg
ICAgdm9pZCBmZXRjaFNjcmlwdEluQ2xpZW50KGNvbnN0IFVSTCYsIFdlYkNvcmU6OlNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYpPiYmKTsKKyAg
ICB2b2lkIG5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24oV2ViQ29yZTo6U2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwor
ICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCitwcml2
YXRlOgorICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlci4KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1l
c3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2Fn
ZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CisKKyAgICAv
LyBJUEMgbWVzc2FnZXMuCisgICAgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBVUkwm
JiwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBXZWJDb3JlOjpXb3JrZXJPcHRp
b25zJiYpOworICAgIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisKKyAgICBSZWY8SVBDOjpDb25uZWN0aW9u
PiBtX2NvbnRlbnRDb25uZWN0aW9uOworICAgIFJlZjxOZXR3b3JrUHJvY2Vzcz4gbV9uZXR3b3Jr
UHJvY2VzczsKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIG1fc2VydmVyOworICAgIFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uZmFlNGEwODAzNzc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI2IEBACisjIENvcHlyaWdodCAoQykg
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFdlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CisgICAgUmVxdWVzdFNoYXJlZFdvcmtlcihzdHJ1
Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBVUkwgdXJsLCBXZWJD
b3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0IHBvcnQsIHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJP
cHRpb25zIHdvcmtlck9wdGlvbnMpCisgICAgU2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXko
V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
aGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLjQ5YzExMjQxNTIxOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2Vy
U2VydmVyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjZGVmaW5lIENPTlRFWFRfQ09OTkVD
VElPTl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAg
LSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdlYlNoYXJlZFdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OiIgZm10LCB0aGlzLCB3ZWJQcm9jZXNzSWRlbnRpZmllcigp
LnRvVUludDY0KCksICMjX19WQV9BUkdTX18pCisKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24o
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyJiBzZXJ2ZXIpCisgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1fc2Vy
dmVyKHNlcnZlcikKKyAgICAsIG1fcmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4p
Cit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOiIpOworICAgIHNlcnZlci5hZGRDb250ZXh0Q29ubmVj
dGlvbigqdGhpcyk7Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246On5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkKK3sKKyAgICBD
T05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coIn5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOiIpOworICAgIGlmIChtX3NlcnZlciAmJiBtX3NlcnZlci0+Y29udGV4
dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbigpKSA9PSB0
aGlzKQorICAgICAgICBtX3NlcnZlci0+cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oKnRoaXMpOwor
fQorCitXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjp3ZWJQcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fY29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpOworfQorCitJUEM6OkNvbm5l
Y3Rpb24mIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmlwY0Nvbm5l
Y3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpOwor
fQorCitJUEM6OkNvbm5lY3Rpb24qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gJmlw
Y0Nvbm5lY3Rpb24oKTsKK30KKwordWludDY0X3QgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAoreworICAg
IHJldHVybiAwOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkKK3sKKyAgICBDT05URVhUX0NPTk5F
Q1RJT05fUkVMRUFTRV9MT0coImNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkOiIpOworICAgIG1f
Y29ubmVjdGlvbi5zaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdl
ck5lZWRlZCgpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwpCit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJwb3N0RXhjZXB0
aW9uVG9Xb3JrZXJPYmplY3Q6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFy
ZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIGlmIChtX3NlcnZlcikKKyAgICAg
ICAgbV9zZXJ2ZXItPnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJJZGVu
dGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJM
KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjps
YXVuY2hTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFdl
YkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMs
IGNvbnN0IFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiBmZXRjaFJlc3VsdCkKK3sKKyAgICBD
T05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coImxhdW5jaFNoYXJlZFdvcmtlcjogc2hhcmVk
V29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50
NjQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpMYXVuY2hTaGFyZWRXb3JrZXIgeyBvcmlnaW4sIHNoYXJlZFdvcmtlcklkZW50
aWZpZXIsIHVybCwgd29ya2VyT3B0aW9ucywgZmV0Y2hSZXN1bHQgfSk7Cit9CisKK3ZvaWQgV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVudChX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmIHBvcnQsIGNvbnN0IFN0cmluZyYg
c291cmNlT3JpZ2luKQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygicG9z
dENvbm5lY3RFdmVudDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdv
cmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpQb3N0Q29ubmVjdEV2ZW50IHsgc2hhcmVk
V29ya2VySWRlbnRpZmllciwgcG9ydCwgc291cmNlT3JpZ2luIH0pOworfQorCit2b2lkIFdlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZVNoYXJlZFdvcmtl
cihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIp
Cit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJ0ZXJtaW5hdGVTaGFyZWRX
b3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVu
dGlmaWVyLnRvVUludDY0KCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VGVybWluYXRlU2hhcmVkV29ya2VyIHsgc2hhcmVkV29y
a2VySWRlbnRpZmllciB9KTsKK30KKworI3VuZGVmIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNF
X0xPRworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2Vy
L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmI2NzNlY2FlMjgzZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDc5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNs
dWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RyYW5zZmVy
cmVkTWVzc2FnZVBvcnQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVnaXN0cmFi
bGVEb21haW47CitjbGFzcyBTY3JpcHRCdWZmZXI7CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworc3Ry
dWN0IFdvcmtlckZldGNoUmVzdWx0Oworc3RydWN0IFdvcmtlck9wdGlvbnM7Cit9CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKK2Ns
YXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlcjsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1
YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiwgV2ViU2hhcmVkV29ya2VyU2VydmVyJik7CisgICAgfldlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKKworICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgY29uc3QgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdp
c3RyYWJsZURvbWFpbjsgfQorICAgIElQQzo6Q29ubmVjdGlvbiYgaXBjQ29ubmVjdGlvbigpIGNv
bnN0OworCisgICAgdm9pZCBsYXVuY2hTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiwgY29u
c3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYsIGNvbnN0IFdlYkNvcmU6OldvcmtlckZldGNoUmVz
dWx0Jik7CisgICAgdm9pZCBwb3N0Q29ubmVjdEV2ZW50KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmLCBjb25zdCBT
dHJpbmcmIHNvdXJjZU9yaWdpbik7CisgICAgdm9pZCB0ZXJtaW5hdGVTaGFyZWRXb3JrZXIoV2Vi
Q29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllcik7CisKKyAgICB2b2lkIGNvbm5lY3Rpb25Jc05v
TG9uZ2VyTmVlZGVkKCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCitwcml2YXRlOgorICAgIC8vIElQQyBtZXNz
YWdlcy4KKyAgICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKworICAg
IC8vIElQQzo6TWVzc2FnZVNlbmRlci4KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5k
ZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRl
c3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKKworICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBtX2Nvbm5lY3Rpb247CisgICAgV2Vha1B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI+
IG1fc2VydmVyOworICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG1fcmVnaXN0cmFibGVE
b21haW47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWU0
N2MxMjJjYmFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI1IEBACisjIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CisgICAgUG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0
KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwg
U3RyaW5nIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFN0
cmluZyBzb3VyY2VVUkwpCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xv
Z2dpbmcuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDFjNDJkMDQw
YzFhOS4uZGUzMmY4MTcxNzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xv
Z2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaApAQCAtOTcsNiAr
OTcsNyBAQCBleHRlcm4gIkMiIHsKICAgICBNKFNlcnZpY2VXb3JrZXIpIFwKICAgICBNKFNlc3Np
b25TdGF0ZSkgXAogICAgIE0oU2hhcmVkRGlzcGxheUxpc3RzKSBcCisgICAgTShTaGFyZWRXb3Jr
ZXIpIFwKICAgICBNKFN0b3JhZ2UpIFwKICAgICBNKFN0b3JhZ2VBUEkpIFwKICAgICBNKFRleHRJ
bnB1dCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggN2Vi
ZmE1MTZiNTAzLi40YzhjYWQwNDY0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQpAQCAtMzAzLDEwICszMDMsMTMgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2Jl
X2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNs
aWVudElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCcsCisg
ICAgICAgICdXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYkNv
cmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U2xl
ZXBEaXNhYmxlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U291cmNlQnVmZmVyQXBw
ZW5kTW9kZScsCiAgICAgICAgICdXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGllbnRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlN0b3JhZ2VUeXBlJywKKyAgICAg
ICAgJ1dlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQnLAogICAgICAgICAnV2ViQ29yZTo6
VXNlck1lZGlhUmVxdWVzdElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6V2ViTG9ja0lk
ZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllcicsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dAppbmRleCA1N2VmM2IxNGVhZjIuLjM1ZjZjNzQ4ZWUzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0x
NDEsNiArMTQxLDEwIEBAIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dPcmlnaW5T
dG9yZS5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyQ29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiAKK05ldHdvcmtQ
cm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwCitOZXR3b3JrUHJv
Y2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAKK05l
dHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcAorCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdl
TWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5k
bGUuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVn
aXN0cnkuY3BwCkBAIC03ODMsOCArNzg3LDkgQEAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2lu
VGFibGUuY3BwCiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudC5jcHAKIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3Bw
Ci1XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwCitXZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAog
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCitX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwCiAKIFdlYlByb2Nl
c3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAogCkBAIC04ODcsMyAr
ODkyLDcgQEAgUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5TWVzc2FnZVJlY2VpdmVyLmNwcAogU2Vydmlj
ZVdvcmtlckRvd25sb2FkVGFza01lc3NhZ2VSZWNlaXZlci5jcHAKIFdlYkJyb2FkY2FzdENoYW5u
ZWxSZWdpc3RyeU1lc3NhZ2VSZWNlaXZlci5jcHAKIFdlYkxvY2tSZWdpc3RyeVByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVz
c2FnZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbk1lc3NhZ2VS
ZWNlaXZlci5jcHAKK1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2
ZXIuY3BwCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZVJl
Y2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggYTY3ODM2N2E3NzVhLi4zMzAyMGJkNWMzY2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcApAQCAtNTI5LDcgKzUyOSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6dGVybWluYXRlV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQ
cm9jCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50
aWZpZXIpCiB7CiAgICAgaWYgKFJlZlB0ciBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9j
ZXNzRm9ySWRlbnRpZmllcihwcm9jZXNzSWRlbnRpZmllcikpIHsKLSAgICAgICAgcHJvY2Vzcy0+
ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgICAgIHByb2Nlc3MtPmRpc2FibGVXb3JrZXJz
KFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiAgICAgICAgIHBy
b2Nlc3MtPnJlcXVlc3RUZXJtaW5hdGlvbihQcm9jZXNzVGVybWluYXRpb25SZWFzb246OkV4Y2Vl
ZGVkQ1BVTGltaXQpOwogICAgIH0KIH0KQEAgLTE0MTUsMTYgKzE0MTUsMjEgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpkaWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHko
V2ViVXNlckNvbnRlbnQKIH0KICNlbmRpZgogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmVz
dGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXNz
aW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2VydmljZVdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYm
IHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewotICAgIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKCp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwg
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBzZXNzaW9uSUQsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKKyAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWlu
KSwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBzZXNzaW9uSUQsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXJ2aWNlV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciBpZGVudGlmaWVyKQogewogICAgIGlmIChhdXRvKiBwcm9jZXNzID0gV2ViUHJvY2Vzc1By
b3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihpZGVudGlmaWVyKSkKLSAgICAgICAgcHJvY2Vzcy0+
ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgICAgIHByb2Nlc3MtPmRpc2FibGVXb3JrZXJz
KFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQpAQCAtMTQ2
MCw2ICsxNDY1LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZW5kU2VydmljZVdvcmtl
ckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJCiB9CiAjZW5kaWYKIAordm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9u
Z2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAg
aWYgKGF1dG8qIHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVy
KGlkZW50aWZpZXIpKQorICAgICAgICBwcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNz
UHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlcik7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCBjdXJyZW50UXVvdGEs
IHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVkLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHF1b3RhKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBSRUxFQVNFX0xPRyhTdG9yYWdlLCAiJXAgLSBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlIiwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IGE0ZTM2
NDVlYmFhZS4uNjg0MWEzNGZlMDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMzM0LDYgKzMzNCw4IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIp
OwogICAgIHZvaWQgZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7CiAjZW5k
aWYKKyAgICB2b2lkIHNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQo
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOworICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiYsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
CiAgICAgdm9pZCB0ZXJtaW5hdGVXZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDEyZDA2Y2ViZDYyYS4uMTU3
NTdlZDlhMjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC02MCw2ICs2MCw4
IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAg
IFN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikKICAgICBFbmRTZXJ2aWNl
V29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2Vy
dmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQogI2VuZGlmCisgICAgRXN0YWJsaXNoU2hhcmVk
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+
ICgpIEFzeW5jCisgICAgU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRl
ZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQogCiAgICAgU2V0V2ViUHJv
Y2Vzc0hhc1VwbG9hZHMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lELCBib29s
IGhhc1VwbG9hZCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggZTQ5OTM1YzMyNWY2Li4xYWNiMzQ0NGFmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcApAQCAtMzY5MSwxMSArMzY5MSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KQogICAgICAgICByZXR1cm47CiAgICAg
bV91c2VyQWdlbnQgPSBXVEZNb3ZlKHVzZXJBZ2VudCk7CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAgICAgLy8gV2UgdXBkYXRlIHRoZSBzZXJ2aWNlIHdvcmtlciB0aGVyZSBhdCB0aGUg
bW9tZW50IHRvIGJlIHN1cmUgd2UgdXNlIHZhbHVlcyB1c2VkIGJ5IGFjdHVhbCB3ZWIgcGFnZXMu
CiAgICAgLy8gRklYTUU6IFJlZmFjdG9yIHRoaXMgd2hlbiB3ZSBoYXZlIGEgYmV0dGVyIFVzZXIt
QWdlbnQgc3RvcnkuCi0gICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCkudXBkYXRlU2VydmljZVdv
cmtlclVzZXJBZ2VudChtX3VzZXJBZ2VudCk7Ci0jZW5kaWYKKyAgICBwcm9jZXNzKCkucHJvY2Vz
c1Bvb2woKS51cGRhdGVXb3JrZXJVc2VyQWdlbnQobV91c2VyQWdlbnQpOwogCiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggYWZjMjNlZTUzZjEyLi40YjE5YjBkMWQzYzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTUyOSw3
ICs1MjksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRXZWJBdXRoblByb2Nlc3NDb25uZWN0
aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1BybwogYm9vbCBXZWJQcm9jZXNzUG9vbDo6
c191c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzID0gZmFsc2U7CiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkm
IHByb3h5LCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlv
bmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlk
ZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNo
U2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWdpc3RyYWJs
ZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGF1dG8qIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3Jl
OjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChzZXNzaW9uSUQpOwogICAgIGlmICghd2Vi
c2l0ZURhdGFTdG9yZSkKQEAgLTU0Niw3ICs1NDYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpl
c3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5l
dAogICAgIGlmIChzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIpIHsKICAgICAgICAgLy8gVGhp
cyBpcyBhIHNlcnZpY2Ugd29ya2VyIGZvciBhIHNlcnZpY2Ugd29ya2VyIHBhZ2Ugc28gd2UgbmVl
ZCB0byBtYWtlIHN1cmUgd2UgdXNlIHVzZSB0aGUgcGFnZSdzIFdlYlByb2Nlc3MgZm9yIHRoZSBz
ZXJ2aWNlIHdvcmtlci4KICAgICAgICAgaWYgKChzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0g
V2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VyUGFnZUlk
ZW50aWZpZXItPnByb2Nlc3NJZGVudGlmaWVyKCkpKSkgewotICAgICAgICAgICAgc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlU2VydmljZVdvcmtlcnMocHJvY2Vzc1Bvb2wtPnVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2aWNlV29ya2VycygpKTsKKyAgICAgICAg
ICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1By
b3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBwcm9jZXNzUG9vbC0+dXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CiAgICAgICAgICAgICBpZiAoc2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKSB7CiAgICAgICAgICAgICAg
ICAgcHJvY2Vzc1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nlc3MoKnNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NDYWNoZTo6U2hvdWxkU2h1dERvd25Qcm9jZXNz
OjpObyk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
LT5pc0luUHJvY2Vzc0NhY2hlKCkpOwpAQCAtNTY0LDcgKzU2NCw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoTmV0CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIHNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHkgPSBwcm9jZXNzLnB0cigpOwotICAgICAgICAgICAgc2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlU2VydmljZVdvcmtlcnMocHJvY2Vzc1Bvb2wtPnVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2aWNlV29ya2VycygpKTsKKyAgICAg
ICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVdvcmtlcnMoV2ViUHJvY2Vz
c1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBwcm9jZXNzUG9vbC0+dXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CiAKICAgICAgICAgICAgIGlmIChz
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpIHsKICAgICAgICAg
ICAgICAgICBwcm9jZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hlKCkucmVtb3ZlUHJvY2Vzcygqc2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0NhY2hlOjpTaG91bGRTaHV0RG93blBy
b2Nlc3M6Ok5vKTsKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3Rh
Ymxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldAog
ICAgIH0KIAogICAgIGlmICghc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSkgewotICAgICAgICBh
dXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yU2VydmljZVdv
cmtlcnMoKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFp
biB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIGF1dG8gbmV3UHJvY2Vzc1Byb3h5ID0g
V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2Vy
VHlwZTo6U2VydmljZVdvcmtlciwgKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiAgeyBy
ZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CiAgICAgICAgIHNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkgPSBuZXdQcm9jZXNzUHJveHkucHRyKCk7CiAKICAgICAgICAgV0VC
UFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElDKFNlcnZpY2VXb3JrZXIsICJlc3RhYmxpc2hT
ZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIGNyZWF0aW5nIGEg
bmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nlcz0lcCwgUElEPSVkKSIsIHNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHksIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPnByb2Nlc3NJZGVu
dGlmaWVyKCkpOwpAQCAtNTg2LDIwICs1ODYsNzAgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0
YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXQK
ICAgICAgICAgcHJvY2Vzc1Bvb2wtPm1fcHJvY2Vzc2VzLmFwcGVuZChXVEZNb3ZlKG5ld1Byb2Nl
c3NQcm94eSkpOwogICAgIH0KIAotICAgIEFTU0VSVCghc2VydmljZVdvcmtlclByb2Nlc3Nlcygp
LmNvbnRhaW5zKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KSk7Ci0gICAgc2VydmljZVdvcmtl
clByb2Nlc3NlcygpLmFkZCgqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSk7CisgICAgd29ya2Vy
UHJvY2Vzc2VzKCkuYWRkKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KTsKIAotICAgIHNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KHByb2Nl
c3NQb29sLT5tX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQb29sLT5tX3NlcnZp
Y2VXb3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVsdFBhZ2VH
cm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdv
cmtlclBhZ2VJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgaWYg
KCFwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQotICAgICAg
ICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KHBy
b2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQpOworICAgIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KHByb2Nlc3NQb29sLT5t
X3dvcmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5jZXMudmFs
dWUoKSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3Rv
cmUoKSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fd29ya2Vy
VXNlckFnZW50LmlzTnVsbCgpKQorICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5z
ZXRXb3JrZXJVc2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFnZW50KTsKIH0KKyNl
bmRpZgogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nl
c3NlcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1v
dmVGcm9tV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIHsKLSAgICBB
U1NFUlQoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmNvbnRhaW5zKHByb2Nlc3MpKTsKLSAgICBz
ZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkucmVtb3ZlKHByb2Nlc3MpOworICAgIEFTU0VSVCh3b3Jr
ZXJQcm9jZXNzZXMoKS5jb250YWlucyhwcm9jZXNzKSk7CisgICAgd29ya2VyUHJvY2Vzc2VzKCku
cmVtb3ZlKHByb2Nlc3MpOworfQorCit2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTaGFy
ZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
YXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0
b3JlRm9yU2Vzc2lvbklEKHNlc3Npb25JRCk7CisgICAgaWYgKCF3ZWJzaXRlRGF0YVN0b3JlKQor
ICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFT
dG9yZSgpLnB0cigpOworICAgIGlmICghcHJvY2Vzc1Bvb2xzKCkuc2l6ZSgpKQorICAgICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPFdlYlByb2Nlc3NQb29sPj4gc2hhcmVkV29ya2VyUHJv
Y2Vzc1Bvb2woV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbjo6Y3JlYXRlKCkuZ2V0KCkpKTsKKworICAgIC8vIEFyYml0cmFyaWx5IGNob29zZSB0aGUg
Zmlyc3QgcHJvY2VzcyBwb29sIHRvIGhvc3QgdGhlIHNoYXJlZCB3b3JrZXIgcHJvY2Vzcy4KKyAg
ICBhdXRvKiBwcm9jZXNzUG9vbCA9IHByb2Nlc3NQb29scygpWzBdOworICAgIEFTU0VSVChwcm9j
ZXNzUG9vbCk7CisKKyAgICBXZWJQcm9jZXNzUHJveHkqIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94
eSB7IG51bGxwdHIgfTsKKworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3NQb29sLT5t
X3Byb2Nlc3NlcykgeworICAgICAgICBpZiAocHJvY2Vzcy5wdHIoKSA9PSBwcm9jZXNzUG9vbC0+
bV9wcmV3YXJtZWRQcm9jZXNzLmdldCgpIHx8IHByb2Nlc3MtPmlzRHVtbXlQcm9jZXNzUHJveHko
KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoJnByb2Nlc3MtPndlYnNpdGVE
YXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIGlmICghcHJvY2Vzcy0+aXNNYXRjaGluZ1JlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJh
YmxlRG9tYWluKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHNoYXJlZFdvcmtl
clByb2Nlc3NQcm94eSA9IHByb2Nlc3MucHRyKCk7CisgICAgICAgIHNoYXJlZFdvcmtlclByb2Nl
c3NQcm94eS0+ZW5hYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJl
ZFdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JX
b3JrZXJzKCkpOworCisgICAgICAgIGlmIChzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Q
cm9jZXNzQ2FjaGUoKSkgeworICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPndlYlByb2Nlc3NDYWNo
ZSgpLnJlbW92ZVByb2Nlc3MoKnNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0Nh
Y2hlOjpTaG91bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKKyAgICAgICAgICAgIEFTU0VSVCghc2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpOworICAgICAgICB9CisK
KyAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElDKFNoYXJlZFdvcmtlciwg
ImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyBy
ZXVzaW5nIGFuIGV4aXN0aW5nIHdlYiBwcm9jZXNzIChwcm9jZXNzPSVwLCBQSUQ9JWQpIiwgc2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5LCBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPnByb2Nlc3NJ
ZGVudGlmaWVyKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoIXNoYXJlZFdv
cmtlclByb2Nlc3NQcm94eSkgeworICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlBy
b2Nlc3NQcm94eTo6Y3JlYXRlRm9yV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6
OlNoYXJlZFdvcmtlciwgKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiAgeyByZWdpc3Ry
YWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIHNoYXJlZFdvcmtlclBy
b2Nlc3NQcm94eSA9IG5ld1Byb2Nlc3NQcm94eS5wdHIoKTsKKworICAgICAgICBXRUJQUk9DRVNT
UE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIGNyZWF0aW5nIGEgbmV3IHNlcnZp
Y2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nlc3M9JXAsIFBJRD0lZCkiLCBzaGFyZWRXb3JrZXJQcm9j
ZXNzUHJveHksIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7
CisKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmluaXRpYWxpemVOZXdXZWJQcm9jZXNzKG5ld1Byb2Nl
c3NQcm94eSwgd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIHByb2Nlc3NQb29sLT5tX3Byb2Nl
c3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdQcm9jZXNzUHJveHkpKTsKKyAgICB9CisKKyAgICB3b3Jr
ZXJQcm9jZXNzZXMoKS5hZGQoKnNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSk7CisKKyAgICBzaGFy
ZWRXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHQocHJvY2Vz
c1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNzUG9vbC0+bV93b3JrZXJQcmVmZXJl
bmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5j
ZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJsZURvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQor
ICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPnNldFdvcmtlclVzZXJBZ2VudChwcm9j
ZXNzUG9vbC0+bV93b3JrZXJVc2VyQWdlbnQpOwogfQotI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKQogewpAQCAtMTAwMywx
MCArMTA1Myw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlBy
b2Nlc3NQcm94eSYgcHJvY2VzcykKIAogICAgIG1fYmFja0ZvcndhcmRDYWNoZS0+cmVtb3ZlRW50
cmllc0ZvclByb2Nlc3MocHJvY2Vzcyk7CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0g
ICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKLSAgICAgICAgcmVtb3Zl
RnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7Ci0jZW5kaWYKKyAgICBpZiAocHJv
Y2Vzcy5pc1J1bm5pbmdXb3JrZXJzKCkpCisgICAgICAgIHJlbW92ZUZyb21Xb3JrZXJQcm9jZXNz
ZXMocHJvY2Vzcyk7CiAKICAgICBzdGF0aWNfY2FzdDxXZWJDb250ZXh0U3VwcGxlbWVudCo+KHN1
cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpLT5wcm9jZXNzRGlkQ2xvc2Uo
JnByb2Nlc3MpOwogCkBAIC0xMDY3LDEyICsxMTE1LDEyIEBAIFJlZjxXZWJQcm9jZXNzUHJveHk+
IFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4oV2Vic2l0ZURhdGFT
dG9yCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1Vc2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyIFdlYlByb2Nlc3NQb29sOjp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyRm9yU2VydmljZVdvcmtlcnMoKQorVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBX
ZWJQcm9jZXNzUG9vbDo6dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMo
KQogewotICAgIGlmICghbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyKQot
ICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclNlcnZpY2VXb3JrZXIgPSBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKCk7CisgICAgaWYgKCFtX3VzZXJDb250ZW50
Q29udHJvbGxlckZvcldvcmtlcnMpCisgICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9y
V29ya2VycyA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpjcmVhdGUoKTsKIAotICAg
IHJldHVybiBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclNlcnZpY2VXb3JrZXItPmlkZW50aWZp
ZXIoKTsKKyAgICByZXR1cm4gbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JXb3JrZXJzLT5pZGVu
dGlmaWVyKCk7CiB9CiAjZW5kaWYKIApAQCAtMTExOSwxNSArMTE2NywxMyBAQCBSZWY8V2ViUGFn
ZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xp
ZW50LCBSZWY8QVBJOgogCiAgICAgYXV0byBwYWdlID0gcHJvY2Vzcy0+Y3JlYXRlV2ViUGFnZShw
YWdlQ2xpZW50LCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAKLSNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCi0gICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcykgewotICAg
ICAgICBtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA9IHBhZ2UtPnByZWZlcmVuY2VzU3RvcmUo
KTsKLSAgICAgICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzZXMoKSkKLSAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzLnVwZGF0ZVNl
cnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKCptX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyk7
CisgICAgaWYgKCFtX3dvcmtlclByZWZlcmVuY2VzKSB7CisgICAgICAgIG1fd29ya2VyUHJlZmVy
ZW5jZXMgPSBwYWdlLT5wcmVmZXJlbmNlc1N0b3JlKCk7CisgICAgICAgIGZvciAoYXV0byYgd29y
a2VyUHJvY2VzcyA6IHdvcmtlclByb2Nlc3NlcygpKQorICAgICAgICAgICAgd29ya2VyUHJvY2Vz
cy51cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKCptX3dvcmtlclByZWZlcmVuY2VzKTsKICAg
ICB9CiAgICAgaWYgKHVzZXJDb250ZW50Q29udHJvbGxlcikKLSAgICAgICAgbV91c2VyQ29udGVu
dENvbnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyID0gdXNlckNvbnRlbnRDb250cm9sbGVyOwotI2Vu
ZGlmCisgICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2VycyA9IHVzZXJDb250
ZW50Q29udHJvbGxlcjsKIAogICAgIGJvb2wgZW5hYmxlUHJvY2Vzc1N3YXBPbkNyb3NzU2l0ZU5h
dmlnYXRpb24gPSBwYWdlLT5wcmVmZXJlbmNlcygpLnByb2Nlc3NTd2FwT25Dcm9zc1NpdGVOYXZp
Z2F0aW9uRW5hYmxlZCgpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0xMTUwLDE2ICsx
MTk2LDE0IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdl
KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAgICAgcmV0dXJuIHBhZ2U7CiB9CiAK
LSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVT
ZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQordm9pZCBXZWJQ
cm9jZXNzUG9vbDo6dXBkYXRlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50
KQogewotICAgIGlmIChtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQgPT0gdXNlckFnZW50KQorICAg
IGlmIChtX3dvcmtlclVzZXJBZ2VudCA9PSB1c2VyQWdlbnQpCiAgICAgICAgIHJldHVybjsKLSAg
ICBtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQgPSB1c2VyQWdlbnQ7Ci0gICAgZm9yIChhdXRvJiBz
ZXJ2aWNlV29ya2VyUHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSkKLSAgICAgICAg
c2VydmljZVdvcmtlclByb2Nlc3Muc2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChtX3NlcnZpY2VX
b3JrZXJVc2VyQWdlbnQpOworICAgIG1fd29ya2VyVXNlckFnZW50ID0gdXNlckFnZW50OworICAg
IGZvciAoYXV0byYgd29ya2VyUHJvY2VzcyA6IHdvcmtlclByb2Nlc3NlcygpKQorICAgICAgICB3
b3JrZXJQcm9jZXNzLnNldFdvcmtlclVzZXJBZ2VudChtX3dvcmtlclVzZXJBZ2VudCk7CiB9Ci0j
ZW5kaWYKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0
b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRh
U3RvcmUpCiB7CkBAIC0xNTM4LDggKzE1ODIsMTMgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dGVy
bWluYXRlU2VydmljZVdvcmtlcnMoKQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07Ci0gICAgd2hpbGUgKHNlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMoKS5jb21wdXRlU2l6ZSgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
KCkuYmVnaW4oKS0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgVmVjdG9yPFJlZjxXZWJQ
cm9jZXNzUHJveHk+PiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOworICAgIHdvcmtlclByb2Nlc3Nl
cygpLmZvckVhY2goWyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICAgICAgaWYgKHByb2Nlc3MuaXNS
dW5uaW5nU2VydmljZVdvcmtlcnMoKSkKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNz
ZXMuYXBwZW5kKHByb2Nlc3MpOworICAgIH0pOworICAgIGZvciAoYXV0byYgc2VydmljZVdvcmtl
clByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKQorICAgICAgICBzZXJ2aWNlV29ya2Vy
UHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2
aWNlV29ya2VyKTsKICNlbmRpZgogfQogCkBAIC0xNzY3LDEzICsxODE2LDExIEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnJlcG9ydFdlYkNvbnRlbnRDUFVUaW1lKFNlY29uZHMgY3B1VGltZSwgdWlu
dDY0X3QgYWN0aXZpdHlTCiAjZW5kaWYKIH0KIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
LVdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIFdlYlByb2Nlc3NQb29sOjpzZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzKCkKK1dlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIFdlYlByb2Nlc3NQ
b29sOjp3b3JrZXJQcm9jZXNzZXMoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXZWFr
SGFzaFNldDxXZWJQcm9jZXNzUHJveHk+PiBwcm9jZXNzZXM7CiAgICAgcmV0dXJuIHByb2Nlc3Nl
czsKIH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0
aW9ucygpCiB7CkBAIC0xNzg1LDIwICsxODMyLDI1IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVw
ZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkKICAgICBpZiAoYXV0byogZ3B1UHJvY2VzcyA9IEdQVVBy
b2Nlc3NQcm94eTo6c2luZ2xldG9uSWZDcmVhdGVkKCkpCiAgICAgICAgIGdwdVByb2Nlc3MtPnVw
ZGF0ZVByb2Nlc3NBc3NlcnRpb24oKTsKICNlbmRpZgotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKKwogICAgIC8vIENoZWNrIG9uIG5leHQgcnVuIGxvb3Agc2luY2UgdGhlIHdlYiBwcm9jZXNz
IHByb3h5IHRva2VucyBhcmUgcHJvYmFibHkgYmVpbmcgdXBkYXRlZC4KICAgICBjYWxsT25NYWlu
UnVuTG9vcChbXSB7Ci0gICAgICAgIGZvciAoYXV0byYgc2VydmljZVdvcmtlclByb2Nlc3MgOiBz
ZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkpCi0gICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vz
cy51cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOwotICAgIH0pOworICAgICAg
ICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFtdKGF1dG8mIHdvcmtlclByb2Nlc3MpIHsKKyNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgICAgICAgICBpZiAod29ya2VyUHJvY2Vzcy5p
c1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQorICAgICAgICAgICAgICAgIHdvcmtlclByb2Nlc3Mu
dXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6
OlNlcnZpY2VXb3JrZXIpOwogI2VuZGlmCisgICAgICAgICAgICBpZiAod29ya2VyUHJvY2Vzcy5p
c1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkpCisgICAgICAgICAgICAgICAgd29ya2VyUHJvY2Vzcy51
cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6
U2hhcmVkV29ya2VyKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vz
c1Bvb2w6OmlzU2VydmljZVdvcmtlclBhZ2VJRChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJ
RCkgY29uc3QKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgLy8gRklYTUU6IFRo
aXMgaXMgaW5lZmZpY2llbnQuCi0gICAgcmV0dXJuIFdURjo6YW55T2Yoc2VydmljZVdvcmtlclBy
b2Nlc3NlcygpLCBbcGFnZUlEXShhdXRvJiBwcm9jZXNzKSB7CisgICAgcmV0dXJuIFdURjo6YW55
T2Yod29ya2VyUHJvY2Vzc2VzKCksIFtwYWdlSURdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAg
cmV0dXJuIHByb2Nlc3MuaGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShwYWdlSUQpOwogICAgIH0p
OwogI2VuZGlmCkBAIC0yMTI0LDE2ICsyMTc2LDI2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNl
dFVzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoYm9vbCB1c2VTZXBhcmF0ZVNlcnZpY2VX
CiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCitzaXplX3QgV2ViUHJvY2Vzc1Bvb2w6
OnNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25zdAoreworICAgIHVuc2lnbmVkIGNvdW50
ID0gMDsKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFsmXShhdXRvJiBwcm9jZXNzKSB7
CisgICAgICAgIGlmIChwcm9jZXNzLmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCisgICAgICAg
ICAgICArK2NvdW50OworICAgIH0pOworICAgIHJldHVybiBjb3VudDsKK30KKwogYm9vbCBXZWJQ
cm9jZXNzUG9vbDo6aGFzU2VydmljZVdvcmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3Rpbmco
KSBjb25zdAogewotICAgIHJldHVybiBXVEY6OmFueU9mKHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMo
KSwgW10oYXV0byYgcHJvY2VzcykgeworICAgIHJldHVybiBXVEY6OmFueU9mKHdvcmtlclByb2Nl
c3NlcygpLCBbXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiBwcm9jZXNzLmhhc1Nl
cnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCk7CiAgICAgfSk7CiB9CiAK
IGJvb2wgV2ViUHJvY2Vzc1Bvb2w6Omhhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kQWN0aXZpdHlG
b3JUZXN0aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjphbnlPZihzZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICByZXR1cm4gV1RGOjphbnlPZih3
b3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2VzcykgewogICAgICAgICByZXR1cm4gcHJv
Y2Vzcy5oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpOwogICAg
IH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggZWI2
NmQ4OTQ5MGRmLi5lNzBiNmY0MjlmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaApAQCAtMzc0LDE3ICszNzQsMjAgQEAgcHVibGljOgogICAgIHZvaWQgbmV0d29y
a1Byb2Nlc3NEaWRUZXJtaW5hdGUoTmV0d29ya1Byb2Nlc3NQcm94eSYsIE5ldHdvcmtQcm9jZXNz
UHJveHk6OlRlcm1pbmF0aW9uUmVhc29uKTsKIAogICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyUGFn
ZUlEKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpIGNvbnN0OworICAgIHZvaWQgcmVtb3ZlRnJvbVdv
cmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmKTsKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKLSAgICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgcmVtb3ZlRnJvbVNl
cnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5Jik7Ci0gICAgc2l6ZV90IHNlcnZp
Y2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25zdCB7IHJldHVybiBzZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzKCkuY29tcHV0ZVNpemUoKTsgfQotICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtlclVzZXJB
Z2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCk7Ci0gICAgVXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllciB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtl
cnMoKTsKKyAgICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZp
Y2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CisgICAgc2l6ZV90IHNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25z
dDsKKyAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVzZXJDb250ZW50Q29udHJv
bGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCk7CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyRm9y
ZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0OwogICAgIGJvb2wgaGFzU2VydmljZVdv
cmtlckJhY2tncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdDsKICNlbmRpZgogICAgIHZv
aWQgc2VydmljZVdvcmtlclByb2Nlc3NDcmFzaGVkKFdlYlByb2Nlc3NQcm94eSYpOwogCisgICAg
dm9pZCB1cGRhdGVXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpOworICAg
IHN0YXRpYyB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgpIGNvbnN0OwogI2VuZGlmCkBAIC02MTgs
MTMgKzYyMSwxMSBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgV2Vh
a1B0cjxXZWJQcm9jZXNzUHJveHk+PiBtX2R1bW15UHJvY2Vzc1Byb3hpZXM7IC8vIExpZ2h0d2Vp
Z2h0IFdlYlByb2Nlc3NQcm94eSBvYmplY3RzIHdpdGhvdXQgYmFja2luZyBwcm9jZXNzLgogCi0j
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHN0YXRpYyBXZWFrSGFzaFNldDxXZWJQcm9j
ZXNzUHJveHk+JiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCk7Ci0gICAgYm9vbCBtX3dhaXRpbmdG
b3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24geyBmYWxzZSB9OwotICAgIFN0cmluZyBt
X3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQ7Ci0gICAgc3RkOjpvcHRpb25hbDxXZWJQcmVmZXJlbmNl
c1N0b3JlPiBtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlczsKLSAgICBSZWZQdHI8V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk+IG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yU2VydmljZVdv
cmtlcjsKLSNlbmRpZgorICAgIHN0YXRpYyBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+JiB3
b3JrZXJQcm9jZXNzZXMoKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8V2ViUHJlZmVyZW5jZXNTdG9y
ZT4gbV93b3JrZXJQcmVmZXJlbmNlczsKKyAgICBSZWZQdHI8V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk+IG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2VyczsKKyAgICBTdHJpbmcg
bV93b3JrZXJVc2VyQWdlbnQ7CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgUmVmUHRy
PEdQVVByb2Nlc3NQcm94eT4gbV9ncHVQcm9jZXNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggMDU3ZDQ5OTI0MThhLi5iNzQ2YTdkN2QyMTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTksNiAr
NTksNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFGZXRj
aE9wdGlvbi5oIgpAQCAtMTgyLDExICsxODMsMTEgQEAgUmVmPFdlYlByb2Nlc3NQcm94eT4gV2Vi
UHJvY2Vzc1Byb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJzaXQK
IH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLVJlZjxXZWJQcm9jZXNzUHJveHk+IFdl
YlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMoV2ViUHJvY2Vzc1Bvb2wmIHBy
b2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRl
RGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQorUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJv
Y2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdvcmtlclR5cGUgd29ya2VyVHlwZSwgV2ViUHJv
Y2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9t
YWluLCBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQogewogICAgIGF1dG8gcHJv
eHkgPSBhZG9wdFJlZigqbmV3IFdlYlByb2Nlc3NQcm94eShwcm9jZXNzUG9vbCwgJndlYnNpdGVE
YXRhU3RvcmUsIElzUHJld2FybWVkOjpObywgQ3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQsIENhcHRp
dmVQb3J0YWxNb2RlOjpEaXNhYmxlZCkpOwogICAgIHByb3h5LT5tX3JlZ2lzdHJhYmxlRG9tYWlu
ID0gV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgcHJveHktPmVuYWJsZVNlcnZpY2VX
b3JrZXJzKHByb2Nlc3NQb29sLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2
aWNlV29ya2VycygpKTsKKyAgICBwcm94eS0+ZW5hYmxlV29ya2Vycyh3b3JrZXJUeXBlLCBwcm9j
ZXNzUG9vbC51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpKTsKICAg
ICBwcm94eS0+Y29ubmVjdCgpOwogICAgIHJldHVybiBwcm94eTsKIH0KQEAgLTk5NSwxMCArOTk2
LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUoKQogICAg
IGZvciAoYXV0byYgY2FsbGJhY2sgOiBpc1Jlc3BvbnNpdmVDYWxsYmFja3MpCiAgICAgICAgIGNh
bGxiYWNrKGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUpOwogCi0gICAgLy8gSWYgdGhlIHdlYiBwcm9j
ZXNzIGJlY29tZXMgdW5yZXNwb25zaXZlIGFuZCBvbmx5IHJ1bnMgc2VydmljZSB3b3JrZXJzLCBr
aWxsIGl0IG91cnNlbHZlcyBzaW5jZSB0aGVyZSBhcmUgbm8gbmF0aXZlIGNsaWVudHMgdG8gZG8g
aXQuCi0gICAgaWYgKGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkgJiYgbV9wYWdlTWFwLmlzRW1w
dHkoKSkgewotICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUGVyZm9y
bWFuY2VMb2dnaW5nLCAiZGlkQmVjb21lVW5yZXNwb25zaXZlOiBUZXJtaW5hdGluZyBzZXJ2aWNl
IHdvcmtlci1vbmx5IHdlYiBwcm9jZXNzIGJlY2F1c2UgaXQgaXMgdW5yZXNwb25zaXZlIik7Ci0g
ICAgICAgIGRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgIC8vIElmIHRoZSB3ZWIgcHJvY2Vz
cyBiZWNvbWVzIHVucmVzcG9uc2l2ZSBhbmQgb25seSBydW5zIHNlcnZpY2Uvc2hhcmVkIHdvcmtl
cnMsIGtpbGwgaXQgb3Vyc2VsdmVzIHNpbmNlIHRoZXJlIGFyZSBubyBuYXRpdmUgY2xpZW50cyB0
byBkbyBpdC4KKyAgICBpZiAoaXNSdW5uaW5nV29ya2VycygpICYmIG1fcGFnZU1hcC5pc0VtcHR5
KCkpIHsKKyAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HX0VSUk9SKFBlcmZvcm1h
bmNlTG9nZ2luZywgImRpZEJlY29tZVVucmVzcG9uc2l2ZTogVGVybWluYXRpbmcgd29ya2VyLW9u
bHkgd2ViIHByb2Nlc3MgYmVjYXVzZSBpdCBpcyB1bnJlc3BvbnNpdmUiKTsKKyAgICAgICAgZGlz
YWJsZVdvcmtlcnMoeyBXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBXb3JrZXJUeXBlOjpTaGFy
ZWRXb3JrZXIgfSk7CiAgICAgICAgIHRlcm1pbmF0ZSgpOwogICAgIH0KIH0KQEAgLTE2OTQsOCAr
MTY5NSw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ck1haW5GcmFtZShjb25zdCBVUkwmIHVybCkKICAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0g
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfTsKICAgICBpZiAobV9yZWdpc3RyYWJs
ZURvbWFpbiAmJiAqbV9yZWdpc3RyYWJsZURvbWFpbiAhPSByZWdpc3RyYWJsZURvbWFpbikgewog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICAgICAgZGlzYWJsZVNlcnZpY2VXb3JrZXJz
KCk7CisgICAgICAgIGRpc2FibGVXb3JrZXJzKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwog
I2VuZGlmCisKICAgICAgICAgLy8gTnVsbCBvdXQgcmVnaXN0cmFibGUgZG9tYWluIHNpbmNlIHRo
aXMgcHJvY2VzcyBoYXMgbm93IGJlZW4gdXNlZCBmb3Igc2V2ZXJhbCBkb21haW5zLgogICAgICAg
ICBtX3JlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB9Owog
ICAgICAgICByZXR1cm47CkBAIC0xODcyLDU0ICsxODc0LDg1IEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJiBzCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSwgMCk7CiB9CisjZW5k
aWYKIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldFNlcnZpY2VXb3JrZXJVc2VyQWdlbnQoY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0V29ya2VyVXNl
ckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQogewotICAgIEFTU0VSVChtX3NlcnZpY2VX
b3JrZXJJbmZvcm1hdGlvbik7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OlNldFVzZXJBZ2VudCB7IHVzZXJBZ2VudCB9LCAwKTsKKyNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCisgICAgaWYgKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQorICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U2V0VXNl
ckFnZW50IHsgdXNlckFnZW50IH0sIDApOworI2VuZGlmCisgICAgaWYgKG1fc2hhcmVkV29ya2Vy
SW5mb3JtYXRpb24pCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6U2V0VXNlckFnZW50IHsgdXNlckFnZW50IH0sIDApOwogfQog
Ci12b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlU2VydmljZVdvcmtlclByZWZlcmVuY2VzU3Rv
cmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCit2b2lkIFdlYlByb2Nlc3NQcm94
eTo6dXBkYXRlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3Jl
JiBzdG9yZSkKIHsKLSAgICBBU1NFUlQobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pOwotICAg
IHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpVcGRhdGVQcmVm
ZXJlbmNlc1N0b3JlIHsgc3RvcmUgfSwgMCk7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQor
ICAgIGlmIChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKKyAgICAgICAgc2VuZChNZXNzYWdl
czo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZVByZWZlcmVuY2VzU3RvcmUg
eyBzdG9yZSB9LCAwKTsKKyNlbmRpZgorICAgIGlmIChtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9u
KQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OlVwZGF0ZVByZWZlcmVuY2VzU3RvcmUgeyBzdG9yZSB9LCAwKTsKIH0KIAotdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCkK
K3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtl
clR5cGUgd29ya2VyVHlwZSkKIHsKLSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJv
Y2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbjoiKTsK
LSAgICBBU1NFUlQobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pOwotICAgIGlmICghbV9zZXJ2
aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAgYXV0byYgd29ya2VySW5mb3JtYXRpb24gPSB3b3Jr
ZXJUeXBlID09IFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/IG1fc2hhcmVkV29ya2VySW5mb3Jt
YXRpb24gOiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsKKyAgICBBU1NFUlQod29ya2VySW5m
b3JtYXRpb24pOworICAgIGlmICghd29ya2VySW5mb3JtYXRpb24pCiAgICAgICAgIHJldHVybjsK
IAotICAgIGJvb2wgc2hvdWxkVGFrZUZvcmVncm91bmRBY3Rpdml0eSA9IFdURjo6YW55T2YobV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3NlcywgWyZdKGF1dG8mIHByb2Nl
c3MpIHsKKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24s
ICJ1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uOiB3b3JrZXJUeXBlPSV7cHVibGljfXMiLCB3
b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/ICJzaGFyZWQiIDogInNlcnZp
Y2UiKTsKKworICAgIC8vIEZJWE1FOiBDbGllbnRzIGRvIG5vdCBwcm9wZXJseSBnZXQgcG9wdWxh
dGVkIGluIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gc28gd2UgY3VycmVudGx5IHRha2UgYW4g
YXNzZXJ0aW9uIG5vIG1hdHRlciB3aGF0LgorICAgIGlmICh3b3JrZXJUeXBlID09IFdvcmtlclR5
cGU6OlNoYXJlZFdvcmtlcikgeworICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFs
aWRGb3JlZ3JvdW5kQWN0aXZpdHkod29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKKyAgICAg
ICAgICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmZvcmVncm91
bmRBY3Rpdml0eSgiV29ya2VyIGZvciBmb3JlZ3JvdW5kIHZpZXcocykiX3MpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgYm9vbCBzaG91bGRUYWtlRm9yZWdyb3VuZEFjdGl2aXR5ID0g
V1RGOjphbnlPZih3b3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2VzLCBbJl0oYXV0byYg
cHJvY2VzcykgewogICAgICAgICByZXR1cm4gJnByb2Nlc3MgIT0gdGhpcyAmJiAhIXByb2Nlc3Mu
bV9mb3JlZ3JvdW5kVG9rZW47CiAgICAgfSk7CiAgICAgaWYgKHNob3VsZFRha2VGb3JlZ3JvdW5k
QWN0aXZpdHkpIHsKLSAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkRm9yZWdy
b3VuZEFjdGl2aXR5KG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCi0gICAg
ICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxl
ci5mb3JlZ3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2VyIGZvciBmb3JlZ3JvdW5kIHZpZXco
cykiX3MpOworICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRGb3JlZ3JvdW5k
QWN0aXZpdHkod29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKKyAgICAgICAgICAgIHdvcmtl
ckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmZvcmVncm91bmRBY3Rpdml0eSgi
V29ya2VyIGZvciBmb3JlZ3JvdW5kIHZpZXcocykiX3MpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgYm9vbCBzaG91bGRUYWtlQmFja2dyb3VuZEFjdGl2aXR5ID0gV1RGOjphbnlPZiht
X3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2VzLCBbJl0oYXV0byYgcHJv
Y2VzcykgeworICAgIGJvb2wgc2hvdWxkVGFrZUJhY2tncm91bmRBY3Rpdml0eSA9IFdURjo6YW55
T2Yod29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3NlcywgWyZdKGF1dG8mIHByb2Nlc3Mp
IHsKICAgICAgICAgcmV0dXJuICZwcm9jZXNzICE9IHRoaXMgJiYgISFwcm9jZXNzLm1fYmFja2dy
b3VuZFRva2VuOwogICAgIH0pOwogICAgIGlmIChzaG91bGRUYWtlQmFja2dyb3VuZEFjdGl2aXR5
KSB7Ci0gICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEJhY2tncm91bmRBY3Rp
dml0eShtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQotICAgICAgICAgICAg
bV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuYmFja2dy
b3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3IgYmFja2dyb3VuZCB2aWV3KHMpIl9zKTsK
KyAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5
KHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCisgICAgICAgICAgICB3b3JrZXJJbmZvcm1h
dGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIldvcmtlciBm
b3IgYmFja2dyb3VuZCB2aWV3KHMpIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGlmIChtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZykgeworICAgIGlmICh3
b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIgJiYgbV9oYXNTZXJ2aWNlV29y
a2VyQmFja2dyb3VuZFByb2Nlc3NpbmcpIHsKICAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVB
U0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tncm91bmQg
cHJvY2Vzc2luZyIpOwotICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRCYWNr
Z3JvdW5kQWN0aXZpdHkobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKLSAg
ICAgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0
bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tncm91bmQgcHJv
Y2Vzc2luZyJfcyk7CisgICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEJhY2tn
cm91bmRBY3Rpdml0eSh3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQorICAgICAgICAgICAg
d29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2
aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3IgYmFja2dyb3VuZCBwcm9jZXNzaW5nIl9zKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rp
dml0eSA9IG51bGxwdHI7CisgICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbnVsbHB0
cjsKK30KKwordm9pZCBXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRl
eHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiByZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTaGFyZWRX
b3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0OiBTdGFydGVkIik7CisgICAgbWFy
a1Byb2Nlc3NBc1JlY2VudGx5VXNlZCgpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViUHJvY2Vzczo6RXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bvb2woKS5kZWZhdWx0UGFnZUdyb3VwKCkucGFnZUdyb3Vw
SUQoKSwgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbi0+cmVtb3RlV29ya2VyUGFnZVByb3h5SUQs
IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24tPnJlbW90ZVdvcmtlclBhZ2VJRCwgc3RvcmUsIHJl
Z2lzdHJhYmxlRG9tYWluLCBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uLT5pbml0aWFsaXphdGlv
bkRhdGEgfSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAg
IGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhT
aGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0OiBGaW5pc2hlZCIpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0sIDApOwogfQogCisjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQorCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVnaXN0ZXJTZXJ2aWNl
V29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb3h5KQogewogICAgIGlmICgh
bV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCkBAIC0xOTI3LDcgKzE5NjAsNyBAQCB2b2lkIFdl
YlByb2Nlc3NQcm94eTo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9j
ZXNzUHJveHkmIHByb3h5KQogCiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNlcnZp
Y2VXb3JrZXIsICJyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzOiBjbGllbnRQcm9j
ZXNzPSVwLCBjbGllbnRQSUQ9JWQiLCAmcHJveHksIHByb3h5LnByb2Nlc3NJZGVudGlmaWVyKCkp
OwogICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMuYWRkKHBy
b3h5KTsKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOworICAgIHVw
ZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9
CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFBy
b2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKQEAgLTE5MzcsNyArMTk3MCw3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5Ojp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2Vi
UHJvY2Vzc1Byb3h5JiBwcm94CiAKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2Vy
dmljZVdvcmtlciwgInVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzczogY2xpZW50
UHJvY2Vzcz0lcCwgY2xpZW50UElEPSVkIiwgJnByb3h5LCBwcm94eS5wcm9jZXNzSWRlbnRpZmll
cigpKTsKICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2VzLnJl
bW92ZShwcm94eSk7Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsK
KyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VXb3Jr
ZXIpOwogfQogCiBib29sIFdlYlByb2Nlc3NQcm94eTo6aGFzU2VydmljZVdvcmtlckZvcmVncm91
bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdApAQCAtMTk1Nyw3ICsxOTkwLDcgQEAgdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OnN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKCkK
IAogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInN0
YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nIik7CiAgICAgbV9oYXNTZXJ2aWNl
V29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcgPSB0cnVlOwotICAgIHVwZGF0ZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihX
b3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVu
ZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZygpCkBAIC0xOTY3LDIzICsyMDAwLDM5
IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nl
c3NpbmcoKQogCiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5z
aW9uLCAiZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nIik7CiAgICAgbV9oYXNT
ZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcgPSBmYWxzZTsKLSAgICB1cGRhdGVTZXJ2
aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOworICAgIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3Nl
cnRpb24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlzYWJsZVNlcnZpY2VXb3Jr
ZXJzKCkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaXNhYmxlV29ya2VycyhPcHRpb25TZXQ8V29y
a2VyVHlwZT4gd29ya2VyVHlwZSkKIHsKLSAgICBpZiAoIW1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uKQorICAgIEFTU0VSVCghd29ya2VyVHlwZS5pc0VtcHR5KCkpOworCisgICAgYm9vbCBkaWRD
aGFuZ2UgPSBmYWxzZTsKKyAgICBpZiAod29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpT
ZXJ2aWNlV29ya2VyKSAmJiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikgeworICAgICAgICBt
X3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiA9IHsgfTsKKyAgICAgICAgZGlkQ2hhbmdlID0gdHJ1
ZTsKKyAgICB9CisgICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2hhcmVk
V29ya2VyKSAmJiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uKSB7CisgICAgICAgIG1fc2hhcmVk
V29ya2VySW5mb3JtYXRpb24gPSB7IH07CisgICAgICAgIGRpZENoYW5nZSA9IHRydWU7CisgICAg
fQorICAgIGlmICghZGlkQ2hhbmdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBXRUJQUk9DRVNT
UFJPWFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgImRpc2FibGVTZXJ2aWNlV29ya2Vyczoi
KTsKLSAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiA9IHsgfTsKKyAgICBXRUJQUk9DRVNT
UFJPWFlfUkVMRUFTRV9MT0coUHJvY2VzcywgImRpc2FibGVXb3JrZXJzOiBEaXNhYmxpbmcgd29y
a2VycyAoU2hhcmVkV29ya2Vycz0lZCwgU2VydmljZVdvcmtlcnM9JWQpIiwgd29ya2VyVHlwZS5j
b250YWlucyhXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpLCB3b3JrZXJUeXBlLmNvbnRhaW5zKFdv
cmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpKTsKKwogICAgIHVwZGF0ZUJhY2tncm91bmRSZXNwb25z
aXZlbmVzc1RpbWVyKCk7CiAKKyAgICBpZiAoIWlzUnVubmluZ1dvcmtlcnMoKSkKKyAgICAgICAg
cHJvY2Vzc1Bvb2woKS5yZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKCp0aGlzKTsKKwogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBwcm9jZXNzUG9vbCgpLnJlbW92ZUZyb21TZXJ2aWNl
V29ya2VyUHJvY2Vzc2VzKCp0aGlzKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6Q2xvc2UgeyB9LCAwKTsKKyAgICBpZiAod29ya2VyVHlwZS5jb250
YWlucyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNsb3NlIHsgfSwgMCk7CiAjZW5kaWYKKyAg
ICBpZiAod29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpKQorICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OkNsb3NlIHsgfSwgMCk7CiAKICAgICBtYXliZVNodXREb3duKCk7CiB9CkBAIC0yMDA0LDEx
ICsyMDUzLDEzIEBAIHN0YXRpYyBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvbXBpbGVkQ29udGVudFJ1
bGVMaXN0RGF0YSwgVVJMPj4gY29udGVudFJ1bGVMaXN0c0ZyCiB9CiAjZW5kaWYKIAotdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OmVuYWJsZVNlcnZpY2VXb3JrZXJzKGNvbnN0IFVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXImIHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpCit2b2lk
IFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlV29ya2VycyhXb3JrZXJUeXBlIHdvcmtlclR5cGUsIGNv
bnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImIHVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXIpCiB7Ci0gICAgQVNTRVJUKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbik7
Ci0gICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJlbmFibGVT
ZXJ2aWNlV29ya2VyczoiKTsKLSAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiA9IFJlbW90
ZVdvcmtlckluZm9ybWF0aW9uIHsKKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2Vy
dmljZVdvcmtlciwgImVuYWJsZVdvcmtlcnM6IHdvcmtlclR5cGU9JXUiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4od29ya2VyVHlwZSkpOworICAgIGF1dG8mIHdvcmtlckluZm9ybWF0aW9uID0gd29y
a2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyBtX3NoYXJlZFdvcmtlckluZm9y
bWF0aW9uIDogbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247CisgICAgQVNTRVJUKCF3b3JrZXJJ
bmZvcm1hdGlvbik7CisKKyAgICB3b3JrZXJJbmZvcm1hdGlvbiA9IFJlbW90ZVdvcmtlckluZm9y
bWF0aW9uIHsKICAgICAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwKICAg
ICAgICAgUGFnZUlkZW50aWZpZXI6OmdlbmVyYXRlKCksCiAgICAgICAgIFJlbW90ZVdvcmtlcklu
aXRpYWxpemF0aW9uRGF0YSB7CkBAIC0yMDIxLDkgKzIwNzIsOCBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6ZW5hYmxlU2VydmljZVdvcmtlcnMoY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllcgogICAgICAgICB7IH0KICAgICB9OwogICAgIHVwZGF0ZUJhY2tncm91bmRSZXNwb25z
aXZlbmVzc1RpbWVyKCk7Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHVwZGF0ZVNl
cnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKKworICAgIHVwZGF0ZVdvcmtl
clByb2Nlc3NBc3NlcnRpb24od29ya2VyVHlwZSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpkaWRDcmVhdGVTbGVlcERpc2FibGVyKFNsZWVwRGlzYWJsZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgcmVhc29uLCBib29sIGRpc3BsYXkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGY4Yjc5NWIxZDM0My4uNzBlODkwNTFjY2Ji
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMTM2LDkg
KzEzNiwxMyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZExhdW5jaFByb2Nlc3Mg
OiBib29sIHsgTm8sIFllcyB9OwogICAgIGVudW0gY2xhc3MgQ2FwdGl2ZVBvcnRhbE1vZGUgOiBi
b29sIHsgRGlzYWJsZWQsIEVuYWJsZWQgfTsKKyAgICBlbnVtIGNsYXNzIFdvcmtlclR5cGUgOiB1
aW50MzJfdCB7CisgICAgICAgIFNlcnZpY2VXb3JrZXIgPSAxIDw8IDAsCisgICAgICAgIFNoYXJl
ZFdvcmtlciA9IDEgPDwgMQorICAgIH07CiAKICAgICBzdGF0aWMgUmVmPFdlYlByb2Nlc3NQcm94
eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sJiwgV2Vic2l0ZURhdGFTdG9yZSosIENhcHRpdmVQb3J0
YWxNb2RlLCBJc1ByZXdhcm1lZCwgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlID0gV2ViQ29yZTo6
Q3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQsIFNob3VsZExhdW5jaFByb2Nlc3MgPSBTaG91bGRMYXVu
Y2hQcm9jZXNzOjpZZXMpOwotICAgIHN0YXRpYyBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGVG
b3JTZXJ2aWNlV29ya2VycyhXZWJQcm9jZXNzUG9vbCYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKKyAgICBzdGF0aWMgUmVmPFdlYlByb2Nlc3NQcm94
eT4gY3JlYXRlRm9yV29ya2VycyhXb3JrZXJUeXBlLCBXZWJQcm9jZXNzUG9vbCYsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKIAogICAgIH5XZWJQcm9j
ZXNzUHJveHkoKTsKIApAQCAtMTYxLDggKzE2NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElz
SW5Qcm9jZXNzQ2FjaGUoYm9vbCwgV2lsbFNodXREb3duID0gV2lsbFNodXREb3duOjpObyk7CiAg
ICAgYm9vbCBpc0luUHJvY2Vzc0NhY2hlKCkgY29uc3QgeyByZXR1cm4gbV9pc0luUHJvY2Vzc0Nh
Y2hlOyB9CiAKLSAgICB2b2lkIGVuYWJsZVNlcnZpY2VXb3JrZXJzKGNvbnN0IFVzZXJDb250ZW50
Q29udHJvbGxlcklkZW50aWZpZXImKTsKLSAgICB2b2lkIGRpc2FibGVTZXJ2aWNlV29ya2Vycygp
OworICAgIHZvaWQgZW5hYmxlV29ya2VycyhXb3JrZXJUeXBlLCBjb25zdCBVc2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyJik7CisgICAgdm9pZCBkaXNhYmxlV29ya2VycyhPcHRpb25TZXQ8
V29ya2VyVHlwZT4pOwogCiAgICAgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSgp
IGNvbnN0IHsgQVNTRVJUKG1fd2Vic2l0ZURhdGFTdG9yZSk7IHJldHVybiAqbV93ZWJzaXRlRGF0
YVN0b3JlOyB9CiAgICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUm
KTsKQEAgLTE5NCw2ICsxOTgsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzUnVubmluZ1NlcnZp
Y2VXb3JrZXJzKCkgY29uc3QgeyByZXR1cm4gISFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsg
fQogICAgIGJvb2wgaXNTdGFuZGFsb25lU2VydmljZVdvcmtlclByb2Nlc3MoKSBjb25zdCB7IHJl
dHVybiBpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpICYmICFwYWdlQ291bnQoKTsgfQorICAgIGJv
b2wgaXNSdW5uaW5nU2hhcmVkV29ya2VycygpIGNvbnN0IHsgcmV0dXJuICEhbV9zaGFyZWRXb3Jr
ZXJJbmZvcm1hdGlvbjsgfQorICAgIGJvb2wgaXNTdGFuZGFsb25lU2hhcmVkV29ya2VyUHJvY2Vz
cygpIGNvbnN0IHsgcmV0dXJuIGlzUnVubmluZ1NoYXJlZFdvcmtlcnMoKSAmJiAhcGFnZUNvdW50
KCk7IH0KKyAgICBib29sIGlzUnVubmluZ1dvcmtlcnMoKSBjb25zdCB7IHJldHVybiBtX3NoYXJl
ZFdvcmtlckluZm9ybWF0aW9uIHx8IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOyB9CiAKICAg
ICBib29sIGlzRHVtbXlQcm9jZXNzUHJveHkoKSBjb25zdDsKIApAQCAtMzU5LDEyICszNjYsMTMg
QEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVBdWRpYmxlTWVkaWFBc3NlcnRpb25zKCk7CiAK
KyAgICB2b2lkIHNldFdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHVw
ZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwor
ICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihX
b3JrZXJUeXBlKTsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxp
c2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgY29uc3Qg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRTZXJ2aWNlV29ya2Vy
VXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtlclBy
ZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwogICAgIGJvb2wgaGFz
U2VydmljZVdvcmtlclBhZ2VQcm94eShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlE
KSB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiAmJiBtX3NlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbi0+cmVtb3RlV29ya2VyUGFnZVByb3h5SUQgPT0gcGFnZVByb3h5SUQ7IH0KLSAg
ICB2b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7CiAgICAgdm9pZCBy
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYpOwogICAg
IHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94
eSYpOwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3Rp
bmcoKSBjb25zdDsKQEAgLTY1Niw2ICs2NjQsNyBAQCBwcml2YXRlOgogICAgICAgICBXZWFrSGFz
aFNldDxXZWJQcm9jZXNzUHJveHk+IGNsaWVudFByb2Nlc3NlczsKICAgICB9OwogICAgIHN0ZDo6
b3B0aW9uYWw8UmVtb3RlV29ya2VySW5mb3JtYXRpb24+IG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8UmVtb3RlV29ya2VySW5mb3JtYXRpb24+IG1fc2hhcmVk
V29ya2VySW5mb3JtYXRpb247CiAgICAgYm9vbCBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5k
UHJvY2Vzc2luZyB7IGZhbHNlIH07CiAKICAgICBIYXNoTWFwPFdlYkNvcmU6OlNsZWVwRGlzYWJs
ZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U2xlZXBEaXNhYmxlcj4+IG1f
c2xlZXBEaXNhYmxlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBkYzAyZjg5NDEyZGYuLjFhOWIwOTNiNDcyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04ODEsNiArODgx
LDcgQEAKIAkJNDYxNEYxMzIyNURFRDg3NTAwNzAwNkU3IC8qIEdQVVByb2Nlc3NDb25uZWN0aW9u
UGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZBQzUzMjQyNURFRDgxRTAwM0I1N0VDIC8qIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1l
dGVycy5oICovOyB9OwogCQk0NjFDQ0NBNTIzMTQ4NUE3MDBCNjU5QjkgLyogVUlSZW1vdGVPYmpl
Y3RSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDYzMjM2ODUyMzE0ODMzRjAwQTQ4RkE3IC8qIFVJUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAq
LzsgfTsKIAkJNDYxQ0NDQTYyMzE0ODVBQTAwQjY1OUI5IC8qIFdlYlJlbW90ZU9iamVjdFJlZ2lz
dHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjMy
MzY4MzIzMTQ4MUVGMDBBNDhGQTcgLyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAqLzsgfTsK
KwkJNDYxRTFCRjIyNzlBMDExNjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDYxRTFCRUYyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5oICovOyB9OwogCQk0NjNGRDQ4MDFFQjk0NTk2MDBBMjk4MkMgLyog
V0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0ZENDdGMUVCOTQ1ODQwMEEyOTgyQyAvKiBXS1Byb2Nlc3NU
ZXJtaW5hdGlvblJlYXNvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQ2M0ZENDgyMUVCOTRFQzAwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWluYXRp
b25SZWFzb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2M0ZENDgxMUVCOTRFQUQwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCAq
LzsgfTsKIAkJNDY1OUYyNUYyNzVGRjZCMjAwQkJCMzY5IC8qIENhcHRpdmVQb3J0YWxNb2RlT2Jz
ZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
NTlGMjVFMjc1RkY2QjIwMEJCQjM2OSAvKiBDYXB0aXZlUG9ydGFsTW9kZU9ic2VydmVyLmggKi87
IH07CkBAIC05MDEsMTAgKzkwMiwxMyBAQAogCQk0NkMzOTIyOTIzMTZFQzREMDA4RUVEOUIgLyog
V2ViUGFnZVByb3h5SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDZDMzkyMjgyMzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIuaCAqLzsgfTsKIAkJNDZDNUI3Q0UyN0FBREREMzAwMEM1QjQ3IC8qIFJlbW90ZVdv
cmtlckZyYW1lTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NkM1QjdDRDI3QUFEREJFMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyRnJh
bWVMb2FkZXJDbGllbnQuaCAqLzsgfTsKIAkJNDZDNUI3Q0YyN0FBRERENjAwMEM1QjQ3IC8qIFJl
bW90ZVdvcmtlckxpYldlYlJUQ1Byb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM1QjdDQjI3QUFEREJFMDAwQzVCNDcgLyogUmVtb3RlV29y
a2VyTGliV2ViUlRDUHJvdmlkZXIuaCAqLzsgfTsKKwkJNDZDOTE2QUEyNzk5RDBBMjAwMUE0RTdD
IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZDOTE2QTkyNzk5RDA5RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdv
cmtlclNlcnZlci5oICovOyB9OwogCQk0NkNFM0IxMTIzRDhDODQ5MDAxNkE5NkEgLyogV2ViQmFj
a0ZvcndhcmRMaXN0Q291bnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkNFM0IxMDIzRDhDODNEMDAxNkE5NkEgLyogV2ViQmFja0ZvcndhcmRMaXN0
Q291bnRzLmggKi87IH07CisJCTQ2RDQ4RkNFMjc5OUQ3RTEwMDdEMjAxNCAvKiBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkQ0OEZDRDI3OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oICovOyB9OwogCQk0NkRGMDYzQzFG
MzkwNUY4MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRGMDYzQTFGMzkwNUU1MDAx
OTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggKi87IH07CiAJCTQ2RUUyODQ5
MjY5RTA0QUMwMERENDhBQiAvKiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUUyODQ4MjY5RTA0OUIw
MERENDhBQiAvKiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCAqLzsgfTsKIAkJNDZFRTI4
NEQyNjlFMDUyNTAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUUyODRDMjY5
RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggKi87IH07
CisJCTQ2RUUzRThCMjc2M0ZEMkYwMDYwQzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjgzODY2NzI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlv
bi5oICovOyB9OwogCQk0NkYzOEU4QzI0MTZFNjczMDA1OTM3NUEgLyogUnVubmluZ0JvYXJkU2Vy
dmljZXNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2RjM4RThCMjQxNkU2NkQwMDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oICov
OyB9OwogCQk0NkY5QjI2MzIzNTI2RUYzMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVu
dHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkY5
QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggKi87IH07
CiAJCTQ5MzEwMkJEMjY4M0YzRDAwMDJCQjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTMxMDJCQzI2ODNGM0E1
MDAyQkI4ODUgLyogQXBwUHJpdmFjeVJlcG9ydC5oICovOyB9OwpAQCAtNDIyNCw2ICs0MjI4LDkg
QEAKIAkJNDYwODg5RkYyNjFGQThBOTAwRTI1MDBEIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRD
cmVhdGlvblBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZENyZWF0aW9uUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBG
NDg4RDFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNz
YWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVy
aXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJl
Y2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNDYwRjQ4
OEUxRjk5NkY2QzAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2Fn
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb25NZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKKwkJNDYxRTFCRUMyNzlBMDEwRTAwNkFGNTNCIC8qIFdlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjFFMUJFRjI3OUEwMTBGMDA2QUY1M0Ig
LyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjFFMUJGMDI3OUEwMTBGMDA2
QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYy
MTA3RDcxRjM4REJEMzAwREQ3ODEwIC8qIFBpbmdMb2FkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFBpbmdMb2FkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDYzMjM2ODMyMzE0ODFFRjAwQTQ4RkE3IC8qIFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2MzIzNjg0MjMxNDgyNUMwMEE0OEZBNyAvKiBXZWJSZW1vdGVP
YmplY3RSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJSZW1vdGVPYmplY3RSZWdp
c3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MjU1LDggKzQyNjIsMTEg
QEAKIAkJNDY4MDlBN0IyM0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvb2tpZUNhY2hlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzU2OUEyMUU4MUNDNzAwNkUyN0EzIC8qIFBy
b3Zpc2lvbmFsUGFnZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBy
b3Zpc2lvbmFsUGFnZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM1
NjlCMjFFODFDQzcwMDZFMjdBMyAvKiBQcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm92aXNpb25hbFBhZ2VQcm94eS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2ODM4NjY3Mjc2M0ZBQjEwMENGOTE4MiAvKiBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDY4Mzg2NjgyNzYzRkFCMTAwQ0Y5MTgyIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODlCOTBGMjc1NkQxNDMwMDA3
QzY1MSAvKiBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlV2Vi
TG9ja1JlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODlCOTEwMjc1
NkQxNDMwMDA3QzY1MSAvKiBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDY5NDNEQ0IyNzYzRjgzNDAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5REU4MDIyNzNF
Q0M1RDAwOTMwMjc2IC8qIFByb2Nlc3NMYXVuY2hlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJvY2Vzc0xhdW5jaGVyQ29jb2EubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QTJCNjA2MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3Jv
dW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZBMkI2MDcxRTU2NzVBMjAwQzNERURBIC8q
IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyNzUsNyArNDI4NSwxMSBAQAogCQk0NkM1
QjdDQjI3QUFEREJFMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDNUI3Q0MyN0FBRERCRTAwMEM1QjQ3IC8qIFJlbW90ZVdv
cmtlckZyYW1lTG9hZGVyQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVdvcmtl
ckZyYW1lTG9hZGVyQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZD
NUI3Q0QyN0FBRERCRTAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2QzkxNkE4Mjc5OUQwOUQwMDFBNEU3QyAvKiBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2Vy
dmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZDOTE2QTkyNzk5RDA5RDAw
MUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDRTNCMTAy
M0Q4QzgzRDAwMTZBOTZBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZENDhGQ0MyNzk5RDdERDAwN0QyMDE0IC8qIFdlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2RDQ4RkNEMjc5OUQ3REUwMDdEMjAxNCAvKiBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDZERjA2MzkxRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkU5NzYwQTI3NTdGNkM5
MDBBQ0REMzcgLyogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5p
bjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyODUsNiArNDI5OSw3IEBACiAJCTQ2
RUUyODRBMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5
Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5ldHdvcmtCcm9hZGNhc3RDaGFu
bmVsUmVnaXN0cnkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
RUUyODRCMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtCcm9hZGNh
c3RDaGFubmVsUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkVF
Mjg0QzI2OUUwNTE3MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5l
bFJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2RUUzRThBMjc2M0ZE
MkEwMDYwQzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RjM4RThCMjQxNkU2NkQwMDU5Mzc1QSAvKiBSdW5u
aW5nQm9hcmRTZXJ2aWNlc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
dW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NkY5QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTMxMDJCQzI2ODNGM0E1MDAyQkI4ODUg
LyogQXBwUHJpdmFjeVJlcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBQcml2YWN5UmVwb3J0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05Mjk0LDYgKzkzMDksMjAgQEAKIAkJCXBh
dGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTQ2ODM4NjY1
Mjc2M0ZBMUIwMENGOTE4MiAvKiBTaGFyZWRXb3JrZXIgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91
cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTQ2QzkxNkE4Mjc5OUQwOUQwMDFBNEU3QyAvKiBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXIuY3BwICovLAorCQkJCTQ2QzkxNkE5Mjc5OUQwOUQwMDFBNEU3QyAv
KiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCAqLywKKwkJCQk0NjgzODY2ODI3NjNGQUIxMDBDRjkx
ODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAgKi8sCisJCQkJNDY4Mzg2
NjcyNzYzRkFCMTAwQ0Y5MTgyIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCAq
LywKKwkJCQk0NkVFM0U4QTI3NjNGRDJBMDA2MEM3MEYgLyogV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKKwkJCQk0NkQ0OEZDQzI3OTlEN0REMDA3RDIwMTQg
LyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgKi8sCisJCQkJ
NDZENDhGQ0QyNzk5RDdERTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaCAqLywKKwkJCSk7CisJCQlwYXRoID0gU2hhcmVkV29ya2VyOworCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNDY5REU4MDEyNzNFQ0M1RDAwOTMwMjc2IC8q
IGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTkz
NTgsNiArOTM4Nyw3IEBACiAJCQkJNTE0NTI2RUEyNzFFMTYxMDAwMDQ2N0I2IC8qIE5vdGlmaWNh
dGlvbnMgKi8sCiAJCQkJNUMwMUJDMzUyNkQ0NkFENDAwRkVCNDJGIC8qIFByaXZhdGVDbGlja01l
YXN1cmVtZW50ICovLAogCQkJCTkzQkEwNEQ5MjE1MUFEQ0QwMDdGNDU1RiAvKiBTZXJ2aWNlV29y
a2VyICovLAorCQkJCTQ2ODM4NjY1Mjc2M0ZBMUIwMENGOTE4MiAvKiBTaGFyZWRXb3JrZXIgKi8s
CiAJCQkJOTMwODVEQzIyNkUxQkI2NTAwMEVDNkE3IC8qIHN0b3JhZ2UgKi8sCiAJCQkJNDEzMDc1
OTcxREU4NEVENzAwMzlFQzY5IC8qIHdlYnJ0YyAqLywKIAkJCQk5M0IyNjE0MzIyN0QxNDMxMDBC
OTdBNzYgLyogV2ViU3RvcmFnZSAqLywKQEAgLTk0NjAsOCArOTQ5MCwxMiBAQAogCQkJCTQxOUFD
RjlCMUY5ODFEMjYwMDlGMUE4MyAvKiBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmgg
Ki8sCiAJCQkJNTFCRUI2MjkxRjNBNUFDRDAwNTAyOUI5IC8qIFdlYlNlcnZpY2VXb3JrZXJQcm92
aWRlci5jcHAgKi8sCiAJCQkJNTFCRUI2MkExRjNBNUFDRDAwNTAyOUI5IC8qIFdlYlNlcnZpY2VX
b3JrZXJQcm92aWRlci5oICovLAorCQkJCTQ2MUUxQkVDMjc5QTAxMEUwMDZBRjUzQiAvKiBXZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwICovLAorCQkJCTQ2MUUxQkVG
Mjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uaCAqLywKKwkJCQk0NjFFMUJGMDI3OUEwMTBGMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovLAogCQkJCTQ2NjhBMEJCMjdB
QjYwNDAwMEM3MjBCQyAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcCAqLywK
IAkJCQk0NjY4QTBCODI3QUI2MDNGMDBDNzIwQkMgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbi5oICovLAorCQkJCTQ2OTQzRENCMjc2M0Y4MzQwMDRCNjEwRSAvKiBXZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovLAogCQkJCTQ2NjhBMEI5MjdBQjYw
M0YwMEM3MjBCQyAvKiBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAgKi8sCiAJCQkJNDY2OEEw
QkEyN0FCNjA0MDAwQzcyMEJDIC8qIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmggKi8sCiAJCQkJ
NTE3QTUzMDMxRjQ3OTNCMjAwRENEQzBBIC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgKi8s
CkBAIC0xMzY1OCw4ICsxMzY5MiwxMiBAQAogCQkJCTdDMzYxRDczMTkyN0ZBMzYwMDM2QTU5RCAv
KiBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDNCOTQ4NDkx
MUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTFCRUI2MkMxRjNBNUFENzAwNTAyOUI5IC8qIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDYxRTFCRjIyNzlBMDExNjAwNkFGNTNCIC8qIFdlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY2
OEEwQkQyN0FCNjA1NjAwQzcyMEJDIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTQ2NjhBMEJDMjdBQjYwNTAwMEM3MjBCQyAvKiBXZWJTaGFy
ZWRXb3JrZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZDOTE2QUEyNzk5RDBBMjAw
MUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZF
RTNFOEIyNzYzRkQyRjAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovLAorCQkJCTQ2RDQ4RkNFMjc5OUQ3RTEwMDdEMjAxNCAvKiBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
QzhERDM4MDFGRTQ1MjE2MDBGMkE1NTYgLyogV2Vic2l0ZUF1dG9wbGF5UG9saWN5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTQ4MzJENzFBOUNERjk2MDA4QjRERkUgLyogV2Vic2l0ZURhdGEuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBNDgzMkQxMUE5QkRDMkYwMDhCNERGRSAvKiBXZWJzaXRlRGF0
YVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA4
MWRkMDQxMWEyMzkuLmJiMzU0N2Y0NmFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBA
IC01Nyw3ICs1NywxMCBAQAogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIK
ICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTb2Nr
ZXRTdHJlYW0uaCIKQEAgLTE3NCw2ICsxNzcsMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVAK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIHNoYXJlZFdvcmtlckNvbm5lY3Rp
b24oKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVz
c2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpKSB7CisgICAgICAgIEFTU0VSVChTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
cjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKTsKKyAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbiA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24o
KS5jb25uZWN0aW9uKCkpCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxXZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24mPigqY29udGV4dE1hbmFnZXJDb25uZWN0aW9uKS5kaWRS
ZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KIAogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQogICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggZWRjMDQ5
M2JkM2VkLi4wYjY0ODBhNjFkMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC00OCw2ICs0
OCw3IEBAIGVudW0gY2xhc3MgSFRUUENvb2tpZUFjY2VwdFBvbGljeSA6IHVpbnQ4X3Q7CiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOworY2xhc3Mg
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjsKIGNsYXNzIFdlYlNXQ2xpZW50Q29ubmVj
dGlvbjsKIGNsYXNzIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb247CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODQzMDY0NzY2NWZhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDEyOSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVXZWJMb2NrUmVnaXN0cnkuaCIKKyNpbmNs
dWRlICJSZW1vdGVXb3JrZXJGcmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIlJlbW90ZVdv
cmtlckxpYldlYlJUQ1Byb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViQnJvYWRjYXN0Q2hhbm5lbFJl
Z2lzdHJ5LmgiCisjaW5jbHVkZSAiV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKKyNpbmNsdWRl
ICJXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEuaCIKKyNpbmNsdWRlICJXZWJEYXRhYmFz
ZVByb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlByZWZlcmVu
Y2VzS2V5cy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJT
b2NrZXRQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlci5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvRW1wdHlDbGllbnRzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdl
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlQ29uZmlndXJhdGlvbi5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZFdvcmtlclRocmVhZFByb3h5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQWdlbnQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlckZldGNoUmVzdWx0Lmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OldlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJl
Z2lzdHJhYmxlRG9tYWluLCBQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHByZWZlcmVuY2VzU3RvcmUsIFJlbW90
ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmIGluaXRpYWxpemF0aW9uRGF0YSkKKyAgICA6IG1f
Y29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV1RGTW92ZShjb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcykpCisgICAgLCBtX3JlZ2lzdHJhYmxlRG9tYWluKFdURk1vdmUocmVnaXN0cmFibGVEb21h
aW4pKQorICAgICwgbV9wYWdlR3JvdXBJRChwYWdlR3JvdXBJRCkKKyAgICAsIG1fd2ViUGFnZVBy
b3h5SUQod2ViUGFnZVByb3h5SUQpCisgICAgLCBtX3BhZ2VJRChwYWdlSUQpCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgLCBtX3VzZXJBZ2VudChXZWJDb3JlOjpzdGFuZGFyZFVzZXJBZ2VudFdp
dGhBcHBsaWNhdGlvbk5hbWUoeyB9KSkKKyNlbHNlCisgICAgLCBtX3VzZXJBZ2VudChzdGFuZGFy
ZFVzZXJBZ2VudCgpKQorI2VuZGlmCisgICAgLCBtX3VzZXJDb250ZW50Q29udHJvbGxlcihXZWJV
c2VyQ29udGVudENvbnRyb2xsZXI6OmdldE9yQ3JlYXRlKGluaXRpYWxpemF0aW9uRGF0YS51c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKSkKK3sKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRF
TlNJT05TKQorICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRDb250ZW50UnVsZUxpc3Rz
KFdURk1vdmUoaW5pdGlhbGl6YXRpb25EYXRhLmNvbnRlbnRSdWxlTGlzdHMpKTsKKyNlbmRpZgor
CisgICAgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShwcmVmZXJlbmNlc1N0b3JlKTsKKyAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5kaXNhYmxlVGVybWluYXRpb24oKTsKK30KKworV2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp+V2ViU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uKCkgPSBkZWZhdWx0OworCit2b2lkIFdlYlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZXN0YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9jb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2Vzcy0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6RXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24geyBt
X3dlYlBhZ2VQcm94eUlELCBtX3JlZ2lzdHJhYmxlRG9tYWluIH0sIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCAwKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkwpCit7CisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6UG9zdEV4Y2Vw
dGlvblRvV29ya2VyT2JqZWN0IHsgc2hhcmVkV29ya2VySWRlbnRpZmllciwgZXJyb3JNZXNzYWdl
LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCB9LCAwKTsKK30KKwordm9pZCBX
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnVwZGF0ZVByZWZlcmVuY2Vz
U3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCit7CisgICAgV2ViUGFnZTo6
dXBkYXRlUHJlZmVyZW5jZXNHZW5lcmF0ZWQoc3RvcmUpOworICAgIG1fcHJlZmVyZW5jZXNTdG9y
ZSA9IHN0b3JlOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6bGF1bmNoU2hhcmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwg
V2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBV
UkwmJiB1cmwsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zLCBXZWJDb3Jl
OjpXb3JrZXJGZXRjaFJlc3VsdCYmIHdvcmtlckZldGNoUmVzdWx0KQoreworICAgIFJFTEVBU0Vf
TE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6bGF1bmNoU2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwg
c2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBhdXRvIHBhZ2VDb25maWd1
cmF0aW9uID0gV2ViQ29yZTo6cGFnZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnNlc3Npb25JRCgpKTsKKworICAgIHBhZ2VDb25maWd1cmF0aW9u
LmRhdGFiYXNlUHJvdmlkZXIgPSBXZWJEYXRhYmFzZVByb3ZpZGVyOjpnZXRPckNyZWF0ZShtX3Bh
Z2VHcm91cElEKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5zb2NrZXRQcm92aWRlciA9IFdlYlNv
Y2tldFByb3ZpZGVyOjpjcmVhdGUobV93ZWJQYWdlUHJveHlJRCk7CisgICAgcGFnZUNvbmZpZ3Vy
YXRpb24uYnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
YnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5KCk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24ud2ViTG9j
a1JlZ2lzdHJ5ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9ja1JlZ2lzdHJ5KCk7Cisg
ICAgcGFnZUNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRQcm92aWRlciA9IG1fdXNlckNvbnRlbnRD
b250cm9sbGVyOworI2lmIEVOQUJMRShXRUJfUlRDKQorICAgIHBhZ2VDb25maWd1cmF0aW9uLmxp
YldlYlJUQ1Byb3ZpZGVyID0gbWFrZVVuaXF1ZVJlZjxSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92
aWRlcj4oKTsKKyNlbmRpZgorCisgICAgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50Rm9y
TWFpbkZyYW1lID0gbWFrZVVuaXF1ZVJlZjxSZW1vdGVXb3JrZXJGcmFtZUxvYWRlckNsaWVudD4o
bV93ZWJQYWdlUHJveHlJRCwgbV9wYWdlSUQsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKSwgbV91c2VyQWdlbnQpOworCisgICAgYXV0byBwYWdlID0gbWFrZVVuaXF1ZVJlZjxX
ZWJDb3JlOjpQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CisgICAgaWYgKG1fcHJl
ZmVyZW5jZXNTdG9yZSkgeworICAgICAgICBXZWJQYWdlOjp1cGRhdGVTZXR0aW5nc0dlbmVyYXRl
ZCgqbV9wcmVmZXJlbmNlc1N0b3JlLCBwYWdlLT5zZXR0aW5ncygpKTsKKyAgICAgICAgcGFnZS0+
c2V0dGluZ3MoKS5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
U3RvcmFnZUJsb2NraW5nUG9saWN5PihtX3ByZWZlcmVuY2VzU3RvcmUtPmdldFVJbnQzMlZhbHVl
Rm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpzdG9yYWdlQmxvY2tpbmdQb2xpY3lLZXkoKSkpKTsK
KyAgICB9CisgICAgcGFnZS0+c2V0dXBGb3JSZW1vdGVXb3JrZXIodXJsLCBvcmlnaW4udG9wT3Jp
Z2luLCB3b3JrZXJGZXRjaFJlc3VsdC5yZWZlcnJlclBvbGljeSk7CisgICAgYXV0byBzaGFyZWRX
b3JrZXJUaHJlYWRQcm94eSA9IFdlYkNvcmU6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpjcmVh
dGUoV1RGTW92ZShwYWdlKSwgc2hhcmVkV29ya2VySWRlbnRpZmllciwgb3JpZ2luLCB1cmwsIFdU
Rk1vdmUod29ya2VyRmV0Y2hSZXN1bHQpLCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMpLCBtX3VzZXJB
Z2VudCwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FjaGVTdG9yYWdlUHJvdmlkZXIoKSk7CisK
KyAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkucmVn
aXN0ZXJTaGFyZWRXb3JrZXJUaHJlYWQoV1RGTW92ZShzaGFyZWRXb3JrZXJUaHJlYWRQcm94eSkp
OworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Y2xv
c2UoKQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Y2xvc2U6IFNoYXJlZCB3b3JrZXIgcHJvY2VzcyBpcyBy
ZXF1ZXN0ZWQgdG8gc3RvcCBhbGwgc2hhcmVkIHdvcmtlcnMiKTsKKyAgICBzZXRBc0Nsb3NlZCgp
OworCisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNsb3NlU2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb24geyB9LCAwKTsKKyAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6
c2luZ2xldG9uKCkuc3RvcEFsbFNoYXJlZFdvcmtlcnMoKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbmFibGVUZXJtaW5hdGlvbigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xYWNmZDBjNDEyOTEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiSWRl
bnRpZmllclR5cGVzLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAi
V2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IENsaWVudE9yaWdpbjsKK3N0cnVjdCBX
b3JrZXJGZXRjaFJlc3VsdDsKK3N0cnVjdCBXb3JrZXJPcHRpb25zOworfQorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOworc3RydWN0IFJlbW90
ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YTsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewor
cHVibGljOgorICAgIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8
SVBDOjpDb25uZWN0aW9uPiYmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQYWdlR3Jv
dXBJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFJlbW90ZVdvcmtlckluaXRpYWxpemF0
aW9uRGF0YSYmKTsKKyAgICB+V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
KCk7CisKKyAgICB2b2lkIGVzdGFibGlzaENvbm5lY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJD
b3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwg
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
KSBmaW5hbDsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJikgZmluYWw7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDIE1lc3NhZ2VzLgor
ICAgIHZvaWQgbGF1bmNoU2hhcmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBXZWJD
b3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6V29ya2VyT3B0aW9u
cyYmLCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmKTsKKyAgICB2b2lkIHVwZGF0ZVByZWZl
cmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOworICAgIHZvaWQgc2V0VXNl
ckFnZW50KFN0cmluZyYmIHVzZXJBZ2VudCkgeyBtX3VzZXJBZ2VudCA9IFdURk1vdmUodXNlckFn
ZW50KTsgfQorICAgIHZvaWQgY2xvc2UoKTsKKworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1f
Y29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3M7CisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKKyAgICBQYWdlR3JvdXBJZGVudGlmaWVyIG1fcGFnZUdy
b3VwSUQ7CisgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBtX3dlYlBhZ2VQcm94eUlEOworICAg
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOworICAgIFN0cmluZyBtX3VzZXJBZ2Vu
dDsKKyAgICBSZWY8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyPiBtX3VzZXJDb250ZW50Q29udHJv
bGxlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYlByZWZlcmVuY2VzU3RvcmU+IG1fcHJlZmVyZW5j
ZXNTdG9yZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDgyYTRhZGE1M2ZkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzAgQEAK
KyMgQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwK
KyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gV2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgeworICAg
IExhdW5jaFNoYXJlZFdvcmtlcihzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwg
V2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBV
UkwgdXJsLCBzdHJ1Y3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyB3b3JrZXJPcHRpb25zLCBzdHJ1
Y3QgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQgd29ya2VyRmV0Y2hSZXN1bHQpCisgICAgUG9z
dENvbm5lY3RFdmVudChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtl
cklkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQgcG9ydCwgU3RyaW5n
IHNvdXJjZU9yaWdpbikKKyAgICBUZXJtaW5hdGVTaGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hhcmVk
V29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyKQorICAgIFVwZGF0ZVByZWZl
cmVuY2VzU3RvcmUoc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSkKKyAg
ICBTZXRVc2VyQWdlbnQoU3RyaW5nIHVzZXJBZ2VudCkKKyAgICBDbG9zZSgpCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCmluZGV4IDVjNWZkYWE2MDA1Ny4uZDdkOTk0
ZGUxZjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcApAQCAtMjYs
MjMgKzI2LDQ0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbi5oIgogCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlck1hbmFnZXIuaD4KKyNpbmNsdWRlICJXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1By
b2Nlc3NJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Xb3JrZXJPcHRpb25zLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpX
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCkgPSBkZWZhdWx0OworI2RlZmluZSBDT05O
RUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIl
cCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gV2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsIFdlYkNvcmU6OlByb2Nlc3M6OmlkZW50aWZpZXIo
KS50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQorCitXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNU
SU9OX1JFTEVBU0VfTE9HKCJXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOiIpOworfQor
CitXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjp+V2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygifldlYlNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb246Iik7Cit9CiAKIElQQzo6Q29ubmVjdGlvbiogV2ViU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAog
ewogICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwogfQogCi12b2lkIFdlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb246OnJlcXVlc3RTaGFyZWRXb3JrZXIoY29uc3QgVVJMJiB1cmwsIFdlYkNv
cmU6OlNoYXJlZFdvcmtlciYgc2hhcmVkV29ya2VyLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3Nh
Z2VQb3J0JiYgcG9ydCwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMpCit2
b2lkIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnJlcXVlc3RTaGFyZWRXb3JrZXIo
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgVVJM
JiB1cmwsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBjb25zdCBXZWJD
b3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25zKQogewotICAgIC8vIEZJWE1FOiBTaG91
bGQgc2VuZCBJUEMgdG8gdGhlIG5ldHdvcmsgcHJvY2Vzcy4KLSAgICBXZWJDb3JlOjpTaGFyZWRX
b3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0KHVybCwgc2hhcmVkV29ya2VyLCBXVEZN
b3ZlKHBvcnQpLCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMpKTsKKyAgICBDT05ORUNUSU9OX1JFTEVB
U0VfTE9HKCJyZXF1ZXN0U2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
PSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbjo6UmVxdWVzdFNoYXJlZFdvcmtlciB7IG9yaWdpbiwgc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllciwgdXJsLCBXVEZNb3ZlKHBvcnQpLCB3b3JrZXJPcHRpb25zIH0pOwogfQogCit2
b2lkIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnNoYXJlZFdvcmtlck9iamVjdElz
R29pbmdBd2F5KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllcikKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJzaGFy
ZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheTogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0l
e3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb246OlNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5IHsgc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllciB9KTsKK30KKworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0cKKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKaW5k
ZXggNjFlZTVhZjQyNGRjLi5kMzJjNTJlMWUxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLmgKQEAgLTI1LDIwICsyNSwyNSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLWNsYXNzIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24gZmluYWwg
OiBwdWJsaWMgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiwgcHJpdmF0ZSBJ
UEM6Ok1lc3NhZ2VTZW5kZXIgeworY2xhc3MgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
biBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLCBw
cml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24+
IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbik7IH0KKyAgICB+V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpOworCisg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
KCk7CiAKICAgICAvLyBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLgotICAg
IHZvaWQgcmVxdWVzdFNoYXJlZFdvcmtlcihjb25zdCBVUkwmLCBXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXImLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdlYkNvcmU6Oldvcmtlck9w
dGlvbnMmJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIs
IGNvbnN0IFVSTCYsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgY29uc3QgV2Vi
Q29yZTo6V29ya2VyT3B0aW9ucyYpIGZpbmFsOworICAgIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0
SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikgZmluYWw7
CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNz
YWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi43MjJhZTFhMzJjOTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor
IyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
biB7CisgICAgRmV0Y2hTY3JpcHRJbkNsaWVudChVUkwgdXJsLCBXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHN0cnVjdCBX
ZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdvcmtlck9wdGlvbnMpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6
V29ya2VyRmV0Y2hSZXN1bHQgZmV0Y2hSZXN1bHQpIEFzeW5jCisgICAgTm90aWZ5V29ya2VyT2Jq
ZWN0T2ZMb2FkQ29tcGxldGlvbihXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJy
b3IpCisgICAgUG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgU3RyaW5nIGVy
cm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFN0cmluZyBzb3Vy
Y2VVUkwpCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZGQ4
ZDU4MWFjNWIyLi5kZDQ1YjQ1ODhiZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKQEAgLTg0LDYgKzg0LDggQEAKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCIKKyNpbmNsdWRl
ICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJX
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1
ZGUgIldlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFt
LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKQEAgLTEzNCw2ICsxMzYsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Vc2VyR2VzdHVyZUluZGljYXRvci5oPgogI2luY2x1ZGUgPHBhbC9Mb2dnaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL0FsZ29yaXRobXMuaD4KQEAgLTkwNCw3ICs5MDcsNiBAQCB2b2lkIFdlYlBy
b2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBD
OjpEZWNvZGVyJiBkZQogICAgIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICAv
LyBGSVhNRTogUmVtb3ZlPwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSkgewogICAgICAgICBBU1NFUlQoU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCku
Y29ubmVjdGlvbigpKTsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
biA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKQEAgLTkxMyw2
ICs5MTUsMTMgQEAgdm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGUKICAgICB9CiAjZW5kaWYKIAorICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsK
KyAgICAgICAgQVNTRVJUKFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5j
b25uZWN0aW9uKCkpOworICAgICAgICBpZiAoYXV0byogY29udGV4dE1hbmFnZXJDb25uZWN0aW9u
ID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkK
KyAgICAgICAgICAgIHN0YXRpY19jYXN0PFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbiY+KCpjb250ZXh0TWFuYWdlckNvbm5lY3Rpb24pLmRpZFJlY2VpdmVNZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgTE9HX0VS
Uk9SKCJVbmhhbmRsZWQgd2ViIHByb2Nlc3MgbWVzc2FnZSAnJXMnIChkZXN0aW5hdGlvbjogJSIg
UFJJdTY0ICIgcGlkOiAlZCkiLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpLCBk
ZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSwgc3RhdGljX2Nhc3Q8aW50PihnZXRDdXJyZW50UHJvY2Vz
c0lEKCkpKTsKIH0KIApAQCAtMTkxOSw2ICsxOTI4LDE2IEBAIExpYldlYlJUQ05ldHdvcmsmIFdl
YlByb2Nlc3M6OmxpYldlYlJUQ05ldHdvcmsoKQogICAgIHJldHVybiAqbV9saWJXZWJSVENOZXR3
b3JrOwogfQogCit2b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElE
LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBw
YWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJsZURvbWFp
biYmIHJlZ2lzdHJhYmxlRG9tYWluLCBSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBp
bml0aWFsaXphdGlvbkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICAvLyBXZSBhcmUgaW4gdGhlIFNoYXJlZCBXb3JrZXIgY29udGV4dCBw
cm9jZXNzIGFuZCB0aGUgY2FsbCBiZWxvdyBlc3RhYmxpc2hlcyBvdXIgY29ubmVjdGlvbiB0byB0
aGUgTmV0d29yayBQcm9jZXNzCisgICAgLy8gYnkgY2FsbGluZyBlbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0aGUg
c2FtZSB1bmRlcmx5aW5nIElQQzo6Q29ubmVjdGlvbiBhcyB0aGUKKyAgICAvLyBOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24gZm9yIHN5bmNocm9uaXphdGlvbiBwdXJwb3Nlcy4KKyAgICBhdXRvJiBp
cGNDb25uZWN0aW9uID0gZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpOworICAgIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDb25u
ZWN0aW9uKG1ha2VVbmlxdWU8V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
PihpcGNDb25uZWN0aW9uLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgcGFnZUdyb3VwSUQs
IHdlYlBhZ2VQcm94eUlELCBwYWdlSUQsIHN0b3JlLCBXVEZNb3ZlKGluaXRpYWxpemF0aW9uRGF0
YSkpKTsKKyAgICBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVj
dGlvbigpLT5lc3RhYmxpc2hDb25uZWN0aW9uKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
K30KKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJs
aXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3Jv
dXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQ
cm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
IHN0b3JlLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlv
bmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlk
ZW50aWZpZXIsIFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmIGluaXRpYWxpemF0aW9u
RGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggMDNmYzBjNzFkN2MzLi40MjNk
ZWZmMmFmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNDcxLDYg
KzQ3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnYW1lcGFkRGlzY29ubmVjdGVkKHVuc2lnbmVk
IGluZGV4KTsKICNlbmRpZgogCisgICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmllciwgV2ViUGFnZVBy
b3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVu
Y2VzU3RvcmUmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBSZW1vdGVXb3JrZXJJbml0
aWFsaXphdGlvbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZpZXIsIFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJl
bmNlc1N0b3JlJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBh
Z2VJZGVudGlmaWVyLCBSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAzYmM0NzMxOWUzNmQuLmY1ZTczNmVkMzQ3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4KQEAgLTEwMCw2ICsxMDAsOCBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2Vp
dmVyIE5vdFJlZkNvdW50ZWQgewogICAgIEdhbWVwYWREaXNjb25uZWN0ZWQodW5zaWduZWQgaW5k
ZXgpCiAjZW5kaWYKIAorICAgIEVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhXZWJLaXQ6OlBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQs
IFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3Jl
IHN0b3JlLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIHN0cnVjdCBXZWJLaXQ6
OlJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSBpbml0aWFsaXphdGlvbkRhdGEpIC0+ICgp
IEFzeW5jCisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgRXN0YWJsaXNoU2Vydmlj
ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJLaXQ6OlBhZ2VHcm91
cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3
ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3QgV2Vi
S2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biBkb21haW4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6UmVt
b3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhIGluaXRpYWxpemF0aW9uRGF0YSkgLT4gKCkgQXN5
bmMKICNlbmRpZgo=
</data>
<flag name="commit-queue"
          id="477332"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450829</attachid>
            <date>2022-02-03 15:17:57 -0800</date>
            <delta_ts>2022-02-03 17:11:31 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>235958_SharedWorker_multiProcess_wip.patch</filename>
            <type>text/plain</type>
            <size>308797</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDQwMjQ2NmU0OWYwZS4uY2MyOWM1MDAxYjFlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTMwMiwxMiArMzAyLDExIEBAIG1lZGlhL3JlbW92ZS12aWRlby1lbGVt
ZW50LWluLXBpcC1mcm9tLWRvY3VtZW50Lmh0bWwgWyBTa2lwIF0KICMgVGhpcyB0ZXN0IGlzIG9u
bHkgcmVsZXZlbnQgb24gaVBob25lIHdoZXJlIHZpZGVvcyBhbHdheXMgcGxheSBpbiBmdWxsc2Ny
ZWVuLgogbWVkaWEvdmlkZW8tZWxlbWVudC1mdWxsc2NyZWVuLW5vdC1pbi1kb20tYWNjZWxlcmF0
ZWQtaXBob25lLmh0bWwgWyBTa2lwIF0KIAotIyBTaGFyZWQgV29ya2VycyBhcmUgdW5zdXBwb3J0
ZWQKKyMgVGVzdHMgcmVseSBvbiBkb21haW4gbmFtZXMgb3VyIHRlc3QgaW5mcmFzdHJ1Y3R1cmUg
ZG9lc24ndCBzdXBwb3J0LgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZWN1cmUt
Y29udGV4dHMvYmFzaWMtc2hhcmVkLXdvcmtlci5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3NlY3VyZS1jb250ZXh0cy9iYXNpYy1zaGFyZWQtd29ya2VyLmh0
dHBzLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VjdXJl
LWNvbnRleHRzL3NoYXJlZC13b3JrZXItaW5zZWN1cmUtZmlyc3QuaHR0cHMuaHRtbCBbIFNraXAg
XQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZWN1cmUtY29udGV4dHMvc2hhcmVk
LXdvcmtlci1zZWN1cmUtZmlyc3QuaHR0cHMuaHRtbCBbIFNraXAgXQotaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9ldmVudHNvdXJjZS9zaGFyZWQtd29ya2VyIFsgU2tpcCBdCiAKICMg
VGhpcyB0ZXN0IHNlZW1zIHdyb25nIGFzIGl0IGNhbGwgdXBkYXRlKCkgZm9yIGEgc2NyaXB0IHRo
YXQgZG9lcyBub3QgY2hhbmdlIGFuZCBleHBlY3RlZCBhbiB1cGRhdGVmb3VuZCBldmVudC4KICMg
UGVyIHNwZWNpZmljYXRpb24sIGlmIHRoZSBzY3JpcHRzIGFyZSBpZGVudGljYWwsIHdlIGRvIG5v
dCBpbnN0YWxsIHRoZSBuZXcgc2NyaXB0IGFuZCByZXR1cm4gdGhlIGV4aXN0aW5nIHJlZ2lzdHJh
dGlvbi4KQEAgLTQxNiw5ICs0MTUsNiBAQCB3ZWJraXQub3JnL2IvMTc2OTI5IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udAogIyBSZXF1
aXJlcyBhZGRpdGlvbmFsIHRlc3QgaW5mcmFzdHJ1Y3R1cmUuCiBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci91cGRhdGUtYWZ0ZXIt
b25lZGF5Lmh0dHBzLmh0bWwgWyBTa2lwIF0KIAotIyBVbnN1cHBvcnRlZCBmZWF0dXJlczogU2hh
cmVkV29ya2VyCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vy
cy9zZXJ2aWNlLXdvcmtlci9jbGFpbS1zaGFyZWQtd29ya2VyLWZldGNoLmh0dHBzLmh0bWwgWyBT
a2lwIF0KLQogIyBVbnN1cHBvcnRlZCBmZWF0dXJlczogUGVyZm9ybWFuY2VOYXZpZ2F0aW9uVGlt
aW5nCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZlci10aW1pbmcvdGVzdF9z
ZXJ2ZXJfdGltaW5nLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc2VydmVyLXRpbWluZy90ZXN0X3NlcnZlcl90aW1pbmcuaHR0cHMuaHRtbCBbIFNraXAgXQpA
QCAtNDYzLDcgKzQ1OSw2IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViLWxv
Y2tzL3N0ZWFsLnRlbnRhdGl2ZS5odHRwcy5hbnkuaHRtbCBbIER1bXBKCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWFuYWx5c2Vybm9k
ZS1pbnRlcmZhY2UvdGVzdC1hbmFseXNlci1taW5pbXVtLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9n
SW5TdGRFcnIgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUt
YXVkaW8tYXBpL3RoZS1hdWRpb25vZGUtaW50ZXJmYWNlL2F1ZGlvbm9kZS1kaXNjb25uZWN0LWF1
ZGlvcGFyYW0uaHRtbCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2FtZS1vcmlnaW4tY2hlY2suc3ViLmh0bWwgWyBE
dW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy5odG1sIFsgRHVtcEpTQ29u
c29sZUxvZ0luU3RkRXJyIF0KIGZhc3QvZmlsZXMvZmlsZS1yZWFkZXItYmFjay1mb3J3YXJkLWNh
Y2hlLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQogZmFzdC9oaXN0b3J5L3BhZ2Ut
Y2FjaGUtY3JlYXRlSW1hZ2VCaXRtYXAuaHRtbCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBd
CiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS14aHItaW4tbG9hZGluZy1pZnJhbWUu
aHRtbCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCkBAIC04NTMsNiArODQ4LDcgQEAgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy91c2VyLXRpbWluZy9tYXJrLmh0bWwgWyBGYWls
dXJlIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy91c2VyLXRpbWluZy9t
ZWFzdXJlX2Fzc29jaWF0ZWRfd2l0aF9uYXZpZ2F0aW9uX3RpbWluZy5odG1sIFsgRmFpbHVyZSBQ
YXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3N5
c3RlbS1zdGF0ZS1hbmQtY2FwYWJpbGl0aWVzL3RoZS1uYXZpZ2F0b3Itb2JqZWN0L3BsdWdpbnMt
YW5kLW1pbWV0eXBlcy5odG1sIFsgRmFpbHVyZSBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvYmVhY29uL2JlYWNvbi1yZWRpcmVjdC5zdWIud2luZG93Lmh0bWwgWyBGYWls
dXJlIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9y
aWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3b3JrZXItcGFydGl0
aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3cuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiAKIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZG9jdW1lbnQtbWV0
YWRhdGEvdGhlLWxpbmstZWxlbWVudC9saW5rLWxvYWQtZXJyb3ItZXZlbnRzLmh0bWwgWyBEdW1w
SlNDb25zb2xlTG9nSW5TdGRFcnIgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9kb2N1bWVudC1tZXRhZGF0YS90aGUtbGluay1lbGVtZW50L2xpbmstbG9h
ZC1lcnJvci1ldmVudHMuaHR0cHMuaHRtbCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCkBA
IC04OTcsMzQgKzg5MywyMSBAQCBmYXN0L2RvbS9jb25uZWN0ZWQtc3ViZnJhbWUtY291bnRlci1v
dmVyZmxvdy5odG1sIFsgU2xvdyBdCiBbIERlYnVnIF0gaHR0cC90ZXN0cy93b3JrZXJzL3dvcmtl
ci1tZXNzYWdlcG9ydC0yLmh0bWwgWyBTbG93IF0KIAogIyBTa2lwIHdvcmtlcnMgdGVzdHMgdGhh
dCBhcmUgdGltaW5nIG91dCBvciBhcmUgU2hhcmVkV29ya2VyIHJlbGF0ZWQgb25seQotaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2RhdGEtdXJsLXNoYXJlZC5odG1sIFsg
U2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvZXhhbXBsZXMv
b25jb25uZWN0LmFueS5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvZXhhbXBsZXMvb25jb25uZWN0LmFueS53b3JrZXIuaHRtbCBbIFNraXAgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2ludGVyZmFjZXMvV29ya2Vy
VXRpbHMvaW1wb3J0U2NyaXB0cy8wMDYuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL25lc3RlZF93b3JrZXIud29ya2VyLmh0bWwgWyBTa2lwIF0K
LWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9vcGFxdWUtb3JpZ2luLmh0
bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1h
bnRpY3MvaW50ZXJmYWNlLW9iamVjdHMvMDAzLmFueS5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL2ludGVyZmFjZS1vYmplY3Rz
LzAwMy5hbnkud29ya2VyLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvaW50ZXJmYWNlLW9iamVjdHMvMDA0LmFueS5odG1sIFsg
U2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNz
L2ludGVyZmFjZS1vYmplY3RzLzAwNC5hbnkud29ya2VyLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vy
cy8wMDMuaHRtbCBbIFNraXAgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL1dvcmtlcl9jcm9zc19vcmlnaW5fc2VjdXJpdHlfZXJyLmh0bSBbIFNraXAgXQogaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlci1NZXNzYWdlRXZl
bnQtc291cmNlLmFueS5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyLU1lc3NhZ2VFdmVudC1zb3VyY2UuYW55Lndvcmtlci5o
dG1sIFsgU2tpcCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hh
cmVkV29ya2VyLWNvbnN0cnVjdG9yLmh0bWwgWyBTa2lwIF0KLWltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXItZGV0YWNoLWZyYW1lLWluLWVycm9yLWV2
ZW50Lmh0bWwgWyBTa2lwIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9TaGFyZWRXb3JrZXItZXhjZXB0aW9uLXByb3BhZ2F0aW9uLmh0bWwgWyBTa2lwIF0KLWltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXItZXhjZXB0aW9u
Lmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9T
aGFyZWRXb3JrZXItcmVwbGFjZS1FdmVudEhhbmRsZXIuYW55Lmh0bWwgWyBTa2lwIF0KIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXItcmVwbGFjZS1F
dmVudEhhbmRsZXIuYW55Lndvcmtlci5odG1sIFsgU2tpcCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyLXNjcmlwdC1lcnJvci5odG1sIFsgU2tp
cCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2Vy
LXNpbXBsZS5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvbW9kdWxlcy9kZWRpY2F0ZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMuaHRtbCBb
IFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMv
c2hhcmVkLXdvcmtlci1pbXBvcnQtY3NwLmh0bWwgWyBTa2lwIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LXJlZmVy
cmVyLmh0bWwgWyBTa2lwIF0KLQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIgWyBTa2lwIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJfYmxvYlVybC5odG1sIFsgU2tpcCBd
CiAKIGh0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9wYWdlLWNhY2hlLWRvbWNhY2hlLXBlbmRpbmct
cHJvbWlzZS5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIApAQCAtOTkyLDkgKzk3
NSw3IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvcmVwb3J0aW5nL3JlcG9ydC1jcm9zcy1vCiAjIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5
OiBFbWJlZGRlZCBFbmZvcmNlbWVudCBpcyBub3Qgc3VwcG9ydGVkCiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2VtYmVkZGVkLWVuZm9yY2Vt
ZW50CiAKLSMgU2tpcCBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBzaGFyZWQgd29ya2VycyB0ZXN0
cyBhcyB3ZSBkbyBub3Qgc3VwcG9ydCBzaGFyZWQgd29ya2VycwotaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9zaGFyZWQt
d29ya2VyLWNvbm5lY3Qtc3JjLWFsbG93ZWQuc3ViLmh0bWwKLWltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvY29ubmVjdC1zcmMvc2hhcmVkLXdv
cmtlci1jb25uZWN0LXNyYy1ibG9ja2VkLnN1Yi5odG1sCisjIFRlc3QgaXMgdGltaW5nIG91dC4K
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
c2VjdXJpdHlwb2xpY3l2aW9sYXRpb24vaW5zaWRlLXNoYXJlZC13b3JrZXIuaHRtbAogCiAjIFNv
bWV0aW1lcyBsb2dzIGEgbGluZSBhYm91dCB0cnlpbmcgdG8gY29ubmVjdCB0byBhbiBleHRlcm5h
bCBVUkwuCkBAIC01MTU3LDYgKzUxMzgsMTAgQEAgd2Via2l0Lm9yZy9iLzE4Mzk5NCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3NvbS9jc3Mtc3R5bGUtYXR0ci1kZWMKICMg
VGVzdCBpcyBjcmFzaGluZyBpbiBEZWJ1ZyBidWlsZHMgc2luY2UgaW1wb3J0Lgogd2Via2l0Lm9y
Zy9iLzIzNDk3NyBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20v
ZXZlbnRzL2ZvY3VzLWV2ZW50LWRvY3VtZW50LW1vdmUuaHRtbCBbIFNraXAgXQogCisjIFRlc3Qg
aXMgZmxha3kgYmVjYXVzZSBNZXNzYWdlUG9ydCBtZXNzYWdlcyBtYXkgZ2V0IHJlY2VpdmVkIGlu
IGEgZGlmZmVyZW50IG9yZGVyIHdoZW4gc2V2ZXJhbCBNZXNzYWdlUG9ydHMgYXJlIGludm9sdmVk
LAorIyBkdWUgdG8gaG93IE1lc3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2VzKCkgaXMgaW1wbGVt
ZW50ZWQuCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdv
cmtlci1uYW1lLXZpYS1vcHRpb25zLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgRmFp
bHVyZSBQYXNzIF0KKwogIyBQbHVnaW5zCiAjIEZJWE1FOiBSZW1vdmUgdGhlc2UgdGVzdHMuCiBw
bHVnaW5zLyBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9zaGFy
ZWQtd29ya2VyLWNvbm5lY3Qtc3JjLWFsbG93ZWQuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvY29ubmVjdC1zcmMvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1hbGxvd2VkLnN1Yi1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zODJiOTU2
OTViY2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13
b3JrZXItY29ubmVjdC1zcmMtYWxsb3dlZC5zdWItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBA
QAorCitGQUlMIEV4cGVjdGluZyBsb2dzOiBbInhociBhbGxvd2VkIiwiVEVTVCBDT01QTEVURSJd
IGFzc2VydF91bnJlYWNoZWQ6IHVuZXhwZWN0ZWQgbG9nOiB4aHIgYmxvY2tlZCBSZWFjaGVkIHVu
cmVhY2hhYmxlIGNvZGUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9zaGFy
ZWQtd29ya2VyLWNvbm5lY3Qtc3JjLWJsb2NrZWQuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvY29ubmVjdC1zcmMvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1ibG9ja2VkLnN1Yi1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41ZTk3MWUy
MGY0YmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13
b3JrZXItY29ubmVjdC1zcmMtYmxvY2tlZC5zdWItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBA
QAorVGhpcyB0ZXN0IGxvYWRzIGEgc2hhcmVkIHdvcmtlciwgZGVsaXZlcmVkIHdpdGggaXRzIG93
biBwb2xpY3kuIFRoZSB3b3JrZXIgc2hvdWxkIGJlIGJsb2NrZWQgZnJvbSBtYWtpbmcgYW4gWEhS
IGFzIHRoYXQgcG9saWN5IHNwZWNpZmllcyBhIGNvbm5lY3Qtc3JjICdub25lJywgdGhvdWdoIHRo
aXMgcmVzb3VyY2UncyBwb2xpY3kgaXMgY29ubmVjdC1zcmMgKi4gTm8gcmVwb3J0IHNob3VsZCBi
ZSBzZW50IHNpbmNlIHRoZSB3b3JrZXIncyBwb2xpY3kgZG9lc24ndCBzcGVjaWZ5IGEgcmVwb3J0
LXVyaS4KKworCitQQVNTIEV4cGVjdGluZyBsb2dzOiBbInhociBibG9ja2VkIiwiVEVTVCBDT01Q
TEVURSJdCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3Jr
ZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtl
ci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dAppbmRleCAwZTk5NzI0
Yjg2NGIuLjY4OThiNTRhYWI2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2Vy
L3NoYXJlZHdvcmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4
dApAQCAtMSw2ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczov
L3d3dy5sb2NhbGhvc3Q6OTQ0NC9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zdXBwb3J0L3Jlc291
cmNlLnB5P2Nyb3NzLW9yaWdpbi1mZXRjaAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJM
IGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBv
cnQvcmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLXhocgotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJu
YWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L3N1cHBvcnQvcmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLWZldGNoCiAKIFBBU1MgU2FtZS1vcmln
aW4gJ2ZldGNoKCknLgogUEFTUyBTYW1lLW9yaWdpbiBYSFIuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWIt
ZXhwZWN0ZWQudHh0CmluZGV4IDk3OTEwNjMwMzc4NS4uYmI2NDUyZjQ0YTBhIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNj
cmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dApAQCAtMiwxMCArMiw5IEBACiBIYXJuZXNzIEVycm9y
IChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIAogVElNRU9VVCBzaGFyZWR3b3JrZXItc2NyaXB0
LXNyYyBUZXN0IHRpbWVkIG91dAotRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAg
bm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgIEEgbmV0d29yayBlcnJvciBvY2N1cnJl
ZC4KLUZBSUwgYGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AgUmVmdXNl
ZCB0byBldmFsdWF0ZSBhIHN0cmluZyBhcyBKYXZhU2NyaXB0IGJlY2F1c2UgJ3Vuc2FmZS1ldmFs
JyBpcyBub3QgYW4gYWxsb3dlZCBzb3VyY2Ugb2Ygc2NyaXB0IGluIHRoZSBmb2xsb3dpbmcgQ29u
dGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAic2NyaXB0LXNyYyAnc2VsZicgJ25vbmNl
LWEnIGJsb2I6IGZpbGVzeXN0ZW06Ii4KLQotRkFJTCBgc2V0VGltZW91dChbc3RyaW5nXSlgIG5v
dCBibG9ja2VkIGluIGh0dHA6IHdpdGhvdXQgQ1NQIGFzc2VydF91bnJlYWNoZWQ6IGNhbGxiYWNr
IG5vdCBjYWxsZWQuIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBDcm9zcy1vcmlnaW4g
YGltcG9ydFNjcmlwdHMoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgTG9hZCBm
YWlsZWQKK1BBU1MgYGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AKK1BB
U1MgYHNldFRpbWVvdXQoW3N0cmluZ10pYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3V0IENT
UAogVElNRU9VVCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgYmxvY2tlZCBpbiBodHRw
OiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnIFRlc3QgdGltZWQgb3V0CiBOT1RSVU4gYGV2YWwoKWAg
YmxvY2tlZCBpbiBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCiBOT1RSVU4gYHNldFRpbWVv
dXQoW3N0cmluZ10pYCBibG9ja2VkIGluIGh0dHA6IHdpdGggc2NyaXB0LXNyYyAnc2VsZicKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3Vi
LWV4cGVjdGVkLnR4dAppbmRleCA0ZWFjMWNjYzA1MjYuLmI4ZWUxM2IwZmZjZSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91dC5zdWItZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4
cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKIAogRkFJTCBEZWRpY2F0ZWQgd29ya2VyIGluaGVy
aXRzIENTUCBmcm9tIG1haW4gZG9jdW1lbnQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgInNldFRp
bWVvdXQgYWxsb3dlZCIgYnV0IGdvdCAic2V0VGltZW91dCBibG9ja2VkIgotRkFJTCBTaGFyZWQg
d29ya2VyIGRlbGl2ZXJzIGl0cyBvd24gQ1NQIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJzZXRU
aW1lb3V0IGJsb2NrZWQiIGJ1dCBnb3QgInNldFRpbWVvdXQgYWxsb3dlZCIKK1BBU1MgU2hhcmVk
IHdvcmtlciBkZWxpdmVycyBpdHMgb3duIENTUAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2V2ZW50c291cmNlL3NoYXJlZC13b3JrZXIv
ZXZlbnRzb3VyY2UtY2xvc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9ldmVudHNvdXJjZS9zaGFyZWQtd29ya2VyL2V2ZW50c291cmNl
LWNsb3NlLWV4cGVjdGVkLnR4dAppbmRleCA1MjFjODAwODBlZGIuLjhhNzFmZmUyMzM4NSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ldmVu
dHNvdXJjZS9zaGFyZWQtd29ya2VyL2V2ZW50c291cmNlLWNsb3NlLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2V2ZW50c291cmNl
L3NoYXJlZC13b3JrZXIvZXZlbnRzb3VyY2UtY2xvc2UtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEs
MyBAQAogCi1GQUlMIHNoYXJlZCB3b3JrZXIgLSBFdmVudFNvdXJjZTogY2xvc2UoKSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKK1BBU1Mgc2hhcmVkIHdvcmtlciAtIEV2ZW50U291
cmNlOiBjbG9zZSgpCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvZXZlbnRzb3VyY2Uvc2hhcmVkLXdvcmtlci9ldmVudHNvdXJjZS1jb25z
dHJ1Y3Rvci1ub24tc2FtZS1vcmlnaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ldmVudHNvdXJjZS9zaGFyZWQtd29ya2VyL2V2ZW50
c291cmNlLWNvbnN0cnVjdG9yLW5vbi1zYW1lLW9yaWdpbi1leHBlY3RlZC50eHQKaW5kZXggNDVh
ZjA4OTBjNGE4Li42M2NhYWE3ZDU3NmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZXZlbnRzb3VyY2Uvc2hhcmVkLXdvcmtlci9ldmVudHNv
dXJjZS1jb25zdHJ1Y3Rvci1ub24tc2FtZS1vcmlnaW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZXZlbnRzb3VyY2Uvc2hhcmVk
LXdvcmtlci9ldmVudHNvdXJjZS1jb25zdHJ1Y3Rvci1ub24tc2FtZS1vcmlnaW4tZXhwZWN0ZWQu
dHh0CkBAIC0xLDYgKzEsNiBAQAogCi1GQUlMIHNoYXJlZCB3b3JrZXIgLSBFdmVudFNvdXJjZTog
Y29uc3RydWN0b3IgKGFjdCBhcyBpZiB0aGVyZSBpcyBhIG5ldHdvcmsgZXJyb3IpIChmdHA6Ly9l
eGFtcGxlLm5vdCkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi1GQUlMIHNoYXJl
ZCB3b3JrZXIgLSBFdmVudFNvdXJjZTogY29uc3RydWN0b3IgKGFjdCBhcyBpZiB0aGVyZSBpcyBh
IG5ldHdvcmsgZXJyb3IpIChhYm91dDpibGFuaykgQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVk
V29ya2VyCi1GQUlMIHNoYXJlZCB3b3JrZXIgLSBFdmVudFNvdXJjZTogY29uc3RydWN0b3IgKGFj
dCBhcyBpZiB0aGVyZSBpcyBhIG5ldHdvcmsgZXJyb3IpIChtYWlsdG86d2hhdHdnQGF3ZXNvbWUu
ZXhhbXBsZSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi1GQUlMIHNoYXJlZCB3
b3JrZXIgLSBFdmVudFNvdXJjZTogY29uc3RydWN0b3IgKGFjdCBhcyBpZiB0aGVyZSBpcyBhIG5l
dHdvcmsgZXJyb3IpIChqYXZhc2NyaXB0OmFsZXJ0KCdGQUlMJykpIENhbid0IGZpbmQgdmFyaWFi
bGU6IFNoYXJlZFdvcmtlcgorUEFTUyBzaGFyZWQgd29ya2VyIC0gRXZlbnRTb3VyY2U6IGNvbnN0
cnVjdG9yIChhY3QgYXMgaWYgdGhlcmUgaXMgYSBuZXR3b3JrIGVycm9yKSAoZnRwOi8vZXhhbXBs
ZS5ub3QpCitQQVNTIHNoYXJlZCB3b3JrZXIgLSBFdmVudFNvdXJjZTogY29uc3RydWN0b3IgKGFj
dCBhcyBpZiB0aGVyZSBpcyBhIG5ldHdvcmsgZXJyb3IpIChhYm91dDpibGFuaykKK1BBU1Mgc2hh
cmVkIHdvcmtlciAtIEV2ZW50U291cmNlOiBjb25zdHJ1Y3RvciAoYWN0IGFzIGlmIHRoZXJlIGlz
IGEgbmV0d29yayBlcnJvcikgKG1haWx0bzp3aGF0d2dAYXdlc29tZS5leGFtcGxlKQorUEFTUyBz
aGFyZWQgd29ya2VyIC0gRXZlbnRTb3VyY2U6IGNvbnN0cnVjdG9yIChhY3QgYXMgaWYgdGhlcmUg
aXMgYSBuZXR3b3JrIGVycm9yKSAoamF2YXNjcmlwdDphbGVydCgnRkFJTCcpKQogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2V2ZW50c291
cmNlL3NoYXJlZC13b3JrZXIvZXZlbnRzb3VyY2UtZXZlbnR0YXJnZXQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ldmVudHNvdXJjZS9z
aGFyZWQtd29ya2VyL2V2ZW50c291cmNlLWV2ZW50dGFyZ2V0LWV4cGVjdGVkLnR4dAppbmRleCA2
ZDdkMmVhNjI2ZWIuLmJjMjc3YjgwNjBiZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ldmVudHNvdXJjZS9zaGFyZWQtd29ya2VyL2V2ZW50
c291cmNlLWV2ZW50dGFyZ2V0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2V2ZW50c291cmNlL3NoYXJlZC13b3JrZXIvZXZlbnRz
b3VyY2UtZXZlbnR0YXJnZXQtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIHNo
YXJlZCB3b3JrZXIgLSBFdmVudFNvdXJjZTogYWRkRXZlbnRMaXN0ZW5lcigpIENhbid0IGZpbmQg
dmFyaWFibGU6IFNoYXJlZFdvcmtlcgorUEFTUyBzaGFyZWQgd29ya2VyIC0gRXZlbnRTb3VyY2U6
IGFkZEV2ZW50TGlzdGVuZXIoKQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2V2ZW50c291cmNlL3NoYXJlZC13b3JrZXIvZXZlbnRzb3Vy
Y2Utb25tZXNzYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvZXZlbnRzb3VyY2Uvc2hhcmVkLXdvcmtlci9ldmVudHNvdXJjZS1vbm1l
c3NhZ2UtZXhwZWN0ZWQudHh0CmluZGV4IGNlYTJkN2M1N2IxOS4uYjA3ZjQ3MjkwMzUzIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2V2ZW50
c291cmNlL3NoYXJlZC13b3JrZXIvZXZlbnRzb3VyY2Utb25tZXNzYWdlLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2V2ZW50c291
cmNlL3NoYXJlZC13b3JrZXIvZXZlbnRzb3VyY2Utb25tZXNzYWdlLWV4cGVjdGVkLnR4dApAQCAt
MSwzICsxLDMgQEAKIAotRkFJTCBzaGFyZWQgd29ya2VyIC0gRXZlbnRTb3VyY2U6IG9ubWVzc2Fn
ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKK1BBU1Mgc2hhcmVkIHdvcmtlciAt
IEV2ZW50U291cmNlOiBvbm1lc3NhZ2UKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ldmVudHNvdXJjZS9zaGFyZWQtd29ya2VyL2V2ZW50
c291cmNlLW9ub3Blbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2V2ZW50c291cmNlL3NoYXJlZC13b3JrZXIvZXZlbnRzb3VyY2Utb25v
cGVuLWV4cGVjdGVkLnR4dAppbmRleCA0MjEyMjg0ODExYWYuLmZiNjc0ZmUyOGFlYSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ldmVudHNv
dXJjZS9zaGFyZWQtd29ya2VyL2V2ZW50c291cmNlLW9ub3Blbi1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ldmVudHNvdXJjZS9z
aGFyZWQtd29ya2VyL2V2ZW50c291cmNlLW9ub3Blbi1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwz
IEBACiAKLUZBSUwgc2hhcmVkIHdvcmtlciAtIEV2ZW50U291cmNlOiBvbm9wZW4gKGFubm91bmNp
bmcgdGhlIGNvbm5lY3Rpb24pIENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtlcgorUEFT
UyBzaGFyZWQgd29ya2VyIC0gRXZlbnRTb3VyY2U6IG9ub3BlbiAoYW5ub3VuY2luZyB0aGUgY29u
bmVjdGlvbikKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9ldmVudHNvdXJjZS9zaGFyZWQtd29ya2VyL2V2ZW50c291cmNlLXByb3RvdHlw
ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2V2ZW50c291cmNlL3NoYXJlZC13b3JrZXIvZXZlbnRzb3VyY2UtcHJvdG90eXBlLWV4cGVj
dGVkLnR4dAppbmRleCBhYTY1ZTk5ZTFhOWYuLjIwMmFhYTYyZmZmZiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ldmVudHNvdXJjZS9zaGFy
ZWQtd29ya2VyL2V2ZW50c291cmNlLXByb3RvdHlwZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ldmVudHNvdXJjZS9zaGFyZWQt
d29ya2VyL2V2ZW50c291cmNlLXByb3RvdHlwZS1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBA
CiAKLUZBSUwgc2hhcmVkIHdvcmtlciAtIEV2ZW50U291cmNlOiBwcm90b3R5cGUgZXQgYWwgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCitQQVNTIHNoYXJlZCB3b3JrZXIgLSBFdmVu
dFNvdXJjZTogcHJvdG90eXBlIGV0IGFsCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZXZlbnRzb3VyY2Uvc2hhcmVkLXdvcmtlci9ldmVu
dHNvdXJjZS11cmwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9ldmVudHNvdXJjZS9zaGFyZWQtd29ya2VyL2V2ZW50c291cmNlLXVybC1l
eHBlY3RlZC50eHQKaW5kZXggNTEwM2JkOGVjZjJkLi43NmFkNTg1YjRmNDcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZXZlbnRzb3VyY2Uv
c2hhcmVkLXdvcmtlci9ldmVudHNvdXJjZS11cmwtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZXZlbnRzb3VyY2Uvc2hhcmVkLXdv
cmtlci9ldmVudHNvdXJjZS11cmwtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlM
IHNoYXJlZCB3b3JrZXIgLSBFdmVudFNvdXJjZTogdXJsIENhbid0IGZpbmQgdmFyaWFibGU6IFNo
YXJlZFdvcmtlcgorUEFTUyBzaGFyZWQgd29ya2VyIC0gRXZlbnRTb3VyY2U6IHVybAogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
YnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5o
dHRwcy1leHBlY3RlZC50eHQKaW5kZXggYzEwNzEzNjU1MjgwLi42Zjg0NGRkNWQ5NDkgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9i
cm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtl
ci5odHRwcy1leHBlY3RlZC50eHQKQEAgLTUsNyArNSw3IEBAIEhhcm5lc3MgRXJyb3IgKFRJTUVP
VVQpLCBtZXNzYWdlID0gbnVsbAogUEFTUyBEZWRpY2F0ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQg
c2NyaXB0CiBQQVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0CiBQ
QVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIG5vdC1pbi1jYWNoZSBzY3JpcHQKLVBBU1MgU2hh
cmVkIHdvcmtlciBvZiB0aGUgY2FjaGVkIHNjcmlwdAotUEFTUyBTaGFyZWQgd29ya2VyIG9mIHRo
ZSBmYWxsYmFja2VkIHNjcmlwdAorRkFJTCBTaGFyZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2Ny
aXB0IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJEb25lOiBjYWNoZWQiIGJ1dCBnb3QgIkVycm9y
OiBJbXBvcnRpbmcgYSBub24tY2FjaGVkIHNjcmlwdCBtdXN0IGZhaWwuIgorRkFJTCBTaGFyZWQg
d29ya2VyIG9mIHRoZSBmYWxsYmFja2VkIHNjcmlwdCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAi
RG9uZTogZmFsbGJhY2tlZCIgYnV0IGdvdCAiRXJyb3I6IEltcG9ydGluZyBhIG5vbi1jYWNoZWQg
c2NyaXB0IG11c3QgZmFpbC4iCiBUSU1FT1VUIFNoYXJlZCB3b3JrZXIgb2YgdGhlIG5vdC1pbi1j
YWNoZSBzY3JpcHQgVGVzdCB0aW1lZCBvdXQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1w
b2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2
ZS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnlt
b3VzLWlmcmFtZS9zaGFyZWR3b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5k
b3ctZXhwZWN0ZWQudHh0CmluZGV4IDRlZDg3NDc0NzZjNy4uNTg2ZDEwMTUyYTM2IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jv
c3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9hbm9ueW1vdXMtaWZyYW1lL3NoYXJlZHdvcmtlci1w
YXJ0aXRpb25pbmcudGVudGF0aXZlLmh0dHBzLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdp
bi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3b3JrZXItcGFydGl0aW9u
aW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAog
Ci1GQUlMIEFub255bW91cyBpZnJhbWVzIGdldCBwYXJ0aXRpb25lZCBzaGFyZWQgd29ya2Vycy4g
YXNzZXJ0X3RydWU6IFRoZSAibm9ybWFsIiBpZnJhbWUncyBzaGFyZWR3b3JrZXIgc2hvdWxkIHJl
dHVybiB7Im5vcm1hbCI6IHRydWUsICJub3JtYWxfY29udHJvbCI6IHRydWV9LCBidXQgaW5zdGVh
ZCByZXR1cm5lZCB7Im5vcm1hbCI6dHJ1ZX0gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK0ZBSUwg
QW5vbnltb3VzIGlmcmFtZXMgZ2V0IHBhcnRpdGlvbmVkIHNoYXJlZCB3b3JrZXJzLiBhc3NlcnRf
dHJ1ZTogVGhlICJub3JtYWwiIGlmcmFtZSdzIHNoYXJlZHdvcmtlciBzaG91bGQgcmV0dXJuIHsi
bm9ybWFsIjogdHJ1ZSwgIm5vcm1hbF9jb250cm9sIjogdHJ1ZX0sIGJ1dCBpbnN0ZWFkIHJldHVy
bmVkIHsibm9ybWFsX2NvbnRyb2wiOnRydWUsIm5vcm1hbCI6dHJ1ZSwiYW5vbnltb3VzIjp0cnVl
LCJhbm9ueW1vdXNfY29udHJvbCI6dHJ1ZX0gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1p
c3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3Jp
Z2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IDYzNTViNjhk
ZTcwYi4uYzhiZjc1ZTdlYTg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9jcm9z
cy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdp
bi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMt
ZXhwZWN0ZWQudHh0CkBAIC0yMCw3ICsyMCw3IEBAIFBBU1MgZGVkaWNhdGVkIHdvcmtlcjogc2No
ZW1lID0gYmxvYiwgdmFsdWUgPSAqCiBQQVNTIGRlZGljYXRlZCB3b3JrZXI6IHNjaGVtZSA9IGJs
b2IsIHZhbHVlID0gc2VsZgogRkFJTCBkZWRpY2F0ZWQgd29ya2VyOiBzY2hlbWUgPSBibG9iLCB2
YWx1ZSA9IChcKSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCBmYWxzZSBidXQgZ290IHRydWUKIFBB
U1Mgc2hhcmVkIHdvcmtlcjogd2l0aENvb3BDb2VwID0gZmFsc2UKLVBBU1Mgc2hhcmVkIHdvcmtl
cjogd2l0aENvb3BDb2VwID0gdHJ1ZQorRkFJTCBzaGFyZWQgd29ya2VyOiB3aXRoQ29vcENvZXAg
PSB0cnVlIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZQogUEFTUyBz
ZXJ2aWNlIHdvcmtlcjogd2l0aENvb3BDb2VwID0gZmFsc2UKIEZBSUwgc2VydmljZSB3b3JrZXI6
IHdpdGhDb29wQ29lcCA9IHRydWUgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgdHJ1ZSBidXQgZ290
IGZhbHNlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJz
Lmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJz
Lmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAzMzk4YmQ4ODkzMWIuLjRjODY2ZWIyOTI2MyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvc2hhcmVkLXdvcmtlcnMuaHR0cHMtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4
cGVjdGVkLnR4dApAQCAtMiw3ICsyLDcgQEAgVmVyaWZ5IHRoZSBDcm9zcy1PcmlnaW4gRW1iZWRk
ZXIgUG9saWN5IGZvciBTaGFyZWQgV29ya2VycyBieSBwZXJmb3JtaW5nIGEgY3Jvc3MKIAogCiBQ
QVNTIGRlZmF1bHQgcG9saWN5IChkZXJpdmVkIGZyb20gcmVzcG9uc2UpCi1GQUlMICJyZXF1aXJl
LWNvcnAiIChkZXJpdmVkIGZyb20gcmVzcG9uc2UpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJm
YWlsdXJlIiBidXQgZ290ICJzdWNjZXNzIgorUEFTUyAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBm
cm9tIHJlc3BvbnNlKQogUEFTUyBkZWZhdWx0IHBvbGljeSAoZGVyaXZlZCBmcm9tIG93bmVyIHNl
dCBkdWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAtIGJsb2IgVVJMKQogRkFJTCAicmVxdWlyZS1j
b3JwIiAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBkdWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAt
IGJsb2IgVVJMKSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiZmFpbHVyZSIgYnV0IGdvdCAic3Vj
Y2VzcyIKIFBBU1MgZGVmYXVsdCBwb2xpY3kgKGRlcml2ZWQgZnJvbSBvd25lciBzZXQgZHVlIHRv
IHVzZSBvZiBsb2NhbCBzY2hlbWUgLSBkYXRhIFVSTCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRk
ZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5jZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdp
bi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVyaXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50
eHQKaW5kZXggNzViMWQzM2U1MjYwLi5iMmJmMmUzYmZmM2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1i
ZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5jZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9z
cy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5jZS5zdWIuaHR0cHMtZXhw
ZWN0ZWQudHh0CkBAIC0xLDcgKzEsNiBAQAogQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJM
IGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbW1vbi9ibGFuay5odG1sCiBCbG9ja2VkIGFj
Y2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29tbW9uL2Js
YW5rLmh0bWwKIEJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2Nh
bGhvc3Q6OTQ0NC9jb21tb24vYmxhbmsuaHRtbAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwg
VVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbW1vbi9ibGFuay5odG1sCiAKIFBBU1Mg
VGVzdCB0aGF0IGxvY2FsIHNjaGVtZSB3b3JrZXJzIGluaGVyaXQgQ09FUDogcmVxdWlyZS1jb3Jw
IGZyb20gdGhlIGNyZWF0aW5nIGRvY3VtZW50CiBQQVNTIGJsb2IgVVJMIGRlZGljYXRlZCB3b3Jr
ZXI6IFNhbWUgb3JpZ2luIHNob3VsZCBiZSBhbGxvd2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2Vydmlj
ZS13b3JrZXIvY2xhaW0tc2hhcmVkLXdvcmtlci1mZXRjaC5odHRwcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vy
cy9zZXJ2aWNlLXdvcmtlci9jbGFpbS1zaGFyZWQtd29ya2VyLWZldGNoLmh0dHBzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjkwZDkxYWQ1MTAx
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2NsYWltLXNoYXJlZC13b3Jr
ZXItZmV0Y2guaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCisKK0ZBSUwgZmV0
Y2goKSBpbiBTaGFyZWRXb3JrZXIgc2hvdWxkIGJlIGludGVyY2VwdGVkIGFmdGVyIHRoZSBjbGll
bnQgaXMgY2xhaW1lZC4gYXNzZXJ0X2VxdWFsczogZmV0Y2goKSBpbiB0aGUgc2hhcmVkIHdvcmtl
ciBzaG91bGQgYmUgaW50ZXJjZXB0ZWQuIGV4cGVjdGVkICJJbnRlcmNlcHRlZCEiIGJ1dCBnb3Qg
ImEgc2ltcGxlIHRleHQgZmlsZVxuIgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyLWRldGFjaC1mcmFt
ZS1pbi1lcnJvci1ldmVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyLWRldGFjaC1mcmFtZS1pbi1l
cnJvci1ldmVudC1leHBlY3RlZC50eHQKaW5kZXggZWRlMDI3YmZlY2FhLi5lYTg0YTdmZjAyMjgg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9TaGFyZWRXb3JrZXItZGV0YWNoLWZyYW1lLWluLWVycm9yLWV2ZW50LWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvU2hhcmVkV29ya2VyLWRldGFjaC1mcmFtZS1pbi1lcnJvci1ldmVudC1leHBlY3RlZC50
eHQKQEAgLTEsNiArMSwzIEBACiAKLQotSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2Ug
PSBudWxsCi0KLVRJTUVPVVQgVGVzdCBmcmFtZSBkZXRhY2ggaW4gc2hhcmVkIHdvcmtlcidzIGVy
cm9yIGhhbmRsZXIgVGVzdCB0aW1lZCBvdXQKK1BBU1MgVGVzdCBmcmFtZSBkZXRhY2ggaW4gc2hh
cmVkIHdvcmtlcidzIGVycm9yIGhhbmRsZXIKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlci1leGNlcHRp
b24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlci1leGNlcHRpb24tZXhwZWN0ZWQudHh0CmluZGV4IDE1
ODgyNjkyMjI4MS4uNTgzOWU0NmUzMjlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyLWV4Y2VwdGlvbi1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlci1leGNlcHRpb24tZXhwZWN0ZWQudHh0CkBAIC0xLDMg
KzEsMyBAQAogCi1GQUlMIFRoaXMgdGVzdCBjaGVja3Mgd2hldGhlciBleGNlcHRpb25zIGluIFNo
YXJlZFdvcmtlcnMgYXJlIGxvZ2dlZCB0byB0aGUgcGFyZW50IGRvY3VtZW50LiBBbiBleGNlcHRp
b24gc2hvdWxkIGJlIGxvZ2dlZCB0byB0aGUgZXJyb3IgY29uc29sZS4gbnVsbCBpcyBub3QgYW4g
b2JqZWN0IChldmFsdWF0aW5nICd3b3JrZXIucG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQp
IHsgd29ya2VyLm9ubWVzc2FnZShldnQpOyB9JykKK1BBU1MgVGhpcyB0ZXN0IGNoZWNrcyB3aGV0
aGVyIGV4Y2VwdGlvbnMgaW4gU2hhcmVkV29ya2VycyBhcmUgbG9nZ2VkIHRvIHRoZSBwYXJlbnQg
ZG9jdW1lbnQuIEFuIGV4Y2VwdGlvbiBzaG91bGQgYmUgbG9nZ2VkIHRvIHRoZSBlcnJvciBjb25z
b2xlLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyLWV4Y2VwdGlvbi1wcm9wYWdhdGlvbi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvU2hhcmVkV29ya2VyLWV4Y2VwdGlvbi1wcm9wYWdhdGlvbi1leHBlY3RlZC50eHQKaW5kZXgg
NGQxMzliNWFhZDc3Li40NmJiODk3ZjA3NDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXItZXhjZXB0aW9u
LXByb3BhZ2F0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyLWV4Y2VwdGlvbi1wcm9wYWdh
dGlvbi1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgVW5jYXVnaHQgZXJyb3Ig
aW4gc2hhcmVkIHdvcmtlciBzaG91bGQgbm90IHByb3BhZ2F0ZSB0byB3aW5kb3cgbnVsbCBpcyBu
b3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3JrZXIucG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlv
bihldnQpIHsgd29ya2VyLm9ubWVzc2FnZShldnQpOyB9JykKK1BBU1MgVW5jYXVnaHQgZXJyb3Ig
aW4gc2hhcmVkIHdvcmtlciBzaG91bGQgbm90IHByb3BhZ2F0ZSB0byB3aW5kb3cKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L1NoYXJlZFdvcmtlci1zY3JpcHQtZXJyb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlci1zY3JpcHQt
ZXJyb3ItZXhwZWN0ZWQudHh0CmluZGV4IDc0ODY3MGM3NWYzZi4uZTgxMzM4MDBkMmNhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvU2hhcmVkV29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlci1z
Y3JpcHQtZXJyb3ItZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNyBAQAorQ09OU09MRSBNRVNTQUdF
OiBFcnJvcjogYXNzZXJ0X3VucmVhY2hlZDogRkFJTDogb25lcnJvciBpbnZva2VkIGZvciBhIHNj
cmlwdCBlcnJvci4gUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCiAKLUZBSUwgVGVzdCBzY3JpcHQg
ZXJyb3IgdW5oYW5kbGVkLiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2
YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGlu
ZyAnd29ya2VyLnBvcnQucG9zdE1lc3NhZ2UnKSIKLUZBSUwgVGVzdCBzY3JpcHQgZXJyb3IgaGFu
ZGxlZC4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVj
dCAiVHlwZUVycm9yOiBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3dvcmtlci5w
b3J0LnBvc3RNZXNzYWdlJykiCitIYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IEVycm9y
OiBhc3NlcnRfdW5yZWFjaGVkOiBGQUlMOiBvbmVycm9yIGludm9rZWQgZm9yIGEgc2NyaXB0IGVy
cm9yLiBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKKworUEFTUyBUZXN0IHNjcmlwdCBlcnJvciB1
bmhhbmRsZWQuCitQQVNTIFRlc3Qgc2NyaXB0IGVycm9yIGhhbmRsZWQuCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFy
ZWRXb3JrZXItc2ltcGxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXItc2ltcGxlLWV4cGVjdGVkLnR4
dAppbmRleCAyYWJlNTI5ZDIxNTMuLjgzNzYzMTk3MWU0YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlci1z
aW1wbGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXItc2ltcGxlLWV4cGVjdGVkLnR4dApAQCAt
MSwzICsxLDMgQEAKIAotRkFJTCBUZXN0IHNpbXBsZSBzaGFyZWQgd29ya2VyIGNvbnN0cnVjdGlv
biBjYXNlLiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2Jq
ZWN0ICJUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2Vy
LnBvcnQucG9zdE1lc3NhZ2UnKSIKK1BBU1MgVGVzdCBzaW1wbGUgc2hhcmVkIHdvcmtlciBjb25z
dHJ1Y3Rpb24gY2FzZS4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9ibG9iVXJsLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9T
aGFyZWRXb3JrZXJfYmxvYlVybC1leHBlY3RlZC50eHQKaW5kZXggZmE1M2U4N2ZhMzBlLi42YzYw
N2Y4ODc4NDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJfYmxvYlVybC1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJl
ZFdvcmtlcl9ibG9iVXJsLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKIAotRkFJTCBCbG9i
IFVSTCBzaGFyZWQgYnkgZG9jdW1lbnQgb24gU2hhcmVkV29ya2VyIHByb21pc2VfdGVzdDogVW5o
YW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogbnVsbCBpcyBu
b3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3JrZXIucG9ydC5wb3N0TWVzc2FnZScpIgorUEFT
UyBCbG9iIFVSTCBzaGFyZWQgYnkgZG9jdW1lbnQgb24gU2hhcmVkV29ya2VyCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9T
aGFyZWRXb3JrZXJfZGF0YVVybC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyX2RhdGFVcmwtZXhwZWN0
ZWQudHh0CmluZGV4IDk5NWEwNjAxOWI4NC4uOWI1ODIwYWFlOGNiIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29y
a2VyX2RhdGFVcmwtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJfZGF0YVVybC1leHBlY3RlZC50
eHQKQEAgLTEsMTMgKzEsNSBAQAotQ09OU09MRSBNRVNTQUdFOiBFcnJvcjogYXNzZXJ0X2VxdWFs
czogZXhwZWN0ZWQgMiBidXQgZ290IDEKIAogCi1IYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2Fn
ZSA9IEVycm9yOiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3QgMQotCi1QQVNTIERh
dGEgVVJMIG5vdCBzaGFyZWQgYnkgY3Jvc3Mtb3JpZ2luIFNoYXJlZFdvcmtlcnMKLVRJTUVPVVQg
RGF0YSBVUkxzIHNoYXJlZCBieSBzYW1lLW9yaWdpbiBTaGFyZWRXb3JrZXJzIFRlc3QgdGltZWQg
b3V0Ci0KLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gRXJyb3I6IGFzc2VydF9lcXVh
bHM6IGV4cGVjdGVkIDIgYnV0IGdvdCAxCi0KIFBBU1MgRGF0YSBVUkwgbm90IHNoYXJlZCBieSBj
cm9zcy1vcmlnaW4gU2hhcmVkV29ya2VycwotVElNRU9VVCBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNh
bWUtb3JpZ2luIFNoYXJlZFdvcmtlcnMgVGVzdCB0aW1lZCBvdXQKK1BBU1MgRGF0YSBVUkxzIHNo
YXJlZCBieSBzYW1lLW9yaWdpbiBTaGFyZWRXb3JrZXJzCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9Xb3JrZXJfY3Jvc3Nf
b3JpZ2luX3NlY3VyaXR5X2Vyci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvV29ya2VyX2Nyb3NzX29yaWdpbl9zZWN1cml0
eV9lcnItZXhwZWN0ZWQudHh0CmluZGV4IDc3MWVkOWJhMjM5NC4uMzA3ZTlkYWNlYTY5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvV29ya2VyX2Nyb3NzX29yaWdpbl9zZWN1cml0eV9lcnItZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9Xb3JrZXJf
Y3Jvc3Nfb3JpZ2luX3NlY3VyaXR5X2Vyci1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw0IEBACiAK
LUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1USU1FT1VUICBXb3Jr
ZXIgY3Jvc3Mtb3JpZ2luIFVSTCAgVGVzdCB0aW1lZCBvdXQKK1BBU1MgQ3Jvc3Mtb3JpZ2luIGNs
YXNzaWMgd29ya2VycyBzaG91bGQgZmFpbCB0byBmZXRjaAorUEFTUyBDcm9zcy1vcmlnaW4gbW9k
dWxlIHdvcmtlcnMgc2hvdWxkIGZhaWwgdG8gZmV0Y2gKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9T
aGFyZWRXb3JrZXIvSW5maW5pdHktYXJndW1lbnRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hh
cmVkV29ya2VyL0luZmluaXR5LWFyZ3VtZW50cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lOWNmMzk5ODVkYzMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29u
c3RydWN0b3JzL1NoYXJlZFdvcmtlci9JbmZpbml0eS1hcmd1bWVudHMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMyBAQAorCitQQVNTIFRlc3QgY29uc3RydWN0aW5nIGEgc2hhcmVkIHdvcmtlciB3
aXRoIEluZmluaXR5CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29ya2VyL05hTi1hcmd1
bWVudHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvTmFOLWFyZ3VtZW50cy1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45MDUx
NWQ4YWVlOTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci9OYU4tYXJn
dW1lbnRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBUZXN0IGNvbnN0cnVj
dGluZyBhIHNoYXJlZCB3b3JrZXIgd2l0aCBOYU4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFy
ZWRXb3JrZXIvVVJMTWlzbWF0Y2hFcnJvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdv
cmtlci9VUkxNaXNtYXRjaEVycm9yLWV4cGVjdGVkLnR4dAppbmRleCA3NDQ5MGU1MmM3NmYuLjEz
ZTgyZmU1MGVhMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvVVJMTWlzbWF0Y2hF
cnJvci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvVVJMTWlzbWF0Y2hF
cnJvci1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IFJlZmVy
ZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKIAotRkFJTCBXZWIg
V29ya2VyczogU2hhcmVkV29ya2VyIC0gc2FtZSBuYW1lLCBkaWZmZXJlbnQgVVJMIFJlZmVyZW5j
ZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKK1BBU1MgV2ViIFdvcmtl
cnM6IFNoYXJlZFdvcmtlciAtIHNhbWUgbmFtZSwgZGlmZmVyZW50IFVSTAogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29u
c3RydWN0b3JzL1NoYXJlZFdvcmtlci9jb25uZWN0LWV2ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9jb25zdHJ1Y3Rv
cnMvU2hhcmVkV29ya2VyL2Nvbm5lY3QtZXZlbnQtZXhwZWN0ZWQudHh0CmluZGV4IDNmYjllMDIw
MDJjMC4uOTdmZTI5NDdlNGJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci9jb25u
ZWN0LWV2ZW50LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci9jb25uZWN0
LWV2ZW50LWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKIAotRkFJTCBUZXN0IGNvbm5lY3Qg
ZXZlbnQgZm9yIGEgc2hhcmVkIHdvcmtlciBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRp
bmcgJ3dvcmtlci5wb3J0JykKK1BBU1MgVGVzdCBjb25uZWN0IGV2ZW50IGZvciBhIHNoYXJlZCB3
b3JrZXIKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvZ2xvYmFsLW1lbWJlcnMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvZ2xvYmFsLW1lbWJlcnMtZXhwZWN0
ZWQudHh0CmluZGV4IGFhN2M1MWRjMDgzOC4uZWE1MzQ0NDRkNmJhIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0
b3JzL1NoYXJlZFdvcmtlci9nbG9iYWwtbWVtYmVycy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9y
cy9TaGFyZWRXb3JrZXIvZ2xvYmFsLW1lbWJlcnMtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsMyBA
QAogCi1GQUlMIFRlc3QgaWYgZ2xvYmFsIG1lbWJlcnMgZXhpc3QgaW4gYSBzaGFyZWQgd29ya2Vy
IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQub25tZXNzYWdl
ID0gdC5zdGVwX2Z1bmNfZG9uZShlID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKGUuZGF0YSwgJycp
OwotICB9KScpCitQQVNTIFRlc3QgaWYgZ2xvYmFsIG1lbWJlcnMgZXhpc3QgaW4gYSBzaGFyZWQg
d29ya2VyCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29ya2VyL2ludGVyZmFjZS1vYmpl
Y3RzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29ya2VyL2ludGVyZmFjZS1vYmplY3Rz
LWV4cGVjdGVkLnR4dAppbmRleCA5NzM3ZjZhYjIzMzkuLjdmMjViODM2NDRkNyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2Nv
bnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvaW50ZXJmYWNlLW9iamVjdHMtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9j
b25zdHJ1Y3RvcnMvU2hhcmVkV29ya2VyL2ludGVyZmFjZS1vYmplY3RzLWV4cGVjdGVkLnR4dApA
QCAtMSwzICsxLDMgQEAKIAotRkFJTCBUZXN0IGlmIGludGVyZmFjZSBvYmplY3RzIGV4aXN0IGlu
IGEgc2hhcmVkIHdvcmtlciBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3dvcmtl
ci5wb3J0LnN0YXJ0JykKK0ZBSUwgVGVzdCBpZiBpbnRlcmZhY2Ugb2JqZWN0cyBleGlzdCBpbiBh
IHNoYXJlZCB3b3JrZXIgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIiIgYnV0IGdvdCAiVGhlc2Ug
d2VyZSBtaXNzaW5nOiBXb3JrZXIsIFNoYXJlZFdvcmtlciwgQXBwbGljYXRpb25DYWNoZSIKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvbmFtZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0
b3JzL1NoYXJlZFdvcmtlci9uYW1lLWV4cGVjdGVkLnR4dAppbmRleCBjYzUwOTFiNzM0YjEuLmZm
NjcyMzUzOTMxZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvbmFtZS1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvbmFtZS1leHBlY3RlZC50eHQKQEAgLTEs
NSArMSwzIEBACiAKLUZBSUwgVGVzdCBzZWxmLm5hbWUgaW4gYSBzaGFyZWQgd29ya2VyIG51bGwg
aXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQub25tZXNzYWdlID0gdC5z
dGVwX2Z1bmNfZG9uZShlID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKGUuZGF0YSwgJ2hlbGxvJyk7
Ci0gIH0pJykKK1BBU1MgVGVzdCBzZWxmLm5hbWUgaW4gYSBzaGFyZWQgd29ya2VyCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29ya2VyL251bGwtYXJndW1lbnRzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9jb25z
dHJ1Y3RvcnMvU2hhcmVkV29ya2VyL251bGwtYXJndW1lbnRzLWV4cGVjdGVkLnR4dAppbmRleCA1
MjFmMTNjNjBhYzIuLjczZDA2NGFlMWY1MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3Jr
ZXIvbnVsbC1hcmd1bWVudHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29ya2Vy
L251bGwtYXJndW1lbnRzLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKIAotRkFJTCBUZXN0
IGNvbnN0cnVjdGluZyBhIHNoYXJlZCB3b3JrZXIgd2l0aCBudWxsIG51bGwgaXMgbm90IGFuIG9i
amVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQnKQorUEFTUyBUZXN0IGNvbnN0cnVjdGluZyBh
IHNoYXJlZCB3b3JrZXIgd2l0aCBudWxsCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29y
a2VyL251bWJlci1hcmd1bWVudHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIv
bnVtYmVyLWFyZ3VtZW50cy1leHBlY3RlZC50eHQKaW5kZXggYWEwMWQyNGI1ZjdlLi42YWUyZGI0
OTIyNGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29ya2VyL251bWJlci1hcmd1bWVudHMt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29ya2VyL251bWJlci1hcmd1bWVudHMt
ZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIFRlc3QgY29uc3RydWN0aW5nIGEg
c2hhcmVkIHdvcmtlciB3aXRoIDEgbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3
b3JrZXIucG9ydCcpCitQQVNTIFRlc3QgY29uc3RydWN0aW5nIGEgc2hhcmVkIHdvcmtlciB3aXRo
IDEKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvcG9ydC1vbm1lc3NhZ2UtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvcG9ydC1vbm1lc3NhZ2UtZXhwZWN0ZWQu
dHh0CmluZGV4IGJkY2I1ODY0ZmFhMy4uMjA0ZTEzMDZmMjM2IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3Jz
L1NoYXJlZFdvcmtlci9wb3J0LW9ubWVzc2FnZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9T
aGFyZWRXb3JrZXIvcG9ydC1vbm1lc3NhZ2UtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsMyBAQAog
Ci1GQUlMIFRlc3QgU2hhcmVkV29ya2VyLnBvcnQub25tZXNzYWdlIG51bGwgaXMgbm90IGFuIG9i
amVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQub25tZXNzYWdlID0gdC5zdGVwX2Z1bmNfZG9u
ZShlID0+IHsKLSAgICBhc3NlcnRfdHJ1ZShlLmRhdGEpOwotICB9KScpCitQQVNTIFRlc3QgU2hh
cmVkV29ya2VyLnBvcnQub25tZXNzYWdlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29y
a2VyL3BvcnQtcHJvcGVydGllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci9w
b3J0LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CmluZGV4IDI1M2Q3NmU0MGNhYi4uMzQ4MjJkMDRi
N2U2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci9wb3J0LXByb3BlcnRpZXMtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29ya2VyL3BvcnQtcHJvcGVydGllcy1leHBl
Y3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgd29ya2VyLnBvcnQgd29ya2VyLnBvcnQg
aXMgbm90IGFuIE9iamVjdC4gKGV2YWx1YXRpbmcgJydwb3N0TWVzc2FnZScgaW4gd29ya2VyLnBv
cnQnKQorUEFTUyB3b3JrZXIucG9ydAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtl
ci9zYW1lLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci9zYW1lLW9y
aWdpbi1leHBlY3RlZC50eHQKaW5kZXggZjFhNWFlMDAzYTkzLi5jZWZmODc3MDQ3OTAgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29ya2VyL3NhbWUtb3JpZ2luLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29u
c3RydWN0b3JzL1NoYXJlZFdvcmtlci9zYW1lLW9yaWdpbi1leHBlY3RlZC50eHQKQEAgLTEsMTUg
KzEsMTkgQEAKLQotSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCitDT05T
T0xFIE1FU1NBR0U6IENhbm5vdCBsb2FkIHVuc3VwcG9ydGVkOi4KK0NPTlNPTEUgTUVTU0FHRTog
Q2Fubm90IGxvYWQgamF2YXNjcmlwdDoiIi4KK0NPTlNPTEUgTUVTU0FHRTogQ2Fubm90IGxvYWQg
YWJvdXQ6YmxhbmsuCitDT05TT0xFIE1FU1NBR0U6IENhbm5vdCBsb2FkIGh0dHA6Ly93d3cub3Bl
cmEuY29tLy4KK0NPTlNPTEUgTUVTU0FHRTogQ2Fubm90IGxvYWQgaHR0cDovL2xvY2FsaG9zdDo4
MS8uCitDT05TT0xFIE1FU1NBR0U6IENhbm5vdCBsb2FkIGh0dHBzOi8vbG9jYWxob3N0OjgwLy4K
K0NPTlNPTEUgTUVTU0FHRTogQ2Fubm90IGxvYWQgaHR0cHM6Ly9sb2NhbGhvc3Q6ODAwMC8uCitD
T05TT0xFIE1FU1NBR0U6IENhbm5vdCBsb2FkIGh0dHA6Ly9sb2NhbGhvc3Q6ODAxMi8uCiAKIEZB
SUwgdW5zdXBwb3J0ZWRfc2NoZW1lIGFzc2VydF90aHJvd3NfZG9tOiBmdW5jdGlvbiAiKCkgPT4g
eyBuZXcgU2hhcmVkV29ya2VyKCd1bnN1cHBvcnRlZDonLCAnJyk7IH0iIGRpZCBub3QgdGhyb3cK
LUZBSUwgZGF0YV91cmwgbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3JrZXIu
cG9ydC5vbm1lc3NhZ2UgPSB0LnN0ZXBfZnVuY19kb25lKGUgPT4gewotICAgIGFzc2VydF9lcXVh
bHMoZS5kYXRhLCAxKTsKLSAgfSknKQotVElNRU9VVCBqYXZhc2NyaXB0X3VybCBUZXN0IHRpbWVk
IG91dAotVElNRU9VVCBhYm91dF9ibGFuayBUZXN0IHRpbWVkIG91dAotVElNRU9VVCBvcGVyYV9j
b20gVGVzdCB0aW1lZCBvdXQKLVRJTUVPVVQgcG9ydF84MSBUZXN0IHRpbWVkIG91dAotVElNRU9V
VCBodHRwc19wb3J0XzgwIFRlc3QgdGltZWQgb3V0Ci1USU1FT1VUIGh0dHBzX3BvcnRfODAwMCBU
ZXN0IHRpbWVkIG91dAotVElNRU9VVCBodHRwX3BvcnRfODAxMiBUZXN0IHRpbWVkIG91dAorUEFT
UyBkYXRhX3VybAorUEFTUyBqYXZhc2NyaXB0X3VybAorUEFTUyBhYm91dF9ibGFuaworUEFTUyBv
cGVyYV9jb20KK1BBU1MgcG9ydF84MQorUEFTUyBodHRwc19wb3J0XzgwCitQQVNTIGh0dHBzX3Bv
cnRfODAwMAorUEFTUyBodHRwX3BvcnRfODAxMgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJl
ZFdvcmtlci9zZXR0aW5nLXBvcnQtbWVtYmVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJl
ZFdvcmtlci9zZXR0aW5nLXBvcnQtbWVtYmVycy1leHBlY3RlZC50eHQKaW5kZXggMTYxZmE5YWZj
NWUzLi4wN2YwYTM3ZDY5ZDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29ya2VyL3NldHRp
bmctcG9ydC1tZW1iZXJzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci9z
ZXR0aW5nLXBvcnQtbWVtYmVycy1leHBlY3RlZC50eHQKQEAgLTEsOSArMSw5IEBACiAKLUZBSUwg
cG9zdE1lc3NhZ2UgbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3JrZXIucG9y
dC5wb3N0TWVzc2FnZSA9IDEnKQotRkFJTCBzdGFydCBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2
YWx1YXRpbmcgJ3dvcmtlci5wb3J0LnN0YXJ0ID0gMScpCi1GQUlMIGNsb3NlIG51bGwgaXMgbm90
IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQuY2xvc2UgPSAxJykKLUZBSUwgb25t
ZXNzYWdlIG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQub25t
ZXNzYWdlID0gZicpCi1GQUlMIGFkZEV2ZW50TGlzdGVuZXIgbnVsbCBpcyBub3QgYW4gb2JqZWN0
IChldmFsdWF0aW5nICd3b3JrZXIucG9ydC5hZGRFdmVudExpc3RlbmVyID0gMScpCi1GQUlMIHJl
bW92ZUV2ZW50TGlzdGVuZXIgbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3Jr
ZXIucG9ydC5yZW1vdmVFdmVudExpc3RlbmVyID0gMScpCi1GQUlMIGRlc3BhdGNoRXZlbnQgbnVs
bCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3JrZXIucG9ydC5kZXNwYXRjaEV2ZW50
ID0gMScpCitQQVNTIHBvc3RNZXNzYWdlCitQQVNTIHN0YXJ0CitQQVNTIGNsb3NlCitGQUlMIG9u
bWVzc2FnZSBhc3NlcnRfZXF1YWxzOiB7aGFuZGxlRXZlbnQ6KCkgPT4ge319IGV4cGVjdGVkIG51
bGwgYnV0IGdvdCBvYmplY3QgIltvYmplY3QgT2JqZWN0XSIKK1BBU1MgYWRkRXZlbnRMaXN0ZW5l
cgorUEFTUyByZW1vdmVFdmVudExpc3RlbmVyCitQQVNTIGRlc3BhdGNoRXZlbnQKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvdW5kZWZpbmVkLWFyZ3VtZW50cy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
Y29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci91bmRlZmluZWQtYXJndW1lbnRzLWV4cGVjdGVkLnR4
dAppbmRleCA3ZmE3Nzg1ZjQ2MDguLmE1YmQzY2QwYjMxMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9T
aGFyZWRXb3JrZXIvdW5kZWZpbmVkLWFyZ3VtZW50cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9y
cy9TaGFyZWRXb3JrZXIvdW5kZWZpbmVkLWFyZ3VtZW50cy1leHBlY3RlZC50eHQKQEAgLTEsMyAr
MSwzIEBACiAKLUZBSUwgVGVzdCBjb25zdHJ1Y3RpbmcgYSBzaGFyZWQgd29ya2VyIHdpdGggdW5k
ZWZpbmVkIG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQnKQor
UEFTUyBUZXN0IGNvbnN0cnVjdGluZyBhIHNoYXJlZCB3b3JrZXIgd2l0aCB1bmRlZmluZWQKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvdW5leHBlY3RlZC1nbG9iYWwtcHJvcGVy
dGllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci91bmV4cGVjdGVkLWdsb2Jh
bC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAppbmRleCBhZDk3OWNjOTA5MTAuLmI0MGY1MDIzOTQz
YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvdW5leHBlY3RlZC1nbG9iYWwtcHJv
cGVydGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvdW5leHBlY3Rl
ZC1nbG9iYWwtcHJvcGVydGllcy1leHBlY3RlZC50eHQKQEAgLTEsNSArMSwzIEBACiAKLUZBSUwg
VGVzdCB1bmV4cGVjdGVkIHByb3BlcnRpZXMgYXJlIG5vdCBpbiBnbG9iYWwgc2NvcGUgbnVsbCBp
cyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3JrZXIucG9ydC5vbm1lc3NhZ2UgPSB0LnN0
ZXBfZnVuY19kb25lKGUgPT4gewotICAgIGFzc2VydF9lcXVhbHMoZS5kYXRhLCAnJyk7Ci0gIH0p
JykKK1BBU1MgVGVzdCB1bmV4cGVjdGVkIHByb3BlcnRpZXMgYXJlIG5vdCBpbiBnbG9iYWwgc2Nv
cGUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvdW5yZXNvbHZhYmxlLXVybC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci91bnJlc29sdmFibGUtdXJsLWV4cGVj
dGVkLnR4dAppbmRleCAwNmQ1YzlhYzFiOTMuLjU1MmNiOWQ1MDFiNSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVj
dG9ycy9TaGFyZWRXb3JrZXIvdW5yZXNvbHZhYmxlLXVybC1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVj
dG9ycy9TaGFyZWRXb3JrZXIvdW5yZXNvbHZhYmxlLXVybC1leHBlY3RlZC50eHQKQEAgLTEsNSAr
MSwzIEBACiAKLUZBSUwgcmVzb2x2aW5nIGJyb2tlbiB1cmwgYXNzZXJ0X3Rocm93c19kb206IGZ1
bmN0aW9uICIoKSA9PiB7Ci0gICAgY29uc3Qgd29ya2VyID0gbmV3IFNoYXJlZFdvcmtlcignaHR0
cDovL2ZvbyBiYXInKTsKLSAgfSIgZGlkIG5vdCB0aHJvdworUEFTUyByZXNvbHZpbmcgYnJva2Vu
IHVybAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dvcmtlcnMvZGF0YS11cmwtc2hhcmVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9kYXRhLXVybC1zaGFyZWQt
ZXhwZWN0ZWQudHh0CmluZGV4IGM4MTIwMTRkYTMxZS4uMTNmYzkwM2Q3MDdmIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvZGF0
YS11cmwtc2hhcmVkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvZGF0YS11cmwtc2hhcmVkLWV4cGVjdGVkLnR4dApA
QCAtMSwzMCArMSwxMSBAQAotQ09OU09MRSBNRVNTQUdFOiBUeXBlRXJyb3I6IG51bGwgaXMgbm90
IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQub25tZXNzYWdlID0gZSA9PiBwb3J0
LnBvc3RNZXNzYWdlKGUuZGF0YSknKQogCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2Fn
ZSA9IG51bGwKLQotRkFJTCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IE1JTUUgYWxsb3dlZCBudWxs
IGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3cucG9ydC5vbm1lc3NhZ2UgPSB0LnN0ZXBf
ZnVuY19kb25lKGZ1bmN0aW9uKGUpIHsKLSAgICAgIGFzc2VydF9lcXVhbHMoZS5kYXRhLCAnUEFT
UycpOwotICAgIH0pJykKLUZBSUwgdGV4dC9wbGFpbiBNSU1FIGFsbG93ZWQgbnVsbCBpcyBub3Qg
YW4gb2JqZWN0IChldmFsdWF0aW5nICd3LnBvcnQub25tZXNzYWdlID0gdC5zdGVwX2Z1bmNfZG9u
ZShmdW5jdGlvbihlKSB7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGUuZGF0YSwgJ1BBU1MnKTsKLSAg
ICB9KScpCi1GQUlMIGVtcHR5IE1JTUUgYWxsb3dlZCBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2
YWx1YXRpbmcgJ3cucG9ydC5vbm1lc3NhZ2UgPSB0LnN0ZXBfZnVuY19kb25lKGZ1bmN0aW9uKGUp
IHsKLSAgICAgIGFzc2VydF9lcXVhbHMoZS5kYXRhLCAnUEFTUycpOwotICAgIH0pJykKLUZBSUwg
Y29tbXVuaWNhdGlvbiBnb2VzIGJvdGggd2F5cyBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1
YXRpbmcgJ3cucG9ydC5vbm1lc3NhZ2UgPSB0LnN0ZXBfZnVuY19kb25lKGZ1bmN0aW9uKGUpIHsK
LSAgICAgIGFzc2VydF9lcXVhbHMoZS5kYXRhLCAnUEFTUycpOwotICAgIH0pJykKLUZBSUwgaW5k
ZXhlZERCIGlzIHByZXNlbnQgbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3LnBv
cnQub25tZXNzYWdlID0gdC5zdGVwX2Z1bmNfZG9uZShmdW5jdGlvbihlKSB7Ci0gICAgICBhc3Nl
cnRfZXF1YWxzKGUuZGF0YSwgJ1BBU1MnKTsKLSAgICB9KScpCi1GQUlMIGluZGV4ZWREQiBpcyBp
bmFjY2Vzc2libGUgbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3LnBvcnQub25t
ZXNzYWdlID0gdC5zdGVwX2Z1bmNfZG9uZShmdW5jdGlvbihlKSB7Ci0gICAgICBhc3NlcnRfZXF1
YWxzKGUuZGF0YSwgJ1BBU1MnKTsKLSAgICB9KScpCi1GQUlMIGNyb3NzLW9yaWdpbiB3b3JrZXIg
bnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3LnBvcnQub25tZXNzYWdlID0gdC5z
dGVwX2Z1bmNfZG9uZShmdW5jdGlvbihlKSB7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGUuZGF0YSwg
J1BBU1MnKTsKLSAgICB9KScpCi1GQUlMIHdvcmtlciBoYXMgb3BhcXVlIG9yaWdpbiBudWxsIGlz
IG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3cucG9ydC5vbm1lc3NhZ2UgPSB0LnN0ZXBfZnVu
Y19kb25lKGZ1bmN0aW9uKGUpIHsKLSAgICAgIGFzc2VydF9lcXVhbHMoZS5kYXRhLCAnUEFTUycp
OwotICAgIH0pJykKLVRJTUVPVVQgQSBkYXRhOiBVUkwgc2hhcmVkIHdvcmtlciBzaG91bGQgbm90
IGJlIHNoYXJlZCBhbW9uZyBvcmlnaW5zLiBUZXN0IHRpbWVkIG91dAorUEFTUyBhcHBsaWNhdGlv
bi9qYXZhc2NyaXB0IE1JTUUgYWxsb3dlZAorUEFTUyB0ZXh0L3BsYWluIE1JTUUgYWxsb3dlZAor
UEFTUyBlbXB0eSBNSU1FIGFsbG93ZWQKK1BBU1MgY29tbXVuaWNhdGlvbiBnb2VzIGJvdGggd2F5
cworUEFTUyBpbmRleGVkREIgaXMgcHJlc2VudAorUEFTUyBpbmRleGVkREIgaXMgaW5hY2Nlc3Np
YmxlCitQQVNTIGNyb3NzLW9yaWdpbiB3b3JrZXIKK1BBU1Mgd29ya2VyIGhhcyBvcGFxdWUgb3Jp
Z2luCitQQVNTIEEgZGF0YTogVVJMIHNoYXJlZCB3b3JrZXIgc2hvdWxkIG5vdCBiZSBzaGFyZWQg
YW1vbmcgb3JpZ2lucy4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxv
Yi11cmwud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2It
dXJsLndpbmRvdy1leHBlY3RlZC50eHQKaW5kZXggNTc2ZTZkMmI3ZWQyLi40YTI2YmU5MjlhOGQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4
cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVS
TCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9l
eHBvcnQtb24tbG9hZC1zY3JpcHQucHkKIAogUEFTUyBTdGF0aWMgaW1wb3J0LgogRkFJTCBTdGF0
aWMgaW1wb3J0IChjcm9zcy1vcmlnaW4pLiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rp
b24gd2l0aCB2YWx1ZTogIkltcG9ydGluZyBhIG1vZHVsZSBzY3JpcHQgZmFpbGVkLiIKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4t
ZXhwZWN0ZWQudHh0CmluZGV4IDRmODY0MWU1MTQ4MC4uMjk5N2Y3ZTFmMzA4IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9k
dWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1l
eHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IE9yaWdpbiBudWxs
IGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbi4gU3RhdHVzIGNv
ZGU6IDIwMAogCiBIYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50
eHQKaW5kZXggZWFjN2Y5NWRlNmYyLi5jYmMwNDI5ZTBjNzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJl
ZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hh
cmVkLXdvcmtlci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsx
LDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxo
b3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQu
cHkKIAogSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LXJlZmVycmVyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3No
YXJlZC13b3JrZXItaW1wb3J0LXJlZmVycmVyLWV4cGVjdGVkLnR4dAppbmRleCA1Y2QyZGMyNWVl
MDUuLjdiNGVlOGMxOWVkMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtcmVm
ZXJyZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LXJlZmVycmVy
LWV4cGVjdGVkLnR4dApAQCAtMSwzMSArMSwxNiBAQAotQ09OU09MRSBNRVNTQUdFOiBUeXBlRXJy
b3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQub25tZXNz
YWdlID0gbXNnID0+IHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UobXNnLmRhdGEsICcqJyknKQot
Q09OU09MRSBNRVNTQUdFOiBUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVh
dGluZyAnd29ya2VyLnBvcnQub25tZXNzYWdlID0gbXNnID0+IHdpbmRvdy5vcGVuZXIucG9zdE1l
c3NhZ2UobXNnLmRhdGEsICcqJyknKQotQ09OU09MRSBNRVNTQUdFOiBUeXBlRXJyb3I6IG51bGwg
aXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQub25tZXNzYWdlID0gbXNn
ID0+IHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UobXNnLmRhdGEsICcqJyknKQotQ09OU09MRSBN
RVNTQUdFOiBUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29y
a2VyLnBvcnQub25tZXNzYWdlID0gbXNnID0+IHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UobXNn
LmRhdGEsICcqJyknKQotQ09OU09MRSBNRVNTQUdFOiBUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFu
IG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQub25tZXNzYWdlID0gbXNnID0+IHdpbmRv
dy5vcGVuZXIucG9zdE1lc3NhZ2UobXNnLmRhdGEsICcqJyknKQotQ09OU09MRSBNRVNTQUdFOiBU
eXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQu
b25tZXNzYWdlID0gbXNnID0+IHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UobXNnLmRhdGEsICcq
JyknKQotQ09OU09MRSBNRVNTQUdFOiBUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAo
ZXZhbHVhdGluZyAnd29ya2VyLnBvcnQub25tZXNzYWdlID0gbXNnID0+IHdpbmRvdy5vcGVuZXIu
cG9zdE1lc3NhZ2UobXNnLmRhdGEsICcqJyknKQotQ09OU09MRSBNRVNTQUdFOiBUeXBlRXJyb3I6
IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQub25tZXNzYWdl
ID0gbXNnID0+IHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UobXNnLmRhdGEsICcqJyknKQotQ09O
U09MRSBNRVNTQUdFOiBUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGlu
ZyAnd29ya2VyLnBvcnQub25tZXNzYWdlID0gbXNnID0+IHdpbmRvdy5vcGVuZXIucG9zdE1lc3Nh
Z2UobXNnLmRhdGEsICcqJyknKQotQ09OU09MRSBNRVNTQUdFOiBUeXBlRXJyb3I6IG51bGwgaXMg
bm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQub25tZXNzYWdlID0gbXNnID0+
IHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UobXNnLmRhdGEsICcqJyknKQotQ09OU09MRSBNRVNT
QUdFOiBUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2Vy
LnBvcnQub25tZXNzYWdlID0gbXNnID0+IHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UobXNnLmRh
dGEsICcqJyknKQotQ09OU09MRSBNRVNTQUdFOiBUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9i
amVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQub25tZXNzYWdlID0gbXNnID0+IHdpbmRvdy5v
cGVuZXIucG9zdE1lc3NhZ2UobXNnLmRhdGEsICcqJyknKQotQ09OU09MRSBNRVNTQUdFOiBUeXBl
RXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQub25t
ZXNzYWdlID0gbXNnID0+IHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UobXNnLmRhdGEsICcqJykn
KQotQ09OU09MRSBNRVNTQUdFOiBUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZh
bHVhdGluZyAnd29ya2VyLnBvcnQub25tZXNzYWdlID0gbXNnID0+IHdpbmRvdy5vcGVuZXIucG9z
dE1lc3NhZ2UobXNnLmRhdGEsICcqJyknKQotQ09OU09MRSBNRVNTQUdFOiBUeXBlRXJyb3I6IG51
bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQub25tZXNzYWdlID0g
bXNnID0+IHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UobXNnLmRhdGEsICcqJyknKQogCi1GQUlM
IFNhbWUtb3JpZ2luIHRvcC1sZXZlbCBtb2R1bGUgc2NyaXB0IGxvYWRpbmcgd2l0aCAibm8tcmVm
ZXJyZXIiIHJlZmVycmVyIHBvbGljeSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24g
d2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiCi1GQUlMIFNhbWUtb3Jp
Z2luIHRvcC1sZXZlbCBtb2R1bGUgc2NyaXB0IGxvYWRpbmcgd2l0aCAib3JpZ2luIiByZWZlcnJl
ciBwb2xpY3kgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9i
amVjdCAiVHlwZUVycm9yOiBUeXBlIGVycm9yIgotRkFJTCBTYW1lLW9yaWdpbiB0b3AtbGV2ZWwg
bW9kdWxlIHNjcmlwdCBsb2FkaW5nIHdpdGggInNhbWUtb3JpZ2luIiByZWZlcnJlciBwb2xpY3kg
cHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlw
ZUVycm9yOiBUeXBlIGVycm9yIgotRkFJTCBTYW1lLW9yaWdpbiBzdGF0aWMgaW1wb3J0IHdpdGgg
Im5vLXJlZmVycmVyIiByZWZlcnJlciBwb2xpY3kuIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJl
amVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogVHlwZSBlcnJvciIKLUZBSUwg
U2FtZS1vcmlnaW4gc3RhdGljIGltcG9ydCB3aXRoICJvcmlnaW4iIHJlZmVycmVyIHBvbGljeS4g
cHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlw
ZUVycm9yOiBUeXBlIGVycm9yIgotRkFJTCBTYW1lLW9yaWdpbiBzdGF0aWMgaW1wb3J0IHdpdGgg
InNhbWUtb3JpZ2luIiByZWZlcnJlciBwb2xpY3kuIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJl
amVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogVHlwZSBlcnJvciIKK1BBU1Mg
U2FtZS1vcmlnaW4gdG9wLWxldmVsIG1vZHVsZSBzY3JpcHQgbG9hZGluZyB3aXRoICJuby1yZWZl
cnJlciIgcmVmZXJyZXIgcG9saWN5CitQQVNTIFNhbWUtb3JpZ2luIHRvcC1sZXZlbCBtb2R1bGUg
c2NyaXB0IGxvYWRpbmcgd2l0aCAib3JpZ2luIiByZWZlcnJlciBwb2xpY3kKK1BBU1MgU2FtZS1v
cmlnaW4gdG9wLWxldmVsIG1vZHVsZSBzY3JpcHQgbG9hZGluZyB3aXRoICJzYW1lLW9yaWdpbiIg
cmVmZXJyZXIgcG9saWN5CitGQUlMIFNhbWUtb3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0aCAibm8t
cmVmZXJyZXIiIHJlZmVycmVyIHBvbGljeS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIiIgYnV0
IGdvdCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvc3Rh
dGljLWltcG9ydC1zYW1lLW9yaWdpbi1yZWZlcnJlci1jaGVja2VyLXdvcmtlci5qcyIKK0ZBSUwg
U2FtZS1vcmlnaW4gc3RhdGljIGltcG9ydCB3aXRoICJvcmlnaW4iIHJlZmVycmVyIHBvbGljeS4g
YXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC8iIGJ1dCBnb3Qg
Imh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC93b3JrZXJzL21vZHVsZXMvcmVzb3VyY2VzL3N0YXRpYy1p
bXBvcnQtc2FtZS1vcmlnaW4tcmVmZXJyZXItY2hlY2tlci13b3JrZXIuanMiCitQQVNTIFNhbWUt
b3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0aCAic2FtZS1vcmlnaW4iIHJlZmVycmVyIHBvbGljeS4K
IEZBSUwgQ3Jvc3Mtb3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0aCAibm8tcmVmZXJyZXIiIHJlZmVy
cmVyIHBvbGljeS4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6
IG9iamVjdCAiVHlwZUVycm9yOiBUeXBlIGVycm9yIgogRkFJTCBDcm9zcy1vcmlnaW4gc3RhdGlj
IGltcG9ydCB3aXRoICJvcmlnaW4iIHJlZmVycmVyIHBvbGljeS4gcHJvbWlzZV90ZXN0OiBVbmhh
bmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBUeXBlIGVycm9y
IgogRkFJTCBDcm9zcy1vcmlnaW4gc3RhdGljIGltcG9ydCB3aXRoICJzYW1lLW9yaWdpbiIgcmVm
ZXJyZXIgcG9saWN5LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1
ZTogb2JqZWN0ICJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiCi1GQUlMIFNhbWUtb3JpZ2luIGR5bmFt
aWMgaW1wb3J0IHdpdGggIm5vLXJlZmVycmVyIiByZWZlcnJlciBwb2xpY3kuIHByb21pc2VfdGVz
dDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogVHlw
ZSBlcnJvciIKLUZBSUwgU2FtZS1vcmlnaW4gZHluYW1pYyBpbXBvcnQgd2l0aCAib3JpZ2luIiBy
ZWZlcnJlciBwb2xpY3kuIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZh
bHVlOiBvYmplY3QgIlR5cGVFcnJvcjogVHlwZSBlcnJvciIKLUZBSUwgU2FtZS1vcmlnaW4gZHlu
YW1pYyBpbXBvcnQgd2l0aCAic2FtZS1vcmlnaW4iIHJlZmVycmVyIHBvbGljeS4gcHJvbWlzZV90
ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBU
eXBlIGVycm9yIgorUEFTUyBTYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydCB3aXRoICJuby1yZWZl
cnJlciIgcmVmZXJyZXIgcG9saWN5LgorUEFTUyBTYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydCB3
aXRoICJvcmlnaW4iIHJlZmVycmVyIHBvbGljeS4KK1BBU1MgU2FtZS1vcmlnaW4gZHluYW1pYyBp
bXBvcnQgd2l0aCAic2FtZS1vcmlnaW4iIHJlZmVycmVyIHBvbGljeS4KIEZBSUwgQ3Jvc3Mtb3Jp
Z2luIGR5bmFtaWMgaW1wb3J0IHdpdGggIm5vLXJlZmVycmVyIiByZWZlcnJlciBwb2xpY3kuIHBy
b21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVF
cnJvcjogVHlwZSBlcnJvciIKIEZBSUwgQ3Jvc3Mtb3JpZ2luIGR5bmFtaWMgaW1wb3J0IHdpdGgg
Im9yaWdpbiIgcmVmZXJyZXIgcG9saWN5LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rp
b24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiCiBGQUlMIENyb3Nz
LW9yaWdpbiBkeW5hbWljIGltcG9ydCB3aXRoICJzYW1lLW9yaWdpbiIgcmVmZXJyZXIgcG9saWN5
LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJU
eXBlRXJyb3I6IFR5cGUgZXJyb3IiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9y
dC53aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4
cGVjdGVkLnR4dAppbmRleCA1NzZlNmQyYjdlZDIuLjRhMjZiZTkyOWE4ZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVs
ZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFy
ZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxv
Y2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3MS5sb2NhbGhvc3Q6OTQ0My93
b3JrZXJzL21vZHVsZXMvcmVzb3VyY2VzL2V4cG9ydC1vbi1sb2FkLXNjcmlwdC5weQogCiBQQVNT
IFN0YXRpYyBpbXBvcnQuCiBGQUlMIFN0YXRpYyBpbXBvcnQgKGNyb3NzLW9yaWdpbikuIHByb21p
c2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiAiSW1wb3J0aW5nIGEgbW9k
dWxlIHNjcmlwdCBmYWlsZWQuIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25z
LWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1jcmVk
ZW50aWFscy1leHBlY3RlZC50eHQKaW5kZXggZTFiZWRmNTQzMGVmLi5hNzBmMDVhZjU0ZjQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1jcmVkZW50aWFscy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4
dApAQCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwOi8v
d3d3MS5sb2NhbGhvc3Q6ODgwMC93b3JrZXJzL21vZHVsZXMvcmVzb3VyY2VzL2V4cG9ydC1jcmVk
ZW50aWFscy5weQogCiBIYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL29wYXF1ZS1vcmlnaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL29wYXF1ZS1vcmlnaW4tZXhwZWN0ZWQudHh0
CmluZGV4IGY3ZDY3ZjE4ZDRhNS4uNjg1MDdjYTg2NWEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvb3BhcXVlLW9yaWdpbi1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL29wYXF1ZS1vcmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsOSBAQAog
CiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCitQQVNTIFdvcmtl
ciBoYXMgYW4gb3BhcXVlIG9yaWdpbi4KK0ZBSUwgV29ya2VyIGNhbiByZWFkIGl0cyBvd24gYmxv
YnMuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIChzdHJpbmcpICJmcm9tIHdvcmtlciIgYnV0IGdv
dCAob2JqZWN0KSBudWxsCitGQUlMIFdvcmtlciBjYW4gcmVhZCBpdHMgb3duZXJzIGJsb2JzLiBh
c3NlcnRfZXF1YWxzOiBleHBlY3RlZCAoc3RyaW5nKSAiZnJvbSBwYWdlIiBidXQgZ290IChvYmpl
Y3QpIG51bGwKK0ZBSUwgV29ya2VyIGNhbiBYSFIgZmV0Y2ggYSBibG9iLiBhc3NlcnRfZXF1YWxz
OiBleHBlY3RlZCAiZnJvbSBwYWdlIiBidXQgZ290ICIiCitGQUlMIFdvcmtlciBjYW4gZmV0Y2gg
YSBibG9iLiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2Jq
ZWN0ICJUeXBlRXJyb3I6IExvYWQgZmFpbGVkIgorUEFTUyBXb3JrZXIgY2FuIGFjY2VzcyBCcm9h
ZGNhc3RDaGFubmVsCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwNC1leHBlY3RlZC50eHQKaW5kZXgg
MDE4ZGI2MDQ1NjlkLi5jZmU0NjU1Njc1Y2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29y
a2Vycy8wMDQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhw
ZWN0ZWQudHh0CkBAIC0xLDUgKzEsMyBAQAogCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVz
c2FnZSA9IG51bGwKLQotTk9UUlVOIHNoYXJlZCB3b3JrZXIgd2l0aCBtdWx0aXBsZSBkb2N1bWVu
dHMKK1BBU1Mgc2hhcmVkIHdvcmtlciB3aXRoIG11bHRpcGxlIGRvY3VtZW50cwogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
c2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlw
bGUtd29ya2Vycy8wMDgtZXhwZWN0ZWQudHh0CmluZGV4IDk3YTRlN2E3M2E2My4uMDlmNjcyZDFj
NjIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA4LWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
c2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA4LWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDMg
QEAKIAotSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0KLVRJTUVPVVQg
bWVzc2FnZWNoYW5uZWwgaW4gc2hhcmVkIHdvcmtlciBUZXN0IHRpbWVkIG91dAorUEFTUyBtZXNz
YWdlY2hhbm5lbCBpbiBzaGFyZWQgd29ya2VyCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20t
YmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2lu
ZG93LWV4cGVjdGVkLnR4dAppbmRleCBhMDg5YzIyNDg5ZTIuLjE5ZTQ2YjA5YTU2YSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L3NoYXJlZC13b3JrZXItZnJvbS1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQt
d29ya2VyLWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDUgQEAK
IAotSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0KLUZBSUwgQ3JlYXRp
bmcgYSBzaGFyZWQgd29ya2VyIGZyb20gYSBibG9iIFVSTCB3b3Jrcy4gYXNzZXJ0X2VxdWFsczog
ZXhwZWN0ZWQgIndvcmtlcl9PS18yIiBidXQgZ290ICJ3b3JrZXJfT0tfMSIKK1BBU1MgQ3JlYXRp
bmcgYSBzaGFyZWQgd29ya2VyIGZyb20gYSBibG9iIFVSTCB3b3Jrcy4KIFBBU1MgQ3JlYXRpbmcg
YSBzaGFyZWQgd29ya2VyIGZyb20gYSBibG9iIFVSTCB3b3JrcyBpbW1lZGlhdGVseSBiZWZvcmUg
cmV2b2tpbmcuCi1USU1FT1VUIENvbm5lY3RpbmcgdG8gYSBzaGFyZWQgd29ya2VyIG9uIGEgcmV2
b2tlZCBibG9iIFVSTCB3b3Jrcy4gVGVzdCB0aW1lZCBvdXQKK1BBU1MgQ29ubmVjdGluZyB0byBh
IHNoYXJlZCB3b3JrZXIgb24gYSByZXZva2VkIGJsb2IgVVJMIHdvcmtzLgogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUt
dmlhLW9wdGlvbnMtZXhwZWN0ZWQudHh0CmluZGV4IDZmZmVlMjczOTBkOS4uYWU0NWI0ZDI3Mzk2
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25zLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25zLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAK
IAotRkFJTCBUZXN0IHRoZSBuYW1lIHByb3BlcnR5IG9mIHNoYXJlZCB3b3JrZXJzIG1peGluZyBj
b25zdHJ1Y3RvciBvcHRpb25zIGFuZCBjb25zdHJ1Y3RvciBzdHJpbmdzIEVycm9yOiBhc3NlcnRf
ZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3QgMQorUEFTUyBUZXN0IHRoZSBuYW1lIHByb3BlcnR5
IG9mIHNoYXJlZCB3b3JrZXJzIG1peGluZyBjb25zdHJ1Y3RvciBvcHRpb25zIGFuZCBjb25zdHJ1
Y3RvciBzdHJpbmdzCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtbWlzbWF0Y2gtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1taXNtYXRjaC1leHBlY3RlZC50eHQKaW5kZXgg
ZjY1Njk0NjE1MGRiLi40Zjk5YTEzNDA5ZTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW9wdGlvbnMt
bWlzbWF0Y2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtbWlzbWF0Y2gtZXhw
ZWN0ZWQudHh0CkBAIC0xLDI4ICsxLDI2IEBACiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBt
ZXNzYWdlID0gbnVsbAotCi1USU1FT1VUIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIG1vZHVsZSBU
ZXN0IHRpbWVkIG91dAotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRp
ZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBtb2R1bGUgdG8gZGVmYXVsdAotTk9U
UlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNo
b3VsZCBiZSBibG9ja2VkOiBjbGFzc2ljIHRvIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8g
c2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBt
b2R1bGUgdG8gY2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIG9taXQgaW4g
Y2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVu
dCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIGluY2x1ZGUgaW4gY2xhc3Np
YwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4gY2xhc3NpYwotTk9UUlVO
IENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3Vs
ZCBiZSBibG9ja2VkOiBvbWl0IHRvIHNhbWUtb3JpZ2luIGluIGNsYXNzaWMKLU5PVFJVTiBDb25u
ZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUg
YmxvY2tlZDogb21pdCB0byBpbmNsdWRlIGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRv
IHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDog
c2FtZS1vcmlnaW4gdG8gb21pdCBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUt
b3JpZ2luIHRvIGluY2x1ZGUgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVk
IHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRl
IHRvIGRlZmF1bHQgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9t
aXQgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRp
ZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIHNhbWUtb3JpZ2lu
IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZm
ZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBvbWl0IGluIG1vZHVs
ZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIGluY2x1ZGUgaW4gbW9kdWxlCi1OT1RS
VU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hv
dWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gZGVmYXVsdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0
aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxv
Y2tlZDogb21pdCB0byBzYW1lLW9yaWdpbiBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRv
IHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDog
b21pdCB0byBpbmNsdWRlIGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdp
biB0byBvbWl0IGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3
aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBp
bmNsdWRlIGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIGRlZmF1bHQg
aW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVy
ZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gb21pdCBpbiBtb2R1bGUK
LU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9u
cyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBzYW1lLW9yaWdpbiBpbiBtb2R1bGUKK1BB
U1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hv
dWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hh
cmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBtb2R1
bGUgdG8gZGVmYXVsdAorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZm
ZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogY2xhc3NpYyB0byBtb2R1bGUKK1BBU1Mg
Q29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxk
IGJlIGJsb2NrZWQ6IG1vZHVsZSB0byBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVk
IHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0
IHRvIG9taXQgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0
aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBpbmNsdWRl
IGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVy
ZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gZGVmYXVsdCBpbiBjbGFzc2lj
CitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25z
IHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIHNhbWUtb3JpZ2luIGluIGNsYXNzaWMKK1BBU1Mg
Q29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxk
IGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVkZSBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBzYW1lLW9yaWdpbiB0byBvbWl0IGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUt
b3JpZ2luIHRvIGluY2x1ZGUgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3
b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0
byBkZWZhdWx0IGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdp
dGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gb21pdCBp
biBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVu
dCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIHNhbWUtb3JpZ2luIGluIGNs
YXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9w
dGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gb21pdCBpbiBtb2R1bGUKK1BBU1Mg
Q29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxk
IGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gaW5jbHVkZSBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGlu
ZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2Nr
ZWQ6IG9taXQgdG8gZGVmYXVsdCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQg
d29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8g
c2FtZS1vcmlnaW4gaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3
aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGluY2x1ZGUg
aW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVu
dCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBvbWl0IGluIG1vZHVs
ZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9u
cyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gaW5jbHVkZSBpbiBtb2R1bGUKK1BB
U1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hv
dWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gZGVmYXVsdCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IGluY2x1ZGUgdG8gb21pdCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1
ZGUgdG8gc2FtZS1vcmlnaW4gaW4gbW9kdWxlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL29wZW4tdXJsLXJlZGlyZWN0ZWQtc2hh
cmVkd29ya2VyLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1v
cmlnaW4tZXhwZWN0ZWQudHh0CmluZGV4IDFlMmQzOTkyZjZkNS4uNTljYWNhNDg2ZjhkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9v
cGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL29wZW4tdXJs
LXJlZGlyZWN0ZWQtc2hhcmVkd29ya2VyLW9yaWdpbi1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwz
IEBACi1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cDovL3d3dzIubG9jYWxob3N0
Ojg4MDAveGhyL3Jlc291cmNlcy9pbnNwZWN0LWhlYWRlcnMucHk/ZmlsdGVyX25hbWU9b3JpZ2lu
JmNvcnMKIAogRkFJTCBSZWZlcmVyIGhlYWRlciBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiUmVm
ZXJlcjogaHR0cDovL2xvY2FsaG9zdDo4ODAwL3hoci9yZXNvdXJjZXMvd29ya2VyeGhyLW9yaWdp
bi1yZWZlcnJlci5qc1xuIiBidXQgZ290ICJSZWZlcmVyOiBodHRwOi8vbG9jYWxob3N0Ojg4MDAv
eGhyL3Jlc291cmNlcy9yZWRpcmVjdC5weT9sb2NhdGlvbj13b3JrZXJ4aHItb3JpZ2luLXJlZmVy
cmVyLmpzXG4iCiBGQUlMIE9yaWdpbiBoZWFkZXIgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIk9y
aWdpbjogaHR0cDovL2xvY2FsaG9zdDo4ODAwXG4iIGJ1dCBnb3QgIiIKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1jb25u
ZWN0LXNyYy5zdWItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2lu
c2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLWNvbm5lY3Qtc3JjLnN1Yi1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mMzc3OGJiYTQ2OWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9z
aGFyZWR3b3JrZXItY29ubmVjdC1zcmMuc3ViLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBA
CisKK0hhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAorCitUSU1FT1VUIHNo
YXJlZHdvcmtlci1jb25uZWN0LXNyYyBUZXN0IHRpbWVkIG91dAorUEFTUyBTYW1lLW9yaWdpbiAn
ZmV0Y2goKScgaW4gaHR0cDogd2l0aG91dCBDU1AKK1BBU1MgU2FtZS1vcmlnaW4gWEhSIGluIGh0
dHA6IHdpdGhvdXQgQ1NQCitQQVNTIENyb3NzLW9yaWdpbiAnZmV0Y2goKScgaW4gaHR0cDogd2l0
aG91dCBDU1AKK1BBU1MgQ3Jvc3Mtb3JpZ2luIFhIUiBpbiBodHRwOiB3aXRob3V0IENTUAorUEFT
UyBTYW1lLW9yaWdpbiA9PiBjcm9zcy1vcmlnaW4gJ2ZldGNoKCknIGluIGh0dHA6IHdpdGhvdXQg
Q1NQCitQQVNTIFNhbWUtb3JpZ2luICdmZXRjaCgpJyBpbiBodHRwOiB3aXRoIGNvbm5lY3Qtc3Jj
ICdzZWxmJworUEFTUyBTYW1lLW9yaWdpbiBYSFIgaW4gaHR0cDogd2l0aCBjb25uZWN0LXNyYyAn
c2VsZicKK1RJTUVPVVQgQ3Jvc3Mtb3JpZ2luICdmZXRjaCgpJyBpbiBodHRwOiB3aXRoIGNvbm5l
Y3Qtc3JjICdzZWxmJyBUZXN0IHRpbWVkIG91dAorTk9UUlVOIENyb3NzLW9yaWdpbiBYSFIgaW4g
aHR0cDogd2l0aCBjb25uZWN0LXNyYyAnc2VsZicKK05PVFJVTiBTYW1lLW9yaWdpbiA9PiBjcm9z
cy1vcmlnaW4gJ2ZldGNoKCknIGluIGh0dHA6IHdpdGggY29ubmVjdC1zcmMgJ3NlbGYnCitOT1RS
VU4gUmVwb3J0cyBtYXRjaCBpbiBodHRwOiB3aXRoIGNvbm5lY3Qtc3JjICdzZWxmJworCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3
b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5
LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzc3Y2VkNDUx
ZTJjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lk
ZS13b3JrZXIvc2hhcmVkd29ya2VyLXJlcG9ydC1vbmx5LnN1Yi1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMCBAQAorCitIYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKKwor
UEFTUyBTYW1lLW9yaWdpbiAnZmV0Y2goKScuCitQQVNTIFNhbWUtb3JpZ2luIFhIUi4KK1RJTUVP
VVQgQ3Jvc3Mtb3JpZ2luICdmZXRjaCgpJy4gVGVzdCB0aW1lZCBvdXQKK05PVFJVTiBDcm9zcy1v
cmlnaW4gWEhSLgorTk9UUlVOIFNhbWUtb3JpZ2luID0+IGNyb3NzLW9yaWdpbiAnZmV0Y2goKScu
CitOT1RSVU4gY29ubmVjdC1zcmMtc2VsZi1yZXBvcnQtb25seQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0
LXNyYy5zdWItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lk
ZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjc3ZGNlNTUwMGE3YgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJl
ZHdvcmtlci1zY3JpcHQtc3JjLnN1Yi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorCitI
YXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKKworVElNRU9VVCBzaGFyZWR3
b3JrZXItc2NyaXB0LXNyYyBUZXN0IHRpbWVkIG91dAorUEFTUyBDcm9zcy1vcmlnaW4gYGltcG9y
dFNjcmlwdHMoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91ciBDU1AKK1BBU1MgYGV2YWwo
KWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AKK1BBU1MgYHNldFRpbWVvdXQoW3N0
cmluZ10pYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3V0IENTUAorVElNRU9VVCBDcm9zcy1v
cmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgYmxvY2tlZCBpbiBodHRwOiB3aXRoIHNjcmlwdC1zcmMg
J3NlbGYnIFRlc3QgdGltZWQgb3V0CitOT1RSVU4gYGV2YWwoKWAgYmxvY2tlZCBpbiBodHRwOiB3
aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCitOT1RSVU4gYHNldFRpbWVvdXQoW3N0cmluZ10pYCBibG9j
a2VkIGluIGh0dHA6IHdpdGggc2NyaXB0LXNyYyAnc2VsZicKK05PVFJVTiBSZXBvcnRzIGFyZSBz
ZW50IGZvciBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11
cmwud2luZG93LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjY1MTljZDFmNjk0NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVs
ZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDExIEBACisKK1BBU1MgU3RhdGljIGltcG9ydC4KK1BBU1MgU3RhdGljIGltcG9ydCAo
Y3Jvc3Mtb3JpZ2luKS4KK1BBU1MgU3RhdGljIGltcG9ydCAocmVkaXJlY3QpLgorUEFTUyBOZXN0
ZWQgc3RhdGljIGltcG9ydC4KK1BBU1MgU3RhdGljIGltcG9ydCBhbmQgdGhlbiBkeW5hbWljIGlt
cG9ydC4KK1BBU1MgRHluYW1pYyBpbXBvcnQuCitQQVNTIE5lc3RlZCBkeW5hbWljIGltcG9ydC4K
K1BBU1MgRHluYW1pYyBpbXBvcnQgYW5kIHRoZW4gc3RhdGljIGltcG9ydC4KK1BBU1MgZXZhbChp
bXBvcnQoKSkuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtl
ci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVs
ZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmUzNmMwNDlmODI1NgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0
YS11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACisKK0hhcm5lc3MgRXJy
b3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAorCitQQVNTIFN0YXRpYyBpbXBvcnQuCitQQVNT
IFN0YXRpYyBpbXBvcnQgKGNyb3NzLW9yaWdpbikuCitUSU1FT1VUIFN0YXRpYyBpbXBvcnQgKHJl
ZGlyZWN0KS4gVGVzdCB0aW1lZCBvdXQKK05PVFJVTiBOZXN0ZWQgc3RhdGljIGltcG9ydC4KK05P
VFJVTiBTdGF0aWMgaW1wb3J0IGFuZCB0aGVuIGR5bmFtaWMgaW1wb3J0LgorTk9UUlVOIER5bmFt
aWMgaW1wb3J0LgorTk9UUlVOIE5lc3RlZCBkeW5hbWljIGltcG9ydC4KK05PVFJVTiBEeW5hbWlj
IGltcG9ydCBhbmQgdGhlbiBzdGF0aWMgaW1wb3J0LgorTk9UUlVOIGV2YWwoaW1wb3J0KCkpLgor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0Lndp
bmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LndpbmRvdy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi42NTE5Y2QxZjY5NDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1
bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
MSBAQAorCitQQVNTIFN0YXRpYyBpbXBvcnQuCitQQVNTIFN0YXRpYyBpbXBvcnQgKGNyb3NzLW9y
aWdpbikuCitQQVNTIFN0YXRpYyBpbXBvcnQgKHJlZGlyZWN0KS4KK1BBU1MgTmVzdGVkIHN0YXRp
YyBpbXBvcnQuCitQQVNTIFN0YXRpYyBpbXBvcnQgYW5kIHRoZW4gZHluYW1pYyBpbXBvcnQuCitQ
QVNTIER5bmFtaWMgaW1wb3J0LgorUEFTUyBOZXN0ZWQgZHluYW1pYyBpbXBvcnQuCitQQVNTIER5
bmFtaWMgaW1wb3J0IGFuZCB0aGVuIHN0YXRpYyBpbXBvcnQuCitQQVNTIGV2YWwoaW1wb3J0KCkp
LgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9u
cy1jcmVkZW50aWFscy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2sy
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13
b3JrZXItb3B0aW9ucy1jcmVkZW50aWFscy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hMmIxOGI1MjQ5MjgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1jcmVkZW50aWFscy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwzNSBAQAorCitQQVNTIFRlc3QgaW5pdGlhbGl6YXRpb246IHNl
dHRpbmcgdXAgY3Jvc3Mtb3JpZ2luIGNvb2tpZQorUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0
aCB0eXBlPW1vZHVsZSBhbmQgZGVmYXVsdCBjcmVkZW50aWFscyBvcHRpb24gc2hvdWxkIGJlaGF2
ZSBhcyBjcmVkZW50aWFscz1zYW1lLW9yaWdpbiBhbmQgc2VuZCB0aGUgY3JlZGVudGlhbHMKK1BB
U1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPW9t
aXQgc2hvdWxkIG5vdCBzZW5kIHRoZSBjcmVkZW50aWFscworUEFTUyBuZXcgU2hhcmVkV29ya2Vy
KCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQgY3JlZGVudGlhbHM9c2FtZS1vcmlnaW4gc2hvdWxkIHNl
bmQgdGhlIGNyZWRlbnRpYWxzCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9k
dWxlIGFuZCBjcmVkZW50aWFscz1pbmNsdWRlIHNob3VsZCBzZW5kIHRoZSBjcmVkZW50aWFscwor
UEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQgZGVmYXVsdCBjcmVk
ZW50aWFscyBvcHRpb24gc2hvdWxkIGJlaGF2ZSBhcyBjcmVkZW50aWFscz1zYW1lLW9yaWdpbiBh
bmQgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2luIHN0YXRpYyBpbXBvcnRzCitQ
QVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBjcmVkZW50aWFscz1v
bWl0IHNob3VsZCBub3Qgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2luIHN0YXRp
YyBpbXBvcnRzCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBj
cmVkZW50aWFscz1zYW1lLW9yaWdpbiBzaG91bGQgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNh
bWUtb3JpZ2luIHN0YXRpYyBpbXBvcnRzCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5
cGU9bW9kdWxlIGFuZCBjcmVkZW50aWFscz1pbmNsdWRlIHNob3VsZCBzZW5kIHRoZSBjcmVkZW50
aWFscyBmb3Igc2FtZS1vcmlnaW4gc3RhdGljIGltcG9ydHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtl
cigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGRlZmF1bHQgY3JlZGVudGlhbHMgb3B0aW9uIHNob3Vs
ZCBiZWhhdmUgYXMgY3JlZGVudGlhbHM9c2FtZS1vcmlnaW4gYW5kIG5vdCBzZW5kIHRoZSBjcmVk
ZW50aWFscyBmb3IgY3Jvc3Mtb3JpZ2luIHN0YXRpYyBpbXBvcnRzCitQQVNTIG5ldyBTaGFyZWRX
b3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBjcmVkZW50aWFscz1vbWl0IHNob3VsZCBub3Qg
c2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIGNyb3NzLW9yaWdpbiBzdGF0aWMgaW1wb3J0cworUEFT
UyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQgY3JlZGVudGlhbHM9c2Ft
ZS1vcmlnaW4gc2hvdWxkIG5vdCBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3IgY3Jvc3Mtb3JpZ2lu
IHN0YXRpYyBpbXBvcnRzCitGQUlMIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxl
IGFuZCBjcmVkZW50aWFscz1pbmNsdWRlIHNob3VsZCBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3Ig
Y3Jvc3Mtb3JpZ2luIHN0YXRpYyBpbXBvcnRzIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIxIiBi
dXQgZ290ICIiCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBk
ZWZhdWx0IGNyZWRlbnRpYWxzIG9wdGlvbiBzaG91bGQgYmVoYXZlIGFzIGNyZWRlbnRpYWxzPXNh
bWUtb3JpZ2luIGFuZCBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3Igc2FtZS1vcmlnaW4gZHluYW1p
YyBpbXBvcnRzCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBj
cmVkZW50aWFscz1vbWl0IHNob3VsZCBub3Qgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUt
b3JpZ2luIGR5bmFtaWMgaW1wb3J0cworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBl
PW1vZHVsZSBhbmQgY3JlZGVudGlhbHM9c2FtZS1vcmlnaW4gc2hvdWxkIHNlbmQgdGhlIGNyZWRl
bnRpYWxzIGZvciBzYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydHMKK1BBU1MgbmV3IFNoYXJlZFdv
cmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPWluY2x1ZGUgc2hvdWxkIHNl
bmQgdGhlIGNyZWRlbnRpYWxzIGZvciBzYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydHMKK1BBU1Mg
bmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGRlZmF1bHQgY3JlZGVudGlh
bHMgb3B0aW9uIHNob3VsZCBiZWhhdmUgYXMgY3JlZGVudGlhbHM9c2FtZS1vcmlnaW4gYW5kIG5v
dCBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3IgY3Jvc3Mtb3JpZ2luIGR5bmFtaWMgaW1wb3J0cwor
UEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQgY3JlZGVudGlhbHM9
b21pdCBzaG91bGQgbm90IHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gZHlu
YW1pYyBpbXBvcnRzCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFu
ZCBjcmVkZW50aWFscz1zYW1lLW9yaWdpbiBzaG91bGQgbm90IHNlbmQgdGhlIGNyZWRlbnRpYWxz
IGZvciBjcm9zcy1vcmlnaW4gZHluYW1pYyBpbXBvcnRzCitGQUlMIG5ldyBTaGFyZWRXb3JrZXIo
KSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBjcmVkZW50aWFscz1pbmNsdWRlIHNob3VsZCBzZW5kIHRo
ZSBjcmVkZW50aWFscyBmb3IgY3Jvc3Mtb3JpZ2luIGR5bmFtaWMgaW1wb3J0cyBhc3NlcnRfZXF1
YWxzOiBleHBlY3RlZCAiMSIgYnV0IGdvdCAiIgorUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0
aCB0eXBlPWNsYXNzaWMgc2hvdWxkIGFsd2F5cyBzZW5kIHRoZSBjcmVkZW50aWFscyByZWdhcmRs
ZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKGRlZmF1bHQpLgorUEFTUyBuZXcgU2hhcmVk
V29ya2VyKCkgd2l0aCB0eXBlPWNsYXNzaWMgc2hvdWxkIGFsd2F5cyBzZW5kIHRoZSBjcmVkZW50
aWFscyByZWdhcmRsZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKG9taXQpLgorUEFTUyBu
ZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPWNsYXNzaWMgc2hvdWxkIGFsd2F5cyBzZW5kIHRo
ZSBjcmVkZW50aWFscyByZWdhcmRsZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKHNhbWUt
b3JpZ2luKS4KK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1jbGFzc2ljIHNob3Vs
ZCBhbHdheXMgc2VuZCB0aGUgY3JlZGVudGlhbHMgcmVnYXJkbGVzcyBvZiB0aGUgY3JlZGVudGlh
bHMgb3B0aW9uIChpbmNsdWRlKS4KK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1j
bGFzc2ljIHNob3VsZCBhbHdheXMgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2lu
IGR5bmFtaWMgaW1wb3J0cyByZWdhcmRsZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKGRl
ZmF1bHQpLgorUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPWNsYXNzaWMgc2hvdWxk
IGFsd2F5cyBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3Igc2FtZS1vcmlnaW4gZHluYW1pYyBpbXBv
cnRzIHJlZ2FyZGxlc3Mgb2YgdGhlIGNyZWRlbnRpYWxzIG9wdGlvbiAob21pdCkuCitQQVNTIG5l
dyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9Y2xhc3NpYyBzaG91bGQgYWx3YXlzIHNlbmQgdGhl
IGNyZWRlbnRpYWxzIGZvciBzYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydHMgcmVnYXJkbGVzcyBv
ZiB0aGUgY3JlZGVudGlhbHMgb3B0aW9uIChzYW1lLW9yaWdpbikuCitQQVNTIG5ldyBTaGFyZWRX
b3JrZXIoKSB3aXRoIHR5cGU9Y2xhc3NpYyBzaG91bGQgYWx3YXlzIHNlbmQgdGhlIGNyZWRlbnRp
YWxzIGZvciBzYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydHMgcmVnYXJkbGVzcyBvZiB0aGUgY3Jl
ZGVudGlhbHMgb3B0aW9uIChpbmNsdWRlKS4KK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGgg
dHlwZT1jbGFzc2ljIHNob3VsZCBuZXZlciBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3IgY3Jvc3Mt
b3JpZ2luIGR5bmFtaWMgaW1wb3J0cyByZWdhcmRsZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRp
b24gKGRlZmF1bHQpLgorUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPWNsYXNzaWMg
c2hvdWxkIG5ldmVyIHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gZHluYW1p
YyBpbXBvcnRzIHJlZ2FyZGxlc3Mgb2YgdGhlIGNyZWRlbnRpYWxzIG9wdGlvbiAob21pdCkuCitQ
QVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9Y2xhc3NpYyBzaG91bGQgbmV2ZXIgc2Vu
ZCB0aGUgY3JlZGVudGlhbHMgZm9yIGNyb3NzLW9yaWdpbiBkeW5hbWljIGltcG9ydHMgcmVnYXJk
bGVzcyBvZiB0aGUgY3JlZGVudGlhbHMgb3B0aW9uIChzYW1lLW9yaWdpbikuCitQQVNTIG5ldyBT
aGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9Y2xhc3NpYyBzaG91bGQgbmV2ZXIgc2VuZCB0aGUgY3Jl
ZGVudGlhbHMgZm9yIGNyb3NzLW9yaWdpbiBkeW5hbWljIGltcG9ydHMgcmVnYXJkbGVzcyBvZiB0
aGUgY3JlZGVudGlhbHMgb3B0aW9uIChpbmNsdWRlKS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9v
cGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZWU1M2YyZmYyZDVlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtl
ci1vcmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorCitGQUlMIFJlZmVyZXIgaGVh
ZGVyIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJSZWZlcmVyOiBodHRwOi8vbG9jYWxob3N0Ojg4
MDAveGhyL3Jlc291cmNlcy93b3JrZXJ4aHItb3JpZ2luLXJlZmVycmVyLmpzXG4iIGJ1dCBnb3Qg
IlJlZmVyZXI6IGh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC94aHIvcmVzb3VyY2VzL3JlZGlyZWN0LnB5
P2xvY2F0aW9uPXdvcmtlcnhoci1vcmlnaW4tcmVmZXJyZXIuanNcbiIKK1BBU1MgT3JpZ2luIGhl
YWRlcgorUEFTUyBSZXF1ZXN0IFVSTCB0ZXN0CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAwZjY2MTdmZDFhMTEuLjQ0NzVmYWE4N2MyNiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25z
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAt
NjcsNiArNjcsOCBAQCBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS1tZWRpYXN0cmVh
bS5odG1sIFsgU2tpcCBdCiBtZWRpYS9hdWRpby1zZXNzaW9uLWNhdGVnb3J5Lmh0bWwgWyBTa2lw
IF0KIAogIyBTaGFyZWQgd29ya2VycyBhcmUgb25seSBpbXBsZW1lbnRlZCBmb3IgV2ViS2l0Mi4K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
Y29ubmVjdC1zcmMvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1hbGxvd2VkLnN1Yi5odG1sIFsg
U2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHkt
cG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3JrZXItY29ubmVjdC1zcmMtYmxvY2tlZC5zdWIu
aHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy1zZWxmL3NoYXJlZHdvcmtl
ci1jbGFzc2ljLmh0dHAuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy1z
ZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRw
LXJwL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAg
XQpAQCAtMTQyLDYgKzE0NCw3IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvd29ya2VyLXNyYy9zaGFyZWQtd29ya2VyCiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMv
c2hhcmVkLXdvcmtlci1zcmMtZGVmYXVsdC1mYWxsYmFjay5zdWIuaHRtbCBbIFNraXAgXQogaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS93b3Jr
ZXItc3JjL3NoYXJlZC13b3JrZXItc3JjLXNjcmlwdC1mYWxsYmFjay5zdWIuaHRtbCBbIFNraXAg
XQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS93b3JrZXItc3JjL3NoYXJlZC13b3JrZXItc3JjLXNlbGYtZmFsbGJhY2suc3ViLmh0bWwgWyBT
a2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZXZlbnRzb3VyY2Uvc2hhcmVk
LXdvcmtlciBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9h
cGkvY29ycy9kYXRhLXVybC1zaGFyZWQtd29ya2VyLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZsaW5lL25vLWFwcGNhY2hlLWlu
LXNoYXJlZC13b3JrZXJzLWhpc3RvcmljYWwuaHR0cHMuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUtc2Ny
aXB0LWVsZW1lbnQvbW9kdWxlL2V2YWx1YXRpb24tb3JkZXItMS1ub3Rocm93LXNoYXJlZHdvcmtl
ci5odG1sIFsgU2tpcCBdCkBAIC0xNTEsMTAgKzE1NCwxNCBAQCBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVu
dC9tbwogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9zY3Jp
cHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvZXZhbHVhdGlvbi1vcmRlci0xLW5vdGhyb3ctc2hh
cmVkd29ya2VyLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3Mvc2NyaXB0aW5nLTEvdGhlLXNjcmlwdC1lbGVtZW50L2V2YWx1YXRpb24t
b3JkZXItMS1zaGFyZWR3b3JrZXIuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi91
bmhhbmRsZWQtcHJvbWlzZS1yZWplY3Rpb25zL3Byb21pc2UtcmVqZWN0aW9uLWV2ZW50cy5zaGFy
ZWR3b3JrZXIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
ZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvY2xhaW0tc2hhcmVkLXdvcmtlci1mZXRjaC5o
dHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20v
c2VyaWFsaXphdGlvbi9tb2R1bGUvYnJvYWRjYXN0Y2hhbm5lbC1zdWNjZXNzLWFuZC1mYWlsdXJl
Lmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9T
aGFyZWRXb3JrZXJQZXJmb3JtYW5jZU5vdy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvZGF0YS11cmwtc2hhcmVkLmh0bWwgWyBTa2lwIF0KK2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9vcGFxdWUtb3JpZ2luLmh0bWwg
WyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9iYXNldXJs
L2FscGhhL2ltcG9ydFNjcmlwdHMtaW4tc2hhcmVkd29ya2VyLmh0bWwgWyBTa2lwIF0KIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9iYXNldXJsL2FscGhhL3hoci1pbi1z
aGFyZWR3b3JrZXIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIgWyBTa2lwIF0KIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9pbnRlcmZhY2VzL1NoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
aW50ZXJmYWNlcy9Xb3JrZXJHbG9iYWxTY29wZS9sb2NhdGlvbi9yZWRpcmVjdC1zaGFyZWR3b3Jr
ZXIuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93Lmh0bWwgWyBTa2lw
IF0KQEAgLTE2NSw3ICsxNzIsMTUgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtbWV0YS5odG1sIFsKIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LndpbmRvdy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMuaHRtbCBb
IFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMv
c2hhcmVkLXdvcmtlci1vcHRpb25zLXR5cGUuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9ibG9iVXJsLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXIt
Y29uc3RydWN0b3IuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXItZGV0YWNoLWZyYW1lLWlu
LWVycm9yLWV2ZW50Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9TaGFyZWRXb3JrZXItZXhjZXB0aW9uLXByb3BhZ2F0aW9uLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXIt
ZXhjZXB0aW9uLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9TaGFyZWRXb3JrZXItc2NyaXB0LWVycm9yLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXItc2ltcGxlLmh0bWwg
WyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVz
L3NoYXJlZC13b3JrZXItaW1wb3J0LXJlZmVycmVyLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItcGFyc2Ut
ZXJyb3ItZmFpbHVyZS5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvc2VtYW50aWNzL2VuY29kaW5ncy8wMDIuaHRtbCBbIFNraXAgXQogaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9lbmNvZGluZ3MvMDA0
Lmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMK
aW5kZXggOTVlNWM2ZmJjOGJmLi5jMGIzOWI0NDhlYjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNjUsNiArMTY1LDggQEAgaHR0cC90ZXN0cy9yZWZl
cnJlci1wb2xpY3ktaW1nL3Vuc2FmZS11cmwvY3Jvc3Mtb3JpZ2luLWh0dHAtaHR0cC5odG1sIFsg
U2tpcCBdCiBodHRwL3Rlc3RzL3JlZmVycmVyLXBvbGljeS1pbWcvdW5zYWZlLXVybC9jcm9zcy1v
cmlnaW4taHR0cC5odHRwcy5odG1sIFsgU2tpcCBdCiAKICMgU2hhcmVkIHdvcmtlcnMgYXJlIG9u
bHkgaW1wbGVtZW50ZWQgZm9yIFdlYktpdDIuCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3JrZXItY29u
bmVjdC1zcmMtYWxsb3dlZC5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9zaGFyZWQtd29y
a2VyLWNvbm5lY3Qtc3JjLWJsb2NrZWQuc3ViLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJw
L3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwLmh0bWwgWyBTa2lwIF0K
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
Z2VuL3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRw
cy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29y
a2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lwIF0KQEAgLTI0MCw2ICsyNDIsNyBAQCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1z
cmMvc2hhcmVkLXdvcmtlcgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50
LXNlY3VyaXR5LXBvbGljeS93b3JrZXItc3JjL3NoYXJlZC13b3JrZXItc3JjLWRlZmF1bHQtZmFs
bGJhY2suc3ViLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvd29ya2VyLXNyYy9zaGFyZWQtd29ya2VyLXNyYy1zY3Jp
cHQtZmFsbGJhY2suc3ViLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvd29ya2VyLXNyYy9zaGFyZWQtd29ya2VyLXNy
Yy1zZWxmLWZhbGxiYWNrLnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2V2ZW50c291cmNlL3NoYXJlZC13b3JrZXIgWyBTa2lwIF0KIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2NvcnMvZGF0YS11cmwtc2hhcmVkLXdvcmtl
ci5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJv
d3NlcnMvb2ZmbGluZS9uby1hcHBjYWNoZS1pbi1zaGFyZWQtd29ya2Vycy1oaXN0b3JpY2FsLmh0
dHBzLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3Mvc2NyaXB0aW5nLTEvdGhlLXNjcmlwdC1lbGVtZW50L21vZHVsZS9ldmFsdWF0aW9u
LW9yZGVyLTEtbm90aHJvdy1zaGFyZWR3b3JrZXIuaHRtbCBbIFNraXAgXQpAQCAtMjQ5LDEwICsy
NTIsMTQgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9z
Y3JpcHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvbW8KIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mvc2NyaXB0aW5nLTEvdGhlLXNjcmlwdC1lbGVtZW50L2V2
YWx1YXRpb24tb3JkZXItMS1ub3Rocm93LXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3Ro
ZS1zY3JpcHQtZWxlbWVudC9ldmFsdWF0aW9uLW9yZGVyLTEtc2hhcmVkd29ya2VyLmh0bWwgWyBT
a2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3Nj
cmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvdW5oYW5kbGVkLXByb21pc2UtcmVqZWN0aW9ucy9w
cm9taXNlLXJlamVjdGlvbi1ldmVudHMuc2hhcmVkd29ya2VyLmh0bWwgWyBTa2lwIF0KK2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vy
L2NsYWltLXNoYXJlZC13b3JrZXItZmV0Y2guaHR0cHMuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL3NlcmlhbGl6YXRpb24vbW9kdWxlL2Jyb2FkY2Fz
dGNoYW5uZWwtc3VjY2Vzcy1hbmQtZmFpbHVyZS5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyUGVyZm9ybWFuY2VOb3cuaHRt
bCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2RhdGEt
dXJsLXNoYXJlZC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvb3BhcXVlLW9yaWdpbi5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvYmFzZXVybC9hbHBoYS9pbXBvcnRTY3JpcHRzLWluLXNoYXJl
ZHdvcmtlci5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvYmFzZXVybC9hbHBoYS94aHItaW4tc2hhcmVkd29ya2VyLmh0bWwgWyBTa2lwIF0KK2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hhcmVk
V29ya2VyIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
aW50ZXJmYWNlcy9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZSBbIFNraXAgXQogaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2ludGVyZmFjZXMvV29ya2VyR2xvYmFsU2NvcGUv
bG9jYXRpb24vcmVkaXJlY3Qtc2hhcmVkd29ya2VyLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0
LWJsb2ItdXJsLndpbmRvdy5odG1sIFsgU2tpcCBdCkBAIC0yNjMsNyArMjcwLDE1IEBAIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXIt
aW1wb3J0LW1ldGEuaHRtbCBbCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3cuaHRtbCBbIFNraXAgXQogaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtl
ci1vcHRpb25zLWNyZWRlbnRpYWxzLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9ucy10eXBlLmh0
bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFy
ZWRXb3JrZXJfYmxvYlVybC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyLWNvbnN0cnVjdG9yLmh0bWwgWyBTa2lwIF0KIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJfZGF0YVVy
bC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
U2hhcmVkV29ya2VyLWRldGFjaC1mcmFtZS1pbi1lcnJvci1ldmVudC5odG1sIFsgU2tpcCBdCitp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyLWV4Y2Vw
dGlvbi1wcm9wYWdhdGlvbi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyLWV4Y2VwdGlvbi5odG1sIFsgU2tpcCBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyLXNjcmlwdC1l
cnJvci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvU2hhcmVkV29ya2VyLXNpbXBsZS5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1yZWZlcnJl
ci5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
bW9kdWxlcy9zaGFyZWQtd29ya2VyLXBhcnNlLWVycm9yLWZhaWx1cmUuaHRtbCBbIFNraXAgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9lbmNvZGlu
Z3MvMDAyLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9zZW1hbnRpY3MvZW5jb2RpbmdzLzAwNC5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQppbmRleCA2NTM5MzdhY2U2NWMuLmQzM2ZjNGFhNGQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBA
IC0xOTU3LDkgKzE5NTcsMTIgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVS
UwogICAgIHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKICAgICB3b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmgKICAgICB3b3JrZXJzL1dvcmtlckxvYWRlclByb3h5LmgKKyAgICB3b3Jr
ZXJzL1dvcmtlck9iamVjdFByb3h5LmgKKyAgICB3b3JrZXJzL1dvcmtlck9wdGlvbnMuaAogICAg
IHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaAogICAgIHdvcmtlcnMvV29ya2Vy
T3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCiAgICAgd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRU
aHJlYWQuaAorICAgIHdvcmtlcnMvV29ya2VyUmVwb3J0aW5nUHJveHkuaAogICAgIHdvcmtlcnMv
V29ya2VyUnVuTG9vcC5oCiAgICAgd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAogICAgIHdv
cmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50LmgKQEAgLTIwMDMsOSArMjAwNiwxMiBAQCBz
ZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlcldvcmtlci5oCiAKICAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyLmgKLSAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmgK
KyAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaAogICAgIHdvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaAorICAgIHdvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIuaAogICAgIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
clByb3ZpZGVyLmgKKworICAgIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXIuaAogICAgIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhy
ZWFkLmgKICAgICB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5
LmgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBiM2Y1ZTBiNzg0MTcuLjVlZTUwMGNiNmQxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKQEAgLTI3ODUsMTAgKzI3ODUsMTAgQEAgd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyV29ya2VyLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNwcAogd29ya2Vy
cy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCi13b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXJNYW5hZ2VyLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbi5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmNwcAogd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcAord29ya2Vycy9zaGFyZWQv
Y29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKIHdvcmtlcnMvc2hhcmVkL2Nv
bnRleHQvU2hhcmVkV29ya2VyVGhyZWFkLmNwcAogd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAKIHdvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGM1ZjQ0ZWYwNGE3MC4uNTZhNzE1OWRiYWVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MDMsNyArOTAzLDcg
QEAKIAkJMkU0MzQ2NEIwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjM5
MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZVByb3h5LmggKi87IH07CiAJCTJF
NDM0NjREMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2M0IwRjU0NkE4MjAwQjBGMUJB
IC8qIFdvcmtlckxvY2F0aW9uLmggKi87IH07CiAJCTJFNDM0NjUwMEY1NDZBODIwMEIwRjFCQSAv
KiBXb3JrZXJNZXNzYWdpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkU0MzQ2M0UwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck1lc3NhZ2lu
Z1Byb3h5LmggKi87IH07Ci0JCTJFNDM0NjUxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmpl
Y3RQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkU0MzQ2M0YwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5LmggKi87IH07CisJ
CTJFNDM0NjUxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94eS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2M0YwRjU0NkE4MjAw
QjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2NTMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtl
clJ1bkxvb3AuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJFNDM0NjQxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJSdW5Mb29wLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2NTUwRjU0NkE4MjAw
QjBGMUJBIC8qIFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkU0MzQ2NDMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFNzU4
NDFFMTI3NzlBREEwMDYyNjI4QiAvKiBGaWxlUmVhZGVyTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTc1ODQxQjEyNzc5QURBMDA2MjYyOEIg
LyogRmlsZVJlYWRlckxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0xMTI1LDcgKzExMjUsNyBAQAogCQk0MTZBMDZBMTIzQ0NBRDAzMDAz
NDcxMDkgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkEwNjk2MjNDQ0FBOUYwMDM0NzEwOSAv
KiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkQ3NUEyMjBDNjUxQTUwMEQwMkQyQyAvKiBO
ZXR3b3JrTG9hZEluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTZENzU5RjIwQzY0NDEzMDBEMDJEMkMgLyogTmV0d29ya0xvYWRJbmZv
cm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQxNkUwQjNBMjA5QkMzQ0IwMDRBOTVEOSAvKiBGZXRjaElkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkUwQjM3MjA5QkMzQzIw
MDRBOTVEOSAvKiBGZXRjaElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwotCQk0MTZFMjlBNjEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2Vy
UmVwb3J0aW5nUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxNkUyOUE1MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5o
ICovOyB9OworCQk0MTZFMjlBNjEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJv
eHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkUy
OUE1MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU4MUJCRDEyREYw
MDBBM0Y2NCAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0
RDkgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU4MUJCRDEyREYwMDBBM0Y2
NSAvKiBKU0RPTUJpbmRpbmdJbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NERBIC8qIEpT
RE9NQmluZGluZ0ludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgxQkJEMTJERjAwMEEzRjc0IC8qIFRyYW5z
Zm9ybVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RUEgLyogVHJhbnNmb3Jt
U3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMTM0NywxNCArMTM0NywxNiBAQAogCQk0NjdBNjhENzI3NUVB
OTkxMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdBNjhENDI3NUVBOThCMDA5QjMxQzUgLyogU2hh
cmVkV29ya2VyVGhyZWFkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNDY3QTY4RDgyNzVFQTk5NTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlw
dExvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDY3QTY4RDUyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oICov
OyB9OwogCQk0NjdBNjhEOTI3NUVBOTk4MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJv
eHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0E2
OEQ2Mjc1RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQ2N0E2OERBMjc1RUE5
OUMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdBNjhEMjI3NUVBOThBMDA5QjMxQzUgLyogU2hh
cmVkV29ya2VyTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQ2ODJEMjAwMUY3OTc4MzAwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFs
c1BvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDY4MkQxRkYxRjc5NzgyMzAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4MzQ0RTAx
RURERkFBQTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVj
dExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0NjgzREY0MDI3NjdERjk4MDA3RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFz
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4M0RG
M0UyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaCAqLzsg
fTsKIAkJNDY4M0RGNDEyNzY3RTkxQTAwN0QwMEM4IC8qIFNoYWRvd1JlYWxtR2xvYmFsU2NvcGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODNERjNC
Mjc2N0RGMjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4OEVFM0MyNkREMjYxMDAw
MkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDY4OEVFM0EyNkREMjYwQzAwMkFGNUM0IC8qIENyb3NzT3JpZ2lu
TW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTQ2OTQzREM5Mjc2M0Y4MTcwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0M0RD
NzI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2OTg1RjIzMjdB
NEE2QUQwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTg1RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFy
ZWRXb3JrZXJLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0NjlDQ0NGRTI2OUQwMjFDMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5Q0NDRkMyNjlE
MDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjlENzdCODI3MDE2MjUxMDAxNDJGQTYgLyog
TmF2aWdhdGlvblJlcXVlc3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDY5RDc3QjYyNzAxNjI1MDAwMTQyRkE2IC8qIE5hdmlnYXRpb25SZXF1ZXN0
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0
NkE3OEIzNDI3OTlCRDcxMDAxMTU0RkUgLyogV29ya2VyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxQjFEMjYyNkYxOEE0QjAwODgyREEy
IC8qIFdvcmtlck9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0NkFBQUEzRDI1RDM2MzIwMDBCQUY0MkYgLyogQXVkaW9GaWxlUmVhZGVy
Q29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
QUFBQTNBMjVEMzYzMTQwMEJBRjQyRiAvKiBBdWRpb0ZpbGVSZWFkZXJDb2NvYS5oICovOyB9Owog
CQk0NkI2M0Y2QzFDNkU4RDE5MDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjNGNkIxQzZFOENE
RjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI2NTBERDIyOTYyNjI3MDBGRDhBQTQgLyog
UGFnZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2QjY1MERCMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzc1LDYgKzEz
NzcsNyBAQAogCQk0NkM2OTZDQzFFNzIwNUZDMDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM2OTZDQTFFNzIw
NUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgKi87IH07CiAJCTQ2QzgzRUZFMUE5QkJFMjkw
MEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDZDODNFRkMxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZDQTlD
NDQxRjk3QkJFOTAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDQTlDNDExRjk3QkJFNzAwNENGQzNBIC8q
IFZpc2liaWxpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTQ2Q0Y1MDRBMjdBQjFFQTQwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZDRjUwNDgyN0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZE
MDAwNDAyNkEwRkVCMzAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkQwMDAzRTI2QTBGRTZGMDBEMUJGMUUgLyog
U3VibWl0RXZlbnQuaCAqLzsgfTsKIAkJNDZEQTRBMDIyN0FCMDM5MzAwRTM3NUE4IC8qIFRyYW5z
ZmVycmVkTWVzc2FnZVBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2REE0QTAwMjdBQjAzOEQwMEUzNzVBOCAvKiBUcmFuc2ZlcnJlZE1lc3NhZ2VQ
b3J0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NDZEQkI2NTAxQUI4Qzk2RjAwRDlBODEzIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REJCNjRFMUFCOEM5NkYwMEQ5
QTgxMyAvKiBQb3dlck9ic2VydmVyTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTkyNDUsOCArOTI0OCw2IEBACiAJCTQ2N0E2OENGMjc1RUE5
ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2N0E2OEQwMjc1RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDY3QTY4RDEyNzVFQTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtl
clNjcmlwdExvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJTY3JpcHRM
b2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NjdBNjhEMjI3NUVBOThB
MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRX
b3JrZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2N0E2OEQzMjc1
RUE5OEIwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNoYXJlZFdvcmtlck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjdBNjhENDI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNoYXJlZFdvcmtlclRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NjdBNjhENTI3NUVBOThDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NjdBNjhENjI3NUVBOThDMDA5QjMxQzUgLyogU2hhcmVkV29y
a2VyVGhyZWFkUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFkUHJveHku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkyNjIsNiArOTI2Myw4IEBACiAJCTQ2
ODNERjNFMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2hhZG93UmVhbG1HbG9iYWxTY29w
ZUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OEVFM0EyNkREMjYwQzAw
MkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcm9zc09yaWdpbk1v
ZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4QjhCREUyNUNDODQ5MzAwRjY3
ODIyIC8qIEpTQmFzZUF1ZGlvQ29udGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0Jhc2VBdWRpb0NvbnRleHRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0Njk0M0RDNzI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTg1RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFy
ZWRXb3JrZXJLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29y
a2VyS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OUNDQ0ZBMjY5RDAyMDIw
MDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJyb2Fk
Y2FzdENoYW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlDQ0NGQzI2
OUQwMjAyMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCcm9h
ZGNhc3RDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OUNDQ0ZEMjY5
RDAyMDMwMDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBCcm9hZGNhc3RDaGFu
bmVsLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkzMDIsNiArOTMwNSw4IEBA
CiAJCTQ2QzgzRUZDMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBHZW9Ob3RpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NkNBOUM0MTFGOTdCQkU3MDA0Q0ZDM0EgLyogVmlzaWJpbGl0eVN0YXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpc2liaWxpdHlTdGF0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkNBOUM0MjFGOTdCQkU3MDA0Q0ZDM0EgLyogVmlz
aWJpbGl0eVN0YXRlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBWaXNpYmlsaXR5U3RhdGUu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkNGNTA0ODI3QUIxRUExMDA3MERC
QzggLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZD
RjUwNDkyN0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZEMDAwM0MyNkEwRkU2RjAwRDFCRjFFIC8qIFN1Ym1p
dEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN1Ym1pdEV2
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZEMDAwM0UyNkEwRkU2RjAw
RDFCRjFFIC8qIFN1Ym1pdEV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFN1Ym1pdEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RDAwMDNGMjZB
MEZFNzAwMEQxQkYxRSAvKiBTdWJtaXRFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
U3VibWl0RXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE1NjgsNiAr
MjE1NzMsOCBAQAogCQk0NjQ3Q0U2MTI3QUFFMURBMDA5Q0JENDggLyogY29udGV4dCAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDZDRjUwNDkyN0FCMUVB
MTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcCAqLywKKwkJCQk0NkNG
NTA0ODI3QUIxRUExMDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCAqLywK
IAkJCQk0NjdBNjhEMDI3NUVBOTg5MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmNwcCAq
LywKIAkJCQk0NjdBNjhENDI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmgg
Ki8sCiAJCQkJNDY3QTY4Q0YyNzVFQTk4OTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZFBy
b3h5LmNwcCAqLywKQEAgLTIxNTg3LDEwICsyMTU5NCwxMCBAQAogCQkJCTQ2Njk0Q0UxMjc1OTQ0
OEMwMEUzMTUwRSAvKiBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oICovLAogCQkJCTQ2Njk0Q0Uw
Mjc1OTQ0OEMwMEUzMTUwRSAvKiBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5pZGwgKi8sCiAJCQkJ
NDZFQzQ0NDgyN0FCMzM3RjAwRkZDRDk2IC8qIFNoYXJlZFdvcmtlcklkZW50aWZpZXIuaCAqLywK
LQkJCQk0NjdBNjhEMzI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5jcHAg
Ki8sCi0JCQkJNDY3QTY4RDIyNzVFQTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIu
aCAqLywKKwkJCQk0Njk4NUYyMjI3QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5Lmgg
Ki8sCiAJCQkJNDY2OEEwQjMyN0FCNjAwQjAwQzcyMEJDIC8qIFNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24uY3BwICovLAogCQkJCTQ2NjhBMEIxMjdBQjYwMEIwMEM3MjBCQyAvKiBTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uLmggKi8sCisJCQkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBF
IC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAqLywKIAkJCQk0NjY4QTBCNDI3QUI2
MDBDMDBDNzIwQkMgLyogU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwICovLAogCQkJCTQ2NjhBMEI1
MjdBQjYwMEMwMEM3MjBCQyAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5oICovLAogCQkJCTQ2N0E2
OEQxMjc1RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwICovLApA
QCAtMzcyMDQsOSArMzcyMTEsMTEgQEAKIAkJCQk4MzRERkFEMDFGN0RBRTVEMDBDMjcyNUIgLyog
U2hhcmVkU3RyaW5nSGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFQTMwOTlFQjc4QzAw
NTZFNTgxIC8qIFNoYXJlZFRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURDMDRGRTI3QTgz
QzkzMDA4Q0Y5NjggLyogU2hhcmVkVmlkZW9GcmFtZUluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJ
CTQ2Q0Y1MDRBMjdBQjFFQTQwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDZFQzQ0NEEyN0FCMzM4OTAwRkZDRDk2IC8qIFNoYXJlZFdv
cmtlcklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ2N0E2OERBMjc1RUE5OUMwMDlC
MzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0Njk4NUYy
MzI3QTRBNkFEMDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0NjY4QTBCNjI3QUI2MDFCMDBDNzIwQkMgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY5NDNEQzkyNzYzRjgxNzAwNEI2MTBFIC8qIFNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2NjhBMEI3MjdB
QjYwMjEwMEM3MjBCQyAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDY3QTY4RDgyNzVFQTk5NTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDY3QTY4RDcyNzVFQTk5MTAwOUIzMUM1IC8qIFNoYXJlZFdv
cmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zODA2Nyw2ICszODA3Niw3IEBACiAJCQkJ
RTEyNzFBMEIwRUVFQzc3QTAwRjYxMjEzIC8qIFdvcmtlck5hdmlnYXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTVDQjA1MjUxRkI1MUYzQTAwMDg5Qjk3IC8qIFdvcmtlck5ldHdvcmtBZ2VudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkU0MzQ2NTEwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9i
amVjdFByb3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkE3OEIzNDI3OTlCRDcxMDAxMTU0RkUg
LyogV29ya2VyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNENkFBRTYyNTI0RUUxQzAw
NDI4QjRCIC8qIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4MzlBMDk1RDI1MjRGMzdGMDBFRUYzMjggLyogV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNGNkFFQkYyNTI3QkIwQzAwMzRCQ0QzIC8qIFdv
cmtlck9yV29ya2xldFRocmVhZC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dn
aW5nLmgKaW5kZXggNWZlZjQyZWUwNmVjLi5mYTdkMjMwMmVjMzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Mb2dnaW5nLmgKQEAgLTEyNyw2ICsxMjcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
TShXZWJHTCkgXAogICAgIE0oV2ViUlRDKSBcCiAgICAgTShXZWJSVENTdGF0cykgXAorICAgIE0o
V29ya2VyKSBcCiAgICAgTShYUikgXAogICAgIE0oV2hlZWxFdmVudFRlc3RNb25pdG9yKSBcCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCmluZGV4
IGI0ODc0N2EyYzA5OS4uNDZkYzQ1NGRmZGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTUgKzI2LDE3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCiAKKyNpbmNsdWRlICJDbGllbnRPcmln
aW4uaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJEb2N1
bWVudC5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiTWVzc2FnZUNoYW5uZWwuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2lu
Y2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2lu
Y2x1ZGUgIlNoYXJlZFdvcmtlck1hbmFnZXIuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyUHJvdmlkZXIuaCIKLSNpbmNs
dWRlICJTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlck9wdGlvbnMu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KICNpbmNs
dWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtNDMsMTIgKzQ1LDI3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFNoYXJlZFdvcmtlcik7
CiAKKyNkZWZpbmUgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9M
T0coU2hhcmVkV29ya2VyLCAiJXAgLSBbaWRlbnRpZmllcj0le3B1YmxpY31zXSBTaGFyZWRXb3Jr
ZXI6OiIgZm10LCB0aGlzLCBtX2lkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAj
I19fVkFfQVJHU19fKQorI2RlZmluZSBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HX0VSUk9SKGZt
dCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICIlcCAtIFtpZGVudGlmaWVy
PSV7cHVibGljfXNdIFNoYXJlZFdvcmtlcjo6IiBmbXQsIHRoaXMsIG1faWRlbnRpZmllci50b1N0
cmluZygpLnV0ZjgoKS5kYXRhKCksICMjX19WQV9BUkdTX18pCisKK3N0YXRpYyBIYXNoTWFwPFNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFNoYXJlZFdvcmtlcio+JiBhbGxTaGFyZWRXb3Jr
ZXJzKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxIYXNoTWFwPFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFNoYXJlZFdvcmtl
cio+PiBhbGxTaGFyZWRXb3JrZXJzOworICAgIHJldHVybiBhbGxTaGFyZWRXb3JrZXJzOworfQor
CitTaGFyZWRXb3JrZXIqIFNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIoU2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBhbGxTaGFyZWRXb3Jr
ZXJzKCkuZ2V0KGlkZW50aWZpZXIpOworfQorCiBzdGF0aWMgaW5saW5lIFNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24qIG1haW5UaHJlYWRDb25uZWN0aW9uKCkKIHsKICAgICByZXR1cm4gU2hh
cmVkV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsK
IH0KIAotRXhjZXB0aW9uT3I8UmVmPFNoYXJlZFdvcmtlcj4+IFNoYXJlZFdvcmtlcjo6Y3JlYXRl
KERvY3VtZW50JiBkb2N1bWVudCwgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzLCBTdHJp
bmcmJiBzY3JpcHRVUkxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8c3RkOjp2YXJpYW50PFN0cmluZywg
V29ya2VyT3B0aW9ucz4+JiYgbWF5YmVPcHRpb25zKQorRXhjZXB0aW9uT3I8UmVmPFNoYXJlZFdv
cmtlcj4+IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nJiYg
c2NyaXB0VVJMU3RyaW5nLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxTdHJpbmcsIFdvcmtl
ck9wdGlvbnM+PiYmIG1heWJlT3B0aW9ucykKIHsKICAgICBpZiAoIW1haW5UaHJlYWRDb25uZWN0
aW9uKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIlNo
YXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkIiB9OwpAQCAtNzcsMjYgKzk0LDM0IEBAIEV4
Y2VwdGlvbk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBTaGFyZWRXb3JrZXI6OmNyZWF0ZShEb2N1bWVu
dCYgZG9jdW1lbnQsIEpTQzo6UnVuCiAgICAgYXV0byBjaGFubmVsID0gTWVzc2FnZUNoYW5uZWw6
OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgYXV0byB0cmFuc2ZlcnJlZFBvcnQgPSBjaGFubmVsLT5w
b3J0MigpLmRpc2VudGFuZ2xlKCk7CiAKLSAgICBhdXRvIHNoYXJlZFdvcmtlciA9IGFkb3B0UmVm
KCpuZXcgU2hhcmVkV29ya2VyKGRvY3VtZW50LCBjaGFubmVsLT5wb3J0MSgpLCBydW50aW1lRmxh
Z3MpKTsKKyAgICBhdXRvIHNoYXJlZFdvcmtlciA9IGFkb3B0UmVmKCpuZXcgU2hhcmVkV29ya2Vy
KGRvY3VtZW50LCB1cmwsIGNoYW5uZWwtPnBvcnQxKCkpKTsKICAgICBzaGFyZWRXb3JrZXItPnN1
c3BlbmRJZk5lZWRlZCgpOwogCi0gICAgbWFpblRocmVhZENvbm5lY3Rpb24oKS0+cmVxdWVzdFNo
YXJlZFdvcmtlcih1cmwsIHNoYXJlZFdvcmtlci5nZXQoKSwgV1RGTW92ZSh0cmFuc2ZlcnJlZFBv
cnQpLCBXVEZNb3ZlKG9wdGlvbnMpKTsKKyAgICBDbGllbnRPcmlnaW4gY2xpZW50T3JpZ2luIHsg
ZG9jdW1lbnQudG9wRG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSwgZG9jdW1lbnQu
c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkgfTsKKyAgICBtYWluVGhyZWFkQ29ubmVjdGlvbigpLT5y
ZXF1ZXN0U2hhcmVkV29ya2VyKGNsaWVudE9yaWdpbiwgc2hhcmVkV29ya2VyLT5pZGVudGlmaWVy
KCksIHVybCwgV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBvcHRpb25zKTsKICAgICByZXR1cm4g
c2hhcmVkV29ya2VyOwogfQogCi1TaGFyZWRXb3JrZXI6OlNoYXJlZFdvcmtlcihEb2N1bWVudCYg
ZG9jdW1lbnQsIFJlZjxNZXNzYWdlUG9ydD4mJiBwb3J0LCBKU0M6OlJ1bnRpbWVGbGFncyBydW50
aW1lRmxhZ3MpCitTaGFyZWRXb3JrZXI6OlNoYXJlZFdvcmtlcihEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFVSTCYgdXJsLCBSZWY8TWVzc2FnZVBvcnQ+JiYgcG9ydCkKICAgICA6IEFjdGl2ZURP
TU9iamVjdCgmZG9jdW1lbnQpCisgICAgLCBtX2lkZW50aWZpZXIoU2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKICAgICAsIG1fcG9ydChXVEZNb3ZlKHBvcnQpKQogICAg
ICwgbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yKCJTaGFyZWRXb3JrZXI6IiArIEluc3BlY3Rvcjo6
SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCkpCi0gICAgLCBtX3J1bnRpbWVG
bGFncyhydW50aW1lRmxhZ3MpCi0gICAgLCBtX2NyZWF0aW9uVGltZShNb25vdG9uaWNUaW1lOjpu
b3coKSkKLSAgICAsIG1fcHJveHkoU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZSgqdGhp
cykpCiB7CisgICAgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRygiU2hhcmVkV29ya2VyOiIpOwor
ICAgIGFsbFNoYXJlZFdvcmtlcnMoKS5hZGQobV9pZGVudGlmaWVyLCB0aGlzKTsKKworICAgIC8v
IElmIHRoZSBzaGFyZWQgd29ya2VyIFVSTCBpcyBhIGJsb2IgVVJMLCBtYWtlIHN1cmUgdG8ga2Vl
cCBpdCBhbGl2ZSB1bnRpbCB0aGUgd29ya2VyIGhhcyBmaW5pc2hlZCBsb2FkaW5nLgorICAgIGlm
ICh1cmwucHJvdG9jb2xJc0Jsb2IoKSkKKyAgICAgICAgbV9ibG9iVVJMRXh0ZW5zaW9uID0gdXJs
OwogfQogCiBTaGFyZWRXb3JrZXI6On5TaGFyZWRXb3JrZXIoKQogewotICAgIG1fcHJveHkud29y
a2VyT2JqZWN0RGVzdHJveWVkKCk7CisgICAgQVNTRVJUKGFsbFNoYXJlZFdvcmtlcnMoKS5nZXQo
bV9pZGVudGlmaWVyKSA9PSB0aGlzKTsKKyAgICBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HKCJ+
U2hhcmVkV29ya2VyOiIpOworICAgIGFsbFNoYXJlZFdvcmtlcnMoKS5yZW1vdmUobV9pZGVudGlm
aWVyKTsKKyAgICBBU1NFUlQoIW1faXNBY3RpdmUpOwogfQogCiBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBTaGFyZWRXb3JrZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdApAQCAtMTE0
LDE5ICsxMzksMjkgQEAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgU2hhcmVkV29ya2VyOjpldmVudFRh
cmdldEludGVyZmFjZSgpIGNvbnN0CiAgICAgcmV0dXJuIFNoYXJlZFdvcmtlckV2ZW50VGFyZ2V0
SW50ZXJmYWNlVHlwZTsKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXI6OnN0b3AoKQordm9pZCBTaGFy
ZWRXb3JrZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7
Ci0gICAgdGVybWluYXRlKCk7CisgICAgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRygiZmluaXNo
TG9hZGluZzogc3VjY2Vzcz0lZCIsIGVycm9yLmlzTnVsbCgpKTsKKyAgICBpZiAoIWVycm9yLmlz
TnVsbCgpKSB7CisgICAgICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqdGhpcywgVGFza1Nv
dXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2
ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7Cisg
ICAgICAgIG1faXNBY3RpdmUgPSBmYWxzZTsKKyAgICB9CisgICAgbV9ibG9iVVJMRXh0ZW5zaW9u
LmNsZWFyKCk7CiB9CiAKIGJvb2wgU2hhcmVkV29ya2VyOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2
aXR5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcm94eS5oYXNQZW5kaW5nQWN0aXZpdHkoKSB8
fCBtX2lzTG9hZGluZzsKKyAgICByZXR1cm4gbV9pc0FjdGl2ZTsKIH0KIAotdm9pZCBTaGFyZWRX
b3JrZXI6OnRlcm1pbmF0ZSgpCit2b2lkIFNoYXJlZFdvcmtlcjo6c3RvcCgpCiB7Ci0gICAgbV9w
cm94eS50ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpOworICAgIFNIQVJFRF9XT1JLRVJfUkVM
RUFTRV9MT0coInN0b3A6Iik7CisgICAgbV9pc0FjdGl2ZSA9IGZhbHNlOworICAgIG1haW5UaHJl
YWRDb25uZWN0aW9uKCktPnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KG1faWRlbnRpZmll
cik7CiB9CiAKKyN1bmRlZiBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HCisjdW5kZWYgU0hBUkVE
X1dPUktFUl9SRUxFQVNFX0xPR19FUlJPUgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5oCmluZGV4IGU1NWIxY2Y1
NTEzZC4uYmU1Nzc4MzVhMDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9T
aGFyZWRXb3JrZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yNywzOSArMjcsMzYgQEAKIAogI2luY2x1ZGUgIkFic3RyYWN0V29ya2Vy
LmgiCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvUnVudGltZUZsYWdzLmg+CisjaW5jbHVkZSAiQmxvYlVSTC5oIgorI2luY2x1ZGUgIlNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lc3NhZ2VQb3J0OwotY2xhc3MgU2hh
cmVkV29ya2VyVGhyZWFkUHJveHk7CitjbGFzcyBSZXNvdXJjZUVycm9yOwogCiBzdHJ1Y3QgV29y
a2VyT3B0aW9uczsKIAogY2xhc3MgU2hhcmVkV29ya2VyIGZpbmFsIDogcHVibGljIEFic3RyYWN0
V29ya2VyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEKFNoYXJlZFdvcmtlcik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxT
aGFyZWRXb3JrZXI+PiBjcmVhdGUoRG9jdW1lbnQmLCBKU0M6OlJ1bnRpbWVGbGFncywgU3RyaW5n
JiYgc2NyaXB0VVJMLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxTdHJpbmcsIFdvcmtlck9w
dGlvbnM+PiYmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFNoYXJlZFdvcmtlcj4+IGNy
ZWF0ZShEb2N1bWVudCYsIFN0cmluZyYmIHNjcmlwdFVSTCwgc3RkOjpvcHRpb25hbDxzdGQ6OnZh
cmlhbnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4mJik7CiAgICAgflNoYXJlZFdvcmtlcigpOwog
CisgICAgc3RhdGljIFNoYXJlZFdvcmtlciogZnJvbUlkZW50aWZpZXIoU2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllcik7CisgICAgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBpZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgTWVzc2FnZVBvcnQmIHBv
cnQoKSBjb25zdCB7IHJldHVybiBtX3BvcnQuZ2V0KCk7IH0KLSAgICBKU0M6OlJ1bnRpbWVGbGFn
cyBydW50aW1lRmxhZ3MoKSB7IHJldHVybiBtX3J1bnRpbWVGbGFnczsgfQogCiAgICAgY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyRm9ySW5zcGVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlm
aWVyRm9ySW5zcGVjdG9yOyB9Ci0gICAgTW9ub3RvbmljVGltZSBjcmVhdGlvblRpbWUoKSBjb25z
dCB7IHJldHVybiBtX2NyZWF0aW9uVGltZTsgfQogCi0gICAgU2hhcmVkV29ya2VyVGhyZWFkUHJv
eHkmIHByb3h5KCkgeyByZXR1cm4gbV9wcm94eTsgfQotCi0gICAgdm9pZCBzZXRJc0xvYWRpbmco
Ym9vbCBpc0xvYWRpbmcpIHsgbV9pc0xvYWRpbmcgPSBpc0xvYWRpbmc7IH0KKyAgICB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgLy8gRXZlbnRUYXJn
ZXQuCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0IGZpbmFsOwogCiBwcml2YXRlOgotICAgIFNoYXJlZFdvcmtlcihEb2N1bWVudCYsIFJl
ZjxNZXNzYWdlUG9ydD4mJiwgSlNDOjpSdW50aW1lRmxhZ3MpOwotCi0gICAgdm9pZCB0ZXJtaW5h
dGUoKTsKKyAgICBTaGFyZWRXb3JrZXIoRG9jdW1lbnQmLCBjb25zdCBVUkwmLCBSZWY8TWVzc2Fn
ZVBvcnQ+JiYpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQuCiAgICAgRXZlbnRUYXJnZXRJbnRlcmZh
Y2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbDsKQEAgLTcwLDEyICs2NywxMSBA
QCBwcml2YXRlOgogICAgIGJvb2wgdmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZp
bmFsOwogCiAKKyAgICBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIG1faWRlbnRpZmllcjsK
ICAgICBSZWY8TWVzc2FnZVBvcnQ+IG1fcG9ydDsKICAgICBTdHJpbmcgbV9pZGVudGlmaWVyRm9y
SW5zcGVjdG9yOwotICAgIEpTQzo6UnVudGltZUZsYWdzIG1fcnVudGltZUZsYWdzOwotICAgIE1v
bm90b25pY1RpbWUgbV9jcmVhdGlvblRpbWU7Ci0gICAgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkm
IG1fcHJveHk7IC8vIFRoZSBwcm94eSBvdXRsaXZlcyB0aGUgd29ya2VyIHRvIHBlcmZvcm0gdGhy
ZWFkIHNodXRkb3duLgotICAgIGJvb2wgbV9pc0xvYWRpbmcgeyBmYWxzZSB9OworICAgIEJsb2JV
UkxIYW5kbGUgbV9ibG9iVVJMRXh0ZW5zaW9uOworICAgIGJvb2wgbV9pc0FjdGl2ZSB7IHRydWUg
fTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaWRsCmluZGV4IGIxNzFjOWVkZjgxYi4uNGM3NDE1NGQ4
MjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5p
ZGwKQEAgLTI4LDcgKzI4LDcgQEAKICAgICBFeHBvc2VkPVdpbmRvdwogXQogaW50ZXJmYWNlIFNo
YXJlZFdvcmtlciA6IEV2ZW50VGFyZ2V0IHsKLSAgW0NhbGxXaXRoPURvY3VtZW50JlJ1bnRpbWVG
bGFnc10gY29uc3RydWN0b3IoVVNWU3RyaW5nIHNjcmlwdFVSTCwgb3B0aW9uYWwgKERPTVN0cmlu
ZyBvciBXb3JrZXJPcHRpb25zKSBvcHRpb25zKTsKKyAgW0NhbGxXaXRoPURvY3VtZW50XSBjb25z
dHJ1Y3RvcihVU1ZTdHJpbmcgc2NyaXB0VVJMLCBvcHRpb25hbCAoRE9NU3RyaW5nIG9yIFdvcmtl
ck9wdGlvbnMpIG9wdGlvbnMpOwogCiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZXNzYWdlUG9ydCBw
b3J0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlcktleS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
S2V5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41ZjllNmRjOTBi
YTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXJLZXkuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBTaGFyZWRXb3JrZXJLZXkgeworICAgIFdlYkNv
cmU6OkNsaWVudE9yaWdpbiBvcmlnaW47CisgICAgVVJMIHVybDsKKyAgICBTdHJpbmcgbmFtZTsK
KworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKK307CisKK2lubGluZSB1bnNpZ25lZCBTaGFy
ZWRXb3JrZXJLZXk6Omhhc2goKSBjb25zdAoreworICAgIEhhc2hlciBoYXNoZXI7CisgICAgYWRk
KGhhc2hlciwgb3JpZ2luLmhhc2goKSk7CisgICAgYWRkKGhhc2hlciwgdXJsKTsKKyAgICBhZGQo
aGFzaGVyLCBuYW1lKTsKKyAgICByZXR1cm4gaGFzaGVyLmhhc2goKTsKK30KKworaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRXb3JrZXJLZXkmIGEsIGNvbnN0IFNoYXJlZFdvcmtl
cktleSYgYikKK3sKKyAgICByZXR1cm4gYS5vcmlnaW4gPT0gYi5vcmlnaW4gJiYgYS51cmwgPT0g
Yi51cmwgJiYgYS5uYW1lID09IGIubmFtZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29y
ZTo6U2hhcmVkV29ya2VyS2V5PiB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2Vi
Q29yZTo6U2hhcmVkV29ya2VyS2V5JiBrZXkpCisgICAgeworICAgICAgICByZXR1cm4ga2V5Lmhh
c2goKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJLZXkmIGEsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgYikKKyAgICB7
CisgICAgICAgIHJldHVybiBhID09IGI7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGJvb2wg
c2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307CisKK3RlbXBsYXRlPD4g
c3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5PiA6IEdlbmVyaWNIYXNo
VHJhaXRzPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleT4geworICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0
RGVsZXRlZFZhbHVlKFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgc2xvdCkgeyBuZXcgKE5vdE51
bGwsICZzbG90LnVybCkgVVJMKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQorICAgIHN0
YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYg
c2xvdCkgeyByZXR1cm4gc2xvdC51cmwuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorfTsK
KworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBhNzQxMDg3N2RiMzIuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEw
OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNo
YXJlZFdvcmtlck1hbmFnZXIuaCIKLQotI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5o
IgotI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgot
I2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5o
IgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgiCi0jaW5jbHVk
ZSAiU2hhcmVkV29ya2VyVGhyZWFkLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkUHJv
eHkuaCIKLSNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCi0jaW5jbHVkZSAiV29ya2VyU2NyaXB0
TG9hZGVyLmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8d3Rm
L1J1bkxvb3AuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1TaGFyZWRXb3JrZXJNYW5hZ2Vy
JiBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24oKQotewotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxTaGFyZWRXb3JrZXJNYW5hZ2VyPiBpbnN0YW5jZTsKLSAgICByZXR1cm4gaW5zdGFu
Y2UuZ2V0KCk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyTWFuYWdlcjo6Y29ubmVjdChjb25zdCBV
UkwmIHVybCwgU2hhcmVkV29ya2VyJiB3b3JrZXIsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBt
ZXNzYWdlUG9ydCwgV29ya2VyT3B0aW9ucyYmIG9wdGlvbnMpCi17Ci0gICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKLSAgICAvLyBGSVhNRTogSGFuZGxlIHdvcmtlcnMgZnJvbSBvdGhlciBw
cm9jZXNzZXMsIHdoaWNoIHdpbGwgcHJvYmFibHkgcmVxdWlyZSBtb3ZpbmcgY29ubmVjdCB0byB0
aGUgRnJhbWVMb2FkZXJDbGllbnQgb3Igc29tZXRoaW5nLgotICAgIC8vIE1heWJlIHNvbWV0aGlu
ZyBtb3JlIGxpa2Ugd2hhdCBTZXJ2aWNlV29ya2VycyBkb2VzLgotCi0gICAgLy8gRklYTUU6IENo
ZWNrIGlmIHdlIGFscmVhZHkgbWFkZSBhIHRocmVhZC4KLSAgICAvLyBGSVhNRTogQ2hlY2sgaWYg
dGhlcmUncyBhbHJlYWR5IGEgc2hhcmVkIHdvcmtlciBhbmQgdXNlIHRoYXQgaWYgdGhlcmUgaXMu
Ci0KLSAgICBhdXRvIGxvYWRlciA9IG1ha2VVbmlxdWVSZWY8U2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVyPih1cmwsIHdvcmtlciwgV1RGTW92ZShtZXNzYWdlUG9ydCksIFdURk1vdmUob3B0aW9ucykp
OwotICAgIGF1dG8gaWRlbnRpZmllciA9IGxvYWRlci0+aWRlbnRpZmllcigpOwotICAgIG1fbG9h
ZGVycy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShsb2FkZXIpKTsKLX0KLQotdm9pZCBTaGFyZWRX
b3JrZXJNYW5hZ2VyOjpzY3JpcHRMb2FkRmFpbGVkKFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYg
bG9hZGVyKQotewotICAgIEFjdGl2ZURPTU9iamVjdDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50
KGxvYWRlci53b3JrZXIoKSwgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6
OklzQ2FuY2VsYWJsZTo6WWVzKSk7Ci0gICAgbV9sb2FkZXJzLnJlbW92ZShsb2FkZXIuaWRlbnRp
ZmllcigpKTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzY3JpcHRMb2FkZWRTdWNj
ZXNzZnVsbHkoU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJiBsb2FkZXIsIGNvbnN0IFNjcmlwdEJ1
ZmZlciYgc2NyaXB0QnVmZmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBTaGFyZWRXb3JrZXImIHNoYXJlZFdvcmtlciwgVHJhbnNmZXJyZWRNZXNzYWdl
UG9ydCYmIHRyYW5zZmVycmVkUG9ydCkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwotICAgIGF1dG8mIHdvcmtlciA9IGxvYWRlci53b3JrZXIoKTsKLSAgICBhdXRvJiBvcHRpb25z
ID0gbG9hZGVyLm9wdGlvbnMoKTsKLQotICAgIGF1dG8mIHByb3h5ID0gc2hhcmVkV29ya2VyLnBy
b3h5KCk7Ci0KLSAgICBwcm94eS5zdGFydFdvcmtlckdsb2JhbFNjb3BlKAotICAgICAgICBsb2Fk
ZXIudXJsKCksCi0gICAgICAgIG9wdGlvbnMubmFtZSwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC51c2VyQWdlbnQobG9hZGVyLnVybCgpKSwKLSAgICAgICAgcGxhdGZvcm1TdHJhdGVn
aWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmlzT25MaW5lKCksCi0gICAgICAgIHNjcmlwdEJ1ZmZl
ciwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jb250ZW50U2VjdXJpdHlQb2xpY3ko
KS0+cmVzcG9uc2VIZWFkZXJzKCksCi0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuc2hv
dWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KCksCi0gICAgICAgIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSgpLAotICAgICAgICB3
b3JrZXIuY3JlYXRpb25UaW1lKCksCi0gICAgICAgIFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmlu
ZywKLSAgICAgICAgb3B0aW9ucy50eXBlLAotICAgICAgICBvcHRpb25zLmNyZWRlbnRpYWxzLAot
ICAgICAgICB3b3JrZXIucnVudGltZUZsYWdzKCkKLSAgICApOwotICAgIGlmICghcHJveHkudGhy
ZWFkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oaXM8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsKLSAg
ICBhdXRvIHNvdXJjZU9yaWdpbiA9IGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25D
b250ZXh0KS5zZWN1cml0eU9yaWdpbigpLnRvU3RyaW5nKCk7Ci0KLSAgICBwcm94eS50aHJlYWQo
KS0+cnVuTG9vcCgpLnBvc3RUYXNrKFt0cmFuc2ZlcnJlZFBvcnQgPSBXVEZNb3ZlKHRyYW5zZmVy
cmVkUG9ydCksIHNvdXJjZU9yaWdpbiA9IFdURk1vdmUoc291cmNlT3JpZ2luKS5pc29sYXRlZENv
cHkoKV0gKGF1dG8mIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIG11dGFibGUgewotICAgICAgICBk
b3duY2FzdDxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCku
cG9zdENvbm5lY3RFdmVudChXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCksIHNvdXJjZU9yaWdpbik7
Ci0gICAgfSk7Ci0KLSAgICBtX2xvYWRlcnMucmVtb3ZlKGxvYWRlci5pZGVudGlmaWVyKCkpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCmlu
ZGV4IGRkYTM4NGQyMjkxMi4uMWNkZTBiYTM1OTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
LmNwcApAQCAtMjYsMTAgKzI2LDY2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIgogCisjaW5jbHVkZSAiQWN0aXZlRE9NT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNp
bmNsdWRlICJTY3JpcHRCdWZmZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKKyNpbmNs
dWRlICJTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJGZXRjaFJl
c3VsdC5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNkZWZpbmUgQ09OTkVDVElPTl9SRUxF
QVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKyNkZWZp
bmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJS
T1IoU2hhcmVkV29ya2VyLCAiJXAgLSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjoiIGZt
dCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKworc3RhdGljIHVpbnQ2NF90IGxvYWRlcklkZW50aWZp
ZXJTZWVkID0gMDsKKwogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6U2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbigpID0gZGVmYXVsdDsKIAogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbjo6flNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CiAKK3ZvaWQg
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6ZmV0Y2hTY3JpcHRJbkNsaWVudChVUkwmJiB1
cmwsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllciwgV29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byogd29ya2VyT2Jq
ZWN0ID0gU2hhcmVkV29ya2VyOjpmcm9tSWRlbnRpZmllcihzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyKTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJmZXRjaFNjcmlwdEluQ2xpZW50
OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMsIHdvcmtlcj0lcCIsIHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB3b3Jr
ZXJPYmplY3QpOworICAgIGlmICghd29ya2VyT2JqZWN0KQorICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIod29ya2VyRmV0Y2hFcnJvcihSZXNvdXJjZUVycm9yIHsgUmVzb3VyY2VFcnJv
cjo6VHlwZTo6Q2FuY2VsbGF0aW9uIH0pKTsKKworICAgIGF1dG8gbG9hZGVySWRlbnRpZmllciA9
ICsrbG9hZGVySWRlbnRpZmllclNlZWQ7CisgICAgYXV0byBsb2FkZXIgPSBtYWtlVW5pcXVlUmVm
PFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj4oV1RGTW92ZSh1cmwpLCAqd29ya2VyT2JqZWN0LCBX
VEZNb3ZlKHdvcmtlck9wdGlvbnMpKTsKKyAgICBhdXRvIGxvYWRlclB0ciA9IGxvYWRlci5wdHIo
KTsKKyAgICBtX2xvYWRlcnMuYWRkKGxvYWRlcklkZW50aWZpZXIsIFdURk1vdmUobG9hZGVyKSk7
CisKKyAgICBsb2FkZXJQdHItPmxvYWQoW3RoaXMsIGxvYWRlcklkZW50aWZpZXIsIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IFdvcmtlckZldGNo
UmVzdWx0JiBmZXRjaFJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIENPTk5FQ1RJT05fUkVMRUFT
RV9MT0coImZldGNoU2NyaXB0SW5DbGllbnQ6IGZpbmlzaGVkIHNjcmlwdCBsb2FkLCBzdWNjZXNz
PSVkIiwgZmV0Y2hSZXN1bHQuZXJyb3IuaXNOdWxsKCkpOworICAgICAgICBhdXRvIGxvYWRlciA9
IG1fbG9hZGVycy50YWtlKGxvYWRlcklkZW50aWZpZXIpOworICAgICAgICBBU1NFUlQobG9hZGVy
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmV0Y2hSZXN1bHQpOworICAgIH0pOworfQor
Cit2b2lkIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Om5vdGlmeVdvcmtlck9iamVjdE9m
TG9hZENvbXBsZXRpb24oV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8qIHdvcmtlck9iamVjdCA9IFNo
YXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7
CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUigibm90aWZ5V29ya2VyT2JqZWN0T2ZM
b2FkQ29tcGxldGlvbjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zLCB3
b3JrZXI9JXAsIHN1Y2Nlc3M9JWQiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSwgd29ya2VyT2JqZWN0LCBlcnJvci5pc051bGwoKSk7CisgICAg
aWYgKHdvcmtlck9iamVjdCkKKyAgICAgICAgd29ya2VyT2JqZWN0LT5kaWRGaW5pc2hMb2FkaW5n
KGVycm9yKTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpwb3N0RXhj
ZXB0aW9uVG9Xb3JrZXJPYmplY3QoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQorewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgYXV0byogd29ya2VyT2JqZWN0ID0gU2hh
cmVkV29ya2VyOjpmcm9tSWRlbnRpZmllcihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsK
KyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKCJwb3N0RXhjZXB0aW9uVG9Xb3JrZXJP
YmplY3Q6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cywgd29ya2VyPSVw
Iiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCks
IHdvcmtlck9iamVjdCk7CisgICAgaWYgKHdvcmtlck9iamVjdCkKKyAgICAgICAgQWN0aXZlRE9N
T2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKndvcmtlck9iamVjdCwgVGFza1NvdXJj
ZTo6RE9NTWFuaXB1bGF0aW9uLCBFcnJvckV2ZW50OjpjcmVhdGUoZXJyb3JNZXNzYWdlLCBzb3Vy
Y2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgeyB9KSk7Cit9CisKKyN1bmRlZiBDT05O
RUNUSU9OX1JFTEVBU0VfTE9HCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUgor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKaW5kZXggNGVk
NWExYzY1YjU4Li45NTZiNDczNGExMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKQEAgLTI1
LDIyICsyNSwzOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0LmgiCisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hh
cmVkV29ya2VyOworY2xhc3MgTWVzc2FnZVBvcnQ7CitjbGFzcyBTaGFyZWRXb3JrZXJTY3JpcHRM
b2FkZXI7CisKK3N0cnVjdCBDbGllbnRPcmlnaW47CitzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7
CiBzdHJ1Y3QgV29ya2VyT3B0aW9uczsKIAogY2xhc3MgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24+IHsK
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5TaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFNoYXJlZFdvcmtlcihjb25z
dCBVUkwmLCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdvcmtlck9w
dGlvbnMmJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0
IENsaWVudE9yaWdpbiYsIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFVSTCYs
IFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgY29uc3QgV29ya2VyT3B0aW9ucyYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoU2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllcikgPSAwOwogCiBwcm90ZWN0ZWQ6CisgICAgLy8gSVBDIG1lc3NhZ2Vz
LgorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmV0Y2hTY3JpcHRJbkNsaWVudChVUkwmJiwgV2Vi
Q29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV29ya2VyT3B0aW9ucyYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdvcmtlckZldGNoUmVzdWx0Jik+JiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihXZWJD
b3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoU2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7
CisKICAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCk7CisK
K3ByaXZhdGU6CisgICAgSGFzaE1hcDx1aW50NjRfdCwgVW5pcXVlUmVmPFNoYXJlZFdvcmtlclNj
cmlwdExvYWRlcj4+IG1fbG9hZGVyczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIuaApzaW1pbGFyaXR5IGluZGV4IDU5JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmgKcmVuYW1lIHRvIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaAppbmRl
eCAyNTIxODE2ZTY1YzcuLmViY2Q0YTdhZTg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMjkgKzI1LDEyIEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiTWVzc2FnZVBvcnRJZGVudGlmaWVyLmgiCisj
aW5jbHVkZSAiUHJvY2Vzc1F1YWxpZmllZC5oIgorI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlm
aWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKLWNsYXNzIFNoYXJlZFdvcmtlcjsKLWNsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRl
cjsKLWNsYXNzIFNjcmlwdEJ1ZmZlcjsKLXN0cnVjdCBXb3JrZXJPcHRpb25zOwotdXNpbmcgVHJh
bnNmZXJyZWRNZXNzYWdlUG9ydCA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50
aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllcj47Ci0KLXVzaW5nIFNoYXJlZFdv
cmtlclNjcmlwdExvYWRlcklkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFNoYXJlZFdvcmtl
clNjcmlwdExvYWRlcj47Ci0KLWNsYXNzIFNoYXJlZFdvcmtlck1hbmFnZXIgewotcHVibGljOgot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTaGFyZWRXb3JrZXJNYW5hZ2VyJiBzaW5nbGV0b24o
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbm5lY3QoY29uc3QgVVJMJiwgU2hhcmVkV29y
a2VyJiwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBXb3JrZXJPcHRpb25zJiYpOwotCi0gICAg
dm9pZCBzY3JpcHRMb2FkRmFpbGVkKFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYpOwotICAgIHZv
aWQgc2NyaXB0TG9hZGVkU3VjY2Vzc2Z1bGx5KFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYsIGNv
bnN0IFNjcmlwdEJ1ZmZlciYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBTaGFyZWRXb3JrZXIm
LCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYpOwotCi1wcml2YXRlOgotICAgIEhhc2hNYXA8U2hh
cmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmllciwgVW5pcXVlUmVmPFNoYXJlZFdvcmtlclNj
cmlwdExvYWRlcj4+IG1fbG9hZGVyczsKLX07CitlbnVtIFNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgPSBQcm9j
ZXNzUXVhbGlmaWVkPE9iamVjdElkZW50aWZpZXI8U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
clR5cGU+PjsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAKaW5k
ZXggMzExZWJkNjA3OGJjLi5lYTJlMDQ4Yzc2MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwy
MyArMjksMjYgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCi0jaW5jbHVkZSAi
U2hhcmVkV29ya2VyTWFuYWdlci5oIgorI2luY2x1ZGUgIldvcmtlckZldGNoUmVzdWx0LmgiCiAj
aW5jbHVkZSAiV29ya2VyUnVuTG9vcC5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hh
cmVkV29ya2VyU2NyaXB0TG9hZGVyKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRXb3JrZXImIHdvcmtl
ciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBvcnQsIFdvcmtlck9wdGlvbnMmJiBvcHRpb25z
KQotICAgIDogbV9pZGVudGlmaWVyKFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcklkZW50aWZpZXI6
OmdlbmVyYXRlKCkpCi0gICAgLCBtX29wdGlvbnMoV1RGTW92ZShvcHRpb25zKSkKK1NoYXJlZFdv
cmtlclNjcmlwdExvYWRlcjo6U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyKFVSTCYmIHVybCwgU2hh
cmVkV29ya2VyJiB3b3JrZXIsIFdvcmtlck9wdGlvbnMmJiBvcHRpb25zKQorICAgIDogbV9vcHRp
b25zKFdURk1vdmUob3B0aW9ucykpCiAgICAgLCBtX3dvcmtlcih3b3JrZXIpCi0gICAgLCBtX3Bv
cnQoV1RGTW92ZShwb3J0KSkKICAgICAsIG1fbG9hZGVyKFdvcmtlclNjcmlwdExvYWRlcjo6Y3Jl
YXRlKCkpCi0gICAgLCBtX3BlbmRpbmdBY3Rpdml0eSh3b3JrZXIubWFrZVBlbmRpbmdBY3Rpdml0
eSh3b3JrZXIpKQotICAgICwgbV91cmwodXJsKQorICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQog
ewotICAgIG1fd29ya2VyLT5zZXRJc0xvYWRpbmcodHJ1ZSk7Ci0gICAgbV9sb2FkZXItPmxvYWRB
c3luY2hyb25vdXNseSgqd29ya2VyLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgUmVzb3VyY2VS
ZXF1ZXN0KHVybCksIHdvcmtlci53b3JrZXJGZXRjaE9wdGlvbnMob3B0aW9ucywgRmV0Y2hPcHRp
b25zOjpEZXN0aW5hdGlvbjo6U2hhcmVkd29ya2VyKSwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5m
b3JjZW1lbnQ6OkVuZm9yY2VXb3JrZXJTcmNEaXJlY3RpdmUsIFNlcnZpY2VXb3JrZXJzTW9kZTo6
QWxsLCAqdGhpcywgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7Cit9CisKK3ZvaWQgU2hh
cmVkV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
V29ya2VyRmV0Y2hSZXN1bHQmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQo
IW1fY29tcGxldGlvbkhhbmRsZXIpOworICAgIG1fY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIG1fbG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHko
Km1fd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFJlc291cmNlUmVxdWVzdChtX3Vy
bCksIG1fd29ya2VyLT53b3JrZXJGZXRjaE9wdGlvbnMobV9vcHRpb25zLCBGZXRjaE9wdGlvbnM6
OkRlc3RpbmF0aW9uOjpTaGFyZWR3b3JrZXIpLCBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNl
bWVudDo6RW5mb3JjZVdvcmtlclNyY0RpcmVjdGl2ZSwgU2VydmljZVdvcmtlcnNNb2RlOjpBbGws
ICp0aGlzLCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKIH0KIAogdm9pZCBTaGFyZWRX
b3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCkBAIC01NSwxNiArNTgs
MTIgQEAgdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnQKIAogdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRM
b2FkZXI6Om5vdGlmeUZpbmlzaGVkKCkKIHsKLSAgICBtX3dvcmtlci0+c2V0SXNMb2FkaW5nKGZh
bHNlKTsKKyAgICBpZiAobV9sb2FkZXItPmZhaWxlZCgpKQorICAgICAgICByZXR1cm4gbV9jb21w
bGV0aW9uSGFuZGxlcih3b3JrZXJGZXRjaEVycm9yKG1fbG9hZGVyLT5lcnJvcigpKSk7CiAKLSAg
ICBhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKLSAgICBpZiAobV9sb2FkZXItPmZhaWxlZCgpIHx8ICFzY3JpcHRFeGVjdXRp
b25Db250ZXh0KSB7Ci0gICAgICAgIG1fd29ya2VyLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6
SXNDYW5jZWxhYmxlOjpZZXMpKTsKLSAgICAgICAgU2hhcmVkV29ya2VyTWFuYWdlcjo6c2luZ2xl
dG9uKCkuc2NyaXB0TG9hZEZhaWxlZCgqdGhpcyk7IC8vIGRlbGV0ZXMgdGhpcy4KLSAgICB9IGVs
c2UgeworICAgIGlmIChhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbV93b3JrZXItPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpzY3JpcHRJbXBvcnRlZCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgbV9sb2FkZXItPmlkZW50
aWZpZXIoKSwgbV9sb2FkZXItPnNjcmlwdCgpLnRvU3RyaW5nKCkpOwotICAgICAgICBTaGFyZWRX
b3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5zY3JpcHRMb2FkZWRTdWNjZXNzZnVsbHkoKnRoaXMs
IG1fbG9hZGVyLT5zY3JpcHQoKSwgKm1fd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IG1fd29ya2VyLmdldCgpLCBzdGQ6OmV4Y2hhbmdlKG1fcG9ydCwgeyB9KSk7IC8vIGRlbGV0ZXMg
dGhpcy4KLSAgICB9CisgICAgbV9jb21wbGV0aW9uSGFuZGxlcih7IG1fbG9hZGVyLT5zY3JpcHQo
KSwgbV9sb2FkZXItPmNlcnRpZmljYXRlSW5mbygpLCBtX2xvYWRlci0+Y29udGVudFNlY3VyaXR5
UG9saWN5KCksIG1fbG9hZGVyLT5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KCksIG1fbG9hZGVy
LT5yZWZlcnJlclBvbGljeSgpLCB7IH0gfSk7IC8vIGRlbGV0ZXMgdGhpcy4KIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaAppbmRleCBhYjMwOWExY2VmYjYuLmViMGI3
MTQ1YmZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0SWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVySWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKQEAgLTM4LDMyICszNywyOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFNoYXJlZFdvcmtlcjsKIGNsYXNzIFdvcmtlclNjcmlwdExvYWRlcjsK
LQotY2xhc3MgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOwotCi11c2luZyBUcmFuc2ZlcnJlZE1l
c3NhZ2VQb3J0ID0gc3RkOjpwYWlyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciwgV2Vi
Q29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyPjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsK
IAogY2xhc3MgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyIDogcHJpdmF0ZSBXb3JrZXJTY3JpcHRM
b2FkZXJDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcihjb25zdCBVUkwmLCBTaGFyZWRXb3JrZXImLCBUcmFu
c2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdvcmtlck9wdGlvbnMmJik7CisgICAgU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyKFVSTCYmLCBTaGFyZWRXb3JrZXImLCBXb3JrZXJPcHRpb25zJiYpOworCisg
ICAgdm9pZCBsb2FkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1
bHQmKT4mJik7CiAKLSAgICBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBjb25zdCBVUkwmIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgU2hhcmVkV29ya2VyJiB3b3JrZXIoKSB7
IHJldHVybiBtX3dvcmtlci5nZXQoKTsgfQotICAgIGNvbnN0IFdvcmtlck9wdGlvbnMmIG9wdGlv
bnMoKSB7IHJldHVybiBtX29wdGlvbnM7IH0KKyAgICBjb25zdCBXb3JrZXJPcHRpb25zJiBvcHRp
b25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZCgpIGZpbmFsOwogCi0g
ICAgY29uc3QgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7
CiAgICAgY29uc3QgV29ya2VyT3B0aW9ucyBtX29wdGlvbnM7CiAgICAgY29uc3QgUmVmPFNoYXJl
ZFdvcmtlcj4gbV93b3JrZXI7Ci0gICAgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBtX3BvcnQ7CiAg
ICAgY29uc3QgUmVmPFdvcmtlclNjcmlwdExvYWRlcj4gbV9sb2FkZXI7Ci0gICAgY29uc3QgUmVm
PEFjdGl2ZURPTU9iamVjdDo6UGVuZGluZ0FjdGl2aXR5PFNoYXJlZFdvcmtlcj4+IG1fcGVuZGlu
Z0FjdGl2aXR5OwogICAgIGNvbnN0IFVSTCBtX3VybDsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFdvcmtlckZldGNoUmVzdWx0Jik+IG1fY29tcGxldGlvbkhhbmRsZXI7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDdhOTBkOTgw
NTEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29u
dGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKQEAgLTAsMCArMSwxMTQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXIuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTaGFyZWRX
b3JrZXJUaHJlYWRQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyJiBTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI+IHNoYXJlZE1hbmFnZXI7CisgICAgcmV0
dXJuIHNoYXJlZE1hbmFnZXI7Cit9CisKK1NoYXJlZFdvcmtlclRocmVhZFByb3h5KiBTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlcjo6c2hhcmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIg
c2hhcmVkV29ya2VySWRlbnRpZmllcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV93b3JrZXJNYXAu
Z2V0KHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyOjpzdG9wU2hhcmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVk
V29ya2VySWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHdvcmtlciA9IG1fd29ya2VyTWFwLnRha2Uo
c2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0b3BTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtl
cklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlcklkZW50aWZp
ZXIudG9VSW50NjQoKSwgd29ya2VyLmdldCgpKTsKKyAgICBpZiAoIXdvcmtlcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgd29ya2VyLT5zZXRBc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKCk7CisK
KyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gZGVhbCB3aXRoIHRoZSB0aHJlYWQg
YmVpbmcgdW5yZXNwb25zaXZlIGhlcmUuCisKKyAgICBhdXRvJiB0aHJlYWQgPSB3b3JrZXItPnRo
cmVhZCgpOworICAgIHRocmVhZC5zdG9wKFt3b3JrZXIgPSBXVEZNb3ZlKHdvcmtlcildKCkgbXV0
YWJsZSB7CisgICAgICAgIC8vIFNwaW4gdGhlIHJ1bmxvb3AgYmVmb3JlIHJlbGVhc2luZyB0aGUg
c2hhcmVkIHdvcmtlciB0aHJlYWQgcHJveHksIGFzIHRoZXJlIHdvdWxkIG90aGVyd2lzZSBiZQor
ICAgICAgICAvLyBhIHJhY2UgdG93YXJkcyBpdHMgZGVzdHJ1Y3Rpb24uCisgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW3dvcmtlciA9IFdURk1vdmUod29ya2VyKV0geyB9KTsKKyAgICB9KTsKK30K
Kwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c3RvcEFsbFNoYXJlZFdvcmtlcnMo
KQoreworICAgIHdoaWxlICghbV93b3JrZXJNYXAuaXNFbXB0eSgpKQorICAgICAgICBzdG9wU2hh
cmVkV29ya2VyKG1fd29ya2VyTWFwLmJlZ2luKCktPmtleSk7Cit9CisKK3ZvaWQgU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXI6OnNldENvbm5lY3Rpb24oc3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rp
b24+JiYgY29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbiB8fCBtX2Nvbm5l
Y3Rpb24tPmlzQ2xvc2VkKCkpOworICAgIG1fY29ubmVjdGlvbiA9IFdURk1vdmUoY29ubmVjdGlv
bik7Cit9CisKK2F1dG8gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OmNvbm5lY3Rpb24oKSBj
b25zdCAtPiBDb25uZWN0aW9uKgoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7Cit9
CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnJlZ2lzdGVyU2hhcmVkV29ya2Vy
VGhyZWFkKFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4mJiBwcm94eSkKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpyZWdpc3RlclNoYXJlZFdvcmtlclRocmVhZDogc2hhcmVk
V29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHByb3h5LT5pZGVudGlmaWVyKCkudG9VSW50NjQo
KSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IG1fd29ya2VyTWFwLmFkZChwcm94eS0+aWRlbnRpZmll
cigpLCBwcm94eS5jb3B5UmVmKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQu
aXNOZXdFbnRyeSk7CisKKyAgICBwcm94eS0+dGhyZWFkKCkuc3RhcnQoW10oY29uc3QgU3RyaW5n
JiAvKmV4Y2VwdGlvbk1lc3NhZ2UqLykgeyB9KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVudChTaGFyZWRXb3JrZXJJZGVu
dGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiB0
cmFuc2ZlcnJlZFBvcnQsIFN0cmluZyYmIHNvdXJjZU9yaWdpbikKK3sKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIGF1dG8qIHByb3h5ID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXI6OnNpbmdsZXRvbigpLnNoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKKyAg
ICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6
Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVudDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQ
Ukl1NjQgIiwgcHJveHk9JXAiLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCksIHBy
b3h5KTsKKyAgICBpZiAoIXByb3h5KQorICAgICAgICByZXR1cm47CisKKyAgICBwcm94eS0+dGhy
ZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFt0cmFuc2ZlcnJlZFBvcnQgPSBXVEZNb3ZlKHRyYW5z
ZmVycmVkUG9ydCksIHNvdXJjZU9yaWdpbiA9IFdURk1vdmUoc291cmNlT3JpZ2luKS5pc29sYXRl
ZENvcHkoKV0gKGF1dG8mIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIG11dGFibGUgeworICAgICAg
ICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgZG93bmNhc3Q8U2hhcmVkV29ya2Vy
R2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnBvc3RDb25uZWN0RXZlbnQoV1RG
TW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBXVEZNb3ZlKHNvdXJjZU9yaWdpbikpOworICAgIH0pOwor
fQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uOjp0ZXJtaW5h
dGVTaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlm
aWVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgUkVMRUFTRV9MT0coU2hh
cmVkV29ya2VyLCAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb246OnRlcm1p
bmF0ZVNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJl
ZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXI6OnNpbmdsZXRvbigpLnN0b3BTaGFyZWRXb3JrZXIoc2hhcmVkV29ya2VySWRlbnRpZmll
cik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjMzODI1
Mjg5MzczZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaApAQCAtMCwwICsxLDc3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJJZGVudGlm
aWVyLmgiCisjaW5jbHVkZSAiVHJhbnNmZXJyZWRNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHk7CisKK2NsYXNzIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyIHsKK3B1Ymxp
YzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIm
IHNpbmdsZXRvbigpOworCisgICAgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkqIHNoYXJlZFdvcmtl
cihTaGFyZWRXb3JrZXJJZGVudGlmaWVyKSBjb25zdDsKKyAgICB2b2lkIHN0b3BTaGFyZWRXb3Jr
ZXIoU2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9w
QWxsU2hhcmVkV29ya2VycygpOworCisgICAgY2xhc3MgQ29ubmVjdGlvbiB7CisgICAgICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+Q29u
bmVjdGlvbigpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbihD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBv
c3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMKSA9IDA7CisgICAgICAgIGJvb2wgaXNDbG9zZWQoKSBjb25z
dCB7IHJldHVybiBtX2lzQ2xvc2VkOyB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZvaWQg
c2V0QXNDbG9zZWQoKSB7IG1faXNDbG9zZWQgPSB0cnVlOyB9CisKKyAgICAgICAgLy8gSVBDIG1l
c3NhZ2UgaGFuZGxlcnMuCisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdENvbm5lY3RF
dmVudChTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFN0
cmluZyYmIHNvdXJjZU9yaWdpbik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdGVybWlu
YXRlU2hhcmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworCisgICAgcHJpdmF0ZToK
KyAgICAgICAgYm9vbCBtX2lzQ2xvc2VkIHsgZmFsc2UgfTsKKyAgICB9OworCisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb25uZWN0aW9uKiBjb25uZWN0aW9uKCkgY29uc3Q7CisK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZ2lzdGVyU2hhcmVkV29ya2VyVGhyZWFkKFJlZjxT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eT4mJik7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNz
IE5ldmVyRGVzdHJveWVkPFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyPjsKKworICAgIFNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyKCkgPSBkZWZhdWx0OworCisgICAgc3RkOjp1bmlxdWVfcHRy
PENvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBIYXNoTWFwPFNoYXJlZFdvcmtlcklkZW50
aWZpZXIsIFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4+IG1fd29ya2VyTWFwOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcApp
bmRleCA5YmQ5NzgzZDdhN2UuLjFlZGY3MzRmZjI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJl
YWRQcm94eS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjgsOTQgKzI4LDcyIEBACiAKICNpbmNsdWRlICJDYWNoZVN0b3JhZ2VQcm92
aWRlci5oIgogI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIK
ICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJG
cmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCisjaW5jbHVkZSAi
TG9hZGVyU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKICNpbmNsdWRlICJN
ZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9u
LmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXIuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oIgogI2lu
Y2x1ZGUgIlNoYXJlZFdvcmtlclRocmVhZC5oIgorI2luY2x1ZGUgIldvcmtlckZldGNoUmVzdWx0
LmgiCisjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SWRlbnRpZmllcnNGYWN0b3J5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkV29y
a2VyVGhyZWFkUHJveHk6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5KFNoYXJlZFdvcmtlciYgc2hh
cmVkV29ya2VyKQotICAgIDogbV9zaGFyZWRXb3JrZXIoc2hhcmVkV29ya2VyKQotICAgICwgbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KHNoYXJlZFdvcmtlci5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpCi0gICAgLCBtX2lkZW50aWZpZXJGb3JJbnNwZWN0b3Ioc2hhcmVkV29ya2VyLmlkZW50aWZp
ZXJGb3JJbnNwZWN0b3IoKSkKK3N0YXRpYyBIYXNoU2V0PFNoYXJlZFdvcmtlclRocmVhZFByb3h5
Kj4mIGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKQogeworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxIYXNoU2V0PFNoYXJlZFdvcmtlclRocmVhZFByb3h5Kj4+IHNldDsKKyAgICByZXR1
cm4gc2V0OwogfQogCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpzdGFydFdvcmtlckds
b2JhbFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50LCBib29sIGlzT25saW5lLCBjb25zdCBTY3JpcHRCdWZmZXImIHNj
cmlwdEJ1ZmZlciwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBj
b250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsIGJvb2wgc2hvdWxkQnlwYXNzTWFp
bldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBDcm9zc09yaWdpbkVtYmVkZGVyUG9s
aWN5JiBjcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4s
IFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHdvcmtlclR5cGUsIEZl
dGNoUmVxdWVzdENyZWRlbnRpYWxzIGNyZWRlbnRpYWxzLCBKU0M6OlJ1bnRpbWVGbGFncyBydW50
aW1lRmxhZ3MpCitzdGF0aWMgV29ya2VyUGFyYW1ldGVycyBnZW5lcmF0ZVdvcmtlclBhcmFtZXRl
cnMoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFdvcmtlckZldGNoUmVzdWx0JiB3b3JrZXJG
ZXRjaFJlc3VsdCwgV29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMsIGNvbnN0IFN0cmluZyYg
dXNlckFnZW50LCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1p
bmF0ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBwYXJhbWV0ZXJzID0gV29ya2VyUGFy
YW1ldGVycyB7CisgICAgcmV0dXJuIFdvcmtlclBhcmFtZXRlcnMgewogICAgICAgICBzY3JpcHRV
UkwsCi0gICAgICAgIG5hbWUsCi0gICAgICAgIG1faWRlbnRpZmllckZvckluc3BlY3RvciwKKyAg
ICAgICAgd29ya2VyT3B0aW9ucy5uYW1lLAorICAgICAgICAic2hhcmVkd29ya2VyOiIgKyBJbnNw
ZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpLAogICAgICAgICB1
c2VyQWdlbnQsCi0gICAgICAgIGlzT25saW5lLAotICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnMsCi0gICAgICAgIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRT
ZWN1cml0eVBvbGljeSwKLSAgICAgICAgY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwKLSAgICAg
ICAgdGltZU9yaWdpbiwKLSAgICAgICAgcmVmZXJyZXJQb2xpY3ksCi0gICAgICAgIHdvcmtlclR5
cGUsCi0gICAgICAgIGNyZWRlbnRpYWxzLAotICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPnNldHRpbmdzVmFsdWVzKCkKKyAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRl
clN0cmF0ZWd5KCktPmlzT25MaW5lKCksCisgICAgICAgIHdvcmtlckZldGNoUmVzdWx0LmNvbnRl
bnRTZWN1cml0eVBvbGljeSwKKyAgICAgICAgZmFsc2UsCisgICAgICAgIHdvcmtlckZldGNoUmVz
dWx0LmNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ksCisgICAgICAgIE1vbm90b25pY1RpbWU6Om5v
dygpLAorICAgICAgICBwYXJzZVJlZmVycmVyUG9saWN5KHdvcmtlckZldGNoUmVzdWx0LnJlZmVy
cmVyUG9saWN5LCBSZWZlcnJlclBvbGljeVNvdXJjZTo6SFRUUEhlYWRlcikudmFsdWVfb3IoUmVm
ZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nKSwKKyAgICAgICAgd29ya2VyT3B0aW9ucy50eXBlLAor
ICAgICAgICB3b3JrZXJPcHRpb25zLmNyZWRlbnRpYWxzLAorICAgICAgICBkb2N1bWVudC5zZXR0
aW5nc1ZhbHVlcygpCiAgICAgfTsKLQotICAgIGlmICghbV93b3JrZXJUaHJlYWQpIHsKLSAgICAg
ICAgbV93b3JrZXJUaHJlYWQgPSBTaGFyZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZShTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBwYXJhbWV0ZXJzLCBzY3JpcHRCdWZmZXIsICp0aGlz
LCAqdGhpcywgKnRoaXMsIFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPnRvcE9yaWdpbigpLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlk
YkNvbm5lY3Rpb25Qcm94eSgpLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNvY2tldFByb3Zp
ZGVyKCksIHJ1bnRpbWVGbGFncyk7Ci0gICAgICAgIG1fd29ya2VyVGhyZWFkLT5zdGFydCgpOwot
ICAgIH0KLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6dGVybWluYXRlV29ya2Vy
R2xvYmFsU2NvcGUoKQotewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIG1fYXNrZWRUb1Rlcm1pbmF0ZSA9IHRydWU7Ci0gICAgaWYgKG1fd29ya2Vy
VGhyZWFkKQotICAgICAgICBtX3dvcmtlclRocmVhZC0+c3RvcChudWxscHRyKTsKIH0KIAotdm9p
ZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3Bl
KE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSkKK1NoYXJlZFdvcmtlclRocmVhZFBy
b3h5OjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShVbmlxdWVSZWY8UGFnZT4mJiBwYWdlLCBTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IENsaWVudE9y
aWdpbiYgY2xpZW50T3JpZ2luLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgV29ya2VyRmV0Y2hSZXN1
bHQmJiB3b3JrZXJGZXRjaFJlc3VsdCwgV29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50LCBDYWNoZVN0b3JhZ2VQcm92aWRlciYgY2FjaGVTdG9yYWdl
UHJvdmlkZXIpCisgICAgOiBtX3BhZ2UoV1RGTW92ZShwYWdlKSkKKyAgICAsIG1fZG9jdW1lbnQo
Km1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKKyAgICAsIG1fd29ya2VyVGhyZWFkKFNo
YXJlZFdvcmtlclRocmVhZDo6Y3JlYXRlKHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGdlbmVyYXRl
V29ya2VyUGFyYW1ldGVycyhzY3JpcHRVUkwsIHdvcmtlckZldGNoUmVzdWx0LCBXVEZNb3ZlKHdv
cmtlck9wdGlvbnMpLCB1c2VyQWdlbnQsIG1fZG9jdW1lbnQpLCBXVEZNb3ZlKHdvcmtlckZldGNo
UmVzdWx0LnNjcmlwdCksICp0aGlzLCAqdGhpcywgKnRoaXMsIFdvcmtlclRocmVhZFN0YXJ0TW9k
ZTo6Tm9ybWFsLCBjbGllbnRPcmlnaW4udG9wT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCksIG1fZG9j
dW1lbnQtPmlkYkNvbm5lY3Rpb25Qcm94eSgpLCBtX2RvY3VtZW50LT5zb2NrZXRQcm92aWRlcigp
LCBKU0M6OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpKSkKKyAgICAsIG1fY2FjaGVT
dG9yYWdlUHJvdmlkZXIoY2FjaGVTdG9yYWdlUHJvdmlkZXIpCiB7Ci0gICAgLy8gRklYTUU6IFNo
YXJlZFdvcmtlciBkb2Vzbid0IGhhdmUgcG9zdE1lc3NhZ2UsIHNvIHRoaXMgbWlnaHQgbm90IGJl
IG5lY2Vzc2FyeS4KLSAgICBwb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUoW21lc3NhZ2UgPSBX
VEZNb3ZlKG1lc3NhZ2UpXShhdXRvJiBzY3JpcHRDb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAg
YXV0byYgY29udGV4dCA9IGRvd25jYXN0PFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRD
b250ZXh0KTsKLSAgICAgICAgYXV0byBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRz
KHNjcmlwdENvbnRleHQsIFdURk1vdmUobWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRzKSk7Ci0gICAg
ICAgIGNvbnRleHQuZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBv
cnRzKSwgbWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxsKCkpKTsKLSAgICB9KTsKLX0KKyAg
ICBBU1NFUlQoIWFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKS5jb250YWlucyh0aGlzKSk7
CisgICAgYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGllcygpLmFkZCh0aGlzKTsKIAotdm9pZCBT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1bmN0
aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiYmIHRhc2spCi17Ci0gICAgaWYgKG1f
YXNrZWRUb1Rlcm1pbmF0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fd29ya2VyVGhyZWFkLT5y
dW5Mb29wKCkucG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7Ci19Ci0KLWJvb2wgU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHk6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
aGFzUGVuZGluZ0FjdGl2aXR5ICYmICFtX2Fza2VkVG9UZXJtaW5hdGU7CisgICAgc3RhdGljIGJv
b2wgYWRkZWRMaXN0ZW5lcjsKKyAgICBpZiAoIWFkZGVkTGlzdGVuZXIpIHsKKyAgICAgICAgcGxh
dGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmFkZE9ubGluZVN0YXRlQ2hhbmdl
TGlzdGVuZXIoJm5ldHdvcmtTdGF0ZUNoYW5nZWQpOworICAgICAgICBhZGRlZExpc3RlbmVyID0g
dHJ1ZTsKKyAgICB9CiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Ondvcmtlck9i
amVjdERlc3Ryb3llZCgpCitTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6flNoYXJlZFdvcmtlclRo
cmVhZFByb3h5KCkKIHsKLSAgICBtX3NoYXJlZFdvcmtlciA9IG51bGxwdHI7Ci0gICAgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpc10gKGF1dG8mKSB7Ci0gICAgICAgIG1f
bWF5QmVEZXN0cm95ZWQgPSB0cnVlOwotICAgICAgICBpZiAobV93b3JrZXJUaHJlYWQpCi0gICAg
ICAgICAgICB0ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZEludGVybmFsKCk7Ci0gICAgfSk7Cisg
ICAgQVNTRVJUKGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKS5jb250YWlucyh0aGlzKSk7
CisgICAgYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGllcygpLnJlbW92ZSh0aGlzKTsKIH0KIAog
U2hhcmVkV29ya2VySWRlbnRpZmllciBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6aWRlbnRpZmll
cigpIGNvbnN0CkBAIC0xMjUsODggKzEwMyw1MCBAQCBTaGFyZWRXb3JrZXJJZGVudGlmaWVyIFNo
YXJlZFdvcmtlclRocmVhZFByb3h5OjppZGVudGlmaWVyKCkgY29uc3QKIAogdm9pZCBTaGFyZWRX
b3JrZXJUaHJlYWRQcm94eTo6bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUp
CiB7Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKKyAgICBpZiAobV9pc1Rlcm1pbmF0aW5n
T3JUZXJtaW5hdGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fd29ya2VyVGhyZWFk
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RU
YXNrKFtpc09ubGluZV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICBw
b3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFtpc09ubGluZV0gKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgYXV0byYgZ2xvYmFsU2Nv
cGUgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCk7CiAgICAgICAgIGdsb2Jh
bFNjb3BlLnNldElzT25saW5lKGlzT25saW5lKTsKLSAgICAgICAgZ2xvYmFsU2NvcGUuZGlzcGF0
Y2hFdmVudChFdmVudDo6Y3JlYXRlKGlzT25saW5lID8gZXZlbnROYW1lcygpLm9ubGluZUV2ZW50
IDogZXZlbnROYW1lcygpLm9mZmxpbmVFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50
OjpJc0NhbmNlbGFibGU6Ok5vKSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHk6OnN1c3BlbmRGb3JCYWNrRm9yd2FyZENhY2hlKCkKLXsKLQotfQotCi12b2lkIFNo
YXJlZFdvcmtlclRocmVhZFByb3h5OjpyZXN1bWVGb3JCYWNrRm9yd2FyZENhY2hlKCkKLXsKLQor
ICAgICAgICBnbG9iYWxTY29wZS5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6RE9N
TWFuaXB1bGF0aW9uLCBbZ2xvYmFsU2NvcGUgPSBSZWYgeyBnbG9iYWxTY29wZSB9LCBpc09ubGlu
ZV0geworICAgICAgICAgICAgZ2xvYmFsU2NvcGUtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0
ZShpc09ubGluZSA/IGV2ZW50TmFtZXMoKS5vbmxpbmVFdmVudCA6IGV2ZW50TmFtZXMoKS5vZmZs
aW5lRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykp
OworICAgICAgICB9KTsKKyAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKIH0K
IAogdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2Jq
ZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7Ci0gICAgbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5wb3N0VGFzayhbdGhpcywgZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlLmlz
b2xhdGVkQ29weSgpLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCksIGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlcl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0gICAgICAg
IGlmICghbV9zaGFyZWRXb3JrZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8g
V2UgZG9uJ3QgYm90aGVyIGNoZWNraW5nIHRoZSBhc2tlZFRvVGVybWluYXRlKCkgZmxhZyBoZXJl
LCBiZWNhdXNlIGV4Y2VwdGlvbnMgc2hvdWxkICphbHdheXMqIGJlIHJlcG9ydGVkIGV2ZW4gaWYg
dGhlIHRocmVhZCBpcyB0ZXJtaW5hdGVkLgotICAgICAgICAvLyBUaGlzIGlzIGludGVudGlvbmFs
bHkgZGlmZmVyZW50IHRoYW4gdGhlIGJlaGF2aW9yIGluIE1lc3NhZ2VXb3JrZXJUYXNrLCBiZWNh
dXNlIHRlcm1pbmF0ZWQgd29ya2VycyBubyBsb25nZXIgZGVsaXZlciBtZXNzYWdlcyAoc2VjdGlv
biA0LjYgb2YgdGhlIFdlYldvcmtlciBzcGVjKSwgYnV0IHRoZXkgZG8gcmVwb3J0IGV4Y2VwdGlv
bnMuCi0gICAgICAgIEFjdGl2ZURPTU9iamVjdDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCpt
X3NoYXJlZFdvcmtlciwgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFcnJvckV2ZW50Ojpj
cmVhdGUoZXJyb3JNZXNzYWdlLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
eyB9KSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Ondvcmtl
ckdsb2JhbFNjb3BlRGVzdHJveWVkKCkKLXsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PnBvc3RUYXNrKFt0aGlzXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKLSAgICAgICAgd29y
a2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpOwotICAgIH0pOwotfQotCi12b2lkIFNo
YXJlZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzJiYpCi17Ci0KLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eTo6Y29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wpCi17Ci19Ci0KLXZvaWQgU2hh
cmVkV29ya2VyVGhyZWFkUHJveHk6OnJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGhhc1BlbmRp
bmdBY3Rpdml0eSkKLXsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFt0
aGlzLCBoYXNQZW5kaW5nQWN0aXZpdHldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewotICAg
ICAgICBtX2hhc1BlbmRpbmdBY3Rpdml0eSA9IGhhc1BlbmRpbmdBY3Rpdml0eTsKKyAgICBjYWxs
T25NYWluVGhyZWFkKFtzaGFyZWRXb3JrZXJJZGVudGlmaWVyID0gbV93b3JrZXJUaHJlYWQtPmlk
ZW50aWZpZXIoKSwgZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlLmlzb2xhdGVkQ29weSgpLCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCA9IHNvdXJjZVVSTC5pc29sYXRlZENv
cHkoKV0geworICAgICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IFNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCisgICAgICAgICAgICBjb25uZWN0
aW9uLT5wb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qoc2hhcmVkV29ya2VySWRlbnRpZmllciwg
ZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCk7CiAgICAg
fSk7CiB9CiAKIFJlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eTo6Y3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKLSAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pigq
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICByZXR1cm4gZG9jdW1lbnQucGFnZSgpLT5j
YWNoZVN0b3JhZ2VQcm92aWRlcigpLmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKTsKKyAg
ICBpZiAoIW1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbikKKyAgICAgICAgbV9jYWNoZVN0b3JhZ2VD
b25uZWN0aW9uID0gbV9jYWNoZVN0b3JhZ2VQcm92aWRlci5jcmVhdGVDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uKCk7CisgICAgcmV0dXJuIG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKIH0KIAogUmVm
UHRyPFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24+IFNoYXJlZFdvcmtlclRo
cmVhZFByb3h5OjpjcmVhdGVSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCkK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8mIGRvY3VtZW50ID0gZG93
bmNhc3Q8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIGlmICghZG9j
dW1lbnQucGFnZSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gZG9jdW1l
bnQucGFnZSgpLT5saWJXZWJSVENQcm92aWRlcigpLmNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3Rl
SGFuZGxlckNvbm5lY3Rpb24oKTsKKyAgICByZXR1cm4gbV9wYWdlLT5saWJXZWJSVENQcm92aWRl
cigpLmNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24oKTsKIH0KIAog
dm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tUb0xvYWRlcihTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykKIHsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPnBvc3RUYXNrKFdURk1vdmUodGFzaykpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Rhc2sg
PSBXVEZNb3ZlKHRhc2spLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgbXV0YWJs
ZSB7CisgICAgICAgIHRhc2sucGVyZm9ybVRhc2socHJvdGVjdGVkVGhpcy0+bV9kb2N1bWVudC5n
ZXQoKSk7CisgICAgfSk7CiB9CiAKIGJvb2wgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RU
YXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzayYmIHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKLSAgICBpZiAobV9hc2tl
ZFRvVGVybWluYXRlKQorICAgIGlmIChtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRh
c2tGb3JNb2RlKFdURk1vdmUodGFzayksIG1vZGUpOwpAQCAtMjIzLDE2ICsxNjMsMTAgQEAgdm9p
ZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdl
Ykluc3BlY3Rvcihib29sKQogCiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Ondv
cmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwoKQordm9pZCBTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eTo6bmV0d29ya1N0YXRlQ2hhbmdlZChib29sIGlzT25MaW5lKQogewotICAgIC8vIFRo
aXMgaXMgYWx3YXlzIHRoZSBsYXN0IHRhc2sgdG8gYmUgcGVyZm9ybWVkLCBzbyB0aGUgcHJveHkg
aXMgbm90IG5lZWRlZCBmb3IgY29tbXVuaWNhdGlvbgotICAgIC8vIGluIGVpdGhlciBzaWRlIGFu
eSBtb3JlLiBIb3dldmVyLCB0aGUgV29ya2VyIG9iamVjdCBtYXkgc3RpbGwgZXhpc3QsIGFuZCBp
dCBhc3N1bWVzIHRoYXQgdGhlIHByb3h5IGV4aXN0cywgdG9vLgotICAgIG1fYXNrZWRUb1Rlcm1p
bmF0ZSA9IHRydWU7Ci0gICAgbV93b3JrZXJUaHJlYWQgPSBudWxscHRyOwotCi0gICAgLy8gVGhp
cyBiYWxhbmNlcyB0aGUgb3JpZ2luYWwgcmVmIGluIGNvbnN0cnVjdGlvbi4KLSAgICBpZiAobV9t
YXlCZURlc3Ryb3llZCkKLSAgICAgICAgZGVyZWYoKTsKKyAgICBmb3IgKGF1dG8qIHByb3h5IDog
YWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGllcygpKQorICAgICAgICBwcm94eS0+bm90aWZ5TmV0
d29ya1N0YXRlQ2hhbmdlKGlzT25MaW5lKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRX
b3JrZXJUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4
dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oCmluZGV4IDRlOTJlNDU2MTcxYy4uMzM2NDI0MGFi
YmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1No
YXJlZFdvcmtlclRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2lu
Y2x1ZGUgIlNoYXJlZFdvcmtlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXb3JrZXJEZWJ1Z2dl
clByb3h5LmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIgogI2luY2x1ZGUg
IldvcmtlckxvYWRlclByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyT2JqZWN0UHJveHkuaCIKICNp
bmNsdWRlICJXb3JrZXJPcHRpb25zLmgiCkBAIC0zNSw1MCArMzQsNTQgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBDYWNoZVN0b3JhZ2VQcm92aWRlcjsKK2NsYXNzIFBhZ2U7CiBj
bGFzcyBTaGFyZWRXb3JrZXI7CiBjbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWQ7CiAKLWNsYXNzIFNo
YXJlZFdvcmtlclRocmVhZFByb3h5IGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFNoYXJlZFdvcmtlclRocmVhZFByb3h5PiwgcHVibGljIFdvcmtlckdsb2JhbFNjb3BlUHJveHks
IHB1YmxpYyBXb3JrZXJPYmplY3RQcm94eSwgcHVibGljIFdvcmtlckxvYWRlclByb3h5LCBwdWJs
aWMgV29ya2VyRGVidWdnZXJQcm94eSB7CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworc3RydWN0IFdv
cmtlckZldGNoUmVzdWx0OworCitjbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSBmaW5hbCA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4sIHB1
YmxpYyBXb3JrZXJPYmplY3RQcm94eSwgcHVibGljIFdvcmtlckxvYWRlclByb3h5LCBwdWJsaWMg
V29ya2VyRGVidWdnZXJQcm94eSB7CiBwdWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4g
QXJncz4gc3RhdGljIFNoYXJlZFdvcmtlclRocmVhZFByb3h5JiBjcmVhdGUoQXJncyYmLi4uIGFy
Z3MpIHsgcmV0dXJuICpuZXcgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkoc3RkOjpmb3J3YXJkPEFy
Z3M+KGFyZ3MpLi4uKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBS
ZWY8U2hhcmVkV29ya2VyVGhyZWFkUHJveHk+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIH5TaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eSgpOwogCiAgICAgU2hhcmVkV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Q7
Ci0gICAgU2hhcmVkV29ya2VyVGhyZWFkKiB0aHJlYWQoKSB7IHJldHVybiBtX3dvcmtlclRocmVh
ZC5nZXQoKTsgfQorICAgIFNoYXJlZFdvcmtlclRocmVhZCYgdGhyZWFkKCkgeyByZXR1cm4gbV93
b3JrZXJUaHJlYWQ7IH0KIAotICAgIHZvaWQgc3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBV
UkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCwgYm9vbCBpc09ubGluZSwgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VDb2RlLCBjb25zdCBD
b250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBib29sIHNob3VsZEJ5cGFzc01h
aW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgQ3Jvc3NPcmlnaW5FbWJlZGRlclBv
bGljeSYsIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5
cGUsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzLCBKU0M6OlJ1bnRpbWVGbGFncykgZmluYWw7Ci0g
ICAgdm9pZCB3b3JrZXJPYmplY3REZXN0cm95ZWQoKSBmaW5hbDsKLSAgICBib29sIGhhc1BlbmRp
bmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgdGVybWluYXRlV29ya2VyR2xvYmFs
U2NvcGUoKSBmaW5hbDsKKyAgICBib29sIGlzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKSBjb25z
dCB7IHJldHVybiBtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQ7IH0KKyAgICB2b2lkIHNldEFz
VGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKSB7IG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCA9
IHRydWU7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eShTaGFyZWRXb3JrZXImKTsKLQotICAgIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJ
bnRlcm5hbCgpOworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZFdvcmtlclRocmVhZFByb3h5KFVu
aXF1ZVJlZjxQYWdlPiYmLCBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmln
aW4mLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgV29ya2VyRmV0Y2hSZXN1bHQmJiwgV29ya2VyT3B0
aW9ucyYmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImKTsK
IAotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzJiYpIGZpbmFsOwotICAgIHZvaWQgcG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3Bl
KEZ1bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiYmKSBmaW5hbDsKLSAgICB2
b2lkIG5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25saW5lKSBmaW5hbDsKLSAgICB2
b2lkIHN1c3BlbmRGb3JCYWNrRm9yd2FyZENhY2hlKCkgZmluYWw7Ci0gICAgdm9pZCByZXN1bWVG
b3JCYWNrRm9yd2FyZENhY2hlKCkgZmluYWw7CisgICAgLy8gV29ya2VyT2JqZWN0UHJveHkuCiAg
ICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCkgZmluYWw7Ci0gICAgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgpIGZp
bmFsOwotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlV2l0aE1lc3Nh
Z2VQb3J0cyYmKSBmaW5hbDsKLSAgICB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVj
dChib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkgZmluYWw7Ci0gICAgdm9pZCByZXBvcnRQZW5kaW5n
QWN0aXZpdHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpIGZpbmFsOworICAgIHZvaWQgcG9zdE1l
c3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKSBmaW5hbCB7IH0K
KyAgICB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkKCkgZmluYWwgeyB9CisgICAgdm9p
ZCBjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCkgZmluYWwgeyB9CisgICAgdm9p
ZCByZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCkgZmluYWwgeyB9CisKKyAgICAvLyBXb3JrZXJM
b2FkZXJQcm94eS4KICAgICBSZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gY3JlYXRlQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbigpIGZpbmFsOwogICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5lbFJl
bW90ZUhhbmRsZXJDb25uZWN0aW9uPiBjcmVhdGVSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJD
b25uZWN0aW9uKCkgZmluYWw7CiAgICAgdm9pZCBwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2smJikgZmluYWw7CiAgICAgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiwg
Y29uc3QgU3RyaW5nJiBtb2RlKSBmaW5hbDsKKworICAgIC8vIFdvcmtlckRlYnVnZ2VyUHJveHku
CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvRGVidWdnZXIoY29uc3QgU3RyaW5nJikgZmluYWw7CiAg
ICAgdm9pZCBzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yKGJvb2wpIGZp
bmFsOwogCi0gICAgV2Vha1B0cjxTaGFyZWRXb3JrZXI+IG1fc2hhcmVkV29ya2VyOwotICAgIFJl
ZlB0cjxTaGFyZWRXb3JrZXJUaHJlYWQ+IG1fd29ya2VyVGhyZWFkOwotICAgIGNvbnN0IFJlZlB0
cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0gICAg
Y29uc3QgU3RyaW5nIG1faWRlbnRpZmllckZvckluc3BlY3RvcjsKLSAgICBib29sIG1fYXNrZWRU
b1Rlcm1pbmF0ZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2hhc1BlbmRpbmdBY3Rpdml0eSB7IGZh
bHNlIH07Ci0gICAgYm9vbCBtX21heUJlRGVzdHJveWVkIHsgZmFsc2UgfTsKKyAgICBzdGF0aWMg
dm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKGJvb2wgaXNPbkxpbmUpOworICAgIHZvaWQgbm90aWZ5
TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpOworCisgICAgVW5pcXVlUmVmPFBhZ2U+
IG1fcGFnZTsKKyAgICBSZWY8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CisgICAgUmVmPFNoYXJlZFdv
cmtlclRocmVhZD4gbV93b3JrZXJUaHJlYWQ7CisgICAgQ2FjaGVTdG9yYWdlUHJvdmlkZXImIG1f
Y2FjaGVTdG9yYWdlUHJvdmlkZXI7CisgICAgUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+
IG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKKyAgICBib29sIG1faXNUZXJtaW5hdGluZ09yVGVy
bWluYXRlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxp
c3RzLnR4dAppbmRleCA3NTZkYTg4YjQ1ZjcuLjI5ZjRjNzgxODE4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMu
dHh0CkBAIC0yOCw2ICsyOCw3IEBAIHNldChXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAg
ICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMiCiAgICAgIiR7V0VC
S0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiCiAgICAgIiR7
V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlciIKKyAgICAiJHtXRUJLSVRf
RElSfS9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZSIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vz
cy9jYWNoZSIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlIgpAQCAt
MjAyLDYgKzIwMyw5IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKICAgICBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbgogICAgIE5ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCiAKKyAg
ICBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbgorICAgIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uCisKICAgICBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VNYW5hZ2VyU2V0CiAKICAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uCkBAIC0zMDUsNiArMzA5LDggQEAgc2V0KFdlYktpdF9NRVNTQUdFU19J
Tl9GSUxFUwogCiAgICAgV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGlt
ZU1lZGlhU291cmNlTWFuYWdlcgogCisgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbgorICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uCiAgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q2xpZW50Q29ubmVjdGlvbgogICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3QKaW5kZXggNGM2NjIyMGNmMTIyLi43MjI5YzFiOTg3MDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTkxLDYgKzkxLDggQEAg
JChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RG93bmxvYWRUYXNrLm1lc3NhZ2VzLmkKICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElS
KS9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29y
a2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJT
ZXQubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdv
cmtQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluCkBAIC0y
MTcsNiArMjE5LDggQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1NwZWVjaC9TcGVlY2hS
ZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyQo
UFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2Vi
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2Vi
QXV0aG5Qcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggZTNiNTU4NDBhZTFlLi5hODYzMjgx
NDdiNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxl
bGlzdApAQCAtNjA3LDYgKzYwNywxOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0L1dlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcwogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2Vz
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25N
ZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25N
ZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dl
YlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bk1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQv
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNvY2tldENo
YW5uZWxNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0L1dlYlNvY2tldENoYW5uZWxNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNvY2tldENoYW5uZWxNZXNzYWdlc1JlcGxp
ZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDdhZDQ5ZTM3MzVmNC4uMzUxZmZh
ZTBhNTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysr
IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xMzMsNiArMTMzLDggQEAg
TUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRG93bmxvYWRUYXNrIFwKIAlOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJGZXRjaFRhc2sgXAogCU5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIFwKKwlOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbiBcCisJTmV0d29ya1Byb2Nlc3MvU2hh
cmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gXAogCU5l
dHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0gXAogCU5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzIFwKIAlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIgXApAQCAt
MjI1LDYgKzIyNyw4IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vz
cy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlciBcCisJ
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
biBcCisJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24g
XAogCVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBcCiAJ
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYTM0Zjc5YmRlM2Uw
Li5jN2IxN2ZkNzA3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC02Niw2ICs2
NiwxMSBAQAogI2luY2x1ZGUgIldlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXIuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
LmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBD
b29raWVBY2NlcHRQb2xpY3kuaD4KQEAgLTEzMiw2ICsxMzcsNyBAQCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nl
c3MmIG5ldAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBlc3RhYmxpc2hTV1NlcnZl
ckNvbm5lY3Rpb24oKTsKICNlbmRpZgorICAgIGVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb24oKTsKIH0KIAogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpCkBAIC0xNjYsNiArMTcyLDcgQEAgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6On5OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNl
bmRpZgorICAgIHVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiB9CiAKIHZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhhc1VwbG9hZFN0YXRlQ2hhbmdlZChib29s
IGhhc1VwbG9hZCkKQEAgLTI3NSw2ICsyODIsMTcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW8K
ICAgICB9CiAjZW5kaWYKIAorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpKSB7CisgICAgICAgIGlmIChtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisgICAg
ICAgICAgICBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGlm
IChtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKQorICAgICAgICAgICAgbV9zaGFyZWRX
b3JrZXJDb250ZXh0Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JF
TU9URV9VSSkKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2Fn
ZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpCiAg
ICAgICAgIHJldHVybiBwYXltZW50Q29vcmRpbmF0b3IoKS5kaWRSZWNlaXZlTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyKTsKQEAgLTM5OCw5ICs0MTYsOCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9
IG51bGxwdHI7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICNlbmRpZgor
ICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwogCiAgICAgLy8g
UHJvdGVjdCBvdXJzZWxmIGFzIHdlIG1pZ2h0IGJlIG90aGVyd2lzZSBiZSBkZWxldGVkIGR1cmlu
ZyB0aGlzIGZ1bmN0aW9uLgogICAgIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4g
cHJvdGVjdG9yKCp0aGlzKTsKQEAgLTQ0MSw2ICs0NTgsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsK
ICNlbmRpZgorICAgIHVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiAKICNpZiBF
TkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKICAgICBtX3BheW1lbnRDb29yZGluYXRvciA9IG51
bGxwdHI7CkBAIC0xMTg2LDYgKzEyMDQsNjEgQEAgc2l6ZV90IE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpmaW5kTmV0d29ya0FjdGl2aXR5VHJhY2tlcihXZWJDb3JlOjpSZXNvdXIKICAg
ICAgICAgcmV0dXJuIGl0ZW0ucmVzb3VyY2VJRCA9PSByZXNvdXJjZUlEOwogICAgIH0pOwogfQor
Cit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTaGFyZWRXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhT
aGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbjoiKTsK
KyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsKKyAgICBpZiAoYXV0byogc3dT
ZXJ2ZXIgPSBzZXNzaW9uID8gc2Vzc2lvbi0+c2hhcmVkV29ya2VyU2VydmVyKCkgOiBudWxscHRy
KQorICAgICAgICBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPigqdGhpcywgV1RGTW92ZShy
ZWdpc3RyYWJsZURvbWFpbiksICpzd1NlcnZlcik7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
K30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbigpCit7CisgICAgaWYgKG1fc2hhcmVkV29ya2VyQ29ubmVj
dGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNz
aW9uKCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBDT05ORUNU
SU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb246Iik7CisKKyAgICBhdXRvJiBzZXJ2ZXIgPSBzZXNzaW9uLT5lbnN1cmVTaGFy
ZWRXb3JrZXJTZXJ2ZXIoKTsKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29ya1Byb2Nlc3MsIHNlcnZlciwgbV9j
b25uZWN0aW9uLmdldCgpLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsKKworICAgIG1fc2hhcmVk
V29ya2VyQ29ubmVjdGlvbiA9ICpjb25uZWN0aW9uOworICAgIHNlcnZlci5hZGRDb25uZWN0aW9u
KFdURk1vdmUoY29ubmVjdGlvbikpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKCkKK3sKKyAgICBDT05O
RUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImNsb3NlU2hhcmVkV29ya2VyQ29udGV4
dENvbm5lY3Rpb246Iik7CisgICAgbV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IG51
bGxwdHI7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0
ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9H
KFNoYXJlZFdvcmtlciwgInVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uOiIpOworICAg
IGlmIChtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAgIG1fc2hhcmVkV29ya2VyQ29u
bmVjdGlvbi0+c2VydmVyKCkucmVtb3ZlQ29ubmVjdGlvbihtX3NoYXJlZFdvcmtlckNvbm5lY3Rp
b24tPndlYlByb2Nlc3NJZGVudGlmaWVyKCkpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpzaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xv
bmdlck5lZWRlZCgpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIs
ICJzaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZDoi
KTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvbk5vTG9uZ2VyTmVlZGVkIHsgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKKworICAg
IG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOworfQorCitXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
c2hhcmVkV29ya2VyQ29ubmVjdGlvbigpCit7CisgICAgaWYgKCFtX3NoYXJlZFdvcmtlckNvbm5l
Y3Rpb24pCisgICAgICAgIGVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oKTsK
KyAgICByZXR1cm4gbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uLmdldCgpOworfQogICAgIAogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4
IGFiOTY2NTdkMGRmNC4uZDBhYTRlZjc0NTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBA
IC05Miw2ICs5Miw4IEBAIGNsYXNzIE5ldHdvcmtTb2NrZXRTdHJlYW07CiBjbGFzcyBTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwogY2xhc3MgV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b247CiAKIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogc3RydWN0IERhdGFLZXk7CkBAIC0xODUs
NiArMTg3LDkgQEAgcHVibGljOgogICAgIFdlYlNXU2VydmVyQ29ubmVjdGlvbiogc3dDb25uZWN0
aW9uKCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IGNyZWF0
ZUZldGNoVGFzayhOZXR3b3JrUmVzb3VyY2VMb2FkZXImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKTsKICNlbmRpZgorICAgIHZvaWQgc2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKTsKKworICAgIFdlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb24qIHNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKIAogICAgIE5ldHdvcmtTY2hl
bWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkoKSB7IHJldHVybiBtX3NjaGVtZVJlZ2lzdHJ5Lmdl
dCgpOyB9CiAKQEAgLTI1Myw2ICsyNTgsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlU29j
a2V0Q2hhbm5lbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcm
IHByb3RvY29sLCBXZWJDb3JlOjpXZWJTb2NrZXRJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKICAgICB2b2lkIHVwZGF0ZVF1
b3RhQmFzZWRPblNwYWNlVXNhZ2VGb3JUZXN0aW5nKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYpOwogCisgICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCk7
CisgICAgdm9pZCB1bnJlZ2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOworCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9u
KCk7CiAgICAgdm9pZCBlc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdl
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTI2MCw2ICsyNjgs
OSBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5yZWdpc3RlclNXQ29ubmVjdGlvbigpOwogI2VuZGlm
CiAKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBjbG9zZVNoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uKCk7CisKICAgICB2b2lkIGNyZWF0ZVJUQ1Byb3ZpZGVyKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgdm9pZCBjb25uZWN0VG9S
VENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZp
ZXIgc291cmNlLCBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgaGFuZGxlciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPGJvb2w+KT4mJik7CkBAIC00MDQsNiAr
NDE1LDggQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4gbV9z
d0Nvbm5lY3Rpb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbj4gbV9zd0NvbnRleHRDb25uZWN0aW9uOwogI2VuZGlmCisgICAgV2Vha1B0cjxXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uPiBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb247Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24+IG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb247CiAKICNpZiBFTkFCTEUoV0VCX1JU
QykKICAgICBib29sIG1faXNSZWdpc3RlcmVkVG9SVENEYXRhQ2hhbm5lbFByb3h5IHsgZmFsc2Ug
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDI0Mjgz
NTA1MGIyNC4uYjk3Y2EzNDc5YjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KQEAgLTg4LDYgKzg4LDkgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIENsb3NlU1dDb250ZXh0Q29ubmVj
dGlvbigpCiAjZW5kaWYKIAorICAgIEVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0
aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKSAtPiAoKSBBc3luYworICAgIENsb3NlU2hhcmVk
V29ya2VyQ29udGV4dENvbm5lY3Rpb24oKQorCiAgICAgQ3JlYXRlUlRDUHJvdmlkZXIoKSAtPiAo
KSBBc3luYwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIENvbm5lY3RUb1JUQ0RhdGFDaGFubmVs
UmVtb3RlU291cmNlKHN0cnVjdCBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgc291
cmNlLCBzdHJ1Y3QgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGhhbmRsZXIpIC0+
IChzdGQ6Om9wdGlvbmFsPGJvb2w+IHJlc3VsdCkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggZTJiMjRkODMyMmI2Li5kNzYx
NjI4NTBjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb24uY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJTV09yaWdp
blN0b3JlLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgiCiAjaW5jbHVkZSAi
V2ViU29ja2V0VGFzay5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llSmFyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KQEAgLTY1Myw2ICs2NTQsMTMgQEAgYm9vbCBO
ZXR3b3JrU2Vzc2lvbjo6aGFzU2VydmljZVdvcmtlckRhdGFiYXNlUGF0aCgpIGNvbnN0CiAKICNl
bmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKK1dlYlNoYXJlZFdvcmtlclNlcnZlciYg
TmV0d29ya1Nlc3Npb246OmVuc3VyZVNoYXJlZFdvcmtlclNlcnZlcigpCit7CisgICAgaWYgKCFt
X3NoYXJlZFdvcmtlclNlcnZlcikKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJTZXJ2ZXIgPSBtYWtl
VW5pcXVlPFdlYlNoYXJlZFdvcmtlclNlcnZlcj4oKnRoaXMpOworICAgIHJldHVybiAqbV9zaGFy
ZWRXb3JrZXJTZXJ2ZXI7Cit9CisKIFdlYklEQlNlcnZlciYgTmV0d29ya1Nlc3Npb246OmVuc3Vy
ZVdlYklEQlNlcnZlcigpCiB7CiAgICAgaWYgKCFtX3dlYklEQlNlcnZlcikgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDE5MzA3Y2Y0MGJl
My4uM2Y5ZDZjOTU1MGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5oCkBAIC03OSw2ICs3OSw3IEBAIGNsYXNzIFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s7CiBjbGFzcyBXZWJJREJTZXJ2ZXI7CiBjbGFzcyBXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnM7
CiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU7CitjbGFzcyBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXI7CiBjbGFzcyBXZWJTb2NrZXRUYXNrOwogY2xhc3MgV2ViU1dPcmlnaW5TdG9y
ZTsKIGNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKQEAgLTIxMCw2ICsyMTEsOSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihib29sIHByb2Nlc3NUZXJtaW5h
dGlvbkRlbGF5RW5hYmxlZCwgU3RyaW5nJiYgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CiAjZW5kaWYKIAorICAgIFdl
YlNoYXJlZFdvcmtlclNlcnZlciogc2hhcmVkV29ya2VyU2VydmVyKCkgeyByZXR1cm4gbV9zaGFy
ZWRXb3JrZXJTZXJ2ZXIuZ2V0KCk7IH0KKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIGVuc3Vy
ZVNoYXJlZFdvcmtlclNlcnZlcigpOworCiAgICAgV2ViSURCU2VydmVyKiB3ZWJJREJTZXJ2ZXIo
KSB7IHJldHVybiBtX3dlYklEQlNlcnZlci5nZXQoKTsgfQogICAgIFdlYklEQlNlcnZlciYgZW5z
dXJlV2ViSURCU2VydmVyKCk7CiAgICAgdm9pZCBjbG9zZUlEQlNlcnZlcihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwpAQCAtMzE4LDYgKzMyMiw3IEBAIHByb3RlY3RlZDoKICAgICBzdGQ6
Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJJbmZvPiBtX3NlcnZpY2VXb3JrZXJJbmZvOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTV1NlcnZlcj4gbV9zd1NlcnZlcjsKICNlbmRpZgorICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI+IG1fc2hhcmVkV29ya2VyU2Vy
dmVyOwogCiAgICAgU3RyaW5nIG1faWRiRGF0YWJhc2VQYXRoOwogICAgIFJlZlB0cjxXZWJJREJT
ZXJ2ZXI+IG1fd2ViSURCU2VydmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41OWFjYTAwMTViZTAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdv
cmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwCkBAIC0wLDAgKzEsMzAwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZl
ci5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgi
CisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0
d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
LmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
IgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU2hhcmVkV29ya2VyU2VydmVyOjpXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXIoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24pCisgICAgOiBtX3Nlc3Npb24o
c2Vzc2lvbikKK3sKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVyOjp+V2ViU2hhcmVkV29ya2Vy
U2VydmVyKCkgPSBkZWZhdWx0OworCitQQUw6OlNlc3Npb25JRCBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXI6OnNlc3Npb25JRCgpCit7CisgICAgcmV0dXJuIG1fc2Vzc2lvbi5zZXNzaW9uSUQoKTsKK30K
Kwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFVSTCYmIHVybCwgV2ViQ29yZTo6
VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBvcnQsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJiB3
b3JrZXJPcHRpb25zKQoreworICAgIFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSBrZXkgeyBvcmln
aW4sIHVybCwgd29ya2VyT3B0aW9ucy5uYW1lIH07CisgICAgYXV0byYgc2hhcmVkV29ya2VyID0g
bV9zaGFyZWRXb3JrZXJzLmVuc3VyZShrZXksIFsmXSB7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFNoYXJlZFdvcmtlcj4ob3JpZ2luLCB1cmwsIHdvcmtlck9wdGlvbnMpOworICAgIH0pLml0
ZXJhdG9yLT52YWx1ZTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXI9JXtwcml2YXRlfXMsIHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgc2hhcmVk
V29ya2VyLT5pZGVudGlmaWVyLnRvVUludDY0KCkpOworCisgICAgaWYgKHNoYXJlZFdvcmtlci0+
d29ya2VyT3B0aW9ucy50eXBlICE9IHdvcmtlck9wdGlvbnMudHlwZSB8fCBzaGFyZWRXb3JrZXIt
Pndvcmtlck9wdGlvbnMuY3JlZGVudGlhbHMgIT0gd29ya2VyT3B0aW9ucy5jcmVkZW50aWFscykg
eworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6IEEgd29ya2VyIGFscmVhZHkgZXhpc3RzIHdp
dGggdGhpcyBuYW1lIGJ1dCBoYXMgZGlmZmVyZW50IHR5cGUgLyBjcmVkZW50aWFscyIpOworICAg
ICAgICBpZiAoYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSkpCisgICAgICAgICAg
ICBzZXJ2ZXJDb25uZWN0aW9uLT5ub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHsgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6VHlw
ZTo6QWNjZXNzQ29udHJvbCB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNoYXJl
ZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5hZGQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciwgcG9ydCk7CisKKyAgICBpZiAoc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3Rz
LnNpemUoKSA+IDEpIHsKKyAgICAgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hh
cmVkV29ya2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyOiBBIHNoYXJlZCB3b3JrZXIgd2l0
aCB0aGlzIFVSTCBhbHJlYWR5IGV4aXN0cyAobm93IHNoYXJlZCBieSAldSBzaGFyZWQgd29ya2Vy
IG9iamVjdHMpIiwgc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzLnNpemUoKSk7Cisg
ICAgICAgIGlmIChzaGFyZWRXb3JrZXItPmRpZEZpbmlzaEZldGNoaW5nKCkpIHsKKyAgICAgICAg
ICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkKKyAgICAgICAgICAg
ICAgICBzZXJ2ZXJDb25uZWN0aW9uLT5ub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9u
KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHsgfSk7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKHNoYXJlZFdvcmtlci0+aXNSdW5uaW5nKSB7CisgICAgICAgICAgICBhdXRvKiBjb250ZXh0
Q29ubmVjdGlvbiA9IG1fY29udGV4dENvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXItPnJlZ2lz
dHJhYmxlRG9tYWluKCkpOworICAgICAgICAgICAgQVNTRVJUKGNvbnRleHRDb25uZWN0aW9uKTsK
KyAgICAgICAgICAgIGlmIChjb250ZXh0Q29ubmVjdGlvbikKKyAgICAgICAgICAgICAgICBwb3N0
Q29ubmVjdEV2ZW50KCpjb250ZXh0Q29ubmVjdGlvbiwgc2hhcmVkV29ya2VyLT5pZGVudGlmaWVy
LCBwb3J0LCBvcmlnaW4uY2xpZW50T3JpZ2luLnRvU3RyaW5nKCkpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUKCFzaGFyZWRXb3JrZXItPmlzUnVubmluZyk7
CisKKyAgICBhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlQo
c2VydmVyQ29ubmVjdGlvbik7CisKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6IEZldGNoaW5nIHNoYXJlZCB3
b3JrZXIgc2NyaXB0IGluIGNsaWVudCIpOworICAgIHNlcnZlckNvbm5lY3Rpb24tPmZldGNoU2Ny
aXB0SW5DbGllbnQodXJsLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCB3b3JrZXJPcHRp
b25zLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgc2hhcmVkV29ya2VyID0gV2Vha1B0
ciB7ICpzaGFyZWRXb3JrZXIgfV0oV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJiBmZXRjaFJl
c3VsdCkgeworICAgICAgICBpZiAod2Vha1RoaXMgJiYgc2hhcmVkV29ya2VyKQorICAgICAgICAg
ICAgd2Vha1RoaXMtPmRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29ya2VyU2NyaXB0KCpzaGFyZWRX
b3JrZXIsIFdURk1vdmUoZmV0Y2hSZXN1bHQpKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6OmxhdW5jaFNoYXJlZFdvcmtlcihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbiwgU2hhcmVkV29ya2VyJiBzaGFy
ZWRXb3JrZXIpCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29y
a2VyU2VydmVyOjpsYXVuY2hTaGFyZWRXb3JrZXI6IGNvbnRleHRDb25uZWN0aW9uPSVwLCBzaGFy
ZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgJmNvbnRleHRDb25uZWN0aW9uLCBzaGFyZWRX
b3JrZXIuaWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBjb250ZXh0Q29ubmVjdGlvbi5sYXVu
Y2hTaGFyZWRXb3JrZXIoc2hhcmVkV29ya2VyLm9yaWdpbiwgc2hhcmVkV29ya2VyLmlkZW50aWZp
ZXIsIHNoYXJlZFdvcmtlci51cmwsIHNoYXJlZFdvcmtlci53b3JrZXJPcHRpb25zLCBzaGFyZWRX
b3JrZXIuZmV0Y2hSZXN1bHQpOworICAgIHNoYXJlZFdvcmtlci5pc1J1bm5pbmcgPSB0cnVlOwor
ICAgIGF1dG8gc291cmNlT3JpZ2luID0gc2hhcmVkV29ya2VyLm9yaWdpbi5jbGllbnRPcmlnaW4u
dG9TdHJpbmcoKTsKKyAgICBmb3IgKGF1dG8mIHBvcnQgOiBzaGFyZWRXb3JrZXIuc2hhcmVkV29y
a2VyT2JqZWN0cy52YWx1ZXMoKSkKKyAgICAgICAgcG9zdENvbm5lY3RFdmVudChjb250ZXh0Q29u
bmVjdGlvbiwgc2hhcmVkV29ya2VyLmlkZW50aWZpZXIsIHBvcnQsIHNvdXJjZU9yaWdpbik7Cit9
CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpwb3N0Q29ubmVjdEV2ZW50KFdlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uLCBXZWJD
b3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmIHNvdXJjZVBvcnQsIGNvbnN0IFN0cmlu
ZyYgc291cmNlT3JpZ2luKQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNo
YXJlZFdvcmtlclNlcnZlcjo6cG9zdENvbm5lY3RFdmVudDogY29udGV4dENvbm5lY3Rpb249JXAs
IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCAmY29udGV4dENvbm5lY3Rpb24sIHNo
YXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgY29udGV4dENvbm5lY3Rpb24u
cG9zdENvbm5lY3RFdmVudChzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBzb3VyY2VQb3J0LCBzb3Vy
Y2VPcmlnaW4pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6ZGlkRmluaXNoRmV0
Y2hpbmdTaGFyZWRXb3JrZXJTY3JpcHQoU2hhcmVkV29ya2VyJiB3b3JrZXIsIFdlYkNvcmU6Oldv
cmtlckZldGNoUmVzdWx0JiYgZmV0Y2hSZXN1bHQpCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVk
V29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpkaWRGaW5pc2hGZXRjaGluZ1NoYXJlZFdv
cmtlclNjcmlwdCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCAiLCB3b3JrZXI9JXAs
IHN1Y2Nlc3M9JWQiLCB3b3JrZXIuaWRlbnRpZmllci50b1VJbnQ2NCgpLCAmd29ya2VyLCBmZXRj
aFJlc3VsdC5lcnJvci5pc051bGwoKSk7CisKKyAgICBmb3IgKGF1dG8gc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllciA6IHdvcmtlci5zaGFyZWRXb3JrZXJPYmplY3RzLmtleXMoKSkgeworICAg
ICAgICBpZiAoYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSkpCisgICAgICAgICAg
ICBzZXJ2ZXJDb25uZWN0aW9uLT5ub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGZldGNoUmVzdWx0LmVycm9yKTsKKyAgICB9CisK
KyAgICBpZiAoIWZldGNoUmVzdWx0LmVycm9yLmlzTnVsbCgpKSB7CisgICAgICAgIG1fc2hhcmVk
V29ya2Vycy5yZW1vdmUod29ya2VyLmtleSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIHdvcmtlci5mZXRjaFJlc3VsdCA9IFdURk1vdmUoZmV0Y2hSZXN1bHQpOworCisgICAgYXV0
byByZWdpc3RyYWJsZURvbWFpbiA9IHdvcmtlci5yZWdpc3RyYWJsZURvbWFpbigpOworICAgIGF1
dG8qIGNvbnRleHRDb25uZWN0aW9uID0gY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURv
bWFpbihyZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKCFjb250ZXh0Q29ubmVjdGlvbikgewor
ICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBsYXVuY2hTaGFyZWRXb3JrZXIoKmNvbnRleHRDb25u
ZWN0aW9uLCB3b3JrZXIpOworfQorCitib29sIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6bmVlZHND
b250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8m
IHNoYXJlZFdvcmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAo
cmVnaXN0cmFibGVEb21haW4ubWF0Y2hlcyhzaGFyZWRXb3JrZXItPnVybCkpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFdlYlNo
YXJlZFdvcmtlclNlcnZlcjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQoreworICAgIEFTU0VSVCghbV9j
b250ZXh0Q29ubmVjdGlvbnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKTsKKyAgICBpZiAo
bV9wZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9t
YWluKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAi
V2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbiB3aWxsIGNyZWF0
ZSBhIGNvbm5lY3Rpb24iKTsKKworICAgIG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWlu
cy5hZGQocmVnaXN0cmFibGVEb21haW4pOworICAgIG1fc2Vzc2lvbi5uZXR3b3JrUHJvY2Vzcygp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6RXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzIHsgcmVnaXN0cmFibGVEb21haW4sIG1fc2Vzc2lvbi5zZXNzaW9u
SUQoKSB9LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVnaXN0cmFibGVE
b21haW5dIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6
OmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uIHNob3VsZCBub3cgaGF2ZSBjcmVhdGVkIGEgY29ubmVj
dGlvbiIpOworCisgICAgICAgIEFTU0VSVChtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFp
bnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKTsKKyAgICAgICAgbV9wZW5kaW5nQ29udGV4
dENvbm5lY3Rpb25Eb21haW5zLnJlbW92ZShyZWdpc3RyYWJsZURvbWFpbik7CisKKyAgICAgICAg
aWYgKG1fY29udGV4dENvbm5lY3Rpb25zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAobmVlZHNDb250ZXh0Q29ubmVjdGlvbkZv
clJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgICAgIGNyZWF0
ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICB9LCAwKTsKK30KKwor
dm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmFkZENvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uKQorewor
ICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRk
Q29udGV4dENvbm5lY3Rpb24oJXApIHdlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgJmNv
bnRleHRDb25uZWN0aW9uLCBjb250ZXh0Q29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigp
LnRvVUludDY0KCkpOworCisgICAgQVNTRVJUKCFtX2NvbnRleHRDb25uZWN0aW9ucy5jb250YWlu
cyhjb250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpKSk7CisKKyAgICBtX2NvbnRl
eHRDb25uZWN0aW9ucy5hZGQoY29udGV4dENvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSwg
JmNvbnRleHRDb25uZWN0aW9uKTsKKworICAgIGNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChjb250
ZXh0Q29ubmVjdGlvbik7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1vdmVD
b250ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
JiBjb250ZXh0Q29ubmVjdGlvbikKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKCVwKSB3ZWJQcm9j
ZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQsICZjb250ZXh0Q29ubmVjdGlvbiwgY29udGV4dENvbm5l
Y3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKworICAgIGF1dG8gcmVn
aXN0cmFibGVEb21haW4gPSBjb250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpOwor
CisgICAgQVNTRVJUKG1fY29udGV4dENvbm5lY3Rpb25zLmdldChyZWdpc3RyYWJsZURvbWFpbikg
PT0gJmNvbnRleHRDb25uZWN0aW9uKTsKKworICAgIG1fY29udGV4dENvbm5lY3Rpb25zLnJlbW92
ZShyZWdpc3RyYWJsZURvbWFpbik7CisKKyAgICBpZiAobmVlZHNDb250ZXh0Q29ubmVjdGlvbkZv
clJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgY3JlYXRlQ29u
dGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4pOworfQorCit2b2lkIFdlYlNoYXJlZFdv
cmtlclNlcnZlcjo6Y29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFdlYlNoYXJlZFdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uKQoreworICAgIFJFTEVBU0Vf
TE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y29udGV4dENvbm5lY3Rp
b25DcmVhdGVkKCVwKSB3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQsICZjb250ZXh0Q29u
bmVjdGlvbiwgY29udGV4dENvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2
NCgpKTsKKyAgICBhdXRvJiByZWdpc3RyYWJsZURvbWFpbiA9IGNvbnRleHRDb25uZWN0aW9uLnJl
Z2lzdHJhYmxlRG9tYWluKCk7CisgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3NoYXJlZFdvcmtl
cnMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHdvcmtlci0+ZGlkRmluaXNoRmV0Y2hpbmcoKSAm
JiByZWdpc3RyYWJsZURvbWFpbi5tYXRjaGVzKHdvcmtlci0+dXJsKSkKKyAgICAgICAgICAgIGxh
dW5jaFNoYXJlZFdvcmtlcihjb250ZXh0Q29ubmVjdGlvbiwgKndvcmtlcik7CisgICAgfQorfQor
CithdXRvIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hhcmVkV29ya2VyQnlJZGVudGlmaWVyKFdl
YkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikgLT4g
U2hhcmVkV29ya2VyKgoreworICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9zaGFyZWRXb3JrZXJz
LnZhbHVlcygpKSB7CisgICAgICAgIGlmICh3b3JrZXItPmlkZW50aWZpZXIgPT0gc2hhcmVkV29y
a2VySWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiB3b3JrZXIuZ2V0KCk7CisgICAgfQor
ICAgIHJldHVybiBudWxscHRyOworfQorCithdXRvIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hh
cmVkV29ya2VyQnlPYmplY3RJZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikgLT4gU2hhcmVkV29ya2VyKgor
eworICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9zaGFyZWRXb3JrZXJzLnZhbHVlcygpKSB7Cisg
ICAgICAgIGlmICh3b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMuY29udGFpbnMoc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllcikpCisgICAgICAgICAgICByZXR1cm4gd29ya2VyLmdldCgpOwor
ICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXI6OnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK3sKKyAgICBhdXRv
KiB3b3JrZXIgPSBzaGFyZWRXb3JrZXJCeU9iamVjdElkZW50aWZpZXIoc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVk
V29ya2VyU2VydmVyOjpzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheTogc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zLCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgd29ya2VyKTsKKyAgICBpZiAo
IXdvcmtlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgd29ya2VyLT5zaGFyZWRXb3JrZXJPYmpl
Y3RzLnJlbW92ZShzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBpZiAoIXdvcmtl
ci0+c2hhcmVkV29ya2VyT2JqZWN0cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IHNodXREb3duU2hhcmVkV29ya2VyKHdvcmtlci0+a2V5KCkpOworfQorCit2b2lkIFdlYlNoYXJl
ZFdvcmtlclNlcnZlcjo6c2h1dERvd25TaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVk
V29ya2VyS2V5JiBrZXkpCit7CisgICAgYXV0byB3b3JrZXIgPSBtX3NoYXJlZFdvcmtlcnMudGFr
ZShrZXkpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNl
cnZlcjo6c2h1dERvd25TaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJ
dTY0ICIsIHdvcmtlcj0lcCIsIHdvcmtlciA/IHdvcmtlci0+aWRlbnRpZmllci50b1VJbnQ2NCgp
IDogMCwgd29ya2VyLmdldCgpKTsKKyAgICBpZiAoIXdvcmtlcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byogY29udGV4dENvbm5lY3Rpb24gPSBjb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lz
dHJhYmxlRG9tYWluKHdvcmtlci0+cmVnaXN0cmFibGVEb21haW4oKSk7CisgICAgaWYgKCFjb250
ZXh0Q29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgY29udGV4dENvbm5lY3Rpb24t
PnRlcm1pbmF0ZVNoYXJlZFdvcmtlcih3b3JrZXItPmlkZW50aWZpZXIpOworCisgICAgaWYgKCFu
ZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4od29ya2VyLT5yZWdpc3Ry
YWJsZURvbWFpbigpKSkKKyAgICAgICAgY29udGV4dENvbm5lY3Rpb24tPmNvbm5lY3Rpb25Jc05v
TG9uZ2VyTmVlZGVkKCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjphZGRDb25u
ZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uPiYm
IGNvbm5lY3Rpb24pCit7CisgICAgYXV0byBwcm9jZXNzSWRlbnRpZmllciA9IGNvbm5lY3Rpb24t
PndlYlByb2Nlc3NJZGVudGlmaWVyKCk7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAi
V2ViU2hhcmVkV29ya2VyU2VydmVyOjphZGRDb25uZWN0aW9uKCVwKTogcHJvY2Vzc0lkZW50aWZp
ZXI9JSIgUFJJdTY0LCBjb25uZWN0aW9uLmdldCgpLCBwcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2
NCgpKTsKKyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbnMuY29udGFpbnMocHJvY2Vzc0lkZW50aWZp
ZXIpKTsKKyAgICBtX2Nvbm5lY3Rpb25zLmFkZChwcm9jZXNzSWRlbnRpZmllciwgV1RGTW92ZShj
b25uZWN0aW9uKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1vdmVDb25u
ZWN0aW9uKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQorewor
ICAgIGF1dG8gY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMudGFrZShwcm9jZXNzSWRlbnRpZmll
cik7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVy
OjpyZW1vdmVDb25uZWN0aW9uKCVwKTogcHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCBjb25u
ZWN0aW9uLmdldCgpLCBwcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBBU1NFUlQo
Y29ubmVjdGlvbik7CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllcj4gc2hhcmVkV29ya2VyT2JqZWN0c0dvaW5nQXdheTsKKyAgICBmb3IgKGF1dG8mIHdv
cmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBmb3IgKGF1dG8mIHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgOiB3b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMu
a2V5cygpKSB7CisgICAgICAgICAgICBpZiAoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5w
cm9jZXNzSWRlbnRpZmllcigpID09IHByb2Nlc3NJZGVudGlmaWVyKQorICAgICAgICAgICAgICAg
IHNoYXJlZFdvcmtlck9iamVjdHNHb2luZ0F3YXkuYXBwZW5kKHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIpOworICAgICAgICB9CisgICAgfQorICAgIGZvciAoYXV0byBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyIDogc2hhcmVkV29ya2VyT2JqZWN0c0dvaW5nQXdheSkKKyAgICAgICAg
c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
cik7Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlcjo6U2hhcmVkV29ya2VyOjpTaGFyZWRXb3Jr
ZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25zKQorICAgIDogaWRlbnRp
ZmllcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQorICAgICwg
b3JpZ2luKG9yaWdpbikKKyAgICAsIHVybCh1cmwpCisgICAgLCB3b3JrZXJPcHRpb25zKHdvcmtl
ck9wdGlvbnMpCit7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpwb3N0RXhjZXB0
aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIGF1
dG8qIHdvcmtlciA9IHNoYXJlZFdvcmtlckJ5SWRlbnRpZmllcihzaGFyZWRXb3JrZXJJZGVudGlm
aWVyKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXI6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdDogc2hhcmVkV29ya2VySWRlbnRp
Zmllcj0lIiBQUkl1NjQgIiwgd29ya2VyPSVwIiwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJ
bnQ2NCgpLCB3b3JrZXIpOworICAgIGlmICghd29ya2VyKQorICAgICAgICByZXR1cm47CisKKyAg
ICBmb3IgKGF1dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA6IHdvcmtlci0+c2hhcmVk
V29ya2VyT2JqZWN0cy5rZXlzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHNlcnZlckNvbm5lY3Rp
b24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nl
c3NJZGVudGlmaWVyKCkpKQorICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlvbi0+cG9zdEV4Y2Vw
dGlvblRvV29ya2VyT2JqZWN0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGVycm9yTWVz
c2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwpOworICAgIH0KK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2ViNjIzY2M2ZTU2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyU2VydmVyLmgKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hh
cmVkV29ya2VySWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyS2V5
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9UcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0Lmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9Xb3JrZXJGZXRjaFJlc3VsdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyT3B0aW9u
cy5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0
cnVjdCBDbGllbnRPcmlnaW47Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3
b3JrU2Vzc2lvbjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb247CitjbGFz
cyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOworCitjbGFzcyBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViU2hhcmVkV29ya2Vy
U2VydmVyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgV2ViU2hhcmVkV29ya2VyU2VydmVyKE5ldHdvcmtTZXNzaW9uJik7CisgICAgfldlYlNo
YXJlZFdvcmtlclNlcnZlcigpOworCisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCk7CisK
KyAgICB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFdl
YkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpUcmFu
c2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJik7CisgICAgdm9p
ZCBzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyKTsKKworICAgIHZvaWQgYWRkQ29udGV4dENvbm5lY3Rpb24oV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOworICAgIHZvaWQgcmVtb3ZlQ29udGV4
dENvbm5lY3Rpb24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOwor
CisgICAgdm9pZCBhZGRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uPiYmKTsKKyAgICB2b2lkIHJlbW92ZUNvbm5lY3Rpb24oV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIpOworCisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbiogY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSB7IHJldHVybiBtX2NvbnRleHRDb25u
ZWN0aW9ucy5nZXQoZG9tYWluKTsgfQorCisgICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJP
YmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBjcmVhdGVDb250ZXh0Q29ubmVjdGlv
bihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOworCisgICAgYm9vbCBuZWVkc0Nv
bnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mKSBjb25zdDsKKyAgICB2b2lkIGNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CisKKyAgICBzdHJ1Y3Qg
U2hhcmVkV29ya2VyIDogQ2FuTWFrZVdlYWtQdHI8U2hhcmVkV29ya2VyPiB7CisgICAgICAgIFdU
Rl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKworICAgICAgICBTaGFyZWRXb3JrZXIoY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgY29uc3QgVVJMJiwgY29uc3QgV2ViQ29yZTo6V29y
a2VyT3B0aW9ucyYpOworCisgICAgICAgIGJvb2wgZGlkRmluaXNoRmV0Y2hpbmcoKSBjb25zdCB7
IHJldHVybiAhIWZldGNoUmVzdWx0LnNjcmlwdDsgfQorICAgICAgICBXZWJDb3JlOjpTaGFyZWRX
b3JrZXJLZXkga2V5KCkgY29uc3QgeyByZXR1cm4geyBvcmlnaW4sIHVybCwgd29ya2VyT3B0aW9u
cy5uYW1lIH07IH0KKyAgICAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFi
bGVEb21haW4oKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVy
bCB9OyB9CisKKyAgICAgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBpZGVudGlm
aWVyOworICAgICAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luOworICAgICAgICBVUkwg
dXJsOworICAgICAgICBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdvcmtlck9wdGlvbnM7CisgICAg
ICAgIEhhc2hNYXA8V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29y
ZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydD4gc2hhcmVkV29ya2VyT2JqZWN0czsKKyAgICAgICAg
V2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQgZmV0Y2hSZXN1bHQ7CisgICAgICAgIGJvb2wgaXNS
dW5uaW5nIHsgZmFsc2UgfTsKKyAgICB9OworCisgICAgU2hhcmVkV29ya2VyKiBzaGFyZWRXb3Jr
ZXJCeUlkZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgU2hh
cmVkV29ya2VyKiBzaGFyZWRXb3JrZXJCeU9iamVjdElkZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRGaW5pc2hGZXRjaGluZ1NoYXJl
ZFdvcmtlclNjcmlwdChTaGFyZWRXb3JrZXImLCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYm
KTsKKyAgICB2b2lkIGxhdW5jaFNoYXJlZFdvcmtlcihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uJiwgU2hhcmVkV29ya2VyJik7CisgICAgdm9pZCBwb3N0Q29ubmVjdEV2
ZW50KFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mLCBXZWJDb3JlOjpT
aGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQ
b3J0JiwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOworICAgIHZvaWQgc2h1dERvd25TaGFy
ZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5Jik7CisKKyAgICBOZXR3b3Jr
U2Vzc2lvbiYgbV9zZXNzaW9uOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uPj4gbV9j
b25uZWN0aW9uczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4gbV9jb250ZXh0Q29ubmVjdGlv
bnM7CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9wZW5kaW5nQ29u
dGV4dENvbm5lY3Rpb25Eb21haW5zOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2hhcmVkV29ya2Vy
S2V5LCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcmVkV29ya2VyPj4gbV9zaGFyZWRXb3JrZXJzOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uYmIwOTE3MzQ1ODM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlv
bi5jcHAKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIgorCisjaW5jbHVk
ZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgi
CisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlckZldGNoUmVzdWx0Lmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCisjZGVmaW5lIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coZm10LCAuLi4pIFJF
TEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gW3dlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBS
SXU2NCAiXSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgbV93
ZWJQcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBD
T05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihT
aGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsIG1fd2ViUHJvY2Vzc0lk
ZW50aWZpZXIudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKKworV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbjo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbihOZXR3b3JrUHJv
Y2VzcyYgbmV0d29ya1Byb2Nlc3MsIFdlYlNoYXJlZFdvcmtlclNlcnZlciYgc2VydmVyLCBJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlBy
b2Nlc3NJZGVudGlmaWVyKQorICAgIDogbV9jb250ZW50Q29ubmVjdGlvbihjb25uZWN0aW9uKQor
ICAgICwgbV9uZXR3b3JrUHJvY2VzcyhuZXR3b3JrUHJvY2VzcykKKyAgICAsIG1fc2VydmVyKHNl
cnZlcikKKyAgICAsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIod2ViUHJvY2Vzc0lkZW50aWZpZXIp
Cit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbjoiKTsKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6fldlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9M
T0coIn5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOiIpOworfQorCitJUEM6OkNvbm5l
Y3Rpb24qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZW50Q29ubmVjdGlvbi5wdHIoKTsK
K30KKworUEFMOjpTZXNzaW9uSUQgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2Vz
c2lvbklEKCkKK3sKKyAgICByZXR1cm4gc2VydmVyKCkuc2Vzc2lvbklEKCk7Cit9CisKK05ldHdv
cmtTZXNzaW9uKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpzZXNzaW9uKCkKK3sK
KyAgICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkp
OworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OnJlcXVlc3RTaGFy
ZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFVSTCYm
IHVybCwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBvcnQsIFdlYkNvcmU6Oldv
cmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zKQoreworICAgIEFTU0VSVChzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRp
Zmllcik7IC8vIEZJWE1FOiBTaG91bGQgYmUgYSBNRVNTQUdFX0NIRUNLKCkuCisgICAgQ09OTkVD
VElPTl9SRUxFQVNFX0xPRygicmVxdWVzdFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gdGhpcy0+c2Vz
c2lvbigpKQorICAgICAgICBzZXNzaW9uLT5lbnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKS5yZXF1
ZXN0U2hhcmVkV29ya2VyKFdURk1vdmUob3JpZ2luKSwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciwgV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHBvcnQpLCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMp
KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpmZXRjaFNjcmlw
dEluQ2xpZW50KGNvbnN0IFVSTCYgdXJsLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Oldvcmtl
ck9wdGlvbnMmIHdvcmtlck9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
V29ya2VyRmV0Y2hSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQ09OTkVD
VElPTl9SRUxFQVNFX0xPRygiZmV0Y2hTY3JpcHRJbkNsaWVudDogc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6RmV0Y2hTY3JpcHRJbkNsaWVudCB7IHVy
bCwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgd29ya2VyT3B0aW9ucyB9LCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbjo6bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIENPTk5FQ1RJT05fUkVM
RUFTRV9MT0coIm5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb246IHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cywgc3VjY2Vzcz0lZCIsIHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBlcnJvci5pc051bGwoKSk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6Tm90
aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbiB7IHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIsIGVycm9yIH0pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VVUkwpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUigicG9z
dEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7
cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbjo6UG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0IHsgc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVS
TCB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpzaGFyZWRX
b3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7CisgICAgQVNTRVJUKHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJ
ZGVudGlmaWVyKTsgLy8gRklYTUU6IFNob3VsZCBiZSBhIE1FU1NBR0VfQ0hFQ0soKS4KKyAgICBD
T05ORUNUSU9OX1JFTEVBU0VfTE9HKCJzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheTogc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmIChhdXRvKiBzZXNz
aW9uID0gdGhpcy0+c2Vzc2lvbigpKQorICAgICAgICBzZXNzaW9uLT5lbnN1cmVTaGFyZWRXb3Jr
ZXJTZXJ2ZXIoKS5zaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyKTsKK30KKworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0cKKyN1bmRl
ZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDNkZTRlMWI0OWJkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1
ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVy
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKK3N0cnVjdCBX
b3JrZXJPcHRpb25zOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya1By
b2Nlc3M7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI7CitjbGFzcyBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVz
c2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiwgV2ViU2hh
cmVkV29ya2VyU2VydmVyJiwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIpOworICAgIH5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCk7CisKKyAgICBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlcigpIHsgcmV0dXJuIG1fc2VydmVyOyB9CisgICAg
Y29uc3QgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIoKSBjb25zdCB7IHJldHVybiBtX3Nl
cnZlcjsgfQorCisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCk7CisgICAgTmV0d29ya1Nl
c3Npb24qIHNlc3Npb24oKTsKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9j
ZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7IH0K
KworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgZmluYWw7CisKKyAgICB2b2lkIGZldGNoU2NyaXB0SW5DbGllbnQoY29uc3QgVVJMJiwg
V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6V29y
a2VyT3B0aW9ucyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V29ya2VyRmV0Y2hS
ZXN1bHQmJik+JiYpOworICAgIHZvaWQgbm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlv
bihXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCk7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyLgorICAgIElQ
Qzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKKyAg
ICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIDA7IH0KKworICAgIC8vIElQQyBtZXNzYWdlcy4KKyAgICB2b2lkIHJlcXVlc3RTaGFyZWRX
b3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdl
YkNvcmU6Oldvcmtlck9wdGlvbnMmJik7CisgICAgdm9pZCBzaGFyZWRXb3JrZXJPYmplY3RJc0dv
aW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKworICAgIFJl
ZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29udGVudENvbm5lY3Rpb247CisgICAgUmVmPE5ldHdvcmtQ
cm9jZXNzPiBtX25ldHdvcmtQcm9jZXNzOworICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlciYgbV9z
ZXJ2ZXI7CisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV93ZWJQcm9jZXNzSWRlbnRp
ZmllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVk
V29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mYWU0YTA4MDM3NzkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjYgQEAK
KyMgQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwK
KyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKKyAgICBSZXF1ZXN0
U2hhcmVkV29ya2VyKHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCBXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIsIFVSTCB1cmwsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQgcG9ydCwgc3RydWN0
IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMgd29ya2VyT3B0aW9ucykKKyAgICBTaGFyZWRXb3JrZXJP
YmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29y
a2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDljMTEyNDE1MjE4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSwxMDcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNkZWZp
bmUgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhT
aGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsIHdlYlBy
b2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKKworV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlv
biwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlcikKKyAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0
aW9uKQorICAgICwgbV9zZXJ2ZXIoc2VydmVyKQorICAgICwgbV9yZWdpc3RyYWJsZURvbWFpbihy
ZWdpc3RyYWJsZURvbWFpbikKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0co
IldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Iik7CisgICAgc2VydmVy
LmFkZENvbnRleHRDb25uZWN0aW9uKCp0aGlzKTsKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24oKQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygifldlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Iik7CisgICAgaWYgKG1fc2VydmVyICYm
IG1fc2VydmVyLT5jb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJh
YmxlRG9tYWluKCkpID09IHRoaXMpCisgICAgICAgIG1fc2VydmVyLT5yZW1vdmVDb250ZXh0Q29u
bmVjdGlvbigqdGhpcyk7Cit9CisKK1dlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIFdlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OndlYlByb2Nlc3NJZGVudGlmaWVyKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCk7
Cit9CisKK0lQQzo6Q29ubmVjdGlvbiYgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6aXBjQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlv
bi5jb25uZWN0aW9uKCk7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiogV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAor
eworICAgIHJldHVybiAmaXBjQ29ubmVjdGlvbigpOworfQorCit1aW50NjRfdCBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKQorewor
ICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiY29ubmVjdGlvbklzTm9Mb25nZXJO
ZWVkZWQ6Iik7CisgICAgbV9jb25uZWN0aW9uLnNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNv
cmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFT
RV9MT0coInBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdDogc2hhcmVkV29ya2VySWRlbnRpZmll
cj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgaWYg
KG1fc2VydmVyKQorICAgICAgICBtX3NlcnZlci0+cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0
KHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBzb3VyY2VVUkwpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OmxhdW5jaFNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9u
cyYgd29ya2VyT3B0aW9ucywgY29uc3QgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmIGZldGNo
UmVzdWx0KQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygibGF1bmNoU2hh
cmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2Vy
SWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkxhdW5jaFNoYXJlZFdvcmtlciB7IG9yaWdpbiwg
c2hhcmVkV29ya2VySWRlbnRpZmllciwgdXJsLCB3b3JrZXJPcHRpb25zLCBmZXRjaFJlc3VsdCB9
KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpw
b3N0Q29ubmVjdEV2ZW50KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29y
a2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYgcG9y
dCwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9O
X1JFTEVBU0VfTE9HKCJwb3N0Q29ubmVjdEV2ZW50OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUi
IFBSSXU2NCwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlBvc3RDb25u
ZWN0RXZlbnQgeyBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBwb3J0LCBzb3VyY2VPcmlnaW4gfSk7
Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dGVy
bWluYXRlU2hhcmVkV29ya2VyKFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVk
V29ya2VySWRlbnRpZmllcikKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0co
InRlcm1pbmF0ZVNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQs
IHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpUZXJtaW5hdGVTaGFyZWRX
b3JrZXIgeyBzaGFyZWRXb3JrZXJJZGVudGlmaWVyIH0pOworfQorCisjdW5kZWYgQ09OVEVYVF9D
T05ORUNUSU9OX1JFTEVBU0VfTE9HCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjY3M2VjYWUyODNm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRX
b3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC0wLDAg
KzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJXZWJQYWdl
UHJveHlJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VySWRlbnRpZmllci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvVHJhbnNmZXJyZWRNZXNzYWdlUG9ydC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKK2NsYXNzIFNjcmlwdEJ1ZmZlcjsKK3N0cnVjdCBD
bGllbnRPcmlnaW47CitzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7CitzdHJ1Y3QgV29ya2VyT3B0
aW9uczsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyOworCitjbGFzcyBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIElQQzo6
TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImKTsKKyAgICB+
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOworCisgICAgV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdDsKKyAgICBj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4oKSBjb25z
dCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9CisgICAgSVBDOjpDb25uZWN0aW9uJiBp
cGNDb25uZWN0aW9uKCkgY29uc3Q7CisKKyAgICB2b2lkIGxhdW5jaFNoYXJlZFdvcmtlcihjb25z
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVy
LCBjb25zdCBVUkwmLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiwgY29uc3QgV2ViQ29y
ZTo6V29ya2VyRmV0Y2hSZXN1bHQmKTsKKyAgICB2b2lkIHBvc3RDb25uZWN0RXZlbnQoV2ViQ29y
ZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNz
YWdlUG9ydCYsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKKyAgICB2b2lkIHRlcm1pbmF0
ZVNoYXJlZFdvcmtlcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKKworICAgIHZv
aWQgY29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKK3ByaXZhdGU6
CisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2Jq
ZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkwpOworCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyLgorICAgIElQQzo6Q29ubmVj
dGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRf
dCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOworCisgICAgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fY29ubmVjdGlvbjsKKyAgICBXZWFrUHRyPFdlYlNo
YXJlZFdvcmtlclNlcnZlcj4gbV9zZXJ2ZXI7CisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi5hZTQ3YzEyMmNiYWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjUgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisj
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
KyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKKyAgICBQb3N0RXhjZXB0
aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRX
b3JrZXJJZGVudGlmaWVyLCBTdHJpbmcgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgU3RyaW5nIHNvdXJjZVVSTCkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5n
LmgKaW5kZXggMWM0MmQwNDBjMWE5Li5kZTMyZjgxNzE3MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9n
Z2luZy5oCkBAIC05Nyw2ICs5Nyw3IEBAIGV4dGVybiAiQyIgewogICAgIE0oU2VydmljZVdvcmtl
cikgXAogICAgIE0oU2Vzc2lvblN0YXRlKSBcCiAgICAgTShTaGFyZWREaXNwbGF5TGlzdHMpIFwK
KyAgICBNKFNoYXJlZFdvcmtlcikgXAogICAgIE0oU3RvcmFnZSkgXAogICAgIE0oU3RvcmFnZUFQ
SSkgXAogICAgIE0oVGV4dElucHV0KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQppbmRleCA3ZWJmYTUxNmI1MDMuLjRjOGNhZDA0NjQ3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0zMDMsMTAgKzMwMywxMyBAQCBkZWYgdHlw
ZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6
U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTaGFy
ZWRTdHJpbmdIYXNoJywKKyAgICAgICAgJ1dlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIn
LAorICAgICAgICAnV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcicsCiAgICAg
ICAgICdXZWJDb3JlOjpTbGVlcERpc2FibGVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJBcHBlbmRNb2RlJywKICAgICAgICAgJ1dlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U3Rv
cmFnZVR5cGUnLAorICAgICAgICAnV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCcsCiAg
ICAgICAgICdXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0SWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJDb3JlOjpXZWJMb2NrSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpXZWJTb2NrZXRJ
ZGVudGlmaWVyJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDU3ZWYzYjE0ZWFmMi4uMzVmNmM3NDhlZTNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKQEAgLTE0MSw2ICsxNDEsMTAgQEAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV09yaWdpblN0b3JlLmNwcCBAbm8tdW5pZnkKIE5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBAbm8tdW5pZnkKIE5ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBAbm8t
dW5pZnkKIAorTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZl
ci5jcHAKK05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uLmNwcAorTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxl
U3lzdGVtU3RvcmFnZUhhbmRsZS5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3Rl
bVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS5jcHAKQEAgLTc4Myw4ICs3ODcsOSBAQCBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCiBXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dPcmlnaW5UYWJsZS5jcHAKIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJQcm92aWRlci5jcHAKLVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJQcm92
aWRlci5jcHAKK1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uY3BwCiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbi5jcHAKK1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJQcm92aWRl
ci5jcHAKIAogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIu
Y3BwCiAKQEAgLTg4NywzICs4OTIsNyBAQCBSZW1vdGVXZWJMb2NrUmVnaXN0cnlNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrTWVzc2FnZVJlY2VpdmVyLmNwcAog
V2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5TWVzc2FnZVJlY2VpdmVyLmNwcAogV2ViTG9ja1Jl
Z2lzdHJ5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBhNjc4MzY3YTc3
NWEuLjMzMDIwYmQ1YzNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC01MjksNyArNTI5LDcgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0ZXJtaW5hdGVXZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyIHdlYlByb2MKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6dGVybWluYXRl
VW5yZXNwb25zaXZlU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciBwcm9jZXNzSWRlbnRpZmllcikKIHsKICAgICBpZiAoUmVmUHRyIHByb2Nlc3MgPSBXZWJQ
cm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHByb2Nlc3NJZGVudGlmaWVyKSkgewot
ICAgICAgICBwcm9jZXNzLT5kaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICAgICAgcHJvY2Vz
cy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29y
a2VyKTsKICAgICAgICAgcHJvY2Vzcy0+cmVxdWVzdFRlcm1pbmF0aW9uKFByb2Nlc3NUZXJtaW5h
dGlvblJlYXNvbjo6RXhjZWVkZWRDUFVMaW1pdCk7CiAgICAgfQogfQpAQCAtMTQxNSwxNiArMTQx
NSwyMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZERlc3Ryb3lXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eShXZWJVc2VyQ29udGVudAogfQogI2VuZGlmCiAKK3ZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21h
aW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTaGFy
ZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV1RGTW92ZShyZWdpc3Ry
YWJsZURvbWFpbiksIHNlc3Npb25JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQor
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpl
c3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJl
Z2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoKnRoaXMsIFdURk1vdmUocmVn
aXN0cmFibGVEb21haW4pLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHNlc3Npb25JRCwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIFdlYlByb2Nlc3NQb29sOjplc3RhYmxp
c2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUo
cmVnaXN0cmFibGVEb21haW4pLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHNlc3Npb25J
RCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OnNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgaWYgKGF1dG8qIHByb2Nl
c3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIpKQot
ICAgICAgICBwcm9jZXNzLT5kaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICAgICAgcHJvY2Vz
cy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29y
a2VyKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnRQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVu
dGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lk
ZW50aWZpZXIpCkBAIC0xNDYwLDYgKzE0NjUsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjplbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0kK
IH0KICNlbmRpZgogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNoYXJlZFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRl
bnRpZmllcikKK3sKKyAgICBpZiAoYXV0byogcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJv
Y2Vzc0ZvcklkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAgICAgIHByb2Nlc3MtPmRpc2FibGVX
b3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKTsKK30KKwog
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2
NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVx
dWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcXVv
dGEpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9HKFN0b3JhZ2UsICIl
cCAtIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UiLCB0aGlzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmgKaW5kZXggYTRlMzY0NWViYWFlLi42ODQxYTM0ZmUwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0z
MzQsNiArMzM0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0U2VydmljZVdvcmtlckJhY2tn
cm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzSWRlbnRpZmllcik7CiAgICAgdm9pZCBlbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFBy
b2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJ
ZGVudGlmaWVyKTsKICNlbmRpZgorICAgIHZvaWQgc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CisgICAgdm9pZCBl
c3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIHRlcm1pbmF0ZVdlYlByb2Nlc3MoV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXgg
MTJkMDZjZWJkNjJhLi4xNTc1N2VkOWEyNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4KQEAgLTYwLDYgKzYwLDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdh
Y3lSZWNlaXZlciB7CiAgICAgU3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3Npbmco
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVy
KQogICAgIEVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpCiAjZW5kaWYKKyAg
ICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKKyAgICBTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiAKICAgICBTZXRXZWJQcm9jZXNzSGFzVXBsb2FkcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciBwcm9jZXNzSUQsIGJvb2wgaGFzVXBsb2FkKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCBlNDk5MzVjMzI1ZjYuLjFhY2IzNDQ0YWZhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zNjkxLDExICszNjkxLDkgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNldFVzZXJBZ2VudChTdHJpbmcmJiB1c2VyQWdlbnQpCiAgICAg
ICAgIHJldHVybjsKICAgICBtX3VzZXJBZ2VudCA9IFdURk1vdmUodXNlckFnZW50KTsKIAotI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICAvLyBXZSB1cGRhdGUgdGhlIHNlcnZpY2Ugd29y
a2VyIHRoZXJlIGF0IHRoZSBtb21lbnQgdG8gYmUgc3VyZSB3ZSB1c2UgdmFsdWVzIHVzZWQgYnkg
YWN0dWFsIHdlYiBwYWdlcy4KICAgICAvLyBGSVhNRTogUmVmYWN0b3IgdGhpcyB3aGVuIHdlIGhh
dmUgYSBiZXR0ZXIgVXNlci1BZ2VudCBzdG9yeS4KLSAgICBwcm9jZXNzKCkucHJvY2Vzc1Bvb2wo
KS51cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KG1fdXNlckFnZW50KTsKLSNlbmRpZgorICAg
IHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnVwZGF0ZVdvcmtlclVzZXJBZ2VudChtX3VzZXJBZ2Vu
dCk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBhZmMyM2VlNTNm
MTIuLjRiMTliMGQxZDNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcApAQCAtNTI5LDcgKzUyOSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdldFdlYkF1
dGhuUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJvCiBib29s
IFdlYlByb2Nlc3NQb29sOjpzX3VzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MgPSBmYWxz
ZTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVz
dGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0
d29ya1Byb2Nlc3NQcm94eSYgcHJveHksIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVE
b21haW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNl
cnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlByb2Nl
c3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9u
YWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRl
bnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9
IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Npb25J
RCk7CiAgICAgaWYgKCF3ZWJzaXRlRGF0YVN0b3JlKQpAQCAtNTQ2LDcgKzU0Niw3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MoTmV0CiAgICAgaWYgKHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcikg
ewogICAgICAgICAvLyBUaGlzIGlzIGEgc2VydmljZSB3b3JrZXIgZm9yIGEgc2VydmljZSB3b3Jr
ZXIgcGFnZSBzbyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSB1c2UgdXNlIHRoZSBwYWdlJ3MgV2Vi
UHJvY2VzcyBmb3IgdGhlIHNlcnZpY2Ugd29ya2VyLgogICAgICAgICBpZiAoKHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHNl
cnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllci0+cHJvY2Vzc0lkZW50aWZpZXIoKSkpKSB7Ci0gICAg
ICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVTZXJ2aWNlV29ya2Vycyhw
cm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvclNlcnZpY2VXb3Jr
ZXJzKCkpOworICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlV29y
a2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIHByb2Nlc3NQ
b29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpKTsKICAgICAg
ICAgICAgIGlmIChzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkp
IHsKICAgICAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hlKCkucmVtb3Zl
UHJvY2Vzcygqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0NhY2hlOjpTaG91
bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIXNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSk7CkBAIC01NjQsNyArNTY0LDcg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXQKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAog
ICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IHByb2Nlc3MucHRyKCk7Ci0g
ICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVTZXJ2aWNlV29ya2Vy
cyhwcm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvclNlcnZpY2VX
b3JrZXJzKCkpOworICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxl
V29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIHByb2Nl
c3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpKTsKIAog
ICAgICAgICAgICAgaWYgKHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2Fj
aGUoKSkgewogICAgICAgICAgICAgICAgIHByb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5y
ZW1vdmVQcm9jZXNzKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBXZWJQcm9jZXNzQ2FjaGU6
OlNob3VsZFNodXREb3duUHJvY2Vzczo6Tm8pOwpAQCAtNTc3LDcgKzU3Nyw3IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MoTmV0CiAgICAgfQogCiAgICAgaWYgKCFzZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5KSB7Ci0gICAgICAgIGF1dG8gbmV3UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5Ojpj
cmVhdGVGb3JTZXJ2aWNlV29ya2VycygqcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWluICB7
IHJlZ2lzdHJhYmxlRG9tYWluIH0sICp3ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICAgICAgYXV0byBu
ZXdQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvcldvcmtlcnMoV2ViUHJv
Y2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCAqcHJvY2Vzc1Bvb2wsIFJlZ2lz
dHJhYmxlRG9tYWluICB7IHJlZ2lzdHJhYmxlRG9tYWluIH0sICp3ZWJzaXRlRGF0YVN0b3JlKTsK
ICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IG5ld1Byb2Nlc3NQcm94eS5wdHIo
KTsKIAogICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoU2VydmljZVdv
cmtlciwgImVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MgY3JlYXRpbmcgYSBuZXcgc2VydmljZSB3b3JrZXIgcHJvY2VzcyAocHJvY2VzPSVwLCBQ
SUQ9JWQpIiwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgc2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CkBAIC01ODYsMjAgKzU4Niw3MCBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzKE5ldAogICAgICAgICBwcm9jZXNzUG9vbC0+bV9wcm9jZXNzZXMuYXBwZW5k
KFdURk1vdmUobmV3UHJvY2Vzc1Byb3h5KSk7CiAgICAgfQogCi0gICAgQVNTRVJUKCFzZXJ2aWNl
V29ya2VyUHJvY2Vzc2VzKCkuY29udGFpbnMoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpKTsK
LSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5KTsKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHkpOwogCi0gICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2VydmljZVdv
cmtlckNvbnRleHQocHJvY2Vzc1Bvb2wtPm1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzID8gcHJv
Y2Vzc1Bvb2wtPm1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBwcm9jZXNzUG9v
bC0+bV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3JlKCksIHJlZ2lzdHJhYmxl
RG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKLSAgICBpZiAoIXByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQu
aXNOdWxsKCkpCi0gICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPnNldFNlcnZpY2VX
b3JrZXJVc2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fc2VydmljZVdvcmtlclVzZXJBZ2VudCk7Cisg
ICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRl
eHQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNzUG9vbC0+bV93b3Jr
ZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVsdFBhZ2VHcm91cC0+
cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtlclBh
Z2VJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgaWYgKCFwcm9j
ZXNzUG9vbC0+bV93b3JrZXJVc2VyQWdlbnQuaXNOdWxsKCkpCisgICAgICAgIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHktPnNldFdvcmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV93b3JrZXJV
c2VyQWdlbnQpOwogfQorI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZUZyb21T
ZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKK3ZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnJlbW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jZXNzKQogewotICAgIEFTU0VSVChzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkuY29udGFpbnMo
cHJvY2VzcykpOwotICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5yZW1vdmUocHJvY2Vzcyk7
CisgICAgQVNTRVJUKHdvcmtlclByb2Nlc3NlcygpLmNvbnRhaW5zKHByb2Nlc3MpKTsKKyAgICB3
b3JrZXJQcm9jZXNzZXMoKS5yZW1vdmUocHJvY2Vzcyk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBhdXRvKiB3ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9y
ZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQoc2Vzc2lvbklEKTsKKyAgICBpZiAoIXdl
YnNpdGVEYXRhU3RvcmUpCisgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkucHRyKCk7CisgICAgaWYgKCFwcm9jZXNzUG9vbHMoKS5z
aXplKCkpCisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWY8V2ViUHJvY2Vzc1Bvb2w+
PiBzaGFyZWRXb3JrZXJQcm9jZXNzUG9vbChXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKEFQSTo6UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKS5nZXQoKSkpOworCisgICAgLy8gQXJiaXRy
YXJpbHkgY2hvb3NlIHRoZSBmaXJzdCBwcm9jZXNzIHBvb2wgdG8gaG9zdCB0aGUgc2hhcmVkIHdv
cmtlciBwcm9jZXNzLgorICAgIGF1dG8qIHByb2Nlc3NQb29sID0gcHJvY2Vzc1Bvb2xzKClbMF07
CisgICAgQVNTRVJUKHByb2Nlc3NQb29sKTsKKworICAgIFdlYlByb2Nlc3NQcm94eSogc2hhcmVk
V29ya2VyUHJvY2Vzc1Byb3h5IHsgbnVsbHB0ciB9OworCisgICAgZm9yIChhdXRvJiBwcm9jZXNz
IDogcHJvY2Vzc1Bvb2wtPm1fcHJvY2Vzc2VzKSB7CisgICAgICAgIGlmIChwcm9jZXNzLnB0cigp
ID09IHByb2Nlc3NQb29sLT5tX3ByZXdhcm1lZFByb2Nlc3MuZ2V0KCkgfHwgcHJvY2Vzcy0+aXNE
dW1teVByb2Nlc3NQcm94eSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICgm
cHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpICE9IHdlYnNpdGVEYXRhU3RvcmUpCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFwcm9jZXNzLT5pc01hdGNoaW5nUmVnaXN0cmFi
bGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5ID0gcHJvY2Vzcy5wdHIoKTsKKyAgICAgICAg
c2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6
V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyLCBwcm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CisKKyAgICAgICAgaWYgKHNoYXJlZFdvcmtlclBy
b2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKSB7CisgICAgICAgICAgICBwcm9jZXNzUG9v
bC0+d2ViUHJvY2Vzc0NhY2hlKCkucmVtb3ZlUHJvY2Vzcygqc2hhcmVkV29ya2VyUHJvY2Vzc1By
b3h5LCBXZWJQcm9jZXNzQ2FjaGU6OlNob3VsZFNodXREb3duUHJvY2Vzczo6Tm8pOworICAgICAg
ICAgICAgQVNTRVJUKCFzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUo
KSk7CisgICAgICAgIH0KKworICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFU
SUMoU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzIHJldXNpbmcgYW4gZXhpc3Rpbmcgd2ViIHByb2Nlc3MgKHByb2Nlc3M9
JXAsIFBJRD0lZCkiLCBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHksIHNoYXJlZFdvcmtlclByb2Nl
c3NQcm94eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIGlmICghc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5KSB7CisgICAgICAgIGF1dG8gbmV3UHJv
Y2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdlYlByb2Nlc3NQ
cm94eTo6V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyLCAqcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxl
RG9tYWluICB7IHJlZ2lzdHJhYmxlRG9tYWluIH0sICp3ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICAg
ICAgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5ID0gbmV3UHJvY2Vzc1Byb3h5LnB0cigpOworCisg
ICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhTaGFyZWRXb3JrZXIsICJl
c3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgY3Jl
YXRpbmcgYSBuZXcgc2VydmljZSB3b3JrZXIgcHJvY2VzcyAocHJvY2Vzcz0lcCwgUElEPSVkKSIs
IHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9j
ZXNzSWRlbnRpZmllcigpKTsKKworICAgICAgICBwcm9jZXNzUG9vbC0+aW5pdGlhbGl6ZU5ld1dl
YlByb2Nlc3MobmV3UHJvY2Vzc1Byb3h5LCB3ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICAgICAgcHJv
Y2Vzc1Bvb2wtPm1fcHJvY2Vzc2VzLmFwcGVuZChXVEZNb3ZlKG5ld1Byb2Nlc3NQcm94eSkpOwor
ICAgIH0KKworICAgIHdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2hhcmVkV29ya2VyUHJvY2Vzc1By
b3h5KTsKKworICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2hhcmVkV29y
a2VyQ29udGV4dChwcm9jZXNzUG9vbC0+bV93b3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQb29s
LT5tX3dvcmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZhdWx0UGFn
ZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3JlKCksIHJlZ2lzdHJhYmxlRG9tYWluLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgaWYgKCFwcm9jZXNzUG9vbC0+bV93b3JrZXJVc2Vy
QWdlbnQuaXNOdWxsKCkpCisgICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+c2V0V29y
a2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3dvcmtlclVzZXJBZ2VudCk7CiB9Ci0jZW5kaWYK
IAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6d2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdl
ZCgpCiB7CkBAIC0xMDAzLDEwICsxMDUzLDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29u
bmVjdFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogCiAgICAgbV9iYWNrRm9yd2Fy
ZENhY2hlLT5yZW1vdmVFbnRyaWVzRm9yUHJvY2Vzcyhwcm9jZXNzKTsKIAotI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKLSAgICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdTZXJ2aWNlV29ya2Vycygp
KQotICAgICAgICByZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3Nlcyhwcm9jZXNzKTsKLSNl
bmRpZgorICAgIGlmIChwcm9jZXNzLmlzUnVubmluZ1dvcmtlcnMoKSkKKyAgICAgICAgcmVtb3Zl
RnJvbVdvcmtlclByb2Nlc3Nlcyhwcm9jZXNzKTsKIAogICAgIHN0YXRpY19jYXN0PFdlYkNvbnRl
eHRTdXBwbGVtZW50Kj4oc3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKSkt
PnByb2Nlc3NEaWRDbG9zZSgmcHJvY2Vzcyk7CiAKQEAgLTEwNjcsMTIgKzExMTUsMTIgQEAgUmVm
PFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURv
bWFpbihXZWJzaXRlRGF0YVN0b3IKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLVVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgV2ViUHJvY2Vzc1Bvb2w6OnVzZXJDb250ZW50
Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2aWNlV29ya2VycygpCitVc2VyQ29udGVudENvbnRy
b2xsZXJJZGVudGlmaWVyIFdlYlByb2Nlc3NQb29sOjp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyRm9yV29ya2VycygpCiB7Ci0gICAgaWYgKCFtX3VzZXJDb250ZW50Q29udHJvbGxlckZv
clNlcnZpY2VXb3JrZXIpCi0gICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yU2Vydmlj
ZVdvcmtlciA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpjcmVhdGUoKTsKKyAgICBp
ZiAoIW1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2VycykKKyAgICAgICAgbV91c2VyQ29u
dGVudENvbnRyb2xsZXJGb3JXb3JrZXJzID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
OmNyZWF0ZSgpOwogCi0gICAgcmV0dXJuIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yU2Vydmlj
ZVdvcmtlci0+aWRlbnRpZmllcigpOworICAgIHJldHVybiBtX3VzZXJDb250ZW50Q29udHJvbGxl
ckZvcldvcmtlcnMtPmlkZW50aWZpZXIoKTsKIH0KICNlbmRpZgogCkBAIC0xMTE5LDE1ICsxMTY3
LDEzIEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKFBh
Z2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAKICAgICBhdXRvIHBhZ2UgPSBwcm9jZXNz
LT5jcmVhdGVXZWJQYWdlKHBhZ2VDbGllbnQsIFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsK
IAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAoIW1fc2VydmljZVdvcmtlclBy
ZWZlcmVuY2VzKSB7Ci0gICAgICAgIG1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzID0gcGFnZS0+
cHJlZmVyZW5jZXNTdG9yZSgpOwotICAgICAgICBmb3IgKGF1dG8mIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzIDogc2VydmljZVdvcmtlclByb2Nlc3NlcygpKQotICAgICAgICAgICAgc2VydmljZVdvcmtl
clByb2Nlc3MudXBkYXRlU2VydmljZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoKm1fc2VydmljZVdv
cmtlclByZWZlcmVuY2VzKTsKKyAgICBpZiAoIW1fd29ya2VyUHJlZmVyZW5jZXMpIHsKKyAgICAg
ICAgbV93b3JrZXJQcmVmZXJlbmNlcyA9IHBhZ2UtPnByZWZlcmVuY2VzU3RvcmUoKTsKKyAgICAg
ICAgZm9yIChhdXRvJiB3b3JrZXJQcm9jZXNzIDogd29ya2VyUHJvY2Vzc2VzKCkpCisgICAgICAg
ICAgICB3b3JrZXJQcm9jZXNzLnVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoKm1fd29ya2Vy
UHJlZmVyZW5jZXMpOwogICAgIH0KICAgICBpZiAodXNlckNvbnRlbnRDb250cm9sbGVyKQotICAg
ICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclNlcnZpY2VXb3JrZXIgPSB1c2VyQ29udGVu
dENvbnRyb2xsZXI7Ci0jZW5kaWYKKyAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JX
b3JrZXJzID0gdXNlckNvbnRlbnRDb250cm9sbGVyOwogCiAgICAgYm9vbCBlbmFibGVQcm9jZXNz
U3dhcE9uQ3Jvc3NTaXRlTmF2aWdhdGlvbiA9IHBhZ2UtPnByZWZlcmVuY2VzKCkucHJvY2Vzc1N3
YXBPbkNyb3NzU2l0ZU5hdmlnYXRpb25FbmFibGVkKCk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKQEAgLTExNTAsMTYgKzExOTYsMTQgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bv
b2w6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSToKICAgICBy
ZXR1cm4gcGFnZTsKIH0KIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnVwZGF0ZVNlcnZpY2VXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2Vy
QWdlbnQpCit2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVXb3JrZXJVc2VyQWdlbnQoY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQpCiB7Ci0gICAgaWYgKG1fc2VydmljZVdvcmtlclVzZXJBZ2VudCA9
PSB1c2VyQWdlbnQpCisgICAgaWYgKG1fd29ya2VyVXNlckFnZW50ID09IHVzZXJBZ2VudCkKICAg
ICAgICAgcmV0dXJuOwotICAgIG1fc2VydmljZVdvcmtlclVzZXJBZ2VudCA9IHVzZXJBZ2VudDsK
LSAgICBmb3IgKGF1dG8mIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogc2VydmljZVdvcmtlclByb2Nl
c3NlcygpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy5zZXRTZXJ2aWNlV29ya2VyVXNl
ckFnZW50KG1fc2VydmljZVdvcmtlclVzZXJBZ2VudCk7CisgICAgbV93b3JrZXJVc2VyQWdlbnQg
PSB1c2VyQWdlbnQ7CisgICAgZm9yIChhdXRvJiB3b3JrZXJQcm9jZXNzIDogd29ya2VyUHJvY2Vz
c2VzKCkpCisgICAgICAgIHdvcmtlclByb2Nlc3Muc2V0V29ya2VyVXNlckFnZW50KG1fd29ya2Vy
VXNlckFnZW50KTsKIH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5V
c2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFdlYnNp
dGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKIHsKQEAgLTE1MzgsOCArMTU4MiwxMyBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjp0ZXJtaW5hdGVTZXJ2aWNlV29ya2VycygpCiB7CiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKLSAgICB3aGls
ZSAoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmNvbXB1dGVTaXplKCkpCi0gICAgICAgIHNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMoKS5iZWdpbigpLT5kaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAg
ICBWZWN0b3I8UmVmPFdlYlByb2Nlc3NQcm94eT4+IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXM7Cisg
ICAgd29ya2VyUHJvY2Vzc2VzKCkuZm9yRWFjaChbJl0oYXV0byYgcHJvY2VzcykgeworICAgICAg
ICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQorICAgICAgICAgICAgc2Vy
dmljZVdvcmtlclByb2Nlc3Nlcy5hcHBlbmQocHJvY2Vzcyk7CisgICAgfSk7CisgICAgZm9yIChh
dXRvJiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMpCisgICAg
ICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6
OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogI2VuZGlmCiB9CiAKQEAgLTE3NjcsMTMgKzE4
MTYsMTEgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVwb3J0V2ViQ29udGVudENQVVRpbWUoU2Vj
b25kcyBjcHVUaW1lLCB1aW50NjRfdCBhY3Rpdml0eVMKICNlbmRpZgogfQogCi0jaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQotV2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5PiYgV2ViUHJvY2Vz
c1Bvb2w6OnNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKQorV2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1By
b3h5PiYgV2ViUHJvY2Vzc1Bvb2w6OndvcmtlclByb2Nlc3NlcygpCiB7CiAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4+IHByb2Nlc3NlczsKICAg
ICByZXR1cm4gcHJvY2Vzc2VzOwogfQotI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVw
ZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkKIHsKQEAgLTE3ODUsMjAgKzE4MzIsMjUgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKQogICAgIGlmIChhdXRvKiBn
cHVQcm9jZXNzID0gR1BVUHJvY2Vzc1Byb3h5OjpzaW5nbGV0b25JZkNyZWF0ZWQoKSkKICAgICAg
ICAgZ3B1UHJvY2Vzcy0+dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbigpOwogI2VuZGlmCi0jaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQorCiAgICAgLy8gQ2hlY2sgb24gbmV4dCBydW4gbG9vcCBzaW5j
ZSB0aGUgd2ViIHByb2Nlc3MgcHJveHkgdG9rZW5zIGFyZSBwcm9iYWJseSBiZWluZyB1cGRhdGVk
LgogICAgIGNhbGxPbk1haW5SdW5Mb29wKFtdIHsKLSAgICAgICAgZm9yIChhdXRvJiBzZXJ2aWNl
V29ya2VyUHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSkKLSAgICAgICAgICAgIHNl
cnZpY2VXb3JrZXJQcm9jZXNzLnVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7
Ci0gICAgfSk7CisgICAgICAgIHdvcmtlclByb2Nlc3NlcygpLmZvckVhY2goW10oYXV0byYgd29y
a2VyUHJvY2VzcykgeworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICAgICAgICAgIGlm
ICh3b3JrZXJQcm9jZXNzLmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCisgICAgICAgICAgICAg
ICAgd29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdlYlByb2Nlc3NQ
cm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiAjZW5kaWYKKyAgICAgICAgICAgIGlm
ICh3b3JrZXJQcm9jZXNzLmlzUnVubmluZ1NoYXJlZFdvcmtlcnMoKSkKKyAgICAgICAgICAgICAg
ICB3b3JrZXJQcm9jZXNzLnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV2ViUHJvY2Vzc1By
b3h5OjpXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpOworICAgICAgICB9KTsKKyAgICB9KTsKIH0K
IAogYm9vbCBXZWJQcm9jZXNzUG9vbDo6aXNTZXJ2aWNlV29ya2VyUGFnZUlEKFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdAogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ICAgICAvLyBGSVhNRTogVGhpcyBpcyBpbmVmZmljaWVudC4KLSAgICByZXR1cm4gV1RGOjphbnlP
ZihzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCksIFtwYWdlSURdKGF1dG8mIHByb2Nlc3MpIHsKKyAg
ICByZXR1cm4gV1RGOjphbnlPZih3b3JrZXJQcm9jZXNzZXMoKSwgW3BhZ2VJRF0oYXV0byYgcHJv
Y2VzcykgewogICAgICAgICByZXR1cm4gcHJvY2Vzcy5oYXNTZXJ2aWNlV29ya2VyUGFnZVByb3h5
KHBhZ2VJRCk7CiAgICAgfSk7CiAjZW5kaWYKQEAgLTIxMjQsMTYgKzIxNzYsMjYgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6c2V0VXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyhib29sIHVz
ZVNlcGFyYXRlU2VydmljZVcKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK3NpemVf
dCBXZWJQcm9jZXNzUG9vbDo6c2VydmljZVdvcmtlclByb3hpZXNDb3VudCgpIGNvbnN0Cit7Cisg
ICAgdW5zaWduZWQgY291bnQgPSAwOworICAgIHdvcmtlclByb2Nlc3NlcygpLmZvckVhY2goWyZd
KGF1dG8mIHByb2Nlc3MpIHsKKyAgICAgICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdv
cmtlcnMoKSkKKyAgICAgICAgICAgICsrY291bnQ7CisgICAgfSk7CisgICAgcmV0dXJuIGNvdW50
OworfQorCiBib29sIFdlYlByb2Nlc3NQb29sOjpoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFj
dGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6YW55T2Yoc2Vydmlj
ZVdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9jZXNzKSB7CisgICAgcmV0dXJuIFdURjo6
YW55T2Yod29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0
dXJuIHByb2Nlc3MuaGFzU2VydmljZVdvcmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3Rpbmco
KTsKICAgICB9KTsKIH0KIAogYm9vbCBXZWJQcm9jZXNzUG9vbDo6aGFzU2VydmljZVdvcmtlckJh
Y2tncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6OmFu
eU9mKHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2VzcykgeworICAgIHJl
dHVybiBXVEY6OmFueU9mKHdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9jZXNzKSB7CiAg
ICAgICAgIHJldHVybiBwcm9jZXNzLmhhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kQWN0aXZpdHlG
b3JUZXN0aW5nKCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaAppbmRleCBlYjY2ZDg5NDkwZGYuLmU3MGI2ZjQyOWY3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0zNzQsMTcgKzM3NCwyMCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0RpZFRlcm1pbmF0ZShOZXR3b3JrUHJvY2Vzc1Byb3h5
JiwgTmV0d29ya1Byb2Nlc3NQcm94eTo6VGVybWluYXRpb25SZWFzb24pOwogCiAgICAgYm9vbCBp
c1NlcnZpY2VXb3JrZXJQYWdlSUQoV2ViUGFnZVByb3h5SWRlbnRpZmllcikgY29uc3Q7CisgICAg
dm9pZCByZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYpOworCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFNlcnZpY2VX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94
eSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRp
ZmllciwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAg
dm9pZCByZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmKTsK
LSAgICBzaXplX3Qgc2VydmljZVdvcmtlclByb3hpZXNDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHNl
cnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb21wdXRlU2l6ZSgpOyB9Ci0gICAgdm9pZCB1cGRhdGVT
ZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKLSAgICBVc2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXJGb3JTZXJ2aWNlV29ya2VycygpOworICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFNlcnZpY2VX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICBzaXplX3Qgc2VydmljZVdvcmtlclBy
b3hpZXNDb3VudCgpIGNvbnN0OworICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIg
dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKTsKICAgICBib29sIGhh
c1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3Q7CiAgICAg
Ym9vbCBoYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0
OwogI2VuZGlmCiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyUHJvY2Vzc0NyYXNoZWQoV2ViUHJvY2Vz
c1Byb3h5Jik7CiAKKyAgICB2b2lkIHVwZGF0ZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcm
IHVzZXJBZ2VudCk7CisgICAgc3RhdGljIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYs
IFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkgY29uc3Q7
CiAjZW5kaWYKQEAgLTYxOCwxMyArNjIxLDExIEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFwPFBB
TDo6U2Vzc2lvbklELCBXZWFrUHRyPFdlYlByb2Nlc3NQcm94eT4+IG1fZHVtbXlQcm9jZXNzUHJv
eGllczsgLy8gTGlnaHR3ZWlnaHQgV2ViUHJvY2Vzc1Byb3h5IG9iamVjdHMgd2l0aG91dCBiYWNr
aW5nIHByb2Nlc3MuCiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgc3RhdGljIFdl
YWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKTsKLSAg
ICBib29sIG1fd2FpdGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNl
IH07Ci0gICAgU3RyaW5nIG1fc2VydmljZVdvcmtlclVzZXJBZ2VudDsKLSAgICBzdGQ6Om9wdGlv
bmFsPFdlYlByZWZlcmVuY2VzU3RvcmU+IG1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzOwotICAg
IFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gbV91c2VyQ29udGVudENvbnRy
b2xsZXJGb3JTZXJ2aWNlV29ya2VyOwotI2VuZGlmCisgICAgc3RhdGljIFdlYWtIYXNoU2V0PFdl
YlByb2Nlc3NQcm94eT4mIHdvcmtlclByb2Nlc3NlcygpOworCisgICAgc3RkOjpvcHRpb25hbDxX
ZWJQcmVmZXJlbmNlc1N0b3JlPiBtX3dvcmtlclByZWZlcmVuY2VzOworICAgIFJlZlB0cjxXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JXb3Jr
ZXJzOworICAgIFN0cmluZyBtX3dvcmtlclVzZXJBZ2VudDsKIAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKICAgICBSZWZQdHI8R1BVUHJvY2Vzc1Byb3h5PiBtX2dwdVByb2Nlc3M7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAwNTdkNDk5MjQxOGEu
LmI3NDZhN2Q3ZDIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNpbmNsdWRl
ICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCkBAIC0xODIsMTEgKzE4MywxMSBAQCBSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9vbCYgcHJv
Y2Vzc1Bvb2wsIFdlYnNpdAogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotUmVmPFdl
YlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JTZXJ2aWNlV29ya2VycyhX
ZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFi
bGVEb21haW4sIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCitSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvcldvcmtlcnMoV29ya2VyVHlwZSB3
b3JrZXJUeXBlLCBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWlu
JiYgcmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUp
CiB7CiAgICAgYXV0byBwcm94eSA9IGFkb3B0UmVmKCpuZXcgV2ViUHJvY2Vzc1Byb3h5KHByb2Nl
c3NQb29sLCAmd2Vic2l0ZURhdGFTdG9yZSwgSXNQcmV3YXJtZWQ6Ok5vLCBDcm9zc09yaWdpbk1v
ZGU6OlNoYXJlZCwgQ2FwdGl2ZVBvcnRhbE1vZGU6OkRpc2FibGVkKSk7CiAgICAgcHJveHktPm1f
cmVnaXN0cmFibGVEb21haW4gPSBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKLSAgICBwcm94
eS0+ZW5hYmxlU2VydmljZVdvcmtlcnMocHJvY2Vzc1Bvb2wudXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllckZvclNlcnZpY2VXb3JrZXJzKCkpOworICAgIHByb3h5LT5lbmFibGVXb3JrZXJz
KHdvcmtlclR5cGUsIHByb2Nlc3NQb29sLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJG
b3JXb3JrZXJzKCkpOwogICAgIHByb3h5LT5jb25uZWN0KCk7CiAgICAgcmV0dXJuIHByb3h5Owog
fQpAQCAtOTk1LDEwICs5OTYsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZEJlY29tZVVu
cmVzcG9uc2l2ZSgpCiAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGlzUmVzcG9uc2l2ZUNhbGxi
YWNrcykKICAgICAgICAgY2FsbGJhY2soaXNXZWJQcm9jZXNzUmVzcG9uc2l2ZSk7CiAKLSAgICAv
LyBJZiB0aGUgd2ViIHByb2Nlc3MgYmVjb21lcyB1bnJlc3BvbnNpdmUgYW5kIG9ubHkgcnVucyBz
ZXJ2aWNlIHdvcmtlcnMsIGtpbGwgaXQgb3Vyc2VsdmVzIHNpbmNlIHRoZXJlIGFyZSBubyBuYXRp
dmUgY2xpZW50cyB0byBkbyBpdC4KLSAgICBpZiAoaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSAm
JiBtX3BhZ2VNYXAuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNF
X0xPR19FUlJPUihQZXJmb3JtYW5jZUxvZ2dpbmcsICJkaWRCZWNvbWVVbnJlc3BvbnNpdmU6IFRl
cm1pbmF0aW5nIHNlcnZpY2Ugd29ya2VyLW9ubHkgd2ViIHByb2Nlc3MgYmVjYXVzZSBpdCBpcyB1
bnJlc3BvbnNpdmUiKTsKLSAgICAgICAgZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgLy8g
SWYgdGhlIHdlYiBwcm9jZXNzIGJlY29tZXMgdW5yZXNwb25zaXZlIGFuZCBvbmx5IHJ1bnMgc2Vy
dmljZS9zaGFyZWQgd29ya2Vycywga2lsbCBpdCBvdXJzZWx2ZXMgc2luY2UgdGhlcmUgYXJlIG5v
IG5hdGl2ZSBjbGllbnRzIHRvIGRvIGl0LgorICAgIGlmIChpc1J1bm5pbmdXb3JrZXJzKCkgJiYg
bV9wYWdlTWFwLmlzRW1wdHkoKSkgeworICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9M
T0dfRVJST1IoUGVyZm9ybWFuY2VMb2dnaW5nLCAiZGlkQmVjb21lVW5yZXNwb25zaXZlOiBUZXJt
aW5hdGluZyB3b3JrZXItb25seSB3ZWIgcHJvY2VzcyBiZWNhdXNlIGl0IGlzIHVucmVzcG9uc2l2
ZSIpOworICAgICAgICBkaXNhYmxlV29ya2Vycyh7IFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIs
IFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciB9KTsKICAgICAgICAgdGVybWluYXRlKCk7CiAgICAg
fQogfQpAQCAtMTY5NCw4ICsxNjk1LDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKGNvbnN0IFVSTCYgdXJsKQogICAgIGF1dG8gcmVn
aXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9OwogICAg
IGlmIChtX3JlZ2lzdHJhYmxlRG9tYWluICYmICptX3JlZ2lzdHJhYmxlRG9tYWluICE9IHJlZ2lz
dHJhYmxlRG9tYWluKSB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgICAgICBkaXNh
YmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICAgICAgZGlzYWJsZVdvcmtlcnMoV29ya2VyVHlwZTo6
U2VydmljZVdvcmtlcik7CiAjZW5kaWYKKwogICAgICAgICAvLyBOdWxsIG91dCByZWdpc3RyYWJs
ZSBkb21haW4gc2luY2UgdGhpcyBwcm9jZXNzIGhhcyBub3cgYmVlbiB1c2VkIGZvciBzZXZlcmFs
IGRvbWFpbnMuCiAgICAgICAgIG1fcmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiB7IH07CiAgICAgICAgIHJldHVybjsKQEAgLTE4NzIsNTQgKzE4NzQsODUgQEAg
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmUmIHMKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAg
ICB9LCAwKTsKIH0KKyNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0U2VydmljZVdv
cmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKK3ZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpzZXRXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiB7Ci0gICAg
QVNTRVJUKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U2V0VXNlckFnZW50IHsgdXNlckFnZW50IH0s
IDApOworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBpZiAobV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb24pCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2VyQWdlbnQgfSwgMCk7CisjZW5kaWYKKyAgICBp
ZiAobV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbikKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2Vy
QWdlbnQgfSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29y
a2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKK3Zv
aWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogewotICAgIEFTU0VSVChtX3NlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbik7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OlVwZGF0ZVByZWZlcmVuY2VzU3RvcmUgeyBzdG9yZSB9LCAwKTsKKyNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCisgICAgaWYgKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQorICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRl
UHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDApOworI2VuZGlmCisgICAgaWYgKG1fc2hhcmVk
V29ya2VySW5mb3JtYXRpb24pCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3Jl
IH0sIDApOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlU2VydmljZVdvcmtlclBy
b2Nlc3NBc3NlcnRpb24oKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByb2Nl
c3NBc3NlcnRpb24oV29ya2VyVHlwZSB3b3JrZXJUeXBlKQogewotICAgIFdFQlBST0NFU1NQUk9Y
WV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9j
ZXNzQXNzZXJ0aW9uOiIpOwotICAgIEFTU0VSVChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbik7
Ci0gICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKKyAgICBhdXRvJiB3b3JrZXJJ
bmZvcm1hdGlvbiA9IHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8gbV9z
aGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA6IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOworICAg
IEFTU0VSVCh3b3JrZXJJbmZvcm1hdGlvbik7CisgICAgaWYgKCF3b3JrZXJJbmZvcm1hdGlvbikK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBzaG91bGRUYWtlRm9yZWdyb3VuZEFjdGl2aXR5
ID0gV1RGOjphbnlPZihtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2Vz
LCBbJl0oYXV0byYgcHJvY2VzcykgeworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQ
cm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb246IHdvcmtlclR5
cGU9JXtwdWJsaWN9cyIsIHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8g
InNoYXJlZCIgOiAic2VydmljZSIpOworCisgICAgLy8gRklYTUU6IENsaWVudHMgZG8gbm90IHBy
b3Blcmx5IGdldCBwb3B1bGF0ZWQgaW4gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiBzbyB3ZSBj
dXJyZW50bHkgdGFrZSBhbiBhc3NlcnRpb24gbm8gbWF0dGVyIHdoYXQuCisgICAgaWYgKHdvcmtl
clR5cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSB7CisgICAgICAgIGlmICghUHJvY2Vz
c1Rocm90dGxlcjo6aXNWYWxpZEZvcmVncm91bmRBY3Rpdml0eSh3b3JrZXJJbmZvcm1hdGlvbi0+
YWN0aXZpdHkpKQorICAgICAgICAgICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90
aHJvdHRsZXIuZm9yZWdyb3VuZEFjdGl2aXR5KCJXb3JrZXIgZm9yIGZvcmVncm91bmQgdmlldyhz
KSJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBib29sIHNob3VsZFRha2VGb3Jl
Z3JvdW5kQWN0aXZpdHkgPSBXVEY6OmFueU9mKHdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9j
ZXNzZXMsIFsmXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiAmcHJvY2VzcyAhPSB0
aGlzICYmICEhcHJvY2Vzcy5tX2ZvcmVncm91bmRUb2tlbjsKICAgICB9KTsKICAgICBpZiAoc2hv
dWxkVGFrZUZvcmVncm91bmRBY3Rpdml0eSkgewotICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRs
ZXI6OmlzVmFsaWRGb3JlZ3JvdW5kQWN0aXZpdHkobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24t
PmFjdGl2aXR5KSkKLSAgICAgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rp
dml0eSA9IG1fdGhyb3R0bGVyLmZvcmVncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9y
IGZvcmVncm91bmQgdmlldyhzKSJfcyk7CisgICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6
aXNWYWxpZEZvcmVncm91bmRBY3Rpdml0eSh3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQor
ICAgICAgICAgICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuZm9y
ZWdyb3VuZEFjdGl2aXR5KCJXb3JrZXIgZm9yIGZvcmVncm91bmQgdmlldyhzKSJfcyk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBib29sIHNob3VsZFRha2VCYWNrZ3JvdW5kQWN0aXZp
dHkgPSBXVEY6OmFueU9mKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNz
ZXMsIFsmXShhdXRvJiBwcm9jZXNzKSB7CisgICAgYm9vbCBzaG91bGRUYWtlQmFja2dyb3VuZEFj
dGl2aXR5ID0gV1RGOjphbnlPZih3b3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2VzLCBb
Jl0oYXV0byYgcHJvY2VzcykgewogICAgICAgICByZXR1cm4gJnByb2Nlc3MgIT0gdGhpcyAmJiAh
IXByb2Nlc3MubV9iYWNrZ3JvdW5kVG9rZW47CiAgICAgfSk7CiAgICAgaWYgKHNob3VsZFRha2VC
YWNrZ3JvdW5kQWN0aXZpdHkpIHsKLSAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1Zh
bGlkQmFja2dyb3VuZEFjdGl2aXR5KG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0
eSkpCi0gICAgICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBt
X3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2VyIGZvciBiYWNrZ3Jv
dW5kIHZpZXcocykiX3MpOworICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRC
YWNrZ3JvdW5kQWN0aXZpdHkod29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKKyAgICAgICAg
ICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRB
Y3Rpdml0eSgiV29ya2VyIGZvciBiYWNrZ3JvdW5kIHZpZXcocykiX3MpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgaWYgKG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNz
aW5nKSB7CisgICAgaWYgKHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciAm
JiBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZykgewogICAgICAgICBXRUJQ
Uk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJTZXJ2aWNlIFdvcmtl
ciBmb3IgYmFja2dyb3VuZCBwcm9jZXNzaW5nIik7Ci0gICAgICAgIGlmICghUHJvY2Vzc1Rocm90
dGxlcjo6aXNWYWxpZEJhY2tncm91bmRBY3Rpdml0eShtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlv
bi0+YWN0aXZpdHkpKQotICAgICAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFj
dGl2aXR5ID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBm
b3IgYmFja2dyb3VuZCBwcm9jZXNzaW5nIl9zKTsKKyAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0
bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0
eSkpCisgICAgICAgICAgICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxl
ci5iYWNrZ3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2VyIGZvciBiYWNrZ3JvdW5kIHByb2Nl
c3NpbmciX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbnVsbHB0cjsKKyAgICB3b3JrZXJJbmZvcm1hdGlvbi0+
YWN0aXZpdHkgPSBudWxscHRyOworfQorCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZXN0YWJsaXNo
U2hhcmVkV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgV0VCUFJPQ0VTU1BST1hZX1JF
TEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHQ6IFN0
YXJ0ZWQiKTsKKyAgICBtYXJrUHJvY2Vzc0FzUmVjZW50bHlVc2VkKCk7CisgICAgc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRlZmF1bHRQYWdl
R3JvdXAoKS5wYWdlR3JvdXBJRCgpLCBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uLT5yZW1vdGVX
b3JrZXJQYWdlUHJveHlJRCwgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbi0+cmVtb3RlV29ya2Vy
UGFnZUlELCBzdG9yZSwgcmVnaXN0cmFibGVEb21haW4sIG1fc2hhcmVkV29ya2VySW5mb3JtYXRp
b24tPmluaXRpYWxpemF0aW9uRGF0YSB9LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRo
aXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgV0VCUFJPQ0VTU1BS
T1hZX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRl
eHQ6IEZpbmlzaGVkIik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSwgMCk7
CiB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJv
eHkpCiB7CiAgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKQEAgLTE5MjcsNyAr
MTk2MCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCiAKICAgICBXRUJQUk9DRVNTUFJPWFlf
UkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgInJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFBy
b2Nlc3M6IGNsaWVudFByb2Nlc3M9JXAsIGNsaWVudFBJRD0lZCIsICZwcm94eSwgcHJveHkucHJv
Y2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNsaWVu
dFByb2Nlc3Nlcy5hZGQocHJveHkpOwotICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNz
ZXJ0aW9uKCk7CisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlOjpT
ZXJ2aWNlV29ya2VyKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVucmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb3h5KQpAQCAtMTkzNyw3
ICsxOTcwLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
Q2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb3gKIAogICAgIFdFQlBST0NFU1NQUk9Y
WV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAidW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnRQcm9jZXNzOiBjbGllbnRQcm9jZXNzPSVwLCBjbGllbnRQSUQ9JWQiLCAmcHJveHksIHByb3h5
LnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5j
bGllbnRQcm9jZXNzZXMucmVtb3ZlKHByb3h5KTsKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJv
Y2Vzc0Fzc2VydGlvbigpOworICAgIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2Vy
VHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpoYXNTZXJ2
aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0CkBAIC0xOTU3LDcg
KzE5OTAsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c3RhcnRTZXJ2aWNlV29ya2VyQmFja2dy
b3VuZFByb2Nlc3NpbmcoKQogCiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nl
c3NTdXNwZW5zaW9uLCAic3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmciKTsK
ICAgICBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyA9IHRydWU7Ci0gICAg
dXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKKyAgICB1cGRhdGVXb3JrZXJQ
cm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogfQogCiB2b2lkIFdl
YlByb2Nlc3NQcm94eTo6ZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKCkKQEAg
LTE5NjcsMjMgKzIwMDAsMzkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3Jr
ZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZygpCiAKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9M
T0coUHJvY2Vzc1N1c3BlbnNpb24sICJlbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3Np
bmciKTsKICAgICBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyA9IGZhbHNl
OwotICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBkYXRl
V29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KICNl
bmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpk
aXNhYmxlU2VydmljZVdvcmtlcnMoKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpc2FibGVXb3Jr
ZXJzKE9wdGlvblNldDxXb3JrZXJUeXBlPiB3b3JrZXJUeXBlKQogewotICAgIGlmICghbV9zZXJ2
aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAgQVNTRVJUKCF3b3JrZXJUeXBlLmlzRW1wdHkoKSk7
CisKKyAgICBib29sIGRpZENoYW5nZSA9IGZhbHNlOworICAgIGlmICh3b3JrZXJUeXBlLmNvbnRh
aW5zKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpICYmIG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uKSB7CisgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uID0geyB9OworICAgICAg
ICBkaWRDaGFuZ2UgPSB0cnVlOworICAgIH0KKyAgICBpZiAod29ya2VyVHlwZS5jb250YWlucyhX
b3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpICYmIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24pIHsK
KyAgICAgICAgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA9IHsgfTsKKyAgICAgICAgZGlkQ2hh
bmdlID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKCFkaWRDaGFuZ2UpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiZGlzYWJs
ZVNlcnZpY2VXb3JrZXJzOiIpOwotICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uID0geyB9
OworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzLCAiZGlzYWJsZVdvcmtl
cnM6IERpc2FibGluZyB3b3JrZXJzIChTaGFyZWRXb3JrZXJzPSVkLCBTZXJ2aWNlV29ya2Vycz0l
ZCkiLCB3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciksIHdvcmtl
clR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikpOworCiAgICAgdXBkYXRl
QmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKIAorICAgIGlmICghaXNSdW5uaW5nV29y
a2VycygpKQorICAgICAgICBwcm9jZXNzUG9vbCgpLnJlbW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMo
KnRoaXMpOworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHByb2Nlc3NQb29sKCku
cmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKnRoaXMpOwotICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9zZSB7IH0sIDApOworICAgIGlm
ICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpKQorICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q2xvc2UgeyB9
LCAwKTsKICNlbmRpZgorICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNo
YXJlZFdvcmtlcikpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q2xvc2UgeyB9LCAwKTsKIAogICAgIG1heWJlU2h1dERvd24o
KTsKIH0KQEAgLTIwMDQsMTEgKzIwNTMsMTMgQEAgc3RhdGljIFZlY3RvcjxzdGQ6OnBhaXI8V2Vi
Q29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLCBVUkw+PiBjb250ZW50UnVsZUxpc3RzRnIKIH0K
ICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlU2VydmljZVdvcmtlcnMoY29u
c3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYgdXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllcikKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVXb3JrZXJzKFdvcmtlclR5
cGUgd29ya2VyVHlwZSwgY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYgdXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKIHsKLSAgICBBU1NFUlQoIW1fc2VydmljZVdv
cmtlckluZm9ybWF0aW9uKTsKLSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2Vydmlj
ZVdvcmtlciwgImVuYWJsZVNlcnZpY2VXb3JrZXJzOiIpOwotICAgIG1fc2VydmljZVdvcmtlcklu
Zm9ybWF0aW9uID0gUmVtb3RlV29ya2VySW5mb3JtYXRpb24geworICAgIFdFQlBST0NFU1NQUk9Y
WV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiZW5hYmxlV29ya2Vyczogd29ya2VyVHlwZT0l
dSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih3b3JrZXJUeXBlKSk7CisgICAgYXV0byYgd29ya2Vy
SW5mb3JtYXRpb24gPSB3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/IG1f
c2hhcmVkV29ya2VySW5mb3JtYXRpb24gOiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsKKyAg
ICBBU1NFUlQoIXdvcmtlckluZm9ybWF0aW9uKTsKKworICAgIHdvcmtlckluZm9ybWF0aW9uID0g
UmVtb3RlV29ya2VySW5mb3JtYXRpb24gewogICAgICAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpLAogICAgICAgICBQYWdlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwKICAgICAg
ICAgUmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhIHsKQEAgLTIwMjEsOSArMjA3Miw4IEBA
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVTZXJ2aWNlV29ya2Vycyhjb25zdCBVc2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyCiAgICAgICAgIHsgfQogICAgIH07CiAgICAgdXBkYXRl
QmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKLSNlbmRpZgor
CisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbih3b3JrZXJUeXBlKTsKIH0KIAogdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OmRpZENyZWF0ZVNsZWVwRGlzYWJsZXIoU2xlZXBEaXNhYmxlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiByZWFzb24sIGJvb2wgZGlzcGxheSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggZjhiNzk1YjFk
MzQzLi43MGU4OTA1MWNjYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oCkBAIC0xMzYsOSArMTM2LDEzIEBAIHB1YmxpYzoKIAogICAgIGVudW0gY2xhc3MgU2hv
dWxkTGF1bmNoUHJvY2VzcyA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgZW51bSBjbGFzcyBDYXB0
aXZlUG9ydGFsTW9kZSA6IGJvb2wgeyBEaXNhYmxlZCwgRW5hYmxlZCB9OworICAgIGVudW0gY2xh
c3MgV29ya2VyVHlwZSA6IHVpbnQzMl90IHsKKyAgICAgICAgU2VydmljZVdvcmtlciA9IDEgPDwg
MCwKKyAgICAgICAgU2hhcmVkV29ya2VyID0gMSA8PCAxCisgICAgfTsKIAogICAgIHN0YXRpYyBS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmLCBXZWJzaXRlRGF0YVN0
b3JlKiwgQ2FwdGl2ZVBvcnRhbE1vZGUsIElzUHJld2FybWVkLCBXZWJDb3JlOjpDcm9zc09yaWdp
bk1vZGUgPSBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGU6OlNoYXJlZCwgU2hvdWxkTGF1bmNoUHJv
Y2VzcyA9IFNob3VsZExhdW5jaFByb2Nlc3M6Olllcyk7Ci0gICAgc3RhdGljIFJlZjxXZWJQcm9j
ZXNzUHJveHk+IGNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKFdlYlByb2Nlc3NQb29sJiwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mJiwgV2Vic2l0ZURhdGFTdG9yZSYpOworICAgIHN0YXRpYyBS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGVGb3JXb3JrZXJzKFdvcmtlclR5cGUsIFdlYlByb2Nl
c3NQb29sJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgV2Vic2l0ZURhdGFTdG9yZSYp
OwogCiAgICAgfldlYlByb2Nlc3NQcm94eSgpOwogCkBAIC0xNjEsOCArMTY1LDggQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0SXNJblByb2Nlc3NDYWNoZShib29sLCBXaWxsU2h1dERvd24gPSBXaWxs
U2h1dERvd246Ok5vKTsKICAgICBib29sIGlzSW5Qcm9jZXNzQ2FjaGUoKSBjb25zdCB7IHJldHVy
biBtX2lzSW5Qcm9jZXNzQ2FjaGU7IH0KIAotICAgIHZvaWQgZW5hYmxlU2VydmljZVdvcmtlcnMo
Y29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYpOwotICAgIHZvaWQgZGlzYWJs
ZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgdm9pZCBlbmFibGVXb3JrZXJzKFdvcmtlclR5cGUsIGNv
bnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImKTsKKyAgICB2b2lkIGRpc2FibGVX
b3JrZXJzKE9wdGlvblNldDxXb3JrZXJUeXBlPik7CiAKICAgICBXZWJzaXRlRGF0YVN0b3JlJiB3
ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyBBU1NFUlQobV93ZWJzaXRlRGF0YVN0b3JlKTsgcmV0
dXJuICptX3dlYnNpdGVEYXRhU3RvcmU7IH0KICAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUo
V2Vic2l0ZURhdGFTdG9yZSYpOwpAQCAtMTk0LDYgKzE5OCw5IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSBjb25zdCB7IHJldHVybiAhIW1fc2VydmljZVdv
cmtlckluZm9ybWF0aW9uOyB9CiAgICAgYm9vbCBpc1N0YW5kYWxvbmVTZXJ2aWNlV29ya2VyUHJv
Y2VzcygpIGNvbnN0IHsgcmV0dXJuIGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkgJiYgIXBhZ2VD
b3VudCgpOyB9CisgICAgYm9vbCBpc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkgY29uc3QgeyByZXR1
cm4gISFtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uOyB9CisgICAgYm9vbCBpc1N0YW5kYWxvbmVT
aGFyZWRXb3JrZXJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gaXNSdW5uaW5nU2hhcmVkV29ya2Vy
cygpICYmICFwYWdlQ291bnQoKTsgfQorICAgIGJvb2wgaXNSdW5uaW5nV29ya2VycygpIGNvbnN0
IHsgcmV0dXJuIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gfHwgbV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb247IH0KIAogICAgIGJvb2wgaXNEdW1teVByb2Nlc3NQcm94eSgpIGNvbnN0OwogCkBA
IC0zNTksMTIgKzM2NiwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZUF1ZGlibGVNZWRp
YUFzc2VydGlvbnMoKTsKIAorICAgIHZvaWQgc2V0V29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmlu
ZyYpOworICAgIHZvaWQgdXBkYXRlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVm
ZXJlbmNlc1N0b3JlJik7CisgICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0KGNv
bnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCB1cGRhdGVXb3JrZXJQ
cm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGUpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ICAgICB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVu
Y2VzU3RvcmUmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3Jr
ZXJQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lk
IHNldFNlcnZpY2VXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCB1cGRh
dGVTZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3Jl
Jik7CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyUGFnZVByb3h5KFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgcGFnZVByb3h5SUQpIHsgcmV0dXJuIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uICYm
IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5yZW1vdGVXb3JrZXJQYWdlUHJveHlJRCA9PSBw
YWdlUHJveHlJRDsgfQotICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRp
b24oKTsKICAgICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJv
Y2Vzc1Byb3h5Jik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nl
c3MoV2ViUHJvY2Vzc1Byb3h5Jik7CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3Vu
ZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0OwpAQCAtNjU2LDYgKzY2NCw3IEBAIHByaXZhdGU6
CiAgICAgICAgIFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4gY2xpZW50UHJvY2Vzc2VzOwog
ICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxSZW1vdGVXb3JrZXJJbmZvcm1hdGlvbj4gbV9zZXJ2
aWNlV29ya2VySW5mb3JtYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxSZW1vdGVXb3JrZXJJbmZv
cm1hdGlvbj4gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbjsKICAgICBib29sIG1faGFzU2Vydmlj
ZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nIHsgZmFsc2UgfTsKIAogICAgIEhhc2hNYXA8V2Vi
Q29yZTo6U2xlZXBEaXNhYmxlcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpT
bGVlcERpc2FibGVyPj4gbV9zbGVlcERpc2FibGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE1NmY3MDMxZGYxMi4uMGM3ZjZhMmQx
ZDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTg4MSw2ICs4ODEsNyBAQAogCQk0NjE0RjEzMjI1REVEODc1MDA3MDA2RTcgLyogR1BV
UHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NkFDNTMyNDI1REVEODFFMDAzQjU3RUMgLyogR1BVUHJvY2Vz
c0Nvbm5lY3Rpb25QYXJhbWV0ZXJzLmggKi87IH07CiAJCTQ2MUNDQ0E1MjMxNDg1QTcwMEI2NTlC
OSAvKiBVSVJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjMyMzY4NTIzMTQ4MzNGMDBBNDhGQTcgLyogVUlSZW1vdGVP
YmplY3RSZWdpc3RyeS5oICovOyB9OwogCQk0NjFDQ0NBNjIzMTQ4NUFBMDBCNjU5QjkgLyogV2Vi
UmVtb3RlT2JqZWN0UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2MzIzNjgzMjMxNDgxRUYwMEE0OEZBNyAvKiBXZWJSZW1vdGVPYmplY3RS
ZWdpc3RyeS5oICovOyB9OworCQk0NjFFMUJGMjI3OUEwMTE2MDA2QUY1M0IgLyogV2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjFFMUJFRjI3OUEwMTBGMDA2QUY1M0IgLyogV2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2M0ZENDgwMUVC
OTQ1OTYwMEEyOTgyQyAvKiBXS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzRkQ0N0YxRUI5NDU4NDAwQTI5
ODJDIC8qIFdLUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYzRkQ0ODIxRUI5NEVDMDAwQTI5ODJDIC8q
IFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDYzRkQ0ODExRUI5NEVBRDAwQTI5ODJDIC8qIFByb2Nlc3NUZXJt
aW5hdGlvblJlYXNvbi5oICovOyB9OwogCQk0NjU5RjI1RjI3NUZGNkIyMDBCQkIzNjkgLyogQ2Fw
dGl2ZVBvcnRhbE1vZGVPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDY1OUYyNUUyNzVGRjZCMjAwQkJCMzY5IC8qIENhcHRpdmVQb3J0YWxN
b2RlT2JzZXJ2ZXIuaCAqLzsgfTsKQEAgLTkwMSwxMCArOTAyLDEzIEBACiAJCTQ2QzM5MjI5MjMx
NkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkMzOTIyODIzMTZFQzREMDA4RUVEOUIg
LyogV2ViUGFnZVByb3h5SWRlbnRpZmllci5oICovOyB9OwogCQk0NkM1QjdDRTI3QUFEREQzMDAw
QzVCNDcgLyogUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzVCN0NEMjdBQUREQkUwMDBDNUI0NyAv
KiBSZW1vdGVXb3JrZXJGcmFtZUxvYWRlckNsaWVudC5oICovOyB9OwogCQk0NkM1QjdDRjI3QUFE
REQ2MDAwQzVCNDcgLyogUmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzVCN0NCMjdBQUREQkUwMDBD
NUI0NyAvKiBSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92aWRlci5oICovOyB9OworCQk0NkM5MTZB
QTI3OTlEMEEyMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM5MTZBOTI3OTlEMDlEMDAxQTRF
N0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggKi87IH07CiAJCTQ2Q0UzQjExMjNEOEM4NDkw
MDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Q0UzQjEwMjNEOEM4M0QwMDE2QTk2QSAvKiBX
ZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCAqLzsgfTsKKwkJNDZENDhGQ0UyNzk5RDdFMTAwN0Qy
MDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RDQ4RkNEMjc5OUQ3REUw
MDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi87
IH07CiAJCTQ2REYwNjNDMUYzOTA1RjgwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENo
ZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
REYwNjNBMUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCAq
LzsgfTsKIAkJNDZFRTI4NDkyNjlFMDRBQzAwREQ0OEFCIC8qIFdlYkJyb2FkY2FzdENoYW5uZWxS
ZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDZFRTI4NDgyNjlFMDQ5QjAwREQ0OEFCIC8qIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5o
ICovOyB9OwogCQk0NkVFMjg0RDI2OUUwNTI1MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZFRTI4NEMyNjlFMDUxNzAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVs
UmVnaXN0cnkuaCAqLzsgfTsKKwkJNDZFRTNFOEIyNzYzRkQyRjAwNjBDNzBGIC8qIFdlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2ODM4NjY3Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2RjM4RThDMjQxNkU2NzMwMDU5Mzc1QSAv
KiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZGMzhFOEIyNDE2RTY2RDAwNTkzNzVBIC8qIFJ1bm5pbmdCb2Fy
ZFNlcnZpY2VzU1BJLmggKi87IH07CiAJCTQ2RjlCMjYzMjM1MjZFRjMwMDZGRTVGQSAvKiBXZWJC
YWNrRm9yd2FyZENhY2hlRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2RjlCMjYyMjM1MjZFRDAwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENh
Y2hlRW50cnkuaCAqLzsgfTsKIAkJNDkzMTAyQkQyNjgzRjNEMDAwMkJCODg1IC8qIEFwcFByaXZh
Y3lSZXBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ5MzEwMkJDMjY4M0YzQTUwMDJCQjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggKi87IH07CkBA
IC00MjE3LDYgKzQyMjEsOSBAQAogCQk0NjA4ODlGRjI2MUZBOEE5MDBFMjUwMEQgLyogUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2MEY0ODhEMUY5OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZl
ci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwogCQk0NjBGNDg4RTFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291
cmNlcy9XZWJLaXQvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk0NjFFMUJFQzI3OUEwMTBFMDA2QUY1
M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MUUxQkVG
Mjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2
MUUxQkYwMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NjIxMDdENzFGMzhEQkQzMDBERDc4MTAgLyogUGluZ0xvYWQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGluZ0xvYWQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NjMyMzY4MzIzMTQ4MUVGMDBBNDhGQTcgLyogV2ViUmVt
b3RlT2JqZWN0UmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVtb3RlT2JqZWN0UmVnaXN0
cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzMjM2ODQyMzE0ODI1QzAwQTQ4
RkE3IC8qIFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTQyNDgsOCArNDI1NSwxMSBAQAogCQk0NjgwOUE3QjIzRDkyMjUzMDBDMjk3RDAgLyogV2ViQ29v
a2llQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29v
a2llQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgzNTY5QTIxRTgx
Q0M3MDA2RTI3QTMgLyogUHJvdmlzaW9uYWxQYWdlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUHJvdmlzaW9uYWxQYWdlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDY4MzU2OUIyMUU4MUNDNzAwNkUyN0EzIC8qIFByb3Zpc2lvbmFsUGFnZVBy
b3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb3Zpc2lvbmFs
UGFnZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4Mzg2NjcyNzYz
RkFCMTAwQ0Y5MTgyIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0NjgzODY2ODI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4
OUI5MEYyNzU2RDE0MzAwMDdDNjUxIC8qIFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDY4OUI5MTAyNzU2RDE0MzAwMDdDNjUxIC8qIFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RDQjI3NjNGODM0MDA0QjYxMEUgLyogV2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NjlERTgwMjI3M0VDQzVEMDA5MzAyNzYgLyogUHJvY2Vzc0xhdW5jaGVyQ29jb2EubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcm9jZXNzTGF1bmNoZXJD
b2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZBMkI2MDYxRTU2NzVBMjAw
QzNERURBIC8qIEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNp
dmVuZXNzVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkEyQjYwNzFF
NTY3NUEyMDBDM0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhY2tncm91bmRQcm9jZXNzUmVzcG9u
c2l2ZW5lc3NUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI2OCw3ICs0
Mjc4LDExIEBACiAJCTQ2QzVCN0NCMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJMaWJX
ZWJSVENQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92
aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkM1QjdDQzI3QUFEREJFMDAw
QzVCNDcgLyogUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NkM1QjdDRDI3QUFEREJFMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyRnJh
bWVMb2FkZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJD
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZDOTE2QTgyNzk5RDA5RDAw
MUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
NkM5MTZBOTI3OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NkNFM0IxMDIzRDhDODNEMDAxNkE5NkEgLyogV2ViQmFja0ZvcndhcmRMaXN0Q291
bnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkTGlz
dENvdW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkQ0OEZDQzI3OTlEN0RE
MDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZENDhGQ0QyNzk5RDdERTAw
N0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRGMDYzOTFGMzkwNUU1MDAxOTgwQkIgLyog
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2REYwNjNBMUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0
d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2RTk3NjBBMjc1N0Y2QzkwMEFDREQzNyAvKiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnku
bWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViQnJvYWRjYXN0Q2hhbm5lbFJl
Z2lzdHJ5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI3OCw2
ICs0MjkyLDcgQEAKIAkJNDZFRTI4NEEyNjlFMDUxNzAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNh
c3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmV0
d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDZFRTI4NEIyNjlFMDUxNzAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNh
c3RDaGFubmVsUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2RUUyODRDMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0
Q2hhbm5lbFJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdv
cmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDZFRTNFOEEyNzYzRkQyQTAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZGMzhFOEIyNDE2RTY2
RDAwNTkzNzVBIC8qIFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2RjlCMjYyMjM1MjZFRDAwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2Fy
ZENhY2hlRW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0Zv
cndhcmRDYWNoZUVudHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5MzEwMkJD
MjY4M0YzQTUwMDJCQjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFw
cFByaXZhY3lSZXBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkyNzksNiAr
OTI5NCwyMCBAQAogCQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
IAkJfTsKKwkJNDY4Mzg2NjUyNzYzRkExQjAwQ0Y5MTgyIC8qIFNoYXJlZFdvcmtlciAqLyA9IHsK
KwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNDZDOTE2QTgyNzk5RDA5
RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAgKi8sCisJCQkJNDZDOTE2QTky
Nzk5RDA5RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5oICovLAorCQkJCTQ2ODM4
NjY4Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNw
cCAqLywKKwkJCQk0NjgzODY2NzI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbi5oICovLAorCQkJCTQ2RUUzRThBMjc2M0ZEMkEwMDYwQzcwRiAvKiBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovLAorCQkJCTQ2RDQ4RkND
Mjc5OUQ3REQwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcCAqLywKKwkJCQk0NkQ0OEZDRDI3OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oICovLAorCQkJKTsKKwkJCXBhdGggPSBTaGFy
ZWRXb3JrZXI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk0NjlERTgwMTI3
M0VDQzVEMDA5MzAyNzYgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKApAQCAtOTM0Myw2ICs5MzcyLDcgQEAKIAkJCQk1MTQ1MjZFQTI3MUUxNjEwMDAw
NDY3QjYgLyogTm90aWZpY2F0aW9ucyAqLywKIAkJCQk1QzAxQkMzNTI2RDQ2QUQ0MDBGRUI0MkYg
LyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgKi8sCiAJCQkJOTNCQTA0RDkyMTUxQURDRDAwN0Y0
NTVGIC8qIFNlcnZpY2VXb3JrZXIgKi8sCisJCQkJNDY4Mzg2NjUyNzYzRkExQjAwQ0Y5MTgyIC8q
IFNoYXJlZFdvcmtlciAqLywKIAkJCQk5MzA4NURDMjI2RTFCQjY1MDAwRUM2QTcgLyogc3RvcmFn
ZSAqLywKIAkJCQk0MTMwNzU5NzFERTg0RUQ3MDAzOUVDNjkgLyogd2VicnRjICovLAogCQkJCTkz
QjI2MTQzMjI3RDE0MzEwMEI5N0E3NiAvKiBXZWJTdG9yYWdlICovLApAQCAtOTQ0NSw4ICs5NDc1
LDEyIEBACiAJCQkJNDE5QUNGOUIxRjk4MUQyNjAwOUYxQTgzIC8qIFdlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQuaCAqLywKIAkJCQk1MUJFQjYyOTFGM0E1QUNEMDA1MDI5QjkgLyogV2Vi
U2VydmljZVdvcmtlclByb3ZpZGVyLmNwcCAqLywKIAkJCQk1MUJFQjYyQTFGM0E1QUNEMDA1MDI5
QjkgLyogV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmggKi8sCisJCQkJNDYxRTFCRUMyNzlBMDEw
RTAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAg
Ki8sCisJCQkJNDYxRTFCRUYyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5oICovLAorCQkJCTQ2MUUxQkYwMjc5QTAxMEYwMDZBRjUzQiAv
KiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8s
CiAJCQkJNDY2OEEwQkIyN0FCNjA0MDAwQzcyMEJDIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24uY3BwICovLAogCQkJCTQ2NjhBMEI4MjdBQjYwM0YwMEM3MjBCQyAvKiBXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggKi8sCisJCQkJNDY5NDNEQ0IyNzYzRjgzNDAwNEI2
MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCiAJ
CQkJNDY2OEEwQjkyN0FCNjAzRjAwQzcyMEJDIC8qIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmNw
cCAqLywKIAkJCQk0NjY4QTBCQTI3QUI2MDQwMDBDNzIwQkMgLyogV2ViU2hhcmVkV29ya2VyUHJv
dmlkZXIuaCAqLywKIAkJCQk1MTdBNTMwMzFGNDc5M0IyMDBEQ0RDMEEgLyogV2ViU1dDbGllbnRD
b25uZWN0aW9uLmNwcCAqLywKQEAgLTEzNjMzLDggKzEzNjY3LDEyIEBACiAJCQkJN0MzNjFENzMx
OTI3RkEzNjAwMzZBNTlEIC8qIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlEM0I5NDg0OTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MUJFQjYyQzFGM0E1QUQ3MDA1MDI5QjkgLyogV2ViU2Vydmlj
ZVdvcmtlclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjFFMUJGMjI3OUEwMTE2MDA2
QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0NjY4QTBCRDI3QUI2MDU2MDBDNzIwQkMgLyogV2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY2OEEwQkMyN0FCNjA1MDAw
QzcyMEJDIC8qIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0
NkM5MTZBQTI3OTlEMEEyMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0NkVFM0U4QjI3NjNGRDJGMDA2MEM3MEYgLyogV2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZENDhGQ0UyNzk5RDdFMTAw
N0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTVDOEREMzgwMUZFNDUyMTYwMEYyQTU1NiAvKiBXZWJzaXRlQXV0b3Bs
YXlQb2xpY3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDgzMkQ3MUE5Q0RGOTYwMDhCNERGRSAv
KiBXZWJzaXRlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0ODMyRDExQTlCREMyRjAwOEI0
REZFIC8qIFdlYnNpdGVEYXRhUmVjb3JkLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCmluZGV4IDgxZGQwNDExYTIzOS4uYmIzNTQ3ZjQ2YWQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5jcHAKQEAgLTU3LDcgKzU3LDEwIEBACiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmgiCisj
aW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgiCisjaW5j
bHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vi
U29ja2V0Q2hhbm5lbC5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWxNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlNvY2tldFN0cmVhbS5oIgpAQCAtMTc0LDYgKzE3NywxNiBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUAogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCisgICAgaWYg
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgc2hh
cmVkV29ya2VyQ29ubmVjdGlvbigpLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNl
aXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgQVNTRVJUKFNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpOworICAgICAgICBp
ZiAoYXV0byogY29udGV4dE1hbmFnZXJDb25uZWN0aW9uID0gU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAgICAgIHN0YXRpY19jYXN0
PFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiY+KCpjb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24pLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAg
ICAgICByZXR1cm47CisgICAgfQogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAg
ICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uaAppbmRleCBlZGMwNDkzYmQzZWQuLjBiNjQ4MGE2MWQzNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgZW51bSBjbGFzcyBIVFRQQ29va2llQWNjZXB0UG9saWN5
IDogdWludDhfdDsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXI7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOwogY2xhc3Mg
V2ViU1dDbGllbnRDb25uZWN0aW9uOwogY2xhc3MgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44NDMwNjQ3NjY1
ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTI5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAiTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZVdlYkxvY2tS
ZWdpc3RyeS5oIgorI2luY2x1ZGUgIlJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50LmgiCisj
aW5jbHVkZSAiUmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJC
cm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJXZWJDYWNoZVN0b3JhZ2VQcm92
aWRlci5oIgorI2luY2x1ZGUgIldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5oIgorI2lu
Y2x1ZGUgIldlYkRhdGFiYXNlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5j
bHVkZSAiV2ViUHJlZmVyZW5jZXNLZXlzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2lu
Y2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5o
IgorI2luY2x1ZGUgIldlYlNvY2tldFByb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9FbXB0eUNsaWVudHMuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1BhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VDb25maWd1cmF0aW9u
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1VzZXJBZ2VudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyRmV0Y2hSZXN1bHQuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6
OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBhZ2VHcm91cElkZW50aWZpZXIgcGFn
ZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgcHJlZmVy
ZW5jZXNTdG9yZSwgUmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYgaW5pdGlhbGl6YXRp
b25EYXRhKQorICAgIDogbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXVEZNb3ZlKGNvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKSkKKyAgICAsIG1fcmVnaXN0cmFibGVEb21haW4oV1RGTW92
ZShyZWdpc3RyYWJsZURvbWFpbikpCisgICAgLCBtX3BhZ2VHcm91cElEKHBhZ2VHcm91cElEKQor
ICAgICwgbV93ZWJQYWdlUHJveHlJRCh3ZWJQYWdlUHJveHlJRCkKKyAgICAsIG1fcGFnZUlEKHBh
Z2VJRCkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAsIG1fdXNlckFnZW50KFdlYkNvcmU6OnN0
YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSh7IH0pKQorI2Vsc2UKKyAgICAsIG1f
dXNlckFnZW50KHN0YW5kYXJkVXNlckFnZW50KCkpCisjZW5kaWYKKyAgICAsIG1fdXNlckNvbnRl
bnRDb250cm9sbGVyKFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6Z2V0T3JDcmVhdGUoaW5pdGlh
bGl6YXRpb25EYXRhLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpKQoreworI2lmIEVO
QUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFk
ZENvbnRlbnRSdWxlTGlzdHMoV1RGTW92ZShpbml0aWFsaXphdGlvbkRhdGEuY29udGVudFJ1bGVM
aXN0cykpOworI2VuZGlmCisKKyAgICB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKHByZWZlcmVuY2Vz
U3RvcmUpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmRpc2FibGVUZXJtaW5hdGlvbigp
OworfQorCitXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246On5XZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CisKK3ZvaWQgV2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjplc3RhYmxpc2hDb25uZWN0aW9u
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBt
X2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250
ZXh0Q29ubmVjdGlvbiB7IG1fd2ViUGFnZVByb3h5SUQsIG1fcmVnaXN0cmFibGVEb21haW4gfSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIDApOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdl
YkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjpQb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QgeyBzaGFyZWRXb3JrZXJJZGVudGlm
aWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMIH0s
IDApOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
dXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkK
K3sKKyAgICBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlc0dlbmVyYXRlZChzdG9yZSk7CisgICAg
bV9wcmVmZXJlbmNlc1N0b3JlID0gc3RvcmU7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpsYXVuY2hTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiYgb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdv
cmtlcklkZW50aWZpZXIsIFVSTCYmIHVybCwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmIHdvcmtl
ck9wdGlvbnMsIFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYgd29ya2VyRmV0Y2hSZXN1bHQp
Cit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpsYXVuY2hTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50
aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAg
IGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBXZWJDb3JlOjpwYWdlQ29uZmlndXJhdGlvbldpdGhF
bXB0eUNsaWVudHMoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2Vzc2lvbklEKCkpOworCisgICAg
cGFnZUNvbmZpZ3VyYXRpb24uZGF0YWJhc2VQcm92aWRlciA9IFdlYkRhdGFiYXNlUHJvdmlkZXI6
OmdldE9yQ3JlYXRlKG1fcGFnZUdyb3VwSUQpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnNvY2tl
dFByb3ZpZGVyID0gV2ViU29ja2V0UHJvdmlkZXI6OmNyZWF0ZShtX3dlYlBhZ2VQcm94eUlEKTsK
KyAgICBwYWdlQ29uZmlndXJhdGlvbi5icm9hZGNhc3RDaGFubmVsUmVnaXN0cnkgPSBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5icm9hZGNhc3RDaGFubmVsUmVnaXN0cnkoKTsKKyAgICBwYWdlQ29u
ZmlndXJhdGlvbi53ZWJMb2NrUmVnaXN0cnkgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJM
b2NrUmVnaXN0cnkoKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudFByb3ZpZGVy
ID0gbV91c2VyQ29udGVudENvbnRyb2xsZXI7CisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAgcGFn
ZUNvbmZpZ3VyYXRpb24ubGliV2ViUlRDUHJvdmlkZXIgPSBtYWtlVW5pcXVlUmVmPFJlbW90ZVdv
cmtlckxpYldlYlJUQ1Byb3ZpZGVyPigpOworI2VuZGlmCisKKyAgICBwYWdlQ29uZmlndXJhdGlv
bi5sb2FkZXJDbGllbnRGb3JNYWluRnJhbWUgPSBtYWtlVW5pcXVlUmVmPFJlbW90ZVdvcmtlckZy
YW1lTG9hZGVyQ2xpZW50PihtX3dlYlBhZ2VQcm94eUlELCBtX3BhZ2VJRCwgV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBtX3VzZXJBZ2VudCk7CisKKyAgICBhdXRvIHBhZ2Ug
PSBtYWtlVW5pcXVlUmVmPFdlYkNvcmU6OlBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24p
KTsKKyAgICBpZiAobV9wcmVmZXJlbmNlc1N0b3JlKSB7CisgICAgICAgIFdlYlBhZ2U6OnVwZGF0
ZVNldHRpbmdzR2VuZXJhdGVkKCptX3ByZWZlcmVuY2VzU3RvcmUsIHBhZ2UtPnNldHRpbmdzKCkp
OworICAgICAgICBwYWdlLT5zZXR0aW5ncygpLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShzdGF0
aWNfY2FzdDxXZWJDb3JlOjpTdG9yYWdlQmxvY2tpbmdQb2xpY3k+KG1fcHJlZmVyZW5jZXNTdG9y
ZS0+Z2V0VUludDMyVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnN0b3JhZ2VCbG9ja2lu
Z1BvbGljeUtleSgpKSkpOworICAgIH0KKyAgICBwYWdlLT5zZXR1cEZvclJlbW90ZVdvcmtlcih1
cmwsIG9yaWdpbi50b3BPcmlnaW4sIHdvcmtlckZldGNoUmVzdWx0LnJlZmVycmVyUG9saWN5KTsK
KyAgICBhdXRvIHNoYXJlZFdvcmtlclRocmVhZFByb3h5ID0gV2ViQ29yZTo6U2hhcmVkV29ya2Vy
VGhyZWFkUHJveHk6OmNyZWF0ZShXVEZNb3ZlKHBhZ2UpLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVy
LCBvcmlnaW4sIHVybCwgV1RGTW92ZSh3b3JrZXJGZXRjaFJlc3VsdCksIFdURk1vdmUod29ya2Vy
T3B0aW9ucyksIG1fdXNlckFnZW50LCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZVN0b3Jh
Z2VQcm92aWRlcigpKTsKKworICAgIFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5yZWdpc3RlclNoYXJlZFdvcmtlclRocmVhZChXVEZNb3ZlKHNoYXJlZFdv
cmtlclRocmVhZFByb3h5KSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpjbG9zZSgpCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAi
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpjbG9zZTogU2hhcmVkIHdv
cmtlciBwcm9jZXNzIGlzIHJlcXVlc3RlZCB0byBzdG9wIGFsbCBzaGFyZWQgd29ya2VycyIpOwor
ICAgIHNldEFzQ2xvc2VkKCk7CisKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q2xvc2VTaGFyZWRX
b3JrZXJDb250ZXh0Q29ubmVjdGlvbiB7IH0sIDApOworICAgIFdlYkNvcmU6OlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zdG9wQWxsU2hhcmVkV29ya2VycygpOworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuYWJsZVRlcm1pbmF0aW9uKCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjFhY2Zk
MGM0MTI5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC0wLDAgKzEs
NzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKKyNpbmNsdWRlICJJZGVudGlmaWVyVHlwZXMuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiV2Vi
UHJlZmVyZW5jZXNTdG9yZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVk
V29ya2VySWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgQ2xpZW50
T3JpZ2luOworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0Oworc3RydWN0IFdvcmtlck9wdGlvbnM7
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI7CitzdHJ1Y3QgUmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhOworCitjbGFzcyBXZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29y
ZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiYsIFBhZ2VHcm91cElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgUmVtb3Rl
V29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYpOworICAgIH5XZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24oKTsKKworICAgIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbihDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRv
V29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwpIGZpbmFsOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICAv
LyBJUEMgTWVzc2FnZXMuCisgICAgdm9pZCBsYXVuY2hTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFVSTCYmLCBXZWJD
b3JlOjpXb3JrZXJPcHRpb25zJiYsIFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYpOworICAg
IHZvaWQgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7
CisgICAgdm9pZCBzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KSB7IG1fdXNlckFnZW50
ID0gV1RGTW92ZSh1c2VyQWdlbnQpOyB9CisgICAgdm9pZCBjbG9zZSgpOworCisgICAgUmVmPElQ
Qzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzczsKKyAgICBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluOworICAgIFBhZ2VHcm91cElk
ZW50aWZpZXIgbV9wYWdlR3JvdXBJRDsKKyAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIG1fd2Vi
UGFnZVByb3h5SUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CisgICAg
U3RyaW5nIG1fdXNlckFnZW50OworICAgIFJlZjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXI+IG1f
dXNlckNvbnRlbnRDb250cm9sbGVyOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViUHJlZmVyZW5jZXNT
dG9yZT4gbV9wcmVmZXJlbmNlc1N0b3JlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kODJh
NGFkYTUzZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
QEAgLTAsMCArMSwzMCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CittZXNzYWdlcyAtPiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gTm90
UmVmQ291bnRlZCB7CisgICAgTGF1bmNoU2hhcmVkV29ya2VyKHN0cnVjdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4gb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdv
cmtlcklkZW50aWZpZXIsIFVSTCB1cmwsIHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdv
cmtlck9wdGlvbnMsIHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCB3b3JrZXJGZXRj
aFJlc3VsdCkKKyAgICBQb3N0Q29ubmVjdEV2ZW50KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50
aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdl
UG9ydCBwb3J0LCBTdHJpbmcgc291cmNlT3JpZ2luKQorICAgIFRlcm1pbmF0ZVNoYXJlZFdvcmtl
cihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIp
CisgICAgVXBkYXRlUHJlZmVyZW5jZXNTdG9yZShzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNl
c1N0b3JlIHN0b3JlKQorICAgIFNldFVzZXJBZ2VudChTdHJpbmcgdXNlckFnZW50KQorICAgIENs
b3NlKCkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKaW5kZXggNWM1
ZmRhYTYwMDU3Li5kN2Q5OTRkZTFmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24uY3BwCkBAIC0yNiwyMyArMjYsNDQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgiCiAKKyNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyTWFuYWdlci5oPgor
I2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dv
cmtlck9wdGlvbnMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb246OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKSA9IGRlZmF1
bHQ7CisjZGVmaW5lIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9H
KFNoYXJlZFdvcmtlciwgIiVwIC0gW3dlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBX
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgV2ViQ29yZTo6UHJv
Y2Vzczo6aWRlbnRpZmllcigpLnRvVUludDY0KCksICMjX19WQV9BUkdTX18pCisKK1dlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb246OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24o
KQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coIldlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb246Iik7Cit9CisKK1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246On5XZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0Vf
TE9HKCJ+V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjoiKTsKK30KIAogSVBDOjpDb25u
ZWN0aW9uKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyQ29u
bmVjdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuICZXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7CiB9CiAKLXZvaWQg
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6cmVxdWVzdFNoYXJlZFdvcmtlcihjb25z
dCBVUkwmIHVybCwgV2ViQ29yZTo6U2hhcmVkV29ya2VyJiBzaGFyZWRXb3JrZXIsIFdlYkNvcmU6
OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYg
d29ya2VyT3B0aW9ucykKK3ZvaWQgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6cmVx
dWVzdFNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgV2Vi
Q29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLCBjb25zdCBVUkwmIHVybCwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYm
IHBvcnQsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMpCiB7Ci0g
ICAgLy8gRklYTUU6IFNob3VsZCBzZW5kIElQQyB0byB0aGUgbmV0d29yayBwcm9jZXNzLgotICAg
IFdlYkNvcmU6OlNoYXJlZFdvcmtlck1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3QodXJsLCBz
aGFyZWRXb3JrZXIsIFdURk1vdmUocG9ydCksIFdURk1vdmUod29ya2VyT3B0aW9ucykpOworICAg
IENPTk5FQ1RJT05fUkVMRUFTRV9MT0coInJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpSZXF1ZXN0U2hhcmVkV29ya2VyIHsgb3JpZ2luLCBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCB1cmwsIFdURk1vdmUocG9ydCksIHdvcmtlck9w
dGlvbnMgfSk7CiB9CiAKK3ZvaWQgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6c2hh
cmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQoreworICAgIENPTk5FQ1RJT05f
UkVMRUFTRV9MT0coInNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5OiBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbjo6U2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkgeyBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIH0pOworfQorCisjdW5kZWYgQ09OTkVDVElPTl9S
RUxFQVNFX0xPRworCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24u
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24uaAppbmRleCA2MWVlNWFmNDI0ZGMuLmQzMmM1MmUxZTE2YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApAQCAtMjUsMjAgKzI1LDI1IEBACiAKICNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CitjbGFzcyBXZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24sIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKTsgfQorICAgIH5XZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uKCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIFdlYlNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb24oKTsKIAogICAgIC8vIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24uCi0gICAgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0IFVSTCYsIFdl
YkNvcmU6OlNoYXJlZFdvcmtlciYsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwg
V2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RTaGFyZWRX
b3JrZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgV2ViQ29yZTo6U2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciwgY29uc3QgVVJMJiwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdl
UG9ydCYmLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJikgZmluYWw7CisgICAgdm9pZCBz
aGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyKSBmaW5hbDsKIAogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlci4KICAgICBJUEM6
OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjcyMmFlMWEzMmM5MwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNyBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBXZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uIHsKKyAgICBGZXRjaFNjcmlwdEluQ2xpZW50KFVSTCB1cmwsIFdl
YkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciwgc3RydWN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMgd29ya2VyT3B0aW9ucykgLT4g
KHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCBmZXRjaFJlc3VsdCkgQXN5bmMKKyAg
ICBOb3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKFdlYkNvcmU6OlNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciBlcnJvcikKKyAgICBQb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLCBTdHJpbmcgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgU3RyaW5nIHNvdXJjZVVSTCkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAppbmRleCBkZDhkNTgxYWM1YjIuLmRkNDViNDU4OGJmOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtODQsNiArODQsOCBAQAogI2luY2x1ZGUgIldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNlcnZpY2VXb3JrZXJQcm92
aWRlci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaCIKICNpbmNsdWRl
ICJXZWJTb2NrZXRTdHJlYW0uaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgpAQCAtMTM0LDYg
KzEzNiw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZXR0aW5ncy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAjaW5jbHVkZSA8
cGFsL0xvZ2dpbmcuaD4KICNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgpAQCAtOTA0LDcgKzkw
Nyw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlCiAgICAgfQogCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQotICAgIC8vIEZJWE1FOiBSZW1vdmU/CiAgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIEFTU0VSVChTV0NvbnRleHRNYW5h
Z2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpOwogICAgICAgICBpZiAoYXV0byogY29udGV4
dE1hbmFnZXJDb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVj
dGlvbigpKQpAQCAtOTEzLDYgKzkxNSwxMyBAQCB2b2lkIFdlYlByb2Nlc3M6OmRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZQogICAg
IH0KICNlbmRpZgogCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1l
c3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSkgeworICAgICAgICBBU1NFUlQoU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSk7CisgICAgICAgIGlmIChhdXRvKiBjb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24gPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9u
KCkuY29ubmVjdGlvbigpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uJj4oKmNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbikuZGlk
UmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKICAgICBMT0dfRVJST1IoIlVuaGFuZGxlZCB3ZWIgcHJvY2VzcyBtZXNzYWdlICclcycg
KGRlc3RpbmF0aW9uOiAlIiBQUkl1NjQgIiBwaWQ6ICVkKSIsIGRlc2NyaXB0aW9uKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSksIGRlY29kZXIuZGVzdGluYXRpb25JRCgpLCBzdGF0aWNfY2FzdDxpbnQ+
KGdldEN1cnJlbnRQcm9jZXNzSUQoKSkpOwogfQogCkBAIC0xOTE5LDYgKzE5MjgsMTYgQEAgTGli
V2ViUlRDTmV0d29yayYgV2ViUHJvY2Vzczo6bGliV2ViUlRDTmV0d29yaygpCiAgICAgcmV0dXJu
ICptX2xpYldlYlJUQ05ldHdvcms7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2hh
cmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50
aWZpZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUs
IFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFJlbW90ZVdvcmtlckluaXRp
YWxpemF0aW9uRGF0YSYmIGluaXRpYWxpemF0aW9uRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIC8vIFdlIGFyZSBpbiB0aGUgU2hhcmVk
IFdvcmtlciBjb250ZXh0IHByb2Nlc3MgYW5kIHRoZSBjYWxsIGJlbG93IGVzdGFibGlzaGVzIG91
ciBjb25uZWN0aW9uIHRvIHRoZSBOZXR3b3JrIFByb2Nlc3MKKyAgICAvLyBieSBjYWxsaW5nIGVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi4gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIg
bmVlZHMgdG8gdXNlIHRoZSBzYW1lIHVuZGVybHlpbmcgSVBDOjpDb25uZWN0aW9uIGFzIHRoZQor
ICAgIC8vIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiBmb3Igc3luY2hyb25pemF0aW9uIHB1cnBv
c2VzLgorICAgIGF1dG8mIGlwY0Nvbm5lY3Rpb24gPSBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCk7CisgICAgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpLnNldENvbm5lY3Rpb24obWFrZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24+KGlwY0Nvbm5lY3Rpb24sIFdURk1vdmUocmVnaXN0cmFibGVEb21h
aW4pLCBwYWdlR3JvdXBJRCwgd2ViUGFnZVByb3h5SUQsIHBhZ2VJRCwgc3RvcmUsIFdURk1vdmUo
aW5pdGlhbGl6YXRpb25EYXRhKSkpOworICAgIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpz
aW5nbGV0b24oKS5jb25uZWN0aW9uKCktPmVzdGFibGlzaENvbm5lY3Rpb24oV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworfQorCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogdm9pZCBX
ZWJQcm9jZXNzOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2Vi
UHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVE
b21haW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNl
cnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRh
JiYgaW5pdGlhbGl6YXRpb25EYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCAw
M2ZjMGM3MWQ3YzMuLjQyM2RlZmYyYWY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCkBAIC00NzEsNiArNDcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdhbWVwYWREaXNj
b25uZWN0ZWQodW5zaWduZWQgaW5kZXgpOwogI2VuZGlmCiAKKyAgICB2b2lkIGVzdGFibGlzaFNo
YXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVu
dGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
Y29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYs
IFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFNl
cnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRl
bnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYm
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
PiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9u
RGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDNiYzQ3MzE5
ZTM2ZC4uZjVlNzM2ZWQzNDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTAwLDYgKzEwMCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBy
b2Nlc3MgTGVnYWN5UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7CiAgICAgR2FtZXBhZERpc2Nvbm5l
Y3RlZCh1bnNpZ25lZCBpbmRleCkKICNlbmRpZgogCisgICAgRXN0YWJsaXNoU2hhcmVkV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYktpdDo6UGFnZUdyb3VwSWRlbnRp
ZmllciBwYWdlR3JvdXBJRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQ
cm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHN0cnVjdCBXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzU3RvcmUgc3RvcmUsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFp
biwgc3RydWN0IFdlYktpdDo6UmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhIGluaXRpYWxp
emF0aW9uRGF0YSkgLT4gKCkgQXN5bmMKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICBFc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KFdlYktpdDo6UGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2ViS2l0OjpXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQsIHN0cnVjdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBz
dHJ1Y3QgV2ViS2l0OjpSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRp
b25EYXRhKSAtPiAoKSBBc3luYwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450840</attachid>
            <date>2022-02-03 17:11:31 -0800</date>
            <delta_ts>2022-02-04 09:34:45 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>235958_SharedWorker_multiProcess_wip.patch</filename>
            <type>text/plain</type>
            <size>318108</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDQwMjQ2NmU0OWYwZS4uY2MyOWM1MDAxYjFlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTMwMiwxMiArMzAyLDExIEBAIG1lZGlhL3JlbW92ZS12aWRlby1lbGVt
ZW50LWluLXBpcC1mcm9tLWRvY3VtZW50Lmh0bWwgWyBTa2lwIF0KICMgVGhpcyB0ZXN0IGlzIG9u
bHkgcmVsZXZlbnQgb24gaVBob25lIHdoZXJlIHZpZGVvcyBhbHdheXMgcGxheSBpbiBmdWxsc2Ny
ZWVuLgogbWVkaWEvdmlkZW8tZWxlbWVudC1mdWxsc2NyZWVuLW5vdC1pbi1kb20tYWNjZWxlcmF0
ZWQtaXBob25lLmh0bWwgWyBTa2lwIF0KIAotIyBTaGFyZWQgV29ya2VycyBhcmUgdW5zdXBwb3J0
ZWQKKyMgVGVzdHMgcmVseSBvbiBkb21haW4gbmFtZXMgb3VyIHRlc3QgaW5mcmFzdHJ1Y3R1cmUg
ZG9lc24ndCBzdXBwb3J0LgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZWN1cmUt
Y29udGV4dHMvYmFzaWMtc2hhcmVkLXdvcmtlci5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3NlY3VyZS1jb250ZXh0cy9iYXNpYy1zaGFyZWQtd29ya2VyLmh0
dHBzLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VjdXJl
LWNvbnRleHRzL3NoYXJlZC13b3JrZXItaW5zZWN1cmUtZmlyc3QuaHR0cHMuaHRtbCBbIFNraXAg
XQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZWN1cmUtY29udGV4dHMvc2hhcmVk
LXdvcmtlci1zZWN1cmUtZmlyc3QuaHR0cHMuaHRtbCBbIFNraXAgXQotaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9ldmVudHNvdXJjZS9zaGFyZWQtd29ya2VyIFsgU2tpcCBdCiAKICMg
VGhpcyB0ZXN0IHNlZW1zIHdyb25nIGFzIGl0IGNhbGwgdXBkYXRlKCkgZm9yIGEgc2NyaXB0IHRo
YXQgZG9lcyBub3QgY2hhbmdlIGFuZCBleHBlY3RlZCBhbiB1cGRhdGVmb3VuZCBldmVudC4KICMg
UGVyIHNwZWNpZmljYXRpb24sIGlmIHRoZSBzY3JpcHRzIGFyZSBpZGVudGljYWwsIHdlIGRvIG5v
dCBpbnN0YWxsIHRoZSBuZXcgc2NyaXB0IGFuZCByZXR1cm4gdGhlIGV4aXN0aW5nIHJlZ2lzdHJh
dGlvbi4KQEAgLTQxNiw5ICs0MTUsNiBAQCB3ZWJraXQub3JnL2IvMTc2OTI5IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udAogIyBSZXF1
aXJlcyBhZGRpdGlvbmFsIHRlc3QgaW5mcmFzdHJ1Y3R1cmUuCiBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci91cGRhdGUtYWZ0ZXIt
b25lZGF5Lmh0dHBzLmh0bWwgWyBTa2lwIF0KIAotIyBVbnN1cHBvcnRlZCBmZWF0dXJlczogU2hh
cmVkV29ya2VyCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vy
cy9zZXJ2aWNlLXdvcmtlci9jbGFpbS1zaGFyZWQtd29ya2VyLWZldGNoLmh0dHBzLmh0bWwgWyBT
a2lwIF0KLQogIyBVbnN1cHBvcnRlZCBmZWF0dXJlczogUGVyZm9ybWFuY2VOYXZpZ2F0aW9uVGlt
aW5nCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZlci10aW1pbmcvdGVzdF9z
ZXJ2ZXJfdGltaW5nLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc2VydmVyLXRpbWluZy90ZXN0X3NlcnZlcl90aW1pbmcuaHR0cHMuaHRtbCBbIFNraXAgXQpA
QCAtNDYzLDcgKzQ1OSw2IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViLWxv
Y2tzL3N0ZWFsLnRlbnRhdGl2ZS5odHRwcy5hbnkuaHRtbCBbIER1bXBKCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWFuYWx5c2Vybm9k
ZS1pbnRlcmZhY2UvdGVzdC1hbmFseXNlci1taW5pbXVtLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9n
SW5TdGRFcnIgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUt
YXVkaW8tYXBpL3RoZS1hdWRpb25vZGUtaW50ZXJmYWNlL2F1ZGlvbm9kZS1kaXNjb25uZWN0LWF1
ZGlvcGFyYW0uaHRtbCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2FtZS1vcmlnaW4tY2hlY2suc3ViLmh0bWwgWyBE
dW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy5odG1sIFsgRHVtcEpTQ29u
c29sZUxvZ0luU3RkRXJyIF0KIGZhc3QvZmlsZXMvZmlsZS1yZWFkZXItYmFjay1mb3J3YXJkLWNh
Y2hlLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQogZmFzdC9oaXN0b3J5L3BhZ2Ut
Y2FjaGUtY3JlYXRlSW1hZ2VCaXRtYXAuaHRtbCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBd
CiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS14aHItaW4tbG9hZGluZy1pZnJhbWUu
aHRtbCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCkBAIC04NTMsNiArODQ4LDcgQEAgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy91c2VyLXRpbWluZy9tYXJrLmh0bWwgWyBGYWls
dXJlIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy91c2VyLXRpbWluZy9t
ZWFzdXJlX2Fzc29jaWF0ZWRfd2l0aF9uYXZpZ2F0aW9uX3RpbWluZy5odG1sIFsgRmFpbHVyZSBQ
YXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3N5
c3RlbS1zdGF0ZS1hbmQtY2FwYWJpbGl0aWVzL3RoZS1uYXZpZ2F0b3Itb2JqZWN0L3BsdWdpbnMt
YW5kLW1pbWV0eXBlcy5odG1sIFsgRmFpbHVyZSBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvYmVhY29uL2JlYWNvbi1yZWRpcmVjdC5zdWIud2luZG93Lmh0bWwgWyBGYWls
dXJlIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9y
aWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3b3JrZXItcGFydGl0
aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3cuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiAKIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZG9jdW1lbnQtbWV0
YWRhdGEvdGhlLWxpbmstZWxlbWVudC9saW5rLWxvYWQtZXJyb3ItZXZlbnRzLmh0bWwgWyBEdW1w
SlNDb25zb2xlTG9nSW5TdGRFcnIgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9kb2N1bWVudC1tZXRhZGF0YS90aGUtbGluay1lbGVtZW50L2xpbmstbG9h
ZC1lcnJvci1ldmVudHMuaHR0cHMuaHRtbCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCkBA
IC04OTcsMzQgKzg5MywyMSBAQCBmYXN0L2RvbS9jb25uZWN0ZWQtc3ViZnJhbWUtY291bnRlci1v
dmVyZmxvdy5odG1sIFsgU2xvdyBdCiBbIERlYnVnIF0gaHR0cC90ZXN0cy93b3JrZXJzL3dvcmtl
ci1tZXNzYWdlcG9ydC0yLmh0bWwgWyBTbG93IF0KIAogIyBTa2lwIHdvcmtlcnMgdGVzdHMgdGhh
dCBhcmUgdGltaW5nIG91dCBvciBhcmUgU2hhcmVkV29ya2VyIHJlbGF0ZWQgb25seQotaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2RhdGEtdXJsLXNoYXJlZC5odG1sIFsg
U2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvZXhhbXBsZXMv
b25jb25uZWN0LmFueS5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvZXhhbXBsZXMvb25jb25uZWN0LmFueS53b3JrZXIuaHRtbCBbIFNraXAgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2ludGVyZmFjZXMvV29ya2Vy
VXRpbHMvaW1wb3J0U2NyaXB0cy8wMDYuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL25lc3RlZF93b3JrZXIud29ya2VyLmh0bWwgWyBTa2lwIF0K
LWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9vcGFxdWUtb3JpZ2luLmh0
bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1h
bnRpY3MvaW50ZXJmYWNlLW9iamVjdHMvMDAzLmFueS5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL2ludGVyZmFjZS1vYmplY3Rz
LzAwMy5hbnkud29ya2VyLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvaW50ZXJmYWNlLW9iamVjdHMvMDA0LmFueS5odG1sIFsg
U2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNz
L2ludGVyZmFjZS1vYmplY3RzLzAwNC5hbnkud29ya2VyLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vy
cy8wMDMuaHRtbCBbIFNraXAgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL1dvcmtlcl9jcm9zc19vcmlnaW5fc2VjdXJpdHlfZXJyLmh0bSBbIFNraXAgXQogaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlci1NZXNzYWdlRXZl
bnQtc291cmNlLmFueS5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyLU1lc3NhZ2VFdmVudC1zb3VyY2UuYW55Lndvcmtlci5o
dG1sIFsgU2tpcCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hh
cmVkV29ya2VyLWNvbnN0cnVjdG9yLmh0bWwgWyBTa2lwIF0KLWltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXItZGV0YWNoLWZyYW1lLWluLWVycm9yLWV2
ZW50Lmh0bWwgWyBTa2lwIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9TaGFyZWRXb3JrZXItZXhjZXB0aW9uLXByb3BhZ2F0aW9uLmh0bWwgWyBTa2lwIF0KLWltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXItZXhjZXB0aW9u
Lmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9T
aGFyZWRXb3JrZXItcmVwbGFjZS1FdmVudEhhbmRsZXIuYW55Lmh0bWwgWyBTa2lwIF0KIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXItcmVwbGFjZS1F
dmVudEhhbmRsZXIuYW55Lndvcmtlci5odG1sIFsgU2tpcCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyLXNjcmlwdC1lcnJvci5odG1sIFsgU2tp
cCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2Vy
LXNpbXBsZS5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvbW9kdWxlcy9kZWRpY2F0ZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMuaHRtbCBb
IFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMv
c2hhcmVkLXdvcmtlci1pbXBvcnQtY3NwLmh0bWwgWyBTa2lwIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LXJlZmVy
cmVyLmh0bWwgWyBTa2lwIF0KLQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIgWyBTa2lwIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJfYmxvYlVybC5odG1sIFsgU2tpcCBd
CiAKIGh0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9wYWdlLWNhY2hlLWRvbWNhY2hlLXBlbmRpbmct
cHJvbWlzZS5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIApAQCAtOTkyLDkgKzk3
NSw3IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvcmVwb3J0aW5nL3JlcG9ydC1jcm9zcy1vCiAjIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5
OiBFbWJlZGRlZCBFbmZvcmNlbWVudCBpcyBub3Qgc3VwcG9ydGVkCiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2VtYmVkZGVkLWVuZm9yY2Vt
ZW50CiAKLSMgU2tpcCBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBzaGFyZWQgd29ya2VycyB0ZXN0
cyBhcyB3ZSBkbyBub3Qgc3VwcG9ydCBzaGFyZWQgd29ya2VycwotaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9zaGFyZWQt
d29ya2VyLWNvbm5lY3Qtc3JjLWFsbG93ZWQuc3ViLmh0bWwKLWltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvY29ubmVjdC1zcmMvc2hhcmVkLXdv
cmtlci1jb25uZWN0LXNyYy1ibG9ja2VkLnN1Yi5odG1sCisjIFRlc3QgaXMgdGltaW5nIG91dC4K
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
c2VjdXJpdHlwb2xpY3l2aW9sYXRpb24vaW5zaWRlLXNoYXJlZC13b3JrZXIuaHRtbAogCiAjIFNv
bWV0aW1lcyBsb2dzIGEgbGluZSBhYm91dCB0cnlpbmcgdG8gY29ubmVjdCB0byBhbiBleHRlcm5h
bCBVUkwuCkBAIC01MTU3LDYgKzUxMzgsMTAgQEAgd2Via2l0Lm9yZy9iLzE4Mzk5NCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3NvbS9jc3Mtc3R5bGUtYXR0ci1kZWMKICMg
VGVzdCBpcyBjcmFzaGluZyBpbiBEZWJ1ZyBidWlsZHMgc2luY2UgaW1wb3J0Lgogd2Via2l0Lm9y
Zy9iLzIzNDk3NyBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20v
ZXZlbnRzL2ZvY3VzLWV2ZW50LWRvY3VtZW50LW1vdmUuaHRtbCBbIFNraXAgXQogCisjIFRlc3Qg
aXMgZmxha3kgYmVjYXVzZSBNZXNzYWdlUG9ydCBtZXNzYWdlcyBtYXkgZ2V0IHJlY2VpdmVkIGlu
IGEgZGlmZmVyZW50IG9yZGVyIHdoZW4gc2V2ZXJhbCBNZXNzYWdlUG9ydHMgYXJlIGludm9sdmVk
LAorIyBkdWUgdG8gaG93IE1lc3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2VzKCkgaXMgaW1wbGVt
ZW50ZWQuCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdv
cmtlci1uYW1lLXZpYS1vcHRpb25zLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgRmFp
bHVyZSBQYXNzIF0KKwogIyBQbHVnaW5zCiAjIEZJWE1FOiBSZW1vdmUgdGhlc2UgdGVzdHMuCiBw
bHVnaW5zLyBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9zaGFy
ZWQtd29ya2VyLWNvbm5lY3Qtc3JjLWFsbG93ZWQuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvY29ubmVjdC1zcmMvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1hbGxvd2VkLnN1Yi1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zODJiOTU2
OTViY2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13
b3JrZXItY29ubmVjdC1zcmMtYWxsb3dlZC5zdWItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBA
QAorCitGQUlMIEV4cGVjdGluZyBsb2dzOiBbInhociBhbGxvd2VkIiwiVEVTVCBDT01QTEVURSJd
IGFzc2VydF91bnJlYWNoZWQ6IHVuZXhwZWN0ZWQgbG9nOiB4aHIgYmxvY2tlZCBSZWFjaGVkIHVu
cmVhY2hhYmxlIGNvZGUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9zaGFy
ZWQtd29ya2VyLWNvbm5lY3Qtc3JjLWJsb2NrZWQuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvY29ubmVjdC1zcmMvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1ibG9ja2VkLnN1Yi1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41ZTk3MWUy
MGY0YmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13
b3JrZXItY29ubmVjdC1zcmMtYmxvY2tlZC5zdWItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBA
QAorVGhpcyB0ZXN0IGxvYWRzIGEgc2hhcmVkIHdvcmtlciwgZGVsaXZlcmVkIHdpdGggaXRzIG93
biBwb2xpY3kuIFRoZSB3b3JrZXIgc2hvdWxkIGJlIGJsb2NrZWQgZnJvbSBtYWtpbmcgYW4gWEhS
IGFzIHRoYXQgcG9saWN5IHNwZWNpZmllcyBhIGNvbm5lY3Qtc3JjICdub25lJywgdGhvdWdoIHRo
aXMgcmVzb3VyY2UncyBwb2xpY3kgaXMgY29ubmVjdC1zcmMgKi4gTm8gcmVwb3J0IHNob3VsZCBi
ZSBzZW50IHNpbmNlIHRoZSB3b3JrZXIncyBwb2xpY3kgZG9lc24ndCBzcGVjaWZ5IGEgcmVwb3J0
LXVyaS4KKworCitQQVNTIEV4cGVjdGluZyBsb2dzOiBbInhociBibG9ja2VkIiwiVEVTVCBDT01Q
TEVURSJdCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3Jr
ZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtl
ci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dAppbmRleCAwZTk5NzI0
Yjg2NGIuLjY4OThiNTRhYWI2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2Vy
L3NoYXJlZHdvcmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4
dApAQCAtMSw2ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczov
L3d3dy5sb2NhbGhvc3Q6OTQ0NC9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zdXBwb3J0L3Jlc291
cmNlLnB5P2Nyb3NzLW9yaWdpbi1mZXRjaAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJM
IGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBv
cnQvcmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLXhocgotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJu
YWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L3N1cHBvcnQvcmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLWZldGNoCiAKIFBBU1MgU2FtZS1vcmln
aW4gJ2ZldGNoKCknLgogUEFTUyBTYW1lLW9yaWdpbiBYSFIuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWIt
ZXhwZWN0ZWQudHh0CmluZGV4IDk3OTEwNjMwMzc4NS4uYmI2NDUyZjQ0YTBhIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNj
cmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dApAQCAtMiwxMCArMiw5IEBACiBIYXJuZXNzIEVycm9y
IChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIAogVElNRU9VVCBzaGFyZWR3b3JrZXItc2NyaXB0
LXNyYyBUZXN0IHRpbWVkIG91dAotRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAg
bm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgIEEgbmV0d29yayBlcnJvciBvY2N1cnJl
ZC4KLUZBSUwgYGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AgUmVmdXNl
ZCB0byBldmFsdWF0ZSBhIHN0cmluZyBhcyBKYXZhU2NyaXB0IGJlY2F1c2UgJ3Vuc2FmZS1ldmFs
JyBpcyBub3QgYW4gYWxsb3dlZCBzb3VyY2Ugb2Ygc2NyaXB0IGluIHRoZSBmb2xsb3dpbmcgQ29u
dGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAic2NyaXB0LXNyYyAnc2VsZicgJ25vbmNl
LWEnIGJsb2I6IGZpbGVzeXN0ZW06Ii4KLQotRkFJTCBgc2V0VGltZW91dChbc3RyaW5nXSlgIG5v
dCBibG9ja2VkIGluIGh0dHA6IHdpdGhvdXQgQ1NQIGFzc2VydF91bnJlYWNoZWQ6IGNhbGxiYWNr
IG5vdCBjYWxsZWQuIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBDcm9zcy1vcmlnaW4g
YGltcG9ydFNjcmlwdHMoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgTG9hZCBm
YWlsZWQKK1BBU1MgYGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AKK1BB
U1MgYHNldFRpbWVvdXQoW3N0cmluZ10pYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3V0IENT
UAogVElNRU9VVCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgYmxvY2tlZCBpbiBodHRw
OiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnIFRlc3QgdGltZWQgb3V0CiBOT1RSVU4gYGV2YWwoKWAg
YmxvY2tlZCBpbiBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCiBOT1RSVU4gYHNldFRpbWVv
dXQoW3N0cmluZ10pYCBibG9ja2VkIGluIGh0dHA6IHdpdGggc2NyaXB0LXNyYyAnc2VsZicKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3Vi
LWV4cGVjdGVkLnR4dAppbmRleCA0ZWFjMWNjYzA1MjYuLmI4ZWUxM2IwZmZjZSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91dC5zdWItZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4
cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKIAogRkFJTCBEZWRpY2F0ZWQgd29ya2VyIGluaGVy
aXRzIENTUCBmcm9tIG1haW4gZG9jdW1lbnQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgInNldFRp
bWVvdXQgYWxsb3dlZCIgYnV0IGdvdCAic2V0VGltZW91dCBibG9ja2VkIgotRkFJTCBTaGFyZWQg
d29ya2VyIGRlbGl2ZXJzIGl0cyBvd24gQ1NQIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJzZXRU
aW1lb3V0IGJsb2NrZWQiIGJ1dCBnb3QgInNldFRpbWVvdXQgYWxsb3dlZCIKK1BBU1MgU2hhcmVk
IHdvcmtlciBkZWxpdmVycyBpdHMgb3duIENTUAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2V2ZW50c291cmNlL3NoYXJlZC13b3JrZXIv
ZXZlbnRzb3VyY2UtY2xvc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9ldmVudHNvdXJjZS9zaGFyZWQtd29ya2VyL2V2ZW50c291cmNl
LWNsb3NlLWV4cGVjdGVkLnR4dAppbmRleCA1MjFjODAwODBlZGIuLjhhNzFmZmUyMzM4NSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ldmVu
dHNvdXJjZS9zaGFyZWQtd29ya2VyL2V2ZW50c291cmNlLWNsb3NlLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2V2ZW50c291cmNl
L3NoYXJlZC13b3JrZXIvZXZlbnRzb3VyY2UtY2xvc2UtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEs
MyBAQAogCi1GQUlMIHNoYXJlZCB3b3JrZXIgLSBFdmVudFNvdXJjZTogY2xvc2UoKSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKK1BBU1Mgc2hhcmVkIHdvcmtlciAtIEV2ZW50U291
cmNlOiBjbG9zZSgpCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvZXZlbnRzb3VyY2Uvc2hhcmVkLXdvcmtlci9ldmVudHNvdXJjZS1jb25z
dHJ1Y3Rvci1ub24tc2FtZS1vcmlnaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ldmVudHNvdXJjZS9zaGFyZWQtd29ya2VyL2V2ZW50
c291cmNlLWNvbnN0cnVjdG9yLW5vbi1zYW1lLW9yaWdpbi1leHBlY3RlZC50eHQKaW5kZXggNDVh
ZjA4OTBjNGE4Li42M2NhYWE3ZDU3NmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZXZlbnRzb3VyY2Uvc2hhcmVkLXdvcmtlci9ldmVudHNv
dXJjZS1jb25zdHJ1Y3Rvci1ub24tc2FtZS1vcmlnaW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZXZlbnRzb3VyY2Uvc2hhcmVk
LXdvcmtlci9ldmVudHNvdXJjZS1jb25zdHJ1Y3Rvci1ub24tc2FtZS1vcmlnaW4tZXhwZWN0ZWQu
dHh0CkBAIC0xLDYgKzEsNiBAQAogCi1GQUlMIHNoYXJlZCB3b3JrZXIgLSBFdmVudFNvdXJjZTog
Y29uc3RydWN0b3IgKGFjdCBhcyBpZiB0aGVyZSBpcyBhIG5ldHdvcmsgZXJyb3IpIChmdHA6Ly9l
eGFtcGxlLm5vdCkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi1GQUlMIHNoYXJl
ZCB3b3JrZXIgLSBFdmVudFNvdXJjZTogY29uc3RydWN0b3IgKGFjdCBhcyBpZiB0aGVyZSBpcyBh
IG5ldHdvcmsgZXJyb3IpIChhYm91dDpibGFuaykgQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVk
V29ya2VyCi1GQUlMIHNoYXJlZCB3b3JrZXIgLSBFdmVudFNvdXJjZTogY29uc3RydWN0b3IgKGFj
dCBhcyBpZiB0aGVyZSBpcyBhIG5ldHdvcmsgZXJyb3IpIChtYWlsdG86d2hhdHdnQGF3ZXNvbWUu
ZXhhbXBsZSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi1GQUlMIHNoYXJlZCB3
b3JrZXIgLSBFdmVudFNvdXJjZTogY29uc3RydWN0b3IgKGFjdCBhcyBpZiB0aGVyZSBpcyBhIG5l
dHdvcmsgZXJyb3IpIChqYXZhc2NyaXB0OmFsZXJ0KCdGQUlMJykpIENhbid0IGZpbmQgdmFyaWFi
bGU6IFNoYXJlZFdvcmtlcgorUEFTUyBzaGFyZWQgd29ya2VyIC0gRXZlbnRTb3VyY2U6IGNvbnN0
cnVjdG9yIChhY3QgYXMgaWYgdGhlcmUgaXMgYSBuZXR3b3JrIGVycm9yKSAoZnRwOi8vZXhhbXBs
ZS5ub3QpCitQQVNTIHNoYXJlZCB3b3JrZXIgLSBFdmVudFNvdXJjZTogY29uc3RydWN0b3IgKGFj
dCBhcyBpZiB0aGVyZSBpcyBhIG5ldHdvcmsgZXJyb3IpIChhYm91dDpibGFuaykKK1BBU1Mgc2hh
cmVkIHdvcmtlciAtIEV2ZW50U291cmNlOiBjb25zdHJ1Y3RvciAoYWN0IGFzIGlmIHRoZXJlIGlz
IGEgbmV0d29yayBlcnJvcikgKG1haWx0bzp3aGF0d2dAYXdlc29tZS5leGFtcGxlKQorUEFTUyBz
aGFyZWQgd29ya2VyIC0gRXZlbnRTb3VyY2U6IGNvbnN0cnVjdG9yIChhY3QgYXMgaWYgdGhlcmUg
aXMgYSBuZXR3b3JrIGVycm9yKSAoamF2YXNjcmlwdDphbGVydCgnRkFJTCcpKQogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2V2ZW50c291
cmNlL3NoYXJlZC13b3JrZXIvZXZlbnRzb3VyY2UtZXZlbnR0YXJnZXQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ldmVudHNvdXJjZS9z
aGFyZWQtd29ya2VyL2V2ZW50c291cmNlLWV2ZW50dGFyZ2V0LWV4cGVjdGVkLnR4dAppbmRleCA2
ZDdkMmVhNjI2ZWIuLmJjMjc3YjgwNjBiZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ldmVudHNvdXJjZS9zaGFyZWQtd29ya2VyL2V2ZW50
c291cmNlLWV2ZW50dGFyZ2V0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2V2ZW50c291cmNlL3NoYXJlZC13b3JrZXIvZXZlbnRz
b3VyY2UtZXZlbnR0YXJnZXQtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIHNo
YXJlZCB3b3JrZXIgLSBFdmVudFNvdXJjZTogYWRkRXZlbnRMaXN0ZW5lcigpIENhbid0IGZpbmQg
dmFyaWFibGU6IFNoYXJlZFdvcmtlcgorUEFTUyBzaGFyZWQgd29ya2VyIC0gRXZlbnRTb3VyY2U6
IGFkZEV2ZW50TGlzdGVuZXIoKQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2V2ZW50c291cmNlL3NoYXJlZC13b3JrZXIvZXZlbnRzb3Vy
Y2Utb25tZXNzYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvZXZlbnRzb3VyY2Uvc2hhcmVkLXdvcmtlci9ldmVudHNvdXJjZS1vbm1l
c3NhZ2UtZXhwZWN0ZWQudHh0CmluZGV4IGNlYTJkN2M1N2IxOS4uYjA3ZjQ3MjkwMzUzIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2V2ZW50
c291cmNlL3NoYXJlZC13b3JrZXIvZXZlbnRzb3VyY2Utb25tZXNzYWdlLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2V2ZW50c291
cmNlL3NoYXJlZC13b3JrZXIvZXZlbnRzb3VyY2Utb25tZXNzYWdlLWV4cGVjdGVkLnR4dApAQCAt
MSwzICsxLDMgQEAKIAotRkFJTCBzaGFyZWQgd29ya2VyIC0gRXZlbnRTb3VyY2U6IG9ubWVzc2Fn
ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKK1BBU1Mgc2hhcmVkIHdvcmtlciAt
IEV2ZW50U291cmNlOiBvbm1lc3NhZ2UKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ldmVudHNvdXJjZS9zaGFyZWQtd29ya2VyL2V2ZW50
c291cmNlLW9ub3Blbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2V2ZW50c291cmNlL3NoYXJlZC13b3JrZXIvZXZlbnRzb3VyY2Utb25v
cGVuLWV4cGVjdGVkLnR4dAppbmRleCA0MjEyMjg0ODExYWYuLmZiNjc0ZmUyOGFlYSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ldmVudHNv
dXJjZS9zaGFyZWQtd29ya2VyL2V2ZW50c291cmNlLW9ub3Blbi1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ldmVudHNvdXJjZS9z
aGFyZWQtd29ya2VyL2V2ZW50c291cmNlLW9ub3Blbi1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwz
IEBACiAKLUZBSUwgc2hhcmVkIHdvcmtlciAtIEV2ZW50U291cmNlOiBvbm9wZW4gKGFubm91bmNp
bmcgdGhlIGNvbm5lY3Rpb24pIENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtlcgorUEFT
UyBzaGFyZWQgd29ya2VyIC0gRXZlbnRTb3VyY2U6IG9ub3BlbiAoYW5ub3VuY2luZyB0aGUgY29u
bmVjdGlvbikKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9ldmVudHNvdXJjZS9zaGFyZWQtd29ya2VyL2V2ZW50c291cmNlLXByb3RvdHlw
ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2V2ZW50c291cmNlL3NoYXJlZC13b3JrZXIvZXZlbnRzb3VyY2UtcHJvdG90eXBlLWV4cGVj
dGVkLnR4dAppbmRleCBhYTY1ZTk5ZTFhOWYuLjIwMmFhYTYyZmZmZiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ldmVudHNvdXJjZS9zaGFy
ZWQtd29ya2VyL2V2ZW50c291cmNlLXByb3RvdHlwZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ldmVudHNvdXJjZS9zaGFyZWQt
d29ya2VyL2V2ZW50c291cmNlLXByb3RvdHlwZS1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBA
CiAKLUZBSUwgc2hhcmVkIHdvcmtlciAtIEV2ZW50U291cmNlOiBwcm90b3R5cGUgZXQgYWwgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCitQQVNTIHNoYXJlZCB3b3JrZXIgLSBFdmVu
dFNvdXJjZTogcHJvdG90eXBlIGV0IGFsCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZXZlbnRzb3VyY2Uvc2hhcmVkLXdvcmtlci9ldmVu
dHNvdXJjZS11cmwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9ldmVudHNvdXJjZS9zaGFyZWQtd29ya2VyL2V2ZW50c291cmNlLXVybC1l
eHBlY3RlZC50eHQKaW5kZXggNTEwM2JkOGVjZjJkLi43NmFkNTg1YjRmNDcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZXZlbnRzb3VyY2Uv
c2hhcmVkLXdvcmtlci9ldmVudHNvdXJjZS11cmwtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZXZlbnRzb3VyY2Uvc2hhcmVkLXdv
cmtlci9ldmVudHNvdXJjZS11cmwtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlM
IHNoYXJlZCB3b3JrZXIgLSBFdmVudFNvdXJjZTogdXJsIENhbid0IGZpbmQgdmFyaWFibGU6IFNo
YXJlZFdvcmtlcgorUEFTUyBzaGFyZWQgd29ya2VyIC0gRXZlbnRTb3VyY2U6IHVybAogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
YnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5o
dHRwcy1leHBlY3RlZC50eHQKaW5kZXggYzEwNzEzNjU1MjgwLi42Zjg0NGRkNWQ5NDkgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9i
cm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtl
ci5odHRwcy1leHBlY3RlZC50eHQKQEAgLTUsNyArNSw3IEBAIEhhcm5lc3MgRXJyb3IgKFRJTUVP
VVQpLCBtZXNzYWdlID0gbnVsbAogUEFTUyBEZWRpY2F0ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQg
c2NyaXB0CiBQQVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0CiBQ
QVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIG5vdC1pbi1jYWNoZSBzY3JpcHQKLVBBU1MgU2hh
cmVkIHdvcmtlciBvZiB0aGUgY2FjaGVkIHNjcmlwdAotUEFTUyBTaGFyZWQgd29ya2VyIG9mIHRo
ZSBmYWxsYmFja2VkIHNjcmlwdAorRkFJTCBTaGFyZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2Ny
aXB0IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJEb25lOiBjYWNoZWQiIGJ1dCBnb3QgIkVycm9y
OiBJbXBvcnRpbmcgYSBub24tY2FjaGVkIHNjcmlwdCBtdXN0IGZhaWwuIgorRkFJTCBTaGFyZWQg
d29ya2VyIG9mIHRoZSBmYWxsYmFja2VkIHNjcmlwdCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAi
RG9uZTogZmFsbGJhY2tlZCIgYnV0IGdvdCAiRXJyb3I6IEltcG9ydGluZyBhIG5vbi1jYWNoZWQg
c2NyaXB0IG11c3QgZmFpbC4iCiBUSU1FT1VUIFNoYXJlZCB3b3JrZXIgb2YgdGhlIG5vdC1pbi1j
YWNoZSBzY3JpcHQgVGVzdCB0aW1lZCBvdXQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1w
b2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2
ZS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnlt
b3VzLWlmcmFtZS9zaGFyZWR3b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5k
b3ctZXhwZWN0ZWQudHh0CmluZGV4IDRlZDg3NDc0NzZjNy4uNTg2ZDEwMTUyYTM2IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jv
c3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9hbm9ueW1vdXMtaWZyYW1lL3NoYXJlZHdvcmtlci1w
YXJ0aXRpb25pbmcudGVudGF0aXZlLmh0dHBzLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdp
bi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3b3JrZXItcGFydGl0aW9u
aW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAog
Ci1GQUlMIEFub255bW91cyBpZnJhbWVzIGdldCBwYXJ0aXRpb25lZCBzaGFyZWQgd29ya2Vycy4g
YXNzZXJ0X3RydWU6IFRoZSAibm9ybWFsIiBpZnJhbWUncyBzaGFyZWR3b3JrZXIgc2hvdWxkIHJl
dHVybiB7Im5vcm1hbCI6IHRydWUsICJub3JtYWxfY29udHJvbCI6IHRydWV9LCBidXQgaW5zdGVh
ZCByZXR1cm5lZCB7Im5vcm1hbCI6dHJ1ZX0gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK0ZBSUwg
QW5vbnltb3VzIGlmcmFtZXMgZ2V0IHBhcnRpdGlvbmVkIHNoYXJlZCB3b3JrZXJzLiBhc3NlcnRf
dHJ1ZTogVGhlICJub3JtYWwiIGlmcmFtZSdzIHNoYXJlZHdvcmtlciBzaG91bGQgcmV0dXJuIHsi
bm9ybWFsIjogdHJ1ZSwgIm5vcm1hbF9jb250cm9sIjogdHJ1ZX0sIGJ1dCBpbnN0ZWFkIHJldHVy
bmVkIHsibm9ybWFsX2NvbnRyb2wiOnRydWUsIm5vcm1hbCI6dHJ1ZSwiYW5vbnltb3VzIjp0cnVl
LCJhbm9ueW1vdXNfY29udHJvbCI6dHJ1ZX0gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1p
c3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3Jp
Z2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IDYzNTViNjhk
ZTcwYi4uYzhiZjc1ZTdlYTg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9jcm9z
cy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdp
bi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMt
ZXhwZWN0ZWQudHh0CkBAIC0yMCw3ICsyMCw3IEBAIFBBU1MgZGVkaWNhdGVkIHdvcmtlcjogc2No
ZW1lID0gYmxvYiwgdmFsdWUgPSAqCiBQQVNTIGRlZGljYXRlZCB3b3JrZXI6IHNjaGVtZSA9IGJs
b2IsIHZhbHVlID0gc2VsZgogRkFJTCBkZWRpY2F0ZWQgd29ya2VyOiBzY2hlbWUgPSBibG9iLCB2
YWx1ZSA9IChcKSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCBmYWxzZSBidXQgZ290IHRydWUKIFBB
U1Mgc2hhcmVkIHdvcmtlcjogd2l0aENvb3BDb2VwID0gZmFsc2UKLVBBU1Mgc2hhcmVkIHdvcmtl
cjogd2l0aENvb3BDb2VwID0gdHJ1ZQorRkFJTCBzaGFyZWQgd29ya2VyOiB3aXRoQ29vcENvZXAg
PSB0cnVlIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZQogUEFTUyBz
ZXJ2aWNlIHdvcmtlcjogd2l0aENvb3BDb2VwID0gZmFsc2UKIEZBSUwgc2VydmljZSB3b3JrZXI6
IHdpdGhDb29wQ29lcCA9IHRydWUgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgdHJ1ZSBidXQgZ290
IGZhbHNlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJz
Lmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJz
Lmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAzMzk4YmQ4ODkzMWIuLjRjODY2ZWIyOTI2MyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvc2hhcmVkLXdvcmtlcnMuaHR0cHMtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4
cGVjdGVkLnR4dApAQCAtMiw3ICsyLDcgQEAgVmVyaWZ5IHRoZSBDcm9zcy1PcmlnaW4gRW1iZWRk
ZXIgUG9saWN5IGZvciBTaGFyZWQgV29ya2VycyBieSBwZXJmb3JtaW5nIGEgY3Jvc3MKIAogCiBQ
QVNTIGRlZmF1bHQgcG9saWN5IChkZXJpdmVkIGZyb20gcmVzcG9uc2UpCi1GQUlMICJyZXF1aXJl
LWNvcnAiIChkZXJpdmVkIGZyb20gcmVzcG9uc2UpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJm
YWlsdXJlIiBidXQgZ290ICJzdWNjZXNzIgorUEFTUyAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBm
cm9tIHJlc3BvbnNlKQogUEFTUyBkZWZhdWx0IHBvbGljeSAoZGVyaXZlZCBmcm9tIG93bmVyIHNl
dCBkdWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAtIGJsb2IgVVJMKQogRkFJTCAicmVxdWlyZS1j
b3JwIiAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBkdWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAt
IGJsb2IgVVJMKSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiZmFpbHVyZSIgYnV0IGdvdCAic3Vj
Y2VzcyIKIFBBU1MgZGVmYXVsdCBwb2xpY3kgKGRlcml2ZWQgZnJvbSBvd25lciBzZXQgZHVlIHRv
IHVzZSBvZiBsb2NhbCBzY2hlbWUgLSBkYXRhIFVSTCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRk
ZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5jZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdp
bi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVyaXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50
eHQKaW5kZXggNzViMWQzM2U1MjYwLi5iMmJmMmUzYmZmM2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1i
ZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5jZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9z
cy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5jZS5zdWIuaHR0cHMtZXhw
ZWN0ZWQudHh0CkBAIC0xLDcgKzEsNiBAQAogQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJM
IGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbW1vbi9ibGFuay5odG1sCiBCbG9ja2VkIGFj
Y2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29tbW9uL2Js
YW5rLmh0bWwKIEJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2Nh
bGhvc3Q6OTQ0NC9jb21tb24vYmxhbmsuaHRtbAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwg
VVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbW1vbi9ibGFuay5odG1sCiAKIFBBU1Mg
VGVzdCB0aGF0IGxvY2FsIHNjaGVtZSB3b3JrZXJzIGluaGVyaXQgQ09FUDogcmVxdWlyZS1jb3Jw
IGZyb20gdGhlIGNyZWF0aW5nIGRvY3VtZW50CiBQQVNTIGJsb2IgVVJMIGRlZGljYXRlZCB3b3Jr
ZXI6IFNhbWUgb3JpZ2luIHNob3VsZCBiZSBhbGxvd2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2Vydmlj
ZS13b3JrZXIvY2xhaW0tc2hhcmVkLXdvcmtlci1mZXRjaC5odHRwcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vy
cy9zZXJ2aWNlLXdvcmtlci9jbGFpbS1zaGFyZWQtd29ya2VyLWZldGNoLmh0dHBzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjkwZDkxYWQ1MTAx
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2NsYWltLXNoYXJlZC13b3Jr
ZXItZmV0Y2guaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCisKK0ZBSUwgZmV0
Y2goKSBpbiBTaGFyZWRXb3JrZXIgc2hvdWxkIGJlIGludGVyY2VwdGVkIGFmdGVyIHRoZSBjbGll
bnQgaXMgY2xhaW1lZC4gYXNzZXJ0X2VxdWFsczogZmV0Y2goKSBpbiB0aGUgc2hhcmVkIHdvcmtl
ciBzaG91bGQgYmUgaW50ZXJjZXB0ZWQuIGV4cGVjdGVkICJJbnRlcmNlcHRlZCEiIGJ1dCBnb3Qg
ImEgc2ltcGxlIHRleHQgZmlsZVxuIgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyLWRldGFjaC1mcmFt
ZS1pbi1lcnJvci1ldmVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyLWRldGFjaC1mcmFtZS1pbi1l
cnJvci1ldmVudC1leHBlY3RlZC50eHQKaW5kZXggZWRlMDI3YmZlY2FhLi5lYTg0YTdmZjAyMjgg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9TaGFyZWRXb3JrZXItZGV0YWNoLWZyYW1lLWluLWVycm9yLWV2ZW50LWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvU2hhcmVkV29ya2VyLWRldGFjaC1mcmFtZS1pbi1lcnJvci1ldmVudC1leHBlY3RlZC50
eHQKQEAgLTEsNiArMSwzIEBACiAKLQotSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2Ug
PSBudWxsCi0KLVRJTUVPVVQgVGVzdCBmcmFtZSBkZXRhY2ggaW4gc2hhcmVkIHdvcmtlcidzIGVy
cm9yIGhhbmRsZXIgVGVzdCB0aW1lZCBvdXQKK1BBU1MgVGVzdCBmcmFtZSBkZXRhY2ggaW4gc2hh
cmVkIHdvcmtlcidzIGVycm9yIGhhbmRsZXIKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlci1leGNlcHRp
b24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlci1leGNlcHRpb24tZXhwZWN0ZWQudHh0CmluZGV4IDE1
ODgyNjkyMjI4MS4uNTgzOWU0NmUzMjlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyLWV4Y2VwdGlvbi1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlci1leGNlcHRpb24tZXhwZWN0ZWQudHh0CkBAIC0xLDMg
KzEsMyBAQAogCi1GQUlMIFRoaXMgdGVzdCBjaGVja3Mgd2hldGhlciBleGNlcHRpb25zIGluIFNo
YXJlZFdvcmtlcnMgYXJlIGxvZ2dlZCB0byB0aGUgcGFyZW50IGRvY3VtZW50LiBBbiBleGNlcHRp
b24gc2hvdWxkIGJlIGxvZ2dlZCB0byB0aGUgZXJyb3IgY29uc29sZS4gbnVsbCBpcyBub3QgYW4g
b2JqZWN0IChldmFsdWF0aW5nICd3b3JrZXIucG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQp
IHsgd29ya2VyLm9ubWVzc2FnZShldnQpOyB9JykKK1BBU1MgVGhpcyB0ZXN0IGNoZWNrcyB3aGV0
aGVyIGV4Y2VwdGlvbnMgaW4gU2hhcmVkV29ya2VycyBhcmUgbG9nZ2VkIHRvIHRoZSBwYXJlbnQg
ZG9jdW1lbnQuIEFuIGV4Y2VwdGlvbiBzaG91bGQgYmUgbG9nZ2VkIHRvIHRoZSBlcnJvciBjb25z
b2xlLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyLWV4Y2VwdGlvbi1wcm9wYWdhdGlvbi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvU2hhcmVkV29ya2VyLWV4Y2VwdGlvbi1wcm9wYWdhdGlvbi1leHBlY3RlZC50eHQKaW5kZXgg
NGQxMzliNWFhZDc3Li40NmJiODk3ZjA3NDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXItZXhjZXB0aW9u
LXByb3BhZ2F0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyLWV4Y2VwdGlvbi1wcm9wYWdh
dGlvbi1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgVW5jYXVnaHQgZXJyb3Ig
aW4gc2hhcmVkIHdvcmtlciBzaG91bGQgbm90IHByb3BhZ2F0ZSB0byB3aW5kb3cgbnVsbCBpcyBu
b3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3JrZXIucG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlv
bihldnQpIHsgd29ya2VyLm9ubWVzc2FnZShldnQpOyB9JykKK1BBU1MgVW5jYXVnaHQgZXJyb3Ig
aW4gc2hhcmVkIHdvcmtlciBzaG91bGQgbm90IHByb3BhZ2F0ZSB0byB3aW5kb3cKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L1NoYXJlZFdvcmtlci1zY3JpcHQtZXJyb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlci1zY3JpcHQt
ZXJyb3ItZXhwZWN0ZWQudHh0CmluZGV4IDc0ODY3MGM3NWYzZi4uZTgxMzM4MDBkMmNhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvU2hhcmVkV29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlci1z
Y3JpcHQtZXJyb3ItZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNyBAQAorQ09OU09MRSBNRVNTQUdF
OiBFcnJvcjogYXNzZXJ0X3VucmVhY2hlZDogRkFJTDogb25lcnJvciBpbnZva2VkIGZvciBhIHNj
cmlwdCBlcnJvci4gUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCiAKLUZBSUwgVGVzdCBzY3JpcHQg
ZXJyb3IgdW5oYW5kbGVkLiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2
YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGlu
ZyAnd29ya2VyLnBvcnQucG9zdE1lc3NhZ2UnKSIKLUZBSUwgVGVzdCBzY3JpcHQgZXJyb3IgaGFu
ZGxlZC4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVj
dCAiVHlwZUVycm9yOiBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3dvcmtlci5w
b3J0LnBvc3RNZXNzYWdlJykiCitIYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IEVycm9y
OiBhc3NlcnRfdW5yZWFjaGVkOiBGQUlMOiBvbmVycm9yIGludm9rZWQgZm9yIGEgc2NyaXB0IGVy
cm9yLiBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKKworUEFTUyBUZXN0IHNjcmlwdCBlcnJvciB1
bmhhbmRsZWQuCitQQVNTIFRlc3Qgc2NyaXB0IGVycm9yIGhhbmRsZWQuCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFy
ZWRXb3JrZXItc2ltcGxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXItc2ltcGxlLWV4cGVjdGVkLnR4
dAppbmRleCAyYWJlNTI5ZDIxNTMuLjgzNzYzMTk3MWU0YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlci1z
aW1wbGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXItc2ltcGxlLWV4cGVjdGVkLnR4dApAQCAt
MSwzICsxLDMgQEAKIAotRkFJTCBUZXN0IHNpbXBsZSBzaGFyZWQgd29ya2VyIGNvbnN0cnVjdGlv
biBjYXNlLiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2Jq
ZWN0ICJUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2Vy
LnBvcnQucG9zdE1lc3NhZ2UnKSIKK1BBU1MgVGVzdCBzaW1wbGUgc2hhcmVkIHdvcmtlciBjb25z
dHJ1Y3Rpb24gY2FzZS4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9ibG9iVXJsLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9T
aGFyZWRXb3JrZXJfYmxvYlVybC1leHBlY3RlZC50eHQKaW5kZXggZmE1M2U4N2ZhMzBlLi42YzYw
N2Y4ODc4NDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJfYmxvYlVybC1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJl
ZFdvcmtlcl9ibG9iVXJsLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKIAotRkFJTCBCbG9i
IFVSTCBzaGFyZWQgYnkgZG9jdW1lbnQgb24gU2hhcmVkV29ya2VyIHByb21pc2VfdGVzdDogVW5o
YW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogbnVsbCBpcyBu
b3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3JrZXIucG9ydC5wb3N0TWVzc2FnZScpIgorUEFT
UyBCbG9iIFVSTCBzaGFyZWQgYnkgZG9jdW1lbnQgb24gU2hhcmVkV29ya2VyCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9T
aGFyZWRXb3JrZXJfZGF0YVVybC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyX2RhdGFVcmwtZXhwZWN0
ZWQudHh0CmluZGV4IDk5NWEwNjAxOWI4NC4uOWI1ODIwYWFlOGNiIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29y
a2VyX2RhdGFVcmwtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJfZGF0YVVybC1leHBlY3RlZC50
eHQKQEAgLTEsMTMgKzEsNSBAQAotQ09OU09MRSBNRVNTQUdFOiBFcnJvcjogYXNzZXJ0X2VxdWFs
czogZXhwZWN0ZWQgMiBidXQgZ290IDEKIAogCi1IYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2Fn
ZSA9IEVycm9yOiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3QgMQotCi1QQVNTIERh
dGEgVVJMIG5vdCBzaGFyZWQgYnkgY3Jvc3Mtb3JpZ2luIFNoYXJlZFdvcmtlcnMKLVRJTUVPVVQg
RGF0YSBVUkxzIHNoYXJlZCBieSBzYW1lLW9yaWdpbiBTaGFyZWRXb3JrZXJzIFRlc3QgdGltZWQg
b3V0Ci0KLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gRXJyb3I6IGFzc2VydF9lcXVh
bHM6IGV4cGVjdGVkIDIgYnV0IGdvdCAxCi0KIFBBU1MgRGF0YSBVUkwgbm90IHNoYXJlZCBieSBj
cm9zcy1vcmlnaW4gU2hhcmVkV29ya2VycwotVElNRU9VVCBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNh
bWUtb3JpZ2luIFNoYXJlZFdvcmtlcnMgVGVzdCB0aW1lZCBvdXQKK1BBU1MgRGF0YSBVUkxzIHNo
YXJlZCBieSBzYW1lLW9yaWdpbiBTaGFyZWRXb3JrZXJzCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9Xb3JrZXJfY3Jvc3Nf
b3JpZ2luX3NlY3VyaXR5X2Vyci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvV29ya2VyX2Nyb3NzX29yaWdpbl9zZWN1cml0
eV9lcnItZXhwZWN0ZWQudHh0CmluZGV4IDc3MWVkOWJhMjM5NC4uMzA3ZTlkYWNlYTY5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvV29ya2VyX2Nyb3NzX29yaWdpbl9zZWN1cml0eV9lcnItZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9Xb3JrZXJf
Y3Jvc3Nfb3JpZ2luX3NlY3VyaXR5X2Vyci1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw0IEBACiAK
LUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1USU1FT1VUICBXb3Jr
ZXIgY3Jvc3Mtb3JpZ2luIFVSTCAgVGVzdCB0aW1lZCBvdXQKK1BBU1MgQ3Jvc3Mtb3JpZ2luIGNs
YXNzaWMgd29ya2VycyBzaG91bGQgZmFpbCB0byBmZXRjaAorUEFTUyBDcm9zcy1vcmlnaW4gbW9k
dWxlIHdvcmtlcnMgc2hvdWxkIGZhaWwgdG8gZmV0Y2gKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9T
aGFyZWRXb3JrZXIvSW5maW5pdHktYXJndW1lbnRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hh
cmVkV29ya2VyL0luZmluaXR5LWFyZ3VtZW50cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lOWNmMzk5ODVkYzMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29u
c3RydWN0b3JzL1NoYXJlZFdvcmtlci9JbmZpbml0eS1hcmd1bWVudHMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMyBAQAorCitQQVNTIFRlc3QgY29uc3RydWN0aW5nIGEgc2hhcmVkIHdvcmtlciB3
aXRoIEluZmluaXR5CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29ya2VyL05hTi1hcmd1
bWVudHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvTmFOLWFyZ3VtZW50cy1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45MDUx
NWQ4YWVlOTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci9OYU4tYXJn
dW1lbnRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBUZXN0IGNvbnN0cnVj
dGluZyBhIHNoYXJlZCB3b3JrZXIgd2l0aCBOYU4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFy
ZWRXb3JrZXIvVVJMTWlzbWF0Y2hFcnJvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdv
cmtlci9VUkxNaXNtYXRjaEVycm9yLWV4cGVjdGVkLnR4dAppbmRleCA3NDQ5MGU1MmM3NmYuLjEz
ZTgyZmU1MGVhMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvVVJMTWlzbWF0Y2hF
cnJvci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvVVJMTWlzbWF0Y2hF
cnJvci1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IFJlZmVy
ZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKIAotRkFJTCBXZWIg
V29ya2VyczogU2hhcmVkV29ya2VyIC0gc2FtZSBuYW1lLCBkaWZmZXJlbnQgVVJMIFJlZmVyZW5j
ZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKK1BBU1MgV2ViIFdvcmtl
cnM6IFNoYXJlZFdvcmtlciAtIHNhbWUgbmFtZSwgZGlmZmVyZW50IFVSTAogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29u
c3RydWN0b3JzL1NoYXJlZFdvcmtlci9jb25uZWN0LWV2ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9jb25zdHJ1Y3Rv
cnMvU2hhcmVkV29ya2VyL2Nvbm5lY3QtZXZlbnQtZXhwZWN0ZWQudHh0CmluZGV4IDNmYjllMDIw
MDJjMC4uOTdmZTI5NDdlNGJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci9jb25u
ZWN0LWV2ZW50LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci9jb25uZWN0
LWV2ZW50LWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKIAotRkFJTCBUZXN0IGNvbm5lY3Qg
ZXZlbnQgZm9yIGEgc2hhcmVkIHdvcmtlciBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRp
bmcgJ3dvcmtlci5wb3J0JykKK1BBU1MgVGVzdCBjb25uZWN0IGV2ZW50IGZvciBhIHNoYXJlZCB3
b3JrZXIKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvZ2xvYmFsLW1lbWJlcnMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvZ2xvYmFsLW1lbWJlcnMtZXhwZWN0
ZWQudHh0CmluZGV4IGFhN2M1MWRjMDgzOC4uZWE1MzQ0NDRkNmJhIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0
b3JzL1NoYXJlZFdvcmtlci9nbG9iYWwtbWVtYmVycy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9y
cy9TaGFyZWRXb3JrZXIvZ2xvYmFsLW1lbWJlcnMtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsMyBA
QAogCi1GQUlMIFRlc3QgaWYgZ2xvYmFsIG1lbWJlcnMgZXhpc3QgaW4gYSBzaGFyZWQgd29ya2Vy
IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQub25tZXNzYWdl
ID0gdC5zdGVwX2Z1bmNfZG9uZShlID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKGUuZGF0YSwgJycp
OwotICB9KScpCitQQVNTIFRlc3QgaWYgZ2xvYmFsIG1lbWJlcnMgZXhpc3QgaW4gYSBzaGFyZWQg
d29ya2VyCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29ya2VyL2ludGVyZmFjZS1vYmpl
Y3RzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29ya2VyL2ludGVyZmFjZS1vYmplY3Rz
LWV4cGVjdGVkLnR4dAppbmRleCA5NzM3ZjZhYjIzMzkuLjdmMjViODM2NDRkNyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2Nv
bnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvaW50ZXJmYWNlLW9iamVjdHMtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9j
b25zdHJ1Y3RvcnMvU2hhcmVkV29ya2VyL2ludGVyZmFjZS1vYmplY3RzLWV4cGVjdGVkLnR4dApA
QCAtMSwzICsxLDMgQEAKIAotRkFJTCBUZXN0IGlmIGludGVyZmFjZSBvYmplY3RzIGV4aXN0IGlu
IGEgc2hhcmVkIHdvcmtlciBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3dvcmtl
ci5wb3J0LnN0YXJ0JykKK0ZBSUwgVGVzdCBpZiBpbnRlcmZhY2Ugb2JqZWN0cyBleGlzdCBpbiBh
IHNoYXJlZCB3b3JrZXIgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIiIgYnV0IGdvdCAiVGhlc2Ug
d2VyZSBtaXNzaW5nOiBXb3JrZXIsIFNoYXJlZFdvcmtlciwgQXBwbGljYXRpb25DYWNoZSIKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvbmFtZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0
b3JzL1NoYXJlZFdvcmtlci9uYW1lLWV4cGVjdGVkLnR4dAppbmRleCBjYzUwOTFiNzM0YjEuLmZm
NjcyMzUzOTMxZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvbmFtZS1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvbmFtZS1leHBlY3RlZC50eHQKQEAgLTEs
NSArMSwzIEBACiAKLUZBSUwgVGVzdCBzZWxmLm5hbWUgaW4gYSBzaGFyZWQgd29ya2VyIG51bGwg
aXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQub25tZXNzYWdlID0gdC5z
dGVwX2Z1bmNfZG9uZShlID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKGUuZGF0YSwgJ2hlbGxvJyk7
Ci0gIH0pJykKK1BBU1MgVGVzdCBzZWxmLm5hbWUgaW4gYSBzaGFyZWQgd29ya2VyCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29ya2VyL251bGwtYXJndW1lbnRzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9jb25z
dHJ1Y3RvcnMvU2hhcmVkV29ya2VyL251bGwtYXJndW1lbnRzLWV4cGVjdGVkLnR4dAppbmRleCA1
MjFmMTNjNjBhYzIuLjczZDA2NGFlMWY1MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3Jr
ZXIvbnVsbC1hcmd1bWVudHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29ya2Vy
L251bGwtYXJndW1lbnRzLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKIAotRkFJTCBUZXN0
IGNvbnN0cnVjdGluZyBhIHNoYXJlZCB3b3JrZXIgd2l0aCBudWxsIG51bGwgaXMgbm90IGFuIG9i
amVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQnKQorUEFTUyBUZXN0IGNvbnN0cnVjdGluZyBh
IHNoYXJlZCB3b3JrZXIgd2l0aCBudWxsCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29y
a2VyL251bWJlci1hcmd1bWVudHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIv
bnVtYmVyLWFyZ3VtZW50cy1leHBlY3RlZC50eHQKaW5kZXggYWEwMWQyNGI1ZjdlLi42YWUyZGI0
OTIyNGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29ya2VyL251bWJlci1hcmd1bWVudHMt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29ya2VyL251bWJlci1hcmd1bWVudHMt
ZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIFRlc3QgY29uc3RydWN0aW5nIGEg
c2hhcmVkIHdvcmtlciB3aXRoIDEgbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3
b3JrZXIucG9ydCcpCitQQVNTIFRlc3QgY29uc3RydWN0aW5nIGEgc2hhcmVkIHdvcmtlciB3aXRo
IDEKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvcG9ydC1vbm1lc3NhZ2UtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvcG9ydC1vbm1lc3NhZ2UtZXhwZWN0ZWQu
dHh0CmluZGV4IGJkY2I1ODY0ZmFhMy4uMjA0ZTEzMDZmMjM2IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3Jz
L1NoYXJlZFdvcmtlci9wb3J0LW9ubWVzc2FnZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9T
aGFyZWRXb3JrZXIvcG9ydC1vbm1lc3NhZ2UtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsMyBAQAog
Ci1GQUlMIFRlc3QgU2hhcmVkV29ya2VyLnBvcnQub25tZXNzYWdlIG51bGwgaXMgbm90IGFuIG9i
amVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQub25tZXNzYWdlID0gdC5zdGVwX2Z1bmNfZG9u
ZShlID0+IHsKLSAgICBhc3NlcnRfdHJ1ZShlLmRhdGEpOwotICB9KScpCitQQVNTIFRlc3QgU2hh
cmVkV29ya2VyLnBvcnQub25tZXNzYWdlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29y
a2VyL3BvcnQtcHJvcGVydGllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci9w
b3J0LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CmluZGV4IDI1M2Q3NmU0MGNhYi4uMzQ4MjJkMDRi
N2U2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci9wb3J0LXByb3BlcnRpZXMtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29ya2VyL3BvcnQtcHJvcGVydGllcy1leHBl
Y3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgd29ya2VyLnBvcnQgd29ya2VyLnBvcnQg
aXMgbm90IGFuIE9iamVjdC4gKGV2YWx1YXRpbmcgJydwb3N0TWVzc2FnZScgaW4gd29ya2VyLnBv
cnQnKQorUEFTUyB3b3JrZXIucG9ydAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtl
ci9zYW1lLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci9zYW1lLW9y
aWdpbi1leHBlY3RlZC50eHQKaW5kZXggZjFhNWFlMDAzYTkzLi5jZWZmODc3MDQ3OTAgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29ya2VyL3NhbWUtb3JpZ2luLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29u
c3RydWN0b3JzL1NoYXJlZFdvcmtlci9zYW1lLW9yaWdpbi1leHBlY3RlZC50eHQKQEAgLTEsMTUg
KzEsMTkgQEAKLQotSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCitDT05T
T0xFIE1FU1NBR0U6IENhbm5vdCBsb2FkIHVuc3VwcG9ydGVkOi4KK0NPTlNPTEUgTUVTU0FHRTog
Q2Fubm90IGxvYWQgamF2YXNjcmlwdDoiIi4KK0NPTlNPTEUgTUVTU0FHRTogQ2Fubm90IGxvYWQg
YWJvdXQ6YmxhbmsuCitDT05TT0xFIE1FU1NBR0U6IENhbm5vdCBsb2FkIGh0dHA6Ly93d3cub3Bl
cmEuY29tLy4KK0NPTlNPTEUgTUVTU0FHRTogQ2Fubm90IGxvYWQgaHR0cDovL2xvY2FsaG9zdDo4
MS8uCitDT05TT0xFIE1FU1NBR0U6IENhbm5vdCBsb2FkIGh0dHBzOi8vbG9jYWxob3N0OjgwLy4K
K0NPTlNPTEUgTUVTU0FHRTogQ2Fubm90IGxvYWQgaHR0cHM6Ly9sb2NhbGhvc3Q6ODAwMC8uCitD
T05TT0xFIE1FU1NBR0U6IENhbm5vdCBsb2FkIGh0dHA6Ly9sb2NhbGhvc3Q6ODAxMi8uCiAKIEZB
SUwgdW5zdXBwb3J0ZWRfc2NoZW1lIGFzc2VydF90aHJvd3NfZG9tOiBmdW5jdGlvbiAiKCkgPT4g
eyBuZXcgU2hhcmVkV29ya2VyKCd1bnN1cHBvcnRlZDonLCAnJyk7IH0iIGRpZCBub3QgdGhyb3cK
LUZBSUwgZGF0YV91cmwgbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3JrZXIu
cG9ydC5vbm1lc3NhZ2UgPSB0LnN0ZXBfZnVuY19kb25lKGUgPT4gewotICAgIGFzc2VydF9lcXVh
bHMoZS5kYXRhLCAxKTsKLSAgfSknKQotVElNRU9VVCBqYXZhc2NyaXB0X3VybCBUZXN0IHRpbWVk
IG91dAotVElNRU9VVCBhYm91dF9ibGFuayBUZXN0IHRpbWVkIG91dAotVElNRU9VVCBvcGVyYV9j
b20gVGVzdCB0aW1lZCBvdXQKLVRJTUVPVVQgcG9ydF84MSBUZXN0IHRpbWVkIG91dAotVElNRU9V
VCBodHRwc19wb3J0XzgwIFRlc3QgdGltZWQgb3V0Ci1USU1FT1VUIGh0dHBzX3BvcnRfODAwMCBU
ZXN0IHRpbWVkIG91dAotVElNRU9VVCBodHRwX3BvcnRfODAxMiBUZXN0IHRpbWVkIG91dAorUEFT
UyBkYXRhX3VybAorUEFTUyBqYXZhc2NyaXB0X3VybAorUEFTUyBhYm91dF9ibGFuaworUEFTUyBv
cGVyYV9jb20KK1BBU1MgcG9ydF84MQorUEFTUyBodHRwc19wb3J0XzgwCitQQVNTIGh0dHBzX3Bv
cnRfODAwMAorUEFTUyBodHRwX3BvcnRfODAxMgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJl
ZFdvcmtlci9zZXR0aW5nLXBvcnQtbWVtYmVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJl
ZFdvcmtlci9zZXR0aW5nLXBvcnQtbWVtYmVycy1leHBlY3RlZC50eHQKaW5kZXggMTYxZmE5YWZj
NWUzLi4wN2YwYTM3ZDY5ZDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9jb25zdHJ1Y3RvcnMvU2hhcmVkV29ya2VyL3NldHRp
bmctcG9ydC1tZW1iZXJzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci9z
ZXR0aW5nLXBvcnQtbWVtYmVycy1leHBlY3RlZC50eHQKQEAgLTEsOSArMSw5IEBACiAKLUZBSUwg
cG9zdE1lc3NhZ2UgbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3JrZXIucG9y
dC5wb3N0TWVzc2FnZSA9IDEnKQotRkFJTCBzdGFydCBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2
YWx1YXRpbmcgJ3dvcmtlci5wb3J0LnN0YXJ0ID0gMScpCi1GQUlMIGNsb3NlIG51bGwgaXMgbm90
IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQuY2xvc2UgPSAxJykKLUZBSUwgb25t
ZXNzYWdlIG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQub25t
ZXNzYWdlID0gZicpCi1GQUlMIGFkZEV2ZW50TGlzdGVuZXIgbnVsbCBpcyBub3QgYW4gb2JqZWN0
IChldmFsdWF0aW5nICd3b3JrZXIucG9ydC5hZGRFdmVudExpc3RlbmVyID0gMScpCi1GQUlMIHJl
bW92ZUV2ZW50TGlzdGVuZXIgbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3Jr
ZXIucG9ydC5yZW1vdmVFdmVudExpc3RlbmVyID0gMScpCi1GQUlMIGRlc3BhdGNoRXZlbnQgbnVs
bCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3JrZXIucG9ydC5kZXNwYXRjaEV2ZW50
ID0gMScpCitQQVNTIHBvc3RNZXNzYWdlCitQQVNTIHN0YXJ0CitQQVNTIGNsb3NlCitGQUlMIG9u
bWVzc2FnZSBhc3NlcnRfZXF1YWxzOiB7aGFuZGxlRXZlbnQ6KCkgPT4ge319IGV4cGVjdGVkIG51
bGwgYnV0IGdvdCBvYmplY3QgIltvYmplY3QgT2JqZWN0XSIKK1BBU1MgYWRkRXZlbnRMaXN0ZW5l
cgorUEFTUyByZW1vdmVFdmVudExpc3RlbmVyCitQQVNTIGRlc3BhdGNoRXZlbnQKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvdW5kZWZpbmVkLWFyZ3VtZW50cy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
Y29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci91bmRlZmluZWQtYXJndW1lbnRzLWV4cGVjdGVkLnR4
dAppbmRleCA3ZmE3Nzg1ZjQ2MDguLmE1YmQzY2QwYjMxMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9T
aGFyZWRXb3JrZXIvdW5kZWZpbmVkLWFyZ3VtZW50cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9y
cy9TaGFyZWRXb3JrZXIvdW5kZWZpbmVkLWFyZ3VtZW50cy1leHBlY3RlZC50eHQKQEAgLTEsMyAr
MSwzIEBACiAKLUZBSUwgVGVzdCBjb25zdHJ1Y3RpbmcgYSBzaGFyZWQgd29ya2VyIHdpdGggdW5k
ZWZpbmVkIG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQnKQor
UEFTUyBUZXN0IGNvbnN0cnVjdGluZyBhIHNoYXJlZCB3b3JrZXIgd2l0aCB1bmRlZmluZWQKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvdW5leHBlY3RlZC1nbG9iYWwtcHJvcGVy
dGllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci91bmV4cGVjdGVkLWdsb2Jh
bC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAppbmRleCBhZDk3OWNjOTA5MTAuLmI0MGY1MDIzOTQz
YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvdW5leHBlY3RlZC1nbG9iYWwtcHJv
cGVydGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvdW5leHBlY3Rl
ZC1nbG9iYWwtcHJvcGVydGllcy1leHBlY3RlZC50eHQKQEAgLTEsNSArMSwzIEBACiAKLUZBSUwg
VGVzdCB1bmV4cGVjdGVkIHByb3BlcnRpZXMgYXJlIG5vdCBpbiBnbG9iYWwgc2NvcGUgbnVsbCBp
cyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3JrZXIucG9ydC5vbm1lc3NhZ2UgPSB0LnN0
ZXBfZnVuY19kb25lKGUgPT4gewotICAgIGFzc2VydF9lcXVhbHMoZS5kYXRhLCAnJyk7Ci0gIH0p
JykKK1BBU1MgVGVzdCB1bmV4cGVjdGVkIHByb3BlcnRpZXMgYXJlIG5vdCBpbiBnbG9iYWwgc2Nv
cGUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIvdW5yZXNvbHZhYmxlLXVybC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvY29uc3RydWN0b3JzL1NoYXJlZFdvcmtlci91bnJlc29sdmFibGUtdXJsLWV4cGVj
dGVkLnR4dAppbmRleCAwNmQ1YzlhYzFiOTMuLjU1MmNiOWQ1MDFiNSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVj
dG9ycy9TaGFyZWRXb3JrZXIvdW5yZXNvbHZhYmxlLXVybC1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2NvbnN0cnVj
dG9ycy9TaGFyZWRXb3JrZXIvdW5yZXNvbHZhYmxlLXVybC1leHBlY3RlZC50eHQKQEAgLTEsNSAr
MSwzIEBACiAKLUZBSUwgcmVzb2x2aW5nIGJyb2tlbiB1cmwgYXNzZXJ0X3Rocm93c19kb206IGZ1
bmN0aW9uICIoKSA9PiB7Ci0gICAgY29uc3Qgd29ya2VyID0gbmV3IFNoYXJlZFdvcmtlcignaHR0
cDovL2ZvbyBiYXInKTsKLSAgfSIgZGlkIG5vdCB0aHJvdworUEFTUyByZXNvbHZpbmcgYnJva2Vu
IHVybAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dvcmtlcnMvZGF0YS11cmwtc2hhcmVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9kYXRhLXVybC1zaGFyZWQt
ZXhwZWN0ZWQudHh0CmluZGV4IGM4MTIwMTRkYTMxZS4uMTNmYzkwM2Q3MDdmIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvZGF0
YS11cmwtc2hhcmVkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvZGF0YS11cmwtc2hhcmVkLWV4cGVjdGVkLnR4dApA
QCAtMSwzMCArMSwxMSBAQAotQ09OU09MRSBNRVNTQUdFOiBUeXBlRXJyb3I6IG51bGwgaXMgbm90
IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQub25tZXNzYWdlID0gZSA9PiBwb3J0
LnBvc3RNZXNzYWdlKGUuZGF0YSknKQogCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2Fn
ZSA9IG51bGwKLQotRkFJTCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IE1JTUUgYWxsb3dlZCBudWxs
IGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3cucG9ydC5vbm1lc3NhZ2UgPSB0LnN0ZXBf
ZnVuY19kb25lKGZ1bmN0aW9uKGUpIHsKLSAgICAgIGFzc2VydF9lcXVhbHMoZS5kYXRhLCAnUEFT
UycpOwotICAgIH0pJykKLUZBSUwgdGV4dC9wbGFpbiBNSU1FIGFsbG93ZWQgbnVsbCBpcyBub3Qg
YW4gb2JqZWN0IChldmFsdWF0aW5nICd3LnBvcnQub25tZXNzYWdlID0gdC5zdGVwX2Z1bmNfZG9u
ZShmdW5jdGlvbihlKSB7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGUuZGF0YSwgJ1BBU1MnKTsKLSAg
ICB9KScpCi1GQUlMIGVtcHR5IE1JTUUgYWxsb3dlZCBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2
YWx1YXRpbmcgJ3cucG9ydC5vbm1lc3NhZ2UgPSB0LnN0ZXBfZnVuY19kb25lKGZ1bmN0aW9uKGUp
IHsKLSAgICAgIGFzc2VydF9lcXVhbHMoZS5kYXRhLCAnUEFTUycpOwotICAgIH0pJykKLUZBSUwg
Y29tbXVuaWNhdGlvbiBnb2VzIGJvdGggd2F5cyBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1
YXRpbmcgJ3cucG9ydC5vbm1lc3NhZ2UgPSB0LnN0ZXBfZnVuY19kb25lKGZ1bmN0aW9uKGUpIHsK
LSAgICAgIGFzc2VydF9lcXVhbHMoZS5kYXRhLCAnUEFTUycpOwotICAgIH0pJykKLUZBSUwgaW5k
ZXhlZERCIGlzIHByZXNlbnQgbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3LnBv
cnQub25tZXNzYWdlID0gdC5zdGVwX2Z1bmNfZG9uZShmdW5jdGlvbihlKSB7Ci0gICAgICBhc3Nl
cnRfZXF1YWxzKGUuZGF0YSwgJ1BBU1MnKTsKLSAgICB9KScpCi1GQUlMIGluZGV4ZWREQiBpcyBp
bmFjY2Vzc2libGUgbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3LnBvcnQub25t
ZXNzYWdlID0gdC5zdGVwX2Z1bmNfZG9uZShmdW5jdGlvbihlKSB7Ci0gICAgICBhc3NlcnRfZXF1
YWxzKGUuZGF0YSwgJ1BBU1MnKTsKLSAgICB9KScpCi1GQUlMIGNyb3NzLW9yaWdpbiB3b3JrZXIg
bnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3LnBvcnQub25tZXNzYWdlID0gdC5z
dGVwX2Z1bmNfZG9uZShmdW5jdGlvbihlKSB7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGUuZGF0YSwg
J1BBU1MnKTsKLSAgICB9KScpCi1GQUlMIHdvcmtlciBoYXMgb3BhcXVlIG9yaWdpbiBudWxsIGlz
IG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3cucG9ydC5vbm1lc3NhZ2UgPSB0LnN0ZXBfZnVu
Y19kb25lKGZ1bmN0aW9uKGUpIHsKLSAgICAgIGFzc2VydF9lcXVhbHMoZS5kYXRhLCAnUEFTUycp
OwotICAgIH0pJykKLVRJTUVPVVQgQSBkYXRhOiBVUkwgc2hhcmVkIHdvcmtlciBzaG91bGQgbm90
IGJlIHNoYXJlZCBhbW9uZyBvcmlnaW5zLiBUZXN0IHRpbWVkIG91dAorUEFTUyBhcHBsaWNhdGlv
bi9qYXZhc2NyaXB0IE1JTUUgYWxsb3dlZAorUEFTUyB0ZXh0L3BsYWluIE1JTUUgYWxsb3dlZAor
UEFTUyBlbXB0eSBNSU1FIGFsbG93ZWQKK1BBU1MgY29tbXVuaWNhdGlvbiBnb2VzIGJvdGggd2F5
cworUEFTUyBpbmRleGVkREIgaXMgcHJlc2VudAorUEFTUyBpbmRleGVkREIgaXMgaW5hY2Nlc3Np
YmxlCitQQVNTIGNyb3NzLW9yaWdpbiB3b3JrZXIKK1BBU1Mgd29ya2VyIGhhcyBvcGFxdWUgb3Jp
Z2luCitQQVNTIEEgZGF0YTogVVJMIHNoYXJlZCB3b3JrZXIgc2hvdWxkIG5vdCBiZSBzaGFyZWQg
YW1vbmcgb3JpZ2lucy4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxv
Yi11cmwud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2It
dXJsLndpbmRvdy1leHBlY3RlZC50eHQKaW5kZXggNTc2ZTZkMmI3ZWQyLi40YTI2YmU5MjlhOGQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4
cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVS
TCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9l
eHBvcnQtb24tbG9hZC1zY3JpcHQucHkKIAogUEFTUyBTdGF0aWMgaW1wb3J0LgogRkFJTCBTdGF0
aWMgaW1wb3J0IChjcm9zcy1vcmlnaW4pLiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rp
b24gd2l0aCB2YWx1ZTogIkltcG9ydGluZyBhIG1vZHVsZSBzY3JpcHQgZmFpbGVkLiIKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4t
ZXhwZWN0ZWQudHh0CmluZGV4IDRmODY0MWU1MTQ4MC4uMjk5N2Y3ZTFmMzA4IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9k
dWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1l
eHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IE9yaWdpbiBudWxs
IGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbi4gU3RhdHVzIGNv
ZGU6IDIwMAogCiBIYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50
eHQKaW5kZXggZWFjN2Y5NWRlNmYyLi5jYmMwNDI5ZTBjNzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJl
ZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hh
cmVkLXdvcmtlci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsx
LDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxo
b3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQu
cHkKIAogSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LXJlZmVycmVyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3No
YXJlZC13b3JrZXItaW1wb3J0LXJlZmVycmVyLWV4cGVjdGVkLnR4dAppbmRleCA1Y2QyZGMyNWVl
MDUuLjdiNGVlOGMxOWVkMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtcmVm
ZXJyZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LXJlZmVycmVy
LWV4cGVjdGVkLnR4dApAQCAtMSwzMSArMSwxNiBAQAotQ09OU09MRSBNRVNTQUdFOiBUeXBlRXJy
b3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQub25tZXNz
YWdlID0gbXNnID0+IHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UobXNnLmRhdGEsICcqJyknKQot
Q09OU09MRSBNRVNTQUdFOiBUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVh
dGluZyAnd29ya2VyLnBvcnQub25tZXNzYWdlID0gbXNnID0+IHdpbmRvdy5vcGVuZXIucG9zdE1l
c3NhZ2UobXNnLmRhdGEsICcqJyknKQotQ09OU09MRSBNRVNTQUdFOiBUeXBlRXJyb3I6IG51bGwg
aXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQub25tZXNzYWdlID0gbXNn
ID0+IHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UobXNnLmRhdGEsICcqJyknKQotQ09OU09MRSBN
RVNTQUdFOiBUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29y
a2VyLnBvcnQub25tZXNzYWdlID0gbXNnID0+IHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UobXNn
LmRhdGEsICcqJyknKQotQ09OU09MRSBNRVNTQUdFOiBUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFu
IG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQub25tZXNzYWdlID0gbXNnID0+IHdpbmRv
dy5vcGVuZXIucG9zdE1lc3NhZ2UobXNnLmRhdGEsICcqJyknKQotQ09OU09MRSBNRVNTQUdFOiBU
eXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQu
b25tZXNzYWdlID0gbXNnID0+IHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UobXNnLmRhdGEsICcq
JyknKQotQ09OU09MRSBNRVNTQUdFOiBUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAo
ZXZhbHVhdGluZyAnd29ya2VyLnBvcnQub25tZXNzYWdlID0gbXNnID0+IHdpbmRvdy5vcGVuZXIu
cG9zdE1lc3NhZ2UobXNnLmRhdGEsICcqJyknKQotQ09OU09MRSBNRVNTQUdFOiBUeXBlRXJyb3I6
IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQub25tZXNzYWdl
ID0gbXNnID0+IHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UobXNnLmRhdGEsICcqJyknKQotQ09O
U09MRSBNRVNTQUdFOiBUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGlu
ZyAnd29ya2VyLnBvcnQub25tZXNzYWdlID0gbXNnID0+IHdpbmRvdy5vcGVuZXIucG9zdE1lc3Nh
Z2UobXNnLmRhdGEsICcqJyknKQotQ09OU09MRSBNRVNTQUdFOiBUeXBlRXJyb3I6IG51bGwgaXMg
bm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQub25tZXNzYWdlID0gbXNnID0+
IHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UobXNnLmRhdGEsICcqJyknKQotQ09OU09MRSBNRVNT
QUdFOiBUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2Vy
LnBvcnQub25tZXNzYWdlID0gbXNnID0+IHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UobXNnLmRh
dGEsICcqJyknKQotQ09OU09MRSBNRVNTQUdFOiBUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9i
amVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQub25tZXNzYWdlID0gbXNnID0+IHdpbmRvdy5v
cGVuZXIucG9zdE1lc3NhZ2UobXNnLmRhdGEsICcqJyknKQotQ09OU09MRSBNRVNTQUdFOiBUeXBl
RXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQub25t
ZXNzYWdlID0gbXNnID0+IHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UobXNnLmRhdGEsICcqJykn
KQotQ09OU09MRSBNRVNTQUdFOiBUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZh
bHVhdGluZyAnd29ya2VyLnBvcnQub25tZXNzYWdlID0gbXNnID0+IHdpbmRvdy5vcGVuZXIucG9z
dE1lc3NhZ2UobXNnLmRhdGEsICcqJyknKQotQ09OU09MRSBNRVNTQUdFOiBUeXBlRXJyb3I6IG51
bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQub25tZXNzYWdlID0g
bXNnID0+IHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UobXNnLmRhdGEsICcqJyknKQogCi1GQUlM
IFNhbWUtb3JpZ2luIHRvcC1sZXZlbCBtb2R1bGUgc2NyaXB0IGxvYWRpbmcgd2l0aCAibm8tcmVm
ZXJyZXIiIHJlZmVycmVyIHBvbGljeSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24g
d2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiCi1GQUlMIFNhbWUtb3Jp
Z2luIHRvcC1sZXZlbCBtb2R1bGUgc2NyaXB0IGxvYWRpbmcgd2l0aCAib3JpZ2luIiByZWZlcnJl
ciBwb2xpY3kgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9i
amVjdCAiVHlwZUVycm9yOiBUeXBlIGVycm9yIgotRkFJTCBTYW1lLW9yaWdpbiB0b3AtbGV2ZWwg
bW9kdWxlIHNjcmlwdCBsb2FkaW5nIHdpdGggInNhbWUtb3JpZ2luIiByZWZlcnJlciBwb2xpY3kg
cHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlw
ZUVycm9yOiBUeXBlIGVycm9yIgotRkFJTCBTYW1lLW9yaWdpbiBzdGF0aWMgaW1wb3J0IHdpdGgg
Im5vLXJlZmVycmVyIiByZWZlcnJlciBwb2xpY3kuIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJl
amVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogVHlwZSBlcnJvciIKLUZBSUwg
U2FtZS1vcmlnaW4gc3RhdGljIGltcG9ydCB3aXRoICJvcmlnaW4iIHJlZmVycmVyIHBvbGljeS4g
cHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlw
ZUVycm9yOiBUeXBlIGVycm9yIgotRkFJTCBTYW1lLW9yaWdpbiBzdGF0aWMgaW1wb3J0IHdpdGgg
InNhbWUtb3JpZ2luIiByZWZlcnJlciBwb2xpY3kuIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJl
amVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogVHlwZSBlcnJvciIKK1BBU1Mg
U2FtZS1vcmlnaW4gdG9wLWxldmVsIG1vZHVsZSBzY3JpcHQgbG9hZGluZyB3aXRoICJuby1yZWZl
cnJlciIgcmVmZXJyZXIgcG9saWN5CitQQVNTIFNhbWUtb3JpZ2luIHRvcC1sZXZlbCBtb2R1bGUg
c2NyaXB0IGxvYWRpbmcgd2l0aCAib3JpZ2luIiByZWZlcnJlciBwb2xpY3kKK1BBU1MgU2FtZS1v
cmlnaW4gdG9wLWxldmVsIG1vZHVsZSBzY3JpcHQgbG9hZGluZyB3aXRoICJzYW1lLW9yaWdpbiIg
cmVmZXJyZXIgcG9saWN5CitGQUlMIFNhbWUtb3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0aCAibm8t
cmVmZXJyZXIiIHJlZmVycmVyIHBvbGljeS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIiIgYnV0
IGdvdCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvc3Rh
dGljLWltcG9ydC1zYW1lLW9yaWdpbi1yZWZlcnJlci1jaGVja2VyLXdvcmtlci5qcyIKK0ZBSUwg
U2FtZS1vcmlnaW4gc3RhdGljIGltcG9ydCB3aXRoICJvcmlnaW4iIHJlZmVycmVyIHBvbGljeS4g
YXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC8iIGJ1dCBnb3Qg
Imh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC93b3JrZXJzL21vZHVsZXMvcmVzb3VyY2VzL3N0YXRpYy1p
bXBvcnQtc2FtZS1vcmlnaW4tcmVmZXJyZXItY2hlY2tlci13b3JrZXIuanMiCitQQVNTIFNhbWUt
b3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0aCAic2FtZS1vcmlnaW4iIHJlZmVycmVyIHBvbGljeS4K
IEZBSUwgQ3Jvc3Mtb3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0aCAibm8tcmVmZXJyZXIiIHJlZmVy
cmVyIHBvbGljeS4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6
IG9iamVjdCAiVHlwZUVycm9yOiBUeXBlIGVycm9yIgogRkFJTCBDcm9zcy1vcmlnaW4gc3RhdGlj
IGltcG9ydCB3aXRoICJvcmlnaW4iIHJlZmVycmVyIHBvbGljeS4gcHJvbWlzZV90ZXN0OiBVbmhh
bmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBUeXBlIGVycm9y
IgogRkFJTCBDcm9zcy1vcmlnaW4gc3RhdGljIGltcG9ydCB3aXRoICJzYW1lLW9yaWdpbiIgcmVm
ZXJyZXIgcG9saWN5LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1
ZTogb2JqZWN0ICJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiCi1GQUlMIFNhbWUtb3JpZ2luIGR5bmFt
aWMgaW1wb3J0IHdpdGggIm5vLXJlZmVycmVyIiByZWZlcnJlciBwb2xpY3kuIHByb21pc2VfdGVz
dDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogVHlw
ZSBlcnJvciIKLUZBSUwgU2FtZS1vcmlnaW4gZHluYW1pYyBpbXBvcnQgd2l0aCAib3JpZ2luIiBy
ZWZlcnJlciBwb2xpY3kuIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZh
bHVlOiBvYmplY3QgIlR5cGVFcnJvcjogVHlwZSBlcnJvciIKLUZBSUwgU2FtZS1vcmlnaW4gZHlu
YW1pYyBpbXBvcnQgd2l0aCAic2FtZS1vcmlnaW4iIHJlZmVycmVyIHBvbGljeS4gcHJvbWlzZV90
ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBU
eXBlIGVycm9yIgorUEFTUyBTYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydCB3aXRoICJuby1yZWZl
cnJlciIgcmVmZXJyZXIgcG9saWN5LgorUEFTUyBTYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydCB3
aXRoICJvcmlnaW4iIHJlZmVycmVyIHBvbGljeS4KK1BBU1MgU2FtZS1vcmlnaW4gZHluYW1pYyBp
bXBvcnQgd2l0aCAic2FtZS1vcmlnaW4iIHJlZmVycmVyIHBvbGljeS4KIEZBSUwgQ3Jvc3Mtb3Jp
Z2luIGR5bmFtaWMgaW1wb3J0IHdpdGggIm5vLXJlZmVycmVyIiByZWZlcnJlciBwb2xpY3kuIHBy
b21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVF
cnJvcjogVHlwZSBlcnJvciIKIEZBSUwgQ3Jvc3Mtb3JpZ2luIGR5bmFtaWMgaW1wb3J0IHdpdGgg
Im9yaWdpbiIgcmVmZXJyZXIgcG9saWN5LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rp
b24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiCiBGQUlMIENyb3Nz
LW9yaWdpbiBkeW5hbWljIGltcG9ydCB3aXRoICJzYW1lLW9yaWdpbiIgcmVmZXJyZXIgcG9saWN5
LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJU
eXBlRXJyb3I6IFR5cGUgZXJyb3IiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9y
dC53aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4
cGVjdGVkLnR4dAppbmRleCA1NzZlNmQyYjdlZDIuLjRhMjZiZTkyOWE4ZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVs
ZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFy
ZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxv
Y2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3MS5sb2NhbGhvc3Q6OTQ0My93
b3JrZXJzL21vZHVsZXMvcmVzb3VyY2VzL2V4cG9ydC1vbi1sb2FkLXNjcmlwdC5weQogCiBQQVNT
IFN0YXRpYyBpbXBvcnQuCiBGQUlMIFN0YXRpYyBpbXBvcnQgKGNyb3NzLW9yaWdpbikuIHByb21p
c2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiAiSW1wb3J0aW5nIGEgbW9k
dWxlIHNjcmlwdCBmYWlsZWQuIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25z
LWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1jcmVk
ZW50aWFscy1leHBlY3RlZC50eHQKaW5kZXggZTFiZWRmNTQzMGVmLi5hNzBmMDVhZjU0ZjQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1jcmVkZW50aWFscy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4
dApAQCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwOi8v
d3d3MS5sb2NhbGhvc3Q6ODgwMC93b3JrZXJzL21vZHVsZXMvcmVzb3VyY2VzL2V4cG9ydC1jcmVk
ZW50aWFscy5weQogCiBIYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL29wYXF1ZS1vcmlnaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL29wYXF1ZS1vcmlnaW4tZXhwZWN0ZWQudHh0
CmluZGV4IGY3ZDY3ZjE4ZDRhNS4uNjg1MDdjYTg2NWEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvb3BhcXVlLW9yaWdpbi1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL29wYXF1ZS1vcmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsOSBAQAog
CiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCitQQVNTIFdvcmtl
ciBoYXMgYW4gb3BhcXVlIG9yaWdpbi4KK0ZBSUwgV29ya2VyIGNhbiByZWFkIGl0cyBvd24gYmxv
YnMuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIChzdHJpbmcpICJmcm9tIHdvcmtlciIgYnV0IGdv
dCAob2JqZWN0KSBudWxsCitGQUlMIFdvcmtlciBjYW4gcmVhZCBpdHMgb3duZXJzIGJsb2JzLiBh
c3NlcnRfZXF1YWxzOiBleHBlY3RlZCAoc3RyaW5nKSAiZnJvbSBwYWdlIiBidXQgZ290IChvYmpl
Y3QpIG51bGwKK0ZBSUwgV29ya2VyIGNhbiBYSFIgZmV0Y2ggYSBibG9iLiBhc3NlcnRfZXF1YWxz
OiBleHBlY3RlZCAiZnJvbSBwYWdlIiBidXQgZ290ICIiCitGQUlMIFdvcmtlciBjYW4gZmV0Y2gg
YSBibG9iLiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2Jq
ZWN0ICJUeXBlRXJyb3I6IExvYWQgZmFpbGVkIgorUEFTUyBXb3JrZXIgY2FuIGFjY2VzcyBCcm9h
ZGNhc3RDaGFubmVsCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwNC1leHBlY3RlZC50eHQKaW5kZXgg
MDE4ZGI2MDQ1NjlkLi5jZmU0NjU1Njc1Y2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29y
a2Vycy8wMDQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhw
ZWN0ZWQudHh0CkBAIC0xLDUgKzEsMyBAQAogCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVz
c2FnZSA9IG51bGwKLQotTk9UUlVOIHNoYXJlZCB3b3JrZXIgd2l0aCBtdWx0aXBsZSBkb2N1bWVu
dHMKK1BBU1Mgc2hhcmVkIHdvcmtlciB3aXRoIG11bHRpcGxlIGRvY3VtZW50cwogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
c2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlw
bGUtd29ya2Vycy8wMDgtZXhwZWN0ZWQudHh0CmluZGV4IDk3YTRlN2E3M2E2My4uMDlmNjcyZDFj
NjIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA4LWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
c2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA4LWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDMg
QEAKIAotSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0KLVRJTUVPVVQg
bWVzc2FnZWNoYW5uZWwgaW4gc2hhcmVkIHdvcmtlciBUZXN0IHRpbWVkIG91dAorUEFTUyBtZXNz
YWdlY2hhbm5lbCBpbiBzaGFyZWQgd29ya2VyCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20t
YmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2lu
ZG93LWV4cGVjdGVkLnR4dAppbmRleCBhMDg5YzIyNDg5ZTIuLjE5ZTQ2YjA5YTU2YSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L3NoYXJlZC13b3JrZXItZnJvbS1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQt
d29ya2VyLWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDUgQEAK
IAotSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0KLUZBSUwgQ3JlYXRp
bmcgYSBzaGFyZWQgd29ya2VyIGZyb20gYSBibG9iIFVSTCB3b3Jrcy4gYXNzZXJ0X2VxdWFsczog
ZXhwZWN0ZWQgIndvcmtlcl9PS18yIiBidXQgZ290ICJ3b3JrZXJfT0tfMSIKK1BBU1MgQ3JlYXRp
bmcgYSBzaGFyZWQgd29ya2VyIGZyb20gYSBibG9iIFVSTCB3b3Jrcy4KIFBBU1MgQ3JlYXRpbmcg
YSBzaGFyZWQgd29ya2VyIGZyb20gYSBibG9iIFVSTCB3b3JrcyBpbW1lZGlhdGVseSBiZWZvcmUg
cmV2b2tpbmcuCi1USU1FT1VUIENvbm5lY3RpbmcgdG8gYSBzaGFyZWQgd29ya2VyIG9uIGEgcmV2
b2tlZCBibG9iIFVSTCB3b3Jrcy4gVGVzdCB0aW1lZCBvdXQKK1BBU1MgQ29ubmVjdGluZyB0byBh
IHNoYXJlZCB3b3JrZXIgb24gYSByZXZva2VkIGJsb2IgVVJMIHdvcmtzLgogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUt
dmlhLW9wdGlvbnMtZXhwZWN0ZWQudHh0CmluZGV4IDZmZmVlMjczOTBkOS4uYWU0NWI0ZDI3Mzk2
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25zLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25zLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAK
IAotRkFJTCBUZXN0IHRoZSBuYW1lIHByb3BlcnR5IG9mIHNoYXJlZCB3b3JrZXJzIG1peGluZyBj
b25zdHJ1Y3RvciBvcHRpb25zIGFuZCBjb25zdHJ1Y3RvciBzdHJpbmdzIEVycm9yOiBhc3NlcnRf
ZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3QgMQorUEFTUyBUZXN0IHRoZSBuYW1lIHByb3BlcnR5
IG9mIHNoYXJlZCB3b3JrZXJzIG1peGluZyBjb25zdHJ1Y3RvciBvcHRpb25zIGFuZCBjb25zdHJ1
Y3RvciBzdHJpbmdzCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtbWlzbWF0Y2gtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1taXNtYXRjaC1leHBlY3RlZC50eHQKaW5kZXgg
ZjY1Njk0NjE1MGRiLi40Zjk5YTEzNDA5ZTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW9wdGlvbnMt
bWlzbWF0Y2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtbWlzbWF0Y2gtZXhw
ZWN0ZWQudHh0CkBAIC0xLDI4ICsxLDI2IEBACiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBt
ZXNzYWdlID0gbnVsbAotCi1USU1FT1VUIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIG1vZHVsZSBU
ZXN0IHRpbWVkIG91dAotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRp
ZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBtb2R1bGUgdG8gZGVmYXVsdAotTk9U
UlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNo
b3VsZCBiZSBibG9ja2VkOiBjbGFzc2ljIHRvIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8g
c2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBt
b2R1bGUgdG8gY2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIG9taXQgaW4g
Y2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVu
dCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIGluY2x1ZGUgaW4gY2xhc3Np
YwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4gY2xhc3NpYwotTk9UUlVO
IENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3Vs
ZCBiZSBibG9ja2VkOiBvbWl0IHRvIHNhbWUtb3JpZ2luIGluIGNsYXNzaWMKLU5PVFJVTiBDb25u
ZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUg
YmxvY2tlZDogb21pdCB0byBpbmNsdWRlIGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRv
IHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDog
c2FtZS1vcmlnaW4gdG8gb21pdCBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUt
b3JpZ2luIHRvIGluY2x1ZGUgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVk
IHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRl
IHRvIGRlZmF1bHQgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9t
aXQgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRp
ZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIHNhbWUtb3JpZ2lu
IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZm
ZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBvbWl0IGluIG1vZHVs
ZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIGluY2x1ZGUgaW4gbW9kdWxlCi1OT1RS
VU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hv
dWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gZGVmYXVsdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0
aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxv
Y2tlZDogb21pdCB0byBzYW1lLW9yaWdpbiBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRv
IHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDog
b21pdCB0byBpbmNsdWRlIGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdp
biB0byBvbWl0IGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3
aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBp
bmNsdWRlIGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIGRlZmF1bHQg
aW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVy
ZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gb21pdCBpbiBtb2R1bGUK
LU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9u
cyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBzYW1lLW9yaWdpbiBpbiBtb2R1bGUKK1BB
U1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hv
dWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hh
cmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBtb2R1
bGUgdG8gZGVmYXVsdAorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZm
ZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogY2xhc3NpYyB0byBtb2R1bGUKK1BBU1Mg
Q29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxk
IGJlIGJsb2NrZWQ6IG1vZHVsZSB0byBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVk
IHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0
IHRvIG9taXQgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0
aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBpbmNsdWRl
IGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVy
ZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gZGVmYXVsdCBpbiBjbGFzc2lj
CitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25z
IHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIHNhbWUtb3JpZ2luIGluIGNsYXNzaWMKK1BBU1Mg
Q29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxk
IGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVkZSBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBzYW1lLW9yaWdpbiB0byBvbWl0IGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUt
b3JpZ2luIHRvIGluY2x1ZGUgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3
b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0
byBkZWZhdWx0IGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdp
dGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gb21pdCBp
biBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVu
dCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIHNhbWUtb3JpZ2luIGluIGNs
YXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9w
dGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gb21pdCBpbiBtb2R1bGUKK1BBU1Mg
Q29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxk
IGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gaW5jbHVkZSBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGlu
ZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2Nr
ZWQ6IG9taXQgdG8gZGVmYXVsdCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQg
d29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8g
c2FtZS1vcmlnaW4gaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3
aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGluY2x1ZGUg
aW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVu
dCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBvbWl0IGluIG1vZHVs
ZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9u
cyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gaW5jbHVkZSBpbiBtb2R1bGUKK1BB
U1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hv
dWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gZGVmYXVsdCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IGluY2x1ZGUgdG8gb21pdCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1
ZGUgdG8gc2FtZS1vcmlnaW4gaW4gbW9kdWxlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL29wZW4tdXJsLXJlZGlyZWN0ZWQtc2hh
cmVkd29ya2VyLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1v
cmlnaW4tZXhwZWN0ZWQudHh0CmluZGV4IDFlMmQzOTkyZjZkNS4uNTljYWNhNDg2ZjhkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9v
cGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL29wZW4tdXJs
LXJlZGlyZWN0ZWQtc2hhcmVkd29ya2VyLW9yaWdpbi1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwz
IEBACi1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cDovL3d3dzIubG9jYWxob3N0
Ojg4MDAveGhyL3Jlc291cmNlcy9pbnNwZWN0LWhlYWRlcnMucHk/ZmlsdGVyX25hbWU9b3JpZ2lu
JmNvcnMKIAogRkFJTCBSZWZlcmVyIGhlYWRlciBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiUmVm
ZXJlcjogaHR0cDovL2xvY2FsaG9zdDo4ODAwL3hoci9yZXNvdXJjZXMvd29ya2VyeGhyLW9yaWdp
bi1yZWZlcnJlci5qc1xuIiBidXQgZ290ICJSZWZlcmVyOiBodHRwOi8vbG9jYWxob3N0Ojg4MDAv
eGhyL3Jlc291cmNlcy9yZWRpcmVjdC5weT9sb2NhdGlvbj13b3JrZXJ4aHItb3JpZ2luLXJlZmVy
cmVyLmpzXG4iCiBGQUlMIE9yaWdpbiBoZWFkZXIgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIk9y
aWdpbjogaHR0cDovL2xvY2FsaG9zdDo4ODAwXG4iIGJ1dCBnb3QgIiIKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1jb25u
ZWN0LXNyYy5zdWItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2lu
c2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLWNvbm5lY3Qtc3JjLnN1Yi1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mMzc3OGJiYTQ2OWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9z
aGFyZWR3b3JrZXItY29ubmVjdC1zcmMuc3ViLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBA
CisKK0hhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAorCitUSU1FT1VUIHNo
YXJlZHdvcmtlci1jb25uZWN0LXNyYyBUZXN0IHRpbWVkIG91dAorUEFTUyBTYW1lLW9yaWdpbiAn
ZmV0Y2goKScgaW4gaHR0cDogd2l0aG91dCBDU1AKK1BBU1MgU2FtZS1vcmlnaW4gWEhSIGluIGh0
dHA6IHdpdGhvdXQgQ1NQCitQQVNTIENyb3NzLW9yaWdpbiAnZmV0Y2goKScgaW4gaHR0cDogd2l0
aG91dCBDU1AKK1BBU1MgQ3Jvc3Mtb3JpZ2luIFhIUiBpbiBodHRwOiB3aXRob3V0IENTUAorUEFT
UyBTYW1lLW9yaWdpbiA9PiBjcm9zcy1vcmlnaW4gJ2ZldGNoKCknIGluIGh0dHA6IHdpdGhvdXQg
Q1NQCitQQVNTIFNhbWUtb3JpZ2luICdmZXRjaCgpJyBpbiBodHRwOiB3aXRoIGNvbm5lY3Qtc3Jj
ICdzZWxmJworUEFTUyBTYW1lLW9yaWdpbiBYSFIgaW4gaHR0cDogd2l0aCBjb25uZWN0LXNyYyAn
c2VsZicKK1RJTUVPVVQgQ3Jvc3Mtb3JpZ2luICdmZXRjaCgpJyBpbiBodHRwOiB3aXRoIGNvbm5l
Y3Qtc3JjICdzZWxmJyBUZXN0IHRpbWVkIG91dAorTk9UUlVOIENyb3NzLW9yaWdpbiBYSFIgaW4g
aHR0cDogd2l0aCBjb25uZWN0LXNyYyAnc2VsZicKK05PVFJVTiBTYW1lLW9yaWdpbiA9PiBjcm9z
cy1vcmlnaW4gJ2ZldGNoKCknIGluIGh0dHA6IHdpdGggY29ubmVjdC1zcmMgJ3NlbGYnCitOT1RS
VU4gUmVwb3J0cyBtYXRjaCBpbiBodHRwOiB3aXRoIGNvbm5lY3Qtc3JjICdzZWxmJworCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3
b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5
LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzc3Y2VkNDUx
ZTJjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lk
ZS13b3JrZXIvc2hhcmVkd29ya2VyLXJlcG9ydC1vbmx5LnN1Yi1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMCBAQAorCitIYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKKwor
UEFTUyBTYW1lLW9yaWdpbiAnZmV0Y2goKScuCitQQVNTIFNhbWUtb3JpZ2luIFhIUi4KK1RJTUVP
VVQgQ3Jvc3Mtb3JpZ2luICdmZXRjaCgpJy4gVGVzdCB0aW1lZCBvdXQKK05PVFJVTiBDcm9zcy1v
cmlnaW4gWEhSLgorTk9UUlVOIFNhbWUtb3JpZ2luID0+IGNyb3NzLW9yaWdpbiAnZmV0Y2goKScu
CitOT1RSVU4gY29ubmVjdC1zcmMtc2VsZi1yZXBvcnQtb25seQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0
LXNyYy5zdWItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lk
ZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjc3ZGNlNTUwMGE3YgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJl
ZHdvcmtlci1zY3JpcHQtc3JjLnN1Yi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorCitI
YXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKKworVElNRU9VVCBzaGFyZWR3
b3JrZXItc2NyaXB0LXNyYyBUZXN0IHRpbWVkIG91dAorUEFTUyBDcm9zcy1vcmlnaW4gYGltcG9y
dFNjcmlwdHMoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91ciBDU1AKK1BBU1MgYGV2YWwo
KWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AKK1BBU1MgYHNldFRpbWVvdXQoW3N0
cmluZ10pYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3V0IENTUAorVElNRU9VVCBDcm9zcy1v
cmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgYmxvY2tlZCBpbiBodHRwOiB3aXRoIHNjcmlwdC1zcmMg
J3NlbGYnIFRlc3QgdGltZWQgb3V0CitOT1RSVU4gYGV2YWwoKWAgYmxvY2tlZCBpbiBodHRwOiB3
aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCitOT1RSVU4gYHNldFRpbWVvdXQoW3N0cmluZ10pYCBibG9j
a2VkIGluIGh0dHA6IHdpdGggc2NyaXB0LXNyYyAnc2VsZicKK05PVFJVTiBSZXBvcnRzIGFyZSBz
ZW50IGZvciBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11
cmwud2luZG93LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjY1MTljZDFmNjk0NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVs
ZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDExIEBACisKK1BBU1MgU3RhdGljIGltcG9ydC4KK1BBU1MgU3RhdGljIGltcG9ydCAo
Y3Jvc3Mtb3JpZ2luKS4KK1BBU1MgU3RhdGljIGltcG9ydCAocmVkaXJlY3QpLgorUEFTUyBOZXN0
ZWQgc3RhdGljIGltcG9ydC4KK1BBU1MgU3RhdGljIGltcG9ydCBhbmQgdGhlbiBkeW5hbWljIGlt
cG9ydC4KK1BBU1MgRHluYW1pYyBpbXBvcnQuCitQQVNTIE5lc3RlZCBkeW5hbWljIGltcG9ydC4K
K1BBU1MgRHluYW1pYyBpbXBvcnQgYW5kIHRoZW4gc3RhdGljIGltcG9ydC4KK1BBU1MgZXZhbChp
bXBvcnQoKSkuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtl
ci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVs
ZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmUzNmMwNDlmODI1NgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0
YS11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACisKK0hhcm5lc3MgRXJy
b3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAorCitQQVNTIFN0YXRpYyBpbXBvcnQuCitQQVNT
IFN0YXRpYyBpbXBvcnQgKGNyb3NzLW9yaWdpbikuCitUSU1FT1VUIFN0YXRpYyBpbXBvcnQgKHJl
ZGlyZWN0KS4gVGVzdCB0aW1lZCBvdXQKK05PVFJVTiBOZXN0ZWQgc3RhdGljIGltcG9ydC4KK05P
VFJVTiBTdGF0aWMgaW1wb3J0IGFuZCB0aGVuIGR5bmFtaWMgaW1wb3J0LgorTk9UUlVOIER5bmFt
aWMgaW1wb3J0LgorTk9UUlVOIE5lc3RlZCBkeW5hbWljIGltcG9ydC4KK05PVFJVTiBEeW5hbWlj
IGltcG9ydCBhbmQgdGhlbiBzdGF0aWMgaW1wb3J0LgorTk9UUlVOIGV2YWwoaW1wb3J0KCkpLgor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0Lndp
bmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LndpbmRvdy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi42NTE5Y2QxZjY5NDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1
bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
MSBAQAorCitQQVNTIFN0YXRpYyBpbXBvcnQuCitQQVNTIFN0YXRpYyBpbXBvcnQgKGNyb3NzLW9y
aWdpbikuCitQQVNTIFN0YXRpYyBpbXBvcnQgKHJlZGlyZWN0KS4KK1BBU1MgTmVzdGVkIHN0YXRp
YyBpbXBvcnQuCitQQVNTIFN0YXRpYyBpbXBvcnQgYW5kIHRoZW4gZHluYW1pYyBpbXBvcnQuCitQ
QVNTIER5bmFtaWMgaW1wb3J0LgorUEFTUyBOZXN0ZWQgZHluYW1pYyBpbXBvcnQuCitQQVNTIER5
bmFtaWMgaW1wb3J0IGFuZCB0aGVuIHN0YXRpYyBpbXBvcnQuCitQQVNTIGV2YWwoaW1wb3J0KCkp
LgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9u
cy1jcmVkZW50aWFscy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2sy
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13
b3JrZXItb3B0aW9ucy1jcmVkZW50aWFscy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hMmIxOGI1MjQ5MjgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1jcmVkZW50aWFscy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwzNSBAQAorCitQQVNTIFRlc3QgaW5pdGlhbGl6YXRpb246IHNl
dHRpbmcgdXAgY3Jvc3Mtb3JpZ2luIGNvb2tpZQorUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0
aCB0eXBlPW1vZHVsZSBhbmQgZGVmYXVsdCBjcmVkZW50aWFscyBvcHRpb24gc2hvdWxkIGJlaGF2
ZSBhcyBjcmVkZW50aWFscz1zYW1lLW9yaWdpbiBhbmQgc2VuZCB0aGUgY3JlZGVudGlhbHMKK1BB
U1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPW9t
aXQgc2hvdWxkIG5vdCBzZW5kIHRoZSBjcmVkZW50aWFscworUEFTUyBuZXcgU2hhcmVkV29ya2Vy
KCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQgY3JlZGVudGlhbHM9c2FtZS1vcmlnaW4gc2hvdWxkIHNl
bmQgdGhlIGNyZWRlbnRpYWxzCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9k
dWxlIGFuZCBjcmVkZW50aWFscz1pbmNsdWRlIHNob3VsZCBzZW5kIHRoZSBjcmVkZW50aWFscwor
UEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQgZGVmYXVsdCBjcmVk
ZW50aWFscyBvcHRpb24gc2hvdWxkIGJlaGF2ZSBhcyBjcmVkZW50aWFscz1zYW1lLW9yaWdpbiBh
bmQgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2luIHN0YXRpYyBpbXBvcnRzCitQ
QVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBjcmVkZW50aWFscz1v
bWl0IHNob3VsZCBub3Qgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2luIHN0YXRp
YyBpbXBvcnRzCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBj
cmVkZW50aWFscz1zYW1lLW9yaWdpbiBzaG91bGQgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNh
bWUtb3JpZ2luIHN0YXRpYyBpbXBvcnRzCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5
cGU9bW9kdWxlIGFuZCBjcmVkZW50aWFscz1pbmNsdWRlIHNob3VsZCBzZW5kIHRoZSBjcmVkZW50
aWFscyBmb3Igc2FtZS1vcmlnaW4gc3RhdGljIGltcG9ydHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtl
cigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGRlZmF1bHQgY3JlZGVudGlhbHMgb3B0aW9uIHNob3Vs
ZCBiZWhhdmUgYXMgY3JlZGVudGlhbHM9c2FtZS1vcmlnaW4gYW5kIG5vdCBzZW5kIHRoZSBjcmVk
ZW50aWFscyBmb3IgY3Jvc3Mtb3JpZ2luIHN0YXRpYyBpbXBvcnRzCitQQVNTIG5ldyBTaGFyZWRX
b3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBjcmVkZW50aWFscz1vbWl0IHNob3VsZCBub3Qg
c2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIGNyb3NzLW9yaWdpbiBzdGF0aWMgaW1wb3J0cworUEFT
UyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQgY3JlZGVudGlhbHM9c2Ft
ZS1vcmlnaW4gc2hvdWxkIG5vdCBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3IgY3Jvc3Mtb3JpZ2lu
IHN0YXRpYyBpbXBvcnRzCitGQUlMIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxl
IGFuZCBjcmVkZW50aWFscz1pbmNsdWRlIHNob3VsZCBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3Ig
Y3Jvc3Mtb3JpZ2luIHN0YXRpYyBpbXBvcnRzIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIxIiBi
dXQgZ290ICIiCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBk
ZWZhdWx0IGNyZWRlbnRpYWxzIG9wdGlvbiBzaG91bGQgYmVoYXZlIGFzIGNyZWRlbnRpYWxzPXNh
bWUtb3JpZ2luIGFuZCBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3Igc2FtZS1vcmlnaW4gZHluYW1p
YyBpbXBvcnRzCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBj
cmVkZW50aWFscz1vbWl0IHNob3VsZCBub3Qgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUt
b3JpZ2luIGR5bmFtaWMgaW1wb3J0cworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBl
PW1vZHVsZSBhbmQgY3JlZGVudGlhbHM9c2FtZS1vcmlnaW4gc2hvdWxkIHNlbmQgdGhlIGNyZWRl
bnRpYWxzIGZvciBzYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydHMKK1BBU1MgbmV3IFNoYXJlZFdv
cmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPWluY2x1ZGUgc2hvdWxkIHNl
bmQgdGhlIGNyZWRlbnRpYWxzIGZvciBzYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydHMKK1BBU1Mg
bmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGRlZmF1bHQgY3JlZGVudGlh
bHMgb3B0aW9uIHNob3VsZCBiZWhhdmUgYXMgY3JlZGVudGlhbHM9c2FtZS1vcmlnaW4gYW5kIG5v
dCBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3IgY3Jvc3Mtb3JpZ2luIGR5bmFtaWMgaW1wb3J0cwor
UEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQgY3JlZGVudGlhbHM9
b21pdCBzaG91bGQgbm90IHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gZHlu
YW1pYyBpbXBvcnRzCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFu
ZCBjcmVkZW50aWFscz1zYW1lLW9yaWdpbiBzaG91bGQgbm90IHNlbmQgdGhlIGNyZWRlbnRpYWxz
IGZvciBjcm9zcy1vcmlnaW4gZHluYW1pYyBpbXBvcnRzCitGQUlMIG5ldyBTaGFyZWRXb3JrZXIo
KSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBjcmVkZW50aWFscz1pbmNsdWRlIHNob3VsZCBzZW5kIHRo
ZSBjcmVkZW50aWFscyBmb3IgY3Jvc3Mtb3JpZ2luIGR5bmFtaWMgaW1wb3J0cyBhc3NlcnRfZXF1
YWxzOiBleHBlY3RlZCAiMSIgYnV0IGdvdCAiIgorUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0
aCB0eXBlPWNsYXNzaWMgc2hvdWxkIGFsd2F5cyBzZW5kIHRoZSBjcmVkZW50aWFscyByZWdhcmRs
ZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKGRlZmF1bHQpLgorUEFTUyBuZXcgU2hhcmVk
V29ya2VyKCkgd2l0aCB0eXBlPWNsYXNzaWMgc2hvdWxkIGFsd2F5cyBzZW5kIHRoZSBjcmVkZW50
aWFscyByZWdhcmRsZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKG9taXQpLgorUEFTUyBu
ZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPWNsYXNzaWMgc2hvdWxkIGFsd2F5cyBzZW5kIHRo
ZSBjcmVkZW50aWFscyByZWdhcmRsZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKHNhbWUt
b3JpZ2luKS4KK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1jbGFzc2ljIHNob3Vs
ZCBhbHdheXMgc2VuZCB0aGUgY3JlZGVudGlhbHMgcmVnYXJkbGVzcyBvZiB0aGUgY3JlZGVudGlh
bHMgb3B0aW9uIChpbmNsdWRlKS4KK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1j
bGFzc2ljIHNob3VsZCBhbHdheXMgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2lu
IGR5bmFtaWMgaW1wb3J0cyByZWdhcmRsZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKGRl
ZmF1bHQpLgorUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPWNsYXNzaWMgc2hvdWxk
IGFsd2F5cyBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3Igc2FtZS1vcmlnaW4gZHluYW1pYyBpbXBv
cnRzIHJlZ2FyZGxlc3Mgb2YgdGhlIGNyZWRlbnRpYWxzIG9wdGlvbiAob21pdCkuCitQQVNTIG5l
dyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9Y2xhc3NpYyBzaG91bGQgYWx3YXlzIHNlbmQgdGhl
IGNyZWRlbnRpYWxzIGZvciBzYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydHMgcmVnYXJkbGVzcyBv
ZiB0aGUgY3JlZGVudGlhbHMgb3B0aW9uIChzYW1lLW9yaWdpbikuCitQQVNTIG5ldyBTaGFyZWRX
b3JrZXIoKSB3aXRoIHR5cGU9Y2xhc3NpYyBzaG91bGQgYWx3YXlzIHNlbmQgdGhlIGNyZWRlbnRp
YWxzIGZvciBzYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydHMgcmVnYXJkbGVzcyBvZiB0aGUgY3Jl
ZGVudGlhbHMgb3B0aW9uIChpbmNsdWRlKS4KK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGgg
dHlwZT1jbGFzc2ljIHNob3VsZCBuZXZlciBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3IgY3Jvc3Mt
b3JpZ2luIGR5bmFtaWMgaW1wb3J0cyByZWdhcmRsZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRp
b24gKGRlZmF1bHQpLgorUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPWNsYXNzaWMg
c2hvdWxkIG5ldmVyIHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gZHluYW1p
YyBpbXBvcnRzIHJlZ2FyZGxlc3Mgb2YgdGhlIGNyZWRlbnRpYWxzIG9wdGlvbiAob21pdCkuCitQ
QVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9Y2xhc3NpYyBzaG91bGQgbmV2ZXIgc2Vu
ZCB0aGUgY3JlZGVudGlhbHMgZm9yIGNyb3NzLW9yaWdpbiBkeW5hbWljIGltcG9ydHMgcmVnYXJk
bGVzcyBvZiB0aGUgY3JlZGVudGlhbHMgb3B0aW9uIChzYW1lLW9yaWdpbikuCitQQVNTIG5ldyBT
aGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9Y2xhc3NpYyBzaG91bGQgbmV2ZXIgc2VuZCB0aGUgY3Jl
ZGVudGlhbHMgZm9yIGNyb3NzLW9yaWdpbiBkeW5hbWljIGltcG9ydHMgcmVnYXJkbGVzcyBvZiB0
aGUgY3JlZGVudGlhbHMgb3B0aW9uIChpbmNsdWRlKS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9v
cGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZWU1M2YyZmYyZDVlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtl
ci1vcmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorCitGQUlMIFJlZmVyZXIgaGVh
ZGVyIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJSZWZlcmVyOiBodHRwOi8vbG9jYWxob3N0Ojg4
MDAveGhyL3Jlc291cmNlcy93b3JrZXJ4aHItb3JpZ2luLXJlZmVycmVyLmpzXG4iIGJ1dCBnb3Qg
IlJlZmVyZXI6IGh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC94aHIvcmVzb3VyY2VzL3JlZGlyZWN0LnB5
P2xvY2F0aW9uPXdvcmtlcnhoci1vcmlnaW4tcmVmZXJyZXIuanNcbiIKK1BBU1MgT3JpZ2luIGhl
YWRlcgorUEFTUyBSZXF1ZXN0IFVSTCB0ZXN0CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAwZjY2MTdmZDFhMTEuLjE3MjUwNjVjMjhkNyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25z
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAt
NjcsNiArNjcsOCBAQCBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS1tZWRpYXN0cmVh
bS5odG1sIFsgU2tpcCBdCiBtZWRpYS9hdWRpby1zZXNzaW9uLWNhdGVnb3J5Lmh0bWwgWyBTa2lw
IF0KIAogIyBTaGFyZWQgd29ya2VycyBhcmUgb25seSBpbXBsZW1lbnRlZCBmb3IgV2ViS2l0Mi4K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
Y29ubmVjdC1zcmMvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1hbGxvd2VkLnN1Yi5odG1sIFsg
U2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHkt
cG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3JrZXItY29ubmVjdC1zcmMtYmxvY2tlZC5zdWIu
aHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy1zZWxmL3NoYXJlZHdvcmtl
ci1jbGFzc2ljLmh0dHAuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy1z
ZWxmL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHBzLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRw
LXJwL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAg
XQpAQCAtMTQyLDYgKzE0NCw3IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvd29ya2VyLXNyYy9zaGFyZWQtd29ya2VyCiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMv
c2hhcmVkLXdvcmtlci1zcmMtZGVmYXVsdC1mYWxsYmFjay5zdWIuaHRtbCBbIFNraXAgXQogaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS93b3Jr
ZXItc3JjL3NoYXJlZC13b3JrZXItc3JjLXNjcmlwdC1mYWxsYmFjay5zdWIuaHRtbCBbIFNraXAg
XQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS93b3JrZXItc3JjL3NoYXJlZC13b3JrZXItc3JjLXNlbGYtZmFsbGJhY2suc3ViLmh0bWwgWyBT
a2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZXZlbnRzb3VyY2Uvc2hhcmVk
LXdvcmtlciBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9h
cGkvY29ycy9kYXRhLXVybC1zaGFyZWQtd29ya2VyLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZsaW5lL25vLWFwcGNhY2hlLWlu
LXNoYXJlZC13b3JrZXJzLWhpc3RvcmljYWwuaHR0cHMuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUtc2Ny
aXB0LWVsZW1lbnQvbW9kdWxlL2V2YWx1YXRpb24tb3JkZXItMS1ub3Rocm93LXNoYXJlZHdvcmtl
ci5odG1sIFsgU2tpcCBdCkBAIC0xNTEsMTAgKzE1NCwxNCBAQCBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVu
dC9tbwogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9zY3Jp
cHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvZXZhbHVhdGlvbi1vcmRlci0xLW5vdGhyb3ctc2hh
cmVkd29ya2VyLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3Mvc2NyaXB0aW5nLTEvdGhlLXNjcmlwdC1lbGVtZW50L2V2YWx1YXRpb24t
b3JkZXItMS1zaGFyZWR3b3JrZXIuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi91
bmhhbmRsZWQtcHJvbWlzZS1yZWplY3Rpb25zL3Byb21pc2UtcmVqZWN0aW9uLWV2ZW50cy5zaGFy
ZWR3b3JrZXIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
ZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvY2xhaW0tc2hhcmVkLXdvcmtlci1mZXRjaC5o
dHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20v
c2VyaWFsaXphdGlvbi9tb2R1bGUvYnJvYWRjYXN0Y2hhbm5lbC1zdWNjZXNzLWFuZC1mYWlsdXJl
Lmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9T
aGFyZWRXb3JrZXJQZXJmb3JtYW5jZU5vdy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvZGF0YS11cmwtc2hhcmVkLmh0bWwgWyBTa2lwIF0KK2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9vcGFxdWUtb3JpZ2luLmh0bWwg
WyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9iYXNldXJs
L2FscGhhL2ltcG9ydFNjcmlwdHMtaW4tc2hhcmVkd29ya2VyLmh0bWwgWyBTa2lwIF0KIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9iYXNldXJsL2FscGhhL3hoci1pbi1z
aGFyZWR3b3JrZXIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrZXJzL2NvbnN0cnVjdG9ycy9TaGFyZWRXb3JrZXIgWyBTa2lwIF0KIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9pbnRlcmZhY2VzL1NoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
aW50ZXJmYWNlcy9Xb3JrZXJHbG9iYWxTY29wZS9sb2NhdGlvbi9yZWRpcmVjdC1zaGFyZWR3b3Jr
ZXIuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93Lmh0bWwgWyBTa2lw
IF0KQEAgLTE2NSw3ICsxNzIsMTUgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtbWV0YS5odG1sIFsKIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LndpbmRvdy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMuaHRtbCBb
IFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMv
c2hhcmVkLXdvcmtlci1vcHRpb25zLXR5cGUuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9ibG9iVXJsLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXIt
Y29uc3RydWN0b3IuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXItZGV0YWNoLWZyYW1lLWlu
LWVycm9yLWV2ZW50Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9TaGFyZWRXb3JrZXItZXhjZXB0aW9uLXByb3BhZ2F0aW9uLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXIt
ZXhjZXB0aW9uLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9TaGFyZWRXb3JrZXItc2NyaXB0LWVycm9yLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXItc2ltcGxlLmh0bWwg
WyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVz
L3NoYXJlZC13b3JrZXItaW1wb3J0LXJlZmVycmVyLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItcGFyc2Ut
ZXJyb3ItZmFpbHVyZS5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvc2VtYW50aWNzL2VuY29kaW5ncy8wMDIuaHRtbCBbIFNraXAgXQogaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9lbmNvZGluZ3MvMDA0
Lmh0bWwgWyBTa2lwIF0KQEAgLTEzNjQsOSArMTM3OSw2IEBAIHdlYmtpdC5vcmcvYi82ODI3OCBo
dHRwL3Rlc3RzL2hpc3RvcnkvYmFjay13aXRoLWZyYWdtZW50LWNoYW5nZS5weSBbIEZhaWx1cmUg
XQogWyBhcm02NCBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMv
ZWxlbWVudC9wYXRoLW9iamVjdHMvMmQucGF0aC5hcmMuc2VsZmludGVyc2VjdC4xLmh0bWwgWyBG
YWlsdXJlIF0KIFsgYXJtNjQgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
Y2FudmFzL2VsZW1lbnQvcGF0aC1vYmplY3RzLzJkLnBhdGguYXJjLnNoYXBlLjMuaHRtbCBbIEZh
aWx1cmUgXQogCi0jIHJkYXI6Ly82Njg0NTQ2NSBSRUdSRVNTSU9OIChyMjY0MTgzKTogaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1p
bXBvcnQtcmVmZXJyZXIuaHRtbCBpcyBhIGZsYWt5IGZhaWx1cmUKLVsgYXJtNjQgXSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWlt
cG9ydC1yZWZlcnJlci5odG1sIFsgRmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8yMTU1OTMgd2Vi
YXVkaW8vb3NjaWxsYXRvci1zcXVhcmUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5v
cmcvYi8yMTU2NTggc3ZnL2N1c3RvbS9vYmplY3Qtc2l6aW5nLW5vLXdpZHRoLWhlaWdodC54aHRt
bCBbIFBhc3MgRmFpbHVyZSBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDk1ZTVjNmZiYzhiZi4uYzBiMzliNDQ4ZWIwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTY1LDYgKzE2NSw4IEBAIGh0dHAvdGVzdHMv
cmVmZXJyZXItcG9saWN5LWltZy91bnNhZmUtdXJsL2Nyb3NzLW9yaWdpbi1odHRwLWh0dHAuaHRt
bCBbIFNraXAgXQogaHR0cC90ZXN0cy9yZWZlcnJlci1wb2xpY3ktaW1nL3Vuc2FmZS11cmwvY3Jv
c3Mtb3JpZ2luLWh0dHAuaHR0cHMuaHRtbCBbIFNraXAgXQogCiAjIFNoYXJlZCB3b3JrZXJzIGFy
ZSBvbmx5IGltcGxlbWVudGVkIGZvciBXZWJLaXQyLgoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9zaGFyZWQtd29ya2Vy
LWNvbm5lY3Qtc3JjLWFsbG93ZWQuc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvY29ubmVjdC1zcmMvc2hhcmVk
LXdvcmtlci1jb25uZWN0LXNyYy1ibG9ja2VkLnN1Yi5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0
cC1ycC9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cC5odG1sIFsgU2tp
cCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2dlbi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLWNsYXNzaWMu
aHR0cHMuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy1zZWxmL3NoYXJl
ZHdvcmtlci1tb2R1bGUuaHR0cC5odG1sIFsgU2tpcCBdCkBAIC0yNDAsNiArMjQyLDcgQEAgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS93b3Jr
ZXItc3JjL3NoYXJlZC13b3JrZXIKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvd29ya2VyLXNyYy9zaGFyZWQtd29ya2VyLXNyYy1kZWZhdWx0
LWZhbGxiYWNrLnN1Yi5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXdvcmtlci1zcmMt
c2NyaXB0LWZhbGxiYWNrLnN1Yi5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLXdvcmtl
ci1zcmMtc2VsZi1mYWxsYmFjay5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9ldmVudHNvdXJjZS9zaGFyZWQtd29ya2VyIFsgU2tpcCBdCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9jb3JzL2RhdGEtdXJsLXNoYXJlZC13
b3JrZXIuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2Jyb3dzZXJzL29mZmxpbmUvbm8tYXBwY2FjaGUtaW4tc2hhcmVkLXdvcmtlcnMtaGlzdG9yaWNh
bC5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudC9tb2R1bGUvZXZhbHVh
dGlvbi1vcmRlci0xLW5vdGhyb3ctc2hhcmVkd29ya2VyLmh0bWwgWyBTa2lwIF0KQEAgLTI0OSwx
MCArMjUyLDE0IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3Mvc2NyaXB0aW5nLTEvdGhlLXNjcmlwdC1lbGVtZW50L21vCiBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVu
dC9ldmFsdWF0aW9uLW9yZGVyLTEtbm90aHJvdy1zaGFyZWR3b3JrZXIuaHRtbCBbIFNraXAgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9zY3JpcHRpbmct
MS90aGUtc2NyaXB0LWVsZW1lbnQvZXZhbHVhdGlvbi1vcmRlci0xLXNoYXJlZHdvcmtlci5odG1s
IFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBp
cy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL3VuaGFuZGxlZC1wcm9taXNlLXJlamVjdGlv
bnMvcHJvbWlzZS1yZWplY3Rpb24tZXZlbnRzLnNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCitp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci9jbGFpbS1zaGFyZWQtd29ya2VyLWZldGNoLmh0dHBzLmh0bWwgWyBTa2lwIF0KIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9zZXJpYWxpemF0aW9uL21vZHVsZS9icm9h
ZGNhc3RjaGFubmVsLXN1Y2Nlc3MtYW5kLWZhaWx1cmUuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlclBlcmZvcm1hbmNlTm93
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9k
YXRhLXVybC1zaGFyZWQuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL29wYXF1ZS1vcmlnaW4uaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL2Jhc2V1cmwvYWxwaGEvaW1wb3J0U2NyaXB0cy1pbi1z
aGFyZWR3b3JrZXIuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrZXJzL2Jhc2V1cmwvYWxwaGEveGhyLWluLXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvY29uc3RydWN0b3JzL1No
YXJlZFdvcmtlciBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL2ludGVyZmFjZXMvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUgWyBTa2lwIF0KIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9pbnRlcmZhY2VzL1dvcmtlckdsb2JhbFNj
b3BlL2xvY2F0aW9uL3JlZGlyZWN0LXNoYXJlZHdvcmtlci5odG1sIFsgU2tpcCBdCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWlt
cG9ydC1ibG9iLXVybC53aW5kb3cuaHRtbCBbIFNraXAgXQpAQCAtMjYzLDcgKzI3MCwxNSBAQCBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29y
a2VyLWltcG9ydC1tZXRhLmh0bWwgWwogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQud2luZG93Lmh0bWwgWyBTa2lwIF0K
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13
b3JrZXItb3B0aW9ucy1jcmVkZW50aWFscy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtdHlw
ZS5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
U2hhcmVkV29ya2VyX2Jsb2JVcmwuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlci1jb25zdHJ1Y3Rvci5odG1sIFsgU2tpcCBd
CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyX2Rh
dGFVcmwuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL1NoYXJlZFdvcmtlci1kZXRhY2gtZnJhbWUtaW4tZXJyb3ItZXZlbnQuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlci1l
eGNlcHRpb24tcHJvcGFnYXRpb24uaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlci1leGNlcHRpb24uaHRtbCBbIFNraXAgXQor
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlci1zY3Jp
cHQtZXJyb3IuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL1NoYXJlZFdvcmtlci1zaW1wbGUuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtcmVm
ZXJyZXIuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1wYXJzZS1lcnJvci1mYWlsdXJlLmh0bWwgWyBTa2lw
IF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvZW5j
b2RpbmdzLzAwMi5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2VtYW50aWNzL2VuY29kaW5ncy8wMDQuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKaW5kZXggNjUzOTM3YWNlNjVjLi5kMzNmYzRhYTRkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQpAQCAtMTk1Nyw5ICsxOTU3LDEyIEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hF
QURFUlMKICAgICB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCiAgICAgd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5oCiAgICAgd29ya2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5oCisgICAg
d29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oCisgICAgd29ya2Vycy9Xb3JrZXJPcHRpb25zLmgK
ICAgICB3b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKICAgICB3b3JrZXJzL1dv
cmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaAogICAgIHdvcmtlcnMvV29ya2VyT3JXb3Jr
bGV0VGhyZWFkLmgKKyAgICB3b3JrZXJzL1dvcmtlclJlcG9ydGluZ1Byb3h5LmgKICAgICB3b3Jr
ZXJzL1dvcmtlclJ1bkxvb3AuaAogICAgIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKICAg
ICB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlckNsaWVudC5oCkBAIC0yMDAzLDkgKzIwMDYsMTIg
QEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHdvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAogCiAgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VySWRlbnRpZmllci5oCi0gICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdl
ci5oCisgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyS2V5LmgKICAgICB3b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKKyAgICB3b3JrZXJzL3NoYXJlZC9T
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgKICAgICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXJQcm92aWRlci5oCisKKyAgICB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyLmgKICAgICB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtl
clRocmVhZC5oCiAgICAgd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eS5oCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggYjNmNWUwYjc4NDE3Li41ZWU1MDBjYjZkMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CkBAIC0yNzg1LDEwICsyNzg1LDEwIEBAIHdvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlcldvcmtlci5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAKIHdv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAotd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VyTWFuYWdlci5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24uY3BwCiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5jcHAK
IHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAKK3dvcmtlcnMvc2hh
cmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwCiB3b3JrZXJzL3NoYXJl
ZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZC5jcHAKIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQv
U2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3BwCiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBjNWY0NGVmMDRhNzAuLjU2YTcxNTlkYmFlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTAzLDcgKzkw
Myw3IEBACiAJCTJFNDM0NjRCMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZVBy
b3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQz
NDYzOTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oICovOyB9Owog
CQkyRTQzNDY0RDBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyTG9jYXRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjNCMEY1NDZBODIwMEIw
RjFCQSAvKiBXb3JrZXJMb2NhdGlvbi5oICovOyB9OwogCQkyRTQzNDY1MDBGNTQ2QTgyMDBCMEYx
QkEgLyogV29ya2VyTWVzc2FnaW5nUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjNFMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJNZXNz
YWdpbmdQcm94eS5oICovOyB9OwotCQkyRTQzNDY1MTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
T2JqZWN0UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJFNDM0NjNGMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94eS5oICovOyB9
OworCQkyRTQzNDY1MTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyT2JqZWN0UHJveHkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjNGMEY1NDZB
ODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFNDM0NjUzMEY1NDZBODIwMEIwRjFCQSAvKiBX
b3JrZXJSdW5Mb29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRTQzNDY0MTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyUnVuTG9vcC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFNDM0NjU1MEY1NDZB
ODIwMEIwRjFCQSAvKiBXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjQzMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJUaHJl
YWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQky
RTc1ODQxRTEyNzc5QURBMDA2MjYyOEIgLyogRmlsZVJlYWRlckxvYWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU3NTg0MUIxMjc3OUFEQTAwNjI2
MjhCIC8qIEZpbGVSZWFkZXJMb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMTEyNSw3ICsxMTI1LDcgQEAKIAkJNDE2QTA2QTEyM0NDQUQw
MzAwMzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZBMDY5NjIzQ0NBQTlGMDAzNDcx
MDkgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZENzVBMjIwQzY1MUE1MDBEMDJEMkMg
LyogTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDE2RDc1OUYyMEM2NDQxMzAwRDAyRDJDIC8qIE5ldHdvcmtMb2Fk
SW5mb3JtYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0MTZFMEIzQTIwOUJDM0NCMDA0QTk1RDkgLyogRmV0Y2hJZGVudGlmaWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFMEIzNzIwOUJD
M0MyMDA0QTk1RDkgLyogRmV0Y2hJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDE2RTI5QTYxMDJGQTk2MjAwN0ZDMTRFIC8qIFdv
cmtlclJlcG9ydGluZ1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTZFMjlBNTEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJv
eHkuaCAqLzsgfTsKKwkJNDE2RTI5QTYxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGlu
Z1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTZFMjlBNTEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFODFCQkQx
MkRGMDAwQTNGNjQgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAw
Qjc2NEQ5IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFODFCQkQxMkRGMDAw
QTNGNjUgLyogSlNET01CaW5kaW5nSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjREQSAv
KiBKU0RPTUJpbmRpbmdJbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU4MUJCRDEyREYwMDBBM0Y3NCAvKiBU
cmFuc2Zvcm1TdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEVBIC8qIFRyYW5z
Zm9ybVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzNDcsMTQgKzEzNDcsMTYgQEAKIAkJNDY3QTY4RDcy
NzVFQTk5MTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3QTY4RDQyNzVFQTk4QjAwOUIzMUM1IC8q
IFNoYXJlZFdvcmtlclRocmVhZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ2N0E2OEQ4Mjc1RUE5OTUwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJT
Y3JpcHRMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2N0E2OEQ1Mjc1RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIu
aCAqLzsgfTsKIAkJNDY3QTY4RDkyNzVFQTk5ODAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVh
ZFByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjdBNjhENjI3NUVBOThDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk0NjdBNjhEQTI3
NUVBOTlDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3QTY4RDIyNzVFQTk4QTAwOUIzMUM1IC8q
IFNoYXJlZFdvcmtlck1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0NjgyRDIwMDFGNzk3ODMwMDBDODYzREIgLyogU3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2ODJEMUZGMUY3OTc4MjMwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODM0
NEUwMUVEREZBQUEwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MzQ0REUxRURERkE1RjAwQjc3OTVCIC8qIERP
TVJlY3RMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDY4M0RGNDAyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29w
ZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
ODNERjNFMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmgg
Ki87IH07CiAJCTQ2ODNERjQxMjc2N0U5MUEwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNj
b3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njgz
REYzQjI3NjdERjI2MDA3RDAwQzggLyogU2hhZG93UmVhbG1HbG9iYWxTY29wZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODhFRTNDMjZERDI2
MTAwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODhFRTNBMjZERDI2MEMwMDJBRjVDNCAvKiBDcm9zc09y
aWdpbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk0Njk0M0RDOTI3NjNGODE3MDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5
NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0Njk4NUYy
MzI3QTRBNkFEMDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk4NUYyMjI3QTRBNjg2MDA5N0EzMkIgLyog
U2hhcmVkV29ya2VyS2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNDY5Q0NDRkUyNjlEMDIxQzAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OUNDQ0ZD
MjY5RDAyMDIwMDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY5RDc3QjgyNzAxNjI1MTAwMTQyRkE2
IC8qIE5hdmlnYXRpb25SZXF1ZXN0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2OUQ3N0I2MjcwMTYyNTAwMDE0MkZBNiAvKiBOYXZpZ2F0aW9uUmVx
dWVzdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNDZBNzhCMzQyNzk5QkQ3MTAwMTE1NEZFIC8qIFdvcmtlck9wdGlvbnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMUIxRDI2MjZGMThBNEIwMDg4
MkRBMiAvKiBXb3JrZXJPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDZBQUFBM0QyNUQzNjMyMDAwQkFGNDJGIC8qIEF1ZGlvRmlsZVJl
YWRlckNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkFBQUEzQTI1RDM2MzE0MDBCQUY0MkYgLyogQXVkaW9GaWxlUmVhZGVyQ29jb2EuaCAqLzsg
fTsKIAkJNDZCNjNGNkMxQzZFOEQxOTAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjYzRjZCMUM2
RThDREYwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCNjUwREQyMjk2MjYyNzAwRkQ4QUE0
IC8qIFBhZ2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkI2NTBEQjIyOTYyNjI3MDBGRDhBQTQgLyogUGFnZUlkZW50aWZpZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM3NSw2
ICsxMzc3LDcgQEAKIAkJNDZDNjk2Q0MxRTcyMDVGQzAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNjk2Q0Ex
RTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwICovOyB9OwogCQk0NkM4M0VGRTFBOUJC
RTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzgzRUZDMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmll
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2
Q0E5QzQ0MUY5N0JCRTkwMDRDRkMzQSAvKiBWaXNpYmlsaXR5U3RhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Q0E5QzQxMUY5N0JCRTcwMDRDRkMz
QSAvKiBWaXNpYmlsaXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk0NkNGNTA0QTI3QUIxRUE0MDA3MERCQzggLyogU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2Q0Y1MDQ4MjdBQjFFQTEwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQ2RDAwMDQwMjZBMEZFQjMwMEQxQkYxRSAvKiBTdWJtaXRFdmVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZEMDAwM0UyNkEwRkU2RjAwRDFCRjFF
IC8qIFN1Ym1pdEV2ZW50LmggKi87IH07CiAJCTQ2REE0QTAyMjdBQjAzOTMwMEUzNzVBOCAvKiBU
cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NkRBNEEwMDI3QUIwMzhEMDBFMzc1QTggLyogVHJhbnNmZXJyZWRNZXNz
YWdlUG9ydC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQ2REJCNjUwMUFCOEM5NkYwMEQ5QTgxMyAvKiBQb3dlck9ic2VydmVyTWFjLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRCQjY0RTFBQjhDOTZG
MDBEOUE4MTMgLyogUG93ZXJPYnNlcnZlck1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05MjQ1LDggKzkyNDgsNiBAQAogCQk0NjdBNjhDRjI3
NUVBOTg5MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NjdBNjhEMDI3NUVBOTg5MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFk
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlclRocmVhZC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2N0E2OEQxMjc1RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRX
b3JrZXJTY3JpcHRMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyU2Ny
aXB0TG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDY3QTY4RDIyNzVF
QTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hh
cmVkV29ya2VyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NjdBNjhE
MzI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDY3QTY4RDQyNzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDY3QTY4RDUyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExv
YWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3QTY4RDYyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJl
ZFdvcmtlclRocmVhZFByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclRocmVhZFBy
b3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MjYyLDYgKzkyNjMsOCBAQAog
CQk0NjgzREYzRTI3NjdERjk4MDA3RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFz
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NoYWRvd1JlYWxtR2xvYmFs
U2NvcGVCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODhFRTNBMjZERDI2
MEMwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NPcmln
aW5Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OEI4QkRFMjVDQzg0OTMw
MEY2NzgyMiAvKiBKU0Jhc2VBdWRpb0NvbnRleHRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNCYXNlQXVkaW9Db250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk4NUYyMjI3QTRBNjg2MDA5N0EzMkIgLyog
U2hhcmVkV29ya2VyS2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJl
ZFdvcmtlcktleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlDQ0NGQTI2OUQw
MjAyMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBC
cm9hZGNhc3RDaGFubmVsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5Q0ND
RkMyNjlEMDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QnJvYWRjYXN0Q2hhbm5lbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlDQ0NG
RDI2OUQwMjAzMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQnJvYWRjYXN0
Q2hhbm5lbC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MzAyLDYgKzkzMDUs
OCBAQAogCQk0NkM4M0VGQzFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VvTm90aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDZDQTlDNDExRjk3QkJFNzAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaXNpYmlsaXR5U3RhdGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDQTlDNDIxRjk3QkJFNzAwNENGQzNBIC8q
IFZpc2liaWxpdHlTdGF0ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVmlzaWJpbGl0eVN0
YXRlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZDRjUwNDgyN0FCMUVBMTAw
NzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQ2Q0Y1MDQ5MjdBQjFFQTEwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RDAwMDNDMjZBMEZFNkYwMEQxQkYxRSAvKiBT
dWJtaXRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdWJt
aXRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RDAwMDNFMjZBMEZF
NkYwMEQxQkYxRSAvKiBTdWJtaXRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTdWJtaXRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkQwMDAz
RjI2QTBGRTcwMDBEMUJGMUUgLyogU3VibWl0RXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFN1Ym1pdEV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNTY4
LDYgKzIxNTczLDggQEAKIAkJNDY0N0NFNjEyN0FBRTFEQTAwOUNCRDQ4IC8qIGNvbnRleHQgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQ2Q0Y1MDQ5MjdB
QjFFQTEwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAgKi8sCisJCQkJ
NDZDRjUwNDgyN0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgg
Ki8sCiAJCQkJNDY3QTY4RDAyNzVFQTk4OTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5j
cHAgKi8sCiAJCQkJNDY3QTY4RDQyNzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVh
ZC5oICovLAogCQkJCTQ2N0E2OENGMjc1RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eS5jcHAgKi8sCkBAIC0yMTU4NywxMCArMjE1OTQsMTAgQEAKIAkJCQk0NjY5NENFMTI3
NTk0NDhDMDBFMzE1MEUgLyogU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaCAqLywKIAkJCQk0NjY5
NENFMDI3NTk0NDhDMDBFMzE1MEUgLyogU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaWRsICovLAog
CQkJCTQ2RUM0NDQ4MjdBQjMzN0YwMEZGQ0Q5NiAvKiBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgg
Ki8sCi0JCQkJNDY3QTY4RDMyNzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIu
Y3BwICovLAotCQkJCTQ2N0E2OEQyMjc1RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5h
Z2VyLmggKi8sCisJCQkJNDY5ODVGMjIyN0E0QTY4NjAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktl
eS5oICovLAogCQkJCTQ2NjhBMEIzMjdBQjYwMEIwMEM3MjBCQyAvKiBTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uLmNwcCAqLywKIAkJCQk0NjY4QTBCMTI3QUI2MDBCMDBDNzIwQkMgLyogU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oICovLAorCQkJCTQ2OTQzREM3Mjc2M0Y4MEUwMDRC
NjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggKi8sCiAJCQkJNDY2OEEwQjQy
N0FCNjAwQzAwQzcyMEJDIC8qIFNoYXJlZFdvcmtlclByb3ZpZGVyLmNwcCAqLywKIAkJCQk0NjY4
QTBCNTI3QUI2MDBDMDBDNzIwQkMgLyogU2hhcmVkV29ya2VyUHJvdmlkZXIuaCAqLywKIAkJCQk0
NjdBNjhEMTI3NUVBOThBMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcCAq
LywKQEAgLTM3MjA0LDkgKzM3MjExLDExIEBACiAJCQkJODM0REZBRDAxRjdEQUU1RDAwQzI3MjVC
IC8qIFNoYXJlZFN0cmluZ0hhc2guaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RUEzMDk5RUI3
OEMwMDU2RTU4MSAvKiBTaGFyZWRUaW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFEQzA0RkUy
N0E4M0M5MzAwOENGOTY4IC8qIFNoYXJlZFZpZGVvRnJhbWVJbmZvLmggaW4gSGVhZGVycyAqLywK
KwkJCQk0NkNGNTA0QTI3QUIxRUE0MDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2RUM0NDRBMjdBQjMzODkwMEZGQ0Q5NiAvKiBTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0NjdBNjhEQTI3NUVBOTlD
MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY5
ODVGMjMyN0E0QTZBRDAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktleS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDY2OEEwQjYyN0FCNjAxQjAwQzcyMEJDIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2OTQzREM5Mjc2M0Y4MTcwMDRCNjEwRSAvKiBT
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjY4QTBC
NzI3QUI2MDIxMDBDNzIwQkMgLyogU2hhcmVkV29ya2VyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQ2N0E2OEQ4Mjc1RUE5OTUwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2N0E2OEQ3Mjc1RUE5OTEwMDlCMzFDNSAvKiBTaGFy
ZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovLApAQCAtMzgwNjcsNiArMzgwNzYsNyBAQAog
CQkJCUUxMjcxQTBCMEVFRUM3N0EwMEY2MTIxMyAvKiBXb3JrZXJOYXZpZ2F0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1Q0IwNTI1MUZCNTFGM0EwMDA4OUI5NyAvKiBXb3JrZXJOZXR3b3JrQWdl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFNDM0NjUxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3Jr
ZXJPYmplY3RQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZBNzhCMzQyNzk5QkQ3MTAwMTE1
NEZFIC8qIFdvcmtlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzRDZBQUU2MjUyNEVF
MUMwMDQyOEI0QiAvKiBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODM5QTA5NUQyNTI0RjM3RjAwRUVGMzI4IC8qIFdvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzRjZBRUJGMjUyN0JCMEMwMDM0QkNEMyAv
KiBXb3JrZXJPcldvcmtsZXRUaHJlYWQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TG9nZ2luZy5oCmluZGV4IDVmZWY0MmVlMDZlYy4uZmE3ZDIzMDJlYzM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTG9nZ2luZy5oCkBAIC0xMjcsNiArMTI3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIE0oV2ViR0wpIFwKICAgICBNKFdlYlJUQykgXAogICAgIE0oV2ViUlRDU3RhdHMpIFwKKyAg
ICBNKFdvcmtlcikgXAogICAgIE0oWFIpIFwKICAgICBNKFdoZWVsRXZlbnRUZXN0TW9uaXRvcikg
XAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNwcApp
bmRleCBiNDg3NDdhMmMwOTkuLjE0MjJlZTliZDg5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDE1ICsyNiwxNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgogCisjaW5jbHVkZSAiQ2xpZW50
T3JpZ2luLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VDaGFubmVsLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIK
KyNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIK
LSNpbmNsdWRlICJTaGFyZWRXb3JrZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb3ZpZGVyLmgiCi0j
aW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJPcHRp
b25zLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllcnNGYWN0b3J5Lmg+CiAj
aW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTQzLDEyICs0NSwyNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChTaGFyZWRXb3Jr
ZXIpOwogCisjZGVmaW5lIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVB
U0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gW2lkZW50aWZpZXI9JXtwdWJsaWN9c10gU2hhcmVk
V29ya2VyOjoiIGZtdCwgdGhpcywgbV9pZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPR19FUlJP
UihmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoU2hhcmVkV29ya2VyLCAiJXAgLSBbaWRlbnRp
Zmllcj0le3B1YmxpY31zXSBTaGFyZWRXb3JrZXI6OiIgZm10LCB0aGlzLCBtX2lkZW50aWZpZXIu
dG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAjI19fVkFfQVJHU19fKQorCitzdGF0aWMgSGFzaE1h
cDxTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBTaGFyZWRXb3JrZXIqPiYgYWxsU2hhcmVk
V29ya2VycygpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBTaGFyZWRX
b3JrZXIqPj4gYWxsU2hhcmVkV29ya2VyczsKKyAgICByZXR1cm4gYWxsU2hhcmVkV29ya2VyczsK
K30KKworU2hhcmVkV29ya2VyKiBTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVyKFNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gYWxsU2hhcmVk
V29ya2VycygpLmdldChpZGVudGlmaWVyKTsKK30KKwogc3RhdGljIGlubGluZSBTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uKiBtYWluVGhyZWFkQ29ubmVjdGlvbigpCiB7CiAgICAgcmV0dXJu
IFNoYXJlZFdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5zaGFyZWRXb3JrZXJDb25uZWN0aW9u
KCk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBTaGFyZWRXb3JrZXI6OmNy
ZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncywg
U3RyaW5nJiYgc2NyaXB0VVJMU3RyaW5nLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxTdHJp
bmcsIFdvcmtlck9wdGlvbnM+PiYmIG1heWJlT3B0aW9ucykKK0V4Y2VwdGlvbk9yPFJlZjxTaGFy
ZWRXb3JrZXI+PiBTaGFyZWRXb3JrZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmlu
ZyYmIHNjcmlwdFVSTFN0cmluZywgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBX
b3JrZXJPcHRpb25zPj4mJiBtYXliZU9wdGlvbnMpCiB7CiAgICAgaWYgKCFtYWluVGhyZWFkQ29u
bmVjdGlvbigpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3Is
ICJTaGFyZWQgd29ya2VycyBhcmUgbm90IHN1cHBvcnRlZCIgfTsKQEAgLTc3LDI2ICs5NCwzNyBA
QCBFeGNlcHRpb25PcjxSZWY8U2hhcmVkV29ya2VyPj4gU2hhcmVkV29ya2VyOjpjcmVhdGUoRG9j
dW1lbnQmIGRvY3VtZW50LCBKU0M6OlJ1bgogICAgIGF1dG8gY2hhbm5lbCA9IE1lc3NhZ2VDaGFu
bmVsOjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIGF1dG8gdHJhbnNmZXJyZWRQb3J0ID0gY2hhbm5l
bC0+cG9ydDIoKS5kaXNlbnRhbmdsZSgpOwogCi0gICAgYXV0byBzaGFyZWRXb3JrZXIgPSBhZG9w
dFJlZigqbmV3IFNoYXJlZFdvcmtlcihkb2N1bWVudCwgY2hhbm5lbC0+cG9ydDEoKSwgcnVudGlt
ZUZsYWdzKSk7CisgICAgQ2xpZW50T3JpZ2luIGNsaWVudE9yaWdpbiB7IGRvY3VtZW50LnRvcERv
Y3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCksIGRvY3VtZW50LnNlY3VyaXR5T3JpZ2lu
KCkuZGF0YSgpIH07CisgICAgU2hhcmVkV29ya2VyS2V5IGtleSB7IGNsaWVudE9yaWdpbiwgdXJs
LCBvcHRpb25zLm5hbWUgfTsKKworICAgIGF1dG8gc2hhcmVkV29ya2VyID0gYWRvcHRSZWYoKm5l
dyBTaGFyZWRXb3JrZXIoZG9jdW1lbnQsIGtleSwgY2hhbm5lbC0+cG9ydDEoKSkpOwogICAgIHNo
YXJlZFdvcmtlci0+c3VzcGVuZElmTmVlZGVkKCk7CiAKLSAgICBtYWluVGhyZWFkQ29ubmVjdGlv
bigpLT5yZXF1ZXN0U2hhcmVkV29ya2VyKHVybCwgc2hhcmVkV29ya2VyLmdldCgpLCBXVEZNb3Zl
KHRyYW5zZmVycmVkUG9ydCksIFdURk1vdmUob3B0aW9ucykpOworICAgIG1haW5UaHJlYWRDb25u
ZWN0aW9uKCktPnJlcXVlc3RTaGFyZWRXb3JrZXIoa2V5LCBzaGFyZWRXb3JrZXItPmlkZW50aWZp
ZXIoKSwgV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBvcHRpb25zKTsKICAgICByZXR1cm4gc2hh
cmVkV29ya2VyOwogfQogCi1TaGFyZWRXb3JrZXI6OlNoYXJlZFdvcmtlcihEb2N1bWVudCYgZG9j
dW1lbnQsIFJlZjxNZXNzYWdlUG9ydD4mJiBwb3J0LCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1l
RmxhZ3MpCitTaGFyZWRXb3JrZXI6OlNoYXJlZFdvcmtlcihEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IFNoYXJlZFdvcmtlcktleSYga2V5LCBSZWY8TWVzc2FnZVBvcnQ+JiYgcG9ydCkKICAgICA6
IEFjdGl2ZURPTU9iamVjdCgmZG9jdW1lbnQpCisgICAgLCBtX2tleShrZXkpCisgICAgLCBtX2lk
ZW50aWZpZXIoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKICAgICAs
IG1fcG9ydChXVEZNb3ZlKHBvcnQpKQogICAgICwgbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yKCJT
aGFyZWRXb3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVu
dGlmaWVyKCkpCi0gICAgLCBtX3J1bnRpbWVGbGFncyhydW50aW1lRmxhZ3MpCi0gICAgLCBtX2Ny
ZWF0aW9uVGltZShNb25vdG9uaWNUaW1lOjpub3coKSkKLSAgICAsIG1fcHJveHkoU2hhcmVkV29y
a2VyVGhyZWFkUHJveHk6OmNyZWF0ZSgqdGhpcykpCiB7CisgICAgU0hBUkVEX1dPUktFUl9SRUxF
QVNFX0xPRygiU2hhcmVkV29ya2VyOiIpOworICAgIGFsbFNoYXJlZFdvcmtlcnMoKS5hZGQobV9p
ZGVudGlmaWVyLCB0aGlzKTsKKworICAgIC8vIElmIHRoZSBzaGFyZWQgd29ya2VyIFVSTCBpcyBh
IGJsb2IgVVJMLCBtYWtlIHN1cmUgdG8ga2VlcCBpdCBhbGl2ZSB1bnRpbCB0aGUgd29ya2VyIGhh
cyBmaW5pc2hlZCBsb2FkaW5nLgorICAgIGlmIChtX2tleS51cmwucHJvdG9jb2xJc0Jsb2IoKSkK
KyAgICAgICAgbV9ibG9iVVJMRXh0ZW5zaW9uID0gbV9rZXkudXJsOwogfQogCiBTaGFyZWRXb3Jr
ZXI6On5TaGFyZWRXb3JrZXIoKQogewotICAgIG1fcHJveHkud29ya2VyT2JqZWN0RGVzdHJveWVk
KCk7CisgICAgQVNTRVJUKGFsbFNoYXJlZFdvcmtlcnMoKS5nZXQobV9pZGVudGlmaWVyKSA9PSB0
aGlzKTsKKyAgICBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HKCJ+U2hhcmVkV29ya2VyOiIpOwor
ICAgIGFsbFNoYXJlZFdvcmtlcnMoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKKyAgICBBU1NFUlQo
IW1faXNBY3RpdmUpOwogfQogCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBTaGFyZWRXb3JrZXI6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdApAQCAtMTE0LDE5ICsxNDIsMjkgQEAgRXZl
bnRUYXJnZXRJbnRlcmZhY2UgU2hhcmVkV29ya2VyOjpldmVudFRhcmdldEludGVyZmFjZSgpIGNv
bnN0CiAgICAgcmV0dXJuIFNoYXJlZFdvcmtlckV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsKIH0K
IAotdm9pZCBTaGFyZWRXb3JrZXI6OnN0b3AoKQordm9pZCBTaGFyZWRXb3JrZXI6OmRpZEZpbmlz
aExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgdGVybWluYXRlKCk7
CisgICAgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRygiZmluaXNoTG9hZGluZzogc3VjY2Vzcz0l
ZCIsIGVycm9yLmlzTnVsbCgpKTsKKyAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CisgICAgICAg
IHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0
aW9uLCBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnVi
YmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7CisgICAgICAgIG1faXNBY3RpdmUg
PSBmYWxzZTsKKyAgICB9CisgICAgbV9ibG9iVVJMRXh0ZW5zaW9uLmNsZWFyKCk7CiB9CiAKIGJv
b2wgU2hhcmVkV29ya2VyOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9wcm94eS5oYXNQZW5kaW5nQWN0aXZpdHkoKSB8fCBtX2lzTG9hZGluZzsKKyAg
ICByZXR1cm4gbV9pc0FjdGl2ZTsKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXI6OnRlcm1pbmF0ZSgp
Cit2b2lkIFNoYXJlZFdvcmtlcjo6c3RvcCgpCiB7Ci0gICAgbV9wcm94eS50ZXJtaW5hdGVXb3Jr
ZXJHbG9iYWxTY29wZSgpOworICAgIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coInN0b3A6Iik7
CisgICAgbV9pc0FjdGl2ZSA9IGZhbHNlOworICAgIG1haW5UaHJlYWRDb25uZWN0aW9uKCktPnNo
YXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KG1fa2V5LCBtX2lkZW50aWZpZXIpOwogfQogCisj
dW5kZWYgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRworI3VuZGVmIFNIQVJFRF9XT1JLRVJfUkVM
RUFTRV9MT0dfRVJST1IKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaAppbmRleCBlNTViMWNmNTUxM2QuLmNkZDI2
OWYzNjE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjcsMzkgKzI3LDM3IEBACiAKICNpbmNsdWRlICJBYnN0cmFjdFdvcmtlci5oIgogI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1bnRpbWVG
bGFncy5oPgorI2luY2x1ZGUgIkJsb2JVUkwuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJLZXku
aCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8
d3RmL01vbm90b25pY1RpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZXNz
YWdlUG9ydDsKLWNsYXNzIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OworY2xhc3MgUmVzb3VyY2VF
cnJvcjsKIAogc3RydWN0IFdvcmtlck9wdGlvbnM7CiAKIGNsYXNzIFNoYXJlZFdvcmtlciBmaW5h
bCA6IHB1YmxpYyBBYnN0cmFjdFdvcmtlciwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChTaGFyZWRXb3JrZXIpOwogcHVibGljOgotICAgIHN0YXRp
YyBFeGNlcHRpb25PcjxSZWY8U2hhcmVkV29ya2VyPj4gY3JlYXRlKERvY3VtZW50JiwgSlNDOjpS
dW50aW1lRmxhZ3MsIFN0cmluZyYmIHNjcmlwdFVSTCwgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlh
bnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJl
ZjxTaGFyZWRXb3JrZXI+PiBjcmVhdGUoRG9jdW1lbnQmLCBTdHJpbmcmJiBzY3JpcHRVUkwsIHN0
ZDo6b3B0aW9uYWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYpOwogICAg
IH5TaGFyZWRXb3JrZXIoKTsKIAorICAgIHN0YXRpYyBTaGFyZWRXb3JrZXIqIGZyb21JZGVudGlm
aWVyKFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIFNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQog
ICAgIE1lc3NhZ2VQb3J0JiBwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9wb3J0LmdldCgpOyB9Ci0g
ICAgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKCkgeyByZXR1cm4gbV9ydW50aW1lRmxh
Z3M7IH0KIAogICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllckZvckluc3BlY3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckluc3BlY3RvcjsgfQotICAgIE1vbm90b25pY1RpbWUg
Y3JlYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdGlvblRpbWU7IH0KIAotICAgIFNo
YXJlZFdvcmtlclRocmVhZFByb3h5JiBwcm94eSgpIHsgcmV0dXJuIG1fcHJveHk7IH0KLQotICAg
IHZvaWQgc2V0SXNMb2FkaW5nKGJvb2wgaXNMb2FkaW5nKSB7IG1faXNMb2FkaW5nID0gaXNMb2Fk
aW5nOyB9CisgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFJlc291cmNlRXJyb3ImKTsK
IAogICAgIC8vIEV2ZW50VGFyZ2V0LgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBTaGFyZWRX
b3JrZXIoRG9jdW1lbnQmLCBSZWY8TWVzc2FnZVBvcnQ+JiYsIEpTQzo6UnVudGltZUZsYWdzKTsK
LQotICAgIHZvaWQgdGVybWluYXRlKCk7CisgICAgU2hhcmVkV29ya2VyKERvY3VtZW50JiwgY29u
c3QgU2hhcmVkV29ya2VyS2V5JiwgUmVmPE1lc3NhZ2VQb3J0PiYmKTsKIAogICAgIC8vIEV2ZW50
VGFyZ2V0LgogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkg
Y29uc3QgZmluYWw7CkBAIC03MCwxMiArNjgsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIHZpcnR1
YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogCisgICAgU2hhcmVkV29ya2Vy
S2V5IG1fa2V5OworICAgIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgbV9pZGVudGlmaWVy
OwogICAgIFJlZjxNZXNzYWdlUG9ydD4gbV9wb3J0OwogICAgIFN0cmluZyBtX2lkZW50aWZpZXJG
b3JJbnNwZWN0b3I7Ci0gICAgSlNDOjpSdW50aW1lRmxhZ3MgbV9ydW50aW1lRmxhZ3M7Ci0gICAg
TW9ub3RvbmljVGltZSBtX2NyZWF0aW9uVGltZTsKLSAgICBTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eSYgbV9wcm94eTsgLy8gVGhlIHByb3h5IG91dGxpdmVzIHRoZSB3b3JrZXIgdG8gcGVyZm9ybSB0
aHJlYWQgc2h1dGRvd24uCi0gICAgYm9vbCBtX2lzTG9hZGluZyB7IGZhbHNlIH07CisgICAgQmxv
YlVSTEhhbmRsZSBtX2Jsb2JVUkxFeHRlbnNpb247CisgICAgYm9vbCBtX2lzQWN0aXZlIHsgdHJ1
ZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5pZGwKaW5kZXggYjE3MWM5ZWRmODFiLi40Yzc0MTU0
ZDgyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
LmlkbApAQCAtMjgsNyArMjgsNyBAQAogICAgIEV4cG9zZWQ9V2luZG93CiBdCiBpbnRlcmZhY2Ug
U2hhcmVkV29ya2VyIDogRXZlbnRUYXJnZXQgewotICBbQ2FsbFdpdGg9RG9jdW1lbnQmUnVudGlt
ZUZsYWdzXSBjb25zdHJ1Y3RvcihVU1ZTdHJpbmcgc2NyaXB0VVJMLCBvcHRpb25hbCAoRE9NU3Ry
aW5nIG9yIFdvcmtlck9wdGlvbnMpIG9wdGlvbnMpOworICBbQ2FsbFdpdGg9RG9jdW1lbnRdIGNv
bnN0cnVjdG9yKFVTVlN0cmluZyBzY3JpcHRVUkwsIG9wdGlvbmFsIChET01TdHJpbmcgb3IgV29y
a2VyT3B0aW9ucykgb3B0aW9ucyk7CiAKICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lc3NhZ2VQb3J0
IHBvcnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJLZXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFmMmJhYTBm
N2I5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1No
YXJlZFdvcmtlcktleS5oCkBAIC0wLDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBTaGFyZWRXb3JrZXJLZXkgeworICAgIENs
aWVudE9yaWdpbiBvcmlnaW47CisgICAgVVJMIHVybDsKKyAgICBTdHJpbmcgbmFtZTsKKworICAg
IHVuc2lnbmVkIGhhc2goKSBjb25zdDsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgc3RkOjpvcHRpb25hbDxTaGFyZWRXb3JrZXJLZXk+IGRlY29kZShEZWNvZGVyJik7Cit9
OworCitpbmxpbmUgdW5zaWduZWQgU2hhcmVkV29ya2VyS2V5OjpoYXNoKCkgY29uc3QKK3sKKyAg
ICBIYXNoZXIgaGFzaGVyOworICAgIGFkZChoYXNoZXIsIG9yaWdpbi5oYXNoKCkpOworICAgIGFk
ZChoYXNoZXIsIHVybCk7CisgICAgYWRkKGhhc2hlciwgbmFtZSk7CisgICAgcmV0dXJuIGhhc2hl
ci5oYXNoKCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFNoYXJlZFdvcmtl
cktleTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBv
cmlnaW4gPDwgdXJsIDw8IG5hbWU7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6
Om9wdGlvbmFsPFNoYXJlZFdvcmtlcktleT4gU2hhcmVkV29ya2VyS2V5OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPENsaWVudE9yaWdpbj4gb3JpZ2luOwor
ICAgIGRlY29kZXIgPj4gb3JpZ2luOworICAgIGlmICghb3JpZ2luKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxVUkw+IHVybDsKKyAgICBkZWNvZGVy
ID4+IHVybDsKKyAgICBpZiAoIXVybCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBuYW1lOworICAgIGRlY29kZXIgPj4gbmFtZTsKKyAg
ICBpZiAoIW5hbWUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4g
eyB7IFdURk1vdmUoKm9yaWdpbiksIFdURk1vdmUoKnVybCksIFdURk1vdmUoKm5hbWUpIH0gfTsK
K30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRXb3JrZXJLZXkmIGEsIGNv
bnN0IFNoYXJlZFdvcmtlcktleSYgYikKK3sKKyAgICByZXR1cm4gYS5vcmlnaW4gPT0gYi5vcmln
aW4gJiYgYS51cmwgPT0gYi51cmwgJiYgYS5uYW1lID09IGIubmFtZTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVm
YXVsdEhhc2g8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5PiB7CisgICAgc3RhdGljIHVuc2lnbmVk
IGhhc2goY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBrZXkpCisgICAgeworICAgICAg
ICByZXR1cm4ga2V5Lmhhc2goKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25z
dCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIGEsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtl
cktleSYgYikKKyAgICB7CisgICAgICAgIHJldHVybiBhID09IGI7CisgICAgfQorCisgICAgc3Rh
dGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307
CisKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5
PiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleT4geworICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7CisgICAgc3RhdGlj
IHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgc2xv
dCkgeyBuZXcgKE5vdE51bGwsICZzbG90LnVybCkgVVJMKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZh
bHVlKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OlNo
YXJlZFdvcmtlcktleSYgc2xvdCkgeyByZXR1cm4gc2xvdC51cmwuaXNIYXNoVGFibGVEZWxldGVk
VmFsdWUoKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBhNzQxMDg3N2RiMzIuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDEwOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlck1hbmFnZXIuaCIKLQotI2luY2x1ZGUgIkNvbnRlbnRT
ZWN1cml0eVBvbGljeS5oIgotI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJMb2Fk
ZXJTdHJhdGVneS5oIgotI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgotI2luY2x1ZGUgIlBsYXRm
b3JtU3RyYXRlZ2llcy5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgotI2luY2x1ZGUgIlNo
YXJlZFdvcmtlckdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkLmgiCi0jaW5jbHVkZSAiU2hhcmVk
V29ya2VyVGhyZWFkUHJveHkuaCIKLSNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCi0jaW5jbHVk
ZSAiV29ya2VyU2NyaXB0TG9hZGVyLmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
Ci0jaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1TaGFy
ZWRXb3JrZXJNYW5hZ2VyJiBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24oKQotewotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFyZWRXb3JrZXJNYW5hZ2VyPiBpbnN0YW5jZTsKLSAg
ICByZXR1cm4gaW5zdGFuY2UuZ2V0KCk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyTWFuYWdlcjo6
Y29ubmVjdChjb25zdCBVUkwmIHVybCwgU2hhcmVkV29ya2VyJiB3b3JrZXIsIFRyYW5zZmVycmVk
TWVzc2FnZVBvcnQmJiBtZXNzYWdlUG9ydCwgV29ya2VyT3B0aW9ucyYmIG9wdGlvbnMpCi17Ci0g
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAvLyBGSVhNRTogSGFuZGxlIHdvcmtl
cnMgZnJvbSBvdGhlciBwcm9jZXNzZXMsIHdoaWNoIHdpbGwgcHJvYmFibHkgcmVxdWlyZSBtb3Zp
bmcgY29ubmVjdCB0byB0aGUgRnJhbWVMb2FkZXJDbGllbnQgb3Igc29tZXRoaW5nLgotICAgIC8v
IE1heWJlIHNvbWV0aGluZyBtb3JlIGxpa2Ugd2hhdCBTZXJ2aWNlV29ya2VycyBkb2VzLgotCi0g
ICAgLy8gRklYTUU6IENoZWNrIGlmIHdlIGFscmVhZHkgbWFkZSBhIHRocmVhZC4KLSAgICAvLyBG
SVhNRTogQ2hlY2sgaWYgdGhlcmUncyBhbHJlYWR5IGEgc2hhcmVkIHdvcmtlciBhbmQgdXNlIHRo
YXQgaWYgdGhlcmUgaXMuCi0KLSAgICBhdXRvIGxvYWRlciA9IG1ha2VVbmlxdWVSZWY8U2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyPih1cmwsIHdvcmtlciwgV1RGTW92ZShtZXNzYWdlUG9ydCksIFdU
Rk1vdmUob3B0aW9ucykpOwotICAgIGF1dG8gaWRlbnRpZmllciA9IGxvYWRlci0+aWRlbnRpZmll
cigpOwotICAgIG1fbG9hZGVycy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShsb2FkZXIpKTsKLX0K
LQotdm9pZCBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzY3JpcHRMb2FkRmFpbGVkKFNoYXJlZFdvcmtl
clNjcmlwdExvYWRlciYgbG9hZGVyKQotewotICAgIEFjdGl2ZURPTU9iamVjdDo6cXVldWVUYXNr
VG9EaXNwYXRjaEV2ZW50KGxvYWRlci53b3JrZXIoKSwgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0
aW9uLCBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnVi
YmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7Ci0gICAgbV9sb2FkZXJzLnJlbW92
ZShsb2FkZXIuaWRlbnRpZmllcigpKTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpz
Y3JpcHRMb2FkZWRTdWNjZXNzZnVsbHkoU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJiBsb2FkZXIs
IGNvbnN0IFNjcmlwdEJ1ZmZlciYgc2NyaXB0QnVmZmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBTaGFyZWRXb3JrZXImIHNoYXJlZFdvcmtlciwgVHJh
bnNmZXJyZWRNZXNzYWdlUG9ydCYmIHRyYW5zZmVycmVkUG9ydCkKLXsKLSAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8mIHdvcmtlciA9IGxvYWRlci53b3JrZXIoKTsKLSAg
ICBhdXRvJiBvcHRpb25zID0gbG9hZGVyLm9wdGlvbnMoKTsKLQotICAgIGF1dG8mIHByb3h5ID0g
c2hhcmVkV29ya2VyLnByb3h5KCk7Ci0KLSAgICBwcm94eS5zdGFydFdvcmtlckdsb2JhbFNjb3Bl
KAotICAgICAgICBsb2FkZXIudXJsKCksCi0gICAgICAgIG9wdGlvbnMubmFtZSwKLSAgICAgICAg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC51c2VyQWdlbnQobG9hZGVyLnVybCgpKSwKLSAgICAgICAg
cGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmlzT25MaW5lKCksCi0gICAg
ICAgIHNjcmlwdEJ1ZmZlciwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jb250ZW50
U2VjdXJpdHlQb2xpY3koKS0+cmVzcG9uc2VIZWFkZXJzKCksCi0gICAgICAgIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KCks
Ci0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGlj
eSgpLAotICAgICAgICB3b3JrZXIuY3JlYXRpb25UaW1lKCksCi0gICAgICAgIFJlZmVycmVyUG9s
aWN5OjpFbXB0eVN0cmluZywKLSAgICAgICAgb3B0aW9ucy50eXBlLAotICAgICAgICBvcHRpb25z
LmNyZWRlbnRpYWxzLAotICAgICAgICB3b3JrZXIucnVudGltZUZsYWdzKCkKLSAgICApOwotICAg
IGlmICghcHJveHkudGhyZWFkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJFTEVBU0VfQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaXM8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpKTsKLSAgICBhdXRvIHNvdXJjZU9yaWdpbiA9IGRvd25jYXN0PERvY3VtZW50Pihz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KS5zZWN1cml0eU9yaWdpbigpLnRvU3RyaW5nKCk7Ci0KLSAg
ICBwcm94eS50aHJlYWQoKS0+cnVuTG9vcCgpLnBvc3RUYXNrKFt0cmFuc2ZlcnJlZFBvcnQgPSBX
VEZNb3ZlKHRyYW5zZmVycmVkUG9ydCksIHNvdXJjZU9yaWdpbiA9IFdURk1vdmUoc291cmNlT3Jp
Z2luKS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIG11dGFi
bGUgewotICAgICAgICBkb3duY2FzdDxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkucG9zdENvbm5lY3RFdmVudChXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCks
IHNvdXJjZU9yaWdpbik7Ci0gICAgfSk7Ci0KLSAgICBtX2xvYWRlcnMucmVtb3ZlKGxvYWRlci5p
ZGVudGlmaWVyKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24uY3BwCmluZGV4IGRkYTM4NGQyMjkxMi4uMWNkZTBiYTM1OTU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uLmNwcApAQCAtMjYsMTAgKzI2LDY2IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIgogCisjaW5jbHVk
ZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgorI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRCdWZmZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRX
b3JrZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCIKKyNpbmNsdWRl
ICJXb3JrZXJGZXRjaFJlc3VsdC5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNkZWZpbmUg
Q09OTkVDVElPTl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2Vy
LCAiJXAgLSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgIyNfX1ZB
X0FSR1NfXykKKyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUihmbXQsIC4uLikg
UkVMRUFTRV9MT0dfRVJST1IoU2hhcmVkV29ya2VyLCAiJXAgLSBTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKworc3RhdGljIHVpbnQ2NF90
IGxvYWRlcklkZW50aWZpZXJTZWVkID0gMDsKKwogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bjo6U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpID0gZGVmYXVsdDsKIAogU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbjo6flNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKSA9IGRl
ZmF1bHQ7CiAKK3ZvaWQgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6ZmV0Y2hTY3JpcHRJ
bkNsaWVudChVUkwmJiB1cmwsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIg
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlv
bnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAg
YXV0byogd29ya2VyT2JqZWN0ID0gU2hhcmVkV29ya2VyOjpmcm9tSWRlbnRpZmllcihzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJmZXRj
aFNjcmlwdEluQ2xpZW50OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMs
IHdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCB3b3JrZXJPYmplY3QpOworICAgIGlmICghd29ya2VyT2JqZWN0KQorICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIod29ya2VyRmV0Y2hFcnJvcihSZXNvdXJjZUVycm9y
IHsgUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uIH0pKTsKKworICAgIGF1dG8gbG9h
ZGVySWRlbnRpZmllciA9ICsrbG9hZGVySWRlbnRpZmllclNlZWQ7CisgICAgYXV0byBsb2FkZXIg
PSBtYWtlVW5pcXVlUmVmPFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj4oV1RGTW92ZSh1cmwpLCAq
d29ya2VyT2JqZWN0LCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMpKTsKKyAgICBhdXRvIGxvYWRlclB0
ciA9IGxvYWRlci5wdHIoKTsKKyAgICBtX2xvYWRlcnMuYWRkKGxvYWRlcklkZW50aWZpZXIsIFdU
Rk1vdmUobG9hZGVyKSk7CisKKyAgICBsb2FkZXJQdHItPmxvYWQoW3RoaXMsIGxvYWRlcklkZW50
aWZpZXIsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGNv
bnN0IFdvcmtlckZldGNoUmVzdWx0JiBmZXRjaFJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIENP
Tk5FQ1RJT05fUkVMRUFTRV9MT0coImZldGNoU2NyaXB0SW5DbGllbnQ6IGZpbmlzaGVkIHNjcmlw
dCBsb2FkLCBzdWNjZXNzPSVkIiwgZmV0Y2hSZXN1bHQuZXJyb3IuaXNOdWxsKCkpOworICAgICAg
ICBhdXRvIGxvYWRlciA9IG1fbG9hZGVycy50YWtlKGxvYWRlcklkZW50aWZpZXIpOworICAgICAg
ICBBU1NFUlQobG9hZGVyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmV0Y2hSZXN1bHQp
OworICAgIH0pOworfQorCit2b2lkIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Om5vdGlm
eVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24oV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8qIHdv
cmtlck9iamVjdCA9IFNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIoc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllcik7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUigibm90aWZ5
V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
cj0le3B1YmxpY31zLCB3b3JrZXI9JXAsIHN1Y2Nlc3M9JWQiLCBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgd29ya2VyT2JqZWN0LCBlcnJvci5p
c051bGwoKSk7CisgICAgaWYgKHdvcmtlck9iamVjdCkKKyAgICAgICAgd29ya2VyT2JqZWN0LT5k
aWRGaW5pc2hMb2FkaW5nKGVycm9yKTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoU2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlVVJMKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgYXV0byogd29y
a2VyT2JqZWN0ID0gU2hhcmVkV29ya2VyOjpmcm9tSWRlbnRpZmllcihzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyKTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKCJwb3N0RXhj
ZXB0aW9uVG9Xb3JrZXJPYmplY3Q6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJs
aWN9cywgd29ya2VyPSVwIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygp
LnV0ZjgoKS5kYXRhKCksIHdvcmtlck9iamVjdCk7CisgICAgaWYgKHdvcmtlck9iamVjdCkKKyAg
ICAgICAgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKndvcmtlck9i
amVjdCwgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFcnJvckV2ZW50OjpjcmVhdGUoZXJy
b3JNZXNzYWdlLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgeyB9KSk7Cit9
CisKKyN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HCisjdW5kZWYgQ09OTkVDVElPTl9SRUxF
QVNFX0xPR19FUlJPUgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uLmgKaW5kZXggNGVkNWExYzY1YjU4Li42N2EyMDIwOGZkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uLmgKQEAgLTI1LDIyICsyNSwzOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
IlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJUcmFuc2ZlcnJlZE1l
c3NhZ2VQb3J0LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgU2hhcmVkV29ya2VyOworY2xhc3MgTWVzc2FnZVBvcnQ7CitjbGFzcyBTaGFy
ZWRXb3JrZXJTY3JpcHRMb2FkZXI7CisKK3N0cnVjdCBTaGFyZWRXb3JrZXJLZXk7CitzdHJ1Y3Qg
V29ya2VyRmV0Y2hSZXN1bHQ7CiBzdHJ1Y3QgV29ya2VyT3B0aW9uczsKIAogY2xhc3MgU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24+IHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5T
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dFNoYXJlZFdvcmtlcihjb25zdCBVUkwmLCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJlZE1lc3Nh
Z2VQb3J0JiYsIFdvcmtlck9wdGlvbnMmJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
U2hhcmVkV29ya2VyKGNvbnN0IFNoYXJlZFdvcmtlcktleSYsIFNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgY29uc3QgV29ya2VyT3B0aW9ucyYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoY29u
c3QgU2hhcmVkV29ya2VyS2V5JiwgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikgPSAwOwog
CiBwcm90ZWN0ZWQ6CisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZmV0Y2hTY3JpcHRJbkNsaWVudChVUkwmJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllciwgV29ya2VyT3B0aW9ucyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFdvcmtlckZldGNoUmVzdWx0Jik+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5
V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisKICAgICBXRUJDT1JFX0VYUE9SVCBT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCk7CisKK3ByaXZhdGU6CisgICAgSGFzaE1hcDx1
aW50NjRfdCwgVW5pcXVlUmVmPFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj4+IG1fbG9hZGVyczsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaApzaW1pbGFyaXR5IGlu
ZGV4IDU5JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXJNYW5hZ2VyLmgKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1No
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaAppbmRleCAyNTIxODE2ZTY1YzcuLmViY2Q0YTdh
ZTg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjUsMjkgKzI1LDEyIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSAiTWVzc2FnZVBvcnRJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUHJvY2Vzc1F1YWxpZmll
ZC5oIgorI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZFdvcmtl
cjsKLWNsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjsKLWNsYXNzIFNjcmlwdEJ1ZmZlcjsK
LXN0cnVjdCBXb3JrZXJPcHRpb25zOwotdXNpbmcgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCA9IHN0
ZDo6cGFpcjxXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VQ
b3J0SWRlbnRpZmllcj47Ci0KLXVzaW5nIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcklkZW50aWZp
ZXIgPSBPYmplY3RJZGVudGlmaWVyPFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj47Ci0KLWNsYXNz
IFNoYXJlZFdvcmtlck1hbmFnZXIgewotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBTaGFyZWRXb3JrZXJNYW5hZ2VyJiBzaW5nbGV0b24oKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGNvbm5lY3QoY29uc3QgVVJMJiwgU2hhcmVkV29ya2VyJiwgVHJhbnNmZXJyZWRNZXNzYWdl
UG9ydCYmLCBXb3JrZXJPcHRpb25zJiYpOwotCi0gICAgdm9pZCBzY3JpcHRMb2FkRmFpbGVkKFNo
YXJlZFdvcmtlclNjcmlwdExvYWRlciYpOwotICAgIHZvaWQgc2NyaXB0TG9hZGVkU3VjY2Vzc2Z1
bGx5KFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0
JiYpOwotCi1wcml2YXRlOgotICAgIEhhc2hNYXA8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRl
bnRpZmllciwgVW5pcXVlUmVmPFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj4+IG1fbG9hZGVyczsK
LX07CitlbnVtIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgPSBQcm9jZXNzUXVhbGlmaWVkPE9iamVjdElkZW50
aWZpZXI8U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllclR5cGU+PjsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXggMzExZWJkNjA3OGJjLi5lYTJlMDQ4
Yzc2MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwyMyArMjksMjYgQEAKICNpbmNsdWRlICJF
dmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiU2hhcmVkV29ya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyTWFuYWdlci5oIgor
I2luY2x1ZGUgIldvcmtlckZldGNoUmVzdWx0LmgiCiAjaW5jbHVkZSAiV29ya2VyUnVuTG9vcC5o
IgogI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyKGNv
bnN0IFVSTCYgdXJsLCBTaGFyZWRXb3JrZXImIHdvcmtlciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9y
dCYmIHBvcnQsIFdvcmtlck9wdGlvbnMmJiBvcHRpb25zKQotICAgIDogbV9pZGVudGlmaWVyKFNo
YXJlZFdvcmtlclNjcmlwdExvYWRlcklkZW50aWZpZXI6OmdlbmVyYXRlKCkpCi0gICAgLCBtX29w
dGlvbnMoV1RGTW92ZShvcHRpb25zKSkKK1NoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyKFVSTCYmIHVybCwgU2hhcmVkV29ya2VyJiB3b3JrZXIsIFdvcmtl
ck9wdGlvbnMmJiBvcHRpb25zKQorICAgIDogbV9vcHRpb25zKFdURk1vdmUob3B0aW9ucykpCiAg
ICAgLCBtX3dvcmtlcih3b3JrZXIpCi0gICAgLCBtX3BvcnQoV1RGTW92ZShwb3J0KSkKICAgICAs
IG1fbG9hZGVyKFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlKCkpCi0gICAgLCBtX3BlbmRpbmdB
Y3Rpdml0eSh3b3JrZXIubWFrZVBlbmRpbmdBY3Rpdml0eSh3b3JrZXIpKQotICAgICwgbV91cmwo
dXJsKQorICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQogewotICAgIG1fd29ya2VyLT5zZXRJc0xv
YWRpbmcodHJ1ZSk7Ci0gICAgbV9sb2FkZXItPmxvYWRBc3luY2hyb25vdXNseSgqd29ya2VyLnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgUmVzb3VyY2VSZXF1ZXN0KHVybCksIHdvcmtlci53b3Jr
ZXJGZXRjaE9wdGlvbnMob3B0aW9ucywgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2hhcmVk
d29ya2VyKSwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQ6OkVuZm9yY2VXb3JrZXJT
cmNEaXJlY3RpdmUsIFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsLCAqdGhpcywgV29ya2VyUnVuTG9v
cDo6ZGVmYXVsdE1vZGUoKSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjps
b2FkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoIW1fY29tcGxldGlvbkhhbmRsZXIpOwor
ICAgIG1fY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKKwor
ICAgIG1fbG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoKm1fd29ya2VyLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCksIFJlc291cmNlUmVxdWVzdChtX3VybCksIG1fd29ya2VyLT53b3JrZXJGZXRj
aE9wdGlvbnMobV9vcHRpb25zLCBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpTaGFyZWR3b3Jr
ZXIpLCBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6RW5mb3JjZVdvcmtlclNyY0Rp
cmVjdGl2ZSwgU2VydmljZVdvcmtlcnNNb2RlOjpBbGwsICp0aGlzLCBXb3JrZXJSdW5Mb29wOjpk
ZWZhdWx0TW9kZSgpKTsKIH0KIAogdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpCkBAIC01NSwxNiArNTgsMTIgQEAgdm9pZCBTaGFyZWRXb3JrZXJT
Y3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
aWRlbnQKIAogdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKCkK
IHsKLSAgICBtX3dvcmtlci0+c2V0SXNMb2FkaW5nKGZhbHNlKTsKKyAgICBpZiAobV9sb2FkZXIt
PmZhaWxlZCgpKQorICAgICAgICByZXR1cm4gbV9jb21wbGV0aW9uSGFuZGxlcih3b3JrZXJGZXRj
aEVycm9yKG1fbG9hZGVyLT5lcnJvcigpKSk7CiAKLSAgICBhdXRvKiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0ID0gbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAobV9s
b2FkZXItPmZhaWxlZCgpIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7Ci0gICAgICAgIG1f
d29ya2VyLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZl
bnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKLSAg
ICAgICAgU2hhcmVkV29ya2VyTWFuYWdlcjo6c2luZ2xldG9uKCkuc2NyaXB0TG9hZEZhaWxlZCgq
dGhpcyk7IC8vIGRlbGV0ZXMgdGhpcy4KLSAgICB9IGVsc2UgeworICAgIGlmIChhdXRvKiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0ID0gbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkK
ICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZCgqc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgbV9sb2FkZXItPmlkZW50aWZpZXIoKSwgbV9sb2FkZXItPnNjcmlw
dCgpLnRvU3RyaW5nKCkpOwotICAgICAgICBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24o
KS5zY3JpcHRMb2FkZWRTdWNjZXNzZnVsbHkoKnRoaXMsIG1fbG9hZGVyLT5zY3JpcHQoKSwgKm1f
d29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fd29ya2VyLmdldCgpLCBzdGQ6OmV4
Y2hhbmdlKG1fcG9ydCwgeyB9KSk7IC8vIGRlbGV0ZXMgdGhpcy4KLSAgICB9CisgICAgbV9jb21w
bGV0aW9uSGFuZGxlcih7IG1fbG9hZGVyLT5zY3JpcHQoKSwgbV9sb2FkZXItPmNlcnRpZmljYXRl
SW5mbygpLCBtX2xvYWRlci0+Y29udGVudFNlY3VyaXR5UG9saWN5KCksIG1fbG9hZGVyLT5jcm9z
c09yaWdpbkVtYmVkZGVyUG9saWN5KCksIG1fbG9hZGVyLT5yZWZlcnJlclBvbGljeSgpLCB7IH0g
fSk7IC8vIGRlbGV0ZXMgdGhpcy4KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRM
b2FkZXIuaAppbmRleCBhYjMwOWExY2VmYjYuLmViMGI3MTQ1YmZhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVy
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFjdGl2ZURPTU9i
amVjdC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJl
c291cmNlTG9hZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIK
QEAgLTM4LDMyICszNywyOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNoYXJlZFdv
cmtlcjsKIGNsYXNzIFdvcmtlclNjcmlwdExvYWRlcjsKLQotY2xhc3MgU2hhcmVkV29ya2VyU2Ny
aXB0TG9hZGVyOwotCi11c2luZyBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0ID0gc3RkOjpwYWlyPFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlm
aWVyPjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKIAogY2xhc3MgU2hhcmVkV29ya2VyU2Ny
aXB0TG9hZGVyIDogcHJpdmF0ZSBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNoYXJlZFdvcmtlclNjcmlwdExvYWRl
cihjb25zdCBVUkwmLCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdv
cmtlck9wdGlvbnMmJik7CisgICAgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyKFVSTCYmLCBTaGFy
ZWRXb3JrZXImLCBXb3JrZXJPcHRpb25zJiYpOworCisgICAgdm9pZCBsb2FkKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKT4mJik7CiAKLSAgICBTaGFyZWRX
b3JrZXJTY3JpcHRMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50aWZpZXI7IH0KICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJs
OyB9CiAgICAgU2hhcmVkV29ya2VyJiB3b3JrZXIoKSB7IHJldHVybiBtX3dvcmtlci5nZXQoKTsg
fQotICAgIGNvbnN0IFdvcmtlck9wdGlvbnMmIG9wdGlvbnMoKSB7IHJldHVybiBtX29wdGlvbnM7
IH0KKyAgICBjb25zdCBXb3JrZXJPcHRpb25zJiBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9v
cHRpb25zOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAgICAg
dm9pZCBub3RpZnlGaW5pc2hlZCgpIGZpbmFsOwogCi0gICAgY29uc3QgU2hhcmVkV29ya2VyU2Ny
aXB0TG9hZGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgY29uc3QgV29ya2VyT3B0aW9u
cyBtX29wdGlvbnM7CiAgICAgY29uc3QgUmVmPFNoYXJlZFdvcmtlcj4gbV93b3JrZXI7Ci0gICAg
VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBtX3BvcnQ7CiAgICAgY29uc3QgUmVmPFdvcmtlclNjcmlw
dExvYWRlcj4gbV9sb2FkZXI7Ci0gICAgY29uc3QgUmVmPEFjdGl2ZURPTU9iamVjdDo6UGVuZGlu
Z0FjdGl2aXR5PFNoYXJlZFdvcmtlcj4+IG1fcGVuZGluZ0FjdGl2aXR5OwogICAgIGNvbnN0IFVS
TCBtX3VybDsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdvcmtlckZldGNoUmVz
dWx0Jik+IG1fY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDdhOTBkOTgwNTEyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlci5jcHAKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCIKKworI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIgorI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1No
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyJiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2lu
Z2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXI+IHNoYXJlZE1hbmFnZXI7CisgICAgcmV0dXJuIHNoYXJlZE1hbmFnZXI7Cit9CisK
K1NoYXJlZFdvcmtlclRocmVhZFByb3h5KiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2hh
cmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV93b3JrZXJNYXAuZ2V0KHNoYXJlZFdvcmtlcklkZW50aWZp
ZXIpOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzdG9wU2hhcmVkV29y
a2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikKK3sKKyAg
ICBhdXRvIHdvcmtlciA9IG1fd29ya2VyTWFwLnRha2Uoc2hhcmVkV29ya2VySWRlbnRpZmllcik7
CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXI6OnN0b3BTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIs
IHdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSwgd29ya2VyLmdl
dCgpKTsKKyAgICBpZiAoIXdvcmtlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgd29ya2VyLT5z
ZXRBc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKCk7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGJlIGFibGUgdG8gZGVhbCB3aXRoIHRoZSB0aHJlYWQgYmVpbmcgdW5yZXNwb25zaXZlIGhlcmUu
CisKKyAgICBhdXRvJiB0aHJlYWQgPSB3b3JrZXItPnRocmVhZCgpOworICAgIHRocmVhZC5zdG9w
KFt3b3JrZXIgPSBXVEZNb3ZlKHdvcmtlcildKCkgbXV0YWJsZSB7CisgICAgICAgIC8vIFNwaW4g
dGhlIHJ1bmxvb3AgYmVmb3JlIHJlbGVhc2luZyB0aGUgc2hhcmVkIHdvcmtlciB0aHJlYWQgcHJv
eHksIGFzIHRoZXJlIHdvdWxkIG90aGVyd2lzZSBiZQorICAgICAgICAvLyBhIHJhY2UgdG93YXJk
cyBpdHMgZGVzdHJ1Y3Rpb24uCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dvcmtlciA9IFdU
Rk1vdmUod29ya2VyKV0geyB9KTsKKyAgICB9KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlcjo6c3RvcEFsbFNoYXJlZFdvcmtlcnMoKQoreworICAgIHdoaWxlICghbV93b3Jr
ZXJNYXAuaXNFbXB0eSgpKQorICAgICAgICBzdG9wU2hhcmVkV29ya2VyKG1fd29ya2VyTWFwLmJl
Z2luKCktPmtleSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNldENv
bm5lY3Rpb24oc3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKK3sKKyAg
ICBBU1NFUlQoIW1fY29ubmVjdGlvbiB8fCBtX2Nvbm5lY3Rpb24tPmlzQ2xvc2VkKCkpOworICAg
IG1fY29ubmVjdGlvbiA9IFdURk1vdmUoY29ubmVjdGlvbik7Cit9CisKK2F1dG8gU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXI6OmNvbm5lY3Rpb24oKSBjb25zdCAtPiBDb25uZWN0aW9uKgorewor
ICAgIHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXI6OnJlZ2lzdGVyU2hhcmVkV29ya2VyVGhyZWFkKFJlZjxTaGFyZWRXb3JrZXJU
aHJlYWRQcm94eT4mJiBwcm94eSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpy
ZWdpc3RlclNoYXJlZFdvcmtlclRocmVhZDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1
NjQsIHByb3h5LT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBhdXRvIHJlc3VsdCA9
IG1fd29ya2VyTWFwLmFkZChwcm94eS0+aWRlbnRpZmllcigpLCBwcm94eS5jb3B5UmVmKCkpOwor
ICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICBwcm94
eS0+dGhyZWFkKCkuc3RhcnQoW10oY29uc3QgU3RyaW5nJiAvKmV4Y2VwdGlvbk1lc3NhZ2UqLykg
eyB9KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6
cG9zdENvbm5lY3RFdmVudChTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50
aWZpZXIsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiB0cmFuc2ZlcnJlZFBvcnQsIFN0cmluZyYm
IHNvdXJjZU9yaWdpbikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8q
IHByb3h5ID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNoYXJlZFdv
cmtlcihzaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3Jr
ZXIsICJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RF
dmVudDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgcHJveHk9JXAiLCBzaGFy
ZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCksIHByb3h5KTsKKyAgICBpZiAoIXByb3h5KQor
ICAgICAgICByZXR1cm47CisKKyAgICBwcm94eS0+dGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNr
KFt0cmFuc2ZlcnJlZFBvcnQgPSBXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCksIHNvdXJjZU9yaWdp
biA9IFdURk1vdmUoc291cmNlT3JpZ2luKS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKKyAgICAgICAgZG93bmNhc3Q8U2hhcmVkV29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpLnBvc3RDb25uZWN0RXZlbnQoV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBX
VEZNb3ZlKHNvdXJjZU9yaWdpbikpOworICAgIH0pOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uOjp0ZXJtaW5hdGVTaGFyZWRXb3JrZXIoU2hhcmVkV29y
a2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyKQoreworICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb246OnRlcm1pbmF0ZVNoYXJlZFdvcmtlcjogc2hhcmVk
V29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50
NjQoKSk7CisgICAgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnN0b3BT
aGFyZWRXb3JrZXIoc2hhcmVkV29ya2VySWRlbnRpZmllcik7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRl
eHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjMzODI1Mjg5MzczZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXIuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiVHJhbnNm
ZXJyZWRNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk7CisKK2NsYXNzIFNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXImIHNpbmdsZXRvbigpOworCisgICAgU2hh
cmVkV29ya2VyVGhyZWFkUHJveHkqIHNoYXJlZFdvcmtlcihTaGFyZWRXb3JrZXJJZGVudGlmaWVy
KSBjb25zdDsKKyAgICB2b2lkIHN0b3BTaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmll
cik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wQWxsU2hhcmVkV29ya2VycygpOworCisg
ICAgY2xhc3MgQ29ubmVjdGlvbiB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
ICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+Q29ubmVjdGlvbigpIHsgfQorICAgICAgICB2
aXJ0dWFsIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVj
dChTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSA9
IDA7CisgICAgICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xvc2VkOyB9
CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZvaWQgc2V0QXNDbG9zZWQoKSB7IG1faXNDbG9z
ZWQgPSB0cnVlOyB9CisKKyAgICAgICAgLy8gSVBDIG1lc3NhZ2UgaGFuZGxlcnMuCisgICAgICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdENvbm5lY3RFdmVudChTaGFyZWRXb3JrZXJJZGVudGlm
aWVyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFN0cmluZyYmIHNvdXJjZU9yaWdpbik7Cisg
ICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdGVybWluYXRlU2hhcmVkV29ya2VyKFNoYXJlZFdv
cmtlcklkZW50aWZpZXIpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCBtX2lzQ2xvc2Vk
IHsgZmFsc2UgfTsKKyAgICB9OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb25uZWN0
aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBD
b25uZWN0aW9uKiBjb25uZWN0aW9uKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlZ2lzdGVyU2hhcmVkV29ya2VyVGhyZWFkKFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4m
Jik7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPFNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyPjsKKworICAgIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyKCkg
PSBkZWZhdWx0OworCisgICAgc3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+IG1fY29ubmVjdGlv
bjsKKyAgICBIYXNoTWFwPFNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFJlZjxTaGFyZWRXb3JrZXJU
aHJlYWRQcm94eT4+IG1fd29ya2VyTWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRX
b3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250
ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcAppbmRleCA5YmQ5NzgzZDdhN2UuLjFlZGY3
MzRmZjI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4
dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsOTQgKzI4LDcy
IEBACiAKICNpbmNsdWRlICJDYWNoZVN0b3JhZ2VQcm92aWRlci5oIgogI2luY2x1ZGUgIkVycm9y
RXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgi
CisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUg
IkxpYldlYlJUQ1Byb3ZpZGVyLmgiCisjaW5jbHVkZSAiTG9hZGVyU3RyYXRlZ3kuaCIKICNpbmNs
dWRlICJNZXNzYWdlRXZlbnQuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJSVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29y
a2VyLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCIKICNpbmNsdWRl
ICJTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlclRocmVh
ZC5oIgorI2luY2x1ZGUgIldvcmtlckZldGNoUmVzdWx0LmgiCisjaW5jbHVkZSAiV29ya2VyVGhy
ZWFkLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllcnNGYWN0b3J5Lmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OlNoYXJlZFdv
cmtlclRocmVhZFByb3h5KFNoYXJlZFdvcmtlciYgc2hhcmVkV29ya2VyKQotICAgIDogbV9zaGFy
ZWRXb3JrZXIoc2hhcmVkV29ya2VyKQotICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KHNo
YXJlZFdvcmtlci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgLCBtX2lkZW50aWZpZXJG
b3JJbnNwZWN0b3Ioc2hhcmVkV29ya2VyLmlkZW50aWZpZXJGb3JJbnNwZWN0b3IoKSkKK3N0YXRp
YyBIYXNoU2V0PFNoYXJlZFdvcmtlclRocmVhZFByb3h5Kj4mIGFsbFNoYXJlZFdvcmtlclRocmVh
ZFByb3hpZXMoKQogeworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFNoYXJlZFdv
cmtlclRocmVhZFByb3h5Kj4+IHNldDsKKyAgICByZXR1cm4gc2V0OwogfQogCi12b2lkIFNoYXJl
ZFdvcmtlclRocmVhZFByb3h5OjpzdGFydFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgc2Ny
aXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBib29s
IGlzT25saW5lLCBjb25zdCBTY3JpcHRCdWZmZXImIHNjcmlwdEJ1ZmZlciwgY29uc3QgQ29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnMsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9s
aWN5LCBjb25zdCBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5JiBjcm9zc09yaWdpbkVtYmVkZGVy
UG9saWN5LCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIFJlZmVycmVyUG9saWN5IHJlZmVycmVy
UG9saWN5LCBXb3JrZXJUeXBlIHdvcmtlclR5cGUsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzIGNy
ZWRlbnRpYWxzLCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MpCitzdGF0aWMgV29ya2Vy
UGFyYW1ldGVycyBnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMoY29uc3QgVVJMJiBzY3JpcHRVUkws
IGNvbnN0IFdvcmtlckZldGNoUmVzdWx0JiB3b3JrZXJGZXRjaFJlc3VsdCwgV29ya2VyT3B0aW9u
cyYmIHdvcmtlck9wdGlvbnMsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBEb2N1bWVudCYgZG9j
dW1lbnQpCiB7Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgYXV0byBwYXJhbWV0ZXJzID0gV29ya2VyUGFyYW1ldGVycyB7CisgICAgcmV0dXJuIFdv
cmtlclBhcmFtZXRlcnMgewogICAgICAgICBzY3JpcHRVUkwsCi0gICAgICAgIG5hbWUsCi0gICAg
ICAgIG1faWRlbnRpZmllckZvckluc3BlY3RvciwKKyAgICAgICAgd29ya2VyT3B0aW9ucy5uYW1l
LAorICAgICAgICAic2hhcmVkd29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9y
eTo6Y3JlYXRlSWRlbnRpZmllcigpLAogICAgICAgICB1c2VyQWdlbnQsCi0gICAgICAgIGlzT25s
aW5lLAotICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsCi0gICAg
ICAgIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwKLSAgICAgICAg
Y3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwKLSAgICAgICAgdGltZU9yaWdpbiwKLSAgICAgICAg
cmVmZXJyZXJQb2xpY3ksCi0gICAgICAgIHdvcmtlclR5cGUsCi0gICAgICAgIGNyZWRlbnRpYWxz
LAotICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNldHRpbmdzVmFsdWVzKCkKKyAg
ICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmlzT25MaW5lKCks
CisgICAgICAgIHdvcmtlckZldGNoUmVzdWx0LmNvbnRlbnRTZWN1cml0eVBvbGljeSwKKyAgICAg
ICAgZmFsc2UsCisgICAgICAgIHdvcmtlckZldGNoUmVzdWx0LmNyb3NzT3JpZ2luRW1iZWRkZXJQ
b2xpY3ksCisgICAgICAgIE1vbm90b25pY1RpbWU6Om5vdygpLAorICAgICAgICBwYXJzZVJlZmVy
cmVyUG9saWN5KHdvcmtlckZldGNoUmVzdWx0LnJlZmVycmVyUG9saWN5LCBSZWZlcnJlclBvbGlj
eVNvdXJjZTo6SFRUUEhlYWRlcikudmFsdWVfb3IoUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5n
KSwKKyAgICAgICAgd29ya2VyT3B0aW9ucy50eXBlLAorICAgICAgICB3b3JrZXJPcHRpb25zLmNy
ZWRlbnRpYWxzLAorICAgICAgICBkb2N1bWVudC5zZXR0aW5nc1ZhbHVlcygpCiAgICAgfTsKLQot
ICAgIGlmICghbV93b3JrZXJUaHJlYWQpIHsKLSAgICAgICAgbV93b3JrZXJUaHJlYWQgPSBTaGFy
ZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZShTaGFyZWRXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
LCBwYXJhbWV0ZXJzLCBzY3JpcHRCdWZmZXIsICp0aGlzLCAqdGhpcywgKnRoaXMsIFdvcmtlclRo
cmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnRvcE9yaWdp
bigpLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlkYkNvbm5lY3Rpb25Qcm94eSgpLCBtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNvY2tldFByb3ZpZGVyKCksIHJ1bnRpbWVGbGFncyk7Ci0g
ICAgICAgIG1fd29ya2VyVGhyZWFkLT5zdGFydCgpOwotICAgIH0KLX0KLQotdm9pZCBTaGFyZWRX
b3JrZXJUaHJlYWRQcm94eTo6dGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKQotewotICAgIGlm
IChtX2Fza2VkVG9UZXJtaW5hdGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fYXNrZWRUb1Rl
cm1pbmF0ZSA9IHRydWU7Ci0gICAgaWYgKG1fd29ya2VyVGhyZWFkKQotICAgICAgICBtX3dvcmtl
clRocmVhZC0+c3RvcChudWxscHRyKTsKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
JiYgbWVzc2FnZSkKK1NoYXJlZFdvcmtlclRocmVhZFByb3h5OjpTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eShVbmlxdWVSZWY8UGFnZT4mJiBwYWdlLCBTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJl
ZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IENsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBjb25z
dCBVUkwmIHNjcmlwdFVSTCwgV29ya2VyRmV0Y2hSZXN1bHQmJiB3b3JrZXJGZXRjaFJlc3VsdCwg
V29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBD
YWNoZVN0b3JhZ2VQcm92aWRlciYgY2FjaGVTdG9yYWdlUHJvdmlkZXIpCisgICAgOiBtX3BhZ2Uo
V1RGTW92ZShwYWdlKSkKKyAgICAsIG1fZG9jdW1lbnQoKm1fcGFnZS0+bWFpbkZyYW1lKCkuZG9j
dW1lbnQoKSkKKyAgICAsIG1fd29ya2VyVGhyZWFkKFNoYXJlZFdvcmtlclRocmVhZDo6Y3JlYXRl
KHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGdlbmVyYXRlV29ya2VyUGFyYW1ldGVycyhzY3JpcHRV
UkwsIHdvcmtlckZldGNoUmVzdWx0LCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMpLCB1c2VyQWdlbnQs
IG1fZG9jdW1lbnQpLCBXVEZNb3ZlKHdvcmtlckZldGNoUmVzdWx0LnNjcmlwdCksICp0aGlzLCAq
dGhpcywgKnRoaXMsIFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBjbGllbnRPcmlnaW4u
dG9wT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCksIG1fZG9jdW1lbnQtPmlkYkNvbm5lY3Rpb25Qcm94
eSgpLCBtX2RvY3VtZW50LT5zb2NrZXRQcm92aWRlcigpLCBKU0M6OlJ1bnRpbWVGbGFnczo6Y3Jl
YXRlQWxsRW5hYmxlZCgpKSkKKyAgICAsIG1fY2FjaGVTdG9yYWdlUHJvdmlkZXIoY2FjaGVTdG9y
YWdlUHJvdmlkZXIpCiB7Ci0gICAgLy8gRklYTUU6IFNoYXJlZFdvcmtlciBkb2Vzbid0IGhhdmUg
cG9zdE1lc3NhZ2UsIHNvIHRoaXMgbWlnaHQgbm90IGJlIG5lY2Vzc2FyeS4KLSAgICBwb3N0VGFz
a1RvV29ya2VyR2xvYmFsU2NvcGUoW21lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpXShhdXRvJiBz
Y3JpcHRDb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byYgY29udGV4dCA9IGRvd25jYXN0
PFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRDb250ZXh0KTsKLSAgICAgICAgYXV0byBw
b3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKHNjcmlwdENvbnRleHQsIFdURk1vdmUo
bWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRzKSk7Ci0gICAgICAgIGNvbnRleHQuZGlzcGF0Y2hFdmVu
dChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgbWVzc2FnZS5tZXNzYWdlLnJl
bGVhc2VOb25OdWxsKCkpKTsKLSAgICB9KTsKLX0KKyAgICBBU1NFUlQoIWFsbFNoYXJlZFdvcmtl
clRocmVhZFByb3hpZXMoKS5jb250YWlucyh0aGlzKSk7CisgICAgYWxsU2hhcmVkV29ya2VyVGhy
ZWFkUHJveGllcygpLmFkZCh0aGlzKTsKIAotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6
cG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpPiYmIHRhc2spCi17Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soV1RGTW92
ZSh0YXNrKSk7Ci19Ci0KLWJvb2wgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Omhhc1BlbmRpbmdB
Y3Rpdml0eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faGFzUGVuZGluZ0FjdGl2aXR5ICYmICFt
X2Fza2VkVG9UZXJtaW5hdGU7CisgICAgc3RhdGljIGJvb2wgYWRkZWRMaXN0ZW5lcjsKKyAgICBp
ZiAoIWFkZGVkTGlzdGVuZXIpIHsKKyAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRl
clN0cmF0ZWd5KCktPmFkZE9ubGluZVN0YXRlQ2hhbmdlTGlzdGVuZXIoJm5ldHdvcmtTdGF0ZUNo
YW5nZWQpOworICAgICAgICBhZGRlZExpc3RlbmVyID0gdHJ1ZTsKKyAgICB9CiB9CiAKLXZvaWQg
U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Ondvcmtlck9iamVjdERlc3Ryb3llZCgpCitTaGFyZWRX
b3JrZXJUaHJlYWRQcm94eTo6flNoYXJlZFdvcmtlclRocmVhZFByb3h5KCkKIHsKLSAgICBtX3No
YXJlZFdvcmtlciA9IG51bGxwdHI7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0
VGFzayhbdGhpc10gKGF1dG8mKSB7Ci0gICAgICAgIG1fbWF5QmVEZXN0cm95ZWQgPSB0cnVlOwot
ICAgICAgICBpZiAobV93b3JrZXJUaHJlYWQpCi0gICAgICAgICAgICB0ZXJtaW5hdGVXb3JrZXJH
bG9iYWxTY29wZSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB3b3JrZXJHbG9iYWxTY29w
ZURlc3Ryb3llZEludGVybmFsKCk7Ci0gICAgfSk7CisgICAgQVNTRVJUKGFsbFNoYXJlZFdvcmtl
clRocmVhZFByb3hpZXMoKS5jb250YWlucyh0aGlzKSk7CisgICAgYWxsU2hhcmVkV29ya2VyVGhy
ZWFkUHJveGllcygpLnJlbW92ZSh0aGlzKTsKIH0KIAogU2hhcmVkV29ya2VySWRlbnRpZmllciBT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6aWRlbnRpZmllcigpIGNvbnN0CkBAIC0xMjUsODggKzEw
Myw1MCBAQCBTaGFyZWRXb3JrZXJJZGVudGlmaWVyIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpp
ZGVudGlmaWVyKCkgY29uc3QKIAogdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6bm90aWZ5
TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpCiB7Ci0gICAgaWYgKG1fYXNrZWRUb1Rl
cm1pbmF0ZSkKKyAgICBpZiAobV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoIW1fd29ya2VyVGhyZWFkKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFtpc09ubGluZV0gKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICBwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKFtpc09ubGluZV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIHsKICAgICAgICAgYXV0byYgZ2xvYmFsU2NvcGUgPSBkb3duY2FzdDxXb3JrZXJHbG9i
YWxTY29wZT4oY29udGV4dCk7CiAgICAgICAgIGdsb2JhbFNjb3BlLnNldElzT25saW5lKGlzT25s
aW5lKTsKLSAgICAgICAgZ2xvYmFsU2NvcGUuZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGlz
T25saW5lID8gZXZlbnROYW1lcygpLm9ubGluZUV2ZW50IDogZXZlbnROYW1lcygpLm9mZmxpbmVF
dmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7Ci0g
ICAgfSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnN1c3BlbmRGb3JCYWNr
Rm9yd2FyZENhY2hlKCkKLXsKLQotfQotCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpy
ZXN1bWVGb3JCYWNrRm9yd2FyZENhY2hlKCkKLXsKLQorICAgICAgICBnbG9iYWxTY29wZS5ldmVu
dExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbZ2xvYmFsU2Nv
cGUgPSBSZWYgeyBnbG9iYWxTY29wZSB9LCBpc09ubGluZV0geworICAgICAgICAgICAgZ2xvYmFs
U2NvcGUtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShpc09ubGluZSA/IGV2ZW50TmFtZXMo
KS5vbmxpbmVFdmVudCA6IGV2ZW50TmFtZXMoKS5vZmZsaW5lRXZlbnQsIEV2ZW50OjpDYW5CdWJi
bGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOworICAgICAgICB9KTsKKyAgICB9LCBX
b3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKIH0KIAogdm9pZCBTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eTo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkwpCiB7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhp
cywgZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlLmlzb2xhdGVkQ29weSgpLCBzb3VyY2VVUkwg
PSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCksIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcl0gKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0gICAgICAgIGlmICghbV9zaGFyZWRXb3JrZXIpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gV2UgZG9uJ3QgYm90aGVyIGNoZWNraW5n
IHRoZSBhc2tlZFRvVGVybWluYXRlKCkgZmxhZyBoZXJlLCBiZWNhdXNlIGV4Y2VwdGlvbnMgc2hv
dWxkICphbHdheXMqIGJlIHJlcG9ydGVkIGV2ZW4gaWYgdGhlIHRocmVhZCBpcyB0ZXJtaW5hdGVk
LgotICAgICAgICAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgZGlmZmVyZW50IHRoYW4gdGhlIGJl
aGF2aW9yIGluIE1lc3NhZ2VXb3JrZXJUYXNrLCBiZWNhdXNlIHRlcm1pbmF0ZWQgd29ya2VycyBu
byBsb25nZXIgZGVsaXZlciBtZXNzYWdlcyAoc2VjdGlvbiA0LjYgb2YgdGhlIFdlYldvcmtlciBz
cGVjKSwgYnV0IHRoZXkgZG8gcmVwb3J0IGV4Y2VwdGlvbnMuCi0gICAgICAgIEFjdGl2ZURPTU9i
amVjdDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCptX3NoYXJlZFdvcmtlciwgVGFza1NvdXJj
ZTo6RE9NTWFuaXB1bGF0aW9uLCBFcnJvckV2ZW50OjpjcmVhdGUoZXJyb3JNZXNzYWdlLCBzb3Vy
Y2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgeyB9KSk7Ci0gICAgfSk7Ci19Ci0KLXZv
aWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Ondvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkKCkK
LXsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzXSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpIHsKLSAgICAgICAgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJ
bnRlcm5hbCgpOwotICAgIH0pOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpw
b3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpCi17Ci0K
LX0KLQotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y29uZmlybU1lc3NhZ2VGcm9tV29y
a2VyT2JqZWN0KGJvb2wpCi17Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnJl
cG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKLXsKLSAgICBtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzLCBoYXNQZW5kaW5nQWN0aXZpdHld
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewotICAgICAgICBtX2hhc1BlbmRpbmdBY3Rpdml0
eSA9IGhhc1BlbmRpbmdBY3Rpdml0eTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyID0gbV93b3JrZXJUaHJlYWQtPmlkZW50aWZpZXIoKSwgZXJyb3JNZXNzYWdl
ID0gZXJyb3JNZXNzYWdlLmlzb2xhdGVkQ29weSgpLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IHNvdXJjZVVSTCA9IHNvdXJjZVVSTC5pc29sYXRlZENvcHkoKV0geworICAgICAgICBpZiAoYXV0
byogY29ubmVjdGlvbiA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5j
b25uZWN0aW9uKCkpCisgICAgICAgICAgICBjb25uZWN0aW9uLT5wb3N0RXhjZXB0aW9uVG9Xb3Jr
ZXJPYmplY3Qoc2hhcmVkV29ya2VySWRlbnRpZmllciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCk7CiAgICAgfSk7CiB9CiAKIFJlZlB0cjxDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uPiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRv
JiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
KTsKLSAgICByZXR1cm4gZG9jdW1lbnQucGFnZSgpLT5jYWNoZVN0b3JhZ2VQcm92aWRlcigpLmNy
ZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKTsKKyAgICBpZiAoIW1fY2FjaGVTdG9yYWdlQ29u
bmVjdGlvbikKKyAgICAgICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uID0gbV9jYWNoZVN0b3Jh
Z2VQcm92aWRlci5jcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCk7CisgICAgcmV0dXJuIG1f
Y2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKIH0KIAogUmVmUHRyPFJUQ0RhdGFDaGFubmVsUmVtb3Rl
SGFuZGxlckNvbm5lY3Rpb24+IFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpjcmVhdGVSVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIGlmICghZG9jdW1lbnQucGFnZSgpKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gZG9jdW1lbnQucGFnZSgpLT5saWJXZWJSVENQcm92
aWRlcigpLmNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24oKTsKKyAg
ICByZXR1cm4gbV9wYWdlLT5saWJXZWJSVENQcm92aWRlcigpLmNyZWF0ZVJUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlckNvbm5lY3Rpb24oKTsKIH0KIAogdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eTo6cG9zdFRhc2tUb0xvYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFz
aykKIHsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFdURk1vdmUodGFz
aykpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Rhc2sgPSBXVEZNb3ZlKHRhc2spLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHRhc2sucGVyZm9y
bVRhc2socHJvdGVjdGVkVGhpcy0+bV9kb2N1bWVudC5nZXQoKSk7CisgICAgfSk7CiB9CiAKIGJv
b2wgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2ssIGNvbnN0
IFN0cmluZyYgbW9kZSkKIHsKLSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQorICAgIGlmICht
X2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFdURk1vdmUodGFzayks
IG1vZGUpOwpAQCAtMjIzLDE2ICsxNjMsMTAgQEAgdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3BlY3Rvcihib29sKQogCiB9CiAK
LXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Ondvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVk
SW50ZXJuYWwoKQordm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6bmV0d29ya1N0YXRlQ2hh
bmdlZChib29sIGlzT25MaW5lKQogewotICAgIC8vIFRoaXMgaXMgYWx3YXlzIHRoZSBsYXN0IHRh
c2sgdG8gYmUgcGVyZm9ybWVkLCBzbyB0aGUgcHJveHkgaXMgbm90IG5lZWRlZCBmb3IgY29tbXVu
aWNhdGlvbgotICAgIC8vIGluIGVpdGhlciBzaWRlIGFueSBtb3JlLiBIb3dldmVyLCB0aGUgV29y
a2VyIG9iamVjdCBtYXkgc3RpbGwgZXhpc3QsIGFuZCBpdCBhc3N1bWVzIHRoYXQgdGhlIHByb3h5
IGV4aXN0cywgdG9vLgotICAgIG1fYXNrZWRUb1Rlcm1pbmF0ZSA9IHRydWU7Ci0gICAgbV93b3Jr
ZXJUaHJlYWQgPSBudWxscHRyOwotCi0gICAgLy8gVGhpcyBiYWxhbmNlcyB0aGUgb3JpZ2luYWwg
cmVmIGluIGNvbnN0cnVjdGlvbi4KLSAgICBpZiAobV9tYXlCZURlc3Ryb3llZCkKLSAgICAgICAg
ZGVyZWYoKTsKKyAgICBmb3IgKGF1dG8qIHByb3h5IDogYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJv
eGllcygpKQorICAgICAgICBwcm94eS0+bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGlzT25MaW5l
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94
eS5oCmluZGV4IDRlOTJlNDU2MTcxYy4uMzM2NDI0MGFiYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJU
aHJlYWRQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUgIlNoYXJlZFdvcmtlcklkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJXb3JrZXJEZWJ1Z2dlclByb3h5LmgiCi0jaW5jbHVkZSAiV29y
a2VyR2xvYmFsU2NvcGVQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCiAj
aW5jbHVkZSAiV29ya2VyT2JqZWN0UHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJPcHRpb25zLmgi
CkBAIC0zNSw1MCArMzQsNTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDYWNo
ZVN0b3JhZ2VQcm92aWRlcjsKK2NsYXNzIFBhZ2U7CiBjbGFzcyBTaGFyZWRXb3JrZXI7CiBjbGFz
cyBTaGFyZWRXb3JrZXJUaHJlYWQ7CiAKLWNsYXNzIFNoYXJlZFdvcmtlclRocmVhZFByb3h5IGZp
bmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZFdvcmtlclRocmVhZFByb3h5
PiwgcHVibGljIFdvcmtlckdsb2JhbFNjb3BlUHJveHksIHB1YmxpYyBXb3JrZXJPYmplY3RQcm94
eSwgcHVibGljIFdvcmtlckxvYWRlclByb3h5LCBwdWJsaWMgV29ya2VyRGVidWdnZXJQcm94eSB7
CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0OworCitjbGFz
cyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4sIHB1YmxpYyBXb3JrZXJPYmplY3RQcm94eSwg
cHVibGljIFdvcmtlckxvYWRlclByb3h5LCBwdWJsaWMgV29ya2VyRGVidWdnZXJQcm94eSB7CiBw
dWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFNoYXJlZFdvcmtl
clRocmVhZFByb3h5JiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpIHsgcmV0dXJuICpuZXcgU2hhcmVk
V29ya2VyVGhyZWFkUHJveHkoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsgfQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBSZWY8U2hhcmVkV29ya2VyVGhyZWFkUHJv
eHk+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRX
b3JrZXJUaHJlYWRQcm94eShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsgfQorICAgIFdF
QkNPUkVfRVhQT1JUIH5TaGFyZWRXb3JrZXJUaHJlYWRQcm94eSgpOwogCiAgICAgU2hhcmVkV29y
a2VySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Q7Ci0gICAgU2hhcmVkV29ya2VyVGhyZWFk
KiB0aHJlYWQoKSB7IHJldHVybiBtX3dvcmtlclRocmVhZC5nZXQoKTsgfQorICAgIFNoYXJlZFdv
cmtlclRocmVhZCYgdGhyZWFkKCkgeyByZXR1cm4gbV93b3JrZXJUaHJlYWQ7IH0KIAotICAgIHZv
aWQgc3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgY29uc3Qg
U2NyaXB0QnVmZmVyJiBzb3VyY2VDb2RlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnMmLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBv
bGljeSwgY29uc3QgQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSYsIE1vbm90b25pY1RpbWUgdGlt
ZU9yaWdpbiwgUmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIEZldGNoUmVxdWVzdENyZWRlbnRp
YWxzLCBKU0M6OlJ1bnRpbWVGbGFncykgZmluYWw7Ci0gICAgdm9pZCB3b3JrZXJPYmplY3REZXN0
cm95ZWQoKSBmaW5hbDsKLSAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFs
OwotICAgIHZvaWQgdGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKSBmaW5hbDsKKyAgICBib29s
IGlzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzVGVybWluYXRp
bmdPclRlcm1pbmF0ZWQ7IH0KKyAgICB2b2lkIHNldEFzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQo
KSB7IG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCA9IHRydWU7IH0KIAogcHJpdmF0ZToKLSAg
ICBleHBsaWNpdCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShTaGFyZWRXb3JrZXImKTsKLQotICAg
IHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpOworICAgIFdFQkNPUkVf
RVhQT1JUIFNoYXJlZFdvcmtlclRocmVhZFByb3h5KFVuaXF1ZVJlZjxQYWdlPiYmLCBTaGFyZWRX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4mLCBjb25zdCBVUkwmIHNjcmlwdFVS
TCwgV29ya2VyRmV0Y2hSZXN1bHQmJiwgV29ya2VyT3B0aW9ucyYmLCBjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImKTsKIAotICAgIHZvaWQgcG9zdE1lc3NhZ2VU
b1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpIGZpbmFsOwotICAg
IHZvaWQgcG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1bmN0aW9uPHZvaWQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpPiYmKSBmaW5hbDsKLSAgICB2b2lkIG5vdGlmeU5ldHdvcmtTdGF0ZUNo
YW5nZShib29sIGlzT25saW5lKSBmaW5hbDsKLSAgICB2b2lkIHN1c3BlbmRGb3JCYWNrRm9yd2Fy
ZENhY2hlKCkgZmluYWw7Ci0gICAgdm9pZCByZXN1bWVGb3JCYWNrRm9yd2FyZENhY2hlKCkgZmlu
YWw7CisgICAgLy8gV29ya2VyT2JqZWN0UHJveHkuCiAgICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9X
b3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkgZmluYWw7Ci0gICAgdm9p
ZCB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgpIGZpbmFsOwotICAgIHZvaWQgcG9zdE1lc3Nh
Z2VUb1dvcmtlck9iamVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKSBmaW5hbDsKLSAgICB2
b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sIGhhc1BlbmRpbmdBY3Rpdml0
eSkgZmluYWw7Ci0gICAgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCBoYXNQZW5kaW5n
QWN0aXZpdHkpIGZpbmFsOworICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0cyYmKSBmaW5hbCB7IH0KKyAgICB2b2lkIHdvcmtlckdsb2JhbFNj
b3BlRGVzdHJveWVkKCkgZmluYWwgeyB9CisgICAgdm9pZCBjb25maXJtTWVzc2FnZUZyb21Xb3Jr
ZXJPYmplY3QoYm9vbCkgZmluYWwgeyB9CisgICAgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZpdHko
Ym9vbCkgZmluYWwgeyB9CisKKyAgICAvLyBXb3JrZXJMb2FkZXJQcm94eS4KICAgICBSZWZQdHI8
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpIGZp
bmFsOwogICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uPiBj
cmVhdGVSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCkgZmluYWw7CiAgICAg
dm9pZCBwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJikgZmlu
YWw7CiAgICAgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiwgY29uc3QgU3RyaW5nJiBtb2RlKSBmaW5h
bDsKKworICAgIC8vIFdvcmtlckRlYnVnZ2VyUHJveHkuCiAgICAgdm9pZCBwb3N0TWVzc2FnZVRv
RGVidWdnZXIoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUNhY2hp
bmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yKGJvb2wpIGZpbmFsOwogCi0gICAgV2Vha1B0cjxTaGFy
ZWRXb3JrZXI+IG1fc2hhcmVkV29ya2VyOwotICAgIFJlZlB0cjxTaGFyZWRXb3JrZXJUaHJlYWQ+
IG1fd29ya2VyVGhyZWFkOwotICAgIGNvbnN0IFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0
PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0gICAgY29uc3QgU3RyaW5nIG1faWRlbnRpZmll
ckZvckluc3BlY3RvcjsKLSAgICBib29sIG1fYXNrZWRUb1Rlcm1pbmF0ZSB7IGZhbHNlIH07Ci0g
ICAgYm9vbCBtX2hhc1BlbmRpbmdBY3Rpdml0eSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX21heUJl
RGVzdHJveWVkIHsgZmFsc2UgfTsKKyAgICBzdGF0aWMgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2Vk
KGJvb2wgaXNPbkxpbmUpOworICAgIHZvaWQgbm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wg
aXNPbmxpbmUpOworCisgICAgVW5pcXVlUmVmPFBhZ2U+IG1fcGFnZTsKKyAgICBSZWY8RG9jdW1l
bnQ+IG1fZG9jdW1lbnQ7CisgICAgUmVmPFNoYXJlZFdvcmtlclRocmVhZD4gbV93b3JrZXJUaHJl
YWQ7CisgICAgQ2FjaGVTdG9yYWdlUHJvdmlkZXImIG1fY2FjaGVTdG9yYWdlUHJvdmlkZXI7Cisg
ICAgUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjsKKyAgICBib29sIG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCB7IGZhbHNlIH07CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCA3NTZkYTg4YjQ1
ZjcuLjI5ZjRjNzgxODE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0yOCw2ICsyOCw3IEBAIHNl
dChXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQ
cm9jZXNzL05vdGlmaWNhdGlvbnMiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlciIKKyAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9TaGFy
ZWRXb3JrZXIiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZSIK
ICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9jYWNoZSIKICAgICAiJHtXRUJLSVRf
RElSfS9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlIgpAQCAtMjAyLDYgKzIwMyw5IEBAIHNldChXZWJL
aXRfTUVTU0FHRVNfSU5fRklMRVMKICAgICBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbgogICAgIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCiAKKyAgICBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRX
b3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbgorICAgIE5ldHdvcmtQcm9jZXNz
L1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCisK
ICAgICBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0CiAKICAgICBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uCkBAIC0zMDUs
NiArMzA5LDggQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogCiAgICAgV2ViUHJvY2Vz
cy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcgogCisg
ICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbgorICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uCiAgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbgogICAgIFdl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggNGM2NjIyMGNm
MTIyLi43MjI5YzFiOTg3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKQEAgLTkxLDYgKzkxLDggQEAgJChQUk9KRUNUX0RJUikvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLm1lc3NhZ2VzLmkK
ICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ckZldGNoVGFzay5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRX
b3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9K
RUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL21hYy9jb20uYXBwbGUu
V2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluCkBAIC0yMTcsNiArMjE5LDggQEAgJChQUk9KRUNU
X0RJUikvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9XZWJQcm9jZXNzL1NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFT
b3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
KyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
ci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIp
L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3QKaW5kZXggZTNiNTU4NDBhZTFlLi5hODYzMjgxNDdiNTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtNjA3LDYgKzYwNywxOCBA
QCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXU2VydmVy
Q29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcwogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdC9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2
ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVz
c2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVy
LmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdl
UmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
L1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlcy5oCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVy
LmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVz
c2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZl
ci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNvY2tldENoYW5uZWxNZXNzYWdlUmVjZWl2ZXIuY3Bw
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNvY2tldENo
YW5uZWxNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0L1dlYlNvY2tldENoYW5uZWxNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy5tYWtlCmluZGV4IDdhZDQ5ZTM3MzVmNC4uMzUxZmZhZTBhNTg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy5tYWtlCkBAIC0xMzMsNiArMTMzLDggQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJ
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrIFwK
IAlOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2sgXAog
CU5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uIFwKKwlOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbiBcCisJTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gXAogCU5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2Nr
ZXRTdHJlYW0gXAogCU5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzIFwKIAlOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIgXApAQCAtMjI1LDYgKzIyNyw4IEBAIE1FU1NBR0Vf
UkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRp
b25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlciBcCisJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBcCisJV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q2xpZW50Q29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9XZWJQcm9jZXNzIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAKaW5kZXggYTM0Zjc5YmRlM2UwLi5jN2IxN2ZkNzA3ODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC02Niw2ICs2NiwxMSBAQAogI2luY2x1ZGUgIldlYlNX
U2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIKKyNpbmNsdWRl
ICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudFN0b3JhZ2VB
Y2Nlc3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBDb29raWVBY2NlcHRQb2xpY3kuaD4KQEAg
LTEzMiw2ICsxMzcsNyBAQCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmIG5ldAogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKICAgICBlc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKTsKICNlbmRpZgor
ICAgIGVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oKTsKIH0KIAogTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcygp
CkBAIC0xNjYsNiArMTcyLDcgQEAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
ICAgIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgorICAgIHVucmVnaXN0ZXJTaGFy
ZWRXb3JrZXJDb25uZWN0aW9uKCk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6Omhhc1VwbG9hZFN0YXRlQ2hhbmdlZChib29sIGhhc1VwbG9hZCkKQEAgLTI3NSw2ICsy
ODIsMTcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW8KICAgICB9CiAjZW5kaWYKIAorICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGlm
IChtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAgICAgICBtX3NoYXJlZFdvcmtlckNv
bm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGlmIChtX3NoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uKQorICAgICAgICAgICAgbV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbi0+
ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKICAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRv
clByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpCiAgICAgICAgIHJldHVybiBwYXltZW50Q29v
cmRpbmF0b3IoKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKQEAgLTM5
OCw5ICs0MTYsOCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9z
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQogICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7Ci0jZWxzZQotICAgIFVO
VVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICNlbmRpZgorICAgIG1fc2hhcmVkV29ya2VyQ29udGV4
dENvbm5lY3Rpb24gPSBudWxscHRyOwogCiAgICAgLy8gUHJvdGVjdCBvdXJzZWxmIGFzIHdlIG1p
Z2h0IGJlIG90aGVyd2lzZSBiZSBkZWxldGVkIGR1cmluZyB0aGlzIGZ1bmN0aW9uLgogICAgIFJl
ZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gcHJvdGVjdG9yKCp0aGlzKTsKQEAgLTQ0
MSw2ICs0NTgsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9z
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogICAgIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgorICAgIHVucmVnaXN0ZXJT
aGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9V
SSkKICAgICBtX3BheW1lbnRDb29yZGluYXRvciA9IG51bGxwdHI7CkBAIC0xMTg2LDYgKzEyMDQs
NjEgQEAgc2l6ZV90IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpmaW5kTmV0d29ya0Fj
dGl2aXR5VHJhY2tlcihXZWJDb3JlOjpSZXNvdXIKICAgICAgICAgcmV0dXJuIGl0ZW0ucmVzb3Vy
Y2VJRCA9PSByZXNvdXJjZUlEOwogICAgIH0pOwogfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJh
YmxlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hT
aGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbjoiKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0
d29ya1Nlc3Npb24oKTsKKyAgICBpZiAoYXV0byogc3dTZXJ2ZXIgPSBzZXNzaW9uID8gc2Vzc2lv
bi0+c2hhcmVkV29ya2VyU2VydmVyKCkgOiBudWxscHRyKQorICAgICAgICBtX3NoYXJlZFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uPigqdGhpcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksICpzd1Nl
cnZlcik7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigp
Cit7CisgICAgaWYgKG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7CisgICAgaWYgKCFzZXNzaW9u
KQorICAgICAgICByZXR1cm47CisKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdv
cmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Iik7CisKKyAgICBh
dXRvJiBzZXJ2ZXIgPSBzZXNzaW9uLT5lbnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKTsKKyAgICBh
dXRvIGNvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b24+KG1fbmV0d29ya1Byb2Nlc3MsIHNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBtX3dlYlBy
b2Nlc3NJZGVudGlmaWVyKTsKKworICAgIG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbiA9ICpjb25u
ZWN0aW9uOworICAgIHNlcnZlci5hZGRDb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpOwor
fQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbG9zZVNoYXJlZFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJl
ZFdvcmtlciwgImNsb3NlU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb246Iik7CisgICAgbV9z
aGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7Cit9CisKK3ZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9u
KCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgInVucmVnaXN0
ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uOiIpOworICAgIGlmIChtX3NoYXJlZFdvcmtlckNvbm5l
Y3Rpb24pCisgICAgICAgIG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbi0+c2VydmVyKCkucmVtb3Zl
Q29ubmVjdGlvbihtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24tPndlYlByb2Nlc3NJZGVudGlmaWVy
KCkpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpCit7CisgICAgQ09O
TkVDVElPTl9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJzaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZDoiKTsKKyAgICBtX25ldHdvcmtQcm9jZXNz
LT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkIHsgd2Vi
UHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKKworICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENv
bm5lY3Rpb24gPSBudWxscHRyOworfQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
KiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2hhcmVkV29ya2VyQ29ubmVjdGlvbigp
Cit7CisgICAgaWYgKCFtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAgIGVzdGFibGlz
aFNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oKTsKKyAgICByZXR1cm4gbV9zaGFyZWRXb3Jr
ZXJDb25uZWN0aW9uLmdldCgpOworfQogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
IHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJTV0Nvbm5lY3Rp
b24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGFiOTY2NTdkMGRmNC4uZDBhYTRlZjc0
NTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC05Miw2ICs5Miw4IEBAIGNsYXNzIE5l
dHdvcmtTb2NrZXRTdHJlYW07CiBjbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOwogY2xhc3Mg
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwogY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjsKK2NsYXNzIFdlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CiAKIG5hbWVzcGFjZSBOZXR3b3Jr
Q2FjaGUgewogc3RydWN0IERhdGFLZXk7CkBAIC0xODUsNiArMTg3LDkgQEAgcHVibGljOgogICAg
IFdlYlNXU2VydmVyQ29ubmVjdGlvbiogc3dDb25uZWN0aW9uKCk7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IGNyZWF0ZUZldGNoVGFzayhOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgorICAg
IHZvaWQgc2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVk
ZWQoKTsKKworICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24qIHNoYXJlZFdvcmtl
ckNvbm5lY3Rpb24oKTsKIAogICAgIE5ldHdvcmtTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0
cnkoKSB7IHJldHVybiBtX3NjaGVtZVJlZ2lzdHJ5LmdldCgpOyB9CiAKQEAgLTI1Myw2ICsyNTgs
OSBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlU29ja2V0Q2hhbm5lbChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBXZWJDb3JlOjpXZWJT
b2NrZXRJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mKTsKICAgICB2b2lkIHVwZGF0ZVF1b3RhQmFzZWRPblNwYWNlVXNhZ2VGb3JU
ZXN0aW5nKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwogCisgICAgdm9pZCBlc3RhYmxp
c2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCk7CisgICAgdm9pZCB1bnJlZ2lzdGVyU2hh
cmVkV29ya2VyQ29ubmVjdGlvbigpOworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IHZvaWQgZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKCk7CiAgICAgdm9pZCBlc3RhYmxpc2hT
V0NvbnRleHRDb25uZWN0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKQEAgLTI2MCw2ICsyNjgsOSBAQCBwcml2YXRlOgogICAgIHZvaWQg
dW5yZWdpc3RlclNXQ29ubmVjdGlvbigpOwogI2VuZGlmCiAKKyAgICB2b2lkIGVzdGFibGlzaFNo
YXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCBjbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKCk7CisKICAgICB2b2lk
IGNyZWF0ZVJUQ1Byb3ZpZGVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjaWYgRU5B
QkxFKFdFQl9SVEMpCiAgICAgdm9pZCBjb25uZWN0VG9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJj
ZShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgc291cmNlLCBXZWJDb3JlOjpSVENE
YXRhQ2hhbm5lbElkZW50aWZpZXIgaGFuZGxlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6
Om9wdGlvbmFsPGJvb2w+KT4mJik7CkBAIC00MDQsNiArNDE1LDggQEAgcHJpdmF0ZToKICAgICBX
ZWFrUHRyPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4gbV9zd0Nvbm5lY3Rpb247CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4gbV9zd0NvbnRleHRDb25u
ZWN0aW9uOwogI2VuZGlmCisgICAgV2Vha1B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uPiBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb247CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+IG1fc2hhcmVkV29ya2VyQ29udGV4
dENvbm5lY3Rpb247CiAKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICBib29sIG1faXNSZWdpc3Rl
cmVkVG9SVENEYXRhQ2hhbm5lbFByb3h5IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDI0MjgzNTA1MGIyNC4uYjk3Y2EzNDc5YjRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTg4LDYgKzg4
LDkgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIENsb3NlU1dDb250ZXh0Q29ubmVjdGlvbigpCiAjZW5kaWYKIAorICAgIEVz
dGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5
SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9t
YWluKSAtPiAoKSBBc3luYworICAgIENsb3NlU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24o
KQorCiAgICAgQ3JlYXRlUlRDUHJvdmlkZXIoKSAtPiAoKSBBc3luYwogI2lmIEVOQUJMRShXRUJf
UlRDKQogICAgIENvbm5lY3RUb1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlKHN0cnVjdCBXZWJD
b3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgc291cmNlLCBzdHJ1Y3QgV2ViQ29yZTo6UlRD
RGF0YUNoYW5uZWxJZGVudGlmaWVyIGhhbmRsZXIpIC0+IChzdGQ6Om9wdGlvbmFsPGJvb2w+IHJl
c3VsdCkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5jcHAKaW5kZXggZTJiMjRkODMyMmI2Li5kNzYxNjI4NTBjYWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC00Nyw2ICs0Nyw3
IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJTV09yaWdpblN0b3JlLmgiCisjaW5jbHVkZSAiV2Vi
U2hhcmVkV29ya2VyU2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0VGFzay5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQ29va2llSmFyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVl
c3QuaD4KQEAgLTY1Myw2ICs2NTQsMTMgQEAgYm9vbCBOZXR3b3JrU2Vzc2lvbjo6aGFzU2Vydmlj
ZVdvcmtlckRhdGFiYXNlUGF0aCgpIGNvbnN0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAKK1dlYlNoYXJlZFdvcmtlclNlcnZlciYgTmV0d29ya1Nlc3Npb246OmVuc3VyZVNo
YXJlZFdvcmtlclNlcnZlcigpCit7CisgICAgaWYgKCFtX3NoYXJlZFdvcmtlclNlcnZlcikKKyAg
ICAgICAgbV9zaGFyZWRXb3JrZXJTZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYlNoYXJlZFdvcmtlclNl
cnZlcj4oKnRoaXMpOworICAgIHJldHVybiAqbV9zaGFyZWRXb3JrZXJTZXJ2ZXI7Cit9CisKIFdl
YklEQlNlcnZlciYgTmV0d29ya1Nlc3Npb246OmVuc3VyZVdlYklEQlNlcnZlcigpCiB7CiAgICAg
aWYgKCFtX3dlYklEQlNlcnZlcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDE5MzA3Y2Y0MGJlMy4uM2Y5ZDZjOTU1MGE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC03OSw2ICs3
OSw3IEBAIGNsYXNzIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s7CiBjbGFzcyBXZWJJREJTZXJ2ZXI7
CiBjbGFzcyBXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnM7CiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI7CiBjbGFzcyBXZWJT
b2NrZXRUYXNrOwogY2xhc3MgV2ViU1dPcmlnaW5TdG9yZTsKIGNsYXNzIFdlYlNXU2VydmVyQ29u
bmVjdGlvbjsKQEAgLTIxMCw2ICsyMTEsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRTZXJ2aWNl
V29ya2VyU2Vzc2lvbihib29sIHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgU3RyaW5n
JiYgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSwgY29uc3QgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJik7CiAjZW5kaWYKIAorICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlciogc2hh
cmVkV29ya2VyU2VydmVyKCkgeyByZXR1cm4gbV9zaGFyZWRXb3JrZXJTZXJ2ZXIuZ2V0KCk7IH0K
KyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIGVuc3VyZVNoYXJlZFdvcmtlclNlcnZlcigpOwor
CiAgICAgV2ViSURCU2VydmVyKiB3ZWJJREJTZXJ2ZXIoKSB7IHJldHVybiBtX3dlYklEQlNlcnZl
ci5nZXQoKTsgfQogICAgIFdlYklEQlNlcnZlciYgZW5zdXJlV2ViSURCU2VydmVyKCk7CiAgICAg
dm9pZCBjbG9zZUlEQlNlcnZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMzE4
LDYgKzMyMiw3IEBAIHByb3RlY3RlZDoKICAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJJ
bmZvPiBtX3NlcnZpY2VXb3JrZXJJbmZvOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpT
V1NlcnZlcj4gbV9zd1NlcnZlcjsKICNlbmRpZgorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI+IG1fc2hhcmVkV29ya2VyU2VydmVyOwogCiAgICAgU3RyaW5nIG1faWRi
RGF0YWJhc2VQYXRoOwogICAgIFJlZlB0cjxXZWJJREJTZXJ2ZXI+IG1fd2ViSURCU2VydmVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29y
a2VyL1dlYlNoYXJlZFdvcmtlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi44MDA5MTM5NTI4MGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuY3BwCkBAIC0wLDAgKzEs
NjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hh
cmVkV29ya2VyLmgiCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitzdGF0aWMgSGFzaE1hcDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVy
LCBXZWJTaGFyZWRXb3JrZXIqPiYgYWxsV29ya2VycygpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxXZWJDb3JlOjpT
aGFyZWRXb3JrZXJJZGVudGlmaWVyLCBXZWJTaGFyZWRXb3JrZXIqPj4gYWxsV29ya2VyczsKKyAg
ICByZXR1cm4gYWxsV29ya2VyczsKK30KKworV2ViU2hhcmVkV29ya2VyOjpXZWJTaGFyZWRXb3Jr
ZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBrZXksIGNvbnN0IFdlYkNvcmU6Oldv
cmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMpCisgICAgOiBtX2lkZW50aWZpZXIoV2ViQ29yZTo6
U2hhcmVkV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKKyAgICAsIG1fa2V5KGtleSkKKyAg
ICAsIG1fd29ya2VyT3B0aW9ucyh3b3JrZXJPcHRpb25zKQoreworICAgIEFTU0VSVCghYWxsV29y
a2VycygpLmNvbnRhaW5zKG1faWRlbnRpZmllcikpOworICAgIGFsbFdvcmtlcnMoKS5hZGQobV9p
ZGVudGlmaWVyLCB0aGlzKTsKK30KKworV2ViU2hhcmVkV29ya2VyOjp+V2ViU2hhcmVkV29ya2Vy
KCkKK3sKKyAgICBBU1NFUlQoYWxsV29ya2VycygpLmdldChtX2lkZW50aWZpZXIpID09IHRoaXMp
OworICAgIGFsbFdvcmtlcnMoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKK30KKworV2ViU2hhcmVk
V29ya2VyKiBXZWJTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gYWxsV29ya2VycygpLmdl
dChpZGVudGlmaWVyKTsKK30KKworV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gV2ViU2hhcmVk
V29ya2VyOjpyZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsKCkgfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29y
a2VyL1dlYlNoYXJlZFdvcmtlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uMzRiN2E0YTg0M2NlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmgKQEAgLTAsMCArMSw3OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRX
b3JrZXJJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJLZXkuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1RyYW5zZmVycmVkTWVzc2FnZVBvcnQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1dvcmtlckZldGNoUmVzdWx0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Xb3JrZXJPcHRpb25zLmg+
CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
UmVnaXN0cmFibGVEb21haW47Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJT
aGFyZWRXb3JrZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViU2hhcmVkV29ya2VyPiB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV2ViU2hhcmVkV29ya2Vy
KGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9w
dGlvbnMmKTsKKyAgICB+V2ViU2hhcmVkV29ya2VyKCk7CisKKyAgICBzdGF0aWMgV2ViU2hhcmVk
V29ya2VyKiBmcm9tSWRlbnRpZmllcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsK
KworICAgIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtl
cktleSYga2V5KCkgY29uc3QgeyByZXR1cm4gbV9rZXk7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpX
b3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV93b3JrZXJPcHRp
b25zOyB9CisgICAgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4oKSBjb25zdCB7
IHJldHVybiBtX2tleS5vcmlnaW47IH0KKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0
dXJuIG1fa2V5LnVybDsgfQorICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJh
YmxlRG9tYWluKCkgY29uc3Q7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0PiYgc2hhcmVkV29y
a2VyT2JqZWN0cygpIHsgcmV0dXJuIG1fc2hhcmVkV29ya2VyT2JqZWN0czsgfQorCisgICAgYm9v
bCBpc1J1bm5pbmcoKSBjb25zdCB7IHJldHVybiBtX2lzUnVubmluZzsgfQorICAgIHZvaWQgbWFy
a0FzUnVubmluZygpIHsgbV9pc1J1bm5pbmcgPSB0cnVlOyB9CisKKyAgICBjb25zdCBXZWJDb3Jl
OjpXb3JrZXJGZXRjaFJlc3VsdCYgZmV0Y2hSZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX2ZldGNo
UmVzdWx0OyB9CisgICAgdm9pZCBzZXRGZXRjaFJlc3VsdChXZWJDb3JlOjpXb3JrZXJGZXRjaFJl
c3VsdCYmIGZldGNoUmVzdWx0KSB7IG1fZmV0Y2hSZXN1bHQgPSBXVEZNb3ZlKGZldGNoUmVzdWx0
KTsgfQorICAgIGJvb2wgZGlkRmluaXNoRmV0Y2hpbmcoKSBjb25zdCB7IHJldHVybiAhIW1fZmV0
Y2hSZXN1bHQuc2NyaXB0OyB9CisKK3ByaXZhdGU6CisgICAgV2ViU2hhcmVkV29ya2VyKFdlYlNo
YXJlZFdvcmtlciYmKSA9IGRlbGV0ZTsKKyAgICBXZWJTaGFyZWRXb3JrZXImIG9wZXJhdG9yPShX
ZWJTaGFyZWRXb3JrZXImJikgPSBkZWxldGU7CisgICAgV2ViU2hhcmVkV29ya2VyKGNvbnN0IFdl
YlNoYXJlZFdvcmtlciYpID0gZGVsZXRlOworICAgIFdlYlNoYXJlZFdvcmtlciYgb3BlcmF0b3I9
KGNvbnN0IFdlYlNoYXJlZFdvcmtlciYpID0gZGVsZXRlOworCisgICAgV2ViQ29yZTo6U2hhcmVk
V29ya2VySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgV2ViQ29yZTo6U2hhcmVkV29ya2Vy
S2V5IG1fa2V5OworICAgIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMgbV93b3JrZXJPcHRpb25zOwor
ICAgIEhhc2hNYXA8V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29y
ZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydD4gbV9zaGFyZWRXb3JrZXJPYmplY3RzOworICAgIFdl
YkNvcmU6OldvcmtlckZldGNoUmVzdWx0IG1fZmV0Y2hSZXN1bHQ7CisgICAgYm9vbCBtX2lzUnVu
bmluZyB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtl
clNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uZmM2ODMwMjE0ZDQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcApAQCAt
MCwwICsxLDI2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNs
dWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNz
YWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVk
V29ya2VyLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9T
aGFyZWRXb3JrZXJLZXkuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlckZldGNoUmVzdWx0Lmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9Xb3JrZXJPcHRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OldlYlNoYXJlZFdvcmtlclNlcnZlcihOZXR3b3Jr
U2Vzc2lvbiYgc2Vzc2lvbikKKyAgICA6IG1fc2Vzc2lvbihzZXNzaW9uKQoreworfQorCitXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI6On5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIoKSA9IGRlZmF1bHQ7CisK
K1BBTDo6U2Vzc2lvbklEIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2Vzc2lvbklEKCkKK3sKKyAg
ICByZXR1cm4gbV9zZXNzaW9uLnNlc3Npb25JRCgpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtl
clNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtlcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmJiBz
aGFyZWRXb3JrZXJLZXksIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9y
dCYmIHBvcnQsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zKQoreworICAg
IGF1dG8mIHNoYXJlZFdvcmtlciA9IG1fc2hhcmVkV29ya2Vycy5lbnN1cmUoc2hhcmVkV29ya2Vy
S2V5LCBbJl0geworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXI+KHNo
YXJlZFdvcmtlcktleSwgd29ya2VyT3B0aW9ucyk7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwor
ICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVx
dWVzdFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3ByaXZhdGV9
cywgc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzaGFyZWRXb3JrZXItPmlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpKTsKKworICAgIGlmIChzaGFyZWRXb3JrZXItPndvcmtlck9wdGlvbnMo
KS50eXBlICE9IHdvcmtlck9wdGlvbnMudHlwZSB8fCBzaGFyZWRXb3JrZXItPndvcmtlck9wdGlv
bnMoKS5jcmVkZW50aWFscyAhPSB3b3JrZXJPcHRpb25zLmNyZWRlbnRpYWxzKSB7CisgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6
cmVxdWVzdFNoYXJlZFdvcmtlcjogQSB3b3JrZXIgYWxyZWFkeSBleGlzdHMgd2l0aCB0aGlzIG5h
bWUgYnV0IGhhcyBkaWZmZXJlbnQgdHlwZSAvIGNyZWRlbnRpYWxzIik7CisgICAgICAgIGlmIChh
dXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIHNlcnZlckNv
bm5lY3Rpb24tPm5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24oc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciwgeyBXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3ND
b250cm9sIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2hhcmVkV29ya2VyLT5z
aGFyZWRXb3JrZXJPYmplY3RzKCkuYWRkKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHBv
cnQpOworCisgICAgaWYgKHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cygpLnNpemUo
KSA+IDEpIHsKKyAgICAgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29y
a2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyOiBBIHNoYXJlZCB3b3JrZXIgd2l0aCB0aGlz
IFVSTCBhbHJlYWR5IGV4aXN0cyAobm93IHNoYXJlZCBieSAldSBzaGFyZWQgd29ya2VyIG9iamVj
dHMpIiwgc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzKCkuc2l6ZSgpKTsKKyAgICAg
ICAgaWYgKHNoYXJlZFdvcmtlci0+ZGlkRmluaXNoRmV0Y2hpbmcoKSkgeworICAgICAgICAgICAg
aWYgKGF1dG8qIHNlcnZlckNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkpKQorICAgICAgICAgICAgICAg
IHNlcnZlckNvbm5lY3Rpb24tPm5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24oc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgeyB9KTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
c2hhcmVkV29ya2VyLT5pc1J1bm5pbmcoKSkgeworICAgICAgICAgICAgYXV0byogY29udGV4dENv
bm5lY3Rpb24gPSBtX2NvbnRleHRDb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyLT5yZWdpc3Ry
YWJsZURvbWFpbigpKTsKKyAgICAgICAgICAgIEFTU0VSVChjb250ZXh0Q29ubmVjdGlvbik7Cisg
ICAgICAgICAgICBpZiAoY29udGV4dENvbm5lY3Rpb24pCisgICAgICAgICAgICAgICAgY29udGV4
dENvbm5lY3Rpb24tPnBvc3RDb25uZWN0RXZlbnQoKnNoYXJlZFdvcmtlciwgcG9ydCk7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlQoIXNoYXJlZFdvcmtlci0+
aXNSdW5uaW5nKCkpOworCisgICAgYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlv
bnMuZ2V0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSk7
CisgICAgQVNTRVJUKHNlcnZlckNvbm5lY3Rpb24pOworCisgICAgUkVMRUFTRV9MT0coU2hhcmVk
V29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyOiBGZXRj
aGluZyBzaGFyZWQgd29ya2VyIHNjcmlwdCBpbiBjbGllbnQiKTsKKyAgICBzZXJ2ZXJDb25uZWN0
aW9uLT5mZXRjaFNjcmlwdEluQ2xpZW50KCpzaGFyZWRXb3JrZXIsIHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIsIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBzaGFyZWRXb3JrZXIg
PSBXZWFrUHRyIHsgKnNoYXJlZFdvcmtlciB9XShXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYm
IGZldGNoUmVzdWx0KSB7CisgICAgICAgIGlmICh3ZWFrVGhpcyAmJiBzaGFyZWRXb3JrZXIpCisg
ICAgICAgICAgICB3ZWFrVGhpcy0+ZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRXb3JrZXJTY3JpcHQo
KnNoYXJlZFdvcmtlciwgV1RGTW92ZShmZXRjaFJlc3VsdCkpOworICAgIH0pOworfQorCit2b2lk
IFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6ZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRXb3JrZXJTY3Jp
cHQoV2ViU2hhcmVkV29ya2VyJiBzaGFyZWRXb3JrZXIsIFdlYkNvcmU6OldvcmtlckZldGNoUmVz
dWx0JiYgZmV0Y2hSZXN1bHQpCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2Vi
U2hhcmVkV29ya2VyU2VydmVyOjpkaWRGaW5pc2hGZXRjaGluZ1NoYXJlZFdvcmtlclNjcmlwdCBz
aGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCAiLCBzaGFyZWRXb3JrZXI9JXAsIHN1Y2Nl
c3M9JWQiLCBzaGFyZWRXb3JrZXIuaWRlbnRpZmllcigpLnRvVUludDY0KCksICZzaGFyZWRXb3Jr
ZXIsIGZldGNoUmVzdWx0LmVycm9yLmlzTnVsbCgpKTsKKworICAgIGZvciAoYXV0byBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyIDogc2hhcmVkV29ya2VyLnNoYXJlZFdvcmtlck9iamVjdHMo
KS5rZXlzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHNlcnZlckNvbm5lY3Rpb24gPSBtX2Nvbm5l
Y3Rpb25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVy
KCkpKQorICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlvbi0+bm90aWZ5V29ya2VyT2JqZWN0T2ZM
b2FkQ29tcGxldGlvbihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBmZXRjaFJlc3VsdC5l
cnJvcik7CisgICAgfQorCisgICAgaWYgKCFmZXRjaFJlc3VsdC5lcnJvci5pc051bGwoKSkgewor
ICAgICAgICBtX3NoYXJlZFdvcmtlcnMucmVtb3ZlKHNoYXJlZFdvcmtlci5rZXkoKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaGFyZWRXb3JrZXIuc2V0RmV0Y2hSZXN1bHQoV1RG
TW92ZShmZXRjaFJlc3VsdCkpOworCisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IHNoYXJl
ZFdvcmtlci5yZWdpc3RyYWJsZURvbWFpbigpOworICAgIGF1dG8qIGNvbnRleHRDb25uZWN0aW9u
ID0gY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFp
bik7CisgICAgaWYgKCFjb250ZXh0Q29ubmVjdGlvbikgeworICAgICAgICBjcmVhdGVDb250ZXh0
Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBjb250ZXh0Q29ubmVjdGlvbi0+bGF1bmNoU2hhcmVkV29ya2VyKHNoYXJlZFdvcmtlcik7
Cit9CisKK2Jvb2wgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpuZWVkc0NvbnRleHRDb25uZWN0aW9u
Rm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJl
Z2lzdHJhYmxlRG9tYWluKSBjb25zdAoreworICAgIGZvciAoYXV0byYgc2hhcmVkV29ya2VyIDog
bV9zaGFyZWRXb3JrZXJzLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChyZWdpc3RyYWJsZURvbWFp
bi5tYXRjaGVzKHNoYXJlZFdvcmtlci0+dXJsKCkpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXI6OmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiByZWdpc3RyYWJsZURvbWFpbikKK3sKKyAgICBBU1NFUlQoIW1fY29udGV4dENvbm5lY3Rp
b25zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSk7CisgICAgaWYgKG1fcGVuZGluZ0NvbnRl
eHRDb25uZWN0aW9uRG9tYWlucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAg
IHJldHVybjsKKworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtl
clNlcnZlcjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24gd2lsbCBjcmVhdGUgYSBjb25uZWN0aW9u
Iik7CisKKyAgICBtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnMuYWRkKHJlZ2lzdHJh
YmxlRG9tYWluKTsKKyAgICBtX3Nlc3Npb24ubmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OkVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyB7IHJlZ2lzdHJhYmxlRG9tYWluLCBtX3Nlc3Npb24uc2Vzc2lvbklEKCkgfSwgW3RoaXMs
IHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlZ2lzdHJhYmxlRG9tYWluXSB7CisgICAg
ICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgUkVMRUFT
RV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0
Q29ubmVjdGlvbiBzaG91bGQgbm93IGhhdmUgY3JlYXRlZCBhIGNvbm5lY3Rpb24iKTsKKworICAg
ICAgICBBU1NFUlQobV9wZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5zLmNvbnRhaW5zKHJl
Z2lzdHJhYmxlRG9tYWluKSk7CisgICAgICAgIG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9t
YWlucy5yZW1vdmUocmVnaXN0cmFibGVEb21haW4pOworCisgICAgICAgIGlmIChtX2NvbnRleHRD
b25uZWN0aW9ucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgaWYgKG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURv
bWFpbihyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVj
dGlvbihyZWdpc3RyYWJsZURvbWFpbik7CisgICAgfSwgMCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVk
V29ya2VyU2VydmVyOjphZGRDb250ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbikKK3sKKyAgICBSRUxFQVNFX0xP
RyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmFkZENvbnRleHRDb25uZWN0
aW9uKCVwKSB3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQsICZjb250ZXh0Q29ubmVjdGlv
biwgY29udGV4dENvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsK
KworICAgIEFTU0VSVCghbV9jb250ZXh0Q29ubmVjdGlvbnMuY29udGFpbnMoY29udGV4dENvbm5l
Y3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSkpOworCisgICAgbV9jb250ZXh0Q29ubmVjdGlvbnMu
YWRkKGNvbnRleHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCksICZjb250ZXh0Q29ubmVj
dGlvbik7CisKKyAgICBjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoY29udGV4dENvbm5lY3Rpb24p
OworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rp
b24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5l
Y3Rpb24pCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2Vy
U2VydmVyOjpyZW1vdmVDb250ZXh0Q29ubmVjdGlvbiglcCkgd2ViUHJvY2Vzc0lkZW50aWZpZXI9
JSIgUFJJdTY0LCAmY29udGV4dENvbm5lY3Rpb24sIGNvbnRleHRDb25uZWN0aW9uLndlYlByb2Nl
c3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWlu
ID0gY29udGV4dENvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKTsKKworICAgIEFTU0VSVCht
X2NvbnRleHRDb25uZWN0aW9ucy5nZXQocmVnaXN0cmFibGVEb21haW4pID09ICZjb250ZXh0Q29u
bmVjdGlvbik7CisKKyAgICBtX2NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUocmVnaXN0cmFibGVE
b21haW4pOworCisgICAgaWYgKG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURv
bWFpbihyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9u
KHJlZ2lzdHJhYmxlRG9tYWluKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNv
bnRleHRDb25uZWN0aW9uQ3JlYXRlZChXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbikKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3Jr
ZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZCglcCkg
d2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCAmY29udGV4dENvbm5lY3Rpb24sIGNvbnRl
eHRDb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgYXV0
byYgcmVnaXN0cmFibGVEb21haW4gPSBjb250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFp
bigpOworICAgIGZvciAoYXV0byYgc2hhcmVkV29ya2VyIDogbV9zaGFyZWRXb3JrZXJzLnZhbHVl
cygpKSB7CisgICAgICAgIGlmIChzaGFyZWRXb3JrZXItPmRpZEZpbmlzaEZldGNoaW5nKCkgJiYg
cmVnaXN0cmFibGVEb21haW4ubWF0Y2hlcyhzaGFyZWRXb3JrZXItPnVybCgpKSkKKyAgICAgICAg
ICAgIGNvbnRleHRDb25uZWN0aW9uLmxhdW5jaFNoYXJlZFdvcmtlcigqc2hhcmVkV29ya2VyKTsK
KyAgICB9Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaGFyZWRXb3JrZXJPYmpl
Y3RJc0dvaW5nQXdheShjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIHNoYXJlZFdvcmtl
cktleSwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyKQoreworICAgIGF1dG8qIHNoYXJlZFdvcmtlciA9IG1fc2hhcmVkV29y
a2Vycy5nZXQoc2hhcmVkV29ya2VyS2V5KTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIs
ICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5OiBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMsIHNoYXJlZFdvcmtlcj0lcCIs
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBz
aGFyZWRXb3JrZXIpOworICAgIGlmICghc2hhcmVkV29ya2VyKQorICAgICAgICByZXR1cm47CisK
KyAgICBzaGFyZWRXb3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMoKS5yZW1vdmUoc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgaWYgKCFzaGFyZWRXb3JrZXItPnNoYXJlZFdvcmtl
ck9iamVjdHMoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHNodXREb3duU2hh
cmVkV29ya2VyKHNoYXJlZFdvcmtlcktleSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyOjpzaHV0RG93blNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkm
IGtleSkKK3sKKyAgICBhdXRvIHNoYXJlZFdvcmtlciA9IG1fc2hhcmVkV29ya2Vycy50YWtlKGtl
eSk7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVy
OjpzaHV0RG93blNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQg
Iiwgc2hhcmVkV29ya2VyPSVwIiwgc2hhcmVkV29ya2VyID8gc2hhcmVkV29ya2VyLT5pZGVudGlm
aWVyKCkudG9VSW50NjQoKSA6IDAsIHNoYXJlZFdvcmtlci5nZXQoKSk7CisgICAgaWYgKCFzaGFy
ZWRXb3JrZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIGNvbnRleHRDb25uZWN0aW9u
ID0gY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihzaGFyZWRXb3JrZXItPnJl
Z2lzdHJhYmxlRG9tYWluKCkpOworICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pCisgICAgICAg
IHJldHVybjsKKworICAgIGNvbnRleHRDb25uZWN0aW9uLT50ZXJtaW5hdGVTaGFyZWRXb3JrZXIo
KnNoYXJlZFdvcmtlcik7CisKKyAgICBpZiAoIW5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdp
c3RyYWJsZURvbWFpbihzaGFyZWRXb3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCkpKQorICAgICAg
ICBjb250ZXh0Q29ubmVjdGlvbi0+Y29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKTsKK30KKwor
dm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmFkZENvbm5lY3Rpb24oc3RkOjp1bmlxdWVfcHRy
PFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKK3sKKyAgICBh
dXRvIHByb2Nlc3NJZGVudGlmaWVyID0gY29ubmVjdGlvbi0+d2ViUHJvY2Vzc0lkZW50aWZpZXIo
KTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6
OmFkZENvbm5lY3Rpb24oJXApOiBwcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQsIGNvbm5lY3Rp
b24uZ2V0KCksIHByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIEFTU0VSVCghbV9j
b25uZWN0aW9ucy5jb250YWlucyhwcm9jZXNzSWRlbnRpZmllcikpOworICAgIG1fY29ubmVjdGlv
bnMuYWRkKHByb2Nlc3NJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKK30KKwordm9p
ZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlbW92ZUNvbm5lY3Rpb24oV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIpCit7CisgICAgYXV0byBjb25uZWN0aW9uID0g
bV9jb25uZWN0aW9ucy50YWtlKHByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPRyhT
aGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlbW92ZUNvbm5lY3Rpb24oJXAp
OiBwcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQsIGNvbm5lY3Rpb24uZ2V0KCksIHByb2Nlc3NJ
ZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIEFTU0VSVChjb25uZWN0aW9uKTsKKworICAgIFZl
Y3RvcjxzdGQ6OnBhaXI8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5LCBXZWJDb3JlOjpTaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyPj4gc2hhcmVkV29ya2VyT2JqZWN0c0dvaW5nQXdheTsKKyAg
ICBmb3IgKGF1dG8mIHNoYXJlZFdvcmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgewor
ICAgICAgICBmb3IgKGF1dG8mIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgOiBzaGFyZWRX
b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMoKS5rZXlzKCkpIHsKKyAgICAgICAgICAgIGlmIChz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gcHJvY2Vz
c0lkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgc2hhcmVkV29ya2VyT2JqZWN0c0dvaW5nQXdh
eS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc2hhcmVkV29ya2VyLT5rZXkoKSwgc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllcikpOworICAgICAgICB9CisgICAgfQorICAgIGZvciAoYXV0byYgW3No
YXJlZFdvcmtlcktleSwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcl0gOiBzaGFyZWRXb3Jr
ZXJPYmplY3RzR29pbmdBd2F5KQorICAgICAgICBzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdh
eShzaGFyZWRXb3JrZXJLZXksIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworfQorCitX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250
ZXh0Q29ubmVjdGlvbnMuZ2V0KGRvbWFpbik7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRl
bnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMKQoreworICAgIGF1dG8qIHNoYXJlZFdvcmtlciA9IFdlYlNoYXJlZFdvcmtlcjo6ZnJvbUlk
ZW50aWZpZXIoc2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0dfRVJST1Io
U2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpwb3N0RXhjZXB0aW9uVG9Xb3Jr
ZXJPYmplY3Q6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHNoYXJlZFdvcmtl
cj0lcCIsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSwgc2hhcmVkV29ya2VyKTsK
KyAgICBpZiAoIXNoYXJlZFdvcmtlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRv
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgOiBzaGFyZWRXb3JrZXItPnNoYXJlZFdvcmtl
ck9iamVjdHMoKS5rZXlzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHNlcnZlckNvbm5lY3Rpb24g
PSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJ
ZGVudGlmaWVyKCkpKQorICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlvbi0+cG9zdEV4Y2VwdGlv
blRvV29ya2VyT2JqZWN0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGVycm9yTWVzc2Fn
ZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwpOworICAgIH0KK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDJkODAzODA5MzZkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyLmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RyYW5zZmVy
cmVkTWVzc2FnZVBvcnQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKKworc3RydWN0IENsaWVudE9yaWdp
bjsKK3N0cnVjdCBTaGFyZWRXb3JrZXJLZXk7CitzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7Citz
dHJ1Y3QgV29ya2VyT3B0aW9uczsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5l
dHdvcmtTZXNzaW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2VyOworY2xhc3MgV2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb247CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlciA6IHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIoTmV0
d29ya1Nlc3Npb24mKTsKKyAgICB+V2ViU2hhcmVkV29ya2VyU2VydmVyKCk7CisKKyAgICBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQoKTsKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uKiBjb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CisKKyAgICB2b2lkIHJlcXVlc3RT
aGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiYsIFdlYkNvcmU6OlNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwg
V2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmKTsKKyAgICB2b2lkIHNoYXJlZFdvcmtlck9iamVjdElz
R29pbmdBd2F5KGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYsIFdlYkNvcmU6OlNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2Vy
T2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwpOworCisgICAgdm9pZCBhZGRDb250ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CisgICAgdm9pZCByZW1vdmVDb250ZXh0
Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7Cisg
ICAgdm9pZCBhZGRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uPiYmKTsKKyAgICB2b2lkIHJlbW92ZUNvbm5lY3Rpb24oV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIpOworCitwcml2YXRlOgorICAgIHZvaWQgY3JlYXRlQ29udGV4dENvbm5l
Y3Rpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKKyAgICBib29sIG5lZWRz
Q29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYpIGNvbnN0OworICAgIHZvaWQgY29udGV4dENvbm5lY3Rpb25DcmVhdGVk
KFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKKyAgICB2b2lkIGRp
ZEZpbmlzaEZldGNoaW5nU2hhcmVkV29ya2VyU2NyaXB0KFdlYlNoYXJlZFdvcmtlciYsIFdlYkNv
cmU6OldvcmtlckZldGNoUmVzdWx0JiYpOworICAgIHZvaWQgc2h1dERvd25TaGFyZWRXb3JrZXIo
Y29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5Jik7CisKKyAgICBOZXR3b3JrU2Vzc2lvbiYg
bV9zZXNzaW9uOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6
dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uPj4gbV9jb25uZWN0aW9u
czsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4gbV9jb250ZXh0Q29ubmVjdGlvbnM7CisgICAg
SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9wZW5kaW5nQ29udGV4dENvbm5l
Y3Rpb25Eb21haW5zOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5LCBzdGQ6
OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyPj4gbV9zaGFyZWRXb3JrZXJzOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNl
cnZlckNvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uMDY0MWMxODljMmYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAK
QEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAiTG9n
Z2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXIuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlckZl
dGNoUmVzdWx0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjZGVmaW5lIENPTk5FQ1RJT05f
TUVTU0FHRV9DSEVDSyhhc3NlcnRpb24pIENPTk5FQ1RJT05fTUVTU0FHRV9DSEVDS19DT01QTEVU
SU9OKGFzc2VydGlvbiwgKHZvaWQpMCkKKyNkZWZpbmUgQ09OTkVDVElPTl9NRVNTQUdFX0NIRUNL
X0NPTVBMRVRJT04oYXNzZXJ0aW9uLCBjb21wbGV0aW9uKSBkbyB7IFwKKyAgICBBU1NFUlQoYXNz
ZXJ0aW9uKTsgXAorICAgIGlmIChVTkxJS0VMWSghKGFzc2VydGlvbikpKSB7IFwKKyAgICAgICAg
bV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3NQcm94eTo6VGVybWluYXRlV2ViUHJvY2VzcyhtX3dlYlByb2Nlc3NJ
ZGVudGlmaWVyKSwgMCk7IFwKKyAgICAgICAgeyBjb21wbGV0aW9uOyB9IFwKKyAgICAgICAgcmV0
dXJuOyBcCisgICAgfSBcCit9IHdoaWxlICgwKQorCisjZGVmaW5lIENPTk5FQ1RJT05fUkVMRUFT
RV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gW3dlYlByb2Nl
c3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
OjoiIGZtdCwgdGhpcywgbV93ZWJQcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpLCAjI19fVkFf
QVJHU19fKQorI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKGZtdCwgLi4uKSBS
RUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmll
cj0lIiBQUkl1NjQgIl0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6IiBmbXQsIHRo
aXMsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKKwor
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFdlYlNoYXJlZFdvcmtlclNl
cnZlciYgc2VydmVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKQorICAgIDogbV9jb250ZW50Q29ubmVj
dGlvbihjb25uZWN0aW9uKQorICAgICwgbV9uZXR3b3JrUHJvY2VzcyhuZXR3b3JrUHJvY2VzcykK
KyAgICAsIG1fc2VydmVyKHNlcnZlcikKKyAgICAsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIod2Vi
UHJvY2Vzc0lkZW50aWZpZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjoiKTsKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oKQoreworICAgIENP
Tk5FQ1RJT05fUkVMRUFTRV9MT0coIn5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOiIp
OworfQorCitJUEM6OkNvbm5lY3Rpb24qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246
Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZW50
Q29ubmVjdGlvbi5wdHIoKTsKK30KKworUEFMOjpTZXNzaW9uSUQgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbjo6c2Vzc2lvbklEKCkKK3sKKyAgICByZXR1cm4gc2VydmVyKCkuc2Vzc2lv
bklEKCk7Cit9CisKK05ldHdvcmtTZXNzaW9uKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uOjpzZXNzaW9uKCkKK3sKKyAgICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKCkpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb246OnJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiYgc2hh
cmVkV29ya2VyS2V5LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQm
JiBwb3J0LCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucykKK3sKKyAgICBD
T05ORUNUSU9OX01FU1NBR0VfQ0hFQ0soc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9j
ZXNzSWRlbnRpZmllcigpID09IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOworICAgIENPTk5FQ1RJ
T05fTUVTU0FHRV9DSEVDSyhzaGFyZWRXb3JrZXJLZXkubmFtZSA9PSB3b3JrZXJPcHRpb25zLm5h
bWUpOworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coInJlcXVlc3RTaGFyZWRXb3JrZXI6IHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAoYXV0byogc2Vz
c2lvbiA9IHRoaXMtPnNlc3Npb24oKSkKKyAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU2hhcmVkV29y
a2VyU2VydmVyKCkucmVxdWVzdFNoYXJlZFdvcmtlcihXVEZNb3ZlKHNoYXJlZFdvcmtlcktleSks
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdURk1vdmUocG9ydCksIFdURk1vdmUod29y
a2VyT3B0aW9ucykpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246
OnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYm
IHNoYXJlZFdvcmtlcktleSwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQoreworICAgIENPTk5FQ1RJT05fTUVTU0FHRV9D
SEVDSyhzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0g
bV93ZWJQcm9jZXNzSWRlbnRpZmllcik7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygic2hh
cmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXk6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9
JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHRoaXMtPnNlc3Npb24oKSkKKyAg
ICAgICAgc2Vzc2lvbi0+ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCkuc2hhcmVkV29ya2VyT2Jq
ZWN0SXNHb2luZ0F3YXkoc2hhcmVkV29ya2VyS2V5LCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpmZXRjaFNj
cmlwdEluQ2xpZW50KGNvbnN0IFdlYlNoYXJlZFdvcmtlciYgc2hhcmVkV29ya2VyLCBXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiZmV0
Y2hTY3JpcHRJbkNsaWVudDogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31z
Iiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbjo6RmV0Y2hTY3JpcHRJbkNsaWVudCB7IHNoYXJlZFdvcmtlci51cmwoKSwgc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgc2hhcmVkV29ya2VyLndvcmtlck9wdGlvbnMoKSB9
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbjo6bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihXZWJD
b3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIENPTk5F
Q1RJT05fUkVMRUFTRV9MT0coIm5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb246IHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cywgc3VjY2Vzcz0lZCIsIHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBlcnJvci5p
c051bGwoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbjo6Tm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbiB7IHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIsIGVycm9yIH0pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19F
UlJPUigicG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyPSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbjo6UG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0IHsgc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IHNvdXJjZVVSTCB9KTsKK30KKworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0cKKyN1bmRl
ZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SCisjdW5kZWYgQ09OTkVDVElPTl9NRVNTQUdF
X0NIRUNLCisjdW5kZWYgQ09OTkVDVElPTl9NRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4x
YmY3NzVkMGE4ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTAs
MCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IFdvcmtlckZl
dGNoUmVzdWx0Oworc3RydWN0IFdvcmtlck9wdGlvbnM7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBOZXR3b3JrUHJvY2VzczsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlcjsKK2NsYXNz
IFdlYlNoYXJlZFdvcmtlclNlcnZlcjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb247CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24g
OiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFdlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb24oTmV0d29ya1Byb2Nlc3MmLCBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXImLCBJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CisgICAg
fldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oKTsKKworICAgIFdlYlNoYXJlZFdvcmtl
clNlcnZlciYgc2VydmVyKCkgeyByZXR1cm4gbV9zZXJ2ZXI7IH0KKyAgICBjb25zdCBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXImIHNlcnZlcigpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyOyB9CisKKyAg
ICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKTsKKyAgICBOZXR3b3JrU2Vzc2lvbiogc2Vzc2lv
bigpOworICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV93ZWJQcm9jZXNzSWRlbnRpZmllcjsgfQorCisgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsK
KworICAgIHZvaWQgZmV0Y2hTY3JpcHRJbkNsaWVudChjb25zdCBXZWJTaGFyZWRXb3JrZXImLCBX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYpPiYmKTsKKyAgICB2b2lkIG5vdGlmeVdv
cmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24oV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOworICAgIHZvaWQgcG9zdEV4
Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCitwcml2YXRlOgorICAgIC8vIElQ
Qzo6TWVzc2FnZVNlbmRlci4KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0
aW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CisKKyAgICAvLyBJUEMgbWVzc2FnZXMu
CisgICAgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYm
LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXZWJDb3JlOjpUcmFuc2Zl
cnJlZE1lc3NhZ2VQb3J0JiYsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJik7CisgICAgdm9pZCBz
aGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmJiwg
V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisKKyAgICBSZWY8SVBDOjpD
b25uZWN0aW9uPiBtX2NvbnRlbnRDb25uZWN0aW9uOworICAgIFJlZjxOZXR3b3JrUHJvY2Vzcz4g
bV9uZXR3b3JrUHJvY2VzczsKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIG1fc2VydmVyOwor
ICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDcyYTg3YjdlY2Y0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI2IEBACisjIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFdlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CisgICAgUmVxdWVzdFNoYXJlZFdv
cmtlcihzdHJ1Y3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5IHNoYXJlZFdvcmtlcktleSwgV2Vi
Q29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0IHBvcnQsIHN0cnVjdCBXZWJD
b3JlOjpXb3JrZXJPcHRpb25zIHdvcmtlck9wdGlvbnMpCisgICAgU2hhcmVkV29ya2VyT2JqZWN0
SXNHb2luZ0F3YXkoc3RydWN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSBzaGFyZWRXb3JrZXJL
ZXksIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllcikKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi5mZjg2YmM3ZDZhMmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXIu
aCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNz
YWdlcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlci5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworI2RlZmluZSBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coZm10LCAu
Li4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gW3dlYlByb2Nlc3NJZGVudGlmaWVy
PSUiIFBSSXU2NCAiXSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjoi
IGZtdCwgdGhpcywgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19fVkFfQVJH
U19fKQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVn
aXN0cmFibGVEb21haW4sIFdlYlNoYXJlZFdvcmtlclNlcnZlciYgc2VydmVyKQorICAgIDogbV9j
b25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX3NlcnZlcihzZXJ2ZXIpCisgICAgLCBtX3Jl
Z2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKQoreworICAgIENPTlRFWFRfQ09OTkVD
VElPTl9SRUxFQVNFX0xPRygiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjoiKTsKKyAgICBzZXJ2ZXIuYWRkQ29udGV4dENvbm5lY3Rpb24oKnRoaXMpOworfQorCitXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp+V2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbigpCit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVB
U0VfTE9HKCJ+V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjoiKTsKKyAg
ICBpZiAobV9zZXJ2ZXIgJiYgbV9zZXJ2ZXItPmNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFi
bGVEb21haW4ocmVnaXN0cmFibGVEb21haW4oKSkgPT0gdGhpcykKKyAgICAgICAgbV9zZXJ2ZXIt
PnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKCp0aGlzKTsKK30KKworV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6d2ViUHJv
Y2Vzc0lkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24ud2ViUHJv
Y2Vzc0lkZW50aWZpZXIoKTsKK30KKworSVBDOjpDb25uZWN0aW9uJiBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjppcGNDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKTsKK30KKworSVBDOjpDb25uZWN0aW9uKiBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyQ29u
bmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuICZpcGNDb25uZWN0aW9uKCk7Cit9CisKK3Vp
bnQ2NF90IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uSXNOb0xv
bmdlck5lZWRlZCgpCit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJjb25u
ZWN0aW9uSXNOb0xvbmdlck5lZWRlZDoiKTsKKyAgICBtX2Nvbm5lY3Rpb24uc2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKTsKK30KKwordm9pZCBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpwb3N0RXhjZXB0aW9uVG9X
b3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIENPTlRFWFRf
Q09OTkVDVElPTl9SRUxFQVNFX0xPRygicG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0OiBzaGFy
ZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJ
bnQ2NCgpKTsKKyAgICBpZiAobV9zZXJ2ZXIpCisgICAgICAgIG1fc2VydmVyLT5wb3N0RXhjZXB0
aW9uVG9Xb3JrZXJPYmplY3Qoc2hhcmVkV29ya2VySWRlbnRpZmllciwgZXJyb3JNZXNzYWdlLCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bGF1bmNoU2hhcmVkV29ya2VyKFdlYlNo
YXJlZFdvcmtlciYgc2hhcmVkV29ya2VyKQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxF
QVNFX0xPRygibGF1bmNoU2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBS
SXU2NCwgc2hhcmVkV29ya2VyLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICBzaGFyZWRX
b3JrZXIubWFya0FzUnVubmluZygpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6TGF1bmNoU2hhcmVkV29ya2VyIHsgc2hhcmVkV29y
a2VyLm9yaWdpbigpLCBzaGFyZWRXb3JrZXIuaWRlbnRpZmllcigpLCBzaGFyZWRXb3JrZXIudXJs
KCksIHNoYXJlZFdvcmtlci53b3JrZXJPcHRpb25zKCksIHNoYXJlZFdvcmtlci5mZXRjaFJlc3Vs
dCgpIH0pOworICAgIGZvciAoYXV0byYgcG9ydCA6IHNoYXJlZFdvcmtlci5zaGFyZWRXb3JrZXJP
YmplY3RzKCkudmFsdWVzKCkpCisgICAgICAgIHBvc3RDb25uZWN0RXZlbnQoc2hhcmVkV29ya2Vy
LCBwb3J0KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjpwb3N0Q29ubmVjdEV2ZW50KGNvbnN0IFdlYlNoYXJlZFdvcmtlciYgc2hhcmVkV29ya2Vy
LCBjb25zdCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiBwb3J0KQoreworICAgIENP
TlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygicG9zdENvbm5lY3RFdmVudDogc2hhcmVkV29y
a2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlci5pZGVudGlmaWVyKCkudG9VSW50
NjQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpQb3N0Q29ubmVjdEV2ZW50IHsgc2hhcmVkV29ya2VyLmlkZW50aWZpZXIoKSwg
cG9ydCwgc2hhcmVkV29ya2VyLm9yaWdpbigpLmNsaWVudE9yaWdpbi50b1N0cmluZygpIH0pOwor
fQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1p
bmF0ZVNoYXJlZFdvcmtlcihjb25zdCBXZWJTaGFyZWRXb3JrZXImIHNoYXJlZFdvcmtlcikKK3sK
KyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coInRlcm1pbmF0ZVNoYXJlZFdvcmtl
cjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlci5pZGVudGlm
aWVyKCkudG9VSW50NjQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpUZXJtaW5hdGVTaGFyZWRXb3JrZXIgeyBzaGFyZWRXb3Jr
ZXIuaWRlbnRpZmllcigpIH0pOworfQorCisjdW5kZWYgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVB
U0VfTE9HCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDZhZWEzMTlhYTNlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2lu
Y2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVy
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvU2hhcmVkV29ya2VySWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNm
ZXJyZWRNZXNzYWdlUG9ydC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZWdpc3Ry
YWJsZURvbWFpbjsKK2NsYXNzIFNjcmlwdEJ1ZmZlcjsKK3N0cnVjdCBDbGllbnRPcmlnaW47Citz
dHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7CitzdHJ1Y3QgV29ya2VyT3B0aW9uczsKK30KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwor
Y2xhc3MgV2ViU2hhcmVkV29ya2VyOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyOworCitj
bGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIGZpbmFsIDogcHVi
bGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwg
Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIm
KTsKKyAgICB+V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOworCisg
ICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSBjb25z
dDsKKyAgICBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21h
aW4oKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9CisgICAgSVBDOjpDb25u
ZWN0aW9uJiBpcGNDb25uZWN0aW9uKCkgY29uc3Q7CisKKyAgICB2b2lkIGxhdW5jaFNoYXJlZFdv
cmtlcihXZWJTaGFyZWRXb3JrZXImKTsKKyAgICB2b2lkIHBvc3RDb25uZWN0RXZlbnQoY29uc3Qg
V2ViU2hhcmVkV29ya2VyJiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYp
OworICAgIHZvaWQgdGVybWluYXRlU2hhcmVkV29ya2VyKGNvbnN0IFdlYlNoYXJlZFdvcmtlciYp
OworCisgICAgdm9pZCBjb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOworCisgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsK
KworcHJpdmF0ZToKKyAgICAvLyBJUEMgbWVzc2FnZXMuCisgICAgdm9pZCBwb3N0RXhjZXB0aW9u
VG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCk7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCisgICAg
SVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwor
ICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CisK
KyAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9jb25uZWN0aW9uOworICAgIFdl
YWtQdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyPiBtX3NlcnZlcjsKKyAgICBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdv
cmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFlNDdjMTIyY2JhYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNSBAQAor
IyBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAor
IyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgeworICAg
IFBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlm
aWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFN0cmluZyBlcnJvck1lc3NhZ2UsIGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTdHJpbmcgc291cmNlVVJMKQorfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0xvZ2dpbmcuaAppbmRleCAxYzQyZDA0MGMxYTkuLmRlMzJmODE3MTcxNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTk3LDYgKzk3LDcgQEAgZXh0ZXJuICJDIiB7CiAgICAgTShT
ZXJ2aWNlV29ya2VyKSBcCiAgICAgTShTZXNzaW9uU3RhdGUpIFwKICAgICBNKFNoYXJlZERpc3Bs
YXlMaXN0cykgXAorICAgIE0oU2hhcmVkV29ya2VyKSBcCiAgICAgTShTdG9yYWdlKSBcCiAgICAg
TShTdG9yYWdlQVBJKSBcCiAgICAgTShUZXh0SW5wdXQpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDdlYmZhNTE2YjUwMy4uNGM4Y2FkMDQ2NDcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTMwMywxMCArMzAzLDEz
IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAg
ICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YkNvcmU6OlNoYXJlZFN0cmluZ0hhc2gnLAorICAgICAgICAnV2ViQ29yZTo6U2hhcmVkV29ya2Vy
SWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNsZWVwRGlzYWJsZXJJZGVudGlmaWVyJywKICAgICAg
ICAgJ1dlYkNvcmU6OlNvdXJjZUJ1ZmZlckFwcGVuZE1vZGUnLAogICAgICAgICAnV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJDb3JlOjpTdG9yYWdlVHlwZScsCisgICAgICAgICdXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3Nh
Z2VQb3J0JywKICAgICAgICAgJ1dlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3RJZGVudGlmaWVyJywK
ICAgICAgICAgJ1dlYkNvcmU6OldlYkxvY2tJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6
OldlYlNvY2tldElkZW50aWZpZXInLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggNTdlZjNiMTRlYWYyLi5lMzEz
OTEwNTljYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMTQxLDYgKzE0MSwxMSBAQCBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuY3BwIEBuby11bmlmeQogTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIEBuby11bmlmeQog
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uY3BwIEBuby11bmlmeQogCitOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVk
V29ya2VyLmNwcAorTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNl
cnZlci5jcHAKK05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uLmNwcAorTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisKIE5ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9G
aWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5
c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS5jcHAKQEAgLTc4Myw4ICs3ODgsOSBAQCBXZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCiBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dPcmlnaW5UYWJsZS5jcHAKIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJQcm92aWRlci5jcHAKLVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJQ
cm92aWRlci5jcHAKK1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uY3BwCiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbi5jcHAKK1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJQcm92
aWRlci5jcHAKIAogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXIuY3BwCiAKQEAgLTg4NywzICs4OTMsNyBAQCBSZW1vdGVXZWJMb2NrUmVnaXN0cnlNZXNzYWdl
UmVjZWl2ZXIuY3BwCiBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrTWVzc2FnZVJlY2VpdmVyLmNw
cAogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5TWVzc2FnZVJlY2VpdmVyLmNwcAogV2ViTG9j
a1JlZ2lzdHJ5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBhNjc4MzY3
YTc3NWEuLjMzMDIwYmQ1YzNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC01MjksNyArNTI5LDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0ZXJtaW5hdGVXZWJQcm9jZXNzKFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyIHdlYlByb2MKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6dGVybWlu
YXRlVW5yZXNwb25zaXZlU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciBwcm9jZXNzSWRlbnRpZmllcikKIHsKICAgICBpZiAoUmVmUHRyIHByb2Nlc3MgPSBX
ZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHByb2Nlc3NJZGVudGlmaWVyKSkg
ewotICAgICAgICBwcm9jZXNzLT5kaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICAgICAgcHJv
Y2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNl
V29ya2VyKTsKICAgICAgICAgcHJvY2Vzcy0+cmVxdWVzdFRlcm1pbmF0aW9uKFByb2Nlc3NUZXJt
aW5hdGlvblJlYXNvbjo6RXhjZWVkZWRDUFVMaW1pdCk7CiAgICAgfQogfQpAQCAtMTQxNSwxNiAr
MTQxNSwyMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZERlc3Ryb3lXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eShXZWJVc2VyQ29udGVudAogfQogI2VuZGlmCiAKK3ZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVE
b21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hT
aGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV1RGTW92ZShyZWdp
c3RyYWJsZURvbWFpbiksIHNlc3Npb25JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
fQorCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmll
ciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZp
Y2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoKnRoaXMsIFdURk1vdmUo
cmVnaXN0cmFibGVEb21haW4pLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHNlc3Npb25J
RCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIFdlYlByb2Nlc3NQb29sOjplc3Rh
Ymxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1v
dmUocmVnaXN0cmFibGVEb21haW4pLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHNlc3Np
b25JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OnNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgaWYgKGF1dG8qIHBy
b2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIp
KQotICAgICAgICBwcm9jZXNzLT5kaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICAgICAgcHJv
Y2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNl
V29ya2VyKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnRQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vz
c0lkZW50aWZpZXIpCkBAIC0xNDYwLDYgKzE0NjUsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjplbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vz
c0kKIH0KICNlbmRpZgogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNoYXJlZFdvcmtlckNv
bnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIg
aWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byogcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6
cHJvY2Vzc0ZvcklkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAgICAgIHByb2Nlc3MtPmRpc2Fi
bGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKTsKK30K
Kwogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVp
bnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNl
UmVxdWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
cXVvdGEpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9HKFN0b3JhZ2Us
ICIlcCAtIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UiLCB0aGlzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKaW5kZXggYTRlMzY0NWViYWFlLi42ODQxYTM0ZmUwOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBA
IC0zMzQsNiArMzM0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0U2VydmljZVdvcmtlckJh
Y2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzSWRlbnRpZmllcik7CiAgICAgdm9pZCBlbmRTZXJ2aWNlV29ya2VyQmFja2dyb3Vu
ZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nl
c3NJZGVudGlmaWVyKTsKICNlbmRpZgorICAgIHZvaWQgc2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CisgICAgdm9p
ZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIHRlcm1pbmF0ZVdlYlByb2Nlc3MoV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5k
ZXggMTJkMDZjZWJkNjJhLi4xNTc1N2VkOWEyNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW4KQEAgLTYwLDYgKzYwLDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBM
ZWdhY3lSZWNlaXZlciB7CiAgICAgU3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3Np
bmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlm
aWVyKQogICAgIEVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpCiAjZW5kaWYK
KyAgICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKKyAgICBTaGFyZWRXb3JrZXJDb250ZXh0Q29u
bmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCiAKICAgICBTZXRXZWJQcm9jZXNzSGFzVXBsb2FkcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciBwcm9jZXNzSUQsIGJvb2wgaGFzVXBsb2FkKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAppbmRleCBlNDk5MzVjMzI1ZjYuLjFhY2IzNDQ0YWZhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zNjkxLDExICszNjkxLDkg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVzZXJBZ2VudChTdHJpbmcmJiB1c2VyQWdlbnQpCiAg
ICAgICAgIHJldHVybjsKICAgICBtX3VzZXJBZ2VudCA9IFdURk1vdmUodXNlckFnZW50KTsKIAot
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICAvLyBXZSB1cGRhdGUgdGhlIHNlcnZpY2Ug
d29ya2VyIHRoZXJlIGF0IHRoZSBtb21lbnQgdG8gYmUgc3VyZSB3ZSB1c2UgdmFsdWVzIHVzZWQg
YnkgYWN0dWFsIHdlYiBwYWdlcy4KICAgICAvLyBGSVhNRTogUmVmYWN0b3IgdGhpcyB3aGVuIHdl
IGhhdmUgYSBiZXR0ZXIgVXNlci1BZ2VudCBzdG9yeS4KLSAgICBwcm9jZXNzKCkucHJvY2Vzc1Bv
b2woKS51cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KG1fdXNlckFnZW50KTsKLSNlbmRpZgor
ICAgIHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnVwZGF0ZVdvcmtlclVzZXJBZ2VudChtX3VzZXJB
Z2VudCk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBhZmMyM2Vl
NTNmMTIuLjRiMTliMGQxZDNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcApAQCAtNTI5LDcgKzUyOSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdldFdl
YkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJvCiBi
b29sIFdlYlByb2Nlc3NQb29sOjpzX3VzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MgPSBm
YWxzZTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
TmV0d29ya1Byb2Nlc3NQcm94eSYgcHJveHksIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFi
bGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+
IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBy
b2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0
aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdl
SWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogd2Vic2l0ZURhdGFTdG9y
ZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Np
b25JRCk7CiAgICAgaWYgKCF3ZWJzaXRlRGF0YVN0b3JlKQpAQCAtNTQ2LDcgKzU0Niw3IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MoTmV0CiAgICAgaWYgKHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmll
cikgewogICAgICAgICAvLyBUaGlzIGlzIGEgc2VydmljZSB3b3JrZXIgZm9yIGEgc2VydmljZSB3
b3JrZXIgcGFnZSBzbyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSB1c2UgdXNlIHRoZSBwYWdlJ3Mg
V2ViUHJvY2VzcyBmb3IgdGhlIHNlcnZpY2Ugd29ya2VyLgogICAgICAgICBpZiAoKHNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVy
KHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllci0+cHJvY2Vzc0lkZW50aWZpZXIoKSkpKSB7Ci0g
ICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVTZXJ2aWNlV29ya2Vy
cyhwcm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvclNlcnZpY2VX
b3JrZXJzKCkpOworICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxl
V29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIHByb2Nl
c3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpKTsKICAg
ICAgICAgICAgIGlmIChzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hl
KCkpIHsKICAgICAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hlKCkucmVt
b3ZlUHJvY2Vzcygqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0NhY2hlOjpT
aG91bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIXNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSk7CkBAIC01NjQsNyArNTY0
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXQKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IHByb2Nlc3MucHRyKCk7
Ci0gICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVTZXJ2aWNlV29y
a2Vycyhwcm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvclNlcnZp
Y2VXb3JrZXJzKCkpOworICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5h
YmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIHBy
b2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpKTsK
IAogICAgICAgICAgICAgaWYgKHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNz
Q2FjaGUoKSkgewogICAgICAgICAgICAgICAgIHByb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUo
KS5yZW1vdmVQcm9jZXNzKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBXZWJQcm9jZXNzQ2Fj
aGU6OlNob3VsZFNodXREb3duUHJvY2Vzczo6Tm8pOwpAQCAtNTc3LDcgKzU3Nyw3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MoTmV0CiAgICAgfQogCiAgICAgaWYgKCFzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5KSB7Ci0gICAgICAgIGF1dG8gbmV3UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5
OjpjcmVhdGVGb3JTZXJ2aWNlV29ya2VycygqcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWlu
ICB7IHJlZ2lzdHJhYmxlRG9tYWluIH0sICp3ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICAgICAgYXV0
byBuZXdQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvcldvcmtlcnMoV2Vi
UHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCAqcHJvY2Vzc1Bvb2wsIFJl
Z2lzdHJhYmxlRG9tYWluICB7IHJlZ2lzdHJhYmxlRG9tYWluIH0sICp3ZWJzaXRlRGF0YVN0b3Jl
KTsKICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IG5ld1Byb2Nlc3NQcm94eS5w
dHIoKTsKIAogICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoU2Vydmlj
ZVdvcmtlciwgImVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MgY3JlYXRpbmcgYSBuZXcgc2VydmljZSB3b3JrZXIgcHJvY2VzcyAocHJvY2VzPSVw
LCBQSUQ9JWQpIiwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgc2VydmljZVdvcmtlclByb2Nl
c3NQcm94eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CkBAIC01ODYsMjAgKzU4Niw3MCBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKE5ldAogICAgICAgICBwcm9jZXNzUG9vbC0+bV9wcm9jZXNzZXMuYXBw
ZW5kKFdURk1vdmUobmV3UHJvY2Vzc1Byb3h5KSk7CiAgICAgfQogCi0gICAgQVNTRVJUKCFzZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzKCkuY29udGFpbnMoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkp
KTsKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5KTsKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHkpOwogCi0gICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2Vydmlj
ZVdvcmtlckNvbnRleHQocHJvY2Vzc1Bvb2wtPm1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzID8g
cHJvY2Vzc1Bvb2wtPm1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBwcm9jZXNz
UG9vbC0+bV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3JlKCksIHJlZ2lzdHJh
YmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKLSAgICBpZiAoIXByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJVc2VyQWdl
bnQuaXNOdWxsKCkpCi0gICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPnNldFNlcnZp
Y2VXb3JrZXJVc2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fc2VydmljZVdvcmtlclVzZXJBZ2VudCk7
CisgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2VydmljZVdvcmtlckNv
bnRleHQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNzUG9vbC0+bV93
b3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVsdFBhZ2VHcm91
cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtl
clBhZ2VJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgaWYgKCFw
cm9jZXNzUG9vbC0+bV93b3JrZXJVc2VyQWdlbnQuaXNOdWxsKCkpCisgICAgICAgIHNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHktPnNldFdvcmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV93b3Jr
ZXJVc2VyQWdlbnQpOwogfQorI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZUZy
b21TZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKK3ZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5
JiBwcm9jZXNzKQogewotICAgIEFTU0VSVChzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkuY29udGFp
bnMocHJvY2VzcykpOwotICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5yZW1vdmUocHJvY2Vz
cyk7CisgICAgQVNTRVJUKHdvcmtlclByb2Nlc3NlcygpLmNvbnRhaW5zKHByb2Nlc3MpKTsKKyAg
ICB3b3JrZXJQcm9jZXNzZXMoKS5yZW1vdmUocHJvY2Vzcyk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvKiB3ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFT
dG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQoc2Vzc2lvbklEKTsKKyAgICBpZiAo
IXdlYnNpdGVEYXRhU3RvcmUpCisgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkucHRyKCk7CisgICAgaWYgKCFwcm9jZXNzUG9vbHMo
KS5zaXplKCkpCisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWY8V2ViUHJvY2Vzc1Bv
b2w+PiBzaGFyZWRXb3JrZXJQcm9jZXNzUG9vbChXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKEFQSTo6
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKS5nZXQoKSkpOworCisgICAgLy8gQXJi
aXRyYXJpbHkgY2hvb3NlIHRoZSBmaXJzdCBwcm9jZXNzIHBvb2wgdG8gaG9zdCB0aGUgc2hhcmVk
IHdvcmtlciBwcm9jZXNzLgorICAgIGF1dG8qIHByb2Nlc3NQb29sID0gcHJvY2Vzc1Bvb2xzKClb
MF07CisgICAgQVNTRVJUKHByb2Nlc3NQb29sKTsKKworICAgIFdlYlByb2Nlc3NQcm94eSogc2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5IHsgbnVsbHB0ciB9OworCisgICAgZm9yIChhdXRvJiBwcm9j
ZXNzIDogcHJvY2Vzc1Bvb2wtPm1fcHJvY2Vzc2VzKSB7CisgICAgICAgIGlmIChwcm9jZXNzLnB0
cigpID09IHByb2Nlc3NQb29sLT5tX3ByZXdhcm1lZFByb2Nlc3MuZ2V0KCkgfHwgcHJvY2Vzcy0+
aXNEdW1teVByb2Nlc3NQcm94eSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlm
ICgmcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpICE9IHdlYnNpdGVEYXRhU3RvcmUpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFwcm9jZXNzLT5pc01hdGNoaW5nUmVnaXN0
cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5ID0gcHJvY2Vzcy5wdHIoKTsKKyAgICAg
ICAgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94
eTo6V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyLCBwcm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CisKKyAgICAgICAgaWYgKHNoYXJlZFdvcmtl
clByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKSB7CisgICAgICAgICAgICBwcm9jZXNz
UG9vbC0+d2ViUHJvY2Vzc0NhY2hlKCkucmVtb3ZlUHJvY2Vzcygqc2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5LCBXZWJQcm9jZXNzQ2FjaGU6OlNob3VsZFNodXREb3duUHJvY2Vzczo6Tm8pOworICAg
ICAgICAgICAgQVNTRVJUKCFzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2Fj
aGUoKSk7CisgICAgICAgIH0KKworICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19T
VEFUSUMoU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzIHJldXNpbmcgYW4gZXhpc3Rpbmcgd2ViIHByb2Nlc3MgKHByb2Nl
c3M9JXAsIFBJRD0lZCkiLCBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHksIHNoYXJlZFdvcmtlclBy
b2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIGlmICghc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5KSB7CisgICAgICAgIGF1dG8gbmV3
UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdlYlByb2Nl
c3NQcm94eTo6V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyLCAqcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJh
YmxlRG9tYWluICB7IHJlZ2lzdHJhYmxlRG9tYWluIH0sICp3ZWJzaXRlRGF0YVN0b3JlKTsKKyAg
ICAgICAgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5ID0gbmV3UHJvY2Vzc1Byb3h5LnB0cigpOwor
CisgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhTaGFyZWRXb3JrZXIs
ICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mg
Y3JlYXRpbmcgYSBuZXcgc2VydmljZSB3b3JrZXIgcHJvY2VzcyAocHJvY2Vzcz0lcCwgUElEPSVk
KSIsIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5w
cm9jZXNzSWRlbnRpZmllcigpKTsKKworICAgICAgICBwcm9jZXNzUG9vbC0+aW5pdGlhbGl6ZU5l
d1dlYlByb2Nlc3MobmV3UHJvY2Vzc1Byb3h5LCB3ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICAgICAg
cHJvY2Vzc1Bvb2wtPm1fcHJvY2Vzc2VzLmFwcGVuZChXVEZNb3ZlKG5ld1Byb2Nlc3NQcm94eSkp
OworICAgIH0KKworICAgIHdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5KTsKKworICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2hhcmVk
V29ya2VyQ29udGV4dChwcm9jZXNzUG9vbC0+bV93b3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQ
b29sLT5tX3dvcmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZhdWx0
UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3JlKCksIHJlZ2lzdHJhYmxlRG9tYWluLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgaWYgKCFwcm9jZXNzUG9vbC0+bV93b3JrZXJV
c2VyQWdlbnQuaXNOdWxsKCkpCisgICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+c2V0
V29ya2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3dvcmtlclVzZXJBZ2VudCk7CiB9Ci0jZW5k
aWYKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6d2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hh
bmdlZCgpCiB7CkBAIC0xMDAzLDEwICsxMDUzLDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlz
Y29ubmVjdFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogCiAgICAgbV9iYWNrRm9y
d2FyZENhY2hlLT5yZW1vdmVFbnRyaWVzRm9yUHJvY2Vzcyhwcm9jZXNzKTsKIAotI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdTZXJ2aWNlV29ya2Vy
cygpKQotICAgICAgICByZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3Nlcyhwcm9jZXNzKTsK
LSNlbmRpZgorICAgIGlmIChwcm9jZXNzLmlzUnVubmluZ1dvcmtlcnMoKSkKKyAgICAgICAgcmVt
b3ZlRnJvbVdvcmtlclByb2Nlc3Nlcyhwcm9jZXNzKTsKIAogICAgIHN0YXRpY19jYXN0PFdlYkNv
bnRleHRTdXBwbGVtZW50Kj4oc3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4o
KSktPnByb2Nlc3NEaWRDbG9zZSgmcHJvY2Vzcyk7CiAKQEAgLTEwNjcsMTIgKzExMTUsMTIgQEAg
UmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJs
ZURvbWFpbihXZWJzaXRlRGF0YVN0b3IKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
LVVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgV2ViUHJvY2Vzc1Bvb2w6OnVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2aWNlV29ya2VycygpCitVc2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyIFdlYlByb2Nlc3NQb29sOjp1c2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyRm9yV29ya2VycygpCiB7Ci0gICAgaWYgKCFtX3VzZXJDb250ZW50Q29udHJvbGxl
ckZvclNlcnZpY2VXb3JrZXIpCi0gICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yU2Vy
dmljZVdvcmtlciA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpjcmVhdGUoKTsKKyAg
ICBpZiAoIW1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2VycykKKyAgICAgICAgbV91c2Vy
Q29udGVudENvbnRyb2xsZXJGb3JXb3JrZXJzID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6OmNyZWF0ZSgpOwogCi0gICAgcmV0dXJuIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yU2Vy
dmljZVdvcmtlci0+aWRlbnRpZmllcigpOworICAgIHJldHVybiBtX3VzZXJDb250ZW50Q29udHJv
bGxlckZvcldvcmtlcnMtPmlkZW50aWZpZXIoKTsKIH0KICNlbmRpZgogCkBAIC0xMTE5LDE1ICsx
MTY3LDEzIEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdl
KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAKICAgICBhdXRvIHBhZ2UgPSBwcm9j
ZXNzLT5jcmVhdGVXZWJQYWdlKHBhZ2VDbGllbnQsIFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24p
KTsKIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAoIW1fc2VydmljZVdvcmtl
clByZWZlcmVuY2VzKSB7Ci0gICAgICAgIG1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzID0gcGFn
ZS0+cHJlZmVyZW5jZXNTdG9yZSgpOwotICAgICAgICBmb3IgKGF1dG8mIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzIDogc2VydmljZVdvcmtlclByb2Nlc3NlcygpKQotICAgICAgICAgICAgc2VydmljZVdv
cmtlclByb2Nlc3MudXBkYXRlU2VydmljZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoKm1fc2Vydmlj
ZVdvcmtlclByZWZlcmVuY2VzKTsKKyAgICBpZiAoIW1fd29ya2VyUHJlZmVyZW5jZXMpIHsKKyAg
ICAgICAgbV93b3JrZXJQcmVmZXJlbmNlcyA9IHBhZ2UtPnByZWZlcmVuY2VzU3RvcmUoKTsKKyAg
ICAgICAgZm9yIChhdXRvJiB3b3JrZXJQcm9jZXNzIDogd29ya2VyUHJvY2Vzc2VzKCkpCisgICAg
ICAgICAgICB3b3JrZXJQcm9jZXNzLnVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoKm1fd29y
a2VyUHJlZmVyZW5jZXMpOwogICAgIH0KICAgICBpZiAodXNlckNvbnRlbnRDb250cm9sbGVyKQot
ICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclNlcnZpY2VXb3JrZXIgPSB1c2VyQ29u
dGVudENvbnRyb2xsZXI7Ci0jZW5kaWYKKyAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJG
b3JXb3JrZXJzID0gdXNlckNvbnRlbnRDb250cm9sbGVyOwogCiAgICAgYm9vbCBlbmFibGVQcm9j
ZXNzU3dhcE9uQ3Jvc3NTaXRlTmF2aWdhdGlvbiA9IHBhZ2UtPnByZWZlcmVuY2VzKCkucHJvY2Vz
c1N3YXBPbkNyb3NzU2l0ZU5hdmlnYXRpb25FbmFibGVkKCk7CiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKQEAgLTExNTAsMTYgKzExOTYsMTQgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vz
c1Bvb2w6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSToKICAg
ICByZXR1cm4gcGFnZTsKIH0KIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnVwZGF0ZVNlcnZpY2VXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQpCit2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVXb3JrZXJVc2VyQWdlbnQoY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQpCiB7Ci0gICAgaWYgKG1fc2VydmljZVdvcmtlclVzZXJBZ2Vu
dCA9PSB1c2VyQWdlbnQpCisgICAgaWYgKG1fd29ya2VyVXNlckFnZW50ID09IHVzZXJBZ2VudCkK
ICAgICAgICAgcmV0dXJuOwotICAgIG1fc2VydmljZVdvcmtlclVzZXJBZ2VudCA9IHVzZXJBZ2Vu
dDsKLSAgICBmb3IgKGF1dG8mIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogc2VydmljZVdvcmtlclBy
b2Nlc3NlcygpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy5zZXRTZXJ2aWNlV29ya2Vy
VXNlckFnZW50KG1fc2VydmljZVdvcmtlclVzZXJBZ2VudCk7CisgICAgbV93b3JrZXJVc2VyQWdl
bnQgPSB1c2VyQWdlbnQ7CisgICAgZm9yIChhdXRvJiB3b3JrZXJQcm9jZXNzIDogd29ya2VyUHJv
Y2Vzc2VzKCkpCisgICAgICAgIHdvcmtlclByb2Nlc3Muc2V0V29ya2VyVXNlckFnZW50KG1fd29y
a2VyVXNlckFnZW50KTsKIH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQmVn
aW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFdl
YnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKIHsKQEAgLTE1MzgsOCArMTU4MiwxMyBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjp0ZXJtaW5hdGVTZXJ2aWNlV29ya2VycygpCiB7CiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKLSAgICB3
aGlsZSAoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmNvbXB1dGVTaXplKCkpCi0gICAgICAgIHNl
cnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5iZWdpbigpLT5kaXNhYmxlU2VydmljZVdvcmtlcnMoKTsK
KyAgICBWZWN0b3I8UmVmPFdlYlByb2Nlc3NQcm94eT4+IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXM7
CisgICAgd29ya2VyUHJvY2Vzc2VzKCkuZm9yRWFjaChbJl0oYXV0byYgcHJvY2VzcykgeworICAg
ICAgICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQorICAgICAgICAgICAg
c2VydmljZVdvcmtlclByb2Nlc3Nlcy5hcHBlbmQocHJvY2Vzcyk7CisgICAgfSk7CisgICAgZm9y
IChhdXRvJiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMpCisg
ICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJv
eHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogI2VuZGlmCiB9CiAKQEAgLTE3NjcsMTMg
KzE4MTYsMTEgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVwb3J0V2ViQ29udGVudENQVVRpbWUo
U2Vjb25kcyBjcHVUaW1lLCB1aW50NjRfdCBhY3Rpdml0eVMKICNlbmRpZgogfQogCi0jaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQotV2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5PiYgV2ViUHJv
Y2Vzc1Bvb2w6OnNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKQorV2Vha0hhc2hTZXQ8V2ViUHJvY2Vz
c1Byb3h5PiYgV2ViUHJvY2Vzc1Bvb2w6OndvcmtlclByb2Nlc3NlcygpCiB7CiAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4+IHByb2Nlc3NlczsK
ICAgICByZXR1cm4gcHJvY2Vzc2VzOwogfQotI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkKIHsKQEAgLTE3ODUsMjAgKzE4MzIsMjUgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKQogICAgIGlmIChhdXRv
KiBncHVQcm9jZXNzID0gR1BVUHJvY2Vzc1Byb3h5OjpzaW5nbGV0b25JZkNyZWF0ZWQoKSkKICAg
ICAgICAgZ3B1UHJvY2Vzcy0+dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbigpOwogI2VuZGlmCi0jaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCiAgICAgLy8gQ2hlY2sgb24gbmV4dCBydW4gbG9vcCBz
aW5jZSB0aGUgd2ViIHByb2Nlc3MgcHJveHkgdG9rZW5zIGFyZSBwcm9iYWJseSBiZWluZyB1cGRh
dGVkLgogICAgIGNhbGxPbk1haW5SdW5Mb29wKFtdIHsKLSAgICAgICAgZm9yIChhdXRvJiBzZXJ2
aWNlV29ya2VyUHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSkKLSAgICAgICAgICAg
IHNlcnZpY2VXb3JrZXJQcm9jZXNzLnVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9u
KCk7Ci0gICAgfSk7CisgICAgICAgIHdvcmtlclByb2Nlc3NlcygpLmZvckVhY2goW10oYXV0byYg
d29ya2VyUHJvY2VzcykgeworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICAgICAgICAg
IGlmICh3b3JrZXJQcm9jZXNzLmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCisgICAgICAgICAg
ICAgICAgd29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdlYlByb2Nl
c3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiAjZW5kaWYKKyAgICAgICAgICAg
IGlmICh3b3JrZXJQcm9jZXNzLmlzUnVubmluZ1NoYXJlZFdvcmtlcnMoKSkKKyAgICAgICAgICAg
ICAgICB3b3JrZXJQcm9jZXNzLnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV2ViUHJvY2Vz
c1Byb3h5OjpXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpOworICAgICAgICB9KTsKKyAgICB9KTsK
IH0KIAogYm9vbCBXZWJQcm9jZXNzUG9vbDo6aXNTZXJ2aWNlV29ya2VyUGFnZUlEKFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdAogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKICAgICAvLyBGSVhNRTogVGhpcyBpcyBpbmVmZmljaWVudC4KLSAgICByZXR1cm4gV1RGOjph
bnlPZihzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCksIFtwYWdlSURdKGF1dG8mIHByb2Nlc3MpIHsK
KyAgICByZXR1cm4gV1RGOjphbnlPZih3b3JrZXJQcm9jZXNzZXMoKSwgW3BhZ2VJRF0oYXV0byYg
cHJvY2VzcykgewogICAgICAgICByZXR1cm4gcHJvY2Vzcy5oYXNTZXJ2aWNlV29ya2VyUGFnZVBy
b3h5KHBhZ2VJRCk7CiAgICAgfSk7CiAjZW5kaWYKQEAgLTIxMjQsMTYgKzIxNzYsMjYgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6c2V0VXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyhib29s
IHVzZVNlcGFyYXRlU2VydmljZVcKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK3Np
emVfdCBXZWJQcm9jZXNzUG9vbDo6c2VydmljZVdvcmtlclByb3hpZXNDb3VudCgpIGNvbnN0Cit7
CisgICAgdW5zaWduZWQgY291bnQgPSAwOworICAgIHdvcmtlclByb2Nlc3NlcygpLmZvckVhY2go
WyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICAgICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nU2Vydmlj
ZVdvcmtlcnMoKSkKKyAgICAgICAgICAgICsrY291bnQ7CisgICAgfSk7CisgICAgcmV0dXJuIGNv
dW50OworfQorCiBib29sIFdlYlByb2Nlc3NQb29sOjpoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3Vu
ZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6YW55T2Yoc2Vy
dmljZVdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9jZXNzKSB7CisgICAgcmV0dXJuIFdU
Rjo6YW55T2Yod29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAg
cmV0dXJuIHByb2Nlc3MuaGFzU2VydmljZVdvcmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3Rp
bmcoKTsKICAgICB9KTsKIH0KIAogYm9vbCBXZWJQcm9jZXNzUG9vbDo6aGFzU2VydmljZVdvcmtl
ckJhY2tncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6
OmFueU9mKHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2VzcykgeworICAg
IHJldHVybiBXVEY6OmFueU9mKHdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9jZXNzKSB7
CiAgICAgICAgIHJldHVybiBwcm9jZXNzLmhhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kQWN0aXZp
dHlGb3JUZXN0aW5nKCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaAppbmRleCBlYjY2ZDg5NDkwZGYuLmU3MGI2ZjQyOWY3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0zNzQsMTcgKzM3NCwyMCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0RpZFRlcm1pbmF0ZShOZXR3b3JrUHJvY2Vzc1By
b3h5JiwgTmV0d29ya1Byb2Nlc3NQcm94eTo6VGVybWluYXRpb25SZWFzb24pOwogCiAgICAgYm9v
bCBpc1NlcnZpY2VXb3JrZXJQYWdlSUQoV2ViUGFnZVByb3h5SWRlbnRpZmllcikgY29uc3Q7Cisg
ICAgdm9pZCByZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYpOworCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFNlcnZp
Y2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQ
cm94eSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRl
bnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0g
ICAgdm9pZCByZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkm
KTsKLSAgICBzaXplX3Qgc2VydmljZVdvcmtlclByb3hpZXNDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb21wdXRlU2l6ZSgpOyB9Ci0gICAgdm9pZCB1cGRh
dGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKLSAgICBV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXJGb3JTZXJ2aWNlV29ya2VycygpOworICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFNlcnZp
Y2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25J
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICBzaXplX3Qgc2VydmljZVdvcmtl
clByb3hpZXNDb3VudCgpIGNvbnN0OworICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKTsKICAgICBib29s
IGhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3Q7CiAg
ICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNv
bnN0OwogI2VuZGlmCiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyUHJvY2Vzc0NyYXNoZWQoV2ViUHJv
Y2Vzc1Byb3h5Jik7CiAKKyAgICB2b2lkIHVwZGF0ZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCk7CisgICAgc3RhdGljIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkgY29u
c3Q7CiAjZW5kaWYKQEAgLTYxOCwxMyArNjIxLDExIEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFw
PFBBTDo6U2Vzc2lvbklELCBXZWFrUHRyPFdlYlByb2Nlc3NQcm94eT4+IG1fZHVtbXlQcm9jZXNz
UHJveGllczsgLy8gTGlnaHR3ZWlnaHQgV2ViUHJvY2Vzc1Byb3h5IG9iamVjdHMgd2l0aG91dCBi
YWNraW5nIHByb2Nlc3MuCiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgc3RhdGlj
IFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKTsK
LSAgICBib29sIG1fd2FpdGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiB7IGZh
bHNlIH07Ci0gICAgU3RyaW5nIG1fc2VydmljZVdvcmtlclVzZXJBZ2VudDsKLSAgICBzdGQ6Om9w
dGlvbmFsPFdlYlByZWZlcmVuY2VzU3RvcmU+IG1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzOwot
ICAgIFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gbV91c2VyQ29udGVudENv
bnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyOwotI2VuZGlmCisgICAgc3RhdGljIFdlYWtIYXNoU2V0
PFdlYlByb2Nlc3NQcm94eT4mIHdvcmtlclByb2Nlc3NlcygpOworCisgICAgc3RkOjpvcHRpb25h
bDxXZWJQcmVmZXJlbmNlc1N0b3JlPiBtX3dvcmtlclByZWZlcmVuY2VzOworICAgIFJlZlB0cjxX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JX
b3JrZXJzOworICAgIFN0cmluZyBtX3dvcmtlclVzZXJBZ2VudDsKIAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKICAgICBSZWZQdHI8R1BVUHJvY2Vzc1Byb3h5PiBtX2dwdVByb2Nlc3M7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAwNTdkNDk5MjQx
OGEuLmI3NDZhN2Q3ZDIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNpbmNs
dWRlICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCkBAIC0xODIsMTEgKzE4MywxMSBAQCBSZWY8
V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9vbCYg
cHJvY2Vzc1Bvb2wsIFdlYnNpdAogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotUmVm
PFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JTZXJ2aWNlV29ya2Vy
cyhXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0
cmFibGVEb21haW4sIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCitSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvcldvcmtlcnMoV29ya2VyVHlw
ZSB3b3JrZXJUeXBlLCBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9t
YWluJiYgcmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3Rv
cmUpCiB7CiAgICAgYXV0byBwcm94eSA9IGFkb3B0UmVmKCpuZXcgV2ViUHJvY2Vzc1Byb3h5KHBy
b2Nlc3NQb29sLCAmd2Vic2l0ZURhdGFTdG9yZSwgSXNQcmV3YXJtZWQ6Ok5vLCBDcm9zc09yaWdp
bk1vZGU6OlNoYXJlZCwgQ2FwdGl2ZVBvcnRhbE1vZGU6OkRpc2FibGVkKSk7CiAgICAgcHJveHkt
Pm1fcmVnaXN0cmFibGVEb21haW4gPSBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKLSAgICBw
cm94eS0+ZW5hYmxlU2VydmljZVdvcmtlcnMocHJvY2Vzc1Bvb2wudXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllckZvclNlcnZpY2VXb3JrZXJzKCkpOworICAgIHByb3h5LT5lbmFibGVXb3Jr
ZXJzKHdvcmtlclR5cGUsIHByb2Nlc3NQb29sLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXJGb3JXb3JrZXJzKCkpOwogICAgIHByb3h5LT5jb25uZWN0KCk7CiAgICAgcmV0dXJuIHByb3h5
OwogfQpAQCAtOTk1LDEwICs5OTYsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZEJlY29t
ZVVucmVzcG9uc2l2ZSgpCiAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGlzUmVzcG9uc2l2ZUNh
bGxiYWNrcykKICAgICAgICAgY2FsbGJhY2soaXNXZWJQcm9jZXNzUmVzcG9uc2l2ZSk7CiAKLSAg
ICAvLyBJZiB0aGUgd2ViIHByb2Nlc3MgYmVjb21lcyB1bnJlc3BvbnNpdmUgYW5kIG9ubHkgcnVu
cyBzZXJ2aWNlIHdvcmtlcnMsIGtpbGwgaXQgb3Vyc2VsdmVzIHNpbmNlIHRoZXJlIGFyZSBubyBu
YXRpdmUgY2xpZW50cyB0byBkbyBpdC4KLSAgICBpZiAoaXNSdW5uaW5nU2VydmljZVdvcmtlcnMo
KSAmJiBtX3BhZ2VNYXAuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxF
QVNFX0xPR19FUlJPUihQZXJmb3JtYW5jZUxvZ2dpbmcsICJkaWRCZWNvbWVVbnJlc3BvbnNpdmU6
IFRlcm1pbmF0aW5nIHNlcnZpY2Ugd29ya2VyLW9ubHkgd2ViIHByb2Nlc3MgYmVjYXVzZSBpdCBp
cyB1bnJlc3BvbnNpdmUiKTsKLSAgICAgICAgZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAg
Ly8gSWYgdGhlIHdlYiBwcm9jZXNzIGJlY29tZXMgdW5yZXNwb25zaXZlIGFuZCBvbmx5IHJ1bnMg
c2VydmljZS9zaGFyZWQgd29ya2Vycywga2lsbCBpdCBvdXJzZWx2ZXMgc2luY2UgdGhlcmUgYXJl
IG5vIG5hdGl2ZSBjbGllbnRzIHRvIGRvIGl0LgorICAgIGlmIChpc1J1bm5pbmdXb3JrZXJzKCkg
JiYgbV9wYWdlTWFwLmlzRW1wdHkoKSkgeworICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFT
RV9MT0dfRVJST1IoUGVyZm9ybWFuY2VMb2dnaW5nLCAiZGlkQmVjb21lVW5yZXNwb25zaXZlOiBU
ZXJtaW5hdGluZyB3b3JrZXItb25seSB3ZWIgcHJvY2VzcyBiZWNhdXNlIGl0IGlzIHVucmVzcG9u
c2l2ZSIpOworICAgICAgICBkaXNhYmxlV29ya2Vycyh7IFdvcmtlclR5cGU6OlNlcnZpY2VXb3Jr
ZXIsIFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciB9KTsKICAgICAgICAgdGVybWluYXRlKCk7CiAg
ICAgfQogfQpAQCAtMTY5NCw4ICsxNjk1LDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKGNvbnN0IFVSTCYgdXJsKQogICAgIGF1dG8g
cmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9Owog
ICAgIGlmIChtX3JlZ2lzdHJhYmxlRG9tYWluICYmICptX3JlZ2lzdHJhYmxlRG9tYWluICE9IHJl
Z2lzdHJhYmxlRG9tYWluKSB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgICAgICBk
aXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICAgICAgZGlzYWJsZVdvcmtlcnMoV29ya2VyVHlw
ZTo6U2VydmljZVdvcmtlcik7CiAjZW5kaWYKKwogICAgICAgICAvLyBOdWxsIG91dCByZWdpc3Ry
YWJsZSBkb21haW4gc2luY2UgdGhpcyBwcm9jZXNzIGhhcyBub3cgYmVlbiB1c2VkIGZvciBzZXZl
cmFsIGRvbWFpbnMuCiAgICAgICAgIG1fcmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiB7IH07CiAgICAgICAgIHJldHVybjsKQEAgLTE4NzIsNTQgKzE4NzQsODUg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KGNv
bnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHMKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
ICAgICB9LCAwKTsKIH0KKyNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0U2Vydmlj
ZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKK3ZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpzZXRXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiB7Ci0g
ICAgQVNTRVJUKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U2V0VXNlckFnZW50IHsgdXNlckFnZW50
IH0sIDApOworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBpZiAobV9zZXJ2aWNlV29y
a2VySW5mb3JtYXRpb24pCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2VyQWdlbnQgfSwgMCk7CisjZW5kaWYKKyAg
ICBpZiAobV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbikKKyAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1
c2VyQWdlbnQgfSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNl
V29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkK
K3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogewotICAgIEFTU0VSVChtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbik7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OlVwZGF0ZVByZWZlcmVuY2VzU3RvcmUgeyBzdG9yZSB9LCAwKTsKKyNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYgKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQor
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBk
YXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDApOworI2VuZGlmCisgICAgaWYgKG1fc2hh
cmVkV29ya2VySW5mb3JtYXRpb24pCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0
b3JlIH0sIDApOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlU2VydmljZVdvcmtl
clByb2Nlc3NBc3NlcnRpb24oKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclBy
b2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZSB3b3JrZXJUeXBlKQogewotICAgIFdFQlBST0NFU1NQ
Uk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzQXNzZXJ0aW9uOiIpOwotICAgIEFTU0VSVChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlv
bik7Ci0gICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKKyAgICBhdXRvJiB3b3Jr
ZXJJbmZvcm1hdGlvbiA9IHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8g
bV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA6IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOwor
ICAgIEFTU0VSVCh3b3JrZXJJbmZvcm1hdGlvbik7CisgICAgaWYgKCF3b3JrZXJJbmZvcm1hdGlv
bikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBzaG91bGRUYWtlRm9yZWdyb3VuZEFjdGl2
aXR5ID0gV1RGOjphbnlPZihtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vz
c2VzLCBbJl0oYXV0byYgcHJvY2VzcykgeworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xP
RyhQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb246IHdvcmtl
clR5cGU9JXtwdWJsaWN9cyIsIHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVkV29ya2Vy
ID8gInNoYXJlZCIgOiAic2VydmljZSIpOworCisgICAgLy8gRklYTUU6IENsaWVudHMgZG8gbm90
IHByb3Blcmx5IGdldCBwb3B1bGF0ZWQgaW4gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiBzbyB3
ZSBjdXJyZW50bHkgdGFrZSBhbiBhc3NlcnRpb24gbm8gbWF0dGVyIHdoYXQuCisgICAgaWYgKHdv
cmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSB7CisgICAgICAgIGlmICghUHJv
Y2Vzc1Rocm90dGxlcjo6aXNWYWxpZEZvcmVncm91bmRBY3Rpdml0eSh3b3JrZXJJbmZvcm1hdGlv
bi0+YWN0aXZpdHkpKQorICAgICAgICAgICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0g
bV90aHJvdHRsZXIuZm9yZWdyb3VuZEFjdGl2aXR5KCJXb3JrZXIgZm9yIGZvcmVncm91bmQgdmll
dyhzKSJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBib29sIHNob3VsZFRha2VG
b3JlZ3JvdW5kQWN0aXZpdHkgPSBXVEY6OmFueU9mKHdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQ
cm9jZXNzZXMsIFsmXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiAmcHJvY2VzcyAh
PSB0aGlzICYmICEhcHJvY2Vzcy5tX2ZvcmVncm91bmRUb2tlbjsKICAgICB9KTsKICAgICBpZiAo
c2hvdWxkVGFrZUZvcmVncm91bmRBY3Rpdml0eSkgewotICAgICAgICBpZiAoIVByb2Nlc3NUaHJv
dHRsZXI6OmlzVmFsaWRGb3JlZ3JvdW5kQWN0aXZpdHkobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24tPmFjdGl2aXR5KSkKLSAgICAgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5h
Y3Rpdml0eSA9IG1fdGhyb3R0bGVyLmZvcmVncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIg
Zm9yIGZvcmVncm91bmQgdmlldyhzKSJfcyk7CisgICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxl
cjo6aXNWYWxpZEZvcmVncm91bmRBY3Rpdml0eSh3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkp
KQorICAgICAgICAgICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIu
Zm9yZWdyb3VuZEFjdGl2aXR5KCJXb3JrZXIgZm9yIGZvcmVncm91bmQgdmlldyhzKSJfcyk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBib29sIHNob3VsZFRha2VCYWNrZ3JvdW5kQWN0
aXZpdHkgPSBXVEY6OmFueU9mKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9j
ZXNzZXMsIFsmXShhdXRvJiBwcm9jZXNzKSB7CisgICAgYm9vbCBzaG91bGRUYWtlQmFja2dyb3Vu
ZEFjdGl2aXR5ID0gV1RGOjphbnlPZih3b3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2Vz
LCBbJl0oYXV0byYgcHJvY2VzcykgewogICAgICAgICByZXR1cm4gJnByb2Nlc3MgIT0gdGhpcyAm
JiAhIXByb2Nlc3MubV9iYWNrZ3JvdW5kVG9rZW47CiAgICAgfSk7CiAgICAgaWYgKHNob3VsZFRh
a2VCYWNrZ3JvdW5kQWN0aXZpdHkpIHsKLSAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjpp
c1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5KG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rp
dml0eSkpCi0gICAgICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkg
PSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2VyIGZvciBiYWNr
Z3JvdW5kIHZpZXcocykiX3MpOworICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFs
aWRCYWNrZ3JvdW5kQWN0aXZpdHkod29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKKyAgICAg
ICAgICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmJhY2tncm91
bmRBY3Rpdml0eSgiV29ya2VyIGZvciBiYWNrZ3JvdW5kIHZpZXcocykiX3MpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9j
ZXNzaW5nKSB7CisgICAgaWYgKHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2VydmljZVdvcmtl
ciAmJiBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZykgewogICAgICAgICBX
RUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJTZXJ2aWNlIFdv
cmtlciBmb3IgYmFja2dyb3VuZCBwcm9jZXNzaW5nIik7Ci0gICAgICAgIGlmICghUHJvY2Vzc1Ro
cm90dGxlcjo6aXNWYWxpZEJhY2tncm91bmRBY3Rpdml0eShtX3NlcnZpY2VXb3JrZXJJbmZvcm1h
dGlvbi0+YWN0aXZpdHkpKQotICAgICAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24t
PmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtl
ciBmb3IgYmFja2dyb3VuZCBwcm9jZXNzaW5nIl9zKTsKKyAgICAgICAgaWYgKCFQcm9jZXNzVGhy
b3R0bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0aW9uLT5hY3Rp
dml0eSkpCisgICAgICAgICAgICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90
dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2VyIGZvciBiYWNrZ3JvdW5kIHBy
b2Nlc3NpbmciX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9zZXJ2aWNlV29y
a2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbnVsbHB0cjsKKyAgICB3b3JrZXJJbmZvcm1hdGlv
bi0+YWN0aXZpdHkgPSBudWxscHRyOworfQorCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZXN0YWJs
aXNoU2hhcmVkV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgV0VCUFJPQ0VTU1BST1hZ
X1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHQ6
IFN0YXJ0ZWQiKTsKKyAgICBtYXJrUHJvY2Vzc0FzUmVjZW50bHlVc2VkKCk7CisgICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hTaGFyZWRXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRlZmF1bHRQ
YWdlR3JvdXAoKS5wYWdlR3JvdXBJRCgpLCBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uLT5yZW1v
dGVXb3JrZXJQYWdlUHJveHlJRCwgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbi0+cmVtb3RlV29y
a2VyUGFnZUlELCBzdG9yZSwgcmVnaXN0cmFibGVEb21haW4sIG1fc2hhcmVkV29ya2VySW5mb3Jt
YXRpb24tPmluaXRpYWxpemF0aW9uRGF0YSB9LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgV0VCUFJPQ0VT
U1BST1hZX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNv
bnRleHQ6IEZpbmlzaGVkIik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSwg
MCk7CiB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYg
cHJveHkpCiB7CiAgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKQEAgLTE5Mjcs
NyArMTk2MCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCiAKICAgICBXRUJQUk9DRVNTUFJP
WFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgInJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dFByb2Nlc3M6IGNsaWVudFByb2Nlc3M9JXAsIGNsaWVudFBJRD0lZCIsICZwcm94eSwgcHJveHku
cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNs
aWVudFByb2Nlc3Nlcy5hZGQocHJveHkpOwotICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNz
QXNzZXJ0aW9uKCk7CisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBl
OjpTZXJ2aWNlV29ya2VyKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVucmVnaXN0ZXJT
ZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb3h5KQpAQCAtMTkz
Nyw3ICsxOTcwLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVucmVnaXN0ZXJTZXJ2aWNlV29y
a2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb3gKIAogICAgIFdFQlBST0NFU1NQ
Uk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAidW5yZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnRQcm9jZXNzOiBjbGllbnRQcm9jZXNzPSVwLCBjbGllbnRQSUQ9JWQiLCAmcHJveHksIHBy
b3h5LnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9u
LT5jbGllbnRQcm9jZXNzZXMucmVtb3ZlKHByb3h5KTsKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2Vy
UHJvY2Vzc0Fzc2VydGlvbigpOworICAgIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29y
a2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpoYXNT
ZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0CkBAIC0xOTU3
LDcgKzE5OTAsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c3RhcnRTZXJ2aWNlV29ya2VyQmFj
a2dyb3VuZFByb2Nlc3NpbmcoKQogCiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFBy
b2Nlc3NTdXNwZW5zaW9uLCAic3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3Npbmci
KTsKICAgICBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyA9IHRydWU7Ci0g
ICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKKyAgICB1cGRhdGVXb3Jr
ZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogfQogCiB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6ZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKCkK
QEAgLTE5NjcsMjMgKzIwMDAsMzkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VX
b3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZygpCiAKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFT
RV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJlbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nl
c3NpbmciKTsKICAgICBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyA9IGZh
bHNlOwotICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBk
YXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0K
ICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpkaXNhYmxlU2VydmljZVdvcmtlcnMoKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpc2FibGVX
b3JrZXJzKE9wdGlvblNldDxXb3JrZXJUeXBlPiB3b3JrZXJUeXBlKQogewotICAgIGlmICghbV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAgQVNTRVJUKCF3b3JrZXJUeXBlLmlzRW1wdHko
KSk7CisKKyAgICBib29sIGRpZENoYW5nZSA9IGZhbHNlOworICAgIGlmICh3b3JrZXJUeXBlLmNv
bnRhaW5zKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpICYmIG1fc2VydmljZVdvcmtlckluZm9y
bWF0aW9uKSB7CisgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uID0geyB9OworICAg
ICAgICBkaWRDaGFuZ2UgPSB0cnVlOworICAgIH0KKyAgICBpZiAod29ya2VyVHlwZS5jb250YWlu
cyhXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpICYmIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24p
IHsKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA9IHsgfTsKKyAgICAgICAgZGlk
Q2hhbmdlID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKCFkaWRDaGFuZ2UpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiZGlz
YWJsZVNlcnZpY2VXb3JrZXJzOiIpOwotICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uID0g
eyB9OworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzLCAiZGlzYWJsZVdv
cmtlcnM6IERpc2FibGluZyB3b3JrZXJzIChTaGFyZWRXb3JrZXJzPSVkLCBTZXJ2aWNlV29ya2Vy
cz0lZCkiLCB3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciksIHdv
cmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikpOworCiAgICAgdXBk
YXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKIAorICAgIGlmICghaXNSdW5uaW5n
V29ya2VycygpKQorICAgICAgICBwcm9jZXNzUG9vbCgpLnJlbW92ZUZyb21Xb3JrZXJQcm9jZXNz
ZXMoKnRoaXMpOworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHByb2Nlc3NQb29s
KCkucmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKnRoaXMpOwotICAgIHNlbmQoTWVz
c2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9zZSB7IH0sIDApOworICAg
IGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpKQorICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q2xvc2Ug
eyB9LCAwKTsKICNlbmRpZgorICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6
OlNoYXJlZFdvcmtlcikpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q2xvc2UgeyB9LCAwKTsKIAogICAgIG1heWJlU2h1dERv
d24oKTsKIH0KQEAgLTIwMDQsMTEgKzIwNTMsMTMgQEAgc3RhdGljIFZlY3RvcjxzdGQ6OnBhaXI8
V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLCBVUkw+PiBjb250ZW50UnVsZUxpc3RzRnIK
IH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlU2VydmljZVdvcmtlcnMo
Y29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYgdXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllcikKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVXb3JrZXJzKFdvcmtl
clR5cGUgd29ya2VyVHlwZSwgY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYg
dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKIHsKLSAgICBBU1NFUlQoIW1fc2Vydmlj
ZVdvcmtlckluZm9ybWF0aW9uKTsKLSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2Vy
dmljZVdvcmtlciwgImVuYWJsZVNlcnZpY2VXb3JrZXJzOiIpOwotICAgIG1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uID0gUmVtb3RlV29ya2VySW5mb3JtYXRpb24geworICAgIFdFQlBST0NFU1NQ
Uk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiZW5hYmxlV29ya2Vyczogd29ya2VyVHlw
ZT0ldSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih3b3JrZXJUeXBlKSk7CisgICAgYXV0byYgd29y
a2VySW5mb3JtYXRpb24gPSB3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/
IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gOiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsK
KyAgICBBU1NFUlQoIXdvcmtlckluZm9ybWF0aW9uKTsKKworICAgIHdvcmtlckluZm9ybWF0aW9u
ID0gUmVtb3RlV29ya2VySW5mb3JtYXRpb24gewogICAgICAgICBXZWJQYWdlUHJveHlJZGVudGlm
aWVyOjpnZW5lcmF0ZSgpLAogICAgICAgICBQYWdlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwKICAg
ICAgICAgUmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhIHsKQEAgLTIwMjEsOSArMjA3Miw4
IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVTZXJ2aWNlV29ya2Vycyhjb25zdCBVc2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyCiAgICAgICAgIHsgfQogICAgIH07CiAgICAgdXBk
YXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKLSNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCi0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKLSNlbmRp
ZgorCisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbih3b3JrZXJUeXBlKTsKIH0KIAog
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZENyZWF0ZVNsZWVwRGlzYWJsZXIoU2xlZXBEaXNhYmxl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiByZWFzb24sIGJvb2wgZGlzcGxh
eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggZjhiNzk1
YjFkMzQzLi43MGU4OTA1MWNjYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oCkBAIC0xMzYsOSArMTM2LDEzIEBAIHB1YmxpYzoKIAogICAgIGVudW0gY2xhc3Mg
U2hvdWxkTGF1bmNoUHJvY2VzcyA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgZW51bSBjbGFzcyBD
YXB0aXZlUG9ydGFsTW9kZSA6IGJvb2wgeyBEaXNhYmxlZCwgRW5hYmxlZCB9OworICAgIGVudW0g
Y2xhc3MgV29ya2VyVHlwZSA6IHVpbnQzMl90IHsKKyAgICAgICAgU2VydmljZVdvcmtlciA9IDEg
PDwgMCwKKyAgICAgICAgU2hhcmVkV29ya2VyID0gMSA8PCAxCisgICAgfTsKIAogICAgIHN0YXRp
YyBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmLCBXZWJzaXRlRGF0
YVN0b3JlKiwgQ2FwdGl2ZVBvcnRhbE1vZGUsIElzUHJld2FybWVkLCBXZWJDb3JlOjpDcm9zc09y
aWdpbk1vZGUgPSBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGU6OlNoYXJlZCwgU2hvdWxkTGF1bmNo
UHJvY2VzcyA9IFNob3VsZExhdW5jaFByb2Nlc3M6Olllcyk7Ci0gICAgc3RhdGljIFJlZjxXZWJQ
cm9jZXNzUHJveHk+IGNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKFdlYlByb2Nlc3NQb29sJiwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgV2Vic2l0ZURhdGFTdG9yZSYpOworICAgIHN0YXRp
YyBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGVGb3JXb3JrZXJzKFdvcmtlclR5cGUsIFdlYlBy
b2Nlc3NQb29sJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgV2Vic2l0ZURhdGFTdG9y
ZSYpOwogCiAgICAgfldlYlByb2Nlc3NQcm94eSgpOwogCkBAIC0xNjEsOCArMTY1LDggQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0SXNJblByb2Nlc3NDYWNoZShib29sLCBXaWxsU2h1dERvd24gPSBX
aWxsU2h1dERvd246Ok5vKTsKICAgICBib29sIGlzSW5Qcm9jZXNzQ2FjaGUoKSBjb25zdCB7IHJl
dHVybiBtX2lzSW5Qcm9jZXNzQ2FjaGU7IH0KIAotICAgIHZvaWQgZW5hYmxlU2VydmljZVdvcmtl
cnMoY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYpOwotICAgIHZvaWQgZGlz
YWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgdm9pZCBlbmFibGVXb3JrZXJzKFdvcmtlclR5cGUs
IGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImKTsKKyAgICB2b2lkIGRpc2Fi
bGVXb3JrZXJzKE9wdGlvblNldDxXb3JrZXJUeXBlPik7CiAKICAgICBXZWJzaXRlRGF0YVN0b3Jl
JiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyBBU1NFUlQobV93ZWJzaXRlRGF0YVN0b3JlKTsg
cmV0dXJuICptX3dlYnNpdGVEYXRhU3RvcmU7IH0KICAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3Rv
cmUoV2Vic2l0ZURhdGFTdG9yZSYpOwpAQCAtMTk0LDYgKzE5OCw5IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSBjb25zdCB7IHJldHVybiAhIW1fc2Vydmlj
ZVdvcmtlckluZm9ybWF0aW9uOyB9CiAgICAgYm9vbCBpc1N0YW5kYWxvbmVTZXJ2aWNlV29ya2Vy
UHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkgJiYgIXBh
Z2VDb3VudCgpOyB9CisgICAgYm9vbCBpc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkgY29uc3QgeyBy
ZXR1cm4gISFtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uOyB9CisgICAgYm9vbCBpc1N0YW5kYWxv
bmVTaGFyZWRXb3JrZXJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gaXNSdW5uaW5nU2hhcmVkV29y
a2VycygpICYmICFwYWdlQ291bnQoKTsgfQorICAgIGJvb2wgaXNSdW5uaW5nV29ya2VycygpIGNv
bnN0IHsgcmV0dXJuIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gfHwgbV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb247IH0KIAogICAgIGJvb2wgaXNEdW1teVByb2Nlc3NQcm94eSgpIGNvbnN0Owog
CkBAIC0zNTksMTIgKzM2NiwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZUF1ZGlibGVN
ZWRpYUFzc2VydGlvbnMoKTsKIAorICAgIHZvaWQgc2V0V29ya2VyVXNlckFnZW50KGNvbnN0IFN0
cmluZyYpOworICAgIHZvaWQgdXBkYXRlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJik7CisgICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0
KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCB1cGRhdGVXb3Jr
ZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGUpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKICAgICB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2
b2lkIHNldFNlcnZpY2VXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCB1
cGRhdGVTZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJik7CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyUGFnZVByb3h5KFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgcGFnZVByb3h5SUQpIHsgcmV0dXJuIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9u
ICYmIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5yZW1vdGVXb3JrZXJQYWdlUHJveHlJRCA9
PSBwYWdlUHJveHlJRDsgfQotICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3Nl
cnRpb24oKTsKICAgICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2Vi
UHJvY2Vzc1Byb3h5Jik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFBy
b2Nlc3MoV2ViUHJvY2Vzc1Byb3h5Jik7CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyRm9yZWdy
b3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0OwpAQCAtNjU2LDYgKzY2NCw3IEBAIHByaXZh
dGU6CiAgICAgICAgIFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4gY2xpZW50UHJvY2Vzc2Vz
OwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxSZW1vdGVXb3JrZXJJbmZvcm1hdGlvbj4gbV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxSZW1vdGVXb3JrZXJJ
bmZvcm1hdGlvbj4gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbjsKICAgICBib29sIG1faGFzU2Vy
dmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nIHsgZmFsc2UgfTsKIAogICAgIEhhc2hNYXA8
V2ViQ29yZTo6U2xlZXBEaXNhYmxlcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpTbGVlcERpc2FibGVyPj4gbV9zbGVlcERpc2FibGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE1NmY3MDMxZGYxMi4uNmMwMDgz
NWZiZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTg4MSw4ICs4ODEsMTAgQEAKIAkJNDYxNEYxMzIyNURFRDg3NTAwNzAwNkU3IC8q
IEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZBQzUzMjQyNURFRDgxRTAwM0I1N0VDIC8qIEdQVVBy
b2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5oICovOyB9OwogCQk0NjFDQ0NBNTIzMTQ4NUE3MDBC
NjU5QjkgLyogVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzMjM2ODUyMzE0ODMzRjAwQTQ4RkE3IC8qIFVJUmVt
b3RlT2JqZWN0UmVnaXN0cnkuaCAqLzsgfTsKIAkJNDYxQ0NDQTYyMzE0ODVBQTAwQjY1OUI5IC8q
IFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NjMyMzY4MzIzMTQ4MUVGMDBBNDhGQTcgLyogV2ViUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkuaCAqLzsgfTsKKwkJNDYxRTFCRjIyNzlBMDExNjAwNkFGNTNCIC8qIFdlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYxRTFCRUYyNzlBMDEwRjAwNkFGNTNCIC8qIFdl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICovOyB9OwogCQk0NjNGRDQ4
MDFFQjk0NTk2MDBBMjk4MkMgLyogV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0ZENDdGMUVCOTQ1ODQw
MEEyOTgyQyAvKiBXS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2M0ZENDgyMUVCOTRFQzAwMEEyOTgy
QyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0ZENDgxMUVCOTRFQUQwMEEyOTgyQyAvKiBQcm9jZXNz
VGVybWluYXRpb25SZWFzb24uaCAqLzsgfTsKKwkJNDY1NkY3QkQyN0FDQUE4RDAwQ0IzRDdDIC8q
IFdlYlNoYXJlZFdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDY1NkY3QkMyN0FDQUE4MTAwQ0IzRDdDIC8qIFdlYlNoYXJlZFdvcmtlci5oICov
OyB9OwogCQk0NjU5RjI1RjI3NUZGNkIyMDBCQkIzNjkgLyogQ2FwdGl2ZVBvcnRhbE1vZGVPYnNl
cnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1
OUYyNUUyNzVGRjZCMjAwQkJCMzY5IC8qIENhcHRpdmVQb3J0YWxNb2RlT2JzZXJ2ZXIuaCAqLzsg
fTsKIAkJNDY1RjRFMDYyMzBCMkU5NTAwM0NFREI3IC8qIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjVG
NEUwNTIzMEIyRTdDMDAzQ0VEQjcgLyogU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIuaCAqLzsg
fTsKIAkJNDY1RkE3MjYyNzU3RDkzRDAwNzIzNjJCIC8qIFdlYkxvY2tSZWdpc3RyeVByb3h5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjVGQTcyMzI3
NTdEOTE4MDA3MjM2MkIgLyogV2ViTG9ja1JlZ2lzdHJ5UHJveHkuaCAqLzsgfTsKQEAgLTkwMSwx
MCArOTAzLDEzIEBACiAJCTQ2QzM5MjI5MjMxNkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkMzOTIyODIzMTZFQzREMDA4RUVEOUIgLyogV2ViUGFnZVByb3h5SWRlbnRpZmllci5oICov
OyB9OwogCQk0NkM1QjdDRTI3QUFEREQzMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyRnJhbWVMb2Fk
ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2QzVCN0NEMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJGcmFtZUxvYWRlckNsaWVu
dC5oICovOyB9OwogCQk0NkM1QjdDRjI3QUFEREQ2MDAwQzVCNDcgLyogUmVtb3RlV29ya2VyTGli
V2ViUlRDUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2QzVCN0NCMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJMaWJXZWJSVENQ
cm92aWRlci5oICovOyB9OworCQk0NkM5MTZBQTI3OTlEMEEyMDAxQTRFN0MgLyogV2ViU2hhcmVk
V29ya2VyU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NkM5MTZBOTI3OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmgg
Ki87IH07CiAJCTQ2Q0UzQjExMjNEOEM4NDkwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RD
b3VudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
Q0UzQjEwMjNEOEM4M0QwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCAqLzsg
fTsKKwkJNDZENDhGQ0UyNzk5RDdFMTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2RDQ4RkNEMjc5OUQ3REUwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2REYwNjNDMUYzOTA1RjgwMDE5ODBC
QiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REYwNjNBMUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCAqLzsgfTsKIAkJNDZFRTI4NDkyNjlFMDRBQzAwREQ0
OEFCIC8qIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFRTI4NDgyNjlFMDQ5QjAwREQ0OEFCIC8qIFdl
YkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oICovOyB9OwogCQk0NkVFMjg0RDI2OUUwNTI1MDBE
RDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFRTI4NEMyNjlFMDUxNzAwREQ0OEFC
IC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCAqLzsgfTsKKwkJNDZFRTNFOEIy
NzYzRkQyRjAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODM4NjY3Mjc2M0ZB
QjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggKi87IH07CiAJ
CTQ2RjM4RThDMjQxNkU2NzMwMDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZGMzhFOEIyNDE2
RTY2RDAwNTkzNzVBIC8qIFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmggKi87IH07CiAJCTQ2RjlC
MjYzMjM1MjZFRjMwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjlCMjYyMjM1MjZFRDAw
MDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCAqLzsgfTsKIAkJNDkzMTAyQkQy
NjgzRjNEMDAwMkJCODg1IC8qIEFwcFByaXZhY3lSZXBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5MzEwMkJDMjY4M0YzQTUwMDJCQjg4NSAvKiBB
cHBQcml2YWN5UmVwb3J0LmggKi87IH07CkBAIC00MjE3LDYgKzQyMjIsOSBAQAogCQk0NjA4ODlG
RjI2MUZBOEE5MDBFMjUwMEQgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1l
dGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJh
bWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MEY0ODhEMUY5OTZGNkMw
MENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9X
ZWJLaXQvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk0NjBGNDg4RTFGOTk2RjZDMDBD
RjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1l
c3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OworCQk0NjFFMUJFQzI3OUEwMTBFMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQ2MUUxQkVGMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MUUxQkYwMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1l
c3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjIxMDdENzFGMzhEQkQz
MDBERDc4MTAgLyogUGluZ0xvYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUGluZ0xvYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjMyMzY4
MzIzMTQ4MUVGMDBBNDhGQTcgLyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDYzMjM2ODQyMzE0ODI1QzAwQTQ4RkE3IC8qIFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyMjcsNiArNDIzNSw5IEBACiAJCTQ2M0ZENDgx
MUVCOTRFQUQwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NTFFQ0U2MjIxNzhBODUwMDY3RUI5NSAvKiBXZWJQ
cm9jZXNzQ2FjaGVDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdlYlByb2Nlc3NDYWNoZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjUyNTBFNTFFQ0Y1MkNEMDAyMDI1Q0IgLyogV2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYktpdDJJbml0aWFsaXpl
Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2NTZGN0JBMjdBQ0FBODAw
MENCM0Q3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVz
c2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2NTZGN0JCMjdBQ0FBODEw
MENCM0Q3QyAvKiBXZWJTaGFyZWRXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hh
cmVkV29ya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY1NkY3QkMyN0FD
QUE4MTAwQ0IzRDdDIC8qIFdlYlNoYXJlZFdvcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFy
ZWRXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY1OUYyNUUyNzVGRjZC
MjAwQkJCMzY5IC8qIENhcHRpdmVQb3J0YWxNb2RlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2FwdGl2ZVBvcnRhbE1vZGVPYnNlcnZlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NjVGNEUwMjIzMDc1OUQ1MDAzQ0VEQjcgLyogU3RvcmFnZUFy
ZWFJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VBcmVhSWRlbnRpZmllci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjVGNEUwMzIzMDc2MDRFMDAzQ0VEQjcgLyog
U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlQXJlYUlt
cGxJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MjQ4LDggKzQy
NTksMTEgQEAKIAkJNDY4MDlBN0IyM0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvb2tpZUNhY2hlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzU2OUEyMUU4MUNDNzAwNkUyN0Ez
IC8qIFByb3Zpc2lvbmFsUGFnZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFByb3Zpc2lvbmFsUGFnZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2ODM1NjlCMjFFODFDQzcwMDZFMjdBMyAvKiBQcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm92aXNpb25hbFBhZ2VQcm94eS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2ODM4NjY3Mjc2M0ZBQjEwMENGOTE4
MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDY4Mzg2NjgyNzYzRkFCMTAwQ0Y5MTgyIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODlCOTBGMjc1NkQx
NDMwMDA3QzY1MSAvKiBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVt
b3RlV2ViTG9ja1JlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODlC
OTEwMjc1NkQxNDMwMDA3QzY1MSAvKiBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDY5NDNEQ0IyNzYzRjgzNDAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5REU4
MDIyNzNFQ0M1RDAwOTMwMjc2IC8qIFByb2Nlc3NMYXVuY2hlckNvY29hLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJvY2Vzc0xhdW5jaGVyQ29jb2EubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QTJCNjA2MUU1Njc1QTIwMEMzREVEQSAvKiBC
YWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZBMkI2MDcxRTU2NzVBMjAwQzNE
RURBIC8qIEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGlt
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyNjgsNyArNDI4MiwxMSBAQAog
CQk0NkM1QjdDQjI3QUFEREJFMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlk
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDNUI3Q0MyN0FBRERCRTAwMEM1QjQ3IC8qIFJl
bW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90
ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDZDNUI3Q0QyN0FBRERCRTAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xp
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2QzkxNkE4Mjc5OUQwOUQwMDFBNEU3QyAvKiBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29y
a2VyU2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZDOTE2QTkyNzk5
RDA5RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZD
RTNCMTAyM0Q4QzgzRDAwMTZBOTZBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZENDhGQ0MyNzk5RDdERDAwN0QyMDE0IC8q
IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2RDQ4RkNEMjc5OUQ3REUwMDdEMjAxNCAvKiBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDZERjA2MzkxRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRD
aGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJl
ZmxpZ2h0Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkU5NzYwQTI3
NTdGNkM5MDBBQ0REMzcgLyogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmlu
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNz
YWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyNzgsNiArNDI5Niw3IEBA
CiAJCTQ2RUUyODRBMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJl
Z2lzdHJ5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5ldHdvcmtCcm9hZGNh
c3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2RUUyODRCMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJl
Z2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtC
cm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NkVFMjg0QzI2OUUwNTE3MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdp
c3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQnJvYWRjYXN0
Q2hhbm5lbFJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2RUUzRThB
Mjc2M0ZEMkEwMDYwQzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW47
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RjM4RThCMjQxNkU2NkQwMDU5Mzc1QSAv
KiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NkY5QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkQ2FjaGVF
bnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTMxMDJCQzI2ODNGM0E1MDAy
QkI4ODUgLyogQXBwUHJpdmFjeVJlcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBQcml2YWN5UmVw
b3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05Mjc5LDYgKzkyOTgsMjMgQEAK
IAkJCXBhdGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTQ2
ODM4NjY1Mjc2M0ZBMUIwMENGOTE4MiAvKiBTaGFyZWRXb3JrZXIgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTQ2NTZGN0JCMjdBQ0FBODEwMENCM0Q3QyAv
KiBXZWJTaGFyZWRXb3JrZXIuY3BwICovLAorCQkJCTQ2NTZGN0JDMjdBQ0FBODEwMENCM0Q3QyAv
KiBXZWJTaGFyZWRXb3JrZXIuaCAqLywKKwkJCQk0NkM5MTZBODI3OTlEMDlEMDAxQTRFN0MgLyog
V2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcCAqLywKKwkJCQk0NkM5MTZBOTI3OTlEMDlEMDAxQTRF
N0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggKi8sCisJCQkJNDY4Mzg2NjgyNzYzRkFCMTAw
Q0Y5MTgyIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwICovLAorCQkJCTQ2
ODM4NjY3Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
LmggKi8sCisJCQkJNDZFRTNFOEEyNzYzRkQyQTAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtlclNl
cnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCisJCQkJNDZENDhGQ0MyNzk5RDdERDAwN0Qy
MDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwICovLAor
CQkJCTQ2RDQ4RkNEMjc5OUQ3REUwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmggKi8sCisJCQkJNDY1NkY3QkEyN0FDQUE4MDAwQ0IzRDdDIC8qIFdl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCisJ
CQkpOworCQkJcGF0aCA9IFNoYXJlZFdvcmtlcjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CisJCX07CiAJCTQ2OURFODAxMjczRUNDNUQwMDkzMDI3NiAvKiBjb2NvYSAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC05MzQzLDYgKzkzNzksNyBAQAogCQkJ
CTUxNDUyNkVBMjcxRTE2MTAwMDA0NjdCNiAvKiBOb3RpZmljYXRpb25zICovLAogCQkJCTVDMDFC
QzM1MjZENDZBRDQwMEZFQjQyRiAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAqLywKIAkJCQk5
M0JBMDREOTIxNTFBRENEMDA3RjQ1NUYgLyogU2VydmljZVdvcmtlciAqLywKKwkJCQk0NjgzODY2
NTI3NjNGQTFCMDBDRjkxODIgLyogU2hhcmVkV29ya2VyICovLAogCQkJCTkzMDg1REMyMjZFMUJC
NjUwMDBFQzZBNyAvKiBzdG9yYWdlICovLAogCQkJCTQxMzA3NTk3MURFODRFRDcwMDM5RUM2OSAv
KiB3ZWJydGMgKi8sCiAJCQkJOTNCMjYxNDMyMjdEMTQzMTAwQjk3QTc2IC8qIFdlYlN0b3JhZ2Ug
Ki8sCkBAIC05NDQ1LDggKzk0ODIsMTIgQEAKIAkJCQk0MTlBQ0Y5QjFGOTgxRDI2MDA5RjFBODMg
LyogV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oICovLAogCQkJCTUxQkVCNjI5MUYz
QTVBQ0QwMDUwMjlCOSAvKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwICovLAogCQkJCTUx
QkVCNjJBMUYzQTVBQ0QwMDUwMjlCOSAvKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCAqLywK
KwkJCQk0NjFFMUJFQzI3OUEwMTBFMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk0NjFFMUJFRjI3OUEwMTBGMDA2QUY1M0IgLyog
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggKi8sCisJCQkJNDYxRTFC
RjAyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbiAqLywKIAkJCQk0NjY4QTBCQjI3QUI2MDQwMDBDNzIwQkMgLyogV2Vi
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJNDY2OEEwQjgyN0FCNjAz
RjAwQzcyMEJDIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAqLywKKwkJCQk0
Njk0M0RDQjI3NjNGODM0MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bi5tZXNzYWdlcy5pbiAqLywKIAkJCQk0NjY4QTBCOTI3QUI2MDNGMDBDNzIwQkMgLyogV2ViU2hh
cmVkV29ya2VyUHJvdmlkZXIuY3BwICovLAogCQkJCTQ2NjhBMEJBMjdBQjYwNDAwMEM3MjBCQyAv
KiBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oICovLAogCQkJCTUxN0E1MzAzMUY0NzkzQjIwMERD
REMwQSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwICovLApAQCAtMTMwOTksNiArMTMxNDAs
NyBAQAogCQkJCTFBM0VFRDEyMTYxQTUzRDYwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBM0VFRDBGMTYxQTUzNTQwMEFFQjRGNSAvKiBNZXNzYWdlUmVj
ZWl2ZXJNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUIwMzdBMTg1QTdDNkEwMEVERjUwMSAv
KiBNZXNzYWdlU2VuZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjU2RjdCRDI3QUNBQThEMDBD
QjNEN0MgLyogV2ViU2hhcmVkV29ya2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTNCM0RBMjIw
N0YzOURFMDA5MEM1OEQgLyogTW9iaWxlV2lGaVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3
QjVGN0MyNzVFOTdCNjAwMkRDMjJEIC8qIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTdCNUY4MDI3NUU5N0I2MDAyREMyMkQgLyogTW9ja0FwcEJ1bmRsZVJl
Z2lzdHJ5LmggaW4gSGVhZGVycyAqLywKQEAgLTEzNjMzLDggKzEzNjc1LDEyIEBACiAJCQkJN0Mz
NjFENzMxOTI3RkEzNjAwMzZBNTlEIC8qIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlEM0I5NDg0OTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBN
ZW51LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUJFQjYyQzFGM0E1QUQ3MDA1MDI5QjkgLyogV2Vi
U2VydmljZVdvcmtlclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjFFMUJGMjI3OUEw
MTE2MDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0NjY4QTBCRDI3QUI2MDU2MDBDNzIwQkMgLyogV2ViU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY2OEEwQkMyN0FC
NjA1MDAwQzcyMEJDIC8qIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQk0NkM5MTZBQTI3OTlEMEEyMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0NkVFM0U4QjI3NjNGRDJGMDA2MEM3MEYgLyogV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZENDhGQ0UyNzk5
RDdFMTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTVDOEREMzgwMUZFNDUyMTYwMEYyQTU1NiAvKiBXZWJzaXRl
QXV0b3BsYXlQb2xpY3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDgzMkQ3MUE5Q0RGOTYwMDhC
NERGRSAvKiBXZWJzaXRlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0ODMyRDExQTlCREMy
RjAwOEI0REZFIC8qIFdlYnNpdGVEYXRhUmVjb3JkLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwCmluZGV4IDgxZGQwNDExYTIzOS4uYmIzNTQ3ZjQ2YWQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTU3LDcgKzU3LDEwIEBACiAjaW5jbHVkZSAiV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU2VydmljZVdvcmtlclByb3ZpZGVy
LmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgiCisjaW5j
bHVkZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViU29ja2V0Q2hhbm5lbC5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWxNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYlNvY2tldFN0cmVhbS5oIgpAQCAtMTc0LDYgKzE3NywxNiBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUAogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCisg
ICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAg
ICAgc2hhcmVkV29ya2VyQ29ubmVjdGlvbigpLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgQVNTRVJUKFNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpOworICAg
ICAgICBpZiAoYXV0byogY29udGV4dE1hbmFnZXJDb25uZWN0aW9uID0gU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAgICAgIHN0YXRp
Y19jYXN0PFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiY+KCpjb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24pLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIp
OworICAgICAgICByZXR1cm47CisgICAgfQogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVf
VUkpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpX
ZWJQYXltZW50Q29vcmRpbmF0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uaAppbmRleCBlZGMwNDkzYmQzZWQuLjBiNjQ4MGE2MWQzNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgZW51bSBjbGFzcyBIVFRQQ29va2llQWNjZXB0
UG9saWN5IDogdWludDhfdDsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOwog
Y2xhc3MgV2ViU1dDbGllbnRDb25uZWN0aW9uOwogY2xhc3MgV2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44NDMw
NjQ3NjY1ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0wLDAg
KzEsMTI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAiTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZVdl
YkxvY2tSZWdpc3RyeS5oIgorI2luY2x1ZGUgIlJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50
LmgiCisjaW5jbHVkZSAiUmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXIuaCIKKyNpbmNsdWRl
ICJXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJXZWJDYWNoZVN0b3Jh
Z2VQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5o
IgorI2luY2x1ZGUgIldlYkRhdGFiYXNlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgi
CisjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNLZXlzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5o
IgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNz
YWdlcy5oIgorI2luY2x1ZGUgIldlYlNvY2tldFByb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9FbXB0eUNsaWVudHMuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VDb25maWd1
cmF0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1VzZXJBZ2VudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyRmV0Y2hSZXN1
bHQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJl
ZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBhZ2VHcm91cElkZW50aWZp
ZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYg
cHJlZmVyZW5jZXNTdG9yZSwgUmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYgaW5pdGlh
bGl6YXRpb25EYXRhKQorICAgIDogbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXVEZNb3Zl
KGNvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKSkKKyAgICAsIG1fcmVnaXN0cmFibGVEb21haW4o
V1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbikpCisgICAgLCBtX3BhZ2VHcm91cElEKHBhZ2VHcm91
cElEKQorICAgICwgbV93ZWJQYWdlUHJveHlJRCh3ZWJQYWdlUHJveHlJRCkKKyAgICAsIG1fcGFn
ZUlEKHBhZ2VJRCkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAsIG1fdXNlckFnZW50KFdlYkNv
cmU6OnN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSh7IH0pKQorI2Vsc2UKKyAg
ICAsIG1fdXNlckFnZW50KHN0YW5kYXJkVXNlckFnZW50KCkpCisjZW5kaWYKKyAgICAsIG1fdXNl
ckNvbnRlbnRDb250cm9sbGVyKFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6Z2V0T3JDcmVhdGUo
aW5pdGlhbGl6YXRpb25EYXRhLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpKQorewor
I2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgbV91c2VyQ29udGVudENvbnRyb2xs
ZXItPmFkZENvbnRlbnRSdWxlTGlzdHMoV1RGTW92ZShpbml0aWFsaXphdGlvbkRhdGEuY29udGVu
dFJ1bGVMaXN0cykpOworI2VuZGlmCisKKyAgICB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKHByZWZl
cmVuY2VzU3RvcmUpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmRpc2FibGVUZXJtaW5h
dGlvbigpOworfQorCitXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246On5X
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CisKK3Zv
aWQgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjplc3RhYmxpc2hDb25u
ZWN0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpFc3RhYmxpc2hTaGFyZWRXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvbiB7IG1fd2ViUGFnZVByb3h5SUQsIG1fcmVnaXN0cmFibGVEb21h
aW4gfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIDApOworfQorCit2b2lkIFdlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2Jq
ZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBtX2Nvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpQb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QgeyBzaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNl
VVJMIH0sIDApOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6dXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBz
dG9yZSkKK3sKKyAgICBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlc0dlbmVyYXRlZChzdG9yZSk7
CisgICAgbV9wcmVmZXJlbmNlc1N0b3JlID0gc3RvcmU7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpsYXVuY2hTaGFyZWRXb3JrZXIoV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNo
YXJlZFdvcmtlcklkZW50aWZpZXIsIFVSTCYmIHVybCwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYm
IHdvcmtlck9wdGlvbnMsIFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYgd29ya2VyRmV0Y2hS
ZXN1bHQpCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpsYXVuY2hTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtl
cklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkp
OworICAgIGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBXZWJDb3JlOjpwYWdlQ29uZmlndXJhdGlv
bldpdGhFbXB0eUNsaWVudHMoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2Vzc2lvbklEKCkpOwor
CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uZGF0YWJhc2VQcm92aWRlciA9IFdlYkRhdGFiYXNlUHJv
dmlkZXI6OmdldE9yQ3JlYXRlKG1fcGFnZUdyb3VwSUQpOworICAgIHBhZ2VDb25maWd1cmF0aW9u
LnNvY2tldFByb3ZpZGVyID0gV2ViU29ja2V0UHJvdmlkZXI6OmNyZWF0ZShtX3dlYlBhZ2VQcm94
eUlEKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5icm9hZGNhc3RDaGFubmVsUmVnaXN0cnkgPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5icm9hZGNhc3RDaGFubmVsUmVnaXN0cnkoKTsKKyAgICBw
YWdlQ29uZmlndXJhdGlvbi53ZWJMb2NrUmVnaXN0cnkgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS53ZWJMb2NrUmVnaXN0cnkoKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudFBy
b3ZpZGVyID0gbV91c2VyQ29udGVudENvbnRyb2xsZXI7CisjaWYgRU5BQkxFKFdFQl9SVEMpCisg
ICAgcGFnZUNvbmZpZ3VyYXRpb24ubGliV2ViUlRDUHJvdmlkZXIgPSBtYWtlVW5pcXVlUmVmPFJl
bW90ZVdvcmtlckxpYldlYlJUQ1Byb3ZpZGVyPigpOworI2VuZGlmCisKKyAgICBwYWdlQ29uZmln
dXJhdGlvbi5sb2FkZXJDbGllbnRGb3JNYWluRnJhbWUgPSBtYWtlVW5pcXVlUmVmPFJlbW90ZVdv
cmtlckZyYW1lTG9hZGVyQ2xpZW50PihtX3dlYlBhZ2VQcm94eUlELCBtX3BhZ2VJRCwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBtX3VzZXJBZ2VudCk7CisKKyAgICBhdXRv
IHBhZ2UgPSBtYWtlVW5pcXVlUmVmPFdlYkNvcmU6OlBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3Vy
YXRpb24pKTsKKyAgICBpZiAobV9wcmVmZXJlbmNlc1N0b3JlKSB7CisgICAgICAgIFdlYlBhZ2U6
OnVwZGF0ZVNldHRpbmdzR2VuZXJhdGVkKCptX3ByZWZlcmVuY2VzU3RvcmUsIHBhZ2UtPnNldHRp
bmdzKCkpOworICAgICAgICBwYWdlLT5zZXR0aW5ncygpLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGlj
eShzdGF0aWNfY2FzdDxXZWJDb3JlOjpTdG9yYWdlQmxvY2tpbmdQb2xpY3k+KG1fcHJlZmVyZW5j
ZXNTdG9yZS0+Z2V0VUludDMyVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnN0b3JhZ2VC
bG9ja2luZ1BvbGljeUtleSgpKSkpOworICAgIH0KKyAgICBwYWdlLT5zZXR1cEZvclJlbW90ZVdv
cmtlcih1cmwsIG9yaWdpbi50b3BPcmlnaW4sIHdvcmtlckZldGNoUmVzdWx0LnJlZmVycmVyUG9s
aWN5KTsKKyAgICBhdXRvIHNoYXJlZFdvcmtlclRocmVhZFByb3h5ID0gV2ViQ29yZTo6U2hhcmVk
V29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZShXVEZNb3ZlKHBhZ2UpLCBzaGFyZWRXb3JrZXJJZGVu
dGlmaWVyLCBvcmlnaW4sIHVybCwgV1RGTW92ZSh3b3JrZXJGZXRjaFJlc3VsdCksIFdURk1vdmUo
d29ya2VyT3B0aW9ucyksIG1fdXNlckFnZW50LCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNo
ZVN0b3JhZ2VQcm92aWRlcigpKTsKKworICAgIFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyOjpzaW5nbGV0b24oKS5yZWdpc3RlclNoYXJlZFdvcmtlclRocmVhZChXVEZNb3ZlKHNo
YXJlZFdvcmtlclRocmVhZFByb3h5KSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpjbG9zZSgpCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29y
a2VyLCAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpjbG9zZTogU2hh
cmVkIHdvcmtlciBwcm9jZXNzIGlzIHJlcXVlc3RlZCB0byBzdG9wIGFsbCBzaGFyZWQgd29ya2Vy
cyIpOworICAgIHNldEFzQ2xvc2VkKCk7CisKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q2xvc2VT
aGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiB7IH0sIDApOworICAgIFdlYkNvcmU6OlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zdG9wQWxsU2hhcmVkV29ya2Vycygp
OworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuYWJsZVRlcm1pbmF0aW9uKCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LjFhY2ZkMGM0MTI5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC0w
LDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5l
Y3Rpb24uaCIKKyNpbmNsdWRlICJJZGVudGlmaWVyVHlwZXMuaCIKKyNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCisjaW5jbHVk
ZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZp
ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVkV29ya2VySWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3Qg
Q2xpZW50T3JpZ2luOworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0Oworc3RydWN0IFdvcmtlck9w
dGlvbnM7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI7CitzdHJ1Y3QgUmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhOworCitjbGFz
cyBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMg
V2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAgV2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYsIFBhZ2VHcm91cElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwg
UmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYpOworICAgIH5XZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24oKTsKKworICAgIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlv
bihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQgcG9zdEV4Y2Vw
dGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpIGZpbmFsOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworcHJpdmF0ZToK
KyAgICAvLyBJUEMgTWVzc2FnZXMuCisgICAgdm9pZCBsYXVuY2hTaGFyZWRXb3JrZXIoV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFVSTCYm
LCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYsIFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYp
OworICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJik7CisgICAgdm9pZCBzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KSB7IG1fdXNl
ckFnZW50ID0gV1RGTW92ZSh1c2VyQWdlbnQpOyB9CisgICAgdm9pZCBjbG9zZSgpOworCisgICAg
UmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzczsKKyAgICBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluOworICAgIFBhZ2VH
cm91cElkZW50aWZpZXIgbV9wYWdlR3JvdXBJRDsKKyAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVy
IG1fd2ViUGFnZVByb3h5SUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7
CisgICAgU3RyaW5nIG1fdXNlckFnZW50OworICAgIFJlZjxXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI+IG1fdXNlckNvbnRlbnRDb250cm9sbGVyOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViUHJlZmVy
ZW5jZXNTdG9yZT4gbV9wcmVmZXJlbmNlc1N0b3JlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li5kODJhNGFkYTUzZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KQEAgLTAsMCArMSwzMCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMg
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgor
IyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCittZXNzYWdlcyAtPiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24gTm90UmVmQ291bnRlZCB7CisgICAgTGF1bmNoU2hhcmVkV29ya2VyKHN0cnVjdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4gb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNo
YXJlZFdvcmtlcklkZW50aWZpZXIsIFVSTCB1cmwsIHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJPcHRp
b25zIHdvcmtlck9wdGlvbnMsIHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCB3b3Jr
ZXJGZXRjaFJlc3VsdCkKKyAgICBQb3N0Q29ubmVjdEV2ZW50KFdlYkNvcmU6OlNoYXJlZFdvcmtl
cklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRN
ZXNzYWdlUG9ydCBwb3J0LCBTdHJpbmcgc291cmNlT3JpZ2luKQorICAgIFRlcm1pbmF0ZVNoYXJl
ZFdvcmtlcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50
aWZpZXIpCisgICAgVXBkYXRlUHJlZmVyZW5jZXNTdG9yZShzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVm
ZXJlbmNlc1N0b3JlIHN0b3JlKQorICAgIFNldFVzZXJBZ2VudChTdHJpbmcgdXNlckFnZW50KQor
ICAgIENsb3NlKCkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKaW5k
ZXggNWM1ZmRhYTYwMDU3Li41ZGRiZGU0NGE5NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24uY3BwCkBAIC0yNiwyMyArMjYsNDUgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgiCiAKKyNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyTWFuYWdl
ci5oPgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1NoYXJlZFdvcmtlcktleS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyT3B0aW9ucy5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bjo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpID0gZGVmYXVsdDsKKyNkZWZpbmUg
Q09OTkVDVElPTl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2Vy
LCAiJXAgLSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdlYlNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb246OiIgZm10LCB0aGlzLCBXZWJDb3JlOjpQcm9jZXNzOjppZGVudGlm
aWVyKCkudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKKworV2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbjo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpCit7CisgICAgQ09O
TkVDVElPTl9SRUxFQVNFX0xPRygiV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjoiKTsK
K30KKworV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24oKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coIn5XZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOiIpOworfQogCiBJUEM6OkNvbm5lY3Rpb24qIFdlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29u
c3QKIHsKICAgICByZXR1cm4gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKIH0KIAotdm9pZCBXZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uOjpyZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0IFVSTCYgdXJsLCBX
ZWJDb3JlOjpTaGFyZWRXb3JrZXImIHNoYXJlZFdvcmtlciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRN
ZXNzYWdlUG9ydCYmIHBvcnQsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25z
KQordm9pZCBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpyZXF1ZXN0U2hhcmVkV29y
a2VyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgc2hhcmVkV29ya2VyS2V5LCBXZWJD
b3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBjb25zdCBXZWJD
b3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25zKQogewotICAgIC8vIEZJWE1FOiBTaG91
bGQgc2VuZCBJUEMgdG8gdGhlIG5ldHdvcmsgcHJvY2Vzcy4KLSAgICBXZWJDb3JlOjpTaGFyZWRX
b3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0KHVybCwgc2hhcmVkV29ya2VyLCBXVEZN
b3ZlKHBvcnQpLCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMpKTsKKyAgICBDT05ORUNUSU9OX1JFTEVB
U0VfTE9HKCJyZXF1ZXN0U2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
PSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbjo6UmVxdWVzdFNoYXJlZFdvcmtlciB7IHNoYXJlZFdvcmtlcktleSwgc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciwgV1RGTW92ZShwb3J0KSwgd29ya2VyT3B0aW9ucyB9KTsKIH0K
IAordm9pZCBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpzaGFyZWRXb3JrZXJPYmpl
Y3RJc0dvaW5nQXdheShjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIHNoYXJlZFdvcmtl
cktleSwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coInNoYXJlZFdv
cmtlck9iamVjdElzR29pbmdBd2F5OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVi
bGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlv
bjo6U2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkgeyBzaGFyZWRXb3JrZXJLZXksIHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIgfSk7Cit9CisKKyN1bmRlZiBDT05ORUNUSU9OX1JFTEVB
U0VfTE9HCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbi5oCmluZGV4IDYxZWU1YWY0MjRkYy4uNDc4MTkzZWY3ZGRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oCkBAIC0yNSwyMCArMjUsMjUgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2Vu
ZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b24sIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyIHsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24pOyB9CisgICAgfldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24oKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJikgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgV2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbigpOwogCiAgICAgLy8gV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbi4KLSAgICB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoY29uc3QgVVJMJiwgV2ViQ29y
ZTo6U2hhcmVkV29ya2VyJiwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBXZWJD
b3JlOjpXb3JrZXJPcHRpb25zJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdFNoYXJlZFdvcmtl
cihjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIGNvbnN0
IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmKSBmaW5hbDsKKyAgICB2b2lkIHNoYXJlZFdvcmtlck9i
amVjdElzR29pbmdBd2F5KGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYsIFdlYkNvcmU6
OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpIGZpbmFsOwogCiAgICAgLy8gSVBDOjpNZXNz
YWdlU2VuZGVyLgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24o
KSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzIy
YWUxYTMyYzkzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMCww
ICsxLDI3IEBACisjIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
CisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3Nh
Z2VzIC0+IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24geworICAgIEZldGNoU2NyaXB0
SW5DbGllbnQoVVJMIHVybCwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6V29ya2VyT3B0aW9u
cyB3b3JrZXJPcHRpb25zKSAtPiAoc3RydWN0IFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0IGZl
dGNoUmVzdWx0KSBBc3luYworICAgIE5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24o
V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQorICAgIFBvc3RFeGNlcHRp
b25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFN0cmluZyBlcnJvck1lc3NhZ2UsIGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTdHJpbmcgc291cmNlVVJMKQorfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGRkOGQ1ODFhYzViMi4uZGQ0NWI0NTg4
YmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC04NCw2ICs4
NCw4IEBACiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCIKICNpbmNs
dWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJQ
cm92aWRlci5oIgogI2luY2x1ZGUgIldlYlNvY2tldFN0cmVhbS5oIgogI2luY2x1ZGUgIldlYnNp
dGVEYXRhLmgiCkBAIC0xMzQsNiArMTM2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckdlc3R1cmVJbmRp
Y2F0b3IuaD4KICNpbmNsdWRlIDxwYWwvTG9nZ2luZy5oPgogI2luY2x1ZGUgPHd0Zi9BbGdvcml0
aG1zLmg+CkBAIC05MDQsNyArOTA3LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGUKICAgICB9
CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgLy8gRklYTUU6IFJlbW92ZT8KICAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAgICAg
QVNTRVJUKFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSk7CiAgICAg
ICAgIGlmIChhdXRvKiBjb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gPSBTV0NvbnRleHRNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCkBAIC05MTMsNiArOTE1LDEzIEBAIHZvaWQgV2Vi
UHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEM6OkRlY29kZXImIGRlCiAgICAgfQogI2VuZGlmCiAKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
UmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIEFTU0VSVChTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKTsKKyAgICAg
ICAgaWYgKGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiA9IFNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCisgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24mPigqY29udGV4dE1h
bmFnZXJDb25uZWN0aW9uKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIExPR19FUlJPUigiVW5oYW5kbGVkIHdlYiBw
cm9jZXNzIG1lc3NhZ2UgJyVzJyAoZGVzdGluYXRpb246ICUiIFBSSXU2NCAiIHBpZDogJWQpIiwg
ZGVzY3JpcHRpb24oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSwgZGVjb2Rlci5kZXN0aW5hdGlvbklE
KCksIHN0YXRpY19jYXN0PGludD4oZ2V0Q3VycmVudFByb2Nlc3NJRCgpKSk7CiB9CiAKQEAgLTE5
MTksNiArMTkyOCwxNiBAQCBMaWJXZWJSVENOZXR3b3JrJiBXZWJQcm9jZXNzOjpsaWJXZWJSVENO
ZXR3b3JrKCkKICAgICByZXR1cm4gKm1fbGliV2ViUlRDTmV0d29yazsKIH0KIAordm9pZCBXZWJQ
cm9jZXNzOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRp
ZmllciB3ZWJQYWdlUHJveHlJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQcmVm
ZXJlbmNlc1N0b3JlJiBzdG9yZSwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFp
biwgUmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYgaW5pdGlhbGl6YXRpb25EYXRhLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgLy8g
V2UgYXJlIGluIHRoZSBTaGFyZWQgV29ya2VyIGNvbnRleHQgcHJvY2VzcyBhbmQgdGhlIGNhbGwg
YmVsb3cgZXN0YWJsaXNoZXMgb3VyIGNvbm5lY3Rpb24gdG8gdGhlIE5ldHdvcmsgUHJvY2Vzcwor
ICAgIC8vIGJ5IGNhbGxpbmcgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLiBTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlciBuZWVkcyB0byB1c2UgdGhlIHNhbWUgdW5kZXJseWluZyBJUEM6
OkNvbm5lY3Rpb24gYXMgdGhlCisgICAgLy8gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIGZvciBz
eW5jaHJvbml6YXRpb24gcHVycG9zZXMuCisgICAgYXV0byYgaXBjQ29ubmVjdGlvbiA9IGVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKKyAgICBTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0Q29ubmVjdGlvbihtYWtlVW5pcXVlPFdl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVjdGlvbiwgV1RG
TW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHBhZ2VHcm91cElELCB3ZWJQYWdlUHJveHlJRCwgcGFn
ZUlELCBzdG9yZSwgV1RGTW92ZShpbml0aWFsaXphdGlvbkRhdGEpKSk7CisgICAgU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKS0+ZXN0YWJsaXNoQ29u
bmVjdGlvbihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiB2b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3Jv
dXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgUGFnZUlkZW50aWZp
ZXIgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgUmVnaXN0cmFibGVE
b21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25D
b250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBSZW1vdGVXb3Jr
ZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXphdGlvbkRhdGEsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oCmluZGV4IDAzZmMwYzcxZDdjMy4uNDIzZGVmZjJhZjViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTQ3MSw2ICs0NzEsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZ2FtZXBhZERpc2Nvbm5lY3RlZCh1bnNpZ25lZCBpbmRleCk7CiAjZW5kaWYKIAor
ICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKFBhZ2VHcm91cElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiwgUmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
ICAgIHZvaWQgZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUmVtb3Rl
V29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KaW5kZXggM2JjNDczMTllMzZkLi5mNWU3MzZlZDM0N2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMDAsNiArMTAwLDgg
QEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciBOb3RSZWZDb3VudGVkIHsK
ICAgICBHYW1lcGFkRGlzY29ubmVjdGVkKHVuc2lnbmVkIGluZGV4KQogI2VuZGlmCiAKKyAgICBF
c3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2Vi
S2l0OjpQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94
eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gZG9tYWluLCBzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVXb3JrZXJJbml0aWFs
aXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRhKSAtPiAoKSBBc3luYworCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgIEVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91
cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNT
dG9yZSBzdG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlJlbW90ZVdvcmtlckluaXRpYWxpemF0
aW9uRGF0YSBpbml0aWFsaXphdGlvbkRhdGEpIC0+ICgpIEFzeW5jCiAjZW5kaWYK
</data>
<flag name="commit-queue"
          id="477365"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450906</attachid>
            <date>2022-02-04 09:34:45 -0800</date>
            <delta_ts>2022-02-04 11:28:19 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>235958_SharedWorker_multiProcess_wip.patch</filename>
            <type>text/plain</type>
            <size>274666</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IGFkOTcwMjkwYzQzOC4uNGEyYjZiY2E5MmRkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTQ1OSw3ICs0NTksNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYi1sb2Nrcy9zdGVhbC50ZW50YXRpdmUuaHR0cHMuYW55Lmh0bWwgWyBEdW1wSgog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3Ro
ZS1hbmFseXNlcm5vZGUtaW50ZXJmYWNlL3Rlc3QtYW5hbHlzZXItbWluaW11bS5odG1sIFsgRHVt
cEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUt
ZGlzY29ubmVjdC1hdWRpb3BhcmFtLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NhbWUtb3JpZ2luLWNoZWNr
LnN1Yi5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMuaHRt
bCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCiBmYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWJh
Y2stZm9yd2FyZC1jYWNoZS5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGZhc3Qv
aGlzdG9yeS9wYWdlLWNhY2hlLWNyZWF0ZUltYWdlQml0bWFwLmh0bWwgWyBEdW1wSlNDb25zb2xl
TG9nSW5TdGRFcnIgXQogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLWluLWxv
YWRpbmctaWZyYW1lLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQpAQCAtODQ5LDYg
Kzg0OCw3IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdXNlci10aW1pbmcvbWFy
ay5odG1sIFsgRmFpbHVyZSBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dXNlci10aW1pbmcvbWVhc3VyZV9hc3NvY2lhdGVkX3dpdGhfbmF2aWdhdGlvbl90aW1pbmcuaHRt
bCBbIEZhaWx1cmUgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
d2ViYXBwYXBpcy9zeXN0ZW0tc3RhdGUtYW5kLWNhcGFiaWxpdGllcy90aGUtbmF2aWdhdG9yLW9i
amVjdC9wbHVnaW5zLWFuZC1taW1ldHlwZXMuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2JlYWNvbi9iZWFjb24tcmVkaXJlY3Quc3ViLndpbmRv
dy5odG1sIFsgRmFpbHVyZSBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L2Fub255bW91cy1pZnJhbWUvc2hhcmVk
d29ya2VyLXBhcnRpdGlvbmluZy50ZW50YXRpdmUuaHR0cHMud2luZG93Lmh0bWwgWyBGYWlsdXJl
IFBhc3MgXQogCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2RvY3VtZW50LW1ldGFkYXRhL3RoZS1saW5rLWVsZW1lbnQvbGluay1sb2FkLWVycm9yLWV2ZW50
cy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZG9jdW1lbnQtbWV0YWRhdGEvdGhlLWxpbmstZWxl
bWVudC9saW5rLWxvYWQtZXJyb3ItZXZlbnRzLmh0dHBzLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9n
SW5TdGRFcnIgXQpAQCAtNTEzMSw2ICs1MTMxLDEwIEBAIHdlYmtpdC5vcmcvYi8yMzQ5NzcgWyBE
ZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9mb2N1cy1l
CiAjIFRlc3QgaXMgY3Jhc2hpbmcgc2luY2UgaW1wb3J0LgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvZGVkaWNhdGVkLXdvcmtlci1pbXBvcnQtY3NwLmh0
bWwgWyBTa2lwIF0KIAorIyBUZXN0IGlzIGZsYWt5IGJlY2F1c2UgTWVzc2FnZVBvcnQgbWVzc2Fn
ZXMgbWF5IGdldCByZWNlaXZlZCBpbiBhIGRpZmZlcmVudCBvcmRlciB3aGVuIHNldmVyYWwgTWVz
c2FnZVBvcnRzIGFyZSBpbnZvbHZlZCwKKyMgZHVlIHRvIGhvdyBNZXNzYWdlUG9ydDo6ZGlzcGF0
Y2hNZXNzYWdlcygpIGlzIGltcGxlbWVudGVkLgoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy5odG1sIFsgRHVtcEpT
Q29uc29sZUxvZ0luU3RkRXJyIEZhaWx1cmUgUGFzcyBdCisKICMgUGx1Z2lucwogIyBGSVhNRTog
UmVtb3ZlIHRoZXNlIHRlc3RzLgogcGx1Z2lucy8gWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvY29ubmVjdC1zcmMvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1hbGxvd2VkLnN1Yi1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3JrZXItY29ubmVj
dC1zcmMtYWxsb3dlZC5zdWItZXhwZWN0ZWQudHh0CmluZGV4IGUyODM5NWVkODNjNi4uMzgyYjk1
Njk1YmNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3JrZXIt
Y29ubmVjdC1zcmMtYWxsb3dlZC5zdWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvY29u
bmVjdC1zcmMvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1hbGxvd2VkLnN1Yi1leHBlY3RlZC50
eHQKQEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cDov
L3d3dzEubG9jYWxob3N0Ojg4MDAvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc3VwcG9ydC9mYWls
LmFzaXMKIAogRkFJTCBFeHBlY3RpbmcgbG9nczogWyJ4aHIgYWxsb3dlZCIsIlRFU1QgQ09NUExF
VEUiXSBhc3NlcnRfdW5yZWFjaGVkOiB1bmV4cGVjdGVkIGxvZzogeGhyIGJsb2NrZWQgUmVhY2hl
ZCB1bnJlYWNoYWJsZSBjb2RlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvY29ubmVjdC1zcmMv
c2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1ibG9ja2VkLnN1Yi1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHkt
cG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3JrZXItY29ubmVjdC1zcmMtYmxvY2tlZC5zdWIt
ZXhwZWN0ZWQudHh0CmluZGV4IGY0OTBlYTc3MTJmZS4uNWU5NzFlMjBmNGJiIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3JrZXItY29ubmVjdC1zcmMtYmxvY2tl
ZC5zdWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvY29ubmVjdC1zcmMvc2hhcmVkLXdv
cmtlci1jb25uZWN0LXNyYy1ibG9ja2VkLnN1Yi1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBA
Ci1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cDovL3d3dzEubG9jYWxob3N0Ojg4
MDAvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc3VwcG9ydC9mYWlsLmFzaXMKIFRoaXMgdGVzdCBs
b2FkcyBhIHNoYXJlZCB3b3JrZXIsIGRlbGl2ZXJlZCB3aXRoIGl0cyBvd24gcG9saWN5LiBUaGUg
d29ya2VyIHNob3VsZCBiZSBibG9ja2VkIGZyb20gbWFraW5nIGFuIFhIUiBhcyB0aGF0IHBvbGlj
eSBzcGVjaWZpZXMgYSBjb25uZWN0LXNyYyAnbm9uZScsIHRob3VnaCB0aGlzIHJlc291cmNlJ3Mg
cG9saWN5IGlzIGNvbm5lY3Qtc3JjICouIE5vIHJlcG9ydCBzaG91bGQgYmUgc2VudCBzaW5jZSB0
aGUgd29ya2VyJ3MgcG9saWN5IGRvZXNuJ3Qgc3BlY2lmeSBhIHJlcG9ydC11cmkuCiAKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1yZXBvcnQtb25s
eS5zdWItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtl
ci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0CmluZGV4IDBlOTk3MjRiODY0Yi4uNjg5OGI1
NGFhYjZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2Vy
LXJlcG9ydC1vbmx5LnN1Yi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29y
a2VyL3NoYXJlZHdvcmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEs
MyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9z
dDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQvcmVzb3VyY2UucHk/Y3Jvc3Mt
b3JpZ2luLWZldGNoCi1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cu
bG9jYWxob3N0Ojk0NDQvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc3VwcG9ydC9yZXNvdXJjZS5w
eT9jcm9zcy1vcmlnaW4teGhyCi1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6
Ly93d3cubG9jYWxob3N0Ojk0NDQvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc3VwcG9ydC9yZXNv
dXJjZS5weT9jcm9zcy1vcmlnaW4tZmV0Y2gKIAogUEFTUyBTYW1lLW9yaWdpbiAnZmV0Y2goKScu
CiBQQVNTIFNhbWUtb3JpZ2luIFhIUi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdv
cmtlci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1zY3JpcHQtc3JjLnN1Yi1leHBlY3RlZC50eHQK
aW5kZXggOTc5MTA2MzAzNzg1Li5iYjY0NTJmNDRhMGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
aW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWItZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWIt
ZXhwZWN0ZWQudHh0CkBAIC0yLDEwICsyLDkgQEAKIEhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBt
ZXNzYWdlID0gbnVsbAogCiBUSU1FT1VUIHNoYXJlZHdvcmtlci1zY3JpcHQtc3JjIFRlc3QgdGlt
ZWQgb3V0Ci1GQUlMIENyb3NzLW9yaWdpbiBgaW1wb3J0U2NyaXB0cygpYCBub3QgYmxvY2tlZCBp
biBodHRwOiB3aXRob3VyIENTUCAgQSBuZXR3b3JrIGVycm9yIG9jY3VycmVkLgotRkFJTCBgZXZh
bCgpYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3V0IENTUCBSZWZ1c2VkIHRvIGV2YWx1YXRl
IGEgc3RyaW5nIGFzIEphdmFTY3JpcHQgYmVjYXVzZSAndW5zYWZlLWV2YWwnIGlzIG5vdCBhbiBh
bGxvd2VkIHNvdXJjZSBvZiBzY3JpcHQgaW4gdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5
IFBvbGljeSBkaXJlY3RpdmU6ICJzY3JpcHQtc3JjICdzZWxmJyAnbm9uY2UtYScgYmxvYjogZmls
ZXN5c3RlbToiLgotCi1GQUlMIGBzZXRUaW1lb3V0KFtzdHJpbmddKWAgbm90IGJsb2NrZWQgaW4g
aHR0cDogd2l0aG91dCBDU1AgYXNzZXJ0X3VucmVhY2hlZDogY2FsbGJhY2sgbm90IGNhbGxlZC4g
UmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCitGQUlMIENyb3NzLW9yaWdpbiBgaW1wb3J0U2NyaXB0
cygpYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3VyIENTUCBMb2FkIGZhaWxlZAorUEFTUyBg
ZXZhbCgpYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3V0IENTUAorUEFTUyBgc2V0VGltZW91
dChbc3RyaW5nXSlgIG5vdCBibG9ja2VkIGluIGh0dHA6IHdpdGhvdXQgQ1NQCiBUSU1FT1VUIENy
b3NzLW9yaWdpbiBgaW1wb3J0U2NyaXB0cygpYCBibG9ja2VkIGluIGh0dHA6IHdpdGggc2NyaXB0
LXNyYyAnc2VsZicgVGVzdCB0aW1lZCBvdXQKIE5PVFJVTiBgZXZhbCgpYCBibG9ja2VkIGluIGh0
dHA6IHdpdGggc2NyaXB0LXNyYyAnc2VsZicKIE5PVFJVTiBgc2V0VGltZW91dChbc3RyaW5nXSlg
IGJsb2NrZWQgaW4gaHR0cDogd2l0aCBzY3JpcHQtc3JjICdzZWxmJwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5
LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91dC5zdWItZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3Vy
aXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91dC5zdWItZXhwZWN0ZWQudHh0
CmluZGV4IDRlYWMxY2NjMDUyNi4uYjhlZTEzYjBmZmNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L3NjcmlwdC1zcmMvd29ya2VyLXNldC10aW1lb3V0LnN1Yi1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5
LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91dC5zdWItZXhwZWN0ZWQudHh0CkBA
IC0xLDQgKzEsNCBAQAogCiBGQUlMIERlZGljYXRlZCB3b3JrZXIgaW5oZXJpdHMgQ1NQIGZyb20g
bWFpbiBkb2N1bWVudCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAic2V0VGltZW91dCBhbGxvd2Vk
IiBidXQgZ290ICJzZXRUaW1lb3V0IGJsb2NrZWQiCi1GQUlMIFNoYXJlZCB3b3JrZXIgZGVsaXZl
cnMgaXRzIG93biBDU1AgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgInNldFRpbWVvdXQgYmxvY2tl
ZCIgYnV0IGdvdCAic2V0VGltZW91dCBhbGxvd2VkIgorUEFTUyBTaGFyZWQgd29ya2VyIGRlbGl2
ZXJzIGl0cyBvd24gQ1NQCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMv
YXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dv
cmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCBjMTA3MTM2NTUy
ODAuLjZmODQ0ZGQ1ZDk0OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29mZmxpbmUvYXBwY2FjaGUvd29ya2Vycy9h
cHBjYWNoZS13b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hl
L3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtNSw3ICs1LDcg
QEAgSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCiBQQVNTIERlZGljYXRl
ZCB3b3JrZXIgb2YgdGhlIGNhY2hlZCBzY3JpcHQKIFBBU1MgRGVkaWNhdGVkIHdvcmtlciBvZiB0
aGUgZmFsbGJhY2tlZCBzY3JpcHQKIFBBU1MgRGVkaWNhdGVkIHdvcmtlciBvZiB0aGUgbm90LWlu
LWNhY2hlIHNjcmlwdAotUEFTUyBTaGFyZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0Ci1Q
QVNTIFNoYXJlZCB3b3JrZXIgb2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0CitGQUlMIFNoYXJlZCB3
b3JrZXIgb2YgdGhlIGNhY2hlZCBzY3JpcHQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIkRvbmU6
IGNhY2hlZCIgYnV0IGdvdCAiRXJyb3I6IEltcG9ydGluZyBhIG5vbi1jYWNoZWQgc2NyaXB0IG11
c3QgZmFpbC4iCitGQUlMIFNoYXJlZCB3b3JrZXIgb2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0IGFz
c2VydF9lcXVhbHM6IGV4cGVjdGVkICJEb25lOiBmYWxsYmFja2VkIiBidXQgZ290ICJFcnJvcjog
SW1wb3J0aW5nIGEgbm9uLWNhY2hlZCBzY3JpcHQgbXVzdCBmYWlsLiIKIFRJTUVPVVQgU2hhcmVk
IHdvcmtlciBvZiB0aGUgbm90LWluLWNhY2hlIHNjcmlwdCBUZXN0IHRpbWVkIG91dAogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
Y3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9hbm9ueW1vdXMtaWZyYW1lL3NoYXJlZHdvcmtl
ci1wYXJ0aXRpb25pbmcudGVudGF0aXZlLmh0dHBzLndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2lu
LWVtYmVkZGVyLXBvbGljeS9hbm9ueW1vdXMtaWZyYW1lL3NoYXJlZHdvcmtlci1wYXJ0aXRpb25p
bmcudGVudGF0aXZlLmh0dHBzLndpbmRvdy1leHBlY3RlZC50eHQKaW5kZXggNGVkODc0NzQ3NmM3
Li41ODZkMTAxNTJhMzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L2Fub255bW91
cy1pZnJhbWUvc2hhcmVkd29ya2VyLXBhcnRpdGlvbmluZy50ZW50YXRpdmUuaHR0cHMud2luZG93
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9hbm9ueW1vdXMtaWZyYW1l
L3NoYXJlZHdvcmtlci1wYXJ0aXRpb25pbmcudGVudGF0aXZlLmh0dHBzLndpbmRvdy1leHBlY3Rl
ZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgQW5vbnltb3VzIGlmcmFtZXMgZ2V0IHBhcnRp
dGlvbmVkIHNoYXJlZCB3b3JrZXJzLiBhc3NlcnRfdHJ1ZTogVGhlICJub3JtYWwiIGlmcmFtZSdz
IHNoYXJlZHdvcmtlciBzaG91bGQgcmV0dXJuIHsibm9ybWFsIjogdHJ1ZSwgIm5vcm1hbF9jb250
cm9sIjogdHJ1ZX0sIGJ1dCBpbnN0ZWFkIHJldHVybmVkIHsibm9ybWFsIjp0cnVlfSBleHBlY3Rl
ZCB0cnVlIGdvdCBmYWxzZQorRkFJTCBBbm9ueW1vdXMgaWZyYW1lcyBnZXQgcGFydGl0aW9uZWQg
c2hhcmVkIHdvcmtlcnMuIGFzc2VydF90cnVlOiBUaGUgIm5vcm1hbCIgaWZyYW1lJ3Mgc2hhcmVk
d29ya2VyIHNob3VsZCByZXR1cm4geyJub3JtYWwiOiB0cnVlLCAibm9ybWFsX2NvbnRyb2wiOiB0
cnVlfSwgYnV0IGluc3RlYWQgcmV0dXJuZWQgeyJub3JtYWxfY29udHJvbCI6dHJ1ZSwibm9ybWFs
Ijp0cnVlLCJhbm9ueW1vdXMiOnRydWUsImFub255bW91c19jb250cm9sIjp0cnVlfSBleHBlY3Rl
ZCB0cnVlIGdvdCBmYWxzZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9jcm9z
cy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVt
YmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5odHRwcy1leHBl
Y3RlZC50eHQKaW5kZXggNjM1NWI2OGRlNzBiLi5jOGJmNzVlN2VhODUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmln
aW4tZW1iZWRkZXItcG9saWN5L2Nyb3NzLW9yaWdpbi1pc29sYXRlZC1wZXJtaXNzaW9uLmh0dHBz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNv
bGF0ZWQtcGVybWlzc2lvbi5odHRwcy1leHBlY3RlZC50eHQKQEAgLTIwLDcgKzIwLDcgQEAgUEFT
UyBkZWRpY2F0ZWQgd29ya2VyOiBzY2hlbWUgPSBibG9iLCB2YWx1ZSA9ICoKIFBBU1MgZGVkaWNh
dGVkIHdvcmtlcjogc2NoZW1lID0gYmxvYiwgdmFsdWUgPSBzZWxmCiBGQUlMIGRlZGljYXRlZCB3
b3JrZXI6IHNjaGVtZSA9IGJsb2IsIHZhbHVlID0gKFwpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
IGZhbHNlIGJ1dCBnb3QgdHJ1ZQogUEFTUyBzaGFyZWQgd29ya2VyOiB3aXRoQ29vcENvZXAgPSBm
YWxzZQotUEFTUyBzaGFyZWQgd29ya2VyOiB3aXRoQ29vcENvZXAgPSB0cnVlCitGQUlMIHNoYXJl
ZCB3b3JrZXI6IHdpdGhDb29wQ29lcCA9IHRydWUgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgdHJ1
ZSBidXQgZ290IGZhbHNlCiBQQVNTIHNlcnZpY2Ugd29ya2VyOiB3aXRoQ29vcENvZXAgPSBmYWxz
ZQogRkFJTCBzZXJ2aWNlIHdvcmtlcjogd2l0aENvb3BDb2VwID0gdHJ1ZSBhc3NlcnRfZXF1YWxz
OiBleHBlY3RlZCB0cnVlIGJ1dCBnb3QgZmFsc2UKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRl
ci1wb2xpY3kvc2hhcmVkLXdvcmtlcnMuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRl
ci1wb2xpY3kvc2hhcmVkLXdvcmtlcnMuaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IDMzOThiZDg4
OTMxYi4uNGM4NjZlYjI5MjYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9zaGFy
ZWQtd29ya2Vycy5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kv
c2hhcmVkLXdvcmtlcnMuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0yLDcgKzIsNyBAQCBWZXJpZnkg
dGhlIENyb3NzLU9yaWdpbiBFbWJlZGRlciBQb2xpY3kgZm9yIFNoYXJlZCBXb3JrZXJzIGJ5IHBl
cmZvcm1pbmcgYSBjcm9zcwogCiAKIFBBU1MgZGVmYXVsdCBwb2xpY3kgKGRlcml2ZWQgZnJvbSBy
ZXNwb25zZSkKLUZBSUwgInJlcXVpcmUtY29ycCIgKGRlcml2ZWQgZnJvbSByZXNwb25zZSkgYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgImZhaWx1cmUiIGJ1dCBnb3QgInN1Y2Nlc3MiCitQQVNTICJy
ZXF1aXJlLWNvcnAiIChkZXJpdmVkIGZyb20gcmVzcG9uc2UpCiBQQVNTIGRlZmF1bHQgcG9saWN5
IChkZXJpdmVkIGZyb20gb3duZXIgc2V0IGR1ZSB0byB1c2Ugb2YgbG9jYWwgc2NoZW1lIC0gYmxv
YiBVUkwpCiBGQUlMICJyZXF1aXJlLWNvcnAiIChkZXJpdmVkIGZyb20gb3duZXIgc2V0IGR1ZSB0
byB1c2Ugb2YgbG9jYWwgc2NoZW1lIC0gYmxvYiBVUkwpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
ICJmYWlsdXJlIiBidXQgZ290ICJzdWNjZXNzIgogUEFTUyBkZWZhdWx0IHBvbGljeSAoZGVyaXZl
ZCBmcm9tIG93bmVyIHNldCBkdWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAtIGRhdGEgVVJMKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVyaXRhbmNlLnN1Yi5o
dHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS93b3JrZXItaW5oZXJpdGFu
Y2Uuc3ViLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCA3NWIxZDMzZTUyNjAuLmIyYmYyZTNiZmYz
ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVyaXRhbmNlLnN1
Yi5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWlu
aGVyaXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw2IEBACiBCbG9ja2Vk
IGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29tbW9u
L2JsYW5rLmh0bWwKIEJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5s
b2NhbGhvc3Q6OTQ0NC9jb21tb24vYmxhbmsuaHRtbAogQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJu
YWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbW1vbi9ibGFuay5odG1sCi1CbG9j
a2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29t
bW9uL2JsYW5rLmh0bWwKIAogUEFTUyBUZXN0IHRoYXQgbG9jYWwgc2NoZW1lIHdvcmtlcnMgaW5o
ZXJpdCBDT0VQOiByZXF1aXJlLWNvcnAgZnJvbSB0aGUgY3JlYXRpbmcgZG9jdW1lbnQKIFBBU1Mg
YmxvYiBVUkwgZGVkaWNhdGVkIHdvcmtlcjogU2FtZSBvcmlnaW4gc2hvdWxkIGJlIGFsbG93ZWQu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9jbGFpbS1zaGFyZWQtd29ya2VyLWZldGNo
Lmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2NsYWltLXNoYXJlZC13b3Jr
ZXItZmV0Y2guaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IGRkMzVhYWUyNWY3Ny4uOTBkOTFhZDUx
MDFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9jbGFpbS1zaGFyZWQtd29ya2VyLWZl
dGNoLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9jbGFpbS1zaGFy
ZWQtd29ya2VyLWZldGNoLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDQgQEAKIAotUEFT
UyBmZXRjaCgpIGluIFNoYXJlZFdvcmtlciBzaG91bGQgYmUgaW50ZXJjZXB0ZWQgYWZ0ZXIgdGhl
IGNsaWVudCBpcyBjbGFpbWVkLgorCitGQUlMIGZldGNoKCkgaW4gU2hhcmVkV29ya2VyIHNob3Vs
ZCBiZSBpbnRlcmNlcHRlZCBhZnRlciB0aGUgY2xpZW50IGlzIGNsYWltZWQuIGFzc2VydF9lcXVh
bHM6IGZldGNoKCkgaW4gdGhlIHNoYXJlZCB3b3JrZXIgc2hvdWxkIGJlIGludGVyY2VwdGVkLiBl
eHBlY3RlZCAiSW50ZXJjZXB0ZWQhIiBidXQgZ290ICJhIHNpbXBsZSB0ZXh0IGZpbGVcbiIKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJfZGF0YVVy
bC1leHBlY3RlZC50eHQKaW5kZXggOTk1YTA2MDE5Yjg0Li45YjU4MjBhYWU4Y2IgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9T
aGFyZWRXb3JrZXJfZGF0YVVybC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4
cGVjdGVkLnR4dApAQCAtMSwxMyArMSw1IEBACi1DT05TT0xFIE1FU1NBR0U6IEVycm9yOiBhc3Nl
cnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3QgMQogCiAKLUhhcm5lc3MgRXJyb3IgKEZBSUwp
LCBtZXNzYWdlID0gRXJyb3I6IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDIgYnV0IGdvdCAxCi0K
LVBBU1MgRGF0YSBVUkwgbm90IHNoYXJlZCBieSBjcm9zcy1vcmlnaW4gU2hhcmVkV29ya2Vycwot
VElNRU9VVCBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtlcnMgVGVz
dCB0aW1lZCBvdXQKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBFcnJvcjogYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290IDEKLQogUEFTUyBEYXRhIFVSTCBub3Qgc2hh
cmVkIGJ5IGNyb3NzLW9yaWdpbiBTaGFyZWRXb3JrZXJzCi1USU1FT1VUIERhdGEgVVJMcyBzaGFy
ZWQgYnkgc2FtZS1vcmlnaW4gU2hhcmVkV29ya2VycyBUZXN0IHRpbWVkIG91dAorUEFTUyBEYXRh
IFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtlcnMKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVs
ZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVz
L3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKaW5kZXgg
NTc2ZTZkMmI3ZWQyLi40YTI2YmU5MjlhOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXIt
aW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtl
ci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJs
b2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMv
d29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkKIAogUEFT
UyBTdGF0aWMgaW1wb3J0LgogRkFJTCBTdGF0aWMgaW1wb3J0IChjcm9zcy1vcmlnaW4pLiBwcm9t
aXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogIkltcG9ydGluZyBhIG1v
ZHVsZSBzY3JpcHQgZmFpbGVkLiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0
LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWlt
cG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CmluZGV4IDRmODY0MWU1MTQ4
MC4uMjk5N2Y3ZTFmMzA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRh
LXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1D
T05TT0xFIE1FU1NBR0U6IE9yaWdpbiBudWxsIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vzcy1Db250
cm9sLUFsbG93LU9yaWdpbi4gU3RhdHVzIGNvZGU6IDIwMAogCiBIYXJuZXNzIEVycm9yIChUSU1F
T1VUKSwgbWVzc2FnZSA9IG51bGwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBv
cnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0
LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQKaW5kZXggZWFjN2Y5NWRlNmYyLi5jYmMwNDI5
ZTBjNzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLndpbmRv
dy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11cmwud2lu
ZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVy
bmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291
cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkKIAogSGFybmVzcyBFcnJvciAoVElNRU9VVCks
IG1lc3NhZ2UgPSBudWxsCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LXJl
ZmVycmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LXJlZmVycmVyLWV4
cGVjdGVkLnR4dAppbmRleCBmZTFiOWQ5M2MwODAuLjdiNGVlOGMxOWVkMyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVs
ZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtcmVmZXJyZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3No
YXJlZC13b3JrZXItaW1wb3J0LXJlZmVycmVyLWV4cGVjdGVkLnR4dApAQCAtMSwyMSArMSwxNSBA
QAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3MS5sb2NhbGhvc3Q6
OTQ0My93b3JrZXJzL21vZHVsZXMvcmVzb3VyY2VzL2V4cG9ydC1yZWZlcnJlci1jaGVja2VyLnB5
Ci1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5
NDQzL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LXJlZmVycmVyLWNoZWNrZXIucHkK
LUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0
NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtcmVmZXJyZXItY2hlY2tlci5weQot
QmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3MS5sb2NhbGhvc3Q6OTQ0
My93b3JrZXJzL21vZHVsZXMvcmVzb3VyY2VzL2V4cG9ydC1yZWZlcnJlci1jaGVja2VyLnB5Ci1C
bG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQz
L3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LXJlZmVycmVyLWNoZWNrZXIucHkKLUJs
b2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMv
d29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtcmVmZXJyZXItY2hlY2tlci5weQogCiBQ
QVNTIFNhbWUtb3JpZ2luIHRvcC1sZXZlbCBtb2R1bGUgc2NyaXB0IGxvYWRpbmcgd2l0aCAibm8t
cmVmZXJyZXIiIHJlZmVycmVyIHBvbGljeQogUEFTUyBTYW1lLW9yaWdpbiB0b3AtbGV2ZWwgbW9k
dWxlIHNjcmlwdCBsb2FkaW5nIHdpdGggIm9yaWdpbiIgcmVmZXJyZXIgcG9saWN5CiBQQVNTIFNh
bWUtb3JpZ2luIHRvcC1sZXZlbCBtb2R1bGUgc2NyaXB0IGxvYWRpbmcgd2l0aCAic2FtZS1vcmln
aW4iIHJlZmVycmVyIHBvbGljeQotUEFTUyBTYW1lLW9yaWdpbiBzdGF0aWMgaW1wb3J0IHdpdGgg
Im5vLXJlZmVycmVyIiByZWZlcnJlciBwb2xpY3kuCi1QQVNTIFNhbWUtb3JpZ2luIHN0YXRpYyBp
bXBvcnQgd2l0aCAib3JpZ2luIiByZWZlcnJlciBwb2xpY3kuCitGQUlMIFNhbWUtb3JpZ2luIHN0
YXRpYyBpbXBvcnQgd2l0aCAibm8tcmVmZXJyZXIiIHJlZmVycmVyIHBvbGljeS4gYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgIiIgYnV0IGdvdCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL3dvcmtlcnMv
bW9kdWxlcy9yZXNvdXJjZXMvc3RhdGljLWltcG9ydC1zYW1lLW9yaWdpbi1yZWZlcnJlci1jaGVj
a2VyLXdvcmtlci5qcyIKK0ZBSUwgU2FtZS1vcmlnaW4gc3RhdGljIGltcG9ydCB3aXRoICJvcmln
aW4iIHJlZmVycmVyIHBvbGljeS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9sb2Nh
bGhvc3Q6ODgwMC8iIGJ1dCBnb3QgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC93b3JrZXJzL21vZHVs
ZXMvcmVzb3VyY2VzL3N0YXRpYy1pbXBvcnQtc2FtZS1vcmlnaW4tcmVmZXJyZXItY2hlY2tlci13
b3JrZXIuanMiCiBQQVNTIFNhbWUtb3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0aCAic2FtZS1vcmln
aW4iIHJlZmVycmVyIHBvbGljeS4KIEZBSUwgQ3Jvc3Mtb3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0
aCAibm8tcmVmZXJyZXIiIHJlZmVycmVyIHBvbGljeS4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQg
cmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBUeXBlIGVycm9yIgogRkFJ
TCBDcm9zcy1vcmlnaW4gc3RhdGljIGltcG9ydCB3aXRoICJvcmlnaW4iIHJlZmVycmVyIHBvbGlj
eS4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAi
VHlwZUVycm9yOiBUeXBlIGVycm9yIgogRkFJTCBDcm9zcy1vcmlnaW4gc3RhdGljIGltcG9ydCB3
aXRoICJzYW1lLW9yaWdpbiIgcmVmZXJyZXIgcG9saWN5LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxl
ZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiCi1G
QUlMIFNhbWUtb3JpZ2luIGR5bmFtaWMgaW1wb3J0IHdpdGggIm5vLXJlZmVycmVyIiByZWZlcnJl
ciBwb2xpY3kuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIiIGJ1dCBnb3QgImh0dHA6Ly9sb2Nh
bGhvc3Q6ODgwMC93b3JrZXJzL21vZHVsZXMvcmVzb3VyY2VzL2R5bmFtaWMtaW1wb3J0LXNhbWUt
b3JpZ2luLXJlZmVycmVyLWNoZWNrZXItd29ya2VyLmpzIgotRkFJTCBTYW1lLW9yaWdpbiBkeW5h
bWljIGltcG9ydCB3aXRoICJvcmlnaW4iIHJlZmVycmVyIHBvbGljeS4gYXNzZXJ0X2VxdWFsczog
ZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC8iIGJ1dCBnb3QgImh0dHA6Ly9sb2NhbGhv
c3Q6ODgwMC93b3JrZXJzL21vZHVsZXMvcmVzb3VyY2VzL2R5bmFtaWMtaW1wb3J0LXNhbWUtb3Jp
Z2luLXJlZmVycmVyLWNoZWNrZXItd29ya2VyLmpzIgorUEFTUyBTYW1lLW9yaWdpbiBkeW5hbWlj
IGltcG9ydCB3aXRoICJuby1yZWZlcnJlciIgcmVmZXJyZXIgcG9saWN5LgorUEFTUyBTYW1lLW9y
aWdpbiBkeW5hbWljIGltcG9ydCB3aXRoICJvcmlnaW4iIHJlZmVycmVyIHBvbGljeS4KIFBBU1Mg
U2FtZS1vcmlnaW4gZHluYW1pYyBpbXBvcnQgd2l0aCAic2FtZS1vcmlnaW4iIHJlZmVycmVyIHBv
bGljeS4KIEZBSUwgQ3Jvc3Mtb3JpZ2luIGR5bmFtaWMgaW1wb3J0IHdpdGggIm5vLXJlZmVycmVy
IiByZWZlcnJlciBwb2xpY3kuIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRo
IHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogVHlwZSBlcnJvciIKIEZBSUwgQ3Jvc3Mtb3JpZ2lu
IGR5bmFtaWMgaW1wb3J0IHdpdGggIm9yaWdpbiIgcmVmZXJyZXIgcG9saWN5LiBwcm9taXNlX3Rl
c3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IFR5
cGUgZXJyb3IiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4dApp
bmRleCA1NzZlNmQyYjdlZDIuLjRhMjZiZTkyOWE4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdv
cmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWlt
cG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3Mg
dG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3MS5sb2NhbGhvc3Q6OTQ0My93b3JrZXJzL21vZHVs
ZXMvcmVzb3VyY2VzL2V4cG9ydC1vbi1sb2FkLXNjcmlwdC5weQogCiBQQVNTIFN0YXRpYyBpbXBv
cnQuCiBGQUlMIFN0YXRpYyBpbXBvcnQgKGNyb3NzLW9yaWdpbikuIHByb21pc2VfdGVzdDogVW5o
YW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiAiSW1wb3J0aW5nIGEgbW9kdWxlIHNjcmlwdCBm
YWlsZWQuIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1jcmVkZW50aWFscy1leHBl
Y3RlZC50eHQKaW5kZXggZTFiZWRmNTQzMGVmLi5hNzBmMDVhZjU0ZjQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVz
L3NoYXJlZC13b3JrZXItb3B0aW9ucy1jcmVkZW50aWFscy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMv
c2hhcmVkLXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsx
LDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwOi8vd3d3MS5sb2NhbGhv
c3Q6ODgwMC93b3JrZXJzL21vZHVsZXMvcmVzb3VyY2VzL2V4cG9ydC1jcmVkZW50aWFscy5weQog
CiBIYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFu
dGljcy9tdWx0aXBsZS13b3JrZXJzLzAwNC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdv
cmtlcnMvMDA0LWV4cGVjdGVkLnR4dAppbmRleCAwMThkYjYwNDU2OWQuLmNmZTQ2NTU2NzVjZCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwNC1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFu
dGljcy9tdWx0aXBsZS13b3JrZXJzLzAwNC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSwzIEBACiAK
LUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1OT1RSVU4gc2hhcmVk
IHdvcmtlciB3aXRoIG11bHRpcGxlIGRvY3VtZW50cworUEFTUyBzaGFyZWQgd29ya2VyIHdpdGgg
bXVsdGlwbGUgZG9jdW1lbnRzCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8w
MDgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQK
aW5kZXggOTdhNGU3YTczYTYzLi4wOWY2NzJkMWM2MjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlw
bGUtd29ya2Vycy8wMDgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8w
MDgtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsMyBAQAogCi1IYXJuZXNzIEVycm9yIChUSU1FT1VU
KSwgbWVzc2FnZSA9IG51bGwKLQotVElNRU9VVCBtZXNzYWdlY2hhbm5lbCBpbiBzaGFyZWQgd29y
a2VyIFRlc3QgdGltZWQgb3V0CitQQVNTIG1lc3NhZ2VjaGFubmVsIGluIHNoYXJlZCB3b3JrZXIK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrZXJzL3NoYXJlZC13b3JrZXItZnJvbS1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3No
YXJlZC13b3JrZXItZnJvbS1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0CmluZGV4IGEwODlj
MjI0ODllMi4uMTllNDZiMDlhNTZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJs
LndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItZnJvbS1ibG9iLXVybC53aW5kb3ct
ZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNSBAQAogCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwg
bWVzc2FnZSA9IG51bGwKLQotRkFJTCBDcmVhdGluZyBhIHNoYXJlZCB3b3JrZXIgZnJvbSBhIGJs
b2IgVVJMIHdvcmtzLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAid29ya2VyX09LXzIiIGJ1dCBn
b3QgIndvcmtlcl9PS18xIgorUEFTUyBDcmVhdGluZyBhIHNoYXJlZCB3b3JrZXIgZnJvbSBhIGJs
b2IgVVJMIHdvcmtzLgogUEFTUyBDcmVhdGluZyBhIHNoYXJlZCB3b3JrZXIgZnJvbSBhIGJsb2Ig
VVJMIHdvcmtzIGltbWVkaWF0ZWx5IGJlZm9yZSByZXZva2luZy4KLVRJTUVPVVQgQ29ubmVjdGlu
ZyB0byBhIHNoYXJlZCB3b3JrZXIgb24gYSByZXZva2VkIGJsb2IgVVJMIHdvcmtzLiBUZXN0IHRp
bWVkIG91dAorUEFTUyBDb25uZWN0aW5nIHRvIGEgc2hhcmVkIHdvcmtlciBvbiBhIHJldm9rZWQg
YmxvYiBVUkwgd29ya3MuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQKaW5k
ZXggNmZmZWUyNzM5MGQ5Li5hZTQ1YjRkMjczOTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUt
dmlhLW9wdGlvbnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMt
ZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIFRlc3QgdGhlIG5hbWUgcHJvcGVy
dHkgb2Ygc2hhcmVkIHdvcmtlcnMgbWl4aW5nIGNvbnN0cnVjdG9yIG9wdGlvbnMgYW5kIGNvbnN0
cnVjdG9yIHN0cmluZ3MgRXJyb3I6IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDIgYnV0IGdvdCAx
CitQQVNTIFRlc3QgdGhlIG5hbWUgcHJvcGVydHkgb2Ygc2hhcmVkIHdvcmtlcnMgbWl4aW5nIGNv
bnN0cnVjdG9yIG9wdGlvbnMgYW5kIGNvbnN0cnVjdG9yIHN0cmluZ3MKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJl
ZC13b3JrZXItb3B0aW9ucy1taXNtYXRjaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25z
LW1pc21hdGNoLWV4cGVjdGVkLnR4dAppbmRleCBmNjU2OTQ2MTUwZGIuLjRmOTlhMTM0MDllNyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1taXNtYXRjaC1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJl
ZC13b3JrZXItb3B0aW9ucy1taXNtYXRjaC1leHBlY3RlZC50eHQKQEAgLTEsMjggKzEsMjYgQEAK
IAotSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0KLVRJTUVPVVQgQ29u
bmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJl
IGJsb2NrZWQ6IGRlZmF1bHQgdG8gbW9kdWxlIFRlc3QgdGltZWQgb3V0Ci1OT1RSVU4gQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IG1vZHVsZSB0byBkZWZhdWx0Ci1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29y
a2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGNsYXNzaWMgdG8g
bW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50
IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG1vZHVsZSB0byBjbGFzc2ljCi1OT1RSVU4gQ29u
bmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJl
IGJsb2NrZWQ6IGRlZmF1bHQgdG8gb21pdCBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0
byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6
IGRlZmF1bHQgdG8gaW5jbHVkZSBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQg
dG8gZGVmYXVsdCBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2Vy
IHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gc2FtZS1v
cmlnaW4gaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGluY2x1ZGUgaW4g
Y2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVu
dCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBvbWl0IGluIGNsYXNz
aWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gaW5jbHVkZSBpbiBjbGFzc2lj
Ci1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlv
bnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gZGVmYXVsdCBpbiBjbGFzc2ljCi1OT1RS
VU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hv
dWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gb21pdCBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IGluY2x1ZGUgdG8gc2FtZS1vcmlnaW4gaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3Rp
bmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9j
a2VkOiBkZWZhdWx0IHRvIG9taXQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1
bHQgdG8gaW5jbHVkZSBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3Jr
ZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBkZWZh
dWx0IGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRp
ZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIHNhbWUtb3JpZ2luIGlu
IG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVu
dCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGluY2x1ZGUgaW4gbW9kdWxlCi1O
T1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMg
c2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIG9taXQgaW4gbW9kdWxlCi1OT1RSVU4g
Q29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxk
IGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIGluY2x1ZGUgaW4gbW9kdWxlCi1OT1RSVU4gQ29u
bmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJl
IGJsb2NrZWQ6IGluY2x1ZGUgdG8gZGVmYXVsdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogaW5jbHVkZSB0byBvbWl0IGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVk
IHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRl
IHRvIHNhbWUtb3JpZ2luIGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3Jr
ZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBt
b2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9w
dGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG1vZHVsZSB0byBkZWZhdWx0CitQQVNTIENvbm5lY3Rp
bmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9j
a2VkOiBjbGFzc2ljIHRvIG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIg
d2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGNsYXNz
aWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlv
bnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gb21pdCBpbiBjbGFzc2ljCitQQVNTIENv
bm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBi
ZSBibG9ja2VkOiBkZWZhdWx0IHRvIGluY2x1ZGUgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogb21pdCB0byBkZWZhdWx0IGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQg
d29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8g
c2FtZS1vcmlnaW4gaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIg
d2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBpbmNsdWRl
IGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVy
ZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIG9taXQgaW4gY2xh
c3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gaW5jbHVkZSBpbiBjbGFzc2lj
CitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25z
IHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIGRlZmF1bHQgaW4gY2xhc3NpYworUEFTUyBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogaW5jbHVkZSB0byBvbWl0IGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0
byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6
IGluY2x1ZGUgdG8gc2FtZS1vcmlnaW4gaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNo
YXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVm
YXVsdCB0byBvbWl0IGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIg
d2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBpbmNs
dWRlIGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZm
ZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBkZWZhdWx0IGluIG1vZHVs
ZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9u
cyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBzYW1lLW9yaWdpbiBpbiBtb2R1bGUKK1BBU1Mg
Q29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxk
IGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVkZSBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0
byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6
IHNhbWUtb3JpZ2luIHRvIG9taXQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVk
IHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9y
aWdpbiB0byBpbmNsdWRlIGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3Jr
ZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBk
ZWZhdWx0IGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBvbWl0IGluIG1v
ZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBzYW1lLW9yaWdpbiBpbiBtb2R1bGUK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL29wZW4t
dXJsLXJlZGlyZWN0ZWQtc2hhcmVkd29ya2VyLW9yaWdpbi1leHBlY3RlZC50eHQKaW5kZXggMWUy
ZDM5OTJmNmQ1Li41OWNhY2E0ODZmOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL29wZW4tdXJsLXJlZGlyZWN0ZWQtc2hhcmVkd29y
a2VyLW9yaWdpbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3Jp
Z2luLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVy
bmFsIFVSTCBodHRwOi8vd3d3Mi5sb2NhbGhvc3Q6ODgwMC94aHIvcmVzb3VyY2VzL2luc3BlY3Qt
aGVhZGVycy5weT9maWx0ZXJfbmFtZT1vcmlnaW4mY29ycwogCiBGQUlMIFJlZmVyZXIgaGVhZGVy
IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJSZWZlcmVyOiBodHRwOi8vbG9jYWxob3N0Ojg4MDAv
eGhyL3Jlc291cmNlcy93b3JrZXJ4aHItb3JpZ2luLXJlZmVycmVyLmpzXG4iIGJ1dCBnb3QgIlJl
ZmVyZXI6IGh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC94aHIvcmVzb3VyY2VzL3JlZGlyZWN0LnB5P2xv
Y2F0aW9uPXdvcmtlcnhoci1vcmlnaW4tcmVmZXJyZXIuanNcbiIKIEZBSUwgT3JpZ2luIGhlYWRl
ciBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiT3JpZ2luOiBodHRwOi8vbG9jYWxob3N0Ojg4MDBc
biIgYnV0IGdvdCAiIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2lu
c2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLWNvbm5lY3Qtc3JjLnN1Yi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItY29u
bmVjdC1zcmMuc3ViLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLmYzNzc4YmJhNDY5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1jb25uZWN0LXNyYy5zdWIt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKKworSGFybmVzcyBFcnJvciAoVElNRU9VVCks
IG1lc3NhZ2UgPSBudWxsCisKK1RJTUVPVVQgc2hhcmVkd29ya2VyLWNvbm5lY3Qtc3JjIFRlc3Qg
dGltZWQgb3V0CitQQVNTIFNhbWUtb3JpZ2luICdmZXRjaCgpJyBpbiBodHRwOiB3aXRob3V0IENT
UAorUEFTUyBTYW1lLW9yaWdpbiBYSFIgaW4gaHR0cDogd2l0aG91dCBDU1AKK1BBU1MgQ3Jvc3Mt
b3JpZ2luICdmZXRjaCgpJyBpbiBodHRwOiB3aXRob3V0IENTUAorUEFTUyBDcm9zcy1vcmlnaW4g
WEhSIGluIGh0dHA6IHdpdGhvdXQgQ1NQCitQQVNTIFNhbWUtb3JpZ2luID0+IGNyb3NzLW9yaWdp
biAnZmV0Y2goKScgaW4gaHR0cDogd2l0aG91dCBDU1AKK1BBU1MgU2FtZS1vcmlnaW4gJ2ZldGNo
KCknIGluIGh0dHA6IHdpdGggY29ubmVjdC1zcmMgJ3NlbGYnCitQQVNTIFNhbWUtb3JpZ2luIFhI
UiBpbiBodHRwOiB3aXRoIGNvbm5lY3Qtc3JjICdzZWxmJworVElNRU9VVCBDcm9zcy1vcmlnaW4g
J2ZldGNoKCknIGluIGh0dHA6IHdpdGggY29ubmVjdC1zcmMgJ3NlbGYnIFRlc3QgdGltZWQgb3V0
CitOT1RSVU4gQ3Jvc3Mtb3JpZ2luIFhIUiBpbiBodHRwOiB3aXRoIGNvbm5lY3Qtc3JjICdzZWxm
JworTk9UUlVOIFNhbWUtb3JpZ2luID0+IGNyb3NzLW9yaWdpbiAnZmV0Y2goKScgaW4gaHR0cDog
d2l0aCBjb25uZWN0LXNyYyAnc2VsZicKK05PVFJVTiBSZXBvcnRzIG1hdGNoIGluIGh0dHA6IHdp
dGggY29ubmVjdC1zcmMgJ3NlbGYnCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5
LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVk
d29ya2VyLXJlcG9ydC1vbmx5LnN1Yi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi43NzdjZWQ0NTFlMmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0
LW9ubHkuc3ViLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACisKK0hhcm5lc3MgRXJyb3Ig
KFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAorCitQQVNTIFNhbWUtb3JpZ2luICdmZXRjaCgpJy4K
K1BBU1MgU2FtZS1vcmlnaW4gWEhSLgorVElNRU9VVCBDcm9zcy1vcmlnaW4gJ2ZldGNoKCknLiBU
ZXN0IHRpbWVkIG91dAorTk9UUlVOIENyb3NzLW9yaWdpbiBYSFIuCitOT1RSVU4gU2FtZS1vcmln
aW4gPT4gY3Jvc3Mtb3JpZ2luICdmZXRjaCgpJy4KK05PVFJVTiBjb25uZWN0LXNyYy1zZWxmLXJl
cG9ydC1vbmx5CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNp
ZGUtd29ya2VyL3NoYXJlZHdvcmtlci1zY3JpcHQtc3JjLnN1Yi1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0
LXNyYy5zdWItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uNzdkY2U1NTAwYTdiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJp
dHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEyIEBACisKK0hhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNz
YWdlID0gbnVsbAorCitUSU1FT1VUIHNoYXJlZHdvcmtlci1zY3JpcHQtc3JjIFRlc3QgdGltZWQg
b3V0CitQQVNTIENyb3NzLW9yaWdpbiBgaW1wb3J0U2NyaXB0cygpYCBub3QgYmxvY2tlZCBpbiBo
dHRwOiB3aXRob3VyIENTUAorUEFTUyBgZXZhbCgpYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRo
b3V0IENTUAorUEFTUyBgc2V0VGltZW91dChbc3RyaW5nXSlgIG5vdCBibG9ja2VkIGluIGh0dHA6
IHdpdGhvdXQgQ1NQCitUSU1FT1VUIENyb3NzLW9yaWdpbiBgaW1wb3J0U2NyaXB0cygpYCBibG9j
a2VkIGluIGh0dHA6IHdpdGggc2NyaXB0LXNyYyAnc2VsZicgVGVzdCB0aW1lZCBvdXQKK05PVFJV
TiBgZXZhbCgpYCBibG9ja2VkIGluIGh0dHA6IHdpdGggc2NyaXB0LXNyYyAnc2VsZicKK05PVFJV
TiBgc2V0VGltZW91dChbc3RyaW5nXSlgIGJsb2NrZWQgaW4gaHR0cDogd2l0aCBzY3JpcHQtc3Jj
ICdzZWxmJworTk9UUlVOIFJlcG9ydHMgYXJlIHNlbnQgZm9yIGh0dHA6IHdpdGggc2NyaXB0LXNy
YyAnc2VsZicKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2Vy
LWltcG9ydC1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxl
cy9zaGFyZWQtd29ya2VyLWltcG9ydC1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNjUxOWNkMWY2OTQ3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1ibG9i
LXVybC53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKKworUEFTUyBTdGF0aWMg
aW1wb3J0LgorUEFTUyBTdGF0aWMgaW1wb3J0IChjcm9zcy1vcmlnaW4pLgorUEFTUyBTdGF0aWMg
aW1wb3J0IChyZWRpcmVjdCkuCitQQVNTIE5lc3RlZCBzdGF0aWMgaW1wb3J0LgorUEFTUyBTdGF0
aWMgaW1wb3J0IGFuZCB0aGVuIGR5bmFtaWMgaW1wb3J0LgorUEFTUyBEeW5hbWljIGltcG9ydC4K
K1BBU1MgTmVzdGVkIGR5bmFtaWMgaW1wb3J0LgorUEFTUyBEeW5hbWljIGltcG9ydCBhbmQgdGhl
biBzdGF0aWMgaW1wb3J0LgorUEFTUyBldmFsKGltcG9ydCgpKS4KKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC53aW5kb3ctZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRh
LXVybC53aW5kb3ctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uZTM2YzA0OWY4MjU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9k
dWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTMgQEAKKworSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxs
CisKK1BBU1MgU3RhdGljIGltcG9ydC4KK1BBU1MgU3RhdGljIGltcG9ydCAoY3Jvc3Mtb3JpZ2lu
KS4KK1RJTUVPVVQgU3RhdGljIGltcG9ydCAocmVkaXJlY3QpLiBUZXN0IHRpbWVkIG91dAorTk9U
UlVOIE5lc3RlZCBzdGF0aWMgaW1wb3J0LgorTk9UUlVOIFN0YXRpYyBpbXBvcnQgYW5kIHRoZW4g
ZHluYW1pYyBpbXBvcnQuCitOT1RSVU4gRHluYW1pYyBpbXBvcnQuCitOT1RSVU4gTmVzdGVkIGR5
bmFtaWMgaW1wb3J0LgorTk9UUlVOIER5bmFtaWMgaW1wb3J0IGFuZCB0aGVuIHN0YXRpYyBpbXBv
cnQuCitOT1RSVU4gZXZhbChpbXBvcnQoKSkuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21v
ZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjY1MTljZDFmNjk0NwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQud2lu
ZG93LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACisKK1BBU1MgU3RhdGljIGltcG9ydC4K
K1BBU1MgU3RhdGljIGltcG9ydCAoY3Jvc3Mtb3JpZ2luKS4KK1BBU1MgU3RhdGljIGltcG9ydCAo
cmVkaXJlY3QpLgorUEFTUyBOZXN0ZWQgc3RhdGljIGltcG9ydC4KK1BBU1MgU3RhdGljIGltcG9y
dCBhbmQgdGhlbiBkeW5hbWljIGltcG9ydC4KK1BBU1MgRHluYW1pYyBpbXBvcnQuCitQQVNTIE5l
c3RlZCBkeW5hbWljIGltcG9ydC4KK1BBU1MgRHluYW1pYyBpbXBvcnQgYW5kIHRoZW4gc3RhdGlj
IGltcG9ydC4KK1BBU1MgZXZhbChpbXBvcnQoKSkuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmEyYjE4
YjUyNDkyOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdv
cmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM1IEBACisK
K1BBU1MgVGVzdCBpbml0aWFsaXphdGlvbjogc2V0dGluZyB1cCBjcm9zcy1vcmlnaW4gY29va2ll
CitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBkZWZhdWx0IGNy
ZWRlbnRpYWxzIG9wdGlvbiBzaG91bGQgYmVoYXZlIGFzIGNyZWRlbnRpYWxzPXNhbWUtb3JpZ2lu
IGFuZCBzZW5kIHRoZSBjcmVkZW50aWFscworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0
eXBlPW1vZHVsZSBhbmQgY3JlZGVudGlhbHM9b21pdCBzaG91bGQgbm90IHNlbmQgdGhlIGNyZWRl
bnRpYWxzCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBjcmVk
ZW50aWFscz1zYW1lLW9yaWdpbiBzaG91bGQgc2VuZCB0aGUgY3JlZGVudGlhbHMKK1BBU1MgbmV3
IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPWluY2x1ZGUg
c2hvdWxkIHNlbmQgdGhlIGNyZWRlbnRpYWxzCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRo
IHR5cGU9bW9kdWxlIGFuZCBkZWZhdWx0IGNyZWRlbnRpYWxzIG9wdGlvbiBzaG91bGQgYmVoYXZl
IGFzIGNyZWRlbnRpYWxzPXNhbWUtb3JpZ2luIGFuZCBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3Ig
c2FtZS1vcmlnaW4gc3RhdGljIGltcG9ydHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGgg
dHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPW9taXQgc2hvdWxkIG5vdCBzZW5kIHRoZSBjcmVk
ZW50aWFscyBmb3Igc2FtZS1vcmlnaW4gc3RhdGljIGltcG9ydHMKK1BBU1MgbmV3IFNoYXJlZFdv
cmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPXNhbWUtb3JpZ2luIHNob3Vs
ZCBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3Igc2FtZS1vcmlnaW4gc3RhdGljIGltcG9ydHMKK1BB
U1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPWlu
Y2x1ZGUgc2hvdWxkIHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBzYW1lLW9yaWdpbiBzdGF0aWMg
aW1wb3J0cworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQgZGVm
YXVsdCBjcmVkZW50aWFscyBvcHRpb24gc2hvdWxkIGJlaGF2ZSBhcyBjcmVkZW50aWFscz1zYW1l
LW9yaWdpbiBhbmQgbm90IHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gc3Rh
dGljIGltcG9ydHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5k
IGNyZWRlbnRpYWxzPW9taXQgc2hvdWxkIG5vdCBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3IgY3Jv
c3Mtb3JpZ2luIHN0YXRpYyBpbXBvcnRzCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5
cGU9bW9kdWxlIGFuZCBjcmVkZW50aWFscz1zYW1lLW9yaWdpbiBzaG91bGQgbm90IHNlbmQgdGhl
IGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gc3RhdGljIGltcG9ydHMKK0ZBSUwgbmV3IFNo
YXJlZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPWluY2x1ZGUgc2hv
dWxkIHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gc3RhdGljIGltcG9ydHMg
YXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjEiIGJ1dCBnb3QgIiIKK1BBU1MgbmV3IFNoYXJlZFdv
cmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGRlZmF1bHQgY3JlZGVudGlhbHMgb3B0aW9uIHNo
b3VsZCBiZWhhdmUgYXMgY3JlZGVudGlhbHM9c2FtZS1vcmlnaW4gYW5kIHNlbmQgdGhlIGNyZWRl
bnRpYWxzIGZvciBzYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydHMKK1BBU1MgbmV3IFNoYXJlZFdv
cmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPW9taXQgc2hvdWxkIG5vdCBz
ZW5kIHRoZSBjcmVkZW50aWFscyBmb3Igc2FtZS1vcmlnaW4gZHluYW1pYyBpbXBvcnRzCitQQVNT
IG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBjcmVkZW50aWFscz1zYW1l
LW9yaWdpbiBzaG91bGQgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2luIGR5bmFt
aWMgaW1wb3J0cworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQg
Y3JlZGVudGlhbHM9aW5jbHVkZSBzaG91bGQgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUt
b3JpZ2luIGR5bmFtaWMgaW1wb3J0cworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBl
PW1vZHVsZSBhbmQgZGVmYXVsdCBjcmVkZW50aWFscyBvcHRpb24gc2hvdWxkIGJlaGF2ZSBhcyBj
cmVkZW50aWFscz1zYW1lLW9yaWdpbiBhbmQgbm90IHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBj
cm9zcy1vcmlnaW4gZHluYW1pYyBpbXBvcnRzCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRo
IHR5cGU9bW9kdWxlIGFuZCBjcmVkZW50aWFscz1vbWl0IHNob3VsZCBub3Qgc2VuZCB0aGUgY3Jl
ZGVudGlhbHMgZm9yIGNyb3NzLW9yaWdpbiBkeW5hbWljIGltcG9ydHMKK1BBU1MgbmV3IFNoYXJl
ZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPXNhbWUtb3JpZ2luIHNo
b3VsZCBub3Qgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIGNyb3NzLW9yaWdpbiBkeW5hbWljIGlt
cG9ydHMKK0ZBSUwgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRl
bnRpYWxzPWluY2x1ZGUgc2hvdWxkIHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmln
aW4gZHluYW1pYyBpbXBvcnRzIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIxIiBidXQgZ290ICIi
CitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9Y2xhc3NpYyBzaG91bGQgYWx3YXlz
IHNlbmQgdGhlIGNyZWRlbnRpYWxzIHJlZ2FyZGxlc3Mgb2YgdGhlIGNyZWRlbnRpYWxzIG9wdGlv
biAoZGVmYXVsdCkuCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9Y2xhc3NpYyBz
aG91bGQgYWx3YXlzIHNlbmQgdGhlIGNyZWRlbnRpYWxzIHJlZ2FyZGxlc3Mgb2YgdGhlIGNyZWRl
bnRpYWxzIG9wdGlvbiAob21pdCkuCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9
Y2xhc3NpYyBzaG91bGQgYWx3YXlzIHNlbmQgdGhlIGNyZWRlbnRpYWxzIHJlZ2FyZGxlc3Mgb2Yg
dGhlIGNyZWRlbnRpYWxzIG9wdGlvbiAoc2FtZS1vcmlnaW4pLgorUEFTUyBuZXcgU2hhcmVkV29y
a2VyKCkgd2l0aCB0eXBlPWNsYXNzaWMgc2hvdWxkIGFsd2F5cyBzZW5kIHRoZSBjcmVkZW50aWFs
cyByZWdhcmRsZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKGluY2x1ZGUpLgorUEFTUyBu
ZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPWNsYXNzaWMgc2hvdWxkIGFsd2F5cyBzZW5kIHRo
ZSBjcmVkZW50aWFscyBmb3Igc2FtZS1vcmlnaW4gZHluYW1pYyBpbXBvcnRzIHJlZ2FyZGxlc3Mg
b2YgdGhlIGNyZWRlbnRpYWxzIG9wdGlvbiAoZGVmYXVsdCkuCitQQVNTIG5ldyBTaGFyZWRXb3Jr
ZXIoKSB3aXRoIHR5cGU9Y2xhc3NpYyBzaG91bGQgYWx3YXlzIHNlbmQgdGhlIGNyZWRlbnRpYWxz
IGZvciBzYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydHMgcmVnYXJkbGVzcyBvZiB0aGUgY3JlZGVu
dGlhbHMgb3B0aW9uIChvbWl0KS4KK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1j
bGFzc2ljIHNob3VsZCBhbHdheXMgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2lu
IGR5bmFtaWMgaW1wb3J0cyByZWdhcmRsZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKHNh
bWUtb3JpZ2luKS4KK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1jbGFzc2ljIHNo
b3VsZCBhbHdheXMgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2luIGR5bmFtaWMg
aW1wb3J0cyByZWdhcmRsZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKGluY2x1ZGUpLgor
UEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPWNsYXNzaWMgc2hvdWxkIG5ldmVyIHNl
bmQgdGhlIGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gZHluYW1pYyBpbXBvcnRzIHJlZ2Fy
ZGxlc3Mgb2YgdGhlIGNyZWRlbnRpYWxzIG9wdGlvbiAoZGVmYXVsdCkuCitQQVNTIG5ldyBTaGFy
ZWRXb3JrZXIoKSB3aXRoIHR5cGU9Y2xhc3NpYyBzaG91bGQgbmV2ZXIgc2VuZCB0aGUgY3JlZGVu
dGlhbHMgZm9yIGNyb3NzLW9yaWdpbiBkeW5hbWljIGltcG9ydHMgcmVnYXJkbGVzcyBvZiB0aGUg
Y3JlZGVudGlhbHMgb3B0aW9uIChvbWl0KS4KK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGgg
dHlwZT1jbGFzc2ljIHNob3VsZCBuZXZlciBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3IgY3Jvc3Mt
b3JpZ2luIGR5bmFtaWMgaW1wb3J0cyByZWdhcmRsZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRp
b24gKHNhbWUtb3JpZ2luKS4KK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1jbGFz
c2ljIHNob3VsZCBuZXZlciBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3IgY3Jvc3Mtb3JpZ2luIGR5
bmFtaWMgaW1wb3J0cyByZWdhcmRsZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKGluY2x1
ZGUpLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL29wZW4tdXJsLXJlZGlyZWN0ZWQtc2hhcmVkd29y
a2VyLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL29wZW4tdXJsLXJlZGlyZWN0ZWQtc2hh
cmVkd29ya2VyLW9yaWdpbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi5lZTUzZjJmZjJkNWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL29w
ZW4tdXJsLXJlZGlyZWN0ZWQtc2hhcmVkd29ya2VyLW9yaWdpbi1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw1IEBACisKK0ZBSUwgUmVmZXJlciBoZWFkZXIgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQg
IlJlZmVyZXI6IGh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC94aHIvcmVzb3VyY2VzL3dvcmtlcnhoci1v
cmlnaW4tcmVmZXJyZXIuanNcbiIgYnV0IGdvdCAiUmVmZXJlcjogaHR0cDovL2xvY2FsaG9zdDo4
ODAwL3hoci9yZXNvdXJjZXMvcmVkaXJlY3QucHk/bG9jYXRpb249d29ya2VyeGhyLW9yaWdpbi1y
ZWZlcnJlci5qc1xuIgorUEFTUyBPcmlnaW4gaGVhZGVyCitQQVNTIFJlcXVlc3QgVVJMIHRlc3QK
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNmNiMTc0NTlhN2RhLi5jOWY2Njg1ZjYyZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQpAQCAtMTk1OSw5ICsxOTU5LDEyIEBAIHNldChXZWJDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCiAg
ICAgd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCiAgICAgd29ya2Vycy9Xb3JrZXJMb2FkZXJQ
cm94eS5oCisgICAgd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oCisgICAgd29ya2Vycy9Xb3Jr
ZXJPcHRpb25zLmgKICAgICB3b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKICAg
ICB3b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaAogICAgIHdvcmtlcnMv
V29ya2VyT3JXb3JrbGV0VGhyZWFkLmgKKyAgICB3b3JrZXJzL1dvcmtlclJlcG9ydGluZ1Byb3h5
LmgKICAgICB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuaAogICAgIHdvcmtlcnMvV29ya2VyU2NyaXB0
TG9hZGVyLmgKICAgICB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlckNsaWVudC5oCkBAIC0yMDA1
LDkgKzIwMDgsMTIgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAg
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAogCiAgICAgd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VySWRlbnRpZmllci5oCi0gICAgd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyTWFuYWdlci5oCisgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyS2V5LmgKICAg
ICB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKKyAgICB3b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgKICAgICB3b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5oCisKKyAgICB3b3JrZXJzL3NoYXJlZC9jb250ZXh0
L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgKICAgICB3b3JrZXJzL3NoYXJlZC9jb250ZXh0
L1NoYXJlZFdvcmtlclRocmVhZC5oCiAgICAgd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRX
b3JrZXJUaHJlYWRQcm94eS5oCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggYjNmNWUwYjc4NDE3Li41ZWU1
MDBjYjZkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yNzg1LDEwICsyNzg1LDEwIEBAIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAogd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlci5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAotd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQ
cm92aWRlci5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAK
K3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwCiB3
b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZC5jcHAKIHdvcmtlcnMvc2hh
cmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3BwCiB3b3JrbGV0cy9QYWludFdv
cmtsZXRHbG9iYWxTY29wZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjNWY0NGVmMDRhNzAuLjU2YTcxNTlkYmFlZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtOTAzLDcgKzkwMyw3IEBACiAJCTJFNDM0NjRCMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJH
bG9iYWxTY29wZVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRTQzNDYzOTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGVQcm94
eS5oICovOyB9OwogCQkyRTQzNDY0RDBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyTG9jYXRpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjNC
MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJMb2NhdGlvbi5oICovOyB9OwogCQkyRTQzNDY1MDBG
NTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyTWVzc2FnaW5nUHJveHkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjNFMEY1NDZBODIwMEIwRjFCQSAv
KiBXb3JrZXJNZXNzYWdpbmdQcm94eS5oICovOyB9OwotCQkyRTQzNDY1MTBGNTQ2QTgyMDBCMEYx
QkEgLyogV29ya2VyT2JqZWN0UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJFNDM0NjNGMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQ
cm94eS5oICovOyB9OworCQkyRTQzNDY1MTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyT2JqZWN0
UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJF
NDM0NjNGMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94eS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFNDM0NjUzMEY1NDZBODIw
MEIwRjFCQSAvKiBXb3JrZXJSdW5Mb29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDY0MTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyUnVuTG9v
cC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJF
NDM0NjU1MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjQzMEY1NDZBODIwMEIwRjFCQSAv
KiBXb3JrZXJUaHJlYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkyRTc1ODQxRTEyNzc5QURBMDA2MjYyOEIgLyogRmlsZVJlYWRlckxvYWRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU3NTg0MUIx
Mjc3OUFEQTAwNjI2MjhCIC8qIEZpbGVSZWFkZXJMb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTEyNSw3ICsxMTI1LDcgQEAKIAkJNDE2
QTA2QTEyM0NDQUQwMzAwMzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZBMDY5NjIz
Q0NBQTlGMDAzNDcxMDkgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZENzVBMjIwQzY1
MUE1MDBEMDJEMkMgLyogTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RDc1OUYyMEM2NDQxMzAwRDAyRDJDIC8q
IE5ldHdvcmtMb2FkSW5mb3JtYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0MTZFMEIzQTIwOUJDM0NCMDA0QTk1RDkgLyogRmV0Y2hJZGVu
dGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTZFMEIzNzIwOUJDM0MyMDA0QTk1RDkgLyogRmV0Y2hJZGVudGlmaWVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDE2RTI5QTYxMDJGQTk2MjAw
N0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFMjlBNTEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2Vy
UmVwb3J0aW5nUHJveHkuaCAqLzsgfTsKKwkJNDE2RTI5QTYxMDJGQTk2MjAwN0ZDMTRFIC8qIFdv
cmtlclJlcG9ydGluZ1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTZFMjlBNTEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJv
eHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
MTZFNkZFODFCQkQxMkRGMDAwQTNGNjQgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlu
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4
MDYxQkIzMTEwRDAwQjc2NEQ5IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZF
ODFCQkQxMkRGMDAwQTNGNjUgLyogSlNET01CaW5kaW5nSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzEx
MEQwMEI3NjREQSAvKiBKU0RPTUJpbmRpbmdJbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU4MUJCRDEyREYw
MDBBM0Y3NCAvKiBUcmFuc2Zvcm1TdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2
NEVBIC8qIFRyYW5zZm9ybVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzNDcsMTQgKzEzNDcsMTYgQEAK
IAkJNDY3QTY4RDcyNzVFQTk5MTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3QTY4RDQyNzVFQTk4
QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2N0E2OEQ4Mjc1RUE5OTUwMDlCMzFDNSAvKiBT
aGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2N0E2OEQ1Mjc1RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJT
Y3JpcHRMb2FkZXIuaCAqLzsgfTsKIAkJNDY3QTY4RDkyNzVFQTk5ODAwOUIzMUM1IC8qIFNoYXJl
ZFdvcmtlclRocmVhZFByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NjdBNjhENjI3NUVBOThDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFk
UHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQk0NjdBNjhEQTI3NUVBOTlDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3QTY4RDIyNzVFQTk4
QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjgyRDIwMDFGNzk3ODMwMDBDODYzREIgLyog
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2ODJEMUZGMUY3OTc4MjMwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50
aWFsc1BvbGljeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQ2ODM0NEUwMUVEREZBQUEwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MzQ0REUxRURERkE1RjAw
Qjc3OTVCIC8qIERPTVJlY3RMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDY4M0RGNDAyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVh
bG1HbG9iYWxTY29wZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2ODNERjNFMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFs
U2NvcGVCYXNlLmggKi87IH07CiAJCTQ2ODNERjQxMjc2N0U5MUEwMDdEMDBDOCAvKiBTaGFkb3dS
ZWFsbUdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjgzREYzQjI3NjdERjI2MDA3RDAwQzggLyogU2hhZG93UmVhbG1HbG9iYWxTY29w
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2
ODhFRTNDMjZERDI2MTAwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODhFRTNBMjZERDI2MEMwMDJBRjVD
NCAvKiBDcm9zc09yaWdpbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk0Njk0M0RDOTI3NjNGODE3MDA0QjYxMEUgLyogU2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk0Njk4NUYyMzI3QTRBNkFEMDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk4NUYyMjI3QTRBNjg2
MDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY5Q0NDRkUyNjlEMDIxQzAwNkUwMzE0IC8qIEJyb2Fk
Y2FzdENoYW5uZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2OUNDQ0ZDMjY5RDAyMDIwMDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY5RDc3QjgyNzAx
NjI1MTAwMTQyRkE2IC8qIE5hdmlnYXRpb25SZXF1ZXN0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OUQ3N0I2MjcwMTYyNTAwMDE0MkZBNiAvKiBO
YXZpZ2F0aW9uUmVxdWVzdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJNDZBNzhCMzQyNzk5QkQ3MTAwMTE1NEZFIC8qIFdvcmtlck9wdGlvbnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMUIxRDI2
MjZGMThBNEIwMDg4MkRBMiAvKiBXb3JrZXJPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZBQUFBM0QyNUQzNjMyMDAwQkFGNDJGIC8q
IEF1ZGlvRmlsZVJlYWRlckNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NkFBQUEzQTI1RDM2MzE0MDBCQUY0MkYgLyogQXVkaW9GaWxlUmVhZGVy
Q29jb2EuaCAqLzsgfTsKIAkJNDZCNjNGNkMxQzZFOEQxOTAwMkU5MTRCIC8qIEpTRXZlbnRUYXJn
ZXRDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCNjUwREQyMjk2
MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI2NTBEQjIyOTYyNjI3MDBGRDhBQTQgLyogUGFnZUlk
ZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTM3NSw2ICsxMzc3LDcgQEAKIAkJNDZDNjk2Q0MxRTcyMDVGQzAwNTk3OTM3IC8qIENQ
VU1vbml0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZDNjk2Q0ExRTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwICovOyB9OwogCQk0
NkM4M0VGRTFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzgzRUZDMUE5QkJFMjkwMEE3OUE0MSAv
KiBHZW9Ob3RpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQ2Q0E5QzQ0MUY5N0JCRTkwMDRDRkMzQSAvKiBWaXNpYmlsaXR5U3RhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Q0E5QzQxMUY5
N0JCRTcwMDRDRkMzQSAvKiBWaXNpYmlsaXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NkNGNTA0QTI3QUIxRUE0MDA3MERCQzggLyog
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Q0Y1MDQ4MjdBQjFFQTEwMDcwREJDOCAvKiBTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQ2RDAwMDQwMjZBMEZFQjMwMEQxQkYxRSAvKiBTdWJtaXRFdmVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZEMDAwM0UyNkEw
RkU2RjAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50LmggKi87IH07CiAJCTQ2REE0QTAyMjdBQjAzOTMw
MEUzNzVBOCAvKiBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRBNEEwMDI3QUIwMzhEMDBFMzc1QTggLyogVHJh
bnNmZXJyZWRNZXNzYWdlUG9ydC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ2REJCNjUwMUFCOEM5NkYwMEQ5QTgxMyAvKiBQb3dlck9ic2VydmVy
TWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRC
QjY0RTFBQjhDOTZGMDBEOUE4MTMgLyogUG93ZXJPYnNlcnZlck1hYy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05MjQ1LDggKzkyNDgsNiBAQAog
CQk0NjdBNjhDRjI3NUVBOTg5MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdBNjhEMDI3NUVBOTg5MDA5QjMxQzUgLyogU2hhcmVk
V29ya2VyVGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlclRocmVhZC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2N0E2OEQxMjc1RUE5OEEwMDlCMzFD
NSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hh
cmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NDY3QTY4RDIyNzVFQTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2hhcmVkV29ya2VyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk0NjdBNjhEMzI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDY3QTY4RDQyNzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtl
clRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJUaHJlYWQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3QTY4RDUyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdv
cmtlclNjcmlwdExvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3QTY4RDYyNzVFQTk4QzAwOUIz
MUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdv
cmtlclRocmVhZFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MjYyLDYg
KzkyNjMsOCBAQAogCQk0NjgzREYzRTI3NjdERjk4MDA3RDAwQzggLyogSlNTaGFkb3dSZWFsbUds
b2JhbFNjb3BlQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NoYWRv
d1JlYWxtR2xvYmFsU2NvcGVCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
ODhFRTNBMjZERDI2MEMwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ3Jvc3NPcmlnaW5Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OEI4
QkRFMjVDQzg0OTMwMEY2NzgyMiAvKiBKU0Jhc2VBdWRpb0NvbnRleHRDdXN0b20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNCYXNlQXVkaW9Db250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk4NUYyMjI3QTRBNjg2
MDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNoYXJlZFdvcmtlcktleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjlDQ0NGQTI2OUQwMjAyMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBCcm9hZGNhc3RDaGFubmVsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDY5Q0NDRkMyNjlEMDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQnJvYWRjYXN0Q2hhbm5lbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NjlDQ0NGRDI2OUQwMjAzMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gQnJvYWRjYXN0Q2hhbm5lbC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05
MzAyLDYgKzkzMDUsOCBAQAogCQk0NkM4M0VGQzFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZp
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VvTm90aWZpZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDQTlDNDExRjk3QkJFNzAwNENGQzNBIC8qIFZp
c2liaWxpdHlTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaXNpYmls
aXR5U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDQTlDNDIxRjk3QkJF
NzAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
VmlzaWJpbGl0eVN0YXRlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZDRjUw
NDgyN0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQ2Q0Y1MDQ5MjdBQjFFQTEwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RDAwMDNDMjZBMEZFNkYw
MEQxQkYxRSAvKiBTdWJtaXRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTdWJtaXRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
RDAwMDNFMjZBMEZFNkYwMEQxQkYxRSAvKiBTdWJtaXRFdmVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdWJtaXRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NkQwMDAzRjI2QTBGRTcwMDBEMUJGMUUgLyogU3VibWl0RXZlbnQuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFN1Ym1pdEV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTIxNTY4LDYgKzIxNTczLDggQEAKIAkJNDY0N0NFNjEyN0FBRTFEQTAwOUNCRDQ4IC8q
IGNvbnRleHQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CTQ2Q0Y1MDQ5MjdBQjFFQTEwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5j
cHAgKi8sCisJCQkJNDZDRjUwNDgyN0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyLmggKi8sCiAJCQkJNDY3QTY4RDAyNzVFQTk4OTAwOUIzMUM1IC8qIFNoYXJlZFdv
cmtlclRocmVhZC5jcHAgKi8sCiAJCQkJNDY3QTY4RDQyNzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJl
ZFdvcmtlclRocmVhZC5oICovLAogCQkJCTQ2N0E2OENGMjc1RUE5ODkwMDlCMzFDNSAvKiBTaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAgKi8sCkBAIC0yMTU4NywxMCArMjE1OTQsMTAgQEAKIAkJ
CQk0NjY5NENFMTI3NTk0NDhDMDBFMzE1MEUgLyogU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaCAq
LywKIAkJCQk0NjY5NENFMDI3NTk0NDhDMDBFMzE1MEUgLyogU2hhcmVkV29ya2VyR2xvYmFsU2Nv
cGUuaWRsICovLAogCQkJCTQ2RUM0NDQ4MjdBQjMzN0YwMEZGQ0Q5NiAvKiBTaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLmggKi8sCi0JCQkJNDY3QTY4RDMyNzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdv
cmtlck1hbmFnZXIuY3BwICovLAotCQkJCTQ2N0E2OEQyMjc1RUE5OEEwMDlCMzFDNSAvKiBTaGFy
ZWRXb3JrZXJNYW5hZ2VyLmggKi8sCisJCQkJNDY5ODVGMjIyN0E0QTY4NjAwOTdBMzJCIC8qIFNo
YXJlZFdvcmtlcktleS5oICovLAogCQkJCTQ2NjhBMEIzMjdBQjYwMEIwMEM3MjBCQyAvKiBTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcCAqLywKIAkJCQk0NjY4QTBCMTI3QUI2MDBCMDBD
NzIwQkMgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oICovLAorCQkJCTQ2OTQzREM3
Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggKi8sCiAJ
CQkJNDY2OEEwQjQyN0FCNjAwQzAwQzcyMEJDIC8qIFNoYXJlZFdvcmtlclByb3ZpZGVyLmNwcCAq
LywKIAkJCQk0NjY4QTBCNTI3QUI2MDBDMDBDNzIwQkMgLyogU2hhcmVkV29ya2VyUHJvdmlkZXIu
aCAqLywKIAkJCQk0NjdBNjhEMTI3NUVBOThBMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0
TG9hZGVyLmNwcCAqLywKQEAgLTM3MjA0LDkgKzM3MjExLDExIEBACiAJCQkJODM0REZBRDAxRjdE
QUU1RDAwQzI3MjVCIC8qIFNoYXJlZFN0cmluZ0hhc2guaCBpbiBIZWFkZXJzICovLAogCQkJCTkz
MzA5RUEzMDk5RUI3OEMwMDU2RTU4MSAvKiBTaGFyZWRUaW1lci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDFEQzA0RkUyN0E4M0M5MzAwOENGOTY4IC8qIFNoYXJlZFZpZGVvRnJhbWVJbmZvLmggaW4g
SGVhZGVycyAqLywKKwkJCQk0NkNGNTA0QTI3QUIxRUE0MDA3MERCQzggLyogU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2RUM0NDRBMjdBQjMzODkwMEZG
Q0Q5NiAvKiBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0NjdB
NjhEQTI3NUVBOTlDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDY5ODVGMjMyN0E0QTZBRDAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktleS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDY2OEEwQjYyN0FCNjAxQjAwQzcyMEJDIC8qIFNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2OTQzREM5Mjc2M0Y4MTcw
MDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0NjY4QTBCNzI3QUI2MDIxMDBDNzIwQkMgLyogU2hhcmVkV29ya2VyUHJvdmlkZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ2N0E2OEQ4Mjc1RUE5OTUwMDlCMzFDNSAvKiBTaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2N0E2OEQ3Mjc1RUE5OTEwMDlC
MzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovLApAQCAtMzgwNjcsNiAr
MzgwNzYsNyBAQAogCQkJCUUxMjcxQTBCMEVFRUM3N0EwMEY2MTIxMyAvKiBXb3JrZXJOYXZpZ2F0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1Q0IwNTI1MUZCNTFGM0EwMDA4OUI5NyAvKiBXb3Jr
ZXJOZXR3b3JrQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFNDM0NjUxMEY1NDZBODIwMEIw
RjFCQSAvKiBXb3JrZXJPYmplY3RQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZBNzhCMzQy
Nzk5QkQ3MTAwMTE1NEZFIC8qIFdvcmtlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
RDZBQUU2MjUyNEVFMUMwMDQyOEI0QiAvKiBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODM5QTA5NUQyNTI0RjM3RjAwRUVGMzI4IC8qIFdvcmtlck9yV29y
a2xldFNjcmlwdENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzRjZBRUJGMjUyN0JC
MEMwMDM0QkNEMyAvKiBXb3JrZXJPcldvcmtsZXRUaHJlYWQuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDVmZWY0MmVlMDZlYy4uZmE3ZDIzMDJlYzM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCkBAIC0xMjcsNiArMTI3LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIE0oV2ViR0wpIFwKICAgICBNKFdlYlJUQykgXAogICAgIE0oV2ViUlRD
U3RhdHMpIFwKKyAgICBNKFdvcmtlcikgXAogICAgIE0oWFIpIFwKICAgICBNKFdoZWVsRXZlbnRU
ZXN0TW9uaXRvcikgXAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyLmNwcAppbmRleCBiNDg3NDdhMmMwOTkuLjE0MjJlZTliZDg5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDE1ICsyNiwxNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgogCisjaW5j
bHVkZSAiQ2xpZW50T3JpZ2luLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5Lmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VDaGFubmVsLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVBvcnQuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlclBy
b3ZpZGVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCIKICNpbmNsdWRl
ICJXb3JrZXJPcHRpb25zLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllcnNG
YWN0b3J5Lmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTQzLDEyICs0
NSwyNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChTaGFyZWRXb3JrZXIpOwogCisjZGVmaW5lIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coZm10
LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gW2lkZW50aWZpZXI9JXtwdWJs
aWN9c10gU2hhcmVkV29ya2VyOjoiIGZtdCwgdGhpcywgbV9pZGVudGlmaWVyLnRvU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgU0hBUkVEX1dPUktFUl9SRUxF
QVNFX0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoU2hhcmVkV29ya2VyLCAi
JXAgLSBbaWRlbnRpZmllcj0le3B1YmxpY31zXSBTaGFyZWRXb3JrZXI6OiIgZm10LCB0aGlzLCBt
X2lkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAjI19fVkFfQVJHU19fKQorCitz
dGF0aWMgSGFzaE1hcDxTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBTaGFyZWRXb3JrZXIq
PiYgYWxsU2hhcmVkV29ya2VycygpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyLCBTaGFyZWRXb3JrZXIqPj4gYWxsU2hhcmVkV29ya2VyczsKKyAgICByZXR1cm4gYWxsU2hh
cmVkV29ya2VyczsKK30KKworU2hhcmVkV29ya2VyKiBTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlm
aWVyKFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICByZXR1
cm4gYWxsU2hhcmVkV29ya2VycygpLmdldChpZGVudGlmaWVyKTsKK30KKwogc3RhdGljIGlubGlu
ZSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKiBtYWluVGhyZWFkQ29ubmVjdGlvbigpCiB7
CiAgICAgcmV0dXJuIFNoYXJlZFdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5zaGFyZWRXb3Jr
ZXJDb25uZWN0aW9uKCk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBTaGFy
ZWRXb3JrZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIEpTQzo6UnVudGltZUZsYWdzIHJ1
bnRpbWVGbGFncywgU3RyaW5nJiYgc2NyaXB0VVJMU3RyaW5nLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6
dmFyaWFudDxTdHJpbmcsIFdvcmtlck9wdGlvbnM+PiYmIG1heWJlT3B0aW9ucykKK0V4Y2VwdGlv
bk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBTaGFyZWRXb3JrZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9j
dW1lbnQsIFN0cmluZyYmIHNjcmlwdFVSTFN0cmluZywgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlh
bnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4mJiBtYXliZU9wdGlvbnMpCiB7CiAgICAgaWYgKCFt
YWluVGhyZWFkQ29ubmVjdGlvbigpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3Vw
cG9ydGVkRXJyb3IsICJTaGFyZWQgd29ya2VycyBhcmUgbm90IHN1cHBvcnRlZCIgfTsKQEAgLTc3
LDI2ICs5NCwzNyBAQCBFeGNlcHRpb25PcjxSZWY8U2hhcmVkV29ya2VyPj4gU2hhcmVkV29ya2Vy
OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBKU0M6OlJ1bgogICAgIGF1dG8gY2hhbm5lbCA9
IE1lc3NhZ2VDaGFubmVsOjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIGF1dG8gdHJhbnNmZXJyZWRQ
b3J0ID0gY2hhbm5lbC0+cG9ydDIoKS5kaXNlbnRhbmdsZSgpOwogCi0gICAgYXV0byBzaGFyZWRX
b3JrZXIgPSBhZG9wdFJlZigqbmV3IFNoYXJlZFdvcmtlcihkb2N1bWVudCwgY2hhbm5lbC0+cG9y
dDEoKSwgcnVudGltZUZsYWdzKSk7CisgICAgQ2xpZW50T3JpZ2luIGNsaWVudE9yaWdpbiB7IGRv
Y3VtZW50LnRvcERvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCksIGRvY3VtZW50LnNl
Y3VyaXR5T3JpZ2luKCkuZGF0YSgpIH07CisgICAgU2hhcmVkV29ya2VyS2V5IGtleSB7IGNsaWVu
dE9yaWdpbiwgdXJsLCBvcHRpb25zLm5hbWUgfTsKKworICAgIGF1dG8gc2hhcmVkV29ya2VyID0g
YWRvcHRSZWYoKm5ldyBTaGFyZWRXb3JrZXIoZG9jdW1lbnQsIGtleSwgY2hhbm5lbC0+cG9ydDEo
KSkpOwogICAgIHNoYXJlZFdvcmtlci0+c3VzcGVuZElmTmVlZGVkKCk7CiAKLSAgICBtYWluVGhy
ZWFkQ29ubmVjdGlvbigpLT5yZXF1ZXN0U2hhcmVkV29ya2VyKHVybCwgc2hhcmVkV29ya2VyLmdl
dCgpLCBXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCksIFdURk1vdmUob3B0aW9ucykpOworICAgIG1h
aW5UaHJlYWRDb25uZWN0aW9uKCktPnJlcXVlc3RTaGFyZWRXb3JrZXIoa2V5LCBzaGFyZWRXb3Jr
ZXItPmlkZW50aWZpZXIoKSwgV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBvcHRpb25zKTsKICAg
ICByZXR1cm4gc2hhcmVkV29ya2VyOwogfQogCi1TaGFyZWRXb3JrZXI6OlNoYXJlZFdvcmtlcihE
b2N1bWVudCYgZG9jdW1lbnQsIFJlZjxNZXNzYWdlUG9ydD4mJiBwb3J0LCBKU0M6OlJ1bnRpbWVG
bGFncyBydW50aW1lRmxhZ3MpCitTaGFyZWRXb3JrZXI6OlNoYXJlZFdvcmtlcihEb2N1bWVudCYg
ZG9jdW1lbnQsIGNvbnN0IFNoYXJlZFdvcmtlcktleSYga2V5LCBSZWY8TWVzc2FnZVBvcnQ+JiYg
cG9ydCkKICAgICA6IEFjdGl2ZURPTU9iamVjdCgmZG9jdW1lbnQpCisgICAgLCBtX2tleShrZXkp
CisgICAgLCBtX2lkZW50aWZpZXIoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcjo6Z2VuZXJh
dGUoKSkKICAgICAsIG1fcG9ydChXVEZNb3ZlKHBvcnQpKQogICAgICwgbV9pZGVudGlmaWVyRm9y
SW5zcGVjdG9yKCJTaGFyZWRXb3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5
OjpjcmVhdGVJZGVudGlmaWVyKCkpCi0gICAgLCBtX3J1bnRpbWVGbGFncyhydW50aW1lRmxhZ3Mp
Ci0gICAgLCBtX2NyZWF0aW9uVGltZShNb25vdG9uaWNUaW1lOjpub3coKSkKLSAgICAsIG1fcHJv
eHkoU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZSgqdGhpcykpCiB7CisgICAgU0hBUkVE
X1dPUktFUl9SRUxFQVNFX0xPRygiU2hhcmVkV29ya2VyOiIpOworICAgIGFsbFNoYXJlZFdvcmtl
cnMoKS5hZGQobV9pZGVudGlmaWVyLCB0aGlzKTsKKworICAgIC8vIElmIHRoZSBzaGFyZWQgd29y
a2VyIFVSTCBpcyBhIGJsb2IgVVJMLCBtYWtlIHN1cmUgdG8ga2VlcCBpdCBhbGl2ZSB1bnRpbCB0
aGUgd29ya2VyIGhhcyBmaW5pc2hlZCBsb2FkaW5nLgorICAgIGlmIChtX2tleS51cmwucHJvdG9j
b2xJc0Jsb2IoKSkKKyAgICAgICAgbV9ibG9iVVJMRXh0ZW5zaW9uID0gbV9rZXkudXJsOwogfQog
CiBTaGFyZWRXb3JrZXI6On5TaGFyZWRXb3JrZXIoKQogewotICAgIG1fcHJveHkud29ya2VyT2Jq
ZWN0RGVzdHJveWVkKCk7CisgICAgQVNTRVJUKGFsbFNoYXJlZFdvcmtlcnMoKS5nZXQobV9pZGVu
dGlmaWVyKSA9PSB0aGlzKTsKKyAgICBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HKCJ+U2hhcmVk
V29ya2VyOiIpOworICAgIGFsbFNoYXJlZFdvcmtlcnMoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsK
KyAgICBBU1NFUlQoIW1faXNBY3RpdmUpOwogfQogCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBT
aGFyZWRXb3JrZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdApAQCAtMTE0LDE5ICsx
NDIsMjkgQEAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgU2hhcmVkV29ya2VyOjpldmVudFRhcmdldElu
dGVyZmFjZSgpIGNvbnN0CiAgICAgcmV0dXJuIFNoYXJlZFdvcmtlckV2ZW50VGFyZ2V0SW50ZXJm
YWNlVHlwZTsKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXI6OnN0b3AoKQordm9pZCBTaGFyZWRXb3Jr
ZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAg
dGVybWluYXRlKCk7CisgICAgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRygiZmluaXNoTG9hZGlu
Zzogc3VjY2Vzcz0lZCIsIGVycm9yLmlzTnVsbCgpKTsKKyAgICBpZiAoIWVycm9yLmlzTnVsbCgp
KSB7CisgICAgICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6
RE9NTWFuaXB1bGF0aW9uLCBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBF
dmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7CisgICAgICAg
IG1faXNBY3RpdmUgPSBmYWxzZTsKKyAgICB9CisgICAgbV9ibG9iVVJMRXh0ZW5zaW9uLmNsZWFy
KCk7CiB9CiAKIGJvb2wgU2hhcmVkV29ya2VyOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9wcm94eS5oYXNQZW5kaW5nQWN0aXZpdHkoKSB8fCBtX2lz
TG9hZGluZzsKKyAgICByZXR1cm4gbV9pc0FjdGl2ZTsKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXI6
OnRlcm1pbmF0ZSgpCit2b2lkIFNoYXJlZFdvcmtlcjo6c3RvcCgpCiB7Ci0gICAgbV9wcm94eS50
ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpOworICAgIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9M
T0coInN0b3A6Iik7CisgICAgbV9pc0FjdGl2ZSA9IGZhbHNlOworICAgIG1haW5UaHJlYWRDb25u
ZWN0aW9uKCktPnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KG1fa2V5LCBtX2lkZW50aWZp
ZXIpOwogfQogCisjdW5kZWYgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRworI3VuZGVmIFNIQVJF
RF9XT1JLRVJfUkVMRUFTRV9MT0dfRVJST1IKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaAppbmRleCBlNTViMWNm
NTUxM2QuLmNkZDI2OWYzNjE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0y
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjcsMzkgKzI3LDM3IEBACiAKICNpbmNsdWRlICJBYnN0cmFjdFdvcmtl
ci5oIgogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1J1bnRpbWVGbGFncy5oPgorI2luY2x1ZGUgIkJsb2JVUkwuaCIKKyNpbmNsdWRlICJTaGFy
ZWRXb3JrZXJLZXkuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBNZXNzYWdlUG9ydDsKLWNsYXNzIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OworY2xh
c3MgUmVzb3VyY2VFcnJvcjsKIAogc3RydWN0IFdvcmtlck9wdGlvbnM7CiAKIGNsYXNzIFNoYXJl
ZFdvcmtlciBmaW5hbCA6IHB1YmxpYyBBYnN0cmFjdFdvcmtlciwgcHVibGljIEFjdGl2ZURPTU9i
amVjdCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChTaGFyZWRXb3JrZXIpOwogcHVibGlj
OgotICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8U2hhcmVkV29ya2VyPj4gY3JlYXRlKERvY3Vt
ZW50JiwgSlNDOjpSdW50aW1lRmxhZ3MsIFN0cmluZyYmIHNjcmlwdFVSTCwgc3RkOjpvcHRpb25h
bDxzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4mJik7CisgICAgc3RhdGljIEV4
Y2VwdGlvbk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBjcmVhdGUoRG9jdW1lbnQmLCBTdHJpbmcmJiBz
Y3JpcHRVUkwsIHN0ZDo6b3B0aW9uYWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0aW9u
cz4+JiYpOwogICAgIH5TaGFyZWRXb3JrZXIoKTsKIAorICAgIHN0YXRpYyBTaGFyZWRXb3JrZXIq
IGZyb21JZGVudGlmaWVyKFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIFNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRl
bnRpZmllcjsgfQogICAgIE1lc3NhZ2VQb3J0JiBwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9wb3J0
LmdldCgpOyB9Ci0gICAgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKCkgeyByZXR1cm4g
bV9ydW50aW1lRmxhZ3M7IH0KIAogICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllckZvckluc3Bl
Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckluc3BlY3RvcjsgfQotICAgIE1v
bm90b25pY1RpbWUgY3JlYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdGlvblRpbWU7
IH0KIAotICAgIFNoYXJlZFdvcmtlclRocmVhZFByb3h5JiBwcm94eSgpIHsgcmV0dXJuIG1fcHJv
eHk7IH0KLQotICAgIHZvaWQgc2V0SXNMb2FkaW5nKGJvb2wgaXNMb2FkaW5nKSB7IG1faXNMb2Fk
aW5nID0gaXNMb2FkaW5nOyB9CisgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFJlc291
cmNlRXJyb3ImKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0LgogICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToK
LSAgICBTaGFyZWRXb3JrZXIoRG9jdW1lbnQmLCBSZWY8TWVzc2FnZVBvcnQ+JiYsIEpTQzo6UnVu
dGltZUZsYWdzKTsKLQotICAgIHZvaWQgdGVybWluYXRlKCk7CisgICAgU2hhcmVkV29ya2VyKERv
Y3VtZW50JiwgY29uc3QgU2hhcmVkV29ya2VyS2V5JiwgUmVmPE1lc3NhZ2VQb3J0PiYmKTsKIAog
ICAgIC8vIEV2ZW50VGFyZ2V0LgogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0
SW50ZXJmYWNlKCkgY29uc3QgZmluYWw7CkBAIC03MCwxMiArNjgsMTIgQEAgcHJpdmF0ZToKICAg
ICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogCisgICAg
U2hhcmVkV29ya2VyS2V5IG1fa2V5OworICAgIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIg
bV9pZGVudGlmaWVyOwogICAgIFJlZjxNZXNzYWdlUG9ydD4gbV9wb3J0OwogICAgIFN0cmluZyBt
X2lkZW50aWZpZXJGb3JJbnNwZWN0b3I7Ci0gICAgSlNDOjpSdW50aW1lRmxhZ3MgbV9ydW50aW1l
RmxhZ3M7Ci0gICAgTW9ub3RvbmljVGltZSBtX2NyZWF0aW9uVGltZTsKLSAgICBTaGFyZWRXb3Jr
ZXJUaHJlYWRQcm94eSYgbV9wcm94eTsgLy8gVGhlIHByb3h5IG91dGxpdmVzIHRoZSB3b3JrZXIg
dG8gcGVyZm9ybSB0aHJlYWQgc2h1dGRvd24uCi0gICAgYm9vbCBtX2lzTG9hZGluZyB7IGZhbHNl
IH07CisgICAgQmxvYlVSTEhhbmRsZSBtX2Jsb2JVUkxFeHRlbnNpb247CisgICAgYm9vbCBtX2lz
QWN0aXZlIHsgdHJ1ZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5pZGwKaW5kZXggYjYyODc0ZDBk
ZTQ2Li4yYzNhMDgzMWViMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VyLmlkbApAQCAtMjgsNyArMjgsNyBAQAogICAgIEV4cG9zZWQ9V2luZG93CiBd
CiBpbnRlcmZhY2UgU2hhcmVkV29ya2VyIDogRXZlbnRUYXJnZXQgewotICBbQ2FsbFdpdGg9Q3Vy
cmVudERvY3VtZW50JlJ1bnRpbWVGbGFnc10gY29uc3RydWN0b3IoVVNWU3RyaW5nIHNjcmlwdFVS
TCwgb3B0aW9uYWwgKERPTVN0cmluZyBvciBXb3JrZXJPcHRpb25zKSBvcHRpb25zKTsKKyAgW0Nh
bGxXaXRoPUN1cnJlbnREb2N1bWVudF0gY29uc3RydWN0b3IoVVNWU3RyaW5nIHNjcmlwdFVSTCwg
b3B0aW9uYWwgKERPTVN0cmluZyBvciBXb3JrZXJPcHRpb25zKSBvcHRpb25zKTsKIAogICByZWFk
b25seSBhdHRyaWJ1dGUgTWVzc2FnZVBvcnQgcG9ydDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlcktleS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uYWYyYmFhMGY3YjljCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyS2V5LmgKQEAgLTAsMCArMSwxMTEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNsaWVudE9yaWdpbi5o
IgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0
IFNoYXJlZFdvcmtlcktleSB7CisgICAgQ2xpZW50T3JpZ2luIG9yaWdpbjsKKyAgICBVUkwgdXJs
OworICAgIFN0cmluZyBuYW1lOworCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OworCisgICAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNoYXJlZFdvcmtl
cktleT4gZGVjb2RlKERlY29kZXImKTsKK307CisKK2lubGluZSB1bnNpZ25lZCBTaGFyZWRXb3Jr
ZXJLZXk6Omhhc2goKSBjb25zdAoreworICAgIEhhc2hlciBoYXNoZXI7CisgICAgYWRkKGhhc2hl
ciwgb3JpZ2luLmhhc2goKSk7CisgICAgYWRkKGhhc2hlciwgdXJsKTsKKyAgICBhZGQoaGFzaGVy
LCBuYW1lKTsKKyAgICByZXR1cm4gaGFzaGVyLmhhc2goKTsKK30KKwordGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KK3ZvaWQgU2hhcmVkV29ya2VyS2V5OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG9yaWdpbiA8PCB1cmwgPDwgbmFtZTsKK30KKwordGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8U2hhcmVkV29ya2VyS2V5PiBTaGFy
ZWRXb3JrZXJLZXk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6b3B0aW9u
YWw8Q2xpZW50T3JpZ2luPiBvcmlnaW47CisgICAgZGVjb2RlciA+PiBvcmlnaW47CisgICAgaWYg
KCFvcmlnaW4pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlv
bmFsPFVSTD4gdXJsOworICAgIGRlY29kZXIgPj4gdXJsOworICAgIGlmICghdXJsKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG5hbWU7
CisgICAgZGVjb2RlciA+PiBuYW1lOworICAgIGlmICghbmFtZSkKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsgV1RGTW92ZSgqb3JpZ2luKSwgV1RGTW92ZSgq
dXJsKSwgV1RGTW92ZSgqbmFtZSkgfSB9OworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFNoYXJlZFdvcmtlcktleSYgYSwgY29uc3QgU2hhcmVkV29ya2VyS2V5JiBiKQoreworICAg
IHJldHVybiBhLm9yaWdpbiA9PSBiLm9yaWdpbiAmJiBhLnVybCA9PSBiLnVybCAmJiBhLm5hbWUg
PT0gYi5uYW1lOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYg
eworCit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJL
ZXk+IHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJLZXkmIGtleSkKKyAgICB7CisgICAgICAgIHJldHVybiBrZXkuaGFzaCgpOworICAgIH0KKwor
ICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgYSwg
Y29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBiKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGEgPT0gYjsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9F
bXB0eU9yRGVsZXRlZCA9IGZhbHNlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0
czxXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk+IDogR2VuZXJpY0hhc2hUcmFpdHM8V2ViQ29yZTo6
U2hhcmVkV29ya2VyS2V5PiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGVtcHR5VmFsdWVJ
c1plcm8gPSBmYWxzZTsKKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyS2V5JiBzbG90KSB7IG5ldyAoTm90TnVsbCwgJnNsb3QudXJsKSBV
UkwoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpOyB9CisgICAgc3RhdGljIGJvb2wgaXNEZWxl
dGVkVmFsdWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBzbG90KSB7IHJldHVybiBz
bG90LnVybC5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyTWFuYWdlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3NDEwODc3ZGIz
Mi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlck1hbmFnZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyTWFuYWdl
ci5oIgotCi0jaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCi0jaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgotI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCi0jaW5jbHVkZSAiTWVzc2Fn
ZUV2ZW50LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCi0jaW5jbHVkZSAiU2hh
cmVkV29ya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaCIKLSNpbmNs
dWRlICJTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJU
aHJlYWQuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIgotI2luY2x1ZGUg
IldvcmtlclJ1bkxvb3AuaCIKLSNpbmNsdWRlICJXb3JrZXJTY3JpcHRMb2FkZXIuaCIKLSNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVNoYXJlZFdvcmtlck1hbmFnZXImIFNoYXJlZFdvcmtlck1h
bmFnZXI6OnNpbmdsZXRvbigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYXJlZFdv
cmtlck1hbmFnZXI+IGluc3RhbmNlOwotICAgIHJldHVybiBpbnN0YW5jZS5nZXQoKTsKLX0KLQot
dm9pZCBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpjb25uZWN0KGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRX
b3JrZXImIHdvcmtlciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIG1lc3NhZ2VQb3J0LCBXb3Jr
ZXJPcHRpb25zJiYgb3B0aW9ucykKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwot
ICAgIC8vIEZJWE1FOiBIYW5kbGUgd29ya2VycyBmcm9tIG90aGVyIHByb2Nlc3Nlcywgd2hpY2gg
d2lsbCBwcm9iYWJseSByZXF1aXJlIG1vdmluZyBjb25uZWN0IHRvIHRoZSBGcmFtZUxvYWRlckNs
aWVudCBvciBzb21ldGhpbmcuCi0gICAgLy8gTWF5YmUgc29tZXRoaW5nIG1vcmUgbGlrZSB3aGF0
IFNlcnZpY2VXb3JrZXJzIGRvZXMuCi0KLSAgICAvLyBGSVhNRTogQ2hlY2sgaWYgd2UgYWxyZWFk
eSBtYWRlIGEgdGhyZWFkLgotICAgIC8vIEZJWE1FOiBDaGVjayBpZiB0aGVyZSdzIGFscmVhZHkg
YSBzaGFyZWQgd29ya2VyIGFuZCB1c2UgdGhhdCBpZiB0aGVyZSBpcy4KLQotICAgIGF1dG8gbG9h
ZGVyID0gbWFrZVVuaXF1ZVJlZjxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+KHVybCwgd29ya2Vy
LCBXVEZNb3ZlKG1lc3NhZ2VQb3J0KSwgV1RGTW92ZShvcHRpb25zKSk7Ci0gICAgYXV0byBpZGVu
dGlmaWVyID0gbG9hZGVyLT5pZGVudGlmaWVyKCk7Ci0gICAgbV9sb2FkZXJzLmFkZChpZGVudGlm
aWVyLCBXVEZNb3ZlKGxvYWRlcikpOwotfQotCi12b2lkIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNj
cmlwdExvYWRGYWlsZWQoU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJiBsb2FkZXIpCi17Ci0gICAg
QWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQobG9hZGVyLndvcmtlcigp
LCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmVycm9yRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZ
ZXMpKTsKLSAgICBtX2xvYWRlcnMucmVtb3ZlKGxvYWRlci5pZGVudGlmaWVyKCkpOwotfQotCi12
b2lkIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNjcmlwdExvYWRlZFN1Y2Nlc3NmdWxseShTaGFyZWRX
b3JrZXJTY3JpcHRMb2FkZXImIGxvYWRlciwgY29uc3QgU2NyaXB0QnVmZmVyJiBzY3JpcHRCdWZm
ZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFNoYXJl
ZFdvcmtlciYgc2hhcmVkV29ya2VyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgdHJhbnNmZXJy
ZWRQb3J0KQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgYXV0byYgd29y
a2VyID0gbG9hZGVyLndvcmtlcigpOwotICAgIGF1dG8mIG9wdGlvbnMgPSBsb2FkZXIub3B0aW9u
cygpOwotCi0gICAgYXV0byYgcHJveHkgPSBzaGFyZWRXb3JrZXIucHJveHkoKTsKLQotICAgIHBy
b3h5LnN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoCi0gICAgICAgIGxvYWRlci51cmwoKSwKLSAgICAg
ICAgb3B0aW9ucy5uYW1lLAotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LnVzZXJBZ2Vu
dChsb2FkZXIudXJsKCkpLAotICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3Ry
YXRlZ3koKS0+aXNPbkxpbmUoKSwKLSAgICAgICAgc2NyaXB0QnVmZmVyLAotICAgICAgICBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5yZXNwb25zZUhlYWRl
cnMoKSwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5zaG91bGRCeXBhc3NNYWluV29y
bGRDb250ZW50U2VjdXJpdHlQb2xpY3koKSwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KCksCi0gICAgICAgIHdvcmtlci5jcmVhdGlvblRp
bWUoKSwKLSAgICAgICAgUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nLAotICAgICAgICBvcHRp
b25zLnR5cGUsCi0gICAgICAgIG9wdGlvbnMuY3JlZGVudGlhbHMsCi0gICAgICAgIHdvcmtlci5y
dW50aW1lRmxhZ3MoKQotICAgICk7Ci0gICAgaWYgKCFwcm94eS50aHJlYWQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihp
czxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwotICAgIGF1dG8gc291cmNlT3Jp
Z2luID0gZG93bmNhc3Q8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnNlY3VyaXR5
T3JpZ2luKCkudG9TdHJpbmcoKTsKLQotICAgIHByb3h5LnRocmVhZCgpLT5ydW5Mb29wKCkucG9z
dFRhc2soW3RyYW5zZmVycmVkUG9ydCA9IFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwgc291cmNl
T3JpZ2luID0gV1RGTW92ZShzb3VyY2VPcmlnaW4pLmlzb2xhdGVkQ29weSgpXSAoYXV0byYgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIGRvd25jYXN0PFNoYXJlZFdv
cmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5wb3N0Q29ubmVjdEV2ZW50
KFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwgc291cmNlT3JpZ2luKTsKLSAgICB9KTsKLQotICAg
IG1fbG9hZGVycy5yZW1vdmUobG9hZGVyLmlkZW50aWZpZXIoKSk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1No
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKaW5kZXggZGRhMzg0ZDIyOTEy
Li4xY2RlMGJhMzU5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCkBAIC0yNiwxMCAr
MjYsNjYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uLmgiCiAKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRl
ICJFcnJvckV2ZW50LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNjcmlwdEJ1
ZmZlci5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtl
clNjcmlwdExvYWRlci5oIgorI2luY2x1ZGUgIldvcmtlckZldGNoUmVzdWx0LmgiCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4u
KSBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb246OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBDT05ORUNUSU9OX1JF
TEVBU0VfTE9HX0VSUk9SKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIs
ICIlcCAtIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OiIgZm10LCB0aGlzLCAjI19fVkFf
QVJHU19fKQorCitzdGF0aWMgdWludDY0X3QgbG9hZGVySWRlbnRpZmllclNlZWQgPSAwOworCiBT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
KCkgPSBkZWZhdWx0OwogCiBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjp+U2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbigpID0gZGVmYXVsdDsKIAordm9pZCBTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uOjpmZXRjaFNjcmlwdEluQ2xpZW50KFVSTCYmIHVybCwgV2ViQ29yZTo6U2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBX
b3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBXb3JrZXJGZXRjaFJlc3VsdCYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRvKiB3b3JrZXJPYmplY3QgPSBTaGFyZWRXb3Jr
ZXI6OmZyb21JZGVudGlmaWVyKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIENP
Tk5FQ1RJT05fUkVMRUFTRV9MT0coImZldGNoU2NyaXB0SW5DbGllbnQ6IHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXI9JXtwdWJsaWN9cywgd29ya2VyPSVwIiwgc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHdvcmtlck9iamVjdCk7CisgICAg
aWYgKCF3b3JrZXJPYmplY3QpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih3b3Jr
ZXJGZXRjaEVycm9yKFJlc291cmNlRXJyb3IgeyBSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxs
YXRpb24gfSkpOworCisgICAgYXV0byBsb2FkZXJJZGVudGlmaWVyID0gKytsb2FkZXJJZGVudGlm
aWVyU2VlZDsKKyAgICBhdXRvIGxvYWRlciA9IG1ha2VVbmlxdWVSZWY8U2hhcmVkV29ya2VyU2Ny
aXB0TG9hZGVyPihXVEZNb3ZlKHVybCksICp3b3JrZXJPYmplY3QsIFdURk1vdmUod29ya2VyT3B0
aW9ucykpOworICAgIGF1dG8gbG9hZGVyUHRyID0gbG9hZGVyLnB0cigpOworICAgIG1fbG9hZGVy
cy5hZGQobG9hZGVySWRlbnRpZmllciwgV1RGTW92ZShsb2FkZXIpKTsKKworICAgIGxvYWRlclB0
ci0+bG9hZChbdGhpcywgbG9hZGVySWRlbnRpZmllciwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmIGZldGNoUmVz
dWx0KSBtdXRhYmxlIHsKKyAgICAgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiZmV0Y2hTY3Jp
cHRJbkNsaWVudDogZmluaXNoZWQgc2NyaXB0IGxvYWQsIHN1Y2Nlc3M9JWQiLCBmZXRjaFJlc3Vs
dC5lcnJvci5pc051bGwoKSk7CisgICAgICAgIGF1dG8gbG9hZGVyID0gbV9sb2FkZXJzLnRha2Uo
bG9hZGVySWRlbnRpZmllcik7CisgICAgICAgIEFTU0VSVChsb2FkZXIpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihmZXRjaFJlc3VsdCk7CisgICAgfSk7Cit9CisKK3ZvaWQgU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbjo6bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisgICAgYXV0byogd29ya2VyT2JqZWN0ID0gU2hhcmVkV29ya2VyOjpmcm9t
SWRlbnRpZmllcihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBDT05ORUNUSU9O
X1JFTEVBU0VfTE9HX0VSUk9SKCJub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uOiBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMsIHdvcmtlcj0lcCwgc3VjY2Vz
cz0lZCIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0
YSgpLCB3b3JrZXJPYmplY3QsIGVycm9yLmlzTnVsbCgpKTsKKyAgICBpZiAod29ya2VyT2JqZWN0
KQorICAgICAgICB3b3JrZXJPYmplY3QtPmRpZEZpbmlzaExvYWRpbmcoZXJyb3IpOworfQorCit2
b2lkIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9i
amVjdChTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBhdXRvKiB3b3JrZXJPYmplY3QgPSBTaGFyZWRXb3JrZXI6OmZyb21J
ZGVudGlmaWVyKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIENPTk5FQ1RJT05f
UkVMRUFTRV9MT0dfRVJST1IoInBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdDogc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zLCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgd29ya2VyT2JqZWN0KTsK
KyAgICBpZiAod29ya2VyT2JqZWN0KQorICAgICAgICBBY3RpdmVET01PYmplY3Q6OnF1ZXVlVGFz
a1RvRGlzcGF0Y2hFdmVudCgqd29ya2VyT2JqZWN0LCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRp
b24sIEVycm9yRXZlbnQ6OmNyZWF0ZShlcnJvck1lc3NhZ2UsIHNvdXJjZVVSTCwgbGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCB7IH0pKTsKK30KKworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9M
T0cKKyN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SCisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaAppbmRleCA0ZWQ1YTFjNjViNTguLjY3YTIw
MjA4ZmQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApAQCAtMjUsMjIgKzI1LDM4IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIlRyYW5zZmVycmVkTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRXb3JrZXI7CitjbGFz
cyBNZXNzYWdlUG9ydDsKK2NsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjsKKworc3RydWN0
IFNoYXJlZFdvcmtlcktleTsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKIHN0cnVjdCBXb3Jr
ZXJPcHRpb25zOwogCiBjbGFzcyBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIDogcHVibGlj
IFJlZkNvdW50ZWQ8U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbj4gewogcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKTsK
IAotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0IFVSTCYsIFNoYXJl
ZFdvcmtlciYsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgV29ya2VyT3B0aW9ucyYmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoY29uc3QgU2hhcmVkV29ya2Vy
S2V5JiwgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9y
dCYmLCBjb25zdCBXb3JrZXJPcHRpb25zJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzaGFyZWRX
b3JrZXJPYmplY3RJc0dvaW5nQXdheShjb25zdCBTaGFyZWRXb3JrZXJLZXkmLCBTaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyKSA9IDA7CiAKIHByb3RlY3RlZDoKKyAgICAvLyBJUEMgbWVzc2Fn
ZXMuCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmZXRjaFNjcmlwdEluQ2xpZW50KFVSTCYmLCBX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXb3JrZXJPcHRpb25zJiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKT4mJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKFdl
YkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChT
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwg
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
KTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKTsK
KworcHJpdmF0ZToKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBVbmlxdWVSZWY8U2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyPj4gbV9sb2FkZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFu
YWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllci5oCnNpbWlsYXJpdHkgaW5kZXggNTklCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuaApyZW5hbWUgdG8gU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oCmlu
ZGV4IDI1MjE4MTZlNjVjNy4uZWJjZDRhN2FlODdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSwyOSArMjUsMTIg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJNZXNzYWdlUG9ydElkZW50aWZpZXIuaCIK
KyNpbmNsdWRlICJQcm9jZXNzUXVhbGlmaWVkLmgiCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50
aWZpZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OwotY2xhc3MgU2hhcmVkV29ya2VyOwotY2xhc3MgU2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVyOwotY2xhc3MgU2NyaXB0QnVmZmVyOwotc3RydWN0IFdvcmtlck9wdGlvbnM7Ci11c2luZyBU
cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0ID0gc3RkOjpwYWlyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRl
bnRpZmllciwgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyPjsKLQotdXNpbmcgU2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8U2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyPjsKLQotY2xhc3MgU2hhcmVkV29ya2VyTWFuYWdlciB7Ci1wdWJsaWM6
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNoYXJlZFdvcmtlck1hbmFnZXImIHNpbmdsZXRv
bigpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29ubmVjdChjb25zdCBVUkwmLCBTaGFyZWRX
b3JrZXImLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdvcmtlck9wdGlvbnMmJik7Ci0KLSAg
ICB2b2lkIHNjcmlwdExvYWRGYWlsZWQoU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJik7Ci0gICAg
dm9pZCBzY3JpcHRMb2FkZWRTdWNjZXNzZnVsbHkoU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJiwg
Y29uc3QgU2NyaXB0QnVmZmVyJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFNoYXJlZFdvcmtl
ciYsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJik7Ci0KLXByaXZhdGU6Ci0gICAgSGFzaE1hcDxT
aGFyZWRXb3JrZXJTY3JpcHRMb2FkZXJJZGVudGlmaWVyLCBVbmlxdWVSZWY8U2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyPj4gbV9sb2FkZXJzOwotfTsKK2VudW0gU2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllclR5cGUgeyB9OwordXNpbmcgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA9IFBy
b2Nlc3NRdWFsaWZpZWQ8T2JqZWN0SWRlbnRpZmllcjxTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyVHlwZT4+OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcApp
bmRleCAzMTFlYmQ2MDc4YmMuLmVhMmUwNDhjNzYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5
LDIzICsyOSwyNiBAQAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKLSNpbmNsdWRl
ICJTaGFyZWRXb3JrZXJNYW5hZ2VyLmgiCisjaW5jbHVkZSAiV29ya2VyRmV0Y2hSZXN1bHQuaCIK
ICNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0TG9hZGVy
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpT
aGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIoY29uc3QgVVJMJiB1cmwsIFNoYXJlZFdvcmtlciYgd29y
a2VyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgcG9ydCwgV29ya2VyT3B0aW9ucyYmIG9wdGlv
bnMpCi0gICAgOiBtX2lkZW50aWZpZXIoU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmll
cjo6Z2VuZXJhdGUoKSkKLSAgICAsIG1fb3B0aW9ucyhXVEZNb3ZlKG9wdGlvbnMpKQorU2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIoVVJMJiYgdXJsLCBT
aGFyZWRXb3JrZXImIHdvcmtlciwgV29ya2VyT3B0aW9ucyYmIG9wdGlvbnMpCisgICAgOiBtX29w
dGlvbnMoV1RGTW92ZShvcHRpb25zKSkKICAgICAsIG1fd29ya2VyKHdvcmtlcikKLSAgICAsIG1f
cG9ydChXVEZNb3ZlKHBvcnQpKQogICAgICwgbV9sb2FkZXIoV29ya2VyU2NyaXB0TG9hZGVyOjpj
cmVhdGUoKSkKLSAgICAsIG1fcGVuZGluZ0FjdGl2aXR5KHdvcmtlci5tYWtlUGVuZGluZ0FjdGl2
aXR5KHdvcmtlcikpCi0gICAgLCBtX3VybCh1cmwpCisgICAgLCBtX3VybChXVEZNb3ZlKHVybCkp
CiB7Ci0gICAgbV93b3JrZXItPnNldElzTG9hZGluZyh0cnVlKTsKLSAgICBtX2xvYWRlci0+bG9h
ZEFzeW5jaHJvbm91c2x5KCp3b3JrZXIuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBSZXNvdXJj
ZVJlcXVlc3QodXJsKSwgd29ya2VyLndvcmtlckZldGNoT3B0aW9ucyhvcHRpb25zLCBGZXRjaE9w
dGlvbnM6OkRlc3RpbmF0aW9uOjpTaGFyZWR3b3JrZXIpLCBDb250ZW50U2VjdXJpdHlQb2xpY3lF
bmZvcmNlbWVudDo6RW5mb3JjZVdvcmtlclNyY0RpcmVjdGl2ZSwgU2VydmljZVdvcmtlcnNNb2Rl
OjpBbGwsICp0aGlzLCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKK30KKwordm9pZCBT
aGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBXb3JrZXJGZXRjaFJlc3VsdCYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VS
VCghbV9jb21wbGV0aW9uSGFuZGxlcik7CisgICAgbV9jb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgbV9sb2FkZXItPmxvYWRBc3luY2hyb25vdXNs
eSgqbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgUmVzb3VyY2VSZXF1ZXN0KG1f
dXJsKSwgbV93b3JrZXItPndvcmtlckZldGNoT3B0aW9ucyhtX29wdGlvbnMsIEZldGNoT3B0aW9u
czo6RGVzdGluYXRpb246OlNoYXJlZHdvcmtlciksIENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9y
Y2VtZW50OjpFbmZvcmNlV29ya2VyU3JjRGlyZWN0aXZlLCBTZXJ2aWNlV29ya2Vyc01vZGU6OkFs
bCwgKnRoaXMsIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwogfQogCiB2b2lkIFNoYXJl
ZFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKQEAgLTU1LDE2ICs1
OCwxMiBAQCB2b2lkIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudAogCiB2b2lkIFNoYXJlZFdvcmtlclNjcmlw
dExvYWRlcjo6bm90aWZ5RmluaXNoZWQoKQogewotICAgIG1fd29ya2VyLT5zZXRJc0xvYWRpbmco
ZmFsc2UpOworICAgIGlmIChtX2xvYWRlci0+ZmFpbGVkKCkpCisgICAgICAgIHJldHVybiBtX2Nv
bXBsZXRpb25IYW5kbGVyKHdvcmtlckZldGNoRXJyb3IobV9sb2FkZXItPmVycm9yKCkpKTsKIAot
ICAgIGF1dG8qIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBtX3dvcmtlci0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOwotICAgIGlmIChtX2xvYWRlci0+ZmFpbGVkKCkgfHwgIXNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpIHsKLSAgICAgICAgbV93b3JrZXItPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50
OjpJc0NhbmNlbGFibGU6OlllcykpOwotICAgICAgICBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzaW5n
bGV0b24oKS5zY3JpcHRMb2FkRmFpbGVkKCp0aGlzKTsgLy8gZGVsZXRlcyB0aGlzLgotICAgIH0g
ZWxzZSB7CisgICAgaWYgKGF1dG8qIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBtX3dvcmtlci0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnNjcmlwdEltcG9ydGVkKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBtX2xvYWRlci0+aWRl
bnRpZmllcigpLCBtX2xvYWRlci0+c2NyaXB0KCkudG9TdHJpbmcoKSk7Ci0gICAgICAgIFNoYXJl
ZFdvcmtlck1hbmFnZXI6OnNpbmdsZXRvbigpLnNjcmlwdExvYWRlZFN1Y2Nlc3NmdWxseSgqdGhp
cywgbV9sb2FkZXItPnNjcmlwdCgpLCAqbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgbV93b3JrZXIuZ2V0KCksIHN0ZDo6ZXhjaGFuZ2UobV9wb3J0LCB7IH0pKTsgLy8gZGVsZXRl
cyB0aGlzLgotICAgIH0KKyAgICBtX2NvbXBsZXRpb25IYW5kbGVyKHsgbV9sb2FkZXItPnNjcmlw
dCgpLCBtX2xvYWRlci0+Y2VydGlmaWNhdGVJbmZvKCksIG1fbG9hZGVyLT5jb250ZW50U2VjdXJp
dHlQb2xpY3koKSwgbV9sb2FkZXItPmNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3koKSwgbV9sb2Fk
ZXItPnJlZmVycmVyUG9saWN5KCksIHsgfSB9KTsgLy8gZGVsZXRlcyB0aGlzLgogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oCmluZGV4IGFlNWIzYmI5ZWM1Mi4uZWIw
YjcxNDViZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXJTY3JpcHRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSwxMSArMjUsOSBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVySWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiV29ya2VyT3B0aW9ucy5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdExv
YWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CkBAIC0zOSwz
MiArMzcsMjggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTaGFyZWRXb3JrZXI7CiBj
bGFzcyBXb3JrZXJTY3JpcHRMb2FkZXI7Ci0KLWNsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRl
cjsKLQotdXNpbmcgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpN
ZXNzYWdlUG9ydElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllcj47Citz
dHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7CiAKIGNsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRl
ciA6IHByaXZhdGUgV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIoY29uc3Qg
VVJMJiwgU2hhcmVkV29ya2VyJiwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBXb3JrZXJPcHRp
b25zJiYpOworICAgIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcihVUkwmJiwgU2hhcmVkV29ya2Vy
JiwgV29ya2VyT3B0aW9ucyYmKTsKKworICAgIHZvaWQgbG9hZChDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFdvcmtlckZldGNoUmVzdWx0Jik+JiYpOwogCi0gICAgU2hhcmVkV29ya2VyU2Ny
aXB0TG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlm
aWVyOyB9CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAg
IFNoYXJlZFdvcmtlciYgd29ya2VyKCkgeyByZXR1cm4gbV93b3JrZXIuZ2V0KCk7IH0KLSAgICBj
b25zdCBXb3JrZXJPcHRpb25zJiBvcHRpb25zKCkgeyByZXR1cm4gbV9vcHRpb25zOyB9CisgICAg
Y29uc3QgV29ya2VyT3B0aW9ucyYgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9uczsg
fQogCiBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQgbm90
aWZ5RmluaXNoZWQoKSBmaW5hbDsKIAotICAgIGNvbnN0IFNoYXJlZFdvcmtlclNjcmlwdExvYWRl
cklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIGNvbnN0IFdvcmtlck9wdGlvbnMgbV9vcHRp
b25zOwogICAgIGNvbnN0IFJlZjxTaGFyZWRXb3JrZXI+IG1fd29ya2VyOwotICAgIFRyYW5zZmVy
cmVkTWVzc2FnZVBvcnQgbV9wb3J0OwogICAgIGNvbnN0IFJlZjxXb3JrZXJTY3JpcHRMb2FkZXI+
IG1fbG9hZGVyOwotICAgIGNvbnN0IFJlZjxBY3RpdmVET01PYmplY3Q6OlBlbmRpbmdBY3Rpdml0
eTxTaGFyZWRXb3JrZXI+PiBtX3BlbmRpbmdBY3Rpdml0eTsKICAgICBjb25zdCBVUkwgbV91cmw7
CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYpPiBt
X2NvbXBsZXRpb25IYW5kbGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0
L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLjA3YTkwZDk4MDUxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIu
Y3BwCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCIKKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlciYgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
PiBzaGFyZWRNYW5hZ2VyOworICAgIHJldHVybiBzaGFyZWRNYW5hZ2VyOworfQorCitTaGFyZWRX
b3JrZXJUaHJlYWRQcm94eSogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNoYXJlZFdvcmtl
cihTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fd29ya2VyTWFwLmdldChzaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c3RvcFNoYXJlZFdvcmtlcihTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIpCit7CisgICAgYXV0byB3
b3JrZXIgPSBtX3dvcmtlck1hcC50YWtlKHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworICAgIFJF
TEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzdG9w
U2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCAiLCB3b3JrZXI9
JXAiLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCksIHdvcmtlci5nZXQoKSk7Cisg
ICAgaWYgKCF3b3JrZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHdvcmtlci0+c2V0QXNUZXJt
aW5hdGluZ09yVGVybWluYXRlZCgpOworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxl
IHRvIGRlYWwgd2l0aCB0aGUgdGhyZWFkIGJlaW5nIHVucmVzcG9uc2l2ZSBoZXJlLgorCisgICAg
YXV0byYgdGhyZWFkID0gd29ya2VyLT50aHJlYWQoKTsKKyAgICB0aHJlYWQuc3RvcChbd29ya2Vy
ID0gV1RGTW92ZSh3b3JrZXIpXSgpIG11dGFibGUgeworICAgICAgICAvLyBTcGluIHRoZSBydW5s
b29wIGJlZm9yZSByZWxlYXNpbmcgdGhlIHNoYXJlZCB3b3JrZXIgdGhyZWFkIHByb3h5LCBhcyB0
aGVyZSB3b3VsZCBvdGhlcndpc2UgYmUKKyAgICAgICAgLy8gYSByYWNlIHRvd2FyZHMgaXRzIGRl
c3RydWN0aW9uLgorICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3b3JrZXIgPSBXVEZNb3ZlKHdv
cmtlcildIHsgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXI6OnN0b3BBbGxTaGFyZWRXb3JrZXJzKCkKK3sKKyAgICB3aGlsZSAoIW1fd29ya2VyTWFwLmlz
RW1wdHkoKSkKKyAgICAgICAgc3RvcFNoYXJlZFdvcmtlcihtX3dvcmtlck1hcC5iZWdpbigpLT5r
ZXkpOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzZXRDb25uZWN0aW9u
KHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCit7CisgICAgQVNTRVJU
KCFtX2Nvbm5lY3Rpb24gfHwgbV9jb25uZWN0aW9uLT5pc0Nsb3NlZCgpKTsKKyAgICBtX2Nvbm5l
Y3Rpb24gPSBXVEZNb3ZlKGNvbm5lY3Rpb24pOworfQorCithdXRvIFNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyOjpjb25uZWN0aW9uKCkgY29uc3QgLT4gQ29ubmVjdGlvbioKK3sKKyAgICByZXR1
cm4gbV9jb25uZWN0aW9uLmdldCgpOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyOjpyZWdpc3RlclNoYXJlZFdvcmtlclRocmVhZChSZWY8U2hhcmVkV29ya2VyVGhyZWFkUHJv
eHk+JiYgcHJveHkpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBSRUxFQVNF
X0xPRyhTaGFyZWRXb3JrZXIsICJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6cmVnaXN0ZXJT
aGFyZWRXb3JrZXJUaHJlYWQ6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBwcm94
eS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworCisgICAgYXV0byByZXN1bHQgPSBtX3dvcmtl
ck1hcC5hZGQocHJveHktPmlkZW50aWZpZXIoKSwgcHJveHkuY29weVJlZigpKTsKKyAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgcHJveHktPnRocmVh
ZCgpLnN0YXJ0KFtdKGNvbnN0IFN0cmluZyYgLypleGNlcHRpb25NZXNzYWdlKi8pIHsgfSk7Cit9
CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb246OnBvc3RDb25u
ZWN0RXZlbnQoU2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBU
cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgdHJhbnNmZXJyZWRQb3J0LCBTdHJpbmcmJiBzb3VyY2VP
cmlnaW4pCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBhdXRvKiBwcm94eSA9
IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zaGFyZWRXb3JrZXIoc2hh
cmVkV29ya2VySWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb246OnBvc3RDb25uZWN0RXZlbnQ6IHNo
YXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHByb3h5PSVwIiwgc2hhcmVkV29ya2Vy
SWRlbnRpZmllci50b1VJbnQ2NCgpLCBwcm94eSk7CisgICAgaWYgKCFwcm94eSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgcHJveHktPnRocmVhZCgpLnJ1bkxvb3AoKS5wb3N0VGFzayhbdHJhbnNm
ZXJyZWRQb3J0ID0gV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBzb3VyY2VPcmlnaW4gPSBXVEZN
b3ZlKHNvdXJjZU9yaWdpbikuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAg
ICAgIGRvd25jYXN0PFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250
ZXh0KS5wb3N0Q29ubmVjdEV2ZW50KFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwgV1RGTW92ZShz
b3VyY2VPcmlnaW4pKTsKKyAgICB9KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlcjo6Q29ubmVjdGlvbjo6dGVybWluYXRlU2hhcmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50
aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyOjpDb25uZWN0aW9uOjp0ZXJtaW5hdGVTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklk
ZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOwor
ICAgIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zdG9wU2hhcmVkV29y
a2VyKHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9j
b250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi4zMzgyNTI4OTM3M2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiU2hhcmVkV29ya2VySWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlRyYW5zZmVycmVkTWVz
c2FnZVBvcnQuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OworCitjbGFzcyBTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlciB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyJiBzaW5nbGV0b24oKTsKKworICAgIFNoYXJlZFdvcmtl
clRocmVhZFByb3h5KiBzaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllcikgY29uc3Q7
CisgICAgdm9pZCBzdG9wU2hhcmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcEFsbFNoYXJlZFdvcmtlcnMoKTsKKworICAgIGNsYXNz
IENvbm5lY3Rpb24geworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJs
aWM6CisgICAgICAgIHZpcnR1YWwgfkNvbm5lY3Rpb24oKSB7IH0KKyAgICAgICAgdmlydHVhbCB2
b2lkIGVzdGFibGlzaENvbm5lY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoU2hhcmVk
V29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkgPSAwOworICAg
ICAgICBib29sIGlzQ2xvc2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Nsb3NlZDsgfQorCisgICAg
cHJvdGVjdGVkOgorICAgICAgICB2b2lkIHNldEFzQ2xvc2VkKCkgeyBtX2lzQ2xvc2VkID0gdHJ1
ZTsgfQorCisgICAgICAgIC8vIElQQyBtZXNzYWdlIGhhbmRsZXJzLgorICAgICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHBvc3RDb25uZWN0RXZlbnQoU2hhcmVkV29ya2VySWRlbnRpZmllciwgVHJh
bnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBTdHJpbmcmJiBzb3VyY2VPcmlnaW4pOworICAgICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHRlcm1pbmF0ZVNoYXJlZFdvcmtlcihTaGFyZWRXb3JrZXJJZGVu
dGlmaWVyKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIGJvb2wgbV9pc0Nsb3NlZCB7IGZhbHNl
IH07CisgICAgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29ubmVjdGlvbihzdGQ6
OnVuaXF1ZV9wdHI8Q29ubmVjdGlvbj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29ubmVjdGlv
biogY29ubmVjdGlvbigpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdpc3Rl
clNoYXJlZFdvcmtlclRocmVhZChSZWY8U2hhcmVkV29ya2VyVGhyZWFkUHJveHk+JiYpOworCitw
cml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlcj47CisKKyAgICBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcigpID0gZGVmYXVs
dDsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAg
SGFzaE1hcDxTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2hhcmVkV29ya2VyVGhyZWFkUHJv
eHk+PiBtX3dvcmtlck1hcDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAKaW5kZXggOWJkOTc4M2Q3YTdlLi4xZWRmNzM0ZmYyOTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVk
V29ya2VyVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDk0ICsyOCw3MiBAQAogCiAj
aW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJFcnJvckV2ZW50Lmgi
CisjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1
ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJMaWJXZWJS
VENQcm92aWRlci5oIgorI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiTWVz
c2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJQYWdlLmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5u
ZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgor
I2luY2x1ZGUgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2hhcmVk
V29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKKyNp
bmNsdWRlICJXb3JrZXJGZXRjaFJlc3VsdC5oIgorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXJzRmFjdG9yeS5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eShTaGFyZWRXb3JrZXImIHNoYXJlZFdvcmtlcikKLSAgICA6IG1fc2hhcmVkV29ya2Vy
KHNoYXJlZFdvcmtlcikKLSAgICAsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChzaGFyZWRXb3Jr
ZXIuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICwgbV9pZGVudGlmaWVyRm9ySW5zcGVj
dG9yKHNoYXJlZFdvcmtlci5pZGVudGlmaWVyRm9ySW5zcGVjdG9yKCkpCitzdGF0aWMgSGFzaFNl
dDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSo+JiBhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVz
KCkKIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eSo+PiBzZXQ7CisgICAgcmV0dXJuIHNldDsKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXJU
aHJlYWRQcm94eTo6c3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGlu
ZSwgY29uc3QgU2NyaXB0QnVmZmVyJiBzY3JpcHRCdWZmZXIsIGNvbnN0IENvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgY29u
c3QgQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSYgY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwg
TW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSwg
V29ya2VyVHlwZSB3b3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RDcmVkZW50aWFscyBjcmVkZW50aWFs
cywgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKQorc3RhdGljIFdvcmtlclBhcmFtZXRl
cnMgZ2VuZXJhdGVXb3JrZXJQYXJhbWV0ZXJzKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBX
b3JrZXJGZXRjaFJlc3VsdCYgd29ya2VyRmV0Y2hSZXN1bHQsIFdvcmtlck9wdGlvbnMmJiB3b3Jr
ZXJPcHRpb25zLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgRG9jdW1lbnQmIGRvY3VtZW50KQog
ewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1
dG8gcGFyYW1ldGVycyA9IFdvcmtlclBhcmFtZXRlcnMgeworICAgIHJldHVybiBXb3JrZXJQYXJh
bWV0ZXJzIHsKICAgICAgICAgc2NyaXB0VVJMLAotICAgICAgICBuYW1lLAotICAgICAgICBtX2lk
ZW50aWZpZXJGb3JJbnNwZWN0b3IsCisgICAgICAgIHdvcmtlck9wdGlvbnMubmFtZSwKKyAgICAg
ICAgInNoYXJlZHdvcmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0
ZUlkZW50aWZpZXIoKSwKICAgICAgICAgdXNlckFnZW50LAotICAgICAgICBpc09ubGluZSwKLSAg
ICAgICAgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLAotICAgICAgICBzaG91
bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksCi0gICAgICAgIGNyb3NzT3Jp
Z2luRW1iZWRkZXJQb2xpY3ksCi0gICAgICAgIHRpbWVPcmlnaW4sCi0gICAgICAgIHJlZmVycmVy
UG9saWN5LAotICAgICAgICB3b3JrZXJUeXBlLAotICAgICAgICBjcmVkZW50aWFscywKLSAgICAg
ICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZXR0aW5nc1ZhbHVlcygpCisgICAgICAgIHBs
YXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5pc09uTGluZSgpLAorICAgICAg
ICB3b3JrZXJGZXRjaFJlc3VsdC5jb250ZW50U2VjdXJpdHlQb2xpY3ksCisgICAgICAgIGZhbHNl
LAorICAgICAgICB3b3JrZXJGZXRjaFJlc3VsdC5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LAor
ICAgICAgICBNb25vdG9uaWNUaW1lOjpub3coKSwKKyAgICAgICAgcGFyc2VSZWZlcnJlclBvbGlj
eSh3b3JrZXJGZXRjaFJlc3VsdC5yZWZlcnJlclBvbGljeSwgUmVmZXJyZXJQb2xpY3lTb3VyY2U6
OkhUVFBIZWFkZXIpLnZhbHVlX29yKFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZyksCisgICAg
ICAgIHdvcmtlck9wdGlvbnMudHlwZSwKKyAgICAgICAgd29ya2VyT3B0aW9ucy5jcmVkZW50aWFs
cywKKyAgICAgICAgZG9jdW1lbnQuc2V0dGluZ3NWYWx1ZXMoKQogICAgIH07Ci0KLSAgICBpZiAo
IW1fd29ya2VyVGhyZWFkKSB7Ci0gICAgICAgIG1fd29ya2VyVGhyZWFkID0gU2hhcmVkV29ya2Vy
VGhyZWFkOjpjcmVhdGUoU2hhcmVkV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgcGFyYW1l
dGVycywgc2NyaXB0QnVmZmVyLCAqdGhpcywgKnRoaXMsICp0aGlzLCBXb3JrZXJUaHJlYWRTdGFy
dE1vZGU6Ok5vcm1hbCwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT50b3BPcmlnaW4oKSwgbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5pZGJDb25uZWN0aW9uUHJveHkoKSwgbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5zb2NrZXRQcm92aWRlcigpLCBydW50aW1lRmxhZ3MpOwotICAgICAgICBt
X3dvcmtlclRocmVhZC0+c3RhcnQoKTsKLSAgICB9Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHk6OnRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCkKLXsKLSAgICBpZiAobV9hc2tl
ZFRvVGVybWluYXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2Fza2VkVG9UZXJtaW5hdGUg
PSB0cnVlOwotICAgIGlmIChtX3dvcmtlclRocmVhZCkKLSAgICAgICAgbV93b3JrZXJUaHJlYWQt
PnN0b3AobnVsbHB0cik7CiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RN
ZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3Nh
Z2UpCitTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHkoVW5p
cXVlUmVmPFBhZ2U+JiYgcGFnZSwgU2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgY29uc3QgVVJMJiBz
Y3JpcHRVUkwsIFdvcmtlckZldGNoUmVzdWx0JiYgd29ya2VyRmV0Y2hSZXN1bHQsIFdvcmtlck9w
dGlvbnMmJiB3b3JrZXJPcHRpb25zLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgQ2FjaGVTdG9y
YWdlUHJvdmlkZXImIGNhY2hlU3RvcmFnZVByb3ZpZGVyKQorICAgIDogbV9wYWdlKFdURk1vdmUo
cGFnZSkpCisgICAgLCBtX2RvY3VtZW50KCptX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkp
CisgICAgLCBtX3dvcmtlclRocmVhZChTaGFyZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZShzaGFyZWRX
b3JrZXJJZGVudGlmaWVyLCBnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMoc2NyaXB0VVJMLCB3b3Jr
ZXJGZXRjaFJlc3VsdCwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSwgdXNlckFnZW50LCBtX2RvY3Vt
ZW50KSwgV1RGTW92ZSh3b3JrZXJGZXRjaFJlc3VsdC5zY3JpcHQpLCAqdGhpcywgKnRoaXMsICp0
aGlzLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgY2xpZW50T3JpZ2luLnRvcE9yaWdp
bi5zZWN1cml0eU9yaWdpbigpLCBtX2RvY3VtZW50LT5pZGJDb25uZWN0aW9uUHJveHkoKSwgbV9k
b2N1bWVudC0+c29ja2V0UHJvdmlkZXIoKSwgSlNDOjpSdW50aW1lRmxhZ3M6OmNyZWF0ZUFsbEVu
YWJsZWQoKSkpCisgICAgLCBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyKGNhY2hlU3RvcmFnZVByb3Zp
ZGVyKQogewotICAgIC8vIEZJWE1FOiBTaGFyZWRXb3JrZXIgZG9lc24ndCBoYXZlIHBvc3RNZXNz
YWdlLCBzbyB0aGlzIG1pZ2h0IG5vdCBiZSBuZWNlc3NhcnkuCi0gICAgcG9zdFRhc2tUb1dvcmtl
ckdsb2JhbFNjb3BlKFttZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKV0oYXV0byYgc2NyaXB0Q29u
dGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIGNvbnRleHQgPSBkb3duY2FzdDxTaGFyZWRX
b3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0Q29udGV4dCk7Ci0gICAgICAgIGF1dG8gcG9ydHMgPSBN
ZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhzY3JpcHRDb250ZXh0LCBXVEZNb3ZlKG1lc3NhZ2Uu
dHJhbnNmZXJyZWRQb3J0cykpOwotICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXZlbnQoTWVzc2Fn
ZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIG1lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9u
TnVsbCgpKSk7Ci0gICAgfSk7Ci19CisgICAgQVNTRVJUKCFhbGxTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94aWVzKCkuY29udGFpbnModGhpcykpOworICAgIGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hp
ZXMoKS5hZGQodGhpcyk7CiAKLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RUYXNr
VG9Xb3JrZXJHbG9iYWxTY29wZShGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
KT4mJiB0YXNrKQotewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCi0gICAgICAgIHJldHVy
bjsKLSAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFdURk1vdmUodGFzaykp
OwotfQotCi1ib29sIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpoYXNQZW5kaW5nQWN0aXZpdHko
KSBjb25zdAotewotICAgIHJldHVybiBtX2hhc1BlbmRpbmdBY3Rpdml0eSAmJiAhbV9hc2tlZFRv
VGVybWluYXRlOworICAgIHN0YXRpYyBib29sIGFkZGVkTGlzdGVuZXI7CisgICAgaWYgKCFhZGRl
ZExpc3RlbmVyKSB7CisgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVn
eSgpLT5hZGRPbmxpbmVTdGF0ZUNoYW5nZUxpc3RlbmVyKCZuZXR3b3JrU3RhdGVDaGFuZ2VkKTsK
KyAgICAgICAgYWRkZWRMaXN0ZW5lciA9IHRydWU7CisgICAgfQogfQogCi12b2lkIFNoYXJlZFdv
cmtlclRocmVhZFByb3h5Ojp3b3JrZXJPYmplY3REZXN0cm95ZWQoKQorU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHk6On5TaGFyZWRXb3JrZXJUaHJlYWRQcm94eSgpCiB7Ci0gICAgbV9zaGFyZWRXb3Jr
ZXIgPSBudWxscHRyOwotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3Ro
aXNdIChhdXRvJikgewotICAgICAgICBtX21heUJlRGVzdHJveWVkID0gdHJ1ZTsKLSAgICAgICAg
aWYgKG1fd29ya2VyVGhyZWFkKQotICAgICAgICAgICAgdGVybWluYXRlV29ya2VyR2xvYmFsU2Nv
cGUoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95
ZWRJbnRlcm5hbCgpOwotICAgIH0pOworICAgIEFTU0VSVChhbGxTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94aWVzKCkuY29udGFpbnModGhpcykpOworICAgIGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hp
ZXMoKS5yZW1vdmUodGhpcyk7CiB9CiAKIFNoYXJlZFdvcmtlcklkZW50aWZpZXIgU2hhcmVkV29y
a2VyVGhyZWFkUHJveHk6OmlkZW50aWZpZXIoKSBjb25zdApAQCAtMTI1LDg4ICsxMDMsNTAgQEAg
U2hhcmVkV29ya2VySWRlbnRpZmllciBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6aWRlbnRpZmll
cigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Om5vdGlmeU5ldHdvcmtT
dGF0ZUNoYW5nZShib29sIGlzT25saW5lKQogewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUp
CisgICAgaWYgKG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKCFtX3dvcmtlclRocmVhZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV93b3Jr
ZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhbaXNPbmxpbmVdIChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7CisgICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZShbaXNPbmxpbmVdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7
CiAgICAgICAgIGF1dG8mIGdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KGNvbnRleHQpOwogICAgICAgICBnbG9iYWxTY29wZS5zZXRJc09ubGluZShpc09ubGluZSk7Ci0g
ICAgICAgIGdsb2JhbFNjb3BlLmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShpc09ubGluZSA/
IGV2ZW50TmFtZXMoKS5vbmxpbmVFdmVudCA6IGV2ZW50TmFtZXMoKS5vZmZsaW5lRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwotICAgIH0pOwot
fQotCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpzdXNwZW5kRm9yQmFja0ZvcndhcmRD
YWNoZSgpCi17Ci0KLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cmVzdW1lRm9y
QmFja0ZvcndhcmRDYWNoZSgpCi17Ci0KKyAgICAgICAgZ2xvYmFsU2NvcGUuZXZlbnRMb29wKCku
cXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW2dsb2JhbFNjb3BlID0gUmVm
IHsgZ2xvYmFsU2NvcGUgfSwgaXNPbmxpbmVdIHsKKyAgICAgICAgICAgIGdsb2JhbFNjb3BlLT5k
aXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoaXNPbmxpbmUgPyBldmVudE5hbWVzKCkub25saW5l
RXZlbnQgOiBldmVudE5hbWVzKCkub2ZmbGluZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywg
RXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKKyAgICAgICAgfSk7CisgICAgfSwgV29ya2VyUnVu
TG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiB9CiAKIHZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6
OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwg
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
KQogewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXMsIGVycm9y
TWVzc2FnZSA9IGVycm9yTWVzc2FnZS5pc29sYXRlZENvcHkoKSwgc291cmNlVVJMID0gc291cmNl
VVJMLmlzb2xhdGVkQ29weSgpLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXJdIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JikgewotICAgICAgICBpZiAoIW1fc2hhcmVkV29ya2VyKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIC8vIFdlIGRvbid0IGJvdGhlciBjaGVja2luZyB0aGUgYXNr
ZWRUb1Rlcm1pbmF0ZSgpIGZsYWcgaGVyZSwgYmVjYXVzZSBleGNlcHRpb25zIHNob3VsZCAqYWx3
YXlzKiBiZSByZXBvcnRlZCBldmVuIGlmIHRoZSB0aHJlYWQgaXMgdGVybWluYXRlZC4KLSAgICAg
ICAgLy8gVGhpcyBpcyBpbnRlbnRpb25hbGx5IGRpZmZlcmVudCB0aGFuIHRoZSBiZWhhdmlvciBp
biBNZXNzYWdlV29ya2VyVGFzaywgYmVjYXVzZSB0ZXJtaW5hdGVkIHdvcmtlcnMgbm8gbG9uZ2Vy
IGRlbGl2ZXIgbWVzc2FnZXMgKHNlY3Rpb24gNC42IG9mIHRoZSBXZWJXb3JrZXIgc3BlYyksIGJ1
dCB0aGV5IGRvIHJlcG9ydCBleGNlcHRpb25zLgotICAgICAgICBBY3RpdmVET01PYmplY3Q6OnF1
ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqbV9zaGFyZWRXb3JrZXIsIFRhc2tTb3VyY2U6OkRPTU1h
bmlwdWxhdGlvbiwgRXJyb3JFdmVudDo6Y3JlYXRlKGVycm9yTWVzc2FnZSwgc291cmNlVVJMLCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHsgfSkpOwotICAgIH0pOwotfQotCi12b2lkIFNoYXJl
ZFdvcmtlclRocmVhZFByb3h5Ojp3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgpCi17Ci0gICAg
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpc10gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKSB7Ci0gICAgICAgIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwo
KTsKLSAgICB9KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdE1lc3Nh
Z2VUb1dvcmtlck9iamVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKQotewotCi19Ci0KLXZv
aWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVj
dChib29sKQotewotfQotCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpyZXBvcnRQZW5k
aW5nQWN0aXZpdHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpCi17Ci0gICAgbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpcywgaGFzUGVuZGluZ0FjdGl2aXR5XSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpIHsKLSAgICAgICAgbV9oYXNQZW5kaW5nQWN0aXZpdHkgPSBoYXNQ
ZW5kaW5nQWN0aXZpdHk7CisgICAgY2FsbE9uTWFpblRocmVhZChbc2hhcmVkV29ya2VySWRlbnRp
ZmllciA9IG1fd29ya2VyVGhyZWFkLT5pZGVudGlmaWVyKCksIGVycm9yTWVzc2FnZSA9IGVycm9y
TWVzc2FnZS5pc29sYXRlZENvcHkoKSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VV
UkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgaWYgKGF1dG8qIGNvbm5l
Y3Rpb24gPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlv
bigpKQorICAgICAgICAgICAgY29ubmVjdGlvbi0+cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0
KHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBzb3VyY2VVUkwpOwogICAgIH0pOwogfQogCiBSZWZQdHI8Q2FjaGVTdG9yYWdlQ29u
bmVjdGlvbj4gU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24oKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byYgZG9jdW1l
bnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAg
cmV0dXJuIGRvY3VtZW50LnBhZ2UoKS0+Y2FjaGVTdG9yYWdlUHJvdmlkZXIoKS5jcmVhdGVDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uKCk7CisgICAgaWYgKCFtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24p
CisgICAgICAgIG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbiA9IG1fY2FjaGVTdG9yYWdlUHJvdmlk
ZXIuY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpOworICAgIHJldHVybiBtX2NhY2hlU3Rv
cmFnZUNvbm5lY3Rpb247CiB9CiAKIFJlZlB0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJD
b25uZWN0aW9uPiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlUlRDRGF0YUNoYW5uZWxS
ZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0KTsKLSAgICBpZiAoIWRvY3VtZW50LnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgcmV0dXJuIGRvY3VtZW50LnBhZ2UoKS0+bGliV2ViUlRDUHJvdmlkZXIoKS5j
cmVhdGVSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCk7CisgICAgcmV0dXJu
IG1fcGFnZS0+bGliV2ViUlRDUHJvdmlkZXIoKS5jcmVhdGVSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXJDb25uZWN0aW9uKCk7CiB9CiAKIHZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBv
c3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2spCiB7Ci0g
ICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhXVEZNb3ZlKHRhc2spKTsKKyAg
ICBjYWxsT25NYWluVGhyZWFkKFt0YXNrID0gV1RGTW92ZSh0YXNrKSwgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgeworICAgICAgICB0YXNrLnBlcmZvcm1UYXNrKHBy
b3RlY3RlZFRoaXMtPm1fZG9jdW1lbnQuZ2V0KCkpOworICAgIH0pOwogfQogCiBib29sIFNoYXJl
ZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrLCBjb25zdCBTdHJpbmcm
IG1vZGUpCiB7Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKKyAgICBpZiAobV9pc1Rlcm1p
bmF0aW5nT3JUZXJtaW5hdGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX3dvcmtl
clRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShXVEZNb3ZlKHRhc2spLCBtb2RlKTsK
QEAgLTIyMywxNiArMTYzLDEwIEBAIHZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnNldFJl
c291cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNwZWN0b3IoYm9vbCkKIAogfQogCi12b2lkIFNo
YXJlZFdvcmtlclRocmVhZFByb3h5Ojp3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZEludGVybmFs
KCkKK3ZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoYm9v
bCBpc09uTGluZSkKIHsKLSAgICAvLyBUaGlzIGlzIGFsd2F5cyB0aGUgbGFzdCB0YXNrIHRvIGJl
IHBlcmZvcm1lZCwgc28gdGhlIHByb3h5IGlzIG5vdCBuZWVkZWQgZm9yIGNvbW11bmljYXRpb24K
LSAgICAvLyBpbiBlaXRoZXIgc2lkZSBhbnkgbW9yZS4gSG93ZXZlciwgdGhlIFdvcmtlciBvYmpl
Y3QgbWF5IHN0aWxsIGV4aXN0LCBhbmQgaXQgYXNzdW1lcyB0aGF0IHRoZSBwcm94eSBleGlzdHMs
IHRvby4KLSAgICBtX2Fza2VkVG9UZXJtaW5hdGUgPSB0cnVlOwotICAgIG1fd29ya2VyVGhyZWFk
ID0gbnVsbHB0cjsKLQotICAgIC8vIFRoaXMgYmFsYW5jZXMgdGhlIG9yaWdpbmFsIHJlZiBpbiBj
b25zdHJ1Y3Rpb24uCi0gICAgaWYgKG1fbWF5QmVEZXN0cm95ZWQpCi0gICAgICAgIGRlcmVmKCk7
CisgICAgZm9yIChhdXRvKiBwcm94eSA6IGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKSkK
KyAgICAgICAgcHJveHktPm5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShpc09uTGluZSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaAppbmRl
eCA0ZTkyZTQ1NjE3MWMuLjMzNjQyNDBhYmJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJv
eHkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yNyw3ICsyNyw2IEBACiAKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSAiV29ya2VyRGVidWdnZXJQcm94eS5oIgotI2luY2x1ZGUgIldvcmtlckdsb2Jh
bFNjb3BlUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJMb2FkZXJQcm94eS5oIgogI2luY2x1ZGUg
Ildvcmtlck9iamVjdFByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyT3B0aW9ucy5oIgpAQCAtMzUs
NTAgKzM0LDU0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ2FjaGVTdG9yYWdl
UHJvdmlkZXI7CitjbGFzcyBQYWdlOwogY2xhc3MgU2hhcmVkV29ya2VyOwogY2xhc3MgU2hhcmVk
V29ya2VyVGhyZWFkOwogCi1jbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSBmaW5hbCA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4sIHB1Ymxp
YyBXb3JrZXJHbG9iYWxTY29wZVByb3h5LCBwdWJsaWMgV29ya2VyT2JqZWN0UHJveHksIHB1Ymxp
YyBXb3JrZXJMb2FkZXJQcm94eSwgcHVibGljIFdvcmtlckRlYnVnZ2VyUHJveHkgeworc3RydWN0
IENsaWVudE9yaWdpbjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKKworY2xhc3MgU2hhcmVk
V29ya2VyVGhyZWFkUHJveHkgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hh
cmVkV29ya2VyVGhyZWFkUHJveHk+LCBwdWJsaWMgV29ya2VyT2JqZWN0UHJveHksIHB1YmxpYyBX
b3JrZXJMb2FkZXJQcm94eSwgcHVibGljIFdvcmtlckRlYnVnZ2VyUHJveHkgewogcHVibGljOgot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eSYgY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKSB7IHJldHVybiAqbmV3IFNoYXJlZFdvcmtlclRo
cmVhZFByb3h5KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7IH0KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmPFNoYXJlZFdvcmtlclRocmVhZFByb3h5PiBjcmVh
dGUoQXJncyYmLi4uIGFyZ3MpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7IH0KKyAgICBXRUJDT1JFX0VY
UE9SVCB+U2hhcmVkV29ya2VyVGhyZWFkUHJveHkoKTsKIAogICAgIFNoYXJlZFdvcmtlcklkZW50
aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0OwotICAgIFNoYXJlZFdvcmtlclRocmVhZCogdGhyZWFk
KCkgeyByZXR1cm4gbV93b3JrZXJUaHJlYWQuZ2V0KCk7IH0KKyAgICBTaGFyZWRXb3JrZXJUaHJl
YWQmIHRocmVhZCgpIHsgcmV0dXJuIG1fd29ya2VyVGhyZWFkOyB9CiAKLSAgICB2b2lkIHN0YXJ0
V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUsIGNvbnN0IFNjcmlwdEJ1
ZmZlciYgc291cmNlQ29kZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIGNv
bnN0IENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kmLCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4s
IFJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RDcmVkZW50aWFscywgSlND
OjpSdW50aW1lRmxhZ3MpIGZpbmFsOwotICAgIHZvaWQgd29ya2VyT2JqZWN0RGVzdHJveWVkKCkg
ZmluYWw7Ci0gICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKLSAgICB2
b2lkIHRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCkgZmluYWw7CisgICAgYm9vbCBpc1Rlcm1p
bmF0aW5nT3JUZXJtaW5hdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1Rlcm1pbmF0aW5nT3JUZXJt
aW5hdGVkOyB9CisgICAgdm9pZCBzZXRBc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKCkgeyBtX2lz
VGVybWluYXRpbmdPclRlcm1pbmF0ZWQgPSB0cnVlOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGlj
aXQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkoU2hhcmVkV29ya2VyJik7Ci0KLSAgICB2b2lkIHdv
cmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eShVbmlxdWVSZWY8UGFnZT4mJiwgU2hhcmVkV29ya2VySWRl
bnRpZmllciwgY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIFdvcmtl
ckZldGNoUmVzdWx0JiYsIFdvcmtlck9wdGlvbnMmJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQs
IENhY2hlU3RvcmFnZVByb3ZpZGVyJik7CiAKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJH
bG9iYWxTY29wZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKSBmaW5hbDsKLSAgICB2b2lkIHBv
c3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmKT4mJikgZmluYWw7Ci0gICAgdm9pZCBub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9v
bCBpc09ubGluZSkgZmluYWw7Ci0gICAgdm9pZCBzdXNwZW5kRm9yQmFja0ZvcndhcmRDYWNoZSgp
IGZpbmFsOwotICAgIHZvaWQgcmVzdW1lRm9yQmFja0ZvcndhcmRDYWNoZSgpIGZpbmFsOworICAg
IC8vIFdvcmtlck9iamVjdFByb3h5LgogICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2Jq
ZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpIGZpbmFsOwotICAgIHZvaWQgd29ya2Vy
R2xvYmFsU2NvcGVEZXN0cm95ZWQoKSBmaW5hbDsKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3Jr
ZXJPYmplY3QoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJikgZmluYWw7Ci0gICAgdm9pZCBjb25m
aXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpIGZpbmFs
OwotICAgIHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5
KSBmaW5hbDsKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHMmJikgZmluYWwgeyB9CisgICAgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURlc3Ry
b3llZCgpIGZpbmFsIHsgfQorICAgIHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0
KGJvb2wpIGZpbmFsIHsgfQorICAgIHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wpIGZp
bmFsIHsgfQorCisgICAgLy8gV29ya2VyTG9hZGVyUHJveHkuCiAgICAgUmVmUHRyPENhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24+IGNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKSBmaW5hbDsKICAg
ICBSZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbj4gY3JlYXRlUlRD
RGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpIGZpbmFsOwogICAgIHZvaWQgcG9z
dFRhc2tUb0xvYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYpIGZpbmFsOwogICAg
IGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrJiYsIGNvbnN0IFN0cmluZyYgbW9kZSkgZmluYWw7CisKKyAg
ICAvLyBXb3JrZXJEZWJ1Z2dlclByb3h5LgogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb0RlYnVnZ2Vy
KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgc2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJs
ZWRCeVdlYkluc3BlY3Rvcihib29sKSBmaW5hbDsKIAotICAgIFdlYWtQdHI8U2hhcmVkV29ya2Vy
PiBtX3NoYXJlZFdvcmtlcjsKLSAgICBSZWZQdHI8U2hhcmVkV29ya2VyVGhyZWFkPiBtX3dvcmtl
clRocmVhZDsKLSAgICBjb25zdCBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0OwotICAgIGNvbnN0IFN0cmluZyBtX2lkZW50aWZpZXJGb3JJbnNw
ZWN0b3I7Ci0gICAgYm9vbCBtX2Fza2VkVG9UZXJtaW5hdGUgeyBmYWxzZSB9OwotICAgIGJvb2wg
bV9oYXNQZW5kaW5nQWN0aXZpdHkgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9tYXlCZURlc3Ryb3ll
ZCB7IGZhbHNlIH07CisgICAgc3RhdGljIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZChib29sIGlz
T25MaW5lKTsKKyAgICB2b2lkIG5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25saW5l
KTsKKworICAgIFVuaXF1ZVJlZjxQYWdlPiBtX3BhZ2U7CisgICAgUmVmPERvY3VtZW50PiBtX2Rv
Y3VtZW50OworICAgIFJlZjxTaGFyZWRXb3JrZXJUaHJlYWQ+IG1fd29ya2VyVGhyZWFkOworICAg
IENhY2hlU3RvcmFnZVByb3ZpZGVyJiBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyOworICAgIFJlZlB0
cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247CisgICAg
Ym9vbCBtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggNzU2ZGE4OGI0NWY3Li4yOWY0
Yzc4MTgxODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMjgsNiArMjgsNyBAQCBzZXQoV2ViS2l0
X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9O
b3RpZmljYXRpb25zIgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50IgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIiCisgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2Vy
IgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UiCiAgICAgIiR7
V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvY2FjaGUiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZSIKQEAgLTIwMiw2ICsyMDMsOSBAQCBzZXQoV2ViS2l0X01FU1NB
R0VTX0lOX0ZJTEVTCiAgICAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24KICAgICBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbgogCisgICAgTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24KKyAgICBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRX
b3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbgorCiAgICAgTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldAogCiAgICAgTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbgpAQCAtMzA1LDYgKzMwOSw4
IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKIAogICAgIFdlYlByb2Nlc3MvU3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIKIAorICAgIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24KKyAg
ICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbgogICAg
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24KICAgICBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IDRjNjYyMjBjZjEyMi4uNzIy
OWMxYjk4NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0CkBAIC05MSw2ICs5MSw4IEBAICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5tZXNzYWdlcy5pCiAkKFBST0pF
Q1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRh
c2subWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIp
L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5O
ZXR3b3JrUHJvY2Vzcy5zYi5pbgpAQCAtMjE3LDYgKzIxOSw4IEBAICQoUFJPSkVDVF9ESVIpL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
V2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFu
YWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q2xpZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pF
Q1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMu
aW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0Cmlu
ZGV4IGUzYjU1ODQwYWUxZS4uYTg2MzI4MTQ3YjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTYwNyw2ICs2MDcsMTggQEAgJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTV1NlcnZlckNvbm5lY3Rp
b25NZXNzYWdlc1JlcGxpZXMKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzUmVw
bGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVy
LmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVz
c2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzUmVw
bGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdC9XZWJTb2NrZXRDaGFubmVsTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTb2NrZXRDaGFubmVsTWVz
c2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJT
b2NrZXRDaGFubmVsTWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpp
bmRleCA3YWQ0OWUzNzM1ZjQuLjM1MWZmYWUwYTU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMu
bWFrZQpAQCAtMTMzLDYgKzEzMyw4IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCU5ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzayBcCiAJTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrIFwKIAlOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBcCisJ
TmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b24gXAorCU5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uIFwKIAlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFt
IFwKIAlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2VzcyBcCiAJTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyIFwKQEAgLTIyNSw2ICsyMjcsOCBAQCBNRVNTQUdFX1JFQ0VJVkVS
UyA9IFwKIAlXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvU3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVhbHRp
bWVNZWRpYVNvdXJjZU1hbmFnZXIgXAorCVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gXAorCVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENv
bm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvV2ViUHJvY2VzcyBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCmluZGV4IGEzNGY3OWJkZTNlMC4uYzdiMTdmZDcwNzg1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcApAQCAtNjYsNiArNjYsMTEgQEAKICNpbmNsdWRlICJXZWJTV1NlcnZlckNv
bm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgiCisjaW5jbHVkZSAiV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNl
cnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9IVFRQQ29va2llQWNjZXB0UG9saWN5Lmg+CkBAIC0xMzIsNiAr
MTM3LDcgQEAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKE5ldHdvcmtQcm9jZXNzJiBuZXQKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAgICAgZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKCk7CiAjZW5kaWYKKyAgICBlc3Rh
Ymxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCk7CiB9CiAKIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQpAQCAtMTY2
LDYgKzE3Miw3IEBAIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp+TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MoKQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB1bnJl
Z2lzdGVyU1dDb25uZWN0aW9uKCk7CiAjZW5kaWYKKyAgICB1bnJlZ2lzdGVyU2hhcmVkV29ya2Vy
Q29ubmVjdGlvbigpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpo
YXNVcGxvYWRTdGF0ZUNoYW5nZWQoYm9vbCBoYXNVcGxvYWQpCkBAIC0yNzUsNiArMjgyLDE3IEBA
IHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvCiAgICAgfQogI2VuZGlmCiAKKyAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBpZiAobV9zaGFy
ZWRXb3JrZXJDb25uZWN0aW9uKQorICAgICAgICAgICAgbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9u
LT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2Fn
ZXM6OldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSkgeworICAgICAgICBpZiAobV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlv
bikKKyAgICAgICAgICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24tPmRpZFJlY2Vp
dmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQor
CiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKQogICAgICAgICByZXR1cm4gcGF5bWVudENvb3JkaW5hdG9y
KCkuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CkBAIC0zOTgsOSArNDE2
LDggQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uKQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwotI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0oY29ubmVjdGlvbik7CiAjZW5kaWYKKyAgICBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0
aW9uID0gbnVsbHB0cjsKIAogICAgIC8vIFByb3RlY3Qgb3Vyc2VsZiBhcyB3ZSBtaWdodCBiZSBv
dGhlcndpc2UgYmUgZGVsZXRlZCBkdXJpbmcgdGhpcyBmdW5jdGlvbi4KICAgICBSZWY8TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IHByb3RlY3RvcigqdGhpcyk7CkBAIC00NDEsNiArNDU4
LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uKQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB1
bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7CiAjZW5kaWYKKyAgICB1bnJlZ2lzdGVyU2hhcmVkV29y
a2VyQ29ubmVjdGlvbigpOwogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAg
bV9wYXltZW50Q29vcmRpbmF0b3IgPSBudWxscHRyOwpAQCAtMTE4Niw2ICsxMjA0LDYxIEBAIHNp
emVfdCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZmluZE5ldHdvcmtBY3Rpdml0eVRy
YWNrZXIoV2ViQ29yZTo6UmVzb3VyCiAgICAgICAgIHJldHVybiBpdGVtLnJlc291cmNlSUQgPT0g
cmVzb3VyY2VJRDsKICAgICB9KTsKIH0KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24oV2ViUGFnZVByb3h5
SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb246Iik7CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNz
aW9uKCk7CisgICAgaWYgKGF1dG8qIHN3U2VydmVyID0gc2Vzc2lvbiA/IHNlc3Npb24tPnNoYXJl
ZFdvcmtlclNlcnZlcigpIDogbnVsbHB0cikKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJDb250ZXh0
Q29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbj4oKnRoaXMsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCAqc3dTZXJ2ZXIpOwor
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oKQoreworICAg
IGlmIChtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOworICAgIGlmICghc2Vzc2lvbikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJl
c3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOiIpOworCisgICAgYXV0byYgc2Vy
dmVyID0gc2Vzc2lvbi0+ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCk7CisgICAgYXV0byBjb25u
ZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uPihtX25l
dHdvcmtQcm9jZXNzLCBzZXJ2ZXIsIG1fY29ubmVjdGlvbi5nZXQoKSwgbV93ZWJQcm9jZXNzSWRl
bnRpZmllcik7CisKKyAgICBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24gPSAqY29ubmVjdGlvbjsK
KyAgICBzZXJ2ZXIuYWRkQ29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKK30KKwordm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0
Q29ubmVjdGlvbigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIs
ICJjbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uOiIpOworICAgIG1fc2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbigpCit7Cisg
ICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJ1bnJlZ2lzdGVyU2hhcmVk
V29ya2VyQ29ubmVjdGlvbjoiKTsKKyAgICBpZiAobV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uKQor
ICAgICAgICBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24tPnNlcnZlcigpLnJlbW92ZUNvbm5lY3Rp
b24obV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uLT53ZWJQcm9jZXNzSWRlbnRpZmllcigpKTsKK30K
Kwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKQoreworICAgIENPTk5FQ1RJT05f
UkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAic2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbklzTm9Mb25nZXJOZWVkZWQ6Iik7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6
U2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCB7IHdlYlByb2Nlc3NJ
ZGVudGlmaWVyKCkgfSwgMCk7CisKKyAgICBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9u
ID0gbnVsbHB0cjsKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbiogTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKQoreworICAg
IGlmICghbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uKQorICAgICAgICBlc3RhYmxpc2hTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCk7CisgICAgcmV0dXJuIG1fc2hhcmVkV29ya2VyQ29ubmVj
dGlvbi5nZXQoKTsKK30KICAgICAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiB2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBhYjk2NjU3ZDBkZjQuLmQwYWE0ZWY3NDUyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtOTIsNiArOTIsOCBAQCBjbGFzcyBOZXR3b3JrU29j
a2V0U3RyZWFtOwogY2xhc3MgU2VydmljZVdvcmtlckZldGNoVGFzazsKIGNsYXNzIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbjsKIGNsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKK2Ns
YXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb247CitjbGFzcyBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOwogCiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsK
IHN0cnVjdCBEYXRhS2V5OwpAQCAtMTg1LDYgKzE4Nyw5IEBAIHB1YmxpYzoKICAgICBXZWJTV1Nl
cnZlckNvbm5lY3Rpb24qIHN3Q29ubmVjdGlvbigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrPiBjcmVhdGVGZXRjaFRhc2soTmV0d29ya1Jlc291cmNlTG9hZGVy
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKKyAgICB2b2lkIHNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7CisK
KyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKiBzaGFyZWRXb3JrZXJDb25uZWN0
aW9uKCk7CiAKICAgICBOZXR3b3JrU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KCkgeyBy
ZXR1cm4gbV9zY2hlbWVSZWdpc3RyeS5nZXQoKTsgfQogCkBAIC0yNTMsNiArMjU4LDkgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGNyZWF0ZVNvY2tldENoYW5uZWwoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgV2ViQ29yZTo6V2ViU29ja2V0SWRl
bnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJik7CiAgICAgdm9pZCB1cGRhdGVRdW90YUJhc2VkT25TcGFjZVVzYWdlRm9yVGVzdGluZyhj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKIAorICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbigpOworICAgIHZvaWQgdW5yZWdpc3RlclNoYXJlZFdvcmtl
ckNvbm5lY3Rpb24oKTsKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVz
dGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigpOwogICAgIHZvaWQgZXN0YWJsaXNoU1dDb250ZXh0
Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CkBAIC0yNjAsNiArMjY4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVucmVnaXN0
ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgogCisgICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQg
Y2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpOworCiAgICAgdm9pZCBjcmVhdGVS
VENQcm92aWRlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2lmIEVOQUJMRShXRUJf
UlRDKQogICAgIHZvaWQgY29ubmVjdFRvUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UoV2ViQ29y
ZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgV2ViQ29yZTo6UlRDRGF0YUNoYW5u
ZWxJZGVudGlmaWVyIGhhbmRsZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25h
bDxib29sPik+JiYpOwpAQCAtNDA0LDYgKzQxNSw4IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxX
ZWJTV1NlcnZlckNvbm5lY3Rpb24+IG1fc3dDb25uZWN0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+IG1fc3dDb250ZXh0Q29ubmVjdGlvbjsK
ICNlbmRpZgorICAgIFdlYWtQdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4gbV9z
aGFyZWRXb3JrZXJDb25uZWN0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0
aW9uOwogCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgYm9vbCBtX2lzUmVnaXN0ZXJlZFRvUlRD
RGF0YUNoYW5uZWxQcm94eSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgppbmRleCAyNDI4MzUwNTBiMjQuLmI5N2NhMzQ3OWI0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC04OCw2ICs4OCw5IEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBDbG9zZVNXQ29udGV4dENvbm5lY3Rpb24oKQogI2VuZGlmCiAKKyAgICBFc3RhYmxpc2hT
aGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikgLT4g
KCkgQXN5bmMKKyAgICBDbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKCkKKwogICAg
IENyZWF0ZVJUQ1Byb3ZpZGVyKCkgLT4gKCkgQXN5bmMKICNpZiBFTkFCTEUoV0VCX1JUQykKICAg
ICBDb25uZWN0VG9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZShzdHJ1Y3QgV2ViQ29yZTo6UlRD
RGF0YUNoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgc3RydWN0IFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsSWRlbnRpZmllciBoYW5kbGVyKSAtPiAoc3RkOjpvcHRpb25hbDxib29sPiByZXN1bHQpIEFz
eW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3Bw
CmluZGV4IGUyYjI0ZDgzMjJiNi4uZDc2MTYyODUwY2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5
LmgiCiAjaW5jbHVkZSAiV2ViU1dPcmlnaW5TdG9yZS5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdv
cmtlclNlcnZlci5oIgogI2luY2x1ZGUgIldlYlNvY2tldFRhc2suaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0Nvb2tpZUphci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CkBA
IC02NTMsNiArNjU0LDEzIEBAIGJvb2wgTmV0d29ya1Nlc3Npb246Omhhc1NlcnZpY2VXb3JrZXJE
YXRhYmFzZVBhdGgoKSBjb25zdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
CitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVTaGFyZWRXb3Jr
ZXJTZXJ2ZXIoKQoreworICAgIGlmICghbV9zaGFyZWRXb3JrZXJTZXJ2ZXIpCisgICAgICAgIG1f
c2hhcmVkV29ya2VyU2VydmVyID0gbWFrZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI+KCp0
aGlzKTsKKyAgICByZXR1cm4gKm1fc2hhcmVkV29ya2VyU2VydmVyOworfQorCiBXZWJJREJTZXJ2
ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVXZWJJREJTZXJ2ZXIoKQogewogICAgIGlmICghbV93
ZWJJREJTZXJ2ZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb24uaAppbmRleCAxOTMwN2NmNDBiZTMuLjNmOWQ2Yzk1NTBhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtNzksNiArNzksNyBAQCBj
bGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOwogY2xhc3MgV2ViSURCU2VydmVyOwogY2xhc3Mg
V2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzOwogY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyOwogY2xhc3MgV2ViU29ja2V0VGFz
azsKIGNsYXNzIFdlYlNXT3JpZ2luU3RvcmU7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247
CkBAIC0yMTAsNiArMjExLDkgQEAgcHVibGljOgogICAgIHZvaWQgYWRkU2VydmljZVdvcmtlclNl
c3Npb24oYm9vbCBwcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFN0cmluZyYmIHNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIGNvbnN0IFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYpOwogI2VuZGlmCiAKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIqIHNoYXJlZFdvcmtl
clNlcnZlcigpIHsgcmV0dXJuIG1fc2hhcmVkV29ya2VyU2VydmVyLmdldCgpOyB9CisgICAgV2Vi
U2hhcmVkV29ya2VyU2VydmVyJiBlbnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKTsKKwogICAgIFdl
YklEQlNlcnZlciogd2ViSURCU2VydmVyKCkgeyByZXR1cm4gbV93ZWJJREJTZXJ2ZXIuZ2V0KCk7
IH0KICAgICBXZWJJREJTZXJ2ZXImIGVuc3VyZVdlYklEQlNlcnZlcigpOwogICAgIHZvaWQgY2xv
c2VJREJTZXJ2ZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTMxOCw2ICszMjIs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySW5mbz4gbV9z
ZXJ2aWNlV29ya2VySW5mbzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1dTZXJ2ZXI+
IG1fc3dTZXJ2ZXI7CiAjZW5kaWYKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2Vy
U2VydmVyPiBtX3NoYXJlZFdvcmtlclNlcnZlcjsKIAogICAgIFN0cmluZyBtX2lkYkRhdGFiYXNl
UGF0aDsKICAgICBSZWZQdHI8V2ViSURCU2VydmVyPiBtX3dlYklEQlNlcnZlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdv
cmtlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJT
aGFyZWRXb3JrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
ODAwOTEzOTUyODBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmNwcApAQCAtMCwwICsxLDY3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtl
ci5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
Kworc3RhdGljIEhhc2hNYXA8V2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwgV2ViU2hh
cmVkV29ya2VyKj4mIGFsbFdvcmtlcnMoKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8V2ViQ29yZTo6U2hhcmVkV29y
a2VySWRlbnRpZmllciwgV2ViU2hhcmVkV29ya2VyKj4+IGFsbFdvcmtlcnM7CisgICAgcmV0dXJu
IGFsbFdvcmtlcnM7Cit9CisKK1dlYlNoYXJlZFdvcmtlcjo6V2ViU2hhcmVkV29ya2VyKGNvbnN0
IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYga2V5LCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRp
b25zJiB3b3JrZXJPcHRpb25zKQorICAgIDogbV9pZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdv
cmtlcklkZW50aWZpZXI6OmdlbmVyYXRlKCkpCisgICAgLCBtX2tleShrZXkpCisgICAgLCBtX3dv
cmtlck9wdGlvbnMod29ya2VyT3B0aW9ucykKK3sKKyAgICBBU1NFUlQoIWFsbFdvcmtlcnMoKS5j
b250YWlucyhtX2lkZW50aWZpZXIpKTsKKyAgICBhbGxXb3JrZXJzKCkuYWRkKG1faWRlbnRpZmll
ciwgdGhpcyk7Cit9CisKK1dlYlNoYXJlZFdvcmtlcjo6fldlYlNoYXJlZFdvcmtlcigpCit7Cisg
ICAgQVNTRVJUKGFsbFdvcmtlcnMoKS5nZXQobV9pZGVudGlmaWVyKSA9PSB0aGlzKTsKKyAgICBh
bGxXb3JrZXJzKCkucmVtb3ZlKG1faWRlbnRpZmllcik7Cit9CisKK1dlYlNoYXJlZFdvcmtlciog
V2ViU2hhcmVkV29ya2VyOjpmcm9tSWRlbnRpZmllcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIGFsbFdvcmtlcnMoKS5nZXQoaWRlbnRp
Zmllcik7Cit9CisKK1dlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIFdlYlNoYXJlZFdvcmtlcjo6
cmVnaXN0cmFibGVEb21haW4oKSBjb25zdAoreworICAgIHJldHVybiBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiB7IHVybCgpIH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVk
V29ya2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJT
aGFyZWRXb3JrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjM0
YjdhNGE4NDNjZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VySWRl
bnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyS2V5Lmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9UcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Xb3JrZXJG
ZXRjaFJlc3VsdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyT3B0aW9ucy5oPgorI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlZ2lzdHJh
YmxlRG9tYWluOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViU2hhcmVkV29y
a2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlNoYXJlZFdvcmtlcj4geworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFdlYlNoYXJlZFdvcmtlcihjb25zdCBX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJik7
CisgICAgfldlYlNoYXJlZFdvcmtlcigpOworCisgICAgc3RhdGljIFdlYlNoYXJlZFdvcmtlciog
ZnJvbUlkZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllcik7CisKKyAgICBX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2lkZW50aWZpZXI7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIGtl
eSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5OyB9CisgICAgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0
aW9ucyYgd29ya2VyT3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fd29ya2VyT3B0aW9uczsgfQor
ICAgIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4g
bV9rZXkub3JpZ2luOyB9CisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX2tl
eS51cmw7IH0KKyAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFp
bigpIGNvbnN0OworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydD4mIHNoYXJlZFdvcmtlck9iamVj
dHMoKSB7IHJldHVybiBtX3NoYXJlZFdvcmtlck9iamVjdHM7IH0KKworICAgIGJvb2wgaXNSdW5u
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1J1bm5pbmc7IH0KKyAgICB2b2lkIG1hcmtBc1J1bm5p
bmcoKSB7IG1faXNSdW5uaW5nID0gdHJ1ZTsgfQorCisgICAgY29uc3QgV2ViQ29yZTo6V29ya2Vy
RmV0Y2hSZXN1bHQmIGZldGNoUmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9mZXRjaFJlc3VsdDsg
fQorICAgIHZvaWQgc2V0RmV0Y2hSZXN1bHQoV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJiBm
ZXRjaFJlc3VsdCkgeyBtX2ZldGNoUmVzdWx0ID0gV1RGTW92ZShmZXRjaFJlc3VsdCk7IH0KKyAg
ICBib29sIGRpZEZpbmlzaEZldGNoaW5nKCkgY29uc3QgeyByZXR1cm4gISFtX2ZldGNoUmVzdWx0
LnNjcmlwdDsgfQorCitwcml2YXRlOgorICAgIFdlYlNoYXJlZFdvcmtlcihXZWJTaGFyZWRXb3Jr
ZXImJikgPSBkZWxldGU7CisgICAgV2ViU2hhcmVkV29ya2VyJiBvcGVyYXRvcj0oV2ViU2hhcmVk
V29ya2VyJiYpID0gZGVsZXRlOworICAgIFdlYlNoYXJlZFdvcmtlcihjb25zdCBXZWJTaGFyZWRX
b3JrZXImKSA9IGRlbGV0ZTsKKyAgICBXZWJTaGFyZWRXb3JrZXImIG9wZXJhdG9yPShjb25zdCBX
ZWJTaGFyZWRXb3JrZXImKSA9IGRlbGV0ZTsKKworICAgIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSBtX2tl
eTsKKyAgICBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIG1fd29ya2VyT3B0aW9uczsKKyAgICBIYXNo
TWFwPFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5z
ZmVycmVkTWVzc2FnZVBvcnQ+IG1fc2hhcmVkV29ya2VyT2JqZWN0czsKKyAgICBXZWJDb3JlOjpX
b3JrZXJGZXRjaFJlc3VsdCBtX2ZldGNoUmVzdWx0OworICAgIGJvb2wgbV9pc1J1bm5pbmcgeyBm
YWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVk
V29ya2VyU2VydmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LmZjNjgzMDIxNGQ0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAKQEAgLTAsMCArMSwy
NjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hh
cmVkV29ya2VyU2VydmVyLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlci5o
IgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRl
ICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29y
a2VyS2V5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Xb3JrZXJGZXRjaFJlc3VsdC5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvV29ya2VyT3B0aW9ucy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2Vi
U2hhcmVkV29ya2VyU2VydmVyOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIoTmV0d29ya1Nlc3Npb24m
IHNlc3Npb24pCisgICAgOiBtX3Nlc3Npb24oc2Vzc2lvbikKK3sKK30KKworV2ViU2hhcmVkV29y
a2VyU2VydmVyOjp+V2ViU2hhcmVkV29ya2VyU2VydmVyKCkgPSBkZWZhdWx0OworCitQQUw6OlNl
c3Npb25JRCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNlc3Npb25JRCgpCit7CisgICAgcmV0dXJu
IG1fc2Vzc2lvbi5zZXNzaW9uSUQoKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6
OnJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiYgc2hhcmVkV29y
a2VyS2V5LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0
LCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucykKK3sKKyAgICBhdXRvJiBz
aGFyZWRXb3JrZXIgPSBtX3NoYXJlZFdvcmtlcnMuZW5zdXJlKHNoYXJlZFdvcmtlcktleSwgWyZd
IHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViU2hhcmVkV29ya2VyPihzaGFyZWRXb3Jr
ZXJLZXksIHdvcmtlck9wdGlvbnMpOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBSRUxF
QVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFy
ZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwcml2YXRlfXMsIHNoYXJl
ZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgc2hhcmVkV29ya2VyLT5pZGVudGlmaWVyKCkudG9V
SW50NjQoKSk7CisKKyAgICBpZiAoc2hhcmVkV29ya2VyLT53b3JrZXJPcHRpb25zKCkudHlwZSAh
PSB3b3JrZXJPcHRpb25zLnR5cGUgfHwgc2hhcmVkV29ya2VyLT53b3JrZXJPcHRpb25zKCkuY3Jl
ZGVudGlhbHMgIT0gd29ya2VyT3B0aW9ucy5jcmVkZW50aWFscykgeworICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RT
aGFyZWRXb3JrZXI6IEEgd29ya2VyIGFscmVhZHkgZXhpc3RzIHdpdGggdGhpcyBuYW1lIGJ1dCBo
YXMgZGlmZmVyZW50IHR5cGUgLyBjcmVkZW50aWFscyIpOworICAgICAgICBpZiAoYXV0byogc2Vy
dmVyQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSkpCisgICAgICAgICAgICBzZXJ2ZXJDb25uZWN0aW9u
LT5ub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIsIHsgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNoYXJlZFdvcmtlci0+c2hhcmVkV29y
a2VyT2JqZWN0cygpLmFkZChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBwb3J0KTsKKwor
ICAgIGlmIChzaGFyZWRXb3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMoKS5zaXplKCkgPiAxKSB7
CisgICAgICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZl
cjo6cmVxdWVzdFNoYXJlZFdvcmtlcjogQSBzaGFyZWQgd29ya2VyIHdpdGggdGhpcyBVUkwgYWxy
ZWFkeSBleGlzdHMgKG5vdyBzaGFyZWQgYnkgJXUgc2hhcmVkIHdvcmtlciBvYmplY3RzKSIsIHNo
YXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cygpLnNpemUoKSk7CisgICAgICAgIGlmIChz
aGFyZWRXb3JrZXItPmRpZEZpbmlzaEZldGNoaW5nKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRv
KiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgICAgICBzZXJ2ZXJD
b25uZWN0aW9uLT5ub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIsIHsgfSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNoYXJlZFdv
cmtlci0+aXNSdW5uaW5nKCkpIHsKKyAgICAgICAgICAgIGF1dG8qIGNvbnRleHRDb25uZWN0aW9u
ID0gbV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtlci0+cmVnaXN0cmFibGVEb21h
aW4oKSk7CisgICAgICAgICAgICBBU1NFUlQoY29udGV4dENvbm5lY3Rpb24pOworICAgICAgICAg
ICAgaWYgKGNvbnRleHRDb25uZWN0aW9uKQorICAgICAgICAgICAgICAgIGNvbnRleHRDb25uZWN0
aW9uLT5wb3N0Q29ubmVjdEV2ZW50KCpzaGFyZWRXb3JrZXIsIHBvcnQpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUKCFzaGFyZWRXb3JrZXItPmlzUnVubmlu
ZygpKTsKKworICAgIGF1dG8qIHNlcnZlckNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgIEFT
U0VSVChzZXJ2ZXJDb25uZWN0aW9uKTsKKworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwg
IldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtlcjogRmV0Y2hpbmcgc2hh
cmVkIHdvcmtlciBzY3JpcHQgaW4gY2xpZW50Iik7CisgICAgc2VydmVyQ29ubmVjdGlvbi0+ZmV0
Y2hTY3JpcHRJbkNsaWVudCgqc2hhcmVkV29ya2VyLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgc2hhcmVkV29ya2VyID0gV2Vha1B0
ciB7ICpzaGFyZWRXb3JrZXIgfV0oV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJiBmZXRjaFJl
c3VsdCkgeworICAgICAgICBpZiAod2Vha1RoaXMgJiYgc2hhcmVkV29ya2VyKQorICAgICAgICAg
ICAgd2Vha1RoaXMtPmRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29ya2VyU2NyaXB0KCpzaGFyZWRX
b3JrZXIsIFdURk1vdmUoZmV0Y2hSZXN1bHQpKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29ya2VyU2NyaXB0KFdlYlNo
YXJlZFdvcmtlciYgc2hhcmVkV29ya2VyLCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmIGZl
dGNoUmVzdWx0KQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdv
cmtlclNlcnZlcjo6ZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRXb3JrZXJTY3JpcHQgc2hhcmVkV29y
a2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgc2hhcmVkV29ya2VyPSVwLCBzdWNjZXNzPSVkIiwg
c2hhcmVkV29ya2VyLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAmc2hhcmVkV29ya2VyLCBmZXRj
aFJlc3VsdC5lcnJvci5pc051bGwoKSk7CisKKyAgICBmb3IgKGF1dG8gc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllciA6IHNoYXJlZFdvcmtlci5zaGFyZWRXb3JrZXJPYmplY3RzKCkua2V5cygp
KSB7CisgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5n
ZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkKKyAg
ICAgICAgICAgIHNlcnZlckNvbm5lY3Rpb24tPm5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENvbXBs
ZXRpb24oc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgZmV0Y2hSZXN1bHQuZXJyb3IpOwor
ICAgIH0KKworICAgIGlmICghZmV0Y2hSZXN1bHQuZXJyb3IuaXNOdWxsKCkpIHsKKyAgICAgICAg
bV9zaGFyZWRXb3JrZXJzLnJlbW92ZShzaGFyZWRXb3JrZXIua2V5KCkpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgc2hhcmVkV29ya2VyLnNldEZldGNoUmVzdWx0KFdURk1vdmUoZmV0
Y2hSZXN1bHQpKTsKKworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBzaGFyZWRXb3JrZXIu
cmVnaXN0cmFibGVEb21haW4oKTsKKyAgICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IGNvbnRl
eHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pOworICAg
IGlmICghY29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAgICAgY3JlYXRlQ29udGV4dENvbm5lY3Rp
b24ocmVnaXN0cmFibGVEb21haW4pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29u
dGV4dENvbm5lY3Rpb24tPmxhdW5jaFNoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXIpOworfQorCiti
b29sIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6bmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lz
dHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJs
ZURvbWFpbikgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8mIHNoYXJlZFdvcmtlciA6IG1fc2hhcmVk
V29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAocmVnaXN0cmFibGVEb21haW4ubWF0Y2hl
cyhzaGFyZWRXb3JrZXItPnVybCgpKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVh
dGVDb250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVn
aXN0cmFibGVEb21haW4pCit7CisgICAgQVNTRVJUKCFtX2NvbnRleHRDb25uZWN0aW9ucy5jb250
YWlucyhyZWdpc3RyYWJsZURvbWFpbikpOworICAgIGlmIChtX3BlbmRpbmdDb250ZXh0Q29ubmVj
dGlvbkRvbWFpbnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICByZXR1cm47
CisKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6
OmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uIHdpbGwgY3JlYXRlIGEgY29ubmVjdGlvbiIpOworCisg
ICAgbV9wZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5zLmFkZChyZWdpc3RyYWJsZURvbWFp
bik7CisgICAgbV9zZXNzaW9uLm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpF
c3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyBy
ZWdpc3RyYWJsZURvbWFpbiwgbV9zZXNzaW9uLnNlc3Npb25JRCgpIH0sIFt0aGlzLCB3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZWdpc3RyYWJsZURvbWFpbl0geworICAgICAgICBpZiAo
IXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFJFTEVBU0VfTE9HKFNo
YXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rp
b24gc2hvdWxkIG5vdyBoYXZlIGNyZWF0ZWQgYSBjb25uZWN0aW9uIik7CisKKyAgICAgICAgQVNT
RVJUKG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWlucy5jb250YWlucyhyZWdpc3RyYWJs
ZURvbWFpbikpOworICAgICAgICBtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnMucmVt
b3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKKworICAgICAgICBpZiAobV9jb250ZXh0Q29ubmVjdGlv
bnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGlmIChuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVn
aXN0cmFibGVEb21haW4pKQorICAgICAgICAgICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24ocmVn
aXN0cmFibGVEb21haW4pOworICAgIH0sIDApOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNl
cnZlcjo6YWRkQ29udGV4dENvbm5lY3Rpb24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24pCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVk
V29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjphZGRDb250ZXh0Q29ubmVjdGlvbiglcCkg
d2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCAmY29udGV4dENvbm5lY3Rpb24sIGNvbnRl
eHRDb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBB
U1NFUlQoIW1fY29udGV4dENvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbnRleHRDb25uZWN0aW9uLnJl
Z2lzdHJhYmxlRG9tYWluKCkpKTsKKworICAgIG1fY29udGV4dENvbm5lY3Rpb25zLmFkZChjb250
ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpLCAmY29udGV4dENvbm5lY3Rpb24pOwor
CisgICAgY29udGV4dENvbm5lY3Rpb25DcmVhdGVkKGNvbnRleHRDb25uZWN0aW9uKTsKK30KKwor
dm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKFdlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uKQor
eworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6
cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oJXApIHdlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2
NCwgJmNvbnRleHRDb25uZWN0aW9uLCBjb250ZXh0Q29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRp
ZmllcigpLnRvVUludDY0KCkpOworCisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IGNvbnRl
eHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCk7CisKKyAgICBBU1NFUlQobV9jb250ZXh0
Q29ubmVjdGlvbnMuZ2V0KHJlZ2lzdHJhYmxlRG9tYWluKSA9PSAmY29udGV4dENvbm5lY3Rpb24p
OworCisgICAgbV9jb250ZXh0Q29ubmVjdGlvbnMucmVtb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsK
KworICAgIGlmIChuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVn
aXN0cmFibGVEb21haW4pKQorICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3Ry
YWJsZURvbWFpbik7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjb250ZXh0Q29u
bmVjdGlvbkNyZWF0ZWQoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYg
Y29udGV4dENvbm5lY3Rpb24pCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2Vi
U2hhcmVkV29ya2VyU2VydmVyOjpjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoJXApIHdlYlByb2Nl
c3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgJmNvbnRleHRDb25uZWN0aW9uLCBjb250ZXh0Q29ubmVj
dGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgIGF1dG8mIHJlZ2lz
dHJhYmxlRG9tYWluID0gY29udGV4dENvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKTsKKyAg
ICBmb3IgKGF1dG8mIHNoYXJlZFdvcmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgewor
ICAgICAgICBpZiAoc2hhcmVkV29ya2VyLT5kaWRGaW5pc2hGZXRjaGluZygpICYmIHJlZ2lzdHJh
YmxlRG9tYWluLm1hdGNoZXMoc2hhcmVkV29ya2VyLT51cmwoKSkpCisgICAgICAgICAgICBjb250
ZXh0Q29ubmVjdGlvbi5sYXVuY2hTaGFyZWRXb3JrZXIoKnNoYXJlZFdvcmtlcik7CisgICAgfQor
fQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hhcmVkV29ya2VyT2JqZWN0SXNHb2lu
Z0F3YXkoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBzaGFyZWRXb3JrZXJLZXksIFdl
YkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllcikKK3sKKyAgICBhdXRvKiBzaGFyZWRXb3JrZXIgPSBtX3NoYXJlZFdvcmtlcnMuZ2V0
KHNoYXJlZFdvcmtlcktleSk7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hh
cmVkV29ya2VyU2VydmVyOjpzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheTogc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zLCBzaGFyZWRXb3JrZXI9JXAiLCBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgc2hhcmVkV29y
a2VyKTsKKyAgICBpZiAoIXNoYXJlZFdvcmtlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgc2hh
cmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzKCkucmVtb3ZlKHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIpOworICAgIGlmICghc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3Rz
KCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzaHV0RG93blNoYXJlZFdvcmtl
cihzaGFyZWRXb3JrZXJLZXkpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2h1
dERvd25TaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBrZXkpCit7
CisgICAgYXV0byBzaGFyZWRXb3JrZXIgPSBtX3NoYXJlZFdvcmtlcnMudGFrZShrZXkpOworICAg
IFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2h1dERv
d25TaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHNoYXJl
ZFdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlciA/IHNoYXJlZFdvcmtlci0+aWRlbnRpZmllcigpLnRv
VUludDY0KCkgOiAwLCBzaGFyZWRXb3JrZXIuZ2V0KCkpOworICAgIGlmICghc2hhcmVkV29ya2Vy
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IGNvbnRl
eHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oc2hhcmVkV29ya2VyLT5yZWdpc3RyYWJs
ZURvbWFpbigpKTsKKyAgICBpZiAoIWNvbnRleHRDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47
CisKKyAgICBjb250ZXh0Q29ubmVjdGlvbi0+dGVybWluYXRlU2hhcmVkV29ya2VyKCpzaGFyZWRX
b3JrZXIpOworCisgICAgaWYgKCFuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVE
b21haW4oc2hhcmVkV29ya2VyLT5yZWdpc3RyYWJsZURvbWFpbigpKSkKKyAgICAgICAgY29udGV4
dENvbm5lY3Rpb24tPmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7Cit9CisKK3ZvaWQgV2Vi
U2hhcmVkV29ya2VyU2VydmVyOjphZGRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCit7CisgICAgYXV0byBwcm9j
ZXNzSWRlbnRpZmllciA9IGNvbm5lY3Rpb24tPndlYlByb2Nlc3NJZGVudGlmaWVyKCk7CisgICAg
UkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjphZGRDb25u
ZWN0aW9uKCVwKTogcHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCBjb25uZWN0aW9uLmdldCgp
LCBwcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBBU1NFUlQoIW1fY29ubmVjdGlv
bnMuY29udGFpbnMocHJvY2Vzc0lkZW50aWZpZXIpKTsKKyAgICBtX2Nvbm5lY3Rpb25zLmFkZChw
cm9jZXNzSWRlbnRpZmllciwgV1RGTW92ZShjb25uZWN0aW9uKSk7Cit9CisKK3ZvaWQgV2ViU2hh
cmVkV29ya2VyU2VydmVyOjpyZW1vdmVDb25uZWN0aW9uKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyIHByb2Nlc3NJZGVudGlmaWVyKQoreworICAgIGF1dG8gY29ubmVjdGlvbiA9IG1fY29ubmVj
dGlvbnMudGFrZShwcm9jZXNzSWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29y
a2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1vdmVDb25uZWN0aW9uKCVwKTogcHJvY2Vz
c0lkZW50aWZpZXI9JSIgUFJJdTY0LCBjb25uZWN0aW9uLmdldCgpLCBwcm9jZXNzSWRlbnRpZmll
ci50b1VJbnQ2NCgpKTsKKyAgICBBU1NFUlQoY29ubmVjdGlvbik7CisKKyAgICBWZWN0b3I8c3Rk
OjpwYWlyPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllcj4+IHNoYXJlZFdvcmtlck9iamVjdHNHb2luZ0F3YXk7CisgICAgZm9yIChh
dXRvJiBzaGFyZWRXb3JrZXIgOiBtX3NoYXJlZFdvcmtlcnMudmFsdWVzKCkpIHsKKyAgICAgICAg
Zm9yIChhdXRvJiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIDogc2hhcmVkV29ya2VyLT5z
aGFyZWRXb3JrZXJPYmplY3RzKCkua2V5cygpKSB7CisgICAgICAgICAgICBpZiAoc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IHByb2Nlc3NJZGVudGlm
aWVyKQorICAgICAgICAgICAgICAgIHNoYXJlZFdvcmtlck9iamVjdHNHb2luZ0F3YXkuYXBwZW5k
KHN0ZDo6bWFrZV9wYWlyKHNoYXJlZFdvcmtlci0+a2V5KCksIHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBmb3IgKGF1dG8mIFtzaGFyZWRXb3Jr
ZXJLZXksIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXJdIDogc2hhcmVkV29ya2VyT2JqZWN0
c0dvaW5nQXdheSkKKyAgICAgICAgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoc2hhcmVk
V29ya2VyS2V5LCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKK30KKworV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogV2ViU2hhcmVkV29ya2VyU2VydmVyOjpj
b250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiBkb21haW4pIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGV4dENvbm5l
Y3Rpb25zLmdldChkb21haW4pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cG9z
dEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIg
c2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sK
KyAgICBhdXRvKiBzaGFyZWRXb3JrZXIgPSBXZWJTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVy
KHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNoYXJlZFdv
cmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0
OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCAiLCBzaGFyZWRXb3JrZXI9JXAiLCBz
aGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCksIHNoYXJlZFdvcmtlcik7CisgICAgaWYg
KCFzaGFyZWRXb3JrZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyIDogc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3Rz
KCkua2V5cygpKSB7CisgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25u
ZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmll
cigpKSkKKyAgICAgICAgICAgIHNlcnZlckNvbm5lY3Rpb24tPnBvc3RFeGNlcHRpb25Ub1dvcmtl
ck9iamVjdChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFy
ZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQyZDgwMzgwOTM2ZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdv
cmtlclNlcnZlci5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9TaGFyZWRXb3JrZXJJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UcmFuc2ZlcnJlZE1lc3Nh
Z2VQb3J0Lmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgUmVnaXN0cmFibGVEb21haW47CisKK3N0cnVjdCBDbGllbnRPcmlnaW47CitzdHJ1
Y3QgU2hhcmVkV29ya2VyS2V5Oworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0Oworc3RydWN0IFdv
cmtlck9wdGlvbnM7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrU2Vz
c2lvbjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlcjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb247CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8V2ViU2hhcmVkV29ya2VyU2VydmVyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViU2hhcmVkV29ya2VyU2VydmVyKE5ldHdvcmtTZXNz
aW9uJik7CisgICAgfldlYlNoYXJlZFdvcmtlclNlcnZlcigpOworCisgICAgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKCk7CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbiogY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OworCisgICAgdm9pZCByZXF1ZXN0U2hhcmVkV29y
a2VyKFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdlYkNvcmU6
Oldvcmtlck9wdGlvbnMmJik7CisgICAgdm9pZCBzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdh
eShjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyKTsKKyAgICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMKTsKKworICAgIHZvaWQgYWRkQ29udGV4dENvbm5lY3Rpb24oV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOworICAgIHZvaWQgcmVtb3ZlQ29udGV4dENvbm5lY3Rp
b24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOworICAgIHZvaWQg
YWRkQ29ubmVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbj4mJik7CisgICAgdm9pZCByZW1vdmVDb25uZWN0aW9uKFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKGNv
bnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7CisgICAgYm9vbCBuZWVkc0NvbnRleHRD
b25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mKSBjb25zdDsKKyAgICB2b2lkIGNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CisgICAgdm9pZCBkaWRGaW5pc2hG
ZXRjaGluZ1NoYXJlZFdvcmtlclNjcmlwdChXZWJTaGFyZWRXb3JrZXImLCBXZWJDb3JlOjpXb3Jr
ZXJGZXRjaFJlc3VsdCYmKTsKKyAgICB2b2lkIHNodXREb3duU2hhcmVkV29ya2VyKGNvbnN0IFdl
YkNvcmU6OlNoYXJlZFdvcmtlcktleSYpOworCisgICAgTmV0d29ya1Nlc3Npb24mIG1fc2Vzc2lv
bjsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9w
dHI8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4+IG1fY29ubmVjdGlvbnM7CisgICAg
SGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbio+IG1fY29udGV4dENvbm5lY3Rpb25zOworICAgIEhhc2hTZXQ8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9t
YWluczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSwgc3RkOjp1bmlxdWVf
cHRyPFdlYlNoYXJlZFdvcmtlcj4+IG1fc2hhcmVkV29ya2VyczsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFy
ZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjA2NDFj
MTg5YzJmMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0wLDAg
KzEsMTIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5j
bHVkZSAiV2ViU2hhcmVkV29ya2VyLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Xb3JrZXJGZXRjaFJlc3Vs
dC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworI2RlZmluZSBDT05ORUNUSU9OX01FU1NBR0Vf
Q0hFQ0soYXNzZXJ0aW9uKSBDT05ORUNUSU9OX01FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTihhc3Nl
cnRpb24sICh2b2lkKTApCisjZGVmaW5lIENPTk5FQ1RJT05fTUVTU0FHRV9DSEVDS19DT01QTEVU
SU9OKGFzc2VydGlvbiwgY29tcGxldGlvbikgZG8geyBcCisgICAgQVNTRVJUKGFzc2VydGlvbik7
IFwKKyAgICBpZiAoVU5MSUtFTFkoIShhc3NlcnRpb24pKSkgeyBcCisgICAgICAgIG1fbmV0d29y
a1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OlRlcm1pbmF0ZVdlYlByb2Nlc3MobV93ZWJQcm9jZXNzSWRlbnRpZmll
ciksIDApOyBcCisgICAgICAgIHsgY29tcGxldGlvbjsgfSBcCisgICAgICAgIHJldHVybjsgXAor
ICAgIH0gXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZt
dCwgLi4uKSBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRp
Zmllcj0lIiBQUkl1NjQgIl0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6IiBmbXQs
IHRoaXMsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykK
KyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9M
T0dfRVJST1IoU2hhcmVkV29ya2VyLCAiJXAgLSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJ
dTY0ICJdIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OiIgZm10LCB0aGlzLCBtX3dl
YlByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCksICMjX19WQV9BUkdTX18pCisKK1dlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24o
TmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNl
cnZlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllcikKKyAgICA6IG1fY29udGVudENvbm5lY3Rpb24oY29u
bmVjdGlvbikKKyAgICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCisgICAgLCBt
X3NlcnZlcihzZXJ2ZXIpCisgICAgLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKHdlYlByb2Nlc3NJ
ZGVudGlmaWVyKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coIldlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb246Iik7Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b246On5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9O
X1JFTEVBU0VfTE9HKCJ+V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjoiKTsKK30KKwor
SVBDOjpDb25uZWN0aW9uKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjptZXNzYWdl
U2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGVudENvbm5lY3Rp
b24ucHRyKCk7Cit9CisKK1BBTDo6U2Vzc2lvbklEIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb246OnNlc3Npb25JRCgpCit7CisgICAgcmV0dXJuIHNlcnZlcigpLnNlc3Npb25JRCgpOwor
fQorCitOZXR3b3JrU2Vzc2lvbiogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2Vz
c2lvbigpCit7CisgICAgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCgpKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpy
ZXF1ZXN0U2hhcmVkV29ya2VyKFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYmIHNoYXJlZFdvcmtl
cktleSwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgcG9ydCwg
V2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMpCit7CisgICAgQ09OTkVDVElP
Tl9NRVNTQUdFX0NIRUNLKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50
aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICBDT05ORUNUSU9OX01FU1NB
R0VfQ0hFQ0soc2hhcmVkV29ya2VyS2V5Lm5hbWUgPT0gd29ya2VyT3B0aW9ucy5uYW1lKTsKKyAg
ICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJyZXF1ZXN0U2hhcmVkV29ya2VyOiBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSB0
aGlzLT5zZXNzaW9uKCkpCisgICAgICAgIHNlc3Npb24tPmVuc3VyZVNoYXJlZFdvcmtlclNlcnZl
cigpLnJlcXVlc3RTaGFyZWRXb3JrZXIoV1RGTW92ZShzaGFyZWRXb3JrZXJLZXkpLCBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLCBXVEZNb3ZlKHBvcnQpLCBXVEZNb3ZlKHdvcmtlck9wdGlv
bnMpKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpzaGFyZWRX
b3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmJiBzaGFyZWRX
b3JrZXJLZXksIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllcikKK3sKKyAgICBDT05ORUNUSU9OX01FU1NBR0VfQ0hFQ0soc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fd2ViUHJv
Y2Vzc0lkZW50aWZpZXIpOworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coInNoYXJlZFdvcmtl
ck9iamVjdElzR29pbmdBd2F5OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGlj
fXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSB0aGlzLT5zZXNzaW9uKCkpCisgICAgICAgIHNl
c3Npb24tPmVuc3VyZVNoYXJlZFdvcmtlclNlcnZlcigpLnNoYXJlZFdvcmtlck9iamVjdElzR29p
bmdBd2F5KHNoYXJlZFdvcmtlcktleSwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6ZmV0Y2hTY3JpcHRJbkNs
aWVudChjb25zdCBXZWJTaGFyZWRXb3JrZXImIHNoYXJlZFdvcmtlciwgV2ViQ29yZTo6U2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coImZldGNoU2NyaXB0
SW5DbGllbnQ6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBz
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b246OkZldGNoU2NyaXB0SW5DbGllbnQgeyBzaGFyZWRXb3JrZXIudXJsKCksIHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIsIHNoYXJlZFdvcmtlci53b3JrZXJPcHRpb25zKCkgfSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb246Om5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24oV2ViQ29yZTo6U2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBDT05ORUNUSU9OX1JF
TEVBU0VfTE9HKCJub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uOiBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMsIHN1Y2Nlc3M9JWQiLCBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuaXNOdWxsKCkp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Ok5v
dGlmeVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24geyBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLCBlcnJvciB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IoInBv
c3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdDogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0l
e3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb246OlBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdCB7IHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VV
UkwgfSk7Cit9CisKKyN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HCisjdW5kZWYgQ09OTkVD
VElPTl9SRUxFQVNFX0xPR19FUlJPUgorI3VuZGVmIENPTk5FQ1RJT05fTUVTU0FHRV9DSEVDSwor
I3VuZGVmIENPTk5FQ1RJT05fTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OCisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFy
ZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMWJmNzc1ZDBh
OGY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFy
ZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNzkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nl
c3NJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3Vs
dDsKK3N0cnVjdCBXb3JrZXJPcHRpb25zOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgTmV0d29ya1Byb2Nlc3M7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXI7CitjbGFzcyBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uIDogcHVibGlj
IElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiwgV2ViU2hhcmVkV29ya2VyU2VydmVyJiwgSVBD
OjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOworICAgIH5XZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCk7CisKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIm
IHNlcnZlcigpIHsgcmV0dXJuIG1fc2VydmVyOyB9CisgICAgY29uc3QgV2ViU2hhcmVkV29ya2Vy
U2VydmVyJiBzZXJ2ZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZlcjsgfQorCisgICAgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKCk7CisgICAgTmV0d29ya1Nlc3Npb24qIHNlc3Npb24oKTsKKyAg
ICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7IH0KKworICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAgICB2
b2lkIGZldGNoU2NyaXB0SW5DbGllbnQoY29uc3QgV2ViU2hhcmVkV29ya2VyJiwgV2ViQ29yZTo6
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmKT4mJik7CisgICAgdm9pZCBub3RpZnlXb3JrZXJPYmpl
Y3RPZkxvYWRDb21wbGV0aW9uKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIHBvc3RFeGNlcHRpb25U
b1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKworcHJpdmF0ZToKKyAgICAvLyBJUEM6Ok1lc3Nh
Z2VTZW5kZXIuCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigp
IGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQorCisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAgIHZv
aWQgcmVxdWVzdFNoYXJlZFdvcmtlcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmJiwgV2ViQ29y
ZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNz
YWdlUG9ydCYmLCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYpOworICAgIHZvaWQgc2hhcmVkV29y
a2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiYsIFdlYkNvcmU6
OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworCisgICAgUmVmPElQQzo6Q29ubmVjdGlv
bj4gbV9jb250ZW50Q29ubmVjdGlvbjsKKyAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29y
a1Byb2Nlc3M7CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBtX3NlcnZlcjsKKyAgICBXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLmQ3MmE4N2I3ZWNmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNiBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgeworICAgIFJlcXVlc3RTaGFyZWRXb3JrZXIoc3Ry
dWN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSBzaGFyZWRXb3JrZXJLZXksIFdlYkNvcmU6OlNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwg
V2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBwb3J0LCBzdHJ1Y3QgV2ViQ29yZTo6V29y
a2VyT3B0aW9ucyB3b3JrZXJPcHRpb25zKQorICAgIFNoYXJlZFdvcmtlck9iamVjdElzR29pbmdB
d2F5KHN0cnVjdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkgc2hhcmVkV29ya2VyS2V5LCBXZWJD
b3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIpCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJl
ZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uZmY4NmJjN2Q2YTJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyLmgiCisjaW5j
bHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKKyNkZWZpbmUgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxF
QVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1
NjQgIl0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6IiBmbXQsIHRo
aXMsIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKKwor
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYg
Y29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxl
RG9tYWluLCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlcikKKyAgICA6IG1fY29ubmVjdGlv
bihjb25uZWN0aW9uKQorICAgICwgbV9zZXJ2ZXIoc2VydmVyKQorICAgICwgbV9yZWdpc3RyYWJs
ZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVM
RUFTRV9MT0coIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Iik7Cisg
ICAgc2VydmVyLmFkZENvbnRleHRDb25uZWN0aW9uKCp0aGlzKTsKK30KKworV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24oKQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygi
fldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Iik7CisgICAgaWYgKG1f
c2VydmVyICYmIG1fc2VydmVyLT5jb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWlu
KHJlZ2lzdHJhYmxlRG9tYWluKCkpID09IHRoaXMpCisgICAgICAgIG1fc2VydmVyLT5yZW1vdmVD
b250ZXh0Q29ubmVjdGlvbigqdGhpcyk7Cit9CisKK1dlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OndlYlByb2Nlc3NJZGVu
dGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLndlYlByb2Nlc3NJZGVu
dGlmaWVyKCk7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiYgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6aXBjQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
Y29ubmVjdGlvbi5jb25uZWN0aW9uKCk7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiogV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24o
KSBjb25zdAoreworICAgIHJldHVybiAmaXBjQ29ubmVjdGlvbigpOworfQorCit1aW50NjRfdCBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyRGVz
dGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbklzTm9Mb25nZXJOZWVk
ZWQoKQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiY29ubmVjdGlvbklz
Tm9Mb25nZXJOZWVkZWQ6Iik7CisgICAgbV9jb25uZWN0aW9uLnNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2Jq
ZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJ
T05fUkVMRUFTRV9MT0coInBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdDogc2hhcmVkV29ya2Vy
SWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7
CisgICAgaWYgKG1fc2VydmVyKQorICAgICAgICBtX3NlcnZlci0+cG9zdEV4Y2VwdGlvblRvV29y
a2VyT2JqZWN0KHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGVycm9yTWVzc2FnZSwgbGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OmxhdW5jaFNoYXJlZFdvcmtlcihXZWJTaGFyZWRXb3Jr
ZXImIHNoYXJlZFdvcmtlcikKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0co
ImxhdW5jaFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNo
YXJlZFdvcmtlci5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgc2hhcmVkV29ya2VyLm1h
cmtBc1J1bm5pbmcoKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OkxhdW5jaFNoYXJlZFdvcmtlciB7IHNoYXJlZFdvcmtlci5vcmln
aW4oKSwgc2hhcmVkV29ya2VyLmlkZW50aWZpZXIoKSwgc2hhcmVkV29ya2VyLnVybCgpLCBzaGFy
ZWRXb3JrZXIud29ya2VyT3B0aW9ucygpLCBzaGFyZWRXb3JrZXIuZmV0Y2hSZXN1bHQoKSB9KTsK
KyAgICBmb3IgKGF1dG8mIHBvcnQgOiBzaGFyZWRXb3JrZXIuc2hhcmVkV29ya2VyT2JqZWN0cygp
LnZhbHVlcygpKQorICAgICAgICBwb3N0Q29ubmVjdEV2ZW50KHNoYXJlZFdvcmtlciwgcG9ydCk7
Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cG9z
dENvbm5lY3RFdmVudChjb25zdCBXZWJTaGFyZWRXb3JrZXImIHNoYXJlZFdvcmtlciwgY29uc3Qg
V2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYgcG9ydCkKK3sKKyAgICBDT05URVhUX0NP
Tk5FQ1RJT05fUkVMRUFTRV9MT0coInBvc3RDb25uZWN0RXZlbnQ6IHNoYXJlZFdvcmtlcklkZW50
aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXIuaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6UG9zdENvbm5lY3RFdmVudCB7IHNoYXJlZFdvcmtlci5pZGVudGlmaWVyKCksIHBvcnQsIHNo
YXJlZFdvcmtlci5vcmlnaW4oKS5jbGllbnRPcmlnaW4udG9TdHJpbmcoKSB9KTsKK30KKwordm9p
ZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp0ZXJtaW5hdGVTaGFy
ZWRXb3JrZXIoY29uc3QgV2ViU2hhcmVkV29ya2VyJiBzaGFyZWRXb3JrZXIpCit7CisgICAgQ09O
VEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJ0ZXJtaW5hdGVTaGFyZWRXb3JrZXI6IHNoYXJl
ZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXIuaWRlbnRpZmllcigpLnRv
VUludDY0KCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6VGVybWluYXRlU2hhcmVkV29ya2VyIHsgc2hhcmVkV29ya2VyLmlkZW50
aWZpZXIoKSB9KTsKK30KKworI3VuZGVmIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRwor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLmQ2YWVhMzE5YWEzZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJN
ZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RyYW5zZmVycmVkTWVz
c2FnZVBvcnQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVnaXN0cmFibGVEb21h
aW47CitjbGFzcyBTY3JpcHRCdWZmZXI7CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworc3RydWN0IFdv
cmtlckZldGNoUmVzdWx0Oworc3RydWN0IFdvcmtlck9wdGlvbnM7Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKK2NsYXNzIFdl
YlNoYXJlZFdvcmtlcjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlcjsKKworY2xhc3MgV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBJUEM6
Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2ViU2hhcmVkV29ya2VyU2VydmVyJik7CisgICAg
fldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKKworICAgIFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3Q7CisgICAg
Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29u
c3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQorICAgIElQQzo6Q29ubmVjdGlvbiYg
aXBjQ29ubmVjdGlvbigpIGNvbnN0OworCisgICAgdm9pZCBsYXVuY2hTaGFyZWRXb3JrZXIoV2Vi
U2hhcmVkV29ya2VyJik7CisgICAgdm9pZCBwb3N0Q29ubmVjdEV2ZW50KGNvbnN0IFdlYlNoYXJl
ZFdvcmtlciYsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmKTsKKyAgICB2
b2lkIHRlcm1pbmF0ZVNoYXJlZFdvcmtlcihjb25zdCBXZWJTaGFyZWRXb3JrZXImKTsKKworICAg
IHZvaWQgY29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKTsKKworICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKK3ByaXZh
dGU6CisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2Vy
T2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwpOworCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyLgorICAgIElQQzo6Q29u
bmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50
NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOworCisgICAgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fY29ubmVjdGlvbjsKKyAgICBXZWFrUHRyPFdl
YlNoYXJlZFdvcmtlclNlcnZlcj4gbV9zZXJ2ZXI7CisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi5hZTQ3YzEyMmNiYWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjUgQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKKyAgICBQb3N0RXhj
ZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFy
ZWRXb3JrZXJJZGVudGlmaWVyLCBTdHJpbmcgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgU3RyaW5nIHNvdXJjZVVSTCkKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dn
aW5nLmgKaW5kZXggMWM0MmQwNDBjMWE5Li5kZTMyZjgxNzE3MTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
TG9nZ2luZy5oCkBAIC05Nyw2ICs5Nyw3IEBAIGV4dGVybiAiQyIgewogICAgIE0oU2VydmljZVdv
cmtlcikgXAogICAgIE0oU2Vzc2lvblN0YXRlKSBcCiAgICAgTShTaGFyZWREaXNwbGF5TGlzdHMp
IFwKKyAgICBNKFNoYXJlZFdvcmtlcikgXAogICAgIE0oU3RvcmFnZSkgXAogICAgIE0oU3RvcmFn
ZUFQSSkgXAogICAgIE0oVGV4dElucHV0KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQppbmRleCA3ZWJmYTUxNmI1MDMuLjRjOGNhZDA0NjQ3MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0zMDMsMTAgKzMwMywxMyBAQCBkZWYg
dHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViQ29y
ZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpT
aGFyZWRTdHJpbmdIYXNoJywKKyAgICAgICAgJ1dlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZp
ZXInLAorICAgICAgICAnV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcicsCiAg
ICAgICAgICdXZWJDb3JlOjpTbGVlcERpc2FibGVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJD
b3JlOjpTb3VyY2VCdWZmZXJBcHBlbmRNb2RlJywKICAgICAgICAgJ1dlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6
U3RvcmFnZVR5cGUnLAorICAgICAgICAnV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCcs
CiAgICAgICAgICdXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0SWRlbnRpZmllcicsCiAgICAgICAg
ICdXZWJDb3JlOjpXZWJMb2NrSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpXZWJTb2Nr
ZXRJZGVudGlmaWVyJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDU3ZWYzYjE0ZWFmMi4uZTMxMzkxMDU5Y2Iz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKQEAgLTE0MSw2ICsxNDEsMTEgQEAgTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV09yaWdpblN0b3JlLmNwcCBAbm8tdW5pZnkKIE5ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBAbm8tdW5pZnkKIE5ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBA
bm8tdW5pZnkKIAorTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5j
cHAKK05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3Bw
CitOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbi5jcHAKK05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVT
eXN0ZW1TdG9yYWdlTWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3Rl
bVN0b3JhZ2VIYW5kbGUuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9y
YWdlSGFuZGxlUmVnaXN0cnkuY3BwCkBAIC03ODMsOCArNzg4LDkgQEAgV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXT3JpZ2luVGFibGUuY3BwCiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5jcHAKIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
UHJvdmlkZXIuY3BwCi1XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIu
Y3BwCitXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24uY3BwCitXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3Bw
CiAKIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAog
CkBAIC04ODcsMyArODkzLDcgQEAgUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5TWVzc2FnZVJlY2VpdmVy
LmNwcAogU2VydmljZVdvcmtlckRvd25sb2FkVGFza01lc3NhZ2VSZWNlaXZlci5jcHAKIFdlYkJy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeU1lc3NhZ2VSZWNlaXZlci5jcHAKIFdlYkxvY2tSZWdpc3Ry
eVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKK1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25N
ZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uTWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggYTY3ODM2N2E3NzVhLi4z
MzAyMGJkNWMzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTI5LDcgKzUyOSw3IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6dGVybWluYXRlV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciB3ZWJQcm9jCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVVucmVz
cG9uc2l2ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIg
cHJvY2Vzc0lkZW50aWZpZXIpCiB7CiAgICAgaWYgKFJlZlB0ciBwcm9jZXNzID0gV2ViUHJvY2Vz
c1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihwcm9jZXNzSWRlbnRpZmllcikpIHsKLSAgICAg
ICAgcHJvY2Vzcy0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgICAgIHByb2Nlc3MtPmRp
c2FibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7
CiAgICAgICAgIHByb2Nlc3MtPnJlcXVlc3RUZXJtaW5hdGlvbihQcm9jZXNzVGVybWluYXRpb25S
ZWFzb246OkV4Y2VlZGVkQ1BVTGltaXQpOwogICAgIH0KIH0KQEAgLTE0MTUsMTYgKzE0MTUsMjEg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkoV2ViVXNlckNvbnRlbnQKIH0KICNlbmRpZgogCit2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUocmVnaXN0cmFibGVE
b21haW4pLCBzZXNzaW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJs
aXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWdpc3Ry
YWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKCp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJh
YmxlRG9tYWluKSwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBzZXNzaW9uSUQsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2Vy
dmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXVEZNb3ZlKHJlZ2lz
dHJhYmxlRG9tYWluKSwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBzZXNzaW9uSUQsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpzZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIGlmIChhdXRvKiBwcm9jZXNzID0g
V2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihpZGVudGlmaWVyKSkKLSAgICAg
ICAgcHJvY2Vzcy0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgICAgIHByb2Nlc3MtPmRp
c2FibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7
CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xp
ZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmll
ciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlm
aWVyKQpAQCAtMTQ2MCw2ICsxNDY1LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZW5k
U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJCiB9CiAj
ZW5kaWYKIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzaGFyZWRXb3JrZXJDb250ZXh0Q29u
bmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCit7CisgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NG
b3JJZGVudGlmaWVyKGlkZW50aWZpZXIpKQorICAgICAgICBwcm9jZXNzLT5kaXNhYmxlV29ya2Vy
cyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlcik7Cit9CisKIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCBj
dXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVk
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHF1b3RhKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSRUxFQVNFX0xPRyhTdG9yYWdlLCAiJXAgLSBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlIiwgdGhpcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
CmluZGV4IGE0ZTM2NDVlYmFhZS4uNjg0MWEzNGZlMDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMzM0LDYg
KzMzNCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5k
UHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vz
c0lkZW50aWZpZXIpOwogICAgIHZvaWQgZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNz
aW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRp
Zmllcik7CiAjZW5kaWYKKyAgICB2b2lkIHNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9M
b25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOworICAgIHZvaWQgZXN0YWJs
aXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogCiAgICAgdm9pZCB0ZXJtaW5hdGVXZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDEyZDA2
Y2ViZDYyYS4uMTU3NTdlZDlhMjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBA
IC02MCw2ICs2MCw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIFN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikKICAg
ICBFbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQogI2VuZGlmCisgICAgRXN0
YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpIC0+ICgpIEFzeW5jCisgICAgU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25O
b0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQogCiAg
ICAgU2V0V2ViUHJvY2Vzc0hhc1VwbG9hZHMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJv
Y2Vzc0lELCBib29sIGhhc1VwbG9hZCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKaW5kZXggYmI0MWMxMTFhMzM1Li5lNDFmZDg3ODAwOTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzY5NCwxMSArMzY5NCw5IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KQogICAgICAgICBy
ZXR1cm47CiAgICAgbV91c2VyQWdlbnQgPSBXVEZNb3ZlKHVzZXJBZ2VudCk7CiAKLSNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiAgICAgLy8gV2UgdXBkYXRlIHRoZSBzZXJ2aWNlIHdvcmtlciB0
aGVyZSBhdCB0aGUgbW9tZW50IHRvIGJlIHN1cmUgd2UgdXNlIHZhbHVlcyB1c2VkIGJ5IGFjdHVh
bCB3ZWIgcGFnZXMuCiAgICAgLy8gRklYTUU6IFJlZmFjdG9yIHRoaXMgd2hlbiB3ZSBoYXZlIGEg
YmV0dGVyIFVzZXItQWdlbnQgc3RvcnkuCi0gICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCkudXBk
YXRlU2VydmljZVdvcmtlclVzZXJBZ2VudChtX3VzZXJBZ2VudCk7Ci0jZW5kaWYKKyAgICBwcm9j
ZXNzKCkucHJvY2Vzc1Bvb2woKS51cGRhdGVXb3JrZXJVc2VyQWdlbnQobV91c2VyQWdlbnQpOwog
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggYWZjMjNlZTUzZjEyLi40
YjE5YjBkMWQzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKQEAgLTUyOSw3ICs1MjksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRXZWJBdXRoblBy
b2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1BybwogYm9vbCBXZWJQ
cm9jZXNzUG9vbDo6c191c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzID0gZmFsc2U7CiAK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxp
c2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQ
cm9jZXNzUHJveHkmIHByb3h5LCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWlu
LCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNl
V29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQcm9jZXNzUG9v
bDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyhSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZp
ZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8qIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJz
aXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChzZXNzaW9uSUQpOwog
ICAgIGlmICghd2Vic2l0ZURhdGFTdG9yZSkKQEAgLTU0Niw3ICs1NDYsNyBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKE5ldAogICAgIGlmIChzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIpIHsKICAg
ICAgICAgLy8gVGhpcyBpcyBhIHNlcnZpY2Ugd29ya2VyIGZvciBhIHNlcnZpY2Ugd29ya2VyIHBh
Z2Ugc28gd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgdXNlIHVzZSB0aGUgcGFnZSdzIFdlYlByb2Nl
c3MgZm9yIHRoZSBzZXJ2aWNlIHdvcmtlci4KICAgICAgICAgaWYgKChzZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihzZXJ2aWNl
V29ya2VyUGFnZUlkZW50aWZpZXItPnByb2Nlc3NJZGVudGlmaWVyKCkpKSkgewotICAgICAgICAg
ICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlU2VydmljZVdvcmtlcnMocHJvY2Vz
c1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2aWNlV29ya2Vycygp
KTsKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVdvcmtlcnMo
V2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBwcm9jZXNzUG9vbC0+
dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CiAgICAgICAgICAg
ICBpZiAoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKSB7CiAg
ICAgICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nl
c3MoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NDYWNoZTo6U2hvdWxkU2h1
dERvd25Qcm9jZXNzOjpObyk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFzZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpOwpAQCAtNTY0LDcgKzU2NCw3IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MoTmV0CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBwcm9jZXNzLnB0cigpOwotICAgICAg
ICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlU2VydmljZVdvcmtlcnMocHJv
Y2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2aWNlV29ya2Vy
cygpKTsKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVdvcmtl
cnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBwcm9jZXNzUG9v
bC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CiAKICAgICAg
ICAgICAgIGlmIChzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkp
IHsKICAgICAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hlKCkucmVtb3Zl
UHJvY2Vzcygqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0NhY2hlOjpTaG91
bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKE5ldAogICAgIH0KIAogICAgIGlmICghc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSkg
ewotICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRl
Rm9yU2VydmljZVdvcmtlcnMoKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiAgeyByZWdp
c3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIGF1dG8gbmV3UHJv
Y2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdlYlByb2Nlc3NQ
cm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJs
ZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CiAgICAg
ICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBuZXdQcm9jZXNzUHJveHkucHRyKCk7CiAK
ICAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElDKFNlcnZpY2VXb3JrZXIs
ICJlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
IGNyZWF0aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nlcz0lcCwgUElEPSVk
KSIsIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkt
PnByb2Nlc3NJZGVudGlmaWVyKCkpOwpAQCAtNTg2LDIwICs1ODYsNzAgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcyhOZXQKICAgICAgICAgcHJvY2Vzc1Bvb2wtPm1fcHJvY2Vzc2VzLmFwcGVuZChXVEZN
b3ZlKG5ld1Byb2Nlc3NQcm94eSkpOwogICAgIH0KIAotICAgIEFTU0VSVCghc2VydmljZVdvcmtl
clByb2Nlc3NlcygpLmNvbnRhaW5zKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KSk7Ci0gICAg
c2VydmljZVdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSk7
CisgICAgd29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KTsK
IAotICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZpY2VXb3JrZXJD
b250ZXh0KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQ
b29sLT5tX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1f
ZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJsZURvbWFp
biwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7Ci0gICAgaWYgKCFwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyVXNlckFnZW50LmlzTnVs
bCgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRTZXJ2aWNlV29ya2Vy
VXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQpOworICAgIHNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KHBy
b2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJl
ZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZl
cmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRl
bnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmICghcHJvY2Vzc1Bv
b2wtPm1fd29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQorICAgICAgICBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5LT5zZXRXb3JrZXJVc2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFn
ZW50KTsKIH0KKyNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVGcm9tU2Vydmlj
ZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCit2b2lkIFdlYlByb2Nl
c3NQb29sOjpyZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vz
cykKIHsKLSAgICBBU1NFUlQoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmNvbnRhaW5zKHByb2Nl
c3MpKTsKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkucmVtb3ZlKHByb2Nlc3MpOworICAg
IEFTU0VSVCh3b3JrZXJQcm9jZXNzZXMoKS5jb250YWlucyhwcm9jZXNzKSk7CisgICAgd29ya2Vy
UHJvY2Vzc2VzKCkucmVtb3ZlKHByb2Nlc3MpOworfQorCit2b2lkIFdlYlByb2Nlc3NQb29sOjpl
c3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4
aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Npb25JRCk7CisgICAgaWYgKCF3ZWJzaXRl
RGF0YVN0b3JlKQorICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOworICAgIGlmICghcHJvY2Vzc1Bvb2xzKCkuc2l6ZSgp
KQorICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPFdlYlByb2Nlc3NQb29sPj4gc2hh
cmVkV29ya2VyUHJvY2Vzc1Bvb2woV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6OlByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCkuZ2V0KCkpKTsKKworICAgIC8vIEFyYml0cmFyaWx5
IGNob29zZSB0aGUgZmlyc3QgcHJvY2VzcyBwb29sIHRvIGhvc3QgdGhlIHNoYXJlZCB3b3JrZXIg
cHJvY2Vzcy4KKyAgICBhdXRvKiBwcm9jZXNzUG9vbCA9IHByb2Nlc3NQb29scygpWzBdOworICAg
IEFTU0VSVChwcm9jZXNzUG9vbCk7CisKKyAgICBXZWJQcm9jZXNzUHJveHkqIHNoYXJlZFdvcmtl
clByb2Nlc3NQcm94eSB7IG51bGxwdHIgfTsKKworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHBy
b2Nlc3NQb29sLT5tX3Byb2Nlc3NlcykgeworICAgICAgICBpZiAocHJvY2Vzcy5wdHIoKSA9PSBw
cm9jZXNzUG9vbC0+bV9wcmV3YXJtZWRQcm9jZXNzLmdldCgpIHx8IHByb2Nlc3MtPmlzRHVtbXlQ
cm9jZXNzUHJveHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoJnByb2Nl
c3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIGlmICghcHJvY2Vzcy0+aXNNYXRjaGluZ1JlZ2lzdHJhYmxlRG9t
YWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
IHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSA9IHByb2Nlc3MucHRyKCk7CisgICAgICAgIHNoYXJl
ZFdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6Oldvcmtl
clR5cGU6OlNoYXJlZFdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXJGb3JXb3JrZXJzKCkpOworCisgICAgICAgIGlmIChzaGFyZWRXb3JrZXJQcm9jZXNz
UHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSkgeworICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPndl
YlByb2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nlc3MoKnNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSwg
V2ViUHJvY2Vzc0NhY2hlOjpTaG91bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKKyAgICAgICAgICAg
IEFTU0VSVCghc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpOwor
ICAgICAgICB9CisKKyAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElDKFNo
YXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyByZXVzaW5nIGFuIGV4aXN0aW5nIHdlYiBwcm9jZXNzIChwcm9jZXNzPSVwLCBQ
SUQ9JWQpIiwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LCBzaGFyZWRXb3JrZXJQcm9jZXNzUHJv
eHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBp
ZiAoIXNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSkgeworICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQ
cm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yV29ya2VycyhXZWJQcm9jZXNzUHJveHk6
OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFp
biAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIHNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eSA9IG5ld1Byb2Nlc3NQcm94eS5wdHIoKTsKKworICAgICAg
ICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoU2hhcmVkV29ya2VyLCAiZXN0YWJs
aXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIGNyZWF0aW5n
IGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nlc3M9JXAsIFBJRD0lZCkiLCBzaGFy
ZWRXb3JrZXJQcm9jZXNzUHJveHksIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSk7CisKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmluaXRpYWxpemVOZXdXZWJQcm9j
ZXNzKG5ld1Byb2Nlc3NQcm94eSwgd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIHByb2Nlc3NQ
b29sLT5tX3Byb2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdQcm9jZXNzUHJveHkpKTsKKyAgICB9
CisKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSk7
CisKKyAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNoYXJlZFdvcmtlckNv
bnRleHQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNzUG9vbC0+bV93
b3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVsdFBhZ2VHcm91
cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJsZURvbWFpbiwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFnZW50
LmlzTnVsbCgpKQorICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPnNldFdvcmtlclVz
ZXJBZ2VudChwcm9jZXNzUG9vbC0+bV93b3JrZXJVc2VyQWdlbnQpOwogfQotI2VuZGlmCiAKIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKQog
ewpAQCAtMTAwMywxMCArMTA1Myw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQ
cm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIAogICAgIG1fYmFja0ZvcndhcmRDYWNo
ZS0+cmVtb3ZlRW50cmllc0ZvclByb2Nlc3MocHJvY2Vzcyk7CiAKLSNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi0gICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKLSAg
ICAgICAgcmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7Ci0jZW5kaWYK
KyAgICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdXb3JrZXJzKCkpCisgICAgICAgIHJlbW92ZUZyb21X
b3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7CiAKICAgICBzdGF0aWNfY2FzdDxXZWJDb250ZXh0U3Vw
cGxlbWVudCo+KHN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpLT5wcm9j
ZXNzRGlkQ2xvc2UoJnByb2Nlc3MpOwogCkBAIC0xMDY3LDEyICsxMTE1LDEyIEBAIFJlZjxXZWJQ
cm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4o
V2Vic2l0ZURhdGFTdG9yCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1Vc2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyIFdlYlByb2Nlc3NQb29sOjp1c2VyQ29udGVudENvbnRy
b2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKQorVXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllciBXZWJQcm9jZXNzUG9vbDo6dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
ckZvcldvcmtlcnMoKQogewotICAgIGlmICghbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2
aWNlV29ya2VyKQotICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclNlcnZpY2VXb3Jr
ZXIgPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKCk7CisgICAgaWYgKCFt
X3VzZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtlcnMpCisgICAgICAgIG1fdXNlckNvbnRlbnRD
b250cm9sbGVyRm9yV29ya2VycyA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpjcmVh
dGUoKTsKIAotICAgIHJldHVybiBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclNlcnZpY2VXb3Jr
ZXItPmlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JX
b3JrZXJzLT5pZGVudGlmaWVyKCk7CiB9CiAjZW5kaWYKIApAQCAtMTExOSwxNSArMTE2NywxMyBA
QCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xp
ZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogCiAgICAgYXV0byBwYWdlID0gcHJvY2Vzcy0+Y3Jl
YXRlV2ViUGFnZShwYWdlQ2xpZW50LCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAKLSNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJQcmVmZXJl
bmNlcykgewotICAgICAgICBtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA9IHBhZ2UtPnByZWZl
cmVuY2VzU3RvcmUoKTsKLSAgICAgICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6
IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSkKLSAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzLnVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKCptX3NlcnZpY2VXb3JrZXJQ
cmVmZXJlbmNlcyk7CisgICAgaWYgKCFtX3dvcmtlclByZWZlcmVuY2VzKSB7CisgICAgICAgIG1f
d29ya2VyUHJlZmVyZW5jZXMgPSBwYWdlLT5wcmVmZXJlbmNlc1N0b3JlKCk7CisgICAgICAgIGZv
ciAoYXV0byYgd29ya2VyUHJvY2VzcyA6IHdvcmtlclByb2Nlc3NlcygpKQorICAgICAgICAgICAg
d29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKCptX3dvcmtlclByZWZl
cmVuY2VzKTsKICAgICB9CiAgICAgaWYgKHVzZXJDb250ZW50Q29udHJvbGxlcikKLSAgICAgICAg
bV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyID0gdXNlckNvbnRlbnRDb250
cm9sbGVyOwotI2VuZGlmCisgICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2Vy
cyA9IHVzZXJDb250ZW50Q29udHJvbGxlcjsKIAogICAgIGJvb2wgZW5hYmxlUHJvY2Vzc1N3YXBP
bkNyb3NzU2l0ZU5hdmlnYXRpb24gPSBwYWdlLT5wcmVmZXJlbmNlcygpLnByb2Nlc3NTd2FwT25D
cm9zc1NpdGVOYXZpZ2F0aW9uRW5hYmxlZCgpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBA
IC0xMTUwLDE2ICsxMTk2LDE0IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjpj
cmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAgICAgcmV0dXJu
IHBhZ2U7CiB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3NQ
b29sOjp1cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50
KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmlu
ZyYgdXNlckFnZW50KQogewotICAgIGlmIChtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQgPT0gdXNl
ckFnZW50KQorICAgIGlmIChtX3dvcmtlclVzZXJBZ2VudCA9PSB1c2VyQWdlbnQpCiAgICAgICAg
IHJldHVybjsKLSAgICBtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQgPSB1c2VyQWdlbnQ7Ci0gICAg
Zm9yIChhdXRvJiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMo
KSkKLSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3Muc2V0U2VydmljZVdvcmtlclVzZXJBZ2Vu
dChtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQpOworICAgIG1fd29ya2VyVXNlckFnZW50ID0gdXNl
ckFnZW50OworICAgIGZvciAoYXV0byYgd29ya2VyUHJvY2VzcyA6IHdvcmtlclByb2Nlc3Nlcygp
KQorICAgICAgICB3b3JrZXJQcm9jZXNzLnNldFdvcmtlclVzZXJBZ2VudChtX3dvcmtlclVzZXJB
Z2VudCk7CiB9Ci0jZW5kaWYKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUJlZ2luVXNpbmdX
ZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0
YVN0b3JlJiBkYXRhU3RvcmUpCiB7CkBAIC0xNTM4LDggKzE1ODIsMTMgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6dGVybWluYXRlU2VydmljZVdvcmtlcnMoKQogewogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07Ci0gICAgd2hpbGUgKHNl
cnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb21wdXRlU2l6ZSgpKQotICAgICAgICBzZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzKCkuYmVnaW4oKS0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgVmVj
dG9yPFJlZjxXZWJQcm9jZXNzUHJveHk+PiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOworICAgIHdv
cmtlclByb2Nlc3NlcygpLmZvckVhY2goWyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICAgICAgaWYg
KHByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKKyAgICAgICAgICAgIHNlcnZpY2VX
b3JrZXJQcm9jZXNzZXMuYXBwZW5kKHByb2Nlc3MpOworICAgIH0pOworICAgIGZvciAoYXV0byYg
c2VydmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKQorICAgICAgICBz
ZXJ2aWNlV29ya2VyUHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3Jr
ZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgogfQogCkBAIC0xNzY3LDEzICsxODE2LDEx
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcG9ydFdlYkNvbnRlbnRDUFVUaW1lKFNlY29uZHMg
Y3B1VGltZSwgdWludDY0X3QgYWN0aXZpdHlTCiAjZW5kaWYKIH0KIAotI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKLVdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIFdlYlByb2Nlc3NQb29s
OjpzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkKK1dlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4m
IFdlYlByb2Nlc3NQb29sOjp3b3JrZXJQcm9jZXNzZXMoKQogewogICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+PiBwcm9jZXNzZXM7CiAgICAgcmV0
dXJuIHByb2Nlc3NlczsKIH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVQ
cm9jZXNzQXNzZXJ0aW9ucygpCiB7CkBAIC0xNzg1LDIwICsxODMyLDI1IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkKICAgICBpZiAoYXV0byogZ3B1UHJv
Y2VzcyA9IEdQVVByb2Nlc3NQcm94eTo6c2luZ2xldG9uSWZDcmVhdGVkKCkpCiAgICAgICAgIGdw
dVByb2Nlc3MtPnVwZGF0ZVByb2Nlc3NBc3NlcnRpb24oKTsKICNlbmRpZgotI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKKwogICAgIC8vIENoZWNrIG9uIG5leHQgcnVuIGxvb3Agc2luY2UgdGhl
IHdlYiBwcm9jZXNzIHByb3h5IHRva2VucyBhcmUgcHJvYmFibHkgYmVpbmcgdXBkYXRlZC4KICAg
ICBjYWxsT25NYWluUnVuTG9vcChbXSB7Ci0gICAgICAgIGZvciAoYXV0byYgc2VydmljZVdvcmtl
clByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkpCi0gICAgICAgICAgICBzZXJ2aWNl
V29ya2VyUHJvY2Vzcy51cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOwotICAg
IH0pOworICAgICAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFtdKGF1dG8mIHdvcmtlclBy
b2Nlc3MpIHsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgICAgICAgICBpZiAod29y
a2VyUHJvY2Vzcy5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQorICAgICAgICAgICAgICAgIHdv
cmtlclByb2Nlc3MudXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXZWJQcm9jZXNzUHJveHk6
OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogI2VuZGlmCisgICAgICAgICAgICBpZiAod29y
a2VyUHJvY2Vzcy5pc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkpCisgICAgICAgICAgICAgICAgd29y
a2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdlYlByb2Nlc3NQcm94eTo6
V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIGJv
b2wgV2ViUHJvY2Vzc1Bvb2w6OmlzU2VydmljZVdvcmtlclBhZ2VJRChXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAg
Ly8gRklYTUU6IFRoaXMgaXMgaW5lZmZpY2llbnQuCi0gICAgcmV0dXJuIFdURjo6YW55T2Yoc2Vy
dmljZVdvcmtlclByb2Nlc3NlcygpLCBbcGFnZUlEXShhdXRvJiBwcm9jZXNzKSB7CisgICAgcmV0
dXJuIFdURjo6YW55T2Yod29ya2VyUHJvY2Vzc2VzKCksIFtwYWdlSURdKGF1dG8mIHByb2Nlc3Mp
IHsKICAgICAgICAgcmV0dXJuIHByb2Nlc3MuaGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShwYWdl
SUQpOwogICAgIH0pOwogI2VuZGlmCkBAIC0yMTI0LDE2ICsyMTc2LDI2IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnNldFVzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoYm9vbCB1c2VTZXBh
cmF0ZVNlcnZpY2VXCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCitzaXplX3QgV2Vi
UHJvY2Vzc1Bvb2w6OnNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25zdAoreworICAgIHVu
c2lnbmVkIGNvdW50ID0gMDsKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFsmXShhdXRv
JiBwcm9jZXNzKSB7CisgICAgICAgIGlmIChwcm9jZXNzLmlzUnVubmluZ1NlcnZpY2VXb3JrZXJz
KCkpCisgICAgICAgICAgICArK2NvdW50OworICAgIH0pOworICAgIHJldHVybiBjb3VudDsKK30K
KwogYm9vbCBXZWJQcm9jZXNzUG9vbDo6aGFzU2VydmljZVdvcmtlckZvcmVncm91bmRBY3Rpdml0
eUZvclRlc3RpbmcoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6OmFueU9mKHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2VzcykgeworICAgIHJldHVybiBXVEY6OmFueU9m
KHdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiBw
cm9jZXNzLmhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCk7CiAg
ICAgfSk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6Omhhc1NlcnZpY2VXb3JrZXJCYWNrZ3Jv
dW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjphbnlPZihz
ZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICByZXR1cm4g
V1RGOjphbnlPZih3b3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2VzcykgewogICAgICAg
ICByZXR1cm4gcHJvY2Vzcy5oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9yVGVz
dGluZygpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmgKaW5kZXggZWI2NmQ4OTQ5MGRmLi5lNzBiNmY0MjlmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMzc0LDE3ICszNzQsMjAgQEAgcHVibGljOgogICAg
IHZvaWQgbmV0d29ya1Byb2Nlc3NEaWRUZXJtaW5hdGUoTmV0d29ya1Byb2Nlc3NQcm94eSYsIE5l
dHdvcmtQcm9jZXNzUHJveHk6OlRlcm1pbmF0aW9uUmVhc29uKTsKIAogICAgIGJvb2wgaXNTZXJ2
aWNlV29ya2VyUGFnZUlEKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpIGNvbnN0OworICAgIHZvaWQg
cmVtb3ZlRnJvbVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmKTsKKwogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKLSAgICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmLCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIs
IFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQg
cmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5Jik7Ci0gICAg
c2l6ZV90IHNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25zdCB7IHJldHVybiBzZXJ2aWNl
V29ya2VyUHJvY2Vzc2VzKCkuY29tcHV0ZVNpemUoKTsgfQotICAgIHZvaWQgdXBkYXRlU2Vydmlj
ZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCk7Ci0gICAgVXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllciB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9y
U2VydmljZVdvcmtlcnMoKTsKKyAgICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50
aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgc2l6ZV90IHNlcnZpY2VXb3JrZXJQcm94aWVz
Q291bnQoKSBjb25zdDsKKyAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCk7CiAgICAgYm9vbCBoYXNTZXJ2
aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0OwogICAgIGJvb2wg
aGFzU2VydmljZVdvcmtlckJhY2tncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdDsKICNl
bmRpZgogICAgIHZvaWQgc2VydmljZVdvcmtlclByb2Nlc3NDcmFzaGVkKFdlYlByb2Nlc3NQcm94
eSYpOwogCisgICAgdm9pZCB1cGRhdGVXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2Vy
QWdlbnQpOworICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6
OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKwogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgpIGNvbnN0OwogI2Vu
ZGlmCkBAIC02MTgsMTMgKzYyMSwxMSBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDxQQUw6OlNl
c3Npb25JRCwgV2Vha1B0cjxXZWJQcm9jZXNzUHJveHk+PiBtX2R1bW15UHJvY2Vzc1Byb3hpZXM7
IC8vIExpZ2h0d2VpZ2h0IFdlYlByb2Nlc3NQcm94eSBvYmplY3RzIHdpdGhvdXQgYmFja2luZyBw
cm9jZXNzLgogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHN0YXRpYyBXZWFrSGFz
aFNldDxXZWJQcm9jZXNzUHJveHk+JiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCk7Ci0gICAgYm9v
bCBtX3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24geyBmYWxzZSB9Owot
ICAgIFN0cmluZyBtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQ7Ci0gICAgc3RkOjpvcHRpb25hbDxX
ZWJQcmVmZXJlbmNlc1N0b3JlPiBtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlczsKLSAgICBSZWZQ
dHI8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+IG1fdXNlckNvbnRlbnRDb250cm9sbGVy
Rm9yU2VydmljZVdvcmtlcjsKLSNlbmRpZgorICAgIHN0YXRpYyBXZWFrSGFzaFNldDxXZWJQcm9j
ZXNzUHJveHk+JiB3b3JrZXJQcm9jZXNzZXMoKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8V2ViUHJl
ZmVyZW5jZXNTdG9yZT4gbV93b3JrZXJQcmVmZXJlbmNlczsKKyAgICBSZWZQdHI8V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk+IG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2VyczsK
KyAgICBTdHJpbmcgbV93b3JrZXJVc2VyQWdlbnQ7CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAgICAgUmVmUHRyPEdQVVByb2Nlc3NQcm94eT4gbV9ncHVQcm9jZXNzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggMDU3ZDQ5OTI0MThhLi5iNzQ2
YTdkN2QyMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cApAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vi
c2l0ZURhdGFGZXRjaE9wdGlvbi5oIgpAQCAtMTgyLDExICsxODMsMTEgQEAgUmVmPFdlYlByb2Nl
c3NQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQ
b29sLCBXZWJzaXQKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLVJlZjxXZWJQcm9j
ZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMoV2ViUHJv
Y2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9t
YWluLCBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQorUmVmPFdlYlByb2Nlc3NQ
cm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdvcmtlclR5cGUgd29ya2Vy
VHlwZSwgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJl
Z2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQogewog
ICAgIGF1dG8gcHJveHkgPSBhZG9wdFJlZigqbmV3IFdlYlByb2Nlc3NQcm94eShwcm9jZXNzUG9v
bCwgJndlYnNpdGVEYXRhU3RvcmUsIElzUHJld2FybWVkOjpObywgQ3Jvc3NPcmlnaW5Nb2RlOjpT
aGFyZWQsIENhcHRpdmVQb3J0YWxNb2RlOjpEaXNhYmxlZCkpOwogICAgIHByb3h5LT5tX3JlZ2lz
dHJhYmxlRG9tYWluID0gV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgcHJveHktPmVu
YWJsZVNlcnZpY2VXb3JrZXJzKHByb2Nlc3NQb29sLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXJGb3JTZXJ2aWNlV29ya2VycygpKTsKKyAgICBwcm94eS0+ZW5hYmxlV29ya2Vycyh3b3Jr
ZXJUeXBlLCBwcm9jZXNzUG9vbC51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29y
a2VycygpKTsKICAgICBwcm94eS0+Y29ubmVjdCgpOwogICAgIHJldHVybiBwcm94eTsKIH0KQEAg
LTk5NSwxMCArOTk2LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3Bv
bnNpdmUoKQogICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBpc1Jlc3BvbnNpdmVDYWxsYmFja3Mp
CiAgICAgICAgIGNhbGxiYWNrKGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUpOwogCi0gICAgLy8gSWYg
dGhlIHdlYiBwcm9jZXNzIGJlY29tZXMgdW5yZXNwb25zaXZlIGFuZCBvbmx5IHJ1bnMgc2Vydmlj
ZSB3b3JrZXJzLCBraWxsIGl0IG91cnNlbHZlcyBzaW5jZSB0aGVyZSBhcmUgbm8gbmF0aXZlIGNs
aWVudHMgdG8gZG8gaXQuCi0gICAgaWYgKGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkgJiYgbV9w
YWdlTWFwLmlzRW1wdHkoKSkgewotICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0df
RVJST1IoUGVyZm9ybWFuY2VMb2dnaW5nLCAiZGlkQmVjb21lVW5yZXNwb25zaXZlOiBUZXJtaW5h
dGluZyBzZXJ2aWNlIHdvcmtlci1vbmx5IHdlYiBwcm9jZXNzIGJlY2F1c2UgaXQgaXMgdW5yZXNw
b25zaXZlIik7Ci0gICAgICAgIGRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgIC8vIElmIHRo
ZSB3ZWIgcHJvY2VzcyBiZWNvbWVzIHVucmVzcG9uc2l2ZSBhbmQgb25seSBydW5zIHNlcnZpY2Uv
c2hhcmVkIHdvcmtlcnMsIGtpbGwgaXQgb3Vyc2VsdmVzIHNpbmNlIHRoZXJlIGFyZSBubyBuYXRp
dmUgY2xpZW50cyB0byBkbyBpdC4KKyAgICBpZiAoaXNSdW5uaW5nV29ya2VycygpICYmIG1fcGFn
ZU1hcC5pc0VtcHR5KCkpIHsKKyAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HX0VS
Uk9SKFBlcmZvcm1hbmNlTG9nZ2luZywgImRpZEJlY29tZVVucmVzcG9uc2l2ZTogVGVybWluYXRp
bmcgd29ya2VyLW9ubHkgd2ViIHByb2Nlc3MgYmVjYXVzZSBpdCBpcyB1bnJlc3BvbnNpdmUiKTsK
KyAgICAgICAgZGlzYWJsZVdvcmtlcnMoeyBXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBXb3Jr
ZXJUeXBlOjpTaGFyZWRXb3JrZXIgfSk7CiAgICAgICAgIHRlcm1pbmF0ZSgpOwogICAgIH0KIH0K
QEAgLTE2OTQsOCArMTY5NSw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRTdGFydFByb3Zp
c2lvbmFsTG9hZEZvck1haW5GcmFtZShjb25zdCBVUkwmIHVybCkKICAgICBhdXRvIHJlZ2lzdHJh
YmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfTsKICAgICBpZiAo
bV9yZWdpc3RyYWJsZURvbWFpbiAmJiAqbV9yZWdpc3RyYWJsZURvbWFpbiAhPSByZWdpc3RyYWJs
ZURvbWFpbikgewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICAgICAgZGlzYWJsZVNl
cnZpY2VXb3JrZXJzKCk7CisgICAgICAgIGRpc2FibGVXb3JrZXJzKFdvcmtlclR5cGU6OlNlcnZp
Y2VXb3JrZXIpOwogI2VuZGlmCisKICAgICAgICAgLy8gTnVsbCBvdXQgcmVnaXN0cmFibGUgZG9t
YWluIHNpbmNlIHRoaXMgcHJvY2VzcyBoYXMgbm93IGJlZW4gdXNlZCBmb3Igc2V2ZXJhbCBkb21h
aW5zLgogICAgICAgICBtX3JlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4geyB9OwogICAgICAgICByZXR1cm47CkBAIC0xODcyLDU0ICsxODc0LDg1IEBAIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJiBzCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSwg
MCk7CiB9CisjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldFNlcnZpY2VXb3JrZXJV
c2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6
c2V0V29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQogewotICAgIEFTU0VS
VChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbik7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlNldFVzZXJBZ2VudCB7IHVzZXJBZ2VudCB9LCAwKTsK
KyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYgKG1fc2VydmljZVdvcmtlckluZm9y
bWF0aW9uKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6U2V0VXNlckFnZW50IHsgdXNlckFnZW50IH0sIDApOworI2VuZGlmCisgICAgaWYgKG1f
c2hhcmVkV29ya2VySW5mb3JtYXRpb24pCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U2V0VXNlckFnZW50IHsgdXNlckFnZW50
IH0sIDApOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlU2VydmljZVdvcmtlclBy
ZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCit2b2lkIFdl
YlByb2Nlc3NQcm94eTo6dXBkYXRlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVm
ZXJlbmNlc1N0b3JlJiBzdG9yZSkKIHsKLSAgICBBU1NFUlQobV9zZXJ2aWNlV29ya2VySW5mb3Jt
YXRpb24pOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpVcGRhdGVQcmVmZXJlbmNlc1N0b3JlIHsgc3RvcmUgfSwgMCk7CisjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQorICAgIGlmIChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKKyAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZVByZWZl
cmVuY2VzU3RvcmUgeyBzdG9yZSB9LCAwKTsKKyNlbmRpZgorICAgIGlmIChtX3NoYXJlZFdvcmtl
ckluZm9ybWF0aW9uKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZVByZWZlcmVuY2VzU3RvcmUgeyBzdG9yZSB9LCAw
KTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNz
QXNzZXJ0aW9uKCkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVXb3JrZXJQcm9jZXNzQXNz
ZXJ0aW9uKFdvcmtlclR5cGUgd29ya2VyVHlwZSkKIHsKLSAgICBXRUJQUk9DRVNTUFJPWFlfUkVM
RUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fz
c2VydGlvbjoiKTsKLSAgICBBU1NFUlQobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pOwotICAg
IGlmICghbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAgYXV0byYgd29ya2VySW5mb3Jt
YXRpb24gPSB3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/IG1fc2hhcmVk
V29ya2VySW5mb3JtYXRpb24gOiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsKKyAgICBBU1NF
UlQod29ya2VySW5mb3JtYXRpb24pOworICAgIGlmICghd29ya2VySW5mb3JtYXRpb24pCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGJvb2wgc2hvdWxkVGFrZUZvcmVncm91bmRBY3Rpdml0eSA9IFdU
Rjo6YW55T2YobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3NlcywgWyZd
KGF1dG8mIHByb2Nlc3MpIHsKKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vz
c1N1c3BlbnNpb24sICJ1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uOiB3b3JrZXJUeXBlPSV7
cHVibGljfXMiLCB3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/ICJzaGFy
ZWQiIDogInNlcnZpY2UiKTsKKworICAgIC8vIEZJWE1FOiBDbGllbnRzIGRvIG5vdCBwcm9wZXJs
eSBnZXQgcG9wdWxhdGVkIGluIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gc28gd2UgY3VycmVu
dGx5IHRha2UgYW4gYXNzZXJ0aW9uIG5vIG1hdHRlciB3aGF0LgorICAgIGlmICh3b3JrZXJUeXBl
ID09IFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlcikgeworICAgICAgICBpZiAoIVByb2Nlc3NUaHJv
dHRsZXI6OmlzVmFsaWRGb3JlZ3JvdW5kQWN0aXZpdHkod29ya2VySW5mb3JtYXRpb24tPmFjdGl2
aXR5KSkKKyAgICAgICAgICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0
bGVyLmZvcmVncm91bmRBY3Rpdml0eSgiV29ya2VyIGZvciBmb3JlZ3JvdW5kIHZpZXcocykiX3Mp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYm9vbCBzaG91bGRUYWtlRm9yZWdyb3Vu
ZEFjdGl2aXR5ID0gV1RGOjphbnlPZih3b3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2Vz
LCBbJl0oYXV0byYgcHJvY2VzcykgewogICAgICAgICByZXR1cm4gJnByb2Nlc3MgIT0gdGhpcyAm
JiAhIXByb2Nlc3MubV9mb3JlZ3JvdW5kVG9rZW47CiAgICAgfSk7CiAgICAgaWYgKHNob3VsZFRh
a2VGb3JlZ3JvdW5kQWN0aXZpdHkpIHsKLSAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjpp
c1ZhbGlkRm9yZWdyb3VuZEFjdGl2aXR5KG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rp
dml0eSkpCi0gICAgICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkg
PSBtX3Rocm90dGxlci5mb3JlZ3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2VyIGZvciBmb3Jl
Z3JvdW5kIHZpZXcocykiX3MpOworICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFs
aWRGb3JlZ3JvdW5kQWN0aXZpdHkod29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKKyAgICAg
ICAgICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmZvcmVncm91
bmRBY3Rpdml0eSgiV29ya2VyIGZvciBmb3JlZ3JvdW5kIHZpZXcocykiX3MpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgYm9vbCBzaG91bGRUYWtlQmFja2dyb3VuZEFjdGl2aXR5ID0g
V1RGOjphbnlPZihtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2VzLCBb
Jl0oYXV0byYgcHJvY2VzcykgeworICAgIGJvb2wgc2hvdWxkVGFrZUJhY2tncm91bmRBY3Rpdml0
eSA9IFdURjo6YW55T2Yod29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3NlcywgWyZdKGF1
dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuICZwcm9jZXNzICE9IHRoaXMgJiYgISFwcm9j
ZXNzLm1fYmFja2dyb3VuZFRva2VuOwogICAgIH0pOwogICAgIGlmIChzaG91bGRUYWtlQmFja2dy
b3VuZEFjdGl2aXR5KSB7Ci0gICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEJh
Y2tncm91bmRBY3Rpdml0eShtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQot
ICAgICAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJv
dHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3IgYmFja2dyb3VuZCB2
aWV3KHMpIl9zKTsKKyAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkQmFja2dy
b3VuZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCisgICAgICAgICAgICB3
b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZp
dHkoIldvcmtlciBmb3IgYmFja2dyb3VuZCB2aWV3KHMpIl9zKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGlmIChtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZykg
eworICAgIGlmICh3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIgJiYgbV9o
YXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcpIHsKICAgICAgICAgV0VCUFJPQ0VT
U1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiU2VydmljZSBXb3JrZXIgZm9y
IGJhY2tncm91bmQgcHJvY2Vzc2luZyIpOwotICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6
OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFj
dGl2aXR5KSkKLSAgICAgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0
eSA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJh
Y2tncm91bmQgcHJvY2Vzc2luZyJfcyk7CisgICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6
aXNWYWxpZEJhY2tncm91bmRBY3Rpdml0eSh3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQor
ICAgICAgICAgICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuYmFj
a2dyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3IgYmFja2dyb3VuZCBwcm9jZXNzaW5n
Il9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fc2VydmljZVdvcmtlckluZm9y
bWF0aW9uLT5hY3Rpdml0eSA9IG51bGxwdHI7CisgICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2
aXR5ID0gbnVsbHB0cjsKK30KKwordm9pZCBXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNoYXJl
ZFdvcmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNF
X0xPRyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0OiBTdGFydGVk
Iik7CisgICAgbWFya1Byb2Nlc3NBc1JlY2VudGx5VXNlZCgpOworICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bvb2woKS5kZWZhdWx0UGFnZUdyb3Vw
KCkucGFnZUdyb3VwSUQoKSwgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbi0+cmVtb3RlV29ya2Vy
UGFnZVByb3h5SUQsIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24tPnJlbW90ZVdvcmtlclBhZ2VJ
RCwgc3RvcmUsIHJlZ2lzdHJhYmxlRG9tYWluLCBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uLT5p
bml0aWFsaXphdGlvbkRhdGEgfSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0s
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJs
ZSB7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgIFdFQlBST0NFU1NQUk9YWV9S
RUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0OiBG
aW5pc2hlZCIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0sIDApOwogfQog
CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb3h5KQog
ewogICAgIGlmICghbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCkBAIC0xOTI3LDcgKzE5NjAs
NyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJv
Y2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb3h5KQogCiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVB
U0VfTE9HKFNlcnZpY2VXb3JrZXIsICJyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNz
OiBjbGllbnRQcm9jZXNzPSVwLCBjbGllbnRQSUQ9JWQiLCAmcHJveHksIHByb3h5LnByb2Nlc3NJ
ZGVudGlmaWVyKCkpOwogICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9j
ZXNzZXMuYWRkKHByb3h5KTsKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlv
bigpOworICAgIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6U2Vydmlj
ZVdvcmtlcik7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1bnJlZ2lzdGVyU2VydmljZVdv
cmtlckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKQEAgLTE5MzcsNyArMTk3
MCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94CiAKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVM
RUFTRV9MT0coU2VydmljZVdvcmtlciwgInVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJv
Y2VzczogY2xpZW50UHJvY2Vzcz0lcCwgY2xpZW50UElEPSVkIiwgJnByb3h5LCBwcm94eS5wcm9j
ZXNzSWRlbnRpZmllcigpKTsKICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50
UHJvY2Vzc2VzLnJlbW92ZShwcm94eSk7Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NB
c3NlcnRpb24oKTsKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6
OlNlcnZpY2VXb3JrZXIpOwogfQogCiBib29sIFdlYlByb2Nlc3NQcm94eTo6aGFzU2VydmljZVdv
cmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdApAQCAtMTk1Nyw3ICsxOTkw
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQ
cm9jZXNzaW5nKCkKIAogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3Vz
cGVuc2lvbiwgInN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nIik7CiAgICAg
bV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcgPSB0cnVlOwotICAgIHVwZGF0
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBkYXRlV29ya2VyUHJvY2Vz
c0Fzc2VydGlvbihXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KIAogdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZygpCkBAIC0xOTY3
LDIzICsyMDAwLDM5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmRTZXJ2aWNlV29ya2VyQmFj
a2dyb3VuZFByb2Nlc3NpbmcoKQogCiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFBy
b2Nlc3NTdXNwZW5zaW9uLCAiZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nIik7
CiAgICAgbV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcgPSBmYWxzZTsKLSAg
ICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOworICAgIHVwZGF0ZVdvcmtl
clByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAjZW5kaWYg
Ly8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlzYWJs
ZVNlcnZpY2VXb3JrZXJzKCkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaXNhYmxlV29ya2VycyhP
cHRpb25TZXQ8V29ya2VyVHlwZT4gd29ya2VyVHlwZSkKIHsKLSAgICBpZiAoIW1fc2VydmljZVdv
cmtlckluZm9ybWF0aW9uKQorICAgIEFTU0VSVCghd29ya2VyVHlwZS5pc0VtcHR5KCkpOworCisg
ICAgYm9vbCBkaWRDaGFuZ2UgPSBmYWxzZTsKKyAgICBpZiAod29ya2VyVHlwZS5jb250YWlucyhX
b3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSAmJiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikg
eworICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiA9IHsgfTsKKyAgICAgICAgZGlk
Q2hhbmdlID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMoV29ya2Vy
VHlwZTo6U2hhcmVkV29ya2VyKSAmJiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uKSB7CisgICAg
ICAgIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gPSB7IH07CisgICAgICAgIGRpZENoYW5nZSA9
IHRydWU7CisgICAgfQorICAgIGlmICghZGlkQ2hhbmdlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgImRpc2FibGVTZXJ2
aWNlV29ya2VyczoiKTsKLSAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiA9IHsgfTsKKyAg
ICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2VzcywgImRpc2FibGVXb3JrZXJzOiBE
aXNhYmxpbmcgd29ya2VycyAoU2hhcmVkV29ya2Vycz0lZCwgU2VydmljZVdvcmtlcnM9JWQpIiwg
d29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpLCB3b3JrZXJUeXBl
LmNvbnRhaW5zKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpKTsKKwogICAgIHVwZGF0ZUJhY2tn
cm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiAKKyAgICBpZiAoIWlzUnVubmluZ1dvcmtlcnMo
KSkKKyAgICAgICAgcHJvY2Vzc1Bvb2woKS5yZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKCp0aGlz
KTsKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBwcm9jZXNzUG9vbCgpLnJlbW92
ZUZyb21TZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCp0aGlzKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q2xvc2UgeyB9LCAwKTsKKyAgICBpZiAod29y
a2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSkKKyAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNsb3NlIHsgfSwgMCk7
CiAjZW5kaWYKKyAgICBpZiAod29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTaGFyZWRX
b3JrZXIpKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OkNsb3NlIHsgfSwgMCk7CiAKICAgICBtYXliZVNodXREb3duKCk7CiB9
CkBAIC0yMDA0LDExICsyMDUzLDEzIEBAIHN0YXRpYyBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvbXBp
bGVkQ29udGVudFJ1bGVMaXN0RGF0YSwgVVJMPj4gY29udGVudFJ1bGVMaXN0c0ZyCiB9CiAjZW5k
aWYKIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVNlcnZpY2VXb3JrZXJzKGNvbnN0IFVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImIHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXIpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlV29ya2VycyhXb3JrZXJUeXBlIHdv
cmtlclR5cGUsIGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImIHVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXIpCiB7Ci0gICAgQVNTRVJUKCFtX3NlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbik7Ci0gICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3Jr
ZXIsICJlbmFibGVTZXJ2aWNlV29ya2VyczoiKTsKLSAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1h
dGlvbiA9IFJlbW90ZVdvcmtlckluZm9ybWF0aW9uIHsKKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVM
RUFTRV9MT0coU2VydmljZVdvcmtlciwgImVuYWJsZVdvcmtlcnM6IHdvcmtlclR5cGU9JXUiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4od29ya2VyVHlwZSkpOworICAgIGF1dG8mIHdvcmtlckluZm9y
bWF0aW9uID0gd29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyBtX3NoYXJl
ZFdvcmtlckluZm9ybWF0aW9uIDogbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247CisgICAgQVNT
RVJUKCF3b3JrZXJJbmZvcm1hdGlvbik7CisKKyAgICB3b3JrZXJJbmZvcm1hdGlvbiA9IFJlbW90
ZVdvcmtlckluZm9ybWF0aW9uIHsKICAgICAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKSwKICAgICAgICAgUGFnZUlkZW50aWZpZXI6OmdlbmVyYXRlKCksCiAgICAgICAgIFJl
bW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSB7CkBAIC0yMDIxLDkgKzIwNzIsOCBAQCB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlU2VydmljZVdvcmtlcnMoY29uc3QgVXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllcgogICAgICAgICB7IH0KICAgICB9OwogICAgIHVwZGF0ZUJhY2tn
cm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQot
ICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKKworICAg
IHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24od29ya2VyVHlwZSk7CiB9CiAKIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVTbGVlcERpc2FibGVyKFNsZWVwRGlzYWJsZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcmVhc29uLCBib29sIGRpc3BsYXkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGY4Yjc5NWIxZDM0My4u
NzBlODkwNTFjY2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aApAQCAtMTM2LDkgKzEzNiwxMyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZExh
dW5jaFByb2Nlc3MgOiBib29sIHsgTm8sIFllcyB9OwogICAgIGVudW0gY2xhc3MgQ2FwdGl2ZVBv
cnRhbE1vZGUgOiBib29sIHsgRGlzYWJsZWQsIEVuYWJsZWQgfTsKKyAgICBlbnVtIGNsYXNzIFdv
cmtlclR5cGUgOiB1aW50MzJfdCB7CisgICAgICAgIFNlcnZpY2VXb3JrZXIgPSAxIDw8IDAsCisg
ICAgICAgIFNoYXJlZFdvcmtlciA9IDEgPDwgMQorICAgIH07CiAKICAgICBzdGF0aWMgUmVmPFdl
YlByb2Nlc3NQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sJiwgV2Vic2l0ZURhdGFTdG9yZSos
IENhcHRpdmVQb3J0YWxNb2RlLCBJc1ByZXdhcm1lZCwgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2Rl
ID0gV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQsIFNob3VsZExhdW5jaFByb2Nlc3Mg
PSBTaG91bGRMYXVuY2hQcm9jZXNzOjpZZXMpOwotICAgIHN0YXRpYyBSZWY8V2ViUHJvY2Vzc1By
b3h5PiBjcmVhdGVGb3JTZXJ2aWNlV29ya2VycyhXZWJQcm9jZXNzUG9vbCYsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKKyAgICBzdGF0aWMgUmVmPFdl
YlByb2Nlc3NQcm94eT4gY3JlYXRlRm9yV29ya2VycyhXb3JrZXJUeXBlLCBXZWJQcm9jZXNzUG9v
bCYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKIAog
ICAgIH5XZWJQcm9jZXNzUHJveHkoKTsKIApAQCAtMTYxLDggKzE2NSw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldElzSW5Qcm9jZXNzQ2FjaGUoYm9vbCwgV2lsbFNodXREb3duID0gV2lsbFNodXRE
b3duOjpObyk7CiAgICAgYm9vbCBpc0luUHJvY2Vzc0NhY2hlKCkgY29uc3QgeyByZXR1cm4gbV9p
c0luUHJvY2Vzc0NhY2hlOyB9CiAKLSAgICB2b2lkIGVuYWJsZVNlcnZpY2VXb3JrZXJzKGNvbnN0
IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImKTsKLSAgICB2b2lkIGRpc2FibGVTZXJ2
aWNlV29ya2VycygpOworICAgIHZvaWQgZW5hYmxlV29ya2VycyhXb3JrZXJUeXBlLCBjb25zdCBV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJik7CisgICAgdm9pZCBkaXNhYmxlV29ya2Vy
cyhPcHRpb25TZXQ8V29ya2VyVHlwZT4pOwogCiAgICAgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0
ZURhdGFTdG9yZSgpIGNvbnN0IHsgQVNTRVJUKG1fd2Vic2l0ZURhdGFTdG9yZSk7IHJldHVybiAq
bV93ZWJzaXRlRGF0YVN0b3JlOyB9CiAgICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFdlYnNp
dGVEYXRhU3RvcmUmKTsKQEAgLTE5NCw2ICsxOTgsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGlz
UnVubmluZ1NlcnZpY2VXb3JrZXJzKCkgY29uc3QgeyByZXR1cm4gISFtX3NlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbjsgfQogICAgIGJvb2wgaXNTdGFuZGFsb25lU2VydmljZVdvcmtlclByb2Nlc3Mo
KSBjb25zdCB7IHJldHVybiBpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpICYmICFwYWdlQ291bnQo
KTsgfQorICAgIGJvb2wgaXNSdW5uaW5nU2hhcmVkV29ya2VycygpIGNvbnN0IHsgcmV0dXJuICEh
bV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbjsgfQorICAgIGJvb2wgaXNTdGFuZGFsb25lU2hhcmVk
V29ya2VyUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIGlzUnVubmluZ1NoYXJlZFdvcmtlcnMoKSAm
JiAhcGFnZUNvdW50KCk7IH0KKyAgICBib29sIGlzUnVubmluZ1dvcmtlcnMoKSBjb25zdCB7IHJl
dHVybiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIHx8IG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uOyB9CiAKICAgICBib29sIGlzRHVtbXlQcm9jZXNzUHJveHkoKSBjb25zdDsKIApAQCAtMzU5
LDEyICszNjYsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVBdWRpYmxlTWVkaWFBc3Nl
cnRpb25zKCk7CiAKKyAgICB2b2lkIHNldFdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsK
KyAgICB2b2lkIHVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZSYpOworICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dChjb25zdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgdXBkYXRlV29ya2VyUHJvY2Vz
c0Fzc2VydGlvbihXb3JrZXJUeXBlKTsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAg
dm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRT
ZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgdXBkYXRlU2Vy
dmljZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwog
ICAgIGJvb2wgaGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHBhZ2VQcm94eUlEKSB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiAmJiBtX3Nl
cnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+cmVtb3RlV29ya2VyUGFnZVByb3h5SUQgPT0gcGFnZVBy
b3h5SUQ7IH0KLSAgICB2b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7
CiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQ
cm94eSYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdl
YlByb2Nlc3NQcm94eSYpOwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlckZvcmVncm91bmRBY3Rp
dml0eUZvclRlc3RpbmcoKSBjb25zdDsKQEAgLTY1Niw2ICs2NjQsNyBAQCBwcml2YXRlOgogICAg
ICAgICBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+IGNsaWVudFByb2Nlc3NlczsKICAgICB9
OwogICAgIHN0ZDo6b3B0aW9uYWw8UmVtb3RlV29ya2VySW5mb3JtYXRpb24+IG1fc2VydmljZVdv
cmtlckluZm9ybWF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8UmVtb3RlV29ya2VySW5mb3JtYXRp
b24+IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb247CiAgICAgYm9vbCBtX2hhc1NlcnZpY2VXb3Jr
ZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyB7IGZhbHNlIH07CiAKICAgICBIYXNoTWFwPFdlYkNvcmU6
OlNsZWVwRGlzYWJsZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U2xlZXBE
aXNhYmxlcj4+IG1fc2xlZXBEaXNhYmxlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwYzdjMzFiYzU1N2IuLmE5YmFmZTUwMjlhNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC04ODAsOCArODgwLDEwIEBACiAJCTQ2MTRGMTMyMjVERUQ4NzUwMDcwMDZFNyAvKiBHUFVQcm9j
ZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2QUM1MzI0MjVERUQ4MUUwMDNCNTdFQyAvKiBHUFVQcm9jZXNzQ29u
bmVjdGlvblBhcmFtZXRlcnMuaCAqLzsgfTsKIAkJNDYxQ0NDQTUyMzE0ODVBNzAwQjY1OUI5IC8q
IFVJUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2MzIzNjg1MjMxNDgzM0YwMEE0OEZBNyAvKiBVSVJlbW90ZU9iamVj
dFJlZ2lzdHJ5LmggKi87IH07CiAJCTQ2MUNDQ0E2MjMxNDg1QUEwMEI2NTlCOSAvKiBXZWJSZW1v
dGVPYmplY3RSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDYzMjM2ODMyMzE0ODFFRjAwQTQ4RkE3IC8qIFdlYlJlbW90ZU9iamVjdFJlZ2lz
dHJ5LmggKi87IH07CisJCTQ2MUUxQkYyMjc5QTAxMTYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MUUxQkVGMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCAqLzsgfTsKIAkJNDYzRkQ0ODAxRUI5NDU5
NjAwQTI5ODJDIC8qIFdLUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjNGRDQ3RjFFQjk0NTg0MDBBMjk4MkMg
LyogV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjNGRDQ4MjFFQjk0RUMwMDBBMjk4MkMgLyogUHJv
Y2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjNGRDQ4MTFFQjk0RUFEMDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1pbmF0
aW9uUmVhc29uLmggKi87IH07CisJCTQ2NTZGN0JEMjdBQ0FBOEQwMENCM0Q3QyAvKiBXZWJTaGFy
ZWRXb3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2NTZGN0JDMjdBQ0FBODEwMENCM0Q3QyAvKiBXZWJTaGFyZWRXb3JrZXIuaCAqLzsgfTsKIAkJ
NDY1OUYyNUYyNzVGRjZCMjAwQkJCMzY5IC8qIENhcHRpdmVQb3J0YWxNb2RlT2JzZXJ2ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NTlGMjVFMjc1
RkY2QjIwMEJCQjM2OSAvKiBDYXB0aXZlUG9ydGFsTW9kZU9ic2VydmVyLmggKi87IH07CiAJCTQ2
NUY0RTA2MjMwQjJFOTUwMDNDRURCNyAvKiBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1RjRFMDUyMzBC
MkU3QzAwM0NFREI3IC8qIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLmggKi87IH07CiAJCTQ2
NUZBNzI2Mjc1N0Q5M0QwMDcyMzYyQiAvKiBXZWJMb2NrUmVnaXN0cnlQcm94eS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1RkE3MjMyNzU3RDkxODAw
NzIzNjJCIC8qIFdlYkxvY2tSZWdpc3RyeVByb3h5LmggKi87IH07CkBAIC05MDAsMTAgKzkwMiwx
MyBAQAogCQk0NkMzOTIyOTIzMTZFQzREMDA4RUVEOUIgLyogV2ViUGFnZVByb3h5SWRlbnRpZmll
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDMzky
MjgyMzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCAqLzsgfTsKIAkJ
NDZDNUI3Q0UyN0FBREREMzAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM1QjdD
RDI3QUFEREJFMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuaCAqLzsg
fTsKIAkJNDZDNUI3Q0YyN0FBRERENjAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckxpYldlYlJUQ1By
b3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NkM1QjdDQjI3QUFEREJFMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXIu
aCAqLzsgfTsKKwkJNDZDOTE2QUEyNzk5RDBBMjAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNl
cnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZD
OTE2QTkyNzk5RDA5RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5oICovOyB9Owog
CQk0NkNFM0IxMTIzRDhDODQ5MDAxNkE5NkEgLyogV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkNFM0IxMDIz
RDhDODNEMDAxNkE5NkEgLyogV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmggKi87IH07CisJCTQ2
RDQ4RkNFMjc5OUQ3RTEwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkQ0OEZDRDI3OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oICovOyB9OwogCQk0NkRGMDYzQzFGMzkwNUY4MDAxOTgwQkIgLyogTmV0
d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyLmggKi87IH07CiAJCTQ2RUUyODQ5MjY5RTA0QUMwMERENDhBQiAvKiBX
ZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUUyODQ4MjY5RTA0OUIwMERENDhBQiAvKiBXZWJCcm9hZGNh
c3RDaGFubmVsUmVnaXN0cnkuaCAqLzsgfTsKIAkJNDZFRTI4NEQyNjlFMDUyNTAwREQ0OEFCIC8q
IE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUUyODRDMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3
b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggKi87IH07CisJCTQ2RUUzRThCMjc2M0ZEMkYw
MDYwQzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzODY2NzI3NjNGQUIxMDBDRjkx
ODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oICovOyB9OwogCQk0NkYzOEU4
QzI0MTZFNjczMDA1OTM3NUEgLyogUnVubmluZ0JvYXJkU2VydmljZXNTUEkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjM4RThCMjQxNkU2NkQwMDU5
Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oICovOyB9OwogCQk0NkY5QjI2MzIzNTI2
RUYzMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkY5QjI2MjIzNTI2RUQwMDA2RkU1RkEg
LyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggKi87IH07CiAJCTQ5MzEwMkJEMjY4M0YzRDAw
MDJCQjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0OTMxMDJCQzI2ODNGM0E1MDAyQkI4ODUgLyogQXBwUHJpdmFj
eVJlcG9ydC5oICovOyB9OwpAQCAtNDIyMyw2ICs0MjI4LDkgQEAKIAkJNDYwODg5RkYyNjFGQThB
OTAwRTI1MDBEIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBGNDg4RDFGOTk2RjZDMDBDRjRCODcg
LyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNDYwRjQ4OEUxRjk5NkY2QzAwQ0Y0Qjg3IC8q
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5o
OyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJNDYx
RTFCRUMyNzlBMDEwRTAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0NjFFMUJFRjI3OUEwMTBGMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0NjFFMUJGMDI3OUEwMTBGMDA2QUY1M0IgLyogV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5p
bjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYyMTA3RDcxRjM4REJEMzAwREQ3ODEw
IC8qIFBpbmdMb2FkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBp
bmdMb2FkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzMjM2ODMyMzE0ODFF
RjAwQTQ4RkE3IC8qIFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlJlbW90ZU9iamVjdFJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
MzIzNjg0MjMxNDgyNUMwMEE0OEZBNyAvKiBXZWJSZW1vdGVPYmplY3RSZWdpc3RyeS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJSZW1vdGVPYmplY3RSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC00MjMzLDYgKzQyNDEsOSBAQAogCQk0NjNGRDQ4MTFFQjk0RUFE
MDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NjUxRUNFNjIyMTc4QTg1MDA2N0VCOTUgLyogV2ViUHJvY2Vzc0Nh
Y2hlQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQ
cm9jZXNzQ2FjaGVDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY1MjUw
RTUxRUNGNTJDRDAwMjAyNUNCIC8qIFdlYktpdDJJbml0aWFsaXplQ29jb2EubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjU2RjdCQTI3QUNBQTgwMDBDQjNEN0Mg
LyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjU2RjdCQjI3QUNBQTgxMDBDQjNEN0Mg
LyogV2ViU2hhcmVkV29ya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2NTZGN0JDMjdBQ0FBODEwMENC
M0Q3QyAvKiBXZWJTaGFyZWRXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NTlGMjVFMjc1RkY2QjIwMEJCQjM2
OSAvKiBDYXB0aXZlUG9ydGFsTW9kZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENhcHRpdmVQb3J0YWxNb2RlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDY1RjRFMDIyMzA3NTlENTAwM0NFREI3IC8qIFN0b3JhZ2VBcmVhSWRlbnRp
Zmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlQXJlYUlkZW50aWZpZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY1RjRFMDMyMzA3NjA0RTAwM0NFREI3IC8qIFN0b3JhZ2VB
cmVhSW1wbElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZUFyZWFJbXBsSWRlbnRp
Zmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI1NCw4ICs0MjY1LDExIEBA
CiAJCTQ2ODA5QTdCMjNEOTIyNTMwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb29raWVDYWNoZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM1NjlBMjFFODFDQzcwMDZFMjdBMyAvKiBQcm92
aXNpb25hbFBhZ2VQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm92
aXNpb25hbFBhZ2VQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgzNTY5
QjIxRTgxQ0M3MDA2RTI3QTMgLyogUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjgzODY2NzI3NjNGQUIxMDBDRjkxODIgLyogV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2
ODM4NjY4Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njg5QjkwRjI3NTZEMTQzMDAwN0M2
NTEgLyogUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVdlYkxv
Y2tSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njg5QjkxMDI3NTZE
MTQzMDAwN0M2NTEgLyogUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQ2OTQzRENCMjc2M0Y4MzQwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24u
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OURFODAyMjczRUND
NUQwMDkzMDI3NiAvKiBQcm9jZXNzTGF1bmNoZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByb2Nlc3NMYXVuY2hlckNvY29hLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NkEyQjYwNjFFNTY3NUEyMDBDM0RFREEgLyogQmFja2dyb3Vu
ZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QTJCNjA3MUU1Njc1QTIwMEMzREVEQSAvKiBC
YWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00Mjc0LDcgKzQyODgsMTEgQEAKIAkJNDZDNUI3
Q0IyN0FBRERCRTAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckxpYldlYlJUQ1Byb3ZpZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZVdvcmtlckxpYldlYlJUQ1Byb3ZpZGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2QzVCN0NDMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1vdGVXb3Jr
ZXJGcmFtZUxvYWRlckNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVXb3JrZXJG
cmFtZUxvYWRlckNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzVC
N0NEMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJGcmFtZUxvYWRlckNsaWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZW1vdGVXb3JrZXJGcmFtZUxvYWRlckNsaWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0NkM5MTZBODI3OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hhcmVk
V29ya2VyU2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2QzkxNkE5Mjc5OUQwOUQwMDFB
NEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVk
V29ya2VyU2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2Q0UzQjEwMjNE
OEM4M0QwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2RDQ4RkNDMjc5OUQ3REQwMDdEMjAxNCAvKiBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0NkQ0OEZDRDI3OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2REYwNjM5MUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdo
dENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQ09SU1ByZWZsaWdodENo
ZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZFOTc2MEEyNzU3RjZDOTAw
QUNERDM3IC8qIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW47
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00Mjg0LDYgKzQzMDIsNyBAQAogCQk0NkVF
Mjg0QTI2OUUwNTE3MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5t
ZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5l
bFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkVF
Mjg0QjI2OUUwNTE3MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrQnJvYWRjYXN0
Q2hhbm5lbFJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZFRTI4
NEMyNjlFMDUxNzAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxS
ZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkVFM0U4QTI3NjNGRDJB
MDA2MEM3MEYgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkYzOEU4QjI0MTZFNjZEMDA1OTM3NUEgLyogUnVubmlu
Z0JvYXJkU2VydmljZXNTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVu
bmluZ0JvYXJkU2VydmljZXNTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZG
OUIyNjIyMzUyNkVEMDAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDkzMTAyQkMyNjgzRjNBNTAwMkJCODg1IC8q
IEFwcFByaXZhY3lSZXBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBwUHJpdmFjeVJlcG9ydC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTI5NSw2ICs5MzE0LDIzIEBACiAJCQlwYXRo
ID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk0NjgzODY2NTI3
NjNGQTFCMDBDRjkxODIgLyogU2hhcmVkV29ya2VyICovID0geworCQkJaXNhID0gUEJYR3JvdXA7
CisJCQljaGlsZHJlbiA9ICgKKwkJCQk0NjU2RjdCQjI3QUNBQTgxMDBDQjNEN0MgLyogV2ViU2hh
cmVkV29ya2VyLmNwcCAqLywKKwkJCQk0NjU2RjdCQzI3QUNBQTgxMDBDQjNEN0MgLyogV2ViU2hh
cmVkV29ya2VyLmggKi8sCisJCQkJNDZDOTE2QTgyNzk5RDA5RDAwMUE0RTdDIC8qIFdlYlNoYXJl
ZFdvcmtlclNlcnZlci5jcHAgKi8sCisJCQkJNDZDOTE2QTkyNzk5RDA5RDAwMUE0RTdDIC8qIFdl
YlNoYXJlZFdvcmtlclNlcnZlci5oICovLAorCQkJCTQ2ODM4NjY4Mjc2M0ZBQjEwMENGOTE4MiAv
KiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk0NjgzODY2NzI3
NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oICovLAor
CQkJCTQ2RUUzRThBMjc2M0ZEMkEwMDYwQzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluICovLAorCQkJCTQ2RDQ4RkNDMjc5OUQ3REQwMDdEMjAxNCAvKiBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk0NkQ0
OEZDRDI3OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oICovLAorCQkJCTQ2NTZGN0JBMjdBQ0FBODAwMENCM0Q3QyAvKiBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovLAorCQkJKTsKKwkJ
CXBhdGggPSBTaGFyZWRXb3JrZXI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9Owog
CQk0NjlERTgwMTI3M0VDQzVEMDA5MzAyNzYgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtOTM1OSw2ICs5Mzk1LDcgQEAKIAkJCQk1MTQ1MjZF
QTI3MUUxNjEwMDAwNDY3QjYgLyogTm90aWZpY2F0aW9ucyAqLywKIAkJCQk1QzAxQkMzNTI2RDQ2
QUQ0MDBGRUI0MkYgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgKi8sCiAJCQkJOTNCQTA0RDky
MTUxQURDRDAwN0Y0NTVGIC8qIFNlcnZpY2VXb3JrZXIgKi8sCisJCQkJNDY4Mzg2NjUyNzYzRkEx
QjAwQ0Y5MTgyIC8qIFNoYXJlZFdvcmtlciAqLywKIAkJCQk5MzA4NURDMjI2RTFCQjY1MDAwRUM2
QTcgLyogc3RvcmFnZSAqLywKIAkJCQk0MTMwNzU5NzFERTg0RUQ3MDAzOUVDNjkgLyogd2VicnRj
ICovLAogCQkJCTkzQjI2MTQzMjI3RDE0MzEwMEI5N0E3NiAvKiBXZWJTdG9yYWdlICovLApAQCAt
OTQ2MSw4ICs5NDk4LDEyIEBACiAJCQkJNDE5QUNGOUIxRjk4MUQyNjAwOUYxQTgzIC8qIFdlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCAqLywKIAkJCQk1MUJFQjYyOTFGM0E1QUNEMDA1
MDI5QjkgLyogV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcCAqLywKIAkJCQk1MUJFQjYyQTFG
M0E1QUNEMDA1MDI5QjkgLyogV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmggKi8sCisJCQkJNDYx
RTFCRUMyNzlBMDEwRTAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5jcHAgKi8sCisJCQkJNDYxRTFCRUYyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICovLAorCQkJCTQ2MUUxQkYwMjc5QTAx
MEYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVz
c2FnZXMuaW4gKi8sCiAJCQkJNDY2OEEwQkIyN0FCNjA0MDAwQzcyMEJDIC8qIFdlYlNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uY3BwICovLAogCQkJCTQ2NjhBMEI4MjdBQjYwM0YwMEM3MjBC
QyAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggKi8sCisJCQkJNDY5NDNEQ0Iy
NzYzRjgzNDAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4gKi8sCiAJCQkJNDY2OEEwQjkyN0FCNjAzRjAwQzcyMEJDIC8qIFdlYlNoYXJlZFdvcmtl
clByb3ZpZGVyLmNwcCAqLywKIAkJCQk0NjY4QTBCQTI3QUI2MDQwMDBDNzIwQkMgLyogV2ViU2hh
cmVkV29ya2VyUHJvdmlkZXIuaCAqLywKIAkJCQk1MTdBNTMwMzFGNDc5M0IyMDBEQ0RDMEEgLyog
V2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcCAqLywKQEAgLTEzMTIyLDYgKzEzMTYzLDcgQEAKIAkJ
CQkxQTNFRUQxMjE2MUE1M0Q2MDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTNFRUQwRjE2MUE1MzU0MDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyTWFw
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFCMDM3QTE4NUE3QzZBMDBFREY1MDEgLyogTWVzc2Fn
ZVNlbmRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY1NkY3QkQyN0FDQUE4RDAwQ0IzRDdDIC8q
IFdlYlNoYXJlZFdvcmtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEzQjNEQTIyMDdGMzlERTAw
OTBDNThEIC8qIE1vYmlsZVdpRmlTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0I1RjdDMjc1
RTk3QjYwMDJEQzIyRCAvKiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTE3QjVGODAyNzVFOTdCNjAwMkRDMjJEIC8qIE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xMzY1OCw4ICsxMzcwMCwxMiBAQAogCQkJCTdDMzYxRDczMTky
N0ZBMzYwMDM2QTU5RCAvKiBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRDNCOTQ4NDkxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTFCRUI2MkMxRjNBNUFENzAwNTAyOUI5IC8qIFdlYlNlcnZpY2VX
b3JrZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDYxRTFCRjIyNzlBMDExNjAwNkFG
NTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDY2OEEwQkQyN0FCNjA1NjAwQzcyMEJDIC8qIFdlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2NjhBMEJDMjdBQjYwNTAwMEM3
MjBCQyAvKiBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZD
OTE2QUEyNzk5RDBBMjAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNDZFRTNFOEIyNzYzRkQyRjAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtlclNl
cnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2RDQ4RkNFMjc5OUQ3RTEwMDdE
MjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1QzhERDM4MDFGRTQ1MjE2MDBGMkE1NTYgLyogV2Vic2l0ZUF1dG9wbGF5
UG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTQ4MzJENzFBOUNERjk2MDA4QjRERkUgLyog
V2Vic2l0ZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDgzMkQxMUE5QkRDMkYwMDhCNERG
RSAvKiBXZWJzaXRlRGF0YVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmNwcAppbmRleCA4MWRkMDQxMWEyMzkuLmJiMzU0N2Y0NmFkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCkBAIC01Nyw3ICs1NywxMCBAQAogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgorI2lu
Y2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIgorI2luY2x1
ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldl
YlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNv
Y2tldENoYW5uZWwuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJTb2NrZXRTdHJlYW0uaCIKQEAgLTE3NCw2ICsxNzcsMTYgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgSVAKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgorICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIHNoYXJl
ZFdvcmtlckNvbm5lY3Rpb24oKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIEFTU0VSVChTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKTsKKyAgICAgICAgaWYg
KGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxX
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24mPigqY29udGV4dE1hbmFnZXJD
b25uZWN0aW9uKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KIAogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQogICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGF5bWVu
dENvb3JkaW5hdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmgKaW5kZXggZWRjMDQ5M2JkM2VkLi4wYjY0ODBhNjFkMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5oCkBAIC00OCw2ICs0OCw3IEBAIGVudW0gY2xhc3MgSFRUUENvb2tpZUFjY2VwdFBvbGljeSA6
IHVpbnQ4X3Q7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViSURCQ29ubmVjdGlvblRv
U2VydmVyOworY2xhc3MgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjsKIGNsYXNzIFdl
YlNXQ2xpZW50Q29ubmVjdGlvbjsKIGNsYXNzIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODQzMDY0NzY2NWZh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDEyOSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIk5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVXZWJMb2NrUmVn
aXN0cnkuaCIKKyNpbmNsdWRlICJSZW1vdGVXb3JrZXJGcmFtZUxvYWRlckNsaWVudC5oIgorI2lu
Y2x1ZGUgIlJlbW90ZVdvcmtlckxpYldlYlJUQ1Byb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViQnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiV2ViQ2FjaGVTdG9yYWdlUHJvdmlk
ZXIuaCIKKyNpbmNsdWRlICJXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEuaCIKKyNpbmNs
dWRlICJXZWJEYXRhYmFzZVByb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1
ZGUgIldlYlByZWZlcmVuY2VzS2V5cy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNs
dWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJXZWJTb2NrZXRQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYlVzZXJDb250ZW50
Q29udHJvbGxlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRW1wdHlDbGllbnRzLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlQ29uZmlndXJhdGlvbi5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlclRocmVhZFByb3h5Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9Vc2VyQWdlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlckZldGNoUmVzdWx0Lmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpD
b25uZWN0aW9uPiYmIGNvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VH
cm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHByZWZlcmVu
Y2VzU3RvcmUsIFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmIGluaXRpYWxpemF0aW9u
RGF0YSkKKyAgICA6IG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV1RGTW92ZShjb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2VzcykpCisgICAgLCBtX3JlZ2lzdHJhYmxlRG9tYWluKFdURk1vdmUo
cmVnaXN0cmFibGVEb21haW4pKQorICAgICwgbV9wYWdlR3JvdXBJRChwYWdlR3JvdXBJRCkKKyAg
ICAsIG1fd2ViUGFnZVByb3h5SUQod2ViUGFnZVByb3h5SUQpCisgICAgLCBtX3BhZ2VJRChwYWdl
SUQpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgLCBtX3VzZXJBZ2VudChXZWJDb3JlOjpzdGFu
ZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoeyB9KSkKKyNlbHNlCisgICAgLCBtX3Vz
ZXJBZ2VudChzdGFuZGFyZFVzZXJBZ2VudCgpKQorI2VuZGlmCisgICAgLCBtX3VzZXJDb250ZW50
Q29udHJvbGxlcihXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmdldE9yQ3JlYXRlKGluaXRpYWxp
emF0aW9uRGF0YS51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKSkKK3sKKyNpZiBFTkFC
TEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRD
b250ZW50UnVsZUxpc3RzKFdURk1vdmUoaW5pdGlhbGl6YXRpb25EYXRhLmNvbnRlbnRSdWxlTGlz
dHMpKTsKKyNlbmRpZgorCisgICAgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShwcmVmZXJlbmNlc1N0
b3JlKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5kaXNhYmxlVGVybWluYXRpb24oKTsK
K30KKworV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp+V2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKCkgPSBkZWZhdWx0OworCit2b2lkIFdlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZXN0YWJsaXNoQ29ubmVjdGlvbihD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9j
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4
dENvbm5lY3Rpb24geyBtX3dlYlBhZ2VQcm94eUlELCBtX3JlZ2lzdHJhYmxlRG9tYWluIH0sIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCAwKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJD
b3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6UG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0IHsgc2hhcmVkV29ya2VySWRlbnRpZmll
ciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCB9LCAw
KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnVw
ZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCit7
CisgICAgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXNHZW5lcmF0ZWQoc3RvcmUpOworICAgIG1f
cHJlZmVyZW5jZXNTdG9yZSA9IHN0b3JlOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6bGF1bmNoU2hhcmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYmIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyLCBVUkwmJiB1cmwsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJiB3b3JrZXJP
cHRpb25zLCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmIHdvcmtlckZldGNoUmVzdWx0KQor
eworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6bGF1bmNoU2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlm
aWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBh
dXRvIHBhZ2VDb25maWd1cmF0aW9uID0gV2ViQ29yZTo6cGFnZUNvbmZpZ3VyYXRpb25XaXRoRW1w
dHlDbGllbnRzKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNlc3Npb25JRCgpKTsKKworICAgIHBh
Z2VDb25maWd1cmF0aW9uLmRhdGFiYXNlUHJvdmlkZXIgPSBXZWJEYXRhYmFzZVByb3ZpZGVyOjpn
ZXRPckNyZWF0ZShtX3BhZ2VHcm91cElEKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5zb2NrZXRQ
cm92aWRlciA9IFdlYlNvY2tldFByb3ZpZGVyOjpjcmVhdGUobV93ZWJQYWdlUHJveHlJRCk7Cisg
ICAgcGFnZUNvbmZpZ3VyYXRpb24uYnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5ID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuYnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5KCk7CisgICAgcGFnZUNvbmZp
Z3VyYXRpb24ud2ViTG9ja1JlZ2lzdHJ5ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9j
a1JlZ2lzdHJ5KCk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRQcm92aWRlciA9
IG1fdXNlckNvbnRlbnRDb250cm9sbGVyOworI2lmIEVOQUJMRShXRUJfUlRDKQorICAgIHBhZ2VD
b25maWd1cmF0aW9uLmxpYldlYlJUQ1Byb3ZpZGVyID0gbWFrZVVuaXF1ZVJlZjxSZW1vdGVXb3Jr
ZXJMaWJXZWJSVENQcm92aWRlcj4oKTsKKyNlbmRpZgorCisgICAgcGFnZUNvbmZpZ3VyYXRpb24u
bG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lID0gbWFrZVVuaXF1ZVJlZjxSZW1vdGVXb3JrZXJGcmFt
ZUxvYWRlckNsaWVudD4obV93ZWJQYWdlUHJveHlJRCwgbV9wYWdlSUQsIFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgbV91c2VyQWdlbnQpOworCisgICAgYXV0byBwYWdlID0g
bWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7
CisgICAgaWYgKG1fcHJlZmVyZW5jZXNTdG9yZSkgeworICAgICAgICBXZWJQYWdlOjp1cGRhdGVT
ZXR0aW5nc0dlbmVyYXRlZCgqbV9wcmVmZXJlbmNlc1N0b3JlLCBwYWdlLT5zZXR0aW5ncygpKTsK
KyAgICAgICAgcGFnZS0+c2V0dGluZ3MoKS5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6U3RvcmFnZUJsb2NraW5nUG9saWN5PihtX3ByZWZlcmVuY2VzU3RvcmUt
PmdldFVJbnQzMlZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpzdG9yYWdlQmxvY2tpbmdQ
b2xpY3lLZXkoKSkpKTsKKyAgICB9CisgICAgcGFnZS0+c2V0dXBGb3JSZW1vdGVXb3JrZXIodXJs
LCBvcmlnaW4udG9wT3JpZ2luLCB3b3JrZXJGZXRjaFJlc3VsdC5yZWZlcnJlclBvbGljeSk7Cisg
ICAgYXV0byBzaGFyZWRXb3JrZXJUaHJlYWRQcm94eSA9IFdlYkNvcmU6OlNoYXJlZFdvcmtlclRo
cmVhZFByb3h5OjpjcmVhdGUoV1RGTW92ZShwYWdlKSwgc2hhcmVkV29ya2VySWRlbnRpZmllciwg
b3JpZ2luLCB1cmwsIFdURk1vdmUod29ya2VyRmV0Y2hSZXN1bHQpLCBXVEZNb3ZlKHdvcmtlck9w
dGlvbnMpLCBtX3VzZXJBZ2VudCwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FjaGVTdG9yYWdl
UHJvdmlkZXIoKSk7CisKKyAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6
c2luZ2xldG9uKCkucmVnaXN0ZXJTaGFyZWRXb3JrZXJUaHJlYWQoV1RGTW92ZShzaGFyZWRXb3Jr
ZXJUaHJlYWRQcm94eSkpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6Y2xvc2UoKQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Y2xvc2U6IFNoYXJlZCB3b3Jr
ZXIgcHJvY2VzcyBpcyByZXF1ZXN0ZWQgdG8gc3RvcCBhbGwgc2hhcmVkIHdvcmtlcnMiKTsKKyAg
ICBzZXRBc0Nsb3NlZCgpOworCisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNsb3NlU2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb24geyB9LCAwKTsKKyAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc3RvcEFsbFNoYXJlZFdvcmtlcnMoKTsKKyAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbmFibGVUZXJtaW5hdGlvbigpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xYWNmZDBj
NDEyOTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAtMCwwICsxLDc2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSAiSWRlbnRpZmllclR5cGVzLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIldlYlBy
ZWZlcmVuY2VzU3RvcmUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdv
cmtlcklkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IENsaWVudE9y
aWdpbjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKK3N0cnVjdCBXb3JrZXJPcHRpb25zOwor
fQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
Oworc3RydWN0IFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YTsKKworY2xhc3MgV2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6
OlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYmLCBQYWdlR3JvdXBJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFJlbW90ZVdv
cmtlckluaXRpYWxpemF0aW9uRGF0YSYmKTsKKyAgICB+V2ViU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uKCk7CisKKyAgICB2b2lkIGVzdGFibGlzaENvbm5lY3Rpb24oQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dv
cmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMKSBmaW5hbDsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKK3ByaXZhdGU6CisgICAgLy8g
SVBDIE1lc3NhZ2VzLgorICAgIHZvaWQgbGF1bmNoU2hhcmVkV29ya2VyKFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29y
ZTo6V29ya2VyT3B0aW9ucyYmLCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmKTsKKyAgICB2
b2lkIHVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwor
ICAgIHZvaWQgc2V0VXNlckFnZW50KFN0cmluZyYmIHVzZXJBZ2VudCkgeyBtX3VzZXJBZ2VudCA9
IFdURk1vdmUodXNlckFnZW50KTsgfQorICAgIHZvaWQgY2xvc2UoKTsKKworICAgIFJlZjxJUEM6
OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3M7CisgICAgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKKyAgICBQYWdlR3JvdXBJZGVu
dGlmaWVyIG1fcGFnZUdyb3VwSUQ7CisgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBtX3dlYlBh
Z2VQcm94eUlEOworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOworICAgIFN0
cmluZyBtX3VzZXJBZ2VudDsKKyAgICBSZWY8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyPiBtX3Vz
ZXJDb250ZW50Q29udHJvbGxlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYlByZWZlcmVuY2VzU3Rv
cmU+IG1fcHJlZmVyZW5jZXNTdG9yZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDgyYTRh
ZGE1M2ZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBA
IC0wLDAgKzEsMzAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
bWVzc2FnZXMgLT4gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIE5vdFJl
ZkNvdW50ZWQgeworICAgIExhdW5jaFNoYXJlZFdvcmtlcihzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyLCBVUkwgdXJsLCBzdHJ1Y3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyB3b3Jr
ZXJPcHRpb25zLCBzdHJ1Y3QgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQgd29ya2VyRmV0Y2hS
ZXN1bHQpCisgICAgUG9zdENvbm5lY3RFdmVudChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlm
aWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBv
cnQgcG9ydCwgU3RyaW5nIHNvdXJjZU9yaWdpbikKKyAgICBUZXJtaW5hdGVTaGFyZWRXb3JrZXIo
V2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyKQor
ICAgIFVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNT
dG9yZSBzdG9yZSkKKyAgICBTZXRVc2VyQWdlbnQoU3RyaW5nIHVzZXJBZ2VudCkKKyAgICBDbG9z
ZSgpCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCmluZGV4IDVjNWZk
YWE2MDA1Ny4uNWRkYmRlNDRhOTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uLmNwcApAQCAtMjYsMjMgKzI2LDQ1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIgogCisjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlck1hbmFnZXIuaD4KKyNp
bmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFy
ZWRXb3JrZXJLZXkuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlck9wdGlvbnMuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLVdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OldlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CisjZGVmaW5lIENPTk5FQ1RJ
T05fUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0g
W3dlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBXZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uOjoiIGZtdCwgdGhpcywgV2ViQ29yZTo6UHJvY2Vzczo6aWRlbnRpZmllcigpLnRv
VUludDY0KCksICMjX19WQV9BUkdTX18pCisKK1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b246OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKQoreworICAgIENPTk5FQ1RJT05f
UkVMRUFTRV9MT0coIldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Iik7Cit9CisKK1dl
YlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246On5XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJ+V2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbjoiKTsKK30KIAogSVBDOjpDb25uZWN0aW9uKiBXZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuICZXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7CiB9CiAKLXZvaWQgV2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbjo6cmVxdWVzdFNoYXJlZFdvcmtlcihjb25zdCBVUkwmIHVybCwgV2ViQ29yZTo6
U2hhcmVkV29ya2VyJiBzaGFyZWRXb3JrZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBv
cnQmJiBwb3J0LCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucykKK3ZvaWQg
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6cmVxdWVzdFNoYXJlZFdvcmtlcihjb25z
dCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIHNoYXJlZFdvcmtlcktleSwgV2ViQ29yZTo6U2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBX
ZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgcG9ydCwgY29uc3QgV2ViQ29yZTo6V29y
a2VyT3B0aW9ucyYgd29ya2VyT3B0aW9ucykKIHsKLSAgICAvLyBGSVhNRTogU2hvdWxkIHNlbmQg
SVBDIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MuCi0gICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyTWFu
YWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdCh1cmwsIHNoYXJlZFdvcmtlciwgV1RGTW92ZShwb3J0
KSwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSk7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygi
cmVxdWVzdFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1Ymxp
Y31zIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246
OlJlcXVlc3RTaGFyZWRXb3JrZXIgeyBzaGFyZWRXb3JrZXJLZXksIHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIsIFdURk1vdmUocG9ydCksIHdvcmtlck9wdGlvbnMgfSk7CiB9CiAKK3ZvaWQg
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6c2hhcmVkV29ya2VyT2JqZWN0SXNHb2lu
Z0F3YXkoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBzaGFyZWRXb3JrZXJLZXksIFdl
YkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllcikKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJzaGFyZWRXb3JrZXJPYmpl
Y3RJc0dvaW5nQXdheTogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwg
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OlNoYXJl
ZFdvcmtlck9iamVjdElzR29pbmdBd2F5IHsgc2hhcmVkV29ya2VyS2V5LCBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyIH0pOworfQorCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPRwor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24u
aAppbmRleCA2MWVlNWFmNDI0ZGMuLjQ3ODE5M2VmN2RkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24uaApAQCAtMjUsMjAgKzI1LDI1IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLCBwcml2
YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b24sIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uKTsgfQorICAgIH5XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCk7
CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24oKTsKIAogICAgIC8vIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24u
Ci0gICAgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0IFVSTCYsIFdlYkNvcmU6OlNoYXJl
ZFdvcmtlciYsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgV2ViQ29yZTo6V29y
a2VyT3B0aW9ucyYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoY29uc3Qg
V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBjb25zdCBXZWJDb3Jl
OjpXb3JrZXJPcHRpb25zJikgZmluYWw7CisgICAgdm9pZCBzaGFyZWRXb3JrZXJPYmplY3RJc0dv
aW5nQXdheShjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmLCBXZWJDb3JlOjpTaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyKSBmaW5hbDsKIAogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRl
ci4KICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Qg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdl
cy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjcyMmFlMWEzMmM5
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNyBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBX
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIHsKKyAgICBGZXRjaFNjcmlwdEluQ2xpZW50
KFVSTCB1cmwsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMgd29ya2Vy
T3B0aW9ucykgLT4gKHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCBmZXRjaFJlc3Vs
dCkgQXN5bmMKKyAgICBOb3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKFdlYkNvcmU6
OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKKyAgICBQb3N0RXhjZXB0aW9uVG9Xb3Jr
ZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLCBTdHJpbmcgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgU3RyaW5nIHNvdXJjZVVSTCkKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBkZDhkNTgxYWM1YjIuLmRkNDViNDU4OGJmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtODQsNiArODQsOCBAQAog
I2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNlcnZp
Y2VXb3JrZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIu
aCIKICNpbmNsdWRlICJXZWJTb2NrZXRTdHJlYW0uaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5o
IgpAQCAtMTM0LDYgKzEzNiw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+
CiAjaW5jbHVkZSA8cGFsL0xvZ2dpbmcuaD4KICNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgpA
QCAtOTA0LDcgKzkwNyw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlCiAgICAgfQogCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIC8vIEZJWE1FOiBSZW1vdmU/CiAgICAgaWYgKGRl
Y29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIEFTU0VSVChT
V0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpOwogICAgICAgICBpZiAo
YXV0byogY29udGV4dE1hbmFnZXJDb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkuY29ubmVjdGlvbigpKQpAQCAtOTEzLDYgKzkxNSwxMyBAQCB2b2lkIFdlYlByb2Nlc3M6
OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNv
ZGVyJiBkZQogICAgIH0KICNlbmRpZgogCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVy
TmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBBU1NFUlQoU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSk7CisgICAgICAgIGlmIChh
dXRvKiBjb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
cjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8V2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uJj4oKmNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbikuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKICAgICBMT0dfRVJST1IoIlVuaGFuZGxlZCB3ZWIgcHJvY2VzcyBt
ZXNzYWdlICclcycgKGRlc3RpbmF0aW9uOiAlIiBQUkl1NjQgIiBwaWQ6ICVkKSIsIGRlc2NyaXB0
aW9uKGRlY29kZXIubWVzc2FnZU5hbWUoKSksIGRlY29kZXIuZGVzdGluYXRpb25JRCgpLCBzdGF0
aWNfY2FzdDxpbnQ+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSkpOwogfQogCkBAIC0xOTE5LDYgKzE5
MjgsMTYgQEAgTGliV2ViUlRDTmV0d29yayYgV2ViUHJvY2Vzczo6bGliV2ViUlRDTmV0d29yaygp
CiAgICAgcmV0dXJuICptX2xpYldlYlJUQ05ldHdvcms7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6
ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBh
Z2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2Vi
UGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNT
dG9yZSYgc3RvcmUsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFJlbW90
ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmIGluaXRpYWxpemF0aW9uRGF0YSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIC8vIFdlIGFyZSBp
biB0aGUgU2hhcmVkIFdvcmtlciBjb250ZXh0IHByb2Nlc3MgYW5kIHRoZSBjYWxsIGJlbG93IGVz
dGFibGlzaGVzIG91ciBjb25uZWN0aW9uIHRvIHRoZSBOZXR3b3JrIFByb2Nlc3MKKyAgICAvLyBi
eSBjYWxsaW5nIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi4gU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXIgbmVlZHMgdG8gdXNlIHRoZSBzYW1lIHVuZGVybHlpbmcgSVBDOjpDb25uZWN0
aW9uIGFzIHRoZQorICAgIC8vIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiBmb3Igc3luY2hyb25p
emF0aW9uIHB1cnBvc2VzLgorICAgIGF1dG8mIGlwY0Nvbm5lY3Rpb24gPSBlbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7CisgICAgU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENvbm5lY3Rpb24obWFrZVVuaXF1ZTxXZWJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24+KGlwY0Nvbm5lY3Rpb24sIFdURk1vdmUocmVn
aXN0cmFibGVEb21haW4pLCBwYWdlR3JvdXBJRCwgd2ViUGFnZVByb3h5SUQsIHBhZ2VJRCwgc3Rv
cmUsIFdURk1vdmUoaW5pdGlhbGl6YXRpb25EYXRhKSkpOworICAgIFNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCktPmVzdGFibGlzaENvbm5lY3Rpb24o
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQogdm9pZCBXZWJQcm9jZXNzOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFJlZ2lzdHJhYmxlRG9tYWluJiYg
cmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUmVtb3RlV29ya2VySW5pdGlh
bGl6YXRpb25EYXRhJiYgaW5pdGlhbGl6YXRpb25EYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaAppbmRleCAwM2ZjMGM3MWQ3YzMuLjQyM2RlZmYyYWY1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC00NzEsNiArNDcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGdhbWVwYWREaXNjb25uZWN0ZWQodW5zaWduZWQgaW5kZXgpOwogI2VuZGlmCiAKKyAgICB2b2lk
IGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQ
YWdlR3JvdXBJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiYsIFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lk
IGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
UGFnZUdyb3VwSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFJlbW90ZVdvcmtlcklu
aXRpYWxpemF0aW9uRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmlu
ZGV4IDNiYzQ3MzE5ZTM2ZC4uZjVlNzM2ZWQzNDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTAwLDYgKzEwMCw4IEBAIG1lc3Nh
Z2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7CiAgICAgR2Ft
ZXBhZERpc2Nvbm5lY3RlZCh1bnNpZ25lZCBpbmRleCkKICNlbmRpZgogCisgICAgRXN0YWJsaXNo
U2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYktpdDo6UGFn
ZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHN0cnVj
dCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUsIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIGRvbWFpbiwgc3RydWN0IFdlYktpdDo6UmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25E
YXRhIGluaXRpYWxpemF0aW9uRGF0YSkgLT4gKCkgQXN5bmMKKwogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICBFc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzKFdlYktpdDo6UGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2Vi
S2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3Rv
cmUsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJ
ZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEg
aW5pdGlhbGl6YXRpb25EYXRhKSAtPiAoKSBBc3luYwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450921</attachid>
            <date>2022-02-04 11:28:23 -0800</date>
            <delta_ts>2022-02-04 12:05:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235958-20220204112822.patch</filename>
            <type>text/plain</type>
            <size>295251</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNmMmQxMTcxN2RhZTg0
YTVjYmI3NWRmM2Y4NmIxODMzYmE3ZjIxOS4uYjA1NmEyYzBhZDRiMmUzODk1OWQyMDZlMjVlZTNh
ODVhYWNmNTRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMSBAQAorMjAyMi0wMi0wNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBz
aGFyaW5nIFNoYXJlZCBXb3JrZXJzIChpbmNsdWRpbmcgYWNyb3NzIFdlYlByb2Nlc3NlcykKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTk1OAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vODgzMzA2NjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNoYXJpbmcgU2hhcmVkIFdv
cmtlcnMsIGluY2x1ZGluZyBhY3Jvc3MgV2ViUHJvY2Vzc2VzLiBUaGUgYXJjaGl0ZWN0dXJlCisg
ICAgICAgIGlzIG1vZGVsZWQgYWZ0ZXIgdGhlIG9uZSB3ZSB1c2UgZm9yIFNlcnZpY2UgV29ya2Vy
cyBzaW5jZSB0aGV5IGFyZSB2ZXJ5IHNpbWlsYXIuIEkgdHJpZWQKKyAgICAgICAgc2hhcmluZyBh
cyBtdWNoIGNvZGUgYXMgcG9zc2libGUgd2l0aCBTZXJ2aWNlIFdvcmtlcnMgYnV0IHNvbWUgbW9y
ZSB3b3JrIGNhbiBwcm9iYWJseSBiZQorICAgICAgICBkb25lIGluIHRoaXMgYXJlYS4KKworICAg
ICAgICBXaXRoIHRoaXMgY2hhbmdlLCBzaGFyZWQgd29ya2VycyBzaG91bGQgYmUgbW9zdGx5IGZ1
bmN0aW9uYWwgYW5kIHNwZWMgY29tcGxpYW50LiBIb3dldmVyLAorICAgICAgICB0aGUgZmVhdHVy
ZSByZW1haW5zIGRpc2FibGVkIGJ5IGRlZmF1bHQgZm9yIG5vdyBhcyB0aGVyZSBhcmUgc3RpbGwg
V1BUIHRlc3RzIGZhaWx1cmVzIEkKKyAgICAgICAgbmVlZCB0byBpbnZlc3RpZ2F0ZS4gQWxzbywg
SSBuZWVkIHRvIGltcGxlbWVudCBhIGJldHRlciBwcm9jZXNzIHN1c3BlbnNpb24gbG9naWMgb24g
aU9TCisgICAgICAgIHRvIHJlcGxhY2UgdGhlIGhhY2sgSSBhZGRlZCBpbiB0aGlzIHBhdGNoICh0
byBtYWtlIHRoZSB0ZXN0cyBydW4gcmVsaWFibHkgb24gaU9TKS4KKworICAgICAgICBBcyB3aXRo
IFNlcnZpY2UgV29ya2VycywgU2hhcmVkIFdvcmtlcnMgYXJlIHBhcnRpdGlvbmVkIGJ5IChUb3Ag
T3JpZ2luICsgRnJhbWUgT3JpZ2luKQorICAgICAgICBmb3IgcHJpdmFjeSByZWFzb25zLiBUaGlz
IGlzIGFjaGlldmVkIHZpYSB0aGUgU2hhcmVkV29ya2VyS2V5IG9iamVjdCB0aGF0IHdlIHVzZSBh
cworICAgICAgICBIYXNoTWFwIGtleS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQg
YnkgZXhpc3RpbmcgV1BUIHRlc3RzLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAg
ICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogcGxhdGZvcm0vTG9nZ2luZy5oOgorICAgICAgICAqIHdvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXI6
OmZyb21JZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6U2hhcmVkV29ya2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6flNoYXJlZFdvcmtlcik6CisgICAgICAgIChXZWJD
b3JlOjpTaGFyZWRXb3JrZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkV29ya2VyOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRX
b3JrZXI6OnRlcm1pbmF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyLmg6CisgICAgICAgICogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmlkbDoK
KyAgICAgICAgKiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk6Omhhc2ggY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyS2V5OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkV29ya2VyS2V5OjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6
CisgICAgICAgIChXVEY6OkRlZmF1bHRIYXNoPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleT46Omhh
c2gpOgorICAgICAgICAoV1RGOjpEZWZhdWx0SGFzaDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk+
OjplcXVhbCk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6U2hhcmVkV29ya2Vy
S2V5Pjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk+Ojppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgICogd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5jcHA6IFJlbW92ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyTWFuYWdlcjo6Y29ubmVjdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzY3JpcHRMb2FkRmFpbGVkKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlck1hbmFnZXI6OnNjcmlwdExvYWRl
ZFN1Y2Nlc3NmdWxseSk6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyTWFuYWdlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHdvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbjo6ZmV0Y2hTY3JpcHRJbkNsaWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpub3RpZnlXb3JrZXJPYmplY3RPZkxv
YWRDb21wbGV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdCk6CisgICAgICAgICogd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAu
CisgICAgICAgICogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRl
cjo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6Om5v
dGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6
b3B0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXI6OmlkZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyOjpvcHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrZXJz
L3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaGFyZWRXb3Jr
ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6
OnN0b3BTaGFyZWRXb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXI6OnN0b3BBbGxTaGFyZWRXb3JrZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzZXRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpjb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpyZWdpc3RlclNoYXJlZFdvcmtl
clRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6
Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6dGVybWluYXRlU2hhcmVkV29ya2VyKToK
KyAgICAgICAgKiB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXI6OkNvbm5lY3Rpb246On5Db25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uOjppc0Nsb3NlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6c2V0QXND
bG9zZWQpOgorICAgICAgICAqIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2VuZXJhdGVXb3JrZXJQYXJhbWV0ZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpTaGFyZWRXb3Jr
ZXJUaHJlYWRQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eTo6flNoYXJlZFdvcmtlclRocmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdv
cmtlclRocmVhZFByb3h5Ojpub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eTo6Y3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tUb0xvYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tG
b3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6bmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6c3RhcnRXb3JrZXJHbG9iYWxTY29wZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6dGVy
bWluYXRlV29ya2VyR2xvYmFsU2NvcGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRh
c2tUb1dvcmtlckdsb2JhbFNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZFdvcmtlclRocmVhZFByb3h5OjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Ondvcmtlck9iamVjdERl
c3Ryb3llZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eTo6c3VzcGVuZEZvckJhY2tGb3J3YXJkQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnJlc3VtZUZvckJhY2tGb3J3YXJkQ2FjaGUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Ondv
cmtlckdsb2JhbFNjb3BlRGVzdHJveWVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpjb25maXJtTWVz
c2FnZUZyb21Xb3JrZXJPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
V29ya2VyVGhyZWFkUHJveHk6OnJlcG9ydFBlbmRpbmdBY3Rpdml0eSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6d29ya2VyR2xvYmFsU2NvcGVE
ZXN0cm95ZWRJbnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zaGFyZWQvY29u
dGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oOgorCiAyMDIyLTAyLTA0ICBBbmRyZXMgR29u
emFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBDYWNoZSBzb21lIGV4cGVu
c2l2ZSBBWElzb2xhdGVkT2JqZWN0IHByb3BlcnRpZXMgbGF6aWx5LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlMDRk
NTk3OWU1ZjNkODRlNWRlNDg3ZGI3NmFjYzdmZTNlMTVmMDQ0Li5iNWYwMDYwNjI2NTg4NWVjYThm
Mzk5ZjViOTA5NjQ1YjQzNDYzZjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5NiBAQAorMjAyMi0w
Mi0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBw
b3J0IGZvciBzaGFyaW5nIFNoYXJlZCBXb3JrZXJzIChpbmNsdWRpbmcgYWNyb3NzIFdlYlByb2Nl
c3NlcykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NTk1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODgzMzA2NjY+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNoYXJpbmcg
U2hhcmVkIFdvcmtlcnMsIGluY2x1ZGluZyBhY3Jvc3MgV2ViUHJvY2Vzc2VzLiBUaGUgYXJjaGl0
ZWN0dXJlCisgICAgICAgIGlzIG1vZGVsZWQgYWZ0ZXIgdGhlIG9uZSB3ZSB1c2UgZm9yIFNlcnZp
Y2UgV29ya2VycyBzaW5jZSB0aGV5IGFyZSB2ZXJ5IHNpbWlsYXIuIEkgdHJpZWQKKyAgICAgICAg
c2hhcmluZyBhcyBtdWNoIGNvZGUgYXMgcG9zc2libGUgd2l0aCBTZXJ2aWNlIFdvcmtlcnMgYnV0
IHNvbWUgbW9yZSB3b3JrIGNhbiBwcm9iYWJseSBiZQorICAgICAgICBkb25lIGluIHRoaXMgYXJl
YS4KKworICAgICAgICBXaXRoIHRoaXMgY2hhbmdlLCBzaGFyZWQgd29ya2VycyBzaG91bGQgYmUg
bW9zdGx5IGZ1bmN0aW9uYWwgYW5kIHNwZWMgY29tcGxpYW50LiBIb3dldmVyLAorICAgICAgICB0
aGUgZmVhdHVyZSByZW1haW5zIGRpc2FibGVkIGJ5IGRlZmF1bHQgZm9yIG5vdyBhcyB0aGVyZSBh
cmUgc3RpbGwgV1BUIHRlc3RzIGZhaWx1cmVzIEkKKyAgICAgICAgbmVlZCB0byBpbnZlc3RpZ2F0
ZS4gQWxzbywgSSBuZWVkIHRvIGltcGxlbWVudCBhIGJldHRlciBwcm9jZXNzIHN1c3BlbnNpb24g
bG9naWMgb24gaU9TCisgICAgICAgIHRvIHJlcGxhY2UgdGhlIGhhY2sgSSBhZGRlZCBpbiB0aGlz
IHBhdGNoICh0byBtYWtlIHRoZSB0ZXN0cyBydW4gcmVsaWFibHkgb24gaU9TKS4KKworICAgICAg
ICBBcyB3aXRoIFNlcnZpY2UgV29ya2VycywgU2hhcmVkIFdvcmtlcnMgYXJlIHBhcnRpdGlvbmVk
IGJ5IChUb3AgT3JpZ2luICsgRnJhbWUgT3JpZ2luKQorICAgICAgICBmb3IgcHJpdmFjeSByZWFz
b25zLiBUaGlzIGlzIGFjaGlldmVkIHZpYSB0aGUgU2hhcmVkV29ya2VyS2V5IG9iamVjdCB0aGF0
IHdlIHVzZSBhcworICAgICAgICBIYXNoTWFwIGtleS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fc2NoZW1lUmVnaXN0cnkpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fk5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xvc2VTaGFyZWRXb3JrZXJDb250
ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjp1bnJlZ2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzaGFyZWRXb3JrZXJDb25uZWN0aW9uKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmVuc3VyZVNoYXJlZFdvcmtlclNlcnZlcik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb246OnNoYXJlZFdvcmtlclNlcnZlcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24uY3BwLgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OldlYlNoYXJl
ZFdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6fldlYlNoYXJlZFdv
cmtlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OnJlZ2lzdHJhYmxlRG9tYWluIGNv
bnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29y
a2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OmlkZW50aWZp
ZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OmtleSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6d29ya2VyT3B0aW9ucyBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6b3JpZ2luIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyOjp1cmwgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTaGFyZWRXb3JrZXI6OnNoYXJlZFdvcmtlck9iamVjdHMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTaGFyZWRXb3JrZXI6OmlzUnVubmluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNoYXJlZFdvcmtlcjo6bWFya0FzUnVubmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJl
ZFdvcmtlcjo6ZmV0Y2hSZXN1bHQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRX
b3JrZXI6OnNldEZldGNoUmVzdWx0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2Vy
OjpkaWRGaW5pc2hGZXRjaGluZyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2hh
cmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OldlYlNoYXJlZFdvcmtlclNlcnZlcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2Vzc2lvbklEKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpkaWRGaW5pc2hGZXRjaGluZ1No
YXJlZFdvcmtlclNjcmlwdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZl
cjo6bmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29udGV4
dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJl
bW92ZUNvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2Vy
U2VydmVyOjpjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI6OnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaHV0RG93blNoYXJlZFdvcmtlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29ubmVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y29udGV4dENvbm5l
Y3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNo
YXJlZFdvcmtlclNlcnZlcjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmg6IEFk
ZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjp+V2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2Vzc2lv
bklEKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6
c2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b246OnJlcXVlc3RTaGFyZWRXb3JrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uOjpzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OmZldGNoU2NyaXB0
SW5DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uOjpub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2Vy
T2JqZWN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2VydmVyIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6d2ViUHJvY2Vzc0lkZW50aWZp
ZXIgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjp3ZWJQcm9jZXNzSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmlwY0Nvbm5lY3Rpb24gY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJEZXN0
aW5hdGlvbklEIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpwb3N0
RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpsYXVuY2hTaGFyZWRXb3JrZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpwb3N0
Q29ubmVjdEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlU2hhcmVkV29ya2VyKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjogQWRk
ZWQuCisgICAgICAgICogUGxhdGZvcm0vTG9nZ2luZy5oOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAodHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9k
ZWNsYXJlZCk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OnRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTaGFyZWRX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6c2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzaGFyZWRXb3JrZXJDb250ZXh0Q29u
bmVjdGlvbk5vTG9uZ2VyTmVlZGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRVc2VyQWdlbnQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZUZy
b21Xb3JrZXJQcm9jZXNzZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZXN0
YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXJGb3JXb3JrZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdl
YlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBkYXRlV29ya2VyVXNl
ckFnZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnRlcm1pbmF0ZVNlcnZp
Y2VXb3JrZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OndvcmtlclByb2Nl
c3Nlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNz
ZXJ0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjppc1NlcnZpY2VXb3Jr
ZXJQYWdlSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2Vydmlj
ZVdvcmtlclByb3hpZXNDb3VudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZyBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpoYXNTZXJ2aWNlV29ya2VyQmFja2dy
b3VuZEFjdGl2aXR5Rm9yVGVzdGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpyZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3Nlcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyRm9yU2VydmljZVdvcmtlcnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6dXBkYXRlU2VydmljZVdvcmtlclVzZXJBZ2VudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5OjpjcmVhdGVGb3JXb3JrZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXRXb3JrZXJVc2VyQWdlbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNoYXJlZFdvcmtl
ckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6c3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3Np
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJC
YWNrZ3JvdW5kUHJvY2Vzc2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6
ZGlzYWJsZVdvcmtlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVuYWJs
ZVdvcmtlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclNl
cnZpY2VXb3JrZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpzZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXNTdG9yZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dXBkYXRlU2VydmljZVdv
cmtlclByb2Nlc3NBc3NlcnRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OmRpc2FibGVTZXJ2aWNlV29ya2Vycyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5hYmxlU2VydmljZVdvcmtlcnMpOiBEZWxldGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Byb3h5Ojppc1J1bm5pbmdTaGFyZWRXb3JrZXJzIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojppc1N0YW5kYWxvbmVTaGFyZWRXb3JrZXJQcm9jZXNzIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojppc1J1bm5pbmdXb3JrZXJz
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpoYXNTZXJ2aWNlV29y
a2VyUGFnZVByb3h5KToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNl
aXZlTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjptX3VzZXJDb250ZW50
Q29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6ZXN0YWJsaXNoQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29y
a2VyT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjp1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpsYXVuY2hTaGFyZWRXb3Jr
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OmNsb3NlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbjo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246On5XZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbjo6cmVxdWVzdFNoYXJlZFdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6
OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnNoYXJlZFdvcmtlck9iamVjdElzR29p
bmdBd2F5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkaWRS
ZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVzdGFibGlzaFNo
YXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorCiAyMDIyLTAyLTA0ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4OTA2OS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCmluZGV4IDZjYjE3NDU5YTdkYTg0ZjVhMjYyOTlkNjcwOGIyYzdiNzNjMGQ2
YzYuLmM5ZjY2ODVmNjJkMTM1YWVmOTgxYjZhMjEyOGExNzA1N2VmM2EyYTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQpAQCAtMTk1OSw5ICsxOTU5LDEyIEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVX
T1JLX0hFQURFUlMKICAgICB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCiAgICAgd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCiAgICAgd29ya2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5o
CisgICAgd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oCisgICAgd29ya2Vycy9Xb3JrZXJPcHRp
b25zLmgKICAgICB3b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKICAgICB3b3Jr
ZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaAogICAgIHdvcmtlcnMvV29ya2Vy
T3JXb3JrbGV0VGhyZWFkLmgKKyAgICB3b3JrZXJzL1dvcmtlclJlcG9ydGluZ1Byb3h5LmgKICAg
ICB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuaAogICAgIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVy
LmgKICAgICB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlckNsaWVudC5oCkBAIC0yMDA1LDkgKzIw
MDgsMTIgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHdvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAogCiAgICAgd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VySWRlbnRpZmllci5oCi0gICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
TWFuYWdlci5oCisgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyS2V5LmgKICAgICB3b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKKyAgICB3b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgKICAgICB3b3JrZXJzL3NoYXJlZC9T
aGFyZWRXb3JrZXJQcm92aWRlci5oCisKKyAgICB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgKICAgICB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJl
ZFdvcmtlclRocmVhZC5oCiAgICAgd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJU
aHJlYWRQcm94eS5oCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggYjNmNWUwYjc4NDE3MGJmMDI0ZDc4ODM5
ZmZjOTA4MTcyNGE3NGNhNi4uNWVlNTAwY2I2ZDEwZjUwYjdhMzUzNWU0OWFhYmI3YzE5MDUyZjc1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTI3ODUsMTAgKzI3ODUsMTAgQEAgd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCiB3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNw
cAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCi13b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbi5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVy
LmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcAord29ya2Vy
cy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKIHdvcmtlcnMv
c2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkLmNwcAogd29ya2Vycy9zaGFyZWQvY29u
dGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAKIHdvcmtsZXRzL1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGM1ZjQ0ZWYwNGE3MDU4YjE5YjI0Yzg1ZDExZDYzZDk0NTRlM2Ri
MGMuLjU2YTcxNTlkYmFlZTJmNjA2OGE4YTI2ZGQ1ZWZjZWIyZDEyZTdhNTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkwMyw3
ICs5MDMsNyBAQAogCQkyRTQzNDY0QjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2Nv
cGVQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkU0MzQ2MzkwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuaCAqLzsg
fTsKIAkJMkU0MzQ2NEQwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckxvY2F0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzQjBGNTQ2QTgy
MDBCMEYxQkEgLyogV29ya2VyTG9jYXRpb24uaCAqLzsgfTsKIAkJMkU0MzQ2NTAwRjU0NkE4MjAw
QjBGMUJBIC8qIFdvcmtlck1lc3NhZ2luZ1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzRTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
TWVzc2FnaW5nUHJveHkuaCAqLzsgfTsKLQkJMkU0MzQ2NTEwRjU0NkE4MjAwQjBGMUJBIC8qIFdv
cmtlck9iamVjdFByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRTQzNDYzRjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyT2JqZWN0UHJveHkuaCAq
LzsgfTsKKwkJMkU0MzQ2NTEwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzRjBG
NTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyT2JqZWN0UHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTQzNDY1MzBGNTQ2QTgyMDBCMEYxQkEg
LyogV29ya2VyUnVuTG9vcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkU0MzQ2NDEwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclJ1bkxvb3AuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTQzNDY1NTBG
NTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDY0MzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
VGhyZWFkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMkU3NTg0MUUxMjc3OUFEQTAwNjI2MjhCIC8qIEZpbGVSZWFkZXJMb2FkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNzU4NDFCMTI3NzlBREEw
MDYyNjI4QiAvKiBGaWxlUmVhZGVyTG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExMjUsNyArMTEyNSw3IEBACiAJCTQxNkEwNkExMjND
Q0FEMDMwMDM0NzEwOSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2QTA2OTYyM0NDQUE5RjAw
MzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RDc1QTIyMEM2NTFBNTAwRDAy
RDJDIC8qIE5ldHdvcmtMb2FkSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkQ3NTlGMjBDNjQ0MTMwMEQwMkQyQyAvKiBOZXR3b3Jr
TG9hZEluZm9ybWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNDE2RTBCM0EyMDlCQzNDQjAwNEE5NUQ5IC8qIEZldGNoSWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTBCMzcy
MDlCQzNDMjAwNEE5NUQ5IC8qIEZldGNoSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAv
KiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE2RTI5QTUxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGlu
Z1Byb3h5LmggKi87IH07CisJCTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBv
cnRpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDE2RTI5QTUxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgx
QkJEMTJERjAwMEEzRjY0IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzEx
MEQwMEI3NjREOSAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgxQkJEMTJE
RjAwMEEzRjY1IC8qIEpTRE9NQmluZGluZ0ludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0
REEgLyogSlNET01CaW5kaW5nSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFODFCQkQxMkRGMDAwQTNGNzQg
LyogVHJhbnNmb3JtU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjRFQSAvKiBU
cmFuc2Zvcm1TdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzQ3LDE0ICsxMzQ3LDE2IEBACiAJCTQ2N0E2
OEQ3Mjc1RUE5OTEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0E2OEQ0Mjc1RUE5OEIwMDlCMzFD
NSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0NjdBNjhEODI3NUVBOTk1MDA5QjMxQzUgLyogU2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjdBNjhENTI3NUVBOThDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVyLmggKi87IH07CiAJCTQ2N0E2OEQ5Mjc1RUE5OTgwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJU
aHJlYWRQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY3QTY4RDYyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDY3QTY4
REEyNzVFQTk5QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0E2OEQyMjc1RUE5OEEwMDlCMzFD
NSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4MkQyMDAxRjc5NzgzMDAwQzg2M0RCIC8qIFN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjgyRDFGRjFGNzk3ODIzMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
NjgzNDRFMDFFRERGQUFBMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAv
KiBET01SZWN0TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQ2ODNERjQwMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFs
U2NvcGVCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NjgzREYzRTI3NjdERjk4MDA3RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFz
ZS5oICovOyB9OwogCQk0NjgzREY0MTI3NjdFOTFBMDA3RDAwQzggLyogU2hhZG93UmVhbG1HbG9i
YWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDY4M0RGM0IyNzY3REYyNjAwN0QwMEM4IC8qIFNoYWRvd1JlYWxtR2xvYmFsU2NvcGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0Njg4RUUzQzI2
REQyNjEwMDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5Nb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njg4RUUzQTI2REQyNjBDMDAyQUY1QzQgLyogQ3Jv
c3NPcmlnaW5Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNDY5NDNEQzkyNzYzRjgxNzAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2OTQzREM3Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDY5
ODVGMjMyN0E0QTZBRDAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktleS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5ODVGMjIyN0E0QTY4NjAwOTdBMzJC
IC8qIFNoYXJlZFdvcmtlcktleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ2OUNDQ0ZFMjY5RDAyMUMwMDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFu
bmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjlD
Q0NGQzI2OUQwMjAyMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2OUQ3N0I4MjcwMTYyNTEwMDE0
MkZBNiAvKiBOYXZpZ2F0aW9uUmVxdWVzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjlENzdCNjI3MDE2MjUwMDAxNDJGQTYgLyogTmF2aWdhdGlv
blJlcXVlc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTQ2QTc4QjM0Mjc5OUJENzEwMDExNTRGRSAvKiBXb3JrZXJPcHRpb25zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzFCMUQyNjI2RjE4QTRC
MDA4ODJEQTIgLyogV29ya2VyT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQ2QUFBQTNEMjVEMzYzMjAwMEJBRjQyRiAvKiBBdWRpb0Zp
bGVSZWFkZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZBQUFBM0EyNUQzNjMxNDAwQkFGNDJGIC8qIEF1ZGlvRmlsZVJlYWRlckNvY29hLmgg
Ki87IH07CiAJCTQ2QjYzRjZDMUM2RThEMTkwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9t
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI2M0Y2
QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QjY1MEREMjI5NjI2MjcwMEZE
OEFBNCAvKiBQYWdlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDZCNjUwREIyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEz
NzUsNiArMTM3Nyw3IEBACiAJCTQ2QzY5NkNDMUU3MjA1RkMwMDU5NzkzNyAvKiBDUFVNb25pdG9y
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5
NkNBMUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmNwcCAqLzsgfTsKIAkJNDZDODNFRkUx
QTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM4M0VGQzFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90
aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0NkNBOUM0NDFGOTdCQkU5MDA0Q0ZDM0EgLyogVmlzaWJpbGl0eVN0YXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkNBOUM0MTFGOTdCQkU3MDA0
Q0ZDM0EgLyogVmlzaWJpbGl0eVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDZDRjUwNEEyN0FCMUVBNDAwNzBEQkM4IC8qIFNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkNGNTA0ODI3QUIxRUExMDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NkQwMDA0MDI2QTBGRUIzMDBEMUJGMUUgLyogU3VibWl0RXZlbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RDAwMDNFMjZBMEZFNkYwMEQx
QkYxRSAvKiBTdWJtaXRFdmVudC5oICovOyB9OwogCQk0NkRBNEEwMjI3QUIwMzkzMDBFMzc1QTgg
LyogVHJhbnNmZXJyZWRNZXNzYWdlUG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZEQTRBMDAyN0FCMDM4RDAwRTM3NUE4IC8qIFRyYW5zZmVycmVk
TWVzc2FnZVBvcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0NkRCQjY1MDFBQjhDOTZGMDBEOUE4MTMgLyogUG93ZXJPYnNlcnZlck1hYy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZEQkI2NEUxQUI4
Qzk2RjAwRDlBODEzIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTI0NSw4ICs5MjQ4LDYgQEAKIAkJNDY3QTY4
Q0YyNzVFQTk4OTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDY3QTY4RDAyNzVFQTk4OTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRo
cmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJUaHJlYWQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdBNjhEMTI3NUVBOThBMDA5QjMxQzUgLyogU2hh
cmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtl
clNjcmlwdExvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2N0E2OEQy
Mjc1RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNoYXJlZFdvcmtlck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDY3
QTY4RDMyNzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2hhcmVkV29ya2VyTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2N0E2OEQ0Mjc1RUE5OEIwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2N0E2OEQ1Mjc1RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2N0E2OEQ2Mjc1RUE5OEMwMDlCMzFDNSAvKiBT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTI2Miw2ICs5MjYzLDgg
QEAKIAkJNDY4M0RGM0UyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29w
ZUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTaGFkb3dSZWFsbUds
b2JhbFNjb3BlQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njg4RUUzQTI2
REQyNjBDMDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5Nb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyb3Nz
T3JpZ2luTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjhCOEJERTI1Q0M4
NDkzMDBGNjc4MjIgLyogSlNCYXNlQXVkaW9Db250ZXh0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQmFzZUF1ZGlvQ29udGV4dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ2OTQzREM3Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5ODVGMjIyN0E0QTY4NjAwOTdBMzJC
IC8qIFNoYXJlZFdvcmtlcktleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
aGFyZWRXb3JrZXJLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5Q0NDRkEy
NjlEMDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQnJvYWRjYXN0Q2hhbm5lbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
OUNDQ0ZDMjY5RDAyMDIwMDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEJyb2FkY2FzdENoYW5uZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5
Q0NDRkQyNjlEMDIwMzAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEJyb2Fk
Y2FzdENoYW5uZWwuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTMwMiw2ICs5
MzA1LDggQEAKIAkJNDZDODNFRkMxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlb05vdGlmaWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2Q0E5QzQxMUY5N0JCRTcwMDRDRkMzQSAvKiBWaXNpYmlsaXR5
U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlzaWJpbGl0eVN0YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2Q0E5QzQyMUY5N0JCRTcwMDRDRkMz
QSAvKiBWaXNpYmlsaXR5U3RhdGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFZpc2liaWxp
dHlTdGF0ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2Q0Y1MDQ4MjdBQjFF
QTEwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0NkNGNTA0OTI3QUIxRUExMDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkQwMDAzQzI2QTBGRTZGMDBEMUJGMUUg
LyogU3VibWl0RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U3VibWl0RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkQwMDAzRTI2
QTBGRTZGMDBEMUJGMUUgLyogU3VibWl0RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3VibWl0RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZE
MDAwM0YyNkEwRkU3MDAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBTdWJtaXRFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
MTU2OCw2ICsyMTU3Myw4IEBACiAJCTQ2NDdDRTYxMjdBQUUxREEwMDlDQkQ0OCAvKiBjb250ZXh0
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0NkNGNTA0
OTI3QUIxRUExMDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwICovLAor
CQkJCTQ2Q0Y1MDQ4MjdBQjFFQTEwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ci5oICovLAogCQkJCTQ2N0E2OEQwMjc1RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJl
YWQuY3BwICovLAogCQkJCTQ2N0E2OEQ0Mjc1RUE5OEIwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJU
aHJlYWQuaCAqLywKIAkJCQk0NjdBNjhDRjI3NUVBOTg5MDA5QjMxQzUgLyogU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHkuY3BwICovLApAQCAtMjE1ODcsMTAgKzIxNTk0LDEwIEBACiAJCQkJNDY2OTRD
RTEyNzU5NDQ4QzAwRTMxNTBFIC8qIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmggKi8sCiAJCQkJ
NDY2OTRDRTAyNzU5NDQ4QzAwRTMxNTBFIC8qIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmlkbCAq
LywKIAkJCQk0NkVDNDQ0ODI3QUIzMzdGMDBGRkNEOTYgLyogU2hhcmVkV29ya2VySWRlbnRpZmll
ci5oICovLAotCQkJCTQ2N0E2OEQzMjc1RUE5OEIwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5h
Z2VyLmNwcCAqLywKLQkJCQk0NjdBNjhEMjI3NUVBOThBMDA5QjMxQzUgLyogU2hhcmVkV29ya2Vy
TWFuYWdlci5oICovLAorCQkJCTQ2OTg1RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3Jr
ZXJLZXkuaCAqLywKIAkJCQk0NjY4QTBCMzI3QUI2MDBCMDBDNzIwQkMgLyogU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJNDY2OEEwQjEyN0FCNjAwQjAwQzcyMEJDIC8q
IFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAqLywKKwkJCQk0Njk0M0RDNzI3NjNGODBF
MDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oICovLAogCQkJCTQ2NjhB
MEI0MjdBQjYwMEMwMEM3MjBCQyAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAgKi8sCiAJCQkJ
NDY2OEEwQjUyN0FCNjAwQzAwQzcyMEJDIC8qIFNoYXJlZFdvcmtlclByb3ZpZGVyLmggKi8sCiAJ
CQkJNDY3QTY4RDEyNzVFQTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5j
cHAgKi8sCkBAIC0zNzIwNCw5ICszNzIxMSwxMSBAQAogCQkJCTgzNERGQUQwMUY3REFFNUQwMEMy
NzI1QiAvKiBTaGFyZWRTdHJpbmdIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUVBMzA5
OUVCNzhDMDA1NkU1ODEgLyogU2hhcmVkVGltZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxREMw
NEZFMjdBODNDOTMwMDhDRjk2OCAvKiBTaGFyZWRWaWRlb0ZyYW1lSW5mby5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDZDRjUwNEEyN0FCMUVBNDAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkVDNDQ0QTI3QUIzMzg5MDBGRkNEOTYgLyog
U2hhcmVkV29ya2VySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDY3QTY4REEyNzVF
QTk5QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTQ2OTg1RjIzMjdBNEE2QUQwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQ2NjhBMEI2MjdBQjYwMUIwMEM3MjBCQyAvKiBTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk0Njk0M0RDOTI3NjNGODE3MDA0QjYxMEUg
LyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY2
OEEwQjcyN0FCNjAyMTAwQzcyMEJDIC8qIFNoYXJlZFdvcmtlclByb3ZpZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0NjdBNjhEODI3NUVBOTk1MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0
TG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjdBNjhENzI3NUVBOTkxMDA5QjMxQzUgLyog
U2hhcmVkV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKQEAgLTM4MDY3LDYgKzM4MDc2LDcg
QEAKIAkJCQlFMTI3MUEwQjBFRUVDNzdBMDBGNjEyMTMgLyogV29ya2VyTmF2aWdhdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNUNCMDUyNTFGQjUxRjNBMDAwODlCOTcgLyogV29ya2VyTmV0d29y
a0FnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTQzNDY1MTBGNTQ2QTgyMDBCMEYxQkEgLyog
V29ya2VyT2JqZWN0UHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2QTc4QjM0Mjc5OUJENzEw
MDExNTRGRSAvKiBXb3JrZXJPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0Q2QUFFNjI1
MjRFRTFDMDA0MjhCNEIgLyogV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTgzOUEwOTVEMjUyNEYzN0YwMEVFRjMyOCAvKiBXb3JrZXJPcldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0Y2QUVCRjI1MjdCQjBDMDAzNEJD
RDMgLyogV29ya2VyT3JXb3JrbGV0VGhyZWFkLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xvZ2dpbmcuaAppbmRleCA1ZmVmNDJlZTA2ZWM1MTE1ZmQ4NmU5ODg5NGY2OWQ3YzIxOWUz
ZTBjLi5mYTdkMjMwMmVjMzllOTk3NTYxOGRiYzkyNzY5YzVhMGYxOTkxMDRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTG9nZ2luZy5oCkBAIC0xMjcsNiArMTI3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIE0oV2ViR0wpIFwKICAgICBNKFdlYlJUQykgXAogICAgIE0oV2ViUlRDU3RhdHMpIFwK
KyAgICBNKFdvcmtlcikgXAogICAgIE0oWFIpIFwKICAgICBNKFdoZWVsRXZlbnRUZXN0TW9uaXRv
cikgXAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNw
cAppbmRleCBiNDg3NDdhMmMwOTk3M2MxOGJmOGRkYTlhYzg3NGIzMWFiODVmNzUxLi4xNDIyZWU5
YmQ4OTk1MzdhNjI3N2MyMzA2MDQ4YjMzYjJlNmRiY2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTUgKzI2LDE3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCiAKKyNpbmNsdWRlICJDbGll
bnRPcmlnaW4uaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZUNoYW5uZWwuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5o
IgorI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlck1hbmFnZXIuaCIKICNpbmNsdWRlICJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyUHJvdmlkZXIuaCIK
LSNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlck9w
dGlvbnMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4K
ICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtNDMsMTIgKzQ1LDI3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFNoYXJlZFdv
cmtlcik7CiAKKyNkZWZpbmUgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVM
RUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBbaWRlbnRpZmllcj0le3B1YmxpY31zXSBTaGFy
ZWRXb3JrZXI6OiIgZm10LCB0aGlzLCBtX2lkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0
YSgpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HX0VS
Uk9SKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICIlcCAtIFtpZGVu
dGlmaWVyPSV7cHVibGljfXNdIFNoYXJlZFdvcmtlcjo6IiBmbXQsIHRoaXMsIG1faWRlbnRpZmll
ci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksICMjX19WQV9BUkdTX18pCisKK3N0YXRpYyBIYXNo
TWFwPFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFNoYXJlZFdvcmtlcio+JiBhbGxTaGFy
ZWRXb3JrZXJzKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxIYXNoTWFwPFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFNoYXJl
ZFdvcmtlcio+PiBhbGxTaGFyZWRXb3JrZXJzOworICAgIHJldHVybiBhbGxTaGFyZWRXb3JrZXJz
OworfQorCitTaGFyZWRXb3JrZXIqIFNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIoU2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBhbGxTaGFy
ZWRXb3JrZXJzKCkuZ2V0KGlkZW50aWZpZXIpOworfQorCiBzdGF0aWMgaW5saW5lIFNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24qIG1haW5UaHJlYWRDb25uZWN0aW9uKCkKIHsKICAgICByZXR1
cm4gU2hhcmVkV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNoYXJlZFdvcmtlckNvbm5lY3Rp
b24oKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPFNoYXJlZFdvcmtlcj4+IFNoYXJlZFdvcmtlcjo6
Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdz
LCBTdHJpbmcmJiBzY3JpcHRVUkxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8c3RkOjp2YXJpYW50PFN0
cmluZywgV29ya2VyT3B0aW9ucz4+JiYgbWF5YmVPcHRpb25zKQorRXhjZXB0aW9uT3I8UmVmPFNo
YXJlZFdvcmtlcj4+IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgU3Ry
aW5nJiYgc2NyaXB0VVJMU3RyaW5nLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxTdHJpbmcs
IFdvcmtlck9wdGlvbnM+PiYmIG1heWJlT3B0aW9ucykKIHsKICAgICBpZiAoIW1haW5UaHJlYWRD
b25uZWN0aW9uKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJv
ciwgIlNoYXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkIiB9OwpAQCAtNzcsMjYgKzk0LDM3
IEBAIEV4Y2VwdGlvbk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBTaGFyZWRXb3JrZXI6OmNyZWF0ZShE
b2N1bWVudCYgZG9jdW1lbnQsIEpTQzo6UnVuCiAgICAgYXV0byBjaGFubmVsID0gTWVzc2FnZUNo
YW5uZWw6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgYXV0byB0cmFuc2ZlcnJlZFBvcnQgPSBjaGFu
bmVsLT5wb3J0MigpLmRpc2VudGFuZ2xlKCk7CiAKLSAgICBhdXRvIHNoYXJlZFdvcmtlciA9IGFk
b3B0UmVmKCpuZXcgU2hhcmVkV29ya2VyKGRvY3VtZW50LCBjaGFubmVsLT5wb3J0MSgpLCBydW50
aW1lRmxhZ3MpKTsKKyAgICBDbGllbnRPcmlnaW4gY2xpZW50T3JpZ2luIHsgZG9jdW1lbnQudG9w
RG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSwgZG9jdW1lbnQuc2VjdXJpdHlPcmln
aW4oKS5kYXRhKCkgfTsKKyAgICBTaGFyZWRXb3JrZXJLZXkga2V5IHsgY2xpZW50T3JpZ2luLCB1
cmwsIG9wdGlvbnMubmFtZSB9OworCisgICAgYXV0byBzaGFyZWRXb3JrZXIgPSBhZG9wdFJlZigq
bmV3IFNoYXJlZFdvcmtlcihkb2N1bWVudCwga2V5LCBjaGFubmVsLT5wb3J0MSgpKSk7CiAgICAg
c2hhcmVkV29ya2VyLT5zdXNwZW5kSWZOZWVkZWQoKTsKIAotICAgIG1haW5UaHJlYWRDb25uZWN0
aW9uKCktPnJlcXVlc3RTaGFyZWRXb3JrZXIodXJsLCBzaGFyZWRXb3JrZXIuZ2V0KCksIFdURk1v
dmUodHJhbnNmZXJyZWRQb3J0KSwgV1RGTW92ZShvcHRpb25zKSk7CisgICAgbWFpblRocmVhZENv
bm5lY3Rpb24oKS0+cmVxdWVzdFNoYXJlZFdvcmtlcihrZXksIHNoYXJlZFdvcmtlci0+aWRlbnRp
ZmllcigpLCBXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCksIG9wdGlvbnMpOwogICAgIHJldHVybiBz
aGFyZWRXb3JrZXI7CiB9CiAKLVNoYXJlZFdvcmtlcjo6U2hhcmVkV29ya2VyKERvY3VtZW50JiBk
b2N1bWVudCwgUmVmPE1lc3NhZ2VQb3J0PiYmIHBvcnQsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRp
bWVGbGFncykKK1NoYXJlZFdvcmtlcjo6U2hhcmVkV29ya2VyKERvY3VtZW50JiBkb2N1bWVudCwg
Y29uc3QgU2hhcmVkV29ya2VyS2V5JiBrZXksIFJlZjxNZXNzYWdlUG9ydD4mJiBwb3J0KQogICAg
IDogQWN0aXZlRE9NT2JqZWN0KCZkb2N1bWVudCkKKyAgICAsIG1fa2V5KGtleSkKKyAgICAsIG1f
aWRlbnRpZmllcihTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQogICAg
ICwgbV9wb3J0KFdURk1vdmUocG9ydCkpCiAgICAgLCBtX2lkZW50aWZpZXJGb3JJbnNwZWN0b3Io
IlNoYXJlZFdvcmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlk
ZW50aWZpZXIoKSkKLSAgICAsIG1fcnVudGltZUZsYWdzKHJ1bnRpbWVGbGFncykKLSAgICAsIG1f
Y3JlYXRpb25UaW1lKE1vbm90b25pY1RpbWU6Om5vdygpKQotICAgICwgbV9wcm94eShTaGFyZWRX
b3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlKCp0aGlzKSkKIHsKKyAgICBTSEFSRURfV09SS0VSX1JF
TEVBU0VfTE9HKCJTaGFyZWRXb3JrZXI6Iik7CisgICAgYWxsU2hhcmVkV29ya2VycygpLmFkZCht
X2lkZW50aWZpZXIsIHRoaXMpOworCisgICAgLy8gSWYgdGhlIHNoYXJlZCB3b3JrZXIgVVJMIGlz
IGEgYmxvYiBVUkwsIG1ha2Ugc3VyZSB0byBrZWVwIGl0IGFsaXZlIHVudGlsIHRoZSB3b3JrZXIg
aGFzIGZpbmlzaGVkIGxvYWRpbmcuCisgICAgaWYgKG1fa2V5LnVybC5wcm90b2NvbElzQmxvYigp
KQorICAgICAgICBtX2Jsb2JVUkxFeHRlbnNpb24gPSBtX2tleS51cmw7CiB9CiAKIFNoYXJlZFdv
cmtlcjo6flNoYXJlZFdvcmtlcigpCiB7Ci0gICAgbV9wcm94eS53b3JrZXJPYmplY3REZXN0cm95
ZWQoKTsKKyAgICBBU1NFUlQoYWxsU2hhcmVkV29ya2VycygpLmdldChtX2lkZW50aWZpZXIpID09
IHRoaXMpOworICAgIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coIn5TaGFyZWRXb3JrZXI6Iik7
CisgICAgYWxsU2hhcmVkV29ya2VycygpLnJlbW92ZShtX2lkZW50aWZpZXIpOworICAgIEFTU0VS
VCghbV9pc0FjdGl2ZSk7CiB9CiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFNoYXJlZFdvcmtl
cjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CkBAIC0xMTQsMTkgKzE0MiwyOSBAQCBF
dmVudFRhcmdldEludGVyZmFjZSBTaGFyZWRXb3JrZXI6OmV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkg
Y29uc3QKICAgICByZXR1cm4gU2hhcmVkV29ya2VyRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOwog
fQogCi12b2lkIFNoYXJlZFdvcmtlcjo6c3RvcCgpCit2b2lkIFNoYXJlZFdvcmtlcjo6ZGlkRmlu
aXNoTG9hZGluZyhjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICB0ZXJtaW5hdGUo
KTsKKyAgICBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HKCJmaW5pc2hMb2FkaW5nOiBzdWNjZXNz
PSVkIiwgZXJyb3IuaXNOdWxsKCkpOworICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKKyAgICAg
ICAgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVs
YXRpb24sIEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2ZW50OjpDYW5C
dWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKKyAgICAgICAgbV9pc0FjdGl2
ZSA9IGZhbHNlOworICAgIH0KKyAgICBtX2Jsb2JVUkxFeHRlbnNpb24uY2xlYXIoKTsKIH0KIAog
Ym9vbCBTaGFyZWRXb3JrZXI6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewot
ICAgIHJldHVybiBtX3Byb3h5Lmhhc1BlbmRpbmdBY3Rpdml0eSgpIHx8IG1faXNMb2FkaW5nOwor
ICAgIHJldHVybiBtX2lzQWN0aXZlOwogfQogCi12b2lkIFNoYXJlZFdvcmtlcjo6dGVybWluYXRl
KCkKK3ZvaWQgU2hhcmVkV29ya2VyOjpzdG9wKCkKIHsKLSAgICBtX3Byb3h5LnRlcm1pbmF0ZVdv
cmtlckdsb2JhbFNjb3BlKCk7CisgICAgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRygic3RvcDoi
KTsKKyAgICBtX2lzQWN0aXZlID0gZmFsc2U7CisgICAgbWFpblRocmVhZENvbm5lY3Rpb24oKS0+
c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkobV9rZXksIG1faWRlbnRpZmllcik7CiB9CiAK
KyN1bmRlZiBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HCisjdW5kZWYgU0hBUkVEX1dPUktFUl9S
RUxFQVNFX0xPR19FUlJPUgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5oCmluZGV4IGU1NWIxY2Y1NTEzZDEwNWY3
M2YxY2Q2MjkzMTVlMDY1N2UwMTliY2UuLmNkZDI2OWYzNjE5MTY5ZDRhYjA1ZjYwZDFhNzRiODhj
MDIzZmQyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
ci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI3LDM5ICsyNywzNyBAQAogCiAjaW5jbHVkZSAiQWJzdHJhY3RXb3JrZXIuaCIKICNpbmNs
dWRlICJBY3RpdmVET01PYmplY3QuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SdW50aW1l
RmxhZ3MuaD4KKyNpbmNsdWRlICJCbG9iVVJMLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyS2V5
LmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIgogI2luY2x1ZGUg
PHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVz
c2FnZVBvcnQ7Ci1jbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTsKK2NsYXNzIFJlc291cmNl
RXJyb3I7CiAKIHN0cnVjdCBXb3JrZXJPcHRpb25zOwogCiBjbGFzcyBTaGFyZWRXb3JrZXIgZmlu
YWwgOiBwdWJsaWMgQWJzdHJhY3RXb3JrZXIsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogICAg
IFdURl9NQUtFX0lTT19BTExPQ0FURUQoU2hhcmVkV29ya2VyKTsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgRXhjZXB0aW9uT3I8UmVmPFNoYXJlZFdvcmtlcj4+IGNyZWF0ZShEb2N1bWVudCYsIEpTQzo6
UnVudGltZUZsYWdzLCBTdHJpbmcmJiBzY3JpcHRVUkwsIHN0ZDo6b3B0aW9uYWw8c3RkOjp2YXJp
YW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxS
ZWY8U2hhcmVkV29ya2VyPj4gY3JlYXRlKERvY3VtZW50JiwgU3RyaW5nJiYgc2NyaXB0VVJMLCBz
dGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxTdHJpbmcsIFdvcmtlck9wdGlvbnM+PiYmKTsKICAg
ICB+U2hhcmVkV29ya2VyKCk7CiAKKyAgICBzdGF0aWMgU2hhcmVkV29ya2VyKiBmcm9tSWRlbnRp
ZmllcihTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0K
ICAgICBNZXNzYWdlUG9ydCYgcG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9ydC5nZXQoKTsgfQot
ICAgIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncygpIHsgcmV0dXJuIG1fcnVudGltZUZs
YWdzOyB9CiAKICAgICBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJGb3JJbnNwZWN0b3IoKSBjb25z
dCB7IHJldHVybiBtX2lkZW50aWZpZXJGb3JJbnNwZWN0b3I7IH0KLSAgICBNb25vdG9uaWNUaW1l
IGNyZWF0aW9uVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3JlYXRpb25UaW1lOyB9CiAKLSAgICBT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eSYgcHJveHkoKSB7IHJldHVybiBtX3Byb3h5OyB9Ci0KLSAg
ICB2b2lkIHNldElzTG9hZGluZyhib29sIGlzTG9hZGluZykgeyBtX2lzTG9hZGluZyA9IGlzTG9h
ZGluZzsgfQorICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBSZXNvdXJjZUVycm9yJik7
CiAKICAgICAvLyBFdmVudFRhcmdldC4KICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6Ci0gICAgU2hhcmVk
V29ya2VyKERvY3VtZW50JiwgUmVmPE1lc3NhZ2VQb3J0PiYmLCBKU0M6OlJ1bnRpbWVGbGFncyk7
Ci0KLSAgICB2b2lkIHRlcm1pbmF0ZSgpOworICAgIFNoYXJlZFdvcmtlcihEb2N1bWVudCYsIGNv
bnN0IFNoYXJlZFdvcmtlcktleSYsIFJlZjxNZXNzYWdlUG9ydD4mJik7CiAKICAgICAvLyBFdmVu
dFRhcmdldC4KICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgp
IGNvbnN0IGZpbmFsOwpAQCAtNzAsMTIgKzY4LDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCB2aXJ0
dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAKIAorICAgIFNoYXJlZFdvcmtl
cktleSBtX2tleTsKKyAgICBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIG1faWRlbnRpZmll
cjsKICAgICBSZWY8TWVzc2FnZVBvcnQ+IG1fcG9ydDsKICAgICBTdHJpbmcgbV9pZGVudGlmaWVy
Rm9ySW5zcGVjdG9yOwotICAgIEpTQzo6UnVudGltZUZsYWdzIG1fcnVudGltZUZsYWdzOwotICAg
IE1vbm90b25pY1RpbWUgbV9jcmVhdGlvblRpbWU7Ci0gICAgU2hhcmVkV29ya2VyVGhyZWFkUHJv
eHkmIG1fcHJveHk7IC8vIFRoZSBwcm94eSBvdXRsaXZlcyB0aGUgd29ya2VyIHRvIHBlcmZvcm0g
dGhyZWFkIHNodXRkb3duLgotICAgIGJvb2wgbV9pc0xvYWRpbmcgeyBmYWxzZSB9OworICAgIEJs
b2JVUkxIYW5kbGUgbV9ibG9iVVJMRXh0ZW5zaW9uOworICAgIGJvb2wgbV9pc0FjdGl2ZSB7IHRy
dWUgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaWRsCmluZGV4IGI2Mjg3NGQwZGU0NjcwZDQ4YTJk
MzE0YzEzMWU2MjRjMjA1NjJlM2QuLjJjM2EwODMxZWIyNzQxYjI2MzY0N2YxNzRlOGM1ODdiN2E0
MWViN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
LmlkbApAQCAtMjgsNyArMjgsNyBAQAogICAgIEV4cG9zZWQ9V2luZG93CiBdCiBpbnRlcmZhY2Ug
U2hhcmVkV29ya2VyIDogRXZlbnRUYXJnZXQgewotICBbQ2FsbFdpdGg9Q3VycmVudERvY3VtZW50
JlJ1bnRpbWVGbGFnc10gY29uc3RydWN0b3IoVVNWU3RyaW5nIHNjcmlwdFVSTCwgb3B0aW9uYWwg
KERPTVN0cmluZyBvciBXb3JrZXJPcHRpb25zKSBvcHRpb25zKTsKKyAgW0NhbGxXaXRoPUN1cnJl
bnREb2N1bWVudF0gY29uc3RydWN0b3IoVVNWU3RyaW5nIHNjcmlwdFVSTCwgb3B0aW9uYWwgKERP
TVN0cmluZyBvciBXb3JrZXJPcHRpb25zKSBvcHRpb25zKTsKIAogICByZWFkb25seSBhdHRyaWJ1
dGUgTWVzc2FnZVBvcnQgcG9ydDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlcktleS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmMmJhYTBmN2I5Y2MyNDk2MzUwYWQx
YmQxNDk0ZDZiOWRiMGE0NmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaApAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ2xpZW50T3JpZ2luLmgiCisjaW5jbHVkZSA8
d3RmL0hhc2hlci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgU2hhcmVkV29ya2Vy
S2V5IHsKKyAgICBDbGllbnRPcmlnaW4gb3JpZ2luOworICAgIFVSTCB1cmw7CisgICAgU3RyaW5n
IG5hbWU7CisKKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CisKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2hhcmVkV29ya2VyS2V5PiBkZWNvZGUo
RGVjb2RlciYpOworfTsKKworaW5saW5lIHVuc2lnbmVkIFNoYXJlZFdvcmtlcktleTo6aGFzaCgp
IGNvbnN0Cit7CisgICAgSGFzaGVyIGhhc2hlcjsKKyAgICBhZGQoaGFzaGVyLCBvcmlnaW4uaGFz
aCgpKTsKKyAgICBhZGQoaGFzaGVyLCB1cmwpOworICAgIGFkZChoYXNoZXIsIG5hbWUpOworICAg
IHJldHVybiBoYXNoZXIuaGFzaCgpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9p
ZCBTaGFyZWRXb3JrZXJLZXk6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAg
IGVuY29kZXIgPDwgb3JpZ2luIDw8IHVybCA8PCBuYW1lOworfQorCit0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPgorc3RkOjpvcHRpb25hbDxTaGFyZWRXb3JrZXJLZXk+IFNoYXJlZFdvcmtlcktleTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxDbGllbnRPcmln
aW4+IG9yaWdpbjsKKyAgICBkZWNvZGVyID4+IG9yaWdpbjsKKyAgICBpZiAoIW9yaWdpbikKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiB1cmw7
CisgICAgZGVjb2RlciA+PiB1cmw7CisgICAgaWYgKCF1cmwpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmFtZTsKKyAgICBkZWNvZGVy
ID4+IG5hbWU7CisgICAgaWYgKCFuYW1lKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpvcmlnaW4pLCBXVEZNb3ZlKCp1cmwpLCBXVEZNb3Zl
KCpuYW1lKSB9IH07Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkV29y
a2VyS2V5JiBhLCBjb25zdCBTaGFyZWRXb3JrZXJLZXkmIGIpCit7CisgICAgcmV0dXJuIGEub3Jp
Z2luID09IGIub3JpZ2luICYmIGEudXJsID09IGIudXJsICYmIGEubmFtZSA9PSBiLm5hbWU7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRl
PD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleT4geworICAgIHN0
YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYga2V5KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGtleS5oYXNoKCk7CisgICAgfQorCisgICAgc3RhdGljIGJv
b2wgZXF1YWwoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBhLCBjb25zdCBXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJLZXkmIGIpCisgICAgeworICAgICAgICByZXR1cm4gYSA9PSBiOworICAg
IH0KKworICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVk
ID0gZmFsc2U7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OlNo
YXJlZFdvcmtlcktleT4gOiBHZW5lcmljSGFzaFRyYWl0czxXZWJDb3JlOjpTaGFyZWRXb3JrZXJL
ZXk+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNl
OworICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpTaGFyZWRX
b3JrZXJLZXkmIHNsb3QpIHsgbmV3IChOb3ROdWxsLCAmc2xvdC51cmwpIFVSTChXVEY6Okhhc2hU
YWJsZURlbGV0ZWRWYWx1ZSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25z
dCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIHNsb3QpIHsgcmV0dXJuIHNsb3QudXJsLmlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc0MTA4NzdkYjMyMWY3OTUyZjMxMmM4
NmRjM2ZlNGEwYjU1ZDA3OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2Vy
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlck1hbmFnZXIuaCIKLQotI2luY2x1
ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgotI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNp
bmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgotI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgotI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgot
I2luY2x1ZGUgIlNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkLmgiCi0jaW5j
bHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCIKLSNpbmNsdWRlICJXb3JrZXJSdW5Mb29w
LmgiCi0jaW5jbHVkZSAiV29ya2VyU2NyaXB0TG9hZGVyLmgiCi0jaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1TaGFyZWRXb3JrZXJNYW5hZ2VyJiBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0
b24oKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFyZWRXb3JrZXJNYW5hZ2VyPiBp
bnN0YW5jZTsKLSAgICByZXR1cm4gaW5zdGFuY2UuZ2V0KCk7Ci19Ci0KLXZvaWQgU2hhcmVkV29y
a2VyTWFuYWdlcjo6Y29ubmVjdChjb25zdCBVUkwmIHVybCwgU2hhcmVkV29ya2VyJiB3b3JrZXIs
IFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBtZXNzYWdlUG9ydCwgV29ya2VyT3B0aW9ucyYmIG9w
dGlvbnMpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAvLyBGSVhNRTog
SGFuZGxlIHdvcmtlcnMgZnJvbSBvdGhlciBwcm9jZXNzZXMsIHdoaWNoIHdpbGwgcHJvYmFibHkg
cmVxdWlyZSBtb3ZpbmcgY29ubmVjdCB0byB0aGUgRnJhbWVMb2FkZXJDbGllbnQgb3Igc29tZXRo
aW5nLgotICAgIC8vIE1heWJlIHNvbWV0aGluZyBtb3JlIGxpa2Ugd2hhdCBTZXJ2aWNlV29ya2Vy
cyBkb2VzLgotCi0gICAgLy8gRklYTUU6IENoZWNrIGlmIHdlIGFscmVhZHkgbWFkZSBhIHRocmVh
ZC4KLSAgICAvLyBGSVhNRTogQ2hlY2sgaWYgdGhlcmUncyBhbHJlYWR5IGEgc2hhcmVkIHdvcmtl
ciBhbmQgdXNlIHRoYXQgaWYgdGhlcmUgaXMuCi0KLSAgICBhdXRvIGxvYWRlciA9IG1ha2VVbmlx
dWVSZWY8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPih1cmwsIHdvcmtlciwgV1RGTW92ZShtZXNz
YWdlUG9ydCksIFdURk1vdmUob3B0aW9ucykpOwotICAgIGF1dG8gaWRlbnRpZmllciA9IGxvYWRl
ci0+aWRlbnRpZmllcigpOwotICAgIG1fbG9hZGVycy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShs
b2FkZXIpKTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzY3JpcHRMb2FkRmFpbGVk
KFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYgbG9hZGVyKQotewotICAgIEFjdGl2ZURPTU9iamVj
dDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KGxvYWRlci53b3JrZXIoKSwgVGFza1NvdXJjZTo6
RE9NTWFuaXB1bGF0aW9uLCBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBF
dmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7Ci0gICAgbV9s
b2FkZXJzLnJlbW92ZShsb2FkZXIuaWRlbnRpZmllcigpKTsKLX0KLQotdm9pZCBTaGFyZWRXb3Jr
ZXJNYW5hZ2VyOjpzY3JpcHRMb2FkZWRTdWNjZXNzZnVsbHkoU2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVyJiBsb2FkZXIsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc2NyaXB0QnVmZmVyLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBTaGFyZWRXb3JrZXImIHNoYXJl
ZFdvcmtlciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHRyYW5zZmVycmVkUG9ydCkKLXsKLSAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8mIHdvcmtlciA9IGxvYWRlci53
b3JrZXIoKTsKLSAgICBhdXRvJiBvcHRpb25zID0gbG9hZGVyLm9wdGlvbnMoKTsKLQotICAgIGF1
dG8mIHByb3h5ID0gc2hhcmVkV29ya2VyLnByb3h5KCk7Ci0KLSAgICBwcm94eS5zdGFydFdvcmtl
ckdsb2JhbFNjb3BlKAotICAgICAgICBsb2FkZXIudXJsKCksCi0gICAgICAgIG9wdGlvbnMubmFt
ZSwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC51c2VyQWdlbnQobG9hZGVyLnVybCgp
KSwKLSAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmlzT25M
aW5lKCksCi0gICAgICAgIHNjcmlwdEJ1ZmZlciwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+cmVzcG9uc2VIZWFkZXJzKCksCi0gICAgICAg
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3Vy
aXR5UG9saWN5KCksCi0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3Jvc3NPcmlnaW5F
bWJlZGRlclBvbGljeSgpLAotICAgICAgICB3b3JrZXIuY3JlYXRpb25UaW1lKCksCi0gICAgICAg
IFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZywKLSAgICAgICAgb3B0aW9ucy50eXBlLAotICAg
ICAgICBvcHRpb25zLmNyZWRlbnRpYWxzLAotICAgICAgICB3b3JrZXIucnVudGltZUZsYWdzKCkK
LSAgICApOwotICAgIGlmICghcHJveHkudGhyZWFkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaXM8RG9jdW1lbnQ+KHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsKLSAgICBhdXRvIHNvdXJjZU9yaWdpbiA9IGRvd25jYXN0
PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5zZWN1cml0eU9yaWdpbigpLnRvU3Ry
aW5nKCk7Ci0KLSAgICBwcm94eS50aHJlYWQoKS0+cnVuTG9vcCgpLnBvc3RUYXNrKFt0cmFuc2Zl
cnJlZFBvcnQgPSBXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCksIHNvdXJjZU9yaWdpbiA9IFdURk1v
dmUoc291cmNlT3JpZ2luKS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpIG11dGFibGUgewotICAgICAgICBkb3duY2FzdDxTaGFyZWRXb3JrZXJHbG9iYWxTY29w
ZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkucG9zdENvbm5lY3RFdmVudChXVEZNb3ZlKHRyYW5z
ZmVycmVkUG9ydCksIHNvdXJjZU9yaWdpbik7Ci0gICAgfSk7Ci0KLSAgICBtX2xvYWRlcnMucmVt
b3ZlKGxvYWRlci5pZGVudGlmaWVyKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2Vy
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1MjE4MTZlNjVjNzc2NzFkOTMzN2E4
MTcxNTVlZjk5Nzg1NGQ4NDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdl
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaW5jbHVkZSAiTWVzc2FnZVBvcnRJZGVudGlmaWVyLmgiCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZFdv
cmtlcjsKLWNsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjsKLWNsYXNzIFNjcmlwdEJ1ZmZl
cjsKLXN0cnVjdCBXb3JrZXJPcHRpb25zOwotdXNpbmcgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCA9
IHN0ZDo6cGFpcjxXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0SWRlbnRpZmllcj47Ci0KLXVzaW5nIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcklkZW50
aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj47Ci0KLWNs
YXNzIFNoYXJlZFdvcmtlck1hbmFnZXIgewotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBTaGFyZWRXb3JrZXJNYW5hZ2VyJiBzaW5nbGV0b24oKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNvbm5lY3QoY29uc3QgVVJMJiwgU2hhcmVkV29ya2VyJiwgVHJhbnNmZXJyZWRNZXNz
YWdlUG9ydCYmLCBXb3JrZXJPcHRpb25zJiYpOwotCi0gICAgdm9pZCBzY3JpcHRMb2FkRmFpbGVk
KFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYpOwotICAgIHZvaWQgc2NyaXB0TG9hZGVkU3VjY2Vz
c2Z1bGx5KFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQ
b3J0JiYpOwotCi1wcml2YXRlOgotICAgIEhhc2hNYXA8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVy
SWRlbnRpZmllciwgVW5pcXVlUmVmPFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj4+IG1fbG9hZGVy
czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5j
cHAKaW5kZXggZGRhMzg0ZDIyOTEyMDI4M2MxMmQ0N2E1NzU2ODkyZjhhODAyYjU4Yi4uMWNkZTBi
YTM1OTU2OTFmYTBjZGZkMzc0MzFkM2Y0Yjk3NDhkNmE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbi5jcHAKQEAgLTI2LDEwICsyNiw2NiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCIKIAorI2luY2x1ZGUgIkFjdGl2ZURP
TU9iamVjdC5oIgorI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgi
CisjaW5jbHVkZSAiU2NyaXB0QnVmZmVyLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCisj
aW5jbHVkZSAiU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgiCisjaW5jbHVkZSAiV29ya2VyRmV0
Y2hSZXN1bHQuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjZGVmaW5lIENPTk5FQ1RJT05f
UkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCisj
ZGVmaW5lIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IoZm10LCAuLi4pIFJFTEVBU0VfTE9H
X0VSUk9SKFNoYXJlZFdvcmtlciwgIiVwIC0gU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6
IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCisKK3N0YXRpYyB1aW50NjRfdCBsb2FkZXJJZGVu
dGlmaWVyU2VlZCA9IDA7CisKIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OlNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CiAKIFNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb246On5TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCkgPSBkZWZhdWx0OwogCit2
b2lkIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OmZldGNoU2NyaXB0SW5DbGllbnQoVVJM
JiYgdXJsLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIsIFdvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdvcmtlckZldGNoUmVzdWx0Jik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGF1dG8qIHdvcmtl
ck9iamVjdCA9IFNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIoc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcik7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiZmV0Y2hTY3JpcHRJbkNs
aWVudDogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zLCB3b3JrZXI9JXAi
LCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwg
d29ya2VyT2JqZWN0KTsKKyAgICBpZiAoIXdvcmtlck9iamVjdCkKKyAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKHdvcmtlckZldGNoRXJyb3IoUmVzb3VyY2VFcnJvciB7IFJlc291cmNl
RXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbiB9KSk7CisKKyAgICBhdXRvIGxvYWRlcklkZW50aWZp
ZXIgPSArK2xvYWRlcklkZW50aWZpZXJTZWVkOworICAgIGF1dG8gbG9hZGVyID0gbWFrZVVuaXF1
ZVJlZjxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+KFdURk1vdmUodXJsKSwgKndvcmtlck9iamVj
dCwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSk7CisgICAgYXV0byBsb2FkZXJQdHIgPSBsb2FkZXIu
cHRyKCk7CisgICAgbV9sb2FkZXJzLmFkZChsb2FkZXJJZGVudGlmaWVyLCBXVEZNb3ZlKGxvYWRl
cikpOworCisgICAgbG9hZGVyUHRyLT5sb2FkKFt0aGlzLCBsb2FkZXJJZGVudGlmaWVyLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBXb3JrZXJG
ZXRjaFJlc3VsdCYgZmV0Y2hSZXN1bHQpIG11dGFibGUgeworICAgICAgICBDT05ORUNUSU9OX1JF
TEVBU0VfTE9HKCJmZXRjaFNjcmlwdEluQ2xpZW50OiBmaW5pc2hlZCBzY3JpcHQgbG9hZCwgc3Vj
Y2Vzcz0lZCIsIGZldGNoUmVzdWx0LmVycm9yLmlzTnVsbCgpKTsKKyAgICAgICAgYXV0byBsb2Fk
ZXIgPSBtX2xvYWRlcnMudGFrZShsb2FkZXJJZGVudGlmaWVyKTsKKyAgICAgICAgQVNTRVJUKGxv
YWRlcik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZldGNoUmVzdWx0KTsKKyAgICB9KTsK
K30KKwordm9pZCBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpub3RpZnlXb3JrZXJPYmpl
Y3RPZkxvYWRDb21wbGV0aW9uKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIg
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ip
Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBhdXRvKiB3b3JrZXJPYmplY3Qg
PSBTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVyKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIpOworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IoIm5vdGlmeVdvcmtlck9iamVj
dE9mTG9hZENvbXBsZXRpb246IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9
cywgd29ya2VyPSVwLCBzdWNjZXNzPSVkIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50
b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHdvcmtlck9iamVjdCwgZXJyb3IuaXNOdWxsKCkpOwor
ICAgIGlmICh3b3JrZXJPYmplY3QpCisgICAgICAgIHdvcmtlck9iamVjdC0+ZGlkRmluaXNoTG9h
ZGluZyhlcnJvcik7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6cG9z
dEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8qIHdvcmtlck9iamVjdCA9
IFNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
cik7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUigicG9zdEV4Y2VwdGlvblRvV29y
a2VyT2JqZWN0OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMsIHdvcmtl
cj0lcCIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0
YSgpLCB3b3JrZXJPYmplY3QpOworICAgIGlmICh3b3JrZXJPYmplY3QpCisgICAgICAgIEFjdGl2
ZURPTU9iamVjdDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCp3b3JrZXJPYmplY3QsIFRhc2tT
b3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgRXJyb3JFdmVudDo6Y3JlYXRlKGVycm9yTWVzc2FnZSwg
c291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHsgfSkpOworfQorCisjdW5kZWYg
Q09OTkVDVElPTl9SRUxFQVNFX0xPRworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJS
T1IKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oCmluZGV4
IDRlZDVhMWM2NWI1OGQwOThkYzBmNjgwOGI2MGVlMGEwMzg3ZDdiZDYuLjY3YTIwMjA4ZmQyN2Yw
OTEyZWZmNjFiM2VmZmYyNGJkM2Y4MGVhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKQEAg
LTI1LDIyICsyNSwzOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0Lmgi
CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
U2hhcmVkV29ya2VyOworY2xhc3MgTWVzc2FnZVBvcnQ7CitjbGFzcyBTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXI7CisKK3N0cnVjdCBTaGFyZWRXb3JrZXJLZXk7CitzdHJ1Y3QgV29ya2VyRmV0Y2hS
ZXN1bHQ7CiBzdHJ1Y3QgV29ya2VyT3B0aW9uczsKIAogY2xhc3MgU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b24+IHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5TaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFNoYXJlZFdvcmtl
cihjb25zdCBVUkwmLCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdv
cmtlck9wdGlvbnMmJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2Vy
KGNvbnN0IFNoYXJlZFdvcmtlcktleSYsIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFRy
YW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgY29uc3QgV29ya2VyT3B0aW9ucyYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoY29uc3QgU2hhcmVkV29y
a2VyS2V5JiwgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikgPSAwOwogCiBwcm90ZWN0ZWQ6
CisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmV0Y2hTY3Jp
cHRJbkNsaWVudChVUkwmJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwg
V29ya2VyT3B0aW9ucyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdvcmtlckZldGNo
UmVzdWx0Jik+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5V29ya2VyT2JqZWN0
T2ZMb2FkQ29tcGxldGlvbihXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBj
b25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0RXhjZXB0
aW9uVG9Xb3JrZXJPYmplY3QoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCk7CisKICAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uKCk7CisKK3ByaXZhdGU6CisgICAgSGFzaE1hcDx1aW50NjRfdCwgVW5p
cXVlUmVmPFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj4+IG1fbG9hZGVyczsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYmNk
NGE3YWU4N2FkZjVmYjFjNzRkNTY4MjQ2MTEyNzRhNWY5MmVkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ci5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIlByb2Nlc3NRdWFsaWZpZWQuaCIKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllclR5cGUgeyB9OwordXNpbmcgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA9IFByb2Nl
c3NRdWFsaWZpZWQ8T2JqZWN0SWRlbnRpZmllcjxTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
VHlwZT4+OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRl
eCAzMTFlYmQ2MDc4YmM2MWUwMTY5ZjFhODRlYTcxNjRiMDg0MzZjNjM5Li5lYTJlMDQ4Yzc2MjJh
NjI3NjFlM2MyNWUyNTJkMjdmODk1MTFjNjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksMjMg
KzI5LDI2IEBACiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgotI2luY2x1ZGUgIlNo
YXJlZFdvcmtlck1hbmFnZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJGZXRjaFJlc3VsdC5oIgogI2lu
Y2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRMb2FkZXIuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OlNoYXJl
ZFdvcmtlclNjcmlwdExvYWRlcihjb25zdCBVUkwmIHVybCwgU2hhcmVkV29ya2VyJiB3b3JrZXIs
IFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBXb3JrZXJPcHRpb25zJiYgb3B0aW9ucykK
LSAgICA6IG1faWRlbnRpZmllcihTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXJJZGVudGlmaWVyOjpn
ZW5lcmF0ZSgpKQotICAgICwgbV9vcHRpb25zKFdURk1vdmUob3B0aW9ucykpCitTaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXI6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRlcihVUkwmJiB1cmwsIFNoYXJl
ZFdvcmtlciYgd29ya2VyLCBXb3JrZXJPcHRpb25zJiYgb3B0aW9ucykKKyAgICA6IG1fb3B0aW9u
cyhXVEZNb3ZlKG9wdGlvbnMpKQogICAgICwgbV93b3JrZXIod29ya2VyKQotICAgICwgbV9wb3J0
KFdURk1vdmUocG9ydCkpCiAgICAgLCBtX2xvYWRlcihXb3JrZXJTY3JpcHRMb2FkZXI6OmNyZWF0
ZSgpKQotICAgICwgbV9wZW5kaW5nQWN0aXZpdHkod29ya2VyLm1ha2VQZW5kaW5nQWN0aXZpdHko
d29ya2VyKSkKLSAgICAsIG1fdXJsKHVybCkKKyAgICAsIG1fdXJsKFdURk1vdmUodXJsKSkKIHsK
LSAgICBtX3dvcmtlci0+c2V0SXNMb2FkaW5nKHRydWUpOwotICAgIG1fbG9hZGVyLT5sb2FkQXN5
bmNocm9ub3VzbHkoKndvcmtlci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFJlc291cmNlUmVx
dWVzdCh1cmwpLCB3b3JrZXIud29ya2VyRmV0Y2hPcHRpb25zKG9wdGlvbnMsIEZldGNoT3B0aW9u
czo6RGVzdGluYXRpb246OlNoYXJlZHdvcmtlciksIENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9y
Y2VtZW50OjpFbmZvcmNlV29ya2VyU3JjRGlyZWN0aXZlLCBTZXJ2aWNlV29ya2Vyc01vZGU6OkFs
bCwgKnRoaXMsIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOworfQorCit2b2lkIFNoYXJl
ZFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdv
cmtlckZldGNoUmVzdWx0Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKCFt
X2NvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBtX2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBtX2xvYWRlci0+bG9hZEFzeW5jaHJvbm91c2x5KCpt
X3dvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBSZXNvdXJjZVJlcXVlc3QobV91cmwp
LCBtX3dvcmtlci0+d29ya2VyRmV0Y2hPcHRpb25zKG1fb3B0aW9ucywgRmV0Y2hPcHRpb25zOjpE
ZXN0aW5hdGlvbjo6U2hhcmVkd29ya2VyKSwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1l
bnQ6OkVuZm9yY2VXb3JrZXJTcmNEaXJlY3RpdmUsIFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsLCAq
dGhpcywgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiB9CiAKIHZvaWQgU2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQpAQCAtNTUsMTYgKzU4LDEy
IEBAIHZvaWQgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50CiAKIHZvaWQgU2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVyOjpub3RpZnlGaW5pc2hlZCgpCiB7Ci0gICAgbV93b3JrZXItPnNldElzTG9hZGluZyhmYWxz
ZSk7CisgICAgaWYgKG1fbG9hZGVyLT5mYWlsZWQoKSkKKyAgICAgICAgcmV0dXJuIG1fY29tcGxl
dGlvbkhhbmRsZXIod29ya2VyRmV0Y2hFcnJvcihtX2xvYWRlci0+ZXJyb3IoKSkpOwogCi0gICAg
YXV0byogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IG1fd29ya2VyLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7Ci0gICAgaWYgKG1fbG9hZGVyLT5mYWlsZWQoKSB8fCAhc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkgewotICAgICAgICBtX3dvcmtlci0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6WWVzKSk7Ci0gICAgICAgIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNpbmdsZXRv
bigpLnNjcmlwdExvYWRGYWlsZWQoKnRoaXMpOyAvLyBkZWxldGVzIHRoaXMuCi0gICAgfSBlbHNl
IHsKKyAgICBpZiAoYXV0byogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IG1fd29ya2VyLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
c2NyaXB0SW1wb3J0ZWQoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG1fbG9hZGVyLT5pZGVudGlm
aWVyKCksIG1fbG9hZGVyLT5zY3JpcHQoKS50b1N0cmluZygpKTsKLSAgICAgICAgU2hhcmVkV29y
a2VyTWFuYWdlcjo6c2luZ2xldG9uKCkuc2NyaXB0TG9hZGVkU3VjY2Vzc2Z1bGx5KCp0aGlzLCBt
X2xvYWRlci0+c2NyaXB0KCksICptX3dvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBt
X3dvcmtlci5nZXQoKSwgc3RkOjpleGNoYW5nZShtX3BvcnQsIHsgfSkpOyAvLyBkZWxldGVzIHRo
aXMuCi0gICAgfQorICAgIG1fY29tcGxldGlvbkhhbmRsZXIoeyBtX2xvYWRlci0+c2NyaXB0KCks
IG1fbG9hZGVyLT5jZXJ0aWZpY2F0ZUluZm8oKSwgbV9sb2FkZXItPmNvbnRlbnRTZWN1cml0eVBv
bGljeSgpLCBtX2xvYWRlci0+Y3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSgpLCBtX2xvYWRlci0+
cmVmZXJyZXJQb2xpY3koKSwgeyB9IH0pOyAvLyBkZWxldGVzIHRoaXMuCiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgKaW5kZXggYWU1YjNiYjllYzUyMDc0NTMzZWZk
ODQwOTJjZWVhOTk5ZjIwMTc5OS4uZWIwYjcxNDViZmExYWJmNDVkZDk2MmEwMjE1Y2I4OTA5Y2Nj
ZDM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyU2NyaXB0TG9hZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMTEgKzI1LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydElkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZVJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyTWFuYWdlci5oIgog
I2luY2x1ZGUgIldvcmtlck9wdGlvbnMuaCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRMb2FkZXJD
bGllbnQuaCIKICNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgpAQCAtMzksMzIgKzM3
LDI4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2hhcmVkV29ya2VyOwogY2xhc3Mg
V29ya2VyU2NyaXB0TG9hZGVyOwotCi1jbGFzcyBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI7Ci0K
LXVzaW5nIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQgPSBzdGQ6OnBhaXI8V2ViQ29yZTo6TWVzc2Fn
ZVBvcnRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXI+Oworc3RydWN0
IFdvcmtlckZldGNoUmVzdWx0OwogCiBjbGFzcyBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIgOiBw
cml2YXRlIFdvcmtlclNjcmlwdExvYWRlckNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyKGNvbnN0IFVSTCYs
IFNoYXJlZFdvcmtlciYsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgV29ya2VyT3B0aW9ucyYm
KTsKKyAgICBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIoVVJMJiYsIFNoYXJlZFdvcmtlciYsIFdv
cmtlck9wdGlvbnMmJik7CisKKyAgICB2b2lkIGxvYWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBXb3JrZXJGZXRjaFJlc3VsdCYpPiYmKTsKIAotICAgIFNoYXJlZFdvcmtlclNjcmlwdExv
YWRlcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsg
fQogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBTaGFy
ZWRXb3JrZXImIHdvcmtlcigpIHsgcmV0dXJuIG1fd29ya2VyLmdldCgpOyB9Ci0gICAgY29uc3Qg
V29ya2VyT3B0aW9ucyYgb3B0aW9ucygpIHsgcmV0dXJuIG1fb3B0aW9uczsgfQorICAgIGNvbnN0
IFdvcmtlck9wdGlvbnMmIG9wdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnM7IH0KIAog
cHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeUZp
bmlzaGVkKCkgZmluYWw7CiAKLSAgICBjb25zdCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXJJZGVu
dGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBjb25zdCBXb3JrZXJPcHRpb25zIG1fb3B0aW9uczsK
ICAgICBjb25zdCBSZWY8U2hhcmVkV29ya2VyPiBtX3dvcmtlcjsKLSAgICBUcmFuc2ZlcnJlZE1l
c3NhZ2VQb3J0IG1fcG9ydDsKICAgICBjb25zdCBSZWY8V29ya2VyU2NyaXB0TG9hZGVyPiBtX2xv
YWRlcjsKLSAgICBjb25zdCBSZWY8QWN0aXZlRE9NT2JqZWN0OjpQZW5kaW5nQWN0aXZpdHk8U2hh
cmVkV29ya2VyPj4gbV9wZW5kaW5nQWN0aXZpdHk7CiAgICAgY29uc3QgVVJMIG1fdXJsOworICAg
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKT4gbV9jb21w
bGV0aW9uSGFuZGxlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDdhOTBkOTgwNTEyNGJlYWJj
MmU2NGRkMjMwODQ5ZjM2Mjk4NDdjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwCkBA
IC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgi
CisjaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlciYgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpCit7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyPiBzaGFy
ZWRNYW5hZ2VyOworICAgIHJldHVybiBzaGFyZWRNYW5hZ2VyOworfQorCitTaGFyZWRXb3JrZXJU
aHJlYWRQcm94eSogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNoYXJlZFdvcmtlcihTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fd29ya2VyTWFwLmdldChzaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c3RvcFNoYXJlZFdvcmtlcihTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIpCit7CisgICAgYXV0byB3b3JrZXIg
PSBtX3dvcmtlck1hcC50YWtlKHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworICAgIFJFTEVBU0Vf
TE9HKFNoYXJlZFdvcmtlciwgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzdG9wU2hhcmVk
V29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCAiLCB3b3JrZXI9JXAiLCBz
aGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCksIHdvcmtlci5nZXQoKSk7CisgICAgaWYg
KCF3b3JrZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHdvcmtlci0+c2V0QXNUZXJtaW5hdGlu
Z09yVGVybWluYXRlZCgpOworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGRl
YWwgd2l0aCB0aGUgdGhyZWFkIGJlaW5nIHVucmVzcG9uc2l2ZSBoZXJlLgorCisgICAgYXV0byYg
dGhyZWFkID0gd29ya2VyLT50aHJlYWQoKTsKKyAgICB0aHJlYWQuc3RvcChbd29ya2VyID0gV1RG
TW92ZSh3b3JrZXIpXSgpIG11dGFibGUgeworICAgICAgICAvLyBTcGluIHRoZSBydW5sb29wIGJl
Zm9yZSByZWxlYXNpbmcgdGhlIHNoYXJlZCB3b3JrZXIgdGhyZWFkIHByb3h5LCBhcyB0aGVyZSB3
b3VsZCBvdGhlcndpc2UgYmUKKyAgICAgICAgLy8gYSByYWNlIHRvd2FyZHMgaXRzIGRlc3RydWN0
aW9uLgorICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3b3JrZXIgPSBXVEZNb3ZlKHdvcmtlcild
IHsgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0
b3BBbGxTaGFyZWRXb3JrZXJzKCkKK3sKKyAgICB3aGlsZSAoIW1fd29ya2VyTWFwLmlzRW1wdHko
KSkKKyAgICAgICAgc3RvcFNoYXJlZFdvcmtlcihtX3dvcmtlck1hcC5iZWdpbigpLT5rZXkpOwor
fQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzZXRDb25uZWN0aW9uKHN0ZDo6
dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCit7CisgICAgQVNTRVJUKCFtX2Nv
bm5lY3Rpb24gfHwgbV9jb25uZWN0aW9uLT5pc0Nsb3NlZCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24g
PSBXVEZNb3ZlKGNvbm5lY3Rpb24pOworfQorCithdXRvIFNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyOjpjb25uZWN0aW9uKCkgY29uc3QgLT4gQ29ubmVjdGlvbioKK3sKKyAgICByZXR1cm4gbV9j
b25uZWN0aW9uLmdldCgpOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpy
ZWdpc3RlclNoYXJlZFdvcmtlclRocmVhZChSZWY8U2hhcmVkV29ya2VyVGhyZWFkUHJveHk+JiYg
cHJveHkpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBSRUxFQVNFX0xPRyhT
aGFyZWRXb3JrZXIsICJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6cmVnaXN0ZXJTaGFyZWRX
b3JrZXJUaHJlYWQ6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBwcm94eS0+aWRl
bnRpZmllcigpLnRvVUludDY0KCkpOworCisgICAgYXV0byByZXN1bHQgPSBtX3dvcmtlck1hcC5h
ZGQocHJveHktPmlkZW50aWZpZXIoKSwgcHJveHkuY29weVJlZigpKTsKKyAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgcHJveHktPnRocmVhZCgpLnN0
YXJ0KFtdKGNvbnN0IFN0cmluZyYgLypleGNlcHRpb25NZXNzYWdlKi8pIHsgfSk7Cit9CisKK3Zv
aWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb246OnBvc3RDb25uZWN0RXZl
bnQoU2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBUcmFuc2Zl
cnJlZE1lc3NhZ2VQb3J0JiYgdHJhbnNmZXJyZWRQb3J0LCBTdHJpbmcmJiBzb3VyY2VPcmlnaW4p
Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBhdXRvKiBwcm94eSA9IFNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zaGFyZWRXb3JrZXIoc2hhcmVkV29y
a2VySWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb246OnBvc3RDb25uZWN0RXZlbnQ6IHNoYXJlZFdv
cmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHByb3h5PSVwIiwgc2hhcmVkV29ya2VySWRlbnRp
Zmllci50b1VJbnQ2NCgpLCBwcm94eSk7CisgICAgaWYgKCFwcm94eSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgcHJveHktPnRocmVhZCgpLnJ1bkxvb3AoKS5wb3N0VGFzayhbdHJhbnNmZXJyZWRQ
b3J0ID0gV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBzb3VyY2VPcmlnaW4gPSBXVEZNb3ZlKHNv
dXJjZU9yaWdpbikuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgICAgIGRv
d25jYXN0PFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5w
b3N0Q29ubmVjdEV2ZW50KFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwgV1RGTW92ZShzb3VyY2VP
cmlnaW4pKTsKKyAgICB9KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6
Q29ubmVjdGlvbjo6dGVybWluYXRlU2hhcmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIg
c2hhcmVkV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
OjpDb25uZWN0aW9uOjp0ZXJtaW5hdGVTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZp
ZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIFNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zdG9wU2hhcmVkV29ya2VyKHNo
YXJlZFdvcmtlcklkZW50aWZpZXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0
L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzM4MjUyODkzNzNlMGU2
ODYxYjllY2U3ZDdiZTljMTMxNmM5MGUyMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaApA
QCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJT
aGFyZWRXb3JrZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiVHJhbnNmZXJyZWRNZXNzYWdlUG9y
dC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk7CisKK2NsYXNzIFNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXImIHNpbmdsZXRvbigpOworCisgICAgU2hhcmVkV29ya2VyVGhyZWFk
UHJveHkqIHNoYXJlZFdvcmtlcihTaGFyZWRXb3JrZXJJZGVudGlmaWVyKSBjb25zdDsKKyAgICB2
b2lkIHN0b3BTaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzdG9wQWxsU2hhcmVkV29ya2VycygpOworCisgICAgY2xhc3MgQ29ubmVj
dGlvbiB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAg
ICAgICAgdmlydHVhbCB+Q29ubmVjdGlvbigpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZXN0
YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChTaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSA9IDA7CisgICAgICAgIGJv
b2wgaXNDbG9zZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xvc2VkOyB9CisKKyAgICBwcm90ZWN0
ZWQ6CisgICAgICAgIHZvaWQgc2V0QXNDbG9zZWQoKSB7IG1faXNDbG9zZWQgPSB0cnVlOyB9CisK
KyAgICAgICAgLy8gSVBDIG1lc3NhZ2UgaGFuZGxlcnMuCisgICAgICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcG9zdENvbm5lY3RFdmVudChTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBUcmFuc2ZlcnJl
ZE1lc3NhZ2VQb3J0JiYsIFN0cmluZyYmIHNvdXJjZU9yaWdpbik7CisgICAgICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgdGVybWluYXRlU2hhcmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIp
OworCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCBtX2lzQ2xvc2VkIHsgZmFsc2UgfTsKKyAg
ICB9OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb25uZWN0aW9uKHN0ZDo6dW5pcXVl
X3B0cjxDb25uZWN0aW9uPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb25uZWN0aW9uKiBjb25u
ZWN0aW9uKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZ2lzdGVyU2hhcmVk
V29ya2VyVGhyZWFkKFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4mJik7CisKK3ByaXZhdGU6
CisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPFNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyPjsKKworICAgIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyKCkgPSBkZWZhdWx0OworCisg
ICAgc3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBIYXNoTWFw
PFNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4+IG1f
d29ya2VyTWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtl
clRocmVhZFByb3h5LmNwcAppbmRleCA5YmQ5NzgzZDdhN2U1OGU2N2I2YjgwYjVkNTQ0ZmVjMmVj
ZjJjYWY1Li4xZWRmNzM0ZmYyOTY1ZWRlMTE4MDI2YTliOTZjZmE1NDBmMWRmYzIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRo
cmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0
L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw5NCArMjgsNzIgQEAKIAogI2luY2x1ZGUg
IkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgorI2luY2x1
ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJGcmFt
ZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlk
ZXIuaCIKKyNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVu
dC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsUmVtb3Rl
SGFuZGxlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKKyNpbmNsdWRl
ICJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlckds
b2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkLmgiCisjaW5jbHVkZSAi
V29ya2VyRmV0Y2hSZXN1bHQuaCIKKyNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1TaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHko
U2hhcmVkV29ya2VyJiBzaGFyZWRXb3JrZXIpCi0gICAgOiBtX3NoYXJlZFdvcmtlcihzaGFyZWRX
b3JrZXIpCi0gICAgLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoc2hhcmVkV29ya2VyLnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAsIG1faWRlbnRpZmllckZvckluc3BlY3RvcihzaGFy
ZWRXb3JrZXIuaWRlbnRpZmllckZvckluc3BlY3RvcigpKQorc3RhdGljIEhhc2hTZXQ8U2hhcmVk
V29ya2VyVGhyZWFkUHJveHkqPiYgYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGllcygpCiB7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U2hhcmVkV29ya2VyVGhyZWFkUHJveHkq
Pj4gc2V0OworICAgIHJldHVybiBzZXQ7CiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJv
eHk6OnN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUsIGNvbnN0
IFNjcmlwdEJ1ZmZlciYgc2NyaXB0QnVmZmVyLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lS
ZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywgYm9v
bCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnN0IENyb3Nz
T3JpZ2luRW1iZWRkZXJQb2xpY3kmIGNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ksIE1vbm90b25p
Y1RpbWUgdGltZU9yaWdpbiwgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5
cGUgd29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVudGlhbHMsIEpTQzo6
UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncykKK3N0YXRpYyBXb3JrZXJQYXJhbWV0ZXJzIGdlbmVy
YXRlV29ya2VyUGFyYW1ldGVycyhjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgV29ya2VyRmV0
Y2hSZXN1bHQmIHdvcmtlckZldGNoUmVzdWx0LCBXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9u
cywgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICBp
ZiAobV9hc2tlZFRvVGVybWluYXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHBhcmFt
ZXRlcnMgPSBXb3JrZXJQYXJhbWV0ZXJzIHsKKyAgICByZXR1cm4gV29ya2VyUGFyYW1ldGVycyB7
CiAgICAgICAgIHNjcmlwdFVSTCwKLSAgICAgICAgbmFtZSwKLSAgICAgICAgbV9pZGVudGlmaWVy
Rm9ySW5zcGVjdG9yLAorICAgICAgICB3b3JrZXJPcHRpb25zLm5hbWUsCisgICAgICAgICJzaGFy
ZWR3b3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlm
aWVyKCksCiAgICAgICAgIHVzZXJBZ2VudCwKLSAgICAgICAgaXNPbmxpbmUsCi0gICAgICAgIGNv
bnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywKLSAgICAgICAgc2hvdWxkQnlwYXNz
TWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LAotICAgICAgICBjcm9zc09yaWdpbkVtYmVk
ZGVyUG9saWN5LAotICAgICAgICB0aW1lT3JpZ2luLAotICAgICAgICByZWZlcnJlclBvbGljeSwK
LSAgICAgICAgd29ya2VyVHlwZSwKLSAgICAgICAgY3JlZGVudGlhbHMsCi0gICAgICAgIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+c2V0dGluZ3NWYWx1ZXMoKQorICAgICAgICBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+aXNPbkxpbmUoKSwKKyAgICAgICAgd29ya2Vy
RmV0Y2hSZXN1bHQuY29udGVudFNlY3VyaXR5UG9saWN5LAorICAgICAgICBmYWxzZSwKKyAgICAg
ICAgd29ya2VyRmV0Y2hSZXN1bHQuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwKKyAgICAgICAg
TW9ub3RvbmljVGltZTo6bm93KCksCisgICAgICAgIHBhcnNlUmVmZXJyZXJQb2xpY3kod29ya2Vy
RmV0Y2hSZXN1bHQucmVmZXJyZXJQb2xpY3ksIFJlZmVycmVyUG9saWN5U291cmNlOjpIVFRQSGVh
ZGVyKS52YWx1ZV9vcihSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcpLAorICAgICAgICB3b3Jr
ZXJPcHRpb25zLnR5cGUsCisgICAgICAgIHdvcmtlck9wdGlvbnMuY3JlZGVudGlhbHMsCisgICAg
ICAgIGRvY3VtZW50LnNldHRpbmdzVmFsdWVzKCkKICAgICB9OwotCi0gICAgaWYgKCFtX3dvcmtl
clRocmVhZCkgewotICAgICAgICBtX3dvcmtlclRocmVhZCA9IFNoYXJlZFdvcmtlclRocmVhZDo6
Y3JlYXRlKFNoYXJlZFdvcmtlcklkZW50aWZpZXI6OmdlbmVyYXRlKCksIHBhcmFtZXRlcnMsIHNj
cmlwdEJ1ZmZlciwgKnRoaXMsICp0aGlzLCAqdGhpcywgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpO
b3JtYWwsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+dG9wT3JpZ2luKCksIG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+aWRiQ29ubmVjdGlvblByb3h5KCksIG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+c29ja2V0UHJvdmlkZXIoKSwgcnVudGltZUZsYWdzKTsKLSAgICAgICAgbV93b3JrZXJU
aHJlYWQtPnN0YXJ0KCk7Ci0gICAgfQotfQotCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5
Ojp0ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpCi17Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1p
bmF0ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9hc2tlZFRvVGVybWluYXRlID0gdHJ1ZTsK
LSAgICBpZiAobV93b3JrZXJUaHJlYWQpCi0gICAgICAgIG1fd29ya2VyVGhyZWFkLT5zdG9wKG51
bGxwdHIpOwogfQogCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0TWVzc2FnZVRv
V29ya2VyR2xvYmFsU2NvcGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlKQorU2hh
cmVkV29ya2VyVGhyZWFkUHJveHk6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5KFVuaXF1ZVJlZjxQ
YWdlPiYmIHBhZ2UsIFNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmll
ciwgY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIGNvbnN0IFVSTCYgc2NyaXB0VVJM
LCBXb3JrZXJGZXRjaFJlc3VsdCYmIHdvcmtlckZldGNoUmVzdWx0LCBXb3JrZXJPcHRpb25zJiYg
d29ya2VyT3B0aW9ucywgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIENhY2hlU3RvcmFnZVByb3Zp
ZGVyJiBjYWNoZVN0b3JhZ2VQcm92aWRlcikKKyAgICA6IG1fcGFnZShXVEZNb3ZlKHBhZ2UpKQor
ICAgICwgbV9kb2N1bWVudCgqbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQorICAgICwg
bV93b3JrZXJUaHJlYWQoU2hhcmVkV29ya2VyVGhyZWFkOjpjcmVhdGUoc2hhcmVkV29ya2VySWRl
bnRpZmllciwgZ2VuZXJhdGVXb3JrZXJQYXJhbWV0ZXJzKHNjcmlwdFVSTCwgd29ya2VyRmV0Y2hS
ZXN1bHQsIFdURk1vdmUod29ya2VyT3B0aW9ucyksIHVzZXJBZ2VudCwgbV9kb2N1bWVudCksIFdU
Rk1vdmUod29ya2VyRmV0Y2hSZXN1bHQuc2NyaXB0KSwgKnRoaXMsICp0aGlzLCAqdGhpcywgV29y
a2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIGNsaWVudE9yaWdpbi50b3BPcmlnaW4uc2VjdXJp
dHlPcmlnaW4oKSwgbV9kb2N1bWVudC0+aWRiQ29ubmVjdGlvblByb3h5KCksIG1fZG9jdW1lbnQt
PnNvY2tldFByb3ZpZGVyKCksIEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVkKCkp
KQorICAgICwgbV9jYWNoZVN0b3JhZ2VQcm92aWRlcihjYWNoZVN0b3JhZ2VQcm92aWRlcikKIHsK
LSAgICAvLyBGSVhNRTogU2hhcmVkV29ya2VyIGRvZXNuJ3QgaGF2ZSBwb3N0TWVzc2FnZSwgc28g
dGhpcyBtaWdodCBub3QgYmUgbmVjZXNzYXJ5LgotICAgIHBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxT
Y29wZShbbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSldKGF1dG8mIHNjcmlwdENvbnRleHQpIG11
dGFibGUgewotICAgICAgICBhdXRvJiBjb250ZXh0ID0gZG93bmNhc3Q8U2hhcmVkV29ya2VyR2xv
YmFsU2NvcGU+KHNjcmlwdENvbnRleHQpOwotICAgICAgICBhdXRvIHBvcnRzID0gTWVzc2FnZVBv
cnQ6OmVudGFuZ2xlUG9ydHMoc2NyaXB0Q29udGV4dCwgV1RGTW92ZShtZXNzYWdlLnRyYW5zZmVy
cmVkUG9ydHMpKTsKLSAgICAgICAgY29udGV4dC5kaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6
Y3JlYXRlKFdURk1vdmUocG9ydHMpLCBtZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSkp
OwotICAgIH0pOwotfQorICAgIEFTU0VSVCghYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGllcygp
LmNvbnRhaW5zKHRoaXMpKTsKKyAgICBhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkuYWRk
KHRoaXMpOwogCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0VGFza1RvV29ya2Vy
R2xvYmFsU2NvcGUoRnVuY3Rpb248dm9pZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+JiYgdGFz
aykKLXsKLSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQotICAgICAgICByZXR1cm47Ci0gICAg
bV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhXVEZNb3ZlKHRhc2spKTsKLX0KLQot
Ym9vbCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9oYXNQZW5kaW5nQWN0aXZpdHkgJiYgIW1fYXNrZWRUb1Rlcm1pbmF0
ZTsKKyAgICBzdGF0aWMgYm9vbCBhZGRlZExpc3RlbmVyOworICAgIGlmICghYWRkZWRMaXN0ZW5l
cikgeworICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+YWRk
T25saW5lU3RhdGVDaGFuZ2VMaXN0ZW5lcigmbmV0d29ya1N0YXRlQ2hhbmdlZCk7CisgICAgICAg
IGFkZGVkTGlzdGVuZXIgPSB0cnVlOworICAgIH0KIH0KIAotdm9pZCBTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eTo6d29ya2VyT2JqZWN0RGVzdHJveWVkKCkKK1NoYXJlZFdvcmtlclRocmVhZFByb3h5
Ojp+U2hhcmVkV29ya2VyVGhyZWFkUHJveHkoKQogewotICAgIG1fc2hhcmVkV29ya2VyID0gbnVs
bHB0cjsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzXSAoYXV0
byYpIHsKLSAgICAgICAgbV9tYXlCZURlc3Ryb3llZCA9IHRydWU7Ci0gICAgICAgIGlmIChtX3dv
cmtlclRocmVhZCkKLSAgICAgICAgICAgIHRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCk7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJu
YWwoKTsKLSAgICB9KTsKKyAgICBBU1NFUlQoYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGllcygp
LmNvbnRhaW5zKHRoaXMpKTsKKyAgICBhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkucmVt
b3ZlKHRoaXMpOwogfQogCiBTaGFyZWRXb3JrZXJJZGVudGlmaWVyIFNoYXJlZFdvcmtlclRocmVh
ZFByb3h5OjppZGVudGlmaWVyKCkgY29uc3QKQEAgLTEyNSw4OCArMTAzLDUwIEBAIFNoYXJlZFdv
cmtlcklkZW50aWZpZXIgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OmlkZW50aWZpZXIoKSBjb25z
dAogCiB2b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpub3RpZnlOZXR3b3JrU3RhdGVDaGFu
Z2UoYm9vbCBpc09ubGluZSkKIHsKLSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQorICAgIGlm
IChtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
ICghbV93b3JrZXJUaHJlYWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fd29ya2VyVGhyZWFk
LT5ydW5Mb29wKCkucG9zdFRhc2soW2lzT25saW5lXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgeworICAgIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUoW2lzT25saW5lXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAg
ICBhdXRvJiBnbG9iYWxTY29wZSA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0
KTsKICAgICAgICAgZ2xvYmFsU2NvcGUuc2V0SXNPbmxpbmUoaXNPbmxpbmUpOwotICAgICAgICBn
bG9iYWxTY29wZS5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoaXNPbmxpbmUgPyBldmVudE5h
bWVzKCkub25saW5lRXZlbnQgOiBldmVudE5hbWVzKCkub2ZmbGluZUV2ZW50LCBFdmVudDo6Q2Fu
QnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKLSAgICB9KTsKLX0KLQotdm9p
ZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6c3VzcGVuZEZvckJhY2tGb3J3YXJkQ2FjaGUoKQot
ewotCi19Ci0KLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnJlc3VtZUZvckJhY2tGb3J3
YXJkQ2FjaGUoKQotewotCisgICAgICAgIGdsb2JhbFNjb3BlLmV2ZW50TG9vcCgpLnF1ZXVlVGFz
ayhUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtnbG9iYWxTY29wZSA9IFJlZiB7IGdsb2Jh
bFNjb3BlIH0sIGlzT25saW5lXSB7CisgICAgICAgICAgICBnbG9iYWxTY29wZS0+ZGlzcGF0Y2hF
dmVudChFdmVudDo6Y3JlYXRlKGlzT25saW5lID8gZXZlbnROYW1lcygpLm9ubGluZUV2ZW50IDog
ZXZlbnROYW1lcygpLm9mZmxpbmVFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJ
c0NhbmNlbGFibGU6Ok5vKSk7CisgICAgICAgIH0pOworICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRl
ZmF1bHRNb2RlKCkpOwogfQogCiB2b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0RXhj
ZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsKLSAg
ICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzLCBlcnJvck1lc3NhZ2Ug
PSBlcnJvck1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCksIHNvdXJjZVVSTCA9IHNvdXJjZVVSTC5pc29s
YXRlZENvcHkoKSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyXSAoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYpIHsKLSAgICAgICAgaWYgKCFtX3NoYXJlZFdvcmtlcikKLSAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICAvLyBXZSBkb24ndCBib3RoZXIgY2hlY2tpbmcgdGhlIGFza2VkVG9UZXJt
aW5hdGUoKSBmbGFnIGhlcmUsIGJlY2F1c2UgZXhjZXB0aW9ucyBzaG91bGQgKmFsd2F5cyogYmUg
cmVwb3J0ZWQgZXZlbiBpZiB0aGUgdGhyZWFkIGlzIHRlcm1pbmF0ZWQuCi0gICAgICAgIC8vIFRo
aXMgaXMgaW50ZW50aW9uYWxseSBkaWZmZXJlbnQgdGhhbiB0aGUgYmVoYXZpb3IgaW4gTWVzc2Fn
ZVdvcmtlclRhc2ssIGJlY2F1c2UgdGVybWluYXRlZCB3b3JrZXJzIG5vIGxvbmdlciBkZWxpdmVy
IG1lc3NhZ2VzIChzZWN0aW9uIDQuNiBvZiB0aGUgV2ViV29ya2VyIHNwZWMpLCBidXQgdGhleSBk
byByZXBvcnQgZXhjZXB0aW9ucy4KLSAgICAgICAgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tU
b0Rpc3BhdGNoRXZlbnQoKm1fc2hhcmVkV29ya2VyLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRp
b24sIEVycm9yRXZlbnQ6OmNyZWF0ZShlcnJvck1lc3NhZ2UsIHNvdXJjZVVSTCwgbGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCB7IH0pKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJU
aHJlYWRQcm94eTo6d29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWQoKQotewotICAgIG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXNdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JikgewotICAgICAgICB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZEludGVybmFsKCk7Ci0gICAg
fSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3Jr
ZXJPYmplY3QoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJikKLXsKLQotfQotCi12b2lkIFNoYXJl
ZFdvcmtlclRocmVhZFByb3h5Ojpjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCkK
LXsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cmVwb3J0UGVuZGluZ0FjdGl2
aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KQotewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+cG9zdFRhc2soW3RoaXMsIGhhc1BlbmRpbmdBY3Rpdml0eV0gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKSB7Ci0gICAgICAgIG1faGFzUGVuZGluZ0FjdGl2aXR5ID0gaGFzUGVuZGluZ0Fj
dGl2aXR5OworICAgIGNhbGxPbk1haW5UaHJlYWQoW3NoYXJlZFdvcmtlcklkZW50aWZpZXIgPSBt
X3dvcmtlclRocmVhZC0+aWRlbnRpZmllcigpLCBlcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2Uu
aXNvbGF0ZWRDb3B5KCksIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMID0gc291
cmNlVVJMLmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0g
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAg
ICAgICAgICAgIGNvbm5lY3Rpb24tPnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChzaGFyZWRX
b3JrZXJJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
c291cmNlVVJMKTsKICAgICB9KTsKIH0KIAogUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+
IFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8mIGRvY3VtZW50ID0gZG93
bmNhc3Q8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIHJldHVybiBk
b2N1bWVudC5wYWdlKCktPmNhY2hlU3RvcmFnZVByb3ZpZGVyKCkuY3JlYXRlQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbigpOworICAgIGlmICghbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uKQorICAgICAg
ICBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24gPSBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyLmNyZWF0
ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKTsKKyAgICByZXR1cm4gbV9jYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOwogfQogCiBSZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlv
bj4gU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3RlSGFu
ZGxlckNvbm5lY3Rpb24oKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0
byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCk7Ci0gICAgaWYgKCFkb2N1bWVudC5wYWdlKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHJldHVybiBkb2N1bWVudC5wYWdlKCktPmxpYldlYlJUQ1Byb3ZpZGVyKCkuY3JlYXRlUlRD
RGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpOworICAgIHJldHVybiBtX3BhZ2Ut
PmxpYldlYlJUQ1Byb3ZpZGVyKCkuY3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29u
bmVjdGlvbigpOwogfQogCiB2b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0VGFza1Rv
TG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQogewotICAgIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7CisgICAgY2FsbE9u
TWFpblRocmVhZChbdGFzayA9IFdURk1vdmUodGFzayksIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgdGFzay5wZXJmb3JtVGFzayhwcm90ZWN0ZWRU
aGlzLT5tX2RvY3VtZW50LmdldCgpKTsKKyAgICB9KTsKIH0KIAogYm9vbCBTaGFyZWRXb3JrZXJU
aHJlYWRQcm94eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQog
ewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCisgICAgaWYgKG1faXNUZXJtaW5hdGluZ09y
VGVybWluYXRlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbV93b3JrZXJUaHJlYWQt
PnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoV1RGTW92ZSh0YXNrKSwgbW9kZSk7CkBAIC0yMjMs
MTYgKzE2MywxMCBAQCB2b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpzZXRSZXNvdXJjZUNh
Y2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yKGJvb2wpCiAKIH0KIAotdm9pZCBTaGFyZWRXb3Jr
ZXJUaHJlYWRQcm94eTo6d29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpCit2b2lk
IFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpuZXR3b3JrU3RhdGVDaGFuZ2VkKGJvb2wgaXNPbkxp
bmUpCiB7Ci0gICAgLy8gVGhpcyBpcyBhbHdheXMgdGhlIGxhc3QgdGFzayB0byBiZSBwZXJmb3Jt
ZWQsIHNvIHRoZSBwcm94eSBpcyBub3QgbmVlZGVkIGZvciBjb21tdW5pY2F0aW9uCi0gICAgLy8g
aW4gZWl0aGVyIHNpZGUgYW55IG1vcmUuIEhvd2V2ZXIsIHRoZSBXb3JrZXIgb2JqZWN0IG1heSBz
dGlsbCBleGlzdCwgYW5kIGl0IGFzc3VtZXMgdGhhdCB0aGUgcHJveHkgZXhpc3RzLCB0b28uCi0g
ICAgbV9hc2tlZFRvVGVybWluYXRlID0gdHJ1ZTsKLSAgICBtX3dvcmtlclRocmVhZCA9IG51bGxw
dHI7Ci0KLSAgICAvLyBUaGlzIGJhbGFuY2VzIHRoZSBvcmlnaW5hbCByZWYgaW4gY29uc3RydWN0
aW9uLgotICAgIGlmIChtX21heUJlRGVzdHJveWVkKQotICAgICAgICBkZXJlZigpOworICAgIGZv
ciAoYXV0byogcHJveHkgOiBhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkpCisgICAgICAg
IHByb3h5LT5ub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoaXNPbkxpbmUpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmgKaW5kZXggNGU5MmU0
NTYxNzFjZTkxYWViODc1YTM1ZTc1OWI5ZWM1YjU0MWVmNy4uMzM2NDI0MGFiYmI1OWI4ZDFkMDM5
ZmVlYmQwNWIxNGEwMjczN2FkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw3
ICsyNyw2IEBACiAKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiV29ya2VyRGVidWdnZXJQcm94eS5oIgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlUHJv
eHkuaCIKICNpbmNsdWRlICJXb3JrZXJMb2FkZXJQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlck9i
amVjdFByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyT3B0aW9ucy5oIgpAQCAtMzUsNTAgKzM0LDU0
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ2FjaGVTdG9yYWdlUHJvdmlkZXI7
CitjbGFzcyBQYWdlOwogY2xhc3MgU2hhcmVkV29ya2VyOwogY2xhc3MgU2hhcmVkV29ya2VyVGhy
ZWFkOwogCi1jbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSBmaW5hbCA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4sIHB1YmxpYyBXb3JrZXJH
bG9iYWxTY29wZVByb3h5LCBwdWJsaWMgV29ya2VyT2JqZWN0UHJveHksIHB1YmxpYyBXb3JrZXJM
b2FkZXJQcm94eSwgcHVibGljIFdvcmtlckRlYnVnZ2VyUHJveHkgeworc3RydWN0IENsaWVudE9y
aWdpbjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKKworY2xhc3MgU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkV29ya2Vy
VGhyZWFkUHJveHk+LCBwdWJsaWMgV29ya2VyT2JqZWN0UHJveHksIHB1YmxpYyBXb3JrZXJMb2Fk
ZXJQcm94eSwgcHVibGljIFdvcmtlckRlYnVnZ2VyUHJveHkgewogcHVibGljOgotICAgIHRlbXBs
YXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSYgY3Jl
YXRlKEFyZ3MmJi4uLiBhcmdzKSB7IHJldHVybiAqbmV3IFNoYXJlZFdvcmtlclRocmVhZFByb3h5
KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBBcmdzPiBzdGF0aWMgUmVmPFNoYXJlZFdvcmtlclRocmVhZFByb3h5PiBjcmVhdGUoQXJncyYm
Li4uIGFyZ3MpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkV29ya2VyVGhyZWFkUHJveHko
c3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB+U2hh
cmVkV29ya2VyVGhyZWFkUHJveHkoKTsKIAogICAgIFNoYXJlZFdvcmtlcklkZW50aWZpZXIgaWRl
bnRpZmllcigpIGNvbnN0OwotICAgIFNoYXJlZFdvcmtlclRocmVhZCogdGhyZWFkKCkgeyByZXR1
cm4gbV93b3JrZXJUaHJlYWQuZ2V0KCk7IH0KKyAgICBTaGFyZWRXb3JrZXJUaHJlYWQmIHRocmVh
ZCgpIHsgcmV0dXJuIG1fd29ya2VyVGhyZWFkOyB9CiAKLSAgICB2b2lkIHN0YXJ0V29ya2VyR2xv
YmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc291
cmNlQ29kZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9v
bCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnN0IENyb3Nz
T3JpZ2luRW1iZWRkZXJQb2xpY3kmLCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIFJlZmVycmVy
UG9saWN5LCBXb3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RDcmVkZW50aWFscywgSlNDOjpSdW50aW1l
RmxhZ3MpIGZpbmFsOwotICAgIHZvaWQgd29ya2VyT2JqZWN0RGVzdHJveWVkKCkgZmluYWw7Ci0g
ICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHRlcm1p
bmF0ZVdvcmtlckdsb2JhbFNjb3BlKCkgZmluYWw7CisgICAgYm9vbCBpc1Rlcm1pbmF0aW5nT3JU
ZXJtaW5hdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkOyB9
CisgICAgdm9pZCBzZXRBc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKCkgeyBtX2lzVGVybWluYXRp
bmdPclRlcm1pbmF0ZWQgPSB0cnVlOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2hhcmVk
V29ya2VyVGhyZWFkUHJveHkoU2hhcmVkV29ya2VyJik7Ci0KLSAgICB2b2lkIHdvcmtlckdsb2Jh
bFNjb3BlRGVzdHJveWVkSW50ZXJuYWwoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRXb3Jr
ZXJUaHJlYWRQcm94eShVbmlxdWVSZWY8UGFnZT4mJiwgU2hhcmVkV29ya2VySWRlbnRpZmllciwg
Y29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIFdvcmtlckZldGNoUmVz
dWx0JiYsIFdvcmtlck9wdGlvbnMmJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIENhY2hlU3Rv
cmFnZVByb3ZpZGVyJik7CiAKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29w
ZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKSBmaW5hbDsKLSAgICB2b2lkIHBvc3RUYXNrVG9X
b3JrZXJHbG9iYWxTY29wZShGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4m
JikgZmluYWw7Ci0gICAgdm9pZCBub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9vbCBpc09ubGlu
ZSkgZmluYWw7Ci0gICAgdm9pZCBzdXNwZW5kRm9yQmFja0ZvcndhcmRDYWNoZSgpIGZpbmFsOwot
ICAgIHZvaWQgcmVzdW1lRm9yQmFja0ZvcndhcmRDYWNoZSgpIGZpbmFsOworICAgIC8vIFdvcmtl
ck9iamVjdFByb3h5LgogICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpIGZpbmFsOwotICAgIHZvaWQgd29ya2VyR2xvYmFsU2Nv
cGVEZXN0cm95ZWQoKSBmaW5hbDsKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3Qo
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJikgZmluYWw7Ci0gICAgdm9pZCBjb25maXJtTWVzc2Fn
ZUZyb21Xb3JrZXJPYmplY3QoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpIGZpbmFsOwotICAgIHZv
aWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KSBmaW5hbDsK
KyAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVdpdGhNZXNzYWdlUG9y
dHMmJikgZmluYWwgeyB9CisgICAgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgpIGZp
bmFsIHsgfQorICAgIHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wpIGZp
bmFsIHsgfQorICAgIHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wpIGZpbmFsIHsgfQor
CisgICAgLy8gV29ya2VyTG9hZGVyUHJveHkuCiAgICAgUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24+IGNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKSBmaW5hbDsKICAgICBSZWZQdHI8
UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbj4gY3JlYXRlUlRDRGF0YUNoYW5u
ZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpIGZpbmFsOwogICAgIHZvaWQgcG9zdFRhc2tUb0xv
YWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYpIGZpbmFsOwogICAgIGJvb2wgcG9z
dFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrJiYsIGNvbnN0IFN0cmluZyYgbW9kZSkgZmluYWw7CisKKyAgICAvLyBXb3Jr
ZXJEZWJ1Z2dlclByb3h5LgogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb0RlYnVnZ2VyKGNvbnN0IFN0
cmluZyYpIGZpbmFsOwogICAgIHZvaWQgc2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYklu
c3BlY3Rvcihib29sKSBmaW5hbDsKIAotICAgIFdlYWtQdHI8U2hhcmVkV29ya2VyPiBtX3NoYXJl
ZFdvcmtlcjsKLSAgICBSZWZQdHI8U2hhcmVkV29ya2VyVGhyZWFkPiBtX3dvcmtlclRocmVhZDsK
LSAgICBjb25zdCBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0OwotICAgIGNvbnN0IFN0cmluZyBtX2lkZW50aWZpZXJGb3JJbnNwZWN0b3I7Ci0g
ICAgYm9vbCBtX2Fza2VkVG9UZXJtaW5hdGUgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9oYXNQZW5k
aW5nQWN0aXZpdHkgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9tYXlCZURlc3Ryb3llZCB7IGZhbHNl
IH07CisgICAgc3RhdGljIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZChib29sIGlzT25MaW5lKTsK
KyAgICB2b2lkIG5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25saW5lKTsKKworICAg
IFVuaXF1ZVJlZjxQYWdlPiBtX3BhZ2U7CisgICAgUmVmPERvY3VtZW50PiBtX2RvY3VtZW50Owor
ICAgIFJlZjxTaGFyZWRXb3JrZXJUaHJlYWQ+IG1fd29ya2VyVGhyZWFkOworICAgIENhY2hlU3Rv
cmFnZVByb3ZpZGVyJiBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyOworICAgIFJlZlB0cjxDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uPiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247CisgICAgYm9vbCBtX2lz
VGVybWluYXRpbmdPclRlcm1pbmF0ZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggNzU2ZGE4OGI0NWY3MDQyZjQyM2I3MzRjNzY0
ZTY1NjZkNDQ2ZWZhZi4uMjlmNGM3ODE4MTgwZGUyY2IyNDk1MDcyZTg0NjBhNTBhZDM2NGE0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0NNYWtlTGlzdHMudHh0CkBAIC0yOCw2ICsyOCw3IEBAIHNldChXZWJLaXRfSU5DTFVERV9E
SVJFQ1RPUklFUwogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlv
bnMiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlciIK
KyAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIiCiAgICAgIiR7
V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZSIKICAgICAiJHtXRUJLSVRfRElS
fS9OZXR3b3JrUHJvY2Vzcy9jYWNoZSIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlIgpAQCAtMjAyLDYgKzIwMyw5IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklM
RVMKICAgICBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bgogICAgIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uCiAKKyAgICBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbgorICAgIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCisKICAgICBOZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0CiAKICAgICBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uCkBAIC0zMDUsNiArMzA5LDggQEAgc2V0KFdl
YktpdF9NRVNTQUdFU19JTl9GSUxFUwogCiAgICAgV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVj
b2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcgogCisgICAgV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbgorICAgIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uCiAgICAgV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbgogICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggNGM2NjIyMGNmMTIyYTUzYjc0NjlkNDQwMGM3
Y2RkYjIzNWM4Yjc0OS4uNzIyOWMxYjk4NzA4ODgxYjdiYWVjM2NmN2EwMjQ3MzU3MmUzNWRlMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAt
OTEsNiArOTEsOCBAQCAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2subWVzc2FnZXMuaQogJChQUk9KRUNUX0RJUikvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
KyQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJv
Y2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTWFuYWdlclNldC5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nl
c3Muc2IuaW4KQEAgLTIxNyw2ICsyMTksOCBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3Mv
U3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nl
c3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9XZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBlM2I1NTg0
MGFlMWVhZjU3ZjVlYmY3NTQyZTVlMWZkNDBlNWRkNGQxLi5hODYzMjgxNDdiNTZjNWM1NjBhYTVh
YmEzOWJmYWQzMjQ1YzI2MTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QKQEAgLTYwNyw2ICs2MDcsMTggQEAgJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlc1Jl
cGxpZXMKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb25NZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdl
c1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9X
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVz
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbk1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNz
YWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dC9XZWJTb2NrZXRDaGFubmVsTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTb2NrZXRDaGFubmVsTWVzc2FnZXMuaAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTb2NrZXRDaGFubmVs
TWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA3YWQ0OWUz
NzM1ZjRiNDc4YzQxNmQ5Mjk1YzEzOWJlOThmZDZjZTRhLi4zNTFmZmFlMGE1ODY2MGMxZDEyZmY5
YWNkODc3ZDI3YzUxYzA3ZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xMzMs
NiArMTMzLDggQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrIFwKIAlOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2sgXAogCU5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIFwKKwlOZXR3b3JrUHJvY2Vz
cy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbiBcCisJTmV0d29y
a1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24gXAogCU5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0gXAogCU5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzIFwKIAlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIgXApAQCAtMjI1LDYgKzIyNyw4IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uIFwKIAlX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiBc
CiAJV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNl
TWFuYWdlciBcCisJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbiBcCisJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbiBcCiAJ
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXgg
YTM0Zjc5YmRlM2UwODE2OTZkNzNhNTVmYmY1OTA1OGJmNmQ4ZjM3OS4uYzdiMTdmZDcwNzg1NGIx
Mjg0OThkMTExOGY0ZTZlN2Q1YjNkODVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
QEAgLTY2LDYgKzY2LDExIEBACiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKICNpbmNs
dWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUg
IldlYlNoYXJlZFdvcmtlclNlcnZlci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oPgpAQCAtMTMyLDYgKzEzNyw3IEBAIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhO
ZXR3b3JrUHJvY2VzcyYgbmV0CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGVzdGFi
bGlzaFNXU2VydmVyQ29ubmVjdGlvbigpOwogI2VuZGlmCisgICAgZXN0YWJsaXNoU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbigpOwogfQogCiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6fk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKQEAgLTE2Niw2ICsxNzIsNyBAQCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKCkKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdW5yZWdpc3RlclNXQ29ubmVj
dGlvbigpOwogI2VuZGlmCisgICAgdW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsK
IH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzVXBsb2FkU3RhdGVD
aGFuZ2VkKGJvb2wgaGFzVXBsb2FkKQpAQCAtMjc1LDYgKzI4MiwxNyBAQCB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3RpbwogICAgIH0KICNlbmRpZgogCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgaWYgKG1fc2hhcmVkV29ya2VyQ29ubmVj
dGlvbikKKyAgICAgICAgICAgIG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1l
c3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
aWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsK
KyAgICAgICAgaWYgKG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24pCisgICAgICAgICAg
ICBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogI2lmIEVOQUJMRShB
UFBMRV9QQVlfUkVNT1RFX1VJKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUo
KSA9PSBNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSkKICAgICAgICAgcmV0dXJuIHBheW1lbnRDb29yZGluYXRvcigpLmRpZFJlY2VpdmVN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwpAQCAtMzk4LDkgKzQxNiw4IEBAIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbikKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgbV9zd0NvbnRleHRD
b25uZWN0aW9uID0gbnVsbHB0cjsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24p
OwogI2VuZGlmCisgICAgbV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7
CiAKICAgICAvLyBQcm90ZWN0IG91cnNlbGYgYXMgd2UgbWlnaHQgYmUgb3RoZXJ3aXNlIGJlIGRl
bGV0ZWQgZHVyaW5nIHRoaXMgZnVuY3Rpb24uCiAgICAgUmVmPE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzPiBwcm90ZWN0b3IoKnRoaXMpOwpAQCAtNDQxLDYgKzQ1OCw3IEBAIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbikKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdW5yZWdpc3RlclNXQ29u
bmVjdGlvbigpOwogI2VuZGlmCisgICAgdW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb24o
KTsKIAogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQogICAgIG1fcGF5bWVudENvb3Jk
aW5hdG9yID0gbnVsbHB0cjsKQEAgLTExODYsNiArMTIwNCw2MSBAQCBzaXplX3QgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmZpbmROZXR3b3JrQWN0aXZpdHlUcmFja2VyKFdlYkNvcmU6
OlJlc291cgogICAgICAgICByZXR1cm4gaXRlbS5yZXNvdXJjZUlEID09IHJlc291cmNlSUQ7CiAg
ICAgfSk7CiB9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlz
aFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBDT05ORUNUSU9OX1JF
TEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uOiIpOworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOworICAgIGlm
IChhdXRvKiBzd1NlcnZlciA9IHNlc3Npb24gPyBzZXNzaW9uLT5zaGFyZWRXb3JrZXJTZXJ2ZXIo
KSA6IG51bGxwdHIpCisgICAgICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBt
YWtlVW5pcXVlPFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+KCp0aGlz
LCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgKnN3U2VydmVyKTsKKyAgICBjb21wbGV0aW9u
SGFuZGxlcigpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3Rh
Ymxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCkKK3sKKyAgICBpZiAobV9zaGFyZWRX
b3JrZXJDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBzZXNzaW9uID0g
bmV0d29ya1Nlc3Npb24oKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsKKwor
ICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbjoiKTsKKworICAgIGF1dG8mIHNlcnZlciA9IHNlc3Npb24t
PmVuc3VyZVNoYXJlZFdvcmtlclNlcnZlcigpOworICAgIGF1dG8gY29ubmVjdGlvbiA9IG1ha2VV
bmlxdWU8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4obV9uZXR3b3JrUHJvY2Vzcywg
c2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOworCisg
ICAgbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uID0gKmNvbm5lY3Rpb247CisgICAgc2VydmVyLmFk
ZENvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSk7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmNsb3NlU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24oKQor
eworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiY2xvc2VTaGFyZWRX
b3JrZXJDb250ZXh0Q29ubmVjdGlvbjoiKTsKKyAgICBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uID0gbnVsbHB0cjsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6dW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKQoreworICAgIENPTk5FQ1RJT05f
UkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAidW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rp
b246Iik7CisgICAgaWYgKG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbikKKyAgICAgICAgbV9zaGFy
ZWRXb3JrZXJDb25uZWN0aW9uLT5zZXJ2ZXIoKS5yZW1vdmVDb25uZWN0aW9uKG1fc2hhcmVkV29y
a2VyQ29ubmVjdGlvbi0+d2ViUHJvY2Vzc0lkZW50aWZpZXIoKSk7Cit9CisKK3ZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNo
YXJlZFdvcmtlciwgInNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Jc05vTG9u
Z2VyTmVlZGVkOiIpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlNoYXJlZFdvcmtlckNv
bnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQgeyB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0s
IDApOworCisgICAgbV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7Cit9
CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24qIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCkKK3sKKyAgICBpZiAoIW1fc2hhcmVk
V29ya2VyQ29ubmVjdGlvbikKKyAgICAgICAgZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbigpOworICAgIHJldHVybiBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24uZ2V0KCk7Cit9
CiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29ubmVjdGlvbigpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgKaW5kZXggYWI5NjY1N2QwZGY0YTIzMzEwNDBhYzUxZmM0M2MwNjg0Nzg0ODA0Ny4uZDBh
YTRlZjc0NTIwYTJjYTBiNTUxYjQ2OWU4NmVhNzY2OGI2NzhlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaApAQCAtOTIsNiArOTIsOCBAQCBjbGFzcyBOZXR3b3JrU29ja2V0U3RyZWFtOwogY2xh
c3MgU2VydmljZVdvcmtlckZldGNoVGFzazsKIGNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsK
IGNsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKK2NsYXNzIFdlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb247CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOwogCiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIHN0cnVjdCBEYXRhS2V5
OwpAQCAtMTg1LDYgKzE4Nyw5IEBAIHB1YmxpYzoKICAgICBXZWJTV1NlcnZlckNvbm5lY3Rpb24q
IHN3Q29ubmVjdGlvbigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrPiBjcmVhdGVGZXRjaFRhc2soTmV0d29ya1Jlc291cmNlTG9hZGVyJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKKyAgICB2b2lkIHNoYXJlZFdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7CisKKyAgICBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uKiBzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiAKICAgICBO
ZXR3b3JrU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9zY2hlbWVS
ZWdpc3RyeS5nZXQoKTsgfQogCkBAIC0yNTMsNiArMjU4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGNyZWF0ZVNvY2tldENoYW5uZWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgU3RyaW5nJiBwcm90b2NvbCwgV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllciwgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAgICAgdm9p
ZCB1cGRhdGVRdW90YUJhc2VkT25TcGFjZVVzYWdlRm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mKTsKIAorICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbigpOworICAgIHZvaWQgdW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsK
KwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFNXU2VydmVy
Q29ubmVjdGlvbigpOwogICAgIHZvaWQgZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNl
V29ya2VyUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0y
NjAsNiArMjY4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24o
KTsKICNlbmRpZgogCisgICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgY2xvc2VTaGFyZWRXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvbigpOworCiAgICAgdm9pZCBjcmVhdGVSVENQcm92aWRlcihDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIHZvaWQg
Y29ubmVjdFRvUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UoV2ViQ29yZTo6UlRDRGF0YUNoYW5u
ZWxJZGVudGlmaWVyIHNvdXJjZSwgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGhh
bmRsZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxib29sPik+JiYpOwpA
QCAtNDA0LDYgKzQxNSw4IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxXZWJTV1NlcnZlckNvbm5l
Y3Rpb24+IG1fc3dDb25uZWN0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24+IG1fc3dDb250ZXh0Q29ubmVjdGlvbjsKICNlbmRpZgorICAgIFdl
YWtQdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4gbV9zaGFyZWRXb3JrZXJDb25u
ZWN0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uPiBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uOwogCiAjaWYgRU5B
QkxFKFdFQl9SVEMpCiAgICAgYm9vbCBtX2lzUmVnaXN0ZXJlZFRvUlRDRGF0YUNoYW5uZWxQcm94
eSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpp
bmRleCAyNDI4MzUwNTBiMjQ5NzBjNWVhYzFlMjZiZjg2YjViMDI1YTgwZTUzLi5iOTdjYTM0Nzli
NGQ5ZDU1NzlhN2U3ZTU1YTY5MWE2MGRkODg2NmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTg4LDYgKzg4LDkgQEAgbWVzc2FnZXMgLT4gTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIENsb3NlU1dDb250
ZXh0Q29ubmVjdGlvbigpCiAjZW5kaWYKIAorICAgIEVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJ
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKSAtPiAoKSBBc3luYworICAgIENs
b3NlU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24oKQorCiAgICAgQ3JlYXRlUlRDUHJvdmlk
ZXIoKSAtPiAoKSBBc3luYwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIENvbm5lY3RUb1JUQ0Rh
dGFDaGFubmVsUmVtb3RlU291cmNlKHN0cnVjdCBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50
aWZpZXIgc291cmNlLCBzdHJ1Y3QgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGhh
bmRsZXIpIC0+IChzdGQ6Om9wdGlvbmFsPGJvb2w+IHJlc3VsdCkgQXN5bmMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggZTJiMjRkODMy
MmI2ZWMxYzM3NzAxZGNhZDQ5NzUzNGNlZjIzMWEyNi4uZDc2MTYyODUwY2FkODQzOGYwMDg4OTA1
M2Y3ZWRjODJmM2UzM2EzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJv
eHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldl
YlNXT3JpZ2luU3RvcmUuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIKICNp
bmNsdWRlICJXZWJTb2NrZXRUYXNrLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVKYXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgpAQCAtNjUzLDYgKzY1NCwxMyBA
QCBib29sIE5ldHdvcmtTZXNzaW9uOjpoYXNTZXJ2aWNlV29ya2VyRGF0YWJhc2VQYXRoKCkgY29u
c3QKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorV2ViU2hhcmVkV29ya2Vy
U2VydmVyJiBOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCkKK3sKKyAg
ICBpZiAoIW1fc2hhcmVkV29ya2VyU2VydmVyKQorICAgICAgICBtX3NoYXJlZFdvcmtlclNlcnZl
ciA9IG1ha2VVbmlxdWU8V2ViU2hhcmVkV29ya2VyU2VydmVyPigqdGhpcyk7CisgICAgcmV0dXJu
ICptX3NoYXJlZFdvcmtlclNlcnZlcjsKK30KKwogV2ViSURCU2VydmVyJiBOZXR3b3JrU2Vzc2lv
bjo6ZW5zdXJlV2ViSURCU2VydmVyKCkKIHsKICAgICBpZiAoIW1fd2ViSURCU2VydmVyKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggMTkz
MDdjZjQwYmUzYjJmMjYwNTdkMDE2Yzc2NmVkY2U0OThjOTU0Mi4uM2Y5ZDZjOTU1MGE4YjhjZWM5
ZTRjNTU5ZDMxZDEyMWE5OGIwZTg0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uaApAQCAtNzksNiArNzksNyBAQCBjbGFzcyBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOwogY2xhc3MgV2ViSURCU2VydmVyOwogY2xhc3MgV2ViUGFnZU5ldHdvcmtQYXJh
bWV0ZXJzOwogY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOworY2xhc3MgV2Vi
U2hhcmVkV29ya2VyU2VydmVyOwogY2xhc3MgV2ViU29ja2V0VGFzazsKIGNsYXNzIFdlYlNXT3Jp
Z2luU3RvcmU7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CkBAIC0yMTAsNiArMjExLDkg
QEAgcHVibGljOgogICAgIHZvaWQgYWRkU2VydmljZVdvcmtlclNlc3Npb24oYm9vbCBwcm9jZXNz
VGVybWluYXRpb25EZWxheUVuYWJsZWQsIFN0cmluZyYmIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnksIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogI2VuZGlmCiAK
KyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIqIHNoYXJlZFdvcmtlclNlcnZlcigpIHsgcmV0dXJu
IG1fc2hhcmVkV29ya2VyU2VydmVyLmdldCgpOyB9CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVy
JiBlbnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKTsKKwogICAgIFdlYklEQlNlcnZlciogd2ViSURC
U2VydmVyKCkgeyByZXR1cm4gbV93ZWJJREJTZXJ2ZXIuZ2V0KCk7IH0KICAgICBXZWJJREJTZXJ2
ZXImIGVuc3VyZVdlYklEQlNlcnZlcigpOwogICAgIHZvaWQgY2xvc2VJREJTZXJ2ZXIoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTMxOCw2ICszMjIsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySW5mbz4gbV9zZXJ2aWNlV29ya2VySW5mbzsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1dTZXJ2ZXI+IG1fc3dTZXJ2ZXI7CiAjZW5k
aWYKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyPiBtX3NoYXJlZFdv
cmtlclNlcnZlcjsKIAogICAgIFN0cmluZyBtX2lkYkRhdGFiYXNlUGF0aDsKICAgICBSZWZQdHI8
V2ViSURCU2VydmVyPiBtX3dlYklEQlNlcnZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjgwMDkxMzk1MjgwYzhkNzYwZWYxYTFkMTIxYzIxNDc1ZjQ5NWViYjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXIuY3BwCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyLmgiCisKKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUg
PHd0Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgSGFzaE1hcDxX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBXZWJTaGFyZWRXb3JrZXIqPiYgYWxsV29y
a2VycygpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SGFzaE1hcDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBXZWJT
aGFyZWRXb3JrZXIqPj4gYWxsV29ya2VyczsKKyAgICByZXR1cm4gYWxsV29ya2VyczsKK30KKwor
V2ViU2hhcmVkV29ya2VyOjpXZWJTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29y
a2VyS2V5JiBrZXksIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMp
CisgICAgOiBtX2lkZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKSkKKyAgICAsIG1fa2V5KGtleSkKKyAgICAsIG1fd29ya2VyT3B0aW9ucyh3b3JrZXJP
cHRpb25zKQoreworICAgIEFTU0VSVCghYWxsV29ya2VycygpLmNvbnRhaW5zKG1faWRlbnRpZmll
cikpOworICAgIGFsbFdvcmtlcnMoKS5hZGQobV9pZGVudGlmaWVyLCB0aGlzKTsKK30KKworV2Vi
U2hhcmVkV29ya2VyOjp+V2ViU2hhcmVkV29ya2VyKCkKK3sKKyAgICBBU1NFUlQoYWxsV29ya2Vy
cygpLmdldChtX2lkZW50aWZpZXIpID09IHRoaXMpOworICAgIGFsbFdvcmtlcnMoKS5yZW1vdmUo
bV9pZGVudGlmaWVyKTsKK30KKworV2ViU2hhcmVkV29ya2VyKiBXZWJTaGFyZWRXb3JrZXI6OmZy
b21JZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikK
K3sKKyAgICByZXR1cm4gYWxsV29ya2VycygpLmdldChpZGVudGlmaWVyKTsKK30KKworV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gV2ViU2hhcmVkV29ya2VyOjpyZWdpc3RyYWJsZURvbWFpbigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsKCkg
fTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM0YjdhNGE4NDNjZWY5YTE3ZWJjMGIzYTVmYTRjY2Q0ZDA2MTZiMzQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJT
aGFyZWRXb3JrZXIuaApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NoYXJlZFdvcmtlcktleS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmZXJyZWRNZXNz
YWdlUG9ydC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyRmV0Y2hSZXN1bHQuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1dvcmtlck9wdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKK30KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtlciA6IHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxXZWJTaGFyZWRXb3JrZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
K3B1YmxpYzoKKyAgICBXZWJTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2Vy
S2V5JiwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYpOworICAgIH5XZWJTaGFyZWRXb3Jr
ZXIoKTsKKworICAgIHN0YXRpYyBXZWJTaGFyZWRXb3JrZXIqIGZyb21JZGVudGlmaWVyKFdlYkNv
cmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworCisgICAgV2ViQ29yZTo6U2hhcmVkV29ya2Vy
SWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9Cisg
ICAgY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBrZXkoKSBjb25zdCB7IHJldHVybiBt
X2tleTsgfQorICAgIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMo
KSBjb25zdCB7IHJldHVybiBtX3dvcmtlck9wdGlvbnM7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fa2V5Lm9yaWdpbjsgfQorICAg
IGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9rZXkudXJsOyB9CisgICAgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4oKSBjb25zdDsKKyAgICBIYXNo
TWFwPFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5z
ZmVycmVkTWVzc2FnZVBvcnQ+JiBzaGFyZWRXb3JrZXJPYmplY3RzKCkgeyByZXR1cm4gbV9zaGFy
ZWRXb3JrZXJPYmplY3RzOyB9CisKKyAgICBib29sIGlzUnVubmluZygpIGNvbnN0IHsgcmV0dXJu
IG1faXNSdW5uaW5nOyB9CisgICAgdm9pZCBtYXJrQXNSdW5uaW5nKCkgeyBtX2lzUnVubmluZyA9
IHRydWU7IH0KKworICAgIGNvbnN0IFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiBmZXRjaFJl
c3VsdCgpIGNvbnN0IHsgcmV0dXJuIG1fZmV0Y2hSZXN1bHQ7IH0KKyAgICB2b2lkIHNldEZldGNo
UmVzdWx0KFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYgZmV0Y2hSZXN1bHQpIHsgbV9mZXRj
aFJlc3VsdCA9IFdURk1vdmUoZmV0Y2hSZXN1bHQpOyB9CisgICAgYm9vbCBkaWRGaW5pc2hGZXRj
aGluZygpIGNvbnN0IHsgcmV0dXJuICEhbV9mZXRjaFJlc3VsdC5zY3JpcHQ7IH0KKworcHJpdmF0
ZToKKyAgICBXZWJTaGFyZWRXb3JrZXIoV2ViU2hhcmVkV29ya2VyJiYpID0gZGVsZXRlOworICAg
IFdlYlNoYXJlZFdvcmtlciYgb3BlcmF0b3I9KFdlYlNoYXJlZFdvcmtlciYmKSA9IGRlbGV0ZTsK
KyAgICBXZWJTaGFyZWRXb3JrZXIoY29uc3QgV2ViU2hhcmVkV29ya2VyJikgPSBkZWxldGU7Cisg
ICAgV2ViU2hhcmVkV29ya2VyJiBvcGVyYXRvcj0oY29uc3QgV2ViU2hhcmVkV29ya2VyJikgPSBk
ZWxldGU7CisKKyAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIG1faWRlbnRpZmll
cjsKKyAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkgbV9rZXk7CisgICAgV2ViQ29yZTo6V29y
a2VyT3B0aW9ucyBtX3dvcmtlck9wdGlvbnM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpTaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0PiBt
X3NoYXJlZFdvcmtlck9iamVjdHM7CisgICAgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQgbV9m
ZXRjaFJlc3VsdDsKKyAgICBib29sIG1faXNSdW5uaW5nIHsgZmFsc2UgfTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZmM2ODMwMjE0ZDQwYzQ3ZjIyZTk1NTljYzg2YWQ3MjVhYjUxMDViMwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dl
YlNoYXJlZFdvcmtlclNlcnZlci5jcHAKQEAgLTAsMCArMSwyNjcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgiCisK
KyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNs
dWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrU2Vz
c2lvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlci5oIgorI2luY2x1ZGUgIldlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURv
bWFpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyS2V5Lmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9Xb3JrZXJGZXRjaFJlc3VsdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyT3B0
aW9ucy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU2hhcmVkV29ya2VyU2VydmVyOjpX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXIoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24pCisgICAgOiBtX3Nl
c3Npb24oc2Vzc2lvbikKK3sKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVyOjp+V2ViU2hhcmVk
V29ya2VyU2VydmVyKCkgPSBkZWZhdWx0OworCitQQUw6OlNlc3Npb25JRCBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXI6OnNlc3Npb25JRCgpCit7CisgICAgcmV0dXJuIG1fc2Vzc2lvbi5zZXNzaW9uSUQo
KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXIo
V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiYgc2hhcmVkV29ya2VyS2V5LCBXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdl
YkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBXZWJDb3JlOjpXb3JrZXJPcHRp
b25zJiYgd29ya2VyT3B0aW9ucykKK3sKKyAgICBhdXRvJiBzaGFyZWRXb3JrZXIgPSBtX3NoYXJl
ZFdvcmtlcnMuZW5zdXJlKHNoYXJlZFdvcmtlcktleSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8V2ViU2hhcmVkV29ya2VyPihzaGFyZWRXb3JrZXJLZXksIHdvcmtlck9wdGlvbnMp
OworICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIs
ICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXI9JXtwcml2YXRlfXMsIHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIg
UFJJdTY0LCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSwgc2hhcmVkV29ya2VyLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBpZiAo
c2hhcmVkV29ya2VyLT53b3JrZXJPcHRpb25zKCkudHlwZSAhPSB3b3JrZXJPcHRpb25zLnR5cGUg
fHwgc2hhcmVkV29ya2VyLT53b3JrZXJPcHRpb25zKCkuY3JlZGVudGlhbHMgIT0gd29ya2VyT3B0
aW9ucy5jcmVkZW50aWFscykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3Jr
ZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6IEEgd29ya2Vy
IGFscmVhZHkgZXhpc3RzIHdpdGggdGhpcyBuYW1lIGJ1dCBoYXMgZGlmZmVyZW50IHR5cGUgLyBj
cmVkZW50aWFscyIpOworICAgICAgICBpZiAoYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1fY29u
bmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZp
ZXIoKSkpCisgICAgICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uLT5ub3RpZnlXb3JrZXJPYmplY3RP
ZkxvYWRDb21wbGV0aW9uKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHsgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cygpLmFkZChzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBwb3J0KTsKKworICAgIGlmIChzaGFyZWRXb3JrZXIt
PnNoYXJlZFdvcmtlck9iamVjdHMoKS5zaXplKCkgPiAxKSB7CisgICAgICAgIFJFTEVBU0VfTE9H
KFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtl
cjogQSBzaGFyZWQgd29ya2VyIHdpdGggdGhpcyBVUkwgYWxyZWFkeSBleGlzdHMgKG5vdyBzaGFy
ZWQgYnkgJXUgc2hhcmVkIHdvcmtlciBvYmplY3RzKSIsIHNoYXJlZFdvcmtlci0+c2hhcmVkV29y
a2VyT2JqZWN0cygpLnNpemUoKSk7CisgICAgICAgIGlmIChzaGFyZWRXb3JrZXItPmRpZEZpbmlz
aEZldGNoaW5nKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0g
bV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRl
bnRpZmllcigpKSkKKyAgICAgICAgICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uLT5ub3RpZnlXb3Jr
ZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHsg
fSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNoYXJlZFdvcmtlci0+aXNSdW5uaW5nKCkpIHsK
KyAgICAgICAgICAgIGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gbV9jb250ZXh0Q29ubmVjdGlv
bnMuZ2V0KHNoYXJlZFdvcmtlci0+cmVnaXN0cmFibGVEb21haW4oKSk7CisgICAgICAgICAgICBB
U1NFUlQoY29udGV4dENvbm5lY3Rpb24pOworICAgICAgICAgICAgaWYgKGNvbnRleHRDb25uZWN0
aW9uKQorICAgICAgICAgICAgICAgIGNvbnRleHRDb25uZWN0aW9uLT5wb3N0Q29ubmVjdEV2ZW50
KCpzaGFyZWRXb3JrZXIsIHBvcnQpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgQVNTRVJUKCFzaGFyZWRXb3JrZXItPmlzUnVubmluZygpKTsKKworICAgIGF1dG8qIHNl
cnZlckNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgIEFTU0VSVChzZXJ2ZXJDb25uZWN0aW9u
KTsKKworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZl
cjo6cmVxdWVzdFNoYXJlZFdvcmtlcjogRmV0Y2hpbmcgc2hhcmVkIHdvcmtlciBzY3JpcHQgaW4g
Y2xpZW50Iik7CisgICAgc2VydmVyQ29ubmVjdGlvbi0+ZmV0Y2hTY3JpcHRJbkNsaWVudCgqc2hh
cmVkV29ya2VyLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBbd2Vha1RoaXMgPSBXZWFr
UHRyIHsgKnRoaXMgfSwgc2hhcmVkV29ya2VyID0gV2Vha1B0ciB7ICpzaGFyZWRXb3JrZXIgfV0o
V2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJiBmZXRjaFJlc3VsdCkgeworICAgICAgICBpZiAo
d2Vha1RoaXMgJiYgc2hhcmVkV29ya2VyKQorICAgICAgICAgICAgd2Vha1RoaXMtPmRpZEZpbmlz
aEZldGNoaW5nU2hhcmVkV29ya2VyU2NyaXB0KCpzaGFyZWRXb3JrZXIsIFdURk1vdmUoZmV0Y2hS
ZXN1bHQpKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZp
bmlzaEZldGNoaW5nU2hhcmVkV29ya2VyU2NyaXB0KFdlYlNoYXJlZFdvcmtlciYgc2hhcmVkV29y
a2VyLCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmIGZldGNoUmVzdWx0KQoreworICAgIFJF
TEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6ZGlkRmluaXNo
RmV0Y2hpbmdTaGFyZWRXb3JrZXJTY3JpcHQgc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1
NjQgIiwgc2hhcmVkV29ya2VyPSVwLCBzdWNjZXNzPSVkIiwgc2hhcmVkV29ya2VyLmlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpLCAmc2hhcmVkV29ya2VyLCBmZXRjaFJlc3VsdC5lcnJvci5pc051bGwo
KSk7CisKKyAgICBmb3IgKGF1dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA6IHNoYXJl
ZFdvcmtlci5zaGFyZWRXb3JrZXJPYmplY3RzKCkua2V5cygpKSB7CisgICAgICAgIGlmIChhdXRv
KiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIHNlcnZlckNvbm5l
Y3Rpb24tPm5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24oc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllciwgZmV0Y2hSZXN1bHQuZXJyb3IpOworICAgIH0KKworICAgIGlmICghZmV0
Y2hSZXN1bHQuZXJyb3IuaXNOdWxsKCkpIHsKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJzLnJlbW92
ZShzaGFyZWRXb3JrZXIua2V5KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2hh
cmVkV29ya2VyLnNldEZldGNoUmVzdWx0KFdURk1vdmUoZmV0Y2hSZXN1bHQpKTsKKworICAgIGF1
dG8gcmVnaXN0cmFibGVEb21haW4gPSBzaGFyZWRXb3JrZXIucmVnaXN0cmFibGVEb21haW4oKTsK
KyAgICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IGNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0
cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pOworICAgIGlmICghY29udGV4dENvbm5lY3Rp
b24pIHsKKyAgICAgICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4p
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29udGV4dENvbm5lY3Rpb24tPmxhdW5j
aFNoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXIpOworfQorCitib29sIFdlYlNoYXJlZFdvcmtlclNl
cnZlcjo6bmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QKK3sKKyAg
ICBmb3IgKGF1dG8mIHNoYXJlZFdvcmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgewor
ICAgICAgICBpZiAocmVnaXN0cmFibGVEb21haW4ubWF0Y2hlcyhzaGFyZWRXb3JrZXItPnVybCgp
KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCit7Cisg
ICAgQVNTRVJUKCFtX2NvbnRleHRDb25uZWN0aW9ucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFp
bikpOworICAgIGlmIChtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnMuY29udGFpbnMo
cmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICByZXR1cm47CisKKyAgICBSRUxFQVNFX0xPRyhT
aGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNyZWF0ZUNvbnRleHRDb25uZWN0
aW9uIHdpbGwgY3JlYXRlIGEgY29ubmVjdGlvbiIpOworCisgICAgbV9wZW5kaW5nQ29udGV4dENv
bm5lY3Rpb25Eb21haW5zLmFkZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgbV9zZXNzaW9uLm5l
dHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hTaGFyZWRXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyByZWdpc3RyYWJsZURvbWFpbiwgbV9z
ZXNzaW9uLnNlc3Npb25JRCgpIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9
LCByZWdpc3RyYWJsZURvbWFpbl0geworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJl
ZFdvcmtlclNlcnZlcjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24gc2hvdWxkIG5vdyBoYXZlIGNy
ZWF0ZWQgYSBjb25uZWN0aW9uIik7CisKKyAgICAgICAgQVNTRVJUKG1fcGVuZGluZ0NvbnRleHRD
b25uZWN0aW9uRG9tYWlucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpOworICAgICAgICBt
X3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnMucmVtb3ZlKHJlZ2lzdHJhYmxlRG9tYWlu
KTsKKworICAgICAgICBpZiAobV9jb250ZXh0Q29ubmVjdGlvbnMuY29udGFpbnMocmVnaXN0cmFi
bGVEb21haW4pKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChuZWVkc0NvbnRl
eHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQorICAg
ICAgICAgICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4pOworICAg
IH0sIDApOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29udGV4dENvbm5l
Y3Rpb24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENv
bm5lY3Rpb24pCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29y
a2VyU2VydmVyOjphZGRDb250ZXh0Q29ubmVjdGlvbiglcCkgd2ViUHJvY2Vzc0lkZW50aWZpZXI9
JSIgUFJJdTY0LCAmY29udGV4dENvbm5lY3Rpb24sIGNvbnRleHRDb25uZWN0aW9uLndlYlByb2Nl
c3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBBU1NFUlQoIW1fY29udGV4dENvbm5l
Y3Rpb25zLmNvbnRhaW5zKGNvbnRleHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCkpKTsK
KworICAgIG1fY29udGV4dENvbm5lY3Rpb25zLmFkZChjb250ZXh0Q29ubmVjdGlvbi5yZWdpc3Ry
YWJsZURvbWFpbigpLCAmY29udGV4dENvbm5lY3Rpb24pOworCisgICAgY29udGV4dENvbm5lY3Rp
b25DcmVhdGVkKGNvbnRleHRDb25uZWN0aW9uKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXI6OnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uKQoreworICAgIFJFTEVBU0VfTE9HKFNo
YXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rp
b24oJXApIHdlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgJmNvbnRleHRDb25uZWN0aW9u
LCBjb250ZXh0Q29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUludDY0KCkpOwor
CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IGNvbnRleHRDb25uZWN0aW9uLnJlZ2lzdHJh
YmxlRG9tYWluKCk7CisKKyAgICBBU1NFUlQobV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0KHJlZ2lz
dHJhYmxlRG9tYWluKSA9PSAmY29udGV4dENvbm5lY3Rpb24pOworCisgICAgbV9jb250ZXh0Q29u
bmVjdGlvbnMucmVtb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKKworICAgIGlmIChuZWVkc0NvbnRl
eHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQorICAg
ICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbik7Cit9CisKK3Zv
aWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24pCit7
CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpj
b250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoJXApIHdlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2
NCwgJmNvbnRleHRDb25uZWN0aW9uLCBjb250ZXh0Q29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRp
ZmllcigpLnRvVUludDY0KCkpOworICAgIGF1dG8mIHJlZ2lzdHJhYmxlRG9tYWluID0gY29udGV4
dENvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKTsKKyAgICBmb3IgKGF1dG8mIHNoYXJlZFdv
cmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAoc2hhcmVkV29y
a2VyLT5kaWRGaW5pc2hGZXRjaGluZygpICYmIHJlZ2lzdHJhYmxlRG9tYWluLm1hdGNoZXMoc2hh
cmVkV29ya2VyLT51cmwoKSkpCisgICAgICAgICAgICBjb250ZXh0Q29ubmVjdGlvbi5sYXVuY2hT
aGFyZWRXb3JrZXIoKnNoYXJlZFdvcmtlcik7CisgICAgfQorfQorCit2b2lkIFdlYlNoYXJlZFdv
cmtlclNlcnZlcjo6c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoY29uc3QgV2ViQ29yZTo6
U2hhcmVkV29ya2VyS2V5JiBzaGFyZWRXb3JrZXJLZXksIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK3sKKyAgICBhdXRv
KiBzaGFyZWRXb3JrZXIgPSBtX3NoYXJlZFdvcmtlcnMuZ2V0KHNoYXJlZFdvcmtlcktleSk7Cisg
ICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaGFy
ZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheTogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0l
e3B1YmxpY31zLCBzaGFyZWRXb3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgc2hhcmVkV29ya2VyKTsKKyAgICBpZiAoIXNoYXJl
ZFdvcmtlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgc2hhcmVkV29ya2VyLT5zaGFyZWRXb3Jr
ZXJPYmplY3RzKCkucmVtb3ZlKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIGlm
ICghc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzKCkuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBzaHV0RG93blNoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXJLZXkpOwor
fQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2h1dERvd25TaGFyZWRXb3JrZXIoY29u
c3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBrZXkpCit7CisgICAgYXV0byBzaGFyZWRXb3Jr
ZXIgPSBtX3NoYXJlZFdvcmtlcnMudGFrZShrZXkpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdv
cmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2h1dERvd25TaGFyZWRXb3JrZXI6IHNoYXJl
ZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHNoYXJlZFdvcmtlcj0lcCIsIHNoYXJlZFdv
cmtlciA/IHNoYXJlZFdvcmtlci0+aWRlbnRpZmllcigpLnRvVUludDY0KCkgOiAwLCBzaGFyZWRX
b3JrZXIuZ2V0KCkpOworICAgIGlmICghc2hhcmVkV29ya2VyKQorICAgICAgICByZXR1cm47CisK
KyAgICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IGNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0
cmFibGVEb21haW4oc2hhcmVkV29ya2VyLT5yZWdpc3RyYWJsZURvbWFpbigpKTsKKyAgICBpZiAo
IWNvbnRleHRDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBjb250ZXh0Q29ubmVj
dGlvbi0+dGVybWluYXRlU2hhcmVkV29ya2VyKCpzaGFyZWRXb3JrZXIpOworCisgICAgaWYgKCFu
ZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oc2hhcmVkV29ya2VyLT5y
ZWdpc3RyYWJsZURvbWFpbigpKSkKKyAgICAgICAgY29udGV4dENvbm5lY3Rpb24tPmNvbm5lY3Rp
b25Jc05vTG9uZ2VyTmVlZGVkKCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjph
ZGRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uPiYmIGNvbm5lY3Rpb24pCit7CisgICAgYXV0byBwcm9jZXNzSWRlbnRpZmllciA9IGNvbm5l
Y3Rpb24tPndlYlByb2Nlc3NJZGVudGlmaWVyKCk7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29y
a2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjphZGRDb25uZWN0aW9uKCVwKTogcHJvY2Vzc0lk
ZW50aWZpZXI9JSIgUFJJdTY0LCBjb25uZWN0aW9uLmdldCgpLCBwcm9jZXNzSWRlbnRpZmllci50
b1VJbnQ2NCgpKTsKKyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbnMuY29udGFpbnMocHJvY2Vzc0lk
ZW50aWZpZXIpKTsKKyAgICBtX2Nvbm5lY3Rpb25zLmFkZChwcm9jZXNzSWRlbnRpZmllciwgV1RG
TW92ZShjb25uZWN0aW9uKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1v
dmVDb25uZWN0aW9uKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVy
KQoreworICAgIGF1dG8gY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMudGFrZShwcm9jZXNzSWRl
bnRpZmllcik7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2Vy
U2VydmVyOjpyZW1vdmVDb25uZWN0aW9uKCVwKTogcHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0
LCBjb25uZWN0aW9uLmdldCgpLCBwcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBB
U1NFUlQoY29ubmVjdGlvbik7CisKKyAgICBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6OlNoYXJl
ZFdvcmtlcktleSwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj4+IHNoYXJl
ZFdvcmtlck9iamVjdHNHb2luZ0F3YXk7CisgICAgZm9yIChhdXRvJiBzaGFyZWRXb3JrZXIgOiBt
X3NoYXJlZFdvcmtlcnMudmFsdWVzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyIDogc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzKCku
a2V5cygpKSB7CisgICAgICAgICAgICBpZiAoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5w
cm9jZXNzSWRlbnRpZmllcigpID09IHByb2Nlc3NJZGVudGlmaWVyKQorICAgICAgICAgICAgICAg
IHNoYXJlZFdvcmtlck9iamVjdHNHb2luZ0F3YXkuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHNoYXJl
ZFdvcmtlci0+a2V5KCksIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBmb3IgKGF1dG8mIFtzaGFyZWRXb3JrZXJLZXksIHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXJdIDogc2hhcmVkV29ya2VyT2JqZWN0c0dvaW5nQXdheSkKKyAgICAgICAg
c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoc2hhcmVkV29ya2VyS2V5LCBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyKTsKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbiogV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjb250ZXh0Q29ubmVjdGlvbkZvclJl
Z2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4p
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGV4dENvbm5lY3Rpb25zLmdldChkb21haW4pOwor
fQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2Jq
ZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBhdXRvKiBzaGFyZWRXb3Jr
ZXIgPSBXZWJTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVyKHNoYXJlZFdvcmtlcklkZW50aWZp
ZXIpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtl
clNlcnZlcjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0OiBzaGFyZWRXb3JrZXJJZGVudGlm
aWVyPSUiIFBSSXU2NCAiLCBzaGFyZWRXb3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVy
LnRvVUludDY0KCksIHNoYXJlZFdvcmtlcik7CisgICAgaWYgKCFzaGFyZWRXb3JrZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
IDogc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzKCkua2V5cygpKSB7CisgICAgICAg
IGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIHNl
cnZlckNvbm5lY3Rpb24tPnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
c291cmNlVVJMKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29y
a2VyU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMmQ4MDM4MDkzNmRlYWZhNGIwZjMx
MjM0OTIwOTdkM2Q4NzM5OTY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmgKQEAgLTAsMCAr
MSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9Q
cm9jZXNzSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dElkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZp
ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1RyYW5zZmVycmVkTWVzc2FnZVBvcnQuaD4KKyNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZWdpc3RyYWJsZURv
bWFpbjsKKworc3RydWN0IENsaWVudE9yaWdpbjsKK3N0cnVjdCBTaGFyZWRXb3JrZXJLZXk7Citz
dHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7CitzdHJ1Y3QgV29ya2VyT3B0aW9uczsKK30KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtTZXNzaW9uOworY2xhc3MgV2ViU2hhcmVk
V29ya2VyOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjsKK2NsYXNzIFdl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CisKK2NsYXNzIFdlYlNoYXJl
ZFdvcmtlclNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNp
dCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIoTmV0d29ya1Nlc3Npb24mKTsKKyAgICB+V2ViU2hhcmVk
V29ya2VyU2VydmVyKCk7CisKKyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKTsKKyAgICBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBjb250ZXh0Q29ubmVjdGlv
bkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikg
Y29uc3Q7CisKKyAgICB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hhcmVkV29y
a2VyS2V5JiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6
OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmKTsKKyAg
ICB2b2lkIHNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZFdvcmtlcktleSYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAg
IHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCisgICAgdm9pZCBhZGRD
b250ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Jik7CisgICAgdm9pZCByZW1vdmVDb250ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CisgICAgdm9pZCBhZGRDb25uZWN0aW9uKHN0ZDo6dW5p
cXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uPiYmKTsKKyAgICB2b2lkIHJl
bW92ZUNvbm5lY3Rpb24oV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOworCitwcml2YXRlOgor
ICAgIHZvaWQgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mKTsKKyAgICBib29sIG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJs
ZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OworICAgIHZv
aWQgY29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24mKTsKKyAgICB2b2lkIGRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29ya2VyU2Ny
aXB0KFdlYlNoYXJlZFdvcmtlciYsIFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYpOworICAg
IHZvaWQgc2h1dERvd25TaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5
Jik7CisKKyAgICBOZXR3b3JrU2Vzc2lvbiYgbV9zZXNzaW9uOworICAgIEhhc2hNYXA8V2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uPj4gbV9jb25uZWN0aW9uczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluLCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4g
bV9jb250ZXh0Q29ubmVjdGlvbnM7CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbj4gbV9wZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5zOworICAgIEhhc2hNYXA8V2Vi
Q29yZTo6U2hhcmVkV29ya2VyS2V5LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyPj4g
bV9zaGFyZWRXb3JrZXJzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hh
cmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA2NDFjMTg5YzJmMjk5ZGI1OTk5NDVhMzczNWE4MWQ1NGY1OGRhOWUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2luY2x1
ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlci5o
IgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlcy5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyRmV0Y2hSZXN1bHQuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKKyNkZWZpbmUgQ09OTkVDVElPTl9NRVNTQUdFX0NIRUNLKGFzc2VydGlvbikgQ09OTkVD
VElPTl9NRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oYXNzZXJ0aW9uLCAodm9pZCkwKQorI2RlZmlu
ZSBDT05ORUNUSU9OX01FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTihhc3NlcnRpb24sIGNvbXBsZXRp
b24pIGRvIHsgXAorICAgIEFTU0VSVChhc3NlcnRpb24pOyBcCisgICAgaWYgKFVOTElLRUxZKCEo
YXNzZXJ0aW9uKSkpIHsgXAorICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJtaW5h
dGVXZWJQcm9jZXNzKG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpLCAwKTsgXAorICAgICAgICB7IGNv
bXBsZXRpb247IH0gXAorICAgICAgICByZXR1cm47IFwKKyAgICB9IFwKK30gd2hpbGUgKDApCisK
KyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hh
cmVkV29ya2VyLCAiJXAgLSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OiIgZm10LCB0aGlzLCBtX3dlYlByb2Nlc3NJZGVu
dGlmaWVyLnRvVUludDY0KCksICMjX19WQV9BUkdTX18pCisjZGVmaW5lIENPTk5FQ1RJT05fUkVM
RUFTRV9MT0dfRVJST1IoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKFNoYXJlZFdvcmtlciwg
IiVwIC0gW3dlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgbV93ZWJQcm9jZXNzSWRlbnRpZmllci50b1VJ
bnQ2NCgpLCAjI19fVkFfQVJHU19fKQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3Jr
UHJvY2VzcywgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIsIElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZp
ZXIpCisgICAgOiBtX2NvbnRlbnRDb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX25ldHdv
cmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQorICAgICwgbV9zZXJ2ZXIoc2VydmVyKQorICAgICwg
bV93ZWJQcm9jZXNzSWRlbnRpZmllcih3ZWJQcm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICBDT05O
RUNUSU9OX1JFTEVBU0VfTE9HKCJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOiIpOwor
fQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjp+V2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygifldlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Iik7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiogV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25z
dAoreworICAgIHJldHVybiBtX2NvbnRlbnRDb25uZWN0aW9uLnB0cigpOworfQorCitQQUw6OlNl
c3Npb25JRCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpzZXNzaW9uSUQoKQorewor
ICAgIHJldHVybiBzZXJ2ZXIoKS5zZXNzaW9uSUQoKTsKK30KKworTmV0d29ya1Nlc3Npb24qIFdl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OnNlc3Npb24oKQoreworICAgIHJldHVybiBt
X25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSk7Cit9CisKK3ZvaWQg
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6cmVxdWVzdFNoYXJlZFdvcmtlcihXZWJD
b3JlOjpTaGFyZWRXb3JrZXJLZXkmJiBzaGFyZWRXb3JrZXJLZXksIFdlYkNvcmU6OlNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29y
ZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBvcnQsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMm
JiB3b3JrZXJPcHRpb25zKQoreworICAgIENPTk5FQ1RJT05fTUVTU0FHRV9DSEVDSyhzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNz
SWRlbnRpZmllcik7CisgICAgQ09OTkVDVElPTl9NRVNTQUdFX0NIRUNLKHNoYXJlZFdvcmtlcktl
eS5uYW1lID09IHdvcmtlck9wdGlvbnMubmFtZSk7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xP
RygicmVxdWVzdFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1
YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gdGhpcy0+c2Vzc2lvbigpKQorICAgICAg
ICBzZXNzaW9uLT5lbnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKS5yZXF1ZXN0U2hhcmVkV29ya2Vy
KFdURk1vdmUoc2hhcmVkV29ya2VyS2V5KSwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwg
V1RGTW92ZShwb3J0KSwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSk7Cit9CisKK3ZvaWQgV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXko
V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiYgc2hhcmVkV29ya2VyS2V5LCBXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7
CisgICAgQ09OTkVDVElPTl9NRVNTQUdFX0NIRUNLKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICBD
T05ORUNUSU9OX1JFTEVBU0VfTE9HKCJzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheTogc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmIChhdXRvKiBzZXNz
aW9uID0gdGhpcy0+c2Vzc2lvbigpKQorICAgICAgICBzZXNzaW9uLT5lbnN1cmVTaGFyZWRXb3Jr
ZXJTZXJ2ZXIoKS5zaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShzaGFyZWRXb3JrZXJLZXks
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb246OmZldGNoU2NyaXB0SW5DbGllbnQoY29uc3QgV2ViU2hhcmVkV29y
a2VyJiBzaGFyZWRXb3JrZXIsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIg
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBD
T05ORUNUSU9OX1JFTEVBU0VfTE9HKCJmZXRjaFNjcmlwdEluQ2xpZW50OiBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpGZXRjaFNjcmlwdEluQ2xpZW50
IHsgc2hhcmVkV29ya2VyLnVybCgpLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBzaGFy
ZWRXb3JrZXIud29ya2VyT3B0aW9ucygpIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
K30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpub3RpZnlXb3JrZXJP
YmplY3RPZkxvYWRDb21wbGV0aW9uKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYgZXJyb3IpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygibm90aWZ5V29ya2Vy
T2JqZWN0T2ZMb2FkQ29tcGxldGlvbjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1
YmxpY31zLCBzdWNjZXNzPSVkIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmlzTnVsbCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpOb3RpZnlXb3JrZXJPYmplY3RPZkxvYWRD
b21wbGV0aW9uIHsgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgZXJyb3IgfSk7Cit9CisK
K3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29y
a2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAg
ICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKCJwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmpl
Y3Q6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpQb3N0RXhjZXB0aW9uVG9X
b3JrZXJPYmplY3QgeyBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2Us
IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMIH0pOworfQorCisjdW5kZWYgQ09O
TkVDVElPTl9SRUxFQVNFX0xPRworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IK
KyN1bmRlZiBDT05ORUNUSU9OX01FU1NBR0VfQ0hFQ0sKKyN1bmRlZiBDT05ORUNUSU9OX01FU1NB
R0VfQ0hFQ0tfQ09NUExFVElPTgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVk
V29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYmY3
NzVkMGE4ZjVjYjcxYzdmMzQ2YTE1NTQ4ZGNkMmRiNDEzMWI0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VT
ZW5kZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKK3N0cnVjdCBXb3JrZXJPcHRpb25z
OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya1Byb2Nlc3M7CitjbGFz
cyBXZWJTaGFyZWRXb3JrZXI7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI7CitjbGFzcyBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOworCitjbGFzcyBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVi
bGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
K3B1YmxpYzoKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9j
ZXNzJiwgV2ViU2hhcmVkV29ya2VyU2VydmVyJiwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIpOworICAgIH5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
KCk7CisKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlcigpIHsgcmV0dXJuIG1fc2Vy
dmVyOyB9CisgICAgY29uc3QgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIoKSBjb25zdCB7
IHJldHVybiBtX3NlcnZlcjsgfQorCisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCk7Cisg
ICAgTmV0d29ya1Nlc3Npb24qIHNlc3Npb24oKTsKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUHJvY2Vzc0lk
ZW50aWZpZXI7IH0KKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAgICB2b2lkIGZldGNoU2NyaXB0SW5DbGllbnQo
Y29uc3QgV2ViU2hhcmVkV29ya2VyJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYm
KT4mJik7CisgICAgdm9pZCBub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKFdlYkNv
cmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKTsKKyAgICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpT
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwg
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
KTsKKworcHJpdmF0ZToKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCisgICAgSVBDOjpDb25u
ZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2
NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsg
fQorCisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAgIHZvaWQgcmVxdWVzdFNoYXJlZFdvcmtlcihX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBXZWJDb3JlOjpXb3Jr
ZXJPcHRpb25zJiYpOworICAgIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyS2V5JiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIpOworCisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb250ZW50Q29ubmVjdGlvbjsK
KyAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7CisgICAgV2ViU2hhcmVk
V29ya2VyU2VydmVyJiBtX3NlcnZlcjsKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBt
X3dlYlByb2Nlc3NJZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzJhODdiN2VjZjQ0NmM5MTk0ZDNhYmRiZjIyNjMwYjRi
MzI1ZGRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
aGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpA
QCAtMCwwICsxLDI2IEBACisjIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K21lc3NhZ2VzIC0+IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24gTm90UmVmQ291bnRl
ZCB7CisgICAgUmVxdWVzdFNoYXJlZFdvcmtlcihzdHJ1Y3QgV2ViQ29yZTo6U2hhcmVkV29ya2Vy
S2V5IHNoYXJlZFdvcmtlcktleSwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3Nh
Z2VQb3J0IHBvcnQsIHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdvcmtlck9wdGlvbnMp
CisgICAgU2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoc3RydWN0IFdlYkNvcmU6OlNoYXJl
ZFdvcmtlcktleSBzaGFyZWRXb3JrZXJLZXksIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmY4NmJjN2Q2YTJkNDMxZjM4MzRkZjg1ZTFkMjYyMzQ1NmY1YTk4Nwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29y
a2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0wLDAg
KzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2lu
Y2x1ZGUgIldlYlNoYXJlZFdvcmtlci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2Vy
U2VydmVyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjZGVmaW5lIENPTlRFWFRfQ09OTkVD
VElPTl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAg
LSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdlYlNoYXJlZFdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OiIgZm10LCB0aGlzLCB3ZWJQcm9jZXNzSWRlbnRpZmllcigp
LnRvVUludDY0KCksICMjX19WQV9BUkdTX18pCisKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24o
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyJiBzZXJ2ZXIpCisgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1fc2Vy
dmVyKHNlcnZlcikKKyAgICAsIG1fcmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4p
Cit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOiIpOworICAgIHNlcnZlci5hZGRDb250ZXh0Q29ubmVj
dGlvbigqdGhpcyk7Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246On5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkKK3sKKyAgICBD
T05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coIn5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOiIpOworICAgIGlmIChtX3NlcnZlciAmJiBtX3NlcnZlci0+Y29udGV4
dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbigpKSA9PSB0
aGlzKQorICAgICAgICBtX3NlcnZlci0+cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oKnRoaXMpOwor
fQorCitXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjp3ZWJQcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fY29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpOworfQorCitJUEM6OkNvbm5l
Y3Rpb24mIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmlwY0Nvbm5l
Y3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpOwor
fQorCitJUEM6OkNvbm5lY3Rpb24qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gJmlw
Y0Nvbm5lY3Rpb24oKTsKK30KKwordWludDY0X3QgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAoreworICAg
IHJldHVybiAwOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkKK3sKKyAgICBDT05URVhUX0NPTk5F
Q1RJT05fUkVMRUFTRV9MT0coImNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkOiIpOworICAgIG1f
Y29ubmVjdGlvbi5zaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdl
ck5lZWRlZCgpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwpCit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJwb3N0RXhjZXB0
aW9uVG9Xb3JrZXJPYmplY3Q6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFy
ZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIGlmIChtX3NlcnZlcikKKyAgICAg
ICAgbV9zZXJ2ZXItPnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJJZGVu
dGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJM
KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjps
YXVuY2hTaGFyZWRXb3JrZXIoV2ViU2hhcmVkV29ya2VyJiBzaGFyZWRXb3JrZXIpCit7CisgICAg
Q09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJsYXVuY2hTaGFyZWRXb3JrZXI6IHNoYXJl
ZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXIuaWRlbnRpZmllcigpLnRv
VUludDY0KCkpOworICAgIHNoYXJlZFdvcmtlci5tYXJrQXNSdW5uaW5nKCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpMYXVuY2hT
aGFyZWRXb3JrZXIgeyBzaGFyZWRXb3JrZXIub3JpZ2luKCksIHNoYXJlZFdvcmtlci5pZGVudGlm
aWVyKCksIHNoYXJlZFdvcmtlci51cmwoKSwgc2hhcmVkV29ya2VyLndvcmtlck9wdGlvbnMoKSwg
c2hhcmVkV29ya2VyLmZldGNoUmVzdWx0KCkgfSk7CisgICAgZm9yIChhdXRvJiBwb3J0IDogc2hh
cmVkV29ya2VyLnNoYXJlZFdvcmtlck9iamVjdHMoKS52YWx1ZXMoKSkKKyAgICAgICAgcG9zdENv
bm5lY3RFdmVudChzaGFyZWRXb3JrZXIsIHBvcnQpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnBvc3RDb25uZWN0RXZlbnQoY29uc3QgV2ViU2hh
cmVkV29ya2VyJiBzaGFyZWRXb3JrZXIsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2Fn
ZVBvcnQmIHBvcnQpCit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJwb3N0
Q29ubmVjdEV2ZW50OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29y
a2VyLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlBvc3RDb25uZWN0RXZlbnQgeyBzaGFy
ZWRXb3JrZXIuaWRlbnRpZmllcigpLCBwb3J0LCBzaGFyZWRXb3JrZXIub3JpZ2luKCkuY2xpZW50
T3JpZ2luLnRvU3RyaW5nKCkgfSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlU2hhcmVkV29ya2VyKGNvbnN0IFdlYlNoYXJlZFdv
cmtlciYgc2hhcmVkV29ya2VyKQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xP
RygidGVybWluYXRlU2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2
NCwgc2hhcmVkV29ya2VyLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlRlcm1pbmF0ZVNo
YXJlZFdvcmtlciB7IHNoYXJlZFdvcmtlci5pZGVudGlmaWVyKCkgfSk7Cit9CisKKyN1bmRlZiBD
T05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0cKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDZhZWEzMTlhYTNlODBlNjcwZGVkYmMwYzhhYmQwZjJm
NmI1Y2EyNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApA
QCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAi
V2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVE
b21haW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1RyYW5zZmVycmVkTWVzc2FnZVBvcnQuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworY2xhc3MgUmVnaXN0cmFibGVEb21haW47CitjbGFzcyBTY3JpcHRCdWZmZXI7Citz
dHJ1Y3QgQ2xpZW50T3JpZ2luOworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0Oworc3RydWN0IFdv
cmtlck9wdGlvbnM7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzczsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlcjsKK2NsYXNzIFdlYlNo
YXJlZFdvcmtlclNlcnZlcjsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwg
V2ViU2hhcmVkV29ya2VyU2VydmVyJik7CisgICAgfldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24oKTsKKworICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlBy
b2Nlc3NJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURv
bWFpbjsgfQorICAgIElQQzo6Q29ubmVjdGlvbiYgaXBjQ29ubmVjdGlvbigpIGNvbnN0OworCisg
ICAgdm9pZCBsYXVuY2hTaGFyZWRXb3JrZXIoV2ViU2hhcmVkV29ya2VyJik7CisgICAgdm9pZCBw
b3N0Q29ubmVjdEV2ZW50KGNvbnN0IFdlYlNoYXJlZFdvcmtlciYsIGNvbnN0IFdlYkNvcmU6OlRy
YW5zZmVycmVkTWVzc2FnZVBvcnQmKTsKKyAgICB2b2lkIHRlcm1pbmF0ZVNoYXJlZFdvcmtlcihj
b25zdCBXZWJTaGFyZWRXb3JrZXImKTsKKworICAgIHZvaWQgY29ubmVjdGlvbklzTm9Mb25nZXJO
ZWVkZWQoKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJikgZmluYWw7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDIG1lc3NhZ2VzLgor
ICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtl
cklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCisgICAgLy8gSVBD
OjpNZXNzYWdlU2VuZGVyLgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRp
b25JRCgpIGNvbnN0IGZpbmFsOworCisgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IG1fY29ubmVjdGlvbjsKKyAgICBXZWFrUHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlcj4gbV9zZXJ2
ZXI7CisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hh
cmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWU0N2MxMjJjYmFjODczYzIyYjZkYTNiYzFlYTRkYTA2OGUzNTky
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVk
V29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMu
aW4KQEAgLTAsMCArMSwyNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCittZXNzYWdlcyAtPiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
IE5vdFJlZkNvdW50ZWQgeworICAgIFBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFN0cmluZyBl
cnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTdHJpbmcgc291
cmNlVVJMKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCAxYzQyZDA0MGMxYTkwYjBh
YWRkMTRlOGIzMzVlZjhkZGJiY2FmOWQ2Li5kZTMyZjgxNzE3MTU2NDdkNTM2MTA2MjZhNDc5MTkw
NDAwN2RlYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaApAQCAtOTcsNiArOTcsNyBAQCBl
eHRlcm4gIkMiIHsKICAgICBNKFNlcnZpY2VXb3JrZXIpIFwKICAgICBNKFNlc3Npb25TdGF0ZSkg
XAogICAgIE0oU2hhcmVkRGlzcGxheUxpc3RzKSBcCisgICAgTShTaGFyZWRXb3JrZXIpIFwKICAg
ICBNKFN0b3JhZ2UpIFwKICAgICBNKFN0b3JhZ2VBUEkpIFwKICAgICBNKFRleHRJbnB1dCkgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggN2ViZmE1MTZiNTAz
MzZkMzY4N2Y3ZWNkZDE3ZThlN2ViZDFjZDlkNy4uNGM4Y2FkMDQ2NDcxNmY3MzMyYWFiNWM3OThi
NmMxYWE1NWJiNzhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
CkBAIC0zMDMsMTAgKzMwMywxMyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9k
ZWNsYXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoJywKKyAgICAgICAgJ1dl
YkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXInLAorICAgICAgICAnV2ViQ29yZTo6U2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTbGVlcERpc2FibGVy
SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTb3VyY2VCdWZmZXJBcHBlbmRNb2RlJywK
ICAgICAgICAgJ1dlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50
aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U3RvcmFnZVR5cGUnLAorICAgICAgICAnV2ViQ29y
ZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCcsCiAgICAgICAgICdXZWJDb3JlOjpVc2VyTWVkaWFS
ZXF1ZXN0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpXZWJMb2NrSWRlbnRpZmllcics
CiAgICAgICAgICdXZWJDb3JlOjpXZWJTb2NrZXRJZGVudGlmaWVyJywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4
IDU3ZWYzYjE0ZWFmMmMxMDkyMDk4ZWU5NDMyZjUwOGM2MTFlNThlMzUuLmUzMTM5MTA1OWNiM2Ni
MjAwYTQ4MzcxOTlhNDlkMzIxOWM4NDQ3M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMTQxLDYgKzE0MSwx
MSBAQCBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuY3BwIEBu
by11bmlmeQogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rp
b24uY3BwIEBuby11bmlmeQogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uY3BwIEBuby11bmlmeQogCitOZXR3b3JrUHJvY2Vzcy9TaGFy
ZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmNwcAorTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2Vy
L1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAKK05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcAorTmV0d29ya1Byb2Nlc3MvU2hhcmVk
V29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisKIE5l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNwcAogTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5jcHAKIE5ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS5jcHAKQEAgLTc4Myw4
ICs3ODgsOSBAQCBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uY3BwCiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dPcmlnaW5UYWJsZS5jcHAKIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAogV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAKLVdlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAKK1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCiBXZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKK1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAKIAogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXIuY3BwCiAKQEAgLTg4NywzICs4OTMsNyBAQCBSZW1vdGVXZWJM
b2NrUmVnaXN0cnlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNr
TWVzc2FnZVJlY2VpdmVyLmNwcAogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5TWVzc2FnZVJl
Y2VpdmVyLmNwcAogV2ViTG9ja1JlZ2lzdHJ5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCitX
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKK1dlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcAppbmRleCBhNjc4MzY3YTc3NWE0OWJhODFiMjQ4OGNmMzFlYWI5ZGNjY2NjOTIxLi4zMzAy
MGJkNWMzY2Q5NDE3NzU2MTU3OWFjMjBmYzM4ZjljNjkyNzhlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAg
LTUyOSw3ICs1MjksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVdlYlBy
b2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvYwogdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5Ojp0ZXJtaW5hdGVVbnJlc3BvbnNpdmVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQogewogICAgIGlmIChS
ZWZQdHIgcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIocHJv
Y2Vzc0lkZW50aWZpZXIpKSB7Ci0gICAgICAgIHByb2Nlc3MtPmRpc2FibGVTZXJ2aWNlV29ya2Vy
cygpOworICAgICAgICBwcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6Oldv
cmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogICAgICAgICBwcm9jZXNzLT5yZXF1ZXN0VGVybWlu
YXRpb24oUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpFeGNlZWRlZENQVUxpbWl0KTsKICAgICB9
CiB9CkBAIC0xNDE1LDE2ICsxNDE1LDIxIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlk
RGVzdHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50CiB9CiAj
ZW5kaWYKIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mJiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgV2ViUHJvY2Vz
c1Bvb2w6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7Cit9CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiB2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwg
c3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdv
cmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBXZWJQcm9jZXNzUG9v
bDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cygqdGhpcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQYWdlSWRl
bnRpZmllciwgc2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgV2Vi
UHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MoV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQYWdl
SWRlbnRpZmllciwgc2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAK
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9u
Tm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikKIHsK
ICAgICBpZiAoYXV0byogcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50
aWZpZXIoaWRlbnRpZmllcikpCi0gICAgICAgIHByb2Nlc3MtPmRpc2FibGVTZXJ2aWNlV29ya2Vy
cygpOworICAgICAgICBwcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6Oldv
cmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNl
cnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikKQEAgLTE0NjAsNiArMTQ2NSwxMiBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2lu
ZyhXZWJDb3JlOjpQcm9jZXNzSQogfQogI2VuZGlmCiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6c2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvKiBwcm9jZXNzID0g
V2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihpZGVudGlmaWVyKSkKKyAgICAg
ICAgcHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpT
aGFyZWRXb3JrZXIpOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9y
YWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mIG9yaWdpbiwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6
ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBxdW90YSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUkVM
RUFTRV9MT0coU3RvcmFnZSwgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3Jh
Z2VTcGFjZSIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBhNGUzNjQ1ZWJhYWUzMzZkMTgwYjU0MTRi
YWZhYTM1ZDgzZjkxOGM0Li42ODQxYTM0ZmUwOWQxMmJhOTNkNGVmOGM4MGU0NTMzYTU1ZmQ2NWM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaApAQCAtMzM0LDYgKzMzNCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFy
dFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIHZvaWQgZW5kU2Vydmlj
ZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNl
cnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7CiAjZW5kaWYKKyAgICB2b2lkIHNoYXJlZFdv
cmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIpOworICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCB0ZXJtaW5hdGVX
ZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluCmluZGV4IDEyZDA2Y2ViZDYyYWYxNzUwZTc4ODU1OWMxM2ExYjM5ODNmZGQy
YmEuLjE1NzU3ZWQ5YTI1MmIwOWRjZDExYmI1ZTZiOWM4YTEwZDA1MzRjOWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTYwLDYgKzYwLDggQEAgbWVzc2FnZXMgLT4gTmV0d29y
a1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU3RhcnRTZXJ2aWNlV29ya2VyQmFj
a2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtl
clByb2Nlc3NJZGVudGlmaWVyKQogICAgIEVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vz
c2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50
aWZpZXIpCiAjZW5kaWYKKyAgICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVE
b21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKKyAgICBTaGFyZWRX
b3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiAKICAgICBTZXRXZWJQcm9jZXNzSGFzVXBsb2FkcyhXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSUQsIGJvb2wgaGFzVXBsb2FkKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBiYjQxYzExMWEzMzU5ZTBhMjMz
ZjM0NGQyZjlkZTZkMDFjMjhhNTcwLi5lNDFmZDg3ODAwOTA4NjEyOWY3MDQzMTBjMzIyYmRlZWI2
YzZkMDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM2
OTQsMTEgKzM2OTQsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlckFnZW50KFN0cmluZyYm
IHVzZXJBZ2VudCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fdXNlckFnZW50ID0gV1RGTW92ZSh1
c2VyQWdlbnQpOwogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIC8vIFdlIHVwZGF0
ZSB0aGUgc2VydmljZSB3b3JrZXIgdGhlcmUgYXQgdGhlIG1vbWVudCB0byBiZSBzdXJlIHdlIHVz
ZSB2YWx1ZXMgdXNlZCBieSBhY3R1YWwgd2ViIHBhZ2VzLgogICAgIC8vIEZJWE1FOiBSZWZhY3Rv
ciB0aGlzIHdoZW4gd2UgaGF2ZSBhIGJldHRlciBVc2VyLUFnZW50IHN0b3J5LgotICAgIHByb2Nl
c3MoKS5wcm9jZXNzUG9vbCgpLnVwZGF0ZVNlcnZpY2VXb3JrZXJVc2VyQWdlbnQobV91c2VyQWdl
bnQpOwotI2VuZGlmCisgICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCkudXBkYXRlV29ya2VyVXNl
ckFnZW50KG1fdXNlckFnZW50KTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CmluZGV4IGFmYzIzZWU1M2YxMjg0MjE5M2QyZWFlZjIwZjI1OTYyZWVkNzNmYTIuLjRiMTliMGQx
ZDNjMTU0Y2IyZTZmMzAyMzZiMTM0ZTA1OThjYTI0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTUyOSw3ICs1MjksNyBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjpnZXRXZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2Vi
UHJvY2Vzc1BybwogYm9vbCBXZWJQcm9jZXNzUG9vbDo6c191c2VTZXBhcmF0ZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzID0gZmFsc2U7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdl
YlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmIHByb3h5LCBSZWdpc3RyYWJsZURvbWFp
biYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9t
YWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2
aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8qIHdl
YnNpdGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNl
c3Npb25JRChzZXNzaW9uSUQpOwogICAgIGlmICghd2Vic2l0ZURhdGFTdG9yZSkKQEAgLTU0Niw3
ICs1NDYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldAogICAgIGlmIChzZXJ2aWNlV29ya2Vy
UGFnZUlkZW50aWZpZXIpIHsKICAgICAgICAgLy8gVGhpcyBpcyBhIHNlcnZpY2Ugd29ya2VyIGZv
ciBhIHNlcnZpY2Ugd29ya2VyIHBhZ2Ugc28gd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgdXNlIHVz
ZSB0aGUgcGFnZSdzIFdlYlByb2Nlc3MgZm9yIHRoZSBzZXJ2aWNlIHdvcmtlci4KICAgICAgICAg
aWYgKChzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNz
Rm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXItPnByb2Nlc3NJZGVudGlm
aWVyKCkpKSkgewotICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxl
U2VydmljZVdvcmtlcnMocHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXJGb3JTZXJ2aWNlV29ya2VycygpKTsKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHktPmVuYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNl
V29ya2VyLCBwcm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldv
cmtlcnMoKSk7CiAgICAgICAgICAgICBpZiAoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+aXNJ
blByb2Nlc3NDYWNoZSgpKSB7CiAgICAgICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPndlYlByb2Nl
c3NDYWNoZSgpLnJlbW92ZVByb2Nlc3MoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIFdlYlBy
b2Nlc3NDYWNoZTo6U2hvdWxkU2h1dERvd25Qcm9jZXNzOjpObyk7CiAgICAgICAgICAgICAgICAg
QVNTRVJUKCFzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpOwpA
QCAtNTY0LDcgKzU2NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0CiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAKICAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBw
cm9jZXNzLnB0cigpOwotICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5h
YmxlU2VydmljZVdvcmtlcnMocHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXJGb3JTZXJ2aWNlV29ya2VycygpKTsKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHktPmVuYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2
aWNlV29ya2VyLCBwcm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZv
cldvcmtlcnMoKSk7CiAKICAgICAgICAgICAgIGlmIChzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
LT5pc0luUHJvY2Vzc0NhY2hlKCkpIHsKICAgICAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+d2Vi
UHJvY2Vzc0NhY2hlKCkucmVtb3ZlUHJvY2Vzcygqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwg
V2ViUHJvY2Vzc0NhY2hlOjpTaG91bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKQEAgLTU3Nyw3ICs1
NzcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldAogICAgIH0KIAogICAgIGlmICghc2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eSkgewotICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdl
YlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMoKnByb2Nlc3NQb29sLCBSZWdp
c3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7
CisgICAgICAgIGF1dG8gbmV3UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVG
b3JXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgKnBy
b2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vi
c2l0ZURhdGFTdG9yZSk7CiAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBuZXdQ
cm9jZXNzUHJveHkucHRyKCk7CiAKICAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0df
U1RBVElDKFNlcnZpY2VXb3JrZXIsICJlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzIGNyZWF0aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nl
c3MgKHByb2Nlcz0lcCwgUElEPSVkKSIsIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIHNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOwpAQCAtNTg2LDIwICs1
ODYsNzAgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXQKICAgICAgICAgcHJvY2Vzc1Bvb2wtPm1f
cHJvY2Vzc2VzLmFwcGVuZChXVEZNb3ZlKG5ld1Byb2Nlc3NQcm94eSkpOwogICAgIH0KIAotICAg
IEFTU0VSVCghc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmNvbnRhaW5zKCpzZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5KSk7Ci0gICAgc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eSk7CisgICAgd29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpzZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5KTsKIAotICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVz
dGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJQ
cmVmZXJlbmNlcyA/IHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcy52YWx1
ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9y
ZSgpLCByZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgaWYgKCFwcm9jZXNzUG9vbC0+bV9zZXJ2aWNl
V29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5LT5zZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3Jr
ZXJVc2VyQWdlbnQpOworICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNl
cnZpY2VXb3JrZXJDb250ZXh0KHByb2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2VzID8gcHJv
Y2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2Rl
ZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVEb21haW4s
IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQorICAg
ICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRXb3JrZXJVc2VyQWdlbnQocHJvY2Vz
c1Bvb2wtPm1fd29ya2VyVXNlckFnZW50KTsKIH0KKyNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQ
b29sOjpyZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmIHBy
b2Nlc3MpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKFdl
YlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIHsKLSAgICBBU1NFUlQoc2VydmljZVdvcmtlclByb2Nl
c3NlcygpLmNvbnRhaW5zKHByb2Nlc3MpKTsKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCku
cmVtb3ZlKHByb2Nlc3MpOworICAgIEFTU0VSVCh3b3JrZXJQcm9jZXNzZXMoKS5jb250YWlucyhw
cm9jZXNzKSk7CisgICAgd29ya2VyUHJvY2Vzc2VzKCkucmVtb3ZlKHByb2Nlc3MpOworfQorCit2
b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJs
ZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9
IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Npb25J
RCk7CisgICAgaWYgKCF3ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICB3ZWJzaXRlRGF0YVN0b3Jl
ID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOworICAgIGlmICgh
cHJvY2Vzc1Bvb2xzKCkuc2l6ZSgpKQorICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVm
PFdlYlByb2Nlc3NQb29sPj4gc2hhcmVkV29ya2VyUHJvY2Vzc1Bvb2woV2ViUHJvY2Vzc1Bvb2w6
OmNyZWF0ZShBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCkuZ2V0KCkpKTsK
KworICAgIC8vIEFyYml0cmFyaWx5IGNob29zZSB0aGUgZmlyc3QgcHJvY2VzcyBwb29sIHRvIGhv
c3QgdGhlIHNoYXJlZCB3b3JrZXIgcHJvY2Vzcy4KKyAgICBhdXRvKiBwcm9jZXNzUG9vbCA9IHBy
b2Nlc3NQb29scygpWzBdOworICAgIEFTU0VSVChwcm9jZXNzUG9vbCk7CisKKyAgICBXZWJQcm9j
ZXNzUHJveHkqIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSB7IG51bGxwdHIgfTsKKworICAgIGZv
ciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3NQb29sLT5tX3Byb2Nlc3NlcykgeworICAgICAgICBp
ZiAocHJvY2Vzcy5wdHIoKSA9PSBwcm9jZXNzUG9vbC0+bV9wcmV3YXJtZWRQcm9jZXNzLmdldCgp
IHx8IHByb2Nlc3MtPmlzRHVtbXlQcm9jZXNzUHJveHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBpZiAoJnByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0
YVN0b3JlKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghcHJvY2Vzcy0+aXNN
YXRjaGluZ1JlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSA9IHByb2Nlc3Mu
cHRyKCk7CisgICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlV29ya2VycyhX
ZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOworCisgICAgICAgIGlm
IChzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSkgeworICAgICAg
ICAgICAgcHJvY2Vzc1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nlc3MoKnNoYXJl
ZFdvcmtlclByb2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0NhY2hlOjpTaG91bGRTaHV0RG93blByb2Nl
c3M6Ok5vKTsKKyAgICAgICAgICAgIEFTU0VSVCghc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5p
c0luUHJvY2Vzc0NhY2hlKCkpOworICAgICAgICB9CisKKyAgICAgICAgV0VCUFJPQ0VTU1BPT0xf
UkVMRUFTRV9MT0dfU1RBVElDKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyByZXVzaW5nIGFuIGV4aXN0aW5nIHdlYiBw
cm9jZXNzIChwcm9jZXNzPSVwLCBQSUQ9JWQpIiwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LCBz
aGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICBpZiAoIXNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSkgeworICAg
ICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yV29y
a2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgKnByb2Nlc3NQ
b29sLCBSZWdpc3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURh
dGFTdG9yZSk7CisgICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSA9IG5ld1Byb2Nlc3NQ
cm94eS5wdHIoKTsKKworICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMo
U2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzIGNyZWF0aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nl
c3M9JXAsIFBJRD0lZCkiLCBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHksIHNoYXJlZFdvcmtlclBy
b2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisKKyAgICAgICAgcHJvY2Vzc1Bvb2wt
PmluaXRpYWxpemVOZXdXZWJQcm9jZXNzKG5ld1Byb2Nlc3NQcm94eSwgd2Vic2l0ZURhdGFTdG9y
ZSk7CisgICAgICAgIHByb2Nlc3NQb29sLT5tX3Byb2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdQ
cm9jZXNzUHJveHkpKTsKKyAgICB9CisKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNoYXJl
ZFdvcmtlclByb2Nlc3NQcm94eSk7CisKKyAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmVz
dGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5j
ZXMgPyBwcm9jZXNzUG9vbC0+bV93b3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bv
b2wtPm1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJs
ZURvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmICghcHJvY2Vzc1Bv
b2wtPm1fd29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQorICAgICAgICBzaGFyZWRXb3JrZXJQcm9j
ZXNzUHJveHktPnNldFdvcmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV93b3JrZXJVc2VyQWdl
bnQpOwogfQotI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OndpbmRvd1NlcnZlckNvbm5l
Y3Rpb25TdGF0ZUNoYW5nZWQoKQogewpAQCAtMTAwMywxMCArMTA1Myw4IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIAog
ICAgIG1fYmFja0ZvcndhcmRDYWNoZS0+cmVtb3ZlRW50cmllc0ZvclByb2Nlc3MocHJvY2Vzcyk7
CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5n
U2VydmljZVdvcmtlcnMoKSkKLSAgICAgICAgcmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNz
ZXMocHJvY2Vzcyk7Ci0jZW5kaWYKKyAgICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdXb3JrZXJzKCkp
CisgICAgICAgIHJlbW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7CiAKICAgICBzdGF0
aWNfY2FzdDxXZWJDb250ZXh0U3VwcGxlbWVudCo+KHN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk+KCkpLT5wcm9jZXNzRGlkQ2xvc2UoJnByb2Nlc3MpOwogCkBAIC0xMDY3LDEy
ICsxMTE1LDEyIEBAIFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9jZXNz
Rm9yUmVnaXN0cmFibGVEb21haW4oV2Vic2l0ZURhdGFTdG9yCiB9CiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCi1Vc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIFdlYlByb2Nlc3NQ
b29sOjp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKQor
VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBXZWJQcm9jZXNzUG9vbDo6dXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKQogewotICAgIGlmICghbV91c2VyQ29u
dGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyKQotICAgICAgICBtX3VzZXJDb250ZW50Q29u
dHJvbGxlckZvclNlcnZpY2VXb3JrZXIgPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
Y3JlYXRlKCk7CisgICAgaWYgKCFtX3VzZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtlcnMpCisg
ICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2VycyA9IFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpjcmVhdGUoKTsKIAotICAgIHJldHVybiBtX3VzZXJDb250ZW50Q29u
dHJvbGxlckZvclNlcnZpY2VXb3JrZXItPmlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gbV91c2Vy
Q29udGVudENvbnRyb2xsZXJGb3JXb3JrZXJzLT5pZGVudGlmaWVyKCk7CiB9CiAjZW5kaWYKIApA
QCAtMTExOSwxNSArMTE2NywxMyBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6
Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogCiAgICAgYXV0
byBwYWdlID0gcHJvY2Vzcy0+Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBXVEZNb3ZlKHBhZ2VD
b25maWd1cmF0aW9uKSk7CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKCFt
X3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcykgewotICAgICAgICBtX3NlcnZpY2VXb3JrZXJQcmVm
ZXJlbmNlcyA9IHBhZ2UtPnByZWZlcmVuY2VzU3RvcmUoKTsKLSAgICAgICAgZm9yIChhdXRvJiBz
ZXJ2aWNlV29ya2VyUHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSkKLSAgICAgICAg
ICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzLnVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0
b3JlKCptX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyk7CisgICAgaWYgKCFtX3dvcmtlclByZWZl
cmVuY2VzKSB7CisgICAgICAgIG1fd29ya2VyUHJlZmVyZW5jZXMgPSBwYWdlLT5wcmVmZXJlbmNl
c1N0b3JlKCk7CisgICAgICAgIGZvciAoYXV0byYgd29ya2VyUHJvY2VzcyA6IHdvcmtlclByb2Nl
c3NlcygpKQorICAgICAgICAgICAgd29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcmVmZXJlbmNl
c1N0b3JlKCptX3dvcmtlclByZWZlcmVuY2VzKTsKICAgICB9CiAgICAgaWYgKHVzZXJDb250ZW50
Q29udHJvbGxlcikKLSAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29y
a2VyID0gdXNlckNvbnRlbnRDb250cm9sbGVyOwotI2VuZGlmCisgICAgICAgIG1fdXNlckNvbnRl
bnRDb250cm9sbGVyRm9yV29ya2VycyA9IHVzZXJDb250ZW50Q29udHJvbGxlcjsKIAogICAgIGJv
b2wgZW5hYmxlUHJvY2Vzc1N3YXBPbkNyb3NzU2l0ZU5hdmlnYXRpb24gPSBwYWdlLT5wcmVmZXJl
bmNlcygpLnByb2Nlc3NTd2FwT25Dcm9zc1NpdGVOYXZpZ2F0aW9uRW5hYmxlZCgpOwogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCkBAIC0xMTUwLDE2ICsxMTk2LDE0IEBAIFJlZjxXZWJQYWdlUHJv
eHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQs
IFJlZjxBUEk6CiAgICAgcmV0dXJuIHBhZ2U7CiB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi12b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNv
bnN0IFN0cmluZyYgdXNlckFnZW50KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlV29ya2Vy
VXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQogewotICAgIGlmIChtX3NlcnZpY2VX
b3JrZXJVc2VyQWdlbnQgPT0gdXNlckFnZW50KQorICAgIGlmIChtX3dvcmtlclVzZXJBZ2VudCA9
PSB1c2VyQWdlbnQpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3NlcnZpY2VXb3JrZXJVc2VyQWdl
bnQgPSB1c2VyQWdlbnQ7Ci0gICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IHNl
cnZpY2VXb3JrZXJQcm9jZXNzZXMoKSkKLSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3Muc2V0
U2VydmljZVdvcmtlclVzZXJBZ2VudChtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQpOworICAgIG1f
d29ya2VyVXNlckFnZW50ID0gdXNlckFnZW50OworICAgIGZvciAoYXV0byYgd29ya2VyUHJvY2Vz
cyA6IHdvcmtlclByb2Nlc3NlcygpKQorICAgICAgICB3b3JrZXJQcm9jZXNzLnNldFdvcmtlclVz
ZXJBZ2VudChtX3dvcmtlclVzZXJBZ2VudCk7CiB9Ci0jZW5kaWYKIAogdm9pZCBXZWJQcm9jZXNz
UG9vbDo6cGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCiB7CkBAIC0xNTM4LDggKzE1
ODIsMTMgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlU2VydmljZVdvcmtlcnMoKQog
ewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0
aGlzIH07Ci0gICAgd2hpbGUgKHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb21wdXRlU2l6ZSgp
KQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkuYmVnaW4oKS0+ZGlzYWJsZVNlcnZp
Y2VXb3JrZXJzKCk7CisgICAgVmVjdG9yPFJlZjxXZWJQcm9jZXNzUHJveHk+PiBzZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzOworICAgIHdvcmtlclByb2Nlc3NlcygpLmZvckVhY2goWyZdKGF1dG8mIHBy
b2Nlc3MpIHsKKyAgICAgICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkK
KyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYXBwZW5kKHByb2Nlc3MpOworICAg
IH0pOworICAgIGZvciAoYXV0byYgc2VydmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzKQorICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMo
V2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgogfQog
CkBAIC0xNzY3LDEzICsxODE2LDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcG9ydFdlYkNv
bnRlbnRDUFVUaW1lKFNlY29uZHMgY3B1VGltZSwgdWludDY0X3QgYWN0aXZpdHlTCiAjZW5kaWYK
IH0KIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLVdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQ
cm94eT4mIFdlYlByb2Nlc3NQb29sOjpzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkKK1dlYWtIYXNo
U2V0PFdlYlByb2Nlc3NQcm94eT4mIFdlYlByb2Nlc3NQb29sOjp3b3JrZXJQcm9jZXNzZXMoKQog
ewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+
PiBwcm9jZXNzZXM7CiAgICAgcmV0dXJuIHByb2Nlc3NlczsKIH0KLSNlbmRpZgogCiB2b2lkIFdl
YlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpCiB7CkBAIC0xNzg1LDIwICsx
ODMyLDI1IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkK
ICAgICBpZiAoYXV0byogZ3B1UHJvY2VzcyA9IEdQVVByb2Nlc3NQcm94eTo6c2luZ2xldG9uSWZD
cmVhdGVkKCkpCiAgICAgICAgIGdwdVByb2Nlc3MtPnVwZGF0ZVByb2Nlc3NBc3NlcnRpb24oKTsK
ICNlbmRpZgotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKwogICAgIC8vIENoZWNrIG9uIG5l
eHQgcnVuIGxvb3Agc2luY2UgdGhlIHdlYiBwcm9jZXNzIHByb3h5IHRva2VucyBhcmUgcHJvYmFi
bHkgYmVpbmcgdXBkYXRlZC4KICAgICBjYWxsT25NYWluUnVuTG9vcChbXSB7Ci0gICAgICAgIGZv
ciAoYXV0byYgc2VydmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkp
Ci0gICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy51cGRhdGVTZXJ2aWNlV29ya2VyUHJv
Y2Vzc0Fzc2VydGlvbigpOwotICAgIH0pOworICAgICAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JF
YWNoKFtdKGF1dG8mIHdvcmtlclByb2Nlc3MpIHsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CisgICAgICAgICAgICBpZiAod29ya2VyUHJvY2Vzcy5pc1J1bm5pbmdTZXJ2aWNlV29ya2Vycygp
KQorICAgICAgICAgICAgICAgIHdvcmtlclByb2Nlc3MudXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2Vy
dGlvbihXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogI2VuZGlm
CisgICAgICAgICAgICBpZiAod29ya2VyUHJvY2Vzcy5pc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkp
CisgICAgICAgICAgICAgICAgd29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0
aW9uKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKTsKKyAgICAgICAg
fSk7CisgICAgfSk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6OmlzU2VydmljZVdvcmtlclBh
Z2VJRChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgaW5lZmZpY2llbnQuCi0gICAg
cmV0dXJuIFdURjo6YW55T2Yoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLCBbcGFnZUlEXShhdXRv
JiBwcm9jZXNzKSB7CisgICAgcmV0dXJuIFdURjo6YW55T2Yod29ya2VyUHJvY2Vzc2VzKCksIFtw
YWdlSURdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuIHByb2Nlc3MuaGFzU2Vydmlj
ZVdvcmtlclBhZ2VQcm94eShwYWdlSUQpOwogICAgIH0pOwogI2VuZGlmCkBAIC0yMTI0LDE2ICsy
MTc2LDI2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFVzZVNlcGFyYXRlU2VydmljZVdvcmtl
clByb2Nlc3MoYm9vbCB1c2VTZXBhcmF0ZVNlcnZpY2VXCiB9CiAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCitzaXplX3QgV2ViUHJvY2Vzc1Bvb2w6OnNlcnZpY2VXb3JrZXJQcm94aWVzQ291
bnQoKSBjb25zdAoreworICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKKyAgICB3b3JrZXJQcm9jZXNz
ZXMoKS5mb3JFYWNoKFsmXShhdXRvJiBwcm9jZXNzKSB7CisgICAgICAgIGlmIChwcm9jZXNzLmlz
UnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCisgICAgICAgICAgICArK2NvdW50OworICAgIH0pOwor
ICAgIHJldHVybiBjb3VudDsKK30KKwogYm9vbCBXZWJQcm9jZXNzUG9vbDo6aGFzU2VydmljZVdv
cmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdAogewotICAgIHJldHVybiBX
VEY6OmFueU9mKHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2Vzcykgewor
ICAgIHJldHVybiBXVEY6OmFueU9mKHdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9jZXNz
KSB7CiAgICAgICAgIHJldHVybiBwcm9jZXNzLmhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0
aXZpdHlGb3JUZXN0aW5nKCk7CiAgICAgfSk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6Omhh
c1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gV1RGOjphbnlPZihzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8mIHBy
b2Nlc3MpIHsKKyAgICByZXR1cm4gV1RGOjphbnlPZih3b3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0
byYgcHJvY2VzcykgewogICAgICAgICByZXR1cm4gcHJvY2Vzcy5oYXNTZXJ2aWNlV29ya2VyQmFj
a2dyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggZWI2NmQ4OTQ5MGRmZTAyOGIxMDEyNWU5M2Zm
YmQxOThkMDI3ZjdjZS4uZTcwYjZmNDI5ZjdjYjcwNjk1NDk1MGY5MDBkMzc4MTNiZGFkZGJiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0zNzQsMTcgKzM3
NCwyMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0RpZFRlcm1pbmF0ZShOZXR3
b3JrUHJvY2Vzc1Byb3h5JiwgTmV0d29ya1Byb2Nlc3NQcm94eTo6VGVybWluYXRpb25SZWFzb24p
OwogCiAgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJQYWdlSUQoV2ViUGFnZVByb3h5SWRlbnRpZmll
cikgY29uc3Q7CisgICAgdm9pZCByZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQ
cm94eSYpOworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHN0YXRpYyB2b2lkIGVz
dGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0
d29ya1Byb2Nlc3NQcm94eSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7Ci0gICAgdm9pZCByZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJQ
cm9jZXNzUHJveHkmKTsKLSAgICBzaXplX3Qgc2VydmljZVdvcmtlclByb3hpZXNDb3VudCgpIGNv
bnN0IHsgcmV0dXJuIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb21wdXRlU2l6ZSgpOyB9Ci0g
ICAgdm9pZCB1cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50KTsKLSAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2aWNlV29ya2VycygpOworICAgIHN0YXRpYyB2b2lkIGVz
dGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQ
QUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICBzaXplX3Qg
c2VydmljZVdvcmtlclByb3hpZXNDb3VudCgpIGNvbnN0OworICAgIFVzZXJDb250ZW50Q29udHJv
bGxlcklkZW50aWZpZXIgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMo
KTsKICAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5n
KCkgY29uc3Q7CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9y
VGVzdGluZygpIGNvbnN0OwogI2VuZGlmCiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyUHJvY2Vzc0Ny
YXNoZWQoV2ViUHJvY2Vzc1Byb3h5Jik7CiAKKyAgICB2b2lkIHVwZGF0ZVdvcmtlclVzZXJBZ2Vu
dChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCk7CisgICAgc3RhdGljIHZvaWQgZXN0YWJsaXNoU2hh
cmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOworCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25F
bmFibGVkKCkgY29uc3Q7CiAjZW5kaWYKQEAgLTYxOCwxMyArNjIxLDExIEBAIHByaXZhdGU6CiAK
ICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBXZWFrUHRyPFdlYlByb2Nlc3NQcm94eT4+IG1f
ZHVtbXlQcm9jZXNzUHJveGllczsgLy8gTGlnaHR3ZWlnaHQgV2ViUHJvY2Vzc1Byb3h5IG9iamVj
dHMgd2l0aG91dCBiYWNraW5nIHByb2Nlc3MuCiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
Ci0gICAgc3RhdGljIFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMoKTsKLSAgICBib29sIG1fd2FpdGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29u
bmVjdGlvbiB7IGZhbHNlIH07Ci0gICAgU3RyaW5nIG1fc2VydmljZVdvcmtlclVzZXJBZ2VudDsK
LSAgICBzdGQ6Om9wdGlvbmFsPFdlYlByZWZlcmVuY2VzU3RvcmU+IG1fc2VydmljZVdvcmtlclBy
ZWZlcmVuY2VzOwotICAgIFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gbV91
c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyOwotI2VuZGlmCisgICAgc3RhdGlj
IFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIHdvcmtlclByb2Nlc3NlcygpOworCisgICAg
c3RkOjpvcHRpb25hbDxXZWJQcmVmZXJlbmNlc1N0b3JlPiBtX3dvcmtlclByZWZlcmVuY2VzOwor
ICAgIFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gbV91c2VyQ29udGVudENv
bnRyb2xsZXJGb3JXb3JrZXJzOworICAgIFN0cmluZyBtX3dvcmtlclVzZXJBZ2VudDsKIAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKICAgICBSZWZQdHI8R1BVUHJvY2Vzc1Byb3h5PiBtX2dwdVBy
b2Nlc3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRl
eCAwNTdkNDk5MjQxOGEwMDQzZDg0YzU5ZDdiNmU1MmY5ZTAyNjU4YTcxLi5iNzQ2YTdkN2QyMTcw
YzM5MjA1ZjMxZTUxYWVkOGJiYzVlNmRlYjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0
YS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKQEAgLTE4MiwxMSArMTgz
LDExIEBAIFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKFdlYlBy
b2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2Vic2l0CiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCi1SZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclNl
cnZpY2VXb3JrZXJzKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21h
aW4mJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9y
ZSkKK1JlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yV29ya2Vy
cyhXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgUmVn
aXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYgd2Vi
c2l0ZURhdGFTdG9yZSkKIHsKICAgICBhdXRvIHByb3h5ID0gYWRvcHRSZWYoKm5ldyBXZWJQcm9j
ZXNzUHJveHkocHJvY2Vzc1Bvb2wsICZ3ZWJzaXRlRGF0YVN0b3JlLCBJc1ByZXdhcm1lZDo6Tm8s
IENyb3NzT3JpZ2luTW9kZTo6U2hhcmVkLCBDYXB0aXZlUG9ydGFsTW9kZTo6RGlzYWJsZWQpKTsK
ICAgICBwcm94eS0+bV9yZWdpc3RyYWJsZURvbWFpbiA9IFdURk1vdmUocmVnaXN0cmFibGVEb21h
aW4pOwotICAgIHByb3h5LT5lbmFibGVTZXJ2aWNlV29ya2Vycyhwcm9jZXNzUG9vbC51c2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKSk7CisgICAgcHJveHkt
PmVuYWJsZVdvcmtlcnMod29ya2VyVHlwZSwgcHJvY2Vzc1Bvb2wudXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CiAgICAgcHJveHktPmNvbm5lY3QoKTsKICAgICBy
ZXR1cm4gcHJveHk7CiB9CkBAIC05OTUsMTAgKzk5NiwxMCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6ZGlkQmVjb21lVW5yZXNwb25zaXZlKCkKICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogaXNS
ZXNwb25zaXZlQ2FsbGJhY2tzKQogICAgICAgICBjYWxsYmFjayhpc1dlYlByb2Nlc3NSZXNwb25z
aXZlKTsKIAotICAgIC8vIElmIHRoZSB3ZWIgcHJvY2VzcyBiZWNvbWVzIHVucmVzcG9uc2l2ZSBh
bmQgb25seSBydW5zIHNlcnZpY2Ugd29ya2Vycywga2lsbCBpdCBvdXJzZWx2ZXMgc2luY2UgdGhl
cmUgYXJlIG5vIG5hdGl2ZSBjbGllbnRzIHRvIGRvIGl0LgotICAgIGlmIChpc1J1bm5pbmdTZXJ2
aWNlV29ya2VycygpICYmIG1fcGFnZU1hcC5pc0VtcHR5KCkpIHsKLSAgICAgICAgV0VCUFJPQ0VT
U1BST1hZX1JFTEVBU0VfTE9HX0VSUk9SKFBlcmZvcm1hbmNlTG9nZ2luZywgImRpZEJlY29tZVVu
cmVzcG9uc2l2ZTogVGVybWluYXRpbmcgc2VydmljZSB3b3JrZXItb25seSB3ZWIgcHJvY2VzcyBi
ZWNhdXNlIGl0IGlzIHVucmVzcG9uc2l2ZSIpOwotICAgICAgICBkaXNhYmxlU2VydmljZVdvcmtl
cnMoKTsKKyAgICAvLyBJZiB0aGUgd2ViIHByb2Nlc3MgYmVjb21lcyB1bnJlc3BvbnNpdmUgYW5k
IG9ubHkgcnVucyBzZXJ2aWNlL3NoYXJlZCB3b3JrZXJzLCBraWxsIGl0IG91cnNlbHZlcyBzaW5j
ZSB0aGVyZSBhcmUgbm8gbmF0aXZlIGNsaWVudHMgdG8gZG8gaXQuCisgICAgaWYgKGlzUnVubmlu
Z1dvcmtlcnMoKSAmJiBtX3BhZ2VNYXAuaXNFbXB0eSgpKSB7CisgICAgICAgIFdFQlBST0NFU1NQ
Uk9YWV9SRUxFQVNFX0xPR19FUlJPUihQZXJmb3JtYW5jZUxvZ2dpbmcsICJkaWRCZWNvbWVVbnJl
c3BvbnNpdmU6IFRlcm1pbmF0aW5nIHdvcmtlci1vbmx5IHdlYiBwcm9jZXNzIGJlY2F1c2UgaXQg
aXMgdW5yZXNwb25zaXZlIik7CisgICAgICAgIGRpc2FibGVXb3JrZXJzKHsgV29ya2VyVHlwZTo6
U2VydmljZVdvcmtlciwgV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyIH0pOwogICAgICAgICB0ZXJt
aW5hdGUoKTsKICAgICB9CiB9CkBAIC0xNjk0LDggKzE2OTUsOSBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUoY29uc3QgVVJMJiB1cmwp
CiAgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IHsgdXJsIH07CiAgICAgaWYgKG1fcmVnaXN0cmFibGVEb21haW4gJiYgKm1fcmVnaXN0cmFibGVE
b21haW4gIT0gcmVnaXN0cmFibGVEb21haW4pIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
Ci0gICAgICAgIGRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgICAgICBkaXNhYmxlV29ya2Vy
cyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgorCiAgICAgICAgIC8vIE51bGwg
b3V0IHJlZ2lzdHJhYmxlIGRvbWFpbiBzaW5jZSB0aGlzIHByb2Nlc3MgaGFzIG5vdyBiZWVuIHVz
ZWQgZm9yIHNldmVyYWwgZG9tYWlucy4KICAgICAgICAgbV9yZWdpc3RyYWJsZURvbWFpbiA9IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgfTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTg3Miw1
NCArMTg3NCw4NSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2VydmljZVdvcmtl
ckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgcwogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOwogICAgIH0sIDApOwogfQorI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpzZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQordm9p
ZCBXZWJQcm9jZXNzUHJveHk6OnNldFdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCkKIHsKLSAgICBBU1NFUlQobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pOwotICAgIHNl
bmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTZXRVc2VyQWdlbnQg
eyB1c2VyQWdlbnQgfSwgMCk7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIGlmICht
X3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlNldFVzZXJBZ2VudCB7IHVzZXJBZ2VudCB9LCAwKTsK
KyNlbmRpZgorICAgIGlmIChtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uKQorICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlNldFVz
ZXJBZ2VudCB7IHVzZXJBZ2VudCB9LCAwKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVw
ZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmIHN0b3JlKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByZWZlcmVuY2Vz
U3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiB7Ci0gICAgQVNTRVJUKG1f
c2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDAp
OworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb24pCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpVcGRhdGVQcmVmZXJlbmNlc1N0b3JlIHsgc3RvcmUgfSwgMCk7CisjZW5kaWYKKyAg
ICBpZiAobV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbikKKyAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpVcGRhdGVQcmVmZXJlbmNl
c1N0b3JlIHsgc3RvcmUgfSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVT
ZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBk
YXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlIHdvcmtlclR5cGUpCiB7Ci0gICAg
V0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlU2Vy
dmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb246Iik7Ci0gICAgQVNTRVJUKG1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uKTsKLSAgICBpZiAoIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQorICAg
IGF1dG8mIHdvcmtlckluZm9ybWF0aW9uID0gd29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFy
ZWRXb3JrZXIgPyBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIDogbV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb247CisgICAgQVNTRVJUKHdvcmtlckluZm9ybWF0aW9uKTsKKyAgICBpZiAoIXdvcmtl
ckluZm9ybWF0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIHNob3VsZFRha2VGb3Jl
Z3JvdW5kQWN0aXZpdHkgPSBXVEY6OmFueU9mKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5j
bGllbnRQcm9jZXNzZXMsIFsmXShhdXRvJiBwcm9jZXNzKSB7CisgICAgV0VCUFJPQ0VTU1BST1hZ
X1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2Vy
dGlvbjogd29ya2VyVHlwZT0le3B1YmxpY31zIiwgd29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpT
aGFyZWRXb3JrZXIgPyAic2hhcmVkIiA6ICJzZXJ2aWNlIik7CisKKyAgICAvLyBGSVhNRTogQ2xp
ZW50cyBkbyBub3QgcHJvcGVybHkgZ2V0IHBvcHVsYXRlZCBpbiBtX3NoYXJlZFdvcmtlckluZm9y
bWF0aW9uIHNvIHdlIGN1cnJlbnRseSB0YWtlIGFuIGFzc2VydGlvbiBubyBtYXR0ZXIgd2hhdC4K
KyAgICBpZiAod29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpIHsKKyAgICAg
ICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkRm9yZWdyb3VuZEFjdGl2aXR5KHdvcmtl
ckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCisgICAgICAgICAgICB3b3JrZXJJbmZvcm1hdGlvbi0+
YWN0aXZpdHkgPSBtX3Rocm90dGxlci5mb3JlZ3JvdW5kQWN0aXZpdHkoIldvcmtlciBmb3IgZm9y
ZWdyb3VuZCB2aWV3KHMpIl9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGJvb2wg
c2hvdWxkVGFrZUZvcmVncm91bmRBY3Rpdml0eSA9IFdURjo6YW55T2Yod29ya2VySW5mb3JtYXRp
b24tPmNsaWVudFByb2Nlc3NlcywgWyZdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJu
ICZwcm9jZXNzICE9IHRoaXMgJiYgISFwcm9jZXNzLm1fZm9yZWdyb3VuZFRva2VuOwogICAgIH0p
OwogICAgIGlmIChzaG91bGRUYWtlRm9yZWdyb3VuZEFjdGl2aXR5KSB7Ci0gICAgICAgIGlmICgh
UHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEZvcmVncm91bmRBY3Rpdml0eShtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQotICAgICAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuZm9yZWdyb3VuZEFjdGl2aXR5KCJTZXJ2
aWNlIFdvcmtlciBmb3IgZm9yZWdyb3VuZCB2aWV3KHMpIl9zKTsKKyAgICAgICAgaWYgKCFQcm9j
ZXNzVGhyb3R0bGVyOjppc1ZhbGlkRm9yZWdyb3VuZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0aW9u
LT5hY3Rpdml0eSkpCisgICAgICAgICAgICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBt
X3Rocm90dGxlci5mb3JlZ3JvdW5kQWN0aXZpdHkoIldvcmtlciBmb3IgZm9yZWdyb3VuZCB2aWV3
KHMpIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGJvb2wgc2hvdWxkVGFrZUJh
Y2tncm91bmRBY3Rpdml0eSA9IFdURjo6YW55T2YobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24t
PmNsaWVudFByb2Nlc3NlcywgWyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICBib29sIHNob3VsZFRh
a2VCYWNrZ3JvdW5kQWN0aXZpdHkgPSBXVEY6OmFueU9mKHdvcmtlckluZm9ybWF0aW9uLT5jbGll
bnRQcm9jZXNzZXMsIFsmXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiAmcHJvY2Vz
cyAhPSB0aGlzICYmICEhcHJvY2Vzcy5tX2JhY2tncm91bmRUb2tlbjsKICAgICB9KTsKICAgICBp
ZiAoc2hvdWxkVGFrZUJhY2tncm91bmRBY3Rpdml0eSkgewotICAgICAgICBpZiAoIVByb2Nlc3NU
aHJvdHRsZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkobV9zZXJ2aWNlV29ya2VySW5mb3Jt
YXRpb24tPmFjdGl2aXR5KSkKLSAgICAgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9u
LT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3Jr
ZXIgZm9yIGJhY2tncm91bmQgdmlldyhzKSJfcyk7CisgICAgICAgIGlmICghUHJvY2Vzc1Rocm90
dGxlcjo6aXNWYWxpZEJhY2tncm91bmRBY3Rpdml0eSh3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZp
dHkpKQorICAgICAgICAgICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRs
ZXIuYmFja2dyb3VuZEFjdGl2aXR5KCJXb3JrZXIgZm9yIGJhY2tncm91bmQgdmlldyhzKSJfcyk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9oYXNTZXJ2aWNlV29ya2VyQmFj
a2dyb3VuZFByb2Nlc3NpbmcpIHsKKyAgICBpZiAod29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpT
ZXJ2aWNlV29ya2VyICYmIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKSB7
CiAgICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwg
IlNlcnZpY2UgV29ya2VyIGZvciBiYWNrZ3JvdW5kIHByb2Nlc3NpbmciKTsKLSAgICAgICAgaWYg
KCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5KG1fc2VydmljZVdv
cmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCi0gICAgICAgICAgICBtX3NlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIlNl
cnZpY2UgV29ya2VyIGZvciBiYWNrZ3JvdW5kIHByb2Nlc3NpbmciX3MpOworICAgICAgICBpZiAo
IVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkod29ya2VySW5mb3Jt
YXRpb24tPmFjdGl2aXR5KSkKKyAgICAgICAgICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0
eSA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJh
Y2tncm91bmQgcHJvY2Vzc2luZyJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBt
X3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBudWxscHRyOworICAgIHdvcmtl
ckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG51bGxwdHI7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1By
b3h5Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmIHN0b3JlLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBXRUJQ
Uk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29y
a2VyQ29udGV4dDogU3RhcnRlZCIpOworICAgIG1hcmtQcm9jZXNzQXNSZWNlbnRseVVzZWQoKTsK
KyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFNo
YXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHByb2Nlc3NQb29s
KCkuZGVmYXVsdFBhZ2VHcm91cCgpLnBhZ2VHcm91cElEKCksIG1fc2hhcmVkV29ya2VySW5mb3Jt
YXRpb24tPnJlbW90ZVdvcmtlclBhZ2VQcm94eUlELCBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9u
LT5yZW1vdGVXb3JrZXJQYWdlSUQsIHN0b3JlLCByZWdpc3RyYWJsZURvbWFpbiwgbV9zaGFyZWRX
b3JrZXJJbmZvcm1hdGlvbi0+aW5pdGlhbGl6YXRpb25EYXRhIH0sIFt0aGlzLCB3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAg
ICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hh
cmVkV29ya2VyQ29udGV4dDogRmluaXNoZWQiKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKKyAgICB9LCAwKTsKIH0KIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKwogdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJv
Y2Vzc1Byb3h5JiBwcm94eSkKIHsKICAgICBpZiAoIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9u
KQpAQCAtMTkyNyw3ICsxOTYwLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKIAogICAgIFdF
QlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAicmVnaXN0ZXJTZXJ2aWNl
V29ya2VyQ2xpZW50UHJvY2VzczogY2xpZW50UHJvY2Vzcz0lcCwgY2xpZW50UElEPSVkIiwgJnBy
b3h5LCBwcm94eS5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBtX3NlcnZpY2VXb3JrZXJJbmZv
cm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2VzLmFkZChwcm94eSk7Ci0gICAgdXBkYXRlU2VydmljZVdv
cmtlclByb2Nlc3NBc3NlcnRpb24oKTsKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9u
KFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6
dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJv
eHkpCkBAIC0xOTM3LDcgKzE5NzAsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dW5yZWdpc3Rl
clNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveAogCiAgICAg
V0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJ1bnJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudFByb2Nlc3M6IGNsaWVudFByb2Nlc3M9JXAsIGNsaWVudFBJRD0lZCIs
ICZwcm94eSwgcHJveHkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgbV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3Nlcy5yZW1vdmUocHJveHkpOwotICAgIHVwZGF0ZVNl
cnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fz
c2VydGlvbihXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KIAogYm9vbCBXZWJQcm9jZXNz
UHJveHk6Omhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29u
c3QKQEAgLTE5NTcsNyArMTk5MCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzdGFydFNlcnZp
Y2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZygpCiAKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVM
RUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJzdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5k
UHJvY2Vzc2luZyIpOwogICAgIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5n
ID0gdHJ1ZTsKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOworICAg
IHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7
CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFBy
b2Nlc3NpbmcoKQpAQCAtMTk2NywyMyArMjAwMCwzOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6
ZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKCkKIAogICAgIFdFQlBST0NFU1NQ
Uk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgImVuZFNlcnZpY2VXb3JrZXJCYWNr
Z3JvdW5kUHJvY2Vzc2luZyIpOwogICAgIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9j
ZXNzaW5nID0gZmFsc2U7Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24o
KTsKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VX
b3JrZXIpOwogfQogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAotdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OmRpc2FibGVTZXJ2aWNlV29ya2VycygpCit2b2lkIFdlYlByb2Nlc3NQcm94
eTo6ZGlzYWJsZVdvcmtlcnMoT3B0aW9uU2V0PFdvcmtlclR5cGU+IHdvcmtlclR5cGUpCiB7Ci0g
ICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKKyAgICBBU1NFUlQoIXdvcmtlclR5
cGUuaXNFbXB0eSgpKTsKKworICAgIGJvb2wgZGlkQ2hhbmdlID0gZmFsc2U7CisgICAgaWYgKHdv
cmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikgJiYgbV9zZXJ2aWNl
V29ya2VySW5mb3JtYXRpb24pIHsKKyAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24g
PSB7IH07CisgICAgICAgIGRpZENoYW5nZSA9IHRydWU7CisgICAgfQorICAgIGlmICh3b3JrZXJU
eXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlcikgJiYgbV9zaGFyZWRXb3JrZXJJ
bmZvcm1hdGlvbikgeworICAgICAgICBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uID0geyB9Owor
ICAgICAgICBkaWRDaGFuZ2UgPSB0cnVlOworICAgIH0KKyAgICBpZiAoIWRpZENoYW5nZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VX
b3JrZXIsICJkaXNhYmxlU2VydmljZVdvcmtlcnM6Iik7Ci0gICAgbV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb24gPSB7IH07CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3Ms
ICJkaXNhYmxlV29ya2VyczogRGlzYWJsaW5nIHdvcmtlcnMgKFNoYXJlZFdvcmtlcnM9JWQsIFNl
cnZpY2VXb3JrZXJzPSVkKSIsIHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2hhcmVk
V29ya2VyKSwgd29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSk7
CisKICAgICB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwogCisgICAgaWYg
KCFpc1J1bm5pbmdXb3JrZXJzKCkpCisgICAgICAgIHByb2Nlc3NQb29sKCkucmVtb3ZlRnJvbVdv
cmtlclByb2Nlc3NlcygqdGhpcyk7CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAg
cHJvY2Vzc1Bvb2woKS5yZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcygqdGhpcyk7Ci0g
ICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNsb3NlIHsg
fSwgMCk7CisgICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2VydmljZVdv
cmtlcikpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpDbG9zZSB7IH0sIDApOwogI2VuZGlmCisgICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMo
V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9zZSB7IH0sIDApOwogCiAgICAg
bWF5YmVTaHV0RG93bigpOwogfQpAQCAtMjAwNCwxMSArMjA1MywxMyBAQCBzdGF0aWMgVmVjdG9y
PHN0ZDo6cGFpcjxXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEsIFVSTD4+IGNvbnRlbnRS
dWxlTGlzdHNGcgogfQogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVTZXJ2
aWNlV29ya2Vycyhjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJiB1c2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVdv
cmtlcnMoV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyJiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKQogewotICAgIEFTU0VS
VCghbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pOwotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxF
QVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiZW5hYmxlU2VydmljZVdvcmtlcnM6Iik7Ci0gICAgbV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gPSBSZW1vdGVXb3JrZXJJbmZvcm1hdGlvbiB7CisgICAg
V0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJlbmFibGVXb3JrZXJz
OiB3b3JrZXJUeXBlPSV1Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHdvcmtlclR5cGUpKTsKKyAg
ICBhdXRvJiB3b3JrZXJJbmZvcm1hdGlvbiA9IHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2hh
cmVkV29ya2VyID8gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA6IG1fc2VydmljZVdvcmtlcklu
Zm9ybWF0aW9uOworICAgIEFTU0VSVCghd29ya2VySW5mb3JtYXRpb24pOworCisgICAgd29ya2Vy
SW5mb3JtYXRpb24gPSBSZW1vdGVXb3JrZXJJbmZvcm1hdGlvbiB7CiAgICAgICAgIFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXI6OmdlbmVyYXRlKCksCiAgICAgICAgIFBhZ2VJZGVudGlmaWVyOjpnZW5l
cmF0ZSgpLAogICAgICAgICBSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgewpAQCAtMjAy
MSw5ICsyMDcyLDggQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVNlcnZpY2VXb3JrZXJz
KGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIKICAgICAgICAgeyB9CiAgICAg
fTsKICAgICB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwotI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlv
bigpOwotI2VuZGlmCisKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKHdvcmtlclR5
cGUpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlU2xlZXBEaXNhYmxlcihT
bGVlcERpc2FibGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwg
Ym9vbCBkaXNwbGF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApp
bmRleCBmOGI3OTViMWQzNDM1MzVlODA5MmUwMWRiYWIzNzlhZjMzNDYxZGJlLi43MGU4OTA1MWNj
YmJjN2U5MDQ2YmMxYzk5OGI5MGEwYjY4ZWY2NTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMTM2LDkgKzEzNiwxMyBAQCBwdWJsaWM6CiAKICAgICBl
bnVtIGNsYXNzIFNob3VsZExhdW5jaFByb2Nlc3MgOiBib29sIHsgTm8sIFllcyB9OwogICAgIGVu
dW0gY2xhc3MgQ2FwdGl2ZVBvcnRhbE1vZGUgOiBib29sIHsgRGlzYWJsZWQsIEVuYWJsZWQgfTsK
KyAgICBlbnVtIGNsYXNzIFdvcmtlclR5cGUgOiB1aW50MzJfdCB7CisgICAgICAgIFNlcnZpY2VX
b3JrZXIgPSAxIDw8IDAsCisgICAgICAgIFNoYXJlZFdvcmtlciA9IDEgPDwgMQorICAgIH07CiAK
ICAgICBzdGF0aWMgUmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sJiwg
V2Vic2l0ZURhdGFTdG9yZSosIENhcHRpdmVQb3J0YWxNb2RlLCBJc1ByZXdhcm1lZCwgV2ViQ29y
ZTo6Q3Jvc3NPcmlnaW5Nb2RlID0gV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQsIFNo
b3VsZExhdW5jaFByb2Nlc3MgPSBTaG91bGRMYXVuY2hQcm9jZXNzOjpZZXMpOwotICAgIHN0YXRp
YyBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGVGb3JTZXJ2aWNlV29ya2VycyhXZWJQcm9jZXNz
UG9vbCYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsK
KyAgICBzdGF0aWMgUmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlRm9yV29ya2VycyhXb3JrZXJU
eXBlLCBXZWJQcm9jZXNzUG9vbCYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdlYnNp
dGVEYXRhU3RvcmUmKTsKIAogICAgIH5XZWJQcm9jZXNzUHJveHkoKTsKIApAQCAtMTYxLDggKzE2
NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzSW5Qcm9jZXNzQ2FjaGUoYm9vbCwgV2lsbFNo
dXREb3duID0gV2lsbFNodXREb3duOjpObyk7CiAgICAgYm9vbCBpc0luUHJvY2Vzc0NhY2hlKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0luUHJvY2Vzc0NhY2hlOyB9CiAKLSAgICB2b2lkIGVuYWJsZVNl
cnZpY2VXb3JrZXJzKGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImKTsKLSAg
ICB2b2lkIGRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgIHZvaWQgZW5hYmxlV29ya2VycyhX
b3JrZXJUeXBlLCBjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJik7CisgICAg
dm9pZCBkaXNhYmxlV29ya2VycyhPcHRpb25TZXQ8V29ya2VyVHlwZT4pOwogCiAgICAgV2Vic2l0
ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSgpIGNvbnN0IHsgQVNTRVJUKG1fd2Vic2l0ZURh
dGFTdG9yZSk7IHJldHVybiAqbV93ZWJzaXRlRGF0YVN0b3JlOyB9CiAgICAgdm9pZCBzZXRXZWJz
aXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKTsKQEAgLTE5NCw2ICsxOTgsOSBAQCBwdWJs
aWM6CiAKICAgICBib29sIGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkgY29uc3QgeyByZXR1cm4g
ISFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsgfQogICAgIGJvb2wgaXNTdGFuZGFsb25lU2Vy
dmljZVdvcmtlclByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBpc1J1bm5pbmdTZXJ2aWNlV29ya2Vy
cygpICYmICFwYWdlQ291bnQoKTsgfQorICAgIGJvb2wgaXNSdW5uaW5nU2hhcmVkV29ya2Vycygp
IGNvbnN0IHsgcmV0dXJuICEhbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbjsgfQorICAgIGJvb2wg
aXNTdGFuZGFsb25lU2hhcmVkV29ya2VyUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIGlzUnVubmlu
Z1NoYXJlZFdvcmtlcnMoKSAmJiAhcGFnZUNvdW50KCk7IH0KKyAgICBib29sIGlzUnVubmluZ1dv
cmtlcnMoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIHx8IG1fc2Vy
dmljZVdvcmtlckluZm9ybWF0aW9uOyB9CiAKICAgICBib29sIGlzRHVtbXlQcm9jZXNzUHJveHko
KSBjb25zdDsKIApAQCAtMzU5LDEyICszNjYsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRh
dGVBdWRpYmxlTWVkaWFBc3NlcnRpb25zKCk7CiAKKyAgICB2b2lkIHNldFdvcmtlclVzZXJBZ2Vu
dChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUo
Y29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOworICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29y
a2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQg
dXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlKTsKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25z
dCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
PiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7Ci0gICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwot
ICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYpOwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlEKSB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbiAmJiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+cmVtb3RlV29ya2VyUGFn
ZVByb3h5SUQgPT0gcGFnZVByb3h5SUQ7IH0KLSAgICB2b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzQXNzZXJ0aW9uKCk7CiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQ
cm9jZXNzKFdlYlByb2Nlc3NQcm94eSYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYpOwogICAgIGJvb2wgaGFzU2VydmljZVdv
cmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdDsKQEAgLTY1Niw2ICs2NjQs
NyBAQCBwcml2YXRlOgogICAgICAgICBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+IGNsaWVu
dFByb2Nlc3NlczsKICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8UmVtb3RlV29ya2VySW5mb3Jt
YXRpb24+IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8UmVt
b3RlV29ya2VySW5mb3JtYXRpb24+IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb247CiAgICAgYm9v
bCBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyB7IGZhbHNlIH07CiAKICAg
ICBIYXNoTWFwPFdlYkNvcmU6OlNsZWVwRGlzYWJsZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6U2xlZXBEaXNhYmxlcj4+IG1fc2xlZXBEaXNhYmxlcnM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwYzdjMzFiYzU1
N2I1NWQ1MTcwNWZjMzlkN2U2NzljOTRjNmEwYWYzLi4xNWU4MTBhNGM5ZjEyZWI5MmJiMmZkMTRk
Mzk1MGMzMTUxNDQ0MjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTg4MCw4ICs4ODAsMTAgQEAKIAkJNDYxNEYxMzIyNURFRDg3NTAw
NzAwNkU3IC8qIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZBQzUzMjQyNURFRDgxRTAwM0I1N0VD
IC8qIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5oICovOyB9OwogCQk0NjFDQ0NBNTIz
MTQ4NUE3MDBCNjU5QjkgLyogVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzMjM2ODUyMzE0ODMzRjAwQTQ4RkE3
IC8qIFVJUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAqLzsgfTsKIAkJNDYxQ0NDQTYyMzE0ODVBQTAw
QjY1OUI5IC8qIFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjMyMzY4MzIzMTQ4MUVGMDBBNDhGQTcgLyogV2Vi
UmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAqLzsgfTsKKwkJNDYxRTFCRjIyNzlBMDExNjAwNkFGNTNC
IC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYxRTFCRUYyNzlBMDEwRjAwNkFG
NTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICovOyB9Owog
CQk0NjNGRDQ4MDFFQjk0NTk2MDBBMjk4MkMgLyogV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0ZENDdG
MUVCOTQ1ODQwMEEyOTgyQyAvKiBXS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2M0ZENDgyMUVCOTRF
QzAwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0ZENDgxMUVCOTRFQUQwMEEyOTgyQyAv
KiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCAqLzsgfTsKKwkJNDY1NkY3QkQyN0FDQUE4RDAw
Q0IzRDdDIC8qIFdlYlNoYXJlZFdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDY1NkY3QkMyN0FDQUE4MTAwQ0IzRDdDIC8qIFdlYlNoYXJlZFdv
cmtlci5oICovOyB9OwogCQk0NjU5RjI1RjI3NUZGNkIyMDBCQkIzNjkgLyogQ2FwdGl2ZVBvcnRh
bE1vZGVPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY1OUYyNUUyNzVGRjZCMjAwQkJCMzY5IC8qIENhcHRpdmVQb3J0YWxNb2RlT2JzZXJ2
ZXIuaCAqLzsgfTsKIAkJNDY1RjRFMDYyMzBCMkU5NTAwM0NFREI3IC8qIFN0b3JhZ2VOYW1lc3Bh
Y2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NjVGNEUwNTIzMEIyRTdDMDAzQ0VEQjcgLyogU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZp
ZXIuaCAqLzsgfTsKIAkJNDY1RkE3MjYyNzU3RDkzRDAwNzIzNjJCIC8qIFdlYkxvY2tSZWdpc3Ry
eVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjVGQTcyMzI3NTdEOTE4MDA3MjM2MkIgLyogV2ViTG9ja1JlZ2lzdHJ5UHJveHkuaCAqLzsgfTsK
QEAgLTkwMCwxMCArOTAyLDEzIEBACiAJCTQ2QzM5MjI5MjMxNkVDNEQwMDhFRUQ5QiAvKiBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkMzOTIyODIzMTZFQzREMDA4RUVEOUIgLyogV2ViUGFnZVByb3h5SWRlbnRp
Zmllci5oICovOyB9OwogCQk0NkM1QjdDRTI3QUFEREQzMDAwQzVCNDcgLyogUmVtb3RlV29ya2Vy
RnJhbWVMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2QzVCN0NEMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJGcmFtZUxv
YWRlckNsaWVudC5oICovOyB9OwogCQk0NkM1QjdDRjI3QUFEREQ2MDAwQzVCNDcgLyogUmVtb3Rl
V29ya2VyTGliV2ViUlRDUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2QzVCN0NCMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJM
aWJXZWJSVENQcm92aWRlci5oICovOyB9OworCQk0NkM5MTZBQTI3OTlEMEEyMDAxQTRFN0MgLyog
V2ViU2hhcmVkV29ya2VyU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NkM5MTZBOTI3OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2Vy
U2VydmVyLmggKi87IH07CiAJCTQ2Q0UzQjExMjNEOEM4NDkwMDE2QTk2QSAvKiBXZWJCYWNrRm9y
d2FyZExpc3RDb3VudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2Q0UzQjEwMjNEOEM4M0QwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3Vu
dHMuaCAqLzsgfTsKKwkJNDZENDhGQ0UyNzk5RDdFMTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RDQ4RkNEMjc5OUQ3REUwMDdEMjAxNCAvKiBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2REYwNjNDMUYzOTA1
RjgwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REYwNjNBMUYzOTA1RTUwMDE5ODBC
QiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCAqLzsgfTsKIAkJNDZFRTI4NDkyNjlF
MDRBQzAwREQ0OEFCIC8qIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFRTI4NDgyNjlFMDQ5QjAwREQ0
OEFCIC8qIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oICovOyB9OwogCQk0NkVFMjg0RDI2
OUUwNTI1MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFRTI4NEMyNjlFMDUx
NzAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCAqLzsgfTsKKwkJ
NDZFRTNFOEIyNzYzRkQyRjAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODM4
NjY3Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgg
Ki87IH07CiAJCTQ2RjM4RThDMjQxNkU2NzMwMDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNl
c1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZG
MzhFOEIyNDE2RTY2RDAwNTkzNzVBIC8qIFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmggKi87IH07
CiAJCTQ2RjlCMjYzMjM1MjZFRjMwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjlCMjYy
MjM1MjZFRDAwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCAqLzsgfTsKIAkJ
NDkzMTAyQkQyNjgzRjNEMDAwMkJCODg1IC8qIEFwcFByaXZhY3lSZXBvcnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5MzEwMkJDMjY4M0YzQTUwMDJC
Qjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggKi87IH07CkBAIC00MjIzLDYgKzQyMjgsOSBAQAog
CQk0NjA4ODlGRjI2MUZBOEE5MDBFMjUwMEQgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0
aW9uUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3Jl
YXRpb25QYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MEY0ODhE
MUY5OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVk
U291cmNlcy9XZWJLaXQvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2
ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk0NjBGNDg4RTFG
OTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbk1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OworCQk0NjFFMUJFQzI3OUEwMTBFMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MUUxQkVGMjc5QTAxMEYwMDZBRjUzQiAvKiBX
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MUUxQkYwMjc5QTAxMEYwMDZBRjUz
QiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjIxMDdE
NzFGMzhEQkQzMDBERDc4MTAgLyogUGluZ0xvYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUGluZ0xvYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjMyMzY4MzIzMTQ4MUVGMDBBNDhGQTcgLyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDYzMjM2ODQyMzE0ODI1QzAwQTQ4RkE3IC8qIFdlYlJlbW90ZU9iamVj
dFJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyMzMsNiArNDI0MSw5IEBACiAJ
CTQ2M0ZENDgxMUVCOTRFQUQwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NTFFQ0U2MjIxNzhBODUwMDY3RUI5
NSAvKiBXZWJQcm9jZXNzQ2FjaGVDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYlByb2Nlc3NDYWNoZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NjUyNTBFNTFFQ0Y1MkNEMDAyMDI1Q0IgLyogV2ViS2l0MkluaXRpYWxpemVD
b2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYktpdDJJ
bml0aWFsaXplQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2NTZGN0JB
MjdBQ0FBODAwMENCM0Q3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2NTZGN0JC
MjdBQ0FBODEwMENCM0Q3QyAvKiBXZWJTaGFyZWRXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViU2hhcmVkV29ya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY1
NkY3QkMyN0FDQUE4MTAwQ0IzRDdDIC8qIFdlYlNoYXJlZFdvcmtlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJTaGFyZWRXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY1OUYy
NUUyNzVGRjZCMjAwQkJCMzY5IC8qIENhcHRpdmVQb3J0YWxNb2RlT2JzZXJ2ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FwdGl2ZVBvcnRhbE1vZGVPYnNlcnZlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjVGNEUwMjIzMDc1OUQ1MDAzQ0VEQjcgLyog
U3RvcmFnZUFyZWFJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VBcmVhSWRlbnRp
Zmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjVGNEUwMzIzMDc2MDRFMDAz
Q0VEQjcgLyogU3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9y
YWdlQXJlYUltcGxJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00
MjU0LDggKzQyNjUsMTEgQEAKIAkJNDY4MDlBN0IyM0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tp
ZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvb2tp
ZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzU2OUEyMUU4MUND
NzAwNkUyN0EzIC8qIFByb3Zpc2lvbmFsUGFnZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFByb3Zpc2lvbmFsUGFnZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2ODM1NjlCMjFFODFDQzcwMDZFMjdBMyAvKiBQcm92aXNpb25hbFBhZ2VQcm94
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm92aXNpb25hbFBh
Z2VQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2ODM4NjY3Mjc2M0ZB
QjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDY4Mzg2NjgyNzYzRkFCMTAwQ0Y5MTgyIC8qIFdlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODlC
OTBGMjc1NkQxNDMwMDA3QzY1MSAvKiBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2ODlCOTEwMjc1NkQxNDMwMDA3QzY1MSAvKiBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5NDNEQ0IyNzYzRjgzNDAwNEI2MTBFIC8qIFdlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDY5REU4MDIyNzNFQ0M1RDAwOTMwMjc2IC8qIFByb2Nlc3NMYXVuY2hlckNvY29hLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJvY2Vzc0xhdW5jaGVyQ29j
b2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QTJCNjA2MUU1Njc1QTIwMEMz
REVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZl
bmVzc1RpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZBMkI2MDcxRTU2
NzVBMjAwQzNERURBIC8qIEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNp
dmVuZXNzVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyNzQsNyArNDI4
OCwxMSBAQAogCQk0NkM1QjdDQjI3QUFEREJFMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyTGliV2Vi
UlRDUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlk
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDNUI3Q0MyN0FBRERCRTAwMEM1
QjQ3IC8qIFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDZDNUI3Q0QyN0FBRERCRTAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckZyYW1l
TG9hZGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xp
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2QzkxNkE4Mjc5OUQwOUQwMDFB
NEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
U2hhcmVkV29ya2VyU2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZD
OTE2QTkyNzk5RDA5RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDZDRTNCMTAyM0Q4QzgzRDAwMTZBOTZBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENvdW50
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZExpc3RD
b3VudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZENDhGQ0MyNzk5RDdERDAw
N0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2RDQ4RkNEMjc5OUQ3REUwMDdE
MjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZERjA2MzkxRjM5MDVFNTAwMTk4MEJCIC8qIE5l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NkU5NzYwQTI3NTdGNkM5MDBBQ0REMzcgLyogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1l
c3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkJyb2FkY2FzdENoYW5uZWxSZWdp
c3RyeS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyODQsNiAr
NDMwMiw3IEBACiAJCTQ2RUUyODRBMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0
Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5ldHdv
cmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2RUUyODRCMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0
Q2hhbm5lbFJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NkVFMjg0QzI2OUUwNTE3MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3Jr
QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQ2RUUzRThBMjc2M0ZEMkEwMDYwQzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVz
c2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RjM4RThCMjQxNkU2NkQw
MDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NkY5QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRD
YWNoZUVudHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3
YXJkQ2FjaGVFbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTMxMDJCQzI2
ODNGM0E1MDAyQkI4ODUgLyogQXBwUHJpdmFjeVJlcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBQ
cml2YWN5UmVwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05Mjk1LDYgKzkz
MTQsMjMgQEAKIAkJCXBhdGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJ
CX07CisJCTQ2ODM4NjY1Mjc2M0ZBMUIwMENGOTE4MiAvKiBTaGFyZWRXb3JrZXIgKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTQ2NTZGN0JCMjdBQ0FBODEw
MENCM0Q3QyAvKiBXZWJTaGFyZWRXb3JrZXIuY3BwICovLAorCQkJCTQ2NTZGN0JDMjdBQ0FBODEw
MENCM0Q3QyAvKiBXZWJTaGFyZWRXb3JrZXIuaCAqLywKKwkJCQk0NkM5MTZBODI3OTlEMDlEMDAx
QTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcCAqLywKKwkJCQk0NkM5MTZBOTI3OTlE
MDlEMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggKi8sCisJCQkJNDY4Mzg2Njgy
NzYzRkFCMTAwQ0Y5MTgyIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwICov
LAorCQkJCTQ2ODM4NjY3Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uLmggKi8sCisJCQkJNDZFRTNFOEEyNzYzRkQyQTAwNjBDNzBGIC8qIFdlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCisJCQkJNDZENDhGQ0MyNzk5
RDdERDAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwICovLAorCQkJCTQ2RDQ4RkNEMjc5OUQ3REUwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi8sCisJCQkJNDY1NkY3QkEyN0FDQUE4MDAwQ0Iz
RDdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMu
aW4gKi8sCisJCQkpOworCQkJcGF0aCA9IFNoYXJlZFdvcmtlcjsKKwkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CisJCX07CiAJCTQ2OURFODAxMjczRUNDNUQwMDkzMDI3NiAvKiBjb2NvYSAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC05MzU5LDYgKzkzOTUs
NyBAQAogCQkJCTUxNDUyNkVBMjcxRTE2MTAwMDA0NjdCNiAvKiBOb3RpZmljYXRpb25zICovLAog
CQkJCTVDMDFCQzM1MjZENDZBRDQwMEZFQjQyRiAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAq
LywKIAkJCQk5M0JBMDREOTIxNTFBRENEMDA3RjQ1NUYgLyogU2VydmljZVdvcmtlciAqLywKKwkJ
CQk0NjgzODY2NTI3NjNGQTFCMDBDRjkxODIgLyogU2hhcmVkV29ya2VyICovLAogCQkJCTkzMDg1
REMyMjZFMUJCNjUwMDBFQzZBNyAvKiBzdG9yYWdlICovLAogCQkJCTQxMzA3NTk3MURFODRFRDcw
MDM5RUM2OSAvKiB3ZWJydGMgKi8sCiAJCQkJOTNCMjYxNDMyMjdEMTQzMTAwQjk3QTc2IC8qIFdl
YlN0b3JhZ2UgKi8sCkBAIC05NDYxLDggKzk0OTgsMTIgQEAKIAkJCQk0MTlBQ0Y5QjFGOTgxRDI2
MDA5RjFBODMgLyogV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oICovLAogCQkJCTUx
QkVCNjI5MUYzQTVBQ0QwMDUwMjlCOSAvKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwICov
LAogCQkJCTUxQkVCNjJBMUYzQTVBQ0QwMDUwMjlCOSAvKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlk
ZXIuaCAqLywKKwkJCQk0NjFFMUJFQzI3OUEwMTBFMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk0NjFFMUJFRjI3OUEwMTBGMDA2
QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggKi8sCisJ
CQkJNDYxRTFCRjAyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKIAkJCQk0NjY4QTBCQjI3QUI2MDQwMDBDNzIw
QkMgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJNDY2OEEw
QjgyN0FCNjAzRjAwQzcyMEJDIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAq
LywKKwkJCQk0Njk0M0RDQjI3NjNGODM0MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKIAkJCQk0NjY4QTBCOTI3QUI2MDNGMDBDNzIwQkMg
LyogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwICovLAogCQkJCTQ2NjhBMEJBMjdBQjYwNDAw
MEM3MjBCQyAvKiBXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oICovLAogCQkJCTUxN0E1MzAzMUY0
NzkzQjIwMERDREMwQSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwICovLApAQCAtMTM2NTgs
OCArMTM2OTksMTMgQEAKIAkJCQk3QzM2MUQ3MzE5MjdGQTM2MDAzNkE1OUQgLyogV2ViU2NyaXB0
TWVzc2FnZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUQzQjk0ODQ5MTFGRjRCNjUwMDAz
MkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQkVCNjJD
MUYzQTVBRDcwMDUwMjlCOSAvKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTQ2NTZGN0JEMjdBQ0FBOEQwMENCM0Q3QyAvKiBXZWJTaGFyZWRXb3JrZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTQ2MUUxQkYyMjc5QTAxMTYwMDZBRjUzQiAvKiBXZWJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2NjhB
MEJEMjdBQjYwNTYwMEM3MjBCQyAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0NjY4QTBCQzI3QUI2MDUwMDBDNzIwQkMgLyogV2ViU2hhcmVk
V29ya2VyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2QzkxNkFBMjc5OUQwQTIwMDFB
NEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2RUUz
RThCMjc2M0ZEMkYwMDYwQzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0NkQ0OEZDRTI3OTlEN0UxMDA3RDIwMTQgLyogV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM4
REQzODAxRkU0NTIxNjAwRjJBNTU2IC8qIFdlYnNpdGVBdXRvcGxheVBvbGljeS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUE0ODMyRDcxQTlDREY5NjAwOEI0REZFIC8qIFdlYnNpdGVEYXRhLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQTQ4MzJEMTFBOUJEQzJGMDA4QjRERkUgLyogV2Vic2l0ZURhdGFS
ZWNvcmQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggODFk
ZDA0MTFhMjM5NmJjNWUyMzQ1NWI5ZjViNTllNzM0NjFlZTk2Zi4uYmIzNTQ3ZjQ2YWQ0YjhhNWMy
MDUyZDA4MmNhNjc1NGIxMjkxZmY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC01
Nyw3ICs1NywxMCBAQAogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgi
CiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIKICNp
bmNsdWRlICJXZWJTb2NrZXRDaGFubmVsTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRT
dHJlYW0uaCIKQEAgLTE3NCw2ICsxNzcsMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVAKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNl
aXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIHNoYXJlZFdvcmtlckNvbm5lY3Rpb24o
KS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2Fn
ZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpKSB7CisgICAgICAgIEFTU0VSVChTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6
c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKTsKKyAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbiA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5j
b25uZWN0aW9uKCkpCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxXZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24mPigqY29udGV4dE1hbmFnZXJDb25uZWN0aW9uKS5kaWRSZWNl
aXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
IAogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQogICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggZWRjMDQ5M2Jk
M2VkZGZhMTY5MDBiZGI4NTkxNGM2NGM1OTc4OTE4MC4uMGI2NDgwYTYxZDM2Y2ZlMDQ3OWI0Y2Y0
MDFkNDVkZjQzODMwYjM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTQ4LDYgKzQ4LDcg
QEAgZW51bSBjbGFzcyBIVFRQQ29va2llQWNjZXB0UG9saWN5IDogdWludDhfdDsKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI7CitjbGFzcyBXZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOwogY2xhc3MgV2ViU1dDbGllbnRDb25uZWN0aW9u
OwogY2xhc3MgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQz
MDY0NzY2NWZhNjUwOGE1ZWM3MDA2NzNiYmI3NDQyZDNiNjhmMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSwxMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmgiCisjaW5jbHVkZSAi
UmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJSZW1vdGVXb3JrZXJM
aWJXZWJSVENQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3Ry
eS5oIgorI2luY2x1ZGUgIldlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2Vi
Q29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLmgiCisjaW5jbHVkZSAiV2ViRGF0YWJhc2VQcm92
aWRlci5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc0tl
eXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0
UHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0VtcHR5Q2xpZW50cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvUGFnZUNvbmZpZ3VyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRX
b3JrZXJUaHJlYWRQcm94eS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVXNlckFnZW50Lmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9Xb3JrZXJGZXRjaFJlc3VsdC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2VzcywgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3Ry
YWJsZURvbWFpbiwgUGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5
SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBwcmVmZXJlbmNlc1N0b3JlLCBSZW1vdGVXb3Jr
ZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXphdGlvbkRhdGEpCisgICAgOiBtX2Nvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUoY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mp
KQorICAgICwgbV9yZWdpc3RyYWJsZURvbWFpbihXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSkK
KyAgICAsIG1fcGFnZUdyb3VwSUQocGFnZUdyb3VwSUQpCisgICAgLCBtX3dlYlBhZ2VQcm94eUlE
KHdlYlBhZ2VQcm94eUlEKQorICAgICwgbV9wYWdlSUQocGFnZUlEKQorI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgICwgbV91c2VyQWdlbnQoV2ViQ29yZTo6c3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBw
bGljYXRpb25OYW1lKHsgfSkpCisjZWxzZQorICAgICwgbV91c2VyQWdlbnQoc3RhbmRhcmRVc2Vy
QWdlbnQoKSkKKyNlbmRpZgorICAgICwgbV91c2VyQ29udGVudENvbnRyb2xsZXIoV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyOjpnZXRPckNyZWF0ZShpbml0aWFsaXphdGlvbkRhdGEudXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllcikpCit7CisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9O
UykKKyAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkQ29udGVudFJ1bGVMaXN0cyhXVEZN
b3ZlKGluaXRpYWxpemF0aW9uRGF0YS5jb250ZW50UnVsZUxpc3RzKSk7CisjZW5kaWYKKworICAg
IHVwZGF0ZVByZWZlcmVuY2VzU3RvcmUocHJlZmVyZW5jZXNTdG9yZSk7CisgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZGlzYWJsZVRlcm1pbmF0aW9uKCk7Cit9CisKK1dlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbigpID0gZGVmYXVsdDsKKwordm9pZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OmVzdGFibGlzaENvbm5lY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OkVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uIHsgbV93ZWJQ
YWdlUHJveHlJRCwgbV9yZWdpc3RyYWJsZURvbWFpbiB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgMCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRl
bnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMKQoreworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlBvc3RFeGNlcHRpb25U
b1dvcmtlck9iamVjdCB7IHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGVycm9yTWVzc2FnZSwgbGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwgfSwgMCk7Cit9CisKK3ZvaWQgV2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp1cGRhdGVQcmVmZXJlbmNlc1N0b3Jl
KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQoreworICAgIFdlYlBhZ2U6OnVwZGF0
ZVByZWZlcmVuY2VzR2VuZXJhdGVkKHN0b3JlKTsKKyAgICBtX3ByZWZlcmVuY2VzU3RvcmUgPSBz
dG9yZTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OmxhdW5jaFNoYXJlZFdvcmtlcihXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4sIFdlYkNv
cmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgVVJMJiYg
dXJsLCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucywgV2ViQ29yZTo6V29y
a2VyRmV0Y2hSZXN1bHQmJiB3b3JrZXJGZXRjaFJlc3VsdCkKK3sKKyAgICBSRUxFQVNFX0xPRyhT
aGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Omxh
dW5jaFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJl
ZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgYXV0byBwYWdlQ29uZmlndXJhdGlv
biA9IFdlYkNvcmU6OnBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cyhXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5zZXNzaW9uSUQoKSk7CisKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5kYXRh
YmFzZVByb3ZpZGVyID0gV2ViRGF0YWJhc2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUobV9wYWdlR3Jv
dXBJRCk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uc29ja2V0UHJvdmlkZXIgPSBXZWJTb2NrZXRQ
cm92aWRlcjo6Y3JlYXRlKG1fd2ViUGFnZVByb3h5SUQpOworICAgIHBhZ2VDb25maWd1cmF0aW9u
LmJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmJyb2Fk
Y2FzdENoYW5uZWxSZWdpc3RyeSgpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLndlYkxvY2tSZWdp
c3RyeSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvY2tSZWdpc3RyeSgpOworICAgIHBh
Z2VDb25maWd1cmF0aW9uLnVzZXJDb250ZW50UHJvdmlkZXIgPSBtX3VzZXJDb250ZW50Q29udHJv
bGxlcjsKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5saWJXZWJS
VENQcm92aWRlciA9IG1ha2VVbmlxdWVSZWY8UmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXI+
KCk7CisjZW5kaWYKKworICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1haW5G
cmFtZSA9IG1ha2VVbmlxdWVSZWY8UmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ+KG1fd2Vi
UGFnZVByb3h5SUQsIG1fcGFnZUlELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI6OmdlbmVyYXRl
KCksIG1fdXNlckFnZW50KTsKKworICAgIGF1dG8gcGFnZSA9IG1ha2VVbmlxdWVSZWY8V2ViQ29y
ZTo6UGFnZT4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOworICAgIGlmIChtX3ByZWZlcmVu
Y2VzU3RvcmUpIHsKKyAgICAgICAgV2ViUGFnZTo6dXBkYXRlU2V0dGluZ3NHZW5lcmF0ZWQoKm1f
cHJlZmVyZW5jZXNTdG9yZSwgcGFnZS0+c2V0dGluZ3MoKSk7CisgICAgICAgIHBhZ2UtPnNldHRp
bmdzKCkuc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KHN0YXRpY19jYXN0PFdlYkNvcmU6OlN0b3Jh
Z2VCbG9ja2luZ1BvbGljeT4obV9wcmVmZXJlbmNlc1N0b3JlLT5nZXRVSW50MzJWYWx1ZUZvcktl
eShXZWJQcmVmZXJlbmNlc0tleTo6c3RvcmFnZUJsb2NraW5nUG9saWN5S2V5KCkpKSk7CisgICAg
fQorICAgIHBhZ2UtPnNldHVwRm9yUmVtb3RlV29ya2VyKHVybCwgb3JpZ2luLnRvcE9yaWdpbiwg
d29ya2VyRmV0Y2hSZXN1bHQucmVmZXJyZXJQb2xpY3kpOworICAgIGF1dG8gc2hhcmVkV29ya2Vy
VGhyZWFkUHJveHkgPSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlKFdU
Rk1vdmUocGFnZSksIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIG9yaWdpbiwgdXJsLCBXVEZNb3Zl
KHdvcmtlckZldGNoUmVzdWx0KSwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSwgbV91c2VyQWdlbnQs
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFnZVByb3ZpZGVyKCkpOworCisgICAg
V2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnJlZ2lzdGVy
U2hhcmVkV29ya2VyVGhyZWFkKFdURk1vdmUoc2hhcmVkV29ya2VyVGhyZWFkUHJveHkpKTsKK30K
Kwordm9pZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmNsb3NlKCkK
K3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OmNsb3NlOiBTaGFyZWQgd29ya2VyIHByb2Nlc3MgaXMgcmVxdWVz
dGVkIHRvIHN0b3AgYWxsIHNoYXJlZCB3b3JrZXJzIik7CisgICAgc2V0QXNDbG9zZWQoKTsKKwor
ICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9u
IHsgfSwgMCk7CisgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmds
ZXRvbigpLnN0b3BBbGxTaGFyZWRXb3JrZXJzKCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5hYmxlVGVybWluYXRpb24oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjFhY2ZkMGM0MTI5MWQ1N2U3NGIwNmZlZGM2OTViZmFmMTA5NWRiYmUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiSWRlbnRpZmll
clR5cGVzLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWdp
c3RyYWJsZURvbWFpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IENsaWVudE9yaWdpbjsKK3N0cnVjdCBXb3JrZXJG
ZXRjaFJlc3VsdDsKK3N0cnVjdCBXb3JrZXJPcHRpb25zOworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOworc3RydWN0IFJlbW90ZVdvcmtl
ckluaXRpYWxpemF0aW9uRGF0YTsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyOjpDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGlj
OgorICAgIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpD
b25uZWN0aW9uPiYmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQYWdlR3JvdXBJZGVu
dGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
Y29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0
YSYmKTsKKyAgICB+V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKCk7CisK
KyAgICB2b2lkIGVzdGFibGlzaENvbm5lY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KSBmaW5hbDsKKyAgICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpT
aGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSBmaW5h
bDsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgZmluYWw7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDIE1lc3NhZ2VzLgorICAgIHZv
aWQgbGF1bmNoU2hhcmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBXZWJDb3JlOjpT
aGFyZWRXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmLCBX
ZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmKTsKKyAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2Vz
U3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOworICAgIHZvaWQgc2V0VXNlckFnZW50
KFN0cmluZyYmIHVzZXJBZ2VudCkgeyBtX3VzZXJBZ2VudCA9IFdURk1vdmUodXNlckFnZW50KTsg
fQorICAgIHZvaWQgY2xvc2UoKTsKKworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3M7CisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9y
ZWdpc3RyYWJsZURvbWFpbjsKKyAgICBQYWdlR3JvdXBJZGVudGlmaWVyIG1fcGFnZUdyb3VwSUQ7
CisgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBtX3dlYlBhZ2VQcm94eUlEOworICAgIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOworICAgIFN0cmluZyBtX3VzZXJBZ2VudDsKKyAg
ICBSZWY8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyPiBtX3VzZXJDb250ZW50Q29udHJvbGxlcjsK
KyAgICBzdGQ6Om9wdGlvbmFsPFdlYlByZWZlcmVuY2VzU3RvcmU+IG1fcHJlZmVyZW5jZXNTdG9y
ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQ4MmE0YWRhNTNmZDRiZWIxYzVlZWUxZjdhYmE2MjJmM2ZkNWIxZGIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMCBAQAorIyBDb3B5
cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBXZWJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CisgICAgTGF1bmNo
U2hhcmVkV29ya2VyKHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCBXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFVSTCB1cmws
IHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdvcmtlck9wdGlvbnMsIHN0cnVjdCBXZWJD
b3JlOjpXb3JrZXJGZXRjaFJlc3VsdCB3b3JrZXJGZXRjaFJlc3VsdCkKKyAgICBQb3N0Q29ubmVj
dEV2ZW50KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRp
ZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBwb3J0LCBTdHJpbmcgc291cmNl
T3JpZ2luKQorICAgIFRlcm1pbmF0ZVNoYXJlZFdvcmtlcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIpCisgICAgVXBkYXRlUHJlZmVyZW5jZXNT
dG9yZShzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlKQorICAgIFNldFVz
ZXJBZ2VudChTdHJpbmcgdXNlckFnZW50KQorICAgIENsb3NlKCkKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKaW5kZXggNWM1ZmRhYTYwMDU3OTY3YzY1YzAzMmYwNDI1
ZmQ5MTU5MzMxOGYzYi4uNWRkYmRlNDRhOTZiMTVjYzM2NzE5MGQ4YWNkMTc3MzEzMjk0NWJkZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKQEAgLTI2LDIzICsyNiw0
NSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24uaCIKIAorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9TaGFyZWRXb3JrZXJNYW5hZ2VyLmg+CisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRl
bnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyS2V5Lmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9Xb3JrZXJPcHRpb25zLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uKCkgPSBkZWZhdWx0OworI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4u
KSBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0l
IiBQUkl1NjQgIl0gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6IiBmbXQsIHRoaXMs
IFdlYkNvcmU6OlByb2Nlc3M6OmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19f
KQorCitXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJXZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uOiIpOworfQorCitXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uOjp+V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpCit7CisgICAgQ09OTkVD
VElPTl9SRUxFQVNFX0xPRygifldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Iik7Cit9
CiAKIElQQzo6Q29ubmVjdGlvbiogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6bWVz
c2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAogewogICAgIHJldHVybiAmV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
OwogfQogCi12b2lkIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnJlcXVlc3RTaGFy
ZWRXb3JrZXIoY29uc3QgVVJMJiB1cmwsIFdlYkNvcmU6OlNoYXJlZFdvcmtlciYgc2hhcmVkV29y
a2VyLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgcG9ydCwgV2ViQ29yZTo6V29y
a2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMpCit2b2lkIFdlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb246OnJlcXVlc3RTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2Vy
S2V5JiBzaGFyZWRXb3JrZXJLZXksIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNz
YWdlUG9ydCYmIHBvcnQsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlv
bnMpCiB7Ci0gICAgLy8gRklYTUU6IFNob3VsZCBzZW5kIElQQyB0byB0aGUgbmV0d29yayBwcm9j
ZXNzLgotICAgIFdlYkNvcmU6OlNoYXJlZFdvcmtlck1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5l
Y3QodXJsLCBzaGFyZWRXb3JrZXIsIFdURk1vdmUocG9ydCksIFdURk1vdmUod29ya2VyT3B0aW9u
cykpOworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coInJlcXVlc3RTaGFyZWRXb3JrZXI6IHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpSZXF1ZXN0U2hhcmVkV29ya2VyIHsg
c2hhcmVkV29ya2VyS2V5LCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXVEZNb3ZlKHBv
cnQpLCB3b3JrZXJPcHRpb25zIH0pOwogfQogCit2b2lkIFdlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb246OnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KGNvbnN0IFdlYkNvcmU6OlNo
YXJlZFdvcmtlcktleSYgc2hhcmVkV29ya2VyS2V5LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7CisgICAgQ09OTkVD
VElPTl9SRUxFQVNFX0xPRygic2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXk6IHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpTaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdh
eSB7IHNoYXJlZFdvcmtlcktleSwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciB9KTsKK30K
KworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0cKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKaW5kZXggNjFlZTVhZjQyNGRjMDMz
N2Y2MmNmNzE5MzJhMTViYjk1NWU2ZGNkMi4uNDc4MTkzZWY3ZGRhZjA2MWQ2ZWI1MjhlZGY5M2Ri
YzQxMTdhMzIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApAQCAtMjUs
MjAgKzI1LDI1IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3Mg
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7
CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdl
YkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24sIHByaXZhdGUgSVBDOjpNZXNzYWdl
U2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbj4gY3JlYXRlKCkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKTsgfQorICAgIH5X
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCiBwcml2YXRl
OgogICAgIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKTsKIAogICAgIC8vIFdlYkNv
cmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uCi0gICAgdm9pZCByZXF1ZXN0U2hhcmVk
V29ya2VyKGNvbnN0IFVSTCYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlciYsIFdlYkNvcmU6OlRyYW5z
ZmVycmVkTWVzc2FnZVBvcnQmJiwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmKSBmaW5hbDsKKyAg
ICB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5
JiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNm
ZXJyZWRNZXNzYWdlUG9ydCYmLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJikgZmluYWw7
CisgICAgdm9pZCBzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShjb25zdCBXZWJDb3JlOjpT
aGFyZWRXb3JrZXJLZXkmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKSBm
aW5hbDsKIAogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlci4KICAgICBJUEM6OkNvbm5lY3Rpb24q
IG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjJhZTFh
MzJjOTM5NTNkOTVlOGVhZjhjNTgxMDIyNzBiNTI1N2YxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI3IEBACisjIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24geworICAgIEZldGNoU2NyaXB0SW5DbGllbnQoVVJMIHVybCwgV2ViQ29yZTo6U2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBzdHJ1
Y3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyB3b3JrZXJPcHRpb25zKSAtPiAoc3RydWN0IFdlYkNv
cmU6OldvcmtlckZldGNoUmVzdWx0IGZldGNoUmVzdWx0KSBBc3luYworICAgIE5vdGlmeVdvcmtl
ck9iamVjdE9mTG9hZENvbXBsZXRpb24oV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGVycm9yKQorICAgIFBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFN0cmlu
ZyBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTdHJpbmcg
c291cmNlVVJMKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4
IGRkOGQ1ODFhYzViMjRkNWQ5NDA2MmI5YzY1YzI0MmYwYzUxZWM5ODQuLmRkNDViNDU4OGJmOWRk
MTI0ZTE4ZmFhOTVhMzI2ZWQzMTkzMWE0NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKQEAgLTg0LDYgKzg0LDggQEAKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCIKKyNpbmNs
dWRlICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRl
ICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0U3Ry
ZWFtLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKQEAgLTEzNCw2ICsxMzYsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGljYXRvci5oPgogI2luY2x1ZGUgPHBhbC9Mb2dnaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL0FsZ29yaXRobXMuaD4KQEAgLTkwNCw3ICs5MDcsNiBAQCB2b2lkIFdl
YlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
SVBDOjpEZWNvZGVyJiBkZQogICAgIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAg
ICAvLyBGSVhNRTogUmVtb3ZlPwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUo
KSA9PSBNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSkgewogICAgICAgICBBU1NFUlQoU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9u
KCkuY29ubmVjdGlvbigpKTsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbiA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKQEAgLTkx
Myw2ICs5MTUsMTMgQEAgdm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGUKICAgICB9CiAjZW5kaWYKIAor
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkp
IHsKKyAgICAgICAgQVNTRVJUKFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24o
KS5jb25uZWN0aW9uKCkpOworICAgICAgICBpZiAoYXV0byogY29udGV4dE1hbmFnZXJDb25uZWN0
aW9uID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24o
KSkKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbiY+KCpjb250ZXh0TWFuYWdlckNvbm5lY3Rpb24pLmRpZFJlY2VpdmVNZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgTE9H
X0VSUk9SKCJVbmhhbmRsZWQgd2ViIHByb2Nlc3MgbWVzc2FnZSAnJXMnIChkZXN0aW5hdGlvbjog
JSIgUFJJdTY0ICIgcGlkOiAlZCkiLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkp
LCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSwgc3RhdGljX2Nhc3Q8aW50PihnZXRDdXJyZW50UHJv
Y2Vzc0lEKCkpKTsKIH0KIApAQCAtMTkxOSw2ICsxOTI4LDE2IEBAIExpYldlYlJUQ05ldHdvcmsm
IFdlYlByb2Nlc3M6OmxpYldlYlJUQ05ldHdvcmsoKQogICAgIHJldHVybiAqbV9saWJXZWJSVENO
ZXR3b3JrOwogfQogCit2b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91
cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJsZURv
bWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEm
JiBpbml0aWFsaXphdGlvbkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICAvLyBXZSBhcmUgaW4gdGhlIFNoYXJlZCBXb3JrZXIgY29udGV4
dCBwcm9jZXNzIGFuZCB0aGUgY2FsbCBiZWxvdyBlc3RhYmxpc2hlcyBvdXIgY29ubmVjdGlvbiB0
byB0aGUgTmV0d29yayBQcm9jZXNzCisgICAgLy8gYnkgY2FsbGluZyBlbnN1cmVOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0
aGUgc2FtZSB1bmRlcmx5aW5nIElQQzo6Q29ubmVjdGlvbiBhcyB0aGUKKyAgICAvLyBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24gZm9yIHN5bmNocm9uaXphdGlvbiBwdXJwb3Nlcy4KKyAgICBhdXRv
JiBpcGNDb25uZWN0aW9uID0gZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpOworICAgIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRD
b25uZWN0aW9uKG1ha2VVbmlxdWU8V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uPihpcGNDb25uZWN0aW9uLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgcGFnZUdyb3Vw
SUQsIHdlYlBhZ2VQcm94eUlELCBwYWdlSUQsIHN0b3JlLCBXVEZNb3ZlKGluaXRpYWxpemF0aW9u
RGF0YSkpKTsKKyAgICBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29u
bmVjdGlvbigpLT5lc3RhYmxpc2hDb25uZWN0aW9uKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKK30KKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgV2ViUHJvY2Vzczo6ZXN0
YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdl
R3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBh
Z2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmIHN0b3JlLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9w
dGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIsIFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmIGluaXRpYWxpemF0
aW9uRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggMDNmYzBjNzFkN2MzYTdk
OTdkNWJkZGM2YmFiZmRmMDhiNDY2OWYyNS4uNDIzZGVmZjJhZjViYzQyZTc1NDgyM2VjNmI4YzBm
MDAxMGNhMDI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC00NzEs
NiArNDcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdhbWVwYWREaXNjb25uZWN0ZWQodW5zaWdu
ZWQgaW5kZXgpOwogI2VuZGlmCiAKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyLCBXZWJQYWdl
UHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVy
ZW5jZXNTdG9yZSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFJlbW90ZVdvcmtlcklu
aXRpYWxpemF0aW9uRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmllciwgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2Vy
UGFnZUlkZW50aWZpZXIsIFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDNiYzQ3MzE5ZTM2ZDAwNjMxOThiYmJm
OTY2OGQwNjlhYWRjZGUzNzcuLmY1ZTczNmVkMzQ3ZjI3MWFkZWM3YzQ1ZDAzZmQ4M2RiYjBiYTli
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCkBAIC0xMDAsNiArMTAwLDggQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNl
aXZlciBOb3RSZWZDb3VudGVkIHsKICAgICBHYW1lcGFkRGlzY29ubmVjdGVkKHVuc2lnbmVkIGlu
ZGV4KQogI2VuZGlmCiAKKyAgICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElE
LCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9y
ZSBzdG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBzdHJ1Y3QgV2ViS2l0
OjpSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRhKSAtPiAo
KSBBc3luYworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIEVzdGFibGlzaFNlcnZp
Y2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpQYWdlR3Jv
dXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIg
d2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdl
YktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gZG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlJl
bW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSBpbml0aWFsaXphdGlvbkRhdGEpIC0+ICgpIEFz
eW5jCiAjZW5kaWYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCBiNTQ2YTczNjQ0NTI1ZDEzY2VkOGIyZTZjNDYwYzE5MmFjMjFk
ZTU5Li43ZGIzNDkxMzBlMTUzMDk0ZDVkOGI3NmIxYmEyNWU3ZWU3ODViZTdkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMjItMDItMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBBZGQgc3VwcG9ydCBmb3Igc2hhcmluZyBTaGFyZWQgV29ya2VycyAoaW5jbHVk
aW5nIGFjcm9zcyBXZWJQcm9jZXNzZXMpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzU5NTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg4MzMwNjY2
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlYmFz
ZWxpbmUgZXhpc3RpbmcgV1BUIHRlc3RzIGludm9sdmluZyBzaGFyZWQgd29ya2Vycy4KKworICAg
ICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vZ3RrLXdrMi9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lk
ZS13b3JrZXIvc2hhcmVkd29ya2VyLWNvbm5lY3Qtc3JjLnN1Yi1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1y
ZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
dGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWItZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2It
dXJsLndpbmRvdy1leHBlY3RlZC50eHQ6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQuCisgICAgICAgICogcGxhdGZvcm0vZ3Rr
LXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFy
ZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0OiBDb3BpZWQgZnJv
bSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9k
dWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0Lgor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4
dDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4
dC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1jcmVkZW50aWFscy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3Jr
ZXItb3JpZ2luLWV4cGVjdGVkLnR4dDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3Jr
ZXItb3JpZ2luLWV4cGVjdGVkLnR4dC4KKwogMjAyMi0wMi0wNCAgU2FtIFdlaW5pZyAgPHdlaW5p
Z0BhcHBsZS5jb20+CiAKICAgICAgICAgR3JhZGllbnRzIGRvbid0IGNvcnJlY3RseSBpbnRlcnBv
bGF0ZSBtaXNzaW5nL25vbmUgY29sb3IgY29tcG9uZW50cyBjb3JyZWN0bHkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nCmluZGV4IGYzNTY2ZWI4NDBhYzBkMWZhNThmMWVmMjMyMjIzNzZjZDZm
Y2FiYmEuLjMwZDJlNzViNDI2MjliYjljZDVkYmRjMmU3MmYzMmRiMjJlOThiMzIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIyLTAyLTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNo
YXJpbmcgU2hhcmVkIFdvcmtlcnMgKGluY2x1ZGluZyBhY3Jvc3MgV2ViUHJvY2Vzc2VzKQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1OTU4CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS84ODMzMDY2Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZWJhc2VsaW5lIGV4aXN0aW5nIFdQVCB0ZXN0cyBpbnZv
bHZpbmcgc2hhcmVkIHdvcmtlcnMuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvY29ubmVjdC1zcmMvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNy
Yy1hbGxvd2VkLnN1Yi1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3JrZXItY29ubmVj
dC1zcmMtYmxvY2tlZC5zdWItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1y
ZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1zY3Jp
cHQtc3JjLnN1Yi1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nv
bnRlbnQtc2VjdXJpdHktcG9saWN5L3NjcmlwdC1zcmMvd29ya2VyLXNldC10aW1lb3V0LnN1Yi1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMv
b2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVk
ZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5odHRwcy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVt
YmVkZGVyLXBvbGljeS9zaGFyZWQtd29ya2Vycy5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS93
b3JrZXItaW5oZXJpdGFuY2Uuc3ViLmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2NsYWltLXNoYXJl
ZC13b3JrZXItZmV0Y2guaHR0cHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC1jcm9z
cy1vcmlnaW4tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJl
ZC13b3JrZXItaW1wb3J0LXJlZmVycmVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxl
cy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJz
LzAwNC1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
c2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA4LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2lu
ZG93LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9z
aGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1taXNtYXRjaC1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1y
ZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0OgorCiAyMDIyLTAyLTA0
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
bGFuZCBtaXNzaW5nIGJhc2VsaW5lIGZvciBTaGFyZWQgV29ya2VyIHRlc3QuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0
aW9ucwppbmRleCBhZDk3MDI5MGM0MzhhZGZjZDQ0NDZkYWY3MjdmM2ZkNTk0M2M0YzI0Li40YTJi
NmJjYTkyZGQ5MGRlZmNmNmFiNGQyOWEzZTA5MjE3OTcxZmJlIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMK
QEAgLTQ1OSw3ICs0NTksNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1s
b2Nrcy9zdGVhbC50ZW50YXRpdmUuaHR0cHMuYW55Lmh0bWwgWyBEdW1wSgogaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hbmFseXNlcm5v
ZGUtaW50ZXJmYWNlL3Rlc3QtYW5hbHlzZXItbWluaW11bS5odG1sIFsgRHVtcEpTQ29uc29sZUxv
Z0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhl
LWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUtZGlzY29ubmVjdC1h
dWRpb3BhcmFtLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQogaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NhbWUtb3JpZ2luLWNoZWNrLnN1Yi5odG1sIFsg
RHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMuaHRtbCBbIER1bXBKU0Nv
bnNvbGVMb2dJblN0ZEVyciBdCiBmYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWJhY2stZm9yd2FyZC1j
YWNoZS5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGZhc3QvaGlzdG9yeS9wYWdl
LWNhY2hlLWNyZWF0ZUltYWdlQml0bWFwLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIg
XQogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLWluLWxvYWRpbmctaWZyYW1l
Lmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQpAQCAtODQ5LDYgKzg0OCw3IEBAIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdXNlci10aW1pbmcvbWFyay5odG1sIFsgRmFp
bHVyZSBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdXNlci10aW1pbmcv
bWVhc3VyZV9hc3NvY2lhdGVkX3dpdGhfbmF2aWdhdGlvbl90aW1pbmcuaHRtbCBbIEZhaWx1cmUg
UGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9z
eXN0ZW0tc3RhdGUtYW5kLWNhcGFiaWxpdGllcy90aGUtbmF2aWdhdG9yLW9iamVjdC9wbHVnaW5z
LWFuZC1taW1ldHlwZXMuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2JlYWNvbi9iZWFjb24tcmVkaXJlY3Quc3ViLndpbmRvdy5odG1sIFsgRmFp
bHVyZSBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1v
cmlnaW4tZW1iZWRkZXItcG9saWN5L2Fub255bW91cy1pZnJhbWUvc2hhcmVkd29ya2VyLXBhcnRp
dGlvbmluZy50ZW50YXRpdmUuaHR0cHMud2luZG93Lmh0bWwgWyBGYWlsdXJlIFBhc3MgXQogCiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2RvY3VtZW50LW1l
dGFkYXRhL3RoZS1saW5rLWVsZW1lbnQvbGluay1sb2FkLWVycm9yLWV2ZW50cy5odG1sIFsgRHVt
cEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZG9jdW1lbnQtbWV0YWRhdGEvdGhlLWxpbmstZWxlbWVudC9saW5rLWxv
YWQtZXJyb3ItZXZlbnRzLmh0dHBzLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQpA
QCAtNTEzMSw2ICs1MTMxLDEwIEBAIHdlYmtpdC5vcmcvYi8yMzQ5NzcgWyBEZWJ1ZyBdIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9mb2N1cy1lCiAjIFRlc3QgaXMg
Y3Jhc2hpbmcgc2luY2UgaW1wb3J0LgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL21vZHVsZXMvZGVkaWNhdGVkLXdvcmtlci1pbXBvcnQtY3NwLmh0bWwgWyBTa2lwIF0K
IAorIyBUZXN0IGlzIGZsYWt5IGJlY2F1c2UgTWVzc2FnZVBvcnQgbWVzc2FnZXMgbWF5IGdldCBy
ZWNlaXZlZCBpbiBhIGRpZmZlcmVudCBvcmRlciB3aGVuIHNldmVyYWwgTWVzc2FnZVBvcnRzIGFy
ZSBpbnZvbHZlZCwKKyMgZHVlIHRvIGhvdyBNZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygp
IGlzIGltcGxlbWVudGVkLgoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0lu
U3RkRXJyIEZhaWx1cmUgUGFzcyBdCisKICMgUGx1Z2lucwogIyBGSVhNRTogUmVtb3ZlIHRoZXNl
IHRlc3RzLgogcGx1Z2lucy8gWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvY29ubmVj
dC1zcmMvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1hbGxvd2VkLnN1Yi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3JrZXItY29ubmVjdC1zcmMtYWxsb3dl
ZC5zdWItZXhwZWN0ZWQudHh0CmluZGV4IGUyODM5NWVkODNjNjY0YjJjYTYwZDVkYTg3YmNmZjBl
MDM5OWQ1MDEuLjM4MmI5NTY5NWJjYjA1ZDUyY2UwZWNhMjA4YTg4MDY3YTgzZTE3NDcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvY29ubmVjdC1zcmMvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1h
bGxvd2VkLnN1Yi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9zaGFy
ZWQtd29ya2VyLWNvbm5lY3Qtc3JjLWFsbG93ZWQuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsx
LDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwOi8vd3d3MS5sb2NhbGhv
c3Q6ODgwMC9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zdXBwb3J0L2ZhaWwuYXNpcwogCiBGQUlM
IEV4cGVjdGluZyBsb2dzOiBbInhociBhbGxvd2VkIiwiVEVTVCBDT01QTEVURSJdIGFzc2VydF91
bnJlYWNoZWQ6IHVuZXhwZWN0ZWQgbG9nOiB4aHIgYmxvY2tlZCBSZWFjaGVkIHVucmVhY2hhYmxl
IGNvZGUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9zaGFyZWQtd29ya2Vy
LWNvbm5lY3Qtc3JjLWJsb2NrZWQuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvY29ubmVj
dC1zcmMvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1ibG9ja2VkLnN1Yi1leHBlY3RlZC50eHQK
aW5kZXggZjQ5MGVhNzcxMmZlODFjNzc0MWRkZTA0MTU0NTc1Mjk1MTc2ZmY1My4uNWU5NzFlMjBm
NGJiOTI2M2EzMTg0ZTMwOGNkYzdjNDk0MDZjNDhjOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9j
b25uZWN0LXNyYy9zaGFyZWQtd29ya2VyLWNvbm5lY3Qtc3JjLWJsb2NrZWQuc3ViLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nv
bnRlbnQtc2VjdXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3JrZXItY29ubmVjdC1z
cmMtYmxvY2tlZC5zdWItZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nl
c3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHA6Ly93d3cxLmxvY2FsaG9zdDo4ODAwL2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L3N1cHBvcnQvZmFpbC5hc2lzCiBUaGlzIHRlc3QgbG9hZHMgYSBzaGFyZWQg
d29ya2VyLCBkZWxpdmVyZWQgd2l0aCBpdHMgb3duIHBvbGljeS4gVGhlIHdvcmtlciBzaG91bGQg
YmUgYmxvY2tlZCBmcm9tIG1ha2luZyBhbiBYSFIgYXMgdGhhdCBwb2xpY3kgc3BlY2lmaWVzIGEg
Y29ubmVjdC1zcmMgJ25vbmUnLCB0aG91Z2ggdGhpcyByZXNvdXJjZSdzIHBvbGljeSBpcyBjb25u
ZWN0LXNyYyAqLiBObyByZXBvcnQgc2hvdWxkIGJlIHNlbnQgc2luY2UgdGhlIHdvcmtlcidzIHBv
bGljeSBkb2Vzbid0IHNwZWNpZnkgYSByZXBvcnQtdXJpLgogCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHku
c3ViLWV4cGVjdGVkLnR4dAppbmRleCAwZTk5NzI0Yjg2NGJiZjQ5MTlhNTc0OWIyOGNiMTU0YWUy
NzE4M2M2Li42ODk4YjU0YWFiNmZjMzRkMTdiMmU4YmUyZTg0M2U5YTg3MDViMzcwIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXJlcG9ydC1vbmx5LnN1
Yi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtl
ci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEsMyBAQAotQmxvY2tlZCBh
Y2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L3N1cHBvcnQvcmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLWZldGNoCi1C
bG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvc3VwcG9ydC9yZXNvdXJjZS5weT9jcm9zcy1vcmlnaW4t
eGhyCi1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0
Ojk0NDQvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc3VwcG9ydC9yZXNvdXJjZS5weT9jcm9zcy1v
cmlnaW4tZmV0Y2gKIAogUEFTUyBTYW1lLW9yaWdpbiAnZmV0Y2goKScuCiBQQVNTIFNhbWUtb3Jp
Z2luIFhIUi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3Jr
ZXItc2NyaXB0LXNyYy5zdWItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2Vy
L3NoYXJlZHdvcmtlci1zY3JpcHQtc3JjLnN1Yi1leHBlY3RlZC50eHQKaW5kZXggOTc5MTA2MzAz
Nzg1ZWMyNTU1MzM2ZGY0OWRiZThlMWJmYTNmNmVmYS4uYmI2NDUyZjQ0YTBhYTIxNWE4ZGRlOGEy
ZjMwMGQ4Y2M0NDhkYjkzZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3No
YXJlZHdvcmtlci1zY3JpcHQtc3JjLnN1Yi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9p
bnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1zY3JpcHQtc3JjLnN1Yi1leHBlY3RlZC50eHQKQEAg
LTIsMTAgKzIsOSBAQAogSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCiAK
IFRJTUVPVVQgc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMgVGVzdCB0aW1lZCBvdXQKLUZBSUwgQ3Jv
c3Mtb3JpZ2luIGBpbXBvcnRTY3JpcHRzKClgIG5vdCBibG9ja2VkIGluIGh0dHA6IHdpdGhvdXIg
Q1NQICBBIG5ldHdvcmsgZXJyb3Igb2NjdXJyZWQuCi1GQUlMIGBldmFsKClgIG5vdCBibG9ja2Vk
IGluIGh0dHA6IHdpdGhvdXQgQ1NQIFJlZnVzZWQgdG8gZXZhbHVhdGUgYSBzdHJpbmcgYXMgSmF2
YVNjcmlwdCBiZWNhdXNlICd1bnNhZmUtZXZhbCcgaXMgbm90IGFuIGFsbG93ZWQgc291cmNlIG9m
IHNjcmlwdCBpbiB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2
ZTogInNjcmlwdC1zcmMgJ3NlbGYnICdub25jZS1hJyBibG9iOiBmaWxlc3lzdGVtOiIuCi0KLUZB
SUwgYHNldFRpbWVvdXQoW3N0cmluZ10pYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3V0IENT
UCBhc3NlcnRfdW5yZWFjaGVkOiBjYWxsYmFjayBub3QgY2FsbGVkLiBSZWFjaGVkIHVucmVhY2hh
YmxlIGNvZGUKK0ZBSUwgQ3Jvc3Mtb3JpZ2luIGBpbXBvcnRTY3JpcHRzKClgIG5vdCBibG9ja2Vk
IGluIGh0dHA6IHdpdGhvdXIgQ1NQIExvYWQgZmFpbGVkCitQQVNTIGBldmFsKClgIG5vdCBibG9j
a2VkIGluIGh0dHA6IHdpdGhvdXQgQ1NQCitQQVNTIGBzZXRUaW1lb3V0KFtzdHJpbmddKWAgbm90
IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AKIFRJTUVPVVQgQ3Jvc3Mtb3JpZ2luIGBpbXBv
cnRTY3JpcHRzKClgIGJsb2NrZWQgaW4gaHR0cDogd2l0aCBzY3JpcHQtc3JjICdzZWxmJyBUZXN0
IHRpbWVkIG91dAogTk9UUlVOIGBldmFsKClgIGJsb2NrZWQgaW4gaHR0cDogd2l0aCBzY3JpcHQt
c3JjICdzZWxmJwogTk9UUlVOIGBzZXRUaW1lb3V0KFtzdHJpbmddKWAgYmxvY2tlZCBpbiBodHRw
OiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3NjcmlwdC1z
cmMvd29ya2VyLXNldC10aW1lb3V0LnN1Yi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3Njcmlw
dC1zcmMvd29ya2VyLXNldC10aW1lb3V0LnN1Yi1leHBlY3RlZC50eHQKaW5kZXggNGVhYzFjY2Mw
NTI2OWYwNzY4NzUwMjVjZDYyNGVlN2QyMTc5NmNlZi4uYjhlZTEzYjBmZmNlYTZmMTI1Y2M2OTZm
MmJiYjY3MTIwM2Y4NjhjYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtl
ci1zZXQtdGltZW91dC5zdWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNy
Yy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKIAog
RkFJTCBEZWRpY2F0ZWQgd29ya2VyIGluaGVyaXRzIENTUCBmcm9tIG1haW4gZG9jdW1lbnQgYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgInNldFRpbWVvdXQgYWxsb3dlZCIgYnV0IGdvdCAic2V0VGlt
ZW91dCBibG9ja2VkIgotRkFJTCBTaGFyZWQgd29ya2VyIGRlbGl2ZXJzIGl0cyBvd24gQ1NQIGFz
c2VydF9lcXVhbHM6IGV4cGVjdGVkICJzZXRUaW1lb3V0IGJsb2NrZWQiIGJ1dCBnb3QgInNldFRp
bWVvdXQgYWxsb3dlZCIKK1BBU1MgU2hhcmVkIHdvcmtlciBkZWxpdmVycyBpdHMgb3duIENTUAog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5o
dHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdv
cmtlci5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggYzEwNzEzNjU1MjgwMTkyYjdjYjJlZThlNGQy
ZWM2NTQ3YWVmNzI2My4uNmY4NDRkZDVkOTQ5MWEyMmU1OTVhOTBiOTYzYzA4ODgyMTkwMmQyZCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2Jyb3dzZXJzL29mZmxpbmUvYXBwY2FjaGUvd29ya2Vycy9hcHBjYWNoZS13b3JrZXIuaHR0
cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUt
d29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtNSw3ICs1LDcgQEAgSGFybmVzcyBFcnJvciAo
VElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCiBQQVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIGNh
Y2hlZCBzY3JpcHQKIFBBU1MgRGVkaWNhdGVkIHdvcmtlciBvZiB0aGUgZmFsbGJhY2tlZCBzY3Jp
cHQKIFBBU1MgRGVkaWNhdGVkIHdvcmtlciBvZiB0aGUgbm90LWluLWNhY2hlIHNjcmlwdAotUEFT
UyBTaGFyZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0Ci1QQVNTIFNoYXJlZCB3b3JrZXIg
b2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0CitGQUlMIFNoYXJlZCB3b3JrZXIgb2YgdGhlIGNhY2hl
ZCBzY3JpcHQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIkRvbmU6IGNhY2hlZCIgYnV0IGdvdCAi
RXJyb3I6IEltcG9ydGluZyBhIG5vbi1jYWNoZWQgc2NyaXB0IG11c3QgZmFpbC4iCitGQUlMIFNo
YXJlZCB3b3JrZXIgb2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0IGFzc2VydF9lcXVhbHM6IGV4cGVj
dGVkICJEb25lOiBmYWxsYmFja2VkIiBidXQgZ290ICJFcnJvcjogSW1wb3J0aW5nIGEgbm9uLWNh
Y2hlZCBzY3JpcHQgbXVzdCBmYWlsLiIKIFRJTUVPVVQgU2hhcmVkIHdvcmtlciBvZiB0aGUgbm90
LWluLWNhY2hlIHNjcmlwdCBUZXN0IHRpbWVkIG91dAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVk
ZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5odHRwcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
Y3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlz
c2lvbi5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggNjM1NWI2OGRlNzBiZTY2YzAxZTJiM2FlMTI3
NDdkNWNkMmMzNDBhYi4uYzhiZjc1ZTdlYTg1MzBmYmM4YjQyMDAzMmFmNGYwMzlkZGRlNTM2NyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBl
cm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L2Ny
b3NzLW9yaWdpbi1pc29sYXRlZC1wZXJtaXNzaW9uLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMjAs
NyArMjAsNyBAQCBQQVNTIGRlZGljYXRlZCB3b3JrZXI6IHNjaGVtZSA9IGJsb2IsIHZhbHVlID0g
KgogUEFTUyBkZWRpY2F0ZWQgd29ya2VyOiBzY2hlbWUgPSBibG9iLCB2YWx1ZSA9IHNlbGYKIEZB
SUwgZGVkaWNhdGVkIHdvcmtlcjogc2NoZW1lID0gYmxvYiwgdmFsdWUgPSAoXCkgYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgZmFsc2UgYnV0IGdvdCB0cnVlCiBQQVNTIHNoYXJlZCB3b3JrZXI6IHdp
dGhDb29wQ29lcCA9IGZhbHNlCi1QQVNTIHNoYXJlZCB3b3JrZXI6IHdpdGhDb29wQ29lcCA9IHRy
dWUKK0ZBSUwgc2hhcmVkIHdvcmtlcjogd2l0aENvb3BDb2VwID0gdHJ1ZSBhc3NlcnRfZXF1YWxz
OiBleHBlY3RlZCB0cnVlIGJ1dCBnb3QgZmFsc2UKIFBBU1Mgc2VydmljZSB3b3JrZXI6IHdpdGhD
b29wQ29lcCA9IGZhbHNlCiBGQUlMIHNlcnZpY2Ugd29ya2VyOiB3aXRoQ29vcENvZXAgPSB0cnVl
IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mt
b3JpZ2luLWVtYmVkZGVyLXBvbGljeS9zaGFyZWQtd29ya2Vycy5odHRwcy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mt
b3JpZ2luLWVtYmVkZGVyLXBvbGljeS9zaGFyZWQtd29ya2Vycy5odHRwcy1leHBlY3RlZC50eHQK
aW5kZXggMzM5OGJkODg5MzFiMjIwOGEyODA4OTliZWQ3NGUyNGRhM2Y0ZjYzNi4uNGM4NjZlYjI5
MjYzYmFmODdlZGMxOWVlOWNlMTUwMTQ2MTA5MGJjZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRl
ci1wb2xpY3kvc2hhcmVkLXdvcmtlcnMuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1i
ZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMiw3ICsy
LDcgQEAgVmVyaWZ5IHRoZSBDcm9zcy1PcmlnaW4gRW1iZWRkZXIgUG9saWN5IGZvciBTaGFyZWQg
V29ya2VycyBieSBwZXJmb3JtaW5nIGEgY3Jvc3MKIAogCiBQQVNTIGRlZmF1bHQgcG9saWN5IChk
ZXJpdmVkIGZyb20gcmVzcG9uc2UpCi1GQUlMICJyZXF1aXJlLWNvcnAiIChkZXJpdmVkIGZyb20g
cmVzcG9uc2UpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJmYWlsdXJlIiBidXQgZ290ICJzdWNj
ZXNzIgorUEFTUyAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIHJlc3BvbnNlKQogUEFTUyBk
ZWZhdWx0IHBvbGljeSAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBkdWUgdG8gdXNlIG9mIGxvY2Fs
IHNjaGVtZSAtIGJsb2IgVVJMKQogRkFJTCAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIG93
bmVyIHNldCBkdWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAtIGJsb2IgVVJMKSBhc3NlcnRfZXF1
YWxzOiBleHBlY3RlZCAiZmFpbHVyZSIgYnV0IGdvdCAic3VjY2VzcyIKIFBBU1MgZGVmYXVsdCBw
b2xpY3kgKGRlcml2ZWQgZnJvbSBvd25lciBzZXQgZHVlIHRvIHVzZSBvZiBsb2NhbCBzY2hlbWUg
LSBkYXRhIFVSTCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhl
cml0YW5jZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29y
a2VyLWluaGVyaXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggNzViMWQzM2U1MjYw
MWFkMGQzYWRkZjhiZGU1NTVlMTVkYjIyZmYyMi4uYjJiZjJlM2JmZjNmZTJlMzA3YThiYzk0OWUy
MjFkZjAwNmE5NjNmNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWlu
aGVyaXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xp
Y3kvd29ya2VyLWluaGVyaXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw2
IEBACiBCbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0
Ojk0NDQvY29tbW9uL2JsYW5rLmh0bWwKIEJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBo
dHRwczovL3d3dy5sb2NhbGhvc3Q6OTQ0NC9jb21tb24vYmxhbmsuaHRtbAogQmxvY2tlZCBhY2Nl
c3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbW1vbi9ibGFu
ay5odG1sCi1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxo
b3N0Ojk0NDQvY29tbW9uL2JsYW5rLmh0bWwKIAogUEFTUyBUZXN0IHRoYXQgbG9jYWwgc2NoZW1l
IHdvcmtlcnMgaW5oZXJpdCBDT0VQOiByZXF1aXJlLWNvcnAgZnJvbSB0aGUgY3JlYXRpbmcgZG9j
dW1lbnQKIFBBU1MgYmxvYiBVUkwgZGVkaWNhdGVkIHdvcmtlcjogU2FtZSBvcmlnaW4gc2hvdWxk
IGJlIGFsbG93ZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9jbGFpbS1zaGFyZWQt
d29ya2VyLWZldGNoLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2NsYWlt
LXNoYXJlZC13b3JrZXItZmV0Y2guaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IGRkMzVhYWUyNWY3
N2ZlNDQ1MTYzYjE5NDZiYmI2MzIzNGNmMjBmZDcuLjkwZDkxYWQ1MTAxZjUxMGQ0YjRlNDcyOTVh
NmM2MDdkMGQ4ZmJjNzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2NsYWltLXNoYXJl
ZC13b3JrZXItZmV0Y2guaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vy
L2NsYWltLXNoYXJlZC13b3JrZXItZmV0Y2guaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEs
NCBAQAogCi1QQVNTIGZldGNoKCkgaW4gU2hhcmVkV29ya2VyIHNob3VsZCBiZSBpbnRlcmNlcHRl
ZCBhZnRlciB0aGUgY2xpZW50IGlzIGNsYWltZWQuCisKK0ZBSUwgZmV0Y2goKSBpbiBTaGFyZWRX
b3JrZXIgc2hvdWxkIGJlIGludGVyY2VwdGVkIGFmdGVyIHRoZSBjbGllbnQgaXMgY2xhaW1lZC4g
YXNzZXJ0X2VxdWFsczogZmV0Y2goKSBpbiB0aGUgc2hhcmVkIHdvcmtlciBzaG91bGQgYmUgaW50
ZXJjZXB0ZWQuIGV4cGVjdGVkICJJbnRlcmNlcHRlZCEiIGJ1dCBnb3QgImEgc2ltcGxlIHRleHQg
ZmlsZVxuIgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyX2RhdGFVcmwtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdv
cmtlcl9kYXRhVXJsLWV4cGVjdGVkLnR4dAppbmRleCA5OTVhMDYwMTliODQ4ZDQzNjdhYjViY2E5
OGY4NjIyODFkMWJiYzhiLi45YjU4MjBhYWU4Y2IzMzNkODgwNTlhNDYxYWQxYmVhN2Q0NTY2MGE3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvU2hhcmVkV29ya2VyX2RhdGFVcmwtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJf
ZGF0YVVybC1leHBlY3RlZC50eHQKQEAgLTEsMTMgKzEsNSBAQAotQ09OU09MRSBNRVNTQUdFOiBF
cnJvcjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290IDEKIAogCi1IYXJuZXNzIEVy
cm9yIChGQUlMKSwgbWVzc2FnZSA9IEVycm9yOiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1
dCBnb3QgMQotCi1QQVNTIERhdGEgVVJMIG5vdCBzaGFyZWQgYnkgY3Jvc3Mtb3JpZ2luIFNoYXJl
ZFdvcmtlcnMKLVRJTUVPVVQgRGF0YSBVUkxzIHNoYXJlZCBieSBzYW1lLW9yaWdpbiBTaGFyZWRX
b3JrZXJzIFRlc3QgdGltZWQgb3V0Ci0KLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0g
RXJyb3I6IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDIgYnV0IGdvdCAxCi0KIFBBU1MgRGF0YSBV
Ukwgbm90IHNoYXJlZCBieSBjcm9zcy1vcmlnaW4gU2hhcmVkV29ya2VycwotVElNRU9VVCBEYXRh
IFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtlcnMgVGVzdCB0aW1lZCBvdXQK
K1BBU1MgRGF0YSBVUkxzIHNoYXJlZCBieSBzYW1lLW9yaWdpbiBTaGFyZWRXb3JrZXJzCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQu
dHh0CmluZGV4IDU3NmU2ZDJiN2VkMmZhNzAyM2NmMjNiOTZhMDY5MWZkNWFiY2EwNTkuLjRhMjZi
ZTkyOWE4ZDc1MjUwOGI0ZjdmNzVjMDdiM2VhOGVkYzhjYWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJl
ZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hh
cmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsx
LDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxo
b3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQu
cHkKIAogUEFTUyBTdGF0aWMgaW1wb3J0LgogRkFJTCBTdGF0aWMgaW1wb3J0IChjcm9zcy1vcmln
aW4pLiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogIkltcG9y
dGluZyBhIG1vZHVsZSBzY3JpcHQgZmFpbGVkLiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3Jr
ZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQt
d29ya2VyLWltcG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CmluZGV4IDRm
ODY0MWU1MTQ4MGYwMTMwNjc1YjkxMzY0ZWNjNGYwZmEyNzIwYTkuLjI5OTdmN2UxZjMwOGU4MDgx
OTdkYzhkNDgyMDQ5ZDUzY2FiNGYzYmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdv
cmtlci1pbXBvcnQtZGF0YS11cmwtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsx
LDMgQEAKLUNPTlNPTEUgTUVTU0FHRTogT3JpZ2luIG51bGwgaXMgbm90IGFsbG93ZWQgYnkgQWNj
ZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luLiBTdGF0dXMgY29kZTogMjAwCiAKIEhhcm5lc3MgRXJy
b3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29y
a2VyLWltcG9ydC1kYXRhLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtl
ci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dAppbmRleCBlYWM3Zjk1ZGU2ZjJk
ODdjN2IyMTNkZmVjYWIxMzg4YzY4ODRkYzFkLi5jYmMwNDI5ZTBjNzE3MzUyODBlZmI0NDQ0Y2Ni
YWE4MjEzNjhkZjExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVy
bC53aW5kb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEt
dXJsLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0
byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQzL3dvcmtlcnMvbW9kdWxl
cy9yZXNvdXJjZXMvZXhwb3J0LW9uLWxvYWQtc2NyaXB0LnB5CiAKIEhhcm5lc3MgRXJyb3IgKFRJ
TUVPVVQpLCBtZXNzYWdlID0gbnVsbAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWlt
cG9ydC1yZWZlcnJlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1yZWZl
cnJlci1leHBlY3RlZC50eHQKaW5kZXggZmUxYjlkOTNjMDgwMTFiNTBlOTQxZjRlMTIzNjA2N2Fi
YmQzZjIzZS4uN2I0ZWU4YzE5ZWQzOWQwYzBhN2E1MzI2MmUwZjBiZmQzOTYyM2E2YSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtcmVmZXJyZXItZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1
bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LXJlZmVycmVyLWV4cGVjdGVkLnR4dApAQCAtMSwyMSAr
MSwxNSBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3MS5sb2Nh
bGhvc3Q6OTQ0My93b3JrZXJzL21vZHVsZXMvcmVzb3VyY2VzL2V4cG9ydC1yZWZlcnJlci1jaGVj
a2VyLnB5Ci1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cxLmxvY2Fs
aG9zdDo5NDQzL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LXJlZmVycmVyLWNoZWNr
ZXIucHkKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxo
b3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtcmVmZXJyZXItY2hlY2tl
ci5weQotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3MS5sb2NhbGhv
c3Q6OTQ0My93b3JrZXJzL21vZHVsZXMvcmVzb3VyY2VzL2V4cG9ydC1yZWZlcnJlci1jaGVja2Vy
LnB5Ci1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9z
dDo5NDQzL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LXJlZmVycmVyLWNoZWNrZXIu
cHkKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0
Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtcmVmZXJyZXItY2hlY2tlci5w
eQogCiBQQVNTIFNhbWUtb3JpZ2luIHRvcC1sZXZlbCBtb2R1bGUgc2NyaXB0IGxvYWRpbmcgd2l0
aCAibm8tcmVmZXJyZXIiIHJlZmVycmVyIHBvbGljeQogUEFTUyBTYW1lLW9yaWdpbiB0b3AtbGV2
ZWwgbW9kdWxlIHNjcmlwdCBsb2FkaW5nIHdpdGggIm9yaWdpbiIgcmVmZXJyZXIgcG9saWN5CiBQ
QVNTIFNhbWUtb3JpZ2luIHRvcC1sZXZlbCBtb2R1bGUgc2NyaXB0IGxvYWRpbmcgd2l0aCAic2Ft
ZS1vcmlnaW4iIHJlZmVycmVyIHBvbGljeQotUEFTUyBTYW1lLW9yaWdpbiBzdGF0aWMgaW1wb3J0
IHdpdGggIm5vLXJlZmVycmVyIiByZWZlcnJlciBwb2xpY3kuCi1QQVNTIFNhbWUtb3JpZ2luIHN0
YXRpYyBpbXBvcnQgd2l0aCAib3JpZ2luIiByZWZlcnJlciBwb2xpY3kuCitGQUlMIFNhbWUtb3Jp
Z2luIHN0YXRpYyBpbXBvcnQgd2l0aCAibm8tcmVmZXJyZXIiIHJlZmVycmVyIHBvbGljeS4gYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgIiIgYnV0IGdvdCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL3dv
cmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvc3RhdGljLWltcG9ydC1zYW1lLW9yaWdpbi1yZWZlcnJl
ci1jaGVja2VyLXdvcmtlci5qcyIKK0ZBSUwgU2FtZS1vcmlnaW4gc3RhdGljIGltcG9ydCB3aXRo
ICJvcmlnaW4iIHJlZmVycmVyIHBvbGljeS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6
Ly9sb2NhbGhvc3Q6ODgwMC8iIGJ1dCBnb3QgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC93b3JrZXJz
L21vZHVsZXMvcmVzb3VyY2VzL3N0YXRpYy1pbXBvcnQtc2FtZS1vcmlnaW4tcmVmZXJyZXItY2hl
Y2tlci13b3JrZXIuanMiCiBQQVNTIFNhbWUtb3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0aCAic2Ft
ZS1vcmlnaW4iIHJlZmVycmVyIHBvbGljeS4KIEZBSUwgQ3Jvc3Mtb3JpZ2luIHN0YXRpYyBpbXBv
cnQgd2l0aCAibm8tcmVmZXJyZXIiIHJlZmVycmVyIHBvbGljeS4gcHJvbWlzZV90ZXN0OiBVbmhh
bmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBUeXBlIGVycm9y
IgogRkFJTCBDcm9zcy1vcmlnaW4gc3RhdGljIGltcG9ydCB3aXRoICJvcmlnaW4iIHJlZmVycmVy
IHBvbGljeS4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9i
amVjdCAiVHlwZUVycm9yOiBUeXBlIGVycm9yIgogRkFJTCBDcm9zcy1vcmlnaW4gc3RhdGljIGlt
cG9ydCB3aXRoICJzYW1lLW9yaWdpbiIgcmVmZXJyZXIgcG9saWN5LiBwcm9taXNlX3Rlc3Q6IFVu
aGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IFR5cGUgZXJy
b3IiCi1GQUlMIFNhbWUtb3JpZ2luIGR5bmFtaWMgaW1wb3J0IHdpdGggIm5vLXJlZmVycmVyIiBy
ZWZlcnJlciBwb2xpY3kuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIiIGJ1dCBnb3QgImh0dHA6
Ly9sb2NhbGhvc3Q6ODgwMC93b3JrZXJzL21vZHVsZXMvcmVzb3VyY2VzL2R5bmFtaWMtaW1wb3J0
LXNhbWUtb3JpZ2luLXJlZmVycmVyLWNoZWNrZXItd29ya2VyLmpzIgotRkFJTCBTYW1lLW9yaWdp
biBkeW5hbWljIGltcG9ydCB3aXRoICJvcmlnaW4iIHJlZmVycmVyIHBvbGljeS4gYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC8iIGJ1dCBnb3QgImh0dHA6Ly9s
b2NhbGhvc3Q6ODgwMC93b3JrZXJzL21vZHVsZXMvcmVzb3VyY2VzL2R5bmFtaWMtaW1wb3J0LXNh
bWUtb3JpZ2luLXJlZmVycmVyLWNoZWNrZXItd29ya2VyLmpzIgorUEFTUyBTYW1lLW9yaWdpbiBk
eW5hbWljIGltcG9ydCB3aXRoICJuby1yZWZlcnJlciIgcmVmZXJyZXIgcG9saWN5LgorUEFTUyBT
YW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydCB3aXRoICJvcmlnaW4iIHJlZmVycmVyIHBvbGljeS4K
IFBBU1MgU2FtZS1vcmlnaW4gZHluYW1pYyBpbXBvcnQgd2l0aCAic2FtZS1vcmlnaW4iIHJlZmVy
cmVyIHBvbGljeS4KIEZBSUwgQ3Jvc3Mtb3JpZ2luIGR5bmFtaWMgaW1wb3J0IHdpdGggIm5vLXJl
ZmVycmVyIiByZWZlcnJlciBwb2xpY3kuIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlv
biB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogVHlwZSBlcnJvciIKIEZBSUwgQ3Jvc3Mt
b3JpZ2luIGR5bmFtaWMgaW1wb3J0IHdpdGggIm9yaWdpbiIgcmVmZXJyZXIgcG9saWN5LiBwcm9t
aXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJy
b3I6IFR5cGUgZXJyb3IiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5k
b3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVk
LnR4dAppbmRleCA1NzZlNmQyYjdlZDJmYTcwMjNjZjIzYjk2YTA2OTFmZDVhYmNhMDU5Li40YTI2
YmU5MjlhOGQ3NTI1MDhiNGY3Zjc1YzA3YjNlYThlZGM4Y2FmIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFy
ZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3Jr
ZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFj
Y2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQzL3dvcmtlcnMv
bW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LW9uLWxvYWQtc2NyaXB0LnB5CiAKIFBBU1MgU3RhdGlj
IGltcG9ydC4KIEZBSUwgU3RhdGljIGltcG9ydCAoY3Jvc3Mtb3JpZ2luKS4gcHJvbWlzZV90ZXN0
OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6ICJJbXBvcnRpbmcgYSBtb2R1bGUgc2Ny
aXB0IGZhaWxlZC4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVu
dGlhbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxz
LWV4cGVjdGVkLnR4dAppbmRleCBlMWJlZGY1NDMwZWZlNzVhNTlhM2M0OTg5YzU1ZDZmZjZjMTk2
NTFhLi5hNzBmMDVhZjU0ZjRiYmY2MjUyZDdlNmJlOWUwMmE3ODdlMTFmYmFiIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9k
dWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1
bGVzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1jcmVkZW50aWFscy1leHBlY3RlZC50eHQKQEAgLTEs
NCArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cDovL3d3dzEubG9j
YWxob3N0Ojg4MDAvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtY3JlZGVudGlhbHMu
cHkKIAogSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9z
ZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBs
ZS13b3JrZXJzLzAwNC1leHBlY3RlZC50eHQKaW5kZXggMDE4ZGI2MDQ1NjlkMDZmMjcyMWM4Y2Iz
OTQ2ZjYwOGE0ZGM2ZTk4Yi4uY2ZlNDY1NTY3NWNkMDQ5YWI3YTVlYjkxYjY3ZGRhOGViNTBkZGI0
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwNC1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3Nl
bWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwNC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSwzIEBA
CiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1OT1RSVU4gc2hh
cmVkIHdvcmtlciB3aXRoIG11bHRpcGxlIGRvY3VtZW50cworUEFTUyBzaGFyZWQgd29ya2VyIHdp
dGggbXVsdGlwbGUgZG9jdW1lbnRzCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vy
cy8wMDgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50
eHQKaW5kZXggOTdhNGU3YTczYTYzZmRjNmUzMjAyMTI3M2FmYzgzM2MwMWIyYjQ3MC4uMDlmNjcy
ZDFjNjIxN2EwYzViYTMxZmVjNjRkMmI5MzVjNTM4ZmUyZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJz
LzAwOC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSwzIEBACiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVP
VVQpLCBtZXNzYWdlID0gbnVsbAotCi1USU1FT1VUIG1lc3NhZ2VjaGFubmVsIGluIHNoYXJlZCB3
b3JrZXIgVGVzdCB0aW1lZCBvdXQKK1BBU1MgbWVzc2FnZWNoYW5uZWwgaW4gc2hhcmVkIHdvcmtl
cgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
c2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKaW5kZXggYTA4
OWMyMjQ4OWUyZDY2NzhlNWIyNGUyZmZlZmUwMjQzYzFlYThjZC4uMTllNDZiMDlhNTZhYzgzMzUz
M2Q1N2IyMDFhOWU2MDAwNDg3YjBjNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItZnJvbS1ibG9iLXVy
bC53aW5kb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93
LWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDUgQEAKIAotSGFybmVzcyBFcnJvciAoVElNRU9VVCks
IG1lc3NhZ2UgPSBudWxsCi0KLUZBSUwgQ3JlYXRpbmcgYSBzaGFyZWQgd29ya2VyIGZyb20gYSBi
bG9iIFVSTCB3b3Jrcy4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIndvcmtlcl9PS18yIiBidXQg
Z290ICJ3b3JrZXJfT0tfMSIKK1BBU1MgQ3JlYXRpbmcgYSBzaGFyZWQgd29ya2VyIGZyb20gYSBi
bG9iIFVSTCB3b3Jrcy4KIFBBU1MgQ3JlYXRpbmcgYSBzaGFyZWQgd29ya2VyIGZyb20gYSBibG9i
IFVSTCB3b3JrcyBpbW1lZGlhdGVseSBiZWZvcmUgcmV2b2tpbmcuCi1USU1FT1VUIENvbm5lY3Rp
bmcgdG8gYSBzaGFyZWQgd29ya2VyIG9uIGEgcmV2b2tlZCBibG9iIFVSTCB3b3Jrcy4gVGVzdCB0
aW1lZCBvdXQKK1BBU1MgQ29ubmVjdGluZyB0byBhIHNoYXJlZCB3b3JrZXIgb24gYSByZXZva2Vk
IGJsb2IgVVJMIHdvcmtzLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25z
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDZmZmVlMjczOTBkOTc4ZTRlNmI1NjkxZjhkYmE3ZTNlZWQwYTgzMmQuLmFlNDViNGQyNzM5
NjQ0NjkzYzJjMTY0OTc1YzUzZDU2NmJiYTI4ZjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUt
dmlhLW9wdGlvbnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMt
ZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIFRlc3QgdGhlIG5hbWUgcHJvcGVy
dHkgb2Ygc2hhcmVkIHdvcmtlcnMgbWl4aW5nIGNvbnN0cnVjdG9yIG9wdGlvbnMgYW5kIGNvbnN0
cnVjdG9yIHN0cmluZ3MgRXJyb3I6IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDIgYnV0IGdvdCAx
CitQQVNTIFRlc3QgdGhlIG5hbWUgcHJvcGVydHkgb2Ygc2hhcmVkIHdvcmtlcnMgbWl4aW5nIGNv
bnN0cnVjdG9yIG9wdGlvbnMgYW5kIGNvbnN0cnVjdG9yIHN0cmluZ3MKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJl
ZC13b3JrZXItb3B0aW9ucy1taXNtYXRjaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25z
LW1pc21hdGNoLWV4cGVjdGVkLnR4dAppbmRleCBmNjU2OTQ2MTUwZGIxN2MwOWJiYzRhZTNlZGE4
NThmOTE3M2VkNmUxLi40Zjk5YTEzNDA5ZTdlODY4NDRiNTUxOGM1MTBjMzA4ZmRmZTYwNzIzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVk
LXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dApAQCAtMSwyOCArMSwyNiBAQAog
Ci1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKLQotVElNRU9VVCBDb25u
ZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUg
YmxvY2tlZDogZGVmYXVsdCB0byBtb2R1bGUgVGVzdCB0aW1lZCBvdXQKLU5PVFJVTiBDb25uZWN0
aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxv
Y2tlZDogbW9kdWxlIHRvIGRlZmF1bHQKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3Jr
ZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogY2xhc3NpYyB0byBt
b2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQg
b3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGNsYXNzaWMKLU5PVFJVTiBDb25u
ZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUg
YmxvY2tlZDogZGVmYXVsdCB0byBvbWl0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRv
IHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDog
ZGVmYXVsdCB0byBpbmNsdWRlIGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJl
ZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0
byBkZWZhdWx0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIg
d2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBzYW1lLW9y
aWdpbiBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGgg
ZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVkZSBpbiBj
bGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50
IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIG9taXQgaW4gY2xhc3Np
YwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIGNsYXNzaWMK
LU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9u
cyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGluIGNsYXNzaWMKLU5PVFJV
TiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91
bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBvbWl0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0
aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxv
Y2tlZDogaW5jbHVkZSB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGlu
ZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2Nr
ZWQ6IGRlZmF1bHQgdG8gb21pdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJl
ZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVs
dCB0byBpbmNsdWRlIGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRlZmF1
bHQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlm
ZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gc2FtZS1vcmlnaW4gaW4g
bW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50
IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVkZSBpbiBtb2R1bGUKLU5P
VFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBz
aG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBtb2R1bGUKLU5PVFJVTiBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gaW5jbHVkZSBpbiBtb2R1bGUKLU5PVFJVTiBDb25u
ZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUg
YmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBpbmNsdWRlIHRvIG9taXQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQg
d29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUg
dG8gc2FtZS1vcmlnaW4gaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIG1v
ZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGRlZmF1bHQKK1BBU1MgQ29ubmVjdGlu
ZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2Nr
ZWQ6IGNsYXNzaWMgdG8gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3
aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBtb2R1bGUgdG8gY2xhc3Np
YworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9u
cyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBvbWl0IGluIGNsYXNzaWMKK1BBU1MgQ29u
bmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJl
IGJsb2NrZWQ6IGRlZmF1bHQgdG8gaW5jbHVkZSBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBvbWl0IHRvIGRlZmF1bHQgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3
b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBz
YW1lLW9yaWdpbiBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3
aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGluY2x1ZGUg
aW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJl
bnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBjbGFz
c2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIGNsYXNzaWMK
K1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMg
c2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gZGVmYXVsdCBpbiBjbGFzc2ljCitQQVNTIENv
bm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBi
ZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRv
IHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDog
aW5jbHVkZSB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hh
cmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZh
dWx0IHRvIG9taXQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3
aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIGluY2x1
ZGUgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZl
cmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4gbW9kdWxl
CitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25z
IHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIHNhbWUtb3JpZ2luIGluIG1vZHVsZQorUEFTUyBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogb21pdCB0byBpbmNsdWRlIGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRv
IHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDog
c2FtZS1vcmlnaW4gdG8gb21pdCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQg
d29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3Jp
Z2luIHRvIGluY2x1ZGUgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIGRl
ZmF1bHQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRp
ZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gbW9k
dWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIHNhbWUtb3JpZ2luIGluIG1vZHVsZQog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Blbi11
cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dAppbmRleCAxZTJk
Mzk5MmY2ZDVkZjMyMjA3YTZiMGY2MTlhNmQ3MTE4MTI0MDBkLi41OWNhY2E0ODZmOGRlYWMwNzg5
Yzk3YjRmZWU4YTUyNTk3YTVlNTQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtl
ci1vcmlnaW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMveGhyL29wZW4tdXJsLXJlZGlyZWN0ZWQtc2hhcmVkd29ya2VyLW9yaWdp
bi1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5h
bCBVUkwgaHR0cDovL3d3dzIubG9jYWxob3N0Ojg4MDAveGhyL3Jlc291cmNlcy9pbnNwZWN0LWhl
YWRlcnMucHk/ZmlsdGVyX25hbWU9b3JpZ2luJmNvcnMKIAogRkFJTCBSZWZlcmVyIGhlYWRlciBh
c3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiUmVmZXJlcjogaHR0cDovL2xvY2FsaG9zdDo4ODAwL3ho
ci9yZXNvdXJjZXMvd29ya2VyeGhyLW9yaWdpbi1yZWZlcnJlci5qc1xuIiBidXQgZ290ICJSZWZl
cmVyOiBodHRwOi8vbG9jYWxob3N0Ojg4MDAveGhyL3Jlc291cmNlcy9yZWRpcmVjdC5weT9sb2Nh
dGlvbj13b3JrZXJ4aHItb3JpZ2luLXJlZmVycmVyLmpzXG4iCiBGQUlMIE9yaWdpbiBoZWFkZXIg
YXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIk9yaWdpbjogaHR0cDovL2xvY2FsaG9zdDo4ODAwXG4i
IGJ1dCBnb3QgIiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25u
ZWN0LXNyYy9zaGFyZWQtd29ya2VyLWNvbm5lY3Qtc3JjLWFsbG93ZWQuc3ViLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9zaGFyZWQtd29ya2Vy
LWNvbm5lY3Qtc3JjLWFsbG93ZWQuc3ViLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDdiZWJk
Y2ZjZWZlMWQzYjhhYjFlMDVkZjJhZTU2YjgzYTgwNjY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3JrZXItY29ubmVj
dC1zcmMtYWxsb3dlZC5zdWItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIEV4
cGVjdGluZyBsb2dzOiBbInhociBhbGxvd2VkIiwiVEVTVCBDT01QTEVURSJdCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450928</attachid>
            <date>2022-02-04 12:05:31 -0800</date>
            <delta_ts>2022-02-04 13:28:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235958-20220204120530.patch</filename>
            <type>text/plain</type>
            <size>297575</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNmMmQxMTcxN2RhZTg0
YTVjYmI3NWRmM2Y4NmIxODMzYmE3ZjIxOS4uYjA1NmEyYzBhZDRiMmUzODk1OWQyMDZlMjVlZTNh
ODVhYWNmNTRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMSBAQAorMjAyMi0wMi0wNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBz
aGFyaW5nIFNoYXJlZCBXb3JrZXJzIChpbmNsdWRpbmcgYWNyb3NzIFdlYlByb2Nlc3NlcykKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTk1OAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vODgzMzA2NjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNoYXJpbmcgU2hhcmVkIFdv
cmtlcnMsIGluY2x1ZGluZyBhY3Jvc3MgV2ViUHJvY2Vzc2VzLiBUaGUgYXJjaGl0ZWN0dXJlCisg
ICAgICAgIGlzIG1vZGVsZWQgYWZ0ZXIgdGhlIG9uZSB3ZSB1c2UgZm9yIFNlcnZpY2UgV29ya2Vy
cyBzaW5jZSB0aGV5IGFyZSB2ZXJ5IHNpbWlsYXIuIEkgdHJpZWQKKyAgICAgICAgc2hhcmluZyBh
cyBtdWNoIGNvZGUgYXMgcG9zc2libGUgd2l0aCBTZXJ2aWNlIFdvcmtlcnMgYnV0IHNvbWUgbW9y
ZSB3b3JrIGNhbiBwcm9iYWJseSBiZQorICAgICAgICBkb25lIGluIHRoaXMgYXJlYS4KKworICAg
ICAgICBXaXRoIHRoaXMgY2hhbmdlLCBzaGFyZWQgd29ya2VycyBzaG91bGQgYmUgbW9zdGx5IGZ1
bmN0aW9uYWwgYW5kIHNwZWMgY29tcGxpYW50LiBIb3dldmVyLAorICAgICAgICB0aGUgZmVhdHVy
ZSByZW1haW5zIGRpc2FibGVkIGJ5IGRlZmF1bHQgZm9yIG5vdyBhcyB0aGVyZSBhcmUgc3RpbGwg
V1BUIHRlc3RzIGZhaWx1cmVzIEkKKyAgICAgICAgbmVlZCB0byBpbnZlc3RpZ2F0ZS4gQWxzbywg
SSBuZWVkIHRvIGltcGxlbWVudCBhIGJldHRlciBwcm9jZXNzIHN1c3BlbnNpb24gbG9naWMgb24g
aU9TCisgICAgICAgIHRvIHJlcGxhY2UgdGhlIGhhY2sgSSBhZGRlZCBpbiB0aGlzIHBhdGNoICh0
byBtYWtlIHRoZSB0ZXN0cyBydW4gcmVsaWFibHkgb24gaU9TKS4KKworICAgICAgICBBcyB3aXRo
IFNlcnZpY2UgV29ya2VycywgU2hhcmVkIFdvcmtlcnMgYXJlIHBhcnRpdGlvbmVkIGJ5IChUb3Ag
T3JpZ2luICsgRnJhbWUgT3JpZ2luKQorICAgICAgICBmb3IgcHJpdmFjeSByZWFzb25zLiBUaGlz
IGlzIGFjaGlldmVkIHZpYSB0aGUgU2hhcmVkV29ya2VyS2V5IG9iamVjdCB0aGF0IHdlIHVzZSBh
cworICAgICAgICBIYXNoTWFwIGtleS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQg
YnkgZXhpc3RpbmcgV1BUIHRlc3RzLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAg
ICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogcGxhdGZvcm0vTG9nZ2luZy5oOgorICAgICAgICAqIHdvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXI6
OmZyb21JZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6U2hhcmVkV29ya2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6flNoYXJlZFdvcmtlcik6CisgICAgICAgIChXZWJD
b3JlOjpTaGFyZWRXb3JrZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkV29ya2VyOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRX
b3JrZXI6OnRlcm1pbmF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyLmg6CisgICAgICAgICogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmlkbDoK
KyAgICAgICAgKiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk6Omhhc2ggY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyS2V5OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkV29ya2VyS2V5OjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6
CisgICAgICAgIChXVEY6OkRlZmF1bHRIYXNoPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleT46Omhh
c2gpOgorICAgICAgICAoV1RGOjpEZWZhdWx0SGFzaDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk+
OjplcXVhbCk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6U2hhcmVkV29ya2Vy
S2V5Pjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk+Ojppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgICogd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5jcHA6IFJlbW92ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyTWFuYWdlcjo6Y29ubmVjdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzY3JpcHRMb2FkRmFpbGVkKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlck1hbmFnZXI6OnNjcmlwdExvYWRl
ZFN1Y2Nlc3NmdWxseSk6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyTWFuYWdlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHdvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbjo6ZmV0Y2hTY3JpcHRJbkNsaWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpub3RpZnlXb3JrZXJPYmplY3RPZkxv
YWRDb21wbGV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdCk6CisgICAgICAgICogd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAu
CisgICAgICAgICogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRl
cjo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6Om5v
dGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6
b3B0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXI6OmlkZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyOjpvcHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrZXJz
L3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaGFyZWRXb3Jr
ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6
OnN0b3BTaGFyZWRXb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXI6OnN0b3BBbGxTaGFyZWRXb3JrZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzZXRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpjb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpyZWdpc3RlclNoYXJlZFdvcmtl
clRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6
Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6dGVybWluYXRlU2hhcmVkV29ya2VyKToK
KyAgICAgICAgKiB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXI6OkNvbm5lY3Rpb246On5Db25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uOjppc0Nsb3NlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6c2V0QXND
bG9zZWQpOgorICAgICAgICAqIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2VuZXJhdGVXb3JrZXJQYXJhbWV0ZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpTaGFyZWRXb3Jr
ZXJUaHJlYWRQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eTo6flNoYXJlZFdvcmtlclRocmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdv
cmtlclRocmVhZFByb3h5Ojpub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eTo6Y3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tUb0xvYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tG
b3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6bmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6c3RhcnRXb3JrZXJHbG9iYWxTY29wZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6dGVy
bWluYXRlV29ya2VyR2xvYmFsU2NvcGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRh
c2tUb1dvcmtlckdsb2JhbFNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZFdvcmtlclRocmVhZFByb3h5OjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Ondvcmtlck9iamVjdERl
c3Ryb3llZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eTo6c3VzcGVuZEZvckJhY2tGb3J3YXJkQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnJlc3VtZUZvckJhY2tGb3J3YXJkQ2FjaGUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Ondv
cmtlckdsb2JhbFNjb3BlRGVzdHJveWVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpjb25maXJtTWVz
c2FnZUZyb21Xb3JrZXJPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
V29ya2VyVGhyZWFkUHJveHk6OnJlcG9ydFBlbmRpbmdBY3Rpdml0eSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6d29ya2VyR2xvYmFsU2NvcGVE
ZXN0cm95ZWRJbnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zaGFyZWQvY29u
dGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oOgorCiAyMDIyLTAyLTA0ICBBbmRyZXMgR29u
emFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBDYWNoZSBzb21lIGV4cGVu
c2l2ZSBBWElzb2xhdGVkT2JqZWN0IHByb3BlcnRpZXMgbGF6aWx5LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlMDRk
NTk3OWU1ZjNkODRlNWRlNDg3ZGI3NmFjYzdmZTNlMTVmMDQ0Li5iNWYwMDYwNjI2NTg4NWVjYThm
Mzk5ZjViOTA5NjQ1YjQzNDYzZjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5NiBAQAorMjAyMi0w
Mi0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBw
b3J0IGZvciBzaGFyaW5nIFNoYXJlZCBXb3JrZXJzIChpbmNsdWRpbmcgYWNyb3NzIFdlYlByb2Nl
c3NlcykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NTk1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODgzMzA2NjY+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNoYXJpbmcg
U2hhcmVkIFdvcmtlcnMsIGluY2x1ZGluZyBhY3Jvc3MgV2ViUHJvY2Vzc2VzLiBUaGUgYXJjaGl0
ZWN0dXJlCisgICAgICAgIGlzIG1vZGVsZWQgYWZ0ZXIgdGhlIG9uZSB3ZSB1c2UgZm9yIFNlcnZp
Y2UgV29ya2VycyBzaW5jZSB0aGV5IGFyZSB2ZXJ5IHNpbWlsYXIuIEkgdHJpZWQKKyAgICAgICAg
c2hhcmluZyBhcyBtdWNoIGNvZGUgYXMgcG9zc2libGUgd2l0aCBTZXJ2aWNlIFdvcmtlcnMgYnV0
IHNvbWUgbW9yZSB3b3JrIGNhbiBwcm9iYWJseSBiZQorICAgICAgICBkb25lIGluIHRoaXMgYXJl
YS4KKworICAgICAgICBXaXRoIHRoaXMgY2hhbmdlLCBzaGFyZWQgd29ya2VycyBzaG91bGQgYmUg
bW9zdGx5IGZ1bmN0aW9uYWwgYW5kIHNwZWMgY29tcGxpYW50LiBIb3dldmVyLAorICAgICAgICB0
aGUgZmVhdHVyZSByZW1haW5zIGRpc2FibGVkIGJ5IGRlZmF1bHQgZm9yIG5vdyBhcyB0aGVyZSBh
cmUgc3RpbGwgV1BUIHRlc3RzIGZhaWx1cmVzIEkKKyAgICAgICAgbmVlZCB0byBpbnZlc3RpZ2F0
ZS4gQWxzbywgSSBuZWVkIHRvIGltcGxlbWVudCBhIGJldHRlciBwcm9jZXNzIHN1c3BlbnNpb24g
bG9naWMgb24gaU9TCisgICAgICAgIHRvIHJlcGxhY2UgdGhlIGhhY2sgSSBhZGRlZCBpbiB0aGlz
IHBhdGNoICh0byBtYWtlIHRoZSB0ZXN0cyBydW4gcmVsaWFibHkgb24gaU9TKS4KKworICAgICAg
ICBBcyB3aXRoIFNlcnZpY2UgV29ya2VycywgU2hhcmVkIFdvcmtlcnMgYXJlIHBhcnRpdGlvbmVk
IGJ5IChUb3AgT3JpZ2luICsgRnJhbWUgT3JpZ2luKQorICAgICAgICBmb3IgcHJpdmFjeSByZWFz
b25zLiBUaGlzIGlzIGFjaGlldmVkIHZpYSB0aGUgU2hhcmVkV29ya2VyS2V5IG9iamVjdCB0aGF0
IHdlIHVzZSBhcworICAgICAgICBIYXNoTWFwIGtleS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fc2NoZW1lUmVnaXN0cnkpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fk5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xvc2VTaGFyZWRXb3JrZXJDb250
ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjp1bnJlZ2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzaGFyZWRXb3JrZXJDb25uZWN0aW9uKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmVuc3VyZVNoYXJlZFdvcmtlclNlcnZlcik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb246OnNoYXJlZFdvcmtlclNlcnZlcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24uY3BwLgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OldlYlNoYXJl
ZFdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6fldlYlNoYXJlZFdv
cmtlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OnJlZ2lzdHJhYmxlRG9tYWluIGNv
bnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29y
a2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OmlkZW50aWZp
ZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OmtleSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6d29ya2VyT3B0aW9ucyBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6b3JpZ2luIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyOjp1cmwgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTaGFyZWRXb3JrZXI6OnNoYXJlZFdvcmtlck9iamVjdHMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTaGFyZWRXb3JrZXI6OmlzUnVubmluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNoYXJlZFdvcmtlcjo6bWFya0FzUnVubmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJl
ZFdvcmtlcjo6ZmV0Y2hSZXN1bHQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRX
b3JrZXI6OnNldEZldGNoUmVzdWx0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2Vy
OjpkaWRGaW5pc2hGZXRjaGluZyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2hh
cmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OldlYlNoYXJlZFdvcmtlclNlcnZlcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2Vzc2lvbklEKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpkaWRGaW5pc2hGZXRjaGluZ1No
YXJlZFdvcmtlclNjcmlwdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZl
cjo6bmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29udGV4
dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJl
bW92ZUNvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2Vy
U2VydmVyOjpjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI6OnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaHV0RG93blNoYXJlZFdvcmtlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29ubmVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y29udGV4dENvbm5l
Y3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNo
YXJlZFdvcmtlclNlcnZlcjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmg6IEFk
ZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjp+V2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2Vzc2lv
bklEKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6
c2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b246OnJlcXVlc3RTaGFyZWRXb3JrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uOjpzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OmZldGNoU2NyaXB0
SW5DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uOjpub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2Vy
T2JqZWN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2VydmVyIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6d2ViUHJvY2Vzc0lkZW50aWZp
ZXIgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjp3ZWJQcm9jZXNzSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmlwY0Nvbm5lY3Rpb24gY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJEZXN0
aW5hdGlvbklEIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpwb3N0
RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpsYXVuY2hTaGFyZWRXb3JrZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpwb3N0
Q29ubmVjdEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlU2hhcmVkV29ya2VyKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjogQWRk
ZWQuCisgICAgICAgICogUGxhdGZvcm0vTG9nZ2luZy5oOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAodHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9k
ZWNsYXJlZCk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OnRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTaGFyZWRX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6c2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzaGFyZWRXb3JrZXJDb250ZXh0Q29u
bmVjdGlvbk5vTG9uZ2VyTmVlZGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRVc2VyQWdlbnQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZUZy
b21Xb3JrZXJQcm9jZXNzZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZXN0
YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXJGb3JXb3JrZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdl
YlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBkYXRlV29ya2VyVXNl
ckFnZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnRlcm1pbmF0ZVNlcnZp
Y2VXb3JrZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OndvcmtlclByb2Nl
c3Nlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNz
ZXJ0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjppc1NlcnZpY2VXb3Jr
ZXJQYWdlSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2Vydmlj
ZVdvcmtlclByb3hpZXNDb3VudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZyBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpoYXNTZXJ2aWNlV29ya2VyQmFja2dy
b3VuZEFjdGl2aXR5Rm9yVGVzdGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpyZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3Nlcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyRm9yU2VydmljZVdvcmtlcnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6dXBkYXRlU2VydmljZVdvcmtlclVzZXJBZ2VudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5OjpjcmVhdGVGb3JXb3JrZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXRXb3JrZXJVc2VyQWdlbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNoYXJlZFdvcmtl
ckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6c3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3Np
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJC
YWNrZ3JvdW5kUHJvY2Vzc2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6
ZGlzYWJsZVdvcmtlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVuYWJs
ZVdvcmtlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclNl
cnZpY2VXb3JrZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpzZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXNTdG9yZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dXBkYXRlU2VydmljZVdv
cmtlclByb2Nlc3NBc3NlcnRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OmRpc2FibGVTZXJ2aWNlV29ya2Vycyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5hYmxlU2VydmljZVdvcmtlcnMpOiBEZWxldGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Byb3h5Ojppc1J1bm5pbmdTaGFyZWRXb3JrZXJzIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojppc1N0YW5kYWxvbmVTaGFyZWRXb3JrZXJQcm9jZXNzIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojppc1J1bm5pbmdXb3JrZXJz
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpoYXNTZXJ2aWNlV29y
a2VyUGFnZVByb3h5KToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNl
aXZlTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjptX3VzZXJDb250ZW50
Q29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6ZXN0YWJsaXNoQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29y
a2VyT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjp1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpsYXVuY2hTaGFyZWRXb3Jr
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OmNsb3NlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbjo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246On5XZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbjo6cmVxdWVzdFNoYXJlZFdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6
OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnNoYXJlZFdvcmtlck9iamVjdElzR29p
bmdBd2F5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkaWRS
ZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVzdGFibGlzaFNo
YXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorCiAyMDIyLTAyLTA0ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4OTA2OS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCmluZGV4IDZjYjE3NDU5YTdkYTg0ZjVhMjYyOTlkNjcwOGIyYzdiNzNjMGQ2
YzYuLmM5ZjY2ODVmNjJkMTM1YWVmOTgxYjZhMjEyOGExNzA1N2VmM2EyYTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQpAQCAtMTk1OSw5ICsxOTU5LDEyIEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVX
T1JLX0hFQURFUlMKICAgICB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCiAgICAgd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCiAgICAgd29ya2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5o
CisgICAgd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oCisgICAgd29ya2Vycy9Xb3JrZXJPcHRp
b25zLmgKICAgICB3b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKICAgICB3b3Jr
ZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaAogICAgIHdvcmtlcnMvV29ya2Vy
T3JXb3JrbGV0VGhyZWFkLmgKKyAgICB3b3JrZXJzL1dvcmtlclJlcG9ydGluZ1Byb3h5LmgKICAg
ICB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuaAogICAgIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVy
LmgKICAgICB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlckNsaWVudC5oCkBAIC0yMDA1LDkgKzIw
MDgsMTIgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHdvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAogCiAgICAgd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VySWRlbnRpZmllci5oCi0gICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
TWFuYWdlci5oCisgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyS2V5LmgKICAgICB3b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKKyAgICB3b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgKICAgICB3b3JrZXJzL3NoYXJlZC9T
aGFyZWRXb3JrZXJQcm92aWRlci5oCisKKyAgICB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgKICAgICB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJl
ZFdvcmtlclRocmVhZC5oCiAgICAgd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJU
aHJlYWRQcm94eS5oCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggYjNmNWUwYjc4NDE3MGJmMDI0ZDc4ODM5
ZmZjOTA4MTcyNGE3NGNhNi4uNWVlNTAwY2I2ZDEwZjUwYjdhMzUzNWU0OWFhYmI3YzE5MDUyZjc1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTI3ODUsMTAgKzI3ODUsMTAgQEAgd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCiB3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNw
cAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCi13b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbi5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVy
LmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcAord29ya2Vy
cy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKIHdvcmtlcnMv
c2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkLmNwcAogd29ya2Vycy9zaGFyZWQvY29u
dGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAKIHdvcmtsZXRzL1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGM1ZjQ0ZWYwNGE3MDU4YjE5YjI0Yzg1ZDExZDYzZDk0NTRlM2Ri
MGMuLjU2YTcxNTlkYmFlZTJmNjA2OGE4YTI2ZGQ1ZWZjZWIyZDEyZTdhNTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkwMyw3
ICs5MDMsNyBAQAogCQkyRTQzNDY0QjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2Nv
cGVQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkU0MzQ2MzkwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuaCAqLzsg
fTsKIAkJMkU0MzQ2NEQwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckxvY2F0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzQjBGNTQ2QTgy
MDBCMEYxQkEgLyogV29ya2VyTG9jYXRpb24uaCAqLzsgfTsKIAkJMkU0MzQ2NTAwRjU0NkE4MjAw
QjBGMUJBIC8qIFdvcmtlck1lc3NhZ2luZ1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzRTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
TWVzc2FnaW5nUHJveHkuaCAqLzsgfTsKLQkJMkU0MzQ2NTEwRjU0NkE4MjAwQjBGMUJBIC8qIFdv
cmtlck9iamVjdFByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRTQzNDYzRjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyT2JqZWN0UHJveHkuaCAq
LzsgfTsKKwkJMkU0MzQ2NTEwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzRjBG
NTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyT2JqZWN0UHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTQzNDY1MzBGNTQ2QTgyMDBCMEYxQkEg
LyogV29ya2VyUnVuTG9vcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkU0MzQ2NDEwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclJ1bkxvb3AuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTQzNDY1NTBG
NTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDY0MzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
VGhyZWFkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMkU3NTg0MUUxMjc3OUFEQTAwNjI2MjhCIC8qIEZpbGVSZWFkZXJMb2FkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNzU4NDFCMTI3NzlBREEw
MDYyNjI4QiAvKiBGaWxlUmVhZGVyTG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExMjUsNyArMTEyNSw3IEBACiAJCTQxNkEwNkExMjND
Q0FEMDMwMDM0NzEwOSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2QTA2OTYyM0NDQUE5RjAw
MzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RDc1QTIyMEM2NTFBNTAwRDAy
RDJDIC8qIE5ldHdvcmtMb2FkSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkQ3NTlGMjBDNjQ0MTMwMEQwMkQyQyAvKiBOZXR3b3Jr
TG9hZEluZm9ybWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNDE2RTBCM0EyMDlCQzNDQjAwNEE5NUQ5IC8qIEZldGNoSWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTBCMzcy
MDlCQzNDMjAwNEE5NUQ5IC8qIEZldGNoSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAv
KiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE2RTI5QTUxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGlu
Z1Byb3h5LmggKi87IH07CisJCTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBv
cnRpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDE2RTI5QTUxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgx
QkJEMTJERjAwMEEzRjY0IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzEx
MEQwMEI3NjREOSAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgxQkJEMTJE
RjAwMEEzRjY1IC8qIEpTRE9NQmluZGluZ0ludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0
REEgLyogSlNET01CaW5kaW5nSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFODFCQkQxMkRGMDAwQTNGNzQg
LyogVHJhbnNmb3JtU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjRFQSAvKiBU
cmFuc2Zvcm1TdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzQ3LDE0ICsxMzQ3LDE2IEBACiAJCTQ2N0E2
OEQ3Mjc1RUE5OTEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0E2OEQ0Mjc1RUE5OEIwMDlCMzFD
NSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0NjdBNjhEODI3NUVBOTk1MDA5QjMxQzUgLyogU2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjdBNjhENTI3NUVBOThDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVyLmggKi87IH07CiAJCTQ2N0E2OEQ5Mjc1RUE5OTgwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJU
aHJlYWRQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY3QTY4RDYyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDY3QTY4
REEyNzVFQTk5QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0E2OEQyMjc1RUE5OEEwMDlCMzFD
NSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4MkQyMDAxRjc5NzgzMDAwQzg2M0RCIC8qIFN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjgyRDFGRjFGNzk3ODIzMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
NjgzNDRFMDFFRERGQUFBMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAv
KiBET01SZWN0TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQ2ODNERjQwMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFs
U2NvcGVCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NjgzREYzRTI3NjdERjk4MDA3RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFz
ZS5oICovOyB9OwogCQk0NjgzREY0MTI3NjdFOTFBMDA3RDAwQzggLyogU2hhZG93UmVhbG1HbG9i
YWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDY4M0RGM0IyNzY3REYyNjAwN0QwMEM4IC8qIFNoYWRvd1JlYWxtR2xvYmFsU2NvcGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0Njg4RUUzQzI2
REQyNjEwMDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5Nb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njg4RUUzQTI2REQyNjBDMDAyQUY1QzQgLyogQ3Jv
c3NPcmlnaW5Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNDY5NDNEQzkyNzYzRjgxNzAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2OTQzREM3Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDY5
ODVGMjMyN0E0QTZBRDAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktleS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5ODVGMjIyN0E0QTY4NjAwOTdBMzJC
IC8qIFNoYXJlZFdvcmtlcktleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ2OUNDQ0ZFMjY5RDAyMUMwMDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFu
bmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjlD
Q0NGQzI2OUQwMjAyMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2OUQ3N0I4MjcwMTYyNTEwMDE0
MkZBNiAvKiBOYXZpZ2F0aW9uUmVxdWVzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjlENzdCNjI3MDE2MjUwMDAxNDJGQTYgLyogTmF2aWdhdGlv
blJlcXVlc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTQ2QTc4QjM0Mjc5OUJENzEwMDExNTRGRSAvKiBXb3JrZXJPcHRpb25zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzFCMUQyNjI2RjE4QTRC
MDA4ODJEQTIgLyogV29ya2VyT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQ2QUFBQTNEMjVEMzYzMjAwMEJBRjQyRiAvKiBBdWRpb0Zp
bGVSZWFkZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZBQUFBM0EyNUQzNjMxNDAwQkFGNDJGIC8qIEF1ZGlvRmlsZVJlYWRlckNvY29hLmgg
Ki87IH07CiAJCTQ2QjYzRjZDMUM2RThEMTkwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9t
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI2M0Y2
QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QjY1MEREMjI5NjI2MjcwMEZE
OEFBNCAvKiBQYWdlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDZCNjUwREIyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEz
NzUsNiArMTM3Nyw3IEBACiAJCTQ2QzY5NkNDMUU3MjA1RkMwMDU5NzkzNyAvKiBDUFVNb25pdG9y
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5
NkNBMUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmNwcCAqLzsgfTsKIAkJNDZDODNFRkUx
QTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM4M0VGQzFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90
aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0NkNBOUM0NDFGOTdCQkU5MDA0Q0ZDM0EgLyogVmlzaWJpbGl0eVN0YXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkNBOUM0MTFGOTdCQkU3MDA0
Q0ZDM0EgLyogVmlzaWJpbGl0eVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDZDRjUwNEEyN0FCMUVBNDAwNzBEQkM4IC8qIFNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkNGNTA0ODI3QUIxRUExMDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NkQwMDA0MDI2QTBGRUIzMDBEMUJGMUUgLyogU3VibWl0RXZlbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RDAwMDNFMjZBMEZFNkYwMEQx
QkYxRSAvKiBTdWJtaXRFdmVudC5oICovOyB9OwogCQk0NkRBNEEwMjI3QUIwMzkzMDBFMzc1QTgg
LyogVHJhbnNmZXJyZWRNZXNzYWdlUG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZEQTRBMDAyN0FCMDM4RDAwRTM3NUE4IC8qIFRyYW5zZmVycmVk
TWVzc2FnZVBvcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0NkRCQjY1MDFBQjhDOTZGMDBEOUE4MTMgLyogUG93ZXJPYnNlcnZlck1hYy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZEQkI2NEUxQUI4
Qzk2RjAwRDlBODEzIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTI0NSw4ICs5MjQ4LDYgQEAKIAkJNDY3QTY4
Q0YyNzVFQTk4OTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDY3QTY4RDAyNzVFQTk4OTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRo
cmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJUaHJlYWQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdBNjhEMTI3NUVBOThBMDA5QjMxQzUgLyogU2hh
cmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtl
clNjcmlwdExvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2N0E2OEQy
Mjc1RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNoYXJlZFdvcmtlck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDY3
QTY4RDMyNzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2hhcmVkV29ya2VyTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2N0E2OEQ0Mjc1RUE5OEIwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2N0E2OEQ1Mjc1RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2N0E2OEQ2Mjc1RUE5OEMwMDlCMzFDNSAvKiBT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTI2Miw2ICs5MjYzLDgg
QEAKIAkJNDY4M0RGM0UyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29w
ZUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTaGFkb3dSZWFsbUds
b2JhbFNjb3BlQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njg4RUUzQTI2
REQyNjBDMDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5Nb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyb3Nz
T3JpZ2luTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjhCOEJERTI1Q0M4
NDkzMDBGNjc4MjIgLyogSlNCYXNlQXVkaW9Db250ZXh0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQmFzZUF1ZGlvQ29udGV4dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ2OTQzREM3Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5ODVGMjIyN0E0QTY4NjAwOTdBMzJC
IC8qIFNoYXJlZFdvcmtlcktleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
aGFyZWRXb3JrZXJLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5Q0NDRkEy
NjlEMDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQnJvYWRjYXN0Q2hhbm5lbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
OUNDQ0ZDMjY5RDAyMDIwMDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEJyb2FkY2FzdENoYW5uZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5
Q0NDRkQyNjlEMDIwMzAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEJyb2Fk
Y2FzdENoYW5uZWwuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTMwMiw2ICs5
MzA1LDggQEAKIAkJNDZDODNFRkMxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlb05vdGlmaWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2Q0E5QzQxMUY5N0JCRTcwMDRDRkMzQSAvKiBWaXNpYmlsaXR5
U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlzaWJpbGl0eVN0YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2Q0E5QzQyMUY5N0JCRTcwMDRDRkMz
QSAvKiBWaXNpYmlsaXR5U3RhdGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFZpc2liaWxp
dHlTdGF0ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2Q0Y1MDQ4MjdBQjFF
QTEwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0NkNGNTA0OTI3QUIxRUExMDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkQwMDAzQzI2QTBGRTZGMDBEMUJGMUUg
LyogU3VibWl0RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U3VibWl0RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkQwMDAzRTI2
QTBGRTZGMDBEMUJGMUUgLyogU3VibWl0RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3VibWl0RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZE
MDAwM0YyNkEwRkU3MDAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBTdWJtaXRFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
MTU2OCw2ICsyMTU3Myw4IEBACiAJCTQ2NDdDRTYxMjdBQUUxREEwMDlDQkQ0OCAvKiBjb250ZXh0
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0NkNGNTA0
OTI3QUIxRUExMDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwICovLAor
CQkJCTQ2Q0Y1MDQ4MjdBQjFFQTEwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ci5oICovLAogCQkJCTQ2N0E2OEQwMjc1RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJl
YWQuY3BwICovLAogCQkJCTQ2N0E2OEQ0Mjc1RUE5OEIwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJU
aHJlYWQuaCAqLywKIAkJCQk0NjdBNjhDRjI3NUVBOTg5MDA5QjMxQzUgLyogU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHkuY3BwICovLApAQCAtMjE1ODcsMTAgKzIxNTk0LDEwIEBACiAJCQkJNDY2OTRD
RTEyNzU5NDQ4QzAwRTMxNTBFIC8qIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmggKi8sCiAJCQkJ
NDY2OTRDRTAyNzU5NDQ4QzAwRTMxNTBFIC8qIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmlkbCAq
LywKIAkJCQk0NkVDNDQ0ODI3QUIzMzdGMDBGRkNEOTYgLyogU2hhcmVkV29ya2VySWRlbnRpZmll
ci5oICovLAotCQkJCTQ2N0E2OEQzMjc1RUE5OEIwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5h
Z2VyLmNwcCAqLywKLQkJCQk0NjdBNjhEMjI3NUVBOThBMDA5QjMxQzUgLyogU2hhcmVkV29ya2Vy
TWFuYWdlci5oICovLAorCQkJCTQ2OTg1RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3Jr
ZXJLZXkuaCAqLywKIAkJCQk0NjY4QTBCMzI3QUI2MDBCMDBDNzIwQkMgLyogU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJNDY2OEEwQjEyN0FCNjAwQjAwQzcyMEJDIC8q
IFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAqLywKKwkJCQk0Njk0M0RDNzI3NjNGODBF
MDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oICovLAogCQkJCTQ2NjhB
MEI0MjdBQjYwMEMwMEM3MjBCQyAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAgKi8sCiAJCQkJ
NDY2OEEwQjUyN0FCNjAwQzAwQzcyMEJDIC8qIFNoYXJlZFdvcmtlclByb3ZpZGVyLmggKi8sCiAJ
CQkJNDY3QTY4RDEyNzVFQTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5j
cHAgKi8sCkBAIC0zNzIwNCw5ICszNzIxMSwxMSBAQAogCQkJCTgzNERGQUQwMUY3REFFNUQwMEMy
NzI1QiAvKiBTaGFyZWRTdHJpbmdIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUVBMzA5
OUVCNzhDMDA1NkU1ODEgLyogU2hhcmVkVGltZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxREMw
NEZFMjdBODNDOTMwMDhDRjk2OCAvKiBTaGFyZWRWaWRlb0ZyYW1lSW5mby5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDZDRjUwNEEyN0FCMUVBNDAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkVDNDQ0QTI3QUIzMzg5MDBGRkNEOTYgLyog
U2hhcmVkV29ya2VySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDY3QTY4REEyNzVF
QTk5QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTQ2OTg1RjIzMjdBNEE2QUQwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQ2NjhBMEI2MjdBQjYwMUIwMEM3MjBCQyAvKiBTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk0Njk0M0RDOTI3NjNGODE3MDA0QjYxMEUg
LyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY2
OEEwQjcyN0FCNjAyMTAwQzcyMEJDIC8qIFNoYXJlZFdvcmtlclByb3ZpZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0NjdBNjhEODI3NUVBOTk1MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0
TG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjdBNjhENzI3NUVBOTkxMDA5QjMxQzUgLyog
U2hhcmVkV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKQEAgLTM4MDY3LDYgKzM4MDc2LDcg
QEAKIAkJCQlFMTI3MUEwQjBFRUVDNzdBMDBGNjEyMTMgLyogV29ya2VyTmF2aWdhdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNUNCMDUyNTFGQjUxRjNBMDAwODlCOTcgLyogV29ya2VyTmV0d29y
a0FnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTQzNDY1MTBGNTQ2QTgyMDBCMEYxQkEgLyog
V29ya2VyT2JqZWN0UHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2QTc4QjM0Mjc5OUJENzEw
MDExNTRGRSAvKiBXb3JrZXJPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0Q2QUFFNjI1
MjRFRTFDMDA0MjhCNEIgLyogV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTgzOUEwOTVEMjUyNEYzN0YwMEVFRjMyOCAvKiBXb3JrZXJPcldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0Y2QUVCRjI1MjdCQjBDMDAzNEJD
RDMgLyogV29ya2VyT3JXb3JrbGV0VGhyZWFkLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW4uaAppbmRleCBlMTU1ZWM2ZjI0YWVkMTg4MzBjMTgxZWQ3OWM0Y2I0
MDEwZDMxNmJhLi4yMDNiZjZiMDgyZGZmYjRjZDg0ZjlmY2ZkOGJmMGNiMzNhZTBmNTEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCkBAIC0xNTAsNyArMTUwLDYgQEAgcHVibGlj
OgogICAgIGJvb2wgY2FuQWNjZXNzTG9jYWxTdG9yYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0
b3BPcmlnaW4pIGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UodG9wT3JpZ2luKTsgfTsK
ICAgICBib29sIGNhbkFjY2Vzc1BsdWdpblN0b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRv
cE9yaWdpbikgY29uc3QgeyByZXR1cm4gY2FuQWNjZXNzU3RvcmFnZSgmdG9wT3JpZ2luKTsgfQog
ICAgIGJvb2wgY2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShjb25zdCBTZWN1cml0eU9yaWdpbiYg
dG9wT3JpZ2luKSBjb25zdCB7IHJldHVybiBjYW5BY2Nlc3NTdG9yYWdlKCZ0b3BPcmlnaW4pOyB9
Ci0gICAgYm9vbCBjYW5BY2Nlc3NTaGFyZWRXb3JrZXJzKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0
b3BPcmlnaW4pIGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UoJnRvcE9yaWdpbik7IH0K
ICAgICBib29sIGNhbkFjY2Vzc0Nvb2tpZXMoKSBjb25zdCB7IHJldHVybiAhaXNVbmlxdWUoKTsg
fQogICAgIGJvb2wgY2FuUmVxdWVzdEdlb2xvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gIWlzVW5p
cXVlKCk7IH0KICAgICBQb2xpY3kgY2FuU2hvd05vdGlmaWNhdGlvbnMoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCA1ZmVmNDJlZTA2ZWM1MTE1ZmQ4NmU5ODg5NGY2OWQ3
YzIxOWUzZTBjLi5mYTdkMjMwMmVjMzllOTk3NTYxOGRiYzkyNzY5YzVhMGYxOTkxMDRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCkBAIC0xMjcsNiArMTI3LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIE0oV2ViR0wpIFwKICAgICBNKFdlYlJUQykgXAogICAgIE0oV2ViUlRDU3Rh
dHMpIFwKKyAgICBNKFdvcmtlcikgXAogICAgIE0oWFIpIFwKICAgICBNKFdoZWVsRXZlbnRUZXN0
TW9uaXRvcikgXAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9T
aGFyZWRXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyLmNwcAppbmRleCBiNDg3NDdhMmMwOTk3M2MxOGJmOGRkYTlhYzg3NGIzMWFiODVmNzUxLi40
MjViZjBlNWYxMzM3ZmQwMDMxN2E0OWJkMGE4ZDY5OTg5YTQ2MGNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTUgKzI2LDE3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCiAKKyNpbmNsdWRl
ICJDbGllbnRPcmlnaW4uaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJM
b2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUNoYW5uZWwuaCIKICNpbmNsdWRlICJNZXNzYWdl
UG9ydC5oIgorI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJTZWN1cml0eU9y
aWdpbi5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlck1hbmFnZXIuaCIKICNpbmNsdWRlICJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyUHJvdmlk
ZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIgogI2luY2x1ZGUgIldv
cmtlck9wdGlvbnMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0ZhY3Rv
cnkuaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtNDMsMTkgKzQ1LDMx
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFNo
YXJlZFdvcmtlcik7CiAKKyNkZWZpbmUgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRyhmbXQsIC4u
LikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBbaWRlbnRpZmllcj0le3B1YmxpY31z
XSBTaGFyZWRXb3JrZXI6OiIgZm10LCB0aGlzLCBtX2lkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBTSEFSRURfV09SS0VSX1JFTEVBU0Vf
TE9HX0VSUk9SKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICIlcCAt
IFtpZGVudGlmaWVyPSV7cHVibGljfXNdIFNoYXJlZFdvcmtlcjo6IiBmbXQsIHRoaXMsIG1faWRl
bnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksICMjX19WQV9BUkdTX18pCisKK3N0YXRp
YyBIYXNoTWFwPFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFNoYXJlZFdvcmtlcio+JiBh
bGxTaGFyZWRXb3JrZXJzKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIs
IFNoYXJlZFdvcmtlcio+PiBhbGxTaGFyZWRXb3JrZXJzOworICAgIHJldHVybiBhbGxTaGFyZWRX
b3JrZXJzOworfQorCitTaGFyZWRXb3JrZXIqIFNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIo
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBh
bGxTaGFyZWRXb3JrZXJzKCkuZ2V0KGlkZW50aWZpZXIpOworfQorCiBzdGF0aWMgaW5saW5lIFNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24qIG1haW5UaHJlYWRDb25uZWN0aW9uKCkKIHsKICAg
ICByZXR1cm4gU2hhcmVkV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNoYXJlZFdvcmtlckNv
bm5lY3Rpb24oKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPFNoYXJlZFdvcmtlcj4+IFNoYXJlZFdv
cmtlcjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGlt
ZUZsYWdzLCBTdHJpbmcmJiBzY3JpcHRVUkxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8c3RkOjp2YXJp
YW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYgbWF5YmVPcHRpb25zKQorRXhjZXB0aW9uT3I8
UmVmPFNoYXJlZFdvcmtlcj4+IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVu
dCwgU3RyaW5nJiYgc2NyaXB0VVJMU3RyaW5nLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxT
dHJpbmcsIFdvcmtlck9wdGlvbnM+PiYmIG1heWJlT3B0aW9ucykKIHsKICAgICBpZiAoIW1haW5U
aHJlYWRDb25uZWN0aW9uKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0
ZWRFcnJvciwgIlNoYXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkIiB9OwogCi0gICAgaWYg
KCFkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmNhbkFjY2Vzc1NoYXJlZFdvcmtlcnMoZG9jdW1l
bnQudG9wT3JpZ2luKCkpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJv
ciwgIlRoaXMgaWZyYW1lIGRvZXNuJ3QgaGF2ZSBzdG9yYWdlIGFjY2VzcyJfcyB9OwotCiAgICAg
YXV0byB1cmwgPSBkb2N1bWVudC5jb21wbGV0ZVVSTChzY3JpcHRVUkxTdHJpbmcpOwogICAgIGlm
ICghdXJsLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9y
LCAiSW52YWxpZCBzY3JpcHQgVVJMIl9zIH07CkBAIC03NywyNiArOTEsMzcgQEAgRXhjZXB0aW9u
T3I8UmVmPFNoYXJlZFdvcmtlcj4+IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1
bWVudCwgSlNDOjpSdW4KICAgICBhdXRvIGNoYW5uZWwgPSBNZXNzYWdlQ2hhbm5lbDo6Y3JlYXRl
KGRvY3VtZW50KTsKICAgICBhdXRvIHRyYW5zZmVycmVkUG9ydCA9IGNoYW5uZWwtPnBvcnQyKCku
ZGlzZW50YW5nbGUoKTsKIAotICAgIGF1dG8gc2hhcmVkV29ya2VyID0gYWRvcHRSZWYoKm5ldyBT
aGFyZWRXb3JrZXIoZG9jdW1lbnQsIGNoYW5uZWwtPnBvcnQxKCksIHJ1bnRpbWVGbGFncykpOwor
ICAgIENsaWVudE9yaWdpbiBjbGllbnRPcmlnaW4geyBkb2N1bWVudC50b3BEb2N1bWVudCgpLnNl
Y3VyaXR5T3JpZ2luKCkuZGF0YSgpLCBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSB9
OworICAgIFNoYXJlZFdvcmtlcktleSBrZXkgeyBjbGllbnRPcmlnaW4sIHVybCwgb3B0aW9ucy5u
YW1lIH07CisKKyAgICBhdXRvIHNoYXJlZFdvcmtlciA9IGFkb3B0UmVmKCpuZXcgU2hhcmVkV29y
a2VyKGRvY3VtZW50LCBrZXksIGNoYW5uZWwtPnBvcnQxKCkpKTsKICAgICBzaGFyZWRXb3JrZXIt
PnN1c3BlbmRJZk5lZWRlZCgpOwogCi0gICAgbWFpblRocmVhZENvbm5lY3Rpb24oKS0+cmVxdWVz
dFNoYXJlZFdvcmtlcih1cmwsIHNoYXJlZFdvcmtlci5nZXQoKSwgV1RGTW92ZSh0cmFuc2ZlcnJl
ZFBvcnQpLCBXVEZNb3ZlKG9wdGlvbnMpKTsKKyAgICBtYWluVGhyZWFkQ29ubmVjdGlvbigpLT5y
ZXF1ZXN0U2hhcmVkV29ya2VyKGtleSwgc2hhcmVkV29ya2VyLT5pZGVudGlmaWVyKCksIFdURk1v
dmUodHJhbnNmZXJyZWRQb3J0KSwgb3B0aW9ucyk7CiAgICAgcmV0dXJuIHNoYXJlZFdvcmtlcjsK
IH0KIAotU2hhcmVkV29ya2VyOjpTaGFyZWRXb3JrZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8
TWVzc2FnZVBvcnQ+JiYgcG9ydCwgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKQorU2hh
cmVkV29ya2VyOjpTaGFyZWRXb3JrZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTaGFyZWRX
b3JrZXJLZXkmIGtleSwgUmVmPE1lc3NhZ2VQb3J0PiYmIHBvcnQpCiAgICAgOiBBY3RpdmVET01P
YmplY3QoJmRvY3VtZW50KQorICAgICwgbV9rZXkoa2V5KQorICAgICwgbV9pZGVudGlmaWVyKFNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI6OmdlbmVyYXRlKCkpCiAgICAgLCBtX3BvcnQoV1RG
TW92ZShwb3J0KSkKICAgICAsIG1faWRlbnRpZmllckZvckluc3BlY3RvcigiU2hhcmVkV29ya2Vy
OiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpKQot
ICAgICwgbV9ydW50aW1lRmxhZ3MocnVudGltZUZsYWdzKQotICAgICwgbV9jcmVhdGlvblRpbWUo
TW9ub3RvbmljVGltZTo6bm93KCkpCi0gICAgLCBtX3Byb3h5KFNoYXJlZFdvcmtlclRocmVhZFBy
b3h5OjpjcmVhdGUoKnRoaXMpKQogeworICAgIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coIlNo
YXJlZFdvcmtlcjoiKTsKKyAgICBhbGxTaGFyZWRXb3JrZXJzKCkuYWRkKG1faWRlbnRpZmllciwg
dGhpcyk7CisKKyAgICAvLyBJZiB0aGUgc2hhcmVkIHdvcmtlciBVUkwgaXMgYSBibG9iIFVSTCwg
bWFrZSBzdXJlIHRvIGtlZXAgaXQgYWxpdmUgdW50aWwgdGhlIHdvcmtlciBoYXMgZmluaXNoZWQg
bG9hZGluZy4KKyAgICBpZiAobV9rZXkudXJsLnByb3RvY29sSXNCbG9iKCkpCisgICAgICAgIG1f
YmxvYlVSTEV4dGVuc2lvbiA9IG1fa2V5LnVybDsKIH0KIAogU2hhcmVkV29ya2VyOjp+U2hhcmVk
V29ya2VyKCkKIHsKLSAgICBtX3Byb3h5Lndvcmtlck9iamVjdERlc3Ryb3llZCgpOworICAgIEFT
U0VSVChhbGxTaGFyZWRXb3JrZXJzKCkuZ2V0KG1faWRlbnRpZmllcikgPT0gdGhpcyk7CisgICAg
U0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRygiflNoYXJlZFdvcmtlcjoiKTsKKyAgICBhbGxTaGFy
ZWRXb3JrZXJzKCkucmVtb3ZlKG1faWRlbnRpZmllcik7CisgICAgQVNTRVJUKCFtX2lzQWN0aXZl
KTsKIH0KIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogU2hhcmVkV29ya2VyOjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QKQEAgLTExNCwxOSArMTM5LDI5IEBAIEV2ZW50VGFyZ2V0SW50
ZXJmYWNlIFNoYXJlZFdvcmtlcjo6ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdAogICAgIHJl
dHVybiBTaGFyZWRXb3JrZXJFdmVudFRhcmdldEludGVyZmFjZVR5cGU7CiB9CiAKLXZvaWQgU2hh
cmVkV29ya2VyOjpzdG9wKCkKK3ZvaWQgU2hhcmVkV29ya2VyOjpkaWRGaW5pc2hMb2FkaW5nKGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIHRlcm1pbmF0ZSgpOworICAgIFNIQVJF
RF9XT1JLRVJfUkVMRUFTRV9MT0coImZpbmlzaExvYWRpbmc6IHN1Y2Nlc3M9JWQiLCBlcnJvci5p
c051bGwoKSk7CisgICAgaWYgKCFlcnJvci5pc051bGwoKSkgeworICAgICAgICBxdWV1ZVRhc2tU
b0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2
ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOworICAgICAgICBtX2lzQWN0aXZlID0gZmFsc2U7Cisg
ICAgfQorICAgIG1fYmxvYlVSTEV4dGVuc2lvbi5jbGVhcigpOwogfQogCiBib29sIFNoYXJlZFdv
cmtlcjo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
cHJveHkuaGFzUGVuZGluZ0FjdGl2aXR5KCkgfHwgbV9pc0xvYWRpbmc7CisgICAgcmV0dXJuIG1f
aXNBY3RpdmU7CiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyOjp0ZXJtaW5hdGUoKQordm9pZCBTaGFy
ZWRXb3JrZXI6OnN0b3AoKQogewotICAgIG1fcHJveHkudGVybWluYXRlV29ya2VyR2xvYmFsU2Nv
cGUoKTsKKyAgICBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HKCJzdG9wOiIpOworICAgIG1faXNB
Y3RpdmUgPSBmYWxzZTsKKyAgICBtYWluVGhyZWFkQ29ubmVjdGlvbigpLT5zaGFyZWRXb3JrZXJP
YmplY3RJc0dvaW5nQXdheShtX2tleSwgbV9pZGVudGlmaWVyKTsKIH0KIAorI3VuZGVmIFNIQVJF
RF9XT1JLRVJfUkVMRUFTRV9MT0cKKyN1bmRlZiBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HX0VS
Uk9SCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyLmgKaW5kZXggZTU1YjFjZjU1MTNkMTA1ZjczZjFjZDYyOTMxNWUw
NjU3ZTAxOWJjZS4uY2RkMjY5ZjM2MTkxNjlkNGFiMDVmNjBkMWE3NGI4OGMwMjNmZDIzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsMzkgKzI3
LDM3IEBACiAKICNpbmNsdWRlICJBYnN0cmFjdFdvcmtlci5oIgogI2luY2x1ZGUgIkFjdGl2ZURP
TU9iamVjdC5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1bnRpbWVGbGFncy5oPgorI2lu
Y2x1ZGUgIkJsb2JVUkwuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJLZXkuaCIKKyNpbmNsdWRl
ICJTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL01vbm90b25p
Y1RpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZXNzYWdlUG9ydDsKLWNs
YXNzIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OworY2xhc3MgUmVzb3VyY2VFcnJvcjsKIAogc3Ry
dWN0IFdvcmtlck9wdGlvbnM7CiAKIGNsYXNzIFNoYXJlZFdvcmtlciBmaW5hbCA6IHB1YmxpYyBB
YnN0cmFjdFdvcmtlciwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRChTaGFyZWRXb3JrZXIpOwogcHVibGljOgotICAgIHN0YXRpYyBFeGNlcHRpb25P
cjxSZWY8U2hhcmVkV29ya2VyPj4gY3JlYXRlKERvY3VtZW50JiwgSlNDOjpSdW50aW1lRmxhZ3Ms
IFN0cmluZyYmIHNjcmlwdFVSTCwgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBX
b3JrZXJPcHRpb25zPj4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxTaGFyZWRXb3Jr
ZXI+PiBjcmVhdGUoRG9jdW1lbnQmLCBTdHJpbmcmJiBzY3JpcHRVUkwsIHN0ZDo6b3B0aW9uYWw8
c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYpOwogICAgIH5TaGFyZWRXb3Jr
ZXIoKTsKIAorICAgIHN0YXRpYyBTaGFyZWRXb3JrZXIqIGZyb21JZGVudGlmaWVyKFNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIpOworICAgIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIg
aWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIE1lc3NhZ2VQ
b3J0JiBwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9wb3J0LmdldCgpOyB9Ci0gICAgSlNDOjpSdW50
aW1lRmxhZ3MgcnVudGltZUZsYWdzKCkgeyByZXR1cm4gbV9ydW50aW1lRmxhZ3M7IH0KIAogICAg
IGNvbnN0IFN0cmluZyYgaWRlbnRpZmllckZvckluc3BlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1f
aWRlbnRpZmllckZvckluc3BlY3RvcjsgfQotICAgIE1vbm90b25pY1RpbWUgY3JlYXRpb25UaW1l
KCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdGlvblRpbWU7IH0KIAotICAgIFNoYXJlZFdvcmtlclRo
cmVhZFByb3h5JiBwcm94eSgpIHsgcmV0dXJuIG1fcHJveHk7IH0KLQotICAgIHZvaWQgc2V0SXNM
b2FkaW5nKGJvb2wgaXNMb2FkaW5nKSB7IG1faXNMb2FkaW5nID0gaXNMb2FkaW5nOyB9CisgICAg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAgIC8vIEV2
ZW50VGFyZ2V0LgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBTaGFyZWRXb3JrZXIoRG9jdW1l
bnQmLCBSZWY8TWVzc2FnZVBvcnQ+JiYsIEpTQzo6UnVudGltZUZsYWdzKTsKLQotICAgIHZvaWQg
dGVybWluYXRlKCk7CisgICAgU2hhcmVkV29ya2VyKERvY3VtZW50JiwgY29uc3QgU2hhcmVkV29y
a2VyS2V5JiwgUmVmPE1lc3NhZ2VQb3J0PiYmKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0LgogICAg
IEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWw7
CkBAIC03MCwxMiArNjgsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5n
QWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogCisgICAgU2hhcmVkV29ya2VyS2V5IG1fa2V5Owor
ICAgIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFJlZjxN
ZXNzYWdlUG9ydD4gbV9wb3J0OwogICAgIFN0cmluZyBtX2lkZW50aWZpZXJGb3JJbnNwZWN0b3I7
Ci0gICAgSlNDOjpSdW50aW1lRmxhZ3MgbV9ydW50aW1lRmxhZ3M7Ci0gICAgTW9ub3RvbmljVGlt
ZSBtX2NyZWF0aW9uVGltZTsKLSAgICBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSYgbV9wcm94eTsg
Ly8gVGhlIHByb3h5IG91dGxpdmVzIHRoZSB3b3JrZXIgdG8gcGVyZm9ybSB0aHJlYWQgc2h1dGRv
d24uCi0gICAgYm9vbCBtX2lzTG9hZGluZyB7IGZhbHNlIH07CisgICAgQmxvYlVSTEhhbmRsZSBt
X2Jsb2JVUkxFeHRlbnNpb247CisgICAgYm9vbCBtX2lzQWN0aXZlIHsgdHJ1ZSB9OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zaGFyZWQvU2hhcmVkV29ya2VyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlci5pZGwKaW5kZXggYjYyODc0ZDBkZTQ2NzBkNDhhMmQzMTRjMTMxZTYyNGMy
MDU2MmUzZC4uMmMzYTA4MzFlYjI3NDFiMjYzNjQ3ZjE3NGU4YzU4N2I3YTQxZWI3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaWRsCkBAIC0yOCw3
ICsyOCw3IEBACiAgICAgRXhwb3NlZD1XaW5kb3cKIF0KIGludGVyZmFjZSBTaGFyZWRXb3JrZXIg
OiBFdmVudFRhcmdldCB7Ci0gIFtDYWxsV2l0aD1DdXJyZW50RG9jdW1lbnQmUnVudGltZUZsYWdz
XSBjb25zdHJ1Y3RvcihVU1ZTdHJpbmcgc2NyaXB0VVJMLCBvcHRpb25hbCAoRE9NU3RyaW5nIG9y
IFdvcmtlck9wdGlvbnMpIG9wdGlvbnMpOworICBbQ2FsbFdpdGg9Q3VycmVudERvY3VtZW50XSBj
b25zdHJ1Y3RvcihVU1ZTdHJpbmcgc2NyaXB0VVJMLCBvcHRpb25hbCAoRE9NU3RyaW5nIG9yIFdv
cmtlck9wdGlvbnMpIG9wdGlvbnMpOwogCiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZXNzYWdlUG9y
dCBwb3J0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1No
YXJlZFdvcmtlcktleS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyS2V5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYWYyYmFhMGY3YjljYzI0OTYzNTBhZDFiZDE0OTRkNmI5ZGIw
YTQ2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1No
YXJlZFdvcmtlcktleS5oCkBAIC0wLDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBTaGFyZWRXb3JrZXJLZXkgeworICAgIENs
aWVudE9yaWdpbiBvcmlnaW47CisgICAgVVJMIHVybDsKKyAgICBTdHJpbmcgbmFtZTsKKworICAg
IHVuc2lnbmVkIGhhc2goKSBjb25zdDsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgc3RkOjpvcHRpb25hbDxTaGFyZWRXb3JrZXJLZXk+IGRlY29kZShEZWNvZGVyJik7Cit9
OworCitpbmxpbmUgdW5zaWduZWQgU2hhcmVkV29ya2VyS2V5OjpoYXNoKCkgY29uc3QKK3sKKyAg
ICBIYXNoZXIgaGFzaGVyOworICAgIGFkZChoYXNoZXIsIG9yaWdpbi5oYXNoKCkpOworICAgIGFk
ZChoYXNoZXIsIHVybCk7CisgICAgYWRkKGhhc2hlciwgbmFtZSk7CisgICAgcmV0dXJuIGhhc2hl
ci5oYXNoKCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFNoYXJlZFdvcmtl
cktleTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBv
cmlnaW4gPDwgdXJsIDw8IG5hbWU7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6
Om9wdGlvbmFsPFNoYXJlZFdvcmtlcktleT4gU2hhcmVkV29ya2VyS2V5OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPENsaWVudE9yaWdpbj4gb3JpZ2luOwor
ICAgIGRlY29kZXIgPj4gb3JpZ2luOworICAgIGlmICghb3JpZ2luKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxVUkw+IHVybDsKKyAgICBkZWNvZGVy
ID4+IHVybDsKKyAgICBpZiAoIXVybCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBuYW1lOworICAgIGRlY29kZXIgPj4gbmFtZTsKKyAg
ICBpZiAoIW5hbWUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4g
eyB7IFdURk1vdmUoKm9yaWdpbiksIFdURk1vdmUoKnVybCksIFdURk1vdmUoKm5hbWUpIH0gfTsK
K30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRXb3JrZXJLZXkmIGEsIGNv
bnN0IFNoYXJlZFdvcmtlcktleSYgYikKK3sKKyAgICByZXR1cm4gYS5vcmlnaW4gPT0gYi5vcmln
aW4gJiYgYS51cmwgPT0gYi51cmwgJiYgYS5uYW1lID09IGIubmFtZTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVm
YXVsdEhhc2g8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5PiB7CisgICAgc3RhdGljIHVuc2lnbmVk
IGhhc2goY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBrZXkpCisgICAgeworICAgICAg
ICByZXR1cm4ga2V5Lmhhc2goKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25z
dCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIGEsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtl
cktleSYgYikKKyAgICB7CisgICAgICAgIHJldHVybiBhID09IGI7CisgICAgfQorCisgICAgc3Rh
dGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307
CisKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5
PiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleT4geworICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7CisgICAgc3RhdGlj
IHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgc2xv
dCkgeyBuZXcgKE5vdE51bGwsICZzbG90LnVybCkgVVJMKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZh
bHVlKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OlNo
YXJlZFdvcmtlcktleSYgc2xvdCkgeyByZXR1cm4gc2xvdC51cmwuaXNIYXNoVGFibGVEZWxldGVk
VmFsdWUoKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBhNzQxMDg3N2RiMzIxZjc5NTJmMzEyYzg2ZGMzZmU0YTBiNTVk
MDc5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiU2hhcmVkV29ya2VyTWFuYWdlci5oIgotCi0jaW5jbHVkZSAiQ29udGVudFNl
Y3VyaXR5UG9saWN5LmgiCi0jaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkxvYWRl
clN0cmF0ZWd5LmgiCi0jaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCi0jaW5jbHVkZSAiUGxhdGZv
cm1TdHJhdGVnaWVzLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCi0jaW5jbHVkZSAiU2hh
cmVkV29ya2VyR2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKLSNpbmNsdWRlICJTaGFyZWRX
b3JrZXJUaHJlYWRQcm94eS5oIgotI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKLSNpbmNsdWRl
ICJXb3JrZXJTY3JpcHRMb2FkZXIuaCIKLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
LSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVNoYXJl
ZFdvcmtlck1hbmFnZXImIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNpbmdsZXRvbigpCi17Ci0gICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYXJlZFdvcmtlck1hbmFnZXI+IGluc3RhbmNlOwotICAg
IHJldHVybiBpbnN0YW5jZS5nZXQoKTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpj
b25uZWN0KGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRXb3JrZXImIHdvcmtlciwgVHJhbnNmZXJyZWRN
ZXNzYWdlUG9ydCYmIG1lc3NhZ2VQb3J0LCBXb3JrZXJPcHRpb25zJiYgb3B0aW9ucykKLXsKLSAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIC8vIEZJWE1FOiBIYW5kbGUgd29ya2Vy
cyBmcm9tIG90aGVyIHByb2Nlc3Nlcywgd2hpY2ggd2lsbCBwcm9iYWJseSByZXF1aXJlIG1vdmlu
ZyBjb25uZWN0IHRvIHRoZSBGcmFtZUxvYWRlckNsaWVudCBvciBzb21ldGhpbmcuCi0gICAgLy8g
TWF5YmUgc29tZXRoaW5nIG1vcmUgbGlrZSB3aGF0IFNlcnZpY2VXb3JrZXJzIGRvZXMuCi0KLSAg
ICAvLyBGSVhNRTogQ2hlY2sgaWYgd2UgYWxyZWFkeSBtYWRlIGEgdGhyZWFkLgotICAgIC8vIEZJ
WE1FOiBDaGVjayBpZiB0aGVyZSdzIGFscmVhZHkgYSBzaGFyZWQgd29ya2VyIGFuZCB1c2UgdGhh
dCBpZiB0aGVyZSBpcy4KLQotICAgIGF1dG8gbG9hZGVyID0gbWFrZVVuaXF1ZVJlZjxTaGFyZWRX
b3JrZXJTY3JpcHRMb2FkZXI+KHVybCwgd29ya2VyLCBXVEZNb3ZlKG1lc3NhZ2VQb3J0KSwgV1RG
TW92ZShvcHRpb25zKSk7Ci0gICAgYXV0byBpZGVudGlmaWVyID0gbG9hZGVyLT5pZGVudGlmaWVy
KCk7Ci0gICAgbV9sb2FkZXJzLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKGxvYWRlcikpOwotfQot
Ci12b2lkIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNjcmlwdExvYWRGYWlsZWQoU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyJiBsb2FkZXIpCi17Ci0gICAgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tU
b0Rpc3BhdGNoRXZlbnQobG9hZGVyLndvcmtlcigpLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRp
b24sIEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2ZW50OjpDYW5CdWJi
bGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKLSAgICBtX2xvYWRlcnMucmVtb3Zl
KGxvYWRlci5pZGVudGlmaWVyKCkpOwotfQotCi12b2lkIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNj
cmlwdExvYWRlZFN1Y2Nlc3NmdWxseShTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXImIGxvYWRlciwg
Y29uc3QgU2NyaXB0QnVmZmVyJiBzY3JpcHRCdWZmZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFNoYXJlZFdvcmtlciYgc2hhcmVkV29ya2VyLCBUcmFu
c2ZlcnJlZE1lc3NhZ2VQb3J0JiYgdHJhbnNmZXJyZWRQb3J0KQotewotICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7Ci0gICAgYXV0byYgd29ya2VyID0gbG9hZGVyLndvcmtlcigpOwotICAg
IGF1dG8mIG9wdGlvbnMgPSBsb2FkZXIub3B0aW9ucygpOwotCi0gICAgYXV0byYgcHJveHkgPSBz
aGFyZWRXb3JrZXIucHJveHkoKTsKLQotICAgIHByb3h5LnN0YXJ0V29ya2VyR2xvYmFsU2NvcGUo
Ci0gICAgICAgIGxvYWRlci51cmwoKSwKLSAgICAgICAgb3B0aW9ucy5uYW1lLAotICAgICAgICBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LnVzZXJBZ2VudChsb2FkZXIudXJsKCkpLAotICAgICAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+aXNPbkxpbmUoKSwKLSAgICAg
ICAgc2NyaXB0QnVmZmVyLAotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LmNvbnRlbnRT
ZWN1cml0eVBvbGljeSgpLT5yZXNwb25zZUhlYWRlcnMoKSwKLSAgICAgICAgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKSwK
LSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5
KCksCi0gICAgICAgIHdvcmtlci5jcmVhdGlvblRpbWUoKSwKLSAgICAgICAgUmVmZXJyZXJQb2xp
Y3k6OkVtcHR5U3RyaW5nLAotICAgICAgICBvcHRpb25zLnR5cGUsCi0gICAgICAgIG9wdGlvbnMu
Y3JlZGVudGlhbHMsCi0gICAgICAgIHdvcmtlci5ydW50aW1lRmxhZ3MoKQotICAgICk7Ci0gICAg
aWYgKCFwcm94eS50aHJlYWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUkVMRUFTRV9BU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkpOwotICAgIGF1dG8gc291cmNlT3JpZ2luID0gZG93bmNhc3Q8RG9jdW1lbnQ+KHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpLnNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmcoKTsKLQotICAg
IHByb3h5LnRocmVhZCgpLT5ydW5Mb29wKCkucG9zdFRhc2soW3RyYW5zZmVycmVkUG9ydCA9IFdU
Rk1vdmUodHJhbnNmZXJyZWRQb3J0KSwgc291cmNlT3JpZ2luID0gV1RGTW92ZShzb3VyY2VPcmln
aW4pLmlzb2xhdGVkQ29weSgpXSAoYXV0byYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgbXV0YWJs
ZSB7Ci0gICAgICAgIGRvd25jYXN0PFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVj
dXRpb25Db250ZXh0KS5wb3N0Q29ubmVjdEV2ZW50KFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwg
c291cmNlT3JpZ2luKTsKLSAgICB9KTsKLQotICAgIG1fbG9hZGVycy5yZW1vdmUobG9hZGVyLmlk
ZW50aWZpZXIoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMjUyMTgxNmU2NWM3NzY3MWQ5MzM3YTgxNzE1NWVmOTk3ODU0
ZDg0OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNs
dWRlICJNZXNzYWdlUG9ydElkZW50aWZpZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkV29ya2VyOwotY2xhc3Mg
U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOwotY2xhc3MgU2NyaXB0QnVmZmVyOwotc3RydWN0IFdv
cmtlck9wdGlvbnM7Ci11c2luZyBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0ID0gc3RkOjpwYWlyPFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlm
aWVyPjsKLQotdXNpbmcgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmllciA9IE9iamVj
dElkZW50aWZpZXI8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPjsKLQotY2xhc3MgU2hhcmVkV29y
a2VyTWFuYWdlciB7Ci1wdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNoYXJlZFdv
cmtlck1hbmFnZXImIHNpbmdsZXRvbigpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29ubmVj
dChjb25zdCBVUkwmLCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdv
cmtlck9wdGlvbnMmJik7Ci0KLSAgICB2b2lkIHNjcmlwdExvYWRGYWlsZWQoU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyJik7Ci0gICAgdm9pZCBzY3JpcHRMb2FkZWRTdWNjZXNzZnVsbHkoU2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIFNoYXJlZFdvcmtlciYsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJik7Ci0KLXBy
aXZhdGU6Ci0gICAgSGFzaE1hcDxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXJJZGVudGlmaWVyLCBV
bmlxdWVSZWY8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPj4gbV9sb2FkZXJzOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcAppbmRleCBkZGEz
ODRkMjI5MTIwMjgzYzEyZDQ3YTU3NTY4OTJmOGE4MDJiNThiLi4xY2RlMGJhMzU5NTY5MWZhMGNk
ZmQzNzQzMWQzZjRiOTc0OGQ2YTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcApAQCAt
MjYsMTAgKzI2LDY2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbi5oIgogCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisj
aW5jbHVkZSAiRXJyb3JFdmVudC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJT
Y3JpcHRCdWZmZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKKyNpbmNsdWRlICJTaGFy
ZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJGZXRjaFJlc3VsdC5oIgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhm
bXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgQ09OTkVD
VElPTl9SRUxFQVNFX0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoU2hhcmVk
V29ya2VyLCAiJXAgLSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywg
IyNfX1ZBX0FSR1NfXykKKworc3RhdGljIHVpbnQ2NF90IGxvYWRlcklkZW50aWZpZXJTZWVkID0g
MDsKKwogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6U2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbigpID0gZGVmYXVsdDsKIAogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6flNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CiAKK3ZvaWQgU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbjo6ZmV0Y2hTY3JpcHRJbkNsaWVudChVUkwmJiB1cmwsIFdlYkNv
cmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciwgV29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byogd29ya2VyT2JqZWN0ID0gU2hh
cmVkV29ya2VyOjpmcm9tSWRlbnRpZmllcihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsK
KyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJmZXRjaFNjcmlwdEluQ2xpZW50OiBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMsIHdvcmtlcj0lcCIsIHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB3b3JrZXJPYmplY3Qp
OworICAgIGlmICghd29ya2VyT2JqZWN0KQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIod29ya2VyRmV0Y2hFcnJvcihSZXNvdXJjZUVycm9yIHsgUmVzb3VyY2VFcnJvcjo6VHlwZTo6
Q2FuY2VsbGF0aW9uIH0pKTsKKworICAgIGF1dG8gbG9hZGVySWRlbnRpZmllciA9ICsrbG9hZGVy
SWRlbnRpZmllclNlZWQ7CisgICAgYXV0byBsb2FkZXIgPSBtYWtlVW5pcXVlUmVmPFNoYXJlZFdv
cmtlclNjcmlwdExvYWRlcj4oV1RGTW92ZSh1cmwpLCAqd29ya2VyT2JqZWN0LCBXVEZNb3ZlKHdv
cmtlck9wdGlvbnMpKTsKKyAgICBhdXRvIGxvYWRlclB0ciA9IGxvYWRlci5wdHIoKTsKKyAgICBt
X2xvYWRlcnMuYWRkKGxvYWRlcklkZW50aWZpZXIsIFdURk1vdmUobG9hZGVyKSk7CisKKyAgICBs
b2FkZXJQdHItPmxvYWQoW3RoaXMsIGxvYWRlcklkZW50aWZpZXIsIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IFdvcmtlckZldGNoUmVzdWx0JiBm
ZXRjaFJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coImZl
dGNoU2NyaXB0SW5DbGllbnQ6IGZpbmlzaGVkIHNjcmlwdCBsb2FkLCBzdWNjZXNzPSVkIiwgZmV0
Y2hSZXN1bHQuZXJyb3IuaXNOdWxsKCkpOworICAgICAgICBhdXRvIGxvYWRlciA9IG1fbG9hZGVy
cy50YWtlKGxvYWRlcklkZW50aWZpZXIpOworICAgICAgICBBU1NFUlQobG9hZGVyKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoZmV0Y2hSZXN1bHQpOworICAgIH0pOworfQorCit2b2lkIFNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Om5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENvbXBs
ZXRpb24oV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8qIHdvcmtlck9iamVjdCA9IFNoYXJlZFdvcmtl
cjo6ZnJvbUlkZW50aWZpZXIoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgQ09O
TkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUigibm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxl
dGlvbjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zLCB3b3JrZXI9JXAs
IHN1Y2Nlc3M9JWQiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSwgd29ya2VyT2JqZWN0LCBlcnJvci5pc051bGwoKSk7CisgICAgaWYgKHdvcmtl
ck9iamVjdCkKKyAgICAgICAgd29ya2VyT2JqZWN0LT5kaWRGaW5pc2hMb2FkaW5nKGVycm9yKTsK
K30KKwordm9pZCBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpwb3N0RXhjZXB0aW9uVG9X
b3JrZXJPYmplY3QoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgYXV0byogd29ya2VyT2JqZWN0ID0gU2hhcmVkV29ya2Vy
Ojpmcm9tSWRlbnRpZmllcihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBDT05O
RUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKCJwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Q6IHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cywgd29ya2VyPSVwIiwgc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHdvcmtlck9i
amVjdCk7CisgICAgaWYgKHdvcmtlck9iamVjdCkKKyAgICAgICAgQWN0aXZlRE9NT2JqZWN0Ojpx
dWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKndvcmtlck9iamVjdCwgVGFza1NvdXJjZTo6RE9NTWFu
aXB1bGF0aW9uLCBFcnJvckV2ZW50OjpjcmVhdGUoZXJyb3JNZXNzYWdlLCBzb3VyY2VVUkwsIGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgeyB9KSk7Cit9CisKKyN1bmRlZiBDT05ORUNUSU9OX1JF
TEVBU0VfTE9HCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUgorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKaW5kZXggNGVkNWExYzY1YjU4
ZDA5OGRjMGY2ODA4YjYwZWUwYTAzODdkN2JkNi4uNjdhMjAyMDhmZDI3ZjA5MTJlZmY2MWIzZWZm
ZjI0YmQzZjgwZWE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApAQCAtMjUsMjIgKzI1LDM4
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIlRyYW5zZmVycmVkTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRXb3JrZXI7
CitjbGFzcyBNZXNzYWdlUG9ydDsKK2NsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjsKKwor
c3RydWN0IFNoYXJlZFdvcmtlcktleTsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKIHN0cnVj
dCBXb3JrZXJPcHRpb25zOwogCiBjbGFzcyBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIDog
cHVibGljIFJlZkNvdW50ZWQ8U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbj4gewogcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b24oKTsKIAotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0IFVSTCYs
IFNoYXJlZFdvcmtlciYsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgV29ya2VyT3B0aW9ucyYm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoY29uc3QgU2hhcmVk
V29ya2VyS2V5JiwgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgVHJhbnNmZXJyZWRNZXNz
YWdlUG9ydCYmLCBjb25zdCBXb3JrZXJPcHRpb25zJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
aGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShjb25zdCBTaGFyZWRXb3JrZXJLZXkmLCBTaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKSA9IDA7CiAKIHByb3RlY3RlZDoKKyAgICAvLyBJUEMg
bWVzc2FnZXMuCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmZXRjaFNjcmlwdEluQ2xpZW50KFVS
TCYmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXb3JrZXJPcHRpb25z
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKT4mJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0
aW9uKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
RXJyb3ImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9i
amVjdChTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMKTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b24oKTsKKworcHJpdmF0ZToKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBVbmlxdWVSZWY8U2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyPj4gbV9sb2FkZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViY2Q0YTdhZTg3YWRmNWZi
MWM3NGQ1NjgyNDYxMTI3NGE1ZjkyZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgKQEAgLTAsMCAr
MSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUHJvY2Vzc1F1
YWxpZmllZC5oIgorI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworZW51bSBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyVHlwZSB7IH07
Cit1c2luZyBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyID0gUHJvY2Vzc1F1YWxpZmllZDxP
YmplY3RJZGVudGlmaWVyPFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXJUeXBlPj47CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IDMxMWViZDYwNzhi
YzYxZTAxNjlmMWE4NGVhNzE2NGIwODQzNmM2MzkuLmVhMmUwNDhjNzYyMmE2Mjc2MWUzYzI1ZTI1
MmQyN2Y4OTUxMWM2ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwyMyArMjksMjYgQEAKICNp
bmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyTWFu
YWdlci5oIgorI2luY2x1ZGUgIldvcmtlckZldGNoUmVzdWx0LmgiCiAjaW5jbHVkZSAiV29ya2Vy
UnVuTG9vcC5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hhcmVkV29ya2VyU2NyaXB0
TG9hZGVyKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRXb3JrZXImIHdvcmtlciwgVHJhbnNmZXJyZWRN
ZXNzYWdlUG9ydCYmIHBvcnQsIFdvcmtlck9wdGlvbnMmJiBvcHRpb25zKQotICAgIDogbV9pZGVu
dGlmaWVyKFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcklkZW50aWZpZXI6OmdlbmVyYXRlKCkpCi0g
ICAgLCBtX29wdGlvbnMoV1RGTW92ZShvcHRpb25zKSkKK1NoYXJlZFdvcmtlclNjcmlwdExvYWRl
cjo6U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyKFVSTCYmIHVybCwgU2hhcmVkV29ya2VyJiB3b3Jr
ZXIsIFdvcmtlck9wdGlvbnMmJiBvcHRpb25zKQorICAgIDogbV9vcHRpb25zKFdURk1vdmUob3B0
aW9ucykpCiAgICAgLCBtX3dvcmtlcih3b3JrZXIpCi0gICAgLCBtX3BvcnQoV1RGTW92ZShwb3J0
KSkKICAgICAsIG1fbG9hZGVyKFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlKCkpCi0gICAgLCBt
X3BlbmRpbmdBY3Rpdml0eSh3b3JrZXIubWFrZVBlbmRpbmdBY3Rpdml0eSh3b3JrZXIpKQotICAg
ICwgbV91cmwodXJsKQorICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQogewotICAgIG1fd29ya2Vy
LT5zZXRJc0xvYWRpbmcodHJ1ZSk7Ci0gICAgbV9sb2FkZXItPmxvYWRBc3luY2hyb25vdXNseSgq
d29ya2VyLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgUmVzb3VyY2VSZXF1ZXN0KHVybCksIHdv
cmtlci53b3JrZXJGZXRjaE9wdGlvbnMob3B0aW9ucywgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlv
bjo6U2hhcmVkd29ya2VyKSwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQ6OkVuZm9y
Y2VXb3JrZXJTcmNEaXJlY3RpdmUsIFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsLCAqdGhpcywgV29y
a2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyU2NyaXB0
TG9hZGVyOjpsb2FkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1
bHQmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoIW1fY29tcGxldGlvbkhh
bmRsZXIpOworICAgIG1fY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKTsKKworICAgIG1fbG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoKm1fd29ya2VyLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIFJlc291cmNlUmVxdWVzdChtX3VybCksIG1fd29ya2VyLT53
b3JrZXJGZXRjaE9wdGlvbnMobV9vcHRpb25zLCBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpT
aGFyZWR3b3JrZXIpLCBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6RW5mb3JjZVdv
cmtlclNyY0RpcmVjdGl2ZSwgU2VydmljZVdvcmtlcnNNb2RlOjpBbGwsICp0aGlzLCBXb3JrZXJS
dW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKIH0KIAogdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCkBAIC01NSwxNiArNTgsMTIgQEAgdm9pZCBTaGFy
ZWRXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgaWRlbnQKIAogdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6Om5vdGlmeUZp
bmlzaGVkKCkKIHsKLSAgICBtX3dvcmtlci0+c2V0SXNMb2FkaW5nKGZhbHNlKTsKKyAgICBpZiAo
bV9sb2FkZXItPmZhaWxlZCgpKQorICAgICAgICByZXR1cm4gbV9jb21wbGV0aW9uSGFuZGxlcih3
b3JrZXJGZXRjaEVycm9yKG1fbG9hZGVyLT5lcnJvcigpKSk7CiAKLSAgICBhdXRvKiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0ID0gbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAg
ICBpZiAobV9sb2FkZXItPmZhaWxlZCgpIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7Ci0g
ICAgICAgIG1fd29ya2VyLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmVycm9yRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZ
ZXMpKTsKLSAgICAgICAgU2hhcmVkV29ya2VyTWFuYWdlcjo6c2luZ2xldG9uKCkuc2NyaXB0TG9h
ZEZhaWxlZCgqdGhpcyk7IC8vIGRlbGV0ZXMgdGhpcy4KLSAgICB9IGVsc2UgeworICAgIGlmIChh
dXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRl
ZCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgbV9sb2FkZXItPmlkZW50aWZpZXIoKSwgbV9sb2Fk
ZXItPnNjcmlwdCgpLnRvU3RyaW5nKCkpOwotICAgICAgICBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpz
aW5nbGV0b24oKS5zY3JpcHRMb2FkZWRTdWNjZXNzZnVsbHkoKnRoaXMsIG1fbG9hZGVyLT5zY3Jp
cHQoKSwgKm1fd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fd29ya2VyLmdldCgp
LCBzdGQ6OmV4Y2hhbmdlKG1fcG9ydCwgeyB9KSk7IC8vIGRlbGV0ZXMgdGhpcy4KLSAgICB9Cisg
ICAgbV9jb21wbGV0aW9uSGFuZGxlcih7IG1fbG9hZGVyLT5zY3JpcHQoKSwgbV9sb2FkZXItPmNl
cnRpZmljYXRlSW5mbygpLCBtX2xvYWRlci0+Y29udGVudFNlY3VyaXR5UG9saWN5KCksIG1fbG9h
ZGVyLT5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KCksIG1fbG9hZGVyLT5yZWZlcnJlclBvbGlj
eSgpLCB7IH0gfSk7IC8vIGRlbGV0ZXMgdGhpcy4KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXIuaAppbmRleCBhZTViM2JiOWVjNTIwNzQ1MzNlZmQ4NDA5MmNlZWE5OTlm
MjAxNzk5Li5lYjBiNzE0NWJmYTFhYmY0NWRkOTYyYTAyMTVjYjg5MDljY2NkMzk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNSwxMSArMjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFj
dGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0SWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlTG9hZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVz
cG9uc2UuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV29y
a2VyT3B0aW9ucy5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlckNsaWVudC5oIgogI2lu
Y2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CkBAIC0zOSwzMiArMzcsMjggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBTaGFyZWRXb3JrZXI7CiBjbGFzcyBXb3JrZXJTY3JpcHRM
b2FkZXI7Ci0KLWNsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjsKLQotdXNpbmcgVHJhbnNm
ZXJyZWRNZXNzYWdlUG9ydCA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZp
ZXIsIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllcj47CitzdHJ1Y3QgV29ya2VyRmV0Y2hS
ZXN1bHQ7CiAKIGNsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciA6IHByaXZhdGUgV29ya2Vy
U2NyaXB0TG9hZGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIoY29uc3QgVVJMJiwgU2hhcmVkV29ya2Vy
JiwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBXb3JrZXJPcHRpb25zJiYpOworICAgIFNoYXJl
ZFdvcmtlclNjcmlwdExvYWRlcihVUkwmJiwgU2hhcmVkV29ya2VyJiwgV29ya2VyT3B0aW9ucyYm
KTsKKworICAgIHZvaWQgbG9hZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdvcmtlckZl
dGNoUmVzdWx0Jik+JiYpOwogCi0gICAgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmll
ciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgY29uc3Qg
VVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIFNoYXJlZFdvcmtlciYgd29y
a2VyKCkgeyByZXR1cm4gbV93b3JrZXIuZ2V0KCk7IH0KLSAgICBjb25zdCBXb3JrZXJPcHRpb25z
JiBvcHRpb25zKCkgeyByZXR1cm4gbV9vcHRpb25zOyB9CisgICAgY29uc3QgV29ya2VyT3B0aW9u
cyYgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9uczsgfQogCiBwcml2YXRlOgogICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoKSBmaW5h
bDsKIAotICAgIGNvbnN0IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcklkZW50aWZpZXIgbV9pZGVu
dGlmaWVyOwogICAgIGNvbnN0IFdvcmtlck9wdGlvbnMgbV9vcHRpb25zOwogICAgIGNvbnN0IFJl
ZjxTaGFyZWRXb3JrZXI+IG1fd29ya2VyOwotICAgIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQgbV9w
b3J0OwogICAgIGNvbnN0IFJlZjxXb3JrZXJTY3JpcHRMb2FkZXI+IG1fbG9hZGVyOwotICAgIGNv
bnN0IFJlZjxBY3RpdmVET01PYmplY3Q6OlBlbmRpbmdBY3Rpdml0eTxTaGFyZWRXb3JrZXI+PiBt
X3BlbmRpbmdBY3Rpdml0eTsKICAgICBjb25zdCBVUkwgbV91cmw7CisgICAgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYpPiBtX2NvbXBsZXRpb25IYW5kbGVy
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wN2E5MGQ5ODA1MTI0YmVhYmMyZTY0ZGQyMzA4NDlm
MzYyOTg0N2M3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKQEAgLTAsMCArMSwxMTQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXIuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyJiBT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI+IHNoYXJlZE1hbmFnZXI7Cisg
ICAgcmV0dXJuIHNoYXJlZE1hbmFnZXI7Cit9CisKK1NoYXJlZFdvcmtlclRocmVhZFByb3h5KiBT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2hhcmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50
aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV93b3Jr
ZXJNYXAuZ2V0KHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworfQorCit2b2lkIFNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyOjpzdG9wU2hhcmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIg
c2hhcmVkV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHdvcmtlciA9IG1fd29ya2VyTWFw
LnRha2Uoc2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29y
a2VyLCAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0b3BTaGFyZWRXb3JrZXI6IHNoYXJl
ZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlcklk
ZW50aWZpZXIudG9VSW50NjQoKSwgd29ya2VyLmdldCgpKTsKKyAgICBpZiAoIXdvcmtlcikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgd29ya2VyLT5zZXRBc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVk
KCk7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gZGVhbCB3aXRoIHRoZSB0
aHJlYWQgYmVpbmcgdW5yZXNwb25zaXZlIGhlcmUuCisKKyAgICBhdXRvJiB0aHJlYWQgPSB3b3Jr
ZXItPnRocmVhZCgpOworICAgIHRocmVhZC5zdG9wKFt3b3JrZXIgPSBXVEZNb3ZlKHdvcmtlcild
KCkgbXV0YWJsZSB7CisgICAgICAgIC8vIFNwaW4gdGhlIHJ1bmxvb3AgYmVmb3JlIHJlbGVhc2lu
ZyB0aGUgc2hhcmVkIHdvcmtlciB0aHJlYWQgcHJveHksIGFzIHRoZXJlIHdvdWxkIG90aGVyd2lz
ZSBiZQorICAgICAgICAvLyBhIHJhY2UgdG93YXJkcyBpdHMgZGVzdHJ1Y3Rpb24uCisgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW3dvcmtlciA9IFdURk1vdmUod29ya2VyKV0geyB9KTsKKyAgICB9
KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c3RvcEFsbFNoYXJlZFdv
cmtlcnMoKQoreworICAgIHdoaWxlICghbV93b3JrZXJNYXAuaXNFbXB0eSgpKQorICAgICAgICBz
dG9wU2hhcmVkV29ya2VyKG1fd29ya2VyTWFwLmJlZ2luKCktPmtleSk7Cit9CisKK3ZvaWQgU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNldENvbm5lY3Rpb24oc3RkOjp1bmlxdWVfcHRyPENv
bm5lY3Rpb24+JiYgY29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbiB8fCBt
X2Nvbm5lY3Rpb24tPmlzQ2xvc2VkKCkpOworICAgIG1fY29ubmVjdGlvbiA9IFdURk1vdmUoY29u
bmVjdGlvbik7Cit9CisKK2F1dG8gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OmNvbm5lY3Rp
b24oKSBjb25zdCAtPiBDb25uZWN0aW9uKgoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0
KCk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnJlZ2lzdGVyU2hhcmVk
V29ya2VyVGhyZWFkKFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4mJiBwcm94eSkKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwg
IlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpyZWdpc3RlclNoYXJlZFdvcmtlclRocmVhZDog
c2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHByb3h5LT5pZGVudGlmaWVyKCkudG9V
SW50NjQoKSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IG1fd29ya2VyTWFwLmFkZChwcm94eS0+aWRl
bnRpZmllcigpLCBwcm94eS5jb3B5UmVmKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCBy
ZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICBwcm94eS0+dGhyZWFkKCkuc3RhcnQoW10oY29uc3Qg
U3RyaW5nJiAvKmV4Y2VwdGlvbk1lc3NhZ2UqLykgeyB9KTsKK30KKwordm9pZCBTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVudChTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFRyYW5zZmVycmVkTWVzc2FnZVBv
cnQmJiB0cmFuc2ZlcnJlZFBvcnQsIFN0cmluZyYmIHNvdXJjZU9yaWdpbikKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8qIHByb3h5ID0gU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXJJZGVudGlmaWVy
KTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlcjo6Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVudDogc2hhcmVkV29ya2VySWRlbnRpZmll
cj0lIiBQUkl1NjQgIiwgcHJveHk9JXAiLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0
KCksIHByb3h5KTsKKyAgICBpZiAoIXByb3h5KQorICAgICAgICByZXR1cm47CisKKyAgICBwcm94
eS0+dGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFt0cmFuc2ZlcnJlZFBvcnQgPSBXVEZNb3Zl
KHRyYW5zZmVycmVkUG9ydCksIHNvdXJjZU9yaWdpbiA9IFdURk1vdmUoc291cmNlT3JpZ2luKS5p
c29sYXRlZENvcHkoKV0gKGF1dG8mIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIG11dGFibGUgewor
ICAgICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgZG93bmNhc3Q8U2hhcmVk
V29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnBvc3RDb25uZWN0RXZl
bnQoV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBXVEZNb3ZlKHNvdXJjZU9yaWdpbikpOworICAg
IH0pOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uOjp0
ZXJtaW5hdGVTaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgUkVMRUFTRV9M
T0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb246
OnRlcm1pbmF0ZVNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQs
IHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnN0b3BTaGFyZWRXb3JrZXIoc2hhcmVkV29ya2VySWRl
bnRpZmllcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMzgyNTI4OTM3M2UwZTY4NjFiOWVjZTdkN2Jl
OWMxMzE2YzkwZTIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oCkBAIC0wLDAgKzEsNzcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNoYXJlZFdvcmtlcklk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlICJUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0LmgiCisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTaGFyZWRX
b3JrZXJUaHJlYWRQcm94eTsKKworY2xhc3MgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIgewor
cHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlciYgc2luZ2xldG9uKCk7CisKKyAgICBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSogc2hhcmVk
V29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIpIGNvbnN0OworICAgIHZvaWQgc3RvcFNoYXJl
ZFdvcmtlcihTaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHN0b3BBbGxTaGFyZWRXb3JrZXJzKCk7CisKKyAgICBjbGFzcyBDb25uZWN0aW9uIHsKKyAgICAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFs
IH5Db25uZWN0aW9uKCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBlc3RhYmxpc2hDb25uZWN0
aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZv
aWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpID0gMDsKKyAgICAgICAgYm9vbCBpc0Nsb3NlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNDbG9zZWQ7IH0KKworICAgIHByb3RlY3RlZDoKKyAgICAgICAg
dm9pZCBzZXRBc0Nsb3NlZCgpIHsgbV9pc0Nsb3NlZCA9IHRydWU7IH0KKworICAgICAgICAvLyBJ
UEMgbWVzc2FnZSBoYW5kbGVycy4KKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0Q29u
bmVjdEV2ZW50KFNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQm
JiwgU3RyaW5nJiYgc291cmNlT3JpZ2luKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0
ZXJtaW5hdGVTaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllcik7CisKKyAgICBwcml2
YXRlOgorICAgICAgICBib29sIG1faXNDbG9zZWQgeyBmYWxzZSB9OworICAgIH07CisKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbm5lY3Rpb24oc3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rp
b24+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIENvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKSBjb25z
dDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVnaXN0ZXJTaGFyZWRXb3JrZXJUaHJlYWQo
UmVmPFNoYXJlZFdvcmtlclRocmVhZFByb3h5PiYmKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQg
Y2xhc3MgTmV2ZXJEZXN0cm95ZWQ8U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI+OworCisgICAg
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIEhhc2hNYXA8U2hhcmVkV29ya2Vy
SWRlbnRpZmllciwgUmVmPFNoYXJlZFdvcmtlclRocmVhZFByb3h5Pj4gbV93b3JrZXJNYXA7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHku
Y3BwCmluZGV4IDliZDk3ODNkN2E3ZTU4ZTY3YjZiODBiNWQ1NDRmZWMyZWNmMmNhZjUuLjFlZGY3
MzRmZjI5NjVlZGUxMTgwMjZhOWI5NmNmYTU0MGYxZGZjMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHkuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEt
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI4LDk0ICsyOCw3MiBAQAogCiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdl
UHJvdmlkZXIuaCIKICNpbmNsdWRlICJFcnJvckV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnRMb29w
LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVk
ZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgorI2luY2x1
ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1T
dHJhdGVnaWVzLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVj
dGlvbi5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaCIK
ICNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlICJXb3JrZXJGZXRjaFJl
c3VsdC5oIgorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0lkZW50aWZpZXJzRmFjdG9yeS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJl
ZFdvcmtlclRocmVhZFByb3h5OjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShTaGFyZWRXb3JrZXIm
IHNoYXJlZFdvcmtlcikKLSAgICA6IG1fc2hhcmVkV29ya2VyKHNoYXJlZFdvcmtlcikKLSAgICAs
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChzaGFyZWRXb3JrZXIuc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKQotICAgICwgbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yKHNoYXJlZFdvcmtlci5pZGVu
dGlmaWVyRm9ySW5zcGVjdG9yKCkpCitzdGF0aWMgSGFzaFNldDxTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eSo+JiBhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkKIHsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SGFzaFNldDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSo+PiBzZXQ7CisgICAg
cmV0dXJuIHNldDsKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6c3RhcnRXb3Jr
ZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgY29uc3QgU2NyaXB0QnVmZmVy
JiBzY3JpcHRCdWZmZXIsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cyYgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLCBib29sIHNob3VsZEJ5cGFz
c01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgQ3Jvc3NPcmlnaW5FbWJlZGRl
clBvbGljeSYgY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwgTW9ub3RvbmljVGltZSB0aW1lT3Jp
Z2luLCBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB3b3JrZXJUeXBl
LCBGZXRjaFJlcXVlc3RDcmVkZW50aWFscyBjcmVkZW50aWFscywgSlNDOjpSdW50aW1lRmxhZ3Mg
cnVudGltZUZsYWdzKQorc3RhdGljIFdvcmtlclBhcmFtZXRlcnMgZ2VuZXJhdGVXb3JrZXJQYXJh
bWV0ZXJzKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYgd29y
a2VyRmV0Y2hSZXN1bHQsIFdvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zLCBjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCwgRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIGlmIChtX2Fza2VkVG9U
ZXJtaW5hdGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gcGFyYW1ldGVycyA9IFdvcmtl
clBhcmFtZXRlcnMgeworICAgIHJldHVybiBXb3JrZXJQYXJhbWV0ZXJzIHsKICAgICAgICAgc2Ny
aXB0VVJMLAotICAgICAgICBuYW1lLAotICAgICAgICBtX2lkZW50aWZpZXJGb3JJbnNwZWN0b3Is
CisgICAgICAgIHdvcmtlck9wdGlvbnMubmFtZSwKKyAgICAgICAgInNoYXJlZHdvcmtlcjoiICsg
SW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKSwKICAgICAg
ICAgdXNlckFnZW50LAotICAgICAgICBpc09ubGluZSwKLSAgICAgICAgY29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzLAotICAgICAgICBzaG91bGRCeXBhc3NNYWluV29ybGRDb250
ZW50U2VjdXJpdHlQb2xpY3ksCi0gICAgICAgIGNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ksCi0g
ICAgICAgIHRpbWVPcmlnaW4sCi0gICAgICAgIHJlZmVycmVyUG9saWN5LAotICAgICAgICB3b3Jr
ZXJUeXBlLAotICAgICAgICBjcmVkZW50aWFscywKLSAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5zZXR0aW5nc1ZhbHVlcygpCisgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5s
b2FkZXJTdHJhdGVneSgpLT5pc09uTGluZSgpLAorICAgICAgICB3b3JrZXJGZXRjaFJlc3VsdC5j
b250ZW50U2VjdXJpdHlQb2xpY3ksCisgICAgICAgIGZhbHNlLAorICAgICAgICB3b3JrZXJGZXRj
aFJlc3VsdC5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LAorICAgICAgICBNb25vdG9uaWNUaW1l
Ojpub3coKSwKKyAgICAgICAgcGFyc2VSZWZlcnJlclBvbGljeSh3b3JrZXJGZXRjaFJlc3VsdC5y
ZWZlcnJlclBvbGljeSwgUmVmZXJyZXJQb2xpY3lTb3VyY2U6OkhUVFBIZWFkZXIpLnZhbHVlX29y
KFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZyksCisgICAgICAgIHdvcmtlck9wdGlvbnMudHlw
ZSwKKyAgICAgICAgd29ya2VyT3B0aW9ucy5jcmVkZW50aWFscywKKyAgICAgICAgZG9jdW1lbnQu
c2V0dGluZ3NWYWx1ZXMoKQogICAgIH07Ci0KLSAgICBpZiAoIW1fd29ya2VyVGhyZWFkKSB7Ci0g
ICAgICAgIG1fd29ya2VyVGhyZWFkID0gU2hhcmVkV29ya2VyVGhyZWFkOjpjcmVhdGUoU2hhcmVk
V29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgcGFyYW1ldGVycywgc2NyaXB0QnVmZmVyLCAq
dGhpcywgKnRoaXMsICp0aGlzLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT50b3BPcmlnaW4oKSwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5pZGJDb25uZWN0aW9uUHJveHkoKSwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zb2NrZXRQ
cm92aWRlcigpLCBydW50aW1lRmxhZ3MpOwotICAgICAgICBtX3dvcmtlclRocmVhZC0+c3RhcnQo
KTsKLSAgICB9Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnRlcm1pbmF0ZVdv
cmtlckdsb2JhbFNjb3BlKCkKLXsKLSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBtX2Fza2VkVG9UZXJtaW5hdGUgPSB0cnVlOwotICAgIGlmIChtX3dv
cmtlclRocmVhZCkKLSAgICAgICAgbV93b3JrZXJUaHJlYWQtPnN0b3AobnVsbHB0cik7CiB9CiAK
LXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxT
Y29wZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UpCitTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHkoVW5pcXVlUmVmPFBhZ2U+JiYgcGFnZSwg
U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBDbGll
bnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIFdvcmtlckZldGNo
UmVzdWx0JiYgd29ya2VyRmV0Y2hSZXN1bHQsIFdvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25z
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImIGNhY2hlU3Rv
cmFnZVByb3ZpZGVyKQorICAgIDogbV9wYWdlKFdURk1vdmUocGFnZSkpCisgICAgLCBtX2RvY3Vt
ZW50KCptX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCisgICAgLCBtX3dvcmtlclRocmVh
ZChTaGFyZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZShzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBnZW5l
cmF0ZVdvcmtlclBhcmFtZXRlcnMoc2NyaXB0VVJMLCB3b3JrZXJGZXRjaFJlc3VsdCwgV1RGTW92
ZSh3b3JrZXJPcHRpb25zKSwgdXNlckFnZW50LCBtX2RvY3VtZW50KSwgV1RGTW92ZSh3b3JrZXJG
ZXRjaFJlc3VsdC5zY3JpcHQpLCAqdGhpcywgKnRoaXMsICp0aGlzLCBXb3JrZXJUaHJlYWRTdGFy
dE1vZGU6Ok5vcm1hbCwgY2xpZW50T3JpZ2luLnRvcE9yaWdpbi5zZWN1cml0eU9yaWdpbigpLCBt
X2RvY3VtZW50LT5pZGJDb25uZWN0aW9uUHJveHkoKSwgbV9kb2N1bWVudC0+c29ja2V0UHJvdmlk
ZXIoKSwgSlNDOjpSdW50aW1lRmxhZ3M6OmNyZWF0ZUFsbEVuYWJsZWQoKSkpCisgICAgLCBtX2Nh
Y2hlU3RvcmFnZVByb3ZpZGVyKGNhY2hlU3RvcmFnZVByb3ZpZGVyKQogewotICAgIC8vIEZJWE1F
OiBTaGFyZWRXb3JrZXIgZG9lc24ndCBoYXZlIHBvc3RNZXNzYWdlLCBzbyB0aGlzIG1pZ2h0IG5v
dCBiZSBuZWNlc3NhcnkuCi0gICAgcG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKFttZXNzYWdl
ID0gV1RGTW92ZShtZXNzYWdlKV0oYXV0byYgc2NyaXB0Q29udGV4dCkgbXV0YWJsZSB7Ci0gICAg
ICAgIGF1dG8mIGNvbnRleHQgPSBkb3duY2FzdDxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4oc2Ny
aXB0Q29udGV4dCk7Ci0gICAgICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQ
b3J0cyhzY3JpcHRDb250ZXh0LCBXVEZNb3ZlKG1lc3NhZ2UudHJhbnNmZXJyZWRQb3J0cykpOwot
ICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92
ZShwb3J0cyksIG1lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpKSk7Ci0gICAgfSk7Ci19
CisgICAgQVNTRVJUKCFhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkuY29udGFpbnModGhp
cykpOworICAgIGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKS5hZGQodGhpcyk7CiAKLXZv
aWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShG
dW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJiB0YXNrKQotewotICAgIGlm
IChtX2Fza2VkVG9UZXJtaW5hdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBtX3dvcmtlclRocmVh
ZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFdURk1vdmUodGFzaykpOwotfQotCi1ib29sIFNoYXJlZFdv
cmtlclRocmVhZFByb3h5OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAotewotICAgIHJldHVy
biBtX2hhc1BlbmRpbmdBY3Rpdml0eSAmJiAhbV9hc2tlZFRvVGVybWluYXRlOworICAgIHN0YXRp
YyBib29sIGFkZGVkTGlzdGVuZXI7CisgICAgaWYgKCFhZGRlZExpc3RlbmVyKSB7CisgICAgICAg
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5hZGRPbmxpbmVTdGF0ZUNo
YW5nZUxpc3RlbmVyKCZuZXR3b3JrU3RhdGVDaGFuZ2VkKTsKKyAgICAgICAgYWRkZWRMaXN0ZW5l
ciA9IHRydWU7CisgICAgfQogfQogCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojp3b3Jr
ZXJPYmplY3REZXN0cm95ZWQoKQorU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6On5TaGFyZWRXb3Jr
ZXJUaHJlYWRQcm94eSgpCiB7Ci0gICAgbV9zaGFyZWRXb3JrZXIgPSBudWxscHRyOwotICAgIG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXNdIChhdXRvJikgewotICAgICAg
ICBtX21heUJlRGVzdHJveWVkID0gdHJ1ZTsKLSAgICAgICAgaWYgKG1fd29ya2VyVGhyZWFkKQot
ICAgICAgICAgICAgdGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpOwotICAgIH0p
OworICAgIEFTU0VSVChhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkuY29udGFpbnModGhp
cykpOworICAgIGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKS5yZW1vdmUodGhpcyk7CiB9
CiAKIFNoYXJlZFdvcmtlcklkZW50aWZpZXIgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OmlkZW50
aWZpZXIoKSBjb25zdApAQCAtMTI1LDg4ICsxMDMsNTAgQEAgU2hhcmVkV29ya2VySWRlbnRpZmll
ciBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6aWRlbnRpZmllcigpIGNvbnN0CiAKIHZvaWQgU2hh
cmVkV29ya2VyVGhyZWFkUHJveHk6Om5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25s
aW5lKQogewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCisgICAgaWYgKG1faXNUZXJtaW5h
dGluZ09yVGVybWluYXRlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX3dvcmtlclRo
cmVhZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5w
b3N0VGFzayhbaXNPbmxpbmVdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Cisg
ICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbaXNPbmxpbmVd
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgIGF1dG8mIGdsb2Jh
bFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpOwogICAgICAgICBn
bG9iYWxTY29wZS5zZXRJc09ubGluZShpc09ubGluZSk7Ci0gICAgICAgIGdsb2JhbFNjb3BlLmRp
c3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShpc09ubGluZSA/IGV2ZW50TmFtZXMoKS5vbmxpbmVF
dmVudCA6IGV2ZW50TmFtZXMoKS5vZmZsaW5lRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBF
dmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwotICAgIH0pOwotfQotCi12b2lkIFNoYXJlZFdvcmtl
clRocmVhZFByb3h5OjpzdXNwZW5kRm9yQmFja0ZvcndhcmRDYWNoZSgpCi17Ci0KLX0KLQotdm9p
ZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cmVzdW1lRm9yQmFja0ZvcndhcmRDYWNoZSgpCi17
Ci0KKyAgICAgICAgZ2xvYmFsU2NvcGUuZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6
OkRPTU1hbmlwdWxhdGlvbiwgW2dsb2JhbFNjb3BlID0gUmVmIHsgZ2xvYmFsU2NvcGUgfSwgaXNP
bmxpbmVdIHsKKyAgICAgICAgICAgIGdsb2JhbFNjb3BlLT5kaXNwYXRjaEV2ZW50KEV2ZW50Ojpj
cmVhdGUoaXNPbmxpbmUgPyBldmVudE5hbWVzKCkub25saW5lRXZlbnQgOiBldmVudE5hbWVzKCku
b2ZmbGluZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6
Tm8pKTsKKyAgICAgICAgfSk7CisgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7
CiB9CiAKIHZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RFeGNlcHRpb25Ub1dvcmtl
ck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBj
b2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewotICAgIG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXMsIGVycm9yTWVzc2FnZSA9IGVycm9yTWVzc2Fn
ZS5pc29sYXRlZENvcHkoKSwgc291cmNlVVJMID0gc291cmNlVVJMLmlzb2xhdGVkQ29weSgpLCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXJdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewotICAg
ICAgICBpZiAoIW1fc2hhcmVkV29ya2VyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IC8vIFdlIGRvbid0IGJvdGhlciBjaGVja2luZyB0aGUgYXNrZWRUb1Rlcm1pbmF0ZSgpIGZsYWcg
aGVyZSwgYmVjYXVzZSBleGNlcHRpb25zIHNob3VsZCAqYWx3YXlzKiBiZSByZXBvcnRlZCBldmVu
IGlmIHRoZSB0aHJlYWQgaXMgdGVybWluYXRlZC4KLSAgICAgICAgLy8gVGhpcyBpcyBpbnRlbnRp
b25hbGx5IGRpZmZlcmVudCB0aGFuIHRoZSBiZWhhdmlvciBpbiBNZXNzYWdlV29ya2VyVGFzaywg
YmVjYXVzZSB0ZXJtaW5hdGVkIHdvcmtlcnMgbm8gbG9uZ2VyIGRlbGl2ZXIgbWVzc2FnZXMgKHNl
Y3Rpb24gNC42IG9mIHRoZSBXZWJXb3JrZXIgc3BlYyksIGJ1dCB0aGV5IGRvIHJlcG9ydCBleGNl
cHRpb25zLgotICAgICAgICBBY3RpdmVET01PYmplY3Q6OnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVu
dCgqbV9zaGFyZWRXb3JrZXIsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgRXJyb3JFdmVu
dDo6Y3JlYXRlKGVycm9yTWVzc2FnZSwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIHsgfSkpOwotICAgIH0pOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojp3
b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgpCi17Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5wb3N0VGFzayhbdGhpc10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0gICAgICAg
IHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwoKTsKLSAgICB9KTsKLX0KLQotdm9p
ZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0cyYmKQotewotCi19Ci0KLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFk
UHJveHk6OmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sKQotewotfQotCi12b2lk
IFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpyZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCBoYXNQ
ZW5kaW5nQWN0aXZpdHkpCi17Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFz
ayhbdGhpcywgaGFzUGVuZGluZ0FjdGl2aXR5XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsK
LSAgICAgICAgbV9oYXNQZW5kaW5nQWN0aXZpdHkgPSBoYXNQZW5kaW5nQWN0aXZpdHk7CisgICAg
Y2FsbE9uTWFpblRocmVhZChbc2hhcmVkV29ya2VySWRlbnRpZmllciA9IG1fd29ya2VyVGhyZWFk
LT5pZGVudGlmaWVyKCksIGVycm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZS5pc29sYXRlZENvcHko
KSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNvbGF0
ZWRDb3B5KCldIHsKKyAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKQorICAgICAgICAgICAgY29u
bmVjdGlvbi0+cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KHNoYXJlZFdvcmtlcklkZW50aWZp
ZXIsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwpOwog
ICAgIH0pOwogfQogCiBSZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHk6OmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVu
dD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgcmV0dXJuIGRvY3VtZW50LnBhZ2Uo
KS0+Y2FjaGVTdG9yYWdlUHJvdmlkZXIoKS5jcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCk7
CisgICAgaWYgKCFtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24pCisgICAgICAgIG1fY2FjaGVTdG9y
YWdlQ29ubmVjdGlvbiA9IG1fY2FjaGVTdG9yYWdlUHJvdmlkZXIuY3JlYXRlQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbigpOworICAgIHJldHVybiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247CiB9CiAK
IFJlZlB0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uPiBTaGFyZWRXb3Jr
ZXJUaHJlYWRQcm94eTo6Y3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlv
bigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRvJiBkb2N1bWVudCA9
IGRvd25jYXN0PERvY3VtZW50PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICBpZiAo
IWRvY3VtZW50LnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGRv
Y3VtZW50LnBhZ2UoKS0+bGliV2ViUlRDUHJvdmlkZXIoKS5jcmVhdGVSVENEYXRhQ2hhbm5lbFJl
bW90ZUhhbmRsZXJDb25uZWN0aW9uKCk7CisgICAgcmV0dXJuIG1fcGFnZS0+bGliV2ViUlRDUHJv
dmlkZXIoKS5jcmVhdGVSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCk7CiB9
CiAKIHZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2spCiB7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5wb3N0VGFzayhXVEZNb3ZlKHRhc2spKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0
YXNrID0gV1RGTW92ZSh0YXNrKSwgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIG11
dGFibGUgeworICAgICAgICB0YXNrLnBlcmZvcm1UYXNrKHByb3RlY3RlZFRoaXMtPm1fZG9jdW1l
bnQuZ2V0KCkpOworICAgIH0pOwogfQogCiBib29sIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpw
b3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2smJiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7Ci0gICAgaWYgKG1f
YXNrZWRUb1Rlcm1pbmF0ZSkKKyAgICBpZiAobV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBv
c3RUYXNrRm9yTW9kZShXVEZNb3ZlKHRhc2spLCBtb2RlKTsKQEAgLTIyMywxNiArMTYzLDEwIEBA
IHZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVk
QnlXZWJJbnNwZWN0b3IoYm9vbCkKIAogfQogCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5
Ojp3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZEludGVybmFsKCkKK3ZvaWQgU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHk6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoYm9vbCBpc09uTGluZSkKIHsKLSAgICAv
LyBUaGlzIGlzIGFsd2F5cyB0aGUgbGFzdCB0YXNrIHRvIGJlIHBlcmZvcm1lZCwgc28gdGhlIHBy
b3h5IGlzIG5vdCBuZWVkZWQgZm9yIGNvbW11bmljYXRpb24KLSAgICAvLyBpbiBlaXRoZXIgc2lk
ZSBhbnkgbW9yZS4gSG93ZXZlciwgdGhlIFdvcmtlciBvYmplY3QgbWF5IHN0aWxsIGV4aXN0LCBh
bmQgaXQgYXNzdW1lcyB0aGF0IHRoZSBwcm94eSBleGlzdHMsIHRvby4KLSAgICBtX2Fza2VkVG9U
ZXJtaW5hdGUgPSB0cnVlOwotICAgIG1fd29ya2VyVGhyZWFkID0gbnVsbHB0cjsKLQotICAgIC8v
IFRoaXMgYmFsYW5jZXMgdGhlIG9yaWdpbmFsIHJlZiBpbiBjb25zdHJ1Y3Rpb24uCi0gICAgaWYg
KG1fbWF5QmVEZXN0cm95ZWQpCi0gICAgICAgIGRlcmVmKCk7CisgICAgZm9yIChhdXRvKiBwcm94
eSA6IGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKSkKKyAgICAgICAgcHJveHktPm5vdGlm
eU5ldHdvcmtTdGF0ZUNoYW5nZShpc09uTGluZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hh
cmVkV29ya2VyVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2Nv
bnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaAppbmRleCA0ZTkyZTQ1NjE3MWNlOTFhZWI4
NzVhMzVlNzU5YjllYzViNTQxZWY3Li4zMzY0MjQwYWJiYjU5YjhkMWQwMzlmZWViZDA1YjE0YTAy
NzM3YWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0
L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDcgKzI3LDYgQEAKIAog
I2luY2x1ZGUgIlNoYXJlZFdvcmtlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXb3JrZXJEZWJ1
Z2dlclByb3h5LmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIgogI2luY2x1
ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyT2JqZWN0UHJveHkuaCIK
ICNpbmNsdWRlICJXb3JrZXJPcHRpb25zLmgiCkBAIC0zNSw1MCArMzQsNTQgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitjbGFzcyBDYWNoZVN0b3JhZ2VQcm92aWRlcjsKK2NsYXNzIFBhZ2U7
CiBjbGFzcyBTaGFyZWRXb3JrZXI7CiBjbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWQ7CiAKLWNsYXNz
IFNoYXJlZFdvcmtlclRocmVhZFByb3h5IGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFNoYXJlZFdvcmtlclRocmVhZFByb3h5PiwgcHVibGljIFdvcmtlckdsb2JhbFNjb3BlUHJv
eHksIHB1YmxpYyBXb3JrZXJPYmplY3RQcm94eSwgcHVibGljIFdvcmtlckxvYWRlclByb3h5LCBw
dWJsaWMgV29ya2VyRGVidWdnZXJQcm94eSB7CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworc3RydWN0
IFdvcmtlckZldGNoUmVzdWx0OworCitjbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSBmaW5h
bCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4s
IHB1YmxpYyBXb3JrZXJPYmplY3RQcm94eSwgcHVibGljIFdvcmtlckxvYWRlclByb3h5LCBwdWJs
aWMgV29ya2VyRGVidWdnZXJQcm94eSB7CiBwdWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gQXJncz4gc3RhdGljIFNoYXJlZFdvcmtlclRocmVhZFByb3h5JiBjcmVhdGUoQXJncyYmLi4u
IGFyZ3MpIHsgcmV0dXJuICpuZXcgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkoc3RkOjpmb3J3YXJk
PEFyZ3M+KGFyZ3MpLi4uKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRp
YyBSZWY8U2hhcmVkV29ya2VyVGhyZWFkUHJveHk+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShzdGQ6OmZvcndhcmQ8
QXJncz4oYXJncykuLi4pKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIH5TaGFyZWRXb3JrZXJUaHJl
YWRQcm94eSgpOwogCiAgICAgU2hhcmVkV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29u
c3Q7Ci0gICAgU2hhcmVkV29ya2VyVGhyZWFkKiB0aHJlYWQoKSB7IHJldHVybiBtX3dvcmtlclRo
cmVhZC5nZXQoKTsgfQorICAgIFNoYXJlZFdvcmtlclRocmVhZCYgdGhyZWFkKCkgeyByZXR1cm4g
bV93b3JrZXJUaHJlYWQ7IH0KIAotICAgIHZvaWQgc3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25z
dCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCwgYm9vbCBpc09ubGluZSwgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VDb2RlLCBjb25z
dCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBib29sIHNob3VsZEJ5cGFz
c01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgQ3Jvc3NPcmlnaW5FbWJlZGRl
clBvbGljeSYsIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUmVmZXJyZXJQb2xpY3ksIFdvcmtl
clR5cGUsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzLCBKU0M6OlJ1bnRpbWVGbGFncykgZmluYWw7
Ci0gICAgdm9pZCB3b3JrZXJPYmplY3REZXN0cm95ZWQoKSBmaW5hbDsKLSAgICBib29sIGhhc1Bl
bmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgdGVybWluYXRlV29ya2VyR2xv
YmFsU2NvcGUoKSBmaW5hbDsKKyAgICBib29sIGlzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKSBj
b25zdCB7IHJldHVybiBtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQ7IH0KKyAgICB2b2lkIHNl
dEFzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKSB7IG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRl
ZCA9IHRydWU7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eShTaGFyZWRXb3JrZXImKTsKLQotICAgIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95
ZWRJbnRlcm5hbCgpOworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZFdvcmtlclRocmVhZFByb3h5
KFVuaXF1ZVJlZjxQYWdlPiYmLCBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBDbGllbnRP
cmlnaW4mLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgV29ya2VyRmV0Y2hSZXN1bHQmJiwgV29ya2Vy
T3B0aW9ucyYmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXIm
KTsKIAotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzJiYpIGZpbmFsOwotICAgIHZvaWQgcG9zdFRhc2tUb1dvcmtlckdsb2JhbFNj
b3BlKEZ1bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiYmKSBmaW5hbDsKLSAg
ICB2b2lkIG5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25saW5lKSBmaW5hbDsKLSAg
ICB2b2lkIHN1c3BlbmRGb3JCYWNrRm9yd2FyZENhY2hlKCkgZmluYWw7Ci0gICAgdm9pZCByZXN1
bWVGb3JCYWNrRm9yd2FyZENhY2hlKCkgZmluYWw7CisgICAgLy8gV29ya2VyT2JqZWN0UHJveHku
CiAgICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCkgZmluYWw7Ci0gICAgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgp
IGZpbmFsOwotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cyYmKSBmaW5hbDsKLSAgICB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9i
amVjdChib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkgZmluYWw7Ci0gICAgdm9pZCByZXBvcnRQZW5k
aW5nQWN0aXZpdHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpIGZpbmFsOworICAgIHZvaWQgcG9z
dE1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKSBmaW5hbCB7
IH0KKyAgICB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkKCkgZmluYWwgeyB9CisgICAg
dm9pZCBjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCkgZmluYWwgeyB9CisgICAg
dm9pZCByZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCkgZmluYWwgeyB9CisKKyAgICAvLyBXb3Jr
ZXJMb2FkZXJQcm94eS4KICAgICBSZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gY3JlYXRl
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpIGZpbmFsOwogICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uPiBjcmVhdGVSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRs
ZXJDb25uZWN0aW9uKCkgZmluYWw7CiAgICAgdm9pZCBwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2smJikgZmluYWw7CiAgICAgYm9vbCBwb3N0VGFza0Zvck1vZGVU
b1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sm
JiwgY29uc3QgU3RyaW5nJiBtb2RlKSBmaW5hbDsKKworICAgIC8vIFdvcmtlckRlYnVnZ2VyUHJv
eHkuCiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvRGVidWdnZXIoY29uc3QgU3RyaW5nJikgZmluYWw7
CiAgICAgdm9pZCBzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yKGJvb2wp
IGZpbmFsOwogCi0gICAgV2Vha1B0cjxTaGFyZWRXb3JrZXI+IG1fc2hhcmVkV29ya2VyOwotICAg
IFJlZlB0cjxTaGFyZWRXb3JrZXJUaHJlYWQ+IG1fd29ya2VyVGhyZWFkOwotICAgIGNvbnN0IFJl
ZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0g
ICAgY29uc3QgU3RyaW5nIG1faWRlbnRpZmllckZvckluc3BlY3RvcjsKLSAgICBib29sIG1fYXNr
ZWRUb1Rlcm1pbmF0ZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2hhc1BlbmRpbmdBY3Rpdml0eSB7
IGZhbHNlIH07Ci0gICAgYm9vbCBtX21heUJlRGVzdHJveWVkIHsgZmFsc2UgfTsKKyAgICBzdGF0
aWMgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKGJvb2wgaXNPbkxpbmUpOworICAgIHZvaWQgbm90
aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpOworCisgICAgVW5pcXVlUmVmPFBh
Z2U+IG1fcGFnZTsKKyAgICBSZWY8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CisgICAgUmVmPFNoYXJl
ZFdvcmtlclRocmVhZD4gbV93b3JrZXJUaHJlYWQ7CisgICAgQ2FjaGVTdG9yYWdlUHJvdmlkZXIm
IG1fY2FjaGVTdG9yYWdlUHJvdmlkZXI7CisgICAgUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rp
b24+IG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKKyAgICBib29sIG1faXNUZXJtaW5hdGluZ09y
VGVybWluYXRlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFr
ZUxpc3RzLnR4dAppbmRleCA3NTZkYTg4YjQ1ZjcwNDJmNDIzYjczNGM3NjRlNjU2NmQ0NDZlZmFm
Li4yOWY0Yzc4MTgxODBkZTJjYjI0OTUwNzJlODQ2MGE1MGFkMzY0YTQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0
cy50eHQKQEAgLTI4LDYgKzI4LDcgQEAgc2V0KFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAg
ICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucyIKICAgICAiJHtX
RUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudCIKICAgICAi
JHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyIgorICAgICIke1dFQktJ
VF9ESVJ9L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlciIKICAgICAiJHtXRUJLSVRfRElSfS9O
ZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlIgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9j
ZXNzL2NhY2hlIgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UiCkBA
IC0yMDIsNiArMjAzLDkgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIE5ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uCiAgICAgTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24KIAor
ICAgIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uCisgICAgTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24KKwogICAgIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZU1hbmFnZXJTZXQKIAogICAgIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb24KQEAgLTMwNSw2ICszMDksOCBAQCBzZXQoV2ViS2l0X01FU1NBR0VT
X0lOX0ZJTEVTCiAKICAgICBXZWJQcm9jZXNzL1NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlYWx0
aW1lTWVkaWFTb3VyY2VNYW5hZ2VyCiAKKyAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uCisgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24KICAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDbGllbnRDb25uZWN0aW9uCiAgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdAppbmRleCA0YzY2MjIwY2YxMjJhNTNiNzQ2OWQ0NDAwYzdjZGRiMjM1YzhiNzQ5
Li43MjI5YzFiOTg3MDg4ODFiN2JhZWMzY2Y3YTAyNDczNTcyZTM1ZGUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC05MSw2ICs5MSw4IEBA
ICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ckRvd25sb2FkVGFzay5tZXNzYWdlcy5pCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJ
UikvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1NoYXJlZFdv
cmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2Vy
U2V0Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3
b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbgpAQCAt
MjE3LDYgKzIxOSw4IEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNo
UmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisk
KFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dl
YlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dl
YkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IGUzYjU1ODQwYWUxZWFmNTdmNWVi
Zjc1NDJlNWUxZmQ0MGU1ZGQ0ZDEuLmE4NjMyODE0N2I1NmM1YzU2MGFhNWFiYTM5YmZhZDMyNDVj
MjYxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxl
bGlzdApAQCAtNjA3LDYgKzYwNywxOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0L1dlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcwogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2Vz
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25N
ZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25N
ZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dl
YlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bk1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQv
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNvY2tldENo
YW5uZWxNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0L1dlYlNvY2tldENoYW5uZWxNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNvY2tldENoYW5uZWxNZXNzYWdlc1JlcGxp
ZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDdhZDQ5ZTM3MzVmNGI0NzhjNDE2
ZDkyOTVjMTM5YmU5OGZkNmNlNGEuLjM1MWZmYWUwYTU4NjYwYzFkMTJmZjlhY2Q4NzdkMjdjNTFj
MDdkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysg
Yi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTEzMyw2ICsxMzMsOCBAQCBN
RVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJEb3dubG9hZFRhc2sgXAogCU5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlckZldGNoVGFzayBcCiAJTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gXAorCU5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtl
ci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uIFwKKwlOZXR3b3JrUHJvY2Vzcy9TaGFy
ZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBcCiAJTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbSBcCiAJTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MgXAogCU5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlciBcCkBAIC0y
MjUsNiArMjI3LDggQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uIFwKIAlXZWJQcm9jZXNz
L1NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyIFwKKwlX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
IFwKKwlXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiBc
CiAJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIFwKIAlX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1dl
YlByb2Nlc3MgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBhMzRmNzliZGUzZTA4
MTY5NmQ3M2E1NWZiZjU5MDU4YmY2ZDhmMzc5Li5jN2IxN2ZkNzA3ODU0YjEyODQ5OGQxMTE4ZjRl
NmU3ZDViM2Q4NWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNjYsNiArNjYs
MTEgQEAKICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1
ZGUgIldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29y
a2VyU2VydmVyLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgor
I2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVFRQQ29v
a2llQWNjZXB0UG9saWN5Lmg+CkBAIC0xMzIsNiArMTM3LDcgQEAgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtQcm9jZXNz
JiBuZXQKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgZXN0YWJsaXNoU1dTZXJ2ZXJD
b25uZWN0aW9uKCk7CiAjZW5kaWYKKyAgICBlc3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uKCk7CiB9CiAKIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp+TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQpAQCAtMTY2LDYgKzE3Miw3IEBAIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKICAgICB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7CiAjZW5k
aWYKKyAgICB1bnJlZ2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOwogfQogCiB2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYXNVcGxvYWRTdGF0ZUNoYW5nZWQoYm9vbCBo
YXNVcGxvYWQpCkBAIC0yNzUsNiArMjgyLDE3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvCiAg
ICAgfQogI2VuZGlmCiAKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0g
TWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSkgeworICAgICAgICBpZiAobV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uKQorICAgICAg
ICAgICAgbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBpZiAo
bV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbikKKyAgICAgICAgICAgIG1fc2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1P
VEVfVUkpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKQogICAg
ICAgICByZXR1cm4gcGF5bWVudENvb3JkaW5hdG9yKCkuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2Rlcik7CkBAIC0zOTgsOSArNDE2LDggQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBu
dWxscHRyOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAjZW5kaWYKKyAg
ICBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKIAogICAgIC8vIFBy
b3RlY3Qgb3Vyc2VsZiBhcyB3ZSBtaWdodCBiZSBvdGhlcndpc2UgYmUgZGVsZXRlZCBkdXJpbmcg
dGhpcyBmdW5jdGlvbi4KICAgICBSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IHBy
b3RlY3RvcigqdGhpcyk7CkBAIC00NDEsNiArNDU4LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7CiAj
ZW5kaWYKKyAgICB1bnJlZ2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOwogCiAjaWYgRU5B
QkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAgbV9wYXltZW50Q29vcmRpbmF0b3IgPSBudWxs
cHRyOwpAQCAtMTE4Niw2ICsxMjA0LDYxIEBAIHNpemVfdCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6ZmluZE5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoV2ViQ29yZTo6UmVzb3VyCiAgICAg
ICAgIHJldHVybiBpdGVtLnJlc291cmNlSUQgPT0gcmVzb3VyY2VJRDsKICAgICB9KTsKIH0KKwor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2hhcmVkV29ya2Vy
Q29udGV4dENvbm5lY3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2hh
cmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb246Iik7Cisg
ICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7CisgICAgaWYgKGF1dG8qIHN3U2Vy
dmVyID0gc2Vzc2lvbiA/IHNlc3Npb24tPnNoYXJlZFdvcmtlclNlcnZlcigpIDogbnVsbHB0cikK
KyAgICAgICAgbV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4oKnRoaXMsIFdURk1vdmUocmVn
aXN0cmFibGVEb21haW4pLCAqc3dTZXJ2ZXIpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9
CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb24oKQoreworICAgIGlmIChtX3NoYXJlZFdvcmtlckNvbm5lY3Rp
b24pCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lv
bigpOworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgQ09OTkVDVElP
Tl9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uOiIpOworCisgICAgYXV0byYgc2VydmVyID0gc2Vzc2lvbi0+ZW5zdXJlU2hhcmVk
V29ya2VyU2VydmVyKCk7CisgICAgYXV0byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uPihtX25ldHdvcmtQcm9jZXNzLCBzZXJ2ZXIsIG1fY29u
bmVjdGlvbi5nZXQoKSwgbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7CisKKyAgICBtX3NoYXJlZFdv
cmtlckNvbm5lY3Rpb24gPSAqY29ubmVjdGlvbjsKKyAgICBzZXJ2ZXIuYWRkQ29ubmVjdGlvbihX
VEZNb3ZlKGNvbm5lY3Rpb24pKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Y2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpCit7CisgICAgQ09OTkVD
VElPTl9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJjbG9zZVNoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uOiIpOworICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBudWxs
cHRyOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVy
U2hhcmVkV29ya2VyQ29ubmVjdGlvbigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhT
aGFyZWRXb3JrZXIsICJ1bnJlZ2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbjoiKTsKKyAgICBp
ZiAobV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uKQorICAgICAgICBtX3NoYXJlZFdvcmtlckNvbm5l
Y3Rpb24tPnNlcnZlcigpLnJlbW92ZUNvbm5lY3Rpb24obV9zaGFyZWRXb3JrZXJDb25uZWN0aW9u
LT53ZWJQcm9jZXNzSWRlbnRpZmllcigpKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6c2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25n
ZXJOZWVkZWQoKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAi
c2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQ6Iik7
CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6U2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ob0xvbmdlck5lZWRlZCB7IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CisKKyAgICBt
X3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKK30KKworV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbiogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNo
YXJlZFdvcmtlckNvbm5lY3Rpb24oKQoreworICAgIGlmICghbV9zaGFyZWRXb3JrZXJDb25uZWN0
aW9uKQorICAgICAgICBlc3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCk7Cisg
ICAgcmV0dXJuIG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbi5nZXQoKTsKK30KICAgICAKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojp1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBh
Yjk2NjU3ZDBkZjRhMjMzMTA0MGFjNTFmYzQzYzA2ODQ3ODQ4MDQ3Li5kMGFhNGVmNzQ1MjBhMmNh
MGI1NTFiNDY5ZTg2ZWE3NjY4YjY3OGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC05
Miw2ICs5Miw4IEBAIGNsYXNzIE5ldHdvcmtTb2NrZXRTdHJlYW07CiBjbGFzcyBTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrOwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwogY2xhc3MgV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb247
CiAKIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogc3RydWN0IERhdGFLZXk7CkBAIC0xODUsNiAr
MTg3LDkgQEAgcHVibGljOgogICAgIFdlYlNXU2VydmVyQ29ubmVjdGlvbiogc3dDb25uZWN0aW9u
KCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IGNyZWF0ZUZl
dGNoVGFzayhOZXR3b3JrUmVzb3VyY2VMb2FkZXImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmKTsKICNlbmRpZgorICAgIHZvaWQgc2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKTsKKworICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb24qIHNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKIAogICAgIE5ldHdvcmtTY2hlbWVS
ZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkoKSB7IHJldHVybiBtX3NjaGVtZVJlZ2lzdHJ5LmdldCgp
OyB9CiAKQEAgLTI1Myw2ICsyNTgsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlU29ja2V0
Q2hhbm5lbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHBy
b3RvY29sLCBXZWJDb3JlOjpXZWJTb2NrZXRJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKICAgICB2b2lkIHVwZGF0ZVF1b3Rh
QmFzZWRPblNwYWNlVXNhZ2VGb3JUZXN0aW5nKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYp
OwogCisgICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCk7Cisg
ICAgdm9pZCB1bnJlZ2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOworCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKCk7
CiAgICAgdm9pZCBlc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTI2MCw2ICsyNjgsOSBA
QCBwcml2YXRlOgogICAgIHZvaWQgdW5yZWdpc3RlclNXQ29ubmVjdGlvbigpOwogI2VuZGlmCiAK
KyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBjbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uKCk7CisKICAgICB2b2lkIGNyZWF0ZVJUQ1Byb3ZpZGVyKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgdm9pZCBjb25uZWN0VG9SVENE
YXRhQ2hhbm5lbFJlbW90ZVNvdXJjZShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIg
c291cmNlLCBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgaGFuZGxlciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPGJvb2w+KT4mJik7CkBAIC00MDQsNiArNDE1
LDggQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4gbV9zd0Nv
bm5lY3Rpb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbj4gbV9zd0NvbnRleHRDb25uZWN0aW9uOwogI2VuZGlmCisgICAgV2Vha1B0cjxXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uPiBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb247CisgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+
IG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb247CiAKICNpZiBFTkFCTEUoV0VCX1JUQykK
ICAgICBib29sIG1faXNSZWdpc3RlcmVkVG9SVENEYXRhQ2hhbm5lbFByb3h5IHsgZmFsc2UgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDI0MjgzNTA1
MGIyNDk3MGM1ZWFjMWUyNmJmODZiNWIwMjVhODBlNTMuLmI5N2NhMzQ3OWI0ZDlkNTU3OWE3ZTdl
NTVhNjkxYTYwZGQ4ODY2YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgpAQCAtODgsNiArODgsOSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgQ2xvc2VTV0NvbnRleHRDb25uZWN0aW9u
KCkKICNlbmRpZgogCisgICAgRXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24o
V2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiBkb21haW4pIC0+ICgpIEFzeW5jCisgICAgQ2xvc2VTaGFyZWRXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvbigpCisKICAgICBDcmVhdGVSVENQcm92aWRlcigpIC0+ICgpIEFz
eW5jCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgQ29ubmVjdFRvUlRDRGF0YUNoYW5uZWxSZW1v
dGVTb3VyY2Uoc3RydWN0IFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBzb3VyY2Us
IHN0cnVjdCBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgaGFuZGxlcikgLT4gKHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gcmVzdWx0KSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCBlMmIyNGQ4MzIyYjZlYzFjMzc3MDFk
Y2FkNDk3NTM0Y2VmMjMxYTI2Li5kNzYxNjI4NTBjYWQ4NDM4ZjAwODg5MDUzZjdlZGM4MmYzZTMz
YTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
LmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2ViU1dPcmlnaW5TdG9y
ZS5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlci5oIgogI2luY2x1ZGUgIldlYlNv
Y2tldFRhc2suaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZUphci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CkBAIC02NTMsNiArNjU0LDEzIEBAIGJvb2wgTmV0d29y
a1Nlc3Npb246Omhhc1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBhdGgoKSBjb25zdAogCiAjZW5kaWYg
Ly8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIE5ldHdv
cmtTZXNzaW9uOjplbnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKQoreworICAgIGlmICghbV9zaGFy
ZWRXb3JrZXJTZXJ2ZXIpCisgICAgICAgIG1fc2hhcmVkV29ya2VyU2VydmVyID0gbWFrZVVuaXF1
ZTxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fc2hhcmVkV29y
a2VyU2VydmVyOworfQorCiBXZWJJREJTZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVXZWJJ
REJTZXJ2ZXIoKQogewogICAgIGlmICghbV93ZWJJREJTZXJ2ZXIpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAppbmRleCAxOTMwN2NmNDBiZTNiMmYy
NjA1N2QwMTZjNzY2ZWRjZTQ5OGM5NTQyLi4zZjlkNmM5NTUwYThiOGNlYzllNGM1NTlkMzFkMTIx
YTk4YjBlODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5oCkBAIC03OSw2ICs3OSw3IEBAIGNsYXNzIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s7CiBj
bGFzcyBXZWJJREJTZXJ2ZXI7CiBjbGFzcyBXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnM7CiBjbGFz
cyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXI7CiBjbGFzcyBXZWJTb2NrZXRUYXNrOwogY2xhc3MgV2ViU1dPcmlnaW5TdG9yZTsKIGNs
YXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKQEAgLTIxMCw2ICsyMTEsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihib29sIHByb2Nlc3NUZXJtaW5hdGlvbkRl
bGF5RW5hYmxlZCwgU3RyaW5nJiYgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSwg
Y29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CiAjZW5kaWYKIAorICAgIFdlYlNoYXJl
ZFdvcmtlclNlcnZlciogc2hhcmVkV29ya2VyU2VydmVyKCkgeyByZXR1cm4gbV9zaGFyZWRXb3Jr
ZXJTZXJ2ZXIuZ2V0KCk7IH0KKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIGVuc3VyZVNoYXJl
ZFdvcmtlclNlcnZlcigpOworCiAgICAgV2ViSURCU2VydmVyKiB3ZWJJREJTZXJ2ZXIoKSB7IHJl
dHVybiBtX3dlYklEQlNlcnZlci5nZXQoKTsgfQogICAgIFdlYklEQlNlcnZlciYgZW5zdXJlV2Vi
SURCU2VydmVyKCk7CiAgICAgdm9pZCBjbG9zZUlEQlNlcnZlcihDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwpAQCAtMzE4LDYgKzMyMiw3IEBAIHByb3RlY3RlZDoKICAgICBzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJJbmZvPiBtX3NlcnZpY2VXb3JrZXJJbmZvOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpTV1NlcnZlcj4gbV9zd1NlcnZlcjsKICNlbmRpZgorICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI+IG1fc2hhcmVkV29ya2VyU2VydmVyOwog
CiAgICAgU3RyaW5nIG1faWRiRGF0YWJhc2VQYXRoOwogICAgIFJlZlB0cjxXZWJJREJTZXJ2ZXI+
IG1fd2ViSURCU2VydmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODAw
OTEzOTUyODBjOGQ3NjBlZjFhMWQxMjFjMjE0NzVmNDk1ZWJiOAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtl
ci5jcHAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBIYXNoTWFwPFdlYkNvcmU6OlNoYXJl
ZFdvcmtlcklkZW50aWZpZXIsIFdlYlNoYXJlZFdvcmtlcio+JiBhbGxXb3JrZXJzKCkKK3sKKyAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxI
YXNoTWFwPFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFdlYlNoYXJlZFdvcmtlcio+
PiBhbGxXb3JrZXJzOworICAgIHJldHVybiBhbGxXb3JrZXJzOworfQorCitXZWJTaGFyZWRXb3Jr
ZXI6OldlYlNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIGtleSwg
Y29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYgd29ya2VyT3B0aW9ucykKKyAgICA6IG1faWRl
bnRpZmllcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQorICAg
ICwgbV9rZXkoa2V5KQorICAgICwgbV93b3JrZXJPcHRpb25zKHdvcmtlck9wdGlvbnMpCit7Cisg
ICAgQVNTRVJUKCFhbGxXb3JrZXJzKCkuY29udGFpbnMobV9pZGVudGlmaWVyKSk7CisgICAgYWxs
V29ya2VycygpLmFkZChtX2lkZW50aWZpZXIsIHRoaXMpOworfQorCitXZWJTaGFyZWRXb3JrZXI6
On5XZWJTaGFyZWRXb3JrZXIoKQoreworICAgIEFTU0VSVChhbGxXb3JrZXJzKCkuZ2V0KG1faWRl
bnRpZmllcikgPT0gdGhpcyk7CisgICAgYWxsV29ya2VycygpLnJlbW92ZShtX2lkZW50aWZpZXIp
OworfQorCitXZWJTaGFyZWRXb3JrZXIqIFdlYlNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIo
V2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIHJldHVy
biBhbGxXb3JrZXJzKCkuZ2V0KGlkZW50aWZpZXIpOworfQorCitXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiBXZWJTaGFyZWRXb3JrZXI6OnJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwoKSB9OworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzRiN2E0
YTg0M2NlZjlhMTdlYmMwYjNhNWZhNGNjZDRkMDYxNmIzNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5o
CkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
PFdlYkNvcmUvU2hhcmVkV29ya2VySWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hh
cmVkV29ya2VyS2V5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0Lmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9Xb3JrZXJGZXRjaFJlc3VsdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
V29ya2VyT3B0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlNo
YXJlZFdvcmtlcj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IFdlYlNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmLCBjb25zdCBX
ZWJDb3JlOjpXb3JrZXJPcHRpb25zJik7CisgICAgfldlYlNoYXJlZFdvcmtlcigpOworCisgICAg
c3RhdGljIFdlYlNoYXJlZFdvcmtlciogZnJvbUlkZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29y
a2VySWRlbnRpZmllcik7CisKKyAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICBjb25zdCBXZWJD
b3JlOjpTaGFyZWRXb3JrZXJLZXkmIGtleSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5OyB9CisgICAg
Y29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYgd29ya2VyT3B0aW9ucygpIGNvbnN0IHsgcmV0
dXJuIG1fd29ya2VyT3B0aW9uczsgfQorICAgIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYg
b3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9rZXkub3JpZ2luOyB9CisgICAgY29uc3QgVVJMJiB1
cmwoKSBjb25zdCB7IHJldHVybiBtX2tleS51cmw7IH0KKyAgICBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0OworICAgIEhhc2hNYXA8V2ViQ29yZTo6
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdl
UG9ydD4mIHNoYXJlZFdvcmtlck9iamVjdHMoKSB7IHJldHVybiBtX3NoYXJlZFdvcmtlck9iamVj
dHM7IH0KKworICAgIGJvb2wgaXNSdW5uaW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1J1bm5pbmc7
IH0KKyAgICB2b2lkIG1hcmtBc1J1bm5pbmcoKSB7IG1faXNSdW5uaW5nID0gdHJ1ZTsgfQorCisg
ICAgY29uc3QgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmIGZldGNoUmVzdWx0KCkgY29uc3Qg
eyByZXR1cm4gbV9mZXRjaFJlc3VsdDsgfQorICAgIHZvaWQgc2V0RmV0Y2hSZXN1bHQoV2ViQ29y
ZTo6V29ya2VyRmV0Y2hSZXN1bHQmJiBmZXRjaFJlc3VsdCkgeyBtX2ZldGNoUmVzdWx0ID0gV1RG
TW92ZShmZXRjaFJlc3VsdCk7IH0KKyAgICBib29sIGRpZEZpbmlzaEZldGNoaW5nKCkgY29uc3Qg
eyByZXR1cm4gISFtX2ZldGNoUmVzdWx0LnNjcmlwdDsgfQorCitwcml2YXRlOgorICAgIFdlYlNo
YXJlZFdvcmtlcihXZWJTaGFyZWRXb3JrZXImJikgPSBkZWxldGU7CisgICAgV2ViU2hhcmVkV29y
a2VyJiBvcGVyYXRvcj0oV2ViU2hhcmVkV29ya2VyJiYpID0gZGVsZXRlOworICAgIFdlYlNoYXJl
ZFdvcmtlcihjb25zdCBXZWJTaGFyZWRXb3JrZXImKSA9IGRlbGV0ZTsKKyAgICBXZWJTaGFyZWRX
b3JrZXImIG9wZXJhdG9yPShjb25zdCBXZWJTaGFyZWRXb3JrZXImKSA9IGRlbGV0ZTsKKworICAg
IFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFdlYkNv
cmU6OlNoYXJlZFdvcmtlcktleSBtX2tleTsKKyAgICBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIG1f
d29ya2VyT3B0aW9uczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQ+IG1fc2hhcmVkV29ya2Vy
T2JqZWN0czsKKyAgICBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCBtX2ZldGNoUmVzdWx0Owor
ICAgIGJvb2wgbV9pc1J1bm5pbmcgeyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtl
ci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYzY4
MzAyMTRkNDBjNDdmMjJlOTU1OWNjODZhZDcyNWFiNTEwNWIzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2Vy
U2VydmVyLmNwcApAQCAtMCwwICsxLDI2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIKKworI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCisjaW5j
bHVkZSAiV2ViU2hhcmVkV29ya2VyLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJLZXkuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtl
ckZldGNoUmVzdWx0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Xb3JrZXJPcHRpb25zLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OldlYlNoYXJlZFdvcmtl
clNlcnZlcihOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbikKKyAgICA6IG1fc2Vzc2lvbihzZXNzaW9u
KQoreworfQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6On5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIo
KSA9IGRlZmF1bHQ7CisKK1BBTDo6U2Vzc2lvbklEIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2Vz
c2lvbklEKCkKK3sKKyAgICByZXR1cm4gbV9zZXNzaW9uLnNlc3Npb25JRCgpOworfQorCit2b2lk
IFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtlcihXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJLZXkmJiBzaGFyZWRXb3JrZXJLZXksIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNm
ZXJyZWRNZXNzYWdlUG9ydCYmIHBvcnQsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJiB3b3JrZXJP
cHRpb25zKQoreworICAgIGF1dG8mIHNoYXJlZFdvcmtlciA9IG1fc2hhcmVkV29ya2Vycy5lbnN1
cmUoc2hhcmVkV29ya2VyS2V5LCBbJl0geworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJT
aGFyZWRXb3JrZXI+KHNoYXJlZFdvcmtlcktleSwgd29ya2VyT3B0aW9ucyk7CisgICAgfSkuaXRl
cmF0b3ItPnZhbHVlOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdv
cmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllcj0le3ByaXZhdGV9cywgc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzaGFyZWRX
b3JrZXItPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKworICAgIGlmIChzaGFyZWRXb3JrZXIt
Pndvcmtlck9wdGlvbnMoKS50eXBlICE9IHdvcmtlck9wdGlvbnMudHlwZSB8fCBzaGFyZWRXb3Jr
ZXItPndvcmtlck9wdGlvbnMoKS5jcmVkZW50aWFscyAhPSB3b3JrZXJPcHRpb25zLmNyZWRlbnRp
YWxzKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNoYXJlZFdvcmtlciwgIldlYlNoYXJl
ZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtlcjogQSB3b3JrZXIgYWxyZWFkeSBleGlz
dHMgd2l0aCB0aGlzIG5hbWUgYnV0IGhhcyBkaWZmZXJlbnQgdHlwZSAvIGNyZWRlbnRpYWxzIik7
CisgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQo
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkKKyAgICAg
ICAgICAgIHNlcnZlckNvbm5lY3Rpb24tPm5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRp
b24oc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgeyBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
OjpUeXBlOjpBY2Nlc3NDb250cm9sIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
c2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzKCkuYWRkKHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIsIHBvcnQpOworCisgICAgaWYgKHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2Vy
T2JqZWN0cygpLnNpemUoKSA+IDEpIHsKKyAgICAgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2Vy
LCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyOiBBIHNoYXJlZCB3
b3JrZXIgd2l0aCB0aGlzIFVSTCBhbHJlYWR5IGV4aXN0cyAobm93IHNoYXJlZCBieSAldSBzaGFy
ZWQgd29ya2VyIG9iamVjdHMpIiwgc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzKCku
c2l6ZSgpKTsKKyAgICAgICAgaWYgKHNoYXJlZFdvcmtlci0+ZGlkRmluaXNoRmV0Y2hpbmcoKSkg
eworICAgICAgICAgICAgaWYgKGF1dG8qIHNlcnZlckNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25z
LmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkpKQor
ICAgICAgICAgICAgICAgIHNlcnZlckNvbm5lY3Rpb24tPm5vdGlmeVdvcmtlck9iamVjdE9mTG9h
ZENvbXBsZXRpb24oc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgeyB9KTsKKyAgICAgICAg
fQorICAgICAgICBpZiAoc2hhcmVkV29ya2VyLT5pc1J1bm5pbmcoKSkgeworICAgICAgICAgICAg
YXV0byogY29udGV4dENvbm5lY3Rpb24gPSBtX2NvbnRleHRDb25uZWN0aW9ucy5nZXQoc2hhcmVk
V29ya2VyLT5yZWdpc3RyYWJsZURvbWFpbigpKTsKKyAgICAgICAgICAgIEFTU0VSVChjb250ZXh0
Q29ubmVjdGlvbik7CisgICAgICAgICAgICBpZiAoY29udGV4dENvbm5lY3Rpb24pCisgICAgICAg
ICAgICAgICAgY29udGV4dENvbm5lY3Rpb24tPnBvc3RDb25uZWN0RXZlbnQoKnNoYXJlZFdvcmtl
ciwgcG9ydCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlQo
IXNoYXJlZFdvcmtlci0+aXNSdW5uaW5nKCkpOworCisgICAgYXV0byogc2VydmVyQ29ubmVjdGlv
biA9IG1fY29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vz
c0lkZW50aWZpZXIoKSk7CisgICAgQVNTRVJUKHNlcnZlckNvbm5lY3Rpb24pOworCisgICAgUkVM
RUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZXF1ZXN0U2hh
cmVkV29ya2VyOiBGZXRjaGluZyBzaGFyZWQgd29ya2VyIHNjcmlwdCBpbiBjbGllbnQiKTsKKyAg
ICBzZXJ2ZXJDb25uZWN0aW9uLT5mZXRjaFNjcmlwdEluQ2xpZW50KCpzaGFyZWRXb3JrZXIsIHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9
LCBzaGFyZWRXb3JrZXIgPSBXZWFrUHRyIHsgKnNoYXJlZFdvcmtlciB9XShXZWJDb3JlOjpXb3Jr
ZXJGZXRjaFJlc3VsdCYmIGZldGNoUmVzdWx0KSB7CisgICAgICAgIGlmICh3ZWFrVGhpcyAmJiBz
aGFyZWRXb3JrZXIpCisgICAgICAgICAgICB3ZWFrVGhpcy0+ZGlkRmluaXNoRmV0Y2hpbmdTaGFy
ZWRXb3JrZXJTY3JpcHQoKnNoYXJlZFdvcmtlciwgV1RGTW92ZShmZXRjaFJlc3VsdCkpOworICAg
IH0pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6ZGlkRmluaXNoRmV0Y2hpbmdT
aGFyZWRXb3JrZXJTY3JpcHQoV2ViU2hhcmVkV29ya2VyJiBzaGFyZWRXb3JrZXIsIFdlYkNvcmU6
OldvcmtlckZldGNoUmVzdWx0JiYgZmV0Y2hSZXN1bHQpCit7CisgICAgUkVMRUFTRV9MT0coU2hh
cmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpkaWRGaW5pc2hGZXRjaGluZ1NoYXJl
ZFdvcmtlclNjcmlwdCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCAiLCBzaGFyZWRX
b3JrZXI9JXAsIHN1Y2Nlc3M9JWQiLCBzaGFyZWRXb3JrZXIuaWRlbnRpZmllcigpLnRvVUludDY0
KCksICZzaGFyZWRXb3JrZXIsIGZldGNoUmVzdWx0LmVycm9yLmlzTnVsbCgpKTsKKworICAgIGZv
ciAoYXV0byBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIDogc2hhcmVkV29ya2VyLnNoYXJl
ZFdvcmtlck9iamVjdHMoKS5rZXlzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHNlcnZlckNvbm5l
Y3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnBy
b2Nlc3NJZGVudGlmaWVyKCkpKQorICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlvbi0+bm90aWZ5
V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LCBmZXRjaFJlc3VsdC5lcnJvcik7CisgICAgfQorCisgICAgaWYgKCFmZXRjaFJlc3VsdC5lcnJv
ci5pc051bGwoKSkgeworICAgICAgICBtX3NoYXJlZFdvcmtlcnMucmVtb3ZlKHNoYXJlZFdvcmtl
ci5rZXkoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaGFyZWRXb3JrZXIuc2V0
RmV0Y2hSZXN1bHQoV1RGTW92ZShmZXRjaFJlc3VsdCkpOworCisgICAgYXV0byByZWdpc3RyYWJs
ZURvbWFpbiA9IHNoYXJlZFdvcmtlci5yZWdpc3RyYWJsZURvbWFpbigpOworICAgIGF1dG8qIGNv
bnRleHRDb25uZWN0aW9uID0gY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihy
ZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKCFjb250ZXh0Q29ubmVjdGlvbikgeworICAgICAg
ICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBjb250ZXh0Q29ubmVjdGlvbi0+bGF1bmNoU2hhcmVkV29ya2Vy
KHNoYXJlZFdvcmtlcik7Cit9CisKK2Jvb2wgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpuZWVkc0Nv
bnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKSBjb25zdAoreworICAgIGZvciAoYXV0byYg
c2hhcmVkV29ya2VyIDogbV9zaGFyZWRXb3JrZXJzLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChy
ZWdpc3RyYWJsZURvbWFpbi5tYXRjaGVzKHNoYXJlZFdvcmtlci0+dXJsKCkpKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI6OmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKK3sKKyAgICBBU1NFUlQoIW1f
Y29udGV4dENvbm5lY3Rpb25zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSk7CisgICAgaWYg
KG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWlucy5jb250YWlucyhyZWdpc3RyYWJsZURv
bWFpbikpCisgICAgICAgIHJldHVybjsKKworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwg
IldlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24gd2lsbCBjcmVh
dGUgYSBjb25uZWN0aW9uIik7CisKKyAgICBtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFp
bnMuYWRkKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBtX3Nlc3Npb24ubmV0d29ya1Byb2Nlc3Mo
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHJlZ2lzdHJhYmxlRG9tYWluLCBtX3Nlc3Npb24uc2Vzc2lv
bklEKCkgfSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlZ2lzdHJhYmxl
RG9tYWluXSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVy
OjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbiBzaG91bGQgbm93IGhhdmUgY3JlYXRlZCBhIGNvbm5l
Y3Rpb24iKTsKKworICAgICAgICBBU1NFUlQobV9wZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21h
aW5zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSk7CisgICAgICAgIG1fcGVuZGluZ0NvbnRl
eHRDb25uZWN0aW9uRG9tYWlucy5yZW1vdmUocmVnaXN0cmFibGVEb21haW4pOworCisgICAgICAg
IGlmIChtX2NvbnRleHRDb25uZWN0aW9ucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKG5lZWRzQ29udGV4dENvbm5lY3Rpb25G
b3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgICAgICBjcmVh
dGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbik7CisgICAgfSwgMCk7Cit9CisK
K3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjphZGRDb250ZXh0Q29ubmVjdGlvbihXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbikKK3sK
KyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmFk
ZENvbnRleHRDb25uZWN0aW9uKCVwKSB3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQsICZj
b250ZXh0Q29ubmVjdGlvbiwgY29udGV4dENvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIo
KS50b1VJbnQ2NCgpKTsKKworICAgIEFTU0VSVCghbV9jb250ZXh0Q29ubmVjdGlvbnMuY29udGFp
bnMoY29udGV4dENvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSkpOworCisgICAgbV9jb250
ZXh0Q29ubmVjdGlvbnMuYWRkKGNvbnRleHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCks
ICZjb250ZXh0Q29ubmVjdGlvbik7CisKKyAgICBjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoY29u
dGV4dENvbm5lY3Rpb24pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3Zl
Q29udGV4dENvbm5lY3Rpb24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
biYgY29udGV4dENvbm5lY3Rpb24pCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAi
V2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1vdmVDb250ZXh0Q29ubmVjdGlvbiglcCkgd2ViUHJv
Y2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCAmY29udGV4dENvbm5lY3Rpb24sIGNvbnRleHRDb25u
ZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBhdXRvIHJl
Z2lzdHJhYmxlRG9tYWluID0gY29udGV4dENvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKTsK
KworICAgIEFTU0VSVChtX2NvbnRleHRDb25uZWN0aW9ucy5nZXQocmVnaXN0cmFibGVEb21haW4p
ID09ICZjb250ZXh0Q29ubmVjdGlvbik7CisKKyAgICBtX2NvbnRleHRDb25uZWN0aW9ucy5yZW1v
dmUocmVnaXN0cmFibGVEb21haW4pOworCisgICAgaWYgKG5lZWRzQ29udGV4dENvbm5lY3Rpb25G
b3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgIGNyZWF0ZUNv
bnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluKTsKK30KKwordm9pZCBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbikKK3sKKyAgICBSRUxFQVNF
X0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNvbnRleHRDb25uZWN0
aW9uQ3JlYXRlZCglcCkgd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCAmY29udGV4dENv
bm5lY3Rpb24sIGNvbnRleHRDb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50
NjQoKSk7CisgICAgYXV0byYgcmVnaXN0cmFibGVEb21haW4gPSBjb250ZXh0Q29ubmVjdGlvbi5y
ZWdpc3RyYWJsZURvbWFpbigpOworICAgIGZvciAoYXV0byYgc2hhcmVkV29ya2VyIDogbV9zaGFy
ZWRXb3JrZXJzLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChzaGFyZWRXb3JrZXItPmRpZEZpbmlz
aEZldGNoaW5nKCkgJiYgcmVnaXN0cmFibGVEb21haW4ubWF0Y2hlcyhzaGFyZWRXb3JrZXItPnVy
bCgpKSkKKyAgICAgICAgICAgIGNvbnRleHRDb25uZWN0aW9uLmxhdW5jaFNoYXJlZFdvcmtlcigq
c2hhcmVkV29ya2VyKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpz
aGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJL
ZXkmIHNoYXJlZFdvcmtlcktleSwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQoreworICAgIGF1dG8qIHNoYXJlZFdvcmtl
ciA9IG1fc2hhcmVkV29ya2Vycy5nZXQoc2hhcmVkV29ya2VyS2V5KTsKKyAgICBSRUxFQVNFX0xP
RyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNoYXJlZFdvcmtlck9iamVj
dElzR29pbmdBd2F5OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMsIHNo
YXJlZFdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51
dGY4KCkuZGF0YSgpLCBzaGFyZWRXb3JrZXIpOworICAgIGlmICghc2hhcmVkV29ya2VyKQorICAg
ICAgICByZXR1cm47CisKKyAgICBzaGFyZWRXb3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMoKS5y
ZW1vdmUoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgaWYgKCFzaGFyZWRXb3Jr
ZXItPnNoYXJlZFdvcmtlck9iamVjdHMoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHNodXREb3duU2hhcmVkV29ya2VyKHNoYXJlZFdvcmtlcktleSk7Cit9CisKK3ZvaWQgV2Vi
U2hhcmVkV29ya2VyU2VydmVyOjpzaHV0RG93blNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpT
aGFyZWRXb3JrZXJLZXkmIGtleSkKK3sKKyAgICBhdXRvIHNoYXJlZFdvcmtlciA9IG1fc2hhcmVk
V29ya2Vycy50YWtlKGtleSk7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hh
cmVkV29ya2VyU2VydmVyOjpzaHV0RG93blNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRp
Zmllcj0lIiBQUkl1NjQgIiwgc2hhcmVkV29ya2VyPSVwIiwgc2hhcmVkV29ya2VyID8gc2hhcmVk
V29ya2VyLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSA6IDAsIHNoYXJlZFdvcmtlci5nZXQoKSk7
CisgICAgaWYgKCFzaGFyZWRXb3JrZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIGNv
bnRleHRDb25uZWN0aW9uID0gY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihz
aGFyZWRXb3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgIGlmICghY29udGV4dENvbm5l
Y3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnRleHRDb25uZWN0aW9uLT50ZXJtaW5h
dGVTaGFyZWRXb3JrZXIoKnNoYXJlZFdvcmtlcik7CisKKyAgICBpZiAoIW5lZWRzQ29udGV4dENv
bm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihzaGFyZWRXb3JrZXItPnJlZ2lzdHJhYmxlRG9t
YWluKCkpKQorICAgICAgICBjb250ZXh0Q29ubmVjdGlvbi0+Y29ubmVjdGlvbklzTm9Mb25nZXJO
ZWVkZWQoKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmFkZENvbm5lY3Rpb24o
c3RkOjp1bmlxdWVfcHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24+JiYgY29ubmVj
dGlvbikKK3sKKyAgICBhdXRvIHByb2Nlc3NJZGVudGlmaWVyID0gY29ubmVjdGlvbi0+d2ViUHJv
Y2Vzc0lkZW50aWZpZXIoKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6OmFkZENvbm5lY3Rpb24oJXApOiBwcm9jZXNzSWRlbnRpZmllcj0lIiBQ
Ukl1NjQsIGNvbm5lY3Rpb24uZ2V0KCksIHByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCkpOwor
ICAgIEFTU0VSVCghbV9jb25uZWN0aW9ucy5jb250YWlucyhwcm9jZXNzSWRlbnRpZmllcikpOwor
ICAgIG1fY29ubmVjdGlvbnMuYWRkKHByb2Nlc3NJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbm5lY3Rp
b24pKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlbW92ZUNvbm5lY3Rpb24o
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIpCit7CisgICAgYXV0
byBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy50YWtlKHByb2Nlc3NJZGVudGlmaWVyKTsKKyAg
ICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlbW92
ZUNvbm5lY3Rpb24oJXApOiBwcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQsIGNvbm5lY3Rpb24u
Z2V0KCksIHByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIEFTU0VSVChjb25uZWN0
aW9uKTsKKworICAgIFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5LCBX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPj4gc2hhcmVkV29ya2VyT2JqZWN0
c0dvaW5nQXdheTsKKyAgICBmb3IgKGF1dG8mIHNoYXJlZFdvcmtlciA6IG1fc2hhcmVkV29ya2Vy
cy52YWx1ZXMoKSkgeworICAgICAgICBmb3IgKGF1dG8mIHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIgOiBzaGFyZWRXb3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMoKS5rZXlzKCkpIHsKKyAg
ICAgICAgICAgIGlmIChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlm
aWVyKCkgPT0gcHJvY2Vzc0lkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgc2hhcmVkV29ya2Vy
T2JqZWN0c0dvaW5nQXdheS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc2hhcmVkV29ya2VyLT5rZXko
KSwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikpOworICAgICAgICB9CisgICAgfQorICAg
IGZvciAoYXV0byYgW3NoYXJlZFdvcmtlcktleSwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
cl0gOiBzaGFyZWRXb3JrZXJPYmplY3RzR29pbmdBd2F5KQorICAgICAgICBzaGFyZWRXb3JrZXJP
YmplY3RJc0dvaW5nQXdheShzaGFyZWRXb3JrZXJLZXksIHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIpOworfQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21h
aW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0KGRvbWFpbik7Cit9CisKK3ZvaWQgV2Vi
U2hhcmVkV29ya2VyU2VydmVyOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6
U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIGF1dG8qIHNoYXJlZFdvcmtlciA9IFdlYlNoYXJl
ZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIoc2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgUkVM
RUFTRV9MT0dfRVJST1IoU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpwb3N0
RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Q6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0
ICIsIHNoYXJlZFdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSwg
c2hhcmVkV29ya2VyKTsKKyAgICBpZiAoIXNoYXJlZFdvcmtlcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZm9yIChhdXRvIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgOiBzaGFyZWRXb3Jr
ZXItPnNoYXJlZFdvcmtlck9iamVjdHMoKS5rZXlzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHNl
cnZlckNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkpKQorICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlv
bi0+cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwpOwor
ICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtl
clNlcnZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyZDgwMzgwOTM2ZGVhZmE0YjBmMzEyMzQ5MjA5N2QzZDg3
Mzk5NjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1No
YXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaApAQCAtMCwwICsxLDgzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlm
aWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmll
ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VySWRlbnRpZmllci5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvVHJhbnNmZXJyZWRNZXNzYWdlUG9ydC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOworCitzdHJ1
Y3QgQ2xpZW50T3JpZ2luOworc3RydWN0IFNoYXJlZFdvcmtlcktleTsKK3N0cnVjdCBXb3JrZXJG
ZXRjaFJlc3VsdDsKK3N0cnVjdCBXb3JrZXJPcHRpb25zOworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgTmV0d29ya1Nlc3Npb247CitjbGFzcyBXZWJTaGFyZWRXb3JrZXI7CitjbGFz
cyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVy
IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlcj4geworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYlNoYXJlZFdv
cmtlclNlcnZlcihOZXR3b3JrU2Vzc2lvbiYpOworICAgIH5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIo
KTsKKworICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpOworICAgIFdlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIGNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFi
bGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKKworICAg
IHZvaWQgcmVxdWVzdFNoYXJlZFdvcmtlcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmJiwgV2Vi
Q29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRN
ZXNzYWdlUG9ydCYmLCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYpOworICAgIHZvaWQgc2hhcmVk
V29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5Jiwg
V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgdm9pZCBwb3N0RXhj
ZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisKKyAgICB2b2lkIGFkZENvbnRleHRDb25uZWN0
aW9uKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKKyAgICB2b2lk
IHJlbW92ZUNvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24mKTsKKyAgICB2b2lkIGFkZENvbm5lY3Rpb24oc3RkOjp1bmlxdWVfcHRyPFdlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24+JiYpOworICAgIHZvaWQgcmVtb3ZlQ29ubmVjdGlv
bihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBjcmVh
dGVDb250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOwor
ICAgIGJvb2wgbmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CisgICAgdm9pZCBjb250ZXh0Q29u
bmVjdGlvbkNyZWF0ZWQoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYp
OworICAgIHZvaWQgZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRXb3JrZXJTY3JpcHQoV2ViU2hhcmVk
V29ya2VyJiwgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJik7CisgICAgdm9pZCBzaHV0RG93
blNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmKTsKKworICAgIE5l
dHdvcmtTZXNzaW9uJiBtX3Nlc3Npb247CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24+
PiBtX2Nvbm5lY3Rpb25zOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4s
IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qPiBtX2NvbnRleHRDb25u
ZWN0aW9uczsKKyAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBtX3BlbmRp
bmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpTaGFyZWRX
b3JrZXJLZXksIHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXI+PiBtX3NoYXJlZFdvcmtl
cnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDY0MWMxODljMmYy
OTlkYjU5OTk0NWEzNzM1YTgxZDU0ZjU4ZGE5ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCIKKwor
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyLmgiCisjaW5jbHVkZSAi
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9Xb3JrZXJGZXRjaFJlc3VsdC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworI2RlZmlu
ZSBDT05ORUNUSU9OX01FU1NBR0VfQ0hFQ0soYXNzZXJ0aW9uKSBDT05ORUNUSU9OX01FU1NBR0Vf
Q0hFQ0tfQ09NUExFVElPTihhc3NlcnRpb24sICh2b2lkKTApCisjZGVmaW5lIENPTk5FQ1RJT05f
TUVTU0FHRV9DSEVDS19DT01QTEVUSU9OKGFzc2VydGlvbiwgY29tcGxldGlvbikgZG8geyBcCisg
ICAgQVNTRVJUKGFzc2VydGlvbik7IFwKKyAgICBpZiAoVU5MSUtFTFkoIShhc3NlcnRpb24pKSkg
eyBcCisgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlRlcm1pbmF0ZVdlYlByb2Nlc3Mo
bV93ZWJQcm9jZXNzSWRlbnRpZmllciksIDApOyBcCisgICAgICAgIHsgY29tcGxldGlvbjsgfSBc
CisgICAgICAgIHJldHVybjsgXAorICAgIH0gXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBDT05O
RUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIl
cCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIudG9VSW50
NjQoKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJP
UihmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoU2hhcmVkV29ya2VyLCAiJXAgLSBbd2ViUHJv
Y2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b246OiIgZm10LCB0aGlzLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCksICMjX19W
QV9BUkdTX18pCisKK1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OldlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllcikKKyAgICA6IG1f
Y29udGVudENvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0
d29ya1Byb2Nlc3MpCisgICAgLCBtX3NlcnZlcihzZXJ2ZXIpCisgICAgLCBtX3dlYlByb2Nlc3NJ
ZGVudGlmaWVyKHdlYlByb2Nlc3NJZGVudGlmaWVyKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFT
RV9MT0coIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Iik7Cit9CisKK1dlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb246On5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
KCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJ+V2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbjoiKTsKK30KKworSVBDOjpDb25uZWN0aW9uKiBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fY29udGVudENvbm5lY3Rpb24ucHRyKCk7Cit9CisKK1BBTDo6U2Vzc2lvbklEIFdlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OnNlc3Npb25JRCgpCit7CisgICAgcmV0dXJuIHNl
cnZlcigpLnNlc3Npb25JRCgpOworfQorCitOZXR3b3JrU2Vzc2lvbiogV2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbjo6c2Vzc2lvbigpCit7CisgICAgcmV0dXJuIG1fbmV0d29ya1Byb2Nl
c3MtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uOjpyZXF1ZXN0U2hhcmVkV29ya2VyKFdlYkNvcmU6OlNoYXJlZFdv
cmtlcktleSYmIHNoYXJlZFdvcmtlcktleSwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXZWJDb3JlOjpUcmFuc2ZlcnJl
ZE1lc3NhZ2VQb3J0JiYgcG9ydCwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlv
bnMpCit7CisgICAgQ09OTkVDVElPTl9NRVNTQUdFX0NIRUNLKHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsK
KyAgICBDT05ORUNUSU9OX01FU1NBR0VfQ0hFQ0soc2hhcmVkV29ya2VyS2V5Lm5hbWUgPT0gd29y
a2VyT3B0aW9ucy5uYW1lKTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJyZXF1ZXN0U2hh
cmVkV29ya2VyOiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMiLCBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
aWYgKGF1dG8qIHNlc3Npb24gPSB0aGlzLT5zZXNzaW9uKCkpCisgICAgICAgIHNlc3Npb24tPmVu
c3VyZVNoYXJlZFdvcmtlclNlcnZlcigpLnJlcXVlc3RTaGFyZWRXb3JrZXIoV1RGTW92ZShzaGFy
ZWRXb3JrZXJLZXkpLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXVEZNb3ZlKHBvcnQp
LCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMpKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uOjpzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJLZXkmJiBzaGFyZWRXb3JrZXJLZXksIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK3sKKyAgICBDT05ORUNU
SU9OX01FU1NBR0VfQ0hFQ0soc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRl
bnRpZmllcigpID09IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOworICAgIENPTk5FQ1RJT05fUkVM
RUFTRV9MT0coInNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5OiBzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyPSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRv
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSB0aGlzLT5z
ZXNzaW9uKCkpCisgICAgICAgIHNlc3Npb24tPmVuc3VyZVNoYXJlZFdvcmtlclNlcnZlcigpLnNo
YXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KHNoYXJlZFdvcmtlcktleSwgc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbjo6ZmV0Y2hTY3JpcHRJbkNsaWVudChjb25zdCBXZWJTaGFyZWRXb3JrZXImIHNoYXJlZFdv
cmtlciwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldvcmtlckZl
dGNoUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIENPTk5FQ1RJT05fUkVM
RUFTRV9MT0coImZldGNoU2NyaXB0SW5DbGllbnQ6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb246OkZldGNoU2NyaXB0SW5DbGllbnQgeyBzaGFyZWRXb3Jr
ZXIudXJsKCksIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHNoYXJlZFdvcmtlci53b3Jr
ZXJPcHRpb25zKCkgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Om5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENv
bXBsZXRpb24oV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikK
K3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRD
b21wbGV0aW9uOiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMsIHN1Y2Nl
c3M9JWQiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSwgZXJyb3IuaXNOdWxsKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb246Ok5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24geyBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBlcnJvciB9KTsKK30KKwordm9pZCBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBj
b2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIENPTk5FQ1RJT05f
UkVMRUFTRV9MT0dfRVJST1IoInBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdDogc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OlBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdCB7
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCBzb3VyY2VVUkwgfSk7Cit9CisKKyN1bmRlZiBDT05ORUNUSU9OX1JFTEVB
U0VfTE9HCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUgorI3VuZGVmIENPTk5F
Q1RJT05fTUVTU0FHRV9DSEVDSworI3VuZGVmIENPTk5FQ1RJT05fTUVTU0FHRV9DSEVDS19DT01Q
TEVUSU9OCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiZjc3NWQwYThmNWNiNzFj
N2YzNDZhMTU1NDhkY2QyZGI0MTMxYjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uLmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworc3Ry
dWN0IFdvcmtlckZldGNoUmVzdWx0Oworc3RydWN0IFdvcmtlck9wdGlvbnM7Cit9CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrUHJvY2VzczsKK2NsYXNzIFdlYlNoYXJlZFdv
cmtlcjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlcjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb24gOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oTmV0d29ya1Byb2Nlc3MmLCBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXImLCBJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
Zmllcik7CisgICAgfldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oKTsKKworICAgIFdl
YlNoYXJlZFdvcmtlclNlcnZlciYgc2VydmVyKCkgeyByZXR1cm4gbV9zZXJ2ZXI7IH0KKyAgICBj
b25zdCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vy
dmVyOyB9CisKKyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKTsKKyAgICBOZXR3b3JrU2Vz
c2lvbiogc2Vzc2lvbigpOworICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nl
c3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV93ZWJQcm9jZXNzSWRlbnRpZmllcjsgfQor
CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKSBmaW5hbDsKKworICAgIHZvaWQgZmV0Y2hTY3JpcHRJbkNsaWVudChjb25zdCBXZWJTaGFy
ZWRXb3JrZXImLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYpPiYmKTsKKyAgICB2
b2lkIG5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24oV2ViQ29yZTo6U2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOworICAg
IHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCitwcml2YXRl
OgorICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlci4KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3Nh
Z2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNl
bmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CisKKyAgICAvLyBJ
UEMgbWVzc2FnZXMuCisgICAgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKFdlYkNvcmU6OlNoYXJl
ZFdvcmtlcktleSYmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXZWJD
b3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJik7
CisgICAgdm9pZCBzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRX
b3JrZXJLZXkmJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisKKyAg
ICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2NvbnRlbnRDb25uZWN0aW9uOworICAgIFJlZjxOZXR3
b3JrUHJvY2Vzcz4gbV9uZXR3b3JrUHJvY2VzczsKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIm
IG1fc2VydmVyOworICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lk
ZW50aWZpZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1No
YXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ3MmE4N2I3ZWNmNDQ2YzkxOTRkM2FiZGJmMjI2MzBiNGIzMjVkZGMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjYg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4g
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKKyAgICBSZXF1
ZXN0U2hhcmVkV29ya2VyKHN0cnVjdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkgc2hhcmVkV29y
a2VyS2V5LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQgcG9ydCwg
c3RydWN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMgd29ya2VyT3B0aW9ucykKKyAgICBTaGFyZWRX
b3JrZXJPYmplY3RJc0dvaW5nQXdheShzdHJ1Y3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5IHNo
YXJlZFdvcmtlcktleSwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtl
ci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mZjg2YmM3ZDZhMmQ0MzFmMzgzNGRmODVlMWQyNjIzNDU2ZjVhOTg3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSwxMTEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hh
cmVkV29ya2VyLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKKyNkZWZpbmUgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0Vf
TE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNz
SWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6IiBmbXQsIHRoaXMsIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSwg
IyNfX1ZBX0FSR1NfXykKKworV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlcikK
KyAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQorICAgICwgbV9zZXJ2ZXIoc2VydmVyKQor
ICAgICwgbV9yZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikKK3sKKyAgICBDT05U
RVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246Iik7CisgICAgc2VydmVyLmFkZENvbnRleHRDb25uZWN0aW9uKCp0aGlzKTsK
K30KKworV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6fldlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQoreworICAgIENPTlRFWFRfQ09OTkVD
VElPTl9SRUxFQVNFX0xPRygifldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246Iik7CisgICAgaWYgKG1fc2VydmVyICYmIG1fc2VydmVyLT5jb250ZXh0Q29ubmVjdGlvbkZv
clJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKCkpID09IHRoaXMpCisgICAgICAg
IG1fc2VydmVyLT5yZW1vdmVDb250ZXh0Q29ubmVjdGlvbigqdGhpcyk7Cit9CisKK1dlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OndlYlByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0
aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCk7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiYgV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6aXBjQ29ubmVjdGlvbigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCk7Cit9CisKK0lQQzo6Q29u
bmVjdGlvbiogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2Fn
ZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiAmaXBjQ29ubmVjdGlvbigp
OworfQorCit1aW50NjRfdCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9
CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVj
dGlvbklzTm9Mb25nZXJOZWVkZWQoKQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNF
X0xPRygiY29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQ6Iik7CisgICAgbV9jb25uZWN0aW9uLnNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7Cit9
CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cG9zdEV4
Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hh
cmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAg
ICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coInBvc3RFeGNlcHRpb25Ub1dvcmtlck9i
amVjdDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50
aWZpZXIudG9VSW50NjQoKSk7CisgICAgaWYgKG1fc2VydmVyKQorICAgICAgICBtX3NlcnZlci0+
cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGVycm9y
TWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwpOworfQorCit2b2lk
IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmxhdW5jaFNoYXJlZFdv
cmtlcihXZWJTaGFyZWRXb3JrZXImIHNoYXJlZFdvcmtlcikKK3sKKyAgICBDT05URVhUX0NPTk5F
Q1RJT05fUkVMRUFTRV9MT0coImxhdW5jaFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRp
Zmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlci5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7Cisg
ICAgc2hhcmVkV29ya2VyLm1hcmtBc1J1bm5pbmcoKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkxhdW5jaFNoYXJlZFdvcmtlciB7
IHNoYXJlZFdvcmtlci5vcmlnaW4oKSwgc2hhcmVkV29ya2VyLmlkZW50aWZpZXIoKSwgc2hhcmVk
V29ya2VyLnVybCgpLCBzaGFyZWRXb3JrZXIud29ya2VyT3B0aW9ucygpLCBzaGFyZWRXb3JrZXIu
ZmV0Y2hSZXN1bHQoKSB9KTsKKyAgICBmb3IgKGF1dG8mIHBvcnQgOiBzaGFyZWRXb3JrZXIuc2hh
cmVkV29ya2VyT2JqZWN0cygpLnZhbHVlcygpKQorICAgICAgICBwb3N0Q29ubmVjdEV2ZW50KHNo
YXJlZFdvcmtlciwgcG9ydCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVudChjb25zdCBXZWJTaGFyZWRXb3JrZXImIHNo
YXJlZFdvcmtlciwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYgcG9ydCkK
K3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coInBvc3RDb25uZWN0RXZlbnQ6
IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXIuaWRlbnRpZmll
cigpLnRvVUludDY0KCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6UG9zdENvbm5lY3RFdmVudCB7IHNoYXJlZFdvcmtlci5pZGVu
dGlmaWVyKCksIHBvcnQsIHNoYXJlZFdvcmtlci5vcmlnaW4oKS5jbGllbnRPcmlnaW4udG9TdHJp
bmcoKSB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjp0ZXJtaW5hdGVTaGFyZWRXb3JrZXIoY29uc3QgV2ViU2hhcmVkV29ya2VyJiBzaGFyZWRX
b3JrZXIpCit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJ0ZXJtaW5hdGVT
aGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3Jr
ZXIuaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VGVybWluYXRlU2hhcmVkV29ya2VyIHsg
c2hhcmVkV29ya2VyLmlkZW50aWZpZXIoKSB9KTsKK30KKworI3VuZGVmIENPTlRFWFRfQ09OTkVD
VElPTl9SRUxFQVNFX0xPRworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kNmFlYTMxOWFhM2U4MGU2NzBkZWRiYzBjOGFiZDBmMmY2YjVjYTI0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsODAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VySWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvVHJhbnNmZXJyZWRNZXNzYWdlUG9ydC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFz
cyBSZWdpc3RyYWJsZURvbWFpbjsKK2NsYXNzIFNjcmlwdEJ1ZmZlcjsKK3N0cnVjdCBDbGllbnRP
cmlnaW47CitzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7CitzdHJ1Y3QgV29ya2VyT3B0aW9uczsK
K30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOworY2xhc3MgV2ViU2hhcmVkV29ya2VyOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyOworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIGZp
bmFsIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2Vp
dmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXImKTsKKyAgICB+V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bigpOworCisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZp
ZXIoKSBjb25zdDsKKyAgICBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0
cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9CisgICAg
SVBDOjpDb25uZWN0aW9uJiBpcGNDb25uZWN0aW9uKCkgY29uc3Q7CisKKyAgICB2b2lkIGxhdW5j
aFNoYXJlZFdvcmtlcihXZWJTaGFyZWRXb3JrZXImKTsKKyAgICB2b2lkIHBvc3RDb25uZWN0RXZl
bnQoY29uc3QgV2ViU2hhcmVkV29ya2VyJiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNz
YWdlUG9ydCYpOworICAgIHZvaWQgdGVybWluYXRlU2hhcmVkV29ya2VyKGNvbnN0IFdlYlNoYXJl
ZFdvcmtlciYpOworCisgICAgdm9pZCBjb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOworCisg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICAvLyBJUEMgbWVzc2FnZXMuCisgICAgdm9pZCBwb3N0
RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5k
ZXIuCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0
IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qg
ZmluYWw7CisKKyAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9jb25uZWN0aW9u
OworICAgIFdlYWtQdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyPiBtX3NlcnZlcjsKKyAgICBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hZTQ3YzEyMmNiYWM4NzNjMjJiNmRhM2JjMWVhNGRhMDY4ZTM1OTJhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsx
LDI1IEBACisjIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisj
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2Vz
IC0+IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gTm90UmVmQ291bnRl
ZCB7CisgICAgUG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtl
cklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgU3RyaW5nIGVycm9yTWVzc2FnZSwg
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFN0cmluZyBzb3VyY2VVUkwpCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDFjNDJkMDQwYzFhOTBiMGFhZGQxNGU4YjMzNWVm
OGRkYmJjYWY5ZDYuLmRlMzJmODE3MTcxNTY0N2Q1MzYxMDYyNmE0NzkxOTA0MDA3ZGViNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCkBAIC05Nyw2ICs5Nyw3IEBAIGV4dGVybiAiQyIgewog
ICAgIE0oU2VydmljZVdvcmtlcikgXAogICAgIE0oU2Vzc2lvblN0YXRlKSBcCiAgICAgTShTaGFy
ZWREaXNwbGF5TGlzdHMpIFwKKyAgICBNKFNoYXJlZFdvcmtlcikgXAogICAgIE0oU3RvcmFnZSkg
XAogICAgIE0oU3RvcmFnZUFQSSkgXAogICAgIE0oVGV4dElucHV0KSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA3ZWJmYTUxNmI1MDMzNmQzNjg3ZjdlY2Rk
MTdlOGU3ZWJkMWNkOWQ3Li40YzhjYWQwNDY0NzE2ZjczMzJhYWI1Yzc5OGI2YzFhYTU1YmI3OGNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cisr
KyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTMwMywxMCAr
MzAzLDEzIEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAg
ICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyJywKICAgICAg
ICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyJywKICAgICAg
ICAgJ1dlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2gnLAorICAgICAgICAnV2ViQ29yZTo6U2hhcmVk
V29ya2VySWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNsZWVwRGlzYWJsZXJJZGVudGlmaWVyJywK
ICAgICAgICAgJ1dlYkNvcmU6OlNvdXJjZUJ1ZmZlckFwcGVuZE1vZGUnLAogICAgICAgICAnV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcicsCiAgICAg
ICAgICdXZWJDb3JlOjpTdG9yYWdlVHlwZScsCisgICAgICAgICdXZWJDb3JlOjpUcmFuc2ZlcnJl
ZE1lc3NhZ2VQb3J0JywKICAgICAgICAgJ1dlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3RJZGVudGlm
aWVyJywKICAgICAgICAgJ1dlYkNvcmU6OldlYkxvY2tJZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YkNvcmU6OldlYlNvY2tldElkZW50aWZpZXInLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggNTdlZjNiMTRlYWYy
YzEwOTIwOThlZTk0MzJmNTA4YzYxMWU1OGUzNS4uZTMxMzkxMDU5Y2IzY2IyMDBhNDgzNzE5OWE0
OWQzMjE5Yzg0NDczZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0xNDEsNiArMTQxLDExIEBAIE5ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dPcmlnaW5TdG9yZS5jcHAgQG5vLXVuaWZ5CiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgQG5vLXVu
aWZ5CiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiAKK05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJT
aGFyZWRXb3JrZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29y
a2VyU2VydmVyLmNwcAorTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb24uY3BwCitOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKwogTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9G
aWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5LmNwcApAQCAtNzgzLDggKzc4OCw5IEBAIFdl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV09yaWdpblRhYmxlLmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlclByb3ZpZGVyLmNwcAotV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdv
cmtlclByb3ZpZGVyLmNwcAorV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uLmNwcAorV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtl
clByb3ZpZGVyLmNwcAogCiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlci5jcHAKIApAQCAtODg3LDMgKzg5Myw3IEBAIFJlbW90ZVdlYkxvY2tSZWdpc3RyeU1l
c3NhZ2VSZWNlaXZlci5jcHAKIFNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2tNZXNzYWdlUmVjZWl2
ZXIuY3BwCiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBX
ZWJMb2NrUmVnaXN0cnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKK1dlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKK1dlYlNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGE2
NzgzNjdhNzc1YTQ5YmE4MWIyNDg4Y2YzMWVhYjlkY2NjY2M5MjEuLjMzMDIwYmQ1YzNjZDk0MTc3
NTYxNTc5YWMyMGZjMzhmOWM2OTI3OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTI5LDcgKzUyOSw3
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6dGVybWluYXRlV2ViUHJvY2VzcyhXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRl
cm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIpCiB7CiAgICAgaWYgKFJlZlB0ciBwcm9jZXNz
ID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihwcm9jZXNzSWRlbnRpZmll
cikpIHsKLSAgICAgICAgcHJvY2Vzcy0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgICAg
IHByb2Nlc3MtPmRpc2FibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2Vy
dmljZVdvcmtlcik7CiAgICAgICAgIHByb2Nlc3MtPnJlcXVlc3RUZXJtaW5hdGlvbihQcm9jZXNz
VGVybWluYXRpb25SZWFzb246OkV4Y2VlZGVkQ1BVTGltaXQpOwogICAgIH0KIH0KQEAgLTE0MTUs
MTYgKzE0MTUsMjEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWREZXN0cm95V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkoV2ViVXNlckNvbnRlbnQKIH0KICNlbmRpZgogCit2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJh
YmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJs
aXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUo
cmVnaXN0cmFibGVEb21haW4pLCBzZXNzaW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKK30KKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFs
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50
aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hT
ZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKCp0aGlzLCBXVEZN
b3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBzZXNz
aW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBXZWJQcm9jZXNzUG9vbDo6
ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhX
VEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBz
ZXNzaW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpzZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRl
ZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIGlmIChhdXRv
KiBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihpZGVudGlm
aWVyKSkKLSAgICAgICAgcHJvY2Vzcy0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgICAg
IHByb2Nlc3MtPmRpc2FibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2Vy
dmljZVdvcmtlcik7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9j
ZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclBy
b2Nlc3NJZGVudGlmaWVyKQpAQCAtMTQ2MCw2ICsxNDY1LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6ZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlBy
b2Nlc3NJCiB9CiAjZW5kaWYKIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzaGFyZWRXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyIGlkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJv
eHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIpKQorICAgICAgICBwcm9jZXNzLT5k
aXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlcik7
Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2lu
LCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBz
cGFjZVJlcXVpcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IHF1b3RhKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSRUxFQVNFX0xPRyhTdG9y
YWdlLCAiJXAgLSBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlIiwgdGhp
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oCmluZGV4IGE0ZTM2NDVlYmFhZTMzNmQxODBiNTQxNGJhZmFhMzVkODNmOTE4
YzQuLjY4NDFhMzRmZTA5ZDEyYmE5M2Q0ZWY4YzgwZTQ1MzNhNTVmZDY1YzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
CkBAIC0zMzQsNiArMzM0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0U2VydmljZVdvcmtl
ckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJQcm9jZXNzSWRlbnRpZmllcik7CiAgICAgdm9pZCBlbmRTZXJ2aWNlV29ya2VyQmFja2dy
b3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclBy
b2Nlc3NJZGVudGlmaWVyKTsKICNlbmRpZgorICAgIHZvaWQgc2hhcmVkV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CisgICAg
dm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIHRlcm1pbmF0ZVdlYlByb2Nlc3MoV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggMTJkMDZjZWJkNjJhZjE3NTBlNzg4NTU5YzEzYTFiMzk4M2ZkZDJiYS4uMTU3NTdlZDlh
MjUyYjA5ZGNkMTFiYjVlNmI5YzhhMTBkMDUzNGM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbgpAQCAtNjAsNiArNjAsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5
IExlZ2FjeVJlY2VpdmVyIHsKICAgICBTdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vz
c2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50
aWZpZXIpCiAgICAgRW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikKICNlbmRp
ZgorICAgIEVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYworICAgIFNoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRp
ZmllcikKIAogICAgIFNldFdlYlByb2Nlc3NIYXNVcGxvYWRzKFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyIHByb2Nlc3NJRCwgYm9vbCBoYXNVcGxvYWQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGJiNDFjMTExYTMzNTllMGEyMzNmMzQ0ZDJmOWRlNmQw
MWMyOGE1NzAuLmU0MWZkODc4MDA5MDg2MTI5ZjcwNDMxMGMzMjJiZGVlYjZjNmQwNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzY5NCwxMSArMzY5NCw5
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KQog
ICAgICAgICByZXR1cm47CiAgICAgbV91c2VyQWdlbnQgPSBXVEZNb3ZlKHVzZXJBZ2VudCk7CiAK
LSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgLy8gV2UgdXBkYXRlIHRoZSBzZXJ2aWNl
IHdvcmtlciB0aGVyZSBhdCB0aGUgbW9tZW50IHRvIGJlIHN1cmUgd2UgdXNlIHZhbHVlcyB1c2Vk
IGJ5IGFjdHVhbCB3ZWIgcGFnZXMuCiAgICAgLy8gRklYTUU6IFJlZmFjdG9yIHRoaXMgd2hlbiB3
ZSBoYXZlIGEgYmV0dGVyIFVzZXItQWdlbnQgc3RvcnkuCi0gICAgcHJvY2VzcygpLnByb2Nlc3NQ
b29sKCkudXBkYXRlU2VydmljZVdvcmtlclVzZXJBZ2VudChtX3VzZXJBZ2VudCk7Ci0jZW5kaWYK
KyAgICBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS51cGRhdGVXb3JrZXJVc2VyQWdlbnQobV91c2Vy
QWdlbnQpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggYWZjMjNl
ZTUzZjEyODQyMTkzZDJlYWVmMjBmMjU5NjJlZWQ3M2ZhMi4uNGIxOWIwZDFkM2MxNTRjYjJlNmYz
MDIzNmIxMzRlMDU5OGNhMjRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcApAQCAtNTI5LDcgKzUyOSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdldFdl
YkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJvCiBi
b29sIFdlYlByb2Nlc3NQb29sOjpzX3VzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MgPSBm
YWxzZTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
TmV0d29ya1Byb2Nlc3NQcm94eSYgcHJveHksIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFi
bGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+
IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBy
b2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0
aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdl
SWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogd2Vic2l0ZURhdGFTdG9y
ZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Np
b25JRCk7CiAgICAgaWYgKCF3ZWJzaXRlRGF0YVN0b3JlKQpAQCAtNTQ2LDcgKzU0Niw3IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MoTmV0CiAgICAgaWYgKHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmll
cikgewogICAgICAgICAvLyBUaGlzIGlzIGEgc2VydmljZSB3b3JrZXIgZm9yIGEgc2VydmljZSB3
b3JrZXIgcGFnZSBzbyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSB1c2UgdXNlIHRoZSBwYWdlJ3Mg
V2ViUHJvY2VzcyBmb3IgdGhlIHNlcnZpY2Ugd29ya2VyLgogICAgICAgICBpZiAoKHNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVy
KHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllci0+cHJvY2Vzc0lkZW50aWZpZXIoKSkpKSB7Ci0g
ICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVTZXJ2aWNlV29ya2Vy
cyhwcm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvclNlcnZpY2VX
b3JrZXJzKCkpOworICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxl
V29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIHByb2Nl
c3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpKTsKICAg
ICAgICAgICAgIGlmIChzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hl
KCkpIHsKICAgICAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hlKCkucmVt
b3ZlUHJvY2Vzcygqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0NhY2hlOjpT
aG91bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIXNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSk7CkBAIC01NjQsNyArNTY0
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXQKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IHByb2Nlc3MucHRyKCk7
Ci0gICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVTZXJ2aWNlV29y
a2Vycyhwcm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvclNlcnZp
Y2VXb3JrZXJzKCkpOworICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5h
YmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIHBy
b2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpKTsK
IAogICAgICAgICAgICAgaWYgKHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNz
Q2FjaGUoKSkgewogICAgICAgICAgICAgICAgIHByb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUo
KS5yZW1vdmVQcm9jZXNzKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBXZWJQcm9jZXNzQ2Fj
aGU6OlNob3VsZFNodXREb3duUHJvY2Vzczo6Tm8pOwpAQCAtNTc3LDcgKzU3Nyw3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MoTmV0CiAgICAgfQogCiAgICAgaWYgKCFzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5KSB7Ci0gICAgICAgIGF1dG8gbmV3UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5
OjpjcmVhdGVGb3JTZXJ2aWNlV29ya2VycygqcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWlu
ICB7IHJlZ2lzdHJhYmxlRG9tYWluIH0sICp3ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICAgICAgYXV0
byBuZXdQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvcldvcmtlcnMoV2Vi
UHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCAqcHJvY2Vzc1Bvb2wsIFJl
Z2lzdHJhYmxlRG9tYWluICB7IHJlZ2lzdHJhYmxlRG9tYWluIH0sICp3ZWJzaXRlRGF0YVN0b3Jl
KTsKICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IG5ld1Byb2Nlc3NQcm94eS5w
dHIoKTsKIAogICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoU2Vydmlj
ZVdvcmtlciwgImVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MgY3JlYXRpbmcgYSBuZXcgc2VydmljZSB3b3JrZXIgcHJvY2VzcyAocHJvY2VzPSVw
LCBQSUQ9JWQpIiwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgc2VydmljZVdvcmtlclByb2Nl
c3NQcm94eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CkBAIC01ODYsMjAgKzU4Niw3MCBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKE5ldAogICAgICAgICBwcm9jZXNzUG9vbC0+bV9wcm9jZXNzZXMuYXBw
ZW5kKFdURk1vdmUobmV3UHJvY2Vzc1Byb3h5KSk7CiAgICAgfQogCi0gICAgQVNTRVJUKCFzZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzKCkuY29udGFpbnMoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkp
KTsKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5KTsKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHkpOwogCi0gICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2Vydmlj
ZVdvcmtlckNvbnRleHQocHJvY2Vzc1Bvb2wtPm1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzID8g
cHJvY2Vzc1Bvb2wtPm1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBwcm9jZXNz
UG9vbC0+bV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3JlKCksIHJlZ2lzdHJh
YmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKLSAgICBpZiAoIXByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJVc2VyQWdl
bnQuaXNOdWxsKCkpCi0gICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPnNldFNlcnZp
Y2VXb3JrZXJVc2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fc2VydmljZVdvcmtlclVzZXJBZ2VudCk7
CisgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2VydmljZVdvcmtlckNv
bnRleHQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNzUG9vbC0+bV93
b3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVsdFBhZ2VHcm91
cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtl
clBhZ2VJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgaWYgKCFw
cm9jZXNzUG9vbC0+bV93b3JrZXJVc2VyQWdlbnQuaXNOdWxsKCkpCisgICAgICAgIHNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHktPnNldFdvcmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV93b3Jr
ZXJVc2VyQWdlbnQpOwogfQorI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZUZy
b21TZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKK3ZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5
JiBwcm9jZXNzKQogewotICAgIEFTU0VSVChzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkuY29udGFp
bnMocHJvY2VzcykpOwotICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5yZW1vdmUocHJvY2Vz
cyk7CisgICAgQVNTRVJUKHdvcmtlclByb2Nlc3NlcygpLmNvbnRhaW5zKHByb2Nlc3MpKTsKKyAg
ICB3b3JrZXJQcm9jZXNzZXMoKS5yZW1vdmUocHJvY2Vzcyk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvKiB3ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFT
dG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQoc2Vzc2lvbklEKTsKKyAgICBpZiAo
IXdlYnNpdGVEYXRhU3RvcmUpCisgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkucHRyKCk7CisgICAgaWYgKCFwcm9jZXNzUG9vbHMo
KS5zaXplKCkpCisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWY8V2ViUHJvY2Vzc1Bv
b2w+PiBzaGFyZWRXb3JrZXJQcm9jZXNzUG9vbChXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKEFQSTo6
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKS5nZXQoKSkpOworCisgICAgLy8gQXJi
aXRyYXJpbHkgY2hvb3NlIHRoZSBmaXJzdCBwcm9jZXNzIHBvb2wgdG8gaG9zdCB0aGUgc2hhcmVk
IHdvcmtlciBwcm9jZXNzLgorICAgIGF1dG8qIHByb2Nlc3NQb29sID0gcHJvY2Vzc1Bvb2xzKClb
MF07CisgICAgQVNTRVJUKHByb2Nlc3NQb29sKTsKKworICAgIFdlYlByb2Nlc3NQcm94eSogc2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5IHsgbnVsbHB0ciB9OworCisgICAgZm9yIChhdXRvJiBwcm9j
ZXNzIDogcHJvY2Vzc1Bvb2wtPm1fcHJvY2Vzc2VzKSB7CisgICAgICAgIGlmIChwcm9jZXNzLnB0
cigpID09IHByb2Nlc3NQb29sLT5tX3ByZXdhcm1lZFByb2Nlc3MuZ2V0KCkgfHwgcHJvY2Vzcy0+
aXNEdW1teVByb2Nlc3NQcm94eSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlm
ICgmcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpICE9IHdlYnNpdGVEYXRhU3RvcmUpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFwcm9jZXNzLT5pc01hdGNoaW5nUmVnaXN0
cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5ID0gcHJvY2Vzcy5wdHIoKTsKKyAgICAg
ICAgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94
eTo6V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyLCBwcm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CisKKyAgICAgICAgaWYgKHNoYXJlZFdvcmtl
clByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKSB7CisgICAgICAgICAgICBwcm9jZXNz
UG9vbC0+d2ViUHJvY2Vzc0NhY2hlKCkucmVtb3ZlUHJvY2Vzcygqc2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5LCBXZWJQcm9jZXNzQ2FjaGU6OlNob3VsZFNodXREb3duUHJvY2Vzczo6Tm8pOworICAg
ICAgICAgICAgQVNTRVJUKCFzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2Fj
aGUoKSk7CisgICAgICAgIH0KKworICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19T
VEFUSUMoU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzIHJldXNpbmcgYW4gZXhpc3Rpbmcgd2ViIHByb2Nlc3MgKHByb2Nl
c3M9JXAsIFBJRD0lZCkiLCBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHksIHNoYXJlZFdvcmtlclBy
b2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIGlmICghc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5KSB7CisgICAgICAgIGF1dG8gbmV3
UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdlYlByb2Nl
c3NQcm94eTo6V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyLCAqcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJh
YmxlRG9tYWluICB7IHJlZ2lzdHJhYmxlRG9tYWluIH0sICp3ZWJzaXRlRGF0YVN0b3JlKTsKKyAg
ICAgICAgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5ID0gbmV3UHJvY2Vzc1Byb3h5LnB0cigpOwor
CisgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhTaGFyZWRXb3JrZXIs
ICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mg
Y3JlYXRpbmcgYSBuZXcgc2VydmljZSB3b3JrZXIgcHJvY2VzcyAocHJvY2Vzcz0lcCwgUElEPSVk
KSIsIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5w
cm9jZXNzSWRlbnRpZmllcigpKTsKKworICAgICAgICBwcm9jZXNzUG9vbC0+aW5pdGlhbGl6ZU5l
d1dlYlByb2Nlc3MobmV3UHJvY2Vzc1Byb3h5LCB3ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICAgICAg
cHJvY2Vzc1Bvb2wtPm1fcHJvY2Vzc2VzLmFwcGVuZChXVEZNb3ZlKG5ld1Byb2Nlc3NQcm94eSkp
OworICAgIH0KKworICAgIHdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5KTsKKworICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2hhcmVk
V29ya2VyQ29udGV4dChwcm9jZXNzUG9vbC0+bV93b3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQ
b29sLT5tX3dvcmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZhdWx0
UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3JlKCksIHJlZ2lzdHJhYmxlRG9tYWluLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgaWYgKCFwcm9jZXNzUG9vbC0+bV93b3JrZXJV
c2VyQWdlbnQuaXNOdWxsKCkpCisgICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+c2V0
V29ya2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3dvcmtlclVzZXJBZ2VudCk7CiB9Ci0jZW5k
aWYKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6d2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hh
bmdlZCgpCiB7CkBAIC0xMDAzLDEwICsxMDUzLDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlz
Y29ubmVjdFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogCiAgICAgbV9iYWNrRm9y
d2FyZENhY2hlLT5yZW1vdmVFbnRyaWVzRm9yUHJvY2Vzcyhwcm9jZXNzKTsKIAotI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdTZXJ2aWNlV29ya2Vy
cygpKQotICAgICAgICByZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3Nlcyhwcm9jZXNzKTsK
LSNlbmRpZgorICAgIGlmIChwcm9jZXNzLmlzUnVubmluZ1dvcmtlcnMoKSkKKyAgICAgICAgcmVt
b3ZlRnJvbVdvcmtlclByb2Nlc3Nlcyhwcm9jZXNzKTsKIAogICAgIHN0YXRpY19jYXN0PFdlYkNv
bnRleHRTdXBwbGVtZW50Kj4oc3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4o
KSktPnByb2Nlc3NEaWRDbG9zZSgmcHJvY2Vzcyk7CiAKQEAgLTEwNjcsMTIgKzExMTUsMTIgQEAg
UmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJs
ZURvbWFpbihXZWJzaXRlRGF0YVN0b3IKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
LVVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgV2ViUHJvY2Vzc1Bvb2w6OnVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2aWNlV29ya2VycygpCitVc2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyIFdlYlByb2Nlc3NQb29sOjp1c2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyRm9yV29ya2VycygpCiB7Ci0gICAgaWYgKCFtX3VzZXJDb250ZW50Q29udHJvbGxl
ckZvclNlcnZpY2VXb3JrZXIpCi0gICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yU2Vy
dmljZVdvcmtlciA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpjcmVhdGUoKTsKKyAg
ICBpZiAoIW1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2VycykKKyAgICAgICAgbV91c2Vy
Q29udGVudENvbnRyb2xsZXJGb3JXb3JrZXJzID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6OmNyZWF0ZSgpOwogCi0gICAgcmV0dXJuIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yU2Vy
dmljZVdvcmtlci0+aWRlbnRpZmllcigpOworICAgIHJldHVybiBtX3VzZXJDb250ZW50Q29udHJv
bGxlckZvcldvcmtlcnMtPmlkZW50aWZpZXIoKTsKIH0KICNlbmRpZgogCkBAIC0xMTE5LDE1ICsx
MTY3LDEzIEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdl
KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAKICAgICBhdXRvIHBhZ2UgPSBwcm9j
ZXNzLT5jcmVhdGVXZWJQYWdlKHBhZ2VDbGllbnQsIFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24p
KTsKIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAoIW1fc2VydmljZVdvcmtl
clByZWZlcmVuY2VzKSB7Ci0gICAgICAgIG1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzID0gcGFn
ZS0+cHJlZmVyZW5jZXNTdG9yZSgpOwotICAgICAgICBmb3IgKGF1dG8mIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzIDogc2VydmljZVdvcmtlclByb2Nlc3NlcygpKQotICAgICAgICAgICAgc2VydmljZVdv
cmtlclByb2Nlc3MudXBkYXRlU2VydmljZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoKm1fc2Vydmlj
ZVdvcmtlclByZWZlcmVuY2VzKTsKKyAgICBpZiAoIW1fd29ya2VyUHJlZmVyZW5jZXMpIHsKKyAg
ICAgICAgbV93b3JrZXJQcmVmZXJlbmNlcyA9IHBhZ2UtPnByZWZlcmVuY2VzU3RvcmUoKTsKKyAg
ICAgICAgZm9yIChhdXRvJiB3b3JrZXJQcm9jZXNzIDogd29ya2VyUHJvY2Vzc2VzKCkpCisgICAg
ICAgICAgICB3b3JrZXJQcm9jZXNzLnVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoKm1fd29y
a2VyUHJlZmVyZW5jZXMpOwogICAgIH0KICAgICBpZiAodXNlckNvbnRlbnRDb250cm9sbGVyKQot
ICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclNlcnZpY2VXb3JrZXIgPSB1c2VyQ29u
dGVudENvbnRyb2xsZXI7Ci0jZW5kaWYKKyAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJG
b3JXb3JrZXJzID0gdXNlckNvbnRlbnRDb250cm9sbGVyOwogCiAgICAgYm9vbCBlbmFibGVQcm9j
ZXNzU3dhcE9uQ3Jvc3NTaXRlTmF2aWdhdGlvbiA9IHBhZ2UtPnByZWZlcmVuY2VzKCkucHJvY2Vz
c1N3YXBPbkNyb3NzU2l0ZU5hdmlnYXRpb25FbmFibGVkKCk7CiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKQEAgLTExNTAsMTYgKzExOTYsMTQgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vz
c1Bvb2w6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSToKICAg
ICByZXR1cm4gcGFnZTsKIH0KIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnVwZGF0ZVNlcnZpY2VXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQpCit2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVXb3JrZXJVc2VyQWdlbnQoY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQpCiB7Ci0gICAgaWYgKG1fc2VydmljZVdvcmtlclVzZXJBZ2Vu
dCA9PSB1c2VyQWdlbnQpCisgICAgaWYgKG1fd29ya2VyVXNlckFnZW50ID09IHVzZXJBZ2VudCkK
ICAgICAgICAgcmV0dXJuOwotICAgIG1fc2VydmljZVdvcmtlclVzZXJBZ2VudCA9IHVzZXJBZ2Vu
dDsKLSAgICBmb3IgKGF1dG8mIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogc2VydmljZVdvcmtlclBy
b2Nlc3NlcygpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy5zZXRTZXJ2aWNlV29ya2Vy
VXNlckFnZW50KG1fc2VydmljZVdvcmtlclVzZXJBZ2VudCk7CisgICAgbV93b3JrZXJVc2VyQWdl
bnQgPSB1c2VyQWdlbnQ7CisgICAgZm9yIChhdXRvJiB3b3JrZXJQcm9jZXNzIDogd29ya2VyUHJv
Y2Vzc2VzKCkpCisgICAgICAgIHdvcmtlclByb2Nlc3Muc2V0V29ya2VyVXNlckFnZW50KG1fd29y
a2VyVXNlckFnZW50KTsKIH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQmVn
aW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFdl
YnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKIHsKQEAgLTE1MzgsOCArMTU4MiwxMyBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjp0ZXJtaW5hdGVTZXJ2aWNlV29ya2VycygpCiB7CiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKLSAgICB3
aGlsZSAoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmNvbXB1dGVTaXplKCkpCi0gICAgICAgIHNl
cnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5iZWdpbigpLT5kaXNhYmxlU2VydmljZVdvcmtlcnMoKTsK
KyAgICBWZWN0b3I8UmVmPFdlYlByb2Nlc3NQcm94eT4+IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXM7
CisgICAgd29ya2VyUHJvY2Vzc2VzKCkuZm9yRWFjaChbJl0oYXV0byYgcHJvY2VzcykgeworICAg
ICAgICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQorICAgICAgICAgICAg
c2VydmljZVdvcmtlclByb2Nlc3Nlcy5hcHBlbmQocHJvY2Vzcyk7CisgICAgfSk7CisgICAgZm9y
IChhdXRvJiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMpCisg
ICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJv
eHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogI2VuZGlmCiB9CiAKQEAgLTE3NjcsMTMg
KzE4MTYsMTEgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVwb3J0V2ViQ29udGVudENQVVRpbWUo
U2Vjb25kcyBjcHVUaW1lLCB1aW50NjRfdCBhY3Rpdml0eVMKICNlbmRpZgogfQogCi0jaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQotV2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5PiYgV2ViUHJv
Y2Vzc1Bvb2w6OnNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKQorV2Vha0hhc2hTZXQ8V2ViUHJvY2Vz
c1Byb3h5PiYgV2ViUHJvY2Vzc1Bvb2w6OndvcmtlclByb2Nlc3NlcygpCiB7CiAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4+IHByb2Nlc3NlczsK
ICAgICByZXR1cm4gcHJvY2Vzc2VzOwogfQotI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkKIHsKQEAgLTE3ODUsMjAgKzE4MzIsMjUgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKQogICAgIGlmIChhdXRv
KiBncHVQcm9jZXNzID0gR1BVUHJvY2Vzc1Byb3h5OjpzaW5nbGV0b25JZkNyZWF0ZWQoKSkKICAg
ICAgICAgZ3B1UHJvY2Vzcy0+dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbigpOwogI2VuZGlmCi0jaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCiAgICAgLy8gQ2hlY2sgb24gbmV4dCBydW4gbG9vcCBz
aW5jZSB0aGUgd2ViIHByb2Nlc3MgcHJveHkgdG9rZW5zIGFyZSBwcm9iYWJseSBiZWluZyB1cGRh
dGVkLgogICAgIGNhbGxPbk1haW5SdW5Mb29wKFtdIHsKLSAgICAgICAgZm9yIChhdXRvJiBzZXJ2
aWNlV29ya2VyUHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSkKLSAgICAgICAgICAg
IHNlcnZpY2VXb3JrZXJQcm9jZXNzLnVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9u
KCk7Ci0gICAgfSk7CisgICAgICAgIHdvcmtlclByb2Nlc3NlcygpLmZvckVhY2goW10oYXV0byYg
d29ya2VyUHJvY2VzcykgeworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICAgICAgICAg
IGlmICh3b3JrZXJQcm9jZXNzLmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCisgICAgICAgICAg
ICAgICAgd29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdlYlByb2Nl
c3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiAjZW5kaWYKKyAgICAgICAgICAg
IGlmICh3b3JrZXJQcm9jZXNzLmlzUnVubmluZ1NoYXJlZFdvcmtlcnMoKSkKKyAgICAgICAgICAg
ICAgICB3b3JrZXJQcm9jZXNzLnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV2ViUHJvY2Vz
c1Byb3h5OjpXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpOworICAgICAgICB9KTsKKyAgICB9KTsK
IH0KIAogYm9vbCBXZWJQcm9jZXNzUG9vbDo6aXNTZXJ2aWNlV29ya2VyUGFnZUlEKFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdAogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKICAgICAvLyBGSVhNRTogVGhpcyBpcyBpbmVmZmljaWVudC4KLSAgICByZXR1cm4gV1RGOjph
bnlPZihzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCksIFtwYWdlSURdKGF1dG8mIHByb2Nlc3MpIHsK
KyAgICByZXR1cm4gV1RGOjphbnlPZih3b3JrZXJQcm9jZXNzZXMoKSwgW3BhZ2VJRF0oYXV0byYg
cHJvY2VzcykgewogICAgICAgICByZXR1cm4gcHJvY2Vzcy5oYXNTZXJ2aWNlV29ya2VyUGFnZVBy
b3h5KHBhZ2VJRCk7CiAgICAgfSk7CiAjZW5kaWYKQEAgLTIxMjQsMTYgKzIxNzYsMjYgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6c2V0VXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyhib29s
IHVzZVNlcGFyYXRlU2VydmljZVcKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK3Np
emVfdCBXZWJQcm9jZXNzUG9vbDo6c2VydmljZVdvcmtlclByb3hpZXNDb3VudCgpIGNvbnN0Cit7
CisgICAgdW5zaWduZWQgY291bnQgPSAwOworICAgIHdvcmtlclByb2Nlc3NlcygpLmZvckVhY2go
WyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICAgICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nU2Vydmlj
ZVdvcmtlcnMoKSkKKyAgICAgICAgICAgICsrY291bnQ7CisgICAgfSk7CisgICAgcmV0dXJuIGNv
dW50OworfQorCiBib29sIFdlYlByb2Nlc3NQb29sOjpoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3Vu
ZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6YW55T2Yoc2Vy
dmljZVdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9jZXNzKSB7CisgICAgcmV0dXJuIFdU
Rjo6YW55T2Yod29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAg
cmV0dXJuIHByb2Nlc3MuaGFzU2VydmljZVdvcmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3Rp
bmcoKTsKICAgICB9KTsKIH0KIAogYm9vbCBXZWJQcm9jZXNzUG9vbDo6aGFzU2VydmljZVdvcmtl
ckJhY2tncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6
OmFueU9mKHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2VzcykgeworICAg
IHJldHVybiBXVEY6OmFueU9mKHdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9jZXNzKSB7
CiAgICAgICAgIHJldHVybiBwcm9jZXNzLmhhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kQWN0aXZp
dHlGb3JUZXN0aW5nKCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaAppbmRleCBlYjY2ZDg5NDkwZGZlMDI4YjEwMTI1ZTkzZmZiZDE5OGQwMjdmN2Nl
Li5lNzBiNmY0MjlmN2NiNzA2OTU0OTUwZjkwMGQzNzgxM2JkYWRkYmI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTM3NCwxNyArMzc0LDIwIEBAIHB1Ymxp
YzoKICAgICB2b2lkIG5ldHdvcmtQcm9jZXNzRGlkVGVybWluYXRlKE5ldHdvcmtQcm9jZXNzUHJv
eHkmLCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJtaW5hdGlvblJlYXNvbik7CiAKICAgICBib29s
IGlzU2VydmljZVdvcmtlclBhZ2VJRChXZWJQYWdlUHJveHlJZGVudGlmaWVyKSBjb25zdDsKKyAg
ICB2b2lkIHJlbW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5Jik7CisKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgc3RhdGljIHZvaWQgZXN0YWJsaXNoU2Vydmlj
ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1By
b3h5JiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVu
dGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAg
ICB2b2lkIHJlbW92ZUZyb21TZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYp
OwotICAgIHNpemVfdCBzZXJ2aWNlV29ya2VyUHJveGllc0NvdW50KCkgY29uc3QgeyByZXR1cm4g
c2VydmljZVdvcmtlclByb2Nlc3NlcygpLmNvbXB1dGVTaXplKCk7IH0KLSAgICB2b2lkIHVwZGF0
ZVNlcnZpY2VXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpOwotICAgIFVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
ZmllckZvclNlcnZpY2VXb3JrZXJzKCk7CisgICAgc3RhdGljIHZvaWQgZXN0YWJsaXNoU2Vydmlj
ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHNpemVfdCBzZXJ2aWNlV29ya2Vy
UHJveGllc0NvdW50KCkgY29uc3Q7CisgICAgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
ciB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpOwogICAgIGJvb2wg
aGFzU2VydmljZVdvcmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdDsKICAg
ICBib29sIGhhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29u
c3Q7CiAjZW5kaWYKICAgICB2b2lkIHNlcnZpY2VXb3JrZXJQcm9jZXNzQ3Jhc2hlZChXZWJQcm9j
ZXNzUHJveHkmKTsKIAorICAgIHZvaWQgdXBkYXRlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmlu
ZyYgdXNlckFnZW50KTsKKyAgICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
JiwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBib29sIHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoKSBjb25z
dDsKICNlbmRpZgpAQCAtNjE4LDEzICs2MjEsMTEgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hNYXA8
UEFMOjpTZXNzaW9uSUQsIFdlYWtQdHI8V2ViUHJvY2Vzc1Byb3h5Pj4gbV9kdW1teVByb2Nlc3NQ
cm94aWVzOyAvLyBMaWdodHdlaWdodCBXZWJQcm9jZXNzUHJveHkgb2JqZWN0cyB3aXRob3V0IGJh
Y2tpbmcgcHJvY2Vzcy4KIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBzdGF0aWMg
V2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5PiYgc2VydmljZVdvcmtlclByb2Nlc3NlcygpOwot
ICAgIGJvb2wgbV93YWl0aW5nRm9yV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uIHsgZmFs
c2UgfTsKLSAgICBTdHJpbmcgbV9zZXJ2aWNlV29ya2VyVXNlckFnZW50OwotICAgIHN0ZDo6b3B0
aW9uYWw8V2ViUHJlZmVyZW5jZXNTdG9yZT4gbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXM7Ci0g
ICAgUmVmUHRyPFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5PiBtX3VzZXJDb250ZW50Q29u
dHJvbGxlckZvclNlcnZpY2VXb3JrZXI7Ci0jZW5kaWYKKyAgICBzdGF0aWMgV2Vha0hhc2hTZXQ8
V2ViUHJvY2Vzc1Byb3h5PiYgd29ya2VyUHJvY2Vzc2VzKCk7CisKKyAgICBzdGQ6Om9wdGlvbmFs
PFdlYlByZWZlcmVuY2VzU3RvcmU+IG1fd29ya2VyUHJlZmVyZW5jZXM7CisgICAgUmVmUHRyPFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5PiBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvcldv
cmtlcnM7CisgICAgU3RyaW5nIG1fd29ya2VyVXNlckFnZW50OwogCiAjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQogICAgIFJlZlB0cjxHUFVQcm9jZXNzUHJveHk+IG1fZ3B1UHJvY2VzczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDA1N2Q0OTkyNDE4
YTAwNDNkODRjNTlkN2I2ZTUyZjllMDI2NThhNzEuLmI3NDZhN2Q3ZDIxNzBjMzkyMDVmMzFlNTFh
ZWQ4YmJjNWU2ZGViNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVk
ZSAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgpAQCAtMTgyLDExICsxODMsMTEgQEAgUmVmPFdl
YlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmIHBy
b2Nlc3NQb29sLCBXZWJzaXQKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLVJlZjxX
ZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMo
V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJh
YmxlRG9tYWluLCBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQorUmVmPFdlYlBy
b2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdvcmtlclR5cGUg
d29ya2VyVHlwZSwgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFp
biYmIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3Jl
KQogewogICAgIGF1dG8gcHJveHkgPSBhZG9wdFJlZigqbmV3IFdlYlByb2Nlc3NQcm94eShwcm9j
ZXNzUG9vbCwgJndlYnNpdGVEYXRhU3RvcmUsIElzUHJld2FybWVkOjpObywgQ3Jvc3NPcmlnaW5N
b2RlOjpTaGFyZWQsIENhcHRpdmVQb3J0YWxNb2RlOjpEaXNhYmxlZCkpOwogICAgIHByb3h5LT5t
X3JlZ2lzdHJhYmxlRG9tYWluID0gV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgcHJv
eHktPmVuYWJsZVNlcnZpY2VXb3JrZXJzKHByb2Nlc3NQb29sLnVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXJGb3JTZXJ2aWNlV29ya2VycygpKTsKKyAgICBwcm94eS0+ZW5hYmxlV29ya2Vy
cyh3b3JrZXJUeXBlLCBwcm9jZXNzUG9vbC51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
Rm9yV29ya2VycygpKTsKICAgICBwcm94eS0+Y29ubmVjdCgpOwogICAgIHJldHVybiBwcm94eTsK
IH0KQEAgLTk5NSwxMCArOTk2LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVV
bnJlc3BvbnNpdmUoKQogICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBpc1Jlc3BvbnNpdmVDYWxs
YmFja3MpCiAgICAgICAgIGNhbGxiYWNrKGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUpOwogCi0gICAg
Ly8gSWYgdGhlIHdlYiBwcm9jZXNzIGJlY29tZXMgdW5yZXNwb25zaXZlIGFuZCBvbmx5IHJ1bnMg
c2VydmljZSB3b3JrZXJzLCBraWxsIGl0IG91cnNlbHZlcyBzaW5jZSB0aGVyZSBhcmUgbm8gbmF0
aXZlIGNsaWVudHMgdG8gZG8gaXQuCi0gICAgaWYgKGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkg
JiYgbV9wYWdlTWFwLmlzRW1wdHkoKSkgewotICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFT
RV9MT0dfRVJST1IoUGVyZm9ybWFuY2VMb2dnaW5nLCAiZGlkQmVjb21lVW5yZXNwb25zaXZlOiBU
ZXJtaW5hdGluZyBzZXJ2aWNlIHdvcmtlci1vbmx5IHdlYiBwcm9jZXNzIGJlY2F1c2UgaXQgaXMg
dW5yZXNwb25zaXZlIik7Ci0gICAgICAgIGRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgIC8v
IElmIHRoZSB3ZWIgcHJvY2VzcyBiZWNvbWVzIHVucmVzcG9uc2l2ZSBhbmQgb25seSBydW5zIHNl
cnZpY2Uvc2hhcmVkIHdvcmtlcnMsIGtpbGwgaXQgb3Vyc2VsdmVzIHNpbmNlIHRoZXJlIGFyZSBu
byBuYXRpdmUgY2xpZW50cyB0byBkbyBpdC4KKyAgICBpZiAoaXNSdW5uaW5nV29ya2VycygpICYm
IG1fcGFnZU1hcC5pc0VtcHR5KCkpIHsKKyAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0Vf
TE9HX0VSUk9SKFBlcmZvcm1hbmNlTG9nZ2luZywgImRpZEJlY29tZVVucmVzcG9uc2l2ZTogVGVy
bWluYXRpbmcgd29ya2VyLW9ubHkgd2ViIHByb2Nlc3MgYmVjYXVzZSBpdCBpcyB1bnJlc3BvbnNp
dmUiKTsKKyAgICAgICAgZGlzYWJsZVdvcmtlcnMoeyBXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2Vy
LCBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgfSk7CiAgICAgICAgIHRlcm1pbmF0ZSgpOwogICAg
IH0KIH0KQEAgLTE2OTQsOCArMTY5NSw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZShjb25zdCBVUkwmIHVybCkKICAgICBhdXRvIHJl
Z2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfTsKICAg
ICBpZiAobV9yZWdpc3RyYWJsZURvbWFpbiAmJiAqbV9yZWdpc3RyYWJsZURvbWFpbiAhPSByZWdp
c3RyYWJsZURvbWFpbikgewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICAgICAgZGlz
YWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgICAgIGRpc2FibGVXb3JrZXJzKFdvcmtlclR5cGU6
OlNlcnZpY2VXb3JrZXIpOwogI2VuZGlmCisKICAgICAgICAgLy8gTnVsbCBvdXQgcmVnaXN0cmFi
bGUgZG9tYWluIHNpbmNlIHRoaXMgcHJvY2VzcyBoYXMgbm93IGJlZW4gdXNlZCBmb3Igc2V2ZXJh
bCBkb21haW5zLgogICAgICAgICBtX3JlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4geyB9OwogICAgICAgICByZXR1cm47CkBAIC0xODcyLDU0ICsxODc0LDg1IEBA
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25z
dCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAg
ICAgfSwgMCk7CiB9CisjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldFNlcnZpY2VX
b3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCit2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6c2V0V29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQogewotICAg
IEFTU0VSVChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbik7Ci0gICAgc2VuZChNZXNzYWdlczo6
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlNldFVzZXJBZ2VudCB7IHVzZXJBZ2VudCB9
LCAwKTsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYgKG1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6U2V0VXNlckFnZW50IHsgdXNlckFnZW50IH0sIDApOworI2VuZGlmCisgICAg
aWYgKG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24pCisgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U2V0VXNlckFnZW50IHsgdXNl
ckFnZW50IH0sIDApOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlU2VydmljZVdv
cmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCit2
b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKIHsKLSAgICBBU1NFUlQobV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb24pOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpVcGRhdGVQcmVmZXJlbmNlc1N0b3JlIHsgc3RvcmUgfSwgMCk7CisjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQorICAgIGlmIChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKKyAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0
ZVByZWZlcmVuY2VzU3RvcmUgeyBzdG9yZSB9LCAwKTsKKyNlbmRpZgorICAgIGlmIChtX3NoYXJl
ZFdvcmtlckluZm9ybWF0aW9uKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZVByZWZlcmVuY2VzU3RvcmUgeyBzdG9y
ZSB9LCAwKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzQXNzZXJ0aW9uKCkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVXb3JrZXJQcm9j
ZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGUgd29ya2VyVHlwZSkKIHsKLSAgICBXRUJQUk9DRVNTUFJP
WFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVTZXJ2aWNlV29ya2VyUHJv
Y2Vzc0Fzc2VydGlvbjoiKTsKLSAgICBBU1NFUlQobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24p
OwotICAgIGlmICghbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAgYXV0byYgd29ya2Vy
SW5mb3JtYXRpb24gPSB3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/IG1f
c2hhcmVkV29ya2VySW5mb3JtYXRpb24gOiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsKKyAg
ICBBU1NFUlQod29ya2VySW5mb3JtYXRpb24pOworICAgIGlmICghd29ya2VySW5mb3JtYXRpb24p
CiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgc2hvdWxkVGFrZUZvcmVncm91bmRBY3Rpdml0
eSA9IFdURjo6YW55T2YobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3Nl
cywgWyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0co
UHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uOiB3b3JrZXJU
eXBlPSV7cHVibGljfXMiLCB3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/
ICJzaGFyZWQiIDogInNlcnZpY2UiKTsKKworICAgIC8vIEZJWE1FOiBDbGllbnRzIGRvIG5vdCBw
cm9wZXJseSBnZXQgcG9wdWxhdGVkIGluIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gc28gd2Ug
Y3VycmVudGx5IHRha2UgYW4gYXNzZXJ0aW9uIG5vIG1hdHRlciB3aGF0LgorICAgIGlmICh3b3Jr
ZXJUeXBlID09IFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlcikgeworICAgICAgICBpZiAoIVByb2Nl
c3NUaHJvdHRsZXI6OmlzVmFsaWRGb3JlZ3JvdW5kQWN0aXZpdHkod29ya2VySW5mb3JtYXRpb24t
PmFjdGl2aXR5KSkKKyAgICAgICAgICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1f
dGhyb3R0bGVyLmZvcmVncm91bmRBY3Rpdml0eSgiV29ya2VyIGZvciBmb3JlZ3JvdW5kIHZpZXco
cykiX3MpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYm9vbCBzaG91bGRUYWtlRm9y
ZWdyb3VuZEFjdGl2aXR5ID0gV1RGOjphbnlPZih3b3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJv
Y2Vzc2VzLCBbJl0oYXV0byYgcHJvY2VzcykgewogICAgICAgICByZXR1cm4gJnByb2Nlc3MgIT0g
dGhpcyAmJiAhIXByb2Nlc3MubV9mb3JlZ3JvdW5kVG9rZW47CiAgICAgfSk7CiAgICAgaWYgKHNo
b3VsZFRha2VGb3JlZ3JvdW5kQWN0aXZpdHkpIHsKLSAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0
bGVyOjppc1ZhbGlkRm9yZWdyb3VuZEFjdGl2aXR5KG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9u
LT5hY3Rpdml0eSkpCi0gICAgICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0
aXZpdHkgPSBtX3Rocm90dGxlci5mb3JlZ3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2VyIGZv
ciBmb3JlZ3JvdW5kIHZpZXcocykiX3MpOworICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6
OmlzVmFsaWRGb3JlZ3JvdW5kQWN0aXZpdHkod29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkK
KyAgICAgICAgICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmZv
cmVncm91bmRBY3Rpdml0eSgiV29ya2VyIGZvciBmb3JlZ3JvdW5kIHZpZXcocykiX3MpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYm9vbCBzaG91bGRUYWtlQmFja2dyb3VuZEFjdGl2
aXR5ID0gV1RGOjphbnlPZihtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vz
c2VzLCBbJl0oYXV0byYgcHJvY2VzcykgeworICAgIGJvb2wgc2hvdWxkVGFrZUJhY2tncm91bmRB
Y3Rpdml0eSA9IFdURjo6YW55T2Yod29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3Nlcywg
WyZdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuICZwcm9jZXNzICE9IHRoaXMgJiYg
ISFwcm9jZXNzLm1fYmFja2dyb3VuZFRva2VuOwogICAgIH0pOwogICAgIGlmIChzaG91bGRUYWtl
QmFja2dyb3VuZEFjdGl2aXR5KSB7Ci0gICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNW
YWxpZEJhY2tncm91bmRBY3Rpdml0eShtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZp
dHkpKQotICAgICAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0g
bV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3IgYmFja2dy
b3VuZCB2aWV3KHMpIl9zKTsKKyAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlk
QmFja2dyb3VuZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCisgICAgICAg
ICAgICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5k
QWN0aXZpdHkoIldvcmtlciBmb3IgYmFja2dyb3VuZCB2aWV3KHMpIl9zKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGlmIChtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vz
c2luZykgeworICAgIGlmICh3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIg
JiYgbV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcpIHsKICAgICAgICAgV0VC
UFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiU2VydmljZSBXb3Jr
ZXIgZm9yIGJhY2tncm91bmQgcHJvY2Vzc2luZyIpOwotICAgICAgICBpZiAoIVByb2Nlc3NUaHJv
dHRsZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24tPmFjdGl2aXR5KSkKLSAgICAgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5h
Y3Rpdml0eSA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIg
Zm9yIGJhY2tncm91bmQgcHJvY2Vzc2luZyJfcyk7CisgICAgICAgIGlmICghUHJvY2Vzc1Rocm90
dGxlcjo6aXNWYWxpZEJhY2tncm91bmRBY3Rpdml0eSh3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZp
dHkpKQorICAgICAgICAgICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRs
ZXIuYmFja2dyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3IgYmFja2dyb3VuZCBwcm9j
ZXNzaW5nIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG51bGxwdHI7CisgICAgd29ya2VySW5mb3JtYXRpb24t
PmFjdGl2aXR5ID0gbnVsbHB0cjsKK30KKwordm9pZCBXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlz
aFNoYXJlZFdvcmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFdFQlBST0NFU1NQUk9YWV9S
RUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0OiBT
dGFydGVkIik7CisgICAgbWFya1Byb2Nlc3NBc1JlY2VudGx5VXNlZCgpOworICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RXN0YWJsaXNoU2hhcmVkV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bvb2woKS5kZWZhdWx0UGFn
ZUdyb3VwKCkucGFnZUdyb3VwSUQoKSwgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbi0+cmVtb3Rl
V29ya2VyUGFnZVByb3h5SUQsIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24tPnJlbW90ZVdvcmtl
clBhZ2VJRCwgc3RvcmUsIHJlZ2lzdHJhYmxlRG9tYWluLCBtX3NoYXJlZFdvcmtlckluZm9ybWF0
aW9uLT5pbml0aWFsaXphdGlvbkRhdGEgfSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgIFdFQlBST0NFU1NQ
Uk9YWV9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250
ZXh0OiBGaW5pc2hlZCIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0sIDAp
OwogfQogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCiB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHBy
b3h5KQogewogICAgIGlmICghbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCkBAIC0xOTI3LDcg
KzE5NjAsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xp
ZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb3h5KQogCiAgICAgV0VCUFJPQ0VTU1BST1hZ
X1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQ
cm9jZXNzOiBjbGllbnRQcm9jZXNzPSVwLCBjbGllbnRQSUQ9JWQiLCAmcHJveHksIHByb3h5LnBy
b2Nlc3NJZGVudGlmaWVyKCkpOwogICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5jbGll
bnRQcm9jZXNzZXMuYWRkKHByb3h5KTsKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fz
c2VydGlvbigpOworICAgIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6
U2VydmljZVdvcmtlcik7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1bnJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKQEAgLTE5Mzcs
NyArMTk3MCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1bnJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94CiAKICAgICBXRUJQUk9DRVNTUFJP
WFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgInVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xp
ZW50UHJvY2VzczogY2xpZW50UHJvY2Vzcz0lcCwgY2xpZW50UElEPSVkIiwgJnByb3h5LCBwcm94
eS5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+
Y2xpZW50UHJvY2Vzc2VzLnJlbW92ZShwcm94eSk7Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclBy
b2Nlc3NBc3NlcnRpb24oKTsKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtl
clR5cGU6OlNlcnZpY2VXb3JrZXIpOwogfQogCiBib29sIFdlYlByb2Nlc3NQcm94eTo6aGFzU2Vy
dmljZVdvcmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdApAQCAtMTk1Nyw3
ICsxOTkwLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnN0YXJ0U2VydmljZVdvcmtlckJhY2tn
cm91bmRQcm9jZXNzaW5nKCkKIAogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9j
ZXNzU3VzcGVuc2lvbiwgInN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nIik7
CiAgICAgbV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcgPSB0cnVlOwotICAg
IHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBkYXRlV29ya2Vy
UHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KIAogdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZygpCkBA
IC0xOTY3LDIzICsyMDAwLDM5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmRTZXJ2aWNlV29y
a2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoKQogCiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0Vf
TE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNz
aW5nIik7CiAgICAgbV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcgPSBmYWxz
ZTsKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOworICAgIHVwZGF0
ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAj
ZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6
ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaXNhYmxlV29y
a2VycyhPcHRpb25TZXQ8V29ya2VyVHlwZT4gd29ya2VyVHlwZSkKIHsKLSAgICBpZiAoIW1fc2Vy
dmljZVdvcmtlckluZm9ybWF0aW9uKQorICAgIEFTU0VSVCghd29ya2VyVHlwZS5pc0VtcHR5KCkp
OworCisgICAgYm9vbCBkaWRDaGFuZ2UgPSBmYWxzZTsKKyAgICBpZiAod29ya2VyVHlwZS5jb250
YWlucyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSAmJiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1h
dGlvbikgeworICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiA9IHsgfTsKKyAgICAg
ICAgZGlkQ2hhbmdlID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMo
V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSAmJiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uKSB7
CisgICAgICAgIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gPSB7IH07CisgICAgICAgIGRpZENo
YW5nZSA9IHRydWU7CisgICAgfQorICAgIGlmICghZGlkQ2hhbmdlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgImRpc2Fi
bGVTZXJ2aWNlV29ya2VyczoiKTsKLSAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiA9IHsg
fTsKKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2VzcywgImRpc2FibGVXb3Jr
ZXJzOiBEaXNhYmxpbmcgd29ya2VycyAoU2hhcmVkV29ya2Vycz0lZCwgU2VydmljZVdvcmtlcnM9
JWQpIiwgd29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpLCB3b3Jr
ZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpKTsKKwogICAgIHVwZGF0
ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiAKKyAgICBpZiAoIWlzUnVubmluZ1dv
cmtlcnMoKSkKKyAgICAgICAgcHJvY2Vzc1Bvb2woKS5yZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2Vz
KCp0aGlzKTsKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBwcm9jZXNzUG9vbCgp
LnJlbW92ZUZyb21TZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCp0aGlzKTsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q2xvc2UgeyB9LCAwKTsKKyAgICBp
ZiAod29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSkKKyAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNsb3NlIHsg
fSwgMCk7CiAjZW5kaWYKKyAgICBpZiAod29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpT
aGFyZWRXb3JrZXIpKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNsb3NlIHsgfSwgMCk7CiAKICAgICBtYXliZVNodXREb3du
KCk7CiB9CkBAIC0yMDA0LDExICsyMDUzLDEzIEBAIHN0YXRpYyBWZWN0b3I8c3RkOjpwYWlyPFdl
YkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YSwgVVJMPj4gY29udGVudFJ1bGVMaXN0c0ZyCiB9
CiAjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVNlcnZpY2VXb3JrZXJzKGNv
bnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImIHVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXIpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlV29ya2VycyhXb3JrZXJU
eXBlIHdvcmtlclR5cGUsIGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImIHVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpCiB7Ci0gICAgQVNTRVJUKCFtX3NlcnZpY2VX
b3JrZXJJbmZvcm1hdGlvbik7Ci0gICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNlcnZp
Y2VXb3JrZXIsICJlbmFibGVTZXJ2aWNlV29ya2VyczoiKTsKLSAgICBtX3NlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbiA9IFJlbW90ZVdvcmtlckluZm9ybWF0aW9uIHsKKyAgICBXRUJQUk9DRVNTUFJP
WFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgImVuYWJsZVdvcmtlcnM6IHdvcmtlclR5cGU9
JXUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4od29ya2VyVHlwZSkpOworICAgIGF1dG8mIHdvcmtl
ckluZm9ybWF0aW9uID0gd29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyBt
X3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIDogbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247Cisg
ICAgQVNTRVJUKCF3b3JrZXJJbmZvcm1hdGlvbik7CisKKyAgICB3b3JrZXJJbmZvcm1hdGlvbiA9
IFJlbW90ZVdvcmtlckluZm9ybWF0aW9uIHsKICAgICAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmll
cjo6Z2VuZXJhdGUoKSwKICAgICAgICAgUGFnZUlkZW50aWZpZXI6OmdlbmVyYXRlKCksCiAgICAg
ICAgIFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSB7CkBAIC0yMDIxLDkgKzIwNzIsOCBA
QCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlU2VydmljZVdvcmtlcnMoY29uc3QgVXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllcgogICAgICAgICB7IH0KICAgICB9OwogICAgIHVwZGF0
ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7Ci0jZW5kaWYK
KworICAgIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24od29ya2VyVHlwZSk7CiB9CiAKIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVTbGVlcERpc2FibGVyKFNsZWVwRGlzYWJsZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcmVhc29uLCBib29sIGRpc3BsYXkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGY4Yjc5NWIx
ZDM0MzUzNWU4MDkyZTAxZGJhYjM3OWFmMzM0NjFkYmUuLjcwZTg5MDUxY2NiYmM3ZTkwNDZiYzFj
OTk4YjkwYTBiNjhlZjY1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oCkBAIC0xMzYsOSArMTM2LDEzIEBAIHB1YmxpYzoKIAogICAgIGVudW0gY2xhc3MgU2hv
dWxkTGF1bmNoUHJvY2VzcyA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgZW51bSBjbGFzcyBDYXB0
aXZlUG9ydGFsTW9kZSA6IGJvb2wgeyBEaXNhYmxlZCwgRW5hYmxlZCB9OworICAgIGVudW0gY2xh
c3MgV29ya2VyVHlwZSA6IHVpbnQzMl90IHsKKyAgICAgICAgU2VydmljZVdvcmtlciA9IDEgPDwg
MCwKKyAgICAgICAgU2hhcmVkV29ya2VyID0gMSA8PCAxCisgICAgfTsKIAogICAgIHN0YXRpYyBS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmLCBXZWJzaXRlRGF0YVN0
b3JlKiwgQ2FwdGl2ZVBvcnRhbE1vZGUsIElzUHJld2FybWVkLCBXZWJDb3JlOjpDcm9zc09yaWdp
bk1vZGUgPSBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGU6OlNoYXJlZCwgU2hvdWxkTGF1bmNoUHJv
Y2VzcyA9IFNob3VsZExhdW5jaFByb2Nlc3M6Olllcyk7Ci0gICAgc3RhdGljIFJlZjxXZWJQcm9j
ZXNzUHJveHk+IGNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKFdlYlByb2Nlc3NQb29sJiwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mJiwgV2Vic2l0ZURhdGFTdG9yZSYpOworICAgIHN0YXRpYyBS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGVGb3JXb3JrZXJzKFdvcmtlclR5cGUsIFdlYlByb2Nl
c3NQb29sJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgV2Vic2l0ZURhdGFTdG9yZSYp
OwogCiAgICAgfldlYlByb2Nlc3NQcm94eSgpOwogCkBAIC0xNjEsOCArMTY1LDggQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0SXNJblByb2Nlc3NDYWNoZShib29sLCBXaWxsU2h1dERvd24gPSBXaWxs
U2h1dERvd246Ok5vKTsKICAgICBib29sIGlzSW5Qcm9jZXNzQ2FjaGUoKSBjb25zdCB7IHJldHVy
biBtX2lzSW5Qcm9jZXNzQ2FjaGU7IH0KIAotICAgIHZvaWQgZW5hYmxlU2VydmljZVdvcmtlcnMo
Y29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYpOwotICAgIHZvaWQgZGlzYWJs
ZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgdm9pZCBlbmFibGVXb3JrZXJzKFdvcmtlclR5cGUsIGNv
bnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImKTsKKyAgICB2b2lkIGRpc2FibGVX
b3JrZXJzKE9wdGlvblNldDxXb3JrZXJUeXBlPik7CiAKICAgICBXZWJzaXRlRGF0YVN0b3JlJiB3
ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyBBU1NFUlQobV93ZWJzaXRlRGF0YVN0b3JlKTsgcmV0
dXJuICptX3dlYnNpdGVEYXRhU3RvcmU7IH0KICAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUo
V2Vic2l0ZURhdGFTdG9yZSYpOwpAQCAtMTk0LDYgKzE5OCw5IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSBjb25zdCB7IHJldHVybiAhIW1fc2VydmljZVdv
cmtlckluZm9ybWF0aW9uOyB9CiAgICAgYm9vbCBpc1N0YW5kYWxvbmVTZXJ2aWNlV29ya2VyUHJv
Y2VzcygpIGNvbnN0IHsgcmV0dXJuIGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkgJiYgIXBhZ2VD
b3VudCgpOyB9CisgICAgYm9vbCBpc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkgY29uc3QgeyByZXR1
cm4gISFtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uOyB9CisgICAgYm9vbCBpc1N0YW5kYWxvbmVT
aGFyZWRXb3JrZXJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gaXNSdW5uaW5nU2hhcmVkV29ya2Vy
cygpICYmICFwYWdlQ291bnQoKTsgfQorICAgIGJvb2wgaXNSdW5uaW5nV29ya2VycygpIGNvbnN0
IHsgcmV0dXJuIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gfHwgbV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb247IH0KIAogICAgIGJvb2wgaXNEdW1teVByb2Nlc3NQcm94eSgpIGNvbnN0OwogCkBA
IC0zNTksMTIgKzM2NiwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZUF1ZGlibGVNZWRp
YUFzc2VydGlvbnMoKTsKIAorICAgIHZvaWQgc2V0V29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmlu
ZyYpOworICAgIHZvaWQgdXBkYXRlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVm
ZXJlbmNlc1N0b3JlJik7CisgICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0KGNv
bnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCB1cGRhdGVXb3JrZXJQ
cm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGUpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ICAgICB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVu
Y2VzU3RvcmUmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3Jr
ZXJQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lk
IHNldFNlcnZpY2VXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCB1cGRh
dGVTZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3Jl
Jik7CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyUGFnZVByb3h5KFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgcGFnZVByb3h5SUQpIHsgcmV0dXJuIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uICYm
IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5yZW1vdGVXb3JrZXJQYWdlUHJveHlJRCA9PSBw
YWdlUHJveHlJRDsgfQotICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRp
b24oKTsKICAgICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJv
Y2Vzc1Byb3h5Jik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nl
c3MoV2ViUHJvY2Vzc1Byb3h5Jik7CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3Vu
ZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0OwpAQCAtNjU2LDYgKzY2NCw3IEBAIHByaXZhdGU6
CiAgICAgICAgIFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4gY2xpZW50UHJvY2Vzc2VzOwog
ICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxSZW1vdGVXb3JrZXJJbmZvcm1hdGlvbj4gbV9zZXJ2
aWNlV29ya2VySW5mb3JtYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxSZW1vdGVXb3JrZXJJbmZv
cm1hdGlvbj4gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbjsKICAgICBib29sIG1faGFzU2Vydmlj
ZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nIHsgZmFsc2UgfTsKIAogICAgIEhhc2hNYXA8V2Vi
Q29yZTo6U2xlZXBEaXNhYmxlcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpT
bGVlcERpc2FibGVyPj4gbV9zbGVlcERpc2FibGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBjN2MzMWJjNTU3YjU1ZDUxNzA1ZmMz
OWQ3ZTY3OWM5NGM2YTBhZjMuLjE1ZTgxMGE0YzlmMTJlYjkyYmIyZmQxNGQzOTUwYzMxNTE0NDQy
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtODgwLDggKzg4MCwxMCBAQAogCQk0NjE0RjEzMjI1REVEODc1MDA3MDA2RTcgLyogR1BV
UHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NkFDNTMyNDI1REVEODFFMDAzQjU3RUMgLyogR1BVUHJvY2Vz
c0Nvbm5lY3Rpb25QYXJhbWV0ZXJzLmggKi87IH07CiAJCTQ2MUNDQ0E1MjMxNDg1QTcwMEI2NTlC
OSAvKiBVSVJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjMyMzY4NTIzMTQ4MzNGMDBBNDhGQTcgLyogVUlSZW1vdGVP
YmplY3RSZWdpc3RyeS5oICovOyB9OwogCQk0NjFDQ0NBNjIzMTQ4NUFBMDBCNjU5QjkgLyogV2Vi
UmVtb3RlT2JqZWN0UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2MzIzNjgzMjMxNDgxRUYwMEE0OEZBNyAvKiBXZWJSZW1vdGVPYmplY3RS
ZWdpc3RyeS5oICovOyB9OworCQk0NjFFMUJGMjI3OUEwMTE2MDA2QUY1M0IgLyogV2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjFFMUJFRjI3OUEwMTBGMDA2QUY1M0IgLyogV2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2M0ZENDgwMUVC
OTQ1OTYwMEEyOTgyQyAvKiBXS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzRkQ0N0YxRUI5NDU4NDAwQTI5
ODJDIC8qIFdLUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYzRkQ0ODIxRUI5NEVDMDAwQTI5ODJDIC8q
IFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDYzRkQ0ODExRUI5NEVBRDAwQTI5ODJDIC8qIFByb2Nlc3NUZXJt
aW5hdGlvblJlYXNvbi5oICovOyB9OworCQk0NjU2RjdCRDI3QUNBQThEMDBDQjNEN0MgLyogV2Vi
U2hhcmVkV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NjU2RjdCQzI3QUNBQTgxMDBDQjNEN0MgLyogV2ViU2hhcmVkV29ya2VyLmggKi87IH07
CiAJCTQ2NTlGMjVGMjc1RkY2QjIwMEJCQjM2OSAvKiBDYXB0aXZlUG9ydGFsTW9kZU9ic2VydmVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjU5RjI1
RTI3NUZGNkIyMDBCQkIzNjkgLyogQ2FwdGl2ZVBvcnRhbE1vZGVPYnNlcnZlci5oICovOyB9Owog
CQk0NjVGNEUwNjIzMEIyRTk1MDAzQ0VEQjcgLyogU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NUY0RTA1
MjMwQjJFN0MwMDNDRURCNyAvKiBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllci5oICovOyB9Owog
CQk0NjVGQTcyNjI3NTdEOTNEMDA3MjM2MkIgLyogV2ViTG9ja1JlZ2lzdHJ5UHJveHkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NUZBNzIzMjc1N0Q5
MTgwMDcyMzYyQiAvKiBXZWJMb2NrUmVnaXN0cnlQcm94eS5oICovOyB9OwpAQCAtOTAwLDEwICs5
MDIsMTMgQEAKIAkJNDZDMzkyMjkyMzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
QzM5MjI4MjMxNkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmggKi87IH07
CiAJCTQ2QzVCN0NFMjdBQURERDMwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJGcmFtZUxvYWRlckNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZD
NUI3Q0QyN0FBRERCRTAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50Lmgg
Ki87IH07CiAJCTQ2QzVCN0NGMjdBQURERDYwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJMaWJXZWJS
VENQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZDNUI3Q0IyN0FBRERCRTAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckxpYldlYlJUQ1Byb3Zp
ZGVyLmggKi87IH07CisJCTQ2QzkxNkFBMjc5OUQwQTIwMDFBNEU3QyAvKiBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2QzkxNkE5Mjc5OUQwOUQwMDFBNEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCAqLzsg
fTsKIAkJNDZDRTNCMTEyM0Q4Qzg0OTAwMTZBOTZBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENvdW50
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDRTNC
MTAyM0Q4QzgzRDAwMTZBOTZBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oICovOyB9Owor
CQk0NkQ0OEZDRTI3OTlEN0UxMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZENDhGQ0QyNzk5RDdERTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uaCAqLzsgfTsKIAkJNDZERjA2M0MxRjM5MDVGODAwMTk4MEJCIC8q
IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlci5oICovOyB9OwogCQk0NkVFMjg0OTI2OUUwNEFDMDBERDQ4QUIg
LyogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkVFMjg0ODI2OUUwNDlCMDBERDQ4QUIgLyogV2ViQnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggKi87IH07CiAJCTQ2RUUyODREMjY5RTA1MjUwMERENDhB
QiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkVFMjg0QzI2OUUwNTE3MDBERDQ4QUIgLyog
TmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oICovOyB9OworCQk0NkVFM0U4QjI3NjNG
RDJGMDA2MEM3MEYgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4Mzg2NjcyNzYzRkFCMTAw
Q0Y5MTgyIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCAqLzsgfTsKIAkJNDZG
MzhFOEMyNDE2RTY3MzAwNTkzNzVBIC8qIFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkYzOEU4QjI0MTZFNjZE
MDA1OTM3NUEgLyogUnVubmluZ0JvYXJkU2VydmljZXNTUEkuaCAqLzsgfTsKIAkJNDZGOUIyNjMy
MzUyNkVGMzAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZGOUIyNjIyMzUyNkVEMDAwNkZF
NUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oICovOyB9OwogCQk0OTMxMDJCRDI2ODNG
M0QwMDAyQkI4ODUgLyogQXBwUHJpdmFjeVJlcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDkzMTAyQkMyNjgzRjNBNTAwMkJCODg1IC8qIEFwcFBy
aXZhY3lSZXBvcnQuaCAqLzsgfTsKQEAgLTQyMjMsNiArNDIyOCw5IEBACiAJCTQ2MDg4OUZGMjYx
RkE4QTkwMEUyNTAwRCAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRl
cnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYwRjQ4OEQxRjk5NkY2QzAwQ0Y0
Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktp
dC9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTQ2MEY0ODhFMUY5OTZGNkMwMENGNEI4
NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2Fn
ZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJ
CTQ2MUUxQkVDMjc5QTAxMEUwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDYxRTFCRUYyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYxRTFCRjAyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MjEwN0Q3MUYzOERCRDMwMERE
NzgxMCAvKiBQaW5nTG9hZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQaW5nTG9hZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MzIzNjgzMjMx
NDgxRUYwMEE0OEZBNyAvKiBXZWJSZW1vdGVPYmplY3RSZWdpc3RyeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJSZW1vdGVPYmplY3RSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjMyMzY4NDIzMTQ4MjVDMDBBNDhGQTcgLyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDIzMyw2ICs0MjQxLDkgQEAKIAkJNDYzRkQ0ODExRUI5
NEVBRDAwQTI5ODJDIC8qIFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY1MUVDRTYyMjE3OEE4NTAwNjdFQjk1IC8qIFdlYlByb2Nl
c3NDYWNoZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V2ViUHJvY2Vzc0NhY2hlQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
NTI1MEU1MUVDRjUyQ0QwMDIwMjVDQiAvKiBXZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViS2l0MkluaXRpYWxpemVDb2Nv
YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY1NkY3QkEyN0FDQUE4MDAwQ0Iz
RDdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMu
aW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdl
cy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY1NkY3QkIyN0FDQUE4MTAwQ0Iz
RDdDIC8qIFdlYlNoYXJlZFdvcmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRX
b3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjU2RjdCQzI3QUNBQTgx
MDBDQjNEN0MgLyogV2ViU2hhcmVkV29ya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNoYXJlZFdv
cmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjU5RjI1RTI3NUZGNkIyMDBC
QkIzNjkgLyogQ2FwdGl2ZVBvcnRhbE1vZGVPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDYXB0aXZlUG9ydGFsTW9kZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2NUY0RTAyMjMwNzU5RDUwMDNDRURCNyAvKiBTdG9yYWdlQXJlYUlk
ZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZUFyZWFJZGVudGlmaWVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NUY0RTAzMjMwNzYwNEUwMDNDRURCNyAvKiBTdG9y
YWdlQXJlYUltcGxJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VBcmVhSW1wbElk
ZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyNTQsOCArNDI2NSwx
MSBAQAogCQk0NjgwOUE3QjIzRDkyMjUzMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29va2llQ2FjaGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgzNTY5QTIxRTgxQ0M3MDA2RTI3QTMgLyog
UHJvdmlzaW9uYWxQYWdlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UHJvdmlzaW9uYWxQYWdlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4
MzU2OUIyMUU4MUNDNzAwNkUyN0EzIC8qIFByb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4Mzg2NjcyNzYzRkFCMTAwQ0Y5MTgyIC8q
IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0NjgzODY2ODI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OUI5MEYyNzU2RDE0MzAw
MDdDNjUxIC8qIFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVX
ZWJMb2NrUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OUI5MTAy
NzU2RDE0MzAwMDdDNjUxIC8qIFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0Njk0M0RDQjI3NjNGODM0MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlERTgwMjI3
M0VDQzVEMDA5MzAyNzYgLyogUHJvY2Vzc0xhdW5jaGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcm9jZXNzTGF1bmNoZXJDb2NvYS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZBMkI2MDYxRTU2NzVBMjAwQzNERURBIC8qIEJhY2tn
cm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkEyQjYwNzFFNTY3NUEyMDBDM0RFREEg
LyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI3NCw3ICs0Mjg4LDExIEBACiAJCTQ2
QzVCN0NCMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92aWRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92aWRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkM1QjdDQzI3QUFEREJFMDAwQzVCNDcgLyogUmVtb3Rl
V29ya2VyRnJhbWVMb2FkZXJDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlV29y
a2VyRnJhbWVMb2FkZXJDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NkM1QjdDRDI3QUFEREJFMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZDOTE2QTgyNzk5RDA5RDAwMUE0RTdDIC8qIFdlYlNo
YXJlZFdvcmtlclNlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkM5MTZBOTI3OTlEMDlE
MDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNo
YXJlZFdvcmtlclNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkNFM0Ix
MDIzRDhDODNEMDAxNkE5NkEgLyogV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkQ0OEZDQzI3OTlEN0REMDA3RDIwMTQgLyogV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZENDhGQ0QyNzk5RDdERTAwN0QyMDE0IC8qIFdlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NkRGMDYzOTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVm
bGlnaHRDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2REYwNjNBMUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNr
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RTk3NjBBMjc1N0Y2
QzkwMEFDREQzNyAvKiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW4gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI4NCw2ICs0MzAyLDcgQEAKIAkJ
NDZFRTI4NEEyNjlFMDUxNzAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0
cnkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmV0d29ya0Jyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDZFRTI4NEIyNjlFMDUxNzAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0
cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0Jyb2Fk
Y2FzdENoYW5uZWxSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
RUUyODRDMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtCcm9hZGNhc3RDaGFu
bmVsUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZFRTNFOEEyNzYz
RkQyQTAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMu
aW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZGMzhFOEIyNDE2RTY2RDAwNTkzNzVBIC8qIFJ1
bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2RjlCMjYyMjM1MjZFRDAwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5MzEwMkJDMjY4M0YzQTUwMDJCQjg4
NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcFByaXZhY3lSZXBvcnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkyOTUsNiArOTMxNCwyMyBAQAogCQkJ
cGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNDY4Mzg2
NjUyNzYzRkExQjAwQ0Y5MTgyIC8qIFNoYXJlZFdvcmtlciAqLyA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNDY1NkY3QkIyN0FDQUE4MTAwQ0IzRDdDIC8qIFdl
YlNoYXJlZFdvcmtlci5jcHAgKi8sCisJCQkJNDY1NkY3QkMyN0FDQUE4MTAwQ0IzRDdDIC8qIFdl
YlNoYXJlZFdvcmtlci5oICovLAorCQkJCTQ2QzkxNkE4Mjc5OUQwOUQwMDFBNEU3QyAvKiBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXIuY3BwICovLAorCQkJCTQ2QzkxNkE5Mjc5OUQwOUQwMDFBNEU3QyAv
KiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCAqLywKKwkJCQk0NjgzODY2ODI3NjNGQUIxMDBDRjkx
ODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAgKi8sCisJCQkJNDY4Mzg2
NjcyNzYzRkFCMTAwQ0Y5MTgyIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCAq
LywKKwkJCQk0NkVFM0U4QTI3NjNGRDJBMDA2MEM3MEYgLyogV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKKwkJCQk0NkQ0OEZDQzI3OTlEN0REMDA3RDIwMTQg
LyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgKi8sCisJCQkJ
NDZENDhGQ0QyNzk5RDdERTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaCAqLywKKwkJCQk0NjU2RjdCQTI3QUNBQTgwMDBDQjNEN0MgLyogV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKKwkJCSk7
CisJCQlwYXRoID0gU2hhcmVkV29ya2VyOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJ
fTsKIAkJNDY5REU4MDEyNzNFQ0M1RDAwOTMwMjc2IC8qIGNvY29hICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTkzNTksNiArOTM5NSw3IEBACiAJCQkJNTE0
NTI2RUEyNzFFMTYxMDAwMDQ2N0I2IC8qIE5vdGlmaWNhdGlvbnMgKi8sCiAJCQkJNUMwMUJDMzUy
NkQ0NkFENDAwRkVCNDJGIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50ICovLAogCQkJCTkzQkEw
NEQ5MjE1MUFEQ0QwMDdGNDU1RiAvKiBTZXJ2aWNlV29ya2VyICovLAorCQkJCTQ2ODM4NjY1Mjc2
M0ZBMUIwMENGOTE4MiAvKiBTaGFyZWRXb3JrZXIgKi8sCiAJCQkJOTMwODVEQzIyNkUxQkI2NTAw
MEVDNkE3IC8qIHN0b3JhZ2UgKi8sCiAJCQkJNDEzMDc1OTcxREU4NEVENzAwMzlFQzY5IC8qIHdl
YnJ0YyAqLywKIAkJCQk5M0IyNjE0MzIyN0QxNDMxMDBCOTdBNzYgLyogV2ViU3RvcmFnZSAqLywK
QEAgLTk0NjEsOCArOTQ5OCwxMiBAQAogCQkJCTQxOUFDRjlCMUY5ODFEMjYwMDlGMUE4MyAvKiBX
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggKi8sCiAJCQkJNTFCRUI2MjkxRjNBNUFD
RDAwNTAyOUI5IC8qIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAgKi8sCiAJCQkJNTFCRUI2
MkExRjNBNUFDRDAwNTAyOUI5IC8qIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oICovLAorCQkJ
CTQ2MUUxQkVDMjc5QTAxMEUwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uY3BwICovLAorCQkJCTQ2MUUxQkVGMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCAqLywKKwkJCQk0NjFFMUJGMDI3
OUEwMTBGMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluICovLAogCQkJCTQ2NjhBMEJCMjdBQjYwNDAwMEM3MjBCQyAvKiBXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcCAqLywKIAkJCQk0NjY4QTBCODI3QUI2MDNGMDBD
NzIwQkMgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oICovLAorCQkJCTQ2OTQz
RENCMjc2M0Y4MzQwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1l
c3NhZ2VzLmluICovLAogCQkJCTQ2NjhBMEI5MjdBQjYwM0YwMEM3MjBCQyAvKiBXZWJTaGFyZWRX
b3JrZXJQcm92aWRlci5jcHAgKi8sCiAJCQkJNDY2OEEwQkEyN0FCNjA0MDAwQzcyMEJDIC8qIFdl
YlNoYXJlZFdvcmtlclByb3ZpZGVyLmggKi8sCiAJCQkJNTE3QTUzMDMxRjQ3OTNCMjAwRENEQzBB
IC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgKi8sCkBAIC0xMzY1OCw4ICsxMzY5OSwxMyBA
QAogCQkJCTdDMzYxRDczMTkyN0ZBMzYwMDM2QTU5RCAvKiBXZWJTY3JpcHRNZXNzYWdlSGFuZGxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDNCOTQ4NDkxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNl
YXJjaFBvcHVwTWVudS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFCRUI2MkMxRjNBNUFENzAwNTAy
OUI5IC8qIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY1
NkY3QkQyN0FDQUE4RDAwQ0IzRDdDIC8qIFdlYlNoYXJlZFdvcmtlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNDYxRTFCRjIyNzlBMDExNjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY2OEEwQkQyN0FCNjA1NjAw
QzcyMEJDIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTQ2NjhBMEJDMjdBQjYwNTAwMEM3MjBCQyAvKiBXZWJTaGFyZWRXb3JrZXJQcm92aWRl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZDOTE2QUEyNzk5RDBBMjAwMUE0RTdDIC8qIFdlYlNo
YXJlZFdvcmtlclNlcnZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZFRTNFOEIyNzYzRkQyRjAw
NjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
LAorCQkJCTQ2RDQ4RkNFMjc5OUQ3RTEwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzhERDM4MDFGRTQ1MjE2
MDBGMkE1NTYgLyogV2Vic2l0ZUF1dG9wbGF5UG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTQ4MzJENzFBOUNERjk2MDA4QjRERkUgLyogV2Vic2l0ZURhdGEuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBNDgzMkQxMUE5QkRDMkYwMDhCNERGRSAvKiBXZWJzaXRlRGF0YVJlY29yZC5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA4MWRkMDQxMWEyMzk2YmM1
ZTIzNDU1YjlmNWI1OWU3MzQ2MWVlOTZmLi5iYjM1NDdmNDZhZDRiOGE1YzIwNTJkMDgyY2E2NzU0
YjEyOTFmZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTU3LDcgKzU3LDEwIEBA
CiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU2Vy
dmljZVdvcmtlclByb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbk1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5oIgogI2luY2x1ZGUgIldlYlNv
Y2tldENoYW5uZWxNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNvY2tldFN0cmVhbS5oIgpAQCAt
MTc0LDYgKzE3NywxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUAogICAgICAgICByZXR1cm47
CiAgICAgfQogI2VuZGlmCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09
IE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpIHsKKyAgICAgICAgc2hhcmVkV29ya2VyQ29ubmVjdGlvbigpLmRpZFJlY2VpdmVN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsK
KyAgICAgICAgQVNTRVJUKFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5j
b25uZWN0aW9uKCkpOworICAgICAgICBpZiAoYXV0byogY29udGV4dE1hbmFnZXJDb25uZWN0aW9u
ID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkK
KyAgICAgICAgICAgIHN0YXRpY19jYXN0PFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbiY+KCpjb250ZXh0TWFuYWdlckNvbm5lY3Rpb24pLmRpZFJlY2VpdmVNZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAjaWYgRU5BQkxF
KEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFt
ZSgpID09IE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCBlZGMwNDkzYmQzZWRkZmExNjkwMGJk
Yjg1OTE0YzY0YzU5Nzg5MTgwLi4wYjY0ODBhNjFkMzZjZmUwNDc5YjRjZjQwMWQ0NWRmNDM4MzBi
MzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtNDgsNiArNDgsNyBAQCBlbnVtIGNsYXNz
IEhUVFBDb29raWVBY2NlcHRQb2xpY3kgOiB1aW50OF90OwogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb247CiBjbGFzcyBXZWJTV0NsaWVudENvbm5lY3Rpb247CiBjbGFzcyBXZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDMwNjQ3NjY1ZmE2NTA4
YTVlYzcwMDY3M2JiYjc0NDJkM2I2OGYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmNwcApAQCAtMCwwICsxLDEyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCIK
KworI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJSZW1vdGVXZWJMb2NrUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJSZW1vdGVXb3JrZXJG
cmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIlJlbW90ZVdvcmtlckxpYldlYlJUQ1Byb3Zp
ZGVyLmgiCisjaW5jbHVkZSAiV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmgiCisjaW5jbHVk
ZSAiV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJDb21waWxlZENvbnRl
bnRSdWxlTGlzdERhdGEuaCIKKyNpbmNsdWRlICJXZWJEYXRhYmFzZVByb3ZpZGVyLmgiCisjaW5j
bHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzS2V5cy5oIgorI2luY2x1
ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRQcm92aWRlci5oIgor
I2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
RW1wdHlDbGllbnRzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9QYWdlQ29uZmlndXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlclRocmVhZFBy
b3h5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQWdlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1dvcmtlckZldGNoUmVzdWx0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQ
YWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdl
YlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmIHByZWZlcmVuY2VzU3RvcmUsIFJlbW90ZVdvcmtlckluaXRpYWxpemF0
aW9uRGF0YSYmIGluaXRpYWxpemF0aW9uRGF0YSkKKyAgICA6IG1fY29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MoV1RGTW92ZShjb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcykpCisgICAgLCBtX3Jl
Z2lzdHJhYmxlRG9tYWluKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pKQorICAgICwgbV9wYWdl
R3JvdXBJRChwYWdlR3JvdXBJRCkKKyAgICAsIG1fd2ViUGFnZVByb3h5SUQod2ViUGFnZVByb3h5
SUQpCisgICAgLCBtX3BhZ2VJRChwYWdlSUQpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgLCBt
X3VzZXJBZ2VudChXZWJDb3JlOjpzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUo
eyB9KSkKKyNlbHNlCisgICAgLCBtX3VzZXJBZ2VudChzdGFuZGFyZFVzZXJBZ2VudCgpKQorI2Vu
ZGlmCisgICAgLCBtX3VzZXJDb250ZW50Q29udHJvbGxlcihXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OmdldE9yQ3JlYXRlKGluaXRpYWxpemF0aW9uRGF0YS51c2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyKSkKK3sKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIG1fdXNl
ckNvbnRlbnRDb250cm9sbGVyLT5hZGRDb250ZW50UnVsZUxpc3RzKFdURk1vdmUoaW5pdGlhbGl6
YXRpb25EYXRhLmNvbnRlbnRSdWxlTGlzdHMpKTsKKyNlbmRpZgorCisgICAgdXBkYXRlUHJlZmVy
ZW5jZXNTdG9yZShwcmVmZXJlbmNlc1N0b3JlKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5kaXNhYmxlVGVybWluYXRpb24oKTsKK30KKworV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjp+V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKCkg
PSBkZWZhdWx0OworCit2b2lkIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6ZXN0YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0
YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24geyBtX3dlYlBhZ2VQcm94eUlELCBt
X3JlZ2lzdHJhYmxlRG9tYWluIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCAwKTsKK30K
Kwordm9pZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnBvc3RFeGNl
cHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJl
ZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAg
bV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6UG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0
IHsgc2hhcmVkV29ya2VySWRlbnRpZmllciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIHNvdXJjZVVSTCB9LCAwKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OnVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYgc3RvcmUpCit7CisgICAgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXNH
ZW5lcmF0ZWQoc3RvcmUpOworICAgIG1fcHJlZmVyZW5jZXNTdG9yZSA9IHN0b3JlOworfQorCit2
b2lkIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bGF1bmNoU2hhcmVk
V29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgV2ViQ29yZTo6U2hhcmVkV29y
a2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiB1cmwsIFdlYkNvcmU6
Oldvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zLCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3Vs
dCYmIHdvcmtlckZldGNoUmVzdWx0KQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwg
IldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bGF1bmNoU2hhcmVkV29y
a2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VySWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKKyAgICBhdXRvIHBhZ2VDb25maWd1cmF0aW9uID0gV2ViQ29yZTo6
cGFnZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnNlc3Npb25JRCgpKTsKKworICAgIHBhZ2VDb25maWd1cmF0aW9uLmRhdGFiYXNlUHJvdmlkZXIg
PSBXZWJEYXRhYmFzZVByb3ZpZGVyOjpnZXRPckNyZWF0ZShtX3BhZ2VHcm91cElEKTsKKyAgICBw
YWdlQ29uZmlndXJhdGlvbi5zb2NrZXRQcm92aWRlciA9IFdlYlNvY2tldFByb3ZpZGVyOjpjcmVh
dGUobV93ZWJQYWdlUHJveHlJRCk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uYnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYnJvYWRjYXN0Q2hhbm5lbFJl
Z2lzdHJ5KCk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24ud2ViTG9ja1JlZ2lzdHJ5ID0gV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkud2ViTG9ja1JlZ2lzdHJ5KCk7CisgICAgcGFnZUNvbmZpZ3VyYXRp
b24udXNlckNvbnRlbnRQcm92aWRlciA9IG1fdXNlckNvbnRlbnRDb250cm9sbGVyOworI2lmIEVO
QUJMRShXRUJfUlRDKQorICAgIHBhZ2VDb25maWd1cmF0aW9uLmxpYldlYlJUQ1Byb3ZpZGVyID0g
bWFrZVVuaXF1ZVJlZjxSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92aWRlcj4oKTsKKyNlbmRpZgor
CisgICAgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lID0gbWFrZVVu
aXF1ZVJlZjxSZW1vdGVXb3JrZXJGcmFtZUxvYWRlckNsaWVudD4obV93ZWJQYWdlUHJveHlJRCwg
bV9wYWdlSUQsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgbV91c2VyQWdl
bnQpOworCisgICAgYXV0byBwYWdlID0gbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpQYWdlPihXVEZN
b3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CisgICAgaWYgKG1fcHJlZmVyZW5jZXNTdG9yZSkgewor
ICAgICAgICBXZWJQYWdlOjp1cGRhdGVTZXR0aW5nc0dlbmVyYXRlZCgqbV9wcmVmZXJlbmNlc1N0
b3JlLCBwYWdlLT5zZXR0aW5ncygpKTsKKyAgICAgICAgcGFnZS0+c2V0dGluZ3MoKS5zZXRTdG9y
YWdlQmxvY2tpbmdQb2xpY3koc3RhdGljX2Nhc3Q8V2ViQ29yZTo6U3RvcmFnZUJsb2NraW5nUG9s
aWN5PihtX3ByZWZlcmVuY2VzU3RvcmUtPmdldFVJbnQzMlZhbHVlRm9yS2V5KFdlYlByZWZlcmVu
Y2VzS2V5OjpzdG9yYWdlQmxvY2tpbmdQb2xpY3lLZXkoKSkpKTsKKyAgICB9CisgICAgcGFnZS0+
c2V0dXBGb3JSZW1vdGVXb3JrZXIodXJsLCBvcmlnaW4udG9wT3JpZ2luLCB3b3JrZXJGZXRjaFJl
c3VsdC5yZWZlcnJlclBvbGljeSk7CisgICAgYXV0byBzaGFyZWRXb3JrZXJUaHJlYWRQcm94eSA9
IFdlYkNvcmU6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpjcmVhdGUoV1RGTW92ZShwYWdlKSwg
c2hhcmVkV29ya2VySWRlbnRpZmllciwgb3JpZ2luLCB1cmwsIFdURk1vdmUod29ya2VyRmV0Y2hS
ZXN1bHQpLCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMpLCBtX3VzZXJBZ2VudCwgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuY2FjaGVTdG9yYWdlUHJvdmlkZXIoKSk7CisKKyAgICBXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkucmVnaXN0ZXJTaGFyZWRXb3JrZXJU
aHJlYWQoV1RGTW92ZShzaGFyZWRXb3JrZXJUaHJlYWRQcm94eSkpOworfQorCit2b2lkIFdlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Y2xvc2UoKQoreworICAgIFJFTEVB
U0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6Y2xvc2U6IFNoYXJlZCB3b3JrZXIgcHJvY2VzcyBpcyByZXF1ZXN0ZWQgdG8gc3RvcCBh
bGwgc2hhcmVkIHdvcmtlcnMiKTsKKyAgICBzZXRBc0Nsb3NlZCgpOworCisgICAgbV9jb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OkNsb3NlU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24geyB9LCAwKTsKKyAg
ICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc3RvcEFs
bFNoYXJlZFdvcmtlcnMoKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbmFibGVUZXJt
aW5hdGlvbigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWFjZmQwYzQxMjkx
ZDU3ZTc0YjA2ZmVkYzY5NWJmYWYxMDk1ZGJiZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5oCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJJZGVudGlmaWVyVHlwZXMuaCIKKyNp
bmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlm
aWVyLmgiCisjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWlu
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VySWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0Owor
c3RydWN0IFdvcmtlck9wdGlvbnM7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXI7CitzdHJ1Y3QgUmVtb3RlV29ya2VySW5pdGlhbGl6YXRp
b25EYXRhOworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24g
ZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNvbm5l
Y3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAgV2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBhZ2VHcm91cElkZW50aWZpZXIsIFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVm
ZXJlbmNlc1N0b3JlJiwgUmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYpOworICAgIH5X
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oKTsKKworICAgIHZvaWQgZXN0
YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAg
IHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpIGZpbmFsOworCisgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5h
bDsKKworcHJpdmF0ZToKKyAgICAvLyBJUEMgTWVzc2FnZXMuCisgICAgdm9pZCBsYXVuY2hTaGFy
ZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklk
ZW50aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYsIFdlYkNvcmU6Oldvcmtl
ckZldGNoUmVzdWx0JiYpOworICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlJik7CisgICAgdm9pZCBzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNl
ckFnZW50KSB7IG1fdXNlckFnZW50ID0gV1RGTW92ZSh1c2VyQWdlbnQpOyB9CisgICAgdm9pZCBj
bG9zZSgpOworCisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzczsKKyAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9t
YWluOworICAgIFBhZ2VHcm91cElkZW50aWZpZXIgbV9wYWdlR3JvdXBJRDsKKyAgICBXZWJQYWdl
UHJveHlJZGVudGlmaWVyIG1fd2ViUGFnZVByb3h5SUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgbV9wYWdlSUQ7CisgICAgU3RyaW5nIG1fdXNlckFnZW50OworICAgIFJlZjxXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI+IG1fdXNlckNvbnRlbnRDb250cm9sbGVyOworICAgIHN0ZDo6b3B0
aW9uYWw8V2ViUHJlZmVyZW5jZXNTdG9yZT4gbV9wcmVmZXJlbmNlc1N0b3JlOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDgyYTRhZGE1M2Zk
NGJlYjFjNWVlZTFmN2FiYTYyMmYzZmQ1YjFkYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMwIEBACisjIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFdlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKKyAgICBMYXVuY2hTaGFyZWRXb3JrZXIo
c3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtl
cklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgVVJMIHVybCwgc3RydWN0IFdlYkNv
cmU6Oldvcmtlck9wdGlvbnMgd29ya2VyT3B0aW9ucywgc3RydWN0IFdlYkNvcmU6OldvcmtlckZl
dGNoUmVzdWx0IHdvcmtlckZldGNoUmVzdWx0KQorICAgIFBvc3RDb25uZWN0RXZlbnQoV2ViQ29y
ZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3Jl
OjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0IHBvcnQsIFN0cmluZyBzb3VyY2VPcmlnaW4pCisgICAg
VGVybWluYXRlU2hhcmVkV29ya2VyKFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hh
cmVkV29ya2VySWRlbnRpZmllcikKKyAgICBVcGRhdGVQcmVmZXJlbmNlc1N0b3JlKHN0cnVjdCBX
ZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUpCisgICAgU2V0VXNlckFnZW50KFN0cmlu
ZyB1c2VyQWdlbnQpCisgICAgQ2xvc2UoKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uLmNwcAppbmRleCA1YzVmZGFhNjAwNTc5NjdjNjVjMDMyZjA0MjVmZDkxNTkzMzE4ZjNi
Li41ZGRiZGU0NGE5NmIxNWNjMzY3MTkwZDhhY2QxNzczMTMyOTQ1YmRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcApAQCAtMjYsMjMgKzI2LDQ1IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5o
IgogCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1NoYXJl
ZFdvcmtlck1hbmFnZXIuaD4KKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJLZXkuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dv
cmtlck9wdGlvbnMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb246OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKSA9IGRlZmF1
bHQ7CisjZGVmaW5lIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9H
KFNoYXJlZFdvcmtlciwgIiVwIC0gW3dlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBX
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgV2ViQ29yZTo6UHJv
Y2Vzczo6aWRlbnRpZmllcigpLnRvVUludDY0KCksICMjX19WQV9BUkdTX18pCisKK1dlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb246OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24o
KQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coIldlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb246Iik7Cit9CisKK1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246On5XZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0Vf
TE9HKCJ+V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjoiKTsKK30KIAogSVBDOjpDb25u
ZWN0aW9uKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyQ29u
bmVjdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuICZXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7CiB9CiAKLXZvaWQg
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6cmVxdWVzdFNoYXJlZFdvcmtlcihjb25z
dCBVUkwmIHVybCwgV2ViQ29yZTo6U2hhcmVkV29ya2VyJiBzaGFyZWRXb3JrZXIsIFdlYkNvcmU6
OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYg
d29ya2VyT3B0aW9ucykKK3ZvaWQgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6cmVx
dWVzdFNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIHNoYXJlZFdv
cmtlcktleSwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgcG9y
dCwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYgd29ya2VyT3B0aW9ucykKIHsKLSAgICAv
LyBGSVhNRTogU2hvdWxkIHNlbmQgSVBDIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MuCi0gICAgV2Vi
Q29yZTo6U2hhcmVkV29ya2VyTWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdCh1cmwsIHNoYXJl
ZFdvcmtlciwgV1RGTW92ZShwb3J0KSwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSk7CisgICAgQ09O
TkVDVElPTl9SRUxFQVNFX0xPRygicmVxdWVzdFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50
b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb246OlJlcXVlc3RTaGFyZWRXb3JrZXIgeyBzaGFyZWRXb3JrZXJL
ZXksIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdURk1vdmUocG9ydCksIHdvcmtlck9w
dGlvbnMgfSk7CiB9CiAKK3ZvaWQgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6c2hh
cmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5
JiBzaGFyZWRXb3JrZXJLZXksIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIg
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0Vf
TE9HKCJzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheTogc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlclNl
cnZlckNvbm5lY3Rpb246OlNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5IHsgc2hhcmVkV29y
a2VyS2V5LCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIH0pOworfQorCisjdW5kZWYgQ09O
TkVDVElPTl9SRUxFQVNFX0xPRworCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uaAppbmRleCA2MWVlNWFmNDI0ZGMwMzM3ZjYyY2Y3MTkzMmEx
NWJiOTU1ZTZkY2QyLi40NzgxOTNlZjdkZGFmMDYxZDZlYjUyOGVkZjkzZGJjNDExN2EzMjM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oCkBAIC0yNSwyMCArMjUsMjUgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRl
ICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24sIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyIHsKK2NsYXNzIFdlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1Ymxp
YyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24pOyB9CisgICAgfldlYlNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb24oKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgV2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpOwogCiAgICAgLy8gV2ViQ29yZTo6U2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbi4KLSAgICB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoY29uc3Qg
VVJMJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyJiwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdl
UG9ydCYmLCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVz
dFNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmLCBXZWJDb3JlOjpT
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQ
b3J0JiYsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmKSBmaW5hbDsKKyAgICB2b2lkIHNo
YXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktl
eSYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpIGZpbmFsOwogCiAgICAg
Ly8gSVBDOjpNZXNzYWdlU2VuZGVyLgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyMmFlMWEzMmM5Mzk1M2Q5NWU4
ZWFmOGM1ODEwMjI3MGI1MjU3ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCkBAIC0wLDAgKzEsMjcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworbWVzc2FnZXMgLT4gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiB7CisgICAg
RmV0Y2hTY3JpcHRJbkNsaWVudChVUkwgdXJsLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpX
b3JrZXJPcHRpb25zIHdvcmtlck9wdGlvbnMpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6V29ya2VyRmV0
Y2hSZXN1bHQgZmV0Y2hSZXN1bHQpIEFzeW5jCisgICAgTm90aWZ5V29ya2VyT2JqZWN0T2ZMb2Fk
Q29tcGxldGlvbihXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCisgICAg
UG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgU3RyaW5nIGVycm9yTWVzc2Fn
ZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFN0cmluZyBzb3VyY2VVUkwpCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZGQ4ZDU4MWFjNWIy
NGQ1ZDk0MDYyYjljNjVjMjQyZjBjNTFlYzk4NC4uZGQ0NWI0NTg4YmY5ZGQxMjRlMThmYWE5NWEz
MjZlZDMxOTMxYTQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApA
QCAtODQsNiArODQsOCBAQAogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU2hh
cmVkV29ya2VyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRTdHJlYW0uaCIKICNpbmNs
dWRlICJXZWJzaXRlRGF0YS5oIgpAQCAtMTM0LDYgKzEzNiw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNvbnRl
eHREYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJH
ZXN0dXJlSW5kaWNhdG9yLmg+CiAjaW5jbHVkZSA8cGFsL0xvZ2dpbmcuaD4KICNpbmNsdWRlIDx3
dGYvQWxnb3JpdGhtcy5oPgpAQCAtOTA0LDcgKzkwNyw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXIm
IGRlCiAgICAgfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIC8vIEZJWE1FOiBS
ZW1vdmU/CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7
CiAgICAgICAgIEFTU0VSVChTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9u
KCkpOwogICAgICAgICBpZiAoYXV0byogY29udGV4dE1hbmFnZXJDb25uZWN0aW9uID0gU1dDb250
ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKQpAQCAtOTEzLDYgKzkxNSwxMyBA
QCB2b2lkIFdlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZQogICAgIH0KICNlbmRpZgogCisgICAgaWYgKGRlY29k
ZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBB
U1NFUlQoU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24o
KSk7CisgICAgICAgIGlmIChhdXRvKiBjb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gPSBTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKQorICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uJj4o
KmNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbikuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwg
ZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBMT0dfRVJST1IoIlVuaGFu
ZGxlZCB3ZWIgcHJvY2VzcyBtZXNzYWdlICclcycgKGRlc3RpbmF0aW9uOiAlIiBQUkl1NjQgIiBw
aWQ6ICVkKSIsIGRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2FnZU5hbWUoKSksIGRlY29kZXIuZGVz
dGluYXRpb25JRCgpLCBzdGF0aWNfY2FzdDxpbnQ+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSkpOwog
fQogCkBAIC0xOTE5LDYgKzE5MjgsMTYgQEAgTGliV2ViUlRDTmV0d29yayYgV2ViUHJvY2Vzczo6
bGliV2ViUlRDTmV0d29yaygpCiAgICAgcmV0dXJuICptX2xpYldlYlJUQ05ldHdvcms7CiB9CiAK
K3ZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29u
c3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0
cmFibGVEb21haW4sIFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmIGluaXRpYWxpemF0
aW9uRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIC8vIFdlIGFyZSBpbiB0aGUgU2hhcmVkIFdvcmtlciBjb250ZXh0IHByb2Nlc3MgYW5k
IHRoZSBjYWxsIGJlbG93IGVzdGFibGlzaGVzIG91ciBjb25uZWN0aW9uIHRvIHRoZSBOZXR3b3Jr
IFByb2Nlc3MKKyAgICAvLyBieSBjYWxsaW5nIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi4gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIgbmVlZHMgdG8gdXNlIHRoZSBzYW1lIHVuZGVy
bHlpbmcgSVBDOjpDb25uZWN0aW9uIGFzIHRoZQorICAgIC8vIE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbiBmb3Igc3luY2hyb25pemF0aW9uIHB1cnBvc2VzLgorICAgIGF1dG8mIGlwY0Nvbm5lY3Rp
b24gPSBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7CisgICAg
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENvbm5lY3Rpb24obWFr
ZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24+KGlwY0Nvbm5l
Y3Rpb24sIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBwYWdlR3JvdXBJRCwgd2ViUGFnZVBy
b3h5SUQsIHBhZ2VJRCwgc3RvcmUsIFdURk1vdmUoaW5pdGlhbGl6YXRpb25EYXRhKSkpOworICAg
IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCktPmVz
dGFibGlzaENvbm5lY3Rpb24oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogdm9pZCBXZWJQcm9jZXNzOjplc3RhYmxpc2hTZXJ2aWNl
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZp
ZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFJl
Z2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwg
UmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYgaW5pdGlhbGl6YXRpb25EYXRhLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCAwM2ZjMGM3MWQ3YzNhN2Q5N2Q1YmRkYzZiYWJm
ZGYwOGI0NjY5ZjI1Li40MjNkZWZmMmFmNWJjNDJlNzU0ODIzZWM2YjhjMGYwMDEwY2EwMjYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTQ3MSw2ICs0NzEsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZ2FtZXBhZERpc2Nvbm5lY3RlZCh1bnNpZ25lZCBpbmRleCk7CiAj
ZW5kaWYKIAorICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25E
YXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogICAgIHZvaWQgZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlm
aWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmll
ciwgUmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KaW5kZXggM2JjNDczMTllMzZkMDA2MzE5OGJiYmY5NjY4ZDA2OWFhZGNk
ZTM3Ny4uZjVlNzM2ZWQzNDdmMjcxYWRlYzdjNDVkMDNmZDgzZGJiMGJhOWJlZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTEwMCw2
ICsxMDAsOCBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNv
dW50ZWQgewogICAgIEdhbWVwYWREaXNjb25uZWN0ZWQodW5zaWduZWQgaW5kZXgpCiAjZW5kaWYK
IAorICAgIEVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhXZWJLaXQ6OlBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYktpdDo6V2Vi
UGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIHN0cnVjdCBXZWJLaXQ6OlJlbW90ZVdvcmtl
ckluaXRpYWxpemF0aW9uRGF0YSBpbml0aWFsaXphdGlvbkRhdGEpIC0+ICgpIEFzeW5jCisKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgRXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJLaXQ6OlBhZ2VHcm91cElkZW50aWZpZXIg
cGFnZUdyb3VwSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJ
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVm
ZXJlbmNlc1N0b3JlIHN0b3JlLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNl
cnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6UmVtb3RlV29ya2VySW5p
dGlhbGl6YXRpb25EYXRhIGluaXRpYWxpemF0aW9uRGF0YSkgLT4gKCkgQXN5bmMKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGI1NDZhNzM2NDQ1MjVkMTNjZWQ4YjJlNmM0NjBjMTkyYWMyMWRlNTkuLjdkYjM0OTEz
MGUxNTMwOTRkNWQ4Yjc2YjFiYTI1ZTdlZTc4NWJlN2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAor
MjAyMi0wMi0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBzaGFyaW5nIFNoYXJlZCBXb3JrZXJzIChpbmNsdWRpbmcgYWNyb3NzIFdl
YlByb2Nlc3NlcykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNTk1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODgzMzA2NjY+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmViYXNlbGluZSBleGlzdGlu
ZyBXUFQgdGVzdHMgaW52b2x2aW5nIHNoYXJlZCB3b3JrZXJzLgorCisgICAgICAgICogVGVzdEV4
cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFy
ZWR3b3JrZXItY29ubmVjdC1zcmMuc3ViLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXJlcG9ydC1vbmx5LnN1
Yi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay13azIvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUt
d29ya2VyL3NoYXJlZHdvcmtlci1zY3JpcHQtc3JjLnN1Yi1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4
cGVjdGVkLnR4dDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwu
d2luZG93LWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQ6IENvcGllZCBmcm9tIExheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13
b3JrZXItaW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQuCisgICAgICAgICogcGxh
dGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9k
dWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0OiBDb3BpZWQgZnJv
bSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9k
dWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0LgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhw
ZWN0ZWQudHh0OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhw
ZWN0ZWQudHh0LgorCiAyMDIyLTAyLTA0ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4K
IAogICAgICAgICBHcmFkaWVudHMgZG9uJ3QgY29ycmVjdGx5IGludGVycG9sYXRlIG1pc3Npbmcv
bm9uZSBjb2xvciBjb21wb25lbnRzIGNvcnJlY3RseQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKaW5kZXggZjM1NjZlYjg0MGFjMGQxZmE1OGYxZWYyMzIyMjM3NmNkNmZjYWJiYS4uMzBkMmU3
NWI0MjYyOWJiOWNkNWRiZGMyZTcyZjMyZGIyMmU5OGIzMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMjItMDItMDQgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Igc2hhcmluZyBTaGFyZWQg
V29ya2VycyAoaW5jbHVkaW5nIGFjcm9zcyBXZWJQcm9jZXNzZXMpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU5NTgKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzg4MzMwNjY2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlYmFzZWxpbmUgZXhpc3RpbmcgV1BUIHRlc3RzIGludm9sdmluZyBzaGFyZWQg
d29ya2Vycy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5
LXBvbGljeS9jb25uZWN0LXNyYy9zaGFyZWQtd29ya2VyLWNvbm5lY3Qtc3JjLWFsbG93ZWQuc3Vi
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvY29ubmVjdC1zcmMvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1ibG9ja2Vk
LnN1Yi1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXJlcG9ydC1vbmx5LnN1
Yi1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0
eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZsaW5lL2FwcGNh
Y2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L2Ny
b3NzLW9yaWdpbi1pc29sYXRlZC1wZXJtaXNzaW9uLmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5
L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0
YW5jZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvY2xhaW0tc2hhcmVkLXdvcmtlci1mZXRj
aC5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvU2hhcmVkV29ya2VyX2RhdGFVcmwtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwu
d2luZG93LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9z
aGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBv
cnQtcmVmZXJyZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3Jr
ZXItb3B0aW9ucy1jcmVkZW50aWFscy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVs
dGlwbGUtd29ya2Vycy8wMDgtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItZnJvbS1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXIt
bmFtZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMveGhyL29wZW4tdXJsLXJlZGlyZWN0ZWQtc2hh
cmVkd29ya2VyLW9yaWdpbi1leHBlY3RlZC50eHQ6CisKIDIwMjItMDItMDQgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBsYW5kIG1pc3Npbmcg
YmFzZWxpbmUgZm9yIFNoYXJlZCBXb3JrZXIgdGVzdC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGFk
OTcwMjkwYzQzOGFkZmNkNDQ0NmRhZjcyN2YzZmQ1OTQzYzRjMjQuLjRhMmI2YmNhOTJkZDkwZGVm
Y2Y2YWI0ZDI5YTNlMDkyMTc5NzFmYmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDU5LDcgKzQ1
OSw2IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViLWxvY2tzL3N0ZWFsLnRl
bnRhdGl2ZS5odHRwcy5hbnkuaHRtbCBbIER1bXBKCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWFuYWx5c2Vybm9kZS1pbnRlcmZhY2Uv
dGVzdC1hbmFseXNlci1taW5pbXVtLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3Ro
ZS1hdWRpb25vZGUtaW50ZXJmYWNlL2F1ZGlvbm9kZS1kaXNjb25uZWN0LWF1ZGlvcGFyYW0uaHRt
bCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dvcmtlcnMvc2FtZS1vcmlnaW4tY2hlY2suc3ViLmh0bWwgWyBEdW1wSlNDb25zb2xl
TG9nSW5TdGRFcnIgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3No
YXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3Rk
RXJyIF0KIGZhc3QvZmlsZXMvZmlsZS1yZWFkZXItYmFjay1mb3J3YXJkLWNhY2hlLmh0bWwgWyBE
dW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQogZmFzdC9oaXN0b3J5L3BhZ2UtY2FjaGUtY3JlYXRl
SW1hZ2VCaXRtYXAuaHRtbCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCiBodHRwL3Rlc3Rz
L25hdmlnYXRpb24vcGFnZS1jYWNoZS14aHItaW4tbG9hZGluZy1pZnJhbWUuaHRtbCBbIER1bXBK
U0NvbnNvbGVMb2dJblN0ZEVyciBdCkBAIC04NDksNiArODQ4LDcgQEAgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy91c2VyLXRpbWluZy9tYXJrLmh0bWwgWyBGYWlsdXJlIFBhc3MgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy91c2VyLXRpbWluZy9tZWFzdXJlX2Fzc29j
aWF0ZWRfd2l0aF9uYXZpZ2F0aW9uX3RpbWluZy5odG1sIFsgRmFpbHVyZSBQYXNzIF0KIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3N5c3RlbS1zdGF0ZS1h
bmQtY2FwYWJpbGl0aWVzL3RoZS1uYXZpZ2F0b3Itb2JqZWN0L3BsdWdpbnMtYW5kLW1pbWV0eXBl
cy5odG1sIFsgRmFpbHVyZSBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
YmVhY29uL2JlYWNvbi1yZWRpcmVjdC5zdWIud2luZG93Lmh0bWwgWyBGYWlsdXJlIFBhc3MgXQor
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRl
ci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3b3JrZXItcGFydGl0aW9uaW5nLnRlbnRh
dGl2ZS5odHRwcy53aW5kb3cuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiAKIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZG9jdW1lbnQtbWV0YWRhdGEvdGhlLWxp
bmstZWxlbWVudC9saW5rLWxvYWQtZXJyb3ItZXZlbnRzLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9n
SW5TdGRFcnIgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGlj
cy9kb2N1bWVudC1tZXRhZGF0YS90aGUtbGluay1lbGVtZW50L2xpbmstbG9hZC1lcnJvci1ldmVu
dHMuaHR0cHMuaHRtbCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCkBAIC01MTMxLDYgKzUx
MzEsMTAgQEAgd2Via2l0Lm9yZy9iLzIzNDk3NyBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9kb20vZXZlbnRzL2ZvY3VzLWUKICMgVGVzdCBpcyBjcmFzaGluZyBzaW5j
ZSBpbXBvcnQuCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxl
cy9kZWRpY2F0ZWQtd29ya2VyLWltcG9ydC1jc3AuaHRtbCBbIFNraXAgXQogCisjIFRlc3QgaXMg
Zmxha3kgYmVjYXVzZSBNZXNzYWdlUG9ydCBtZXNzYWdlcyBtYXkgZ2V0IHJlY2VpdmVkIGluIGEg
ZGlmZmVyZW50IG9yZGVyIHdoZW4gc2V2ZXJhbCBNZXNzYWdlUG9ydHMgYXJlIGludm9sdmVkLAor
IyBkdWUgdG8gaG93IE1lc3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2VzKCkgaXMgaW1wbGVtZW50
ZWQuCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtl
ci1uYW1lLXZpYS1vcHRpb25zLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgRmFpbHVy
ZSBQYXNzIF0KKwogIyBQbHVnaW5zCiAjIEZJWE1FOiBSZW1vdmUgdGhlc2UgdGVzdHMuCiBwbHVn
aW5zLyBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9zaGFyZWQt
d29ya2VyLWNvbm5lY3Qtc3JjLWFsbG93ZWQuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
Y29ubmVjdC1zcmMvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1hbGxvd2VkLnN1Yi1leHBlY3Rl
ZC50eHQKaW5kZXggZTI4Mzk1ZWQ4M2M2NjRiMmNhNjBkNWRhODdiY2ZmMGUwMzk5ZDUwMS4uMzgy
Yjk1Njk1YmNiMDVkNTJjZTBlY2EyMDhhODgwNjdhODNlMTc0NyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBv
bGljeS9jb25uZWN0LXNyYy9zaGFyZWQtd29ya2VyLWNvbm5lY3Qtc3JjLWFsbG93ZWQuc3ViLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3JrZXItY29u
bmVjdC1zcmMtYWxsb3dlZC5zdWItZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tl
ZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHA6Ly93d3cxLmxvY2FsaG9zdDo4ODAwL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQvZmFpbC5hc2lzCiAKIEZBSUwgRXhwZWN0aW5nIGxv
Z3M6IFsieGhyIGFsbG93ZWQiLCJURVNUIENPTVBMRVRFIl0gYXNzZXJ0X3VucmVhY2hlZDogdW5l
eHBlY3RlZCBsb2c6IHhociBibG9ja2VkIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3JrZXItY29ubmVjdC1zcmMt
YmxvY2tlZC5zdWItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9zaGFyZWQt
d29ya2VyLWNvbm5lY3Qtc3JjLWJsb2NrZWQuc3ViLWV4cGVjdGVkLnR4dAppbmRleCBmNDkwZWE3
NzEyZmU4MWM3NzQxZGRlMDQxNTQ1NzUyOTUxNzZmZjUzLi41ZTk3MWUyMGY0YmI5MjYzYTMxODRl
MzA4Y2RjN2M0OTQwNmM0OGM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL3No
YXJlZC13b3JrZXItY29ubmVjdC1zcmMtYmxvY2tlZC5zdWItZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0
eS1wb2xpY3kvY29ubmVjdC1zcmMvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1ibG9ja2VkLnN1
Yi1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5h
bCBVUkwgaHR0cDovL3d3dzEubG9jYWxob3N0Ojg4MDAvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
c3VwcG9ydC9mYWlsLmFzaXMKIFRoaXMgdGVzdCBsb2FkcyBhIHNoYXJlZCB3b3JrZXIsIGRlbGl2
ZXJlZCB3aXRoIGl0cyBvd24gcG9saWN5LiBUaGUgd29ya2VyIHNob3VsZCBiZSBibG9ja2VkIGZy
b20gbWFraW5nIGFuIFhIUiBhcyB0aGF0IHBvbGljeSBzcGVjaWZpZXMgYSBjb25uZWN0LXNyYyAn
bm9uZScsIHRob3VnaCB0aGlzIHJlc291cmNlJ3MgcG9saWN5IGlzIGNvbm5lY3Qtc3JjICouIE5v
IHJlcG9ydCBzaG91bGQgYmUgc2VudCBzaW5jZSB0aGUgd29ya2VyJ3MgcG9saWN5IGRvZXNuJ3Qg
c3BlY2lmeSBhIHJlcG9ydC11cmkuCiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUt
d29ya2VyL3NoYXJlZHdvcmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBv
bGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQu
dHh0CmluZGV4IDBlOTk3MjRiODY0YmJmNDkxOWE1NzQ5YjI4Y2IxNTRhZTI3MTgzYzYuLjY4OThi
NTRhYWI2ZmMzNGQxN2IyZThiZTJlODQzZTlhODcwNWIzNzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXJlcG9ydC1vbmx5
LnN1Yi1leHBlY3RlZC50eHQKQEAgLTEsNiArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0byBleHRl
cm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvc3VwcG9ydC9yZXNvdXJjZS5weT9jcm9zcy1vcmlnaW4tZmV0Y2gKLUJsb2NrZWQgYWNjZXNz
IHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2NhbGhvc3Q6OTQ0NC9jb250ZW50LXNlY3Vy
aXR5LXBvbGljeS9zdXBwb3J0L3Jlc291cmNlLnB5P2Nyb3NzLW9yaWdpbi14aHIKLUJsb2NrZWQg
YWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2NhbGhvc3Q6OTQ0NC9jb250ZW50
LXNlY3VyaXR5LXBvbGljeS9zdXBwb3J0L3Jlc291cmNlLnB5P2Nyb3NzLW9yaWdpbi1mZXRjaAog
CiBQQVNTIFNhbWUtb3JpZ2luICdmZXRjaCgpJy4KIFBBU1MgU2FtZS1vcmlnaW4gWEhSLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1zY3JpcHQtc3Jj
LnN1Yi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2Vy
LXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dAppbmRleCA5NzkxMDYzMDM3ODVlYzI1NTUzMzZk
ZjQ5ZGJlOGUxYmZhM2Y2ZWZhLi5iYjY0NTJmNDRhMGFhMjE1YThkZGU4YTJmMzAwZDhjYzQ0OGRi
OTNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNj
cmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIv
c2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dApAQCAtMiwxMCArMiw5IEBA
CiBIYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIAogVElNRU9VVCBzaGFy
ZWR3b3JrZXItc2NyaXB0LXNyYyBUZXN0IHRpbWVkIG91dAotRkFJTCBDcm9zcy1vcmlnaW4gYGlt
cG9ydFNjcmlwdHMoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgIEEgbmV0d29y
ayBlcnJvciBvY2N1cnJlZC4KLUZBSUwgYGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0
aG91dCBDU1AgUmVmdXNlZCB0byBldmFsdWF0ZSBhIHN0cmluZyBhcyBKYXZhU2NyaXB0IGJlY2F1
c2UgJ3Vuc2FmZS1ldmFsJyBpcyBub3QgYW4gYWxsb3dlZCBzb3VyY2Ugb2Ygc2NyaXB0IGluIHRo
ZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAic2NyaXB0LXNy
YyAnc2VsZicgJ25vbmNlLWEnIGJsb2I6IGZpbGVzeXN0ZW06Ii4KLQotRkFJTCBgc2V0VGltZW91
dChbc3RyaW5nXSlgIG5vdCBibG9ja2VkIGluIGh0dHA6IHdpdGhvdXQgQ1NQIGFzc2VydF91bnJl
YWNoZWQ6IGNhbGxiYWNrIG5vdCBjYWxsZWQuIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJ
TCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0
aG91ciBDU1AgTG9hZCBmYWlsZWQKK1BBU1MgYGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDog
d2l0aG91dCBDU1AKK1BBU1MgYHNldFRpbWVvdXQoW3N0cmluZ10pYCBub3QgYmxvY2tlZCBpbiBo
dHRwOiB3aXRob3V0IENTUAogVElNRU9VVCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAg
YmxvY2tlZCBpbiBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnIFRlc3QgdGltZWQgb3V0CiBO
T1RSVU4gYGV2YWwoKWAgYmxvY2tlZCBpbiBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCiBO
T1RSVU4gYHNldFRpbWVvdXQoW3N0cmluZ10pYCBibG9ja2VkIGluIGh0dHA6IHdpdGggc2NyaXB0
LXNyYyAnc2VsZicKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0
LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXIt
c2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4dAppbmRleCA0ZWFjMWNjYzA1MjY5ZjA3Njg3NTAy
NWNkNjI0ZWU3ZDIxNzk2Y2VmLi5iOGVlMTNiMGZmY2VhNmYxMjVjYzY5NmYyYmJiNjcxMjAzZjg2
OGNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3NjcmlwdC1zcmMvd29ya2VyLXNldC10aW1lb3V0
LnN1Yi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQt
dGltZW91dC5zdWItZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAogCiBGQUlMIERlZGljYXRl
ZCB3b3JrZXIgaW5oZXJpdHMgQ1NQIGZyb20gbWFpbiBkb2N1bWVudCBhc3NlcnRfZXF1YWxzOiBl
eHBlY3RlZCAic2V0VGltZW91dCBhbGxvd2VkIiBidXQgZ290ICJzZXRUaW1lb3V0IGJsb2NrZWQi
Ci1GQUlMIFNoYXJlZCB3b3JrZXIgZGVsaXZlcnMgaXRzIG93biBDU1AgYXNzZXJ0X2VxdWFsczog
ZXhwZWN0ZWQgInNldFRpbWVvdXQgYmxvY2tlZCIgYnV0IGdvdCAic2V0VGltZW91dCBhbGxvd2Vk
IgorUEFTUyBTaGFyZWQgd29ya2VyIGRlbGl2ZXJzIGl0cyBvd24gQ1NQCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vy
cy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9i
cm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4
cGVjdGVkLnR4dAppbmRleCBjMTA3MTM2NTUyODAxOTJiN2NiMmVlOGU0ZDJlYzY1NDdhZWY3MjYz
Li42Zjg0NGRkNWQ5NDkxYTIyZTU5NWE5MGI5NjNjMDg4ODIxOTAyZDJkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMv
b2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2Jyb3dzZXJzL29mZmxpbmUvYXBwY2FjaGUvd29ya2Vycy9hcHBjYWNoZS13b3JrZXIuaHR0cHMt
ZXhwZWN0ZWQudHh0CkBAIC01LDcgKzUsNyBAQCBIYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVz
c2FnZSA9IG51bGwKIFBBU1MgRGVkaWNhdGVkIHdvcmtlciBvZiB0aGUgY2FjaGVkIHNjcmlwdAog
UEFTUyBEZWRpY2F0ZWQgd29ya2VyIG9mIHRoZSBmYWxsYmFja2VkIHNjcmlwdAogUEFTUyBEZWRp
Y2F0ZWQgd29ya2VyIG9mIHRoZSBub3QtaW4tY2FjaGUgc2NyaXB0Ci1QQVNTIFNoYXJlZCB3b3Jr
ZXIgb2YgdGhlIGNhY2hlZCBzY3JpcHQKLVBBU1MgU2hhcmVkIHdvcmtlciBvZiB0aGUgZmFsbGJh
Y2tlZCBzY3JpcHQKK0ZBSUwgU2hhcmVkIHdvcmtlciBvZiB0aGUgY2FjaGVkIHNjcmlwdCBhc3Nl
cnRfZXF1YWxzOiBleHBlY3RlZCAiRG9uZTogY2FjaGVkIiBidXQgZ290ICJFcnJvcjogSW1wb3J0
aW5nIGEgbm9uLWNhY2hlZCBzY3JpcHQgbXVzdCBmYWlsLiIKK0ZBSUwgU2hhcmVkIHdvcmtlciBv
ZiB0aGUgZmFsbGJhY2tlZCBzY3JpcHQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIkRvbmU6IGZh
bGxiYWNrZWQiIGJ1dCBnb3QgIkVycm9yOiBJbXBvcnRpbmcgYSBub24tY2FjaGVkIHNjcmlwdCBt
dXN0IGZhaWwuIgogVElNRU9VVCBTaGFyZWQgd29ya2VyIG9mIHRoZSBub3QtaW4tY2FjaGUgc2Ny
aXB0IFRlc3QgdGltZWQgb3V0CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L2Ny
b3NzLW9yaWdpbi1pc29sYXRlZC1wZXJtaXNzaW9uLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4t
ZW1iZWRkZXItcG9saWN5L2Nyb3NzLW9yaWdpbi1pc29sYXRlZC1wZXJtaXNzaW9uLmh0dHBzLWV4
cGVjdGVkLnR4dAppbmRleCA2MzU1YjY4ZGU3MGJlNjZjMDFlMmIzYWUxMjc0N2Q1Y2QyYzM0MGFi
Li5jOGJmNzVlN2VhODUzMGZiYzhiNDIwMDMyYWY0ZjAzOWRkZGU1MzY3IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3Jp
Z2luLWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5odHRw
cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlz
b2xhdGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0yMCw3ICsyMCw3IEBAIFBB
U1MgZGVkaWNhdGVkIHdvcmtlcjogc2NoZW1lID0gYmxvYiwgdmFsdWUgPSAqCiBQQVNTIGRlZGlj
YXRlZCB3b3JrZXI6IHNjaGVtZSA9IGJsb2IsIHZhbHVlID0gc2VsZgogRkFJTCBkZWRpY2F0ZWQg
d29ya2VyOiBzY2hlbWUgPSBibG9iLCB2YWx1ZSA9IChcKSBhc3NlcnRfZXF1YWxzOiBleHBlY3Rl
ZCBmYWxzZSBidXQgZ290IHRydWUKIFBBU1Mgc2hhcmVkIHdvcmtlcjogd2l0aENvb3BDb2VwID0g
ZmFsc2UKLVBBU1Mgc2hhcmVkIHdvcmtlcjogd2l0aENvb3BDb2VwID0gdHJ1ZQorRkFJTCBzaGFy
ZWQgd29ya2VyOiB3aXRoQ29vcENvZXAgPSB0cnVlIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIHRy
dWUgYnV0IGdvdCBmYWxzZQogUEFTUyBzZXJ2aWNlIHdvcmtlcjogd2l0aENvb3BDb2VwID0gZmFs
c2UKIEZBSUwgc2VydmljZSB3b3JrZXI6IHdpdGhDb29wQ29lcCA9IHRydWUgYXNzZXJ0X2VxdWFs
czogZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRk
ZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRk
ZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAzMzk4YmQ4
ODkzMWIyMjA4YTI4MDg5OWJlZDc0ZTI0ZGEzZjRmNjM2Li40Yzg2NmViMjkyNjNiYWY4N2VkYzE5
ZWU5Y2UxNTAxNDYxMDkwYmNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9zaGFy
ZWQtd29ya2Vycy5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kv
c2hhcmVkLXdvcmtlcnMuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0yLDcgKzIsNyBAQCBWZXJpZnkg
dGhlIENyb3NzLU9yaWdpbiBFbWJlZGRlciBQb2xpY3kgZm9yIFNoYXJlZCBXb3JrZXJzIGJ5IHBl
cmZvcm1pbmcgYSBjcm9zcwogCiAKIFBBU1MgZGVmYXVsdCBwb2xpY3kgKGRlcml2ZWQgZnJvbSBy
ZXNwb25zZSkKLUZBSUwgInJlcXVpcmUtY29ycCIgKGRlcml2ZWQgZnJvbSByZXNwb25zZSkgYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgImZhaWx1cmUiIGJ1dCBnb3QgInN1Y2Nlc3MiCitQQVNTICJy
ZXF1aXJlLWNvcnAiIChkZXJpdmVkIGZyb20gcmVzcG9uc2UpCiBQQVNTIGRlZmF1bHQgcG9saWN5
IChkZXJpdmVkIGZyb20gb3duZXIgc2V0IGR1ZSB0byB1c2Ugb2YgbG9jYWwgc2NoZW1lIC0gYmxv
YiBVUkwpCiBGQUlMICJyZXF1aXJlLWNvcnAiIChkZXJpdmVkIGZyb20gb3duZXIgc2V0IGR1ZSB0
byB1c2Ugb2YgbG9jYWwgc2NoZW1lIC0gYmxvYiBVUkwpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
ICJmYWlsdXJlIiBidXQgZ290ICJzdWNjZXNzIgogUEFTUyBkZWZhdWx0IHBvbGljeSAoZGVyaXZl
ZCBmcm9tIG93bmVyIHNldCBkdWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAtIGRhdGEgVVJMKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVyaXRhbmNlLnN1Yi5o
dHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS93b3JrZXItaW5oZXJpdGFu
Y2Uuc3ViLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCA3NWIxZDMzZTUyNjAxYWQwZDNhZGRmOGJk
ZTU1NWUxNWRiMjJmZjIyLi5iMmJmMmUzYmZmM2ZlMmUzMDdhOGJjOTQ5ZTIyMWRmMDA2YTk2M2Y3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS93b3JrZXItaW5oZXJpdGFuY2Uuc3Vi
Lmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS93b3JrZXItaW5o
ZXJpdGFuY2Uuc3ViLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDYgQEAKIEJsb2NrZWQg
YWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2NhbGhvc3Q6OTQ0NC9jb21tb24v
YmxhbmsuaHRtbAogQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3Lmxv
Y2FsaG9zdDo5NDQ0L2NvbW1vbi9ibGFuay5odG1sCiBCbG9ja2VkIGFjY2VzcyB0byBleHRlcm5h
bCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29tbW9uL2JsYW5rLmh0bWwKLUJsb2Nr
ZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2NhbGhvc3Q6OTQ0NC9jb21t
b24vYmxhbmsuaHRtbAogCiBQQVNTIFRlc3QgdGhhdCBsb2NhbCBzY2hlbWUgd29ya2VycyBpbmhl
cml0IENPRVA6IHJlcXVpcmUtY29ycCBmcm9tIHRoZSBjcmVhdGluZyBkb2N1bWVudAogUEFTUyBi
bG9iIFVSTCBkZWRpY2F0ZWQgd29ya2VyOiBTYW1lIG9yaWdpbiBzaG91bGQgYmUgYWxsb3dlZC4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2NsYWltLXNoYXJlZC13b3JrZXItZmV0Y2gu
aHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvY2xhaW0tc2hhcmVkLXdvcmtl
ci1mZXRjaC5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggZGQzNWFhZTI1Zjc3ZmU0NDUxNjNiMTk0
NmJiYjYzMjM0Y2YyMGZkNy4uOTBkOTFhZDUxMDFmNTEwZDRiNGU0NzI5NWE2YzYwN2QwZDhmYmM3
MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvY2xhaW0tc2hhcmVkLXdvcmtlci1mZXRj
aC5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvY2xhaW0tc2hhcmVk
LXdvcmtlci1mZXRjaC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSw0IEBACiAKLVBBU1Mg
ZmV0Y2goKSBpbiBTaGFyZWRXb3JrZXIgc2hvdWxkIGJlIGludGVyY2VwdGVkIGFmdGVyIHRoZSBj
bGllbnQgaXMgY2xhaW1lZC4KKworRkFJTCBmZXRjaCgpIGluIFNoYXJlZFdvcmtlciBzaG91bGQg
YmUgaW50ZXJjZXB0ZWQgYWZ0ZXIgdGhlIGNsaWVudCBpcyBjbGFpbWVkLiBhc3NlcnRfZXF1YWxz
OiBmZXRjaCgpIGluIHRoZSBzaGFyZWQgd29ya2VyIHNob3VsZCBiZSBpbnRlcmNlcHRlZC4gZXhw
ZWN0ZWQgIkludGVyY2VwdGVkISIgYnV0IGdvdCAiYSBzaW1wbGUgdGV4dCBmaWxlXG4iCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9TaGFyZWRXb3JrZXJfZGF0YVVybC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyX2RhdGFVcmwt
ZXhwZWN0ZWQudHh0CmluZGV4IDk5NWEwNjAxOWI4NDhkNDM2N2FiNWJjYTk4Zjg2MjI4MWQxYmJj
OGIuLjliNTgyMGFhZThjYjMzM2Q4ODA1OWE0NjFhZDFiZWE3ZDQ1NjYwYTcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFy
ZWRXb3JrZXJfZGF0YVVybC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4cGVj
dGVkLnR4dApAQCAtMSwxMyArMSw1IEBACi1DT05TT0xFIE1FU1NBR0U6IEVycm9yOiBhc3NlcnRf
ZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3QgMQogCiAKLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBt
ZXNzYWdlID0gRXJyb3I6IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDIgYnV0IGdvdCAxCi0KLVBB
U1MgRGF0YSBVUkwgbm90IHNoYXJlZCBieSBjcm9zcy1vcmlnaW4gU2hhcmVkV29ya2VycwotVElN
RU9VVCBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtlcnMgVGVzdCB0
aW1lZCBvdXQKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBFcnJvcjogYXNzZXJ0
X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290IDEKLQogUEFTUyBEYXRhIFVSTCBub3Qgc2hhcmVk
IGJ5IGNyb3NzLW9yaWdpbiBTaGFyZWRXb3JrZXJzCi1USU1FT1VUIERhdGEgVVJMcyBzaGFyZWQg
Ynkgc2FtZS1vcmlnaW4gU2hhcmVkV29ya2VycyBUZXN0IHRpbWVkIG91dAorUEFTUyBEYXRhIFVS
THMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtlcnMKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMv
c2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3No
YXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKaW5kZXggNTc2
ZTZkMmI3ZWQyZmE3MDIzY2YyM2I5NmEwNjkxZmQ1YWJjYTA1OS4uNGEyNmJlOTI5YThkNzUyNTA4
YjRmN2Y3NWMwN2IzZWE4ZWRjOGNhZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBv
cnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWlt
cG9ydC1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tl
ZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3MS5sb2NhbGhvc3Q6OTQ0My93b3Jr
ZXJzL21vZHVsZXMvcmVzb3VyY2VzL2V4cG9ydC1vbi1sb2FkLXNjcmlwdC5weQogCiBQQVNTIFN0
YXRpYyBpbXBvcnQuCiBGQUlMIFN0YXRpYyBpbXBvcnQgKGNyb3NzLW9yaWdpbikuIHByb21pc2Vf
dGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiAiSW1wb3J0aW5nIGEgbW9kdWxl
IHNjcmlwdCBmYWlsZWQuIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0
YS11cmwtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0
LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKaW5kZXggNGY4NjQxZTUxNDgwZjAx
MzA2NzViOTEzNjRlY2M0ZjBmYTI3MjBhOS4uMjk5N2Y3ZTFmMzA4ZTgwODE5N2RjOGQ0ODIwNDlk
NTNjYWI0ZjNiZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11cmwt
Y3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1k
YXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQ09OU09M
RSBNRVNTQUdFOiBPcmlnaW4gbnVsbCBpcyBub3QgYWxsb3dlZCBieSBBY2Nlc3MtQ29udHJvbC1B
bGxvdy1PcmlnaW4uIFN0YXR1cyBjb2RlOiAyMDAKIAogSGFybmVzcyBFcnJvciAoVElNRU9VVCks
IG1lc3NhZ2UgPSBudWxsCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRh
dGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRh
LXVybC53aW5kb3ctZXhwZWN0ZWQudHh0CmluZGV4IGVhYzdmOTVkZTZmMmQ4N2M3YjIxM2RmZWNh
YjEzODhjNjg4NGRjMWQuLmNiYzA0MjllMGM3MTczNTI4MGVmYjQ0NDRjY2JhYTgyMTM2OGRmMTEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4
cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVS
TCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9l
eHBvcnQtb24tbG9hZC1zY3JpcHQucHkKIAogSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3Nh
Z2UgPSBudWxsCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LXJlZmVycmVy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LXJlZmVycmVyLWV4cGVjdGVk
LnR4dAppbmRleCBmZTFiOWQ5M2MwODAxMWI1MGU5NDFmNGUxMjM2MDY3YWJiZDNmMjNlLi43YjRl
ZThjMTllZDM5ZDBjMGE3YTUzMjYyZTBmMGJmZDM5NjIzYTZhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFy
ZWQtd29ya2VyLWltcG9ydC1yZWZlcnJlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdv
cmtlci1pbXBvcnQtcmVmZXJyZXItZXhwZWN0ZWQudHh0CkBAIC0xLDIxICsxLDE1IEBACi1CbG9j
a2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQzL3dv
cmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LXJlZmVycmVyLWNoZWNrZXIucHkKLUJsb2Nr
ZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29y
a2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtcmVmZXJyZXItY2hlY2tlci5weQotQmxvY2tl
ZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3MS5sb2NhbGhvc3Q6OTQ0My93b3Jr
ZXJzL21vZHVsZXMvcmVzb3VyY2VzL2V4cG9ydC1yZWZlcnJlci1jaGVja2VyLnB5Ci1CbG9ja2Vk
IGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQzL3dvcmtl
cnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LXJlZmVycmVyLWNoZWNrZXIucHkKLUJsb2NrZWQg
YWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vy
cy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtcmVmZXJyZXItY2hlY2tlci5weQotQmxvY2tlZCBh
Y2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3MS5sb2NhbGhvc3Q6OTQ0My93b3JrZXJz
L21vZHVsZXMvcmVzb3VyY2VzL2V4cG9ydC1yZWZlcnJlci1jaGVja2VyLnB5CiAKIFBBU1MgU2Ft
ZS1vcmlnaW4gdG9wLWxldmVsIG1vZHVsZSBzY3JpcHQgbG9hZGluZyB3aXRoICJuby1yZWZlcnJl
ciIgcmVmZXJyZXIgcG9saWN5CiBQQVNTIFNhbWUtb3JpZ2luIHRvcC1sZXZlbCBtb2R1bGUgc2Ny
aXB0IGxvYWRpbmcgd2l0aCAib3JpZ2luIiByZWZlcnJlciBwb2xpY3kKIFBBU1MgU2FtZS1vcmln
aW4gdG9wLWxldmVsIG1vZHVsZSBzY3JpcHQgbG9hZGluZyB3aXRoICJzYW1lLW9yaWdpbiIgcmVm
ZXJyZXIgcG9saWN5Ci1QQVNTIFNhbWUtb3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0aCAibm8tcmVm
ZXJyZXIiIHJlZmVycmVyIHBvbGljeS4KLVBBU1MgU2FtZS1vcmlnaW4gc3RhdGljIGltcG9ydCB3
aXRoICJvcmlnaW4iIHJlZmVycmVyIHBvbGljeS4KK0ZBSUwgU2FtZS1vcmlnaW4gc3RhdGljIGlt
cG9ydCB3aXRoICJuby1yZWZlcnJlciIgcmVmZXJyZXIgcG9saWN5LiBhc3NlcnRfZXF1YWxzOiBl
eHBlY3RlZCAiIiBidXQgZ290ICJodHRwOi8vbG9jYWxob3N0Ojg4MDAvd29ya2Vycy9tb2R1bGVz
L3Jlc291cmNlcy9zdGF0aWMtaW1wb3J0LXNhbWUtb3JpZ2luLXJlZmVycmVyLWNoZWNrZXItd29y
a2VyLmpzIgorRkFJTCBTYW1lLW9yaWdpbiBzdGF0aWMgaW1wb3J0IHdpdGggIm9yaWdpbiIgcmVm
ZXJyZXIgcG9saWN5LiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiaHR0cDovL2xvY2FsaG9zdDo4
ODAwLyIgYnV0IGdvdCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL3dvcmtlcnMvbW9kdWxlcy9yZXNv
dXJjZXMvc3RhdGljLWltcG9ydC1zYW1lLW9yaWdpbi1yZWZlcnJlci1jaGVja2VyLXdvcmtlci5q
cyIKIFBBU1MgU2FtZS1vcmlnaW4gc3RhdGljIGltcG9ydCB3aXRoICJzYW1lLW9yaWdpbiIgcmVm
ZXJyZXIgcG9saWN5LgogRkFJTCBDcm9zcy1vcmlnaW4gc3RhdGljIGltcG9ydCB3aXRoICJuby1y
ZWZlcnJlciIgcmVmZXJyZXIgcG9saWN5LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rp
b24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiCiBGQUlMIENyb3Nz
LW9yaWdpbiBzdGF0aWMgaW1wb3J0IHdpdGggIm9yaWdpbiIgcmVmZXJyZXIgcG9saWN5LiBwcm9t
aXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJy
b3I6IFR5cGUgZXJyb3IiCiBGQUlMIENyb3NzLW9yaWdpbiBzdGF0aWMgaW1wb3J0IHdpdGggInNh
bWUtb3JpZ2luIiByZWZlcnJlciBwb2xpY3kuIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVj
dGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogVHlwZSBlcnJvciIKLUZBSUwgU2Ft
ZS1vcmlnaW4gZHluYW1pYyBpbXBvcnQgd2l0aCAibm8tcmVmZXJyZXIiIHJlZmVycmVyIHBvbGlj
eS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIiIgYnV0IGdvdCAiaHR0cDovL2xvY2FsaG9zdDo4
ODAwL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZHluYW1pYy1pbXBvcnQtc2FtZS1vcmlnaW4t
cmVmZXJyZXItY2hlY2tlci13b3JrZXIuanMiCi1GQUlMIFNhbWUtb3JpZ2luIGR5bmFtaWMgaW1w
b3J0IHdpdGggIm9yaWdpbiIgcmVmZXJyZXIgcG9saWN5LiBhc3NlcnRfZXF1YWxzOiBleHBlY3Rl
ZCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwLyIgYnV0IGdvdCAiaHR0cDovL2xvY2FsaG9zdDo4ODAw
L3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZHluYW1pYy1pbXBvcnQtc2FtZS1vcmlnaW4tcmVm
ZXJyZXItY2hlY2tlci13b3JrZXIuanMiCitQQVNTIFNhbWUtb3JpZ2luIGR5bmFtaWMgaW1wb3J0
IHdpdGggIm5vLXJlZmVycmVyIiByZWZlcnJlciBwb2xpY3kuCitQQVNTIFNhbWUtb3JpZ2luIGR5
bmFtaWMgaW1wb3J0IHdpdGggIm9yaWdpbiIgcmVmZXJyZXIgcG9saWN5LgogUEFTUyBTYW1lLW9y
aWdpbiBkeW5hbWljIGltcG9ydCB3aXRoICJzYW1lLW9yaWdpbiIgcmVmZXJyZXIgcG9saWN5Lgog
RkFJTCBDcm9zcy1vcmlnaW4gZHluYW1pYyBpbXBvcnQgd2l0aCAibm8tcmVmZXJyZXIiIHJlZmVy
cmVyIHBvbGljeS4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6
IG9iamVjdCAiVHlwZUVycm9yOiBUeXBlIGVycm9yIgogRkFJTCBDcm9zcy1vcmlnaW4gZHluYW1p
YyBpbXBvcnQgd2l0aCAib3JpZ2luIiByZWZlcnJlciBwb2xpY3kuIHByb21pc2VfdGVzdDogVW5o
YW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogVHlwZSBlcnJv
ciIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
bW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0CmluZGV4IDU3
NmU2ZDJiN2VkMmZhNzAyM2NmMjNiOTZhMDY5MWZkNWFiY2EwNTkuLjRhMjZiZTkyOWE4ZDc1MjUw
OGI0ZjdmNzVjMDdiM2VhOGVkYzhjYWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQud2lu
ZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVy
bmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291
cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkKIAogUEFTUyBTdGF0aWMgaW1wb3J0LgogRkFJ
TCBTdGF0aWMgaW1wb3J0IChjcm9zcy1vcmlnaW4pLiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCBy
ZWplY3Rpb24gd2l0aCB2YWx1ZTogIkltcG9ydGluZyBhIG1vZHVsZSBzY3JpcHQgZmFpbGVkLiIK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1jcmVkZW50aWFscy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0
CmluZGV4IGUxYmVkZjU0MzBlZmU3NWE1OWEzYzQ5ODljNTVkNmZmNmMxOTY1MWEuLmE3MGYwNWFm
NTRmNGJiZjYyNTJkN2U2YmU5ZTAyYTc4N2UxMWZiYWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13
b3JrZXItb3B0aW9ucy1jcmVkZW50aWFscy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdv
cmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJs
b2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwOi8vd3d3MS5sb2NhbGhvc3Q6ODgwMC93
b3JrZXJzL21vZHVsZXMvcmVzb3VyY2VzL2V4cG9ydC1jcmVkZW50aWFscy5weQogCiBIYXJuZXNz
IEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwNC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0
LWV4cGVjdGVkLnR4dAppbmRleCAwMThkYjYwNDU2OWQwNmYyNzIxYzhjYjM5NDZmNjA4YTRkYzZl
OThiLi5jZmU0NjU1Njc1Y2QwNDlhYjdhNWViOTFiNjdkZGE4ZWI1MGRkYjQ2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2Vt
YW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRp
cGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDMgQEAKIAotSGFybmVzcyBF
cnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0KLU5PVFJVTiBzaGFyZWQgd29ya2VyIHdp
dGggbXVsdGlwbGUgZG9jdW1lbnRzCitQQVNTIHNoYXJlZCB3b3JrZXIgd2l0aCBtdWx0aXBsZSBk
b2N1bWVudHMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA4LWV4cGVjdGVkLnR4dAppbmRleCA5N2E0
ZTdhNzNhNjNmZGM2ZTMyMDIxMjczYWZjODMzYzAxYjJiNDcwLi4wOWY2NzJkMWM2MjE3YTBjNWJh
MzFmZWM2NGQyYjkzNWM1MzhmZTJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMv
MDA4LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA4LWV4cGVjdGVk
LnR4dApAQCAtMSw1ICsxLDMgQEAKIAotSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2Ug
PSBudWxsCi0KLVRJTUVPVVQgbWVzc2FnZWNoYW5uZWwgaW4gc2hhcmVkIHdvcmtlciBUZXN0IHRp
bWVkIG91dAorUEFTUyBtZXNzYWdlY2hhbm5lbCBpbiBzaGFyZWQgd29ya2VyCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9z
aGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2Vy
LWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dAppbmRleCBhMDg5YzIyNDg5ZTJkNjY3
OGU1YjI0ZTJmZmVmZTAyNDNjMWVhOGNkLi4xOWU0NmIwOWE1NmFjODMzNTMzZDU3YjIwMWE5ZTYw
MDA0ODdiMGM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRvdy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrZXJzL3NoYXJlZC13b3JrZXItZnJvbS1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0
CkBAIC0xLDcgKzEsNSBAQAogCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51
bGwKLQotRkFJTCBDcmVhdGluZyBhIHNoYXJlZCB3b3JrZXIgZnJvbSBhIGJsb2IgVVJMIHdvcmtz
LiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAid29ya2VyX09LXzIiIGJ1dCBnb3QgIndvcmtlcl9P
S18xIgorUEFTUyBDcmVhdGluZyBhIHNoYXJlZCB3b3JrZXIgZnJvbSBhIGJsb2IgVVJMIHdvcmtz
LgogUEFTUyBDcmVhdGluZyBhIHNoYXJlZCB3b3JrZXIgZnJvbSBhIGJsb2IgVVJMIHdvcmtzIGlt
bWVkaWF0ZWx5IGJlZm9yZSByZXZva2luZy4KLVRJTUVPVVQgQ29ubmVjdGluZyB0byBhIHNoYXJl
ZCB3b3JrZXIgb24gYSByZXZva2VkIGJsb2IgVVJMIHdvcmtzLiBUZXN0IHRpbWVkIG91dAorUEFT
UyBDb25uZWN0aW5nIHRvIGEgc2hhcmVkIHdvcmtlciBvbiBhIHJldm9rZWQgYmxvYiBVUkwgd29y
a3MuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWluLWRhdGEtdXJsLWNvbnRleHQud2luZG93LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9zaGFyZWQtd29ya2VyLWluLWRhdGEtdXJsLWNvbnRleHQud2luZG93LWV4cGVjdGVk
LnR4dAppbmRleCAyMDZmNTZlMGQxMDdhNjVhYzA2ZjVjYTVkNGNlZjdjYjg2YmY0YWNkLi4wNWU2
NmEzYzc2MDFhYjdkNDBlYjZhZWRiMWNiZWFhZTA2OTNjNGE1IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtl
ci1pbi1kYXRhLXVybC1jb250ZXh0LndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXIt
aW4tZGF0YS11cmwtY29udGV4dC53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNSBAQAor
Q09OU09MRSBNRVNTQUdFOiBDYW5ub3QgbG9hZCBodHRwOi8vbG9jYWxob3N0Ojg4MDAvd29ya2Vy
cy9zdXBwb3J0L3Bvc3QtbWVzc2FnZS1vbi1sb2FkLXdvcmtlci5qcy4KIAotRkFJTCBDcmVhdGUg
YSBzaGFyZWQgd29ya2VyIGluIGEgZGF0YSB1cmwgZnJhbWUgYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgIlBBU1MiIGJ1dCBnb3QgIlNoYXJlZFdvcmtlciBjb25zdHJ1Y3Rpb24gdW5leHBlY3RlZGx5
IHN5bmNocm9ub3VzbHkgZmFpbGVkIgotRkFJTCBDcmVhdGUgYSBkYXRhIHVybCBzaGFyZWQgd29y
a2VyIGluIGEgZGF0YSB1cmwgZnJhbWUgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIlBBU1MiIGJ1
dCBnb3QgIlNoYXJlZFdvcmtlciBjb25zdHJ1Y3Rpb24gdW5leHBlY3RlZGx5IHN5bmNocm9ub3Vz
bHkgZmFpbGVkIgorUEFTUyBDcmVhdGUgYSBzaGFyZWQgd29ya2VyIGluIGEgZGF0YSB1cmwgZnJh
bWUKK1BBU1MgQ3JlYXRlIGEgZGF0YSB1cmwgc2hhcmVkIHdvcmtlciBpbiBhIGRhdGEgdXJsIGZy
YW1lCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3No
YXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQKaW5kZXggNmZmZWUyNzM5
MGQ5NzhlNGU2YjU2OTFmOGRiYTdlM2VlZDBhODMyZC4uYWU0NWI0ZDI3Mzk2NDQ2OTNjMmMxNjQ5
NzVjNTNkNTY2YmJhMjhmNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQK
QEAgLTEsMyArMSwzIEBACiAKLUZBSUwgVGVzdCB0aGUgbmFtZSBwcm9wZXJ0eSBvZiBzaGFyZWQg
d29ya2VycyBtaXhpbmcgY29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29uc3RydWN0b3Igc3RyaW5n
cyBFcnJvcjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290IDEKK1BBU1MgVGVzdCB0
aGUgbmFtZSBwcm9wZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBtaXhpbmcgY29uc3RydWN0b3Igb3B0
aW9ucyBhbmQgY29uc3RydWN0b3Igc3RyaW5ncwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRp
b25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtbWlzbWF0Y2gtZXhw
ZWN0ZWQudHh0CmluZGV4IGY2NTY5NDYxNTBkYjE3YzA5YmJjNGFlM2VkYTg1OGY5MTczZWQ2ZTEu
LjRmOTlhMTM0MDllN2U4Njg0NGI1NTE4YzUxMGMzMDhmZGZlNjA3MjMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQt
d29ya2VyLW9wdGlvbnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW9wdGlv
bnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CkBAIC0xLDI4ICsxLDI2IEBACiAKLUhhcm5lc3MgRXJy
b3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1USU1FT1VUIENvbm5lY3RpbmcgdG8gc2hh
cmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZh
dWx0IHRvIG1vZHVsZSBUZXN0IHRpbWVkIG91dAotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVk
IHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBtb2R1bGUg
dG8gZGVmYXVsdAotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZl
cmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBjbGFzc2ljIHRvIG1vZHVsZQotTk9UUlVO
IENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3Vs
ZCBiZSBibG9ja2VkOiBtb2R1bGUgdG8gY2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hh
cmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZh
dWx0IHRvIG9taXQgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIGlu
Y2x1ZGUgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4g
Y2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVu
dCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIHNhbWUtb3JpZ2luIGluIGNsYXNz
aWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBpbmNsdWRlIGluIGNsYXNzaWMKLU5PVFJV
TiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91
bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBjbGFzc2ljCi1OT1RSVU4gQ29u
bmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJl
IGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIGluY2x1ZGUgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5l
Y3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBi
bG9ja2VkOiBpbmNsdWRlIHRvIGRlZmF1bHQgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBpbmNsdWRlIHRvIG9taXQgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVk
IHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRl
IHRvIHNhbWUtb3JpZ2luIGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3
b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0
byBvbWl0IGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIGluY2x1ZGUg
aW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVy
ZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gZGVmYXVsdCBpbiBtb2R1bGUK
LU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9u
cyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBzYW1lLW9yaWdpbiBpbiBtb2R1bGUKLU5PVFJV
TiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91
bGQgYmUgYmxvY2tlZDogb21pdCB0byBpbmNsdWRlIGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3Rp
bmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9j
a2VkOiBzYW1lLW9yaWdpbiB0byBvbWl0IGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8g
c2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBz
YW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hh
cmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNs
dWRlIHRvIGRlZmF1bHQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29y
a2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8g
b21pdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBzYW1lLW9yaWdp
biBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVy
ZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gbW9kdWxlCitQQVNTIENv
bm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBi
ZSBibG9ja2VkOiBtb2R1bGUgdG8gZGVmYXVsdAorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3
b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogY2xhc3NpYyB0
byBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50
IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG1vZHVsZSB0byBjbGFzc2ljCitQQVNTIENvbm5l
Y3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBi
bG9ja2VkOiBkZWZhdWx0IHRvIG9taXQgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNo
YXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVm
YXVsdCB0byBpbmNsdWRlIGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29y
a2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gZGVm
YXVsdCBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRp
ZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIHNhbWUtb3JpZ2luIGlu
IGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50
IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVkZSBpbiBjbGFzc2ljCitQ
QVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNo
b3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBvbWl0IGluIGNsYXNzaWMKK1BBU1MgQ29u
bmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJl
IGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIGluY2x1ZGUgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0
aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxv
Y2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBz
aGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGlu
Y2x1ZGUgdG8gb21pdCBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIHNh
bWUtb3JpZ2luIGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdp
dGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gb21pdCBp
biBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50
IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gaW5jbHVkZSBpbiBtb2R1bGUK
K1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMg
c2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gZGVmYXVsdCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IG9taXQgdG8gc2FtZS1vcmlnaW4gaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8g
c2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBv
bWl0IHRvIGluY2x1ZGUgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0
byBvbWl0IGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gaW5jbHVk
ZSBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVy
ZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gZGVmYXVsdCBpbiBtb2R1
bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlv
bnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gb21pdCBpbiBtb2R1bGUKK1BBU1MgQ29u
bmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJl
IGJsb2NrZWQ6IGluY2x1ZGUgdG8gc2FtZS1vcmlnaW4gaW4gbW9kdWxlCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL29wZW4tdXJs
LXJlZGlyZWN0ZWQtc2hhcmVkd29ya2VyLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVk
LXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0CmluZGV4IDFlMmQzOTkyZjZkNWRmMzIy
MDdhNmIwZjYxOWE2ZDcxMTgxMjQwMGQuLjU5Y2FjYTQ4NmY4ZGVhYzA3ODljOTdiNGZlZThhNTI1
OTdhNWU1NDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMveGhyL29wZW4tdXJsLXJlZGlyZWN0ZWQtc2hhcmVkd29ya2VyLW9yaWdpbi1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4
dApAQCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwOi8v
d3d3Mi5sb2NhbGhvc3Q6ODgwMC94aHIvcmVzb3VyY2VzL2luc3BlY3QtaGVhZGVycy5weT9maWx0
ZXJfbmFtZT1vcmlnaW4mY29ycwogCiBGQUlMIFJlZmVyZXIgaGVhZGVyIGFzc2VydF9lcXVhbHM6
IGV4cGVjdGVkICJSZWZlcmVyOiBodHRwOi8vbG9jYWxob3N0Ojg4MDAveGhyL3Jlc291cmNlcy93
b3JrZXJ4aHItb3JpZ2luLXJlZmVycmVyLmpzXG4iIGJ1dCBnb3QgIlJlZmVyZXI6IGh0dHA6Ly9s
b2NhbGhvc3Q6ODgwMC94aHIvcmVzb3VyY2VzL3JlZGlyZWN0LnB5P2xvY2F0aW9uPXdvcmtlcnho
ci1vcmlnaW4tcmVmZXJyZXIuanNcbiIKIEZBSUwgT3JpZ2luIGhlYWRlciBhc3NlcnRfZXF1YWxz
OiBleHBlY3RlZCAiT3JpZ2luOiBodHRwOi8vbG9jYWxob3N0Ojg4MDBcbiIgYnV0IGdvdCAiIgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJl
ZC13b3JrZXItY29ubmVjdC1zcmMtYWxsb3dlZC5zdWItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3JrZXItY29ubmVjdC1zcmMt
YWxsb3dlZC5zdWItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwN2JlYmRjZmNlZmUxZDNiOGFi
MWUwNWRmMmFlNTZiODNhODA2NjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvY29ubmVjdC1zcmMvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1hbGxvd2Vk
LnN1Yi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgRXhwZWN0aW5nIGxvZ3M6
IFsieGhyIGFsbG93ZWQiLCJURVNUIENPTVBMRVRFIl0KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450934</attachid>
            <date>2022-02-04 13:28:44 -0800</date>
            <delta_ts>2022-02-04 15:24:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235958-20220204132843.patch</filename>
            <type>text/plain</type>
            <size>303404</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNmMmQxMTcxN2RhZTg0
YTVjYmI3NWRmM2Y4NmIxODMzYmE3ZjIxOS4uYjA1NmEyYzBhZDRiMmUzODk1OWQyMDZlMjVlZTNh
ODVhYWNmNTRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMSBAQAorMjAyMi0wMi0wNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBz
aGFyaW5nIFNoYXJlZCBXb3JrZXJzIChpbmNsdWRpbmcgYWNyb3NzIFdlYlByb2Nlc3NlcykKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTk1OAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vODgzMzA2NjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNoYXJpbmcgU2hhcmVkIFdv
cmtlcnMsIGluY2x1ZGluZyBhY3Jvc3MgV2ViUHJvY2Vzc2VzLiBUaGUgYXJjaGl0ZWN0dXJlCisg
ICAgICAgIGlzIG1vZGVsZWQgYWZ0ZXIgdGhlIG9uZSB3ZSB1c2UgZm9yIFNlcnZpY2UgV29ya2Vy
cyBzaW5jZSB0aGV5IGFyZSB2ZXJ5IHNpbWlsYXIuIEkgdHJpZWQKKyAgICAgICAgc2hhcmluZyBh
cyBtdWNoIGNvZGUgYXMgcG9zc2libGUgd2l0aCBTZXJ2aWNlIFdvcmtlcnMgYnV0IHNvbWUgbW9y
ZSB3b3JrIGNhbiBwcm9iYWJseSBiZQorICAgICAgICBkb25lIGluIHRoaXMgYXJlYS4KKworICAg
ICAgICBXaXRoIHRoaXMgY2hhbmdlLCBzaGFyZWQgd29ya2VycyBzaG91bGQgYmUgbW9zdGx5IGZ1
bmN0aW9uYWwgYW5kIHNwZWMgY29tcGxpYW50LiBIb3dldmVyLAorICAgICAgICB0aGUgZmVhdHVy
ZSByZW1haW5zIGRpc2FibGVkIGJ5IGRlZmF1bHQgZm9yIG5vdyBhcyB0aGVyZSBhcmUgc3RpbGwg
V1BUIHRlc3RzIGZhaWx1cmVzIEkKKyAgICAgICAgbmVlZCB0byBpbnZlc3RpZ2F0ZS4gQWxzbywg
SSBuZWVkIHRvIGltcGxlbWVudCBhIGJldHRlciBwcm9jZXNzIHN1c3BlbnNpb24gbG9naWMgb24g
aU9TCisgICAgICAgIHRvIHJlcGxhY2UgdGhlIGhhY2sgSSBhZGRlZCBpbiB0aGlzIHBhdGNoICh0
byBtYWtlIHRoZSB0ZXN0cyBydW4gcmVsaWFibHkgb24gaU9TKS4KKworICAgICAgICBBcyB3aXRo
IFNlcnZpY2UgV29ya2VycywgU2hhcmVkIFdvcmtlcnMgYXJlIHBhcnRpdGlvbmVkIGJ5IChUb3Ag
T3JpZ2luICsgRnJhbWUgT3JpZ2luKQorICAgICAgICBmb3IgcHJpdmFjeSByZWFzb25zLiBUaGlz
IGlzIGFjaGlldmVkIHZpYSB0aGUgU2hhcmVkV29ya2VyS2V5IG9iamVjdCB0aGF0IHdlIHVzZSBh
cworICAgICAgICBIYXNoTWFwIGtleS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQg
YnkgZXhpc3RpbmcgV1BUIHRlc3RzLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAg
ICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogcGxhdGZvcm0vTG9nZ2luZy5oOgorICAgICAgICAqIHdvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXI6
OmZyb21JZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6U2hhcmVkV29ya2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6flNoYXJlZFdvcmtlcik6CisgICAgICAgIChXZWJD
b3JlOjpTaGFyZWRXb3JrZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkV29ya2VyOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRX
b3JrZXI6OnRlcm1pbmF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyLmg6CisgICAgICAgICogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmlkbDoK
KyAgICAgICAgKiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk6Omhhc2ggY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyS2V5OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkV29ya2VyS2V5OjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6
CisgICAgICAgIChXVEY6OkRlZmF1bHRIYXNoPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleT46Omhh
c2gpOgorICAgICAgICAoV1RGOjpEZWZhdWx0SGFzaDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk+
OjplcXVhbCk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6U2hhcmVkV29ya2Vy
S2V5Pjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk+Ojppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgICogd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5jcHA6IFJlbW92ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyTWFuYWdlcjo6Y29ubmVjdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzY3JpcHRMb2FkRmFpbGVkKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlck1hbmFnZXI6OnNjcmlwdExvYWRl
ZFN1Y2Nlc3NmdWxseSk6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyTWFuYWdlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHdvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbjo6ZmV0Y2hTY3JpcHRJbkNsaWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpub3RpZnlXb3JrZXJPYmplY3RPZkxv
YWRDb21wbGV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdCk6CisgICAgICAgICogd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAu
CisgICAgICAgICogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRl
cjo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6Om5v
dGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6
b3B0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXI6OmlkZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyOjpvcHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrZXJz
L3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaGFyZWRXb3Jr
ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6
OnN0b3BTaGFyZWRXb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXI6OnN0b3BBbGxTaGFyZWRXb3JrZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzZXRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpjb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpyZWdpc3RlclNoYXJlZFdvcmtl
clRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6
Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6dGVybWluYXRlU2hhcmVkV29ya2VyKToK
KyAgICAgICAgKiB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXI6OkNvbm5lY3Rpb246On5Db25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uOjppc0Nsb3NlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6c2V0QXND
bG9zZWQpOgorICAgICAgICAqIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2VuZXJhdGVXb3JrZXJQYXJhbWV0ZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpTaGFyZWRXb3Jr
ZXJUaHJlYWRQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eTo6flNoYXJlZFdvcmtlclRocmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdv
cmtlclRocmVhZFByb3h5Ojpub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eTo6Y3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tUb0xvYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tG
b3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6bmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6c3RhcnRXb3JrZXJHbG9iYWxTY29wZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6dGVy
bWluYXRlV29ya2VyR2xvYmFsU2NvcGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRh
c2tUb1dvcmtlckdsb2JhbFNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZFdvcmtlclRocmVhZFByb3h5OjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Ondvcmtlck9iamVjdERl
c3Ryb3llZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eTo6c3VzcGVuZEZvckJhY2tGb3J3YXJkQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnJlc3VtZUZvckJhY2tGb3J3YXJkQ2FjaGUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Ondv
cmtlckdsb2JhbFNjb3BlRGVzdHJveWVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpjb25maXJtTWVz
c2FnZUZyb21Xb3JrZXJPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
V29ya2VyVGhyZWFkUHJveHk6OnJlcG9ydFBlbmRpbmdBY3Rpdml0eSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6d29ya2VyR2xvYmFsU2NvcGVE
ZXN0cm95ZWRJbnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zaGFyZWQvY29u
dGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oOgorCiAyMDIyLTAyLTA0ICBBbmRyZXMgR29u
emFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBDYWNoZSBzb21lIGV4cGVu
c2l2ZSBBWElzb2xhdGVkT2JqZWN0IHByb3BlcnRpZXMgbGF6aWx5LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlMDRk
NTk3OWU1ZjNkODRlNWRlNDg3ZGI3NmFjYzdmZTNlMTVmMDQ0Li5iNWYwMDYwNjI2NTg4NWVjYThm
Mzk5ZjViOTA5NjQ1YjQzNDYzZjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5NiBAQAorMjAyMi0w
Mi0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBw
b3J0IGZvciBzaGFyaW5nIFNoYXJlZCBXb3JrZXJzIChpbmNsdWRpbmcgYWNyb3NzIFdlYlByb2Nl
c3NlcykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NTk1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODgzMzA2NjY+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNoYXJpbmcg
U2hhcmVkIFdvcmtlcnMsIGluY2x1ZGluZyBhY3Jvc3MgV2ViUHJvY2Vzc2VzLiBUaGUgYXJjaGl0
ZWN0dXJlCisgICAgICAgIGlzIG1vZGVsZWQgYWZ0ZXIgdGhlIG9uZSB3ZSB1c2UgZm9yIFNlcnZp
Y2UgV29ya2VycyBzaW5jZSB0aGV5IGFyZSB2ZXJ5IHNpbWlsYXIuIEkgdHJpZWQKKyAgICAgICAg
c2hhcmluZyBhcyBtdWNoIGNvZGUgYXMgcG9zc2libGUgd2l0aCBTZXJ2aWNlIFdvcmtlcnMgYnV0
IHNvbWUgbW9yZSB3b3JrIGNhbiBwcm9iYWJseSBiZQorICAgICAgICBkb25lIGluIHRoaXMgYXJl
YS4KKworICAgICAgICBXaXRoIHRoaXMgY2hhbmdlLCBzaGFyZWQgd29ya2VycyBzaG91bGQgYmUg
bW9zdGx5IGZ1bmN0aW9uYWwgYW5kIHNwZWMgY29tcGxpYW50LiBIb3dldmVyLAorICAgICAgICB0
aGUgZmVhdHVyZSByZW1haW5zIGRpc2FibGVkIGJ5IGRlZmF1bHQgZm9yIG5vdyBhcyB0aGVyZSBh
cmUgc3RpbGwgV1BUIHRlc3RzIGZhaWx1cmVzIEkKKyAgICAgICAgbmVlZCB0byBpbnZlc3RpZ2F0
ZS4gQWxzbywgSSBuZWVkIHRvIGltcGxlbWVudCBhIGJldHRlciBwcm9jZXNzIHN1c3BlbnNpb24g
bG9naWMgb24gaU9TCisgICAgICAgIHRvIHJlcGxhY2UgdGhlIGhhY2sgSSBhZGRlZCBpbiB0aGlz
IHBhdGNoICh0byBtYWtlIHRoZSB0ZXN0cyBydW4gcmVsaWFibHkgb24gaU9TKS4KKworICAgICAg
ICBBcyB3aXRoIFNlcnZpY2UgV29ya2VycywgU2hhcmVkIFdvcmtlcnMgYXJlIHBhcnRpdGlvbmVk
IGJ5IChUb3AgT3JpZ2luICsgRnJhbWUgT3JpZ2luKQorICAgICAgICBmb3IgcHJpdmFjeSByZWFz
b25zLiBUaGlzIGlzIGFjaGlldmVkIHZpYSB0aGUgU2hhcmVkV29ya2VyS2V5IG9iamVjdCB0aGF0
IHdlIHVzZSBhcworICAgICAgICBIYXNoTWFwIGtleS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fc2NoZW1lUmVnaXN0cnkpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fk5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xvc2VTaGFyZWRXb3JrZXJDb250
ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjp1bnJlZ2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzaGFyZWRXb3JrZXJDb25uZWN0aW9uKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmVuc3VyZVNoYXJlZFdvcmtlclNlcnZlcik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb246OnNoYXJlZFdvcmtlclNlcnZlcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24uY3BwLgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OldlYlNoYXJl
ZFdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6fldlYlNoYXJlZFdv
cmtlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OnJlZ2lzdHJhYmxlRG9tYWluIGNv
bnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29y
a2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OmlkZW50aWZp
ZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OmtleSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6d29ya2VyT3B0aW9ucyBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6b3JpZ2luIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyOjp1cmwgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTaGFyZWRXb3JrZXI6OnNoYXJlZFdvcmtlck9iamVjdHMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTaGFyZWRXb3JrZXI6OmlzUnVubmluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNoYXJlZFdvcmtlcjo6bWFya0FzUnVubmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJl
ZFdvcmtlcjo6ZmV0Y2hSZXN1bHQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRX
b3JrZXI6OnNldEZldGNoUmVzdWx0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2Vy
OjpkaWRGaW5pc2hGZXRjaGluZyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2hh
cmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OldlYlNoYXJlZFdvcmtlclNlcnZlcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2Vzc2lvbklEKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpkaWRGaW5pc2hGZXRjaGluZ1No
YXJlZFdvcmtlclNjcmlwdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZl
cjo6bmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29udGV4
dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJl
bW92ZUNvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2Vy
U2VydmVyOjpjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI6OnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaHV0RG93blNoYXJlZFdvcmtlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29ubmVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y29udGV4dENvbm5l
Y3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNo
YXJlZFdvcmtlclNlcnZlcjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmg6IEFk
ZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjp+V2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2Vzc2lv
bklEKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6
c2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b246OnJlcXVlc3RTaGFyZWRXb3JrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uOjpzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OmZldGNoU2NyaXB0
SW5DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uOjpub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2Vy
T2JqZWN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2VydmVyIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6d2ViUHJvY2Vzc0lkZW50aWZp
ZXIgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjp3ZWJQcm9jZXNzSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmlwY0Nvbm5lY3Rpb24gY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJEZXN0
aW5hdGlvbklEIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpwb3N0
RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpsYXVuY2hTaGFyZWRXb3JrZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpwb3N0
Q29ubmVjdEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlU2hhcmVkV29ya2VyKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjogQWRk
ZWQuCisgICAgICAgICogUGxhdGZvcm0vTG9nZ2luZy5oOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAodHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9k
ZWNsYXJlZCk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OnRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTaGFyZWRX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6c2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzaGFyZWRXb3JrZXJDb250ZXh0Q29u
bmVjdGlvbk5vTG9uZ2VyTmVlZGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRVc2VyQWdlbnQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZUZy
b21Xb3JrZXJQcm9jZXNzZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZXN0
YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXJGb3JXb3JrZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdl
YlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBkYXRlV29ya2VyVXNl
ckFnZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnRlcm1pbmF0ZVNlcnZp
Y2VXb3JrZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OndvcmtlclByb2Nl
c3Nlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNz
ZXJ0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjppc1NlcnZpY2VXb3Jr
ZXJQYWdlSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2Vydmlj
ZVdvcmtlclByb3hpZXNDb3VudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZyBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpoYXNTZXJ2aWNlV29ya2VyQmFja2dy
b3VuZEFjdGl2aXR5Rm9yVGVzdGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpyZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3Nlcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyRm9yU2VydmljZVdvcmtlcnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6dXBkYXRlU2VydmljZVdvcmtlclVzZXJBZ2VudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5OjpjcmVhdGVGb3JXb3JrZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXRXb3JrZXJVc2VyQWdlbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNoYXJlZFdvcmtl
ckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6c3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3Np
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJC
YWNrZ3JvdW5kUHJvY2Vzc2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6
ZGlzYWJsZVdvcmtlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVuYWJs
ZVdvcmtlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclNl
cnZpY2VXb3JrZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpzZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXNTdG9yZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dXBkYXRlU2VydmljZVdv
cmtlclByb2Nlc3NBc3NlcnRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OmRpc2FibGVTZXJ2aWNlV29ya2Vycyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5hYmxlU2VydmljZVdvcmtlcnMpOiBEZWxldGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Byb3h5Ojppc1J1bm5pbmdTaGFyZWRXb3JrZXJzIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojppc1N0YW5kYWxvbmVTaGFyZWRXb3JrZXJQcm9jZXNzIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojppc1J1bm5pbmdXb3JrZXJz
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpoYXNTZXJ2aWNlV29y
a2VyUGFnZVByb3h5KToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNl
aXZlTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjptX3VzZXJDb250ZW50
Q29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6ZXN0YWJsaXNoQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29y
a2VyT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjp1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpsYXVuY2hTaGFyZWRXb3Jr
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OmNsb3NlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbjo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246On5XZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbjo6cmVxdWVzdFNoYXJlZFdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6
OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnNoYXJlZFdvcmtlck9iamVjdElzR29p
bmdBd2F5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkaWRS
ZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVzdGFibGlzaFNo
YXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorCiAyMDIyLTAyLTA0ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4OTA2OS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCmluZGV4IDZjYjE3NDU5YTdkYTg0ZjVhMjYyOTlkNjcwOGIyYzdiNzNjMGQ2
YzYuLmM5ZjY2ODVmNjJkMTM1YWVmOTgxYjZhMjEyOGExNzA1N2VmM2EyYTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQpAQCAtMTk1OSw5ICsxOTU5LDEyIEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVX
T1JLX0hFQURFUlMKICAgICB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCiAgICAgd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCiAgICAgd29ya2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5o
CisgICAgd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oCisgICAgd29ya2Vycy9Xb3JrZXJPcHRp
b25zLmgKICAgICB3b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKICAgICB3b3Jr
ZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaAogICAgIHdvcmtlcnMvV29ya2Vy
T3JXb3JrbGV0VGhyZWFkLmgKKyAgICB3b3JrZXJzL1dvcmtlclJlcG9ydGluZ1Byb3h5LmgKICAg
ICB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuaAogICAgIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVy
LmgKICAgICB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlckNsaWVudC5oCkBAIC0yMDA1LDkgKzIw
MDgsMTIgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHdvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAogCiAgICAgd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VySWRlbnRpZmllci5oCi0gICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
TWFuYWdlci5oCisgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyS2V5LmgKICAgICB3b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKKyAgICB3b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgKICAgICB3b3JrZXJzL3NoYXJlZC9T
aGFyZWRXb3JrZXJQcm92aWRlci5oCisKKyAgICB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgKICAgICB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJl
ZFdvcmtlclRocmVhZC5oCiAgICAgd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJU
aHJlYWRQcm94eS5oCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggYjNmNWUwYjc4NDE3MGJmMDI0ZDc4ODM5
ZmZjOTA4MTcyNGE3NGNhNi4uNWVlNTAwY2I2ZDEwZjUwYjdhMzUzNWU0OWFhYmI3YzE5MDUyZjc1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTI3ODUsMTAgKzI3ODUsMTAgQEAgd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCiB3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNw
cAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCi13b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbi5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVy
LmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcAord29ya2Vy
cy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKIHdvcmtlcnMv
c2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkLmNwcAogd29ya2Vycy9zaGFyZWQvY29u
dGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAKIHdvcmtsZXRzL1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGM1ZjQ0ZWYwNGE3MDU4YjE5YjI0Yzg1ZDExZDYzZDk0NTRlM2Ri
MGMuLjU2YTcxNTlkYmFlZTJmNjA2OGE4YTI2ZGQ1ZWZjZWIyZDEyZTdhNTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkwMyw3
ICs5MDMsNyBAQAogCQkyRTQzNDY0QjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2Nv
cGVQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkU0MzQ2MzkwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuaCAqLzsg
fTsKIAkJMkU0MzQ2NEQwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckxvY2F0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzQjBGNTQ2QTgy
MDBCMEYxQkEgLyogV29ya2VyTG9jYXRpb24uaCAqLzsgfTsKIAkJMkU0MzQ2NTAwRjU0NkE4MjAw
QjBGMUJBIC8qIFdvcmtlck1lc3NhZ2luZ1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzRTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
TWVzc2FnaW5nUHJveHkuaCAqLzsgfTsKLQkJMkU0MzQ2NTEwRjU0NkE4MjAwQjBGMUJBIC8qIFdv
cmtlck9iamVjdFByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRTQzNDYzRjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyT2JqZWN0UHJveHkuaCAq
LzsgfTsKKwkJMkU0MzQ2NTEwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzRjBG
NTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyT2JqZWN0UHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTQzNDY1MzBGNTQ2QTgyMDBCMEYxQkEg
LyogV29ya2VyUnVuTG9vcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkU0MzQ2NDEwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclJ1bkxvb3AuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTQzNDY1NTBG
NTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDY0MzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
VGhyZWFkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMkU3NTg0MUUxMjc3OUFEQTAwNjI2MjhCIC8qIEZpbGVSZWFkZXJMb2FkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNzU4NDFCMTI3NzlBREEw
MDYyNjI4QiAvKiBGaWxlUmVhZGVyTG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExMjUsNyArMTEyNSw3IEBACiAJCTQxNkEwNkExMjND
Q0FEMDMwMDM0NzEwOSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2QTA2OTYyM0NDQUE5RjAw
MzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RDc1QTIyMEM2NTFBNTAwRDAy
RDJDIC8qIE5ldHdvcmtMb2FkSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkQ3NTlGMjBDNjQ0MTMwMEQwMkQyQyAvKiBOZXR3b3Jr
TG9hZEluZm9ybWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNDE2RTBCM0EyMDlCQzNDQjAwNEE5NUQ5IC8qIEZldGNoSWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTBCMzcy
MDlCQzNDMjAwNEE5NUQ5IC8qIEZldGNoSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAv
KiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE2RTI5QTUxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGlu
Z1Byb3h5LmggKi87IH07CisJCTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBv
cnRpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDE2RTI5QTUxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgx
QkJEMTJERjAwMEEzRjY0IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzEx
MEQwMEI3NjREOSAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgxQkJEMTJE
RjAwMEEzRjY1IC8qIEpTRE9NQmluZGluZ0ludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0
REEgLyogSlNET01CaW5kaW5nSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFODFCQkQxMkRGMDAwQTNGNzQg
LyogVHJhbnNmb3JtU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjRFQSAvKiBU
cmFuc2Zvcm1TdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzQ3LDE0ICsxMzQ3LDE2IEBACiAJCTQ2N0E2
OEQ3Mjc1RUE5OTEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0E2OEQ0Mjc1RUE5OEIwMDlCMzFD
NSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0NjdBNjhEODI3NUVBOTk1MDA5QjMxQzUgLyogU2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjdBNjhENTI3NUVBOThDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVyLmggKi87IH07CiAJCTQ2N0E2OEQ5Mjc1RUE5OTgwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJU
aHJlYWRQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY3QTY4RDYyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDY3QTY4
REEyNzVFQTk5QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0E2OEQyMjc1RUE5OEEwMDlCMzFD
NSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4MkQyMDAxRjc5NzgzMDAwQzg2M0RCIC8qIFN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjgyRDFGRjFGNzk3ODIzMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
NjgzNDRFMDFFRERGQUFBMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAv
KiBET01SZWN0TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQ2ODNERjQwMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFs
U2NvcGVCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NjgzREYzRTI3NjdERjk4MDA3RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFz
ZS5oICovOyB9OwogCQk0NjgzREY0MTI3NjdFOTFBMDA3RDAwQzggLyogU2hhZG93UmVhbG1HbG9i
YWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDY4M0RGM0IyNzY3REYyNjAwN0QwMEM4IC8qIFNoYWRvd1JlYWxtR2xvYmFsU2NvcGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0Njg4RUUzQzI2
REQyNjEwMDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5Nb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njg4RUUzQTI2REQyNjBDMDAyQUY1QzQgLyogQ3Jv
c3NPcmlnaW5Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNDY5NDNEQzkyNzYzRjgxNzAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2OTQzREM3Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDY5
ODVGMjMyN0E0QTZBRDAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktleS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5ODVGMjIyN0E0QTY4NjAwOTdBMzJC
IC8qIFNoYXJlZFdvcmtlcktleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ2OUNDQ0ZFMjY5RDAyMUMwMDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFu
bmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjlD
Q0NGQzI2OUQwMjAyMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2OUQ3N0I4MjcwMTYyNTEwMDE0
MkZBNiAvKiBOYXZpZ2F0aW9uUmVxdWVzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjlENzdCNjI3MDE2MjUwMDAxNDJGQTYgLyogTmF2aWdhdGlv
blJlcXVlc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTQ2QTc4QjM0Mjc5OUJENzEwMDExNTRGRSAvKiBXb3JrZXJPcHRpb25zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzFCMUQyNjI2RjE4QTRC
MDA4ODJEQTIgLyogV29ya2VyT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQ2QUFBQTNEMjVEMzYzMjAwMEJBRjQyRiAvKiBBdWRpb0Zp
bGVSZWFkZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZBQUFBM0EyNUQzNjMxNDAwQkFGNDJGIC8qIEF1ZGlvRmlsZVJlYWRlckNvY29hLmgg
Ki87IH07CiAJCTQ2QjYzRjZDMUM2RThEMTkwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9t
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI2M0Y2
QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QjY1MEREMjI5NjI2MjcwMEZE
OEFBNCAvKiBQYWdlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDZCNjUwREIyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEz
NzUsNiArMTM3Nyw3IEBACiAJCTQ2QzY5NkNDMUU3MjA1RkMwMDU5NzkzNyAvKiBDUFVNb25pdG9y
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5
NkNBMUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmNwcCAqLzsgfTsKIAkJNDZDODNFRkUx
QTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM4M0VGQzFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90
aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0NkNBOUM0NDFGOTdCQkU5MDA0Q0ZDM0EgLyogVmlzaWJpbGl0eVN0YXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkNBOUM0MTFGOTdCQkU3MDA0
Q0ZDM0EgLyogVmlzaWJpbGl0eVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDZDRjUwNEEyN0FCMUVBNDAwNzBEQkM4IC8qIFNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkNGNTA0ODI3QUIxRUExMDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NkQwMDA0MDI2QTBGRUIzMDBEMUJGMUUgLyogU3VibWl0RXZlbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RDAwMDNFMjZBMEZFNkYwMEQx
QkYxRSAvKiBTdWJtaXRFdmVudC5oICovOyB9OwogCQk0NkRBNEEwMjI3QUIwMzkzMDBFMzc1QTgg
LyogVHJhbnNmZXJyZWRNZXNzYWdlUG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZEQTRBMDAyN0FCMDM4RDAwRTM3NUE4IC8qIFRyYW5zZmVycmVk
TWVzc2FnZVBvcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0NkRCQjY1MDFBQjhDOTZGMDBEOUE4MTMgLyogUG93ZXJPYnNlcnZlck1hYy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZEQkI2NEUxQUI4
Qzk2RjAwRDlBODEzIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTI0NSw4ICs5MjQ4LDYgQEAKIAkJNDY3QTY4
Q0YyNzVFQTk4OTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDY3QTY4RDAyNzVFQTk4OTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRo
cmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJUaHJlYWQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdBNjhEMTI3NUVBOThBMDA5QjMxQzUgLyogU2hh
cmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtl
clNjcmlwdExvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2N0E2OEQy
Mjc1RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNoYXJlZFdvcmtlck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDY3
QTY4RDMyNzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2hhcmVkV29ya2VyTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2N0E2OEQ0Mjc1RUE5OEIwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2N0E2OEQ1Mjc1RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2N0E2OEQ2Mjc1RUE5OEMwMDlCMzFDNSAvKiBT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTI2Miw2ICs5MjYzLDgg
QEAKIAkJNDY4M0RGM0UyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29w
ZUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTaGFkb3dSZWFsbUds
b2JhbFNjb3BlQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njg4RUUzQTI2
REQyNjBDMDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5Nb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyb3Nz
T3JpZ2luTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjhCOEJERTI1Q0M4
NDkzMDBGNjc4MjIgLyogSlNCYXNlQXVkaW9Db250ZXh0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQmFzZUF1ZGlvQ29udGV4dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ2OTQzREM3Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5ODVGMjIyN0E0QTY4NjAwOTdBMzJC
IC8qIFNoYXJlZFdvcmtlcktleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
aGFyZWRXb3JrZXJLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5Q0NDRkEy
NjlEMDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQnJvYWRjYXN0Q2hhbm5lbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
OUNDQ0ZDMjY5RDAyMDIwMDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEJyb2FkY2FzdENoYW5uZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5
Q0NDRkQyNjlEMDIwMzAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEJyb2Fk
Y2FzdENoYW5uZWwuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTMwMiw2ICs5
MzA1LDggQEAKIAkJNDZDODNFRkMxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlb05vdGlmaWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2Q0E5QzQxMUY5N0JCRTcwMDRDRkMzQSAvKiBWaXNpYmlsaXR5
U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlzaWJpbGl0eVN0YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2Q0E5QzQyMUY5N0JCRTcwMDRDRkMz
QSAvKiBWaXNpYmlsaXR5U3RhdGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFZpc2liaWxp
dHlTdGF0ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2Q0Y1MDQ4MjdBQjFF
QTEwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0NkNGNTA0OTI3QUIxRUExMDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkQwMDAzQzI2QTBGRTZGMDBEMUJGMUUg
LyogU3VibWl0RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U3VibWl0RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkQwMDAzRTI2
QTBGRTZGMDBEMUJGMUUgLyogU3VibWl0RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3VibWl0RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZE
MDAwM0YyNkEwRkU3MDAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBTdWJtaXRFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
MTU2OCw2ICsyMTU3Myw4IEBACiAJCTQ2NDdDRTYxMjdBQUUxREEwMDlDQkQ0OCAvKiBjb250ZXh0
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0NkNGNTA0
OTI3QUIxRUExMDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwICovLAor
CQkJCTQ2Q0Y1MDQ4MjdBQjFFQTEwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ci5oICovLAogCQkJCTQ2N0E2OEQwMjc1RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJl
YWQuY3BwICovLAogCQkJCTQ2N0E2OEQ0Mjc1RUE5OEIwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJU
aHJlYWQuaCAqLywKIAkJCQk0NjdBNjhDRjI3NUVBOTg5MDA5QjMxQzUgLyogU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHkuY3BwICovLApAQCAtMjE1ODcsMTAgKzIxNTk0LDEwIEBACiAJCQkJNDY2OTRD
RTEyNzU5NDQ4QzAwRTMxNTBFIC8qIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmggKi8sCiAJCQkJ
NDY2OTRDRTAyNzU5NDQ4QzAwRTMxNTBFIC8qIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmlkbCAq
LywKIAkJCQk0NkVDNDQ0ODI3QUIzMzdGMDBGRkNEOTYgLyogU2hhcmVkV29ya2VySWRlbnRpZmll
ci5oICovLAotCQkJCTQ2N0E2OEQzMjc1RUE5OEIwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5h
Z2VyLmNwcCAqLywKLQkJCQk0NjdBNjhEMjI3NUVBOThBMDA5QjMxQzUgLyogU2hhcmVkV29ya2Vy
TWFuYWdlci5oICovLAorCQkJCTQ2OTg1RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3Jr
ZXJLZXkuaCAqLywKIAkJCQk0NjY4QTBCMzI3QUI2MDBCMDBDNzIwQkMgLyogU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJNDY2OEEwQjEyN0FCNjAwQjAwQzcyMEJDIC8q
IFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAqLywKKwkJCQk0Njk0M0RDNzI3NjNGODBF
MDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oICovLAogCQkJCTQ2NjhB
MEI0MjdBQjYwMEMwMEM3MjBCQyAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAgKi8sCiAJCQkJ
NDY2OEEwQjUyN0FCNjAwQzAwQzcyMEJDIC8qIFNoYXJlZFdvcmtlclByb3ZpZGVyLmggKi8sCiAJ
CQkJNDY3QTY4RDEyNzVFQTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5j
cHAgKi8sCkBAIC0zNzIwNCw5ICszNzIxMSwxMSBAQAogCQkJCTgzNERGQUQwMUY3REFFNUQwMEMy
NzI1QiAvKiBTaGFyZWRTdHJpbmdIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUVBMzA5
OUVCNzhDMDA1NkU1ODEgLyogU2hhcmVkVGltZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxREMw
NEZFMjdBODNDOTMwMDhDRjk2OCAvKiBTaGFyZWRWaWRlb0ZyYW1lSW5mby5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDZDRjUwNEEyN0FCMUVBNDAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkVDNDQ0QTI3QUIzMzg5MDBGRkNEOTYgLyog
U2hhcmVkV29ya2VySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDY3QTY4REEyNzVF
QTk5QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTQ2OTg1RjIzMjdBNEE2QUQwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQ2NjhBMEI2MjdBQjYwMUIwMEM3MjBCQyAvKiBTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk0Njk0M0RDOTI3NjNGODE3MDA0QjYxMEUg
LyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY2
OEEwQjcyN0FCNjAyMTAwQzcyMEJDIC8qIFNoYXJlZFdvcmtlclByb3ZpZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0NjdBNjhEODI3NUVBOTk1MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0
TG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjdBNjhENzI3NUVBOTkxMDA5QjMxQzUgLyog
U2hhcmVkV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKQEAgLTM4MDY3LDYgKzM4MDc2LDcg
QEAKIAkJCQlFMTI3MUEwQjBFRUVDNzdBMDBGNjEyMTMgLyogV29ya2VyTmF2aWdhdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNUNCMDUyNTFGQjUxRjNBMDAwODlCOTcgLyogV29ya2VyTmV0d29y
a0FnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTQzNDY1MTBGNTQ2QTgyMDBCMEYxQkEgLyog
V29ya2VyT2JqZWN0UHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2QTc4QjM0Mjc5OUJENzEw
MDExNTRGRSAvKiBXb3JrZXJPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0Q2QUFFNjI1
MjRFRTFDMDA0MjhCNEIgLyogV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTgzOUEwOTVEMjUyNEYzN0YwMEVFRjMyOCAvKiBXb3JrZXJPcldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0Y2QUVCRjI1MjdCQjBDMDAzNEJD
RDMgLyogV29ya2VyT3JXb3JrbGV0VGhyZWFkLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW4uaAppbmRleCBlMTU1ZWM2ZjI0YWVkMTg4MzBjMTgxZWQ3OWM0Y2I0
MDEwZDMxNmJhLi4yMDNiZjZiMDgyZGZmYjRjZDg0ZjlmY2ZkOGJmMGNiMzNhZTBmNTEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCkBAIC0xNTAsNyArMTUwLDYgQEAgcHVibGlj
OgogICAgIGJvb2wgY2FuQWNjZXNzTG9jYWxTdG9yYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0
b3BPcmlnaW4pIGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UodG9wT3JpZ2luKTsgfTsK
ICAgICBib29sIGNhbkFjY2Vzc1BsdWdpblN0b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRv
cE9yaWdpbikgY29uc3QgeyByZXR1cm4gY2FuQWNjZXNzU3RvcmFnZSgmdG9wT3JpZ2luKTsgfQog
ICAgIGJvb2wgY2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShjb25zdCBTZWN1cml0eU9yaWdpbiYg
dG9wT3JpZ2luKSBjb25zdCB7IHJldHVybiBjYW5BY2Nlc3NTdG9yYWdlKCZ0b3BPcmlnaW4pOyB9
Ci0gICAgYm9vbCBjYW5BY2Nlc3NTaGFyZWRXb3JrZXJzKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0
b3BPcmlnaW4pIGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UoJnRvcE9yaWdpbik7IH0K
ICAgICBib29sIGNhbkFjY2Vzc0Nvb2tpZXMoKSBjb25zdCB7IHJldHVybiAhaXNVbmlxdWUoKTsg
fQogICAgIGJvb2wgY2FuUmVxdWVzdEdlb2xvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gIWlzVW5p
cXVlKCk7IH0KICAgICBQb2xpY3kgY2FuU2hvd05vdGlmaWNhdGlvbnMoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCA1ZmVmNDJlZTA2ZWM1MTE1ZmQ4NmU5ODg5NGY2OWQ3
YzIxOWUzZTBjLi5mYTdkMjMwMmVjMzllOTk3NTYxOGRiYzkyNzY5YzVhMGYxOTkxMDRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCkBAIC0xMjcsNiArMTI3LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIE0oV2ViR0wpIFwKICAgICBNKFdlYlJUQykgXAogICAgIE0oV2ViUlRDU3Rh
dHMpIFwKKyAgICBNKFdvcmtlcikgXAogICAgIE0oWFIpIFwKICAgICBNKFdoZWVsRXZlbnRUZXN0
TW9uaXRvcikgXAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRo
cmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXgg
NDA2NzE3M2E4OWE1MjY0ZDUzNzM0OTk1ZDhlNDQ3NTFhODM5OGEwYi4uZjlkZDA1ZjE4ZjMyNTdh
YTVkNzdmMjdmYTY1NjI2YTAxNTk2ZmY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
VGhyZWFkLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3Bl
LmgiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0RmV0Y2hlci5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1NjcmlwdENhbGxTdGFjay5oPgorI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTMz
LDYgKzEzNCw4IEBAIGJvb2wgV29ya2VyVGhyZWFkOjpzaG91bGRXYWl0Rm9yV2ViSW5zcGVjdG9y
T25TdGFydHVwKCkgY29uc3QKIAogdm9pZCBXb3JrZXJUaHJlYWQ6OmV2YWx1YXRlU2NyaXB0SWZO
ZWNlc3NhcnkoU3RyaW5nJiBleGNlcHRpb25NZXNzYWdlKQogeworICAgIFNldEZvclNjb3BlPGJv
b2w+IGlzSW5TdGF0aWNTY3JpcHRFdmFsdWF0aW9uKG1faXNJblN0YXRpY1NjcmlwdEV2YWx1YXRp
b24sIHRydWUpOworCiAgICAgLy8gV2UgYXJlIGN1cnJlbnRseSBob2xkaW5nIG9ubHkgdGhlIGlu
aXRpYWwgc2NyaXB0IGNvZGUuIElmIHRoZSBXb3JrZXJUeXBlIGlzIE1vZHVsZSwgd2Ugc2hvdWxk
IGZldGNoIHRoZSBlbnRpcmUgZ3JhcGggYmVmb3JlIGV4ZWN1dGluZyB0aGUgcmVzdCBvZiB0aGlz
LgogICAgIC8vIFdlIGludm9rZSBtb2R1bGUgbG9hZGVyIGFzIGlmIHdlIGFyZSBleGVjdXRpbmcg
aW5saW5lIG1vZHVsZSBzY3JpcHQgdGFnIGluIERvY3VtZW50LgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuaAppbmRleCA0N2Q1YzRmYjFmOTFjOGYwN2VhY2NkZGY2NjA2ZWZmNTg4
NDg2MzU0Li5hMWVhMzdkZGI0ODA4NWYxYzUyY2YzYzAzZTFjNDYwNDEyMjVlZTVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKQEAgLTk0LDYgKzk0LDcgQEAgcHVibGljOgog
I2VuZGlmCiAgICAgCiAgICAgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKCkgY29uc3Qg
eyByZXR1cm4gbV9ydW50aW1lRmxhZ3M7IH0KKyAgICBib29sIGlzSW5TdGF0aWNTY3JpcHRFdmFs
dWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RhdGljU2NyaXB0RXZhbHVhdGlvbjsgfQog
CiBwcm90ZWN0ZWQ6CiAgICAgV29ya2VyVGhyZWFkKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBj
b25zdCBTY3JpcHRCdWZmZXImIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiwgV29ya2Vy
RGVidWdnZXJQcm94eSYsIFdvcmtlclJlcG9ydGluZ1Byb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRN
b2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5l
Y3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKiwgSlNDOjpSdW50aW1lRmxhZ3MpOwpAQCAtMTMw
LDYgKzEzMSw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8SURCQ2xpZW50OjpJREJDb25uZWN0
aW9uUHJveHk+IG1faWRiQ29ubmVjdGlvblByb3h5OwogICAgIFJlZlB0cjxTb2NrZXRQcm92aWRl
cj4gbV9zb2NrZXRQcm92aWRlcjsKKyAgICBib29sIG1faXNJblN0YXRpY1NjcmlwdEV2YWx1YXRp
b24geyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAKaW5kZXggYjQ4NzQ3YTJjMDk5
NzNjMThiZjhkZGE5YWM4NzRiMzFhYjg1Zjc1MS4uMGE3ODE5YjhiM2ExODY1OTZkYTZiYmEwODI4
ZTBmNWVlMTgzNjAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI2LDE1ICsyNiwxNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlNoYXJlZFdvcmtlci5oIgogCisjaW5jbHVkZSAiQ2xpZW50T3JpZ2luLmgiCiAjaW5jbHVk
ZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VDaGFubmVsLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJSZXNvdXJj
ZUVycm9yLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJTaGFyZWRX
b3JrZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5o
IgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb3ZpZGVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29y
a2VyVGhyZWFkUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJPcHRpb25zLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllcnNGYWN0b3J5Lmg+CiAjaW5jbHVkZSA8d3RmL0lzb01h
bGxvY0lubGluZXMuaD4KQEAgLTQzLDIzICs0NSwzOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChTaGFyZWRXb3JrZXIpOwogCisjZGVmaW5lIFNI
QVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtl
ciwgIiVwIC0gW2lkZW50aWZpZXI9JXtwdWJsaWN9c10gU2hhcmVkV29ya2VyOjoiIGZtdCwgdGhp
cywgbV9pZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgIyNfX1ZBX0FSR1NfXykK
KyNkZWZpbmUgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFT
RV9MT0dfRVJST1IoU2hhcmVkV29ya2VyLCAiJXAgLSBbaWRlbnRpZmllcj0le3B1YmxpY31zXSBT
aGFyZWRXb3JrZXI6OiIgZm10LCB0aGlzLCBtX2lkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCAjI19fVkFfQVJHU19fKQorCitzdGF0aWMgSGFzaE1hcDxTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLCBTaGFyZWRXb3JrZXIqPiYgYWxsU2hhcmVkV29ya2VycygpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1h
cDxTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBTaGFyZWRXb3JrZXIqPj4gYWxsU2hhcmVk
V29ya2VyczsKKyAgICByZXR1cm4gYWxsU2hhcmVkV29ya2VyczsKK30KKworU2hhcmVkV29ya2Vy
KiBTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVyKFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIgaWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gYWxsU2hhcmVkV29ya2VycygpLmdldChpZGVu
dGlmaWVyKTsKK30KKwogc3RhdGljIGlubGluZSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
KiBtYWluVGhyZWFkQ29ubmVjdGlvbigpCiB7CiAgICAgcmV0dXJuIFNoYXJlZFdvcmtlclByb3Zp
ZGVyOjpzaW5nbGV0b24oKS5zaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiB9CiAKLUV4Y2VwdGlv
bk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBTaGFyZWRXb3JrZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9j
dW1lbnQsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncywgU3RyaW5nJiYgc2NyaXB0VVJM
U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxTdHJpbmcsIFdvcmtlck9wdGlvbnM+
PiYmIG1heWJlT3B0aW9ucykKK0V4Y2VwdGlvbk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBTaGFyZWRX
b3JrZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZyYmIHNjcmlwdFVSTFN0cmlu
Zywgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4mJiBt
YXliZU9wdGlvbnMpCiB7CiAgICAgaWYgKCFtYWluVGhyZWFkQ29ubmVjdGlvbigpKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJTaGFyZWQgd29ya2VycyBh
cmUgbm90IHN1cHBvcnRlZCIgfTsKIAotICAgIGlmICghZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4o
KS5jYW5BY2Nlc3NTaGFyZWRXb3JrZXJzKGRvY3VtZW50LnRvcE9yaWdpbigpKSkKLSAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJUaGlzIGlmcmFtZSBkb2Vzbid0IGhh
dmUgc3RvcmFnZSBhY2Nlc3MiX3MgfTsKLQogICAgIGF1dG8gdXJsID0gZG9jdW1lbnQuY29tcGxl
dGVVUkwoc2NyaXB0VVJMU3RyaW5nKTsKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciwgIkludmFsaWQgc2NyaXB0IFVSTCJfcyB9
OwogCisgICAgaWYgKHVybC5pc0xvY2FsRmlsZSgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgU2VjdXJpdHlFcnJvciwgIkNhbm5vdCBjb25zdHJ1Y3QgYSBzaGFyZWQgd29ya2VyIHdpdGgg
YSBmaWxlOi8vIFVSTCJfcyB9OworCiAgICAgaWYgKGF1dG8qIGNvbnRlbnRTZWN1cml0eVBvbGlj
eSA9IGRvY3VtZW50LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKSB7CiAgICAgICAgIGlmICghY29u
dGVudFNlY3VyaXR5UG9saWN5LT5hbGxvd1dvcmtlckZyb21Tb3VyY2UodXJsKSkKICAgICAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yIH07CkBAIC03NywyNiArOTQsMzcg
QEAgRXhjZXB0aW9uT3I8UmVmPFNoYXJlZFdvcmtlcj4+IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCwgSlNDOjpSdW4KICAgICBhdXRvIGNoYW5uZWwgPSBNZXNzYWdlQ2hh
bm5lbDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBhdXRvIHRyYW5zZmVycmVkUG9ydCA9IGNoYW5u
ZWwtPnBvcnQyKCkuZGlzZW50YW5nbGUoKTsKIAotICAgIGF1dG8gc2hhcmVkV29ya2VyID0gYWRv
cHRSZWYoKm5ldyBTaGFyZWRXb3JrZXIoZG9jdW1lbnQsIGNoYW5uZWwtPnBvcnQxKCksIHJ1bnRp
bWVGbGFncykpOworICAgIENsaWVudE9yaWdpbiBjbGllbnRPcmlnaW4geyBkb2N1bWVudC50b3BE
b2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpLCBkb2N1bWVudC5zZWN1cml0eU9yaWdp
bigpLmRhdGEoKSB9OworICAgIFNoYXJlZFdvcmtlcktleSBrZXkgeyBjbGllbnRPcmlnaW4sIHVy
bCwgb3B0aW9ucy5uYW1lIH07CisKKyAgICBhdXRvIHNoYXJlZFdvcmtlciA9IGFkb3B0UmVmKCpu
ZXcgU2hhcmVkV29ya2VyKGRvY3VtZW50LCBrZXksIGNoYW5uZWwtPnBvcnQxKCkpKTsKICAgICBz
aGFyZWRXb3JrZXItPnN1c3BlbmRJZk5lZWRlZCgpOwogCi0gICAgbWFpblRocmVhZENvbm5lY3Rp
b24oKS0+cmVxdWVzdFNoYXJlZFdvcmtlcih1cmwsIHNoYXJlZFdvcmtlci5nZXQoKSwgV1RGTW92
ZSh0cmFuc2ZlcnJlZFBvcnQpLCBXVEZNb3ZlKG9wdGlvbnMpKTsKKyAgICBtYWluVGhyZWFkQ29u
bmVjdGlvbigpLT5yZXF1ZXN0U2hhcmVkV29ya2VyKGtleSwgc2hhcmVkV29ya2VyLT5pZGVudGlm
aWVyKCksIFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwgb3B0aW9ucyk7CiAgICAgcmV0dXJuIHNo
YXJlZFdvcmtlcjsKIH0KIAotU2hhcmVkV29ya2VyOjpTaGFyZWRXb3JrZXIoRG9jdW1lbnQmIGRv
Y3VtZW50LCBSZWY8TWVzc2FnZVBvcnQ+JiYgcG9ydCwgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGlt
ZUZsYWdzKQorU2hhcmVkV29ya2VyOjpTaGFyZWRXb3JrZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBTaGFyZWRXb3JrZXJLZXkmIGtleSwgUmVmPE1lc3NhZ2VQb3J0PiYmIHBvcnQpCiAgICAg
OiBBY3RpdmVET01PYmplY3QoJmRvY3VtZW50KQorICAgICwgbV9rZXkoa2V5KQorICAgICwgbV9p
ZGVudGlmaWVyKFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI6OmdlbmVyYXRlKCkpCiAgICAg
LCBtX3BvcnQoV1RGTW92ZShwb3J0KSkKICAgICAsIG1faWRlbnRpZmllckZvckluc3BlY3Rvcigi
U2hhcmVkV29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRl
bnRpZmllcigpKQotICAgICwgbV9ydW50aW1lRmxhZ3MocnVudGltZUZsYWdzKQotICAgICwgbV9j
cmVhdGlvblRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkpCi0gICAgLCBtX3Byb3h5KFNoYXJlZFdv
cmtlclRocmVhZFByb3h5OjpjcmVhdGUoKnRoaXMpKQogeworICAgIFNIQVJFRF9XT1JLRVJfUkVM
RUFTRV9MT0coIlNoYXJlZFdvcmtlcjoiKTsKKyAgICBhbGxTaGFyZWRXb3JrZXJzKCkuYWRkKG1f
aWRlbnRpZmllciwgdGhpcyk7CisKKyAgICAvLyBJZiB0aGUgc2hhcmVkIHdvcmtlciBVUkwgaXMg
YSBibG9iIFVSTCwgbWFrZSBzdXJlIHRvIGtlZXAgaXQgYWxpdmUgdW50aWwgdGhlIHdvcmtlciBo
YXMgZmluaXNoZWQgbG9hZGluZy4KKyAgICBpZiAobV9rZXkudXJsLnByb3RvY29sSXNCbG9iKCkp
CisgICAgICAgIG1fYmxvYlVSTEV4dGVuc2lvbiA9IG1fa2V5LnVybDsKIH0KIAogU2hhcmVkV29y
a2VyOjp+U2hhcmVkV29ya2VyKCkKIHsKLSAgICBtX3Byb3h5Lndvcmtlck9iamVjdERlc3Ryb3ll
ZCgpOworICAgIEFTU0VSVChhbGxTaGFyZWRXb3JrZXJzKCkuZ2V0KG1faWRlbnRpZmllcikgPT0g
dGhpcyk7CisgICAgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRygiflNoYXJlZFdvcmtlcjoiKTsK
KyAgICBhbGxTaGFyZWRXb3JrZXJzKCkucmVtb3ZlKG1faWRlbnRpZmllcik7CisgICAgQVNTRVJU
KCFtX2lzQWN0aXZlKTsKIH0KIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogU2hhcmVkV29ya2Vy
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKQEAgLTExNCwxOSArMTQyLDI5IEBAIEV2
ZW50VGFyZ2V0SW50ZXJmYWNlIFNoYXJlZFdvcmtlcjo6ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdAogICAgIHJldHVybiBTaGFyZWRXb3JrZXJFdmVudFRhcmdldEludGVyZmFjZVR5cGU7CiB9
CiAKLXZvaWQgU2hhcmVkV29ya2VyOjpzdG9wKCkKK3ZvaWQgU2hhcmVkV29ya2VyOjpkaWRGaW5p
c2hMb2FkaW5nKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIHRlcm1pbmF0ZSgp
OworICAgIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coImZpbmlzaExvYWRpbmc6IHN1Y2Nlc3M9
JWQiLCBlcnJvci5pc051bGwoKSk7CisgICAgaWYgKCFlcnJvci5pc051bGwoKSkgeworICAgICAg
ICBxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxh
dGlvbiwgRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1
YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOworICAgICAgICBtX2lzQWN0aXZl
ID0gZmFsc2U7CisgICAgfQorICAgIG1fYmxvYlVSTEV4dGVuc2lvbi5jbGVhcigpOwogfQogCiBi
b29sIFNoYXJlZFdvcmtlcjo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fcHJveHkuaGFzUGVuZGluZ0FjdGl2aXR5KCkgfHwgbV9pc0xvYWRpbmc7Cisg
ICAgcmV0dXJuIG1faXNBY3RpdmU7CiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyOjp0ZXJtaW5hdGUo
KQordm9pZCBTaGFyZWRXb3JrZXI6OnN0b3AoKQogewotICAgIG1fcHJveHkudGVybWluYXRlV29y
a2VyR2xvYmFsU2NvcGUoKTsKKyAgICBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HKCJzdG9wOiIp
OworICAgIG1faXNBY3RpdmUgPSBmYWxzZTsKKyAgICBtYWluVGhyZWFkQ29ubmVjdGlvbigpLT5z
aGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShtX2tleSwgbV9pZGVudGlmaWVyKTsKIH0KIAor
I3VuZGVmIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0cKKyN1bmRlZiBTSEFSRURfV09SS0VSX1JF
TEVBU0VfTE9HX0VSUk9SCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmgKaW5kZXggZTU1YjFjZjU1MTNkMTA1Zjcz
ZjFjZDYyOTMxNWUwNjU3ZTAxOWJjZS4uY2RkMjY5ZjM2MTkxNjlkNGFiMDVmNjBkMWE3NGI4OGMw
MjNmZDIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjcsMzkgKzI3LDM3IEBACiAKICNpbmNsdWRlICJBYnN0cmFjdFdvcmtlci5oIgogI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1bnRpbWVG
bGFncy5oPgorI2luY2x1ZGUgIkJsb2JVUkwuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJLZXku
aCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8
d3RmL01vbm90b25pY1RpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZXNz
YWdlUG9ydDsKLWNsYXNzIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OworY2xhc3MgUmVzb3VyY2VF
cnJvcjsKIAogc3RydWN0IFdvcmtlck9wdGlvbnM7CiAKIGNsYXNzIFNoYXJlZFdvcmtlciBmaW5h
bCA6IHB1YmxpYyBBYnN0cmFjdFdvcmtlciwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChTaGFyZWRXb3JrZXIpOwogcHVibGljOgotICAgIHN0YXRp
YyBFeGNlcHRpb25PcjxSZWY8U2hhcmVkV29ya2VyPj4gY3JlYXRlKERvY3VtZW50JiwgSlNDOjpS
dW50aW1lRmxhZ3MsIFN0cmluZyYmIHNjcmlwdFVSTCwgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlh
bnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJl
ZjxTaGFyZWRXb3JrZXI+PiBjcmVhdGUoRG9jdW1lbnQmLCBTdHJpbmcmJiBzY3JpcHRVUkwsIHN0
ZDo6b3B0aW9uYWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYpOwogICAg
IH5TaGFyZWRXb3JrZXIoKTsKIAorICAgIHN0YXRpYyBTaGFyZWRXb3JrZXIqIGZyb21JZGVudGlm
aWVyKFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIFNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQog
ICAgIE1lc3NhZ2VQb3J0JiBwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9wb3J0LmdldCgpOyB9Ci0g
ICAgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKCkgeyByZXR1cm4gbV9ydW50aW1lRmxh
Z3M7IH0KIAogICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllckZvckluc3BlY3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckluc3BlY3RvcjsgfQotICAgIE1vbm90b25pY1RpbWUg
Y3JlYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdGlvblRpbWU7IH0KIAotICAgIFNo
YXJlZFdvcmtlclRocmVhZFByb3h5JiBwcm94eSgpIHsgcmV0dXJuIG1fcHJveHk7IH0KLQotICAg
IHZvaWQgc2V0SXNMb2FkaW5nKGJvb2wgaXNMb2FkaW5nKSB7IG1faXNMb2FkaW5nID0gaXNMb2Fk
aW5nOyB9CisgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFJlc291cmNlRXJyb3ImKTsK
IAogICAgIC8vIEV2ZW50VGFyZ2V0LgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBTaGFyZWRX
b3JrZXIoRG9jdW1lbnQmLCBSZWY8TWVzc2FnZVBvcnQ+JiYsIEpTQzo6UnVudGltZUZsYWdzKTsK
LQotICAgIHZvaWQgdGVybWluYXRlKCk7CisgICAgU2hhcmVkV29ya2VyKERvY3VtZW50JiwgY29u
c3QgU2hhcmVkV29ya2VyS2V5JiwgUmVmPE1lc3NhZ2VQb3J0PiYmKTsKIAogICAgIC8vIEV2ZW50
VGFyZ2V0LgogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkg
Y29uc3QgZmluYWw7CkBAIC03MCwxMiArNjgsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIHZpcnR1
YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogCisgICAgU2hhcmVkV29ya2Vy
S2V5IG1fa2V5OworICAgIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgbV9pZGVudGlmaWVy
OwogICAgIFJlZjxNZXNzYWdlUG9ydD4gbV9wb3J0OwogICAgIFN0cmluZyBtX2lkZW50aWZpZXJG
b3JJbnNwZWN0b3I7Ci0gICAgSlNDOjpSdW50aW1lRmxhZ3MgbV9ydW50aW1lRmxhZ3M7Ci0gICAg
TW9ub3RvbmljVGltZSBtX2NyZWF0aW9uVGltZTsKLSAgICBTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eSYgbV9wcm94eTsgLy8gVGhlIHByb3h5IG91dGxpdmVzIHRoZSB3b3JrZXIgdG8gcGVyZm9ybSB0
aHJlYWQgc2h1dGRvd24uCi0gICAgYm9vbCBtX2lzTG9hZGluZyB7IGZhbHNlIH07CisgICAgQmxv
YlVSTEhhbmRsZSBtX2Jsb2JVUkxFeHRlbnNpb247CisgICAgYm9vbCBtX2lzQWN0aXZlIHsgdHJ1
ZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5pZGwKaW5kZXggYjYyODc0ZDBkZTQ2NzBkNDhhMmQz
MTRjMTMxZTYyNGMyMDU2MmUzZC4uMmMzYTA4MzFlYjI3NDFiMjYzNjQ3ZjE3NGU4YzU4N2I3YTQx
ZWI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIu
aWRsCkBAIC0yOCw3ICsyOCw3IEBACiAgICAgRXhwb3NlZD1XaW5kb3cKIF0KIGludGVyZmFjZSBT
aGFyZWRXb3JrZXIgOiBFdmVudFRhcmdldCB7Ci0gIFtDYWxsV2l0aD1DdXJyZW50RG9jdW1lbnQm
UnVudGltZUZsYWdzXSBjb25zdHJ1Y3RvcihVU1ZTdHJpbmcgc2NyaXB0VVJMLCBvcHRpb25hbCAo
RE9NU3RyaW5nIG9yIFdvcmtlck9wdGlvbnMpIG9wdGlvbnMpOworICBbQ2FsbFdpdGg9Q3VycmVu
dERvY3VtZW50XSBjb25zdHJ1Y3RvcihVU1ZTdHJpbmcgc2NyaXB0VVJMLCBvcHRpb25hbCAoRE9N
U3RyaW5nIG9yIFdvcmtlck9wdGlvbnMpIG9wdGlvbnMpOwogCiAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBNZXNzYWdlUG9ydCBwb3J0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlcktleS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyS2V5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWYyYmFhMGY3YjljYzI0OTYzNTBhZDFi
ZDE0OTRkNmI5ZGIwYTQ2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlcktleS5oCkBAIC0wLDAgKzEsMTExIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIKKyNpbmNsdWRlIDx3
dGYvSGFzaGVyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBTaGFyZWRXb3JrZXJL
ZXkgeworICAgIENsaWVudE9yaWdpbiBvcmlnaW47CisgICAgVVJMIHVybDsKKyAgICBTdHJpbmcg
bmFtZTsKKworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKKworICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTaGFyZWRXb3JrZXJLZXk+IGRlY29kZShE
ZWNvZGVyJik7Cit9OworCitpbmxpbmUgdW5zaWduZWQgU2hhcmVkV29ya2VyS2V5OjpoYXNoKCkg
Y29uc3QKK3sKKyAgICBIYXNoZXIgaGFzaGVyOworICAgIGFkZChoYXNoZXIsIG9yaWdpbi5oYXNo
KCkpOworICAgIGFkZChoYXNoZXIsIHVybCk7CisgICAgYWRkKGhhc2hlciwgbmFtZSk7CisgICAg
cmV0dXJuIGhhc2hlci5oYXNoKCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lk
IFNoYXJlZFdvcmtlcktleTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAg
ZW5jb2RlciA8PCBvcmlnaW4gPDwgdXJsIDw8IG5hbWU7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERl
Y29kZXI+CitzdGQ6Om9wdGlvbmFsPFNoYXJlZFdvcmtlcktleT4gU2hhcmVkV29ya2VyS2V5Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPENsaWVudE9yaWdp
bj4gb3JpZ2luOworICAgIGRlY29kZXIgPj4gb3JpZ2luOworICAgIGlmICghb3JpZ2luKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxVUkw+IHVybDsK
KyAgICBkZWNvZGVyID4+IHVybDsKKyAgICBpZiAoIXVybCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBuYW1lOworICAgIGRlY29kZXIg
Pj4gbmFtZTsKKyAgICBpZiAoIW5hbWUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICByZXR1cm4geyB7IFdURk1vdmUoKm9yaWdpbiksIFdURk1vdmUoKnVybCksIFdURk1vdmUo
Km5hbWUpIH0gfTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRXb3Jr
ZXJLZXkmIGEsIGNvbnN0IFNoYXJlZFdvcmtlcktleSYgYikKK3sKKyAgICByZXR1cm4gYS5vcmln
aW4gPT0gYi5vcmlnaW4gJiYgYS51cmwgPT0gYi51cmwgJiYgYS5uYW1lID09IGIubmFtZTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8
PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5PiB7CisgICAgc3Rh
dGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBrZXkpCisg
ICAgeworICAgICAgICByZXR1cm4ga2V5Lmhhc2goKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9v
bCBlcXVhbChjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIGEsIGNvbnN0IFdlYkNvcmU6
OlNoYXJlZFdvcmtlcktleSYgYikKKyAgICB7CisgICAgICAgIHJldHVybiBhID09IGI7CisgICAg
fQorCisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQg
PSBmYWxzZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6U2hh
cmVkV29ya2VyS2V5PiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktl
eT4geworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7
CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OlNoYXJlZFdv
cmtlcktleSYgc2xvdCkgeyBuZXcgKE5vdE51bGwsICZzbG90LnVybCkgVVJMKFdURjo6SGFzaFRh
YmxlRGVsZXRlZFZhbHVlKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0
IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgc2xvdCkgeyByZXR1cm4gc2xvdC51cmwuaXNIYXNo
VGFibGVEZWxldGVkVmFsdWUoKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzQxMDg3N2RiMzIxZjc5NTJmMzEyYzg2
ZGMzZmU0YTBiNTVkMDc5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyTWFuYWdlci5oIgotCi0jaW5jbHVk
ZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCi0jaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2lu
Y2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCi0jaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCi0jaW5j
bHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCi0j
aW5jbHVkZSAiU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKLSNpbmNs
dWRlICJTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIgotI2luY2x1ZGUgIldvcmtlclJ1bkxvb3Au
aCIKLSNpbmNsdWRlICJXb3JrZXJTY3JpcHRMb2FkZXIuaCIKLSNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLVNoYXJlZFdvcmtlck1hbmFnZXImIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNpbmdsZXRv
bigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYXJlZFdvcmtlck1hbmFnZXI+IGlu
c3RhbmNlOwotICAgIHJldHVybiBpbnN0YW5jZS5nZXQoKTsKLX0KLQotdm9pZCBTaGFyZWRXb3Jr
ZXJNYW5hZ2VyOjpjb25uZWN0KGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRXb3JrZXImIHdvcmtlciwg
VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIG1lc3NhZ2VQb3J0LCBXb3JrZXJPcHRpb25zJiYgb3B0
aW9ucykKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIC8vIEZJWE1FOiBI
YW5kbGUgd29ya2VycyBmcm9tIG90aGVyIHByb2Nlc3Nlcywgd2hpY2ggd2lsbCBwcm9iYWJseSBy
ZXF1aXJlIG1vdmluZyBjb25uZWN0IHRvIHRoZSBGcmFtZUxvYWRlckNsaWVudCBvciBzb21ldGhp
bmcuCi0gICAgLy8gTWF5YmUgc29tZXRoaW5nIG1vcmUgbGlrZSB3aGF0IFNlcnZpY2VXb3JrZXJz
IGRvZXMuCi0KLSAgICAvLyBGSVhNRTogQ2hlY2sgaWYgd2UgYWxyZWFkeSBtYWRlIGEgdGhyZWFk
LgotICAgIC8vIEZJWE1FOiBDaGVjayBpZiB0aGVyZSdzIGFscmVhZHkgYSBzaGFyZWQgd29ya2Vy
IGFuZCB1c2UgdGhhdCBpZiB0aGVyZSBpcy4KLQotICAgIGF1dG8gbG9hZGVyID0gbWFrZVVuaXF1
ZVJlZjxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+KHVybCwgd29ya2VyLCBXVEZNb3ZlKG1lc3Nh
Z2VQb3J0KSwgV1RGTW92ZShvcHRpb25zKSk7Ci0gICAgYXV0byBpZGVudGlmaWVyID0gbG9hZGVy
LT5pZGVudGlmaWVyKCk7Ci0gICAgbV9sb2FkZXJzLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKGxv
YWRlcikpOwotfQotCi12b2lkIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNjcmlwdExvYWRGYWlsZWQo
U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJiBsb2FkZXIpCi17Ci0gICAgQWN0aXZlRE9NT2JqZWN0
OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQobG9hZGVyLndvcmtlcigpLCBUYXNrU291cmNlOjpE
T01NYW5pcHVsYXRpb24sIEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKLSAgICBtX2xv
YWRlcnMucmVtb3ZlKGxvYWRlci5pZGVudGlmaWVyKCkpOwotfQotCi12b2lkIFNoYXJlZFdvcmtl
ck1hbmFnZXI6OnNjcmlwdExvYWRlZFN1Y2Nlc3NmdWxseShTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXImIGxvYWRlciwgY29uc3QgU2NyaXB0QnVmZmVyJiBzY3JpcHRCdWZmZXIsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFNoYXJlZFdvcmtlciYgc2hhcmVk
V29ya2VyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgdHJhbnNmZXJyZWRQb3J0KQotewotICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgYXV0byYgd29ya2VyID0gbG9hZGVyLndv
cmtlcigpOwotICAgIGF1dG8mIG9wdGlvbnMgPSBsb2FkZXIub3B0aW9ucygpOwotCi0gICAgYXV0
byYgcHJveHkgPSBzaGFyZWRXb3JrZXIucHJveHkoKTsKLQotICAgIHByb3h5LnN0YXJ0V29ya2Vy
R2xvYmFsU2NvcGUoCi0gICAgICAgIGxvYWRlci51cmwoKSwKLSAgICAgICAgb3B0aW9ucy5uYW1l
LAotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LnVzZXJBZ2VudChsb2FkZXIudXJsKCkp
LAotICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+aXNPbkxp
bmUoKSwKLSAgICAgICAgc2NyaXB0QnVmZmVyLAotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5yZXNwb25zZUhlYWRlcnMoKSwKLSAgICAgICAg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC5zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJp
dHlQb2xpY3koKSwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcm9zc09yaWdpbkVt
YmVkZGVyUG9saWN5KCksCi0gICAgICAgIHdvcmtlci5jcmVhdGlvblRpbWUoKSwKLSAgICAgICAg
UmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nLAotICAgICAgICBvcHRpb25zLnR5cGUsCi0gICAg
ICAgIG9wdGlvbnMuY3JlZGVudGlhbHMsCi0gICAgICAgIHdvcmtlci5ydW50aW1lRmxhZ3MoKQot
ICAgICk7Ci0gICAgaWYgKCFwcm94eS50aHJlYWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
UkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxEb2N1bWVudD4oc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkpOwotICAgIGF1dG8gc291cmNlT3JpZ2luID0gZG93bmNhc3Q8
RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnNlY3VyaXR5T3JpZ2luKCkudG9TdHJp
bmcoKTsKLQotICAgIHByb3h5LnRocmVhZCgpLT5ydW5Mb29wKCkucG9zdFRhc2soW3RyYW5zZmVy
cmVkUG9ydCA9IFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwgc291cmNlT3JpZ2luID0gV1RGTW92
ZShzb3VyY2VPcmlnaW4pLmlzb2xhdGVkQ29weSgpXSAoYXV0byYgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIGRvd25jYXN0PFNoYXJlZFdvcmtlckdsb2JhbFNjb3Bl
PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5wb3N0Q29ubmVjdEV2ZW50KFdURk1vdmUodHJhbnNm
ZXJyZWRQb3J0KSwgc291cmNlT3JpZ2luKTsKLSAgICB9KTsKLQotICAgIG1fbG9hZGVycy5yZW1v
dmUobG9hZGVyLmlkZW50aWZpZXIoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjUyMTgxNmU2NWM3NzY3MWQ5MzM3YTgx
NzE1NWVmOTk3ODU0ZDg0OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2Vy
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpbmNsdWRlICJNZXNzYWdlUG9ydElkZW50aWZpZXIuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkV29y
a2VyOwotY2xhc3MgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOwotY2xhc3MgU2NyaXB0QnVmZmVy
Owotc3RydWN0IFdvcmtlck9wdGlvbnM7Ci11c2luZyBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0ID0g
c3RkOjpwYWlyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVzc2Fn
ZVBvcnRJZGVudGlmaWVyPjsKLQotdXNpbmcgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRp
ZmllciA9IE9iamVjdElkZW50aWZpZXI8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPjsKLQotY2xh
c3MgU2hhcmVkV29ya2VyTWFuYWdlciB7Ci1wdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFNoYXJlZFdvcmtlck1hbmFnZXImIHNpbmdsZXRvbigpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY29ubmVjdChjb25zdCBVUkwmLCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJlZE1lc3Nh
Z2VQb3J0JiYsIFdvcmtlck9wdGlvbnMmJik7Ci0KLSAgICB2b2lkIHNjcmlwdExvYWRGYWlsZWQo
U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJik7Ci0gICAgdm9pZCBzY3JpcHRMb2FkZWRTdWNjZXNz
ZnVsbHkoU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIFNoYXJlZFdvcmtlciYsIFRyYW5zZmVycmVkTWVzc2FnZVBv
cnQmJik7Ci0KLXByaXZhdGU6Ci0gICAgSGFzaE1hcDxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXJJ
ZGVudGlmaWVyLCBVbmlxdWVSZWY8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPj4gbV9sb2FkZXJz
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNw
cAppbmRleCBkZGEzODRkMjI5MTIwMjgzYzEyZDQ3YTU3NTY4OTJmOGE4MDJiNThiLi4xY2RlMGJh
MzU5NTY5MWZhMGNkZmQzNzQzMWQzZjRiOTc0OGQ2YTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uLmNwcApAQCAtMjYsMTAgKzI2LDY2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIgogCisjaW5jbHVkZSAiQWN0aXZlRE9N
T2JqZWN0LmgiCisjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KyNpbmNsdWRlICJTY3JpcHRCdWZmZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKKyNp
bmNsdWRlICJTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJGZXRj
aFJlc3VsdC5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNkZWZpbmUgQ09OTkVDVElPTl9S
RUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKyNk
ZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9MT0df
RVJST1IoU2hhcmVkV29ya2VyLCAiJXAgLSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjoi
IGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKworc3RhdGljIHVpbnQ2NF90IGxvYWRlcklkZW50
aWZpZXJTZWVkID0gMDsKKwogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6U2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbigpID0gZGVmYXVsdDsKIAogU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbjo6flNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CiAKK3Zv
aWQgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6ZmV0Y2hTY3JpcHRJbkNsaWVudChVUkwm
JiB1cmwsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciwgV29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byogd29ya2Vy
T2JqZWN0ID0gU2hhcmVkV29ya2VyOjpmcm9tSWRlbnRpZmllcihzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyKTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJmZXRjaFNjcmlwdEluQ2xp
ZW50OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMsIHdvcmtlcj0lcCIs
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB3
b3JrZXJPYmplY3QpOworICAgIGlmICghd29ya2VyT2JqZWN0KQorICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIod29ya2VyRmV0Y2hFcnJvcihSZXNvdXJjZUVycm9yIHsgUmVzb3VyY2VF
cnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uIH0pKTsKKworICAgIGF1dG8gbG9hZGVySWRlbnRpZmll
ciA9ICsrbG9hZGVySWRlbnRpZmllclNlZWQ7CisgICAgYXV0byBsb2FkZXIgPSBtYWtlVW5pcXVl
UmVmPFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj4oV1RGTW92ZSh1cmwpLCAqd29ya2VyT2JqZWN0
LCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMpKTsKKyAgICBhdXRvIGxvYWRlclB0ciA9IGxvYWRlci5w
dHIoKTsKKyAgICBtX2xvYWRlcnMuYWRkKGxvYWRlcklkZW50aWZpZXIsIFdURk1vdmUobG9hZGVy
KSk7CisKKyAgICBsb2FkZXJQdHItPmxvYWQoW3RoaXMsIGxvYWRlcklkZW50aWZpZXIsIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IFdvcmtlckZl
dGNoUmVzdWx0JiBmZXRjaFJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIENPTk5FQ1RJT05fUkVM
RUFTRV9MT0coImZldGNoU2NyaXB0SW5DbGllbnQ6IGZpbmlzaGVkIHNjcmlwdCBsb2FkLCBzdWNj
ZXNzPSVkIiwgZmV0Y2hSZXN1bHQuZXJyb3IuaXNOdWxsKCkpOworICAgICAgICBhdXRvIGxvYWRl
ciA9IG1fbG9hZGVycy50YWtlKGxvYWRlcklkZW50aWZpZXIpOworICAgICAgICBBU1NFUlQobG9h
ZGVyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmV0Y2hSZXN1bHQpOworICAgIH0pOwor
fQorCit2b2lkIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Om5vdGlmeVdvcmtlck9iamVj
dE9mTG9hZENvbXBsZXRpb24oV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8qIHdvcmtlck9iamVjdCA9
IFNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
cik7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUigibm90aWZ5V29ya2VyT2JqZWN0
T2ZMb2FkQ29tcGxldGlvbjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31z
LCB3b3JrZXI9JXAsIHN1Y2Nlc3M9JWQiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRv
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgd29ya2VyT2JqZWN0LCBlcnJvci5pc051bGwoKSk7Cisg
ICAgaWYgKHdvcmtlck9iamVjdCkKKyAgICAgICAgd29ya2VyT2JqZWN0LT5kaWRGaW5pc2hMb2Fk
aW5nKGVycm9yKTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpwb3N0
RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQor
eworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgYXV0byogd29ya2VyT2JqZWN0ID0g
U2hhcmVkV29ya2VyOjpmcm9tSWRlbnRpZmllcihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
KTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKCJwb3N0RXhjZXB0aW9uVG9Xb3Jr
ZXJPYmplY3Q6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cywgd29ya2Vy
PSVwIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRh
KCksIHdvcmtlck9iamVjdCk7CisgICAgaWYgKHdvcmtlck9iamVjdCkKKyAgICAgICAgQWN0aXZl
RE9NT2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKndvcmtlck9iamVjdCwgVGFza1Nv
dXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFcnJvckV2ZW50OjpjcmVhdGUoZXJyb3JNZXNzYWdlLCBz
b3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgeyB9KSk7Cit9CisKKyN1bmRlZiBD
T05ORUNUSU9OX1JFTEVBU0VfTE9HCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJP
UgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKaW5kZXgg
NGVkNWExYzY1YjU4ZDA5OGRjMGY2ODA4YjYwZWUwYTAzODdkN2JkNi4uNjdhMjAyMDhmZDI3ZjA5
MTJlZmY2MWIzZWZmZjI0YmQzZjgwZWE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApAQCAt
MjUsMjIgKzI1LDM4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiU2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlRyYW5zZmVycmVkTWVzc2FnZVBvcnQuaCIK
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBT
aGFyZWRXb3JrZXI7CitjbGFzcyBNZXNzYWdlUG9ydDsKK2NsYXNzIFNoYXJlZFdvcmtlclNjcmlw
dExvYWRlcjsKKworc3RydWN0IFNoYXJlZFdvcmtlcktleTsKK3N0cnVjdCBXb3JrZXJGZXRjaFJl
c3VsdDsKIHN0cnVjdCBXb3JrZXJPcHRpb25zOwogCiBjbGFzcyBTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bj4gewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24oKTsKIAotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2Vy
KGNvbnN0IFVSTCYsIFNoYXJlZFdvcmtlciYsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgV29y
a2VyT3B0aW9ucyYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIo
Y29uc3QgU2hhcmVkV29ya2VyS2V5JiwgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgVHJh
bnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBjb25zdCBXb3JrZXJPcHRpb25zJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShjb25zdCBTaGFyZWRXb3Jr
ZXJLZXkmLCBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKSA9IDA7CiAKIHByb3RlY3RlZDoK
KyAgICAvLyBJUEMgbWVzc2FnZXMuCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmZXRjaFNjcmlw
dEluQ2xpZW50KFVSTCYmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBX
b3JrZXJPcHRpb25zJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hS
ZXN1bHQmKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBub3RpZnlXb3JrZXJPYmplY3RP
ZkxvYWRDb21wbGV0aW9uKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RFeGNlcHRp
b25Ub1dvcmtlck9iamVjdChTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMKTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24oKTsKKworcHJpdmF0ZToKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBVbmlx
dWVSZWY8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPj4gbV9sb2FkZXJzOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViY2Q0
YTdhZTg3YWRmNWZiMWM3NGQ1NjgyNDYxMTI3NGE1ZjkyZWQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiUHJvY2Vzc1F1YWxpZmllZC5oIgorI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyVHlwZSB7IH07Cit1c2luZyBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyID0gUHJvY2Vz
c1F1YWxpZmllZDxPYmplY3RJZGVudGlmaWVyPFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXJU
eXBlPj47CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4
IDMxMWViZDYwNzhiYzYxZTAxNjlmMWE4NGVhNzE2NGIwODQzNmM2MzkuLmVhMmUwNDhjNzYyMmE2
Mjc2MWUzYzI1ZTI1MmQyN2Y4OTUxMWM2ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwyMyAr
MjksMjYgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCi0jaW5jbHVkZSAiU2hh
cmVkV29ya2VyTWFuYWdlci5oIgorI2luY2x1ZGUgIldvcmtlckZldGNoUmVzdWx0LmgiCiAjaW5j
bHVkZSAiV29ya2VyUnVuTG9vcC5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRXb3JrZXImIHdvcmtlciwg
VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBvcnQsIFdvcmtlck9wdGlvbnMmJiBvcHRpb25zKQot
ICAgIDogbV9pZGVudGlmaWVyKFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcklkZW50aWZpZXI6Omdl
bmVyYXRlKCkpCi0gICAgLCBtX29wdGlvbnMoV1RGTW92ZShvcHRpb25zKSkKK1NoYXJlZFdvcmtl
clNjcmlwdExvYWRlcjo6U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyKFVSTCYmIHVybCwgU2hhcmVk
V29ya2VyJiB3b3JrZXIsIFdvcmtlck9wdGlvbnMmJiBvcHRpb25zKQorICAgIDogbV9vcHRpb25z
KFdURk1vdmUob3B0aW9ucykpCiAgICAgLCBtX3dvcmtlcih3b3JrZXIpCi0gICAgLCBtX3BvcnQo
V1RGTW92ZShwb3J0KSkKICAgICAsIG1fbG9hZGVyKFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRl
KCkpCi0gICAgLCBtX3BlbmRpbmdBY3Rpdml0eSh3b3JrZXIubWFrZVBlbmRpbmdBY3Rpdml0eSh3
b3JrZXIpKQotICAgICwgbV91cmwodXJsKQorICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQogewot
ICAgIG1fd29ya2VyLT5zZXRJc0xvYWRpbmcodHJ1ZSk7Ci0gICAgbV9sb2FkZXItPmxvYWRBc3lu
Y2hyb25vdXNseSgqd29ya2VyLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgUmVzb3VyY2VSZXF1
ZXN0KHVybCksIHdvcmtlci53b3JrZXJGZXRjaE9wdGlvbnMob3B0aW9ucywgRmV0Y2hPcHRpb25z
OjpEZXN0aW5hdGlvbjo6U2hhcmVkd29ya2VyKSwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3Jj
ZW1lbnQ6OkVuZm9yY2VXb3JrZXJTcmNEaXJlY3RpdmUsIFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxs
LCAqdGhpcywgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7Cit9CisKK3ZvaWQgU2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29y
a2VyRmV0Y2hSZXN1bHQmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoIW1f
Y29tcGxldGlvbkhhbmRsZXIpOworICAgIG1fY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKTsKKworICAgIG1fbG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoKm1f
d29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFJlc291cmNlUmVxdWVzdChtX3VybCks
IG1fd29ya2VyLT53b3JrZXJGZXRjaE9wdGlvbnMobV9vcHRpb25zLCBGZXRjaE9wdGlvbnM6OkRl
c3RpbmF0aW9uOjpTaGFyZWR3b3JrZXIpLCBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVu
dDo6RW5mb3JjZVdvcmtlclNyY0RpcmVjdGl2ZSwgU2VydmljZVdvcmtlcnNNb2RlOjpBbGwsICp0
aGlzLCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKIH0KIAogdm9pZCBTaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCkBAIC01NSwxNiArNTgsMTIg
QEAgdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnQKIAogdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXI6Om5vdGlmeUZpbmlzaGVkKCkKIHsKLSAgICBtX3dvcmtlci0+c2V0SXNMb2FkaW5nKGZhbHNl
KTsKKyAgICBpZiAobV9sb2FkZXItPmZhaWxlZCgpKQorICAgICAgICByZXR1cm4gbV9jb21wbGV0
aW9uSGFuZGxlcih3b3JrZXJGZXRjaEVycm9yKG1fbG9hZGVyLT5lcnJvcigpKSk7CiAKLSAgICBh
dXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKLSAgICBpZiAobV9sb2FkZXItPmZhaWxlZCgpIHx8ICFzY3JpcHRFeGVjdXRpb25D
b250ZXh0KSB7Ci0gICAgICAgIG1fd29ya2VyLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXND
YW5jZWxhYmxlOjpZZXMpKTsKLSAgICAgICAgU2hhcmVkV29ya2VyTWFuYWdlcjo6c2luZ2xldG9u
KCkuc2NyaXB0TG9hZEZhaWxlZCgqdGhpcyk7IC8vIGRlbGV0ZXMgdGhpcy4KLSAgICB9IGVsc2Ug
eworICAgIGlmIChhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbV93b3JrZXItPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpz
Y3JpcHRJbXBvcnRlZCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgbV9sb2FkZXItPmlkZW50aWZp
ZXIoKSwgbV9sb2FkZXItPnNjcmlwdCgpLnRvU3RyaW5nKCkpOwotICAgICAgICBTaGFyZWRXb3Jr
ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5zY3JpcHRMb2FkZWRTdWNjZXNzZnVsbHkoKnRoaXMsIG1f
bG9hZGVyLT5zY3JpcHQoKSwgKm1fd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1f
d29ya2VyLmdldCgpLCBzdGQ6OmV4Y2hhbmdlKG1fcG9ydCwgeyB9KSk7IC8vIGRlbGV0ZXMgdGhp
cy4KLSAgICB9CisgICAgbV9jb21wbGV0aW9uSGFuZGxlcih7IG1fbG9hZGVyLT5zY3JpcHQoKSwg
bV9sb2FkZXItPmNlcnRpZmljYXRlSW5mbygpLCBtX2xvYWRlci0+Y29udGVudFNlY3VyaXR5UG9s
aWN5KCksIG1fbG9hZGVyLT5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KCksIG1fbG9hZGVyLT5y
ZWZlcnJlclBvbGljeSgpLCB7IH0gfSk7IC8vIGRlbGV0ZXMgdGhpcy4KIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaAppbmRleCBhZTViM2JiOWVjNTIwNzQ1MzNlZmQ4
NDA5MmNlZWE5OTlmMjAxNzk5Li5lYjBiNzE0NWJmYTFhYmY0NWRkOTYyYTAyMTVjYjg5MDljY2Nk
Mzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXJTY3JpcHRMb2FkZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSwxMSArMjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0SWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IlJlc291cmNlUmVzcG9uc2UuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiV29ya2VyT3B0aW9ucy5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlckNs
aWVudC5oIgogI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CkBAIC0zOSwzMiArMzcs
MjggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTaGFyZWRXb3JrZXI7CiBjbGFzcyBX
b3JrZXJTY3JpcHRMb2FkZXI7Ci0KLWNsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjsKLQot
dXNpbmcgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpNZXNzYWdl
UG9ydElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllcj47CitzdHJ1Y3Qg
V29ya2VyRmV0Y2hSZXN1bHQ7CiAKIGNsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciA6IHBy
aXZhdGUgV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIoY29uc3QgVVJMJiwg
U2hhcmVkV29ya2VyJiwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBXb3JrZXJPcHRpb25zJiYp
OworICAgIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcihVUkwmJiwgU2hhcmVkV29ya2VyJiwgV29y
a2VyT3B0aW9ucyYmKTsKKworICAgIHZvaWQgbG9hZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFdvcmtlckZldGNoUmVzdWx0Jik+JiYpOwogCi0gICAgU2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9
CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIFNoYXJl
ZFdvcmtlciYgd29ya2VyKCkgeyByZXR1cm4gbV93b3JrZXIuZ2V0KCk7IH0KLSAgICBjb25zdCBX
b3JrZXJPcHRpb25zJiBvcHRpb25zKCkgeyByZXR1cm4gbV9vcHRpb25zOyB9CisgICAgY29uc3Qg
V29ya2VyT3B0aW9ucyYgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9uczsgfQogCiBw
cml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5Rmlu
aXNoZWQoKSBmaW5hbDsKIAotICAgIGNvbnN0IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcklkZW50
aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIGNvbnN0IFdvcmtlck9wdGlvbnMgbV9vcHRpb25zOwog
ICAgIGNvbnN0IFJlZjxTaGFyZWRXb3JrZXI+IG1fd29ya2VyOwotICAgIFRyYW5zZmVycmVkTWVz
c2FnZVBvcnQgbV9wb3J0OwogICAgIGNvbnN0IFJlZjxXb3JrZXJTY3JpcHRMb2FkZXI+IG1fbG9h
ZGVyOwotICAgIGNvbnN0IFJlZjxBY3RpdmVET01PYmplY3Q6OlBlbmRpbmdBY3Rpdml0eTxTaGFy
ZWRXb3JrZXI+PiBtX3BlbmRpbmdBY3Rpdml0eTsKICAgICBjb25zdCBVUkwgbV91cmw7CisgICAg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYpPiBtX2NvbXBs
ZXRpb25IYW5kbGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wN2E5MGQ5ODA1MTI0YmVhYmMy
ZTY0ZGQyMzA4NDlmMzYyOTg0N2M3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKQEAg
LTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KyNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyJiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkKK3sKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI+IHNoYXJl
ZE1hbmFnZXI7CisgICAgcmV0dXJuIHNoYXJlZE1hbmFnZXI7Cit9CisKK1NoYXJlZFdvcmtlclRo
cmVhZFByb3h5KiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2hhcmVkV29ya2VyKFNoYXJl
ZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV93b3JrZXJNYXAuZ2V0KHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworfQorCit2b2lk
IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzdG9wU2hhcmVkV29ya2VyKFNoYXJlZFdvcmtl
cklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHdvcmtlciA9
IG1fd29ya2VyTWFwLnRha2Uoc2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9M
T0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0b3BTaGFyZWRX
b3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHdvcmtlcj0lcCIsIHNo
YXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSwgd29ya2VyLmdldCgpKTsKKyAgICBpZiAo
IXdvcmtlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgd29ya2VyLT5zZXRBc1Rlcm1pbmF0aW5n
T3JUZXJtaW5hdGVkKCk7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gZGVh
bCB3aXRoIHRoZSB0aHJlYWQgYmVpbmcgdW5yZXNwb25zaXZlIGhlcmUuCisKKyAgICBhdXRvJiB0
aHJlYWQgPSB3b3JrZXItPnRocmVhZCgpOworICAgIHRocmVhZC5zdG9wKFt3b3JrZXIgPSBXVEZN
b3ZlKHdvcmtlcildKCkgbXV0YWJsZSB7CisgICAgICAgIC8vIFNwaW4gdGhlIHJ1bmxvb3AgYmVm
b3JlIHJlbGVhc2luZyB0aGUgc2hhcmVkIHdvcmtlciB0aHJlYWQgcHJveHksIGFzIHRoZXJlIHdv
dWxkIG90aGVyd2lzZSBiZQorICAgICAgICAvLyBhIHJhY2UgdG93YXJkcyBpdHMgZGVzdHJ1Y3Rp
b24uCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dvcmtlciA9IFdURk1vdmUod29ya2VyKV0g
eyB9KTsKKyAgICB9KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c3Rv
cEFsbFNoYXJlZFdvcmtlcnMoKQoreworICAgIHdoaWxlICghbV93b3JrZXJNYXAuaXNFbXB0eSgp
KQorICAgICAgICBzdG9wU2hhcmVkV29ya2VyKG1fd29ya2VyTWFwLmJlZ2luKCktPmtleSk7Cit9
CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNldENvbm5lY3Rpb24oc3RkOjp1
bmlxdWVfcHRyPENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlQoIW1fY29u
bmVjdGlvbiB8fCBtX2Nvbm5lY3Rpb24tPmlzQ2xvc2VkKCkpOworICAgIG1fY29ubmVjdGlvbiA9
IFdURk1vdmUoY29ubmVjdGlvbik7Cit9CisKK2F1dG8gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXI6OmNvbm5lY3Rpb24oKSBjb25zdCAtPiBDb25uZWN0aW9uKgoreworICAgIHJldHVybiBtX2Nv
bm5lY3Rpb24uZ2V0KCk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnJl
Z2lzdGVyU2hhcmVkV29ya2VyVGhyZWFkKFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4mJiBw
cm94eSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIFJFTEVBU0VfTE9HKFNo
YXJlZFdvcmtlciwgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpyZWdpc3RlclNoYXJlZFdv
cmtlclRocmVhZDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHByb3h5LT5pZGVu
dGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IG1fd29ya2VyTWFwLmFk
ZChwcm94eS0+aWRlbnRpZmllcigpLCBwcm94eS5jb3B5UmVmKCkpOworICAgIEFTU0VSVF9VTlVT
RUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICBwcm94eS0+dGhyZWFkKCkuc3Rh
cnQoW10oY29uc3QgU3RyaW5nJiAvKmV4Y2VwdGlvbk1lc3NhZ2UqLykgeyB9KTsKK30KKwordm9p
ZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVu
dChTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFRyYW5zZmVy
cmVkTWVzc2FnZVBvcnQmJiB0cmFuc2ZlcnJlZFBvcnQsIFN0cmluZyYmIHNvdXJjZU9yaWdpbikK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8qIHByb3h5ID0gU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNoYXJlZFdvcmtlcihzaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVudDogc2hhcmVkV29y
a2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgcHJveHk9JXAiLCBzaGFyZWRXb3JrZXJJZGVudGlm
aWVyLnRvVUludDY0KCksIHByb3h5KTsKKyAgICBpZiAoIXByb3h5KQorICAgICAgICByZXR1cm47
CisKKyAgICBwcm94eS0+dGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFt0cmFuc2ZlcnJlZFBv
cnQgPSBXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCksIHNvdXJjZU9yaWdpbiA9IFdURk1vdmUoc291
cmNlT3JpZ2luKS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
IG11dGFibGUgeworICAgICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgZG93
bmNhc3Q8U2hhcmVkV29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnBv
c3RDb25uZWN0RXZlbnQoV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBXVEZNb3ZlKHNvdXJjZU9y
aWdpbikpOworICAgIH0pOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpD
b25uZWN0aW9uOjp0ZXJtaW5hdGVTaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllciBz
aGFyZWRXb3JrZXJJZGVudGlmaWVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Cisg
ICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6
OkNvbm5lY3Rpb246OnRlcm1pbmF0ZVNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmll
cj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnN0b3BTaGFyZWRXb3JrZXIoc2hh
cmVkV29ya2VySWRlbnRpZmllcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQv
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMzgyNTI4OTM3M2UwZTY4
NjFiOWVjZTdkN2JlOWMxMzE2YzkwZTIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oCkBA
IC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNo
YXJlZFdvcmtlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0
LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTsKKworY2xhc3MgU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXIgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlciYgc2luZ2xldG9uKCk7CisKKyAgICBTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eSogc2hhcmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIpIGNvbnN0OworICAgIHZv
aWQgc3RvcFNoYXJlZFdvcmtlcihTaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHN0b3BBbGxTaGFyZWRXb3JrZXJzKCk7CisKKyAgICBjbGFzcyBDb25uZWN0
aW9uIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAg
ICAgICB2aXJ0dWFsIH5Db25uZWN0aW9uKCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBlc3Rh
Ymxpc2hDb25uZWN0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgPSAwOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFNoYXJlZFdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpID0gMDsKKyAgICAgICAgYm9v
bCBpc0Nsb3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDbG9zZWQ7IH0KKworICAgIHByb3RlY3Rl
ZDoKKyAgICAgICAgdm9pZCBzZXRBc0Nsb3NlZCgpIHsgbV9pc0Nsb3NlZCA9IHRydWU7IH0KKwor
ICAgICAgICAvLyBJUEMgbWVzc2FnZSBoYW5kbGVycy4KKyAgICAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBwb3N0Q29ubmVjdEV2ZW50KFNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFRyYW5zZmVycmVk
TWVzc2FnZVBvcnQmJiwgU3RyaW5nJiYgc291cmNlT3JpZ2luKTsKKyAgICAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB0ZXJtaW5hdGVTaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllcik7
CisKKyAgICBwcml2YXRlOgorICAgICAgICBib29sIG1faXNDbG9zZWQgeyBmYWxzZSB9OworICAg
IH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbm5lY3Rpb24oc3RkOjp1bmlxdWVf
cHRyPENvbm5lY3Rpb24+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIENvbm5lY3Rpb24qIGNvbm5l
Y3Rpb24oKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVnaXN0ZXJTaGFyZWRX
b3JrZXJUaHJlYWQoUmVmPFNoYXJlZFdvcmtlclRocmVhZFByb3h5PiYmKTsKKworcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8U2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXI+OworCisgICAgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIoKSA9IGRlZmF1bHQ7CisKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIEhhc2hNYXA8
U2hhcmVkV29ya2VySWRlbnRpZmllciwgUmVmPFNoYXJlZFdvcmtlclRocmVhZFByb3h5Pj4gbV93
b3JrZXJNYXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHkuY3BwCmluZGV4IDliZDk3ODNkN2E3ZTU4ZTY3YjZiODBiNWQ1NDRmZWMyZWNm
MmNhZjUuLjI2YmE3YjY4YmNlZDJlOTJlMTY3ZTc3OWM5Y2Q1NWQzZDNiMTc4NzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQv
U2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDk0ICsyOCw3MiBAQAogCiAjaW5jbHVkZSAi
Q2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJFcnJvckV2ZW50LmgiCisjaW5jbHVk
ZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkZyYW1l
LmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRl
ci5oIgorI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgorI2luY2x1ZGUg
IlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyR2xv
YmFsU2NvcGUuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlICJX
b3JrZXJGZXRjaFJlc3VsdC5oIgorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXJzRmFjdG9yeS5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShT
aGFyZWRXb3JrZXImIHNoYXJlZFdvcmtlcikKLSAgICA6IG1fc2hhcmVkV29ya2VyKHNoYXJlZFdv
cmtlcikKLSAgICAsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChzaGFyZWRXb3JrZXIuc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICwgbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yKHNoYXJl
ZFdvcmtlci5pZGVudGlmaWVyRm9ySW5zcGVjdG9yKCkpCitzdGF0aWMgSGFzaFNldDxTaGFyZWRX
b3JrZXJUaHJlYWRQcm94eSo+JiBhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkKIHsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSo+
PiBzZXQ7CisgICAgcmV0dXJuIHNldDsKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eTo6c3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgY29uc3Qg
U2NyaXB0QnVmZmVyJiBzY3JpcHRCdWZmZXIsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLCBib29s
IHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgQ3Jvc3NP
cmlnaW5FbWJlZGRlclBvbGljeSYgY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwgTW9ub3Rvbmlj
VGltZSB0aW1lT3JpZ2luLCBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSwgV29ya2VyVHlw
ZSB3b3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RDcmVkZW50aWFscyBjcmVkZW50aWFscywgSlNDOjpS
dW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKQorc3RhdGljIFdvcmtlclBhcmFtZXRlcnMgZ2VuZXJh
dGVXb3JrZXJQYXJhbWV0ZXJzKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBXb3JrZXJGZXRj
aFJlc3VsdCYgd29ya2VyRmV0Y2hSZXN1bHQsIFdvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25z
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIGlm
IChtX2Fza2VkVG9UZXJtaW5hdGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gcGFyYW1l
dGVycyA9IFdvcmtlclBhcmFtZXRlcnMgeworICAgIHJldHVybiBXb3JrZXJQYXJhbWV0ZXJzIHsK
ICAgICAgICAgc2NyaXB0VVJMLAotICAgICAgICBuYW1lLAotICAgICAgICBtX2lkZW50aWZpZXJG
b3JJbnNwZWN0b3IsCisgICAgICAgIHdvcmtlck9wdGlvbnMubmFtZSwKKyAgICAgICAgInNoYXJl
ZHdvcmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZp
ZXIoKSwKICAgICAgICAgdXNlckFnZW50LAotICAgICAgICBpc09ubGluZSwKLSAgICAgICAgY29u
dGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLAotICAgICAgICBzaG91bGRCeXBhc3NN
YWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksCi0gICAgICAgIGNyb3NzT3JpZ2luRW1iZWRk
ZXJQb2xpY3ksCi0gICAgICAgIHRpbWVPcmlnaW4sCi0gICAgICAgIHJlZmVycmVyUG9saWN5LAot
ICAgICAgICB3b3JrZXJUeXBlLAotICAgICAgICBjcmVkZW50aWFscywKLSAgICAgICAgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5zZXR0aW5nc1ZhbHVlcygpCisgICAgICAgIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5pc09uTGluZSgpLAorICAgICAgICB3b3JrZXJG
ZXRjaFJlc3VsdC5jb250ZW50U2VjdXJpdHlQb2xpY3ksCisgICAgICAgIGZhbHNlLAorICAgICAg
ICB3b3JrZXJGZXRjaFJlc3VsdC5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LAorICAgICAgICBN
b25vdG9uaWNUaW1lOjpub3coKSwKKyAgICAgICAgcGFyc2VSZWZlcnJlclBvbGljeSh3b3JrZXJG
ZXRjaFJlc3VsdC5yZWZlcnJlclBvbGljeSwgUmVmZXJyZXJQb2xpY3lTb3VyY2U6OkhUVFBIZWFk
ZXIpLnZhbHVlX29yKFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZyksCisgICAgICAgIHdvcmtl
ck9wdGlvbnMudHlwZSwKKyAgICAgICAgd29ya2VyT3B0aW9ucy5jcmVkZW50aWFscywKKyAgICAg
ICAgZG9jdW1lbnQuc2V0dGluZ3NWYWx1ZXMoKQogICAgIH07Ci0KLSAgICBpZiAoIW1fd29ya2Vy
VGhyZWFkKSB7Ci0gICAgICAgIG1fd29ya2VyVGhyZWFkID0gU2hhcmVkV29ya2VyVGhyZWFkOjpj
cmVhdGUoU2hhcmVkV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgcGFyYW1ldGVycywgc2Ny
aXB0QnVmZmVyLCAqdGhpcywgKnRoaXMsICp0aGlzLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5v
cm1hbCwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT50b3BPcmlnaW4oKSwgbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5pZGJDb25uZWN0aW9uUHJveHkoKSwgbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5zb2NrZXRQcm92aWRlcigpLCBydW50aW1lRmxhZ3MpOwotICAgICAgICBtX3dvcmtlclRo
cmVhZC0+c3RhcnQoKTsKLSAgICB9Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6
OnRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCkKLXsKLSAgICBpZiAobV9hc2tlZFRvVGVybWlu
YXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2Fza2VkVG9UZXJtaW5hdGUgPSB0cnVlOwot
ICAgIGlmIChtX3dvcmtlclRocmVhZCkKLSAgICAgICAgbV93b3JrZXJUaHJlYWQtPnN0b3AobnVs
bHB0cik7CiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RNZXNzYWdlVG9X
b3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UpCitTaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHkoVW5pcXVlUmVmPFBh
Z2U+JiYgcGFnZSwgU2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVy
LCBjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgY29uc3QgVVJMJiBzY3JpcHRVUkws
IFdvcmtlckZldGNoUmVzdWx0JiYgd29ya2VyRmV0Y2hSZXN1bHQsIFdvcmtlck9wdGlvbnMmJiB3
b3JrZXJPcHRpb25zLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgQ2FjaGVTdG9yYWdlUHJvdmlk
ZXImIGNhY2hlU3RvcmFnZVByb3ZpZGVyKQorICAgIDogbV9wYWdlKFdURk1vdmUocGFnZSkpCisg
ICAgLCBtX2RvY3VtZW50KCptX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCisgICAgLCBt
X3dvcmtlclRocmVhZChTaGFyZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZShzaGFyZWRXb3JrZXJJZGVu
dGlmaWVyLCBnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMoc2NyaXB0VVJMLCB3b3JrZXJGZXRjaFJl
c3VsdCwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSwgdXNlckFnZW50LCBtX2RvY3VtZW50KSwgV1RG
TW92ZSh3b3JrZXJGZXRjaFJlc3VsdC5zY3JpcHQpLCAqdGhpcywgKnRoaXMsICp0aGlzLCBXb3Jr
ZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgY2xpZW50T3JpZ2luLnRvcE9yaWdpbi5zZWN1cml0
eU9yaWdpbigpLCBtX2RvY3VtZW50LT5pZGJDb25uZWN0aW9uUHJveHkoKSwgbV9kb2N1bWVudC0+
c29ja2V0UHJvdmlkZXIoKSwgSlNDOjpSdW50aW1lRmxhZ3M6OmNyZWF0ZUFsbEVuYWJsZWQoKSkp
CisgICAgLCBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyKGNhY2hlU3RvcmFnZVByb3ZpZGVyKQogewot
ICAgIC8vIEZJWE1FOiBTaGFyZWRXb3JrZXIgZG9lc24ndCBoYXZlIHBvc3RNZXNzYWdlLCBzbyB0
aGlzIG1pZ2h0IG5vdCBiZSBuZWNlc3NhcnkuCi0gICAgcG9zdFRhc2tUb1dvcmtlckdsb2JhbFNj
b3BlKFttZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKV0oYXV0byYgc2NyaXB0Q29udGV4dCkgbXV0
YWJsZSB7Ci0gICAgICAgIGF1dG8mIGNvbnRleHQgPSBkb3duY2FzdDxTaGFyZWRXb3JrZXJHbG9i
YWxTY29wZT4oc2NyaXB0Q29udGV4dCk7Ci0gICAgICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9y
dDo6ZW50YW5nbGVQb3J0cyhzY3JpcHRDb250ZXh0LCBXVEZNb3ZlKG1lc3NhZ2UudHJhbnNmZXJy
ZWRQb3J0cykpOwotICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50Ojpj
cmVhdGUoV1RGTW92ZShwb3J0cyksIG1lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpKSk7
Ci0gICAgfSk7Ci19CisgICAgQVNTRVJUKCFhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCku
Y29udGFpbnModGhpcykpOworICAgIGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKS5hZGQo
dGhpcyk7CiAKLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RUYXNrVG9Xb3JrZXJH
bG9iYWxTY29wZShGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJiB0YXNr
KQotewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBt
X3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFdURk1vdmUodGFzaykpOwotfQotCi1i
b29sIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAot
ewotICAgIHJldHVybiBtX2hhc1BlbmRpbmdBY3Rpdml0eSAmJiAhbV9hc2tlZFRvVGVybWluYXRl
OworICAgIHN0YXRpYyBib29sIGFkZGVkTGlzdGVuZXI7CisgICAgaWYgKCFhZGRlZExpc3RlbmVy
KSB7CisgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5hZGRP
bmxpbmVTdGF0ZUNoYW5nZUxpc3RlbmVyKCZuZXR3b3JrU3RhdGVDaGFuZ2VkKTsKKyAgICAgICAg
YWRkZWRMaXN0ZW5lciA9IHRydWU7CisgICAgfQogfQogCi12b2lkIFNoYXJlZFdvcmtlclRocmVh
ZFByb3h5Ojp3b3JrZXJPYmplY3REZXN0cm95ZWQoKQorU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6
On5TaGFyZWRXb3JrZXJUaHJlYWRQcm94eSgpCiB7Ci0gICAgbV9zaGFyZWRXb3JrZXIgPSBudWxs
cHRyOwotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXNdIChhdXRv
JikgewotICAgICAgICBtX21heUJlRGVzdHJveWVkID0gdHJ1ZTsKLSAgICAgICAgaWYgKG1fd29y
a2VyVGhyZWFkKQotICAgICAgICAgICAgdGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5h
bCgpOwotICAgIH0pOworICAgIEFTU0VSVChhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCku
Y29udGFpbnModGhpcykpOworICAgIGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKS5yZW1v
dmUodGhpcyk7CiB9CiAKIFNoYXJlZFdvcmtlcklkZW50aWZpZXIgU2hhcmVkV29ya2VyVGhyZWFk
UHJveHk6OmlkZW50aWZpZXIoKSBjb25zdApAQCAtMTI1LDg4ICsxMDMsNTQgQEAgU2hhcmVkV29y
a2VySWRlbnRpZmllciBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6aWRlbnRpZmllcigpIGNvbnN0
CiAKIHZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Om5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5n
ZShib29sIGlzT25saW5lKQogewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCisgICAgaWYg
KG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KCFtX3dvcmtlclRocmVhZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV93b3JrZXJUaHJlYWQt
PnJ1bkxvb3AoKS5wb3N0VGFzayhbaXNPbmxpbmVdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSB7CisgICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZShbaXNPbmxpbmVdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAg
IGF1dG8mIGdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQp
OwogICAgICAgICBnbG9iYWxTY29wZS5zZXRJc09ubGluZShpc09ubGluZSk7Ci0gICAgICAgIGds
b2JhbFNjb3BlLmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShpc09ubGluZSA/IGV2ZW50TmFt
ZXMoKS5vbmxpbmVFdmVudCA6IGV2ZW50TmFtZXMoKS5vZmZsaW5lRXZlbnQsIEV2ZW50OjpDYW5C
dWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwotICAgIH0pOwotfQotCi12b2lk
IFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpzdXNwZW5kRm9yQmFja0ZvcndhcmRDYWNoZSgpCi17
Ci0KLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cmVzdW1lRm9yQmFja0Zvcndh
cmRDYWNoZSgpCi17Ci0KKyAgICAgICAgZ2xvYmFsU2NvcGUuZXZlbnRMb29wKCkucXVldWVUYXNr
KFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW2dsb2JhbFNjb3BlID0gUmVmIHsgZ2xvYmFs
U2NvcGUgfSwgaXNPbmxpbmVdIHsKKyAgICAgICAgICAgIGdsb2JhbFNjb3BlLT5kaXNwYXRjaEV2
ZW50KEV2ZW50OjpjcmVhdGUoaXNPbmxpbmUgPyBldmVudE5hbWVzKCkub25saW5lRXZlbnQgOiBl
dmVudE5hbWVzKCkub2ZmbGluZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6Tm8pKTsKKyAgICAgICAgfSk7CisgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVm
YXVsdE1vZGUoKSk7CiB9CiAKIHZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RFeGNl
cHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewotICAg
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXMsIGVycm9yTWVzc2FnZSA9
IGVycm9yTWVzc2FnZS5pc29sYXRlZENvcHkoKSwgc291cmNlVVJMID0gc291cmNlVVJMLmlzb2xh
dGVkQ29weSgpLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXJdIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JikgewotICAgICAgICBpZiAoIW1fc2hhcmVkV29ya2VyKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIC8vIFdlIGRvbid0IGJvdGhlciBjaGVja2luZyB0aGUgYXNrZWRUb1Rlcm1p
bmF0ZSgpIGZsYWcgaGVyZSwgYmVjYXVzZSBleGNlcHRpb25zIHNob3VsZCAqYWx3YXlzKiBiZSBy
ZXBvcnRlZCBldmVuIGlmIHRoZSB0aHJlYWQgaXMgdGVybWluYXRlZC4KLSAgICAgICAgLy8gVGhp
cyBpcyBpbnRlbnRpb25hbGx5IGRpZmZlcmVudCB0aGFuIHRoZSBiZWhhdmlvciBpbiBNZXNzYWdl
V29ya2VyVGFzaywgYmVjYXVzZSB0ZXJtaW5hdGVkIHdvcmtlcnMgbm8gbG9uZ2VyIGRlbGl2ZXIg
bWVzc2FnZXMgKHNlY3Rpb24gNC42IG9mIHRoZSBXZWJXb3JrZXIgc3BlYyksIGJ1dCB0aGV5IGRv
IHJlcG9ydCBleGNlcHRpb25zLgotICAgICAgICBBY3RpdmVET01PYmplY3Q6OnF1ZXVlVGFza1Rv
RGlzcGF0Y2hFdmVudCgqbV9zaGFyZWRXb3JrZXIsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlv
biwgRXJyb3JFdmVudDo6Y3JlYXRlKGVycm9yTWVzc2FnZSwgc291cmNlVVJMLCBsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIHsgfSkpOwotICAgIH0pOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclRo
cmVhZFByb3h5Ojp3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgpCi17Ci0gICAgbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpc10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
KSB7Ci0gICAgICAgIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwoKTsKLSAgICB9
KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtl
ck9iamVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKQotewotCi19Ci0KLXZvaWQgU2hhcmVk
V29ya2VyVGhyZWFkUHJveHk6OmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sKQot
ewotfQorICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIGlmICghbV93b3JrZXJUaHJl
YWQtPmlzSW5TdGF0aWNTY3JpcHRFdmFsdWF0aW9uKCkpCisgICAgICAgIHJldHVybjsKIAotdm9p
ZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wgaGFz
UGVuZGluZ0FjdGl2aXR5KQotewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRh
c2soW3RoaXMsIGhhc1BlbmRpbmdBY3Rpdml0eV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7
Ci0gICAgICAgIG1faGFzUGVuZGluZ0FjdGl2aXR5ID0gaGFzUGVuZGluZ0FjdGl2aXR5OworICAg
IGNhbGxPbk1haW5UaHJlYWQoW3NoYXJlZFdvcmtlcklkZW50aWZpZXIgPSBtX3dvcmtlclRocmVh
ZC0+aWRlbnRpZmllcigpLCBlcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2UuaXNvbGF0ZWRDb3B5
KCksIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMID0gc291cmNlVVJMLmlzb2xh
dGVkQ29weSgpXSB7CisgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAgICAgIGNv
bm5lY3Rpb24tPnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJJZGVudGlm
aWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMKTsK
ICAgICB9KTsKIH0KIAogUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IFNoYXJlZFdvcmtl
clRocmVhZFByb3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1l
bnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIHJldHVybiBkb2N1bWVudC5wYWdl
KCktPmNhY2hlU3RvcmFnZVByb3ZpZGVyKCkuY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigp
OworICAgIGlmICghbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uKQorICAgICAgICBtX2NhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24gPSBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyLmNyZWF0ZUNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24oKTsKKyAgICByZXR1cm4gbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uOwogfQog
CiBSZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbj4gU2hhcmVkV29y
a2VyVGhyZWFkUHJveHk6OmNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rp
b24oKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byYgZG9jdW1lbnQg
PSBkb3duY2FzdDxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgaWYg
KCFkb2N1bWVudC5wYWdlKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBk
b2N1bWVudC5wYWdlKCktPmxpYldlYlJUQ1Byb3ZpZGVyKCkuY3JlYXRlUlRDRGF0YUNoYW5uZWxS
ZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpOworICAgIHJldHVybiBtX3BhZ2UtPmxpYldlYlJUQ1By
b3ZpZGVyKCkuY3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpOwog
fQogCiB2b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0VGFza1RvTG9hZGVyKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQogewotICAgIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+cG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7CisgICAgY2FsbE9uTWFpblRocmVhZChb
dGFzayA9IFdURk1vdmUodGFzayksIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSBt
dXRhYmxlIHsKKyAgICAgICAgdGFzay5wZXJmb3JtVGFzayhwcm90ZWN0ZWRUaGlzLT5tX2RvY3Vt
ZW50LmdldCgpKTsKKyAgICB9KTsKIH0KIAogYm9vbCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6
cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrJiYgdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQogewotICAgIGlmICht
X2Fza2VkVG9UZXJtaW5hdGUpCisgICAgaWYgKG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5w
b3N0VGFza0Zvck1vZGUoV1RGTW92ZSh0YXNrKSwgbW9kZSk7CkBAIC0yMjMsMTYgKzE2NywxMCBA
QCB2b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxl
ZEJ5V2ViSW5zcGVjdG9yKGJvb2wpCiAKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eTo6d29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpCit2b2lkIFNoYXJlZFdvcmtl
clRocmVhZFByb3h5OjpuZXR3b3JrU3RhdGVDaGFuZ2VkKGJvb2wgaXNPbkxpbmUpCiB7Ci0gICAg
Ly8gVGhpcyBpcyBhbHdheXMgdGhlIGxhc3QgdGFzayB0byBiZSBwZXJmb3JtZWQsIHNvIHRoZSBw
cm94eSBpcyBub3QgbmVlZGVkIGZvciBjb21tdW5pY2F0aW9uCi0gICAgLy8gaW4gZWl0aGVyIHNp
ZGUgYW55IG1vcmUuIEhvd2V2ZXIsIHRoZSBXb3JrZXIgb2JqZWN0IG1heSBzdGlsbCBleGlzdCwg
YW5kIGl0IGFzc3VtZXMgdGhhdCB0aGUgcHJveHkgZXhpc3RzLCB0b28uCi0gICAgbV9hc2tlZFRv
VGVybWluYXRlID0gdHJ1ZTsKLSAgICBtX3dvcmtlclRocmVhZCA9IG51bGxwdHI7Ci0KLSAgICAv
LyBUaGlzIGJhbGFuY2VzIHRoZSBvcmlnaW5hbCByZWYgaW4gY29uc3RydWN0aW9uLgotICAgIGlm
IChtX21heUJlRGVzdHJveWVkKQotICAgICAgICBkZXJlZigpOworICAgIGZvciAoYXV0byogcHJv
eHkgOiBhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkpCisgICAgICAgIHByb3h5LT5ub3Rp
ZnlOZXR3b3JrU3RhdGVDaGFuZ2UoaXNPbkxpbmUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1No
YXJlZFdvcmtlclRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9j
b250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmgKaW5kZXggNGU5MmU0NTYxNzFjZTkxYWVi
ODc1YTM1ZTc1OWI5ZWM1YjU0MWVmNy4uMzM2NDI0MGFiYmI1OWI4ZDFkMDM5ZmVlYmQwNWIxNGEw
MjczN2FkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4
dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw3ICsyNyw2IEBACiAK
ICNpbmNsdWRlICJTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV29ya2VyRGVi
dWdnZXJQcm94eS5oIgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlUHJveHkuaCIKICNpbmNs
dWRlICJXb3JrZXJMb2FkZXJQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlck9iamVjdFByb3h5Lmgi
CiAjaW5jbHVkZSAiV29ya2VyT3B0aW9ucy5oIgpAQCAtMzUsNTAgKzM0LDU0IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ2FjaGVTdG9yYWdlUHJvdmlkZXI7CitjbGFzcyBQYWdl
OwogY2xhc3MgU2hhcmVkV29ya2VyOwogY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkOwogCi1jbGFz
cyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4sIHB1YmxpYyBXb3JrZXJHbG9iYWxTY29wZVBy
b3h5LCBwdWJsaWMgV29ya2VyT2JqZWN0UHJveHksIHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94eSwg
cHVibGljIFdvcmtlckRlYnVnZ2VyUHJveHkgeworc3RydWN0IENsaWVudE9yaWdpbjsKK3N0cnVj
dCBXb3JrZXJGZXRjaFJlc3VsdDsKKworY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkgZmlu
YWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkV29ya2VyVGhyZWFkUHJveHk+
LCBwdWJsaWMgV29ya2VyT2JqZWN0UHJveHksIHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94eSwgcHVi
bGljIFdvcmtlckRlYnVnZ2VyUHJveHkgewogcHVibGljOgotICAgIHRlbXBsYXRlPHR5cGVuYW1l
Li4uIEFyZ3M+IHN0YXRpYyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSYgY3JlYXRlKEFyZ3MmJi4u
LiBhcmdzKSB7IHJldHVybiAqbmV3IFNoYXJlZFdvcmtlclRocmVhZFByb3h5KHN0ZDo6Zm9yd2Fy
ZDxBcmdzPihhcmdzKS4uLik7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0
aWMgUmVmPFNoYXJlZFdvcmtlclRocmVhZFByb3h5PiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkoc3RkOjpmb3J3YXJk
PEFyZ3M+KGFyZ3MpLi4uKSk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB+U2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkoKTsKIAogICAgIFNoYXJlZFdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNv
bnN0OwotICAgIFNoYXJlZFdvcmtlclRocmVhZCogdGhyZWFkKCkgeyByZXR1cm4gbV93b3JrZXJU
aHJlYWQuZ2V0KCk7IH0KKyAgICBTaGFyZWRXb3JrZXJUaHJlYWQmIHRocmVhZCgpIHsgcmV0dXJu
IG1fd29ya2VyVGhyZWFkOyB9CiAKLSAgICB2b2lkIHN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoY29u
c3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB1c2Vy
QWdlbnQsIGJvb2wgaXNPbmxpbmUsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc291cmNlQ29kZSwgY29u
c3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBh
c3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnN0IENyb3NzT3JpZ2luRW1iZWRk
ZXJQb2xpY3kmLCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIFJlZmVycmVyUG9saWN5LCBXb3Jr
ZXJUeXBlLCBGZXRjaFJlcXVlc3RDcmVkZW50aWFscywgSlNDOjpSdW50aW1lRmxhZ3MpIGZpbmFs
OwotICAgIHZvaWQgd29ya2VyT2JqZWN0RGVzdHJveWVkKCkgZmluYWw7Ci0gICAgYm9vbCBoYXNQ
ZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlckds
b2JhbFNjb3BlKCkgZmluYWw7CisgICAgYm9vbCBpc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkOyB9CisgICAgdm9pZCBz
ZXRBc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKCkgeyBtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0
ZWQgPSB0cnVlOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2hhcmVkV29ya2VyVGhyZWFk
UHJveHkoU2hhcmVkV29ya2VyJik7Ci0KLSAgICB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJv
eWVkSW50ZXJuYWwoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eShVbmlxdWVSZWY8UGFnZT4mJiwgU2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgQ2xpZW50
T3JpZ2luJiwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIFdvcmtlckZldGNoUmVzdWx0JiYsIFdvcmtl
ck9wdGlvbnMmJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIENhY2hlU3RvcmFnZVByb3ZpZGVy
Jik7CiAKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyYmKSBmaW5hbDsKLSAgICB2b2lkIHBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxT
Y29wZShGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJikgZmluYWw7Ci0g
ICAgdm9pZCBub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9vbCBpc09ubGluZSkgZmluYWw7Ci0g
ICAgdm9pZCBzdXNwZW5kRm9yQmFja0ZvcndhcmRDYWNoZSgpIGZpbmFsOwotICAgIHZvaWQgcmVz
dW1lRm9yQmFja0ZvcndhcmRDYWNoZSgpIGZpbmFsOworICAgIC8vIFdvcmtlck9iamVjdFByb3h5
LgogICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwpIGZpbmFsOwotICAgIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWQo
KSBmaW5hbDsKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHMmJikgZmluYWw7Ci0gICAgdm9pZCBjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJP
YmplY3QoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpIGZpbmFsOwotICAgIHZvaWQgcmVwb3J0UGVu
ZGluZ0FjdGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KSBmaW5hbDsKKyAgICB2b2lkIHBv
c3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJikgZmluYWwg
eyB9CisgICAgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgpIGZpbmFsIHsgfQorICAg
IHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wpIGZpbmFsIHsgfQorICAg
IHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wpIGZpbmFsIHsgfQorCisgICAgLy8gV29y
a2VyTG9hZGVyUHJveHkuCiAgICAgUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IGNyZWF0
ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKSBmaW5hbDsKICAgICBSZWZQdHI8UlRDRGF0YUNoYW5u
ZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbj4gY3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5k
bGVyQ29ubmVjdGlvbigpIGZpbmFsOwogICAgIHZvaWQgcG9zdFRhc2tUb0xvYWRlcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrJiYpIGZpbmFsOwogICAgIGJvb2wgcG9zdFRhc2tGb3JNb2Rl
VG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
JiYsIGNvbnN0IFN0cmluZyYgbW9kZSkgZmluYWw7CisKKyAgICAvLyBXb3JrZXJEZWJ1Z2dlclBy
b3h5LgogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb0RlYnVnZ2VyKGNvbnN0IFN0cmluZyYpIGZpbmFs
OwogICAgIHZvaWQgc2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3BlY3Rvcihib29s
KSBmaW5hbDsKIAotICAgIFdlYWtQdHI8U2hhcmVkV29ya2VyPiBtX3NoYXJlZFdvcmtlcjsKLSAg
ICBSZWZQdHI8U2hhcmVkV29ya2VyVGhyZWFkPiBtX3dvcmtlclRocmVhZDsKLSAgICBjb25zdCBS
ZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0Owot
ICAgIGNvbnN0IFN0cmluZyBtX2lkZW50aWZpZXJGb3JJbnNwZWN0b3I7Ci0gICAgYm9vbCBtX2Fz
a2VkVG9UZXJtaW5hdGUgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9oYXNQZW5kaW5nQWN0aXZpdHkg
eyBmYWxzZSB9OwotICAgIGJvb2wgbV9tYXlCZURlc3Ryb3llZCB7IGZhbHNlIH07CisgICAgc3Rh
dGljIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZChib29sIGlzT25MaW5lKTsKKyAgICB2b2lkIG5v
dGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25saW5lKTsKKworICAgIFVuaXF1ZVJlZjxQ
YWdlPiBtX3BhZ2U7CisgICAgUmVmPERvY3VtZW50PiBtX2RvY3VtZW50OworICAgIFJlZjxTaGFy
ZWRXb3JrZXJUaHJlYWQ+IG1fd29ya2VyVGhyZWFkOworICAgIENhY2hlU3RvcmFnZVByb3ZpZGVy
JiBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyOworICAgIFJlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uPiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247CisgICAgYm9vbCBtX2lzVGVybWluYXRpbmdP
clRlcm1pbmF0ZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01h
a2VMaXN0cy50eHQKaW5kZXggNzU2ZGE4OGI0NWY3MDQyZjQyM2I3MzRjNzY0ZTY1NjZkNDQ2ZWZh
Zi4uMjlmNGM3ODE4MTgwZGUyY2IyNDk1MDcyZTg0NjBhNTBhZDM2NGE0MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlz
dHMudHh0CkBAIC0yOCw2ICsyOCw3IEBAIHNldChXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMiCiAgICAgIiR7
V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiCiAgICAg
IiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlciIKKyAgICAiJHtXRUJL
SVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIiCiAgICAgIiR7V0VCS0lUX0RJUn0v
TmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZSIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZSIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlIgpA
QCAtMjAyLDYgKzIwMyw5IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKICAgICBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbgogICAgIE5ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCiAK
KyAgICBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbgorICAgIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCisKICAgICBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VNYW5hZ2VyU2V0CiAKICAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDb25uZWN0aW9uCkBAIC0zMDUsNiArMzA5LDggQEAgc2V0KFdlYktpdF9NRVNTQUdF
U19JTl9GSUxFUwogCiAgICAgV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFs
dGltZU1lZGlhU291cmNlTWFuYWdlcgogCisgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbgorICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uCiAgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ2xpZW50Q29ubmVjdGlvbgogICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKaW5kZXggNGM2NjIyMGNmMTIyYTUzYjc0NjlkNDQwMGM3Y2RkYjIzNWM4Yjc0
OS4uNzIyOWMxYjk4NzA4ODgxYjdiYWVjM2NmN2EwMjQ3MzU3MmUzNWRlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtOTEsNiArOTEsOCBA
QCAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJEb3dubG9hZFRhc2subWVzc2FnZXMuaQogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9E
SVIpL05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRX
b3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdl
clNldC5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0
d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4KQEAg
LTIxNyw2ICsyMTksOCBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgor
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9X
ZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBlM2I1NTg0MGFlMWVhZjU3ZjVl
YmY3NTQyZTVlMWZkNDBlNWRkNGQxLi5hODYzMjgxNDdiNTZjNWM1NjBhYTVhYmEzOWJmYWQzMjQ1
YzI2MTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3QKQEAgLTYwNyw2ICs2MDcsMTggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdC9XZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdl
cy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9X
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9X
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2Vz
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b25NZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTb2NrZXRD
aGFubmVsTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdC9XZWJTb2NrZXRDaGFubmVsTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTb2NrZXRDaGFubmVsTWVzc2FnZXNSZXBs
aWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA3YWQ0OWUzNzM1ZjRiNDc4YzQx
NmQ5Mjk1YzEzOWJlOThmZDZjZTRhLi4zNTFmZmFlMGE1ODY2MGMxZDEyZmY5YWNkODc3ZDI3YzUx
YzA3ZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysr
IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xMzMsNiArMTMzLDggQEAg
TUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRG93bmxvYWRUYXNrIFwKIAlOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJGZXRjaFRhc2sgXAogCU5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIFwKKwlOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbiBcCisJTmV0d29ya1Byb2Nlc3MvU2hh
cmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gXAogCU5l
dHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0gXAogCU5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzIFwKIAlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIgXApAQCAt
MjI1LDYgKzIyNyw4IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vz
cy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlciBcCisJ
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
biBcCisJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24g
XAogCVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBcCiAJ
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYTM0Zjc5YmRlM2Uw
ODE2OTZkNzNhNTVmYmY1OTA1OGJmNmQ4ZjM3OS4uYzdiMTdmZDcwNzg1NGIxMjg0OThkMTExOGY0
ZTZlN2Q1YjNkODVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTY2LDYgKzY2
LDExIEBACiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdv
cmtlclNlcnZlci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24u
aCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRUUENv
b2tpZUFjY2VwdFBvbGljeS5oPgpAQCAtMTMyLDYgKzEzNyw3IEBAIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2Vz
cyYgbmV0CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGVzdGFibGlzaFNXU2VydmVy
Q29ubmVjdGlvbigpOwogI2VuZGlmCisgICAgZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbigpOwogfQogCiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fk5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKQEAgLTE2Niw2ICsxNzIsNyBAQCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6fk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdW5yZWdpc3RlclNXQ29ubmVjdGlvbigpOwogI2Vu
ZGlmCisgICAgdW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKIH0KIAogdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzVXBsb2FkU3RhdGVDaGFuZ2VkKGJvb2wg
aGFzVXBsb2FkKQpAQCAtMjc1LDYgKzI4MiwxNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpbwog
ICAgIH0KICNlbmRpZgogCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09
IE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpIHsKKyAgICAgICAgaWYgKG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbikKKyAgICAg
ICAgICAgIG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgaWYg
KG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24pCisgICAgICAgICAgICBtX3NoYXJlZFdv
cmtlckNvbnRleHRDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVN
T1RFX1VJKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdl
czo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkKICAg
ICAgICAgcmV0dXJuIHBheW1lbnRDb29yZGluYXRvcigpLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOwpAQCAtMzk4LDkgKzQxNiw4IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uID0g
bnVsbHB0cjsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogI2VuZGlmCisg
ICAgbV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7CiAKICAgICAvLyBQ
cm90ZWN0IG91cnNlbGYgYXMgd2UgbWlnaHQgYmUgb3RoZXJ3aXNlIGJlIGRlbGV0ZWQgZHVyaW5n
IHRoaXMgZnVuY3Rpb24uCiAgICAgUmVmPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBw
cm90ZWN0b3IoKnRoaXMpOwpAQCAtNDQxLDYgKzQ1OCw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdW5yZWdpc3RlclNXQ29ubmVjdGlvbigpOwog
I2VuZGlmCisgICAgdW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKIAogI2lmIEVO
QUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQogICAgIG1fcGF5bWVudENvb3JkaW5hdG9yID0gbnVs
bHB0cjsKQEAgLTExODYsNiArMTIwNCw2MSBAQCBzaXplX3QgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmZpbmROZXR3b3JrQWN0aXZpdHlUcmFja2VyKFdlYkNvcmU6OlJlc291cgogICAg
ICAgICByZXR1cm4gaXRlbS5yZXNvdXJjZUlEID09IHJlc291cmNlSUQ7CiAgICAgfSk7CiB9CisK
K3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNo
YXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uOiIpOwor
ICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOworICAgIGlmIChhdXRvKiBzd1Nl
cnZlciA9IHNlc3Npb24gPyBzZXNzaW9uLT5zaGFyZWRXb3JrZXJTZXJ2ZXIoKSA6IG51bGxwdHIp
CisgICAgICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+KCp0aGlzLCBXVEZNb3ZlKHJl
Z2lzdHJhYmxlRG9tYWluKSwgKnN3U2VydmVyKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwor
fQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCkKK3sKKyAgICBpZiAobV9zaGFyZWRXb3JrZXJDb25uZWN0
aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIENPTk5FQ1RJ
T05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbjoiKTsKKworICAgIGF1dG8mIHNlcnZlciA9IHNlc3Npb24tPmVuc3VyZVNoYXJl
ZFdvcmtlclNlcnZlcigpOworICAgIGF1dG8gY29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4obV9uZXR3b3JrUHJvY2Vzcywgc2VydmVyLCBtX2Nv
bm5lY3Rpb24uZ2V0KCksIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOworCisgICAgbV9zaGFyZWRX
b3JrZXJDb25uZWN0aW9uID0gKmNvbm5lY3Rpb247CisgICAgc2VydmVyLmFkZENvbm5lY3Rpb24o
V1RGTW92ZShjb25uZWN0aW9uKSk7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNsb3NlU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24oKQoreworICAgIENPTk5F
Q1RJT05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiY2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0
Q29ubmVjdGlvbjoiKTsKKyAgICBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uID0gbnVs
bHB0cjsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3Rl
clNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0co
U2hhcmVkV29ya2VyLCAidW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb246Iik7CisgICAg
aWYgKG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbikKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJDb25u
ZWN0aW9uLT5zZXJ2ZXIoKS5yZW1vdmVDb25uZWN0aW9uKG1fc2hhcmVkV29ya2VyQ29ubmVjdGlv
bi0+d2ViUHJvY2Vzc0lkZW50aWZpZXIoKSk7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Jc05vTG9u
Z2VyTmVlZGVkKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwg
InNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkOiIp
OworICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0
aW9uTm9Mb25nZXJOZWVkZWQgeyB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOworCisgICAg
bV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7Cit9CisKK1dlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb24qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpz
aGFyZWRXb3JrZXJDb25uZWN0aW9uKCkKK3sKKyAgICBpZiAoIW1fc2hhcmVkV29ya2VyQ29ubmVj
dGlvbikKKyAgICAgICAgZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpOwor
ICAgIHJldHVybiBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24uZ2V0KCk7Cit9CiAgICAgCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6dW5yZWdpc3RlclNXQ29ubmVjdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXgg
YWI5NjY1N2QwZGY0YTIzMzEwNDBhYzUxZmM0M2MwNjg0Nzg0ODA0Ny4uZDBhYTRlZjc0NTIwYTJj
YTBiNTUxYjQ2OWU4NmVhNzY2OGI2NzhlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAt
OTIsNiArOTIsOCBAQCBjbGFzcyBOZXR3b3JrU29ja2V0U3RyZWFtOwogY2xhc3MgU2VydmljZVdv
cmtlckZldGNoVGFzazsKIGNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKIGNsYXNzIFdlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb247CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OwogCiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIHN0cnVjdCBEYXRhS2V5OwpAQCAtMTg1LDYg
KzE4Nyw5IEBAIHB1YmxpYzoKICAgICBXZWJTV1NlcnZlckNvbm5lY3Rpb24qIHN3Q29ubmVjdGlv
bigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBjcmVhdGVG
ZXRjaFRhc2soTmV0d29ya1Jlc291cmNlTG9hZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Jik7CiAjZW5kaWYKKyAgICB2b2lkIHNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7CisKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uKiBzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiAKICAgICBOZXR3b3JrU2NoZW1l
UmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9zY2hlbWVSZWdpc3RyeS5nZXQo
KTsgfQogCkBAIC0yNTMsNiArMjU4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZVNvY2tl
dENoYW5uZWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBw
cm90b2NvbCwgV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAgICAgdm9pZCB1cGRhdGVRdW90
YUJhc2VkT25TcGFjZVVzYWdlRm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
KTsKIAorICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpOwor
ICAgIHZvaWQgdW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKKwogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigp
OwogICAgIHZvaWQgZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0yNjAsNiArMjY4LDkg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgog
CisgICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdl
UHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgY2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0Q29u
bmVjdGlvbigpOworCiAgICAgdm9pZCBjcmVhdGVSVENQcm92aWRlcihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIHZvaWQgY29ubmVjdFRvUlRD
RGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVy
IHNvdXJjZSwgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGhhbmRsZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxib29sPik+JiYpOwpAQCAtNDA0LDYgKzQx
NSw4IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxXZWJTV1NlcnZlckNvbm5lY3Rpb24+IG1fc3dD
b25uZWN0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24+IG1fc3dDb250ZXh0Q29ubmVjdGlvbjsKICNlbmRpZgorICAgIFdlYWtQdHI8V2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4gbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
PiBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uOwogCiAjaWYgRU5BQkxFKFdFQl9SVEMp
CiAgICAgYm9vbCBtX2lzUmVnaXN0ZXJlZFRvUlRDRGF0YUNoYW5uZWxQcm94eSB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAyNDI4MzUw
NTBiMjQ5NzBjNWVhYzFlMjZiZjg2YjViMDI1YTgwZTUzLi5iOTdjYTM0NzliNGQ5ZDU1NzlhN2U3
ZTU1YTY5MWE2MGRkODg2NmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KQEAgLTg4LDYgKzg4LDkgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIENsb3NlU1dDb250ZXh0Q29ubmVjdGlv
bigpCiAjZW5kaWYKIAorICAgIEVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9u
KFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gZG9tYWluKSAtPiAoKSBBc3luYworICAgIENsb3NlU2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb24oKQorCiAgICAgQ3JlYXRlUlRDUHJvdmlkZXIoKSAtPiAoKSBB
c3luYwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIENvbm5lY3RUb1JUQ0RhdGFDaGFubmVsUmVt
b3RlU291cmNlKHN0cnVjdCBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgc291cmNl
LCBzdHJ1Y3QgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGhhbmRsZXIpIC0+IChz
dGQ6Om9wdGlvbmFsPGJvb2w+IHJlc3VsdCkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggZTJiMjRkODMyMmI2ZWMxYzM3NzAx
ZGNhZDQ5NzUzNGNlZjIzMWEyNi4uZDc2MTYyODUwY2FkODQzOGYwMDg4OTA1M2Y3ZWRjODJmM2Uz
M2EzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldlYlNXT3JpZ2luU3Rv
cmUuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJT
b2NrZXRUYXNrLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVKYXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgpAQCAtNjUzLDYgKzY1NCwxMyBAQCBib29sIE5ldHdv
cmtTZXNzaW9uOjpoYXNTZXJ2aWNlV29ya2VyRGF0YWJhc2VQYXRoKCkgY29uc3QKIAogI2VuZGlm
IC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorV2ViU2hhcmVkV29ya2VyU2VydmVyJiBOZXR3
b3JrU2Vzc2lvbjo6ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCkKK3sKKyAgICBpZiAoIW1fc2hh
cmVkV29ya2VyU2VydmVyKQorICAgICAgICBtX3NoYXJlZFdvcmtlclNlcnZlciA9IG1ha2VVbmlx
dWU8V2ViU2hhcmVkV29ya2VyU2VydmVyPigqdGhpcyk7CisgICAgcmV0dXJuICptX3NoYXJlZFdv
cmtlclNlcnZlcjsKK30KKwogV2ViSURCU2VydmVyJiBOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlV2Vi
SURCU2VydmVyKCkKIHsKICAgICBpZiAoIW1fd2ViSURCU2VydmVyKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggMTkzMDdjZjQwYmUzYjJm
MjYwNTdkMDE2Yzc2NmVkY2U0OThjOTU0Mi4uM2Y5ZDZjOTU1MGE4YjhjZWM5ZTRjNTU5ZDMxZDEy
MWE5OGIwZTg0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb24uaApAQCAtNzksNiArNzksNyBAQCBjbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOwog
Y2xhc3MgV2ViSURCU2VydmVyOwogY2xhc3MgV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzOwogY2xh
c3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOworY2xhc3MgV2ViU2hhcmVkV29ya2Vy
U2VydmVyOwogY2xhc3MgV2ViU29ja2V0VGFzazsKIGNsYXNzIFdlYlNXT3JpZ2luU3RvcmU7CiBj
bGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CkBAIC0yMTAsNiArMjExLDkgQEAgcHVibGljOgog
ICAgIHZvaWQgYWRkU2VydmljZVdvcmtlclNlc3Npb24oYm9vbCBwcm9jZXNzVGVybWluYXRpb25E
ZWxheUVuYWJsZWQsIFN0cmluZyYmIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnks
IGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogI2VuZGlmCiAKKyAgICBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXIqIHNoYXJlZFdvcmtlclNlcnZlcigpIHsgcmV0dXJuIG1fc2hhcmVkV29y
a2VyU2VydmVyLmdldCgpOyB9CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBlbnN1cmVTaGFy
ZWRXb3JrZXJTZXJ2ZXIoKTsKKwogICAgIFdlYklEQlNlcnZlciogd2ViSURCU2VydmVyKCkgeyBy
ZXR1cm4gbV93ZWJJREJTZXJ2ZXIuZ2V0KCk7IH0KICAgICBXZWJJREJTZXJ2ZXImIGVuc3VyZVdl
YklEQlNlcnZlcigpOwogICAgIHZvaWQgY2xvc2VJREJTZXJ2ZXIoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKQEAgLTMxOCw2ICszMjIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RkOjpvcHRp
b25hbDxTZXJ2aWNlV29ya2VySW5mbz4gbV9zZXJ2aWNlV29ya2VySW5mbzsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6U1dTZXJ2ZXI+IG1fc3dTZXJ2ZXI7CiAjZW5kaWYKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyPiBtX3NoYXJlZFdvcmtlclNlcnZlcjsK
IAogICAgIFN0cmluZyBtX2lkYkRhdGFiYXNlUGF0aDsKICAgICBSZWZQdHI8V2ViSURCU2VydmVy
PiBtX3dlYklEQlNlcnZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgw
MDkxMzk1MjgwYzhkNzYwZWYxYTFkMTIxYzIxNDc1ZjQ5NWViYjgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3Jr
ZXIuY3BwCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyLmgiCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29w
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgSGFzaE1hcDxXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyLCBXZWJTaGFyZWRXb3JrZXIqPiYgYWxsV29ya2VycygpCit7Cisg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SGFzaE1hcDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBXZWJTaGFyZWRXb3JrZXIq
Pj4gYWxsV29ya2VyczsKKyAgICByZXR1cm4gYWxsV29ya2VyczsKK30KKworV2ViU2hhcmVkV29y
a2VyOjpXZWJTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBrZXks
IGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMpCisgICAgOiBtX2lk
ZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKKyAg
ICAsIG1fa2V5KGtleSkKKyAgICAsIG1fd29ya2VyT3B0aW9ucyh3b3JrZXJPcHRpb25zKQorewor
ICAgIEFTU0VSVCghYWxsV29ya2VycygpLmNvbnRhaW5zKG1faWRlbnRpZmllcikpOworICAgIGFs
bFdvcmtlcnMoKS5hZGQobV9pZGVudGlmaWVyLCB0aGlzKTsKK30KKworV2ViU2hhcmVkV29ya2Vy
Ojp+V2ViU2hhcmVkV29ya2VyKCkKK3sKKyAgICBBU1NFUlQoYWxsV29ya2VycygpLmdldChtX2lk
ZW50aWZpZXIpID09IHRoaXMpOworICAgIGFsbFdvcmtlcnMoKS5yZW1vdmUobV9pZGVudGlmaWVy
KTsKK30KKworV2ViU2hhcmVkV29ya2VyKiBXZWJTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVy
KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICByZXR1
cm4gYWxsV29ya2VycygpLmdldChpZGVudGlmaWVyKTsKK30KKworV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gV2ViU2hhcmVkV29ya2VyOjpyZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsKCkgfTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0Yjdh
NGE4NDNjZWY5YTE3ZWJjMGIzYTVmYTRjY2Q0ZDA2MTZiMzQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIu
aApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZFdvcmtlcktleS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmZXJyZWRNZXNzYWdlUG9ydC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyRmV0Y2hSZXN1bHQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1dvcmtlck9wdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKK30KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJT
aGFyZWRXb3JrZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBXZWJTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiwgY29uc3Qg
V2ViQ29yZTo6V29ya2VyT3B0aW9ucyYpOworICAgIH5XZWJTaGFyZWRXb3JrZXIoKTsKKworICAg
IHN0YXRpYyBXZWJTaGFyZWRXb3JrZXIqIGZyb21JZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdv
cmtlcklkZW50aWZpZXIpOworCisgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBp
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgY29uc3QgV2Vi
Q29yZTo6U2hhcmVkV29ya2VyS2V5JiBrZXkoKSBjb25zdCB7IHJldHVybiBtX2tleTsgfQorICAg
IGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMoKSBjb25zdCB7IHJl
dHVybiBtX3dvcmtlck9wdGlvbnM7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
IG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fa2V5Lm9yaWdpbjsgfQorICAgIGNvbnN0IFVSTCYg
dXJsKCkgY29uc3QgeyByZXR1cm4gbV9rZXkudXJsOyB9CisgICAgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gcmVnaXN0cmFibGVEb21haW4oKSBjb25zdDsKKyAgICBIYXNoTWFwPFdlYkNvcmU6
OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2Fn
ZVBvcnQ+JiBzaGFyZWRXb3JrZXJPYmplY3RzKCkgeyByZXR1cm4gbV9zaGFyZWRXb3JrZXJPYmpl
Y3RzOyB9CisKKyAgICBib29sIGlzUnVubmluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNSdW5uaW5n
OyB9CisgICAgdm9pZCBtYXJrQXNSdW5uaW5nKCkgeyBtX2lzUnVubmluZyA9IHRydWU7IH0KKwor
ICAgIGNvbnN0IFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiBmZXRjaFJlc3VsdCgpIGNvbnN0
IHsgcmV0dXJuIG1fZmV0Y2hSZXN1bHQ7IH0KKyAgICB2b2lkIHNldEZldGNoUmVzdWx0KFdlYkNv
cmU6OldvcmtlckZldGNoUmVzdWx0JiYgZmV0Y2hSZXN1bHQpIHsgbV9mZXRjaFJlc3VsdCA9IFdU
Rk1vdmUoZmV0Y2hSZXN1bHQpOyB9CisgICAgYm9vbCBkaWRGaW5pc2hGZXRjaGluZygpIGNvbnN0
IHsgcmV0dXJuICEhbV9mZXRjaFJlc3VsdC5zY3JpcHQ7IH0KKworcHJpdmF0ZToKKyAgICBXZWJT
aGFyZWRXb3JrZXIoV2ViU2hhcmVkV29ya2VyJiYpID0gZGVsZXRlOworICAgIFdlYlNoYXJlZFdv
cmtlciYgb3BlcmF0b3I9KFdlYlNoYXJlZFdvcmtlciYmKSA9IGRlbGV0ZTsKKyAgICBXZWJTaGFy
ZWRXb3JrZXIoY29uc3QgV2ViU2hhcmVkV29ya2VyJikgPSBkZWxldGU7CisgICAgV2ViU2hhcmVk
V29ya2VyJiBvcGVyYXRvcj0oY29uc3QgV2ViU2hhcmVkV29ya2VyJikgPSBkZWxldGU7CisKKyAg
ICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBXZWJD
b3JlOjpTaGFyZWRXb3JrZXJLZXkgbV9rZXk7CisgICAgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyBt
X3dvcmtlck9wdGlvbnM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0PiBtX3NoYXJlZFdvcmtl
ck9iamVjdHM7CisgICAgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQgbV9mZXRjaFJlc3VsdDsK
KyAgICBib29sIG1faXNSdW5uaW5nIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmM2
ODMwMjE0ZDQwYzQ3ZjIyZTk1NTljYzg2YWQ3MjVhYjUxMDViMwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtl
clNlcnZlci5jcHAKQEAgLTAsMCArMSwyNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgiCisKKyNpbmNsdWRlICJM
b2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgorI2lu
Y2x1ZGUgIldlYlNoYXJlZFdvcmtlci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyS2V5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Xb3Jr
ZXJGZXRjaFJlc3VsdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyT3B0aW9ucy5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU2hhcmVkV29ya2VyU2VydmVyOjpXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXIoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24pCisgICAgOiBtX3Nlc3Npb24oc2Vzc2lv
bikKK3sKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVyOjp+V2ViU2hhcmVkV29ya2VyU2VydmVy
KCkgPSBkZWZhdWx0OworCitQQUw6OlNlc3Npb25JRCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNl
c3Npb25JRCgpCit7CisgICAgcmV0dXJuIG1fc2Vzc2lvbi5zZXNzaW9uSUQoKTsKK30KKwordm9p
ZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hh
cmVkV29ya2VyS2V5JiYgc2hhcmVkV29ya2VyS2V5LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5z
ZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYgd29ya2Vy
T3B0aW9ucykKK3sKKyAgICBhdXRvJiBzaGFyZWRXb3JrZXIgPSBtX3NoYXJlZFdvcmtlcnMuZW5z
dXJlKHNoYXJlZFdvcmtlcktleSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2Vi
U2hhcmVkV29ya2VyPihzaGFyZWRXb3JrZXJLZXksIHdvcmtlck9wdGlvbnMpOworICAgIH0pLml0
ZXJhdG9yLT52YWx1ZTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXI9JXtwcml2YXRlfXMsIHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgc2hhcmVk
V29ya2VyLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBpZiAoc2hhcmVkV29ya2Vy
LT53b3JrZXJPcHRpb25zKCkudHlwZSAhPSB3b3JrZXJPcHRpb25zLnR5cGUgfHwgc2hhcmVkV29y
a2VyLT53b3JrZXJPcHRpb25zKCkuY3JlZGVudGlhbHMgIT0gd29ya2VyT3B0aW9ucy5jcmVkZW50
aWFscykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICJXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6IEEgd29ya2VyIGFscmVhZHkgZXhp
c3RzIHdpdGggdGhpcyBuYW1lIGJ1dCBoYXMgZGlmZmVyZW50IHR5cGUgLyBjcmVkZW50aWFscyIp
OworICAgICAgICBpZiAoYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0
KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSkpCisgICAg
ICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uLT5ub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0
aW9uKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHsgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
cjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cygpLmFkZChzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLCBwb3J0KTsKKworICAgIGlmIChzaGFyZWRXb3JrZXItPnNoYXJlZFdvcmtl
ck9iamVjdHMoKS5zaXplKCkgPiAxKSB7CisgICAgICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtl
ciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtlcjogQSBzaGFyZWQg
d29ya2VyIHdpdGggdGhpcyBVUkwgYWxyZWFkeSBleGlzdHMgKG5vdyBzaGFyZWQgYnkgJXUgc2hh
cmVkIHdvcmtlciBvYmplY3RzKSIsIHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cygp
LnNpemUoKSk7CisgICAgICAgIGlmIChzaGFyZWRXb3JrZXItPmRpZEZpbmlzaEZldGNoaW5nKCkp
IHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9u
cy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkK
KyAgICAgICAgICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uLT5ub3RpZnlXb3JrZXJPYmplY3RPZkxv
YWRDb21wbGV0aW9uKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHsgfSk7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKHNoYXJlZFdvcmtlci0+aXNSdW5uaW5nKCkpIHsKKyAgICAgICAgICAg
IGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gbV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0KHNoYXJl
ZFdvcmtlci0+cmVnaXN0cmFibGVEb21haW4oKSk7CisgICAgICAgICAgICBBU1NFUlQoY29udGV4
dENvbm5lY3Rpb24pOworICAgICAgICAgICAgaWYgKGNvbnRleHRDb25uZWN0aW9uKQorICAgICAg
ICAgICAgICAgIGNvbnRleHRDb25uZWN0aW9uLT5wb3N0Q29ubmVjdEV2ZW50KCpzaGFyZWRXb3Jr
ZXIsIHBvcnQpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJU
KCFzaGFyZWRXb3JrZXItPmlzUnVubmluZygpKTsKKworICAgIGF1dG8qIHNlcnZlckNvbm5lY3Rp
b24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nl
c3NJZGVudGlmaWVyKCkpOworICAgIEFTU0VSVChzZXJ2ZXJDb25uZWN0aW9uKTsKKworICAgIFJF
TEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNo
YXJlZFdvcmtlcjogRmV0Y2hpbmcgc2hhcmVkIHdvcmtlciBzY3JpcHQgaW4gY2xpZW50Iik7Cisg
ICAgc2VydmVyQ29ubmVjdGlvbi0+ZmV0Y2hTY3JpcHRJbkNsaWVudCgqc2hhcmVkV29ya2VyLCBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMg
fSwgc2hhcmVkV29ya2VyID0gV2Vha1B0ciB7ICpzaGFyZWRXb3JrZXIgfV0oV2ViQ29yZTo6V29y
a2VyRmV0Y2hSZXN1bHQmJiBmZXRjaFJlc3VsdCkgeworICAgICAgICBpZiAod2Vha1RoaXMgJiYg
c2hhcmVkV29ya2VyKQorICAgICAgICAgICAgd2Vha1RoaXMtPmRpZEZpbmlzaEZldGNoaW5nU2hh
cmVkV29ya2VyU2NyaXB0KCpzaGFyZWRXb3JrZXIsIFdURk1vdmUoZmV0Y2hSZXN1bHQpKTsKKyAg
ICB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5n
U2hhcmVkV29ya2VyU2NyaXB0KFdlYlNoYXJlZFdvcmtlciYgc2hhcmVkV29ya2VyLCBXZWJDb3Jl
OjpXb3JrZXJGZXRjaFJlc3VsdCYmIGZldGNoUmVzdWx0KQoreworICAgIFJFTEVBU0VfTE9HKFNo
YXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6ZGlkRmluaXNoRmV0Y2hpbmdTaGFy
ZWRXb3JrZXJTY3JpcHQgc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgc2hhcmVk
V29ya2VyPSVwLCBzdWNjZXNzPSVkIiwgc2hhcmVkV29ya2VyLmlkZW50aWZpZXIoKS50b1VJbnQ2
NCgpLCAmc2hhcmVkV29ya2VyLCBmZXRjaFJlc3VsdC5lcnJvci5pc051bGwoKSk7CisKKyAgICBm
b3IgKGF1dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA6IHNoYXJlZFdvcmtlci5zaGFy
ZWRXb3JrZXJPYmplY3RzKCkua2V5cygpKSB7CisgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25u
ZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5w
cm9jZXNzSWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIHNlcnZlckNvbm5lY3Rpb24tPm5vdGlm
eVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24oc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciwgZmV0Y2hSZXN1bHQuZXJyb3IpOworICAgIH0KKworICAgIGlmICghZmV0Y2hSZXN1bHQuZXJy
b3IuaXNOdWxsKCkpIHsKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJzLnJlbW92ZShzaGFyZWRXb3Jr
ZXIua2V5KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2hhcmVkV29ya2VyLnNl
dEZldGNoUmVzdWx0KFdURk1vdmUoZmV0Y2hSZXN1bHQpKTsKKworICAgIGF1dG8gcmVnaXN0cmFi
bGVEb21haW4gPSBzaGFyZWRXb3JrZXIucmVnaXN0cmFibGVEb21haW4oKTsKKyAgICBhdXRvKiBj
b250ZXh0Q29ubmVjdGlvbiA9IGNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4o
cmVnaXN0cmFibGVEb21haW4pOworICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAg
ICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgY29udGV4dENvbm5lY3Rpb24tPmxhdW5jaFNoYXJlZFdvcmtl
cihzaGFyZWRXb3JrZXIpOworfQorCitib29sIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6bmVlZHND
b250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8m
IHNoYXJlZFdvcmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAo
cmVnaXN0cmFibGVEb21haW4ubWF0Y2hlcyhzaGFyZWRXb3JrZXItPnVybCgpKSkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2Vi
U2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCit7CisgICAgQVNTRVJUKCFt
X2NvbnRleHRDb25uZWN0aW9ucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpOworICAgIGlm
IChtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnMuY29udGFpbnMocmVnaXN0cmFibGVE
b21haW4pKQorICAgICAgICByZXR1cm47CisKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIs
ICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uIHdpbGwgY3Jl
YXRlIGEgY29ubmVjdGlvbiIpOworCisgICAgbV9wZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21h
aW5zLmFkZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgbV9zZXNzaW9uLm5ldHdvcmtQcm9jZXNz
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MgeyByZWdpc3RyYWJsZURvbWFpbiwgbV9zZXNzaW9uLnNlc3Np
b25JRCgpIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZWdpc3RyYWJs
ZURvbWFpbl0geworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZl
cjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24gc2hvdWxkIG5vdyBoYXZlIGNyZWF0ZWQgYSBjb25u
ZWN0aW9uIik7CisKKyAgICAgICAgQVNTRVJUKG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9t
YWlucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpOworICAgICAgICBtX3BlbmRpbmdDb250
ZXh0Q29ubmVjdGlvbkRvbWFpbnMucmVtb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKKworICAgICAg
ICBpZiAobV9jb250ZXh0Q29ubmVjdGlvbnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChuZWVkc0NvbnRleHRDb25uZWN0aW9u
Rm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICAgICAgY3Jl
YXRlQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4pOworICAgIH0sIDApOworfQor
Cit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29udGV4dENvbm5lY3Rpb24oV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24pCit7
CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjph
ZGRDb250ZXh0Q29ubmVjdGlvbiglcCkgd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCAm
Y29udGV4dENvbm5lY3Rpb24sIGNvbnRleHRDb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVy
KCkudG9VSW50NjQoKSk7CisKKyAgICBBU1NFUlQoIW1fY29udGV4dENvbm5lY3Rpb25zLmNvbnRh
aW5zKGNvbnRleHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCkpKTsKKworICAgIG1fY29u
dGV4dENvbm5lY3Rpb25zLmFkZChjb250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigp
LCAmY29udGV4dENvbm5lY3Rpb24pOworCisgICAgY29udGV4dENvbm5lY3Rpb25DcmVhdGVkKGNv
bnRleHRDb25uZWN0aW9uKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlbW92
ZUNvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24mIGNvbnRleHRDb25uZWN0aW9uKQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwg
IldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oJXApIHdlYlBy
b2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgJmNvbnRleHRDb25uZWN0aW9uLCBjb250ZXh0Q29u
bmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUludDY0KCkpOworCisgICAgYXV0byBy
ZWdpc3RyYWJsZURvbWFpbiA9IGNvbnRleHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCk7
CisKKyAgICBBU1NFUlQobV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0KHJlZ2lzdHJhYmxlRG9tYWlu
KSA9PSAmY29udGV4dENvbm5lY3Rpb24pOworCisgICAgbV9jb250ZXh0Q29ubmVjdGlvbnMucmVt
b3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKKworICAgIGlmIChuZWVkc0NvbnRleHRDb25uZWN0aW9u
Rm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICBjcmVhdGVD
b250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbik7Cit9CisKK3ZvaWQgV2ViU2hhcmVk
V29ya2VyU2VydmVyOjpjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24pCit7CisgICAgUkVMRUFT
RV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjb250ZXh0Q29ubmVj
dGlvbkNyZWF0ZWQoJXApIHdlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgJmNvbnRleHRD
b25uZWN0aW9uLCBjb250ZXh0Q29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUlu
dDY0KCkpOworICAgIGF1dG8mIHJlZ2lzdHJhYmxlRG9tYWluID0gY29udGV4dENvbm5lY3Rpb24u
cmVnaXN0cmFibGVEb21haW4oKTsKKyAgICBmb3IgKGF1dG8mIHNoYXJlZFdvcmtlciA6IG1fc2hh
cmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAoc2hhcmVkV29ya2VyLT5kaWRGaW5p
c2hGZXRjaGluZygpICYmIHJlZ2lzdHJhYmxlRG9tYWluLm1hdGNoZXMoc2hhcmVkV29ya2VyLT51
cmwoKSkpCisgICAgICAgICAgICBjb250ZXh0Q29ubmVjdGlvbi5sYXVuY2hTaGFyZWRXb3JrZXIo
KnNoYXJlZFdvcmtlcik7CisgICAgfQorfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6
c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2Vy
S2V5JiBzaGFyZWRXb3JrZXJLZXksIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK3sKKyAgICBhdXRvKiBzaGFyZWRXb3Jr
ZXIgPSBtX3NoYXJlZFdvcmtlcnMuZ2V0KHNoYXJlZFdvcmtlcktleSk7CisgICAgUkVMRUFTRV9M
T0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaGFyZWRXb3JrZXJPYmpl
Y3RJc0dvaW5nQXdheTogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zLCBz
aGFyZWRXb3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgc2hhcmVkV29ya2VyKTsKKyAgICBpZiAoIXNoYXJlZFdvcmtlcikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzKCku
cmVtb3ZlKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIGlmICghc2hhcmVkV29y
a2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBzaHV0RG93blNoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXJLZXkpOworfQorCit2b2lkIFdl
YlNoYXJlZFdvcmtlclNlcnZlcjo6c2h1dERvd25TaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6
U2hhcmVkV29ya2VyS2V5JiBrZXkpCit7CisgICAgYXV0byBzaGFyZWRXb3JrZXIgPSBtX3NoYXJl
ZFdvcmtlcnMudGFrZShrZXkpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNo
YXJlZFdvcmtlclNlcnZlcjo6c2h1dERvd25TaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50
aWZpZXI9JSIgUFJJdTY0ICIsIHNoYXJlZFdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlciA/IHNoYXJl
ZFdvcmtlci0+aWRlbnRpZmllcigpLnRvVUludDY0KCkgOiAwLCBzaGFyZWRXb3JrZXIuZ2V0KCkp
OworICAgIGlmICghc2hhcmVkV29ya2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBj
b250ZXh0Q29ubmVjdGlvbiA9IGNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4o
c2hhcmVkV29ya2VyLT5yZWdpc3RyYWJsZURvbWFpbigpKTsKKyAgICBpZiAoIWNvbnRleHRDb25u
ZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBjb250ZXh0Q29ubmVjdGlvbi0+dGVybWlu
YXRlU2hhcmVkV29ya2VyKCpzaGFyZWRXb3JrZXIpOworCisgICAgaWYgKCFuZWVkc0NvbnRleHRD
b25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oc2hhcmVkV29ya2VyLT5yZWdpc3RyYWJsZURv
bWFpbigpKSkKKyAgICAgICAgY29udGV4dENvbm5lY3Rpb24tPmNvbm5lY3Rpb25Jc05vTG9uZ2Vy
TmVlZGVkKCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjphZGRDb25uZWN0aW9u
KHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uPiYmIGNvbm5l
Y3Rpb24pCit7CisgICAgYXV0byBwcm9jZXNzSWRlbnRpZmllciA9IGNvbm5lY3Rpb24tPndlYlBy
b2Nlc3NJZGVudGlmaWVyKCk7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hh
cmVkV29ya2VyU2VydmVyOjphZGRDb25uZWN0aW9uKCVwKTogcHJvY2Vzc0lkZW50aWZpZXI9JSIg
UFJJdTY0LCBjb25uZWN0aW9uLmdldCgpLCBwcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKTsK
KyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbnMuY29udGFpbnMocHJvY2Vzc0lkZW50aWZpZXIpKTsK
KyAgICBtX2Nvbm5lY3Rpb25zLmFkZChwcm9jZXNzSWRlbnRpZmllciwgV1RGTW92ZShjb25uZWN0
aW9uKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1vdmVDb25uZWN0aW9u
KFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQoreworICAgIGF1
dG8gY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMudGFrZShwcm9jZXNzSWRlbnRpZmllcik7Cisg
ICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1v
dmVDb25uZWN0aW9uKCVwKTogcHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCBjb25uZWN0aW9u
LmdldCgpLCBwcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBBU1NFUlQoY29ubmVj
dGlvbik7CisKKyAgICBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSwg
V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj4+IHNoYXJlZFdvcmtlck9iamVj
dHNHb2luZ0F3YXk7CisgICAgZm9yIChhdXRvJiBzaGFyZWRXb3JrZXIgOiBtX3NoYXJlZFdvcmtl
cnMudmFsdWVzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyIDogc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzKCkua2V5cygpKSB7Cisg
ICAgICAgICAgICBpZiAoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRp
ZmllcigpID09IHByb2Nlc3NJZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIHNoYXJlZFdvcmtl
ck9iamVjdHNHb2luZ0F3YXkuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHNoYXJlZFdvcmtlci0+a2V5
KCksIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBmb3IgKGF1dG8mIFtzaGFyZWRXb3JrZXJLZXksIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXJdIDogc2hhcmVkV29ya2VyT2JqZWN0c0dvaW5nQXdheSkKKyAgICAgICAgc2hhcmVkV29ya2Vy
T2JqZWN0SXNHb2luZ0F3YXkoc2hhcmVkV29ya2VyS2V5LCBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyKTsKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiog
V2ViU2hhcmVkV29ya2VyU2VydmVyOjpjb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9t
YWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fY29udGV4dENvbm5lY3Rpb25zLmdldChkb21haW4pOworfQorCit2b2lkIFdl
YlNoYXJlZFdvcmtlclNlcnZlcjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6
OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBhdXRvKiBzaGFyZWRXb3JrZXIgPSBXZWJTaGFy
ZWRXb3JrZXI6OmZyb21JZGVudGlmaWVyKHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworICAgIFJF
TEVBU0VfTE9HX0VSUk9SKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cG9z
dEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2
NCAiLCBzaGFyZWRXb3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCks
IHNoYXJlZFdvcmtlcik7CisgICAgaWYgKCFzaGFyZWRXb3JrZXIpCisgICAgICAgIHJldHVybjsK
KworICAgIGZvciAoYXV0byBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIDogc2hhcmVkV29y
a2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzKCkua2V5cygpKSB7CisgICAgICAgIGlmIChhdXRvKiBz
ZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIHNlcnZlckNvbm5lY3Rp
b24tPnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMKTsK
KyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMmQ4MDM4MDkzNmRlYWZhNGIwZjMxMjM0OTIwOTdkM2Q4
NzM5OTY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
aGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmgKQEAgLTAsMCArMSw4MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRp
Zmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1RyYW5zZmVycmVkTWVzc2FnZVBvcnQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKKworc3Ry
dWN0IENsaWVudE9yaWdpbjsKK3N0cnVjdCBTaGFyZWRXb3JrZXJLZXk7CitzdHJ1Y3QgV29ya2Vy
RmV0Y2hSZXN1bHQ7CitzdHJ1Y3QgV29ya2VyT3B0aW9uczsKK30KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIE5ldHdvcmtTZXNzaW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2VyOworY2xh
c3MgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZl
ciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI+IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXIoTmV0d29ya1Nlc3Npb24mKTsKKyAgICB+V2ViU2hhcmVkV29ya2VyU2VydmVy
KCk7CisKKyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKTsKKyAgICBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBjb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJh
YmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CisKKyAg
ICB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiYsIFdl
YkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVk
TWVzc2FnZVBvcnQmJiwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmKTsKKyAgICB2b2lkIHNoYXJl
ZFdvcmtlck9iamVjdElzR29pbmdBd2F5KGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYs
IFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIHZvaWQgcG9zdEV4
Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCisgICAgdm9pZCBhZGRDb250ZXh0Q29ubmVj
dGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CisgICAgdm9p
ZCByZW1vdmVDb250ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uJik7CisgICAgdm9pZCBhZGRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uPiYmKTsKKyAgICB2b2lkIHJlbW92ZUNvbm5lY3Rp
b24oV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOworCitwcml2YXRlOgorICAgIHZvaWQgY3Jl
YXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsK
KyAgICBib29sIG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OworICAgIHZvaWQgY29udGV4dENv
bm5lY3Rpb25DcmVhdGVkKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24m
KTsKKyAgICB2b2lkIGRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29ya2VyU2NyaXB0KFdlYlNoYXJl
ZFdvcmtlciYsIFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYpOworICAgIHZvaWQgc2h1dERv
d25TaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5Jik7CisKKyAgICBO
ZXR3b3JrU2Vzc2lvbiYgbV9zZXNzaW9uOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
Pj4gbV9jb25uZWN0aW9uczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
LCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4gbV9jb250ZXh0Q29u
bmVjdGlvbnM7CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9wZW5k
aW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5zOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2hhcmVk
V29ya2VyS2V5LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyPj4gbV9zaGFyZWRXb3Jr
ZXJzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2NDFjMTg5YzJm
Mjk5ZGI1OTk5NDVhMzczNWE4MWQ1NGY1OGRhOWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgiCisK
KyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlci5oIgorI2luY2x1ZGUg
IldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvV29ya2VyRmV0Y2hSZXN1bHQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNkZWZp
bmUgQ09OTkVDVElPTl9NRVNTQUdFX0NIRUNLKGFzc2VydGlvbikgQ09OTkVDVElPTl9NRVNTQUdF
X0NIRUNLX0NPTVBMRVRJT04oYXNzZXJ0aW9uLCAodm9pZCkwKQorI2RlZmluZSBDT05ORUNUSU9O
X01FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTihhc3NlcnRpb24sIGNvbXBsZXRpb24pIGRvIHsgXAor
ICAgIEFTU0VSVChhc3NlcnRpb24pOyBcCisgICAgaWYgKFVOTElLRUxZKCEoYXNzZXJ0aW9uKSkp
IHsgXAorICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJtaW5hdGVXZWJQcm9jZXNz
KG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpLCAwKTsgXAorICAgICAgICB7IGNvbXBsZXRpb247IH0g
XAorICAgICAgICByZXR1cm47IFwKKyAgICB9IFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgQ09O
TkVDVElPTl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAi
JXAgLSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdlYlNoYXJlZFdvcmtlclNl
cnZlckNvbm5lY3Rpb246OiIgZm10LCB0aGlzLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyLnRvVUlu
dDY0KCksICMjX19WQV9BUkdTX18pCisjZGVmaW5lIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJS
T1IoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKFNoYXJlZFdvcmtlciwgIiVwIC0gW3dlYlBy
b2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uOjoiIGZtdCwgdGhpcywgbV93ZWJQcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpLCAjI19f
VkFfQVJHU19fKQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgV2Vi
U2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIpCisgICAgOiBt
X2NvbnRlbnRDb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5l
dHdvcmtQcm9jZXNzKQorICAgICwgbV9zZXJ2ZXIoc2VydmVyKQorICAgICwgbV93ZWJQcm9jZXNz
SWRlbnRpZmllcih3ZWJQcm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVB
U0VfTE9HKCJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOiIpOworfQorCitXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjp+V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlv
bigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygifldlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb246Iik7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiogV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAoreworICAgIHJl
dHVybiBtX2NvbnRlbnRDb25uZWN0aW9uLnB0cigpOworfQorCitQQUw6OlNlc3Npb25JRCBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpzZXNzaW9uSUQoKQoreworICAgIHJldHVybiBz
ZXJ2ZXIoKS5zZXNzaW9uSUQoKTsKK30KKworTmV0d29ya1Nlc3Npb24qIFdlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb246OnNlc3Npb24oKQoreworICAgIHJldHVybiBtX25ldHdvcmtQcm9j
ZXNzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbjo6cmVxdWVzdFNoYXJlZFdvcmtlcihXZWJDb3JlOjpTaGFyZWRX
b3JrZXJLZXkmJiBzaGFyZWRXb3JrZXJLZXksIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJy
ZWRNZXNzYWdlUG9ydCYmIHBvcnQsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRp
b25zKQoreworICAgIENPTk5FQ1RJT05fTUVTU0FHRV9DSEVDSyhzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7
CisgICAgQ09OTkVDVElPTl9NRVNTQUdFX0NIRUNLKHNoYXJlZFdvcmtlcktleS5uYW1lID09IHdv
cmtlck9wdGlvbnMubmFtZSk7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygicmVxdWVzdFNo
YXJlZFdvcmtlcjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAg
IGlmIChhdXRvKiBzZXNzaW9uID0gdGhpcy0+c2Vzc2lvbigpKQorICAgICAgICBzZXNzaW9uLT5l
bnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKS5yZXF1ZXN0U2hhcmVkV29ya2VyKFdURk1vdmUoc2hh
cmVkV29ya2VyS2V5KSwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV1RGTW92ZShwb3J0
KSwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbjo6c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hh
cmVkV29ya2VyS2V5JiYgc2hhcmVkV29ya2VyS2V5LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7CisgICAgQ09OTkVD
VElPTl9NRVNTQUdFX0NIRUNLKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lk
ZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICBDT05ORUNUSU9OX1JF
TEVBU0VfTE9HKCJzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheTogc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50
b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gdGhpcy0+
c2Vzc2lvbigpKQorICAgICAgICBzZXNzaW9uLT5lbnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKS5z
aGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShzaGFyZWRXb3JrZXJLZXksIHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb246OmZldGNoU2NyaXB0SW5DbGllbnQoY29uc3QgV2ViU2hhcmVkV29ya2VyJiBzaGFyZWRX
b3JrZXIsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXb3JrZXJG
ZXRjaFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBDT05ORUNUSU9OX1JF
TEVBU0VfTE9HKCJmZXRjaFNjcmlwdEluQ2xpZW50OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyPSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpGZXRjaFNjcmlwdEluQ2xpZW50IHsgc2hhcmVkV29y
a2VyLnVybCgpLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBzaGFyZWRXb3JrZXIud29y
a2VyT3B0aW9ucygpIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRD
b21wbGV0aW9uKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3Ip
Cit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygibm90aWZ5V29ya2VyT2JqZWN0T2ZMb2Fk
Q29tcGxldGlvbjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zLCBzdWNj
ZXNzPSVkIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5k
YXRhKCksIGVycm9yLmlzTnVsbCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uOjpOb3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uIHsg
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgZXJyb3IgfSk7Cit9CisKK3ZvaWQgV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdl
YkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBDT05ORUNUSU9O
X1JFTEVBU0VfTE9HX0VSUk9SKCJwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Q6IHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpQb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qg
eyBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgc291cmNlVVJMIH0pOworfQorCisjdW5kZWYgQ09OTkVDVElPTl9SRUxF
QVNFX0xPRworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IKKyN1bmRlZiBDT05O
RUNUSU9OX01FU1NBR0VfQ0hFQ0sKKyN1bmRlZiBDT05ORUNUSU9OX01FU1NBR0VfQ0hFQ0tfQ09N
UExFVElPTgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYmY3NzVkMGE4ZjVjYjcx
YzdmMzQ2YTE1NTQ4ZGNkMmRiNDEzMWI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbi5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9T
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0
cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKK3N0cnVjdCBXb3JrZXJPcHRpb25zOworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya1Byb2Nlc3M7CitjbGFzcyBXZWJTaGFyZWRX
b3JrZXI7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI7CitjbGFzcyBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVz
c2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiwgV2ViU2hh
cmVkV29ya2VyU2VydmVyJiwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIpOworICAgIH5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCk7CisKKyAgICBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlcigpIHsgcmV0dXJuIG1fc2VydmVyOyB9CisgICAg
Y29uc3QgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIoKSBjb25zdCB7IHJldHVybiBtX3Nl
cnZlcjsgfQorCisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCk7CisgICAgTmV0d29ya1Nl
c3Npb24qIHNlc3Npb24oKTsKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9j
ZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7IH0K
KworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgZmluYWw7CisKKyAgICB2b2lkIGZldGNoU2NyaXB0SW5DbGllbnQoY29uc3QgV2ViU2hh
cmVkV29ya2VyJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmKT4mJik7CisgICAg
dm9pZCBub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKFdlYkNvcmU6OlNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKKyAg
ICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKworcHJpdmF0
ZToKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNz
YWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQorCisgICAgLy8g
SVBDIG1lc3NhZ2VzLgorICAgIHZvaWQgcmVxdWVzdFNoYXJlZFdvcmtlcihXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJLZXkmJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2Vi
Q29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYp
OworICAgIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVk
V29ya2VyS2V5JiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworCisg
ICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb250ZW50Q29ubmVjdGlvbjsKKyAgICBSZWY8TmV0
d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVy
JiBtX3NlcnZlcjsKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBtX3dlYlByb2Nlc3NJ
ZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
aGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kNzJhODdiN2VjZjQ0NmM5MTk0ZDNhYmRiZjIyNjMwYjRiMzI1ZGRjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI2
IEBACisjIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+
IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CisgICAgUmVx
dWVzdFNoYXJlZFdvcmtlcihzdHJ1Y3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5IHNoYXJlZFdv
cmtlcktleSwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0IHBvcnQs
IHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdvcmtlck9wdGlvbnMpCisgICAgU2hhcmVk
V29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoc3RydWN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSBz
aGFyZWRXb3JrZXJLZXksIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZmY4NmJjN2Q2YTJkNDMxZjM4MzRkZjg1ZTFkMjYyMzQ1NmY1YTk4NwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTExIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNp
bmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlNo
YXJlZFdvcmtlci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCisjZGVmaW5lIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNF
X0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBbd2ViUHJvY2Vz
c0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246OiIgZm10LCB0aGlzLCB3ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUludDY0KCks
ICMjX19WQV9BUkdTX18pCisKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIp
CisgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1fc2VydmVyKHNlcnZlcikK
KyAgICAsIG1fcmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pCit7CisgICAgQ09O
VEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOiIpOworICAgIHNlcnZlci5hZGRDb250ZXh0Q29ubmVjdGlvbigqdGhpcyk7
Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5XZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkKK3sKKyAgICBDT05URVhUX0NPTk5F
Q1RJT05fUkVMRUFTRV9MT0coIn5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOiIpOworICAgIGlmIChtX3NlcnZlciAmJiBtX3NlcnZlci0+Y29udGV4dENvbm5lY3Rpb25G
b3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbigpKSA9PSB0aGlzKQorICAgICAg
ICBtX3NlcnZlci0+cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oKnRoaXMpOworfQorCitXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllciBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjp3ZWJQcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29ubmVj
dGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpOworfQorCitJUEM6OkNvbm5lY3Rpb24mIFdlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmlwY0Nvbm5lY3Rpb24oKSBjb25z
dAoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpOworfQorCitJUEM6OkNv
bm5lY3Rpb24qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3Nh
Z2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gJmlwY0Nvbm5lY3Rpb24o
KTsKK30KKwordWludDY0X3QgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAoreworICAgIHJldHVybiAwOwor
fQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5l
Y3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFT
RV9MT0coImNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkOiIpOworICAgIG1fY29ubmVjdGlvbi5z
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOwor
fQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnBvc3RF
eGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNo
YXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7Cisg
ICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJwb3N0RXhjZXB0aW9uVG9Xb3JrZXJP
YmplY3Q6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVu
dGlmaWVyLnRvVUludDY0KCkpOworICAgIGlmIChtX3NlcnZlcikKKyAgICAgICAgbV9zZXJ2ZXIt
PnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBlcnJv
ck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMKTsKK30KKwordm9p
ZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpsYXVuY2hTaGFyZWRX
b3JrZXIoV2ViU2hhcmVkV29ya2VyJiBzaGFyZWRXb3JrZXIpCit7CisgICAgQ09OVEVYVF9DT05O
RUNUSU9OX1JFTEVBU0VfTE9HKCJsYXVuY2hTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50
aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXIuaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwor
ICAgIHNoYXJlZFdvcmtlci5tYXJrQXNSdW5uaW5nKCk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpMYXVuY2hTaGFyZWRXb3JrZXIg
eyBzaGFyZWRXb3JrZXIub3JpZ2luKCksIHNoYXJlZFdvcmtlci5pZGVudGlmaWVyKCksIHNoYXJl
ZFdvcmtlci51cmwoKSwgc2hhcmVkV29ya2VyLndvcmtlck9wdGlvbnMoKSwgc2hhcmVkV29ya2Vy
LmZldGNoUmVzdWx0KCkgfSk7CisgICAgZm9yIChhdXRvJiBwb3J0IDogc2hhcmVkV29ya2VyLnNo
YXJlZFdvcmtlck9iamVjdHMoKS52YWx1ZXMoKSkKKyAgICAgICAgcG9zdENvbm5lY3RFdmVudChz
aGFyZWRXb3JrZXIsIHBvcnQpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OnBvc3RDb25uZWN0RXZlbnQoY29uc3QgV2ViU2hhcmVkV29ya2VyJiBz
aGFyZWRXb3JrZXIsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmIHBvcnQp
Cit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJwb3N0Q29ubmVjdEV2ZW50
OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VyLmlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OlBvc3RDb25uZWN0RXZlbnQgeyBzaGFyZWRXb3JrZXIuaWRl
bnRpZmllcigpLCBwb3J0LCBzaGFyZWRXb3JrZXIub3JpZ2luKCkuY2xpZW50T3JpZ2luLnRvU3Ry
aW5nKCkgfSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6dGVybWluYXRlU2hhcmVkV29ya2VyKGNvbnN0IFdlYlNoYXJlZFdvcmtlciYgc2hhcmVk
V29ya2VyKQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygidGVybWluYXRl
U2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29y
a2VyLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlRlcm1pbmF0ZVNoYXJlZFdvcmtlciB7
IHNoYXJlZFdvcmtlci5pZGVudGlmaWVyKCkgfSk7Cit9CisKKyN1bmRlZiBDT05URVhUX0NPTk5F
Q1RJT05fUkVMRUFTRV9MT0cKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDZhZWEzMTlhYTNlODBlNjcwZGVkYmMwYzhhYmQwZjJmNmI1Y2EyNAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2Vy
L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDgw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5
SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1RyYW5zZmVycmVkTWVzc2FnZVBvcnQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgUmVnaXN0cmFibGVEb21haW47CitjbGFzcyBTY3JpcHRCdWZmZXI7CitzdHJ1Y3QgQ2xpZW50
T3JpZ2luOworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0Oworc3RydWN0IFdvcmtlck9wdGlvbnM7
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzczsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlcjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNl
cnZlcjsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBm
aW5hbCA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2ViU2hhcmVkV29y
a2VyU2VydmVyJik7CisgICAgfldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24oKTsKKworICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlm
aWVyKCkgY29uc3Q7CisgICAgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lz
dHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQorICAg
IElQQzo6Q29ubmVjdGlvbiYgaXBjQ29ubmVjdGlvbigpIGNvbnN0OworCisgICAgdm9pZCBsYXVu
Y2hTaGFyZWRXb3JrZXIoV2ViU2hhcmVkV29ya2VyJik7CisgICAgdm9pZCBwb3N0Q29ubmVjdEV2
ZW50KGNvbnN0IFdlYlNoYXJlZFdvcmtlciYsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVz
c2FnZVBvcnQmKTsKKyAgICB2b2lkIHRlcm1pbmF0ZVNoYXJlZFdvcmtlcihjb25zdCBXZWJTaGFy
ZWRXb3JrZXImKTsKKworICAgIHZvaWQgY29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKTsKKwor
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
JikgZmluYWw7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAgIHZvaWQgcG9z
dEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCisgICAgLy8gSVBDOjpNZXNzYWdlU2Vu
ZGVyLgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25z
dCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0
IGZpbmFsOworCisgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fY29ubmVjdGlv
bjsKKyAgICBXZWFrUHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlcj4gbV9zZXJ2ZXI7CisgICAgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWU0N2MxMjJjYmFjODczYzIyYjZkYTNiYzFlYTRkYTA2OGUzNTkyYQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCAr
MSwyNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAor
IyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdl
cyAtPiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIE5vdFJlZkNvdW50
ZWQgeworICAgIFBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFN0cmluZyBlcnJvck1lc3NhZ2Us
IGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTdHJpbmcgc291cmNlVVJMKQorfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCAxYzQyZDA0MGMxYTkwYjBhYWRkMTRlOGIzMzVl
ZjhkZGJiY2FmOWQ2Li5kZTMyZjgxNzE3MTU2NDdkNTM2MTA2MjZhNDc5MTkwNDAwN2RlYjQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaApAQCAtOTcsNiArOTcsNyBAQCBleHRlcm4gIkMiIHsK
ICAgICBNKFNlcnZpY2VXb3JrZXIpIFwKICAgICBNKFNlc3Npb25TdGF0ZSkgXAogICAgIE0oU2hh
cmVkRGlzcGxheUxpc3RzKSBcCisgICAgTShTaGFyZWRXb3JrZXIpIFwKICAgICBNKFN0b3JhZ2Up
IFwKICAgICBNKFN0b3JhZ2VBUEkpIFwKICAgICBNKFRleHRJbnB1dCkgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggN2ViZmE1MTZiNTAzMzZkMzY4N2Y3ZWNk
ZDE3ZThlN2ViZDFjZDlkNy4uNGM4Y2FkMDQ2NDcxNmY3MzMyYWFiNWM3OThiNmMxYWE1NWJiNzhj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0zMDMsMTAg
KzMwMywxMyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgog
ICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllcicsCiAgICAg
ICAgICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcicsCiAgICAg
ICAgICdXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoJywKKyAgICAgICAgJ1dlYkNvcmU6OlNoYXJl
ZFdvcmtlcklkZW50aWZpZXInLAorICAgICAgICAnV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTbGVlcERpc2FibGVySWRlbnRpZmllcics
CiAgICAgICAgICdXZWJDb3JlOjpTb3VyY2VCdWZmZXJBcHBlbmRNb2RlJywKICAgICAgICAgJ1dl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXInLAogICAg
ICAgICAnV2ViQ29yZTo6U3RvcmFnZVR5cGUnLAorICAgICAgICAnV2ViQ29yZTo6VHJhbnNmZXJy
ZWRNZXNzYWdlUG9ydCcsCiAgICAgICAgICdXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0SWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpXZWJMb2NrSWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJDb3JlOjpXZWJTb2NrZXRJZGVudGlmaWVyJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDU3ZWYzYjE0ZWFm
MmMxMDkyMDk4ZWU5NDMyZjUwOGM2MTFlNThlMzUuLmUzMTM5MTA1OWNiM2NiMjAwYTQ4MzcxOTlh
NDlkMzIxOWM4NDQ3M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysr
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMTQxLDYgKzE0MSwxMSBAQCBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuY3BwIEBuby11bmlmeQogTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIEBuby11
bmlmeQogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uY3BwIEBuby11bmlmeQogCitOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyLmNwcAorTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdv
cmtlclNlcnZlci5jcHAKK05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcAorTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisKIE5ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS5jcHAKQEAgLTc4Myw4ICs3ODgsOSBAQCBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCiBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dPcmlnaW5UYWJsZS5jcHAKIFdlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAKLVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRX
b3JrZXJQcm92aWRlci5jcHAKK1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKK1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3Jr
ZXJQcm92aWRlci5jcHAKIAogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIuY3BwCiAKQEAgLTg4NywzICs4OTMsNyBAQCBSZW1vdGVXZWJMb2NrUmVnaXN0cnlN
ZXNzYWdlUmVjZWl2ZXIuY3BwCiBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrTWVzc2FnZVJlY2Vp
dmVyLmNwcAogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5TWVzc2FnZVJlY2VpdmVyLmNwcAog
V2ViTG9ja1JlZ2lzdHJ5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBh
Njc4MzY3YTc3NWE0OWJhODFiMjQ4OGNmMzFlYWI5ZGNjY2NjOTIxLi4zMzAyMGJkNWMzY2Q5NDE3
NzU2MTU3OWFjMjBmYzM4ZjljNjkyNzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTUyOSw3ICs1Mjks
NyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVdlYlByb2Nlc3MoV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvYwogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0
ZXJtaW5hdGVVbnJlc3BvbnNpdmVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQogewogICAgIGlmIChSZWZQdHIgcHJvY2Vz
cyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIocHJvY2Vzc0lkZW50aWZp
ZXIpKSB7Ci0gICAgICAgIHByb2Nlc3MtPmRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgICAg
ICBwcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNl
cnZpY2VXb3JrZXIpOwogICAgICAgICBwcm9jZXNzLT5yZXF1ZXN0VGVybWluYXRpb24oUHJvY2Vz
c1Rlcm1pbmF0aW9uUmVhc29uOjpFeGNlZWRlZENQVUxpbWl0KTsKICAgICB9CiB9CkBAIC0xNDE1
LDE2ICsxNDE1LDIxIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRGVzdHJveVdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50CiB9CiAjZW5kaWYKIAordm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3Ry
YWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFi
bGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXVEZNb3Zl
KHJlZ2lzdHJhYmxlRG9tYWluKSwgc2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7Cit9CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiB2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25h
bDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVu
dGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNo
U2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcygqdGhpcywgV1RG
TW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgc2Vz
c2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgV2ViUHJvY2Vzc1Bvb2w6
OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
V1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwg
c2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6c2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVk
ZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBpZiAoYXV0
byogcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIoaWRlbnRp
ZmllcikpCi0gICAgICAgIHByb2Nlc3MtPmRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgICAg
ICBwcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNl
cnZpY2VXb3JrZXIpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJv
Y2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzSWRlbnRpZmllcikKQEAgLTE0NjAsNiArMTQ2NSwxMiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQ
cm9jZXNzSQogfQogI2VuZGlmCiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciBpZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvKiBwcm9jZXNzID0gV2ViUHJvY2Vzc1By
b3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihpZGVudGlmaWVyKSkKKyAgICAgICAgcHJvY2Vzcy0+
ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIp
OworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdp
biwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qg
c3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBxdW90YSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUkVMRUFTRV9MT0coU3Rv
cmFnZSwgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VTcGFjZSIsIHRo
aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaAppbmRleCBhNGUzNjQ1ZWJhYWUzMzZkMTgwYjU0MTRiYWZhYTM1ZDgzZjkx
OGM0Li42ODQxYTM0ZmUwOWQxMmJhOTNkNGVmOGM4MGU0NTMzYTU1ZmQ2NWM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aApAQCAtMzM0LDYgKzMzNCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFNlcnZpY2VXb3Jr
ZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNl
V29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIHZvaWQgZW5kU2VydmljZVdvcmtlckJhY2tn
cm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzSWRlbnRpZmllcik7CiAjZW5kaWYKKyAgICB2b2lkIHNoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOworICAg
IHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCB0ZXJtaW5hdGVXZWJQcm9jZXNzKFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmlu
CmluZGV4IDEyZDA2Y2ViZDYyYWYxNzUwZTc4ODU1OWMxM2ExYjM5ODNmZGQyYmEuLjE1NzU3ZWQ5
YTI1MmIwOWRjZDExYmI1ZTZiOWM4YTEwZDA1MzRjOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVz
c2FnZXMuaW4KQEAgLTYwLDYgKzYwLDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94
eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nl
c3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVu
dGlmaWVyKQogICAgIEVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpCiAjZW5k
aWYKKyAgICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4sIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKKyAgICBTaGFyZWRXb3JrZXJDb250ZXh0
Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiAKICAgICBTZXRXZWJQcm9jZXNzSGFzVXBsb2FkcyhXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciBwcm9jZXNzSUQsIGJvb2wgaGFzVXBsb2FkKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBiYjQxYzExMWEzMzU5ZTBhMjMzZjM0NGQyZjlkZTZk
MDFjMjhhNTcwLi5lNDFmZDg3ODAwOTA4NjEyOWY3MDQzMTBjMzIyYmRlZWI2YzZkMDcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM2OTQsMTEgKzM2OTQs
OSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlckFnZW50KFN0cmluZyYmIHVzZXJBZ2VudCkK
ICAgICAgICAgcmV0dXJuOwogICAgIG1fdXNlckFnZW50ID0gV1RGTW92ZSh1c2VyQWdlbnQpOwog
Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIC8vIFdlIHVwZGF0ZSB0aGUgc2Vydmlj
ZSB3b3JrZXIgdGhlcmUgYXQgdGhlIG1vbWVudCB0byBiZSBzdXJlIHdlIHVzZSB2YWx1ZXMgdXNl
ZCBieSBhY3R1YWwgd2ViIHBhZ2VzLgogICAgIC8vIEZJWE1FOiBSZWZhY3RvciB0aGlzIHdoZW4g
d2UgaGF2ZSBhIGJldHRlciBVc2VyLUFnZW50IHN0b3J5LgotICAgIHByb2Nlc3MoKS5wcm9jZXNz
UG9vbCgpLnVwZGF0ZVNlcnZpY2VXb3JrZXJVc2VyQWdlbnQobV91c2VyQWdlbnQpOwotI2VuZGlm
CisgICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCkudXBkYXRlV29ya2VyVXNlckFnZW50KG1fdXNl
ckFnZW50KTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGFmYzIz
ZWU1M2YxMjg0MjE5M2QyZWFlZjIwZjI1OTYyZWVkNzNmYTIuLjRiMTliMGQxZDNjMTU0Y2IyZTZm
MzAyMzZiMTM0ZTA1OThjYTI0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKQEAgLTUyOSw3ICs1MjksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRX
ZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Bybwog
Ym9vbCBXZWJQcm9jZXNzUG9vbDo6c191c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzID0g
ZmFsc2U7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3NQb29s
Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KE5ldHdvcmtQcm9jZXNzUHJveHkmIHByb3h5LCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJh
YmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
PiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQ
cm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9w
dGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8qIHdlYnNpdGVEYXRhU3Rv
cmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChzZXNz
aW9uSUQpOwogICAgIGlmICghd2Vic2l0ZURhdGFTdG9yZSkKQEAgLTU0Niw3ICs1NDYsNyBAQCB2
b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzKE5ldAogICAgIGlmIChzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZp
ZXIpIHsKICAgICAgICAgLy8gVGhpcyBpcyBhIHNlcnZpY2Ugd29ya2VyIGZvciBhIHNlcnZpY2Ug
d29ya2VyIHBhZ2Ugc28gd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgdXNlIHVzZSB0aGUgcGFnZSdz
IFdlYlByb2Nlc3MgZm9yIHRoZSBzZXJ2aWNlIHdvcmtlci4KICAgICAgICAgaWYgKChzZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmll
cihzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXItPnByb2Nlc3NJZGVudGlmaWVyKCkpKSkgewot
ICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlU2VydmljZVdvcmtl
cnMocHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2aWNl
V29ya2VycygpKTsKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJs
ZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBwcm9j
ZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CiAg
ICAgICAgICAgICBpZiAoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNo
ZSgpKSB7CiAgICAgICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLnJl
bW92ZVByb2Nlc3MoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NDYWNoZTo6
U2hvdWxkU2h1dERvd25Qcm9jZXNzOjpObyk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFzZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpOwpAQCAtNTY0LDcgKzU2
NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0CiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBwcm9jZXNzLnB0cigp
OwotICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlU2VydmljZVdv
cmtlcnMocHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2
aWNlV29ya2VycygpKTsKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVu
YWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBw
cm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7
CiAKICAgICAgICAgICAgIGlmIChzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vz
c0NhY2hlKCkpIHsKICAgICAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hl
KCkucmVtb3ZlUHJvY2Vzcygqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0Nh
Y2hlOjpTaG91bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKE5ldAogICAgIH0KIAogICAgIGlmICghc2VydmljZVdvcmtlclByb2Nl
c3NQcm94eSkgewotICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94
eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMoKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFp
biAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIGF1
dG8gbmV3UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdl
YlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgKnByb2Nlc3NQb29sLCBS
ZWdpc3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9y
ZSk7CiAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBuZXdQcm9jZXNzUHJveHku
cHRyKCk7CiAKICAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElDKFNlcnZp
Y2VXb3JrZXIsICJlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzIGNyZWF0aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nlcz0l
cCwgUElEPSVkKSIsIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOwpAQCAtNTg2LDIwICs1ODYsNzAgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhOZXQKICAgICAgICAgcHJvY2Vzc1Bvb2wtPm1fcHJvY2Vzc2VzLmFw
cGVuZChXVEZNb3ZlKG5ld1Byb2Nlc3NQcm94eSkpOwogICAgIH0KIAotICAgIEFTU0VSVCghc2Vy
dmljZVdvcmtlclByb2Nlc3NlcygpLmNvbnRhaW5zKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
KSk7Ci0gICAgc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2VydmljZVdvcmtlclByb2Nl
c3NQcm94eSk7CisgICAgd29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5KTsKIAotICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZp
Y2VXb3JrZXJDb250ZXh0KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA/
IHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vz
c1Bvb2wtPm1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3Ry
YWJsZURvbWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7Ci0gICAgaWYgKCFwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyVXNlckFn
ZW50LmlzTnVsbCgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRTZXJ2
aWNlV29ya2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQp
OworICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZpY2VXb3JrZXJD
b250ZXh0KHByb2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bvb2wtPm1f
d29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3Jv
dXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3Jr
ZXJQYWdlSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmICgh
cHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQorICAgICAgICBzZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRXb3JrZXJVc2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fd29y
a2VyVXNlckFnZW50KTsKIH0KKyNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVG
cm9tU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCit2b2lk
IFdlYlByb2Nlc3NQb29sOjpyZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94
eSYgcHJvY2VzcykKIHsKLSAgICBBU1NFUlQoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmNvbnRh
aW5zKHByb2Nlc3MpKTsKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkucmVtb3ZlKHByb2Nl
c3MpOworICAgIEFTU0VSVCh3b3JrZXJQcm9jZXNzZXMoKS5jb250YWlucyhwcm9jZXNzKSk7Cisg
ICAgd29ya2VyUHJvY2Vzc2VzKCkucmVtb3ZlKHByb2Nlc3MpOworfQorCit2b2lkIFdlYlByb2Nl
c3NQb29sOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRh
U3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Npb25JRCk7CisgICAgaWYg
KCF3ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOworICAgIGlmICghcHJvY2Vzc1Bvb2xz
KCkuc2l6ZSgpKQorICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPFdlYlByb2Nlc3NQ
b29sPj4gc2hhcmVkV29ya2VyUHJvY2Vzc1Bvb2woV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCkuZ2V0KCkpKTsKKworICAgIC8vIEFy
Yml0cmFyaWx5IGNob29zZSB0aGUgZmlyc3QgcHJvY2VzcyBwb29sIHRvIGhvc3QgdGhlIHNoYXJl
ZCB3b3JrZXIgcHJvY2Vzcy4KKyAgICBhdXRvKiBwcm9jZXNzUG9vbCA9IHByb2Nlc3NQb29scygp
WzBdOworICAgIEFTU0VSVChwcm9jZXNzUG9vbCk7CisKKyAgICBXZWJQcm9jZXNzUHJveHkqIHNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eSB7IG51bGxwdHIgfTsKKworICAgIGZvciAoYXV0byYgcHJv
Y2VzcyA6IHByb2Nlc3NQb29sLT5tX3Byb2Nlc3NlcykgeworICAgICAgICBpZiAocHJvY2Vzcy5w
dHIoKSA9PSBwcm9jZXNzUG9vbC0+bV9wcmV3YXJtZWRQcm9jZXNzLmdldCgpIHx8IHByb2Nlc3Mt
PmlzRHVtbXlQcm9jZXNzUHJveHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBp
ZiAoJnByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlKQorICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghcHJvY2Vzcy0+aXNNYXRjaGluZ1JlZ2lz
dHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSA9IHByb2Nlc3MucHRyKCk7CisgICAg
ICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlV29ya2VycyhXZWJQcm9jZXNzUHJv
eHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOworCisgICAgICAgIGlmIChzaGFyZWRXb3Jr
ZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSkgeworICAgICAgICAgICAgcHJvY2Vz
c1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nlc3MoKnNoYXJlZFdvcmtlclByb2Nl
c3NQcm94eSwgV2ViUHJvY2Vzc0NhY2hlOjpTaG91bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKKyAg
ICAgICAgICAgIEFTU0VSVCghc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0Nh
Y2hlKCkpOworICAgICAgICB9CisKKyAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0df
U1RBVElDKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2VzcyByZXVzaW5nIGFuIGV4aXN0aW5nIHdlYiBwcm9jZXNzIChwcm9j
ZXNzPSVwLCBQSUQ9JWQpIiwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LCBzaGFyZWRXb3JrZXJQ
cm9jZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICBicmVhazsKKyAgICB9
CisKKyAgICBpZiAoIXNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSkgeworICAgICAgICBhdXRvIG5l
d1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yV29ya2VycyhXZWJQcm9j
ZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgKnByb2Nlc3NQb29sLCBSZWdpc3Ry
YWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7Cisg
ICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSA9IG5ld1Byb2Nlc3NQcm94eS5wdHIoKTsK
KworICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoU2hhcmVkV29ya2Vy
LCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
IGNyZWF0aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nlc3M9JXAsIFBJRD0l
ZCkiLCBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHksIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+
cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmluaXRpYWxpemVO
ZXdXZWJQcm9jZXNzKG5ld1Byb2Nlc3NQcm94eSwgd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAg
IHByb2Nlc3NQb29sLT5tX3Byb2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdQcm9jZXNzUHJveHkp
KTsKKyAgICB9CisKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNoYXJlZFdvcmtlclByb2Nl
c3NQcm94eSk7CisKKyAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNoYXJl
ZFdvcmtlckNvbnRleHQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNz
UG9vbC0+bV93b3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVs
dFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJsZURvbWFpbiwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fd29ya2Vy
VXNlckFnZW50LmlzTnVsbCgpKQorICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPnNl
dFdvcmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV93b3JrZXJVc2VyQWdlbnQpOwogfQotI2Vu
ZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNo
YW5nZWQoKQogewpAQCAtMTAwMywxMCArMTA1Myw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRp
c2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIAogICAgIG1fYmFja0Zv
cndhcmRDYWNoZS0+cmVtb3ZlRW50cmllc0ZvclByb2Nlc3MocHJvY2Vzcyk7CiAKLSNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtl
cnMoKSkKLSAgICAgICAgcmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7
Ci0jZW5kaWYKKyAgICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdXb3JrZXJzKCkpCisgICAgICAgIHJl
bW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7CiAKICAgICBzdGF0aWNfY2FzdDxXZWJD
b250ZXh0U3VwcGxlbWVudCo+KHN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+
KCkpLT5wcm9jZXNzRGlkQ2xvc2UoJnByb2Nlc3MpOwogCkBAIC0xMDY3LDEyICsxMTE1LDEyIEBA
IFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFi
bGVEb21haW4oV2Vic2l0ZURhdGFTdG9yCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
Ci1Vc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIFdlYlByb2Nlc3NQb29sOjp1c2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKQorVXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllciBXZWJQcm9jZXNzUG9vbDo6dXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllckZvcldvcmtlcnMoKQogewotICAgIGlmICghbV91c2VyQ29udGVudENvbnRyb2xs
ZXJGb3JTZXJ2aWNlV29ya2VyKQotICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclNl
cnZpY2VXb3JrZXIgPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKCk7Cisg
ICAgaWYgKCFtX3VzZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtlcnMpCisgICAgICAgIG1fdXNl
ckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2VycyA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjpjcmVhdGUoKTsKIAotICAgIHJldHVybiBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclNl
cnZpY2VXb3JrZXItPmlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gbV91c2VyQ29udGVudENvbnRy
b2xsZXJGb3JXb3JrZXJzLT5pZGVudGlmaWVyKCk7CiB9CiAjZW5kaWYKIApAQCAtMTExOSwxNSAr
MTE2NywxMyBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFn
ZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogCiAgICAgYXV0byBwYWdlID0gcHJv
Y2Vzcy0+Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9u
KSk7CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKCFtX3NlcnZpY2VXb3Jr
ZXJQcmVmZXJlbmNlcykgewotICAgICAgICBtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA9IHBh
Z2UtPnByZWZlcmVuY2VzU3RvcmUoKTsKLSAgICAgICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2Vy
UHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSkKLSAgICAgICAgICAgIHNlcnZpY2VX
b3JrZXJQcm9jZXNzLnVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKCptX3NlcnZp
Y2VXb3JrZXJQcmVmZXJlbmNlcyk7CisgICAgaWYgKCFtX3dvcmtlclByZWZlcmVuY2VzKSB7Cisg
ICAgICAgIG1fd29ya2VyUHJlZmVyZW5jZXMgPSBwYWdlLT5wcmVmZXJlbmNlc1N0b3JlKCk7Cisg
ICAgICAgIGZvciAoYXV0byYgd29ya2VyUHJvY2VzcyA6IHdvcmtlclByb2Nlc3NlcygpKQorICAg
ICAgICAgICAgd29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKCptX3dv
cmtlclByZWZlcmVuY2VzKTsKICAgICB9CiAgICAgaWYgKHVzZXJDb250ZW50Q29udHJvbGxlcikK
LSAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyID0gdXNlckNv
bnRlbnRDb250cm9sbGVyOwotI2VuZGlmCisgICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVy
Rm9yV29ya2VycyA9IHVzZXJDb250ZW50Q29udHJvbGxlcjsKIAogICAgIGJvb2wgZW5hYmxlUHJv
Y2Vzc1N3YXBPbkNyb3NzU2l0ZU5hdmlnYXRpb24gPSBwYWdlLT5wcmVmZXJlbmNlcygpLnByb2Nl
c3NTd2FwT25Dcm9zc1NpdGVOYXZpZ2F0aW9uRW5hYmxlZCgpOwogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCkBAIC0xMTUwLDE2ICsxMTk2LDE0IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nl
c3NQb29sOjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAg
ICAgcmV0dXJuIHBhZ2U7CiB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdl
YlByb2Nlc3NQb29sOjp1cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYg
dXNlckFnZW50KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlV29ya2VyVXNlckFnZW50KGNv
bnN0IFN0cmluZyYgdXNlckFnZW50KQogewotICAgIGlmIChtX3NlcnZpY2VXb3JrZXJVc2VyQWdl
bnQgPT0gdXNlckFnZW50KQorICAgIGlmIChtX3dvcmtlclVzZXJBZ2VudCA9PSB1c2VyQWdlbnQp
CiAgICAgICAgIHJldHVybjsKLSAgICBtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQgPSB1c2VyQWdl
bnQ7Ci0gICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMoKSkKLSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3Muc2V0U2VydmljZVdvcmtl
clVzZXJBZ2VudChtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQpOworICAgIG1fd29ya2VyVXNlckFn
ZW50ID0gdXNlckFnZW50OworICAgIGZvciAoYXV0byYgd29ya2VyUHJvY2VzcyA6IHdvcmtlclBy
b2Nlc3NlcygpKQorICAgICAgICB3b3JrZXJQcm9jZXNzLnNldFdvcmtlclVzZXJBZ2VudChtX3dv
cmtlclVzZXJBZ2VudCk7CiB9Ci0jZW5kaWYKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUJl
Z2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBX
ZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCiB7CkBAIC0xNTM4LDggKzE1ODIsMTMgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlU2VydmljZVdvcmtlcnMoKQogewogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07Ci0gICAg
d2hpbGUgKHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb21wdXRlU2l6ZSgpKQotICAgICAgICBz
ZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkuYmVnaW4oKS0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7
CisgICAgVmVjdG9yPFJlZjxXZWJQcm9jZXNzUHJveHk+PiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
OworICAgIHdvcmtlclByb2Nlc3NlcygpLmZvckVhY2goWyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAg
ICAgICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKKyAgICAgICAgICAg
IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYXBwZW5kKHByb2Nlc3MpOworICAgIH0pOworICAgIGZv
ciAoYXV0byYgc2VydmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKQor
ICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1By
b3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgogfQogCkBAIC0xNzY3LDEz
ICsxODE2LDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcG9ydFdlYkNvbnRlbnRDUFVUaW1l
KFNlY29uZHMgY3B1VGltZSwgdWludDY0X3QgYWN0aXZpdHlTCiAjZW5kaWYKIH0KIAotI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKLVdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIFdlYlBy
b2Nlc3NQb29sOjpzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkKK1dlYWtIYXNoU2V0PFdlYlByb2Nl
c3NQcm94eT4mIFdlYlByb2Nlc3NQb29sOjp3b3JrZXJQcm9jZXNzZXMoKQogewogICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+PiBwcm9jZXNzZXM7
CiAgICAgcmV0dXJuIHByb2Nlc3NlczsKIH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29s
Ojp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpCiB7CkBAIC0xNzg1LDIwICsxODMyLDI1IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkKICAgICBpZiAoYXV0
byogZ3B1UHJvY2VzcyA9IEdQVVByb2Nlc3NQcm94eTo6c2luZ2xldG9uSWZDcmVhdGVkKCkpCiAg
ICAgICAgIGdwdVByb2Nlc3MtPnVwZGF0ZVByb2Nlc3NBc3NlcnRpb24oKTsKICNlbmRpZgotI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKKwogICAgIC8vIENoZWNrIG9uIG5leHQgcnVuIGxvb3Ag
c2luY2UgdGhlIHdlYiBwcm9jZXNzIHByb3h5IHRva2VucyBhcmUgcHJvYmFibHkgYmVpbmcgdXBk
YXRlZC4KICAgICBjYWxsT25NYWluUnVuTG9vcChbXSB7Ci0gICAgICAgIGZvciAoYXV0byYgc2Vy
dmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkpCi0gICAgICAgICAg
ICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy51cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlv
bigpOwotICAgIH0pOworICAgICAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFtdKGF1dG8m
IHdvcmtlclByb2Nlc3MpIHsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgICAgICAg
ICBpZiAod29ya2VyUHJvY2Vzcy5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQorICAgICAgICAg
ICAgICAgIHdvcmtlclByb2Nlc3MudXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXZWJQcm9j
ZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogI2VuZGlmCisgICAgICAgICAg
ICBpZiAod29ya2VyUHJvY2Vzcy5pc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkpCisgICAgICAgICAg
ICAgICAgd29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdlYlByb2Nl
c3NQcm94eTo6V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKTsKKyAgICAgICAgfSk7CisgICAgfSk7
CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6OmlzU2VydmljZVdvcmtlclBhZ2VJRChXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgaW5lZmZpY2llbnQuCi0gICAgcmV0dXJuIFdURjo6
YW55T2Yoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLCBbcGFnZUlEXShhdXRvJiBwcm9jZXNzKSB7
CisgICAgcmV0dXJuIFdURjo6YW55T2Yod29ya2VyUHJvY2Vzc2VzKCksIFtwYWdlSURdKGF1dG8m
IHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuIHByb2Nlc3MuaGFzU2VydmljZVdvcmtlclBhZ2VQ
cm94eShwYWdlSUQpOwogICAgIH0pOwogI2VuZGlmCkBAIC0yMTI0LDE2ICsyMTc2LDI2IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFVzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoYm9v
bCB1c2VTZXBhcmF0ZVNlcnZpY2VXCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCitz
aXplX3QgV2ViUHJvY2Vzc1Bvb2w6OnNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25zdAor
eworICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNo
KFsmXShhdXRvJiBwcm9jZXNzKSB7CisgICAgICAgIGlmIChwcm9jZXNzLmlzUnVubmluZ1NlcnZp
Y2VXb3JrZXJzKCkpCisgICAgICAgICAgICArK2NvdW50OworICAgIH0pOworICAgIHJldHVybiBj
b3VudDsKK30KKwogYm9vbCBXZWJQcm9jZXNzUG9vbDo6aGFzU2VydmljZVdvcmtlckZvcmVncm91
bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6OmFueU9mKHNl
cnZpY2VXb3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2VzcykgeworICAgIHJldHVybiBX
VEY6OmFueU9mKHdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAg
IHJldHVybiBwcm9jZXNzLmhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0
aW5nKCk7CiAgICAgfSk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6Omhhc1NlcnZpY2VXb3Jr
ZXJCYWNrZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RG
OjphbnlPZihzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKKyAg
ICByZXR1cm4gV1RGOjphbnlPZih3b3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2Vzcykg
ewogICAgICAgICByZXR1cm4gcHJvY2Vzcy5oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2
aXR5Rm9yVGVzdGluZygpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgKaW5kZXggZWI2NmQ4OTQ5MGRmZTAyOGIxMDEyNWU5M2ZmYmQxOThkMDI3Zjdj
ZS4uZTcwYjZmNDI5ZjdjYjcwNjk1NDk1MGY5MDBkMzc4MTNiZGFkZGJiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0zNzQsMTcgKzM3NCwyMCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0RpZFRlcm1pbmF0ZShOZXR3b3JrUHJvY2Vzc1By
b3h5JiwgTmV0d29ya1Byb2Nlc3NQcm94eTo6VGVybWluYXRpb25SZWFzb24pOwogCiAgICAgYm9v
bCBpc1NlcnZpY2VXb3JrZXJQYWdlSUQoV2ViUGFnZVByb3h5SWRlbnRpZmllcikgY29uc3Q7Cisg
ICAgdm9pZCByZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYpOworCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFNlcnZp
Y2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQ
cm94eSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRl
bnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0g
ICAgdm9pZCByZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkm
KTsKLSAgICBzaXplX3Qgc2VydmljZVdvcmtlclByb3hpZXNDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb21wdXRlU2l6ZSgpOyB9Ci0gICAgdm9pZCB1cGRh
dGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKLSAgICBV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXJGb3JTZXJ2aWNlV29ya2VycygpOworICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFNlcnZp
Y2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25J
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICBzaXplX3Qgc2VydmljZVdvcmtl
clByb3hpZXNDb3VudCgpIGNvbnN0OworICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKTsKICAgICBib29s
IGhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3Q7CiAg
ICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNv
bnN0OwogI2VuZGlmCiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyUHJvY2Vzc0NyYXNoZWQoV2ViUHJv
Y2Vzc1Byb3h5Jik7CiAKKyAgICB2b2lkIHVwZGF0ZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCk7CisgICAgc3RhdGljIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkgY29u
c3Q7CiAjZW5kaWYKQEAgLTYxOCwxMyArNjIxLDExIEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFw
PFBBTDo6U2Vzc2lvbklELCBXZWFrUHRyPFdlYlByb2Nlc3NQcm94eT4+IG1fZHVtbXlQcm9jZXNz
UHJveGllczsgLy8gTGlnaHR3ZWlnaHQgV2ViUHJvY2Vzc1Byb3h5IG9iamVjdHMgd2l0aG91dCBi
YWNraW5nIHByb2Nlc3MuCiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgc3RhdGlj
IFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKTsK
LSAgICBib29sIG1fd2FpdGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiB7IGZh
bHNlIH07Ci0gICAgU3RyaW5nIG1fc2VydmljZVdvcmtlclVzZXJBZ2VudDsKLSAgICBzdGQ6Om9w
dGlvbmFsPFdlYlByZWZlcmVuY2VzU3RvcmU+IG1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzOwot
ICAgIFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gbV91c2VyQ29udGVudENv
bnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyOwotI2VuZGlmCisgICAgc3RhdGljIFdlYWtIYXNoU2V0
PFdlYlByb2Nlc3NQcm94eT4mIHdvcmtlclByb2Nlc3NlcygpOworCisgICAgc3RkOjpvcHRpb25h
bDxXZWJQcmVmZXJlbmNlc1N0b3JlPiBtX3dvcmtlclByZWZlcmVuY2VzOworICAgIFJlZlB0cjxX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JX
b3JrZXJzOworICAgIFN0cmluZyBtX3dvcmtlclVzZXJBZ2VudDsKIAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKICAgICBSZWZQdHI8R1BVUHJvY2Vzc1Byb3h5PiBtX2dwdVByb2Nlc3M7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAwNTdkNDk5MjQx
OGEwMDQzZDg0YzU5ZDdiNmU1MmY5ZTAyNjU4YTcxLi5iNzQ2YTdkN2QyMTcwYzM5MjA1ZjMxZTUx
YWVkOGJiYzVlNmRlYjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1
ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKQEAgLTE4MiwxMSArMTgzLDExIEBAIFJlZjxX
ZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sJiBw
cm9jZXNzUG9vbCwgV2Vic2l0CiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1SZWY8
V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJz
KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3Ry
YWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSkKK1JlZjxXZWJQ
cm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yV29ya2VycyhXb3JrZXJUeXBl
IHdvcmtlclR5cGUsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21h
aW4mJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9y
ZSkKIHsKICAgICBhdXRvIHByb3h5ID0gYWRvcHRSZWYoKm5ldyBXZWJQcm9jZXNzUHJveHkocHJv
Y2Vzc1Bvb2wsICZ3ZWJzaXRlRGF0YVN0b3JlLCBJc1ByZXdhcm1lZDo6Tm8sIENyb3NzT3JpZ2lu
TW9kZTo6U2hhcmVkLCBDYXB0aXZlUG9ydGFsTW9kZTo6RGlzYWJsZWQpKTsKICAgICBwcm94eS0+
bV9yZWdpc3RyYWJsZURvbWFpbiA9IFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pOwotICAgIHBy
b3h5LT5lbmFibGVTZXJ2aWNlV29ya2Vycyhwcm9jZXNzUG9vbC51c2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKSk7CisgICAgcHJveHktPmVuYWJsZVdvcmtl
cnMod29ya2VyVHlwZSwgcHJvY2Vzc1Bvb2wudXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
ckZvcldvcmtlcnMoKSk7CiAgICAgcHJveHktPmNvbm5lY3QoKTsKICAgICByZXR1cm4gcHJveHk7
CiB9CkBAIC05OTUsMTAgKzk5NiwxMCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQmVjb21l
VW5yZXNwb25zaXZlKCkKICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogaXNSZXNwb25zaXZlQ2Fs
bGJhY2tzKQogICAgICAgICBjYWxsYmFjayhpc1dlYlByb2Nlc3NSZXNwb25zaXZlKTsKIAotICAg
IC8vIElmIHRoZSB3ZWIgcHJvY2VzcyBiZWNvbWVzIHVucmVzcG9uc2l2ZSBhbmQgb25seSBydW5z
IHNlcnZpY2Ugd29ya2Vycywga2lsbCBpdCBvdXJzZWx2ZXMgc2luY2UgdGhlcmUgYXJlIG5vIG5h
dGl2ZSBjbGllbnRzIHRvIGRvIGl0LgotICAgIGlmIChpc1J1bm5pbmdTZXJ2aWNlV29ya2Vycygp
ICYmIG1fcGFnZU1hcC5pc0VtcHR5KCkpIHsKLSAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVB
U0VfTE9HX0VSUk9SKFBlcmZvcm1hbmNlTG9nZ2luZywgImRpZEJlY29tZVVucmVzcG9uc2l2ZTog
VGVybWluYXRpbmcgc2VydmljZSB3b3JrZXItb25seSB3ZWIgcHJvY2VzcyBiZWNhdXNlIGl0IGlz
IHVucmVzcG9uc2l2ZSIpOwotICAgICAgICBkaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICAv
LyBJZiB0aGUgd2ViIHByb2Nlc3MgYmVjb21lcyB1bnJlc3BvbnNpdmUgYW5kIG9ubHkgcnVucyBz
ZXJ2aWNlL3NoYXJlZCB3b3JrZXJzLCBraWxsIGl0IG91cnNlbHZlcyBzaW5jZSB0aGVyZSBhcmUg
bm8gbmF0aXZlIGNsaWVudHMgdG8gZG8gaXQuCisgICAgaWYgKGlzUnVubmluZ1dvcmtlcnMoKSAm
JiBtX3BhZ2VNYXAuaXNFbXB0eSgpKSB7CisgICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNF
X0xPR19FUlJPUihQZXJmb3JtYW5jZUxvZ2dpbmcsICJkaWRCZWNvbWVVbnJlc3BvbnNpdmU6IFRl
cm1pbmF0aW5nIHdvcmtlci1vbmx5IHdlYiBwcm9jZXNzIGJlY2F1c2UgaXQgaXMgdW5yZXNwb25z
aXZlIik7CisgICAgICAgIGRpc2FibGVXb3JrZXJzKHsgV29ya2VyVHlwZTo6U2VydmljZVdvcmtl
ciwgV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyIH0pOwogICAgICAgICB0ZXJtaW5hdGUoKTsKICAg
ICB9CiB9CkBAIC0xNjk0LDggKzE2OTUsOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUoY29uc3QgVVJMJiB1cmwpCiAgICAgYXV0byBy
ZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsIH07CiAg
ICAgaWYgKG1fcmVnaXN0cmFibGVEb21haW4gJiYgKm1fcmVnaXN0cmFibGVEb21haW4gIT0gcmVn
aXN0cmFibGVEb21haW4pIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgICAgIGRp
c2FibGVTZXJ2aWNlV29ya2VycygpOworICAgICAgICBkaXNhYmxlV29ya2VycyhXb3JrZXJUeXBl
OjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgorCiAgICAgICAgIC8vIE51bGwgb3V0IHJlZ2lzdHJh
YmxlIGRvbWFpbiBzaW5jZSB0aGlzIHByb2Nlc3MgaGFzIG5vdyBiZWVuIHVzZWQgZm9yIHNldmVy
YWwgZG9tYWlucy4KICAgICAgICAgbV9yZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIHsgfTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTg3Miw1NCArMTg3NCw4NSBA
QCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQoY29u
c3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgcwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwog
ICAgIH0sIDApOwogfQorI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRTZXJ2aWNl
V29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQordm9pZCBXZWJQcm9jZXNz
UHJveHk6OnNldFdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKIHsKLSAg
ICBBU1NFUlQobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pOwotICAgIHNlbmQoTWVzc2FnZXM6
OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2VyQWdlbnQg
fSwgMCk7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIGlmIChtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbikKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OlNldFVzZXJBZ2VudCB7IHVzZXJBZ2VudCB9LCAwKTsKKyNlbmRpZgorICAg
IGlmIChtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlNldFVzZXJBZ2VudCB7IHVz
ZXJBZ2VudCB9LCAwKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVNlcnZpY2VX
b3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQor
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiB7Ci0gICAgQVNTRVJUKG1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDApOworI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpVcGRh
dGVQcmVmZXJlbmNlc1N0b3JlIHsgc3RvcmUgfSwgMCk7CisjZW5kaWYKKyAgICBpZiAobV9zaGFy
ZWRXb3JrZXJJbmZvcm1hdGlvbikKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpVcGRhdGVQcmVmZXJlbmNlc1N0b3JlIHsgc3Rv
cmUgfSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29ya2Vy
UHJvY2Vzc0Fzc2VydGlvbigpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlV29ya2VyUHJv
Y2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlIHdvcmtlclR5cGUpCiB7Ci0gICAgV0VCUFJPQ0VTU1BS
T1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlU2VydmljZVdvcmtlclBy
b2Nlc3NBc3NlcnRpb246Iik7Ci0gICAgQVNTRVJUKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9u
KTsKLSAgICBpZiAoIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQorICAgIGF1dG8mIHdvcmtl
ckluZm9ybWF0aW9uID0gd29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyBt
X3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIDogbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247Cisg
ICAgQVNTRVJUKHdvcmtlckluZm9ybWF0aW9uKTsKKyAgICBpZiAoIXdvcmtlckluZm9ybWF0aW9u
KQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIHNob3VsZFRha2VGb3JlZ3JvdW5kQWN0aXZp
dHkgPSBXVEY6OmFueU9mKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNz
ZXMsIFsmXShhdXRvJiBwcm9jZXNzKSB7CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9H
KFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbjogd29ya2Vy
VHlwZT0le3B1YmxpY31zIiwgd29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIg
PyAic2hhcmVkIiA6ICJzZXJ2aWNlIik7CisKKyAgICAvLyBGSVhNRTogQ2xpZW50cyBkbyBub3Qg
cHJvcGVybHkgZ2V0IHBvcHVsYXRlZCBpbiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIHNvIHdl
IGN1cnJlbnRseSB0YWtlIGFuIGFzc2VydGlvbiBubyBtYXR0ZXIgd2hhdC4KKyAgICBpZiAod29y
a2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpIHsKKyAgICAgICAgaWYgKCFQcm9j
ZXNzVGhyb3R0bGVyOjppc1ZhbGlkRm9yZWdyb3VuZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0aW9u
LT5hY3Rpdml0eSkpCisgICAgICAgICAgICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBt
X3Rocm90dGxlci5mb3JlZ3JvdW5kQWN0aXZpdHkoIldvcmtlciBmb3IgZm9yZWdyb3VuZCB2aWV3
KHMpIl9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGJvb2wgc2hvdWxkVGFrZUZv
cmVncm91bmRBY3Rpdml0eSA9IFdURjo6YW55T2Yod29ya2VySW5mb3JtYXRpb24tPmNsaWVudFBy
b2Nlc3NlcywgWyZdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuICZwcm9jZXNzICE9
IHRoaXMgJiYgISFwcm9jZXNzLm1fZm9yZWdyb3VuZFRva2VuOwogICAgIH0pOwogICAgIGlmIChz
aG91bGRUYWtlRm9yZWdyb3VuZEFjdGl2aXR5KSB7Ci0gICAgICAgIGlmICghUHJvY2Vzc1Rocm90
dGxlcjo6aXNWYWxpZEZvcmVncm91bmRBY3Rpdml0eShtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlv
bi0+YWN0aXZpdHkpKQotICAgICAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFj
dGl2aXR5ID0gbV90aHJvdHRsZXIuZm9yZWdyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBm
b3IgZm9yZWdyb3VuZCB2aWV3KHMpIl9zKTsKKyAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVy
Ojppc1ZhbGlkRm9yZWdyb3VuZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkp
CisgICAgICAgICAgICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5m
b3JlZ3JvdW5kQWN0aXZpdHkoIldvcmtlciBmb3IgZm9yZWdyb3VuZCB2aWV3KHMpIl9zKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGJvb2wgc2hvdWxkVGFrZUJhY2tncm91bmRBY3Rp
dml0eSA9IFdURjo6YW55T2YobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nl
c3NlcywgWyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICBib29sIHNob3VsZFRha2VCYWNrZ3JvdW5k
QWN0aXZpdHkgPSBXVEY6OmFueU9mKHdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMs
IFsmXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiAmcHJvY2VzcyAhPSB0aGlzICYm
ICEhcHJvY2Vzcy5tX2JhY2tncm91bmRUb2tlbjsKICAgICB9KTsKICAgICBpZiAoc2hvdWxkVGFr
ZUJhY2tncm91bmRBY3Rpdml0eSkgewotICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6Omlz
VmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2
aXR5KSkKLSAgICAgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9
IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tn
cm91bmQgdmlldyhzKSJfcyk7CisgICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxp
ZEJhY2tncm91bmRBY3Rpdml0eSh3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQorICAgICAg
ICAgICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuYmFja2dyb3Vu
ZEFjdGl2aXR5KCJXb3JrZXIgZm9yIGJhY2tncm91bmQgdmlldyhzKSJfcyk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBpZiAobV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nl
c3NpbmcpIHsKKyAgICBpZiAod29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2Vy
ICYmIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKSB7CiAgICAgICAgIFdF
QlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlNlcnZpY2UgV29y
a2VyIGZvciBiYWNrZ3JvdW5kIHByb2Nlc3NpbmciKTsKLSAgICAgICAgaWYgKCFQcm9jZXNzVGhy
b3R0bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5KG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uLT5hY3Rpdml0eSkpCi0gICAgICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+
YWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2Vy
IGZvciBiYWNrZ3JvdW5kIHByb2Nlc3NpbmciX3MpOworICAgICAgICBpZiAoIVByb2Nlc3NUaHJv
dHRsZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkod29ya2VySW5mb3JtYXRpb24tPmFjdGl2
aXR5KSkKKyAgICAgICAgICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0
bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tncm91bmQgcHJv
Y2Vzc2luZyJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBudWxscHRyOworICAgIHdvcmtlckluZm9ybWF0aW9u
LT5hY3Rpdml0eSA9IG51bGxwdHI7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxp
c2hTaGFyZWRXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBXRUJQUk9DRVNTUFJPWFlf
UkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dDog
U3RhcnRlZCIpOworICAgIG1hcmtQcm9jZXNzQXNSZWNlbnRseVVzZWQoKTsKKyAgICBzZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFNoYXJlZFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVsdFBh
Z2VHcm91cCgpLnBhZ2VHcm91cElEKCksIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24tPnJlbW90
ZVdvcmtlclBhZ2VQcm94eUlELCBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uLT5yZW1vdGVXb3Jr
ZXJQYWdlSUQsIHN0b3JlLCByZWdpc3RyYWJsZURvbWFpbiwgbV9zaGFyZWRXb3JrZXJJbmZvcm1h
dGlvbi0+aW5pdGlhbGl6YXRpb25EYXRhIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgeworICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICBXRUJQUk9DRVNT
UFJPWFlfUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29u
dGV4dDogRmluaXNoZWQiKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9LCAw
KTsKIH0KIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKwogdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBw
cm94eSkKIHsKICAgICBpZiAoIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQpAQCAtMTkyNyw3
ICsxOTYwLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNs
aWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKIAogICAgIFdFQlBST0NFU1NQUk9Y
WV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAicmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50
UHJvY2VzczogY2xpZW50UHJvY2Vzcz0lcCwgY2xpZW50UElEPSVkIiwgJnByb3h5LCBwcm94eS5w
cm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+Y2xp
ZW50UHJvY2Vzc2VzLmFkZChwcm94eSk7Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NB
c3NlcnRpb24oKTsKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6
OlNlcnZpY2VXb3JrZXIpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dW5yZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCkBAIC0xOTM3
LDcgKzE5NzAsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dW5yZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveAogCiAgICAgV0VCUFJPQ0VTU1BS
T1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJ1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNs
aWVudFByb2Nlc3M6IGNsaWVudFByb2Nlc3M9JXAsIGNsaWVudFBJRD0lZCIsICZwcm94eSwgcHJv
eHkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24t
PmNsaWVudFByb2Nlc3Nlcy5yZW1vdmUocHJveHkpOwotICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3Jr
ZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KIAogYm9vbCBXZWJQcm9jZXNzUHJveHk6Omhhc1Nl
cnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKQEAgLTE5NTcs
NyArMTk5MCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzdGFydFNlcnZpY2VXb3JrZXJCYWNr
Z3JvdW5kUHJvY2Vzc2luZygpCiAKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJv
Y2Vzc1N1c3BlbnNpb24sICJzdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyIp
OwogICAgIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nID0gdHJ1ZTsKLSAg
ICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOworICAgIHVwZGF0ZVdvcmtl
clByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAKIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjplbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoKQpA
QCAtMTk2NywyMyArMjAwMCwzOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5kU2VydmljZVdv
cmtlckJhY2tncm91bmRQcm9jZXNzaW5nKCkKIAogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNF
X0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgImVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vz
c2luZyIpOwogICAgIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nID0gZmFs
c2U7Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKKyAgICB1cGRh
dGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogfQog
I2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmRpc2FibGVTZXJ2aWNlV29ya2VycygpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlzYWJsZVdv
cmtlcnMoT3B0aW9uU2V0PFdvcmtlclR5cGU+IHdvcmtlclR5cGUpCiB7Ci0gICAgaWYgKCFtX3Nl
cnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKKyAgICBBU1NFUlQoIXdvcmtlclR5cGUuaXNFbXB0eSgp
KTsKKworICAgIGJvb2wgZGlkQ2hhbmdlID0gZmFsc2U7CisgICAgaWYgKHdvcmtlclR5cGUuY29u
dGFpbnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikgJiYgbV9zZXJ2aWNlV29ya2VySW5mb3Jt
YXRpb24pIHsKKyAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gPSB7IH07CisgICAg
ICAgIGRpZENoYW5nZSA9IHRydWU7CisgICAgfQorICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5z
KFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlcikgJiYgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbikg
eworICAgICAgICBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uID0geyB9OworICAgICAgICBkaWRD
aGFuZ2UgPSB0cnVlOworICAgIH0KKyAgICBpZiAoIWRpZENoYW5nZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJkaXNh
YmxlU2VydmljZVdvcmtlcnM6Iik7Ci0gICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gPSB7
IH07CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJkaXNhYmxlV29y
a2VyczogRGlzYWJsaW5nIHdvcmtlcnMgKFNoYXJlZFdvcmtlcnM9JWQsIFNlcnZpY2VXb3JrZXJz
PSVkKSIsIHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSwgd29y
a2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSk7CisKICAgICB1cGRh
dGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwogCisgICAgaWYgKCFpc1J1bm5pbmdX
b3JrZXJzKCkpCisgICAgICAgIHByb2Nlc3NQb29sKCkucmVtb3ZlRnJvbVdvcmtlclByb2Nlc3Nl
cygqdGhpcyk7CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgcHJvY2Vzc1Bvb2wo
KS5yZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcygqdGhpcyk7Ci0gICAgc2VuZChNZXNz
YWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNsb3NlIHsgfSwgMCk7CisgICAg
aWYgKHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikpCisgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9zZSB7
IH0sIDApOwogI2VuZGlmCisgICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6
U2hhcmVkV29ya2VyKSkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9zZSB7IH0sIDApOwogCiAgICAgbWF5YmVTaHV0RG93
bigpOwogfQpAQCAtMjAwNCwxMSArMjA1MywxMyBAQCBzdGF0aWMgVmVjdG9yPHN0ZDo6cGFpcjxX
ZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEsIFVSTD4+IGNvbnRlbnRSdWxlTGlzdHNGcgog
fQogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVTZXJ2aWNlV29ya2Vycyhj
b25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJiB1c2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVdvcmtlcnMoV29ya2Vy
VHlwZSB3b3JrZXJUeXBlLCBjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJiB1
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKQogewotICAgIEFTU0VSVCghbV9zZXJ2aWNl
V29ya2VySW5mb3JtYXRpb24pOwotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2
aWNlV29ya2VyLCAiZW5hYmxlU2VydmljZVdvcmtlcnM6Iik7Ci0gICAgbV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb24gPSBSZW1vdGVXb3JrZXJJbmZvcm1hdGlvbiB7CisgICAgV0VCUFJPQ0VTU1BS
T1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJlbmFibGVXb3JrZXJzOiB3b3JrZXJUeXBl
PSV1Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHdvcmtlclR5cGUpKTsKKyAgICBhdXRvJiB3b3Jr
ZXJJbmZvcm1hdGlvbiA9IHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8g
bV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA6IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOwor
ICAgIEFTU0VSVCghd29ya2VySW5mb3JtYXRpb24pOworCisgICAgd29ya2VySW5mb3JtYXRpb24g
PSBSZW1vdGVXb3JrZXJJbmZvcm1hdGlvbiB7CiAgICAgICAgIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXI6OmdlbmVyYXRlKCksCiAgICAgICAgIFBhZ2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLAogICAg
ICAgICBSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgewpAQCAtMjAyMSw5ICsyMDcyLDgg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVNlcnZpY2VXb3JrZXJzKGNvbnN0IFVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXIKICAgICAgICAgeyB9CiAgICAgfTsKICAgICB1cGRh
dGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwotI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOwotI2VuZGlm
CisKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKHdvcmtlclR5cGUpOwogfQogCiB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlU2xlZXBEaXNhYmxlcihTbGVlcERpc2FibGVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgYm9vbCBkaXNwbGF5
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCBmOGI3OTVi
MWQzNDM1MzVlODA5MmUwMWRiYWIzNzlhZjMzNDYxZGJlLi43MGU4OTA1MWNjYmJjN2U5MDQ2YmMx
Yzk5OGI5MGEwYjY4ZWY2NTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaApAQCAtMTM2LDkgKzEzNiwxMyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIGNsYXNzIFNo
b3VsZExhdW5jaFByb2Nlc3MgOiBib29sIHsgTm8sIFllcyB9OwogICAgIGVudW0gY2xhc3MgQ2Fw
dGl2ZVBvcnRhbE1vZGUgOiBib29sIHsgRGlzYWJsZWQsIEVuYWJsZWQgfTsKKyAgICBlbnVtIGNs
YXNzIFdvcmtlclR5cGUgOiB1aW50MzJfdCB7CisgICAgICAgIFNlcnZpY2VXb3JrZXIgPSAxIDw8
IDAsCisgICAgICAgIFNoYXJlZFdvcmtlciA9IDEgPDwgMQorICAgIH07CiAKICAgICBzdGF0aWMg
UmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sJiwgV2Vic2l0ZURhdGFT
dG9yZSosIENhcHRpdmVQb3J0YWxNb2RlLCBJc1ByZXdhcm1lZCwgV2ViQ29yZTo6Q3Jvc3NPcmln
aW5Nb2RlID0gV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQsIFNob3VsZExhdW5jaFBy
b2Nlc3MgPSBTaG91bGRMYXVuY2hQcm9jZXNzOjpZZXMpOwotICAgIHN0YXRpYyBSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiBjcmVhdGVGb3JTZXJ2aWNlV29ya2VycyhXZWJQcm9jZXNzUG9vbCYsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKKyAgICBzdGF0aWMg
UmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlRm9yV29ya2VycyhXb3JrZXJUeXBlLCBXZWJQcm9j
ZXNzUG9vbCYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdlYnNpdGVEYXRhU3RvcmUm
KTsKIAogICAgIH5XZWJQcm9jZXNzUHJveHkoKTsKIApAQCAtMTYxLDggKzE2NSw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldElzSW5Qcm9jZXNzQ2FjaGUoYm9vbCwgV2lsbFNodXREb3duID0gV2ls
bFNodXREb3duOjpObyk7CiAgICAgYm9vbCBpc0luUHJvY2Vzc0NhY2hlKCkgY29uc3QgeyByZXR1
cm4gbV9pc0luUHJvY2Vzc0NhY2hlOyB9CiAKLSAgICB2b2lkIGVuYWJsZVNlcnZpY2VXb3JrZXJz
KGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImKTsKLSAgICB2b2lkIGRpc2Fi
bGVTZXJ2aWNlV29ya2VycygpOworICAgIHZvaWQgZW5hYmxlV29ya2VycyhXb3JrZXJUeXBlLCBj
b25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJik7CisgICAgdm9pZCBkaXNhYmxl
V29ya2VycyhPcHRpb25TZXQ8V29ya2VyVHlwZT4pOwogCiAgICAgV2Vic2l0ZURhdGFTdG9yZSYg
d2Vic2l0ZURhdGFTdG9yZSgpIGNvbnN0IHsgQVNTRVJUKG1fd2Vic2l0ZURhdGFTdG9yZSk7IHJl
dHVybiAqbV93ZWJzaXRlRGF0YVN0b3JlOyB9CiAgICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3Jl
KFdlYnNpdGVEYXRhU3RvcmUmKTsKQEAgLTE5NCw2ICsxOTgsOSBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkgY29uc3QgeyByZXR1cm4gISFtX3NlcnZpY2VX
b3JrZXJJbmZvcm1hdGlvbjsgfQogICAgIGJvb2wgaXNTdGFuZGFsb25lU2VydmljZVdvcmtlclBy
b2Nlc3MoKSBjb25zdCB7IHJldHVybiBpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpICYmICFwYWdl
Q291bnQoKTsgfQorICAgIGJvb2wgaXNSdW5uaW5nU2hhcmVkV29ya2VycygpIGNvbnN0IHsgcmV0
dXJuICEhbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbjsgfQorICAgIGJvb2wgaXNTdGFuZGFsb25l
U2hhcmVkV29ya2VyUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIGlzUnVubmluZ1NoYXJlZFdvcmtl
cnMoKSAmJiAhcGFnZUNvdW50KCk7IH0KKyAgICBib29sIGlzUnVubmluZ1dvcmtlcnMoKSBjb25z
dCB7IHJldHVybiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIHx8IG1fc2VydmljZVdvcmtlcklu
Zm9ybWF0aW9uOyB9CiAKICAgICBib29sIGlzRHVtbXlQcm9jZXNzUHJveHkoKSBjb25zdDsKIApA
QCAtMzU5LDEyICszNjYsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVBdWRpYmxlTWVk
aWFBc3NlcnRpb25zKCk7CiAKKyAgICB2b2lkIHNldFdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJp
bmcmKTsKKyAgICB2b2lkIHVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYpOworICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dChj
b25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgdXBkYXRlV29ya2Vy
UHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlKTsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAgICAgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJl
bmNlc1N0b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9p
ZCBzZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgdXBk
YXRlU2VydmljZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZSYpOwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHBhZ2VQcm94eUlEKSB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiAm
JiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+cmVtb3RlV29ya2VyUGFnZVByb3h5SUQgPT0g
cGFnZVByb3h5SUQ7IH0KLSAgICB2b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0
aW9uKCk7CiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlBy
b2Nlc3NQcm94eSYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9j
ZXNzKFdlYlByb2Nlc3NQcm94eSYpOwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlckZvcmVncm91
bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdDsKQEAgLTY1Niw2ICs2NjQsNyBAQCBwcml2YXRl
OgogICAgICAgICBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+IGNsaWVudFByb2Nlc3NlczsK
ICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8UmVtb3RlV29ya2VySW5mb3JtYXRpb24+IG1fc2Vy
dmljZVdvcmtlckluZm9ybWF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8UmVtb3RlV29ya2VySW5m
b3JtYXRpb24+IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb247CiAgICAgYm9vbCBtX2hhc1NlcnZp
Y2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyB7IGZhbHNlIH07CiAKICAgICBIYXNoTWFwPFdl
YkNvcmU6OlNsZWVwRGlzYWJsZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
U2xlZXBEaXNhYmxlcj4+IG1fc2xlZXBEaXNhYmxlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwYzdjMzFiYzU1N2I1NWQ1MTcwNWZj
MzlkN2U2NzljOTRjNmEwYWYzLi4xNWU4MTBhNGM5ZjEyZWI5MmJiMmZkMTRkMzk1MGMzMTUxNDQ0
MjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTg4MCw4ICs4ODAsMTAgQEAKIAkJNDYxNEYxMzIyNURFRDg3NTAwNzAwNkU3IC8qIEdQ
VVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZBQzUzMjQyNURFRDgxRTAwM0I1N0VDIC8qIEdQVVByb2Nl
c3NDb25uZWN0aW9uUGFyYW1ldGVycy5oICovOyB9OwogCQk0NjFDQ0NBNTIzMTQ4NUE3MDBCNjU5
QjkgLyogVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzMjM2ODUyMzE0ODMzRjAwQTQ4RkE3IC8qIFVJUmVtb3Rl
T2JqZWN0UmVnaXN0cnkuaCAqLzsgfTsKIAkJNDYxQ0NDQTYyMzE0ODVBQTAwQjY1OUI5IC8qIFdl
YlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjMyMzY4MzIzMTQ4MUVGMDBBNDhGQTcgLyogV2ViUmVtb3RlT2JqZWN0
UmVnaXN0cnkuaCAqLzsgfTsKKwkJNDYxRTFCRjIyNzlBMDExNjAwNkFGNTNCIC8qIFdlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYxRTFCRUYyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICovOyB9OwogCQk0NjNGRDQ4MDFF
Qjk0NTk2MDBBMjk4MkMgLyogV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0ZENDdGMUVCOTQ1ODQwMEEy
OTgyQyAvKiBXS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2M0ZENDgyMUVCOTRFQzAwMEEyOTgyQyAv
KiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0ZENDgxMUVCOTRFQUQwMEEyOTgyQyAvKiBQcm9jZXNzVGVy
bWluYXRpb25SZWFzb24uaCAqLzsgfTsKKwkJNDY1NkY3QkQyN0FDQUE4RDAwQ0IzRDdDIC8qIFdl
YlNoYXJlZFdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY1NkY3QkMyN0FDQUE4MTAwQ0IzRDdDIC8qIFdlYlNoYXJlZFdvcmtlci5oICovOyB9
OwogCQk0NjU5RjI1RjI3NUZGNkIyMDBCQkIzNjkgLyogQ2FwdGl2ZVBvcnRhbE1vZGVPYnNlcnZl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1OUYy
NUUyNzVGRjZCMjAwQkJCMzY5IC8qIENhcHRpdmVQb3J0YWxNb2RlT2JzZXJ2ZXIuaCAqLzsgfTsK
IAkJNDY1RjRFMDYyMzBCMkU5NTAwM0NFREI3IC8qIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjVGNEUw
NTIzMEIyRTdDMDAzQ0VEQjcgLyogU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIuaCAqLzsgfTsK
IAkJNDY1RkE3MjYyNzU3RDkzRDAwNzIzNjJCIC8qIFdlYkxvY2tSZWdpc3RyeVByb3h5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjVGQTcyMzI3NTdE
OTE4MDA3MjM2MkIgLyogV2ViTG9ja1JlZ2lzdHJ5UHJveHkuaCAqLzsgfTsKQEAgLTkwMCwxMCAr
OTAyLDEzIEBACiAJCTQ2QzM5MjI5MjMxNkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVu
dGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NkMzOTIyODIzMTZFQzREMDA4RUVEOUIgLyogV2ViUGFnZVByb3h5SWRlbnRpZmllci5oICovOyB9
OwogCQk0NkM1QjdDRTI3QUFEREQzMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJD
bGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
QzVCN0NEMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJGcmFtZUxvYWRlckNsaWVudC5o
ICovOyB9OwogCQk0NkM1QjdDRjI3QUFEREQ2MDAwQzVCNDcgLyogUmVtb3RlV29ya2VyTGliV2Vi
UlRDUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2QzVCN0NCMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92
aWRlci5oICovOyB9OworCQk0NkM5MTZBQTI3OTlEMEEyMDAxQTRFN0MgLyogV2ViU2hhcmVkV29y
a2VyU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkM5MTZBOTI3OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggKi87
IH07CiAJCTQ2Q0UzQjExMjNEOEM4NDkwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3Vu
dHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Q0Uz
QjEwMjNEOEM4M0QwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCAqLzsgfTsK
KwkJNDZENDhGQ0UyNzk5RDdFMTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2RDQ4RkNEMjc5OUQ3REUwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2REYwNjNDMUYzOTA1RjgwMDE5ODBCQiAv
KiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REYwNjNBMUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXIuaCAqLzsgfTsKIAkJNDZFRTI4NDkyNjlFMDRBQzAwREQ0OEFC
IC8qIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFRTI4NDgyNjlFMDQ5QjAwREQ0OEFCIC8qIFdlYkJy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oICovOyB9OwogCQk0NkVFMjg0RDI2OUUwNTI1MDBERDQ4
QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFRTI4NEMyNjlFMDUxNzAwREQ0OEFCIC8q
IE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCAqLzsgfTsKKwkJNDZFRTNFOEIyNzYz
RkQyRjAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODM4NjY3Mjc2M0ZBQjEw
MENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2
RjM4RThDMjQxNkU2NzMwMDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZGMzhFOEIyNDE2RTY2
RDAwNTkzNzVBIC8qIFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmggKi87IH07CiAJCTQ2RjlCMjYz
MjM1MjZFRjMwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjlCMjYyMjM1MjZFRDAwMDZG
RTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCAqLzsgfTsKIAkJNDkzMTAyQkQyNjgz
RjNEMDAwMkJCODg1IC8qIEFwcFByaXZhY3lSZXBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5MzEwMkJDMjY4M0YzQTUwMDJCQjg4NSAvKiBBcHBQ
cml2YWN5UmVwb3J0LmggKi87IH07CkBAIC00MjIzLDYgKzQyMjgsOSBAQAogCQk0NjA4ODlGRjI2
MUZBOEE5MDBFMjUwMEQgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVy
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0
ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MEY0ODhEMUY5OTZGNkMwMENG
NEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJL
aXQvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk0NjBGNDg4RTFGOTk2RjZDMDBDRjRC
ODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3Nh
Z2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owor
CQk0NjFFMUJFQzI3OUEwMTBFMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ2MUUxQkVGMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MUUxQkYwMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjIxMDdENzFGMzhEQkQzMDBE
RDc4MTAgLyogUGluZ0xvYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUGluZ0xvYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjMyMzY4MzIz
MTQ4MUVGMDBBNDhGQTcgLyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDYzMjM2ODQyMzE0ODI1QzAwQTQ4RkE3IC8qIFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyMzMsNiArNDI0MSw5IEBACiAJCTQ2M0ZENDgxMUVC
OTRFQUQwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NTFFQ0U2MjIxNzhBODUwMDY3RUI5NSAvKiBXZWJQcm9j
ZXNzQ2FjaGVDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYlByb2Nlc3NDYWNoZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjUyNTBFNTFFQ0Y1MkNEMDAyMDI1Q0IgLyogV2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYktpdDJJbml0aWFsaXplQ29j
b2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2NTZGN0JBMjdBQ0FBODAwMENC
M0Q3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2NTZGN0JCMjdBQ0FBODEwMENC
M0Q3QyAvKiBXZWJTaGFyZWRXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVk
V29ya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY1NkY3QkMyN0FDQUE4
MTAwQ0IzRDdDIC8qIFdlYlNoYXJlZFdvcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRX
b3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY1OUYyNUUyNzVGRjZCMjAw
QkJCMzY5IC8qIENhcHRpdmVQb3J0YWxNb2RlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FwdGl2ZVBvcnRhbE1vZGVPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NjVGNEUwMjIzMDc1OUQ1MDAzQ0VEQjcgLyogU3RvcmFnZUFyZWFJ
ZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VBcmVhSWRlbnRpZmllci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjVGNEUwMzIzMDc2MDRFMDAzQ0VEQjcgLyogU3Rv
cmFnZUFyZWFJbXBsSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlQXJlYUltcGxJ
ZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MjU0LDggKzQyNjUs
MTEgQEAKIAkJNDY4MDlBN0IyM0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvb2tpZUNhY2hlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzU2OUEyMUU4MUNDNzAwNkUyN0EzIC8q
IFByb3Zpc2lvbmFsUGFnZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFByb3Zpc2lvbmFsUGFnZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
ODM1NjlCMjFFODFDQzcwMDZFMjdBMyAvKiBQcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm92aXNpb25hbFBhZ2VQcm94eS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2ODM4NjY3Mjc2M0ZBQjEwMENGOTE4MiAv
KiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDY4Mzg2NjgyNzYzRkFCMTAwQ0Y5MTgyIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODlCOTBGMjc1NkQxNDMw
MDA3QzY1MSAvKiBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3Rl
V2ViTG9ja1JlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODlCOTEw
Mjc1NkQxNDMwMDA3QzY1MSAvKiBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDY5NDNEQ0IyNzYzRjgzNDAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5REU4MDIy
NzNFQ0M1RDAwOTMwMjc2IC8qIFByb2Nlc3NMYXVuY2hlckNvY29hLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJvY2Vzc0xhdW5jaGVyQ29jb2EubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QTJCNjA2MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNr
Z3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZBMkI2MDcxRTU2NzVBMjAwQzNERURB
IC8qIEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyNzQsNyArNDI4OCwxMSBAQAogCQk0
NkM1QjdDQjI3QUFEREJFMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDNUI3Q0MyN0FBRERCRTAwMEM1QjQ3IC8qIFJlbW90
ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVdv
cmtlckZyYW1lTG9hZGVyQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDZDNUI3Q0QyN0FBRERCRTAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2QzkxNkE4Mjc5OUQwOUQwMDFBNEU3QyAvKiBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2Vy
U2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZDOTE2QTkyNzk5RDA5
RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDRTNC
MTAyM0Q4QzgzRDAwMTZBOTZBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZENDhGQ0MyNzk5RDdERDAwN0QyMDE0IC8qIFdl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2RDQ4RkNEMjc5OUQ3REUwMDdEMjAxNCAvKiBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDZERjA2MzkxRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJl
ZmxpZ2h0Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBO
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkU5NzYwQTI3NTdG
NkM5MDBBQ0REMzcgLyogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdl
cy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyODQsNiArNDMwMiw3IEBACiAJ
CTQ2RUUyODRBMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lz
dHJ5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5ldHdvcmtCcm9hZGNhc3RD
aGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2RUUyODRCMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lz
dHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtCcm9h
ZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NkVFMjg0QzI2OUUwNTE3MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3Ry
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2RUUzRThBMjc2
M0ZEMkEwMDYwQzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RjM4RThCMjQxNkU2NkQwMDU5Mzc1QSAvKiBS
dW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NkY5QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRy
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTMxMDJCQzI2ODNGM0E1MDAyQkI4
ODUgLyogQXBwUHJpdmFjeVJlcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBQcml2YWN5UmVwb3J0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05Mjk1LDYgKzkzMTQsMjMgQEAKIAkJ
CXBhdGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTQ2ODM4
NjY1Mjc2M0ZBMUIwMENGOTE4MiAvKiBTaGFyZWRXb3JrZXIgKi8gPSB7CisJCQlpc2EgPSBQQlhH
cm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTQ2NTZGN0JCMjdBQ0FBODEwMENCM0Q3QyAvKiBX
ZWJTaGFyZWRXb3JrZXIuY3BwICovLAorCQkJCTQ2NTZGN0JDMjdBQ0FBODEwMENCM0Q3QyAvKiBX
ZWJTaGFyZWRXb3JrZXIuaCAqLywKKwkJCQk0NkM5MTZBODI3OTlEMDlEMDAxQTRFN0MgLyogV2Vi
U2hhcmVkV29ya2VyU2VydmVyLmNwcCAqLywKKwkJCQk0NkM5MTZBOTI3OTlEMDlEMDAxQTRFN0Mg
LyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggKi8sCisJCQkJNDY4Mzg2NjgyNzYzRkFCMTAwQ0Y5
MTgyIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwICovLAorCQkJCTQ2ODM4
NjY3Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgg
Ki8sCisJCQkJNDZFRTNFOEEyNzYzRkQyQTAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCisJCQkJNDZENDhGQ0MyNzk5RDdERDAwN0QyMDE0
IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwICovLAorCQkJ
CTQ2RDQ4RkNEMjc5OUQ3REUwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmggKi8sCisJCQkJNDY1NkY3QkEyN0FDQUE4MDAwQ0IzRDdDIC8qIFdlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCisJCQkp
OworCQkJcGF0aCA9IFNoYXJlZFdvcmtlcjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CiAJCTQ2OURFODAxMjczRUNDNUQwMDkzMDI3NiAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC05MzU5LDYgKzkzOTUsNyBAQAogCQkJCTUx
NDUyNkVBMjcxRTE2MTAwMDA0NjdCNiAvKiBOb3RpZmljYXRpb25zICovLAogCQkJCTVDMDFCQzM1
MjZENDZBRDQwMEZFQjQyRiAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAqLywKIAkJCQk5M0JB
MDREOTIxNTFBRENEMDA3RjQ1NUYgLyogU2VydmljZVdvcmtlciAqLywKKwkJCQk0NjgzODY2NTI3
NjNGQTFCMDBDRjkxODIgLyogU2hhcmVkV29ya2VyICovLAogCQkJCTkzMDg1REMyMjZFMUJCNjUw
MDBFQzZBNyAvKiBzdG9yYWdlICovLAogCQkJCTQxMzA3NTk3MURFODRFRDcwMDM5RUM2OSAvKiB3
ZWJydGMgKi8sCiAJCQkJOTNCMjYxNDMyMjdEMTQzMTAwQjk3QTc2IC8qIFdlYlN0b3JhZ2UgKi8s
CkBAIC05NDYxLDggKzk0OTgsMTIgQEAKIAkJCQk0MTlBQ0Y5QjFGOTgxRDI2MDA5RjFBODMgLyog
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oICovLAogCQkJCTUxQkVCNjI5MUYzQTVB
Q0QwMDUwMjlCOSAvKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwICovLAogCQkJCTUxQkVC
NjJBMUYzQTVBQ0QwMDUwMjlCOSAvKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCAqLywKKwkJ
CQk0NjFFMUJFQzI3OUEwMTBFMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk0NjFFMUJFRjI3OUEwMTBGMDA2QUY1M0IgLyogV2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggKi8sCisJCQkJNDYxRTFCRjAy
NzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbiAqLywKIAkJCQk0NjY4QTBCQjI3QUI2MDQwMDBDNzIwQkMgLyogV2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJNDY2OEEwQjgyN0FCNjAzRjAw
QzcyMEJDIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAqLywKKwkJCQk0Njk0
M0RDQjI3NjNGODM0MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5t
ZXNzYWdlcy5pbiAqLywKIAkJCQk0NjY4QTBCOTI3QUI2MDNGMDBDNzIwQkMgLyogV2ViU2hhcmVk
V29ya2VyUHJvdmlkZXIuY3BwICovLAogCQkJCTQ2NjhBMEJBMjdBQjYwNDAwMEM3MjBCQyAvKiBX
ZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oICovLAogCQkJCTUxN0E1MzAzMUY0NzkzQjIwMERDREMw
QSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwICovLApAQCAtMTM2NTgsOCArMTM2OTksMTMg
QEAKIAkJCQk3QzM2MUQ3MzE5MjdGQTM2MDAzNkE1OUQgLyogV2ViU2NyaXB0TWVzc2FnZUhhbmRs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUQzQjk0ODQ5MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJT
ZWFyY2hQb3B1cE1lbnUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQkVCNjJDMUYzQTVBRDcwMDUw
MjlCOSAvKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2
NTZGN0JEMjdBQ0FBOEQwMENCM0Q3QyAvKiBXZWJTaGFyZWRXb3JrZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTQ2MUUxQkYyMjc5QTAxMTYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2NjhBMEJEMjdBQjYwNTYw
MEM3MjBCQyAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0NjY4QTBCQzI3QUI2MDUwMDBDNzIwQkMgLyogV2ViU2hhcmVkV29ya2VyUHJvdmlk
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2QzkxNkFBMjc5OUQwQTIwMDFBNEU3QyAvKiBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2RUUzRThCMjc2M0ZEMkYw
MDYwQzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAq
LywKKwkJCQk0NkQ0OEZDRTI3OTlEN0UxMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM4REQzODAxRkU0NTIx
NjAwRjJBNTU2IC8qIFdlYnNpdGVBdXRvcGxheVBvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUE0ODMyRDcxQTlDREY5NjAwOEI0REZFIC8qIFdlYnNpdGVEYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTQ4MzJEMTFBOUJEQzJGMDA4QjRERkUgLyogV2Vic2l0ZURhdGFSZWNvcmQuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggODFkZDA0MTFhMjM5NmJj
NWUyMzQ1NWI5ZjViNTllNzM0NjFlZTk2Zi4uYmIzNTQ3ZjQ2YWQ0YjhhNWMyMDUyZDA4MmNhNjc1
NGIxMjkxZmY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC01Nyw3ICs1NywxMCBA
QAogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAi
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNl
cnZpY2VXb3JrZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25N
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIKICNpbmNsdWRlICJXZWJT
b2NrZXRDaGFubmVsTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRTdHJlYW0uaCIKQEAg
LTE3NCw2ICsxNzcsMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVAKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICNlbmRpZgorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpKSB7CisgICAgICAgIHNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKS5kaWRSZWNlaXZl
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7
CisgICAgICAgIEFTU0VSVChTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCku
Y29ubmVjdGlvbigpKTsKKyAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
biA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkp
CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24mPigqY29udGV4dE1hbmFnZXJDb25uZWN0aW9uKS5kaWRSZWNlaXZlTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogI2lmIEVOQUJM
RShBUFBMRV9QQVlfUkVNT1RFX1VJKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggZWRjMDQ5M2JkM2VkZGZhMTY5MDBi
ZGI4NTkxNGM2NGM1OTc4OTE4MC4uMGI2NDgwYTYxZDM2Y2ZlMDQ3OWI0Y2Y0MDFkNDVkZjQzODMw
YjM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgZW51bSBjbGFz
cyBIVFRQQ29va2llQWNjZXB0UG9saWN5IDogdWludDhfdDsKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uOwogY2xhc3MgV2ViU1dDbGllbnRDb25uZWN0aW9uOwogY2xhc3MgV2Vi
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQzMDY0NzY2NWZhNjUw
OGE1ZWM3MDA2NzNiYmI3NDQyZDNiNjhmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHAKQEAgLTAsMCArMSwxMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgi
CisKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiUmVtb3RlV29ya2Vy
RnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92
aWRlci5oIgorI2luY2x1ZGUgIldlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIgorI2luY2x1
ZGUgIldlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250
ZW50UnVsZUxpc3REYXRhLmgiCisjaW5jbHVkZSAiV2ViRGF0YWJhc2VQcm92aWRlci5oIgorI2lu
Y2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc0tleXMuaCIKKyNpbmNs
dWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0UHJvdmlkZXIuaCIK
KyNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0VtcHR5Q2xpZW50cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZUNvbmZpZ3VyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVXNlckFnZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9Xb3JrZXJGZXRjaFJlc3VsdC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcywgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwg
UGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3
ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJiBwcmVmZXJlbmNlc1N0b3JlLCBSZW1vdGVXb3JrZXJJbml0aWFsaXph
dGlvbkRhdGEmJiBpbml0aWFsaXphdGlvbkRhdGEpCisgICAgOiBtX2Nvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKFdURk1vdmUoY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpKQorICAgICwgbV9y
ZWdpc3RyYWJsZURvbWFpbihXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAsIG1fcGFn
ZUdyb3VwSUQocGFnZUdyb3VwSUQpCisgICAgLCBtX3dlYlBhZ2VQcm94eUlEKHdlYlBhZ2VQcm94
eUlEKQorICAgICwgbV9wYWdlSUQocGFnZUlEKQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICwg
bV91c2VyQWdlbnQoV2ViQ29yZTo6c3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1l
KHsgfSkpCisjZWxzZQorICAgICwgbV91c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkKKyNl
bmRpZgorICAgICwgbV91c2VyQ29udGVudENvbnRyb2xsZXIoV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpnZXRPckNyZWF0ZShpbml0aWFsaXphdGlvbkRhdGEudXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllcikpCit7CisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBtX3Vz
ZXJDb250ZW50Q29udHJvbGxlci0+YWRkQ29udGVudFJ1bGVMaXN0cyhXVEZNb3ZlKGluaXRpYWxp
emF0aW9uRGF0YS5jb250ZW50UnVsZUxpc3RzKSk7CisjZW5kaWYKKworICAgIHVwZGF0ZVByZWZl
cmVuY2VzU3RvcmUocHJlZmVyZW5jZXNTdG9yZSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZGlzYWJsZVRlcm1pbmF0aW9uKCk7Cit9CisKK1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbigp
ID0gZGVmYXVsdDsKKwordm9pZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OmVzdGFibGlzaENvbm5lY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVz
dGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uIHsgbV93ZWJQYWdlUHJveHlJRCwg
bV9yZWdpc3RyYWJsZURvbWFpbiB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgMCk7Cit9
CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0RXhj
ZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFy
ZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAg
IG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVj
dCB7IHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCBzb3VyY2VVUkwgfSwgMCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjp1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQoreworICAgIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2Vz
R2VuZXJhdGVkKHN0b3JlKTsKKyAgICBtX3ByZWZlcmVuY2VzU3RvcmUgPSBzdG9yZTsKK30KKwor
dm9pZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmxhdW5jaFNoYXJl
ZFdvcmtlcihXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdv
cmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgVVJMJiYgdXJsLCBXZWJDb3Jl
OjpXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucywgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1
bHQmJiB3b3JrZXJGZXRjaFJlc3VsdCkKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIs
ICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmxhdW5jaFNoYXJlZFdv
cmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50
aWZpZXIudG9VSW50NjQoKSk7CisgICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9IFdlYkNvcmU6
OnBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cyhXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5zZXNzaW9uSUQoKSk7CisKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5kYXRhYmFzZVByb3ZpZGVy
ID0gV2ViRGF0YWJhc2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUobV9wYWdlR3JvdXBJRCk7CisgICAg
cGFnZUNvbmZpZ3VyYXRpb24uc29ja2V0UHJvdmlkZXIgPSBXZWJTb2NrZXRQcm92aWRlcjo6Y3Jl
YXRlKG1fd2ViUGFnZVByb3h5SUQpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLmJyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmJyb2FkY2FzdENoYW5uZWxS
ZWdpc3RyeSgpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLndlYkxvY2tSZWdpc3RyeSA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvY2tSZWdpc3RyeSgpOworICAgIHBhZ2VDb25maWd1cmF0
aW9uLnVzZXJDb250ZW50UHJvdmlkZXIgPSBtX3VzZXJDb250ZW50Q29udHJvbGxlcjsKKyNpZiBF
TkFCTEUoV0VCX1JUQykKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5saWJXZWJSVENQcm92aWRlciA9
IG1ha2VVbmlxdWVSZWY8UmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXI+KCk7CisjZW5kaWYK
KworICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSA9IG1ha2VV
bmlxdWVSZWY8UmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ+KG1fd2ViUGFnZVByb3h5SUQs
IG1fcGFnZUlELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI6OmdlbmVyYXRlKCksIG1fdXNlckFn
ZW50KTsKKworICAgIGF1dG8gcGFnZSA9IG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6UGFnZT4oV1RG
TW92ZShwYWdlQ29uZmlndXJhdGlvbikpOworICAgIGlmIChtX3ByZWZlcmVuY2VzU3RvcmUpIHsK
KyAgICAgICAgV2ViUGFnZTo6dXBkYXRlU2V0dGluZ3NHZW5lcmF0ZWQoKm1fcHJlZmVyZW5jZXNT
dG9yZSwgcGFnZS0+c2V0dGluZ3MoKSk7CisgICAgICAgIHBhZ2UtPnNldHRpbmdzKCkuc2V0U3Rv
cmFnZUJsb2NraW5nUG9saWN5KHN0YXRpY19jYXN0PFdlYkNvcmU6OlN0b3JhZ2VCbG9ja2luZ1Bv
bGljeT4obV9wcmVmZXJlbmNlc1N0b3JlLT5nZXRVSW50MzJWYWx1ZUZvcktleShXZWJQcmVmZXJl
bmNlc0tleTo6c3RvcmFnZUJsb2NraW5nUG9saWN5S2V5KCkpKSk7CisgICAgfQorICAgIHBhZ2Ut
PnNldHVwRm9yUmVtb3RlV29ya2VyKHVybCwgb3JpZ2luLnRvcE9yaWdpbiwgd29ya2VyRmV0Y2hS
ZXN1bHQucmVmZXJyZXJQb2xpY3kpOworICAgIGF1dG8gc2hhcmVkV29ya2VyVGhyZWFkUHJveHkg
PSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlKFdURk1vdmUocGFnZSks
IHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIG9yaWdpbiwgdXJsLCBXVEZNb3ZlKHdvcmtlckZldGNo
UmVzdWx0KSwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSwgbV91c2VyQWdlbnQsIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFnZVByb3ZpZGVyKCkpOworCisgICAgV2ViQ29yZTo6U2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnJlZ2lzdGVyU2hhcmVkV29ya2Vy
VGhyZWFkKFdURk1vdmUoc2hhcmVkV29ya2VyVGhyZWFkUHJveHkpKTsKK30KKwordm9pZCBXZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmNsb3NlKCkKK3sKKyAgICBSRUxF
QVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OmNsb3NlOiBTaGFyZWQgd29ya2VyIHByb2Nlc3MgaXMgcmVxdWVzdGVkIHRvIHN0b3Ag
YWxsIHNoYXJlZCB3b3JrZXJzIik7CisgICAgc2V0QXNDbG9zZWQoKTsKKworICAgIG1fY29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpDbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uIHsgfSwgMCk7Cisg
ICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnN0b3BB
bGxTaGFyZWRXb3JrZXJzKCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5hYmxlVGVy
bWluYXRpb24oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhY2ZkMGM0MTI5
MWQ1N2U3NGIwNmZlZGM2OTViZmFmMTA5NWRiYmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uaApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiSWRlbnRpZmllclR5cGVzLmgiCisj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRp
Zmllci5oIgorI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFp
bi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworc3RydWN0IENsaWVudE9yaWdpbjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsK
K3N0cnVjdCBXb3JrZXJPcHRpb25zOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOworc3RydWN0IFJlbW90ZVdvcmtlckluaXRpYWxpemF0
aW9uRGF0YTsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpDb25u
ZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIFdlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYm
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQYWdlR3JvdXBJZGVudGlmaWVyLCBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYsIFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmKTsKKyAgICB+
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKCk7CisKKyAgICB2b2lkIGVz
dGFibGlzaENvbm5lY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKKyAg
ICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSBmaW5hbDsKKworICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmlu
YWw7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDIE1lc3NhZ2VzLgorICAgIHZvaWQgbGF1bmNoU2hh
cmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmLCBXZWJDb3JlOjpXb3Jr
ZXJGZXRjaFJlc3VsdCYmKTsKKyAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZSYpOworICAgIHZvaWQgc2V0VXNlckFnZW50KFN0cmluZyYmIHVz
ZXJBZ2VudCkgeyBtX3VzZXJBZ2VudCA9IFdURk1vdmUodXNlckFnZW50KTsgfQorICAgIHZvaWQg
Y2xvc2UoKTsKKworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3M7CisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURv
bWFpbjsKKyAgICBQYWdlR3JvdXBJZGVudGlmaWVyIG1fcGFnZUdyb3VwSUQ7CisgICAgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciBtX3dlYlBhZ2VQcm94eUlEOworICAgIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIG1fcGFnZUlEOworICAgIFN0cmluZyBtX3VzZXJBZ2VudDsKKyAgICBSZWY8V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyPiBtX3VzZXJDb250ZW50Q29udHJvbGxlcjsKKyAgICBzdGQ6Om9w
dGlvbmFsPFdlYlByZWZlcmVuY2VzU3RvcmU+IG1fcHJlZmVyZW5jZXNTdG9yZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4MmE0YWRhNTNm
ZDRiZWIxYzVlZWUxZjdhYmE2MjJmM2ZkNWIxZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMCBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CisgICAgTGF1bmNoU2hhcmVkV29ya2Vy
KHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFVSTCB1cmwsIHN0cnVjdCBXZWJD
b3JlOjpXb3JrZXJPcHRpb25zIHdvcmtlck9wdGlvbnMsIHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJG
ZXRjaFJlc3VsdCB3b3JrZXJGZXRjaFJlc3VsdCkKKyAgICBQb3N0Q29ubmVjdEV2ZW50KFdlYkNv
cmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgV2ViQ29y
ZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBwb3J0LCBTdHJpbmcgc291cmNlT3JpZ2luKQorICAg
IFRlcm1pbmF0ZVNoYXJlZFdvcmtlcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNo
YXJlZFdvcmtlcklkZW50aWZpZXIpCisgICAgVXBkYXRlUHJlZmVyZW5jZXNTdG9yZShzdHJ1Y3Qg
V2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlKQorICAgIFNldFVzZXJBZ2VudChTdHJp
bmcgdXNlckFnZW50KQorICAgIENsb3NlKCkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbi5jcHAKaW5kZXggNWM1ZmRhYTYwMDU3OTY3YzY1YzAzMmYwNDI1ZmQ5MTU5MzMxOGYz
Yi4uNWRkYmRlNDRhOTZiMTVjYzM2NzE5MGQ4YWNkMTc3MzEzMjk0NWJkZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKQEAgLTI2LDIzICsyNiw0NSBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24u
aCIKIAorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9TaGFy
ZWRXb3JrZXJNYW5hZ2VyLmg+CisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyS2V5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9X
b3JrZXJPcHRpb25zLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCkgPSBkZWZh
dWx0OworI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xP
RyhTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQgIl0g
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsIFdlYkNvcmU6OlBy
b2Nlc3M6OmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQorCitXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
KCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJXZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uOiIpOworfQorCitXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjp+V2Vi
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNF
X0xPRygifldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Iik7Cit9CiAKIElQQzo6Q29u
bmVjdGlvbiogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24oKSBjb25zdAogewogICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwogfQogCi12b2lk
IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnJlcXVlc3RTaGFyZWRXb3JrZXIoY29u
c3QgVVJMJiB1cmwsIFdlYkNvcmU6OlNoYXJlZFdvcmtlciYgc2hhcmVkV29ya2VyLCBXZWJDb3Jl
OjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgcG9ydCwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYm
IHdvcmtlck9wdGlvbnMpCit2b2lkIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnJl
cXVlc3RTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBzaGFyZWRX
b3JrZXJLZXksIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBv
cnQsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMpCiB7Ci0gICAg
Ly8gRklYTUU6IFNob3VsZCBzZW5kIElQQyB0byB0aGUgbmV0d29yayBwcm9jZXNzLgotICAgIFdl
YkNvcmU6OlNoYXJlZFdvcmtlck1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3QodXJsLCBzaGFy
ZWRXb3JrZXIsIFdURk1vdmUocG9ydCksIFdURk1vdmUod29ya2VyT3B0aW9ucykpOworICAgIENP
Tk5FQ1RJT05fUkVMRUFTRV9MT0coInJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIu
dG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpSZXF1ZXN0U2hhcmVkV29ya2VyIHsgc2hhcmVkV29ya2Vy
S2V5LCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXVEZNb3ZlKHBvcnQpLCB3b3JrZXJP
cHRpb25zIH0pOwogfQogCit2b2lkIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnNo
YXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktl
eSYgc2hhcmVkV29ya2VyS2V5LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNF
X0xPRygic2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXk6IHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uOjpTaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheSB7IHNoYXJlZFdv
cmtlcktleSwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciB9KTsKK30KKworI3VuZGVmIENP
Tk5FQ1RJT05fUkVMRUFTRV9MT0cKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uLmgKaW5kZXggNjFlZTVhZjQyNGRjMDMzN2Y2MmNmNzE5MzJh
MTViYjk1NWU2ZGNkMi4uNDc4MTkzZWY3ZGRhZjA2MWQ2ZWI1MjhlZGY5M2RiYzQxMTdhMzIzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApAQCAtMjUsMjAgKzI1LDI1IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CitjbGFzcyBXZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24sIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJs
aWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKTsgfQorICAgIH5XZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uKCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIFdlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKTsKIAogICAgIC8vIFdlYkNvcmU6OlNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uCi0gICAgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0
IFVSTCYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlciYsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2Fn
ZVBvcnQmJiwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVl
c3RTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiwgV2ViQ29yZTo6
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdl
UG9ydCYmLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJikgZmluYWw7CisgICAgdm9pZCBz
aGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJL
ZXkmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKSBmaW5hbDsKIAogICAg
IC8vIElQQzo6TWVzc2FnZVNlbmRlci4KICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5k
ZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjJhZTFhMzJjOTM5NTNkOTVl
OGVhZjhjNTgxMDIyNzBiNTI1N2YxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdl
cy5pbgpAQCAtMCwwICsxLDI3IEBACisjIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisj
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKK21lc3NhZ2VzIC0+IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24geworICAg
IEZldGNoU2NyaXB0SW5DbGllbnQoVVJMIHVybCwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6
V29ya2VyT3B0aW9ucyB3b3JrZXJPcHRpb25zKSAtPiAoc3RydWN0IFdlYkNvcmU6OldvcmtlckZl
dGNoUmVzdWx0IGZldGNoUmVzdWx0KSBBc3luYworICAgIE5vdGlmeVdvcmtlck9iamVjdE9mTG9h
ZENvbXBsZXRpb24oV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQorICAg
IFBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFN0cmluZyBlcnJvck1lc3Nh
Z2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTdHJpbmcgc291cmNlVVJMKQor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGRkOGQ1ODFhYzVi
MjRkNWQ5NDA2MmI5YzY1YzI0MmYwYzUxZWM5ODQuLmRkNDViNDU4OGJmOWRkMTI0ZTE4ZmFhOTVh
MzI2ZWQzMTkzMWE0NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
QEAgLTg0LDYgKzg0LDggQEAKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNo
YXJlZFdvcmtlclByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFtLmgiCiAjaW5j
bHVkZSAiV2Vic2l0ZURhdGEuaCIKQEAgLTEzNCw2ICsxMzYsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2Vy
R2VzdHVyZUluZGljYXRvci5oPgogI2luY2x1ZGUgPHBhbC9Mb2dnaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL0FsZ29yaXRobXMuaD4KQEAgLTkwNCw3ICs5MDcsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OmRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVy
JiBkZQogICAgIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICAvLyBGSVhNRTog
UmVtb3ZlPwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdl
czo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkg
ewogICAgICAgICBBU1NFUlQoU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlv
bigpKTsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiA9IFNXQ29u
dGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKQEAgLTkxMyw2ICs5MTUsMTMg
QEAgdm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGUKICAgICB9CiAjZW5kaWYKIAorICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAg
QVNTRVJUKFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9u
KCkpOworICAgICAgICBpZiAoYXV0byogY29udGV4dE1hbmFnZXJDb25uZWN0aW9uID0gU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAg
ICAgIHN0YXRpY19jYXN0PFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiY+
KCpjb250ZXh0TWFuYWdlckNvbm5lY3Rpb24pLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgTE9HX0VSUk9SKCJVbmhh
bmRsZWQgd2ViIHByb2Nlc3MgbWVzc2FnZSAnJXMnIChkZXN0aW5hdGlvbjogJSIgUFJJdTY0ICIg
cGlkOiAlZCkiLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpLCBkZWNvZGVyLmRl
c3RpbmF0aW9uSUQoKSwgc3RhdGljX2Nhc3Q8aW50PihnZXRDdXJyZW50UHJvY2Vzc0lEKCkpKTsK
IH0KIApAQCAtMTkxOSw2ICsxOTI4LDE2IEBAIExpYldlYlJUQ05ldHdvcmsmIFdlYlByb2Nlc3M6
OmxpYldlYlJUQ05ldHdvcmsoKQogICAgIHJldHVybiAqbV9saWJXZWJSVENOZXR3b3JrOwogfQog
Cit2b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNv
bnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lz
dHJhYmxlRG9tYWluLCBSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXph
dGlvbkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICAvLyBXZSBhcmUgaW4gdGhlIFNoYXJlZCBXb3JrZXIgY29udGV4dCBwcm9jZXNzIGFu
ZCB0aGUgY2FsbCBiZWxvdyBlc3RhYmxpc2hlcyBvdXIgY29ubmVjdGlvbiB0byB0aGUgTmV0d29y
ayBQcm9jZXNzCisgICAgLy8gYnkgY2FsbGluZyBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0aGUgc2FtZSB1bmRl
cmx5aW5nIElQQzo6Q29ubmVjdGlvbiBhcyB0aGUKKyAgICAvLyBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24gZm9yIHN5bmNocm9uaXphdGlvbiBwdXJwb3Nlcy4KKyAgICBhdXRvJiBpcGNDb25uZWN0
aW9uID0gZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworICAg
IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDb25uZWN0aW9uKG1h
a2VVbmlxdWU8V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uPihpcGNDb25u
ZWN0aW9uLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgcGFnZUdyb3VwSUQsIHdlYlBhZ2VQ
cm94eUlELCBwYWdlSUQsIHN0b3JlLCBXVEZNb3ZlKGluaXRpYWxpemF0aW9uRGF0YSkpKTsKKyAg
ICBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpLT5l
c3RhYmxpc2hDb25uZWN0aW9uKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2Vydmlj
ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlm
aWVyIHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBS
ZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIs
IFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmIGluaXRpYWxpemF0aW9uRGF0YSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggMDNmYzBjNzFkN2MzYTdkOTdkNWJkZGM2YmFi
ZmRmMDhiNDY2OWYyNS4uNDIzZGVmZjJhZjViYzQyZTc1NDgyM2VjNmI4YzBmMDAxMGNhMDI2MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC00NzEsNiArNDcxLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGdhbWVwYWREaXNjb25uZWN0ZWQodW5zaWduZWQgaW5kZXgpOwog
I2VuZGlmCiAKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlm
aWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9u
RGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRp
ZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZp
ZXIsIFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCmluZGV4IDNiYzQ3MzE5ZTM2ZDAwNjMxOThiYmJmOTY2OGQwNjlhYWRj
ZGUzNzcuLmY1ZTczNmVkMzQ3ZjI3MWFkZWM3YzQ1ZDAzZmQ4M2RiYjBiYTliZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMDAs
NiArMTAwLDggQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciBOb3RSZWZD
b3VudGVkIHsKICAgICBHYW1lcGFkRGlzY29ubmVjdGVkKHVuc2lnbmVkIGluZGV4KQogI2VuZGlm
CiAKKyAgICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJLaXQ6Oldl
YlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVXb3Jr
ZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRhKSAtPiAoKSBBc3luYworCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIEVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJZGVudGlmaWVy
IHBhZ2VHcm91cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5
SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJl
ZmVyZW5jZXNTdG9yZSBzdG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBz
ZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlJlbW90ZVdvcmtlcklu
aXRpYWxpemF0aW9uRGF0YSBpbml0aWFsaXphdGlvbkRhdGEpIC0+ICgpIEFzeW5jCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiNTQ2YTczNjQ0NTI1ZDEzY2VkOGIyZTZjNDYwYzE5MmFjMjFkZTU5Li43ZGIzNDkx
MzBlMTUzMDk0ZDVkOGI3NmIxYmEyNWU3ZWU3ODViZTdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAK
KzIwMjItMDItMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgc3VwcG9ydCBmb3Igc2hhcmluZyBTaGFyZWQgV29ya2VycyAoaW5jbHVkaW5nIGFjcm9zcyBX
ZWJQcm9jZXNzZXMpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzU5NTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg4MzMwNjY2PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlYmFzZWxpbmUgZXhpc3Rp
bmcgV1BUIHRlc3RzIGludm9sdmluZyBzaGFyZWQgd29ya2Vycy4KKworICAgICAgICAqIFRlc3RF
eHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hh
cmVkd29ya2VyLWNvbm5lY3Qtc3JjLnN1Yi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50
LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1yZXBvcnQtb25seS5z
dWItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGstd2syL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRl
LXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWItZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1l
eHBlY3RlZC50eHQ6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJs
LndpbmRvdy1leHBlY3RlZC50eHQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWlt
cG9ydC1kYXRhLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQt
d29ya2VyLWltcG9ydC1kYXRhLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0LgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21v
ZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4dDogQ29waWVkIGZy
b20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21v
ZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4dC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1jcmVkZW50aWFscy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4
cGVjdGVkLnR4dDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4
cGVjdGVkLnR4dC4KKwogMjAyMi0wMi0wNCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+
CiAKICAgICAgICAgR3JhZGllbnRzIGRvbid0IGNvcnJlY3RseSBpbnRlcnBvbGF0ZSBtaXNzaW5n
L25vbmUgY29sb3IgY29tcG9uZW50cyBjb3JyZWN0bHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nCmluZGV4IGYzNTY2ZWI4NDBhYzBkMWZhNThmMWVmMjMyMjIzNzZjZDZmY2FiYmEuLjMwZDJl
NzViNDI2MjliYjljZDVkYmRjMmU3MmYzMmRiMjJlOThiMzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIyLTAyLTA0ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNoYXJpbmcgU2hhcmVk
IFdvcmtlcnMgKGluY2x1ZGluZyBhY3Jvc3MgV2ViUHJvY2Vzc2VzKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1OTU4CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS84ODMzMDY2Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZWJhc2VsaW5lIGV4aXN0aW5nIFdQVCB0ZXN0cyBpbnZvbHZpbmcgc2hhcmVk
IHdvcmtlcnMuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0
eS1wb2xpY3kvY29ubmVjdC1zcmMvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1hbGxvd2VkLnN1
Yi1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3JrZXItY29ubmVjdC1zcmMtYmxvY2tl
ZC5zdWItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50
LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1yZXBvcnQtb25seS5z
dWItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1zY3JpcHQtc3JjLnN1Yi1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJp
dHktcG9saWN5L3NjcmlwdC1zcmMvd29ya2VyLXNldC10aW1lb3V0LnN1Yi1leHBlY3RlZC50eHQ6
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBj
YWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9j
cm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5odHRwcy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGlj
eS9zaGFyZWQtd29ya2Vycy5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS93b3JrZXItaW5oZXJp
dGFuY2Uuc3ViLmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2NsYWltLXNoYXJlZC13b3JrZXItZmV0
Y2guaHR0cHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJs
LndpbmRvdy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMv
c2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LXJlZmVycmVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29y
a2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwNC1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211
bHRpcGxlLXdvcmtlcnMvMDA4LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2Vy
LW5hbWUtdmlhLW9wdGlvbnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1taXNtYXRjaC1leHBlY3RlZC50eHQ6
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNo
YXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0OgorCiAyMDIyLTAyLTA0ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgbGFuZCBtaXNzaW5n
IGJhc2VsaW5lIGZvciBTaGFyZWQgV29ya2VyIHRlc3QuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBh
ZDk3MDI5MGM0MzhhZGZjZDQ0NDZkYWY3MjdmM2ZkNTk0M2M0YzI0Li40YTJiNmJjYTkyZGQ5MGRl
ZmNmNmFiNGQyOWEzZTA5MjE3OTcxZmJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQ1OSw3ICs0
NTksNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1sb2Nrcy9zdGVhbC50
ZW50YXRpdmUuaHR0cHMuYW55Lmh0bWwgWyBEdW1wSgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hbmFseXNlcm5vZGUtaW50ZXJmYWNl
L3Rlc3QtYW5hbHlzZXItbWluaW11bS5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0K
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90
aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUtZGlzY29ubmVjdC1hdWRpb3BhcmFtLmh0
bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL3NhbWUtb3JpZ2luLWNoZWNrLnN1Yi5odG1sIFsgRHVtcEpTQ29uc29s
ZUxvZ0luU3RkRXJyIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9z
aGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMuaHRtbCBbIER1bXBKU0NvbnNvbGVMb2dJblN0
ZEVyciBdCiBmYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWJhY2stZm9yd2FyZC1jYWNoZS5odG1sIFsg
RHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGZhc3QvaGlzdG9yeS9wYWdlLWNhY2hlLWNyZWF0
ZUltYWdlQml0bWFwLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQogaHR0cC90ZXN0
cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLWluLWxvYWRpbmctaWZyYW1lLmh0bWwgWyBEdW1w
SlNDb25zb2xlTG9nSW5TdGRFcnIgXQpAQCAtODQ5LDYgKzg0OCw3IEBAIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdXNlci10aW1pbmcvbWFyay5odG1sIFsgRmFpbHVyZSBQYXNzIF0K
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdXNlci10aW1pbmcvbWVhc3VyZV9hc3Nv
Y2lhdGVkX3dpdGhfbmF2aWdhdGlvbl90aW1pbmcuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zeXN0ZW0tc3RhdGUt
YW5kLWNhcGFiaWxpdGllcy90aGUtbmF2aWdhdG9yLW9iamVjdC9wbHVnaW5zLWFuZC1taW1ldHlw
ZXMuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2JlYWNvbi9iZWFjb24tcmVkaXJlY3Quc3ViLndpbmRvdy5odG1sIFsgRmFpbHVyZSBQYXNzIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRk
ZXItcG9saWN5L2Fub255bW91cy1pZnJhbWUvc2hhcmVkd29ya2VyLXBhcnRpdGlvbmluZy50ZW50
YXRpdmUuaHR0cHMud2luZG93Lmh0bWwgWyBGYWlsdXJlIFBhc3MgXQogCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2RvY3VtZW50LW1ldGFkYXRhL3RoZS1s
aW5rLWVsZW1lbnQvbGluay1sb2FkLWVycm9yLWV2ZW50cy5odG1sIFsgRHVtcEpTQ29uc29sZUxv
Z0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZG9jdW1lbnQtbWV0YWRhdGEvdGhlLWxpbmstZWxlbWVudC9saW5rLWxvYWQtZXJyb3ItZXZl
bnRzLmh0dHBzLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQpAQCAtNTEzMSw2ICs1
MTMxLDEwIEBAIHdlYmtpdC5vcmcvYi8yMzQ5NzcgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9mb2N1cy1lCiAjIFRlc3QgaXMgY3Jhc2hpbmcgc2lu
Y2UgaW1wb3J0LgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVs
ZXMvZGVkaWNhdGVkLXdvcmtlci1pbXBvcnQtY3NwLmh0bWwgWyBTa2lwIF0KIAorIyBUZXN0IGlz
IGZsYWt5IGJlY2F1c2UgTWVzc2FnZVBvcnQgbWVzc2FnZXMgbWF5IGdldCByZWNlaXZlZCBpbiBh
IGRpZmZlcmVudCBvcmRlciB3aGVuIHNldmVyYWwgTWVzc2FnZVBvcnRzIGFyZSBpbnZvbHZlZCwK
KyMgZHVlIHRvIGhvdyBNZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpIGlzIGltcGxlbWVu
dGVkLgoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3Jr
ZXItbmFtZS12aWEtb3B0aW9ucy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIEZhaWx1
cmUgUGFzcyBdCisKICMgUGx1Z2lucwogIyBGSVhNRTogUmVtb3ZlIHRoZXNlIHRlc3RzLgogcGx1
Z2lucy8gWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvY29ubmVjdC1zcmMvc2hhcmVk
LXdvcmtlci1jb25uZWN0LXNyYy1hbGxvd2VkLnN1Yi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3JrZXItY29ubmVjdC1zcmMtYWxsb3dlZC5zdWItZXhwZWN0
ZWQudHh0CmluZGV4IGUyODM5NWVkODNjNjY0YjJjYTYwZDVkYTg3YmNmZjBlMDM5OWQ1MDEuLjM4
MmI5NTY5NWJjYjA1ZDUyY2UwZWNhMjA4YTg4MDY3YTgzZTE3NDcgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvY29ubmVjdC1zcmMvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1hbGxvd2VkLnN1Yi1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9zaGFyZWQtd29ya2VyLWNv
bm5lY3Qtc3JjLWFsbG93ZWQuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJsb2Nr
ZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwOi8vd3d3MS5sb2NhbGhvc3Q6ODgwMC9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9zdXBwb3J0L2ZhaWwuYXNpcwogCiBGQUlMIEV4cGVjdGluZyBs
b2dzOiBbInhociBhbGxvd2VkIiwiVEVTVCBDT01QTEVURSJdIGFzc2VydF91bnJlYWNoZWQ6IHVu
ZXhwZWN0ZWQgbG9nOiB4aHIgYmxvY2tlZCBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9zaGFyZWQtd29ya2VyLWNvbm5lY3Qtc3Jj
LWJsb2NrZWQuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvY29ubmVjdC1zcmMvc2hhcmVk
LXdvcmtlci1jb25uZWN0LXNyYy1ibG9ja2VkLnN1Yi1leHBlY3RlZC50eHQKaW5kZXggZjQ5MGVh
NzcxMmZlODFjNzc0MWRkZTA0MTU0NTc1Mjk1MTc2ZmY1My4uNWU5NzFlMjBmNGJiOTI2M2EzMTg0
ZTMwOGNkYzdjNDk0MDZjNDhjOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9z
aGFyZWQtd29ya2VyLWNvbm5lY3Qtc3JjLWJsb2NrZWQuc3ViLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJp
dHktcG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3JrZXItY29ubmVjdC1zcmMtYmxvY2tlZC5z
dWItZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJu
YWwgVVJMIGh0dHA6Ly93d3cxLmxvY2FsaG9zdDo4ODAwL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L3N1cHBvcnQvZmFpbC5hc2lzCiBUaGlzIHRlc3QgbG9hZHMgYSBzaGFyZWQgd29ya2VyLCBkZWxp
dmVyZWQgd2l0aCBpdHMgb3duIHBvbGljeS4gVGhlIHdvcmtlciBzaG91bGQgYmUgYmxvY2tlZCBm
cm9tIG1ha2luZyBhbiBYSFIgYXMgdGhhdCBwb2xpY3kgc3BlY2lmaWVzIGEgY29ubmVjdC1zcmMg
J25vbmUnLCB0aG91Z2ggdGhpcyByZXNvdXJjZSdzIHBvbGljeSBpcyBjb25uZWN0LXNyYyAqLiBO
byByZXBvcnQgc2hvdWxkIGJlIHNlbnQgc2luY2UgdGhlIHdvcmtlcidzIHBvbGljeSBkb2Vzbid0
IHNwZWNpZnkgYSByZXBvcnQtdXJpLgogCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRl
LXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVk
LnR4dAppbmRleCAwZTk5NzI0Yjg2NGJiZjQ5MTlhNTc0OWIyOGNiMTU0YWUyNzE4M2M2Li42ODk4
YjU0YWFiNmZjMzRkMTdiMmU4YmUyZTg0M2U5YTg3MDViMzcwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXJlcG9ydC1vbmx5LnN1Yi1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1yZXBvcnQtb25s
eS5zdWItZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0
ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L3N1cHBvcnQvcmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLWZldGNoCi1CbG9ja2VkIGFjY2Vz
cyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvc3VwcG9ydC9yZXNvdXJjZS5weT9jcm9zcy1vcmlnaW4teGhyCi1CbG9ja2Vk
IGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvc3VwcG9ydC9yZXNvdXJjZS5weT9jcm9zcy1vcmlnaW4tZmV0Y2gK
IAogUEFTUyBTYW1lLW9yaWdpbiAnZmV0Y2goKScuCiBQQVNTIFNhbWUtb3JpZ2luIFhIUi4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0LXNy
Yy5zdWItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtl
ci1zY3JpcHQtc3JjLnN1Yi1leHBlY3RlZC50eHQKaW5kZXggOTc5MTA2MzAzNzg1ZWMyNTU1MzM2
ZGY0OWRiZThlMWJmYTNmNmVmYS4uYmI2NDUyZjQ0YTBhYTIxNWE4ZGRlOGEyZjMwMGQ4Y2M0NDhk
YjkzZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1z
Y3JpcHQtc3JjLnN1Yi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2Vy
L3NoYXJlZHdvcmtlci1zY3JpcHQtc3JjLnN1Yi1leHBlY3RlZC50eHQKQEAgLTIsMTAgKzIsOSBA
QAogSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCiAKIFRJTUVPVVQgc2hh
cmVkd29ya2VyLXNjcmlwdC1zcmMgVGVzdCB0aW1lZCBvdXQKLUZBSUwgQ3Jvc3Mtb3JpZ2luIGBp
bXBvcnRTY3JpcHRzKClgIG5vdCBibG9ja2VkIGluIGh0dHA6IHdpdGhvdXIgQ1NQICBBIG5ldHdv
cmsgZXJyb3Igb2NjdXJyZWQuCi1GQUlMIGBldmFsKClgIG5vdCBibG9ja2VkIGluIGh0dHA6IHdp
dGhvdXQgQ1NQIFJlZnVzZWQgdG8gZXZhbHVhdGUgYSBzdHJpbmcgYXMgSmF2YVNjcmlwdCBiZWNh
dXNlICd1bnNhZmUtZXZhbCcgaXMgbm90IGFuIGFsbG93ZWQgc291cmNlIG9mIHNjcmlwdCBpbiB0
aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogInNjcmlwdC1z
cmMgJ3NlbGYnICdub25jZS1hJyBibG9iOiBmaWxlc3lzdGVtOiIuCi0KLUZBSUwgYHNldFRpbWVv
dXQoW3N0cmluZ10pYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3V0IENTUCBhc3NlcnRfdW5y
ZWFjaGVkOiBjYWxsYmFjayBub3QgY2FsbGVkLiBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK0ZB
SUwgQ3Jvc3Mtb3JpZ2luIGBpbXBvcnRTY3JpcHRzKClgIG5vdCBibG9ja2VkIGluIGh0dHA6IHdp
dGhvdXIgQ1NQIExvYWQgZmFpbGVkCitQQVNTIGBldmFsKClgIG5vdCBibG9ja2VkIGluIGh0dHA6
IHdpdGhvdXQgQ1NQCitQQVNTIGBzZXRUaW1lb3V0KFtzdHJpbmddKWAgbm90IGJsb2NrZWQgaW4g
aHR0cDogd2l0aG91dCBDU1AKIFRJTUVPVVQgQ3Jvc3Mtb3JpZ2luIGBpbXBvcnRTY3JpcHRzKClg
IGJsb2NrZWQgaW4gaHR0cDogd2l0aCBzY3JpcHQtc3JjICdzZWxmJyBUZXN0IHRpbWVkIG91dAog
Tk9UUlVOIGBldmFsKClgIGJsb2NrZWQgaW4gaHR0cDogd2l0aCBzY3JpcHQtc3JjICdzZWxmJwog
Tk9UUlVOIGBzZXRUaW1lb3V0KFtzdHJpbmddKWAgYmxvY2tlZCBpbiBodHRwOiB3aXRoIHNjcmlw
dC1zcmMgJ3NlbGYnCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3NjcmlwdC1zcmMvd29ya2VyLXNl
dC10aW1lb3V0LnN1Yi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3NjcmlwdC1zcmMvd29ya2Vy
LXNldC10aW1lb3V0LnN1Yi1leHBlY3RlZC50eHQKaW5kZXggNGVhYzFjY2MwNTI2OWYwNzY4NzUw
MjVjZDYyNGVlN2QyMTc5NmNlZi4uYjhlZTEzYjBmZmNlYTZmMTI1Y2M2OTZmMmJiYjY3MTIwM2Y4
NjhjYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91
dC5zdWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0
LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKIAogRkFJTCBEZWRpY2F0
ZWQgd29ya2VyIGluaGVyaXRzIENTUCBmcm9tIG1haW4gZG9jdW1lbnQgYXNzZXJ0X2VxdWFsczog
ZXhwZWN0ZWQgInNldFRpbWVvdXQgYWxsb3dlZCIgYnV0IGdvdCAic2V0VGltZW91dCBibG9ja2Vk
IgotRkFJTCBTaGFyZWQgd29ya2VyIGRlbGl2ZXJzIGl0cyBvd24gQ1NQIGFzc2VydF9lcXVhbHM6
IGV4cGVjdGVkICJzZXRUaW1lb3V0IGJsb2NrZWQiIGJ1dCBnb3QgInNldFRpbWVvdXQgYWxsb3dl
ZCIKK1BBU1MgU2hhcmVkIHdvcmtlciBkZWxpdmVycyBpdHMgb3duIENTUAogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3Nl
cnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
YnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1l
eHBlY3RlZC50eHQKaW5kZXggYzEwNzEzNjU1MjgwMTkyYjdjYjJlZThlNGQyZWM2NTQ3YWVmNzI2
My4uNmY4NDRkZDVkOTQ5MWEyMmU1OTVhOTBiOTYzYzA4ODgyMTkwMmQyZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJz
L29mZmxpbmUvYXBwY2FjaGUvd29ya2Vycy9hcHBjYWNoZS13b3JrZXIuaHR0cHMtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBz
LWV4cGVjdGVkLnR4dApAQCAtNSw3ICs1LDcgQEAgSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1l
c3NhZ2UgPSBudWxsCiBQQVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIGNhY2hlZCBzY3JpcHQK
IFBBU1MgRGVkaWNhdGVkIHdvcmtlciBvZiB0aGUgZmFsbGJhY2tlZCBzY3JpcHQKIFBBU1MgRGVk
aWNhdGVkIHdvcmtlciBvZiB0aGUgbm90LWluLWNhY2hlIHNjcmlwdAotUEFTUyBTaGFyZWQgd29y
a2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0Ci1QQVNTIFNoYXJlZCB3b3JrZXIgb2YgdGhlIGZhbGxi
YWNrZWQgc2NyaXB0CitGQUlMIFNoYXJlZCB3b3JrZXIgb2YgdGhlIGNhY2hlZCBzY3JpcHQgYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgIkRvbmU6IGNhY2hlZCIgYnV0IGdvdCAiRXJyb3I6IEltcG9y
dGluZyBhIG5vbi1jYWNoZWQgc2NyaXB0IG11c3QgZmFpbC4iCitGQUlMIFNoYXJlZCB3b3JrZXIg
b2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJEb25lOiBm
YWxsYmFja2VkIiBidXQgZ290ICJFcnJvcjogSW1wb3J0aW5nIGEgbm9uLWNhY2hlZCBzY3JpcHQg
bXVzdCBmYWlsLiIKIFRJTUVPVVQgU2hhcmVkIHdvcmtlciBvZiB0aGUgbm90LWluLWNhY2hlIHNj
cmlwdCBUZXN0IHRpbWVkIG91dAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9j
cm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2lu
LWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5odHRwcy1l
eHBlY3RlZC50eHQKaW5kZXggNjM1NWI2OGRlNzBiZTY2YzAxZTJiM2FlMTI3NDdkNWNkMmMzNDBh
Yi4uYzhiZjc1ZTdlYTg1MzBmYmM4YjQyMDAzMmFmNGYwMzlkZGRlNTM2NyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9y
aWdpbi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0
cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L2Nyb3NzLW9yaWdpbi1p
c29sYXRlZC1wZXJtaXNzaW9uLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMjAsNyArMjAsNyBAQCBQ
QVNTIGRlZGljYXRlZCB3b3JrZXI6IHNjaGVtZSA9IGJsb2IsIHZhbHVlID0gKgogUEFTUyBkZWRp
Y2F0ZWQgd29ya2VyOiBzY2hlbWUgPSBibG9iLCB2YWx1ZSA9IHNlbGYKIEZBSUwgZGVkaWNhdGVk
IHdvcmtlcjogc2NoZW1lID0gYmxvYiwgdmFsdWUgPSAoXCkgYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgZmFsc2UgYnV0IGdvdCB0cnVlCiBQQVNTIHNoYXJlZCB3b3JrZXI6IHdpdGhDb29wQ29lcCA9
IGZhbHNlCi1QQVNTIHNoYXJlZCB3b3JrZXI6IHdpdGhDb29wQ29lcCA9IHRydWUKK0ZBSUwgc2hh
cmVkIHdvcmtlcjogd2l0aENvb3BDb2VwID0gdHJ1ZSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCB0
cnVlIGJ1dCBnb3QgZmFsc2UKIFBBU1Mgc2VydmljZSB3b3JrZXI6IHdpdGhDb29wQ29lcCA9IGZh
bHNlCiBGQUlMIHNlcnZpY2Ugd29ya2VyOiB3aXRoQ29vcENvZXAgPSB0cnVlIGFzc2VydF9lcXVh
bHM6IGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVk
ZGVyLXBvbGljeS9zaGFyZWQtd29ya2Vycy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVk
ZGVyLXBvbGljeS9zaGFyZWQtd29ya2Vycy5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggMzM5OGJk
ODg5MzFiMjIwOGEyODA4OTliZWQ3NGUyNGRhM2Y0ZjYzNi4uNGM4NjZlYjI5MjYzYmFmODdlZGMx
OWVlOWNlMTUwMTQ2MTA5MGJjZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvc2hh
cmVkLXdvcmtlcnMuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5
L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMiw3ICsyLDcgQEAgVmVyaWZ5
IHRoZSBDcm9zcy1PcmlnaW4gRW1iZWRkZXIgUG9saWN5IGZvciBTaGFyZWQgV29ya2VycyBieSBw
ZXJmb3JtaW5nIGEgY3Jvc3MKIAogCiBQQVNTIGRlZmF1bHQgcG9saWN5IChkZXJpdmVkIGZyb20g
cmVzcG9uc2UpCi1GQUlMICJyZXF1aXJlLWNvcnAiIChkZXJpdmVkIGZyb20gcmVzcG9uc2UpIGFz
c2VydF9lcXVhbHM6IGV4cGVjdGVkICJmYWlsdXJlIiBidXQgZ290ICJzdWNjZXNzIgorUEFTUyAi
cmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIHJlc3BvbnNlKQogUEFTUyBkZWZhdWx0IHBvbGlj
eSAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBkdWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAtIGJs
b2IgVVJMKQogRkFJTCAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBkdWUg
dG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAtIGJsb2IgVVJMKSBhc3NlcnRfZXF1YWxzOiBleHBlY3Rl
ZCAiZmFpbHVyZSIgYnV0IGdvdCAic3VjY2VzcyIKIFBBU1MgZGVmYXVsdCBwb2xpY3kgKGRlcml2
ZWQgZnJvbSBvd25lciBzZXQgZHVlIHRvIHVzZSBvZiBsb2NhbCBzY2hlbWUgLSBkYXRhIFVSTCkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5jZS5zdWIu
aHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVyaXRh
bmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggNzViMWQzM2U1MjYwMWFkMGQzYWRkZjhi
ZGU1NTVlMTVkYjIyZmYyMi4uYjJiZjJlM2JmZjNmZTJlMzA3YThiYzk0OWUyMjFkZjAwNmE5NjNm
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVyaXRhbmNlLnN1
Yi5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWlu
aGVyaXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw2IEBACiBCbG9ja2Vk
IGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29tbW9u
L2JsYW5rLmh0bWwKIEJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5s
b2NhbGhvc3Q6OTQ0NC9jb21tb24vYmxhbmsuaHRtbAogQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJu
YWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbW1vbi9ibGFuay5odG1sCi1CbG9j
a2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29t
bW9uL2JsYW5rLmh0bWwKIAogUEFTUyBUZXN0IHRoYXQgbG9jYWwgc2NoZW1lIHdvcmtlcnMgaW5o
ZXJpdCBDT0VQOiByZXF1aXJlLWNvcnAgZnJvbSB0aGUgY3JlYXRpbmcgZG9jdW1lbnQKIFBBU1Mg
YmxvYiBVUkwgZGVkaWNhdGVkIHdvcmtlcjogU2FtZSBvcmlnaW4gc2hvdWxkIGJlIGFsbG93ZWQu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9jbGFpbS1zaGFyZWQtd29ya2VyLWZldGNo
Lmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2NsYWltLXNoYXJlZC13b3Jr
ZXItZmV0Y2guaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IGRkMzVhYWUyNWY3N2ZlNDQ1MTYzYjE5
NDZiYmI2MzIzNGNmMjBmZDcuLjkwZDkxYWQ1MTAxZjUxMGQ0YjRlNDcyOTVhNmM2MDdkMGQ4ZmJj
NzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2NsYWltLXNoYXJlZC13b3JrZXItZmV0
Y2guaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2NsYWltLXNoYXJl
ZC13b3JrZXItZmV0Y2guaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsNCBAQAogCi1QQVNT
IGZldGNoKCkgaW4gU2hhcmVkV29ya2VyIHNob3VsZCBiZSBpbnRlcmNlcHRlZCBhZnRlciB0aGUg
Y2xpZW50IGlzIGNsYWltZWQuCisKK0ZBSUwgZmV0Y2goKSBpbiBTaGFyZWRXb3JrZXIgc2hvdWxk
IGJlIGludGVyY2VwdGVkIGFmdGVyIHRoZSBjbGllbnQgaXMgY2xhaW1lZC4gYXNzZXJ0X2VxdWFs
czogZmV0Y2goKSBpbiB0aGUgc2hhcmVkIHdvcmtlciBzaG91bGQgYmUgaW50ZXJjZXB0ZWQuIGV4
cGVjdGVkICJJbnRlcmNlcHRlZCEiIGJ1dCBnb3QgImEgc2ltcGxlIHRleHQgZmlsZVxuIgogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvU2hhcmVkV29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyLXNj
cmlwdC1lcnJvci1leHBlY3RlZC50eHQKaW5kZXggZTgxMzM4MDBkMmNhYTZhOTYyOGU5NTk0ZmI3
ODIxNDcxNzg0NDBlNS4uZmQyZGYwZmU2MDlhNjRmZjQzZWI1ODRkNDQzZWZiMDZlN2RlNGRiYiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL1NoYXJlZFdvcmtlci1zY3JpcHQtZXJyb3ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3Jr
ZXItc2NyaXB0LWVycm9yLWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDMgQEAKLUNPTlNPTEUgTUVT
U0FHRTogRXJyb3I6IGFzc2VydF91bnJlYWNoZWQ6IEZBSUw6IG9uZXJyb3IgaW52b2tlZCBmb3Ig
YSBzY3JpcHQgZXJyb3IuIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQotCi1IYXJuZXNzIEVycm9y
IChGQUlMKSwgbWVzc2FnZSA9IEVycm9yOiBhc3NlcnRfdW5yZWFjaGVkOiBGQUlMOiBvbmVycm9y
IGludm9rZWQgZm9yIGEgc2NyaXB0IGVycm9yLiBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKIAog
UEFTUyBUZXN0IHNjcmlwdCBlcnJvciB1bmhhbmRsZWQuCiBQQVNTIFRlc3Qgc2NyaXB0IGVycm9y
IGhhbmRsZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyX2RhdGFVcmwtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdv
cmtlcl9kYXRhVXJsLWV4cGVjdGVkLnR4dAppbmRleCA5OTVhMDYwMTliODQ4ZDQzNjdhYjViY2E5
OGY4NjIyODFkMWJiYzhiLi45YjU4MjBhYWU4Y2IzMzNkODgwNTlhNDYxYWQxYmVhN2Q0NTY2MGE3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvU2hhcmVkV29ya2VyX2RhdGFVcmwtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJf
ZGF0YVVybC1leHBlY3RlZC50eHQKQEAgLTEsMTMgKzEsNSBAQAotQ09OU09MRSBNRVNTQUdFOiBF
cnJvcjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290IDEKIAogCi1IYXJuZXNzIEVy
cm9yIChGQUlMKSwgbWVzc2FnZSA9IEVycm9yOiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1
dCBnb3QgMQotCi1QQVNTIERhdGEgVVJMIG5vdCBzaGFyZWQgYnkgY3Jvc3Mtb3JpZ2luIFNoYXJl
ZFdvcmtlcnMKLVRJTUVPVVQgRGF0YSBVUkxzIHNoYXJlZCBieSBzYW1lLW9yaWdpbiBTaGFyZWRX
b3JrZXJzIFRlc3QgdGltZWQgb3V0Ci0KLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0g
RXJyb3I6IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDIgYnV0IGdvdCAxCi0KIFBBU1MgRGF0YSBV
Ukwgbm90IHNoYXJlZCBieSBjcm9zcy1vcmlnaW4gU2hhcmVkV29ya2VycwotVElNRU9VVCBEYXRh
IFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtlcnMgVGVzdCB0aW1lZCBvdXQK
K1BBU1MgRGF0YSBVUkxzIHNoYXJlZCBieSBzYW1lLW9yaWdpbiBTaGFyZWRXb3JrZXJzCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQu
dHh0CmluZGV4IDU3NmU2ZDJiN2VkMmZhNzAyM2NmMjNiOTZhMDY5MWZkNWFiY2EwNTkuLjRhMjZi
ZTkyOWE4ZDc1MjUwOGI0ZjdmNzVjMDdiM2VhOGVkYzhjYWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJl
ZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hh
cmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsx
LDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxo
b3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQu
cHkKIAogUEFTUyBTdGF0aWMgaW1wb3J0LgogRkFJTCBTdGF0aWMgaW1wb3J0IChjcm9zcy1vcmln
aW4pLiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogIkltcG9y
dGluZyBhIG1vZHVsZSBzY3JpcHQgZmFpbGVkLiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3Jr
ZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQt
d29ya2VyLWltcG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CmluZGV4IDRm
ODY0MWU1MTQ4MGYwMTMwNjc1YjkxMzY0ZWNjNGYwZmEyNzIwYTkuLjI5OTdmN2UxZjMwOGU4MDgx
OTdkYzhkNDgyMDQ5ZDUzY2FiNGYzYmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdv
cmtlci1pbXBvcnQtZGF0YS11cmwtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsx
LDMgQEAKLUNPTlNPTEUgTUVTU0FHRTogT3JpZ2luIG51bGwgaXMgbm90IGFsbG93ZWQgYnkgQWNj
ZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luLiBTdGF0dXMgY29kZTogMjAwCiAKIEhhcm5lc3MgRXJy
b3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29y
a2VyLWltcG9ydC1kYXRhLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtl
ci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dAppbmRleCBlYWM3Zjk1ZGU2ZjJk
ODdjN2IyMTNkZmVjYWIxMzg4YzY4ODRkYzFkLi5jYmMwNDI5ZTBjNzE3MzUyODBlZmI0NDQ0Y2Ni
YWE4MjEzNjhkZjExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVy
bC53aW5kb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEt
dXJsLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0
byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQzL3dvcmtlcnMvbW9kdWxl
cy9yZXNvdXJjZXMvZXhwb3J0LW9uLWxvYWQtc2NyaXB0LnB5CiAKIEhhcm5lc3MgRXJyb3IgKFRJ
TUVPVVQpLCBtZXNzYWdlID0gbnVsbAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWlt
cG9ydC1mYWlsdXJlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWZhaWx1
cmUtZXhwZWN0ZWQudHh0CmluZGV4IDRlOWU1MTkzNzJiYjFmNTE5NTJmMzI1ODBiMDRiNzkzOGFk
ODc1NjkuLmQwNDkwMzU5Y2U3ZmJmYzQzODYzMDhkMGY0MzM3ZWI4ZGFiMmU5OTIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWZhaWx1cmUtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVz
L3NoYXJlZC13b3JrZXItaW1wb3J0LWZhaWx1cmUtZXhwZWN0ZWQudHh0CkBAIC0xLDkgKzEsOCBA
QAotQ09OU09MRSBNRVNTQUdFOiBDYW5ub3QgbG9hZCBzdGF0aWMtaW1wb3J0LXdvcmtlci5qcy4K
IAogUEFTUyBpbXBvcnRTY3JpcHRzKCkgb24gbW9kdWxlIHdvcmtlciBzaG91bGQgdGhyb3cgYW4g
ZXhjZXB0aW9uLgogUEFTUyBXb3JrZXIgY29uc3RydWN0aW9uIGZvciBub24tZXhpc3RlbnQgc2Ny
aXB0IHNob3VsZCBkaXNwYXRjaCBhbiBFcnJvckV2ZW50LgogUEFTUyBTdGF0aWMgaW1wb3J0IGZv
ciBub24tZXhpc3RlbnQgc2NyaXB0IHNob3VsZCBkaXNwYXRjaCBhbiBFcnJvckV2ZW50LgogUEFT
UyBEeW5hbWljIGltcG9ydCBmb3Igbm9uLWV4aXN0ZW50IHNjcmlwdCBzaG91bGQgdGhyb3cgYW4g
ZXhjZXB0aW9uLgogUEFTUyBTaGFyZWRXb3JrZXIgY29uc3RydWN0aW9uIGZvciBhbiBpbnZhbGlk
IFVSTCBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uLgotRkFJTCBTaGFyZWRXb3JrZXIgY29uc3Ry
dWN0aW9uIGZvciBhIGZpbGUgVVJMIHNob3VsZCB0aHJvdyBhbiBleGNlcHRpb24uIGFzc2VydF90
aHJvd3NfZG9tOiBmdW5jdGlvbiAiKCkgPT4gbmV3IFNoYXJlZFdvcmtlcihzY3JpcHRVUkwsIHsg
dHlwZTogJ21vZHVsZScgfSkiIGRpZCBub3QgdGhyb3cKK1BBU1MgU2hhcmVkV29ya2VyIGNvbnN0
cnVjdGlvbiBmb3IgYSBmaWxlIFVSTCBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uLgogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1yZWZlcnJlci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxl
cy9zaGFyZWQtd29ya2VyLWltcG9ydC1yZWZlcnJlci1leHBlY3RlZC50eHQKaW5kZXggZmUxYjlk
OTNjMDgwMTFiNTBlOTQxZjRlMTIzNjA2N2FiYmQzZjIzZS4uN2I0ZWU4YzE5ZWQzOWQwYzBhN2E1
MzI2MmUwZjBiZmQzOTYyM2E2YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQt
cmVmZXJyZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LXJlZmVy
cmVyLWV4cGVjdGVkLnR4dApAQCAtMSwyMSArMSwxNSBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0
ZXJuYWwgVVJMIGh0dHBzOi8vd3d3MS5sb2NhbGhvc3Q6OTQ0My93b3JrZXJzL21vZHVsZXMvcmVz
b3VyY2VzL2V4cG9ydC1yZWZlcnJlci1jaGVja2VyLnB5Ci1CbG9ja2VkIGFjY2VzcyB0byBleHRl
cm5hbCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQzL3dvcmtlcnMvbW9kdWxlcy9yZXNv
dXJjZXMvZXhwb3J0LXJlZmVycmVyLWNoZWNrZXIucHkKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVy
bmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291
cmNlcy9leHBvcnQtcmVmZXJyZXItY2hlY2tlci5weQotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJu
YWwgVVJMIGh0dHBzOi8vd3d3MS5sb2NhbGhvc3Q6OTQ0My93b3JrZXJzL21vZHVsZXMvcmVzb3Vy
Y2VzL2V4cG9ydC1yZWZlcnJlci1jaGVja2VyLnB5Ci1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5h
bCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQzL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJj
ZXMvZXhwb3J0LXJlZmVycmVyLWNoZWNrZXIucHkKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFs
IFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNl
cy9leHBvcnQtcmVmZXJyZXItY2hlY2tlci5weQogCiBQQVNTIFNhbWUtb3JpZ2luIHRvcC1sZXZl
bCBtb2R1bGUgc2NyaXB0IGxvYWRpbmcgd2l0aCAibm8tcmVmZXJyZXIiIHJlZmVycmVyIHBvbGlj
eQogUEFTUyBTYW1lLW9yaWdpbiB0b3AtbGV2ZWwgbW9kdWxlIHNjcmlwdCBsb2FkaW5nIHdpdGgg
Im9yaWdpbiIgcmVmZXJyZXIgcG9saWN5CiBQQVNTIFNhbWUtb3JpZ2luIHRvcC1sZXZlbCBtb2R1
bGUgc2NyaXB0IGxvYWRpbmcgd2l0aCAic2FtZS1vcmlnaW4iIHJlZmVycmVyIHBvbGljeQotUEFT
UyBTYW1lLW9yaWdpbiBzdGF0aWMgaW1wb3J0IHdpdGggIm5vLXJlZmVycmVyIiByZWZlcnJlciBw
b2xpY3kuCi1QQVNTIFNhbWUtb3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0aCAib3JpZ2luIiByZWZl
cnJlciBwb2xpY3kuCitGQUlMIFNhbWUtb3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0aCAibm8tcmVm
ZXJyZXIiIHJlZmVycmVyIHBvbGljeS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIiIgYnV0IGdv
dCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvc3RhdGlj
LWltcG9ydC1zYW1lLW9yaWdpbi1yZWZlcnJlci1jaGVja2VyLXdvcmtlci5qcyIKK0ZBSUwgU2Ft
ZS1vcmlnaW4gc3RhdGljIGltcG9ydCB3aXRoICJvcmlnaW4iIHJlZmVycmVyIHBvbGljeS4gYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC8iIGJ1dCBnb3QgImh0
dHA6Ly9sb2NhbGhvc3Q6ODgwMC93b3JrZXJzL21vZHVsZXMvcmVzb3VyY2VzL3N0YXRpYy1pbXBv
cnQtc2FtZS1vcmlnaW4tcmVmZXJyZXItY2hlY2tlci13b3JrZXIuanMiCiBQQVNTIFNhbWUtb3Jp
Z2luIHN0YXRpYyBpbXBvcnQgd2l0aCAic2FtZS1vcmlnaW4iIHJlZmVycmVyIHBvbGljeS4KIEZB
SUwgQ3Jvc3Mtb3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0aCAibm8tcmVmZXJyZXIiIHJlZmVycmVy
IHBvbGljeS4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9i
amVjdCAiVHlwZUVycm9yOiBUeXBlIGVycm9yIgogRkFJTCBDcm9zcy1vcmlnaW4gc3RhdGljIGlt
cG9ydCB3aXRoICJvcmlnaW4iIHJlZmVycmVyIHBvbGljeS4gcHJvbWlzZV90ZXN0OiBVbmhhbmRs
ZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBUeXBlIGVycm9yIgog
RkFJTCBDcm9zcy1vcmlnaW4gc3RhdGljIGltcG9ydCB3aXRoICJzYW1lLW9yaWdpbiIgcmVmZXJy
ZXIgcG9saWN5LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTog
b2JqZWN0ICJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiCi1GQUlMIFNhbWUtb3JpZ2luIGR5bmFtaWMg
aW1wb3J0IHdpdGggIm5vLXJlZmVycmVyIiByZWZlcnJlciBwb2xpY3kuIGFzc2VydF9lcXVhbHM6
IGV4cGVjdGVkICIiIGJ1dCBnb3QgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC93b3JrZXJzL21vZHVs
ZXMvcmVzb3VyY2VzL2R5bmFtaWMtaW1wb3J0LXNhbWUtb3JpZ2luLXJlZmVycmVyLWNoZWNrZXIt
d29ya2VyLmpzIgotRkFJTCBTYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydCB3aXRoICJvcmlnaW4i
IHJlZmVycmVyIHBvbGljeS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhv
c3Q6ODgwMC8iIGJ1dCBnb3QgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC93b3JrZXJzL21vZHVsZXMv
cmVzb3VyY2VzL2R5bmFtaWMtaW1wb3J0LXNhbWUtb3JpZ2luLXJlZmVycmVyLWNoZWNrZXItd29y
a2VyLmpzIgorUEFTUyBTYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydCB3aXRoICJuby1yZWZlcnJl
ciIgcmVmZXJyZXIgcG9saWN5LgorUEFTUyBTYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydCB3aXRo
ICJvcmlnaW4iIHJlZmVycmVyIHBvbGljeS4KIFBBU1MgU2FtZS1vcmlnaW4gZHluYW1pYyBpbXBv
cnQgd2l0aCAic2FtZS1vcmlnaW4iIHJlZmVycmVyIHBvbGljeS4KIEZBSUwgQ3Jvc3Mtb3JpZ2lu
IGR5bmFtaWMgaW1wb3J0IHdpdGggIm5vLXJlZmVycmVyIiByZWZlcnJlciBwb2xpY3kuIHByb21p
c2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJv
cjogVHlwZSBlcnJvciIKIEZBSUwgQ3Jvc3Mtb3JpZ2luIGR5bmFtaWMgaW1wb3J0IHdpdGggIm9y
aWdpbiIgcmVmZXJyZXIgcG9saWN5LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24g
d2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxl
cy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdv
cmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4dAppbmRleCA1NzZlNmQyYjdlZDJmYTcwMjNj
ZjIzYjk2YTA2OTFmZDVhYmNhMDU5Li40YTI2YmU5MjlhOGQ3NTI1MDhiNGY3Zjc1YzA3YjNlYThl
ZGM4Y2FmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQK
QEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93
d3cxLmxvY2FsaG9zdDo5NDQzL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LW9uLWxv
YWQtc2NyaXB0LnB5CiAKIFBBU1MgU3RhdGljIGltcG9ydC4KIEZBSUwgU3RhdGljIGltcG9ydCAo
Y3Jvc3Mtb3JpZ2luKS4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFs
dWU6ICJJbXBvcnRpbmcgYSBtb2R1bGUgc2NyaXB0IGZhaWxlZC4iCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9z
aGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVk
LXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAppbmRleCBlMWJlZGY1NDMw
ZWZlNzVhNTlhM2M0OTg5YzU1ZDZmZjZjMTk2NTFhLi5hNzBmMDVhZjU0ZjRiYmY2MjUyZDdlNmJl
OWUwMmE3ODdlMTFmYmFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3Jl
ZGVudGlhbHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1jcmVk
ZW50aWFscy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0byBl
eHRlcm5hbCBVUkwgaHR0cDovL3d3dzEubG9jYWxob3N0Ojg4MDAvd29ya2Vycy9tb2R1bGVzL3Jl
c291cmNlcy9leHBvcnQtY3JlZGVudGlhbHMucHkKIAogSGFybmVzcyBFcnJvciAoVElNRU9VVCks
IG1lc3NhZ2UgPSBudWxsCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwNC1leHBlY3RlZC50eHQKaW5k
ZXggMDE4ZGI2MDQ1NjlkMDZmMjcyMWM4Y2IzOTQ2ZjYwOGE0ZGM2ZTk4Yi4uY2ZlNDY1NTY3NWNk
MDQ5YWI3YTVlYjkxYjY3ZGRhOGViNTBkZGI0NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13
b3JrZXJzLzAwNC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwNC1l
eHBlY3RlZC50eHQKQEAgLTEsNSArMSwzIEBACiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBt
ZXNzYWdlID0gbnVsbAotCi1OT1RSVU4gc2hhcmVkIHdvcmtlciB3aXRoIG11bHRpcGxlIGRvY3Vt
ZW50cworUEFTUyBzaGFyZWQgd29ya2VyIHdpdGggbXVsdGlwbGUgZG9jdW1lbnRzCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKaW5kZXggOTdhNGU3YTczYTYzZmRjNmUzMjAy
MTI3M2FmYzgzM2MwMWIyYjQ3MC4uMDlmNjcyZDFjNjIxN2EwYzViYTMxZmVjNjRkMmI5MzVjNTM4
ZmUyZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSwz
IEBACiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1USU1FT1VU
IG1lc3NhZ2VjaGFubmVsIGluIHNoYXJlZCB3b3JrZXIgVGVzdCB0aW1lZCBvdXQKK1BBU1MgbWVz
c2FnZWNoYW5uZWwgaW4gc2hhcmVkIHdvcmtlcgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3JlcG9ydGlu
Zy1lcnJvcnMvMDAzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvcmVwb3J0aW5nLWVycm9ycy8wMDMtZXhw
ZWN0ZWQudHh0CmluZGV4IGY4ZjZlZWMzNDQzN2QzZWRlNTdiODZiZmFkMzdiYmJkNzU3MGVlOGQu
LmE1NjFmYzNjZGJhYzkyZjAzM2FiOTVmMGU3N2RjZGYzYWZkYjM3ZmUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRp
Y3MvcmVwb3J0aW5nLWVycm9ycy8wMDMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvcmVwb3J0aW5n
LWVycm9ycy8wMDMtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIHNoYXJlZCB3
b3JrZXIsIG5vIGVycm9yIGV2ZW50IG9uIHdvcmtlciBvciBwb3J0IGFzc2VydF91bnJlYWNoZWQ6
IGVycm9yIG9uIHdvcmtlciBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK1BBU1Mgc2hhcmVkIHdv
cmtlciwgbm8gZXJyb3IgZXZlbnQgb24gd29ya2VyIG9yIHBvcnQKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGlj
cy9yZXBvcnRpbmctZXJyb3JzLzAwNC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3JlcG9ydGluZy1lcnJv
cnMvMDA0LWV4cGVjdGVkLnR4dAppbmRleCA0NzEzZjdmMDY5YjVjMmU3MGYyNDAxNThhODNhMTgw
ZTZkNDFhMDM2Li4yMzA0NzcyMmY3MTMwMjgxOTNkODkxMWM5ODdlM2YwOTI2MDFlZjRjIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvc2VtYW50aWNzL3JlcG9ydGluZy1lcnJvcnMvMDA0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNz
L3JlcG9ydGluZy1lcnJvcnMvMDA0LWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKIAotRkFJ
TCBzaGFyZWQgd29ya2VyIGluIHR3byBkb2N1bWVudHMgYW5kIHdpbmRvdy5vbmVycm9yIGFzc2Vy
dF91bnJlYWNoZWQ6IChvdXRlcikgZXJyb3Igb24gd29ya2VyIFJlYWNoZWQgdW5yZWFjaGFibGUg
Y29kZQorUEFTUyBzaGFyZWQgd29ya2VyIGluIHR3byBkb2N1bWVudHMgYW5kIHdpbmRvdy5vbmVy
cm9yCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dAppbmRleCBh
MDg5YzIyNDg5ZTJkNjY3OGU1YjI0ZTJmZmVmZTAyNDNjMWVhOGNkLi4xOWU0NmIwOWE1NmFjODMz
NTMzZDU3YjIwMWE5ZTYwMDA0ODdiMGM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2It
dXJsLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItZnJvbS1ibG9iLXVybC53aW5k
b3ctZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNSBAQAogCi1IYXJuZXNzIEVycm9yIChUSU1FT1VU
KSwgbWVzc2FnZSA9IG51bGwKLQotRkFJTCBDcmVhdGluZyBhIHNoYXJlZCB3b3JrZXIgZnJvbSBh
IGJsb2IgVVJMIHdvcmtzLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAid29ya2VyX09LXzIiIGJ1
dCBnb3QgIndvcmtlcl9PS18xIgorUEFTUyBDcmVhdGluZyBhIHNoYXJlZCB3b3JrZXIgZnJvbSBh
IGJsb2IgVVJMIHdvcmtzLgogUEFTUyBDcmVhdGluZyBhIHNoYXJlZCB3b3JrZXIgZnJvbSBhIGJs
b2IgVVJMIHdvcmtzIGltbWVkaWF0ZWx5IGJlZm9yZSByZXZva2luZy4KLVRJTUVPVVQgQ29ubmVj
dGluZyB0byBhIHNoYXJlZCB3b3JrZXIgb24gYSByZXZva2VkIGJsb2IgVVJMIHdvcmtzLiBUZXN0
IHRpbWVkIG91dAorUEFTUyBDb25uZWN0aW5nIHRvIGEgc2hhcmVkIHdvcmtlciBvbiBhIHJldm9r
ZWQgYmxvYiBVUkwgd29ya3MuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWluLWRhdGEtdXJsLWNv
bnRleHQud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWluLWRhdGEtdXJsLWNvbnRleHQu
d2luZG93LWV4cGVjdGVkLnR4dAppbmRleCAyMDZmNTZlMGQxMDdhNjVhYzA2ZjVjYTVkNGNlZjdj
Yjg2YmY0YWNkLi4wNWU2NmEzYzc2MDFhYjdkNDBlYjZhZWRiMWNiZWFhZTA2OTNjNGE1IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvc2hhcmVkLXdvcmtlci1pbi1kYXRhLXVybC1jb250ZXh0LndpbmRvdy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L3NoYXJlZC13b3JrZXItaW4tZGF0YS11cmwtY29udGV4dC53aW5kb3ctZXhwZWN0ZWQudHh0CkBA
IC0xLDQgKzEsNSBAQAorQ09OU09MRSBNRVNTQUdFOiBDYW5ub3QgbG9hZCBodHRwOi8vbG9jYWxo
b3N0Ojg4MDAvd29ya2Vycy9zdXBwb3J0L3Bvc3QtbWVzc2FnZS1vbi1sb2FkLXdvcmtlci5qcy4K
IAotRkFJTCBDcmVhdGUgYSBzaGFyZWQgd29ya2VyIGluIGEgZGF0YSB1cmwgZnJhbWUgYXNzZXJ0
X2VxdWFsczogZXhwZWN0ZWQgIlBBU1MiIGJ1dCBnb3QgIlNoYXJlZFdvcmtlciBjb25zdHJ1Y3Rp
b24gdW5leHBlY3RlZGx5IHN5bmNocm9ub3VzbHkgZmFpbGVkIgotRkFJTCBDcmVhdGUgYSBkYXRh
IHVybCBzaGFyZWQgd29ya2VyIGluIGEgZGF0YSB1cmwgZnJhbWUgYXNzZXJ0X2VxdWFsczogZXhw
ZWN0ZWQgIlBBU1MiIGJ1dCBnb3QgIlNoYXJlZFdvcmtlciBjb25zdHJ1Y3Rpb24gdW5leHBlY3Rl
ZGx5IHN5bmNocm9ub3VzbHkgZmFpbGVkIgorUEFTUyBDcmVhdGUgYSBzaGFyZWQgd29ya2VyIGlu
IGEgZGF0YSB1cmwgZnJhbWUKK1BBU1MgQ3JlYXRlIGEgZGF0YSB1cmwgc2hhcmVkIHdvcmtlciBp
biBhIGRhdGEgdXJsIGZyYW1lCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlv
bnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQK
aW5kZXggNmZmZWUyNzM5MGQ5NzhlNGU2YjU2OTFmOGRiYTdlM2VlZDBhODMyZC4uYWU0NWI0ZDI3
Mzk2NDQ2OTNjMmMxNjQ5NzVjNTNkNTY2YmJhMjhmNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFt
ZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9u
cy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgVGVzdCB0aGUgbmFtZSBwcm9w
ZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBtaXhpbmcgY29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29u
c3RydWN0b3Igc3RyaW5ncyBFcnJvcjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290
IDEKK1BBU1MgVGVzdCB0aGUgbmFtZSBwcm9wZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBtaXhpbmcg
Y29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29uc3RydWN0b3Igc3RyaW5ncwogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW9wdGlv
bnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CmluZGV4IGY2NTY5NDYxNTBkYjE3YzA5YmJjNGFlM2Vk
YTg1OGY5MTczZWQ2ZTEuLjRmOTlhMTM0MDllN2U4Njg0NGI1NTE4YzUxMGMzMDhmZGZlNjA3MjMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFy
ZWQtd29ya2VyLW9wdGlvbnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CkBAIC0xLDI4ICsxLDI2IEBA
CiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1USU1FT1VUIENv
bm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBi
ZSBibG9ja2VkOiBkZWZhdWx0IHRvIG1vZHVsZSBUZXN0IHRpbWVkIG91dAotTk9UUlVOIENvbm5l
Y3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBi
bG9ja2VkOiBtb2R1bGUgdG8gZGVmYXVsdAotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBjbGFzc2ljIHRv
IG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVu
dCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBtb2R1bGUgdG8gY2xhc3NpYwotTk9UUlVOIENv
bm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBi
ZSBibG9ja2VkOiBkZWZhdWx0IHRvIG9taXQgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBkZWZhdWx0IHRvIGluY2x1ZGUgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hh
cmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0
IHRvIGRlZmF1bHQgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIHNhbWUt
b3JpZ2luIGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0
aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBpbmNsdWRlIGlu
IGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJl
bnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBjbGFz
c2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9w
dGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIGluY2x1ZGUgaW4gY2xhc3Np
YwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIGRlZmF1bHQgaW4gY2xhc3NpYwotTk9U
UlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNo
b3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5l
Y3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBi
bG9ja2VkOiBpbmNsdWRlIHRvIHNhbWUtb3JpZ2luIGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0
aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxv
Y2tlZDogZGVmYXVsdCB0byBvbWl0IGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hh
cmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZh
dWx0IHRvIGluY2x1ZGUgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29y
a2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gZGVm
YXVsdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBzYW1lLW9yaWdpbiBp
biBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJl
bnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBpbmNsdWRlIGluIG1vZHVsZQot
Tk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25z
IHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBvbWl0IGluIG1vZHVsZQotTk9UUlVO
IENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3Vs
ZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIG1vZHVsZQotTk9UUlVOIENv
bm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBi
ZSBibG9ja2VkOiBpbmNsdWRlIHRvIGRlZmF1bHQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGlu
ZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2Nr
ZWQ6IGluY2x1ZGUgdG8gb21pdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJl
ZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVk
ZSB0byBzYW1lLW9yaWdpbiBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29y
a2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8g
bW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBtb2R1bGUgdG8gZGVmYXVsdAorUEFTUyBDb25uZWN0
aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxv
Y2tlZDogY2xhc3NpYyB0byBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2Vy
IHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG1vZHVsZSB0byBjbGFz
c2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIG9taXQgaW4gY2xhc3NpYworUEFTUyBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogZGVmYXVsdCB0byBpbmNsdWRlIGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGlu
ZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2Nr
ZWQ6IG9taXQgdG8gZGVmYXVsdCBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVk
IHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRv
IHNhbWUtb3JpZ2luIGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2Vy
IHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVk
ZSBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZl
cmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBvbWl0IGluIGNs
YXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9w
dGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIGluY2x1ZGUgaW4gY2xhc3Np
YworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9u
cyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGluIGNsYXNzaWMKK1BBU1Mg
Q29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxk
IGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gb21pdCBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBpbmNsdWRlIHRvIHNhbWUtb3JpZ2luIGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBz
aGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRl
ZmF1bHQgdG8gb21pdCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2Vy
IHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gaW5j
bHVkZSBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlm
ZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gZGVmYXVsdCBpbiBtb2R1
bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlv
bnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gc2FtZS1vcmlnaW4gaW4gbW9kdWxlCitQQVNT
IENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3Vs
ZCBiZSBibG9ja2VkOiBvbWl0IHRvIGluY2x1ZGUgaW4gbW9kdWxlCitQQVNTIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBzYW1lLW9yaWdpbiB0byBvbWl0IGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJl
ZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1v
cmlnaW4gdG8gaW5jbHVkZSBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29y
a2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8g
ZGVmYXVsdCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGgg
ZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gb21pdCBpbiBt
b2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9w
dGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gc2FtZS1vcmlnaW4gaW4gbW9kdWxl
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMveGhyL29wZW4tdXJsLXJlZGlyZWN0ZWQtc2hhcmVkd29ya2VyLW9yaWdpbi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVu
LXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0CmluZGV4IDFl
MmQzOTkyZjZkNWRmMzIyMDdhNmIwZjYxOWE2ZDcxMTgxMjQwMGQuLjU5Y2FjYTQ4NmY4ZGVhYzA3
ODljOTdiNGZlZThhNTI1OTdhNWU1NDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL29wZW4tdXJsLXJlZGlyZWN0ZWQtc2hhcmVkd29y
a2VyLW9yaWdpbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3Jp
Z2luLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVy
bmFsIFVSTCBodHRwOi8vd3d3Mi5sb2NhbGhvc3Q6ODgwMC94aHIvcmVzb3VyY2VzL2luc3BlY3Qt
aGVhZGVycy5weT9maWx0ZXJfbmFtZT1vcmlnaW4mY29ycwogCiBGQUlMIFJlZmVyZXIgaGVhZGVy
IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJSZWZlcmVyOiBodHRwOi8vbG9jYWxob3N0Ojg4MDAv
eGhyL3Jlc291cmNlcy93b3JrZXJ4aHItb3JpZ2luLXJlZmVycmVyLmpzXG4iIGJ1dCBnb3QgIlJl
ZmVyZXI6IGh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC94aHIvcmVzb3VyY2VzL3JlZGlyZWN0LnB5P2xv
Y2F0aW9uPXdvcmtlcnhoci1vcmlnaW4tcmVmZXJyZXIuanNcbiIKIEZBSUwgT3JpZ2luIGhlYWRl
ciBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiT3JpZ2luOiBodHRwOi8vbG9jYWxob3N0Ojg4MDBc
biIgYnV0IGdvdCAiIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2Nv
bm5lY3Qtc3JjL3NoYXJlZC13b3JrZXItY29ubmVjdC1zcmMtYWxsb3dlZC5zdWItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3Jr
ZXItY29ubmVjdC1zcmMtYWxsb3dlZC5zdWItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwN2Jl
YmRjZmNlZmUxZDNiOGFiMWUwNWRmMmFlNTZiODNhODA2NjcKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvY29ubmVjdC1zcmMvc2hhcmVkLXdvcmtlci1jb25u
ZWN0LXNyYy1hbGxvd2VkLnN1Yi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1Mg
RXhwZWN0aW5nIGxvZ3M6IFsieGhyIGFsbG93ZWQiLCJURVNUIENPTVBMRVRFIl0KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450943</attachid>
            <date>2022-02-04 15:24:11 -0800</date>
            <delta_ts>2022-02-04 17:02:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235958-20220204152411.patch</filename>
            <type>text/plain</type>
            <size>305372</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNmMmQxMTcxN2RhZTg0
YTVjYmI3NWRmM2Y4NmIxODMzYmE3ZjIxOS4uYjA1NmEyYzBhZDRiMmUzODk1OWQyMDZlMjVlZTNh
ODVhYWNmNTRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMSBAQAorMjAyMi0wMi0wNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBz
aGFyaW5nIFNoYXJlZCBXb3JrZXJzIChpbmNsdWRpbmcgYWNyb3NzIFdlYlByb2Nlc3NlcykKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTk1OAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vODgzMzA2NjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNoYXJpbmcgU2hhcmVkIFdv
cmtlcnMsIGluY2x1ZGluZyBhY3Jvc3MgV2ViUHJvY2Vzc2VzLiBUaGUgYXJjaGl0ZWN0dXJlCisg
ICAgICAgIGlzIG1vZGVsZWQgYWZ0ZXIgdGhlIG9uZSB3ZSB1c2UgZm9yIFNlcnZpY2UgV29ya2Vy
cyBzaW5jZSB0aGV5IGFyZSB2ZXJ5IHNpbWlsYXIuIEkgdHJpZWQKKyAgICAgICAgc2hhcmluZyBh
cyBtdWNoIGNvZGUgYXMgcG9zc2libGUgd2l0aCBTZXJ2aWNlIFdvcmtlcnMgYnV0IHNvbWUgbW9y
ZSB3b3JrIGNhbiBwcm9iYWJseSBiZQorICAgICAgICBkb25lIGluIHRoaXMgYXJlYS4KKworICAg
ICAgICBXaXRoIHRoaXMgY2hhbmdlLCBzaGFyZWQgd29ya2VycyBzaG91bGQgYmUgbW9zdGx5IGZ1
bmN0aW9uYWwgYW5kIHNwZWMgY29tcGxpYW50LiBIb3dldmVyLAorICAgICAgICB0aGUgZmVhdHVy
ZSByZW1haW5zIGRpc2FibGVkIGJ5IGRlZmF1bHQgZm9yIG5vdyBhcyB0aGVyZSBhcmUgc3RpbGwg
V1BUIHRlc3RzIGZhaWx1cmVzIEkKKyAgICAgICAgbmVlZCB0byBpbnZlc3RpZ2F0ZS4gQWxzbywg
SSBuZWVkIHRvIGltcGxlbWVudCBhIGJldHRlciBwcm9jZXNzIHN1c3BlbnNpb24gbG9naWMgb24g
aU9TCisgICAgICAgIHRvIHJlcGxhY2UgdGhlIGhhY2sgSSBhZGRlZCBpbiB0aGlzIHBhdGNoICh0
byBtYWtlIHRoZSB0ZXN0cyBydW4gcmVsaWFibHkgb24gaU9TKS4KKworICAgICAgICBBcyB3aXRo
IFNlcnZpY2UgV29ya2VycywgU2hhcmVkIFdvcmtlcnMgYXJlIHBhcnRpdGlvbmVkIGJ5IChUb3Ag
T3JpZ2luICsgRnJhbWUgT3JpZ2luKQorICAgICAgICBmb3IgcHJpdmFjeSByZWFzb25zLiBUaGlz
IGlzIGFjaGlldmVkIHZpYSB0aGUgU2hhcmVkV29ya2VyS2V5IG9iamVjdCB0aGF0IHdlIHVzZSBh
cworICAgICAgICBIYXNoTWFwIGtleS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQg
YnkgZXhpc3RpbmcgV1BUIHRlc3RzLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAg
ICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogcGxhdGZvcm0vTG9nZ2luZy5oOgorICAgICAgICAqIHdvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXI6
OmZyb21JZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6U2hhcmVkV29ya2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6flNoYXJlZFdvcmtlcik6CisgICAgICAgIChXZWJD
b3JlOjpTaGFyZWRXb3JrZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkV29ya2VyOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRX
b3JrZXI6OnRlcm1pbmF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyLmg6CisgICAgICAgICogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmlkbDoK
KyAgICAgICAgKiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk6Omhhc2ggY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyS2V5OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkV29ya2VyS2V5OjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6
CisgICAgICAgIChXVEY6OkRlZmF1bHRIYXNoPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleT46Omhh
c2gpOgorICAgICAgICAoV1RGOjpEZWZhdWx0SGFzaDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk+
OjplcXVhbCk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6U2hhcmVkV29ya2Vy
S2V5Pjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk+Ojppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgICogd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5jcHA6IFJlbW92ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyTWFuYWdlcjo6Y29ubmVjdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzY3JpcHRMb2FkRmFpbGVkKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlck1hbmFnZXI6OnNjcmlwdExvYWRl
ZFN1Y2Nlc3NmdWxseSk6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyTWFuYWdlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHdvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbjo6ZmV0Y2hTY3JpcHRJbkNsaWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpub3RpZnlXb3JrZXJPYmplY3RPZkxv
YWRDb21wbGV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdCk6CisgICAgICAgICogd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAu
CisgICAgICAgICogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRl
cjo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6Om5v
dGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6
b3B0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXI6OmlkZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyOjpvcHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrZXJz
L3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaGFyZWRXb3Jr
ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6
OnN0b3BTaGFyZWRXb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXI6OnN0b3BBbGxTaGFyZWRXb3JrZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzZXRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpjb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpyZWdpc3RlclNoYXJlZFdvcmtl
clRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6
Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6dGVybWluYXRlU2hhcmVkV29ya2VyKToK
KyAgICAgICAgKiB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXI6OkNvbm5lY3Rpb246On5Db25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uOjppc0Nsb3NlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6c2V0QXND
bG9zZWQpOgorICAgICAgICAqIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2VuZXJhdGVXb3JrZXJQYXJhbWV0ZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpTaGFyZWRXb3Jr
ZXJUaHJlYWRQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eTo6flNoYXJlZFdvcmtlclRocmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdv
cmtlclRocmVhZFByb3h5Ojpub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eTo6Y3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tUb0xvYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tG
b3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6bmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6c3RhcnRXb3JrZXJHbG9iYWxTY29wZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6dGVy
bWluYXRlV29ya2VyR2xvYmFsU2NvcGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRh
c2tUb1dvcmtlckdsb2JhbFNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZFdvcmtlclRocmVhZFByb3h5OjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Ondvcmtlck9iamVjdERl
c3Ryb3llZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eTo6c3VzcGVuZEZvckJhY2tGb3J3YXJkQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnJlc3VtZUZvckJhY2tGb3J3YXJkQ2FjaGUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Ondv
cmtlckdsb2JhbFNjb3BlRGVzdHJveWVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpjb25maXJtTWVz
c2FnZUZyb21Xb3JrZXJPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
V29ya2VyVGhyZWFkUHJveHk6OnJlcG9ydFBlbmRpbmdBY3Rpdml0eSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6d29ya2VyR2xvYmFsU2NvcGVE
ZXN0cm95ZWRJbnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zaGFyZWQvY29u
dGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oOgorCiAyMDIyLTAyLTA0ICBBbmRyZXMgR29u
emFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBDYWNoZSBzb21lIGV4cGVu
c2l2ZSBBWElzb2xhdGVkT2JqZWN0IHByb3BlcnRpZXMgbGF6aWx5LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlMDRk
NTk3OWU1ZjNkODRlNWRlNDg3ZGI3NmFjYzdmZTNlMTVmMDQ0Li5iNWYwMDYwNjI2NTg4NWVjYThm
Mzk5ZjViOTA5NjQ1YjQzNDYzZjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5NiBAQAorMjAyMi0w
Mi0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBw
b3J0IGZvciBzaGFyaW5nIFNoYXJlZCBXb3JrZXJzIChpbmNsdWRpbmcgYWNyb3NzIFdlYlByb2Nl
c3NlcykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NTk1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODgzMzA2NjY+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNoYXJpbmcg
U2hhcmVkIFdvcmtlcnMsIGluY2x1ZGluZyBhY3Jvc3MgV2ViUHJvY2Vzc2VzLiBUaGUgYXJjaGl0
ZWN0dXJlCisgICAgICAgIGlzIG1vZGVsZWQgYWZ0ZXIgdGhlIG9uZSB3ZSB1c2UgZm9yIFNlcnZp
Y2UgV29ya2VycyBzaW5jZSB0aGV5IGFyZSB2ZXJ5IHNpbWlsYXIuIEkgdHJpZWQKKyAgICAgICAg
c2hhcmluZyBhcyBtdWNoIGNvZGUgYXMgcG9zc2libGUgd2l0aCBTZXJ2aWNlIFdvcmtlcnMgYnV0
IHNvbWUgbW9yZSB3b3JrIGNhbiBwcm9iYWJseSBiZQorICAgICAgICBkb25lIGluIHRoaXMgYXJl
YS4KKworICAgICAgICBXaXRoIHRoaXMgY2hhbmdlLCBzaGFyZWQgd29ya2VycyBzaG91bGQgYmUg
bW9zdGx5IGZ1bmN0aW9uYWwgYW5kIHNwZWMgY29tcGxpYW50LiBIb3dldmVyLAorICAgICAgICB0
aGUgZmVhdHVyZSByZW1haW5zIGRpc2FibGVkIGJ5IGRlZmF1bHQgZm9yIG5vdyBhcyB0aGVyZSBh
cmUgc3RpbGwgV1BUIHRlc3RzIGZhaWx1cmVzIEkKKyAgICAgICAgbmVlZCB0byBpbnZlc3RpZ2F0
ZS4gQWxzbywgSSBuZWVkIHRvIGltcGxlbWVudCBhIGJldHRlciBwcm9jZXNzIHN1c3BlbnNpb24g
bG9naWMgb24gaU9TCisgICAgICAgIHRvIHJlcGxhY2UgdGhlIGhhY2sgSSBhZGRlZCBpbiB0aGlz
IHBhdGNoICh0byBtYWtlIHRoZSB0ZXN0cyBydW4gcmVsaWFibHkgb24gaU9TKS4KKworICAgICAg
ICBBcyB3aXRoIFNlcnZpY2UgV29ya2VycywgU2hhcmVkIFdvcmtlcnMgYXJlIHBhcnRpdGlvbmVk
IGJ5IChUb3AgT3JpZ2luICsgRnJhbWUgT3JpZ2luKQorICAgICAgICBmb3IgcHJpdmFjeSByZWFz
b25zLiBUaGlzIGlzIGFjaGlldmVkIHZpYSB0aGUgU2hhcmVkV29ya2VyS2V5IG9iamVjdCB0aGF0
IHdlIHVzZSBhcworICAgICAgICBIYXNoTWFwIGtleS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fc2NoZW1lUmVnaXN0cnkpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fk5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xvc2VTaGFyZWRXb3JrZXJDb250
ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjp1bnJlZ2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzaGFyZWRXb3JrZXJDb25uZWN0aW9uKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmVuc3VyZVNoYXJlZFdvcmtlclNlcnZlcik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb246OnNoYXJlZFdvcmtlclNlcnZlcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24uY3BwLgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OldlYlNoYXJl
ZFdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6fldlYlNoYXJlZFdv
cmtlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OnJlZ2lzdHJhYmxlRG9tYWluIGNv
bnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29y
a2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OmlkZW50aWZp
ZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OmtleSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6d29ya2VyT3B0aW9ucyBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6b3JpZ2luIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyOjp1cmwgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTaGFyZWRXb3JrZXI6OnNoYXJlZFdvcmtlck9iamVjdHMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTaGFyZWRXb3JrZXI6OmlzUnVubmluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNoYXJlZFdvcmtlcjo6bWFya0FzUnVubmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJl
ZFdvcmtlcjo6ZmV0Y2hSZXN1bHQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRX
b3JrZXI6OnNldEZldGNoUmVzdWx0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2Vy
OjpkaWRGaW5pc2hGZXRjaGluZyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2hh
cmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OldlYlNoYXJlZFdvcmtlclNlcnZlcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2Vzc2lvbklEKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpkaWRGaW5pc2hGZXRjaGluZ1No
YXJlZFdvcmtlclNjcmlwdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZl
cjo6bmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29udGV4
dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJl
bW92ZUNvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2Vy
U2VydmVyOjpjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI6OnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaHV0RG93blNoYXJlZFdvcmtlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29ubmVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y29udGV4dENvbm5l
Y3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNo
YXJlZFdvcmtlclNlcnZlcjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmg6IEFk
ZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjp+V2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2Vzc2lv
bklEKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6
c2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b246OnJlcXVlc3RTaGFyZWRXb3JrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uOjpzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OmZldGNoU2NyaXB0
SW5DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uOjpub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2Vy
T2JqZWN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2VydmVyIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6d2ViUHJvY2Vzc0lkZW50aWZp
ZXIgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjp3ZWJQcm9jZXNzSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmlwY0Nvbm5lY3Rpb24gY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJEZXN0
aW5hdGlvbklEIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpwb3N0
RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpsYXVuY2hTaGFyZWRXb3JrZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpwb3N0
Q29ubmVjdEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlU2hhcmVkV29ya2VyKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjogQWRk
ZWQuCisgICAgICAgICogUGxhdGZvcm0vTG9nZ2luZy5oOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAodHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9k
ZWNsYXJlZCk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OnRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTaGFyZWRX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6c2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzaGFyZWRXb3JrZXJDb250ZXh0Q29u
bmVjdGlvbk5vTG9uZ2VyTmVlZGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRVc2VyQWdlbnQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZUZy
b21Xb3JrZXJQcm9jZXNzZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZXN0
YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXJGb3JXb3JrZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdl
YlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBkYXRlV29ya2VyVXNl
ckFnZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnRlcm1pbmF0ZVNlcnZp
Y2VXb3JrZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OndvcmtlclByb2Nl
c3Nlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNz
ZXJ0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjppc1NlcnZpY2VXb3Jr
ZXJQYWdlSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2Vydmlj
ZVdvcmtlclByb3hpZXNDb3VudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZyBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpoYXNTZXJ2aWNlV29ya2VyQmFja2dy
b3VuZEFjdGl2aXR5Rm9yVGVzdGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpyZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3Nlcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyRm9yU2VydmljZVdvcmtlcnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6dXBkYXRlU2VydmljZVdvcmtlclVzZXJBZ2VudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5OjpjcmVhdGVGb3JXb3JrZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXRXb3JrZXJVc2VyQWdlbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNoYXJlZFdvcmtl
ckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6c3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3Np
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJC
YWNrZ3JvdW5kUHJvY2Vzc2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6
ZGlzYWJsZVdvcmtlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVuYWJs
ZVdvcmtlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclNl
cnZpY2VXb3JrZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpzZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXNTdG9yZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dXBkYXRlU2VydmljZVdv
cmtlclByb2Nlc3NBc3NlcnRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OmRpc2FibGVTZXJ2aWNlV29ya2Vycyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5hYmxlU2VydmljZVdvcmtlcnMpOiBEZWxldGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Byb3h5Ojppc1J1bm5pbmdTaGFyZWRXb3JrZXJzIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojppc1N0YW5kYWxvbmVTaGFyZWRXb3JrZXJQcm9jZXNzIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojppc1J1bm5pbmdXb3JrZXJz
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpoYXNTZXJ2aWNlV29y
a2VyUGFnZVByb3h5KToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNl
aXZlTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjptX3VzZXJDb250ZW50
Q29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6ZXN0YWJsaXNoQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29y
a2VyT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjp1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpsYXVuY2hTaGFyZWRXb3Jr
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OmNsb3NlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbjo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246On5XZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbjo6cmVxdWVzdFNoYXJlZFdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6
OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnNoYXJlZFdvcmtlck9iamVjdElzR29p
bmdBd2F5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkaWRS
ZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVzdGFibGlzaFNo
YXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorCiAyMDIyLTAyLTA0ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4OTA2OS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCmluZGV4IDZjYjE3NDU5YTdkYTg0ZjVhMjYyOTlkNjcwOGIyYzdiNzNjMGQ2
YzYuLmM5ZjY2ODVmNjJkMTM1YWVmOTgxYjZhMjEyOGExNzA1N2VmM2EyYTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQpAQCAtMTk1OSw5ICsxOTU5LDEyIEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVX
T1JLX0hFQURFUlMKICAgICB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCiAgICAgd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCiAgICAgd29ya2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5o
CisgICAgd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oCisgICAgd29ya2Vycy9Xb3JrZXJPcHRp
b25zLmgKICAgICB3b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKICAgICB3b3Jr
ZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaAogICAgIHdvcmtlcnMvV29ya2Vy
T3JXb3JrbGV0VGhyZWFkLmgKKyAgICB3b3JrZXJzL1dvcmtlclJlcG9ydGluZ1Byb3h5LmgKICAg
ICB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuaAogICAgIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVy
LmgKICAgICB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlckNsaWVudC5oCkBAIC0yMDA1LDkgKzIw
MDgsMTIgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHdvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAogCiAgICAgd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VySWRlbnRpZmllci5oCi0gICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
TWFuYWdlci5oCisgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyS2V5LmgKICAgICB3b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKKyAgICB3b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgKICAgICB3b3JrZXJzL3NoYXJlZC9T
aGFyZWRXb3JrZXJQcm92aWRlci5oCisKKyAgICB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgKICAgICB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJl
ZFdvcmtlclRocmVhZC5oCiAgICAgd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJU
aHJlYWRQcm94eS5oCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggYjNmNWUwYjc4NDE3MGJmMDI0ZDc4ODM5
ZmZjOTA4MTcyNGE3NGNhNi4uNWVlNTAwY2I2ZDEwZjUwYjdhMzUzNWU0OWFhYmI3YzE5MDUyZjc1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTI3ODUsMTAgKzI3ODUsMTAgQEAgd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCiB3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNw
cAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCi13b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbi5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVy
LmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcAord29ya2Vy
cy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKIHdvcmtlcnMv
c2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkLmNwcAogd29ya2Vycy9zaGFyZWQvY29u
dGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAKIHdvcmtsZXRzL1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGM1ZjQ0ZWYwNGE3MDU4YjE5YjI0Yzg1ZDExZDYzZDk0NTRlM2Ri
MGMuLjU2YTcxNTlkYmFlZTJmNjA2OGE4YTI2ZGQ1ZWZjZWIyZDEyZTdhNTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkwMyw3
ICs5MDMsNyBAQAogCQkyRTQzNDY0QjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2Nv
cGVQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkU0MzQ2MzkwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuaCAqLzsg
fTsKIAkJMkU0MzQ2NEQwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckxvY2F0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzQjBGNTQ2QTgy
MDBCMEYxQkEgLyogV29ya2VyTG9jYXRpb24uaCAqLzsgfTsKIAkJMkU0MzQ2NTAwRjU0NkE4MjAw
QjBGMUJBIC8qIFdvcmtlck1lc3NhZ2luZ1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzRTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
TWVzc2FnaW5nUHJveHkuaCAqLzsgfTsKLQkJMkU0MzQ2NTEwRjU0NkE4MjAwQjBGMUJBIC8qIFdv
cmtlck9iamVjdFByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRTQzNDYzRjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyT2JqZWN0UHJveHkuaCAq
LzsgfTsKKwkJMkU0MzQ2NTEwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzRjBG
NTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyT2JqZWN0UHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTQzNDY1MzBGNTQ2QTgyMDBCMEYxQkEg
LyogV29ya2VyUnVuTG9vcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkU0MzQ2NDEwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclJ1bkxvb3AuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTQzNDY1NTBG
NTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDY0MzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
VGhyZWFkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMkU3NTg0MUUxMjc3OUFEQTAwNjI2MjhCIC8qIEZpbGVSZWFkZXJMb2FkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNzU4NDFCMTI3NzlBREEw
MDYyNjI4QiAvKiBGaWxlUmVhZGVyTG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExMjUsNyArMTEyNSw3IEBACiAJCTQxNkEwNkExMjND
Q0FEMDMwMDM0NzEwOSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2QTA2OTYyM0NDQUE5RjAw
MzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RDc1QTIyMEM2NTFBNTAwRDAy
RDJDIC8qIE5ldHdvcmtMb2FkSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkQ3NTlGMjBDNjQ0MTMwMEQwMkQyQyAvKiBOZXR3b3Jr
TG9hZEluZm9ybWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNDE2RTBCM0EyMDlCQzNDQjAwNEE5NUQ5IC8qIEZldGNoSWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTBCMzcy
MDlCQzNDMjAwNEE5NUQ5IC8qIEZldGNoSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAv
KiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE2RTI5QTUxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGlu
Z1Byb3h5LmggKi87IH07CisJCTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBv
cnRpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDE2RTI5QTUxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgx
QkJEMTJERjAwMEEzRjY0IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzEx
MEQwMEI3NjREOSAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgxQkJEMTJE
RjAwMEEzRjY1IC8qIEpTRE9NQmluZGluZ0ludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0
REEgLyogSlNET01CaW5kaW5nSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFODFCQkQxMkRGMDAwQTNGNzQg
LyogVHJhbnNmb3JtU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjRFQSAvKiBU
cmFuc2Zvcm1TdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzQ3LDE0ICsxMzQ3LDE2IEBACiAJCTQ2N0E2
OEQ3Mjc1RUE5OTEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0E2OEQ0Mjc1RUE5OEIwMDlCMzFD
NSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0NjdBNjhEODI3NUVBOTk1MDA5QjMxQzUgLyogU2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjdBNjhENTI3NUVBOThDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVyLmggKi87IH07CiAJCTQ2N0E2OEQ5Mjc1RUE5OTgwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJU
aHJlYWRQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY3QTY4RDYyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDY3QTY4
REEyNzVFQTk5QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0E2OEQyMjc1RUE5OEEwMDlCMzFD
NSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4MkQyMDAxRjc5NzgzMDAwQzg2M0RCIC8qIFN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjgyRDFGRjFGNzk3ODIzMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
NjgzNDRFMDFFRERGQUFBMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAv
KiBET01SZWN0TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQ2ODNERjQwMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFs
U2NvcGVCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NjgzREYzRTI3NjdERjk4MDA3RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFz
ZS5oICovOyB9OwogCQk0NjgzREY0MTI3NjdFOTFBMDA3RDAwQzggLyogU2hhZG93UmVhbG1HbG9i
YWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDY4M0RGM0IyNzY3REYyNjAwN0QwMEM4IC8qIFNoYWRvd1JlYWxtR2xvYmFsU2NvcGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0Njg4RUUzQzI2
REQyNjEwMDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5Nb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njg4RUUzQTI2REQyNjBDMDAyQUY1QzQgLyogQ3Jv
c3NPcmlnaW5Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNDY5NDNEQzkyNzYzRjgxNzAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2OTQzREM3Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDY5
ODVGMjMyN0E0QTZBRDAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktleS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5ODVGMjIyN0E0QTY4NjAwOTdBMzJC
IC8qIFNoYXJlZFdvcmtlcktleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ2OUNDQ0ZFMjY5RDAyMUMwMDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFu
bmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjlD
Q0NGQzI2OUQwMjAyMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2OUQ3N0I4MjcwMTYyNTEwMDE0
MkZBNiAvKiBOYXZpZ2F0aW9uUmVxdWVzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjlENzdCNjI3MDE2MjUwMDAxNDJGQTYgLyogTmF2aWdhdGlv
blJlcXVlc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTQ2QTc4QjM0Mjc5OUJENzEwMDExNTRGRSAvKiBXb3JrZXJPcHRpb25zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzFCMUQyNjI2RjE4QTRC
MDA4ODJEQTIgLyogV29ya2VyT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQ2QUFBQTNEMjVEMzYzMjAwMEJBRjQyRiAvKiBBdWRpb0Zp
bGVSZWFkZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZBQUFBM0EyNUQzNjMxNDAwQkFGNDJGIC8qIEF1ZGlvRmlsZVJlYWRlckNvY29hLmgg
Ki87IH07CiAJCTQ2QjYzRjZDMUM2RThEMTkwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9t
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI2M0Y2
QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QjY1MEREMjI5NjI2MjcwMEZE
OEFBNCAvKiBQYWdlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDZCNjUwREIyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEz
NzUsNiArMTM3Nyw3IEBACiAJCTQ2QzY5NkNDMUU3MjA1RkMwMDU5NzkzNyAvKiBDUFVNb25pdG9y
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5
NkNBMUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmNwcCAqLzsgfTsKIAkJNDZDODNFRkUx
QTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM4M0VGQzFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90
aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0NkNBOUM0NDFGOTdCQkU5MDA0Q0ZDM0EgLyogVmlzaWJpbGl0eVN0YXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkNBOUM0MTFGOTdCQkU3MDA0
Q0ZDM0EgLyogVmlzaWJpbGl0eVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDZDRjUwNEEyN0FCMUVBNDAwNzBEQkM4IC8qIFNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkNGNTA0ODI3QUIxRUExMDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NkQwMDA0MDI2QTBGRUIzMDBEMUJGMUUgLyogU3VibWl0RXZlbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RDAwMDNFMjZBMEZFNkYwMEQx
QkYxRSAvKiBTdWJtaXRFdmVudC5oICovOyB9OwogCQk0NkRBNEEwMjI3QUIwMzkzMDBFMzc1QTgg
LyogVHJhbnNmZXJyZWRNZXNzYWdlUG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZEQTRBMDAyN0FCMDM4RDAwRTM3NUE4IC8qIFRyYW5zZmVycmVk
TWVzc2FnZVBvcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0NkRCQjY1MDFBQjhDOTZGMDBEOUE4MTMgLyogUG93ZXJPYnNlcnZlck1hYy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZEQkI2NEUxQUI4
Qzk2RjAwRDlBODEzIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTI0NSw4ICs5MjQ4LDYgQEAKIAkJNDY3QTY4
Q0YyNzVFQTk4OTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDY3QTY4RDAyNzVFQTk4OTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRo
cmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJUaHJlYWQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdBNjhEMTI3NUVBOThBMDA5QjMxQzUgLyogU2hh
cmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtl
clNjcmlwdExvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2N0E2OEQy
Mjc1RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNoYXJlZFdvcmtlck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDY3
QTY4RDMyNzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2hhcmVkV29ya2VyTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2N0E2OEQ0Mjc1RUE5OEIwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2N0E2OEQ1Mjc1RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2N0E2OEQ2Mjc1RUE5OEMwMDlCMzFDNSAvKiBT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTI2Miw2ICs5MjYzLDgg
QEAKIAkJNDY4M0RGM0UyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29w
ZUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTaGFkb3dSZWFsbUds
b2JhbFNjb3BlQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njg4RUUzQTI2
REQyNjBDMDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5Nb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyb3Nz
T3JpZ2luTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjhCOEJERTI1Q0M4
NDkzMDBGNjc4MjIgLyogSlNCYXNlQXVkaW9Db250ZXh0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQmFzZUF1ZGlvQ29udGV4dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ2OTQzREM3Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5ODVGMjIyN0E0QTY4NjAwOTdBMzJC
IC8qIFNoYXJlZFdvcmtlcktleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
aGFyZWRXb3JrZXJLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5Q0NDRkEy
NjlEMDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQnJvYWRjYXN0Q2hhbm5lbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
OUNDQ0ZDMjY5RDAyMDIwMDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEJyb2FkY2FzdENoYW5uZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5
Q0NDRkQyNjlEMDIwMzAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEJyb2Fk
Y2FzdENoYW5uZWwuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTMwMiw2ICs5
MzA1LDggQEAKIAkJNDZDODNFRkMxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlb05vdGlmaWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2Q0E5QzQxMUY5N0JCRTcwMDRDRkMzQSAvKiBWaXNpYmlsaXR5
U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlzaWJpbGl0eVN0YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2Q0E5QzQyMUY5N0JCRTcwMDRDRkMz
QSAvKiBWaXNpYmlsaXR5U3RhdGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFZpc2liaWxp
dHlTdGF0ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2Q0Y1MDQ4MjdBQjFF
QTEwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0NkNGNTA0OTI3QUIxRUExMDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkQwMDAzQzI2QTBGRTZGMDBEMUJGMUUg
LyogU3VibWl0RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U3VibWl0RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkQwMDAzRTI2
QTBGRTZGMDBEMUJGMUUgLyogU3VibWl0RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3VibWl0RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZE
MDAwM0YyNkEwRkU3MDAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBTdWJtaXRFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
MTU2OCw2ICsyMTU3Myw4IEBACiAJCTQ2NDdDRTYxMjdBQUUxREEwMDlDQkQ0OCAvKiBjb250ZXh0
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0NkNGNTA0
OTI3QUIxRUExMDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwICovLAor
CQkJCTQ2Q0Y1MDQ4MjdBQjFFQTEwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ci5oICovLAogCQkJCTQ2N0E2OEQwMjc1RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJl
YWQuY3BwICovLAogCQkJCTQ2N0E2OEQ0Mjc1RUE5OEIwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJU
aHJlYWQuaCAqLywKIAkJCQk0NjdBNjhDRjI3NUVBOTg5MDA5QjMxQzUgLyogU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHkuY3BwICovLApAQCAtMjE1ODcsMTAgKzIxNTk0LDEwIEBACiAJCQkJNDY2OTRD
RTEyNzU5NDQ4QzAwRTMxNTBFIC8qIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmggKi8sCiAJCQkJ
NDY2OTRDRTAyNzU5NDQ4QzAwRTMxNTBFIC8qIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmlkbCAq
LywKIAkJCQk0NkVDNDQ0ODI3QUIzMzdGMDBGRkNEOTYgLyogU2hhcmVkV29ya2VySWRlbnRpZmll
ci5oICovLAotCQkJCTQ2N0E2OEQzMjc1RUE5OEIwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5h
Z2VyLmNwcCAqLywKLQkJCQk0NjdBNjhEMjI3NUVBOThBMDA5QjMxQzUgLyogU2hhcmVkV29ya2Vy
TWFuYWdlci5oICovLAorCQkJCTQ2OTg1RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3Jr
ZXJLZXkuaCAqLywKIAkJCQk0NjY4QTBCMzI3QUI2MDBCMDBDNzIwQkMgLyogU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJNDY2OEEwQjEyN0FCNjAwQjAwQzcyMEJDIC8q
IFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAqLywKKwkJCQk0Njk0M0RDNzI3NjNGODBF
MDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oICovLAogCQkJCTQ2NjhB
MEI0MjdBQjYwMEMwMEM3MjBCQyAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAgKi8sCiAJCQkJ
NDY2OEEwQjUyN0FCNjAwQzAwQzcyMEJDIC8qIFNoYXJlZFdvcmtlclByb3ZpZGVyLmggKi8sCiAJ
CQkJNDY3QTY4RDEyNzVFQTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5j
cHAgKi8sCkBAIC0zNzIwNCw5ICszNzIxMSwxMSBAQAogCQkJCTgzNERGQUQwMUY3REFFNUQwMEMy
NzI1QiAvKiBTaGFyZWRTdHJpbmdIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUVBMzA5
OUVCNzhDMDA1NkU1ODEgLyogU2hhcmVkVGltZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxREMw
NEZFMjdBODNDOTMwMDhDRjk2OCAvKiBTaGFyZWRWaWRlb0ZyYW1lSW5mby5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDZDRjUwNEEyN0FCMUVBNDAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkVDNDQ0QTI3QUIzMzg5MDBGRkNEOTYgLyog
U2hhcmVkV29ya2VySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDY3QTY4REEyNzVF
QTk5QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTQ2OTg1RjIzMjdBNEE2QUQwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQ2NjhBMEI2MjdBQjYwMUIwMEM3MjBCQyAvKiBTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk0Njk0M0RDOTI3NjNGODE3MDA0QjYxMEUg
LyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY2
OEEwQjcyN0FCNjAyMTAwQzcyMEJDIC8qIFNoYXJlZFdvcmtlclByb3ZpZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0NjdBNjhEODI3NUVBOTk1MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0
TG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjdBNjhENzI3NUVBOTkxMDA5QjMxQzUgLyog
U2hhcmVkV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKQEAgLTM4MDY3LDYgKzM4MDc2LDcg
QEAKIAkJCQlFMTI3MUEwQjBFRUVDNzdBMDBGNjEyMTMgLyogV29ya2VyTmF2aWdhdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNUNCMDUyNTFGQjUxRjNBMDAwODlCOTcgLyogV29ya2VyTmV0d29y
a0FnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTQzNDY1MTBGNTQ2QTgyMDBCMEYxQkEgLyog
V29ya2VyT2JqZWN0UHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2QTc4QjM0Mjc5OUJENzEw
MDExNTRGRSAvKiBXb3JrZXJPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0Q2QUFFNjI1
MjRFRTFDMDA0MjhCNEIgLyogV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTgzOUEwOTVEMjUyNEYzN0YwMEVFRjMyOCAvKiBXb3JrZXJPcldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0Y2QUVCRjI1MjdCQjBDMDAzNEJD
RDMgLyogV29ya2VyT3JXb3JrbGV0VGhyZWFkLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW4uaAppbmRleCBlMTU1ZWM2ZjI0YWVkMTg4MzBjMTgxZWQ3OWM0Y2I0
MDEwZDMxNmJhLi4yMDNiZjZiMDgyZGZmYjRjZDg0ZjlmY2ZkOGJmMGNiMzNhZTBmNTEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCkBAIC0xNTAsNyArMTUwLDYgQEAgcHVibGlj
OgogICAgIGJvb2wgY2FuQWNjZXNzTG9jYWxTdG9yYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0
b3BPcmlnaW4pIGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UodG9wT3JpZ2luKTsgfTsK
ICAgICBib29sIGNhbkFjY2Vzc1BsdWdpblN0b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRv
cE9yaWdpbikgY29uc3QgeyByZXR1cm4gY2FuQWNjZXNzU3RvcmFnZSgmdG9wT3JpZ2luKTsgfQog
ICAgIGJvb2wgY2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShjb25zdCBTZWN1cml0eU9yaWdpbiYg
dG9wT3JpZ2luKSBjb25zdCB7IHJldHVybiBjYW5BY2Nlc3NTdG9yYWdlKCZ0b3BPcmlnaW4pOyB9
Ci0gICAgYm9vbCBjYW5BY2Nlc3NTaGFyZWRXb3JrZXJzKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0
b3BPcmlnaW4pIGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UoJnRvcE9yaWdpbik7IH0K
ICAgICBib29sIGNhbkFjY2Vzc0Nvb2tpZXMoKSBjb25zdCB7IHJldHVybiAhaXNVbmlxdWUoKTsg
fQogICAgIGJvb2wgY2FuUmVxdWVzdEdlb2xvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gIWlzVW5p
cXVlKCk7IH0KICAgICBQb2xpY3kgY2FuU2hvd05vdGlmaWNhdGlvbnMoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCA1ZmVmNDJlZTA2ZWM1MTE1ZmQ4NmU5ODg5NGY2OWQ3
YzIxOWUzZTBjLi5mYTdkMjMwMmVjMzllOTk3NTYxOGRiYzkyNzY5YzVhMGYxOTkxMDRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCkBAIC0xMjcsNiArMTI3LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIE0oV2ViR0wpIFwKICAgICBNKFdlYlJUQykgXAogICAgIE0oV2ViUlRDU3Rh
dHMpIFwKKyAgICBNKFdvcmtlcikgXAogICAgIE0oWFIpIFwKICAgICBNKFdoZWVsRXZlbnRUZXN0
TW9uaXRvcikgXAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRo
cmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXgg
NDA2NzE3M2E4OWE1MjY0ZDUzNzM0OTk1ZDhlNDQ3NTFhODM5OGEwYi4uZjlkZDA1ZjE4ZjMyNTdh
YTVkNzdmMjdmYTY1NjI2YTAxNTk2ZmY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
VGhyZWFkLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3Bl
LmgiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0RmV0Y2hlci5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1NjcmlwdENhbGxTdGFjay5oPgorI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTMz
LDYgKzEzNCw4IEBAIGJvb2wgV29ya2VyVGhyZWFkOjpzaG91bGRXYWl0Rm9yV2ViSW5zcGVjdG9y
T25TdGFydHVwKCkgY29uc3QKIAogdm9pZCBXb3JrZXJUaHJlYWQ6OmV2YWx1YXRlU2NyaXB0SWZO
ZWNlc3NhcnkoU3RyaW5nJiBleGNlcHRpb25NZXNzYWdlKQogeworICAgIFNldEZvclNjb3BlPGJv
b2w+IGlzSW5TdGF0aWNTY3JpcHRFdmFsdWF0aW9uKG1faXNJblN0YXRpY1NjcmlwdEV2YWx1YXRp
b24sIHRydWUpOworCiAgICAgLy8gV2UgYXJlIGN1cnJlbnRseSBob2xkaW5nIG9ubHkgdGhlIGlu
aXRpYWwgc2NyaXB0IGNvZGUuIElmIHRoZSBXb3JrZXJUeXBlIGlzIE1vZHVsZSwgd2Ugc2hvdWxk
IGZldGNoIHRoZSBlbnRpcmUgZ3JhcGggYmVmb3JlIGV4ZWN1dGluZyB0aGUgcmVzdCBvZiB0aGlz
LgogICAgIC8vIFdlIGludm9rZSBtb2R1bGUgbG9hZGVyIGFzIGlmIHdlIGFyZSBleGVjdXRpbmcg
aW5saW5lIG1vZHVsZSBzY3JpcHQgdGFnIGluIERvY3VtZW50LgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuaAppbmRleCA0N2Q1YzRmYjFmOTFjOGYwN2VhY2NkZGY2NjA2ZWZmNTg4
NDg2MzU0Li5hMWVhMzdkZGI0ODA4NWYxYzUyY2YzYzAzZTFjNDYwNDEyMjVlZTVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKQEAgLTk0LDYgKzk0LDcgQEAgcHVibGljOgog
I2VuZGlmCiAgICAgCiAgICAgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKCkgY29uc3Qg
eyByZXR1cm4gbV9ydW50aW1lRmxhZ3M7IH0KKyAgICBib29sIGlzSW5TdGF0aWNTY3JpcHRFdmFs
dWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RhdGljU2NyaXB0RXZhbHVhdGlvbjsgfQog
CiBwcm90ZWN0ZWQ6CiAgICAgV29ya2VyVGhyZWFkKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBj
b25zdCBTY3JpcHRCdWZmZXImIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiwgV29ya2Vy
RGVidWdnZXJQcm94eSYsIFdvcmtlclJlcG9ydGluZ1Byb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRN
b2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5l
Y3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKiwgSlNDOjpSdW50aW1lRmxhZ3MpOwpAQCAtMTMw
LDYgKzEzMSw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8SURCQ2xpZW50OjpJREJDb25uZWN0
aW9uUHJveHk+IG1faWRiQ29ubmVjdGlvblByb3h5OwogICAgIFJlZlB0cjxTb2NrZXRQcm92aWRl
cj4gbV9zb2NrZXRQcm92aWRlcjsKKyAgICBib29sIG1faXNJblN0YXRpY1NjcmlwdEV2YWx1YXRp
b24geyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAKaW5kZXggYjQ4NzQ3YTJjMDk5
NzNjMThiZjhkZGE5YWM4NzRiMzFhYjg1Zjc1MS4uMGE3ODE5YjhiM2ExODY1OTZkYTZiYmEwODI4
ZTBmNWVlMTgzNjAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI2LDE1ICsyNiwxNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlNoYXJlZFdvcmtlci5oIgogCisjaW5jbHVkZSAiQ2xpZW50T3JpZ2luLmgiCiAjaW5jbHVk
ZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VDaGFubmVsLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJSZXNvdXJj
ZUVycm9yLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJTaGFyZWRX
b3JrZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5o
IgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb3ZpZGVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29y
a2VyVGhyZWFkUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJPcHRpb25zLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllcnNGYWN0b3J5Lmg+CiAjaW5jbHVkZSA8d3RmL0lzb01h
bGxvY0lubGluZXMuaD4KQEAgLTQzLDIzICs0NSwzOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChTaGFyZWRXb3JrZXIpOwogCisjZGVmaW5lIFNI
QVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtl
ciwgIiVwIC0gW2lkZW50aWZpZXI9JXtwdWJsaWN9c10gU2hhcmVkV29ya2VyOjoiIGZtdCwgdGhp
cywgbV9pZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgIyNfX1ZBX0FSR1NfXykK
KyNkZWZpbmUgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFT
RV9MT0dfRVJST1IoU2hhcmVkV29ya2VyLCAiJXAgLSBbaWRlbnRpZmllcj0le3B1YmxpY31zXSBT
aGFyZWRXb3JrZXI6OiIgZm10LCB0aGlzLCBtX2lkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCAjI19fVkFfQVJHU19fKQorCitzdGF0aWMgSGFzaE1hcDxTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLCBTaGFyZWRXb3JrZXIqPiYgYWxsU2hhcmVkV29ya2VycygpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1h
cDxTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBTaGFyZWRXb3JrZXIqPj4gYWxsU2hhcmVk
V29ya2VyczsKKyAgICByZXR1cm4gYWxsU2hhcmVkV29ya2VyczsKK30KKworU2hhcmVkV29ya2Vy
KiBTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVyKFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIgaWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gYWxsU2hhcmVkV29ya2VycygpLmdldChpZGVu
dGlmaWVyKTsKK30KKwogc3RhdGljIGlubGluZSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
KiBtYWluVGhyZWFkQ29ubmVjdGlvbigpCiB7CiAgICAgcmV0dXJuIFNoYXJlZFdvcmtlclByb3Zp
ZGVyOjpzaW5nbGV0b24oKS5zaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiB9CiAKLUV4Y2VwdGlv
bk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBTaGFyZWRXb3JrZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9j
dW1lbnQsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncywgU3RyaW5nJiYgc2NyaXB0VVJM
U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxTdHJpbmcsIFdvcmtlck9wdGlvbnM+
PiYmIG1heWJlT3B0aW9ucykKK0V4Y2VwdGlvbk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBTaGFyZWRX
b3JrZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZyYmIHNjcmlwdFVSTFN0cmlu
Zywgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4mJiBt
YXliZU9wdGlvbnMpCiB7CiAgICAgaWYgKCFtYWluVGhyZWFkQ29ubmVjdGlvbigpKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJTaGFyZWQgd29ya2VycyBh
cmUgbm90IHN1cHBvcnRlZCIgfTsKIAotICAgIGlmICghZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4o
KS5jYW5BY2Nlc3NTaGFyZWRXb3JrZXJzKGRvY3VtZW50LnRvcE9yaWdpbigpKSkKLSAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJUaGlzIGlmcmFtZSBkb2Vzbid0IGhh
dmUgc3RvcmFnZSBhY2Nlc3MiX3MgfTsKLQogICAgIGF1dG8gdXJsID0gZG9jdW1lbnQuY29tcGxl
dGVVUkwoc2NyaXB0VVJMU3RyaW5nKTsKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciwgIkludmFsaWQgc2NyaXB0IFVSTCJfcyB9
OwogCisgICAgaWYgKHVybC5pc0xvY2FsRmlsZSgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgU2VjdXJpdHlFcnJvciwgIkNhbm5vdCBjb25zdHJ1Y3QgYSBzaGFyZWQgd29ya2VyIHdpdGgg
YSBmaWxlOi8vIFVSTCJfcyB9OworCiAgICAgaWYgKGF1dG8qIGNvbnRlbnRTZWN1cml0eVBvbGlj
eSA9IGRvY3VtZW50LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKSB7CiAgICAgICAgIGlmICghY29u
dGVudFNlY3VyaXR5UG9saWN5LT5hbGxvd1dvcmtlckZyb21Tb3VyY2UodXJsKSkKICAgICAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yIH07CkBAIC03NywyNiArOTQsMzcg
QEAgRXhjZXB0aW9uT3I8UmVmPFNoYXJlZFdvcmtlcj4+IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCwgSlNDOjpSdW4KICAgICBhdXRvIGNoYW5uZWwgPSBNZXNzYWdlQ2hh
bm5lbDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBhdXRvIHRyYW5zZmVycmVkUG9ydCA9IGNoYW5u
ZWwtPnBvcnQyKCkuZGlzZW50YW5nbGUoKTsKIAotICAgIGF1dG8gc2hhcmVkV29ya2VyID0gYWRv
cHRSZWYoKm5ldyBTaGFyZWRXb3JrZXIoZG9jdW1lbnQsIGNoYW5uZWwtPnBvcnQxKCksIHJ1bnRp
bWVGbGFncykpOworICAgIENsaWVudE9yaWdpbiBjbGllbnRPcmlnaW4geyBkb2N1bWVudC50b3BE
b2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpLCBkb2N1bWVudC5zZWN1cml0eU9yaWdp
bigpLmRhdGEoKSB9OworICAgIFNoYXJlZFdvcmtlcktleSBrZXkgeyBjbGllbnRPcmlnaW4sIHVy
bCwgb3B0aW9ucy5uYW1lIH07CisKKyAgICBhdXRvIHNoYXJlZFdvcmtlciA9IGFkb3B0UmVmKCpu
ZXcgU2hhcmVkV29ya2VyKGRvY3VtZW50LCBrZXksIGNoYW5uZWwtPnBvcnQxKCkpKTsKICAgICBz
aGFyZWRXb3JrZXItPnN1c3BlbmRJZk5lZWRlZCgpOwogCi0gICAgbWFpblRocmVhZENvbm5lY3Rp
b24oKS0+cmVxdWVzdFNoYXJlZFdvcmtlcih1cmwsIHNoYXJlZFdvcmtlci5nZXQoKSwgV1RGTW92
ZSh0cmFuc2ZlcnJlZFBvcnQpLCBXVEZNb3ZlKG9wdGlvbnMpKTsKKyAgICBtYWluVGhyZWFkQ29u
bmVjdGlvbigpLT5yZXF1ZXN0U2hhcmVkV29ya2VyKGtleSwgc2hhcmVkV29ya2VyLT5pZGVudGlm
aWVyKCksIFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwgb3B0aW9ucyk7CiAgICAgcmV0dXJuIHNo
YXJlZFdvcmtlcjsKIH0KIAotU2hhcmVkV29ya2VyOjpTaGFyZWRXb3JrZXIoRG9jdW1lbnQmIGRv
Y3VtZW50LCBSZWY8TWVzc2FnZVBvcnQ+JiYgcG9ydCwgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGlt
ZUZsYWdzKQorU2hhcmVkV29ya2VyOjpTaGFyZWRXb3JrZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBTaGFyZWRXb3JrZXJLZXkmIGtleSwgUmVmPE1lc3NhZ2VQb3J0PiYmIHBvcnQpCiAgICAg
OiBBY3RpdmVET01PYmplY3QoJmRvY3VtZW50KQorICAgICwgbV9rZXkoa2V5KQorICAgICwgbV9p
ZGVudGlmaWVyKFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI6OmdlbmVyYXRlKCkpCiAgICAg
LCBtX3BvcnQoV1RGTW92ZShwb3J0KSkKICAgICAsIG1faWRlbnRpZmllckZvckluc3BlY3Rvcigi
U2hhcmVkV29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRl
bnRpZmllcigpKQotICAgICwgbV9ydW50aW1lRmxhZ3MocnVudGltZUZsYWdzKQotICAgICwgbV9j
cmVhdGlvblRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkpCi0gICAgLCBtX3Byb3h5KFNoYXJlZFdv
cmtlclRocmVhZFByb3h5OjpjcmVhdGUoKnRoaXMpKQogeworICAgIFNIQVJFRF9XT1JLRVJfUkVM
RUFTRV9MT0coIlNoYXJlZFdvcmtlcjoiKTsKKyAgICBhbGxTaGFyZWRXb3JrZXJzKCkuYWRkKG1f
aWRlbnRpZmllciwgdGhpcyk7CisKKyAgICAvLyBJZiB0aGUgc2hhcmVkIHdvcmtlciBVUkwgaXMg
YSBibG9iIFVSTCwgbWFrZSBzdXJlIHRvIGtlZXAgaXQgYWxpdmUgdW50aWwgdGhlIHdvcmtlciBo
YXMgZmluaXNoZWQgbG9hZGluZy4KKyAgICBpZiAobV9rZXkudXJsLnByb3RvY29sSXNCbG9iKCkp
CisgICAgICAgIG1fYmxvYlVSTEV4dGVuc2lvbiA9IG1fa2V5LnVybDsKIH0KIAogU2hhcmVkV29y
a2VyOjp+U2hhcmVkV29ya2VyKCkKIHsKLSAgICBtX3Byb3h5Lndvcmtlck9iamVjdERlc3Ryb3ll
ZCgpOworICAgIEFTU0VSVChhbGxTaGFyZWRXb3JrZXJzKCkuZ2V0KG1faWRlbnRpZmllcikgPT0g
dGhpcyk7CisgICAgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRygiflNoYXJlZFdvcmtlcjoiKTsK
KyAgICBhbGxTaGFyZWRXb3JrZXJzKCkucmVtb3ZlKG1faWRlbnRpZmllcik7CisgICAgQVNTRVJU
KCFtX2lzQWN0aXZlKTsKIH0KIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogU2hhcmVkV29ya2Vy
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKQEAgLTExNCwxOSArMTQyLDI5IEBAIEV2
ZW50VGFyZ2V0SW50ZXJmYWNlIFNoYXJlZFdvcmtlcjo6ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdAogICAgIHJldHVybiBTaGFyZWRXb3JrZXJFdmVudFRhcmdldEludGVyZmFjZVR5cGU7CiB9
CiAKLXZvaWQgU2hhcmVkV29ya2VyOjpzdG9wKCkKK3ZvaWQgU2hhcmVkV29ya2VyOjpkaWRGaW5p
c2hMb2FkaW5nKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIHRlcm1pbmF0ZSgp
OworICAgIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coImZpbmlzaExvYWRpbmc6IHN1Y2Nlc3M9
JWQiLCBlcnJvci5pc051bGwoKSk7CisgICAgaWYgKCFlcnJvci5pc051bGwoKSkgeworICAgICAg
ICBxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxh
dGlvbiwgRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1
YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOworICAgICAgICBtX2lzQWN0aXZl
ID0gZmFsc2U7CisgICAgfQorICAgIG1fYmxvYlVSTEV4dGVuc2lvbi5jbGVhcigpOwogfQogCiBi
b29sIFNoYXJlZFdvcmtlcjo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fcHJveHkuaGFzUGVuZGluZ0FjdGl2aXR5KCkgfHwgbV9pc0xvYWRpbmc7Cisg
ICAgcmV0dXJuIG1faXNBY3RpdmU7CiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyOjp0ZXJtaW5hdGUo
KQordm9pZCBTaGFyZWRXb3JrZXI6OnN0b3AoKQogewotICAgIG1fcHJveHkudGVybWluYXRlV29y
a2VyR2xvYmFsU2NvcGUoKTsKKyAgICBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HKCJzdG9wOiIp
OworICAgIG1faXNBY3RpdmUgPSBmYWxzZTsKKyAgICBtYWluVGhyZWFkQ29ubmVjdGlvbigpLT5z
aGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShtX2tleSwgbV9pZGVudGlmaWVyKTsKIH0KIAor
I3VuZGVmIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0cKKyN1bmRlZiBTSEFSRURfV09SS0VSX1JF
TEVBU0VfTE9HX0VSUk9SCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmgKaW5kZXggZTU1YjFjZjU1MTNkMTA1Zjcz
ZjFjZDYyOTMxNWUwNjU3ZTAxOWJjZS4uY2RkMjY5ZjM2MTkxNjlkNGFiMDVmNjBkMWE3NGI4OGMw
MjNmZDIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjcsMzkgKzI3LDM3IEBACiAKICNpbmNsdWRlICJBYnN0cmFjdFdvcmtlci5oIgogI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1bnRpbWVG
bGFncy5oPgorI2luY2x1ZGUgIkJsb2JVUkwuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJLZXku
aCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8
d3RmL01vbm90b25pY1RpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZXNz
YWdlUG9ydDsKLWNsYXNzIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OworY2xhc3MgUmVzb3VyY2VF
cnJvcjsKIAogc3RydWN0IFdvcmtlck9wdGlvbnM7CiAKIGNsYXNzIFNoYXJlZFdvcmtlciBmaW5h
bCA6IHB1YmxpYyBBYnN0cmFjdFdvcmtlciwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChTaGFyZWRXb3JrZXIpOwogcHVibGljOgotICAgIHN0YXRp
YyBFeGNlcHRpb25PcjxSZWY8U2hhcmVkV29ya2VyPj4gY3JlYXRlKERvY3VtZW50JiwgSlNDOjpS
dW50aW1lRmxhZ3MsIFN0cmluZyYmIHNjcmlwdFVSTCwgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlh
bnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJl
ZjxTaGFyZWRXb3JrZXI+PiBjcmVhdGUoRG9jdW1lbnQmLCBTdHJpbmcmJiBzY3JpcHRVUkwsIHN0
ZDo6b3B0aW9uYWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYpOwogICAg
IH5TaGFyZWRXb3JrZXIoKTsKIAorICAgIHN0YXRpYyBTaGFyZWRXb3JrZXIqIGZyb21JZGVudGlm
aWVyKFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIFNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQog
ICAgIE1lc3NhZ2VQb3J0JiBwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9wb3J0LmdldCgpOyB9Ci0g
ICAgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKCkgeyByZXR1cm4gbV9ydW50aW1lRmxh
Z3M7IH0KIAogICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllckZvckluc3BlY3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckluc3BlY3RvcjsgfQotICAgIE1vbm90b25pY1RpbWUg
Y3JlYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdGlvblRpbWU7IH0KIAotICAgIFNo
YXJlZFdvcmtlclRocmVhZFByb3h5JiBwcm94eSgpIHsgcmV0dXJuIG1fcHJveHk7IH0KLQotICAg
IHZvaWQgc2V0SXNMb2FkaW5nKGJvb2wgaXNMb2FkaW5nKSB7IG1faXNMb2FkaW5nID0gaXNMb2Fk
aW5nOyB9CisgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFJlc291cmNlRXJyb3ImKTsK
IAogICAgIC8vIEV2ZW50VGFyZ2V0LgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBTaGFyZWRX
b3JrZXIoRG9jdW1lbnQmLCBSZWY8TWVzc2FnZVBvcnQ+JiYsIEpTQzo6UnVudGltZUZsYWdzKTsK
LQotICAgIHZvaWQgdGVybWluYXRlKCk7CisgICAgU2hhcmVkV29ya2VyKERvY3VtZW50JiwgY29u
c3QgU2hhcmVkV29ya2VyS2V5JiwgUmVmPE1lc3NhZ2VQb3J0PiYmKTsKIAogICAgIC8vIEV2ZW50
VGFyZ2V0LgogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkg
Y29uc3QgZmluYWw7CkBAIC03MCwxMiArNjgsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIHZpcnR1
YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogCisgICAgU2hhcmVkV29ya2Vy
S2V5IG1fa2V5OworICAgIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgbV9pZGVudGlmaWVy
OwogICAgIFJlZjxNZXNzYWdlUG9ydD4gbV9wb3J0OwogICAgIFN0cmluZyBtX2lkZW50aWZpZXJG
b3JJbnNwZWN0b3I7Ci0gICAgSlNDOjpSdW50aW1lRmxhZ3MgbV9ydW50aW1lRmxhZ3M7Ci0gICAg
TW9ub3RvbmljVGltZSBtX2NyZWF0aW9uVGltZTsKLSAgICBTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eSYgbV9wcm94eTsgLy8gVGhlIHByb3h5IG91dGxpdmVzIHRoZSB3b3JrZXIgdG8gcGVyZm9ybSB0
aHJlYWQgc2h1dGRvd24uCi0gICAgYm9vbCBtX2lzTG9hZGluZyB7IGZhbHNlIH07CisgICAgQmxv
YlVSTEhhbmRsZSBtX2Jsb2JVUkxFeHRlbnNpb247CisgICAgYm9vbCBtX2lzQWN0aXZlIHsgdHJ1
ZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5pZGwKaW5kZXggYjYyODc0ZDBkZTQ2NzBkNDhhMmQz
MTRjMTMxZTYyNGMyMDU2MmUzZC4uMmMzYTA4MzFlYjI3NDFiMjYzNjQ3ZjE3NGU4YzU4N2I3YTQx
ZWI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIu
aWRsCkBAIC0yOCw3ICsyOCw3IEBACiAgICAgRXhwb3NlZD1XaW5kb3cKIF0KIGludGVyZmFjZSBT
aGFyZWRXb3JrZXIgOiBFdmVudFRhcmdldCB7Ci0gIFtDYWxsV2l0aD1DdXJyZW50RG9jdW1lbnQm
UnVudGltZUZsYWdzXSBjb25zdHJ1Y3RvcihVU1ZTdHJpbmcgc2NyaXB0VVJMLCBvcHRpb25hbCAo
RE9NU3RyaW5nIG9yIFdvcmtlck9wdGlvbnMpIG9wdGlvbnMpOworICBbQ2FsbFdpdGg9Q3VycmVu
dERvY3VtZW50XSBjb25zdHJ1Y3RvcihVU1ZTdHJpbmcgc2NyaXB0VVJMLCBvcHRpb25hbCAoRE9N
U3RyaW5nIG9yIFdvcmtlck9wdGlvbnMpIG9wdGlvbnMpOwogCiAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBNZXNzYWdlUG9ydCBwb3J0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlcktleS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyS2V5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWYyYmFhMGY3YjljYzI0OTYzNTBhZDFi
ZDE0OTRkNmI5ZGIwYTQ2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlcktleS5oCkBAIC0wLDAgKzEsMTExIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIKKyNpbmNsdWRlIDx3
dGYvSGFzaGVyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBTaGFyZWRXb3JrZXJL
ZXkgeworICAgIENsaWVudE9yaWdpbiBvcmlnaW47CisgICAgVVJMIHVybDsKKyAgICBTdHJpbmcg
bmFtZTsKKworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKKworICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTaGFyZWRXb3JrZXJLZXk+IGRlY29kZShE
ZWNvZGVyJik7Cit9OworCitpbmxpbmUgdW5zaWduZWQgU2hhcmVkV29ya2VyS2V5OjpoYXNoKCkg
Y29uc3QKK3sKKyAgICBIYXNoZXIgaGFzaGVyOworICAgIGFkZChoYXNoZXIsIG9yaWdpbi5oYXNo
KCkpOworICAgIGFkZChoYXNoZXIsIHVybCk7CisgICAgYWRkKGhhc2hlciwgbmFtZSk7CisgICAg
cmV0dXJuIGhhc2hlci5oYXNoKCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lk
IFNoYXJlZFdvcmtlcktleTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAg
ZW5jb2RlciA8PCBvcmlnaW4gPDwgdXJsIDw8IG5hbWU7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERl
Y29kZXI+CitzdGQ6Om9wdGlvbmFsPFNoYXJlZFdvcmtlcktleT4gU2hhcmVkV29ya2VyS2V5Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPENsaWVudE9yaWdp
bj4gb3JpZ2luOworICAgIGRlY29kZXIgPj4gb3JpZ2luOworICAgIGlmICghb3JpZ2luKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxVUkw+IHVybDsK
KyAgICBkZWNvZGVyID4+IHVybDsKKyAgICBpZiAoIXVybCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBuYW1lOworICAgIGRlY29kZXIg
Pj4gbmFtZTsKKyAgICBpZiAoIW5hbWUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICByZXR1cm4geyB7IFdURk1vdmUoKm9yaWdpbiksIFdURk1vdmUoKnVybCksIFdURk1vdmUo
Km5hbWUpIH0gfTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRXb3Jr
ZXJLZXkmIGEsIGNvbnN0IFNoYXJlZFdvcmtlcktleSYgYikKK3sKKyAgICByZXR1cm4gYS5vcmln
aW4gPT0gYi5vcmlnaW4gJiYgYS51cmwgPT0gYi51cmwgJiYgYS5uYW1lID09IGIubmFtZTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8
PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5PiB7CisgICAgc3Rh
dGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBrZXkpCisg
ICAgeworICAgICAgICByZXR1cm4ga2V5Lmhhc2goKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9v
bCBlcXVhbChjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIGEsIGNvbnN0IFdlYkNvcmU6
OlNoYXJlZFdvcmtlcktleSYgYikKKyAgICB7CisgICAgICAgIHJldHVybiBhID09IGI7CisgICAg
fQorCisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQg
PSBmYWxzZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6U2hh
cmVkV29ya2VyS2V5PiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktl
eT4geworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7
CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OlNoYXJlZFdv
cmtlcktleSYgc2xvdCkgeyBuZXcgKE5vdE51bGwsICZzbG90LnVybCkgVVJMKFdURjo6SGFzaFRh
YmxlRGVsZXRlZFZhbHVlKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0
IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgc2xvdCkgeyByZXR1cm4gc2xvdC51cmwuaXNIYXNo
VGFibGVEZWxldGVkVmFsdWUoKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzQxMDg3N2RiMzIxZjc5NTJmMzEyYzg2
ZGMzZmU0YTBiNTVkMDc5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyTWFuYWdlci5oIgotCi0jaW5jbHVk
ZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCi0jaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2lu
Y2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCi0jaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCi0jaW5j
bHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCi0j
aW5jbHVkZSAiU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKLSNpbmNs
dWRlICJTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIgotI2luY2x1ZGUgIldvcmtlclJ1bkxvb3Au
aCIKLSNpbmNsdWRlICJXb3JrZXJTY3JpcHRMb2FkZXIuaCIKLSNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLVNoYXJlZFdvcmtlck1hbmFnZXImIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNpbmdsZXRv
bigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYXJlZFdvcmtlck1hbmFnZXI+IGlu
c3RhbmNlOwotICAgIHJldHVybiBpbnN0YW5jZS5nZXQoKTsKLX0KLQotdm9pZCBTaGFyZWRXb3Jr
ZXJNYW5hZ2VyOjpjb25uZWN0KGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRXb3JrZXImIHdvcmtlciwg
VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIG1lc3NhZ2VQb3J0LCBXb3JrZXJPcHRpb25zJiYgb3B0
aW9ucykKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIC8vIEZJWE1FOiBI
YW5kbGUgd29ya2VycyBmcm9tIG90aGVyIHByb2Nlc3Nlcywgd2hpY2ggd2lsbCBwcm9iYWJseSBy
ZXF1aXJlIG1vdmluZyBjb25uZWN0IHRvIHRoZSBGcmFtZUxvYWRlckNsaWVudCBvciBzb21ldGhp
bmcuCi0gICAgLy8gTWF5YmUgc29tZXRoaW5nIG1vcmUgbGlrZSB3aGF0IFNlcnZpY2VXb3JrZXJz
IGRvZXMuCi0KLSAgICAvLyBGSVhNRTogQ2hlY2sgaWYgd2UgYWxyZWFkeSBtYWRlIGEgdGhyZWFk
LgotICAgIC8vIEZJWE1FOiBDaGVjayBpZiB0aGVyZSdzIGFscmVhZHkgYSBzaGFyZWQgd29ya2Vy
IGFuZCB1c2UgdGhhdCBpZiB0aGVyZSBpcy4KLQotICAgIGF1dG8gbG9hZGVyID0gbWFrZVVuaXF1
ZVJlZjxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+KHVybCwgd29ya2VyLCBXVEZNb3ZlKG1lc3Nh
Z2VQb3J0KSwgV1RGTW92ZShvcHRpb25zKSk7Ci0gICAgYXV0byBpZGVudGlmaWVyID0gbG9hZGVy
LT5pZGVudGlmaWVyKCk7Ci0gICAgbV9sb2FkZXJzLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKGxv
YWRlcikpOwotfQotCi12b2lkIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNjcmlwdExvYWRGYWlsZWQo
U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJiBsb2FkZXIpCi17Ci0gICAgQWN0aXZlRE9NT2JqZWN0
OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQobG9hZGVyLndvcmtlcigpLCBUYXNrU291cmNlOjpE
T01NYW5pcHVsYXRpb24sIEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKLSAgICBtX2xv
YWRlcnMucmVtb3ZlKGxvYWRlci5pZGVudGlmaWVyKCkpOwotfQotCi12b2lkIFNoYXJlZFdvcmtl
ck1hbmFnZXI6OnNjcmlwdExvYWRlZFN1Y2Nlc3NmdWxseShTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXImIGxvYWRlciwgY29uc3QgU2NyaXB0QnVmZmVyJiBzY3JpcHRCdWZmZXIsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFNoYXJlZFdvcmtlciYgc2hhcmVk
V29ya2VyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgdHJhbnNmZXJyZWRQb3J0KQotewotICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgYXV0byYgd29ya2VyID0gbG9hZGVyLndv
cmtlcigpOwotICAgIGF1dG8mIG9wdGlvbnMgPSBsb2FkZXIub3B0aW9ucygpOwotCi0gICAgYXV0
byYgcHJveHkgPSBzaGFyZWRXb3JrZXIucHJveHkoKTsKLQotICAgIHByb3h5LnN0YXJ0V29ya2Vy
R2xvYmFsU2NvcGUoCi0gICAgICAgIGxvYWRlci51cmwoKSwKLSAgICAgICAgb3B0aW9ucy5uYW1l
LAotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LnVzZXJBZ2VudChsb2FkZXIudXJsKCkp
LAotICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+aXNPbkxp
bmUoKSwKLSAgICAgICAgc2NyaXB0QnVmZmVyLAotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5yZXNwb25zZUhlYWRlcnMoKSwKLSAgICAgICAg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC5zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJp
dHlQb2xpY3koKSwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcm9zc09yaWdpbkVt
YmVkZGVyUG9saWN5KCksCi0gICAgICAgIHdvcmtlci5jcmVhdGlvblRpbWUoKSwKLSAgICAgICAg
UmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nLAotICAgICAgICBvcHRpb25zLnR5cGUsCi0gICAg
ICAgIG9wdGlvbnMuY3JlZGVudGlhbHMsCi0gICAgICAgIHdvcmtlci5ydW50aW1lRmxhZ3MoKQot
ICAgICk7Ci0gICAgaWYgKCFwcm94eS50aHJlYWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
UkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxEb2N1bWVudD4oc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkpOwotICAgIGF1dG8gc291cmNlT3JpZ2luID0gZG93bmNhc3Q8
RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnNlY3VyaXR5T3JpZ2luKCkudG9TdHJp
bmcoKTsKLQotICAgIHByb3h5LnRocmVhZCgpLT5ydW5Mb29wKCkucG9zdFRhc2soW3RyYW5zZmVy
cmVkUG9ydCA9IFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwgc291cmNlT3JpZ2luID0gV1RGTW92
ZShzb3VyY2VPcmlnaW4pLmlzb2xhdGVkQ29weSgpXSAoYXV0byYgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIGRvd25jYXN0PFNoYXJlZFdvcmtlckdsb2JhbFNjb3Bl
PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5wb3N0Q29ubmVjdEV2ZW50KFdURk1vdmUodHJhbnNm
ZXJyZWRQb3J0KSwgc291cmNlT3JpZ2luKTsKLSAgICB9KTsKLQotICAgIG1fbG9hZGVycy5yZW1v
dmUobG9hZGVyLmlkZW50aWZpZXIoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjUyMTgxNmU2NWM3NzY3MWQ5MzM3YTgx
NzE1NWVmOTk3ODU0ZDg0OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2Vy
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpbmNsdWRlICJNZXNzYWdlUG9ydElkZW50aWZpZXIuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkV29y
a2VyOwotY2xhc3MgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOwotY2xhc3MgU2NyaXB0QnVmZmVy
Owotc3RydWN0IFdvcmtlck9wdGlvbnM7Ci11c2luZyBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0ID0g
c3RkOjpwYWlyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVzc2Fn
ZVBvcnRJZGVudGlmaWVyPjsKLQotdXNpbmcgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRp
ZmllciA9IE9iamVjdElkZW50aWZpZXI8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPjsKLQotY2xh
c3MgU2hhcmVkV29ya2VyTWFuYWdlciB7Ci1wdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFNoYXJlZFdvcmtlck1hbmFnZXImIHNpbmdsZXRvbigpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY29ubmVjdChjb25zdCBVUkwmLCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJlZE1lc3Nh
Z2VQb3J0JiYsIFdvcmtlck9wdGlvbnMmJik7Ci0KLSAgICB2b2lkIHNjcmlwdExvYWRGYWlsZWQo
U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJik7Ci0gICAgdm9pZCBzY3JpcHRMb2FkZWRTdWNjZXNz
ZnVsbHkoU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIFNoYXJlZFdvcmtlciYsIFRyYW5zZmVycmVkTWVzc2FnZVBv
cnQmJik7Ci0KLXByaXZhdGU6Ci0gICAgSGFzaE1hcDxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXJJ
ZGVudGlmaWVyLCBVbmlxdWVSZWY8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPj4gbV9sb2FkZXJz
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNw
cAppbmRleCBkZGEzODRkMjI5MTIwMjgzYzEyZDQ3YTU3NTY4OTJmOGE4MDJiNThiLi4xY2RlMGJh
MzU5NTY5MWZhMGNkZmQzNzQzMWQzZjRiOTc0OGQ2YTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uLmNwcApAQCAtMjYsMTAgKzI2LDY2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIgogCisjaW5jbHVkZSAiQWN0aXZlRE9N
T2JqZWN0LmgiCisjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KyNpbmNsdWRlICJTY3JpcHRCdWZmZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKKyNp
bmNsdWRlICJTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJGZXRj
aFJlc3VsdC5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNkZWZpbmUgQ09OTkVDVElPTl9S
RUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKyNk
ZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9MT0df
RVJST1IoU2hhcmVkV29ya2VyLCAiJXAgLSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjoi
IGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKworc3RhdGljIHVpbnQ2NF90IGxvYWRlcklkZW50
aWZpZXJTZWVkID0gMDsKKwogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6U2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbigpID0gZGVmYXVsdDsKIAogU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbjo6flNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CiAKK3Zv
aWQgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6ZmV0Y2hTY3JpcHRJbkNsaWVudChVUkwm
JiB1cmwsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciwgV29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byogd29ya2Vy
T2JqZWN0ID0gU2hhcmVkV29ya2VyOjpmcm9tSWRlbnRpZmllcihzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyKTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJmZXRjaFNjcmlwdEluQ2xp
ZW50OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMsIHdvcmtlcj0lcCIs
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB3
b3JrZXJPYmplY3QpOworICAgIGlmICghd29ya2VyT2JqZWN0KQorICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIod29ya2VyRmV0Y2hFcnJvcihSZXNvdXJjZUVycm9yIHsgUmVzb3VyY2VF
cnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uIH0pKTsKKworICAgIGF1dG8gbG9hZGVySWRlbnRpZmll
ciA9ICsrbG9hZGVySWRlbnRpZmllclNlZWQ7CisgICAgYXV0byBsb2FkZXIgPSBtYWtlVW5pcXVl
UmVmPFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj4oV1RGTW92ZSh1cmwpLCAqd29ya2VyT2JqZWN0
LCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMpKTsKKyAgICBhdXRvIGxvYWRlclB0ciA9IGxvYWRlci5w
dHIoKTsKKyAgICBtX2xvYWRlcnMuYWRkKGxvYWRlcklkZW50aWZpZXIsIFdURk1vdmUobG9hZGVy
KSk7CisKKyAgICBsb2FkZXJQdHItPmxvYWQoW3RoaXMsIGxvYWRlcklkZW50aWZpZXIsIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IFdvcmtlckZl
dGNoUmVzdWx0JiBmZXRjaFJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIENPTk5FQ1RJT05fUkVM
RUFTRV9MT0coImZldGNoU2NyaXB0SW5DbGllbnQ6IGZpbmlzaGVkIHNjcmlwdCBsb2FkLCBzdWNj
ZXNzPSVkIiwgZmV0Y2hSZXN1bHQuZXJyb3IuaXNOdWxsKCkpOworICAgICAgICBhdXRvIGxvYWRl
ciA9IG1fbG9hZGVycy50YWtlKGxvYWRlcklkZW50aWZpZXIpOworICAgICAgICBBU1NFUlQobG9h
ZGVyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmV0Y2hSZXN1bHQpOworICAgIH0pOwor
fQorCit2b2lkIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Om5vdGlmeVdvcmtlck9iamVj
dE9mTG9hZENvbXBsZXRpb24oV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8qIHdvcmtlck9iamVjdCA9
IFNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
cik7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUigibm90aWZ5V29ya2VyT2JqZWN0
T2ZMb2FkQ29tcGxldGlvbjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31z
LCB3b3JrZXI9JXAsIHN1Y2Nlc3M9JWQiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRv
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgd29ya2VyT2JqZWN0LCBlcnJvci5pc051bGwoKSk7Cisg
ICAgaWYgKHdvcmtlck9iamVjdCkKKyAgICAgICAgd29ya2VyT2JqZWN0LT5kaWRGaW5pc2hMb2Fk
aW5nKGVycm9yKTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpwb3N0
RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQor
eworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgYXV0byogd29ya2VyT2JqZWN0ID0g
U2hhcmVkV29ya2VyOjpmcm9tSWRlbnRpZmllcihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
KTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKCJwb3N0RXhjZXB0aW9uVG9Xb3Jr
ZXJPYmplY3Q6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cywgd29ya2Vy
PSVwIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRh
KCksIHdvcmtlck9iamVjdCk7CisgICAgaWYgKHdvcmtlck9iamVjdCkKKyAgICAgICAgQWN0aXZl
RE9NT2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKndvcmtlck9iamVjdCwgVGFza1Nv
dXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFcnJvckV2ZW50OjpjcmVhdGUoZXJyb3JNZXNzYWdlLCBz
b3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgeyB9KSk7Cit9CisKKyN1bmRlZiBD
T05ORUNUSU9OX1JFTEVBU0VfTE9HCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJP
UgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKaW5kZXgg
NGVkNWExYzY1YjU4ZDA5OGRjMGY2ODA4YjYwZWUwYTAzODdkN2JkNi4uNjdhMjAyMDhmZDI3ZjA5
MTJlZmY2MWIzZWZmZjI0YmQzZjgwZWE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApAQCAt
MjUsMjIgKzI1LDM4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiU2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlRyYW5zZmVycmVkTWVzc2FnZVBvcnQuaCIK
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBT
aGFyZWRXb3JrZXI7CitjbGFzcyBNZXNzYWdlUG9ydDsKK2NsYXNzIFNoYXJlZFdvcmtlclNjcmlw
dExvYWRlcjsKKworc3RydWN0IFNoYXJlZFdvcmtlcktleTsKK3N0cnVjdCBXb3JrZXJGZXRjaFJl
c3VsdDsKIHN0cnVjdCBXb3JrZXJPcHRpb25zOwogCiBjbGFzcyBTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bj4gewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24oKTsKIAotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2Vy
KGNvbnN0IFVSTCYsIFNoYXJlZFdvcmtlciYsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgV29y
a2VyT3B0aW9ucyYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIo
Y29uc3QgU2hhcmVkV29ya2VyS2V5JiwgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgVHJh
bnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBjb25zdCBXb3JrZXJPcHRpb25zJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShjb25zdCBTaGFyZWRXb3Jr
ZXJLZXkmLCBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKSA9IDA7CiAKIHByb3RlY3RlZDoK
KyAgICAvLyBJUEMgbWVzc2FnZXMuCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmZXRjaFNjcmlw
dEluQ2xpZW50KFVSTCYmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBX
b3JrZXJPcHRpb25zJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hS
ZXN1bHQmKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBub3RpZnlXb3JrZXJPYmplY3RP
ZkxvYWRDb21wbGV0aW9uKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RFeGNlcHRp
b25Ub1dvcmtlck9iamVjdChTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMKTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24oKTsKKworcHJpdmF0ZToKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBVbmlx
dWVSZWY8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPj4gbV9sb2FkZXJzOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViY2Q0
YTdhZTg3YWRmNWZiMWM3NGQ1NjgyNDYxMTI3NGE1ZjkyZWQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiUHJvY2Vzc1F1YWxpZmllZC5oIgorI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyVHlwZSB7IH07Cit1c2luZyBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyID0gUHJvY2Vz
c1F1YWxpZmllZDxPYmplY3RJZGVudGlmaWVyPFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXJU
eXBlPj47CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4
IDMxMWViZDYwNzhiYzYxZTAxNjlmMWE4NGVhNzE2NGIwODQzNmM2MzkuLmVhMmUwNDhjNzYyMmE2
Mjc2MWUzYzI1ZTI1MmQyN2Y4OTUxMWM2ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwyMyAr
MjksMjYgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCi0jaW5jbHVkZSAiU2hh
cmVkV29ya2VyTWFuYWdlci5oIgorI2luY2x1ZGUgIldvcmtlckZldGNoUmVzdWx0LmgiCiAjaW5j
bHVkZSAiV29ya2VyUnVuTG9vcC5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRXb3JrZXImIHdvcmtlciwg
VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBvcnQsIFdvcmtlck9wdGlvbnMmJiBvcHRpb25zKQot
ICAgIDogbV9pZGVudGlmaWVyKFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcklkZW50aWZpZXI6Omdl
bmVyYXRlKCkpCi0gICAgLCBtX29wdGlvbnMoV1RGTW92ZShvcHRpb25zKSkKK1NoYXJlZFdvcmtl
clNjcmlwdExvYWRlcjo6U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyKFVSTCYmIHVybCwgU2hhcmVk
V29ya2VyJiB3b3JrZXIsIFdvcmtlck9wdGlvbnMmJiBvcHRpb25zKQorICAgIDogbV9vcHRpb25z
KFdURk1vdmUob3B0aW9ucykpCiAgICAgLCBtX3dvcmtlcih3b3JrZXIpCi0gICAgLCBtX3BvcnQo
V1RGTW92ZShwb3J0KSkKICAgICAsIG1fbG9hZGVyKFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRl
KCkpCi0gICAgLCBtX3BlbmRpbmdBY3Rpdml0eSh3b3JrZXIubWFrZVBlbmRpbmdBY3Rpdml0eSh3
b3JrZXIpKQotICAgICwgbV91cmwodXJsKQorICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQogewot
ICAgIG1fd29ya2VyLT5zZXRJc0xvYWRpbmcodHJ1ZSk7Ci0gICAgbV9sb2FkZXItPmxvYWRBc3lu
Y2hyb25vdXNseSgqd29ya2VyLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgUmVzb3VyY2VSZXF1
ZXN0KHVybCksIHdvcmtlci53b3JrZXJGZXRjaE9wdGlvbnMob3B0aW9ucywgRmV0Y2hPcHRpb25z
OjpEZXN0aW5hdGlvbjo6U2hhcmVkd29ya2VyKSwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3Jj
ZW1lbnQ6OkVuZm9yY2VXb3JrZXJTcmNEaXJlY3RpdmUsIFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxs
LCAqdGhpcywgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7Cit9CisKK3ZvaWQgU2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29y
a2VyRmV0Y2hSZXN1bHQmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoIW1f
Y29tcGxldGlvbkhhbmRsZXIpOworICAgIG1fY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKTsKKworICAgIG1fbG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoKm1f
d29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFJlc291cmNlUmVxdWVzdChtX3VybCks
IG1fd29ya2VyLT53b3JrZXJGZXRjaE9wdGlvbnMobV9vcHRpb25zLCBGZXRjaE9wdGlvbnM6OkRl
c3RpbmF0aW9uOjpTaGFyZWR3b3JrZXIpLCBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVu
dDo6RW5mb3JjZVdvcmtlclNyY0RpcmVjdGl2ZSwgU2VydmljZVdvcmtlcnNNb2RlOjpBbGwsICp0
aGlzLCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKIH0KIAogdm9pZCBTaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCkBAIC01NSwxNiArNTgsMTIg
QEAgdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnQKIAogdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXI6Om5vdGlmeUZpbmlzaGVkKCkKIHsKLSAgICBtX3dvcmtlci0+c2V0SXNMb2FkaW5nKGZhbHNl
KTsKKyAgICBpZiAobV9sb2FkZXItPmZhaWxlZCgpKQorICAgICAgICByZXR1cm4gbV9jb21wbGV0
aW9uSGFuZGxlcih3b3JrZXJGZXRjaEVycm9yKG1fbG9hZGVyLT5lcnJvcigpKSk7CiAKLSAgICBh
dXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKLSAgICBpZiAobV9sb2FkZXItPmZhaWxlZCgpIHx8ICFzY3JpcHRFeGVjdXRpb25D
b250ZXh0KSB7Ci0gICAgICAgIG1fd29ya2VyLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXND
YW5jZWxhYmxlOjpZZXMpKTsKLSAgICAgICAgU2hhcmVkV29ya2VyTWFuYWdlcjo6c2luZ2xldG9u
KCkuc2NyaXB0TG9hZEZhaWxlZCgqdGhpcyk7IC8vIGRlbGV0ZXMgdGhpcy4KLSAgICB9IGVsc2Ug
eworICAgIGlmIChhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbV93b3JrZXItPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpz
Y3JpcHRJbXBvcnRlZCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgbV9sb2FkZXItPmlkZW50aWZp
ZXIoKSwgbV9sb2FkZXItPnNjcmlwdCgpLnRvU3RyaW5nKCkpOwotICAgICAgICBTaGFyZWRXb3Jr
ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5zY3JpcHRMb2FkZWRTdWNjZXNzZnVsbHkoKnRoaXMsIG1f
bG9hZGVyLT5zY3JpcHQoKSwgKm1fd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1f
d29ya2VyLmdldCgpLCBzdGQ6OmV4Y2hhbmdlKG1fcG9ydCwgeyB9KSk7IC8vIGRlbGV0ZXMgdGhp
cy4KLSAgICB9CisgICAgbV9jb21wbGV0aW9uSGFuZGxlcih7IG1fbG9hZGVyLT5zY3JpcHQoKSwg
bV9sb2FkZXItPmNlcnRpZmljYXRlSW5mbygpLCBtX2xvYWRlci0+Y29udGVudFNlY3VyaXR5UG9s
aWN5KCksIG1fbG9hZGVyLT5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KCksIG1fbG9hZGVyLT5y
ZWZlcnJlclBvbGljeSgpLCB7IH0gfSk7IC8vIGRlbGV0ZXMgdGhpcy4KIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaAppbmRleCBhZTViM2JiOWVjNTIwNzQ1MzNlZmQ4
NDA5MmNlZWE5OTlmMjAxNzk5Li5lYjBiNzE0NWJmYTFhYmY0NWRkOTYyYTAyMTVjYjg5MDljY2Nk
Mzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXJTY3JpcHRMb2FkZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSwxMSArMjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0SWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IlJlc291cmNlUmVzcG9uc2UuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiV29ya2VyT3B0aW9ucy5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlckNs
aWVudC5oIgogI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CkBAIC0zOSwzMiArMzcs
MjggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTaGFyZWRXb3JrZXI7CiBjbGFzcyBX
b3JrZXJTY3JpcHRMb2FkZXI7Ci0KLWNsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjsKLQot
dXNpbmcgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpNZXNzYWdl
UG9ydElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllcj47CitzdHJ1Y3Qg
V29ya2VyRmV0Y2hSZXN1bHQ7CiAKIGNsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciA6IHBy
aXZhdGUgV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIoY29uc3QgVVJMJiwg
U2hhcmVkV29ya2VyJiwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBXb3JrZXJPcHRpb25zJiYp
OworICAgIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcihVUkwmJiwgU2hhcmVkV29ya2VyJiwgV29y
a2VyT3B0aW9ucyYmKTsKKworICAgIHZvaWQgbG9hZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFdvcmtlckZldGNoUmVzdWx0Jik+JiYpOwogCi0gICAgU2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9
CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIFNoYXJl
ZFdvcmtlciYgd29ya2VyKCkgeyByZXR1cm4gbV93b3JrZXIuZ2V0KCk7IH0KLSAgICBjb25zdCBX
b3JrZXJPcHRpb25zJiBvcHRpb25zKCkgeyByZXR1cm4gbV9vcHRpb25zOyB9CisgICAgY29uc3Qg
V29ya2VyT3B0aW9ucyYgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9uczsgfQogCiBw
cml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5Rmlu
aXNoZWQoKSBmaW5hbDsKIAotICAgIGNvbnN0IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcklkZW50
aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIGNvbnN0IFdvcmtlck9wdGlvbnMgbV9vcHRpb25zOwog
ICAgIGNvbnN0IFJlZjxTaGFyZWRXb3JrZXI+IG1fd29ya2VyOwotICAgIFRyYW5zZmVycmVkTWVz
c2FnZVBvcnQgbV9wb3J0OwogICAgIGNvbnN0IFJlZjxXb3JrZXJTY3JpcHRMb2FkZXI+IG1fbG9h
ZGVyOwotICAgIGNvbnN0IFJlZjxBY3RpdmVET01PYmplY3Q6OlBlbmRpbmdBY3Rpdml0eTxTaGFy
ZWRXb3JrZXI+PiBtX3BlbmRpbmdBY3Rpdml0eTsKICAgICBjb25zdCBVUkwgbV91cmw7CisgICAg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYpPiBtX2NvbXBs
ZXRpb25IYW5kbGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wN2E5MGQ5ODA1MTI0YmVhYmMy
ZTY0ZGQyMzA4NDlmMzYyOTg0N2M3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKQEAg
LTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KyNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyJiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkKK3sKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI+IHNoYXJl
ZE1hbmFnZXI7CisgICAgcmV0dXJuIHNoYXJlZE1hbmFnZXI7Cit9CisKK1NoYXJlZFdvcmtlclRo
cmVhZFByb3h5KiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2hhcmVkV29ya2VyKFNoYXJl
ZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV93b3JrZXJNYXAuZ2V0KHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworfQorCit2b2lk
IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzdG9wU2hhcmVkV29ya2VyKFNoYXJlZFdvcmtl
cklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHdvcmtlciA9
IG1fd29ya2VyTWFwLnRha2Uoc2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9M
T0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0b3BTaGFyZWRX
b3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHdvcmtlcj0lcCIsIHNo
YXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSwgd29ya2VyLmdldCgpKTsKKyAgICBpZiAo
IXdvcmtlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgd29ya2VyLT5zZXRBc1Rlcm1pbmF0aW5n
T3JUZXJtaW5hdGVkKCk7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gZGVh
bCB3aXRoIHRoZSB0aHJlYWQgYmVpbmcgdW5yZXNwb25zaXZlIGhlcmUuCisKKyAgICBhdXRvJiB0
aHJlYWQgPSB3b3JrZXItPnRocmVhZCgpOworICAgIHRocmVhZC5zdG9wKFt3b3JrZXIgPSBXVEZN
b3ZlKHdvcmtlcildKCkgbXV0YWJsZSB7CisgICAgICAgIC8vIFNwaW4gdGhlIHJ1bmxvb3AgYmVm
b3JlIHJlbGVhc2luZyB0aGUgc2hhcmVkIHdvcmtlciB0aHJlYWQgcHJveHksIGFzIHRoZXJlIHdv
dWxkIG90aGVyd2lzZSBiZQorICAgICAgICAvLyBhIHJhY2UgdG93YXJkcyBpdHMgZGVzdHJ1Y3Rp
b24uCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dvcmtlciA9IFdURk1vdmUod29ya2VyKV0g
eyB9KTsKKyAgICB9KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c3Rv
cEFsbFNoYXJlZFdvcmtlcnMoKQoreworICAgIHdoaWxlICghbV93b3JrZXJNYXAuaXNFbXB0eSgp
KQorICAgICAgICBzdG9wU2hhcmVkV29ya2VyKG1fd29ya2VyTWFwLmJlZ2luKCktPmtleSk7Cit9
CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNldENvbm5lY3Rpb24oc3RkOjp1
bmlxdWVfcHRyPENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlQoIW1fY29u
bmVjdGlvbiB8fCBtX2Nvbm5lY3Rpb24tPmlzQ2xvc2VkKCkpOworICAgIG1fY29ubmVjdGlvbiA9
IFdURk1vdmUoY29ubmVjdGlvbik7Cit9CisKK2F1dG8gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXI6OmNvbm5lY3Rpb24oKSBjb25zdCAtPiBDb25uZWN0aW9uKgoreworICAgIHJldHVybiBtX2Nv
bm5lY3Rpb24uZ2V0KCk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnJl
Z2lzdGVyU2hhcmVkV29ya2VyVGhyZWFkKFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4mJiBw
cm94eSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIFJFTEVBU0VfTE9HKFNo
YXJlZFdvcmtlciwgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpyZWdpc3RlclNoYXJlZFdv
cmtlclRocmVhZDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHByb3h5LT5pZGVu
dGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IG1fd29ya2VyTWFwLmFk
ZChwcm94eS0+aWRlbnRpZmllcigpLCBwcm94eS5jb3B5UmVmKCkpOworICAgIEFTU0VSVF9VTlVT
RUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICBwcm94eS0+dGhyZWFkKCkuc3Rh
cnQoW10oY29uc3QgU3RyaW5nJiAvKmV4Y2VwdGlvbk1lc3NhZ2UqLykgeyB9KTsKK30KKwordm9p
ZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVu
dChTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFRyYW5zZmVy
cmVkTWVzc2FnZVBvcnQmJiB0cmFuc2ZlcnJlZFBvcnQsIFN0cmluZyYmIHNvdXJjZU9yaWdpbikK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8qIHByb3h5ID0gU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNoYXJlZFdvcmtlcihzaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVudDogc2hhcmVkV29y
a2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgcHJveHk9JXAiLCBzaGFyZWRXb3JrZXJJZGVudGlm
aWVyLnRvVUludDY0KCksIHByb3h5KTsKKyAgICBpZiAoIXByb3h5KQorICAgICAgICByZXR1cm47
CisKKyAgICBwcm94eS0+dGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFt0cmFuc2ZlcnJlZFBv
cnQgPSBXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCksIHNvdXJjZU9yaWdpbiA9IFdURk1vdmUoc291
cmNlT3JpZ2luKS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
IG11dGFibGUgeworICAgICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgZG93
bmNhc3Q8U2hhcmVkV29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnBv
c3RDb25uZWN0RXZlbnQoV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBXVEZNb3ZlKHNvdXJjZU9y
aWdpbikpOworICAgIH0pOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpD
b25uZWN0aW9uOjp0ZXJtaW5hdGVTaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllciBz
aGFyZWRXb3JrZXJJZGVudGlmaWVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Cisg
ICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6
OkNvbm5lY3Rpb246OnRlcm1pbmF0ZVNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmll
cj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnN0b3BTaGFyZWRXb3JrZXIoc2hh
cmVkV29ya2VySWRlbnRpZmllcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQv
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMzgyNTI4OTM3M2UwZTY4
NjFiOWVjZTdkN2JlOWMxMzE2YzkwZTIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oCkBA
IC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNo
YXJlZFdvcmtlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0
LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTsKKworY2xhc3MgU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXIgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlciYgc2luZ2xldG9uKCk7CisKKyAgICBTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eSogc2hhcmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIpIGNvbnN0OworICAgIHZv
aWQgc3RvcFNoYXJlZFdvcmtlcihTaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHN0b3BBbGxTaGFyZWRXb3JrZXJzKCk7CisKKyAgICBjbGFzcyBDb25uZWN0
aW9uIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAg
ICAgICB2aXJ0dWFsIH5Db25uZWN0aW9uKCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBlc3Rh
Ymxpc2hDb25uZWN0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgPSAwOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFNoYXJlZFdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpID0gMDsKKyAgICAgICAgYm9v
bCBpc0Nsb3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDbG9zZWQ7IH0KKworICAgIHByb3RlY3Rl
ZDoKKyAgICAgICAgdm9pZCBzZXRBc0Nsb3NlZCgpIHsgbV9pc0Nsb3NlZCA9IHRydWU7IH0KKwor
ICAgICAgICAvLyBJUEMgbWVzc2FnZSBoYW5kbGVycy4KKyAgICAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBwb3N0Q29ubmVjdEV2ZW50KFNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFRyYW5zZmVycmVk
TWVzc2FnZVBvcnQmJiwgU3RyaW5nJiYgc291cmNlT3JpZ2luKTsKKyAgICAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB0ZXJtaW5hdGVTaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllcik7
CisKKyAgICBwcml2YXRlOgorICAgICAgICBib29sIG1faXNDbG9zZWQgeyBmYWxzZSB9OworICAg
IH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbm5lY3Rpb24oc3RkOjp1bmlxdWVf
cHRyPENvbm5lY3Rpb24+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIENvbm5lY3Rpb24qIGNvbm5l
Y3Rpb24oKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVnaXN0ZXJTaGFyZWRX
b3JrZXJUaHJlYWQoUmVmPFNoYXJlZFdvcmtlclRocmVhZFByb3h5PiYmKTsKKworcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8U2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXI+OworCisgICAgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIoKSA9IGRlZmF1bHQ7CisKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIEhhc2hNYXA8
U2hhcmVkV29ya2VySWRlbnRpZmllciwgUmVmPFNoYXJlZFdvcmtlclRocmVhZFByb3h5Pj4gbV93
b3JrZXJNYXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHkuY3BwCmluZGV4IDliZDk3ODNkN2E3ZTU4ZTY3YjZiODBiNWQ1NDRmZWMyZWNm
MmNhZjUuLjI2YmE3YjY4YmNlZDJlOTJlMTY3ZTc3OWM5Y2Q1NWQzZDNiMTc4NzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQv
U2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDk0ICsyOCw3MiBAQAogCiAjaW5jbHVkZSAi
Q2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJFcnJvckV2ZW50LmgiCisjaW5jbHVk
ZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkZyYW1l
LmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRl
ci5oIgorI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgorI2luY2x1ZGUg
IlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyR2xv
YmFsU2NvcGUuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlICJX
b3JrZXJGZXRjaFJlc3VsdC5oIgorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXJzRmFjdG9yeS5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShT
aGFyZWRXb3JrZXImIHNoYXJlZFdvcmtlcikKLSAgICA6IG1fc2hhcmVkV29ya2VyKHNoYXJlZFdv
cmtlcikKLSAgICAsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChzaGFyZWRXb3JrZXIuc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICwgbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yKHNoYXJl
ZFdvcmtlci5pZGVudGlmaWVyRm9ySW5zcGVjdG9yKCkpCitzdGF0aWMgSGFzaFNldDxTaGFyZWRX
b3JrZXJUaHJlYWRQcm94eSo+JiBhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkKIHsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSo+
PiBzZXQ7CisgICAgcmV0dXJuIHNldDsKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eTo6c3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgY29uc3Qg
U2NyaXB0QnVmZmVyJiBzY3JpcHRCdWZmZXIsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLCBib29s
IHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgQ3Jvc3NP
cmlnaW5FbWJlZGRlclBvbGljeSYgY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwgTW9ub3Rvbmlj
VGltZSB0aW1lT3JpZ2luLCBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSwgV29ya2VyVHlw
ZSB3b3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RDcmVkZW50aWFscyBjcmVkZW50aWFscywgSlNDOjpS
dW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKQorc3RhdGljIFdvcmtlclBhcmFtZXRlcnMgZ2VuZXJh
dGVXb3JrZXJQYXJhbWV0ZXJzKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBXb3JrZXJGZXRj
aFJlc3VsdCYgd29ya2VyRmV0Y2hSZXN1bHQsIFdvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25z
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIGlm
IChtX2Fza2VkVG9UZXJtaW5hdGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gcGFyYW1l
dGVycyA9IFdvcmtlclBhcmFtZXRlcnMgeworICAgIHJldHVybiBXb3JrZXJQYXJhbWV0ZXJzIHsK
ICAgICAgICAgc2NyaXB0VVJMLAotICAgICAgICBuYW1lLAotICAgICAgICBtX2lkZW50aWZpZXJG
b3JJbnNwZWN0b3IsCisgICAgICAgIHdvcmtlck9wdGlvbnMubmFtZSwKKyAgICAgICAgInNoYXJl
ZHdvcmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZp
ZXIoKSwKICAgICAgICAgdXNlckFnZW50LAotICAgICAgICBpc09ubGluZSwKLSAgICAgICAgY29u
dGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLAotICAgICAgICBzaG91bGRCeXBhc3NN
YWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksCi0gICAgICAgIGNyb3NzT3JpZ2luRW1iZWRk
ZXJQb2xpY3ksCi0gICAgICAgIHRpbWVPcmlnaW4sCi0gICAgICAgIHJlZmVycmVyUG9saWN5LAot
ICAgICAgICB3b3JrZXJUeXBlLAotICAgICAgICBjcmVkZW50aWFscywKLSAgICAgICAgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5zZXR0aW5nc1ZhbHVlcygpCisgICAgICAgIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5pc09uTGluZSgpLAorICAgICAgICB3b3JrZXJG
ZXRjaFJlc3VsdC5jb250ZW50U2VjdXJpdHlQb2xpY3ksCisgICAgICAgIGZhbHNlLAorICAgICAg
ICB3b3JrZXJGZXRjaFJlc3VsdC5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LAorICAgICAgICBN
b25vdG9uaWNUaW1lOjpub3coKSwKKyAgICAgICAgcGFyc2VSZWZlcnJlclBvbGljeSh3b3JrZXJG
ZXRjaFJlc3VsdC5yZWZlcnJlclBvbGljeSwgUmVmZXJyZXJQb2xpY3lTb3VyY2U6OkhUVFBIZWFk
ZXIpLnZhbHVlX29yKFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZyksCisgICAgICAgIHdvcmtl
ck9wdGlvbnMudHlwZSwKKyAgICAgICAgd29ya2VyT3B0aW9ucy5jcmVkZW50aWFscywKKyAgICAg
ICAgZG9jdW1lbnQuc2V0dGluZ3NWYWx1ZXMoKQogICAgIH07Ci0KLSAgICBpZiAoIW1fd29ya2Vy
VGhyZWFkKSB7Ci0gICAgICAgIG1fd29ya2VyVGhyZWFkID0gU2hhcmVkV29ya2VyVGhyZWFkOjpj
cmVhdGUoU2hhcmVkV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgcGFyYW1ldGVycywgc2Ny
aXB0QnVmZmVyLCAqdGhpcywgKnRoaXMsICp0aGlzLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5v
cm1hbCwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT50b3BPcmlnaW4oKSwgbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5pZGJDb25uZWN0aW9uUHJveHkoKSwgbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5zb2NrZXRQcm92aWRlcigpLCBydW50aW1lRmxhZ3MpOwotICAgICAgICBtX3dvcmtlclRo
cmVhZC0+c3RhcnQoKTsKLSAgICB9Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6
OnRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCkKLXsKLSAgICBpZiAobV9hc2tlZFRvVGVybWlu
YXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2Fza2VkVG9UZXJtaW5hdGUgPSB0cnVlOwot
ICAgIGlmIChtX3dvcmtlclRocmVhZCkKLSAgICAgICAgbV93b3JrZXJUaHJlYWQtPnN0b3AobnVs
bHB0cik7CiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RNZXNzYWdlVG9X
b3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UpCitTaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHkoVW5pcXVlUmVmPFBh
Z2U+JiYgcGFnZSwgU2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVy
LCBjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgY29uc3QgVVJMJiBzY3JpcHRVUkws
IFdvcmtlckZldGNoUmVzdWx0JiYgd29ya2VyRmV0Y2hSZXN1bHQsIFdvcmtlck9wdGlvbnMmJiB3
b3JrZXJPcHRpb25zLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgQ2FjaGVTdG9yYWdlUHJvdmlk
ZXImIGNhY2hlU3RvcmFnZVByb3ZpZGVyKQorICAgIDogbV9wYWdlKFdURk1vdmUocGFnZSkpCisg
ICAgLCBtX2RvY3VtZW50KCptX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCisgICAgLCBt
X3dvcmtlclRocmVhZChTaGFyZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZShzaGFyZWRXb3JrZXJJZGVu
dGlmaWVyLCBnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMoc2NyaXB0VVJMLCB3b3JrZXJGZXRjaFJl
c3VsdCwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSwgdXNlckFnZW50LCBtX2RvY3VtZW50KSwgV1RG
TW92ZSh3b3JrZXJGZXRjaFJlc3VsdC5zY3JpcHQpLCAqdGhpcywgKnRoaXMsICp0aGlzLCBXb3Jr
ZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgY2xpZW50T3JpZ2luLnRvcE9yaWdpbi5zZWN1cml0
eU9yaWdpbigpLCBtX2RvY3VtZW50LT5pZGJDb25uZWN0aW9uUHJveHkoKSwgbV9kb2N1bWVudC0+
c29ja2V0UHJvdmlkZXIoKSwgSlNDOjpSdW50aW1lRmxhZ3M6OmNyZWF0ZUFsbEVuYWJsZWQoKSkp
CisgICAgLCBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyKGNhY2hlU3RvcmFnZVByb3ZpZGVyKQogewot
ICAgIC8vIEZJWE1FOiBTaGFyZWRXb3JrZXIgZG9lc24ndCBoYXZlIHBvc3RNZXNzYWdlLCBzbyB0
aGlzIG1pZ2h0IG5vdCBiZSBuZWNlc3NhcnkuCi0gICAgcG9zdFRhc2tUb1dvcmtlckdsb2JhbFNj
b3BlKFttZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKV0oYXV0byYgc2NyaXB0Q29udGV4dCkgbXV0
YWJsZSB7Ci0gICAgICAgIGF1dG8mIGNvbnRleHQgPSBkb3duY2FzdDxTaGFyZWRXb3JrZXJHbG9i
YWxTY29wZT4oc2NyaXB0Q29udGV4dCk7Ci0gICAgICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9y
dDo6ZW50YW5nbGVQb3J0cyhzY3JpcHRDb250ZXh0LCBXVEZNb3ZlKG1lc3NhZ2UudHJhbnNmZXJy
ZWRQb3J0cykpOwotICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50Ojpj
cmVhdGUoV1RGTW92ZShwb3J0cyksIG1lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpKSk7
Ci0gICAgfSk7Ci19CisgICAgQVNTRVJUKCFhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCku
Y29udGFpbnModGhpcykpOworICAgIGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKS5hZGQo
dGhpcyk7CiAKLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RUYXNrVG9Xb3JrZXJH
bG9iYWxTY29wZShGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJiB0YXNr
KQotewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBt
X3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFdURk1vdmUodGFzaykpOwotfQotCi1i
b29sIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAot
ewotICAgIHJldHVybiBtX2hhc1BlbmRpbmdBY3Rpdml0eSAmJiAhbV9hc2tlZFRvVGVybWluYXRl
OworICAgIHN0YXRpYyBib29sIGFkZGVkTGlzdGVuZXI7CisgICAgaWYgKCFhZGRlZExpc3RlbmVy
KSB7CisgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5hZGRP
bmxpbmVTdGF0ZUNoYW5nZUxpc3RlbmVyKCZuZXR3b3JrU3RhdGVDaGFuZ2VkKTsKKyAgICAgICAg
YWRkZWRMaXN0ZW5lciA9IHRydWU7CisgICAgfQogfQogCi12b2lkIFNoYXJlZFdvcmtlclRocmVh
ZFByb3h5Ojp3b3JrZXJPYmplY3REZXN0cm95ZWQoKQorU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6
On5TaGFyZWRXb3JrZXJUaHJlYWRQcm94eSgpCiB7Ci0gICAgbV9zaGFyZWRXb3JrZXIgPSBudWxs
cHRyOwotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXNdIChhdXRv
JikgewotICAgICAgICBtX21heUJlRGVzdHJveWVkID0gdHJ1ZTsKLSAgICAgICAgaWYgKG1fd29y
a2VyVGhyZWFkKQotICAgICAgICAgICAgdGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5h
bCgpOwotICAgIH0pOworICAgIEFTU0VSVChhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCku
Y29udGFpbnModGhpcykpOworICAgIGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKS5yZW1v
dmUodGhpcyk7CiB9CiAKIFNoYXJlZFdvcmtlcklkZW50aWZpZXIgU2hhcmVkV29ya2VyVGhyZWFk
UHJveHk6OmlkZW50aWZpZXIoKSBjb25zdApAQCAtMTI1LDg4ICsxMDMsNTQgQEAgU2hhcmVkV29y
a2VySWRlbnRpZmllciBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6aWRlbnRpZmllcigpIGNvbnN0
CiAKIHZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Om5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5n
ZShib29sIGlzT25saW5lKQogewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCisgICAgaWYg
KG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KCFtX3dvcmtlclRocmVhZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV93b3JrZXJUaHJlYWQt
PnJ1bkxvb3AoKS5wb3N0VGFzayhbaXNPbmxpbmVdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSB7CisgICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZShbaXNPbmxpbmVdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAg
IGF1dG8mIGdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQp
OwogICAgICAgICBnbG9iYWxTY29wZS5zZXRJc09ubGluZShpc09ubGluZSk7Ci0gICAgICAgIGds
b2JhbFNjb3BlLmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShpc09ubGluZSA/IGV2ZW50TmFt
ZXMoKS5vbmxpbmVFdmVudCA6IGV2ZW50TmFtZXMoKS5vZmZsaW5lRXZlbnQsIEV2ZW50OjpDYW5C
dWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwotICAgIH0pOwotfQotCi12b2lk
IFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpzdXNwZW5kRm9yQmFja0ZvcndhcmRDYWNoZSgpCi17
Ci0KLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cmVzdW1lRm9yQmFja0Zvcndh
cmRDYWNoZSgpCi17Ci0KKyAgICAgICAgZ2xvYmFsU2NvcGUuZXZlbnRMb29wKCkucXVldWVUYXNr
KFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW2dsb2JhbFNjb3BlID0gUmVmIHsgZ2xvYmFs
U2NvcGUgfSwgaXNPbmxpbmVdIHsKKyAgICAgICAgICAgIGdsb2JhbFNjb3BlLT5kaXNwYXRjaEV2
ZW50KEV2ZW50OjpjcmVhdGUoaXNPbmxpbmUgPyBldmVudE5hbWVzKCkub25saW5lRXZlbnQgOiBl
dmVudE5hbWVzKCkub2ZmbGluZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6Tm8pKTsKKyAgICAgICAgfSk7CisgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVm
YXVsdE1vZGUoKSk7CiB9CiAKIHZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RFeGNl
cHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewotICAg
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXMsIGVycm9yTWVzc2FnZSA9
IGVycm9yTWVzc2FnZS5pc29sYXRlZENvcHkoKSwgc291cmNlVVJMID0gc291cmNlVVJMLmlzb2xh
dGVkQ29weSgpLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXJdIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JikgewotICAgICAgICBpZiAoIW1fc2hhcmVkV29ya2VyKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIC8vIFdlIGRvbid0IGJvdGhlciBjaGVja2luZyB0aGUgYXNrZWRUb1Rlcm1p
bmF0ZSgpIGZsYWcgaGVyZSwgYmVjYXVzZSBleGNlcHRpb25zIHNob3VsZCAqYWx3YXlzKiBiZSBy
ZXBvcnRlZCBldmVuIGlmIHRoZSB0aHJlYWQgaXMgdGVybWluYXRlZC4KLSAgICAgICAgLy8gVGhp
cyBpcyBpbnRlbnRpb25hbGx5IGRpZmZlcmVudCB0aGFuIHRoZSBiZWhhdmlvciBpbiBNZXNzYWdl
V29ya2VyVGFzaywgYmVjYXVzZSB0ZXJtaW5hdGVkIHdvcmtlcnMgbm8gbG9uZ2VyIGRlbGl2ZXIg
bWVzc2FnZXMgKHNlY3Rpb24gNC42IG9mIHRoZSBXZWJXb3JrZXIgc3BlYyksIGJ1dCB0aGV5IGRv
IHJlcG9ydCBleGNlcHRpb25zLgotICAgICAgICBBY3RpdmVET01PYmplY3Q6OnF1ZXVlVGFza1Rv
RGlzcGF0Y2hFdmVudCgqbV9zaGFyZWRXb3JrZXIsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlv
biwgRXJyb3JFdmVudDo6Y3JlYXRlKGVycm9yTWVzc2FnZSwgc291cmNlVVJMLCBsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIHsgfSkpOwotICAgIH0pOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclRo
cmVhZFByb3h5Ojp3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgpCi17Ci0gICAgbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpc10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
KSB7Ci0gICAgICAgIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwoKTsKLSAgICB9
KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtl
ck9iamVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKQotewotCi19Ci0KLXZvaWQgU2hhcmVk
V29ya2VyVGhyZWFkUHJveHk6OmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sKQot
ewotfQorICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIGlmICghbV93b3JrZXJUaHJl
YWQtPmlzSW5TdGF0aWNTY3JpcHRFdmFsdWF0aW9uKCkpCisgICAgICAgIHJldHVybjsKIAotdm9p
ZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wgaGFz
UGVuZGluZ0FjdGl2aXR5KQotewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRh
c2soW3RoaXMsIGhhc1BlbmRpbmdBY3Rpdml0eV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7
Ci0gICAgICAgIG1faGFzUGVuZGluZ0FjdGl2aXR5ID0gaGFzUGVuZGluZ0FjdGl2aXR5OworICAg
IGNhbGxPbk1haW5UaHJlYWQoW3NoYXJlZFdvcmtlcklkZW50aWZpZXIgPSBtX3dvcmtlclRocmVh
ZC0+aWRlbnRpZmllcigpLCBlcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2UuaXNvbGF0ZWRDb3B5
KCksIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMID0gc291cmNlVVJMLmlzb2xh
dGVkQ29weSgpXSB7CisgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAgICAgIGNv
bm5lY3Rpb24tPnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJJZGVudGlm
aWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMKTsK
ICAgICB9KTsKIH0KIAogUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IFNoYXJlZFdvcmtl
clRocmVhZFByb3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1l
bnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIHJldHVybiBkb2N1bWVudC5wYWdl
KCktPmNhY2hlU3RvcmFnZVByb3ZpZGVyKCkuY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigp
OworICAgIGlmICghbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uKQorICAgICAgICBtX2NhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24gPSBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyLmNyZWF0ZUNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24oKTsKKyAgICByZXR1cm4gbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uOwogfQog
CiBSZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbj4gU2hhcmVkV29y
a2VyVGhyZWFkUHJveHk6OmNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rp
b24oKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byYgZG9jdW1lbnQg
PSBkb3duY2FzdDxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgaWYg
KCFkb2N1bWVudC5wYWdlKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBk
b2N1bWVudC5wYWdlKCktPmxpYldlYlJUQ1Byb3ZpZGVyKCkuY3JlYXRlUlRDRGF0YUNoYW5uZWxS
ZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpOworICAgIHJldHVybiBtX3BhZ2UtPmxpYldlYlJUQ1By
b3ZpZGVyKCkuY3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpOwog
fQogCiB2b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0VGFza1RvTG9hZGVyKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQogewotICAgIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+cG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7CisgICAgY2FsbE9uTWFpblRocmVhZChb
dGFzayA9IFdURk1vdmUodGFzayksIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSBt
dXRhYmxlIHsKKyAgICAgICAgdGFzay5wZXJmb3JtVGFzayhwcm90ZWN0ZWRUaGlzLT5tX2RvY3Vt
ZW50LmdldCgpKTsKKyAgICB9KTsKIH0KIAogYm9vbCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6
cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrJiYgdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQogewotICAgIGlmICht
X2Fza2VkVG9UZXJtaW5hdGUpCisgICAgaWYgKG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5w
b3N0VGFza0Zvck1vZGUoV1RGTW92ZSh0YXNrKSwgbW9kZSk7CkBAIC0yMjMsMTYgKzE2NywxMCBA
QCB2b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxl
ZEJ5V2ViSW5zcGVjdG9yKGJvb2wpCiAKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eTo6d29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpCit2b2lkIFNoYXJlZFdvcmtl
clRocmVhZFByb3h5OjpuZXR3b3JrU3RhdGVDaGFuZ2VkKGJvb2wgaXNPbkxpbmUpCiB7Ci0gICAg
Ly8gVGhpcyBpcyBhbHdheXMgdGhlIGxhc3QgdGFzayB0byBiZSBwZXJmb3JtZWQsIHNvIHRoZSBw
cm94eSBpcyBub3QgbmVlZGVkIGZvciBjb21tdW5pY2F0aW9uCi0gICAgLy8gaW4gZWl0aGVyIHNp
ZGUgYW55IG1vcmUuIEhvd2V2ZXIsIHRoZSBXb3JrZXIgb2JqZWN0IG1heSBzdGlsbCBleGlzdCwg
YW5kIGl0IGFzc3VtZXMgdGhhdCB0aGUgcHJveHkgZXhpc3RzLCB0b28uCi0gICAgbV9hc2tlZFRv
VGVybWluYXRlID0gdHJ1ZTsKLSAgICBtX3dvcmtlclRocmVhZCA9IG51bGxwdHI7Ci0KLSAgICAv
LyBUaGlzIGJhbGFuY2VzIHRoZSBvcmlnaW5hbCByZWYgaW4gY29uc3RydWN0aW9uLgotICAgIGlm
IChtX21heUJlRGVzdHJveWVkKQotICAgICAgICBkZXJlZigpOworICAgIGZvciAoYXV0byogcHJv
eHkgOiBhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkpCisgICAgICAgIHByb3h5LT5ub3Rp
ZnlOZXR3b3JrU3RhdGVDaGFuZ2UoaXNPbkxpbmUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1No
YXJlZFdvcmtlclRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9j
b250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmgKaW5kZXggNGU5MmU0NTYxNzFjZTkxYWVi
ODc1YTM1ZTc1OWI5ZWM1YjU0MWVmNy4uMzM2NDI0MGFiYmI1OWI4ZDFkMDM5ZmVlYmQwNWIxNGEw
MjczN2FkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4
dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw3ICsyNyw2IEBACiAK
ICNpbmNsdWRlICJTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV29ya2VyRGVi
dWdnZXJQcm94eS5oIgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlUHJveHkuaCIKICNpbmNs
dWRlICJXb3JrZXJMb2FkZXJQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlck9iamVjdFByb3h5Lmgi
CiAjaW5jbHVkZSAiV29ya2VyT3B0aW9ucy5oIgpAQCAtMzUsNTAgKzM0LDU0IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ2FjaGVTdG9yYWdlUHJvdmlkZXI7CitjbGFzcyBQYWdl
OwogY2xhc3MgU2hhcmVkV29ya2VyOwogY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkOwogCi1jbGFz
cyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4sIHB1YmxpYyBXb3JrZXJHbG9iYWxTY29wZVBy
b3h5LCBwdWJsaWMgV29ya2VyT2JqZWN0UHJveHksIHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94eSwg
cHVibGljIFdvcmtlckRlYnVnZ2VyUHJveHkgeworc3RydWN0IENsaWVudE9yaWdpbjsKK3N0cnVj
dCBXb3JrZXJGZXRjaFJlc3VsdDsKKworY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkgZmlu
YWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkV29ya2VyVGhyZWFkUHJveHk+
LCBwdWJsaWMgV29ya2VyT2JqZWN0UHJveHksIHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94eSwgcHVi
bGljIFdvcmtlckRlYnVnZ2VyUHJveHkgewogcHVibGljOgotICAgIHRlbXBsYXRlPHR5cGVuYW1l
Li4uIEFyZ3M+IHN0YXRpYyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSYgY3JlYXRlKEFyZ3MmJi4u
LiBhcmdzKSB7IHJldHVybiAqbmV3IFNoYXJlZFdvcmtlclRocmVhZFByb3h5KHN0ZDo6Zm9yd2Fy
ZDxBcmdzPihhcmdzKS4uLik7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0
aWMgUmVmPFNoYXJlZFdvcmtlclRocmVhZFByb3h5PiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkoc3RkOjpmb3J3YXJk
PEFyZ3M+KGFyZ3MpLi4uKSk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB+U2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkoKTsKIAogICAgIFNoYXJlZFdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNv
bnN0OwotICAgIFNoYXJlZFdvcmtlclRocmVhZCogdGhyZWFkKCkgeyByZXR1cm4gbV93b3JrZXJU
aHJlYWQuZ2V0KCk7IH0KKyAgICBTaGFyZWRXb3JrZXJUaHJlYWQmIHRocmVhZCgpIHsgcmV0dXJu
IG1fd29ya2VyVGhyZWFkOyB9CiAKLSAgICB2b2lkIHN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoY29u
c3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB1c2Vy
QWdlbnQsIGJvb2wgaXNPbmxpbmUsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc291cmNlQ29kZSwgY29u
c3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBh
c3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnN0IENyb3NzT3JpZ2luRW1iZWRk
ZXJQb2xpY3kmLCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIFJlZmVycmVyUG9saWN5LCBXb3Jr
ZXJUeXBlLCBGZXRjaFJlcXVlc3RDcmVkZW50aWFscywgSlNDOjpSdW50aW1lRmxhZ3MpIGZpbmFs
OwotICAgIHZvaWQgd29ya2VyT2JqZWN0RGVzdHJveWVkKCkgZmluYWw7Ci0gICAgYm9vbCBoYXNQ
ZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlckds
b2JhbFNjb3BlKCkgZmluYWw7CisgICAgYm9vbCBpc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkOyB9CisgICAgdm9pZCBz
ZXRBc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKCkgeyBtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0
ZWQgPSB0cnVlOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2hhcmVkV29ya2VyVGhyZWFk
UHJveHkoU2hhcmVkV29ya2VyJik7Ci0KLSAgICB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJv
eWVkSW50ZXJuYWwoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eShVbmlxdWVSZWY8UGFnZT4mJiwgU2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgQ2xpZW50
T3JpZ2luJiwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIFdvcmtlckZldGNoUmVzdWx0JiYsIFdvcmtl
ck9wdGlvbnMmJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIENhY2hlU3RvcmFnZVByb3ZpZGVy
Jik7CiAKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyYmKSBmaW5hbDsKLSAgICB2b2lkIHBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxT
Y29wZShGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJikgZmluYWw7Ci0g
ICAgdm9pZCBub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9vbCBpc09ubGluZSkgZmluYWw7Ci0g
ICAgdm9pZCBzdXNwZW5kRm9yQmFja0ZvcndhcmRDYWNoZSgpIGZpbmFsOwotICAgIHZvaWQgcmVz
dW1lRm9yQmFja0ZvcndhcmRDYWNoZSgpIGZpbmFsOworICAgIC8vIFdvcmtlck9iamVjdFByb3h5
LgogICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwpIGZpbmFsOwotICAgIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWQo
KSBmaW5hbDsKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHMmJikgZmluYWw7Ci0gICAgdm9pZCBjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJP
YmplY3QoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpIGZpbmFsOwotICAgIHZvaWQgcmVwb3J0UGVu
ZGluZ0FjdGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KSBmaW5hbDsKKyAgICB2b2lkIHBv
c3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJikgZmluYWwg
eyB9CisgICAgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgpIGZpbmFsIHsgfQorICAg
IHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wpIGZpbmFsIHsgfQorICAg
IHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wpIGZpbmFsIHsgfQorCisgICAgLy8gV29y
a2VyTG9hZGVyUHJveHkuCiAgICAgUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IGNyZWF0
ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKSBmaW5hbDsKICAgICBSZWZQdHI8UlRDRGF0YUNoYW5u
ZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbj4gY3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5k
bGVyQ29ubmVjdGlvbigpIGZpbmFsOwogICAgIHZvaWQgcG9zdFRhc2tUb0xvYWRlcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrJiYpIGZpbmFsOwogICAgIGJvb2wgcG9zdFRhc2tGb3JNb2Rl
VG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
JiYsIGNvbnN0IFN0cmluZyYgbW9kZSkgZmluYWw7CisKKyAgICAvLyBXb3JrZXJEZWJ1Z2dlclBy
b3h5LgogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb0RlYnVnZ2VyKGNvbnN0IFN0cmluZyYpIGZpbmFs
OwogICAgIHZvaWQgc2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3BlY3Rvcihib29s
KSBmaW5hbDsKIAotICAgIFdlYWtQdHI8U2hhcmVkV29ya2VyPiBtX3NoYXJlZFdvcmtlcjsKLSAg
ICBSZWZQdHI8U2hhcmVkV29ya2VyVGhyZWFkPiBtX3dvcmtlclRocmVhZDsKLSAgICBjb25zdCBS
ZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0Owot
ICAgIGNvbnN0IFN0cmluZyBtX2lkZW50aWZpZXJGb3JJbnNwZWN0b3I7Ci0gICAgYm9vbCBtX2Fz
a2VkVG9UZXJtaW5hdGUgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9oYXNQZW5kaW5nQWN0aXZpdHkg
eyBmYWxzZSB9OwotICAgIGJvb2wgbV9tYXlCZURlc3Ryb3llZCB7IGZhbHNlIH07CisgICAgc3Rh
dGljIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZChib29sIGlzT25MaW5lKTsKKyAgICB2b2lkIG5v
dGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25saW5lKTsKKworICAgIFVuaXF1ZVJlZjxQ
YWdlPiBtX3BhZ2U7CisgICAgUmVmPERvY3VtZW50PiBtX2RvY3VtZW50OworICAgIFJlZjxTaGFy
ZWRXb3JrZXJUaHJlYWQ+IG1fd29ya2VyVGhyZWFkOworICAgIENhY2hlU3RvcmFnZVByb3ZpZGVy
JiBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyOworICAgIFJlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uPiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247CisgICAgYm9vbCBtX2lzVGVybWluYXRpbmdP
clRlcm1pbmF0ZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01h
a2VMaXN0cy50eHQKaW5kZXggNzU2ZGE4OGI0NWY3MDQyZjQyM2I3MzRjNzY0ZTY1NjZkNDQ2ZWZh
Zi4uMjlmNGM3ODE4MTgwZGUyY2IyNDk1MDcyZTg0NjBhNTBhZDM2NGE0MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlz
dHMudHh0CkBAIC0yOCw2ICsyOCw3IEBAIHNldChXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMiCiAgICAgIiR7
V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiCiAgICAg
IiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlciIKKyAgICAiJHtXRUJL
SVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIiCiAgICAgIiR7V0VCS0lUX0RJUn0v
TmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZSIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZSIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlIgpA
QCAtMjAyLDYgKzIwMyw5IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKICAgICBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbgogICAgIE5ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCiAK
KyAgICBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbgorICAgIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCisKICAgICBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VNYW5hZ2VyU2V0CiAKICAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDb25uZWN0aW9uCkBAIC0zMDUsNiArMzA5LDggQEAgc2V0KFdlYktpdF9NRVNTQUdF
U19JTl9GSUxFUwogCiAgICAgV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFs
dGltZU1lZGlhU291cmNlTWFuYWdlcgogCisgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbgorICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uCiAgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ2xpZW50Q29ubmVjdGlvbgogICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKaW5kZXggNGM2NjIyMGNmMTIyYTUzYjc0NjlkNDQwMGM3Y2RkYjIzNWM4Yjc0
OS4uNzIyOWMxYjk4NzA4ODgxYjdiYWVjM2NmN2EwMjQ3MzU3MmUzNWRlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtOTEsNiArOTEsOCBA
QCAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJEb3dubG9hZFRhc2subWVzc2FnZXMuaQogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9E
SVIpL05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRX
b3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdl
clNldC5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0
d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4KQEAg
LTIxNyw2ICsyMTksOCBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgor
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9X
ZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBlM2I1NTg0MGFlMWVhZjU3ZjVl
YmY3NTQyZTVlMWZkNDBlNWRkNGQxLi5hODYzMjgxNDdiNTZjNWM1NjBhYTVhYmEzOWJmYWQzMjQ1
YzI2MTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3QKQEAgLTYwNyw2ICs2MDcsMTggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdC9XZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdl
cy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9X
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9X
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2Vz
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b25NZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTb2NrZXRD
aGFubmVsTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdC9XZWJTb2NrZXRDaGFubmVsTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTb2NrZXRDaGFubmVsTWVzc2FnZXNSZXBs
aWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA3YWQ0OWUzNzM1ZjRiNDc4YzQx
NmQ5Mjk1YzEzOWJlOThmZDZjZTRhLi4zNTFmZmFlMGE1ODY2MGMxZDEyZmY5YWNkODc3ZDI3YzUx
YzA3ZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysr
IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xMzMsNiArMTMzLDggQEAg
TUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRG93bmxvYWRUYXNrIFwKIAlOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJGZXRjaFRhc2sgXAogCU5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIFwKKwlOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbiBcCisJTmV0d29ya1Byb2Nlc3MvU2hh
cmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gXAogCU5l
dHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0gXAogCU5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzIFwKIAlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIgXApAQCAt
MjI1LDYgKzIyNyw4IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vz
cy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlciBcCisJ
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
biBcCisJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24g
XAogCVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBcCiAJ
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYTM0Zjc5YmRlM2Uw
ODE2OTZkNzNhNTVmYmY1OTA1OGJmNmQ4ZjM3OS4uYzdiMTdmZDcwNzg1NGIxMjg0OThkMTExOGY0
ZTZlN2Q1YjNkODVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTY2LDYgKzY2
LDExIEBACiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdv
cmtlclNlcnZlci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24u
aCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRUUENv
b2tpZUFjY2VwdFBvbGljeS5oPgpAQCAtMTMyLDYgKzEzNyw3IEBAIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2Vz
cyYgbmV0CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGVzdGFibGlzaFNXU2VydmVy
Q29ubmVjdGlvbigpOwogI2VuZGlmCisgICAgZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbigpOwogfQogCiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fk5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKQEAgLTE2Niw2ICsxNzIsNyBAQCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6fk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdW5yZWdpc3RlclNXQ29ubmVjdGlvbigpOwogI2Vu
ZGlmCisgICAgdW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKIH0KIAogdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzVXBsb2FkU3RhdGVDaGFuZ2VkKGJvb2wg
aGFzVXBsb2FkKQpAQCAtMjc1LDYgKzI4MiwxNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpbwog
ICAgIH0KICNlbmRpZgogCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09
IE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpIHsKKyAgICAgICAgaWYgKG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbikKKyAgICAg
ICAgICAgIG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgaWYg
KG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24pCisgICAgICAgICAgICBtX3NoYXJlZFdv
cmtlckNvbnRleHRDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVN
T1RFX1VJKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdl
czo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkKICAg
ICAgICAgcmV0dXJuIHBheW1lbnRDb29yZGluYXRvcigpLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOwpAQCAtMzk4LDkgKzQxNiw4IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uID0g
bnVsbHB0cjsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogI2VuZGlmCisg
ICAgbV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7CiAKICAgICAvLyBQ
cm90ZWN0IG91cnNlbGYgYXMgd2UgbWlnaHQgYmUgb3RoZXJ3aXNlIGJlIGRlbGV0ZWQgZHVyaW5n
IHRoaXMgZnVuY3Rpb24uCiAgICAgUmVmPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBw
cm90ZWN0b3IoKnRoaXMpOwpAQCAtNDQxLDYgKzQ1OCw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdW5yZWdpc3RlclNXQ29ubmVjdGlvbigpOwog
I2VuZGlmCisgICAgdW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKIAogI2lmIEVO
QUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQogICAgIG1fcGF5bWVudENvb3JkaW5hdG9yID0gbnVs
bHB0cjsKQEAgLTExODYsNiArMTIwNCw2MSBAQCBzaXplX3QgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmZpbmROZXR3b3JrQWN0aXZpdHlUcmFja2VyKFdlYkNvcmU6OlJlc291cgogICAg
ICAgICByZXR1cm4gaXRlbS5yZXNvdXJjZUlEID09IHJlc291cmNlSUQ7CiAgICAgfSk7CiB9CisK
K3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNo
YXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uOiIpOwor
ICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOworICAgIGlmIChhdXRvKiBzd1Nl
cnZlciA9IHNlc3Npb24gPyBzZXNzaW9uLT5zaGFyZWRXb3JrZXJTZXJ2ZXIoKSA6IG51bGxwdHIp
CisgICAgICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+KCp0aGlzLCBXVEZNb3ZlKHJl
Z2lzdHJhYmxlRG9tYWluKSwgKnN3U2VydmVyKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwor
fQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCkKK3sKKyAgICBpZiAobV9zaGFyZWRXb3JrZXJDb25uZWN0
aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIENPTk5FQ1RJ
T05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbjoiKTsKKworICAgIGF1dG8mIHNlcnZlciA9IHNlc3Npb24tPmVuc3VyZVNoYXJl
ZFdvcmtlclNlcnZlcigpOworICAgIGF1dG8gY29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4obV9uZXR3b3JrUHJvY2Vzcywgc2VydmVyLCBtX2Nv
bm5lY3Rpb24uZ2V0KCksIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOworCisgICAgbV9zaGFyZWRX
b3JrZXJDb25uZWN0aW9uID0gKmNvbm5lY3Rpb247CisgICAgc2VydmVyLmFkZENvbm5lY3Rpb24o
V1RGTW92ZShjb25uZWN0aW9uKSk7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNsb3NlU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24oKQoreworICAgIENPTk5F
Q1RJT05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiY2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0
Q29ubmVjdGlvbjoiKTsKKyAgICBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uID0gbnVs
bHB0cjsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3Rl
clNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0co
U2hhcmVkV29ya2VyLCAidW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb246Iik7CisgICAg
aWYgKG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbikKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJDb25u
ZWN0aW9uLT5zZXJ2ZXIoKS5yZW1vdmVDb25uZWN0aW9uKG1fc2hhcmVkV29ya2VyQ29ubmVjdGlv
bi0+d2ViUHJvY2Vzc0lkZW50aWZpZXIoKSk7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Jc05vTG9u
Z2VyTmVlZGVkKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwg
InNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkOiIp
OworICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0
aW9uTm9Mb25nZXJOZWVkZWQgeyB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOworCisgICAg
bV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7Cit9CisKK1dlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb24qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpz
aGFyZWRXb3JrZXJDb25uZWN0aW9uKCkKK3sKKyAgICBpZiAoIW1fc2hhcmVkV29ya2VyQ29ubmVj
dGlvbikKKyAgICAgICAgZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpOwor
ICAgIHJldHVybiBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24uZ2V0KCk7Cit9CiAgICAgCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6dW5yZWdpc3RlclNXQ29ubmVjdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXgg
YWI5NjY1N2QwZGY0YTIzMzEwNDBhYzUxZmM0M2MwNjg0Nzg0ODA0Ny4uZDBhYTRlZjc0NTIwYTJj
YTBiNTUxYjQ2OWU4NmVhNzY2OGI2NzhlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAt
OTIsNiArOTIsOCBAQCBjbGFzcyBOZXR3b3JrU29ja2V0U3RyZWFtOwogY2xhc3MgU2VydmljZVdv
cmtlckZldGNoVGFzazsKIGNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKIGNsYXNzIFdlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb247CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OwogCiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIHN0cnVjdCBEYXRhS2V5OwpAQCAtMTg1LDYg
KzE4Nyw5IEBAIHB1YmxpYzoKICAgICBXZWJTV1NlcnZlckNvbm5lY3Rpb24qIHN3Q29ubmVjdGlv
bigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBjcmVhdGVG
ZXRjaFRhc2soTmV0d29ya1Jlc291cmNlTG9hZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Jik7CiAjZW5kaWYKKyAgICB2b2lkIHNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7CisKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uKiBzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiAKICAgICBOZXR3b3JrU2NoZW1l
UmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9zY2hlbWVSZWdpc3RyeS5nZXQo
KTsgfQogCkBAIC0yNTMsNiArMjU4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZVNvY2tl
dENoYW5uZWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBw
cm90b2NvbCwgV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAgICAgdm9pZCB1cGRhdGVRdW90
YUJhc2VkT25TcGFjZVVzYWdlRm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
KTsKIAorICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpOwor
ICAgIHZvaWQgdW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKKwogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigp
OwogICAgIHZvaWQgZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0yNjAsNiArMjY4LDkg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgog
CisgICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdl
UHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgY2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0Q29u
bmVjdGlvbigpOworCiAgICAgdm9pZCBjcmVhdGVSVENQcm92aWRlcihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIHZvaWQgY29ubmVjdFRvUlRD
RGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVy
IHNvdXJjZSwgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGhhbmRsZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxib29sPik+JiYpOwpAQCAtNDA0LDYgKzQx
NSw4IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxXZWJTV1NlcnZlckNvbm5lY3Rpb24+IG1fc3dD
b25uZWN0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24+IG1fc3dDb250ZXh0Q29ubmVjdGlvbjsKICNlbmRpZgorICAgIFdlYWtQdHI8V2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4gbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
PiBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uOwogCiAjaWYgRU5BQkxFKFdFQl9SVEMp
CiAgICAgYm9vbCBtX2lzUmVnaXN0ZXJlZFRvUlRDRGF0YUNoYW5uZWxQcm94eSB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAyNDI4MzUw
NTBiMjQ5NzBjNWVhYzFlMjZiZjg2YjViMDI1YTgwZTUzLi5iOTdjYTM0NzliNGQ5ZDU1NzlhN2U3
ZTU1YTY5MWE2MGRkODg2NmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KQEAgLTg4LDYgKzg4LDkgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIENsb3NlU1dDb250ZXh0Q29ubmVjdGlv
bigpCiAjZW5kaWYKIAorICAgIEVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9u
KFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gZG9tYWluKSAtPiAoKSBBc3luYworICAgIENsb3NlU2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb24oKQorCiAgICAgQ3JlYXRlUlRDUHJvdmlkZXIoKSAtPiAoKSBB
c3luYwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIENvbm5lY3RUb1JUQ0RhdGFDaGFubmVsUmVt
b3RlU291cmNlKHN0cnVjdCBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgc291cmNl
LCBzdHJ1Y3QgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGhhbmRsZXIpIC0+IChz
dGQ6Om9wdGlvbmFsPGJvb2w+IHJlc3VsdCkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggZTJiMjRkODMyMmI2ZWMxYzM3NzAx
ZGNhZDQ5NzUzNGNlZjIzMWEyNi4uZDc2MTYyODUwY2FkODQzOGYwMDg4OTA1M2Y3ZWRjODJmM2Uz
M2EzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldlYlNXT3JpZ2luU3Rv
cmUuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJT
b2NrZXRUYXNrLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVKYXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgpAQCAtNjUzLDYgKzY1NCwxMyBAQCBib29sIE5ldHdv
cmtTZXNzaW9uOjpoYXNTZXJ2aWNlV29ya2VyRGF0YWJhc2VQYXRoKCkgY29uc3QKIAogI2VuZGlm
IC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorV2ViU2hhcmVkV29ya2VyU2VydmVyJiBOZXR3
b3JrU2Vzc2lvbjo6ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCkKK3sKKyAgICBpZiAoIW1fc2hh
cmVkV29ya2VyU2VydmVyKQorICAgICAgICBtX3NoYXJlZFdvcmtlclNlcnZlciA9IG1ha2VVbmlx
dWU8V2ViU2hhcmVkV29ya2VyU2VydmVyPigqdGhpcyk7CisgICAgcmV0dXJuICptX3NoYXJlZFdv
cmtlclNlcnZlcjsKK30KKwogV2ViSURCU2VydmVyJiBOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlV2Vi
SURCU2VydmVyKCkKIHsKICAgICBpZiAoIW1fd2ViSURCU2VydmVyKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggMTkzMDdjZjQwYmUzYjJm
MjYwNTdkMDE2Yzc2NmVkY2U0OThjOTU0Mi4uM2Y5ZDZjOTU1MGE4YjhjZWM5ZTRjNTU5ZDMxZDEy
MWE5OGIwZTg0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb24uaApAQCAtNzksNiArNzksNyBAQCBjbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOwog
Y2xhc3MgV2ViSURCU2VydmVyOwogY2xhc3MgV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzOwogY2xh
c3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOworY2xhc3MgV2ViU2hhcmVkV29ya2Vy
U2VydmVyOwogY2xhc3MgV2ViU29ja2V0VGFzazsKIGNsYXNzIFdlYlNXT3JpZ2luU3RvcmU7CiBj
bGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CkBAIC0yMTAsNiArMjExLDkgQEAgcHVibGljOgog
ICAgIHZvaWQgYWRkU2VydmljZVdvcmtlclNlc3Npb24oYm9vbCBwcm9jZXNzVGVybWluYXRpb25E
ZWxheUVuYWJsZWQsIFN0cmluZyYmIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnks
IGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogI2VuZGlmCiAKKyAgICBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXIqIHNoYXJlZFdvcmtlclNlcnZlcigpIHsgcmV0dXJuIG1fc2hhcmVkV29y
a2VyU2VydmVyLmdldCgpOyB9CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBlbnN1cmVTaGFy
ZWRXb3JrZXJTZXJ2ZXIoKTsKKwogICAgIFdlYklEQlNlcnZlciogd2ViSURCU2VydmVyKCkgeyBy
ZXR1cm4gbV93ZWJJREJTZXJ2ZXIuZ2V0KCk7IH0KICAgICBXZWJJREJTZXJ2ZXImIGVuc3VyZVdl
YklEQlNlcnZlcigpOwogICAgIHZvaWQgY2xvc2VJREJTZXJ2ZXIoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKQEAgLTMxOCw2ICszMjIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RkOjpvcHRp
b25hbDxTZXJ2aWNlV29ya2VySW5mbz4gbV9zZXJ2aWNlV29ya2VySW5mbzsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6U1dTZXJ2ZXI+IG1fc3dTZXJ2ZXI7CiAjZW5kaWYKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyPiBtX3NoYXJlZFdvcmtlclNlcnZlcjsK
IAogICAgIFN0cmluZyBtX2lkYkRhdGFiYXNlUGF0aDsKICAgICBSZWZQdHI8V2ViSURCU2VydmVy
PiBtX3dlYklEQlNlcnZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgw
MDkxMzk1MjgwYzhkNzYwZWYxYTFkMTIxYzIxNDc1ZjQ5NWViYjgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3Jr
ZXIuY3BwCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyLmgiCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29w
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgSGFzaE1hcDxXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyLCBXZWJTaGFyZWRXb3JrZXIqPiYgYWxsV29ya2VycygpCit7Cisg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SGFzaE1hcDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBXZWJTaGFyZWRXb3JrZXIq
Pj4gYWxsV29ya2VyczsKKyAgICByZXR1cm4gYWxsV29ya2VyczsKK30KKworV2ViU2hhcmVkV29y
a2VyOjpXZWJTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBrZXks
IGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMpCisgICAgOiBtX2lk
ZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKKyAg
ICAsIG1fa2V5KGtleSkKKyAgICAsIG1fd29ya2VyT3B0aW9ucyh3b3JrZXJPcHRpb25zKQorewor
ICAgIEFTU0VSVCghYWxsV29ya2VycygpLmNvbnRhaW5zKG1faWRlbnRpZmllcikpOworICAgIGFs
bFdvcmtlcnMoKS5hZGQobV9pZGVudGlmaWVyLCB0aGlzKTsKK30KKworV2ViU2hhcmVkV29ya2Vy
Ojp+V2ViU2hhcmVkV29ya2VyKCkKK3sKKyAgICBBU1NFUlQoYWxsV29ya2VycygpLmdldChtX2lk
ZW50aWZpZXIpID09IHRoaXMpOworICAgIGFsbFdvcmtlcnMoKS5yZW1vdmUobV9pZGVudGlmaWVy
KTsKK30KKworV2ViU2hhcmVkV29ya2VyKiBXZWJTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVy
KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICByZXR1
cm4gYWxsV29ya2VycygpLmdldChpZGVudGlmaWVyKTsKK30KKworV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gV2ViU2hhcmVkV29ya2VyOjpyZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsKCkgfTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0Yjdh
NGE4NDNjZWY5YTE3ZWJjMGIzYTVmYTRjY2Q0ZDA2MTZiMzQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIu
aApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZFdvcmtlcktleS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmZXJyZWRNZXNzYWdlUG9ydC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyRmV0Y2hSZXN1bHQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1dvcmtlck9wdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKK30KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJT
aGFyZWRXb3JrZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBXZWJTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiwgY29uc3Qg
V2ViQ29yZTo6V29ya2VyT3B0aW9ucyYpOworICAgIH5XZWJTaGFyZWRXb3JrZXIoKTsKKworICAg
IHN0YXRpYyBXZWJTaGFyZWRXb3JrZXIqIGZyb21JZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdv
cmtlcklkZW50aWZpZXIpOworCisgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBp
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgY29uc3QgV2Vi
Q29yZTo6U2hhcmVkV29ya2VyS2V5JiBrZXkoKSBjb25zdCB7IHJldHVybiBtX2tleTsgfQorICAg
IGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMoKSBjb25zdCB7IHJl
dHVybiBtX3dvcmtlck9wdGlvbnM7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
IG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fa2V5Lm9yaWdpbjsgfQorICAgIGNvbnN0IFVSTCYg
dXJsKCkgY29uc3QgeyByZXR1cm4gbV9rZXkudXJsOyB9CisgICAgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gcmVnaXN0cmFibGVEb21haW4oKSBjb25zdDsKKyAgICBIYXNoTWFwPFdlYkNvcmU6
OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2Fn
ZVBvcnQ+JiBzaGFyZWRXb3JrZXJPYmplY3RzKCkgeyByZXR1cm4gbV9zaGFyZWRXb3JrZXJPYmpl
Y3RzOyB9CisKKyAgICBib29sIGlzUnVubmluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNSdW5uaW5n
OyB9CisgICAgdm9pZCBtYXJrQXNSdW5uaW5nKCkgeyBtX2lzUnVubmluZyA9IHRydWU7IH0KKwor
ICAgIGNvbnN0IFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiBmZXRjaFJlc3VsdCgpIGNvbnN0
IHsgcmV0dXJuIG1fZmV0Y2hSZXN1bHQ7IH0KKyAgICB2b2lkIHNldEZldGNoUmVzdWx0KFdlYkNv
cmU6OldvcmtlckZldGNoUmVzdWx0JiYgZmV0Y2hSZXN1bHQpIHsgbV9mZXRjaFJlc3VsdCA9IFdU
Rk1vdmUoZmV0Y2hSZXN1bHQpOyB9CisgICAgYm9vbCBkaWRGaW5pc2hGZXRjaGluZygpIGNvbnN0
IHsgcmV0dXJuICEhbV9mZXRjaFJlc3VsdC5zY3JpcHQ7IH0KKworcHJpdmF0ZToKKyAgICBXZWJT
aGFyZWRXb3JrZXIoV2ViU2hhcmVkV29ya2VyJiYpID0gZGVsZXRlOworICAgIFdlYlNoYXJlZFdv
cmtlciYgb3BlcmF0b3I9KFdlYlNoYXJlZFdvcmtlciYmKSA9IGRlbGV0ZTsKKyAgICBXZWJTaGFy
ZWRXb3JrZXIoY29uc3QgV2ViU2hhcmVkV29ya2VyJikgPSBkZWxldGU7CisgICAgV2ViU2hhcmVk
V29ya2VyJiBvcGVyYXRvcj0oY29uc3QgV2ViU2hhcmVkV29ya2VyJikgPSBkZWxldGU7CisKKyAg
ICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBXZWJD
b3JlOjpTaGFyZWRXb3JrZXJLZXkgbV9rZXk7CisgICAgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyBt
X3dvcmtlck9wdGlvbnM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0PiBtX3NoYXJlZFdvcmtl
ck9iamVjdHM7CisgICAgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQgbV9mZXRjaFJlc3VsdDsK
KyAgICBib29sIG1faXNSdW5uaW5nIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmM2
ODMwMjE0ZDQwYzQ3ZjIyZTk1NTljYzg2YWQ3MjVhYjUxMDViMwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtl
clNlcnZlci5jcHAKQEAgLTAsMCArMSwyNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgiCisKKyNpbmNsdWRlICJM
b2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgorI2lu
Y2x1ZGUgIldlYlNoYXJlZFdvcmtlci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyS2V5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Xb3Jr
ZXJGZXRjaFJlc3VsdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyT3B0aW9ucy5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU2hhcmVkV29ya2VyU2VydmVyOjpXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXIoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24pCisgICAgOiBtX3Nlc3Npb24oc2Vzc2lv
bikKK3sKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVyOjp+V2ViU2hhcmVkV29ya2VyU2VydmVy
KCkgPSBkZWZhdWx0OworCitQQUw6OlNlc3Npb25JRCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNl
c3Npb25JRCgpCit7CisgICAgcmV0dXJuIG1fc2Vzc2lvbi5zZXNzaW9uSUQoKTsKK30KKwordm9p
ZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hh
cmVkV29ya2VyS2V5JiYgc2hhcmVkV29ya2VyS2V5LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5z
ZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYgd29ya2Vy
T3B0aW9ucykKK3sKKyAgICBhdXRvJiBzaGFyZWRXb3JrZXIgPSBtX3NoYXJlZFdvcmtlcnMuZW5z
dXJlKHNoYXJlZFdvcmtlcktleSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2Vi
U2hhcmVkV29ya2VyPihzaGFyZWRXb3JrZXJLZXksIHdvcmtlck9wdGlvbnMpOworICAgIH0pLml0
ZXJhdG9yLT52YWx1ZTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXI9JXtwcml2YXRlfXMsIHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgc2hhcmVk
V29ya2VyLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBpZiAoc2hhcmVkV29ya2Vy
LT53b3JrZXJPcHRpb25zKCkudHlwZSAhPSB3b3JrZXJPcHRpb25zLnR5cGUgfHwgc2hhcmVkV29y
a2VyLT53b3JrZXJPcHRpb25zKCkuY3JlZGVudGlhbHMgIT0gd29ya2VyT3B0aW9ucy5jcmVkZW50
aWFscykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICJXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6IEEgd29ya2VyIGFscmVhZHkgZXhp
c3RzIHdpdGggdGhpcyBuYW1lIGJ1dCBoYXMgZGlmZmVyZW50IHR5cGUgLyBjcmVkZW50aWFscyIp
OworICAgICAgICBpZiAoYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0
KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSkpCisgICAg
ICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uLT5ub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0
aW9uKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHsgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
cjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cygpLmFkZChzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLCBwb3J0KTsKKworICAgIGlmIChzaGFyZWRXb3JrZXItPnNoYXJlZFdvcmtl
ck9iamVjdHMoKS5zaXplKCkgPiAxKSB7CisgICAgICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtl
ciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtlcjogQSBzaGFyZWQg
d29ya2VyIHdpdGggdGhpcyBVUkwgYWxyZWFkeSBleGlzdHMgKG5vdyBzaGFyZWQgYnkgJXUgc2hh
cmVkIHdvcmtlciBvYmplY3RzKSIsIHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cygp
LnNpemUoKSk7CisgICAgICAgIGlmIChzaGFyZWRXb3JrZXItPmRpZEZpbmlzaEZldGNoaW5nKCkp
IHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9u
cy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkK
KyAgICAgICAgICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uLT5ub3RpZnlXb3JrZXJPYmplY3RPZkxv
YWRDb21wbGV0aW9uKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHsgfSk7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKHNoYXJlZFdvcmtlci0+aXNSdW5uaW5nKCkpIHsKKyAgICAgICAgICAg
IGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gbV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0KHNoYXJl
ZFdvcmtlci0+cmVnaXN0cmFibGVEb21haW4oKSk7CisgICAgICAgICAgICBBU1NFUlQoY29udGV4
dENvbm5lY3Rpb24pOworICAgICAgICAgICAgaWYgKGNvbnRleHRDb25uZWN0aW9uKQorICAgICAg
ICAgICAgICAgIGNvbnRleHRDb25uZWN0aW9uLT5wb3N0Q29ubmVjdEV2ZW50KCpzaGFyZWRXb3Jr
ZXIsIHBvcnQpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJU
KCFzaGFyZWRXb3JrZXItPmlzUnVubmluZygpKTsKKworICAgIGF1dG8qIHNlcnZlckNvbm5lY3Rp
b24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nl
c3NJZGVudGlmaWVyKCkpOworICAgIEFTU0VSVChzZXJ2ZXJDb25uZWN0aW9uKTsKKworICAgIFJF
TEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNo
YXJlZFdvcmtlcjogRmV0Y2hpbmcgc2hhcmVkIHdvcmtlciBzY3JpcHQgaW4gY2xpZW50Iik7Cisg
ICAgc2VydmVyQ29ubmVjdGlvbi0+ZmV0Y2hTY3JpcHRJbkNsaWVudCgqc2hhcmVkV29ya2VyLCBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMg
fSwgc2hhcmVkV29ya2VyID0gV2Vha1B0ciB7ICpzaGFyZWRXb3JrZXIgfV0oV2ViQ29yZTo6V29y
a2VyRmV0Y2hSZXN1bHQmJiBmZXRjaFJlc3VsdCkgeworICAgICAgICBpZiAod2Vha1RoaXMgJiYg
c2hhcmVkV29ya2VyKQorICAgICAgICAgICAgd2Vha1RoaXMtPmRpZEZpbmlzaEZldGNoaW5nU2hh
cmVkV29ya2VyU2NyaXB0KCpzaGFyZWRXb3JrZXIsIFdURk1vdmUoZmV0Y2hSZXN1bHQpKTsKKyAg
ICB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5n
U2hhcmVkV29ya2VyU2NyaXB0KFdlYlNoYXJlZFdvcmtlciYgc2hhcmVkV29ya2VyLCBXZWJDb3Jl
OjpXb3JrZXJGZXRjaFJlc3VsdCYmIGZldGNoUmVzdWx0KQoreworICAgIFJFTEVBU0VfTE9HKFNo
YXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6ZGlkRmluaXNoRmV0Y2hpbmdTaGFy
ZWRXb3JrZXJTY3JpcHQgc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgc2hhcmVk
V29ya2VyPSVwLCBzdWNjZXNzPSVkIiwgc2hhcmVkV29ya2VyLmlkZW50aWZpZXIoKS50b1VJbnQ2
NCgpLCAmc2hhcmVkV29ya2VyLCBmZXRjaFJlc3VsdC5lcnJvci5pc051bGwoKSk7CisKKyAgICBm
b3IgKGF1dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA6IHNoYXJlZFdvcmtlci5zaGFy
ZWRXb3JrZXJPYmplY3RzKCkua2V5cygpKSB7CisgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25u
ZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5w
cm9jZXNzSWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIHNlcnZlckNvbm5lY3Rpb24tPm5vdGlm
eVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24oc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciwgZmV0Y2hSZXN1bHQuZXJyb3IpOworICAgIH0KKworICAgIGlmICghZmV0Y2hSZXN1bHQuZXJy
b3IuaXNOdWxsKCkpIHsKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJzLnJlbW92ZShzaGFyZWRXb3Jr
ZXIua2V5KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2hhcmVkV29ya2VyLnNl
dEZldGNoUmVzdWx0KFdURk1vdmUoZmV0Y2hSZXN1bHQpKTsKKworICAgIGF1dG8gcmVnaXN0cmFi
bGVEb21haW4gPSBzaGFyZWRXb3JrZXIucmVnaXN0cmFibGVEb21haW4oKTsKKyAgICBhdXRvKiBj
b250ZXh0Q29ubmVjdGlvbiA9IGNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4o
cmVnaXN0cmFibGVEb21haW4pOworICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAg
ICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgY29udGV4dENvbm5lY3Rpb24tPmxhdW5jaFNoYXJlZFdvcmtl
cihzaGFyZWRXb3JrZXIpOworfQorCitib29sIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6bmVlZHND
b250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8m
IHNoYXJlZFdvcmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAo
cmVnaXN0cmFibGVEb21haW4ubWF0Y2hlcyhzaGFyZWRXb3JrZXItPnVybCgpKSkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2Vi
U2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCit7CisgICAgQVNTRVJUKCFt
X2NvbnRleHRDb25uZWN0aW9ucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpOworICAgIGlm
IChtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnMuY29udGFpbnMocmVnaXN0cmFibGVE
b21haW4pKQorICAgICAgICByZXR1cm47CisKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIs
ICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uIHdpbGwgY3Jl
YXRlIGEgY29ubmVjdGlvbiIpOworCisgICAgbV9wZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21h
aW5zLmFkZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgbV9zZXNzaW9uLm5ldHdvcmtQcm9jZXNz
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MgeyByZWdpc3RyYWJsZURvbWFpbiwgbV9zZXNzaW9uLnNlc3Np
b25JRCgpIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZWdpc3RyYWJs
ZURvbWFpbl0geworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZl
cjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24gc2hvdWxkIG5vdyBoYXZlIGNyZWF0ZWQgYSBjb25u
ZWN0aW9uIik7CisKKyAgICAgICAgQVNTRVJUKG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9t
YWlucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpOworICAgICAgICBtX3BlbmRpbmdDb250
ZXh0Q29ubmVjdGlvbkRvbWFpbnMucmVtb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKKworICAgICAg
ICBpZiAobV9jb250ZXh0Q29ubmVjdGlvbnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChuZWVkc0NvbnRleHRDb25uZWN0aW9u
Rm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICAgICAgY3Jl
YXRlQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4pOworICAgIH0sIDApOworfQor
Cit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29udGV4dENvbm5lY3Rpb24oV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24pCit7
CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjph
ZGRDb250ZXh0Q29ubmVjdGlvbiglcCkgd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCAm
Y29udGV4dENvbm5lY3Rpb24sIGNvbnRleHRDb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVy
KCkudG9VSW50NjQoKSk7CisKKyAgICBBU1NFUlQoIW1fY29udGV4dENvbm5lY3Rpb25zLmNvbnRh
aW5zKGNvbnRleHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCkpKTsKKworICAgIG1fY29u
dGV4dENvbm5lY3Rpb25zLmFkZChjb250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigp
LCAmY29udGV4dENvbm5lY3Rpb24pOworCisgICAgY29udGV4dENvbm5lY3Rpb25DcmVhdGVkKGNv
bnRleHRDb25uZWN0aW9uKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlbW92
ZUNvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24mIGNvbnRleHRDb25uZWN0aW9uKQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwg
IldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oJXApIHdlYlBy
b2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgJmNvbnRleHRDb25uZWN0aW9uLCBjb250ZXh0Q29u
bmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUludDY0KCkpOworCisgICAgYXV0byBy
ZWdpc3RyYWJsZURvbWFpbiA9IGNvbnRleHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCk7
CisKKyAgICBBU1NFUlQobV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0KHJlZ2lzdHJhYmxlRG9tYWlu
KSA9PSAmY29udGV4dENvbm5lY3Rpb24pOworCisgICAgbV9jb250ZXh0Q29ubmVjdGlvbnMucmVt
b3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKKworICAgIGlmIChuZWVkc0NvbnRleHRDb25uZWN0aW9u
Rm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICBjcmVhdGVD
b250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbik7Cit9CisKK3ZvaWQgV2ViU2hhcmVk
V29ya2VyU2VydmVyOjpjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24pCit7CisgICAgUkVMRUFT
RV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjb250ZXh0Q29ubmVj
dGlvbkNyZWF0ZWQoJXApIHdlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgJmNvbnRleHRD
b25uZWN0aW9uLCBjb250ZXh0Q29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUlu
dDY0KCkpOworICAgIGF1dG8mIHJlZ2lzdHJhYmxlRG9tYWluID0gY29udGV4dENvbm5lY3Rpb24u
cmVnaXN0cmFibGVEb21haW4oKTsKKyAgICBmb3IgKGF1dG8mIHNoYXJlZFdvcmtlciA6IG1fc2hh
cmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAoc2hhcmVkV29ya2VyLT5kaWRGaW5p
c2hGZXRjaGluZygpICYmIHJlZ2lzdHJhYmxlRG9tYWluLm1hdGNoZXMoc2hhcmVkV29ya2VyLT51
cmwoKSkpCisgICAgICAgICAgICBjb250ZXh0Q29ubmVjdGlvbi5sYXVuY2hTaGFyZWRXb3JrZXIo
KnNoYXJlZFdvcmtlcik7CisgICAgfQorfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6
c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2Vy
S2V5JiBzaGFyZWRXb3JrZXJLZXksIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK3sKKyAgICBhdXRvKiBzaGFyZWRXb3Jr
ZXIgPSBtX3NoYXJlZFdvcmtlcnMuZ2V0KHNoYXJlZFdvcmtlcktleSk7CisgICAgUkVMRUFTRV9M
T0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaGFyZWRXb3JrZXJPYmpl
Y3RJc0dvaW5nQXdheTogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zLCBz
aGFyZWRXb3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgc2hhcmVkV29ya2VyKTsKKyAgICBpZiAoIXNoYXJlZFdvcmtlcikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzKCku
cmVtb3ZlKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIGlmICghc2hhcmVkV29y
a2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBzaHV0RG93blNoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXJLZXkpOworfQorCit2b2lkIFdl
YlNoYXJlZFdvcmtlclNlcnZlcjo6c2h1dERvd25TaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6
U2hhcmVkV29ya2VyS2V5JiBrZXkpCit7CisgICAgYXV0byBzaGFyZWRXb3JrZXIgPSBtX3NoYXJl
ZFdvcmtlcnMudGFrZShrZXkpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNo
YXJlZFdvcmtlclNlcnZlcjo6c2h1dERvd25TaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50
aWZpZXI9JSIgUFJJdTY0ICIsIHNoYXJlZFdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlciA/IHNoYXJl
ZFdvcmtlci0+aWRlbnRpZmllcigpLnRvVUludDY0KCkgOiAwLCBzaGFyZWRXb3JrZXIuZ2V0KCkp
OworICAgIGlmICghc2hhcmVkV29ya2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBj
b250ZXh0Q29ubmVjdGlvbiA9IGNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4o
c2hhcmVkV29ya2VyLT5yZWdpc3RyYWJsZURvbWFpbigpKTsKKyAgICBpZiAoIWNvbnRleHRDb25u
ZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBjb250ZXh0Q29ubmVjdGlvbi0+dGVybWlu
YXRlU2hhcmVkV29ya2VyKCpzaGFyZWRXb3JrZXIpOworCisgICAgaWYgKCFuZWVkc0NvbnRleHRD
b25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oc2hhcmVkV29ya2VyLT5yZWdpc3RyYWJsZURv
bWFpbigpKSkKKyAgICAgICAgY29udGV4dENvbm5lY3Rpb24tPmNvbm5lY3Rpb25Jc05vTG9uZ2Vy
TmVlZGVkKCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjphZGRDb25uZWN0aW9u
KHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uPiYmIGNvbm5l
Y3Rpb24pCit7CisgICAgYXV0byBwcm9jZXNzSWRlbnRpZmllciA9IGNvbm5lY3Rpb24tPndlYlBy
b2Nlc3NJZGVudGlmaWVyKCk7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hh
cmVkV29ya2VyU2VydmVyOjphZGRDb25uZWN0aW9uKCVwKTogcHJvY2Vzc0lkZW50aWZpZXI9JSIg
UFJJdTY0LCBjb25uZWN0aW9uLmdldCgpLCBwcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKTsK
KyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbnMuY29udGFpbnMocHJvY2Vzc0lkZW50aWZpZXIpKTsK
KyAgICBtX2Nvbm5lY3Rpb25zLmFkZChwcm9jZXNzSWRlbnRpZmllciwgV1RGTW92ZShjb25uZWN0
aW9uKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1vdmVDb25uZWN0aW9u
KFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQoreworICAgIGF1
dG8gY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMudGFrZShwcm9jZXNzSWRlbnRpZmllcik7Cisg
ICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1v
dmVDb25uZWN0aW9uKCVwKTogcHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCBjb25uZWN0aW9u
LmdldCgpLCBwcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBBU1NFUlQoY29ubmVj
dGlvbik7CisKKyAgICBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSwg
V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj4+IHNoYXJlZFdvcmtlck9iamVj
dHNHb2luZ0F3YXk7CisgICAgZm9yIChhdXRvJiBzaGFyZWRXb3JrZXIgOiBtX3NoYXJlZFdvcmtl
cnMudmFsdWVzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyIDogc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzKCkua2V5cygpKSB7Cisg
ICAgICAgICAgICBpZiAoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRp
ZmllcigpID09IHByb2Nlc3NJZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIHNoYXJlZFdvcmtl
ck9iamVjdHNHb2luZ0F3YXkuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHNoYXJlZFdvcmtlci0+a2V5
KCksIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBmb3IgKGF1dG8mIFtzaGFyZWRXb3JrZXJLZXksIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXJdIDogc2hhcmVkV29ya2VyT2JqZWN0c0dvaW5nQXdheSkKKyAgICAgICAgc2hhcmVkV29ya2Vy
T2JqZWN0SXNHb2luZ0F3YXkoc2hhcmVkV29ya2VyS2V5LCBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyKTsKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiog
V2ViU2hhcmVkV29ya2VyU2VydmVyOjpjb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9t
YWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fY29udGV4dENvbm5lY3Rpb25zLmdldChkb21haW4pOworfQorCit2b2lkIFdl
YlNoYXJlZFdvcmtlclNlcnZlcjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6
OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBhdXRvKiBzaGFyZWRXb3JrZXIgPSBXZWJTaGFy
ZWRXb3JrZXI6OmZyb21JZGVudGlmaWVyKHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworICAgIFJF
TEVBU0VfTE9HX0VSUk9SKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cG9z
dEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2
NCAiLCBzaGFyZWRXb3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCks
IHNoYXJlZFdvcmtlcik7CisgICAgaWYgKCFzaGFyZWRXb3JrZXIpCisgICAgICAgIHJldHVybjsK
KworICAgIGZvciAoYXV0byBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIDogc2hhcmVkV29y
a2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzKCkua2V5cygpKSB7CisgICAgICAgIGlmIChhdXRvKiBz
ZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIHNlcnZlckNvbm5lY3Rp
b24tPnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMKTsK
KyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMmQ4MDM4MDkzNmRlYWZhNGIwZjMxMjM0OTIwOTdkM2Q4
NzM5OTY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
aGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmgKQEAgLTAsMCArMSw4MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRp
Zmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1RyYW5zZmVycmVkTWVzc2FnZVBvcnQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKKworc3Ry
dWN0IENsaWVudE9yaWdpbjsKK3N0cnVjdCBTaGFyZWRXb3JrZXJLZXk7CitzdHJ1Y3QgV29ya2Vy
RmV0Y2hSZXN1bHQ7CitzdHJ1Y3QgV29ya2VyT3B0aW9uczsKK30KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIE5ldHdvcmtTZXNzaW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2VyOworY2xh
c3MgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZl
ciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI+IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXIoTmV0d29ya1Nlc3Npb24mKTsKKyAgICB+V2ViU2hhcmVkV29ya2VyU2VydmVy
KCk7CisKKyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKTsKKyAgICBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBjb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJh
YmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CisKKyAg
ICB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiYsIFdl
YkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVk
TWVzc2FnZVBvcnQmJiwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmKTsKKyAgICB2b2lkIHNoYXJl
ZFdvcmtlck9iamVjdElzR29pbmdBd2F5KGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYs
IFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIHZvaWQgcG9zdEV4
Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCisgICAgdm9pZCBhZGRDb250ZXh0Q29ubmVj
dGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CisgICAgdm9p
ZCByZW1vdmVDb250ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uJik7CisgICAgdm9pZCBhZGRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uPiYmKTsKKyAgICB2b2lkIHJlbW92ZUNvbm5lY3Rp
b24oV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOworCitwcml2YXRlOgorICAgIHZvaWQgY3Jl
YXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsK
KyAgICBib29sIG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OworICAgIHZvaWQgY29udGV4dENv
bm5lY3Rpb25DcmVhdGVkKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24m
KTsKKyAgICB2b2lkIGRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29ya2VyU2NyaXB0KFdlYlNoYXJl
ZFdvcmtlciYsIFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYpOworICAgIHZvaWQgc2h1dERv
d25TaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5Jik7CisKKyAgICBO
ZXR3b3JrU2Vzc2lvbiYgbV9zZXNzaW9uOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
Pj4gbV9jb25uZWN0aW9uczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
LCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4gbV9jb250ZXh0Q29u
bmVjdGlvbnM7CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9wZW5k
aW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5zOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2hhcmVk
V29ya2VyS2V5LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyPj4gbV9zaGFyZWRXb3Jr
ZXJzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2NDFjMTg5YzJm
Mjk5ZGI1OTk5NDVhMzczNWE4MWQ1NGY1OGRhOWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgiCisK
KyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlci5oIgorI2luY2x1ZGUg
IldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvV29ya2VyRmV0Y2hSZXN1bHQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNkZWZp
bmUgQ09OTkVDVElPTl9NRVNTQUdFX0NIRUNLKGFzc2VydGlvbikgQ09OTkVDVElPTl9NRVNTQUdF
X0NIRUNLX0NPTVBMRVRJT04oYXNzZXJ0aW9uLCAodm9pZCkwKQorI2RlZmluZSBDT05ORUNUSU9O
X01FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTihhc3NlcnRpb24sIGNvbXBsZXRpb24pIGRvIHsgXAor
ICAgIEFTU0VSVChhc3NlcnRpb24pOyBcCisgICAgaWYgKFVOTElLRUxZKCEoYXNzZXJ0aW9uKSkp
IHsgXAorICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJtaW5hdGVXZWJQcm9jZXNz
KG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpLCAwKTsgXAorICAgICAgICB7IGNvbXBsZXRpb247IH0g
XAorICAgICAgICByZXR1cm47IFwKKyAgICB9IFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgQ09O
TkVDVElPTl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAi
JXAgLSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdlYlNoYXJlZFdvcmtlclNl
cnZlckNvbm5lY3Rpb246OiIgZm10LCB0aGlzLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyLnRvVUlu
dDY0KCksICMjX19WQV9BUkdTX18pCisjZGVmaW5lIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJS
T1IoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKFNoYXJlZFdvcmtlciwgIiVwIC0gW3dlYlBy
b2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uOjoiIGZtdCwgdGhpcywgbV93ZWJQcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpLCAjI19f
VkFfQVJHU19fKQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgV2Vi
U2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIpCisgICAgOiBt
X2NvbnRlbnRDb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5l
dHdvcmtQcm9jZXNzKQorICAgICwgbV9zZXJ2ZXIoc2VydmVyKQorICAgICwgbV93ZWJQcm9jZXNz
SWRlbnRpZmllcih3ZWJQcm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVB
U0VfTE9HKCJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOiIpOworfQorCitXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjp+V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlv
bigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygifldlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb246Iik7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiogV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAoreworICAgIHJl
dHVybiBtX2NvbnRlbnRDb25uZWN0aW9uLnB0cigpOworfQorCitQQUw6OlNlc3Npb25JRCBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpzZXNzaW9uSUQoKQoreworICAgIHJldHVybiBz
ZXJ2ZXIoKS5zZXNzaW9uSUQoKTsKK30KKworTmV0d29ya1Nlc3Npb24qIFdlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb246OnNlc3Npb24oKQoreworICAgIHJldHVybiBtX25ldHdvcmtQcm9j
ZXNzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbjo6cmVxdWVzdFNoYXJlZFdvcmtlcihXZWJDb3JlOjpTaGFyZWRX
b3JrZXJLZXkmJiBzaGFyZWRXb3JrZXJLZXksIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJy
ZWRNZXNzYWdlUG9ydCYmIHBvcnQsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRp
b25zKQoreworICAgIENPTk5FQ1RJT05fTUVTU0FHRV9DSEVDSyhzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7
CisgICAgQ09OTkVDVElPTl9NRVNTQUdFX0NIRUNLKHNoYXJlZFdvcmtlcktleS5uYW1lID09IHdv
cmtlck9wdGlvbnMubmFtZSk7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygicmVxdWVzdFNo
YXJlZFdvcmtlcjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAg
IGlmIChhdXRvKiBzZXNzaW9uID0gdGhpcy0+c2Vzc2lvbigpKQorICAgICAgICBzZXNzaW9uLT5l
bnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKS5yZXF1ZXN0U2hhcmVkV29ya2VyKFdURk1vdmUoc2hh
cmVkV29ya2VyS2V5KSwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV1RGTW92ZShwb3J0
KSwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbjo6c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hh
cmVkV29ya2VyS2V5JiYgc2hhcmVkV29ya2VyS2V5LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7CisgICAgQ09OTkVD
VElPTl9NRVNTQUdFX0NIRUNLKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lk
ZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICBDT05ORUNUSU9OX1JF
TEVBU0VfTE9HKCJzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheTogc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50
b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gdGhpcy0+
c2Vzc2lvbigpKQorICAgICAgICBzZXNzaW9uLT5lbnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKS5z
aGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShzaGFyZWRXb3JrZXJLZXksIHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb246OmZldGNoU2NyaXB0SW5DbGllbnQoY29uc3QgV2ViU2hhcmVkV29ya2VyJiBzaGFyZWRX
b3JrZXIsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXb3JrZXJG
ZXRjaFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBDT05ORUNUSU9OX1JF
TEVBU0VfTE9HKCJmZXRjaFNjcmlwdEluQ2xpZW50OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyPSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpGZXRjaFNjcmlwdEluQ2xpZW50IHsgc2hhcmVkV29y
a2VyLnVybCgpLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBzaGFyZWRXb3JrZXIud29y
a2VyT3B0aW9ucygpIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRD
b21wbGV0aW9uKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3Ip
Cit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygibm90aWZ5V29ya2VyT2JqZWN0T2ZMb2Fk
Q29tcGxldGlvbjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zLCBzdWNj
ZXNzPSVkIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5k
YXRhKCksIGVycm9yLmlzTnVsbCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uOjpOb3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uIHsg
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgZXJyb3IgfSk7Cit9CisKK3ZvaWQgV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdl
YkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBDT05ORUNUSU9O
X1JFTEVBU0VfTE9HX0VSUk9SKCJwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Q6IHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpQb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qg
eyBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgc291cmNlVVJMIH0pOworfQorCisjdW5kZWYgQ09OTkVDVElPTl9SRUxF
QVNFX0xPRworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IKKyN1bmRlZiBDT05O
RUNUSU9OX01FU1NBR0VfQ0hFQ0sKKyN1bmRlZiBDT05ORUNUSU9OX01FU1NBR0VfQ0hFQ0tfQ09N
UExFVElPTgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYmY3NzVkMGE4ZjVjYjcx
YzdmMzQ2YTE1NTQ4ZGNkMmRiNDEzMWI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbi5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9T
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0
cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKK3N0cnVjdCBXb3JrZXJPcHRpb25zOworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya1Byb2Nlc3M7CitjbGFzcyBXZWJTaGFyZWRX
b3JrZXI7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI7CitjbGFzcyBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVz
c2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiwgV2ViU2hh
cmVkV29ya2VyU2VydmVyJiwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIpOworICAgIH5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCk7CisKKyAgICBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlcigpIHsgcmV0dXJuIG1fc2VydmVyOyB9CisgICAg
Y29uc3QgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIoKSBjb25zdCB7IHJldHVybiBtX3Nl
cnZlcjsgfQorCisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCk7CisgICAgTmV0d29ya1Nl
c3Npb24qIHNlc3Npb24oKTsKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9j
ZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7IH0K
KworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgZmluYWw7CisKKyAgICB2b2lkIGZldGNoU2NyaXB0SW5DbGllbnQoY29uc3QgV2ViU2hh
cmVkV29ya2VyJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmKT4mJik7CisgICAg
dm9pZCBub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKFdlYkNvcmU6OlNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKKyAg
ICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKworcHJpdmF0
ZToKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNz
YWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQorCisgICAgLy8g
SVBDIG1lc3NhZ2VzLgorICAgIHZvaWQgcmVxdWVzdFNoYXJlZFdvcmtlcihXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJLZXkmJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2Vi
Q29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYp
OworICAgIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVk
V29ya2VyS2V5JiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworCisg
ICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb250ZW50Q29ubmVjdGlvbjsKKyAgICBSZWY8TmV0
d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVy
JiBtX3NlcnZlcjsKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBtX3dlYlByb2Nlc3NJ
ZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
aGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kNzJhODdiN2VjZjQ0NmM5MTk0ZDNhYmRiZjIyNjMwYjRiMzI1ZGRjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI2
IEBACisjIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+
IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CisgICAgUmVx
dWVzdFNoYXJlZFdvcmtlcihzdHJ1Y3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5IHNoYXJlZFdv
cmtlcktleSwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0IHBvcnQs
IHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdvcmtlck9wdGlvbnMpCisgICAgU2hhcmVk
V29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoc3RydWN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSBz
aGFyZWRXb3JrZXJLZXksIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZmY4NmJjN2Q2YTJkNDMxZjM4MzRkZjg1ZTFkMjYyMzQ1NmY1YTk4NwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTExIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNp
bmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlNo
YXJlZFdvcmtlci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCisjZGVmaW5lIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNF
X0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBbd2ViUHJvY2Vz
c0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246OiIgZm10LCB0aGlzLCB3ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUludDY0KCks
ICMjX19WQV9BUkdTX18pCisKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIp
CisgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1fc2VydmVyKHNlcnZlcikK
KyAgICAsIG1fcmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pCit7CisgICAgQ09O
VEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOiIpOworICAgIHNlcnZlci5hZGRDb250ZXh0Q29ubmVjdGlvbigqdGhpcyk7
Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5XZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkKK3sKKyAgICBDT05URVhUX0NPTk5F
Q1RJT05fUkVMRUFTRV9MT0coIn5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOiIpOworICAgIGlmIChtX3NlcnZlciAmJiBtX3NlcnZlci0+Y29udGV4dENvbm5lY3Rpb25G
b3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbigpKSA9PSB0aGlzKQorICAgICAg
ICBtX3NlcnZlci0+cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oKnRoaXMpOworfQorCitXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllciBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjp3ZWJQcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29ubmVj
dGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpOworfQorCitJUEM6OkNvbm5lY3Rpb24mIFdlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmlwY0Nvbm5lY3Rpb24oKSBjb25z
dAoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpOworfQorCitJUEM6OkNv
bm5lY3Rpb24qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3Nh
Z2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gJmlwY0Nvbm5lY3Rpb24o
KTsKK30KKwordWludDY0X3QgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAoreworICAgIHJldHVybiAwOwor
fQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5l
Y3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFT
RV9MT0coImNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkOiIpOworICAgIG1fY29ubmVjdGlvbi5z
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOwor
fQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnBvc3RF
eGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNo
YXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7Cisg
ICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJwb3N0RXhjZXB0aW9uVG9Xb3JrZXJP
YmplY3Q6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVu
dGlmaWVyLnRvVUludDY0KCkpOworICAgIGlmIChtX3NlcnZlcikKKyAgICAgICAgbV9zZXJ2ZXIt
PnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBlcnJv
ck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMKTsKK30KKwordm9p
ZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpsYXVuY2hTaGFyZWRX
b3JrZXIoV2ViU2hhcmVkV29ya2VyJiBzaGFyZWRXb3JrZXIpCit7CisgICAgQ09OVEVYVF9DT05O
RUNUSU9OX1JFTEVBU0VfTE9HKCJsYXVuY2hTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50
aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXIuaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwor
ICAgIHNoYXJlZFdvcmtlci5tYXJrQXNSdW5uaW5nKCk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpMYXVuY2hTaGFyZWRXb3JrZXIg
eyBzaGFyZWRXb3JrZXIub3JpZ2luKCksIHNoYXJlZFdvcmtlci5pZGVudGlmaWVyKCksIHNoYXJl
ZFdvcmtlci51cmwoKSwgc2hhcmVkV29ya2VyLndvcmtlck9wdGlvbnMoKSwgc2hhcmVkV29ya2Vy
LmZldGNoUmVzdWx0KCkgfSk7CisgICAgZm9yIChhdXRvJiBwb3J0IDogc2hhcmVkV29ya2VyLnNo
YXJlZFdvcmtlck9iamVjdHMoKS52YWx1ZXMoKSkKKyAgICAgICAgcG9zdENvbm5lY3RFdmVudChz
aGFyZWRXb3JrZXIsIHBvcnQpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OnBvc3RDb25uZWN0RXZlbnQoY29uc3QgV2ViU2hhcmVkV29ya2VyJiBz
aGFyZWRXb3JrZXIsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmIHBvcnQp
Cit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJwb3N0Q29ubmVjdEV2ZW50
OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VyLmlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OlBvc3RDb25uZWN0RXZlbnQgeyBzaGFyZWRXb3JrZXIuaWRl
bnRpZmllcigpLCBwb3J0LCBzaGFyZWRXb3JrZXIub3JpZ2luKCkuY2xpZW50T3JpZ2luLnRvU3Ry
aW5nKCkgfSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6dGVybWluYXRlU2hhcmVkV29ya2VyKGNvbnN0IFdlYlNoYXJlZFdvcmtlciYgc2hhcmVk
V29ya2VyKQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygidGVybWluYXRl
U2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29y
a2VyLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlRlcm1pbmF0ZVNoYXJlZFdvcmtlciB7
IHNoYXJlZFdvcmtlci5pZGVudGlmaWVyKCkgfSk7Cit9CisKKyN1bmRlZiBDT05URVhUX0NPTk5F
Q1RJT05fUkVMRUFTRV9MT0cKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDZhZWEzMTlhYTNlODBlNjcwZGVkYmMwYzhhYmQwZjJmNmI1Y2EyNAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2Vy
L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDgw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5
SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1RyYW5zZmVycmVkTWVzc2FnZVBvcnQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgUmVnaXN0cmFibGVEb21haW47CitjbGFzcyBTY3JpcHRCdWZmZXI7CitzdHJ1Y3QgQ2xpZW50
T3JpZ2luOworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0Oworc3RydWN0IFdvcmtlck9wdGlvbnM7
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzczsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlcjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNl
cnZlcjsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBm
aW5hbCA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2ViU2hhcmVkV29y
a2VyU2VydmVyJik7CisgICAgfldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24oKTsKKworICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlm
aWVyKCkgY29uc3Q7CisgICAgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lz
dHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQorICAg
IElQQzo6Q29ubmVjdGlvbiYgaXBjQ29ubmVjdGlvbigpIGNvbnN0OworCisgICAgdm9pZCBsYXVu
Y2hTaGFyZWRXb3JrZXIoV2ViU2hhcmVkV29ya2VyJik7CisgICAgdm9pZCBwb3N0Q29ubmVjdEV2
ZW50KGNvbnN0IFdlYlNoYXJlZFdvcmtlciYsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVz
c2FnZVBvcnQmKTsKKyAgICB2b2lkIHRlcm1pbmF0ZVNoYXJlZFdvcmtlcihjb25zdCBXZWJTaGFy
ZWRXb3JrZXImKTsKKworICAgIHZvaWQgY29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKTsKKwor
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
JikgZmluYWw7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAgIHZvaWQgcG9z
dEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCisgICAgLy8gSVBDOjpNZXNzYWdlU2Vu
ZGVyLgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25z
dCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0
IGZpbmFsOworCisgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fY29ubmVjdGlv
bjsKKyAgICBXZWFrUHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlcj4gbV9zZXJ2ZXI7CisgICAgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWU0N2MxMjJjYmFjODczYzIyYjZkYTNiYzFlYTRkYTA2OGUzNTkyYQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCAr
MSwyNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAor
IyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdl
cyAtPiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIE5vdFJlZkNvdW50
ZWQgeworICAgIFBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFN0cmluZyBlcnJvck1lc3NhZ2Us
IGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTdHJpbmcgc291cmNlVVJMKQorfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCAxYzQyZDA0MGMxYTkwYjBhYWRkMTRlOGIzMzVl
ZjhkZGJiY2FmOWQ2Li5kZTMyZjgxNzE3MTU2NDdkNTM2MTA2MjZhNDc5MTkwNDAwN2RlYjQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaApAQCAtOTcsNiArOTcsNyBAQCBleHRlcm4gIkMiIHsK
ICAgICBNKFNlcnZpY2VXb3JrZXIpIFwKICAgICBNKFNlc3Npb25TdGF0ZSkgXAogICAgIE0oU2hh
cmVkRGlzcGxheUxpc3RzKSBcCisgICAgTShTaGFyZWRXb3JrZXIpIFwKICAgICBNKFN0b3JhZ2Up
IFwKICAgICBNKFN0b3JhZ2VBUEkpIFwKICAgICBNKFRleHRJbnB1dCkgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggN2ViZmE1MTZiNTAzMzZkMzY4N2Y3ZWNk
ZDE3ZThlN2ViZDFjZDlkNy4uNGM4Y2FkMDQ2NDcxNmY3MzMyYWFiNWM3OThiNmMxYWE1NWJiNzhj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0zMDMsMTAg
KzMwMywxMyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgog
ICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllcicsCiAgICAg
ICAgICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcicsCiAgICAg
ICAgICdXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoJywKKyAgICAgICAgJ1dlYkNvcmU6OlNoYXJl
ZFdvcmtlcklkZW50aWZpZXInLAorICAgICAgICAnV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTbGVlcERpc2FibGVySWRlbnRpZmllcics
CiAgICAgICAgICdXZWJDb3JlOjpTb3VyY2VCdWZmZXJBcHBlbmRNb2RlJywKICAgICAgICAgJ1dl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXInLAogICAg
ICAgICAnV2ViQ29yZTo6U3RvcmFnZVR5cGUnLAorICAgICAgICAnV2ViQ29yZTo6VHJhbnNmZXJy
ZWRNZXNzYWdlUG9ydCcsCiAgICAgICAgICdXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0SWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpXZWJMb2NrSWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJDb3JlOjpXZWJTb2NrZXRJZGVudGlmaWVyJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDU3ZWYzYjE0ZWFm
MmMxMDkyMDk4ZWU5NDMyZjUwOGM2MTFlNThlMzUuLmUzMTM5MTA1OWNiM2NiMjAwYTQ4MzcxOTlh
NDlkMzIxOWM4NDQ3M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysr
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMTQxLDYgKzE0MSwxMSBAQCBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuY3BwIEBuby11bmlmeQogTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIEBuby11
bmlmeQogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uY3BwIEBuby11bmlmeQogCitOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyLmNwcAorTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdv
cmtlclNlcnZlci5jcHAKK05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcAorTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisKIE5ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS5jcHAKQEAgLTc4Myw4ICs3ODgsOSBAQCBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCiBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dPcmlnaW5UYWJsZS5jcHAKIFdlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAKLVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRX
b3JrZXJQcm92aWRlci5jcHAKK1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKK1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3Jr
ZXJQcm92aWRlci5jcHAKIAogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIuY3BwCiAKQEAgLTg4NywzICs4OTMsNyBAQCBSZW1vdGVXZWJMb2NrUmVnaXN0cnlN
ZXNzYWdlUmVjZWl2ZXIuY3BwCiBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrTWVzc2FnZVJlY2Vp
dmVyLmNwcAogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5TWVzc2FnZVJlY2VpdmVyLmNwcAog
V2ViTG9ja1JlZ2lzdHJ5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBh
Njc4MzY3YTc3NWE0OWJhODFiMjQ4OGNmMzFlYWI5ZGNjY2NjOTIxLi4zMzAyMGJkNWMzY2Q5NDE3
NzU2MTU3OWFjMjBmYzM4ZjljNjkyNzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTUyOSw3ICs1Mjks
NyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVdlYlByb2Nlc3MoV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvYwogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0
ZXJtaW5hdGVVbnJlc3BvbnNpdmVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQogewogICAgIGlmIChSZWZQdHIgcHJvY2Vz
cyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIocHJvY2Vzc0lkZW50aWZp
ZXIpKSB7Ci0gICAgICAgIHByb2Nlc3MtPmRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgICAg
ICBwcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNl
cnZpY2VXb3JrZXIpOwogICAgICAgICBwcm9jZXNzLT5yZXF1ZXN0VGVybWluYXRpb24oUHJvY2Vz
c1Rlcm1pbmF0aW9uUmVhc29uOjpFeGNlZWRlZENQVUxpbWl0KTsKICAgICB9CiB9CkBAIC0xNDE1
LDE2ICsxNDE1LDIxIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRGVzdHJveVdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50CiB9CiAjZW5kaWYKIAordm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3Ry
YWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFi
bGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXVEZNb3Zl
KHJlZ2lzdHJhYmxlRG9tYWluKSwgc2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7Cit9CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiB2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25h
bDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVu
dGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNo
U2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcygqdGhpcywgV1RG
TW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgc2Vz
c2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgV2ViUHJvY2Vzc1Bvb2w6
OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
V1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwg
c2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6c2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVk
ZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBpZiAoYXV0
byogcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIoaWRlbnRp
ZmllcikpCi0gICAgICAgIHByb2Nlc3MtPmRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgICAg
ICBwcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNl
cnZpY2VXb3JrZXIpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJv
Y2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzSWRlbnRpZmllcikKQEAgLTE0NjAsNiArMTQ2NSwxMiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQ
cm9jZXNzSQogfQogI2VuZGlmCiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciBpZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvKiBwcm9jZXNzID0gV2ViUHJvY2Vzc1By
b3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihpZGVudGlmaWVyKSkKKyAgICAgICAgcHJvY2Vzcy0+
ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIp
OworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdp
biwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qg
c3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBxdW90YSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUkVMRUFTRV9MT0coU3Rv
cmFnZSwgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VTcGFjZSIsIHRo
aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaAppbmRleCBhNGUzNjQ1ZWJhYWUzMzZkMTgwYjU0MTRiYWZhYTM1ZDgzZjkx
OGM0Li42ODQxYTM0ZmUwOWQxMmJhOTNkNGVmOGM4MGU0NTMzYTU1ZmQ2NWM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aApAQCAtMzM0LDYgKzMzNCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFNlcnZpY2VXb3Jr
ZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNl
V29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIHZvaWQgZW5kU2VydmljZVdvcmtlckJhY2tn
cm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzSWRlbnRpZmllcik7CiAjZW5kaWYKKyAgICB2b2lkIHNoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOworICAg
IHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCB0ZXJtaW5hdGVXZWJQcm9jZXNzKFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmlu
CmluZGV4IDEyZDA2Y2ViZDYyYWYxNzUwZTc4ODU1OWMxM2ExYjM5ODNmZGQyYmEuLjE1NzU3ZWQ5
YTI1MmIwOWRjZDExYmI1ZTZiOWM4YTEwZDA1MzRjOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVz
c2FnZXMuaW4KQEAgLTYwLDYgKzYwLDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94
eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nl
c3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVu
dGlmaWVyKQogICAgIEVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpCiAjZW5k
aWYKKyAgICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4sIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKKyAgICBTaGFyZWRXb3JrZXJDb250ZXh0
Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiAKICAgICBTZXRXZWJQcm9jZXNzSGFzVXBsb2FkcyhXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciBwcm9jZXNzSUQsIGJvb2wgaGFzVXBsb2FkKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBiYjQxYzExMWEzMzU5ZTBhMjMzZjM0NGQyZjlkZTZk
MDFjMjhhNTcwLi5lNDFmZDg3ODAwOTA4NjEyOWY3MDQzMTBjMzIyYmRlZWI2YzZkMDcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM2OTQsMTEgKzM2OTQs
OSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlckFnZW50KFN0cmluZyYmIHVzZXJBZ2VudCkK
ICAgICAgICAgcmV0dXJuOwogICAgIG1fdXNlckFnZW50ID0gV1RGTW92ZSh1c2VyQWdlbnQpOwog
Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIC8vIFdlIHVwZGF0ZSB0aGUgc2Vydmlj
ZSB3b3JrZXIgdGhlcmUgYXQgdGhlIG1vbWVudCB0byBiZSBzdXJlIHdlIHVzZSB2YWx1ZXMgdXNl
ZCBieSBhY3R1YWwgd2ViIHBhZ2VzLgogICAgIC8vIEZJWE1FOiBSZWZhY3RvciB0aGlzIHdoZW4g
d2UgaGF2ZSBhIGJldHRlciBVc2VyLUFnZW50IHN0b3J5LgotICAgIHByb2Nlc3MoKS5wcm9jZXNz
UG9vbCgpLnVwZGF0ZVNlcnZpY2VXb3JrZXJVc2VyQWdlbnQobV91c2VyQWdlbnQpOwotI2VuZGlm
CisgICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCkudXBkYXRlV29ya2VyVXNlckFnZW50KG1fdXNl
ckFnZW50KTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGFmYzIz
ZWU1M2YxMjg0MjE5M2QyZWFlZjIwZjI1OTYyZWVkNzNmYTIuLjRiMTliMGQxZDNjMTU0Y2IyZTZm
MzAyMzZiMTM0ZTA1OThjYTI0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKQEAgLTUyOSw3ICs1MjksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRX
ZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Bybwog
Ym9vbCBXZWJQcm9jZXNzUG9vbDo6c191c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzID0g
ZmFsc2U7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3NQb29s
Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KE5ldHdvcmtQcm9jZXNzUHJveHkmIHByb3h5LCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJh
YmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
PiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQ
cm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9w
dGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8qIHdlYnNpdGVEYXRhU3Rv
cmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChzZXNz
aW9uSUQpOwogICAgIGlmICghd2Vic2l0ZURhdGFTdG9yZSkKQEAgLTU0Niw3ICs1NDYsNyBAQCB2
b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzKE5ldAogICAgIGlmIChzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZp
ZXIpIHsKICAgICAgICAgLy8gVGhpcyBpcyBhIHNlcnZpY2Ugd29ya2VyIGZvciBhIHNlcnZpY2Ug
d29ya2VyIHBhZ2Ugc28gd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgdXNlIHVzZSB0aGUgcGFnZSdz
IFdlYlByb2Nlc3MgZm9yIHRoZSBzZXJ2aWNlIHdvcmtlci4KICAgICAgICAgaWYgKChzZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmll
cihzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXItPnByb2Nlc3NJZGVudGlmaWVyKCkpKSkgewot
ICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlU2VydmljZVdvcmtl
cnMocHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2aWNl
V29ya2VycygpKTsKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJs
ZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBwcm9j
ZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CiAg
ICAgICAgICAgICBpZiAoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNo
ZSgpKSB7CiAgICAgICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLnJl
bW92ZVByb2Nlc3MoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NDYWNoZTo6
U2hvdWxkU2h1dERvd25Qcm9jZXNzOjpObyk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFzZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpOwpAQCAtNTY0LDcgKzU2
NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0CiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBwcm9jZXNzLnB0cigp
OwotICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlU2VydmljZVdv
cmtlcnMocHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2
aWNlV29ya2VycygpKTsKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVu
YWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBw
cm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7
CiAKICAgICAgICAgICAgIGlmIChzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vz
c0NhY2hlKCkpIHsKICAgICAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hl
KCkucmVtb3ZlUHJvY2Vzcygqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0Nh
Y2hlOjpTaG91bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKE5ldAogICAgIH0KIAogICAgIGlmICghc2VydmljZVdvcmtlclByb2Nl
c3NQcm94eSkgewotICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94
eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMoKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFp
biAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIGF1
dG8gbmV3UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdl
YlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgKnByb2Nlc3NQb29sLCBS
ZWdpc3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9y
ZSk7CiAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBuZXdQcm9jZXNzUHJveHku
cHRyKCk7CiAKICAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElDKFNlcnZp
Y2VXb3JrZXIsICJlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzIGNyZWF0aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nlcz0l
cCwgUElEPSVkKSIsIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOwpAQCAtNTg2LDIwICs1ODYsNzAgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhOZXQKICAgICAgICAgcHJvY2Vzc1Bvb2wtPm1fcHJvY2Vzc2VzLmFw
cGVuZChXVEZNb3ZlKG5ld1Byb2Nlc3NQcm94eSkpOwogICAgIH0KIAotICAgIEFTU0VSVCghc2Vy
dmljZVdvcmtlclByb2Nlc3NlcygpLmNvbnRhaW5zKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
KSk7Ci0gICAgc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2VydmljZVdvcmtlclByb2Nl
c3NQcm94eSk7CisgICAgd29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5KTsKIAotICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZp
Y2VXb3JrZXJDb250ZXh0KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA/
IHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vz
c1Bvb2wtPm1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3Ry
YWJsZURvbWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7Ci0gICAgaWYgKCFwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyVXNlckFn
ZW50LmlzTnVsbCgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRTZXJ2
aWNlV29ya2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQp
OworICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZpY2VXb3JrZXJD
b250ZXh0KHByb2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bvb2wtPm1f
d29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3Jv
dXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3Jr
ZXJQYWdlSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmICgh
cHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQorICAgICAgICBzZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRXb3JrZXJVc2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fd29y
a2VyVXNlckFnZW50KTsKIH0KKyNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVG
cm9tU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCit2b2lk
IFdlYlByb2Nlc3NQb29sOjpyZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94
eSYgcHJvY2VzcykKIHsKLSAgICBBU1NFUlQoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmNvbnRh
aW5zKHByb2Nlc3MpKTsKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkucmVtb3ZlKHByb2Nl
c3MpOworICAgIEFTU0VSVCh3b3JrZXJQcm9jZXNzZXMoKS5jb250YWlucyhwcm9jZXNzKSk7Cisg
ICAgd29ya2VyUHJvY2Vzc2VzKCkucmVtb3ZlKHByb2Nlc3MpOworfQorCit2b2lkIFdlYlByb2Nl
c3NQb29sOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRh
U3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Npb25JRCk7CisgICAgaWYg
KCF3ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOworICAgIGlmICghcHJvY2Vzc1Bvb2xz
KCkuc2l6ZSgpKQorICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPFdlYlByb2Nlc3NQ
b29sPj4gc2hhcmVkV29ya2VyUHJvY2Vzc1Bvb2woV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCkuZ2V0KCkpKTsKKworICAgIC8vIEFy
Yml0cmFyaWx5IGNob29zZSB0aGUgZmlyc3QgcHJvY2VzcyBwb29sIHRvIGhvc3QgdGhlIHNoYXJl
ZCB3b3JrZXIgcHJvY2Vzcy4KKyAgICBhdXRvKiBwcm9jZXNzUG9vbCA9IHByb2Nlc3NQb29scygp
WzBdOworICAgIEFTU0VSVChwcm9jZXNzUG9vbCk7CisKKyAgICBXZWJQcm9jZXNzUHJveHkqIHNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eSB7IG51bGxwdHIgfTsKKworICAgIGZvciAoYXV0byYgcHJv
Y2VzcyA6IHByb2Nlc3NQb29sLT5tX3Byb2Nlc3NlcykgeworICAgICAgICBpZiAocHJvY2Vzcy5w
dHIoKSA9PSBwcm9jZXNzUG9vbC0+bV9wcmV3YXJtZWRQcm9jZXNzLmdldCgpIHx8IHByb2Nlc3Mt
PmlzRHVtbXlQcm9jZXNzUHJveHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBp
ZiAoJnByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlKQorICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghcHJvY2Vzcy0+aXNNYXRjaGluZ1JlZ2lz
dHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSA9IHByb2Nlc3MucHRyKCk7CisgICAg
ICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlV29ya2VycyhXZWJQcm9jZXNzUHJv
eHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOworCisgICAgICAgIGlmIChzaGFyZWRXb3Jr
ZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSkgeworICAgICAgICAgICAgcHJvY2Vz
c1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nlc3MoKnNoYXJlZFdvcmtlclByb2Nl
c3NQcm94eSwgV2ViUHJvY2Vzc0NhY2hlOjpTaG91bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKKyAg
ICAgICAgICAgIEFTU0VSVCghc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0Nh
Y2hlKCkpOworICAgICAgICB9CisKKyAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0df
U1RBVElDKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2VzcyByZXVzaW5nIGFuIGV4aXN0aW5nIHdlYiBwcm9jZXNzIChwcm9j
ZXNzPSVwLCBQSUQ9JWQpIiwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LCBzaGFyZWRXb3JrZXJQ
cm9jZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICBicmVhazsKKyAgICB9
CisKKyAgICBpZiAoIXNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSkgeworICAgICAgICBhdXRvIG5l
d1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yV29ya2VycyhXZWJQcm9j
ZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgKnByb2Nlc3NQb29sLCBSZWdpc3Ry
YWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7Cisg
ICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSA9IG5ld1Byb2Nlc3NQcm94eS5wdHIoKTsK
KworICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoU2hhcmVkV29ya2Vy
LCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
IGNyZWF0aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nlc3M9JXAsIFBJRD0l
ZCkiLCBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHksIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+
cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmluaXRpYWxpemVO
ZXdXZWJQcm9jZXNzKG5ld1Byb2Nlc3NQcm94eSwgd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAg
IHByb2Nlc3NQb29sLT5tX3Byb2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdQcm9jZXNzUHJveHkp
KTsKKyAgICB9CisKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNoYXJlZFdvcmtlclByb2Nl
c3NQcm94eSk7CisKKyAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNoYXJl
ZFdvcmtlckNvbnRleHQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNz
UG9vbC0+bV93b3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVs
dFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJsZURvbWFpbiwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fd29ya2Vy
VXNlckFnZW50LmlzTnVsbCgpKQorICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPnNl
dFdvcmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV93b3JrZXJVc2VyQWdlbnQpOwogfQotI2Vu
ZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNo
YW5nZWQoKQogewpAQCAtMTAwMywxMCArMTA1Myw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRp
c2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIAogICAgIG1fYmFja0Zv
cndhcmRDYWNoZS0+cmVtb3ZlRW50cmllc0ZvclByb2Nlc3MocHJvY2Vzcyk7CiAKLSNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtl
cnMoKSkKLSAgICAgICAgcmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7
Ci0jZW5kaWYKKyAgICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdXb3JrZXJzKCkpCisgICAgICAgIHJl
bW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7CiAKICAgICBzdGF0aWNfY2FzdDxXZWJD
b250ZXh0U3VwcGxlbWVudCo+KHN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+
KCkpLT5wcm9jZXNzRGlkQ2xvc2UoJnByb2Nlc3MpOwogCkBAIC0xMDY3LDEyICsxMTE1LDEyIEBA
IFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFi
bGVEb21haW4oV2Vic2l0ZURhdGFTdG9yCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
Ci1Vc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIFdlYlByb2Nlc3NQb29sOjp1c2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKQorVXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllciBXZWJQcm9jZXNzUG9vbDo6dXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllckZvcldvcmtlcnMoKQogewotICAgIGlmICghbV91c2VyQ29udGVudENvbnRyb2xs
ZXJGb3JTZXJ2aWNlV29ya2VyKQotICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclNl
cnZpY2VXb3JrZXIgPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKCk7Cisg
ICAgaWYgKCFtX3VzZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtlcnMpCisgICAgICAgIG1fdXNl
ckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2VycyA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjpjcmVhdGUoKTsKIAotICAgIHJldHVybiBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclNl
cnZpY2VXb3JrZXItPmlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gbV91c2VyQ29udGVudENvbnRy
b2xsZXJGb3JXb3JrZXJzLT5pZGVudGlmaWVyKCk7CiB9CiAjZW5kaWYKIApAQCAtMTExOSwxNSAr
MTE2NywxMyBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFn
ZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogCiAgICAgYXV0byBwYWdlID0gcHJv
Y2Vzcy0+Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9u
KSk7CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKCFtX3NlcnZpY2VXb3Jr
ZXJQcmVmZXJlbmNlcykgewotICAgICAgICBtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA9IHBh
Z2UtPnByZWZlcmVuY2VzU3RvcmUoKTsKLSAgICAgICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2Vy
UHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSkKLSAgICAgICAgICAgIHNlcnZpY2VX
b3JrZXJQcm9jZXNzLnVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKCptX3NlcnZp
Y2VXb3JrZXJQcmVmZXJlbmNlcyk7CisgICAgaWYgKCFtX3dvcmtlclByZWZlcmVuY2VzKSB7Cisg
ICAgICAgIG1fd29ya2VyUHJlZmVyZW5jZXMgPSBwYWdlLT5wcmVmZXJlbmNlc1N0b3JlKCk7Cisg
ICAgICAgIGZvciAoYXV0byYgd29ya2VyUHJvY2VzcyA6IHdvcmtlclByb2Nlc3NlcygpKQorICAg
ICAgICAgICAgd29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKCptX3dv
cmtlclByZWZlcmVuY2VzKTsKICAgICB9CiAgICAgaWYgKHVzZXJDb250ZW50Q29udHJvbGxlcikK
LSAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyID0gdXNlckNv
bnRlbnRDb250cm9sbGVyOwotI2VuZGlmCisgICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVy
Rm9yV29ya2VycyA9IHVzZXJDb250ZW50Q29udHJvbGxlcjsKIAogICAgIGJvb2wgZW5hYmxlUHJv
Y2Vzc1N3YXBPbkNyb3NzU2l0ZU5hdmlnYXRpb24gPSBwYWdlLT5wcmVmZXJlbmNlcygpLnByb2Nl
c3NTd2FwT25Dcm9zc1NpdGVOYXZpZ2F0aW9uRW5hYmxlZCgpOwogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCkBAIC0xMTUwLDE2ICsxMTk2LDE0IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nl
c3NQb29sOjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAg
ICAgcmV0dXJuIHBhZ2U7CiB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdl
YlByb2Nlc3NQb29sOjp1cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYg
dXNlckFnZW50KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlV29ya2VyVXNlckFnZW50KGNv
bnN0IFN0cmluZyYgdXNlckFnZW50KQogewotICAgIGlmIChtX3NlcnZpY2VXb3JrZXJVc2VyQWdl
bnQgPT0gdXNlckFnZW50KQorICAgIGlmIChtX3dvcmtlclVzZXJBZ2VudCA9PSB1c2VyQWdlbnQp
CiAgICAgICAgIHJldHVybjsKLSAgICBtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQgPSB1c2VyQWdl
bnQ7Ci0gICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMoKSkKLSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3Muc2V0U2VydmljZVdvcmtl
clVzZXJBZ2VudChtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQpOworICAgIG1fd29ya2VyVXNlckFn
ZW50ID0gdXNlckFnZW50OworICAgIGZvciAoYXV0byYgd29ya2VyUHJvY2VzcyA6IHdvcmtlclBy
b2Nlc3NlcygpKQorICAgICAgICB3b3JrZXJQcm9jZXNzLnNldFdvcmtlclVzZXJBZ2VudChtX3dv
cmtlclVzZXJBZ2VudCk7CiB9Ci0jZW5kaWYKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUJl
Z2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBX
ZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCiB7CkBAIC0xNTM4LDggKzE1ODIsMTMgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlU2VydmljZVdvcmtlcnMoKQogewogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07Ci0gICAg
d2hpbGUgKHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb21wdXRlU2l6ZSgpKQotICAgICAgICBz
ZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkuYmVnaW4oKS0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7
CisgICAgVmVjdG9yPFJlZjxXZWJQcm9jZXNzUHJveHk+PiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
OworICAgIHdvcmtlclByb2Nlc3NlcygpLmZvckVhY2goWyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAg
ICAgICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKKyAgICAgICAgICAg
IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYXBwZW5kKHByb2Nlc3MpOworICAgIH0pOworICAgIGZv
ciAoYXV0byYgc2VydmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKQor
ICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1By
b3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgogfQogCkBAIC0xNzY3LDEz
ICsxODE2LDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcG9ydFdlYkNvbnRlbnRDUFVUaW1l
KFNlY29uZHMgY3B1VGltZSwgdWludDY0X3QgYWN0aXZpdHlTCiAjZW5kaWYKIH0KIAotI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKLVdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIFdlYlBy
b2Nlc3NQb29sOjpzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkKK1dlYWtIYXNoU2V0PFdlYlByb2Nl
c3NQcm94eT4mIFdlYlByb2Nlc3NQb29sOjp3b3JrZXJQcm9jZXNzZXMoKQogewogICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+PiBwcm9jZXNzZXM7
CiAgICAgcmV0dXJuIHByb2Nlc3NlczsKIH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29s
Ojp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpCiB7CkBAIC0xNzg1LDIwICsxODMyLDI1IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkKICAgICBpZiAoYXV0
byogZ3B1UHJvY2VzcyA9IEdQVVByb2Nlc3NQcm94eTo6c2luZ2xldG9uSWZDcmVhdGVkKCkpCiAg
ICAgICAgIGdwdVByb2Nlc3MtPnVwZGF0ZVByb2Nlc3NBc3NlcnRpb24oKTsKICNlbmRpZgotI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKKwogICAgIC8vIENoZWNrIG9uIG5leHQgcnVuIGxvb3Ag
c2luY2UgdGhlIHdlYiBwcm9jZXNzIHByb3h5IHRva2VucyBhcmUgcHJvYmFibHkgYmVpbmcgdXBk
YXRlZC4KICAgICBjYWxsT25NYWluUnVuTG9vcChbXSB7Ci0gICAgICAgIGZvciAoYXV0byYgc2Vy
dmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkpCi0gICAgICAgICAg
ICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy51cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlv
bigpOwotICAgIH0pOworICAgICAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFtdKGF1dG8m
IHdvcmtlclByb2Nlc3MpIHsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgICAgICAg
ICBpZiAod29ya2VyUHJvY2Vzcy5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQorICAgICAgICAg
ICAgICAgIHdvcmtlclByb2Nlc3MudXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXZWJQcm9j
ZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogI2VuZGlmCisgICAgICAgICAg
ICBpZiAod29ya2VyUHJvY2Vzcy5pc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkpCisgICAgICAgICAg
ICAgICAgd29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdlYlByb2Nl
c3NQcm94eTo6V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKTsKKyAgICAgICAgfSk7CisgICAgfSk7
CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6OmlzU2VydmljZVdvcmtlclBhZ2VJRChXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgaW5lZmZpY2llbnQuCi0gICAgcmV0dXJuIFdURjo6
YW55T2Yoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLCBbcGFnZUlEXShhdXRvJiBwcm9jZXNzKSB7
CisgICAgcmV0dXJuIFdURjo6YW55T2Yod29ya2VyUHJvY2Vzc2VzKCksIFtwYWdlSURdKGF1dG8m
IHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuIHByb2Nlc3MuaGFzU2VydmljZVdvcmtlclBhZ2VQ
cm94eShwYWdlSUQpOwogICAgIH0pOwogI2VuZGlmCkBAIC0yMTI0LDE2ICsyMTc2LDI2IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFVzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoYm9v
bCB1c2VTZXBhcmF0ZVNlcnZpY2VXCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCitz
aXplX3QgV2ViUHJvY2Vzc1Bvb2w6OnNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25zdAor
eworICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNo
KFsmXShhdXRvJiBwcm9jZXNzKSB7CisgICAgICAgIGlmIChwcm9jZXNzLmlzUnVubmluZ1NlcnZp
Y2VXb3JrZXJzKCkpCisgICAgICAgICAgICArK2NvdW50OworICAgIH0pOworICAgIHJldHVybiBj
b3VudDsKK30KKwogYm9vbCBXZWJQcm9jZXNzUG9vbDo6aGFzU2VydmljZVdvcmtlckZvcmVncm91
bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6OmFueU9mKHNl
cnZpY2VXb3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2VzcykgeworICAgIHJldHVybiBX
VEY6OmFueU9mKHdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAg
IHJldHVybiBwcm9jZXNzLmhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0
aW5nKCk7CiAgICAgfSk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6Omhhc1NlcnZpY2VXb3Jr
ZXJCYWNrZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RG
OjphbnlPZihzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKKyAg
ICByZXR1cm4gV1RGOjphbnlPZih3b3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2Vzcykg
ewogICAgICAgICByZXR1cm4gcHJvY2Vzcy5oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2
aXR5Rm9yVGVzdGluZygpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgKaW5kZXggZWI2NmQ4OTQ5MGRmZTAyOGIxMDEyNWU5M2ZmYmQxOThkMDI3Zjdj
ZS4uZTcwYjZmNDI5ZjdjYjcwNjk1NDk1MGY5MDBkMzc4MTNiZGFkZGJiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0zNzQsMTcgKzM3NCwyMCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0RpZFRlcm1pbmF0ZShOZXR3b3JrUHJvY2Vzc1By
b3h5JiwgTmV0d29ya1Byb2Nlc3NQcm94eTo6VGVybWluYXRpb25SZWFzb24pOwogCiAgICAgYm9v
bCBpc1NlcnZpY2VXb3JrZXJQYWdlSUQoV2ViUGFnZVByb3h5SWRlbnRpZmllcikgY29uc3Q7Cisg
ICAgdm9pZCByZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYpOworCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFNlcnZp
Y2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQ
cm94eSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRl
bnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0g
ICAgdm9pZCByZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkm
KTsKLSAgICBzaXplX3Qgc2VydmljZVdvcmtlclByb3hpZXNDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb21wdXRlU2l6ZSgpOyB9Ci0gICAgdm9pZCB1cGRh
dGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKLSAgICBV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXJGb3JTZXJ2aWNlV29ya2VycygpOworICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFNlcnZp
Y2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25J
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICBzaXplX3Qgc2VydmljZVdvcmtl
clByb3hpZXNDb3VudCgpIGNvbnN0OworICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKTsKICAgICBib29s
IGhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3Q7CiAg
ICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNv
bnN0OwogI2VuZGlmCiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyUHJvY2Vzc0NyYXNoZWQoV2ViUHJv
Y2Vzc1Byb3h5Jik7CiAKKyAgICB2b2lkIHVwZGF0ZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCk7CisgICAgc3RhdGljIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkgY29u
c3Q7CiAjZW5kaWYKQEAgLTYxOCwxMyArNjIxLDExIEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFw
PFBBTDo6U2Vzc2lvbklELCBXZWFrUHRyPFdlYlByb2Nlc3NQcm94eT4+IG1fZHVtbXlQcm9jZXNz
UHJveGllczsgLy8gTGlnaHR3ZWlnaHQgV2ViUHJvY2Vzc1Byb3h5IG9iamVjdHMgd2l0aG91dCBi
YWNraW5nIHByb2Nlc3MuCiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgc3RhdGlj
IFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKTsK
LSAgICBib29sIG1fd2FpdGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiB7IGZh
bHNlIH07Ci0gICAgU3RyaW5nIG1fc2VydmljZVdvcmtlclVzZXJBZ2VudDsKLSAgICBzdGQ6Om9w
dGlvbmFsPFdlYlByZWZlcmVuY2VzU3RvcmU+IG1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzOwot
ICAgIFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gbV91c2VyQ29udGVudENv
bnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyOwotI2VuZGlmCisgICAgc3RhdGljIFdlYWtIYXNoU2V0
PFdlYlByb2Nlc3NQcm94eT4mIHdvcmtlclByb2Nlc3NlcygpOworCisgICAgc3RkOjpvcHRpb25h
bDxXZWJQcmVmZXJlbmNlc1N0b3JlPiBtX3dvcmtlclByZWZlcmVuY2VzOworICAgIFJlZlB0cjxX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JX
b3JrZXJzOworICAgIFN0cmluZyBtX3dvcmtlclVzZXJBZ2VudDsKIAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKICAgICBSZWZQdHI8R1BVUHJvY2Vzc1Byb3h5PiBtX2dwdVByb2Nlc3M7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAwNTdkNDk5MjQx
OGEwMDQzZDg0YzU5ZDdiNmU1MmY5ZTAyNjU4YTcxLi5iNzQ2YTdkN2QyMTcwYzM5MjA1ZjMxZTUx
YWVkOGJiYzVlNmRlYjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1
ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKQEAgLTE4MiwxMSArMTgzLDExIEBAIFJlZjxX
ZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sJiBw
cm9jZXNzUG9vbCwgV2Vic2l0CiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1SZWY8
V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJz
KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3Ry
YWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSkKK1JlZjxXZWJQ
cm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yV29ya2VycyhXb3JrZXJUeXBl
IHdvcmtlclR5cGUsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21h
aW4mJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9y
ZSkKIHsKICAgICBhdXRvIHByb3h5ID0gYWRvcHRSZWYoKm5ldyBXZWJQcm9jZXNzUHJveHkocHJv
Y2Vzc1Bvb2wsICZ3ZWJzaXRlRGF0YVN0b3JlLCBJc1ByZXdhcm1lZDo6Tm8sIENyb3NzT3JpZ2lu
TW9kZTo6U2hhcmVkLCBDYXB0aXZlUG9ydGFsTW9kZTo6RGlzYWJsZWQpKTsKICAgICBwcm94eS0+
bV9yZWdpc3RyYWJsZURvbWFpbiA9IFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pOwotICAgIHBy
b3h5LT5lbmFibGVTZXJ2aWNlV29ya2Vycyhwcm9jZXNzUG9vbC51c2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKSk7CisgICAgcHJveHktPmVuYWJsZVdvcmtl
cnMod29ya2VyVHlwZSwgcHJvY2Vzc1Bvb2wudXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
ckZvcldvcmtlcnMoKSk7CiAgICAgcHJveHktPmNvbm5lY3QoKTsKICAgICByZXR1cm4gcHJveHk7
CiB9CkBAIC05OTUsMTAgKzk5NiwxMCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQmVjb21l
VW5yZXNwb25zaXZlKCkKICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogaXNSZXNwb25zaXZlQ2Fs
bGJhY2tzKQogICAgICAgICBjYWxsYmFjayhpc1dlYlByb2Nlc3NSZXNwb25zaXZlKTsKIAotICAg
IC8vIElmIHRoZSB3ZWIgcHJvY2VzcyBiZWNvbWVzIHVucmVzcG9uc2l2ZSBhbmQgb25seSBydW5z
IHNlcnZpY2Ugd29ya2Vycywga2lsbCBpdCBvdXJzZWx2ZXMgc2luY2UgdGhlcmUgYXJlIG5vIG5h
dGl2ZSBjbGllbnRzIHRvIGRvIGl0LgotICAgIGlmIChpc1J1bm5pbmdTZXJ2aWNlV29ya2Vycygp
ICYmIG1fcGFnZU1hcC5pc0VtcHR5KCkpIHsKLSAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVB
U0VfTE9HX0VSUk9SKFBlcmZvcm1hbmNlTG9nZ2luZywgImRpZEJlY29tZVVucmVzcG9uc2l2ZTog
VGVybWluYXRpbmcgc2VydmljZSB3b3JrZXItb25seSB3ZWIgcHJvY2VzcyBiZWNhdXNlIGl0IGlz
IHVucmVzcG9uc2l2ZSIpOwotICAgICAgICBkaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICAv
LyBJZiB0aGUgd2ViIHByb2Nlc3MgYmVjb21lcyB1bnJlc3BvbnNpdmUgYW5kIG9ubHkgcnVucyBz
ZXJ2aWNlL3NoYXJlZCB3b3JrZXJzLCBraWxsIGl0IG91cnNlbHZlcyBzaW5jZSB0aGVyZSBhcmUg
bm8gbmF0aXZlIGNsaWVudHMgdG8gZG8gaXQuCisgICAgaWYgKGlzUnVubmluZ1dvcmtlcnMoKSAm
JiBtX3BhZ2VNYXAuaXNFbXB0eSgpKSB7CisgICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNF
X0xPR19FUlJPUihQZXJmb3JtYW5jZUxvZ2dpbmcsICJkaWRCZWNvbWVVbnJlc3BvbnNpdmU6IFRl
cm1pbmF0aW5nIHdvcmtlci1vbmx5IHdlYiBwcm9jZXNzIGJlY2F1c2UgaXQgaXMgdW5yZXNwb25z
aXZlIik7CisgICAgICAgIGRpc2FibGVXb3JrZXJzKHsgV29ya2VyVHlwZTo6U2VydmljZVdvcmtl
ciwgV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyIH0pOwogICAgICAgICB0ZXJtaW5hdGUoKTsKICAg
ICB9CiB9CkBAIC0xNjk0LDggKzE2OTUsOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUoY29uc3QgVVJMJiB1cmwpCiAgICAgYXV0byBy
ZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsIH07CiAg
ICAgaWYgKG1fcmVnaXN0cmFibGVEb21haW4gJiYgKm1fcmVnaXN0cmFibGVEb21haW4gIT0gcmVn
aXN0cmFibGVEb21haW4pIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgICAgIGRp
c2FibGVTZXJ2aWNlV29ya2VycygpOworICAgICAgICBkaXNhYmxlV29ya2VycyhXb3JrZXJUeXBl
OjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgorCiAgICAgICAgIC8vIE51bGwgb3V0IHJlZ2lzdHJh
YmxlIGRvbWFpbiBzaW5jZSB0aGlzIHByb2Nlc3MgaGFzIG5vdyBiZWVuIHVzZWQgZm9yIHNldmVy
YWwgZG9tYWlucy4KICAgICAgICAgbV9yZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIHsgfTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTg3Miw1NCArMTg3NCw4NSBA
QCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQoY29u
c3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgcwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwog
ICAgIH0sIDApOwogfQorI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRTZXJ2aWNl
V29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQordm9pZCBXZWJQcm9jZXNz
UHJveHk6OnNldFdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKIHsKLSAg
ICBBU1NFUlQobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pOwotICAgIHNlbmQoTWVzc2FnZXM6
OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2VyQWdlbnQg
fSwgMCk7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIGlmIChtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbikKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OlNldFVzZXJBZ2VudCB7IHVzZXJBZ2VudCB9LCAwKTsKKyNlbmRpZgorICAg
IGlmIChtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlNldFVzZXJBZ2VudCB7IHVz
ZXJBZ2VudCB9LCAwKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVNlcnZpY2VX
b3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQor
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiB7Ci0gICAgQVNTRVJUKG1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDApOworI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpVcGRh
dGVQcmVmZXJlbmNlc1N0b3JlIHsgc3RvcmUgfSwgMCk7CisjZW5kaWYKKyAgICBpZiAobV9zaGFy
ZWRXb3JrZXJJbmZvcm1hdGlvbikKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpVcGRhdGVQcmVmZXJlbmNlc1N0b3JlIHsgc3Rv
cmUgfSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29ya2Vy
UHJvY2Vzc0Fzc2VydGlvbigpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlV29ya2VyUHJv
Y2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlIHdvcmtlclR5cGUpCiB7Ci0gICAgV0VCUFJPQ0VTU1BS
T1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlU2VydmljZVdvcmtlclBy
b2Nlc3NBc3NlcnRpb246Iik7Ci0gICAgQVNTRVJUKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9u
KTsKLSAgICBpZiAoIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQorICAgIGF1dG8mIHdvcmtl
ckluZm9ybWF0aW9uID0gd29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyBt
X3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIDogbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247Cisg
ICAgQVNTRVJUKHdvcmtlckluZm9ybWF0aW9uKTsKKyAgICBpZiAoIXdvcmtlckluZm9ybWF0aW9u
KQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIHNob3VsZFRha2VGb3JlZ3JvdW5kQWN0aXZp
dHkgPSBXVEY6OmFueU9mKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNz
ZXMsIFsmXShhdXRvJiBwcm9jZXNzKSB7CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9H
KFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbjogd29ya2Vy
VHlwZT0le3B1YmxpY31zIiwgd29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIg
PyAic2hhcmVkIiA6ICJzZXJ2aWNlIik7CisKKyAgICAvLyBGSVhNRTogQ2xpZW50cyBkbyBub3Qg
cHJvcGVybHkgZ2V0IHBvcHVsYXRlZCBpbiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIHNvIHdl
IGN1cnJlbnRseSB0YWtlIGFuIGFzc2VydGlvbiBubyBtYXR0ZXIgd2hhdC4KKyAgICBpZiAod29y
a2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpIHsKKyAgICAgICAgaWYgKCFQcm9j
ZXNzVGhyb3R0bGVyOjppc1ZhbGlkRm9yZWdyb3VuZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0aW9u
LT5hY3Rpdml0eSkpCisgICAgICAgICAgICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBt
X3Rocm90dGxlci5mb3JlZ3JvdW5kQWN0aXZpdHkoIldvcmtlciBmb3IgZm9yZWdyb3VuZCB2aWV3
KHMpIl9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGJvb2wgc2hvdWxkVGFrZUZv
cmVncm91bmRBY3Rpdml0eSA9IFdURjo6YW55T2Yod29ya2VySW5mb3JtYXRpb24tPmNsaWVudFBy
b2Nlc3NlcywgWyZdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuICZwcm9jZXNzICE9
IHRoaXMgJiYgISFwcm9jZXNzLm1fZm9yZWdyb3VuZFRva2VuOwogICAgIH0pOwogICAgIGlmIChz
aG91bGRUYWtlRm9yZWdyb3VuZEFjdGl2aXR5KSB7Ci0gICAgICAgIGlmICghUHJvY2Vzc1Rocm90
dGxlcjo6aXNWYWxpZEZvcmVncm91bmRBY3Rpdml0eShtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlv
bi0+YWN0aXZpdHkpKQotICAgICAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFj
dGl2aXR5ID0gbV90aHJvdHRsZXIuZm9yZWdyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBm
b3IgZm9yZWdyb3VuZCB2aWV3KHMpIl9zKTsKKyAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVy
Ojppc1ZhbGlkRm9yZWdyb3VuZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkp
CisgICAgICAgICAgICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5m
b3JlZ3JvdW5kQWN0aXZpdHkoIldvcmtlciBmb3IgZm9yZWdyb3VuZCB2aWV3KHMpIl9zKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGJvb2wgc2hvdWxkVGFrZUJhY2tncm91bmRBY3Rp
dml0eSA9IFdURjo6YW55T2YobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nl
c3NlcywgWyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICBib29sIHNob3VsZFRha2VCYWNrZ3JvdW5k
QWN0aXZpdHkgPSBXVEY6OmFueU9mKHdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMs
IFsmXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiAmcHJvY2VzcyAhPSB0aGlzICYm
ICEhcHJvY2Vzcy5tX2JhY2tncm91bmRUb2tlbjsKICAgICB9KTsKICAgICBpZiAoc2hvdWxkVGFr
ZUJhY2tncm91bmRBY3Rpdml0eSkgewotICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6Omlz
VmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2
aXR5KSkKLSAgICAgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9
IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tn
cm91bmQgdmlldyhzKSJfcyk7CisgICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxp
ZEJhY2tncm91bmRBY3Rpdml0eSh3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQorICAgICAg
ICAgICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuYmFja2dyb3Vu
ZEFjdGl2aXR5KCJXb3JrZXIgZm9yIGJhY2tncm91bmQgdmlldyhzKSJfcyk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBpZiAobV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nl
c3NpbmcpIHsKKyAgICBpZiAod29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2Vy
ICYmIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKSB7CiAgICAgICAgIFdF
QlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlNlcnZpY2UgV29y
a2VyIGZvciBiYWNrZ3JvdW5kIHByb2Nlc3NpbmciKTsKLSAgICAgICAgaWYgKCFQcm9jZXNzVGhy
b3R0bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5KG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uLT5hY3Rpdml0eSkpCi0gICAgICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+
YWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2Vy
IGZvciBiYWNrZ3JvdW5kIHByb2Nlc3NpbmciX3MpOworICAgICAgICBpZiAoIVByb2Nlc3NUaHJv
dHRsZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkod29ya2VySW5mb3JtYXRpb24tPmFjdGl2
aXR5KSkKKyAgICAgICAgICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0
bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tncm91bmQgcHJv
Y2Vzc2luZyJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBudWxscHRyOworICAgIHdvcmtlckluZm9ybWF0aW9u
LT5hY3Rpdml0eSA9IG51bGxwdHI7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxp
c2hTaGFyZWRXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBXRUJQUk9DRVNTUFJPWFlf
UkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dDog
U3RhcnRlZCIpOworICAgIG1hcmtQcm9jZXNzQXNSZWNlbnRseVVzZWQoKTsKKyAgICBzZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFNoYXJlZFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVsdFBh
Z2VHcm91cCgpLnBhZ2VHcm91cElEKCksIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24tPnJlbW90
ZVdvcmtlclBhZ2VQcm94eUlELCBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uLT5yZW1vdGVXb3Jr
ZXJQYWdlSUQsIHN0b3JlLCByZWdpc3RyYWJsZURvbWFpbiwgbV9zaGFyZWRXb3JrZXJJbmZvcm1h
dGlvbi0+aW5pdGlhbGl6YXRpb25EYXRhIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgeworICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICBXRUJQUk9DRVNT
UFJPWFlfUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29u
dGV4dDogRmluaXNoZWQiKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9LCAw
KTsKIH0KIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKwogdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBw
cm94eSkKIHsKICAgICBpZiAoIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQpAQCAtMTkyNyw3
ICsxOTYwLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNs
aWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKIAogICAgIFdFQlBST0NFU1NQUk9Y
WV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAicmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50
UHJvY2VzczogY2xpZW50UHJvY2Vzcz0lcCwgY2xpZW50UElEPSVkIiwgJnByb3h5LCBwcm94eS5w
cm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+Y2xp
ZW50UHJvY2Vzc2VzLmFkZChwcm94eSk7Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NB
c3NlcnRpb24oKTsKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6
OlNlcnZpY2VXb3JrZXIpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dW5yZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCkBAIC0xOTM3
LDcgKzE5NzAsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dW5yZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveAogCiAgICAgV0VCUFJPQ0VTU1BS
T1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJ1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNs
aWVudFByb2Nlc3M6IGNsaWVudFByb2Nlc3M9JXAsIGNsaWVudFBJRD0lZCIsICZwcm94eSwgcHJv
eHkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24t
PmNsaWVudFByb2Nlc3Nlcy5yZW1vdmUocHJveHkpOwotICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3Jr
ZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KIAogYm9vbCBXZWJQcm9jZXNzUHJveHk6Omhhc1Nl
cnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKQEAgLTE5NTcs
NyArMTk5MCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzdGFydFNlcnZpY2VXb3JrZXJCYWNr
Z3JvdW5kUHJvY2Vzc2luZygpCiAKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJv
Y2Vzc1N1c3BlbnNpb24sICJzdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyIp
OwogICAgIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nID0gdHJ1ZTsKLSAg
ICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOworICAgIHVwZGF0ZVdvcmtl
clByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAKIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjplbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoKQpA
QCAtMTk2NywyMyArMjAwMCwzOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5kU2VydmljZVdv
cmtlckJhY2tncm91bmRQcm9jZXNzaW5nKCkKIAogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNF
X0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgImVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vz
c2luZyIpOwogICAgIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nID0gZmFs
c2U7Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKKyAgICB1cGRh
dGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogfQog
I2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmRpc2FibGVTZXJ2aWNlV29ya2VycygpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlzYWJsZVdv
cmtlcnMoT3B0aW9uU2V0PFdvcmtlclR5cGU+IHdvcmtlclR5cGUpCiB7Ci0gICAgaWYgKCFtX3Nl
cnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKKyAgICBBU1NFUlQoIXdvcmtlclR5cGUuaXNFbXB0eSgp
KTsKKworICAgIGJvb2wgZGlkQ2hhbmdlID0gZmFsc2U7CisgICAgaWYgKHdvcmtlclR5cGUuY29u
dGFpbnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikgJiYgbV9zZXJ2aWNlV29ya2VySW5mb3Jt
YXRpb24pIHsKKyAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gPSB7IH07CisgICAg
ICAgIGRpZENoYW5nZSA9IHRydWU7CisgICAgfQorICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5z
KFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlcikgJiYgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbikg
eworICAgICAgICBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uID0geyB9OworICAgICAgICBkaWRD
aGFuZ2UgPSB0cnVlOworICAgIH0KKyAgICBpZiAoIWRpZENoYW5nZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJkaXNh
YmxlU2VydmljZVdvcmtlcnM6Iik7Ci0gICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gPSB7
IH07CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJkaXNhYmxlV29y
a2VyczogRGlzYWJsaW5nIHdvcmtlcnMgKFNoYXJlZFdvcmtlcnM9JWQsIFNlcnZpY2VXb3JrZXJz
PSVkKSIsIHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSwgd29y
a2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSk7CisKICAgICB1cGRh
dGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwogCisgICAgaWYgKCFpc1J1bm5pbmdX
b3JrZXJzKCkpCisgICAgICAgIHByb2Nlc3NQb29sKCkucmVtb3ZlRnJvbVdvcmtlclByb2Nlc3Nl
cygqdGhpcyk7CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgcHJvY2Vzc1Bvb2wo
KS5yZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcygqdGhpcyk7Ci0gICAgc2VuZChNZXNz
YWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNsb3NlIHsgfSwgMCk7CisgICAg
aWYgKHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikpCisgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9zZSB7
IH0sIDApOwogI2VuZGlmCisgICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6
U2hhcmVkV29ya2VyKSkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9zZSB7IH0sIDApOwogCiAgICAgbWF5YmVTaHV0RG93
bigpOwogfQpAQCAtMjAwNCwxMSArMjA1MywxMyBAQCBzdGF0aWMgVmVjdG9yPHN0ZDo6cGFpcjxX
ZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEsIFVSTD4+IGNvbnRlbnRSdWxlTGlzdHNGcgog
fQogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVTZXJ2aWNlV29ya2Vycyhj
b25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJiB1c2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVdvcmtlcnMoV29ya2Vy
VHlwZSB3b3JrZXJUeXBlLCBjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJiB1
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKQogewotICAgIEFTU0VSVCghbV9zZXJ2aWNl
V29ya2VySW5mb3JtYXRpb24pOwotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2
aWNlV29ya2VyLCAiZW5hYmxlU2VydmljZVdvcmtlcnM6Iik7Ci0gICAgbV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb24gPSBSZW1vdGVXb3JrZXJJbmZvcm1hdGlvbiB7CisgICAgV0VCUFJPQ0VTU1BS
T1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJlbmFibGVXb3JrZXJzOiB3b3JrZXJUeXBl
PSV1Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHdvcmtlclR5cGUpKTsKKyAgICBhdXRvJiB3b3Jr
ZXJJbmZvcm1hdGlvbiA9IHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8g
bV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA6IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOwor
ICAgIEFTU0VSVCghd29ya2VySW5mb3JtYXRpb24pOworCisgICAgd29ya2VySW5mb3JtYXRpb24g
PSBSZW1vdGVXb3JrZXJJbmZvcm1hdGlvbiB7CiAgICAgICAgIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXI6OmdlbmVyYXRlKCksCiAgICAgICAgIFBhZ2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLAogICAg
ICAgICBSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgewpAQCAtMjAyMSw5ICsyMDcyLDgg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVNlcnZpY2VXb3JrZXJzKGNvbnN0IFVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXIKICAgICAgICAgeyB9CiAgICAgfTsKICAgICB1cGRh
dGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwotI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOwotI2VuZGlm
CisKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKHdvcmtlclR5cGUpOwogfQogCiB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlU2xlZXBEaXNhYmxlcihTbGVlcERpc2FibGVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgYm9vbCBkaXNwbGF5
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCBmOGI3OTVi
MWQzNDM1MzVlODA5MmUwMWRiYWIzNzlhZjMzNDYxZGJlLi43MGU4OTA1MWNjYmJjN2U5MDQ2YmMx
Yzk5OGI5MGEwYjY4ZWY2NTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaApAQCAtMTM2LDkgKzEzNiwxMyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIGNsYXNzIFNo
b3VsZExhdW5jaFByb2Nlc3MgOiBib29sIHsgTm8sIFllcyB9OwogICAgIGVudW0gY2xhc3MgQ2Fw
dGl2ZVBvcnRhbE1vZGUgOiBib29sIHsgRGlzYWJsZWQsIEVuYWJsZWQgfTsKKyAgICBlbnVtIGNs
YXNzIFdvcmtlclR5cGUgOiB1aW50MzJfdCB7CisgICAgICAgIFNlcnZpY2VXb3JrZXIgPSAxIDw8
IDAsCisgICAgICAgIFNoYXJlZFdvcmtlciA9IDEgPDwgMQorICAgIH07CiAKICAgICBzdGF0aWMg
UmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sJiwgV2Vic2l0ZURhdGFT
dG9yZSosIENhcHRpdmVQb3J0YWxNb2RlLCBJc1ByZXdhcm1lZCwgV2ViQ29yZTo6Q3Jvc3NPcmln
aW5Nb2RlID0gV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQsIFNob3VsZExhdW5jaFBy
b2Nlc3MgPSBTaG91bGRMYXVuY2hQcm9jZXNzOjpZZXMpOwotICAgIHN0YXRpYyBSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiBjcmVhdGVGb3JTZXJ2aWNlV29ya2VycyhXZWJQcm9jZXNzUG9vbCYsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKKyAgICBzdGF0aWMg
UmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlRm9yV29ya2VycyhXb3JrZXJUeXBlLCBXZWJQcm9j
ZXNzUG9vbCYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdlYnNpdGVEYXRhU3RvcmUm
KTsKIAogICAgIH5XZWJQcm9jZXNzUHJveHkoKTsKIApAQCAtMTYxLDggKzE2NSw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldElzSW5Qcm9jZXNzQ2FjaGUoYm9vbCwgV2lsbFNodXREb3duID0gV2ls
bFNodXREb3duOjpObyk7CiAgICAgYm9vbCBpc0luUHJvY2Vzc0NhY2hlKCkgY29uc3QgeyByZXR1
cm4gbV9pc0luUHJvY2Vzc0NhY2hlOyB9CiAKLSAgICB2b2lkIGVuYWJsZVNlcnZpY2VXb3JrZXJz
KGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImKTsKLSAgICB2b2lkIGRpc2Fi
bGVTZXJ2aWNlV29ya2VycygpOworICAgIHZvaWQgZW5hYmxlV29ya2VycyhXb3JrZXJUeXBlLCBj
b25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJik7CisgICAgdm9pZCBkaXNhYmxl
V29ya2VycyhPcHRpb25TZXQ8V29ya2VyVHlwZT4pOwogCiAgICAgV2Vic2l0ZURhdGFTdG9yZSYg
d2Vic2l0ZURhdGFTdG9yZSgpIGNvbnN0IHsgQVNTRVJUKG1fd2Vic2l0ZURhdGFTdG9yZSk7IHJl
dHVybiAqbV93ZWJzaXRlRGF0YVN0b3JlOyB9CiAgICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3Jl
KFdlYnNpdGVEYXRhU3RvcmUmKTsKQEAgLTE5NCw2ICsxOTgsOSBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkgY29uc3QgeyByZXR1cm4gISFtX3NlcnZpY2VX
b3JrZXJJbmZvcm1hdGlvbjsgfQogICAgIGJvb2wgaXNTdGFuZGFsb25lU2VydmljZVdvcmtlclBy
b2Nlc3MoKSBjb25zdCB7IHJldHVybiBpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpICYmICFwYWdl
Q291bnQoKTsgfQorICAgIGJvb2wgaXNSdW5uaW5nU2hhcmVkV29ya2VycygpIGNvbnN0IHsgcmV0
dXJuICEhbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbjsgfQorICAgIGJvb2wgaXNTdGFuZGFsb25l
U2hhcmVkV29ya2VyUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIGlzUnVubmluZ1NoYXJlZFdvcmtl
cnMoKSAmJiAhcGFnZUNvdW50KCk7IH0KKyAgICBib29sIGlzUnVubmluZ1dvcmtlcnMoKSBjb25z
dCB7IHJldHVybiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIHx8IG1fc2VydmljZVdvcmtlcklu
Zm9ybWF0aW9uOyB9CiAKICAgICBib29sIGlzRHVtbXlQcm9jZXNzUHJveHkoKSBjb25zdDsKIApA
QCAtMzU5LDEyICszNjYsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVBdWRpYmxlTWVk
aWFBc3NlcnRpb25zKCk7CiAKKyAgICB2b2lkIHNldFdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJp
bmcmKTsKKyAgICB2b2lkIHVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYpOworICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dChj
b25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgdXBkYXRlV29ya2Vy
UHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlKTsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAgICAgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJl
bmNlc1N0b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9p
ZCBzZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgdXBk
YXRlU2VydmljZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZSYpOwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHBhZ2VQcm94eUlEKSB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiAm
JiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+cmVtb3RlV29ya2VyUGFnZVByb3h5SUQgPT0g
cGFnZVByb3h5SUQ7IH0KLSAgICB2b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0
aW9uKCk7CiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlBy
b2Nlc3NQcm94eSYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9j
ZXNzKFdlYlByb2Nlc3NQcm94eSYpOwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlckZvcmVncm91
bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdDsKQEAgLTY1Niw2ICs2NjQsNyBAQCBwcml2YXRl
OgogICAgICAgICBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+IGNsaWVudFByb2Nlc3NlczsK
ICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8UmVtb3RlV29ya2VySW5mb3JtYXRpb24+IG1fc2Vy
dmljZVdvcmtlckluZm9ybWF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8UmVtb3RlV29ya2VySW5m
b3JtYXRpb24+IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb247CiAgICAgYm9vbCBtX2hhc1NlcnZp
Y2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyB7IGZhbHNlIH07CiAKICAgICBIYXNoTWFwPFdl
YkNvcmU6OlNsZWVwRGlzYWJsZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
U2xlZXBEaXNhYmxlcj4+IG1fc2xlZXBEaXNhYmxlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwYzdjMzFiYzU1N2I1NWQ1MTcwNWZj
MzlkN2U2NzljOTRjNmEwYWYzLi4xNWU4MTBhNGM5ZjEyZWI5MmJiMmZkMTRkMzk1MGMzMTUxNDQ0
MjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTg4MCw4ICs4ODAsMTAgQEAKIAkJNDYxNEYxMzIyNURFRDg3NTAwNzAwNkU3IC8qIEdQ
VVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZBQzUzMjQyNURFRDgxRTAwM0I1N0VDIC8qIEdQVVByb2Nl
c3NDb25uZWN0aW9uUGFyYW1ldGVycy5oICovOyB9OwogCQk0NjFDQ0NBNTIzMTQ4NUE3MDBCNjU5
QjkgLyogVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzMjM2ODUyMzE0ODMzRjAwQTQ4RkE3IC8qIFVJUmVtb3Rl
T2JqZWN0UmVnaXN0cnkuaCAqLzsgfTsKIAkJNDYxQ0NDQTYyMzE0ODVBQTAwQjY1OUI5IC8qIFdl
YlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjMyMzY4MzIzMTQ4MUVGMDBBNDhGQTcgLyogV2ViUmVtb3RlT2JqZWN0
UmVnaXN0cnkuaCAqLzsgfTsKKwkJNDYxRTFCRjIyNzlBMDExNjAwNkFGNTNCIC8qIFdlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYxRTFCRUYyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICovOyB9OwogCQk0NjNGRDQ4MDFF
Qjk0NTk2MDBBMjk4MkMgLyogV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0ZENDdGMUVCOTQ1ODQwMEEy
OTgyQyAvKiBXS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2M0ZENDgyMUVCOTRFQzAwMEEyOTgyQyAv
KiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0ZENDgxMUVCOTRFQUQwMEEyOTgyQyAvKiBQcm9jZXNzVGVy
bWluYXRpb25SZWFzb24uaCAqLzsgfTsKKwkJNDY1NkY3QkQyN0FDQUE4RDAwQ0IzRDdDIC8qIFdl
YlNoYXJlZFdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY1NkY3QkMyN0FDQUE4MTAwQ0IzRDdDIC8qIFdlYlNoYXJlZFdvcmtlci5oICovOyB9
OwogCQk0NjU5RjI1RjI3NUZGNkIyMDBCQkIzNjkgLyogQ2FwdGl2ZVBvcnRhbE1vZGVPYnNlcnZl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1OUYy
NUUyNzVGRjZCMjAwQkJCMzY5IC8qIENhcHRpdmVQb3J0YWxNb2RlT2JzZXJ2ZXIuaCAqLzsgfTsK
IAkJNDY1RjRFMDYyMzBCMkU5NTAwM0NFREI3IC8qIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjVGNEUw
NTIzMEIyRTdDMDAzQ0VEQjcgLyogU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIuaCAqLzsgfTsK
IAkJNDY1RkE3MjYyNzU3RDkzRDAwNzIzNjJCIC8qIFdlYkxvY2tSZWdpc3RyeVByb3h5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjVGQTcyMzI3NTdE
OTE4MDA3MjM2MkIgLyogV2ViTG9ja1JlZ2lzdHJ5UHJveHkuaCAqLzsgfTsKQEAgLTkwMCwxMCAr
OTAyLDEzIEBACiAJCTQ2QzM5MjI5MjMxNkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVu
dGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NkMzOTIyODIzMTZFQzREMDA4RUVEOUIgLyogV2ViUGFnZVByb3h5SWRlbnRpZmllci5oICovOyB9
OwogCQk0NkM1QjdDRTI3QUFEREQzMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJD
bGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
QzVCN0NEMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJGcmFtZUxvYWRlckNsaWVudC5o
ICovOyB9OwogCQk0NkM1QjdDRjI3QUFEREQ2MDAwQzVCNDcgLyogUmVtb3RlV29ya2VyTGliV2Vi
UlRDUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2QzVCN0NCMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92
aWRlci5oICovOyB9OworCQk0NkM5MTZBQTI3OTlEMEEyMDAxQTRFN0MgLyogV2ViU2hhcmVkV29y
a2VyU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkM5MTZBOTI3OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggKi87
IH07CiAJCTQ2Q0UzQjExMjNEOEM4NDkwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3Vu
dHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Q0Uz
QjEwMjNEOEM4M0QwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCAqLzsgfTsK
KwkJNDZENDhGQ0UyNzk5RDdFMTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2RDQ4RkNEMjc5OUQ3REUwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2REYwNjNDMUYzOTA1RjgwMDE5ODBCQiAv
KiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REYwNjNBMUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXIuaCAqLzsgfTsKIAkJNDZFRTI4NDkyNjlFMDRBQzAwREQ0OEFC
IC8qIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFRTI4NDgyNjlFMDQ5QjAwREQ0OEFCIC8qIFdlYkJy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oICovOyB9OwogCQk0NkVFMjg0RDI2OUUwNTI1MDBERDQ4
QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFRTI4NEMyNjlFMDUxNzAwREQ0OEFCIC8q
IE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCAqLzsgfTsKKwkJNDZFRTNFOEIyNzYz
RkQyRjAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODM4NjY3Mjc2M0ZBQjEw
MENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2
RjM4RThDMjQxNkU2NzMwMDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZGMzhFOEIyNDE2RTY2
RDAwNTkzNzVBIC8qIFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmggKi87IH07CiAJCTQ2RjlCMjYz
MjM1MjZFRjMwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjlCMjYyMjM1MjZFRDAwMDZG
RTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCAqLzsgfTsKIAkJNDkzMTAyQkQyNjgz
RjNEMDAwMkJCODg1IC8qIEFwcFByaXZhY3lSZXBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5MzEwMkJDMjY4M0YzQTUwMDJCQjg4NSAvKiBBcHBQ
cml2YWN5UmVwb3J0LmggKi87IH07CkBAIC00MjIzLDYgKzQyMjgsOSBAQAogCQk0NjA4ODlGRjI2
MUZBOEE5MDBFMjUwMEQgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVy
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0
ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MEY0ODhEMUY5OTZGNkMwMENG
NEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJL
aXQvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk0NjBGNDg4RTFGOTk2RjZDMDBDRjRC
ODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3Nh
Z2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owor
CQk0NjFFMUJFQzI3OUEwMTBFMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ2MUUxQkVGMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MUUxQkYwMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjIxMDdENzFGMzhEQkQzMDBE
RDc4MTAgLyogUGluZ0xvYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUGluZ0xvYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjMyMzY4MzIz
MTQ4MUVGMDBBNDhGQTcgLyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDYzMjM2ODQyMzE0ODI1QzAwQTQ4RkE3IC8qIFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyMzMsNiArNDI0MSw5IEBACiAJCTQ2M0ZENDgxMUVC
OTRFQUQwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NTFFQ0U2MjIxNzhBODUwMDY3RUI5NSAvKiBXZWJQcm9j
ZXNzQ2FjaGVDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYlByb2Nlc3NDYWNoZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjUyNTBFNTFFQ0Y1MkNEMDAyMDI1Q0IgLyogV2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYktpdDJJbml0aWFsaXplQ29j
b2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2NTZGN0JBMjdBQ0FBODAwMENC
M0Q3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2NTZGN0JCMjdBQ0FBODEwMENC
M0Q3QyAvKiBXZWJTaGFyZWRXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVk
V29ya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY1NkY3QkMyN0FDQUE4
MTAwQ0IzRDdDIC8qIFdlYlNoYXJlZFdvcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRX
b3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY1OUYyNUUyNzVGRjZCMjAw
QkJCMzY5IC8qIENhcHRpdmVQb3J0YWxNb2RlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FwdGl2ZVBvcnRhbE1vZGVPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NjVGNEUwMjIzMDc1OUQ1MDAzQ0VEQjcgLyogU3RvcmFnZUFyZWFJ
ZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VBcmVhSWRlbnRpZmllci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjVGNEUwMzIzMDc2MDRFMDAzQ0VEQjcgLyogU3Rv
cmFnZUFyZWFJbXBsSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlQXJlYUltcGxJ
ZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MjU0LDggKzQyNjUs
MTEgQEAKIAkJNDY4MDlBN0IyM0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvb2tpZUNhY2hlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzU2OUEyMUU4MUNDNzAwNkUyN0EzIC8q
IFByb3Zpc2lvbmFsUGFnZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFByb3Zpc2lvbmFsUGFnZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
ODM1NjlCMjFFODFDQzcwMDZFMjdBMyAvKiBQcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm92aXNpb25hbFBhZ2VQcm94eS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2ODM4NjY3Mjc2M0ZBQjEwMENGOTE4MiAv
KiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDY4Mzg2NjgyNzYzRkFCMTAwQ0Y5MTgyIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODlCOTBGMjc1NkQxNDMw
MDA3QzY1MSAvKiBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3Rl
V2ViTG9ja1JlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODlCOTEw
Mjc1NkQxNDMwMDA3QzY1MSAvKiBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDY5NDNEQ0IyNzYzRjgzNDAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5REU4MDIy
NzNFQ0M1RDAwOTMwMjc2IC8qIFByb2Nlc3NMYXVuY2hlckNvY29hLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJvY2Vzc0xhdW5jaGVyQ29jb2EubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QTJCNjA2MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNr
Z3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZBMkI2MDcxRTU2NzVBMjAwQzNERURB
IC8qIEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyNzQsNyArNDI4OCwxMSBAQAogCQk0
NkM1QjdDQjI3QUFEREJFMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDNUI3Q0MyN0FBRERCRTAwMEM1QjQ3IC8qIFJlbW90
ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVdv
cmtlckZyYW1lTG9hZGVyQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDZDNUI3Q0QyN0FBRERCRTAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2QzkxNkE4Mjc5OUQwOUQwMDFBNEU3QyAvKiBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2Vy
U2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZDOTE2QTkyNzk5RDA5
RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDRTNC
MTAyM0Q4QzgzRDAwMTZBOTZBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZENDhGQ0MyNzk5RDdERDAwN0QyMDE0IC8qIFdl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2RDQ4RkNEMjc5OUQ3REUwMDdEMjAxNCAvKiBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDZERjA2MzkxRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJl
ZmxpZ2h0Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBO
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkU5NzYwQTI3NTdG
NkM5MDBBQ0REMzcgLyogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdl
cy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyODQsNiArNDMwMiw3IEBACiAJ
CTQ2RUUyODRBMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lz
dHJ5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5ldHdvcmtCcm9hZGNhc3RD
aGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2RUUyODRCMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lz
dHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtCcm9h
ZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NkVFMjg0QzI2OUUwNTE3MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3Ry
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2RUUzRThBMjc2
M0ZEMkEwMDYwQzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RjM4RThCMjQxNkU2NkQwMDU5Mzc1QSAvKiBS
dW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NkY5QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRy
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTMxMDJCQzI2ODNGM0E1MDAyQkI4
ODUgLyogQXBwUHJpdmFjeVJlcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBQcml2YWN5UmVwb3J0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05Mjk1LDYgKzkzMTQsMjMgQEAKIAkJ
CXBhdGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTQ2ODM4
NjY1Mjc2M0ZBMUIwMENGOTE4MiAvKiBTaGFyZWRXb3JrZXIgKi8gPSB7CisJCQlpc2EgPSBQQlhH
cm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTQ2NTZGN0JCMjdBQ0FBODEwMENCM0Q3QyAvKiBX
ZWJTaGFyZWRXb3JrZXIuY3BwICovLAorCQkJCTQ2NTZGN0JDMjdBQ0FBODEwMENCM0Q3QyAvKiBX
ZWJTaGFyZWRXb3JrZXIuaCAqLywKKwkJCQk0NkM5MTZBODI3OTlEMDlEMDAxQTRFN0MgLyogV2Vi
U2hhcmVkV29ya2VyU2VydmVyLmNwcCAqLywKKwkJCQk0NkM5MTZBOTI3OTlEMDlEMDAxQTRFN0Mg
LyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggKi8sCisJCQkJNDY4Mzg2NjgyNzYzRkFCMTAwQ0Y5
MTgyIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwICovLAorCQkJCTQ2ODM4
NjY3Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgg
Ki8sCisJCQkJNDZFRTNFOEEyNzYzRkQyQTAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCisJCQkJNDZENDhGQ0MyNzk5RDdERDAwN0QyMDE0
IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwICovLAorCQkJ
CTQ2RDQ4RkNEMjc5OUQ3REUwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmggKi8sCisJCQkJNDY1NkY3QkEyN0FDQUE4MDAwQ0IzRDdDIC8qIFdlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCisJCQkp
OworCQkJcGF0aCA9IFNoYXJlZFdvcmtlcjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CiAJCTQ2OURFODAxMjczRUNDNUQwMDkzMDI3NiAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC05MzU5LDYgKzkzOTUsNyBAQAogCQkJCTUx
NDUyNkVBMjcxRTE2MTAwMDA0NjdCNiAvKiBOb3RpZmljYXRpb25zICovLAogCQkJCTVDMDFCQzM1
MjZENDZBRDQwMEZFQjQyRiAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAqLywKIAkJCQk5M0JB
MDREOTIxNTFBRENEMDA3RjQ1NUYgLyogU2VydmljZVdvcmtlciAqLywKKwkJCQk0NjgzODY2NTI3
NjNGQTFCMDBDRjkxODIgLyogU2hhcmVkV29ya2VyICovLAogCQkJCTkzMDg1REMyMjZFMUJCNjUw
MDBFQzZBNyAvKiBzdG9yYWdlICovLAogCQkJCTQxMzA3NTk3MURFODRFRDcwMDM5RUM2OSAvKiB3
ZWJydGMgKi8sCiAJCQkJOTNCMjYxNDMyMjdEMTQzMTAwQjk3QTc2IC8qIFdlYlN0b3JhZ2UgKi8s
CkBAIC05NDYxLDggKzk0OTgsMTIgQEAKIAkJCQk0MTlBQ0Y5QjFGOTgxRDI2MDA5RjFBODMgLyog
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oICovLAogCQkJCTUxQkVCNjI5MUYzQTVB
Q0QwMDUwMjlCOSAvKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwICovLAogCQkJCTUxQkVC
NjJBMUYzQTVBQ0QwMDUwMjlCOSAvKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCAqLywKKwkJ
CQk0NjFFMUJFQzI3OUEwMTBFMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk0NjFFMUJFRjI3OUEwMTBGMDA2QUY1M0IgLyogV2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggKi8sCisJCQkJNDYxRTFCRjAy
NzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbiAqLywKIAkJCQk0NjY4QTBCQjI3QUI2MDQwMDBDNzIwQkMgLyogV2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJNDY2OEEwQjgyN0FCNjAzRjAw
QzcyMEJDIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAqLywKKwkJCQk0Njk0
M0RDQjI3NjNGODM0MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5t
ZXNzYWdlcy5pbiAqLywKIAkJCQk0NjY4QTBCOTI3QUI2MDNGMDBDNzIwQkMgLyogV2ViU2hhcmVk
V29ya2VyUHJvdmlkZXIuY3BwICovLAogCQkJCTQ2NjhBMEJBMjdBQjYwNDAwMEM3MjBCQyAvKiBX
ZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oICovLAogCQkJCTUxN0E1MzAzMUY0NzkzQjIwMERDREMw
QSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwICovLApAQCAtMTM2NTgsOCArMTM2OTksMTMg
QEAKIAkJCQk3QzM2MUQ3MzE5MjdGQTM2MDAzNkE1OUQgLyogV2ViU2NyaXB0TWVzc2FnZUhhbmRs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUQzQjk0ODQ5MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJT
ZWFyY2hQb3B1cE1lbnUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQkVCNjJDMUYzQTVBRDcwMDUw
MjlCOSAvKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2
NTZGN0JEMjdBQ0FBOEQwMENCM0Q3QyAvKiBXZWJTaGFyZWRXb3JrZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTQ2MUUxQkYyMjc5QTAxMTYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2NjhBMEJEMjdBQjYwNTYw
MEM3MjBCQyAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0NjY4QTBCQzI3QUI2MDUwMDBDNzIwQkMgLyogV2ViU2hhcmVkV29ya2VyUHJvdmlk
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2QzkxNkFBMjc5OUQwQTIwMDFBNEU3QyAvKiBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2RUUzRThCMjc2M0ZEMkYw
MDYwQzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAq
LywKKwkJCQk0NkQ0OEZDRTI3OTlEN0UxMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM4REQzODAxRkU0NTIx
NjAwRjJBNTU2IC8qIFdlYnNpdGVBdXRvcGxheVBvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUE0ODMyRDcxQTlDREY5NjAwOEI0REZFIC8qIFdlYnNpdGVEYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTQ4MzJEMTFBOUJEQzJGMDA4QjRERkUgLyogV2Vic2l0ZURhdGFSZWNvcmQuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggODFkZDA0MTFhMjM5NmJj
NWUyMzQ1NWI5ZjViNTllNzM0NjFlZTk2Zi4uYmIzNTQ3ZjQ2YWQ0YjhhNWMyMDUyZDA4MmNhNjc1
NGIxMjkxZmY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC01Nyw3ICs1NywxMCBA
QAogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAi
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNl
cnZpY2VXb3JrZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25N
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIKICNpbmNsdWRlICJXZWJT
b2NrZXRDaGFubmVsTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRTdHJlYW0uaCIKQEAg
LTE3NCw2ICsxNzcsMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVAKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICNlbmRpZgorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpKSB7CisgICAgICAgIHNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKS5kaWRSZWNlaXZl
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7
CisgICAgICAgIEFTU0VSVChTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCku
Y29ubmVjdGlvbigpKTsKKyAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
biA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkp
CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24mPigqY29udGV4dE1hbmFnZXJDb25uZWN0aW9uKS5kaWRSZWNlaXZlTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogI2lmIEVOQUJM
RShBUFBMRV9QQVlfUkVNT1RFX1VJKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggZWRjMDQ5M2JkM2VkZGZhMTY5MDBi
ZGI4NTkxNGM2NGM1OTc4OTE4MC4uMGI2NDgwYTYxZDM2Y2ZlMDQ3OWI0Y2Y0MDFkNDVkZjQzODMw
YjM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgZW51bSBjbGFz
cyBIVFRQQ29va2llQWNjZXB0UG9saWN5IDogdWludDhfdDsKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uOwogY2xhc3MgV2ViU1dDbGllbnRDb25uZWN0aW9uOwogY2xhc3MgV2Vi
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQzMDY0NzY2NWZhNjUw
OGE1ZWM3MDA2NzNiYmI3NDQyZDNiNjhmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHAKQEAgLTAsMCArMSwxMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgi
CisKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiUmVtb3RlV29ya2Vy
RnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92
aWRlci5oIgorI2luY2x1ZGUgIldlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIgorI2luY2x1
ZGUgIldlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250
ZW50UnVsZUxpc3REYXRhLmgiCisjaW5jbHVkZSAiV2ViRGF0YWJhc2VQcm92aWRlci5oIgorI2lu
Y2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc0tleXMuaCIKKyNpbmNs
dWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0UHJvdmlkZXIuaCIK
KyNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0VtcHR5Q2xpZW50cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZUNvbmZpZ3VyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVXNlckFnZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9Xb3JrZXJGZXRjaFJlc3VsdC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcywgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwg
UGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3
ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJiBwcmVmZXJlbmNlc1N0b3JlLCBSZW1vdGVXb3JrZXJJbml0aWFsaXph
dGlvbkRhdGEmJiBpbml0aWFsaXphdGlvbkRhdGEpCisgICAgOiBtX2Nvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKFdURk1vdmUoY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpKQorICAgICwgbV9y
ZWdpc3RyYWJsZURvbWFpbihXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAsIG1fcGFn
ZUdyb3VwSUQocGFnZUdyb3VwSUQpCisgICAgLCBtX3dlYlBhZ2VQcm94eUlEKHdlYlBhZ2VQcm94
eUlEKQorICAgICwgbV9wYWdlSUQocGFnZUlEKQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICwg
bV91c2VyQWdlbnQoV2ViQ29yZTo6c3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1l
KHsgfSkpCisjZWxzZQorICAgICwgbV91c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkKKyNl
bmRpZgorICAgICwgbV91c2VyQ29udGVudENvbnRyb2xsZXIoV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpnZXRPckNyZWF0ZShpbml0aWFsaXphdGlvbkRhdGEudXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllcikpCit7CisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBtX3Vz
ZXJDb250ZW50Q29udHJvbGxlci0+YWRkQ29udGVudFJ1bGVMaXN0cyhXVEZNb3ZlKGluaXRpYWxp
emF0aW9uRGF0YS5jb250ZW50UnVsZUxpc3RzKSk7CisjZW5kaWYKKworICAgIHVwZGF0ZVByZWZl
cmVuY2VzU3RvcmUocHJlZmVyZW5jZXNTdG9yZSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZGlzYWJsZVRlcm1pbmF0aW9uKCk7Cit9CisKK1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbigp
ID0gZGVmYXVsdDsKKwordm9pZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OmVzdGFibGlzaENvbm5lY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVz
dGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uIHsgbV93ZWJQYWdlUHJveHlJRCwg
bV9yZWdpc3RyYWJsZURvbWFpbiB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgMCk7Cit9
CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0RXhj
ZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFy
ZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAg
IG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVj
dCB7IHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCBzb3VyY2VVUkwgfSwgMCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjp1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQoreworICAgIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2Vz
R2VuZXJhdGVkKHN0b3JlKTsKKyAgICBtX3ByZWZlcmVuY2VzU3RvcmUgPSBzdG9yZTsKK30KKwor
dm9pZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmxhdW5jaFNoYXJl
ZFdvcmtlcihXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdv
cmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgVVJMJiYgdXJsLCBXZWJDb3Jl
OjpXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucywgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1
bHQmJiB3b3JrZXJGZXRjaFJlc3VsdCkKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIs
ICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmxhdW5jaFNoYXJlZFdv
cmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50
aWZpZXIudG9VSW50NjQoKSk7CisgICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9IFdlYkNvcmU6
OnBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cyhXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5zZXNzaW9uSUQoKSk7CisKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5kYXRhYmFzZVByb3ZpZGVy
ID0gV2ViRGF0YWJhc2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUobV9wYWdlR3JvdXBJRCk7CisgICAg
cGFnZUNvbmZpZ3VyYXRpb24uc29ja2V0UHJvdmlkZXIgPSBXZWJTb2NrZXRQcm92aWRlcjo6Y3Jl
YXRlKG1fd2ViUGFnZVByb3h5SUQpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLmJyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmJyb2FkY2FzdENoYW5uZWxS
ZWdpc3RyeSgpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLndlYkxvY2tSZWdpc3RyeSA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvY2tSZWdpc3RyeSgpOworICAgIHBhZ2VDb25maWd1cmF0
aW9uLnVzZXJDb250ZW50UHJvdmlkZXIgPSBtX3VzZXJDb250ZW50Q29udHJvbGxlcjsKKyNpZiBF
TkFCTEUoV0VCX1JUQykKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5saWJXZWJSVENQcm92aWRlciA9
IG1ha2VVbmlxdWVSZWY8UmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXI+KCk7CisjZW5kaWYK
KworICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSA9IG1ha2VV
bmlxdWVSZWY8UmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ+KG1fd2ViUGFnZVByb3h5SUQs
IG1fcGFnZUlELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI6OmdlbmVyYXRlKCksIG1fdXNlckFn
ZW50KTsKKworICAgIGF1dG8gcGFnZSA9IG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6UGFnZT4oV1RG
TW92ZShwYWdlQ29uZmlndXJhdGlvbikpOworICAgIGlmIChtX3ByZWZlcmVuY2VzU3RvcmUpIHsK
KyAgICAgICAgV2ViUGFnZTo6dXBkYXRlU2V0dGluZ3NHZW5lcmF0ZWQoKm1fcHJlZmVyZW5jZXNT
dG9yZSwgcGFnZS0+c2V0dGluZ3MoKSk7CisgICAgICAgIHBhZ2UtPnNldHRpbmdzKCkuc2V0U3Rv
cmFnZUJsb2NraW5nUG9saWN5KHN0YXRpY19jYXN0PFdlYkNvcmU6OlN0b3JhZ2VCbG9ja2luZ1Bv
bGljeT4obV9wcmVmZXJlbmNlc1N0b3JlLT5nZXRVSW50MzJWYWx1ZUZvcktleShXZWJQcmVmZXJl
bmNlc0tleTo6c3RvcmFnZUJsb2NraW5nUG9saWN5S2V5KCkpKSk7CisgICAgfQorICAgIHBhZ2Ut
PnNldHVwRm9yUmVtb3RlV29ya2VyKHVybCwgb3JpZ2luLnRvcE9yaWdpbiwgd29ya2VyRmV0Y2hS
ZXN1bHQucmVmZXJyZXJQb2xpY3kpOworICAgIGF1dG8gc2hhcmVkV29ya2VyVGhyZWFkUHJveHkg
PSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlKFdURk1vdmUocGFnZSks
IHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIG9yaWdpbiwgdXJsLCBXVEZNb3ZlKHdvcmtlckZldGNo
UmVzdWx0KSwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSwgbV91c2VyQWdlbnQsIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFnZVByb3ZpZGVyKCkpOworCisgICAgV2ViQ29yZTo6U2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnJlZ2lzdGVyU2hhcmVkV29ya2Vy
VGhyZWFkKFdURk1vdmUoc2hhcmVkV29ya2VyVGhyZWFkUHJveHkpKTsKK30KKwordm9pZCBXZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmNsb3NlKCkKK3sKKyAgICBSRUxF
QVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OmNsb3NlOiBTaGFyZWQgd29ya2VyIHByb2Nlc3MgaXMgcmVxdWVzdGVkIHRvIHN0b3Ag
YWxsIHNoYXJlZCB3b3JrZXJzIik7CisgICAgc2V0QXNDbG9zZWQoKTsKKworICAgIG1fY29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpDbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uIHsgfSwgMCk7Cisg
ICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnN0b3BB
bGxTaGFyZWRXb3JrZXJzKCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5hYmxlVGVy
bWluYXRpb24oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhY2ZkMGM0MTI5
MWQ1N2U3NGIwNmZlZGM2OTViZmFmMTA5NWRiYmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uaApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiSWRlbnRpZmllclR5cGVzLmgiCisj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRp
Zmllci5oIgorI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFp
bi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworc3RydWN0IENsaWVudE9yaWdpbjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsK
K3N0cnVjdCBXb3JrZXJPcHRpb25zOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOworc3RydWN0IFJlbW90ZVdvcmtlckluaXRpYWxpemF0
aW9uRGF0YTsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpDb25u
ZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIFdlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYm
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQYWdlR3JvdXBJZGVudGlmaWVyLCBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYsIFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmKTsKKyAgICB+
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKCk7CisKKyAgICB2b2lkIGVz
dGFibGlzaENvbm5lY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKKyAg
ICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSBmaW5hbDsKKworICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmlu
YWw7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDIE1lc3NhZ2VzLgorICAgIHZvaWQgbGF1bmNoU2hh
cmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmLCBXZWJDb3JlOjpXb3Jr
ZXJGZXRjaFJlc3VsdCYmKTsKKyAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZSYpOworICAgIHZvaWQgc2V0VXNlckFnZW50KFN0cmluZyYmIHVz
ZXJBZ2VudCkgeyBtX3VzZXJBZ2VudCA9IFdURk1vdmUodXNlckFnZW50KTsgfQorICAgIHZvaWQg
Y2xvc2UoKTsKKworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3M7CisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURv
bWFpbjsKKyAgICBQYWdlR3JvdXBJZGVudGlmaWVyIG1fcGFnZUdyb3VwSUQ7CisgICAgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciBtX3dlYlBhZ2VQcm94eUlEOworICAgIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIG1fcGFnZUlEOworICAgIFN0cmluZyBtX3VzZXJBZ2VudDsKKyAgICBSZWY8V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyPiBtX3VzZXJDb250ZW50Q29udHJvbGxlcjsKKyAgICBzdGQ6Om9w
dGlvbmFsPFdlYlByZWZlcmVuY2VzU3RvcmU+IG1fcHJlZmVyZW5jZXNTdG9yZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4MmE0YWRhNTNm
ZDRiZWIxYzVlZWUxZjdhYmE2MjJmM2ZkNWIxZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMCBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CisgICAgTGF1bmNoU2hhcmVkV29ya2Vy
KHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFVSTCB1cmwsIHN0cnVjdCBXZWJD
b3JlOjpXb3JrZXJPcHRpb25zIHdvcmtlck9wdGlvbnMsIHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJG
ZXRjaFJlc3VsdCB3b3JrZXJGZXRjaFJlc3VsdCkKKyAgICBQb3N0Q29ubmVjdEV2ZW50KFdlYkNv
cmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgV2ViQ29y
ZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBwb3J0LCBTdHJpbmcgc291cmNlT3JpZ2luKQorICAg
IFRlcm1pbmF0ZVNoYXJlZFdvcmtlcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNo
YXJlZFdvcmtlcklkZW50aWZpZXIpCisgICAgVXBkYXRlUHJlZmVyZW5jZXNTdG9yZShzdHJ1Y3Qg
V2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlKQorICAgIFNldFVzZXJBZ2VudChTdHJp
bmcgdXNlckFnZW50KQorICAgIENsb3NlKCkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbi5jcHAKaW5kZXggNWM1ZmRhYTYwMDU3OTY3YzY1YzAzMmYwNDI1ZmQ5MTU5MzMxOGYz
Yi4uNWRkYmRlNDRhOTZiMTVjYzM2NzE5MGQ4YWNkMTc3MzEzMjk0NWJkZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKQEAgLTI2LDIzICsyNiw0NSBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24u
aCIKIAorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9TaGFy
ZWRXb3JrZXJNYW5hZ2VyLmg+CisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyS2V5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9X
b3JrZXJPcHRpb25zLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCkgPSBkZWZh
dWx0OworI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xP
RyhTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQgIl0g
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsIFdlYkNvcmU6OlBy
b2Nlc3M6OmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQorCitXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
KCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJXZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uOiIpOworfQorCitXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjp+V2Vi
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNF
X0xPRygifldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Iik7Cit9CiAKIElQQzo6Q29u
bmVjdGlvbiogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24oKSBjb25zdAogewogICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwogfQogCi12b2lk
IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnJlcXVlc3RTaGFyZWRXb3JrZXIoY29u
c3QgVVJMJiB1cmwsIFdlYkNvcmU6OlNoYXJlZFdvcmtlciYgc2hhcmVkV29ya2VyLCBXZWJDb3Jl
OjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgcG9ydCwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYm
IHdvcmtlck9wdGlvbnMpCit2b2lkIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnJl
cXVlc3RTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBzaGFyZWRX
b3JrZXJLZXksIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBv
cnQsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMpCiB7Ci0gICAg
Ly8gRklYTUU6IFNob3VsZCBzZW5kIElQQyB0byB0aGUgbmV0d29yayBwcm9jZXNzLgotICAgIFdl
YkNvcmU6OlNoYXJlZFdvcmtlck1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3QodXJsLCBzaGFy
ZWRXb3JrZXIsIFdURk1vdmUocG9ydCksIFdURk1vdmUod29ya2VyT3B0aW9ucykpOworICAgIENP
Tk5FQ1RJT05fUkVMRUFTRV9MT0coInJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIu
dG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpSZXF1ZXN0U2hhcmVkV29ya2VyIHsgc2hhcmVkV29ya2Vy
S2V5LCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXVEZNb3ZlKHBvcnQpLCB3b3JrZXJP
cHRpb25zIH0pOwogfQogCit2b2lkIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnNo
YXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktl
eSYgc2hhcmVkV29ya2VyS2V5LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNF
X0xPRygic2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXk6IHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uOjpTaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheSB7IHNoYXJlZFdv
cmtlcktleSwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciB9KTsKK30KKworI3VuZGVmIENP
Tk5FQ1RJT05fUkVMRUFTRV9MT0cKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uLmgKaW5kZXggNjFlZTVhZjQyNGRjMDMzN2Y2MmNmNzE5MzJh
MTViYjk1NWU2ZGNkMi4uNDc4MTkzZWY3ZGRhZjA2MWQ2ZWI1MjhlZGY5M2RiYzQxMTdhMzIzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApAQCAtMjUsMjAgKzI1LDI1IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CitjbGFzcyBXZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24sIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJs
aWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKTsgfQorICAgIH5XZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uKCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIFdlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKTsKIAogICAgIC8vIFdlYkNvcmU6OlNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uCi0gICAgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0
IFVSTCYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlciYsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2Fn
ZVBvcnQmJiwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVl
c3RTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiwgV2ViQ29yZTo6
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdl
UG9ydCYmLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJikgZmluYWw7CisgICAgdm9pZCBz
aGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJL
ZXkmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKSBmaW5hbDsKIAogICAg
IC8vIElQQzo6TWVzc2FnZVNlbmRlci4KICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5k
ZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjJhZTFhMzJjOTM5NTNkOTVl
OGVhZjhjNTgxMDIyNzBiNTI1N2YxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdl
cy5pbgpAQCAtMCwwICsxLDI3IEBACisjIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisj
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKK21lc3NhZ2VzIC0+IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24geworICAg
IEZldGNoU2NyaXB0SW5DbGllbnQoVVJMIHVybCwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6
V29ya2VyT3B0aW9ucyB3b3JrZXJPcHRpb25zKSAtPiAoc3RydWN0IFdlYkNvcmU6OldvcmtlckZl
dGNoUmVzdWx0IGZldGNoUmVzdWx0KSBBc3luYworICAgIE5vdGlmeVdvcmtlck9iamVjdE9mTG9h
ZENvbXBsZXRpb24oV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQorICAg
IFBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFN0cmluZyBlcnJvck1lc3Nh
Z2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTdHJpbmcgc291cmNlVVJMKQor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGRkOGQ1ODFhYzVi
MjRkNWQ5NDA2MmI5YzY1YzI0MmYwYzUxZWM5ODQuLmRkNDViNDU4OGJmOWRkMTI0ZTE4ZmFhOTVh
MzI2ZWQzMTkzMWE0NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
QEAgLTg0LDYgKzg0LDggQEAKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNo
YXJlZFdvcmtlclByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFtLmgiCiAjaW5j
bHVkZSAiV2Vic2l0ZURhdGEuaCIKQEAgLTEzNCw2ICsxMzYsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2Vy
R2VzdHVyZUluZGljYXRvci5oPgogI2luY2x1ZGUgPHBhbC9Mb2dnaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL0FsZ29yaXRobXMuaD4KQEAgLTkwNCw3ICs5MDcsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OmRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVy
JiBkZQogICAgIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICAvLyBGSVhNRTog
UmVtb3ZlPwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdl
czo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkg
ewogICAgICAgICBBU1NFUlQoU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlv
bigpKTsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiA9IFNXQ29u
dGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKQEAgLTkxMyw2ICs5MTUsMTMg
QEAgdm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGUKICAgICB9CiAjZW5kaWYKIAorICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAg
QVNTRVJUKFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9u
KCkpOworICAgICAgICBpZiAoYXV0byogY29udGV4dE1hbmFnZXJDb25uZWN0aW9uID0gU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAg
ICAgIHN0YXRpY19jYXN0PFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiY+
KCpjb250ZXh0TWFuYWdlckNvbm5lY3Rpb24pLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgTE9HX0VSUk9SKCJVbmhh
bmRsZWQgd2ViIHByb2Nlc3MgbWVzc2FnZSAnJXMnIChkZXN0aW5hdGlvbjogJSIgUFJJdTY0ICIg
cGlkOiAlZCkiLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpLCBkZWNvZGVyLmRl
c3RpbmF0aW9uSUQoKSwgc3RhdGljX2Nhc3Q8aW50PihnZXRDdXJyZW50UHJvY2Vzc0lEKCkpKTsK
IH0KIApAQCAtMTkxOSw2ICsxOTI4LDE2IEBAIExpYldlYlJUQ05ldHdvcmsmIFdlYlByb2Nlc3M6
OmxpYldlYlJUQ05ldHdvcmsoKQogICAgIHJldHVybiAqbV9saWJXZWJSVENOZXR3b3JrOwogfQog
Cit2b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNv
bnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lz
dHJhYmxlRG9tYWluLCBSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXph
dGlvbkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICAvLyBXZSBhcmUgaW4gdGhlIFNoYXJlZCBXb3JrZXIgY29udGV4dCBwcm9jZXNzIGFu
ZCB0aGUgY2FsbCBiZWxvdyBlc3RhYmxpc2hlcyBvdXIgY29ubmVjdGlvbiB0byB0aGUgTmV0d29y
ayBQcm9jZXNzCisgICAgLy8gYnkgY2FsbGluZyBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0aGUgc2FtZSB1bmRl
cmx5aW5nIElQQzo6Q29ubmVjdGlvbiBhcyB0aGUKKyAgICAvLyBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24gZm9yIHN5bmNocm9uaXphdGlvbiBwdXJwb3Nlcy4KKyAgICBhdXRvJiBpcGNDb25uZWN0
aW9uID0gZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworICAg
IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDb25uZWN0aW9uKG1h
a2VVbmlxdWU8V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uPihpcGNDb25u
ZWN0aW9uLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgcGFnZUdyb3VwSUQsIHdlYlBhZ2VQ
cm94eUlELCBwYWdlSUQsIHN0b3JlLCBXVEZNb3ZlKGluaXRpYWxpemF0aW9uRGF0YSkpKTsKKyAg
ICBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpLT5l
c3RhYmxpc2hDb25uZWN0aW9uKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2Vydmlj
ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlm
aWVyIHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBS
ZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIs
IFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmIGluaXRpYWxpemF0aW9uRGF0YSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggMDNmYzBjNzFkN2MzYTdkOTdkNWJkZGM2YmFi
ZmRmMDhiNDY2OWYyNS4uNDIzZGVmZjJhZjViYzQyZTc1NDgyM2VjNmI4YzBmMDAxMGNhMDI2MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC00NzEsNiArNDcxLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGdhbWVwYWREaXNjb25uZWN0ZWQodW5zaWduZWQgaW5kZXgpOwog
I2VuZGlmCiAKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlm
aWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9u
RGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRp
ZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZp
ZXIsIFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCmluZGV4IDNiYzQ3MzE5ZTM2ZDAwNjMxOThiYmJmOTY2OGQwNjlhYWRj
ZGUzNzcuLmY1ZTczNmVkMzQ3ZjI3MWFkZWM3YzQ1ZDAzZmQ4M2RiYjBiYTliZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMDAs
NiArMTAwLDggQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciBOb3RSZWZD
b3VudGVkIHsKICAgICBHYW1lcGFkRGlzY29ubmVjdGVkKHVuc2lnbmVkIGluZGV4KQogI2VuZGlm
CiAKKyAgICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJLaXQ6Oldl
YlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVXb3Jr
ZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRhKSAtPiAoKSBBc3luYworCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIEVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJZGVudGlmaWVy
IHBhZ2VHcm91cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5
SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJl
ZmVyZW5jZXNTdG9yZSBzdG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBz
ZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlJlbW90ZVdvcmtlcklu
aXRpYWxpemF0aW9uRGF0YSBpbml0aWFsaXphdGlvbkRhdGEpIC0+ICgpIEFzeW5jCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiNTQ2YTczNjQ0NTI1ZDEzY2VkOGIyZTZjNDYwYzE5MmFjMjFkZTU5Li43ZGIzNDkx
MzBlMTUzMDk0ZDVkOGI3NmIxYmEyNWU3ZWU3ODViZTdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAK
KzIwMjItMDItMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgc3VwcG9ydCBmb3Igc2hhcmluZyBTaGFyZWQgV29ya2VycyAoaW5jbHVkaW5nIGFjcm9zcyBX
ZWJQcm9jZXNzZXMpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzU5NTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg4MzMwNjY2PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlYmFzZWxpbmUgZXhpc3Rp
bmcgV1BUIHRlc3RzIGludm9sdmluZyBzaGFyZWQgd29ya2Vycy4KKworICAgICAgICAqIFRlc3RF
eHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hh
cmVkd29ya2VyLWNvbm5lY3Qtc3JjLnN1Yi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50
LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1yZXBvcnQtb25seS5z
dWItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGstd2syL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRl
LXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWItZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1l
eHBlY3RlZC50eHQ6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJs
LndpbmRvdy1leHBlY3RlZC50eHQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWlt
cG9ydC1kYXRhLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQt
d29ya2VyLWltcG9ydC1kYXRhLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0LgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21v
ZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4dDogQ29waWVkIGZy
b20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21v
ZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4dC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1jcmVkZW50aWFscy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4
cGVjdGVkLnR4dDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4
cGVjdGVkLnR4dC4KKwogMjAyMi0wMi0wNCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+
CiAKICAgICAgICAgR3JhZGllbnRzIGRvbid0IGNvcnJlY3RseSBpbnRlcnBvbGF0ZSBtaXNzaW5n
L25vbmUgY29sb3IgY29tcG9uZW50cyBjb3JyZWN0bHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nCmluZGV4IGYzNTY2ZWI4NDBhYzBkMWZhNThmMWVmMjMyMjIzNzZjZDZmY2FiYmEuLjMwZDJl
NzViNDI2MjliYjljZDVkYmRjMmU3MmYzMmRiMjJlOThiMzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIyLTAyLTA0ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNoYXJpbmcgU2hhcmVk
IFdvcmtlcnMgKGluY2x1ZGluZyBhY3Jvc3MgV2ViUHJvY2Vzc2VzKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1OTU4CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS84ODMzMDY2Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZWJhc2VsaW5lIGV4aXN0aW5nIFdQVCB0ZXN0cyBpbnZvbHZpbmcgc2hhcmVk
IHdvcmtlcnMuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0
eS1wb2xpY3kvY29ubmVjdC1zcmMvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1hbGxvd2VkLnN1
Yi1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3JrZXItY29ubmVjdC1zcmMtYmxvY2tl
ZC5zdWItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50
LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1yZXBvcnQtb25seS5z
dWItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1zY3JpcHQtc3JjLnN1Yi1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJp
dHktcG9saWN5L3NjcmlwdC1zcmMvd29ya2VyLXNldC10aW1lb3V0LnN1Yi1leHBlY3RlZC50eHQ6
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBj
YWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9j
cm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5odHRwcy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGlj
eS9zaGFyZWQtd29ya2Vycy5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS93b3JrZXItaW5oZXJp
dGFuY2Uuc3ViLmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2NsYWltLXNoYXJlZC13b3JrZXItZmV0
Y2guaHR0cHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJs
LndpbmRvdy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMv
c2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LXJlZmVycmVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29y
a2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwNC1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211
bHRpcGxlLXdvcmtlcnMvMDA4LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2Vy
LW5hbWUtdmlhLW9wdGlvbnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1taXNtYXRjaC1leHBlY3RlZC50eHQ6
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNo
YXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0OgorCiAyMDIyLTAyLTA0ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgbGFuZCBtaXNzaW5n
IGJhc2VsaW5lIGZvciBTaGFyZWQgV29ya2VyIHRlc3QuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBh
ZDk3MDI5MGM0MzhhZGZjZDQ0NDZkYWY3MjdmM2ZkNTk0M2M0YzI0Li40YTJiNmJjYTkyZGQ5MGRl
ZmNmNmFiNGQyOWEzZTA5MjE3OTcxZmJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQ1OSw3ICs0
NTksNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1sb2Nrcy9zdGVhbC50
ZW50YXRpdmUuaHR0cHMuYW55Lmh0bWwgWyBEdW1wSgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hbmFseXNlcm5vZGUtaW50ZXJmYWNl
L3Rlc3QtYW5hbHlzZXItbWluaW11bS5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0K
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90
aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUtZGlzY29ubmVjdC1hdWRpb3BhcmFtLmh0
bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL3NhbWUtb3JpZ2luLWNoZWNrLnN1Yi5odG1sIFsgRHVtcEpTQ29uc29s
ZUxvZ0luU3RkRXJyIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9z
aGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMuaHRtbCBbIER1bXBKU0NvbnNvbGVMb2dJblN0
ZEVyciBdCiBmYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWJhY2stZm9yd2FyZC1jYWNoZS5odG1sIFsg
RHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGZhc3QvaGlzdG9yeS9wYWdlLWNhY2hlLWNyZWF0
ZUltYWdlQml0bWFwLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQogaHR0cC90ZXN0
cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLWluLWxvYWRpbmctaWZyYW1lLmh0bWwgWyBEdW1w
SlNDb25zb2xlTG9nSW5TdGRFcnIgXQpAQCAtODQ5LDYgKzg0OCw3IEBAIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdXNlci10aW1pbmcvbWFyay5odG1sIFsgRmFpbHVyZSBQYXNzIF0K
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdXNlci10aW1pbmcvbWVhc3VyZV9hc3Nv
Y2lhdGVkX3dpdGhfbmF2aWdhdGlvbl90aW1pbmcuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zeXN0ZW0tc3RhdGUt
YW5kLWNhcGFiaWxpdGllcy90aGUtbmF2aWdhdG9yLW9iamVjdC9wbHVnaW5zLWFuZC1taW1ldHlw
ZXMuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2JlYWNvbi9iZWFjb24tcmVkaXJlY3Quc3ViLndpbmRvdy5odG1sIFsgRmFpbHVyZSBQYXNzIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRk
ZXItcG9saWN5L2Fub255bW91cy1pZnJhbWUvc2hhcmVkd29ya2VyLXBhcnRpdGlvbmluZy50ZW50
YXRpdmUuaHR0cHMud2luZG93Lmh0bWwgWyBGYWlsdXJlIFBhc3MgXQogCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2RvY3VtZW50LW1ldGFkYXRhL3RoZS1s
aW5rLWVsZW1lbnQvbGluay1sb2FkLWVycm9yLWV2ZW50cy5odG1sIFsgRHVtcEpTQ29uc29sZUxv
Z0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZG9jdW1lbnQtbWV0YWRhdGEvdGhlLWxpbmstZWxlbWVudC9saW5rLWxvYWQtZXJyb3ItZXZl
bnRzLmh0dHBzLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQpAQCAtNTEzMSw2ICs1
MTMxLDEwIEBAIHdlYmtpdC5vcmcvYi8yMzQ5NzcgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9mb2N1cy1lCiAjIFRlc3QgaXMgY3Jhc2hpbmcgc2lu
Y2UgaW1wb3J0LgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVs
ZXMvZGVkaWNhdGVkLXdvcmtlci1pbXBvcnQtY3NwLmh0bWwgWyBTa2lwIF0KIAorIyBUZXN0IGlz
IGZsYWt5IGJlY2F1c2UgTWVzc2FnZVBvcnQgbWVzc2FnZXMgbWF5IGdldCByZWNlaXZlZCBpbiBh
IGRpZmZlcmVudCBvcmRlciB3aGVuIHNldmVyYWwgTWVzc2FnZVBvcnRzIGFyZSBpbnZvbHZlZCwK
KyMgZHVlIHRvIGhvdyBNZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpIGlzIGltcGxlbWVu
dGVkLgoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3Jr
ZXItbmFtZS12aWEtb3B0aW9ucy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIEZhaWx1
cmUgUGFzcyBdCisKICMgUGx1Z2lucwogIyBGSVhNRTogUmVtb3ZlIHRoZXNlIHRlc3RzLgogcGx1
Z2lucy8gWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvY29ubmVjdC1zcmMvc2hhcmVk
LXdvcmtlci1jb25uZWN0LXNyYy1hbGxvd2VkLnN1Yi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3JrZXItY29ubmVjdC1zcmMtYWxsb3dlZC5zdWItZXhwZWN0
ZWQudHh0CmluZGV4IGUyODM5NWVkODNjNjY0YjJjYTYwZDVkYTg3YmNmZjBlMDM5OWQ1MDEuLjM4
MmI5NTY5NWJjYjA1ZDUyY2UwZWNhMjA4YTg4MDY3YTgzZTE3NDcgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvY29ubmVjdC1zcmMvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1hbGxvd2VkLnN1Yi1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9zaGFyZWQtd29ya2VyLWNv
bm5lY3Qtc3JjLWFsbG93ZWQuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJsb2Nr
ZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwOi8vd3d3MS5sb2NhbGhvc3Q6ODgwMC9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9zdXBwb3J0L2ZhaWwuYXNpcwogCiBGQUlMIEV4cGVjdGluZyBs
b2dzOiBbInhociBhbGxvd2VkIiwiVEVTVCBDT01QTEVURSJdIGFzc2VydF91bnJlYWNoZWQ6IHVu
ZXhwZWN0ZWQgbG9nOiB4aHIgYmxvY2tlZCBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9zaGFyZWQtd29ya2VyLWNvbm5lY3Qtc3Jj
LWJsb2NrZWQuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvY29ubmVjdC1zcmMvc2hhcmVk
LXdvcmtlci1jb25uZWN0LXNyYy1ibG9ja2VkLnN1Yi1leHBlY3RlZC50eHQKaW5kZXggZjQ5MGVh
NzcxMmZlODFjNzc0MWRkZTA0MTU0NTc1Mjk1MTc2ZmY1My4uNWU5NzFlMjBmNGJiOTI2M2EzMTg0
ZTMwOGNkYzdjNDk0MDZjNDhjOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9z
aGFyZWQtd29ya2VyLWNvbm5lY3Qtc3JjLWJsb2NrZWQuc3ViLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJp
dHktcG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3JrZXItY29ubmVjdC1zcmMtYmxvY2tlZC5z
dWItZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJu
YWwgVVJMIGh0dHA6Ly93d3cxLmxvY2FsaG9zdDo4ODAwL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L3N1cHBvcnQvZmFpbC5hc2lzCiBUaGlzIHRlc3QgbG9hZHMgYSBzaGFyZWQgd29ya2VyLCBkZWxp
dmVyZWQgd2l0aCBpdHMgb3duIHBvbGljeS4gVGhlIHdvcmtlciBzaG91bGQgYmUgYmxvY2tlZCBm
cm9tIG1ha2luZyBhbiBYSFIgYXMgdGhhdCBwb2xpY3kgc3BlY2lmaWVzIGEgY29ubmVjdC1zcmMg
J25vbmUnLCB0aG91Z2ggdGhpcyByZXNvdXJjZSdzIHBvbGljeSBpcyBjb25uZWN0LXNyYyAqLiBO
byByZXBvcnQgc2hvdWxkIGJlIHNlbnQgc2luY2UgdGhlIHdvcmtlcidzIHBvbGljeSBkb2Vzbid0
IHNwZWNpZnkgYSByZXBvcnQtdXJpLgogCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRl
LXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVk
LnR4dAppbmRleCAwZTk5NzI0Yjg2NGJiZjQ5MTlhNTc0OWIyOGNiMTU0YWUyNzE4M2M2Li42ODk4
YjU0YWFiNmZjMzRkMTdiMmU4YmUyZTg0M2U5YTg3MDViMzcwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXJlcG9ydC1vbmx5LnN1Yi1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1yZXBvcnQtb25s
eS5zdWItZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0
ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L3N1cHBvcnQvcmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLWZldGNoCi1CbG9ja2VkIGFjY2Vz
cyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvc3VwcG9ydC9yZXNvdXJjZS5weT9jcm9zcy1vcmlnaW4teGhyCi1CbG9ja2Vk
IGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvc3VwcG9ydC9yZXNvdXJjZS5weT9jcm9zcy1vcmlnaW4tZmV0Y2gK
IAogUEFTUyBTYW1lLW9yaWdpbiAnZmV0Y2goKScuCiBQQVNTIFNhbWUtb3JpZ2luIFhIUi4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0LXNy
Yy5zdWItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtl
ci1zY3JpcHQtc3JjLnN1Yi1leHBlY3RlZC50eHQKaW5kZXggOTc5MTA2MzAzNzg1ZWMyNTU1MzM2
ZGY0OWRiZThlMWJmYTNmNmVmYS4uYmI2NDUyZjQ0YTBhYTIxNWE4ZGRlOGEyZjMwMGQ4Y2M0NDhk
YjkzZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1z
Y3JpcHQtc3JjLnN1Yi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2Vy
L3NoYXJlZHdvcmtlci1zY3JpcHQtc3JjLnN1Yi1leHBlY3RlZC50eHQKQEAgLTIsMTAgKzIsOSBA
QAogSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCiAKIFRJTUVPVVQgc2hh
cmVkd29ya2VyLXNjcmlwdC1zcmMgVGVzdCB0aW1lZCBvdXQKLUZBSUwgQ3Jvc3Mtb3JpZ2luIGBp
bXBvcnRTY3JpcHRzKClgIG5vdCBibG9ja2VkIGluIGh0dHA6IHdpdGhvdXIgQ1NQICBBIG5ldHdv
cmsgZXJyb3Igb2NjdXJyZWQuCi1GQUlMIGBldmFsKClgIG5vdCBibG9ja2VkIGluIGh0dHA6IHdp
dGhvdXQgQ1NQIFJlZnVzZWQgdG8gZXZhbHVhdGUgYSBzdHJpbmcgYXMgSmF2YVNjcmlwdCBiZWNh
dXNlICd1bnNhZmUtZXZhbCcgaXMgbm90IGFuIGFsbG93ZWQgc291cmNlIG9mIHNjcmlwdCBpbiB0
aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogInNjcmlwdC1z
cmMgJ3NlbGYnICdub25jZS1hJyBibG9iOiBmaWxlc3lzdGVtOiIuCi0KLUZBSUwgYHNldFRpbWVv
dXQoW3N0cmluZ10pYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3V0IENTUCBhc3NlcnRfdW5y
ZWFjaGVkOiBjYWxsYmFjayBub3QgY2FsbGVkLiBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK0ZB
SUwgQ3Jvc3Mtb3JpZ2luIGBpbXBvcnRTY3JpcHRzKClgIG5vdCBibG9ja2VkIGluIGh0dHA6IHdp
dGhvdXIgQ1NQIExvYWQgZmFpbGVkCitQQVNTIGBldmFsKClgIG5vdCBibG9ja2VkIGluIGh0dHA6
IHdpdGhvdXQgQ1NQCitQQVNTIGBzZXRUaW1lb3V0KFtzdHJpbmddKWAgbm90IGJsb2NrZWQgaW4g
aHR0cDogd2l0aG91dCBDU1AKIFRJTUVPVVQgQ3Jvc3Mtb3JpZ2luIGBpbXBvcnRTY3JpcHRzKClg
IGJsb2NrZWQgaW4gaHR0cDogd2l0aCBzY3JpcHQtc3JjICdzZWxmJyBUZXN0IHRpbWVkIG91dAog
Tk9UUlVOIGBldmFsKClgIGJsb2NrZWQgaW4gaHR0cDogd2l0aCBzY3JpcHQtc3JjICdzZWxmJwog
Tk9UUlVOIGBzZXRUaW1lb3V0KFtzdHJpbmddKWAgYmxvY2tlZCBpbiBodHRwOiB3aXRoIHNjcmlw
dC1zcmMgJ3NlbGYnCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3NjcmlwdC1zcmMvd29ya2VyLXNl
dC10aW1lb3V0LnN1Yi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3NjcmlwdC1zcmMvd29ya2Vy
LXNldC10aW1lb3V0LnN1Yi1leHBlY3RlZC50eHQKaW5kZXggNGVhYzFjY2MwNTI2OWYwNzY4NzUw
MjVjZDYyNGVlN2QyMTc5NmNlZi4uYjhlZTEzYjBmZmNlYTZmMTI1Y2M2OTZmMmJiYjY3MTIwM2Y4
NjhjYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91
dC5zdWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0
LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKIAogRkFJTCBEZWRpY2F0
ZWQgd29ya2VyIGluaGVyaXRzIENTUCBmcm9tIG1haW4gZG9jdW1lbnQgYXNzZXJ0X2VxdWFsczog
ZXhwZWN0ZWQgInNldFRpbWVvdXQgYWxsb3dlZCIgYnV0IGdvdCAic2V0VGltZW91dCBibG9ja2Vk
IgotRkFJTCBTaGFyZWQgd29ya2VyIGRlbGl2ZXJzIGl0cyBvd24gQ1NQIGFzc2VydF9lcXVhbHM6
IGV4cGVjdGVkICJzZXRUaW1lb3V0IGJsb2NrZWQiIGJ1dCBnb3QgInNldFRpbWVvdXQgYWxsb3dl
ZCIKK1BBU1MgU2hhcmVkIHdvcmtlciBkZWxpdmVycyBpdHMgb3duIENTUAogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3Nl
cnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
YnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1l
eHBlY3RlZC50eHQKaW5kZXggYzEwNzEzNjU1MjgwMTkyYjdjYjJlZThlNGQyZWM2NTQ3YWVmNzI2
My4uNmY4NDRkZDVkOTQ5MWEyMmU1OTVhOTBiOTYzYzA4ODgyMTkwMmQyZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJz
L29mZmxpbmUvYXBwY2FjaGUvd29ya2Vycy9hcHBjYWNoZS13b3JrZXIuaHR0cHMtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBz
LWV4cGVjdGVkLnR4dApAQCAtNSw3ICs1LDcgQEAgSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1l
c3NhZ2UgPSBudWxsCiBQQVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIGNhY2hlZCBzY3JpcHQK
IFBBU1MgRGVkaWNhdGVkIHdvcmtlciBvZiB0aGUgZmFsbGJhY2tlZCBzY3JpcHQKIFBBU1MgRGVk
aWNhdGVkIHdvcmtlciBvZiB0aGUgbm90LWluLWNhY2hlIHNjcmlwdAotUEFTUyBTaGFyZWQgd29y
a2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0Ci1QQVNTIFNoYXJlZCB3b3JrZXIgb2YgdGhlIGZhbGxi
YWNrZWQgc2NyaXB0CitGQUlMIFNoYXJlZCB3b3JrZXIgb2YgdGhlIGNhY2hlZCBzY3JpcHQgYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgIkRvbmU6IGNhY2hlZCIgYnV0IGdvdCAiRXJyb3I6IEltcG9y
dGluZyBhIG5vbi1jYWNoZWQgc2NyaXB0IG11c3QgZmFpbC4iCitGQUlMIFNoYXJlZCB3b3JrZXIg
b2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJEb25lOiBm
YWxsYmFja2VkIiBidXQgZ290ICJFcnJvcjogSW1wb3J0aW5nIGEgbm9uLWNhY2hlZCBzY3JpcHQg
bXVzdCBmYWlsLiIKIFRJTUVPVVQgU2hhcmVkIHdvcmtlciBvZiB0aGUgbm90LWluLWNhY2hlIHNj
cmlwdCBUZXN0IHRpbWVkIG91dAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9j
cm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2lu
LWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5odHRwcy1l
eHBlY3RlZC50eHQKaW5kZXggNjM1NWI2OGRlNzBiZTY2YzAxZTJiM2FlMTI3NDdkNWNkMmMzNDBh
Yi4uYzhiZjc1ZTdlYTg1MzBmYmM4YjQyMDAzMmFmNGYwMzlkZGRlNTM2NyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9y
aWdpbi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0
cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L2Nyb3NzLW9yaWdpbi1p
c29sYXRlZC1wZXJtaXNzaW9uLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMjAsNyArMjAsNyBAQCBQ
QVNTIGRlZGljYXRlZCB3b3JrZXI6IHNjaGVtZSA9IGJsb2IsIHZhbHVlID0gKgogUEFTUyBkZWRp
Y2F0ZWQgd29ya2VyOiBzY2hlbWUgPSBibG9iLCB2YWx1ZSA9IHNlbGYKIEZBSUwgZGVkaWNhdGVk
IHdvcmtlcjogc2NoZW1lID0gYmxvYiwgdmFsdWUgPSAoXCkgYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgZmFsc2UgYnV0IGdvdCB0cnVlCiBQQVNTIHNoYXJlZCB3b3JrZXI6IHdpdGhDb29wQ29lcCA9
IGZhbHNlCi1QQVNTIHNoYXJlZCB3b3JrZXI6IHdpdGhDb29wQ29lcCA9IHRydWUKK0ZBSUwgc2hh
cmVkIHdvcmtlcjogd2l0aENvb3BDb2VwID0gdHJ1ZSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCB0
cnVlIGJ1dCBnb3QgZmFsc2UKIFBBU1Mgc2VydmljZSB3b3JrZXI6IHdpdGhDb29wQ29lcCA9IGZh
bHNlCiBGQUlMIHNlcnZpY2Ugd29ya2VyOiB3aXRoQ29vcENvZXAgPSB0cnVlIGFzc2VydF9lcXVh
bHM6IGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVk
ZGVyLXBvbGljeS9zaGFyZWQtd29ya2Vycy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVk
ZGVyLXBvbGljeS9zaGFyZWQtd29ya2Vycy5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggMzM5OGJk
ODg5MzFiMjIwOGEyODA4OTliZWQ3NGUyNGRhM2Y0ZjYzNi4uNGM4NjZlYjI5MjYzYmFmODdlZGMx
OWVlOWNlMTUwMTQ2MTA5MGJjZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvc2hh
cmVkLXdvcmtlcnMuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5
L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMiw3ICsyLDcgQEAgVmVyaWZ5
IHRoZSBDcm9zcy1PcmlnaW4gRW1iZWRkZXIgUG9saWN5IGZvciBTaGFyZWQgV29ya2VycyBieSBw
ZXJmb3JtaW5nIGEgY3Jvc3MKIAogCiBQQVNTIGRlZmF1bHQgcG9saWN5IChkZXJpdmVkIGZyb20g
cmVzcG9uc2UpCi1GQUlMICJyZXF1aXJlLWNvcnAiIChkZXJpdmVkIGZyb20gcmVzcG9uc2UpIGFz
c2VydF9lcXVhbHM6IGV4cGVjdGVkICJmYWlsdXJlIiBidXQgZ290ICJzdWNjZXNzIgorUEFTUyAi
cmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIHJlc3BvbnNlKQogUEFTUyBkZWZhdWx0IHBvbGlj
eSAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBkdWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAtIGJs
b2IgVVJMKQogRkFJTCAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBkdWUg
dG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAtIGJsb2IgVVJMKSBhc3NlcnRfZXF1YWxzOiBleHBlY3Rl
ZCAiZmFpbHVyZSIgYnV0IGdvdCAic3VjY2VzcyIKIFBBU1MgZGVmYXVsdCBwb2xpY3kgKGRlcml2
ZWQgZnJvbSBvd25lciBzZXQgZHVlIHRvIHVzZSBvZiBsb2NhbCBzY2hlbWUgLSBkYXRhIFVSTCkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5jZS5zdWIu
aHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVyaXRh
bmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggNzViMWQzM2U1MjYwMWFkMGQzYWRkZjhi
ZGU1NTVlMTVkYjIyZmYyMi4uYjJiZjJlM2JmZjNmZTJlMzA3YThiYzk0OWUyMjFkZjAwNmE5NjNm
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVyaXRhbmNlLnN1
Yi5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWlu
aGVyaXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw2IEBACiBCbG9ja2Vk
IGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29tbW9u
L2JsYW5rLmh0bWwKIEJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5s
b2NhbGhvc3Q6OTQ0NC9jb21tb24vYmxhbmsuaHRtbAogQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJu
YWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbW1vbi9ibGFuay5odG1sCi1CbG9j
a2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29t
bW9uL2JsYW5rLmh0bWwKIAogUEFTUyBUZXN0IHRoYXQgbG9jYWwgc2NoZW1lIHdvcmtlcnMgaW5o
ZXJpdCBDT0VQOiByZXF1aXJlLWNvcnAgZnJvbSB0aGUgY3JlYXRpbmcgZG9jdW1lbnQKIFBBU1Mg
YmxvYiBVUkwgZGVkaWNhdGVkIHdvcmtlcjogU2FtZSBvcmlnaW4gc2hvdWxkIGJlIGFsbG93ZWQu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9jbGFpbS1zaGFyZWQtd29ya2VyLWZldGNo
Lmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2NsYWltLXNoYXJlZC13b3Jr
ZXItZmV0Y2guaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IGRkMzVhYWUyNWY3N2ZlNDQ1MTYzYjE5
NDZiYmI2MzIzNGNmMjBmZDcuLjkwZDkxYWQ1MTAxZjUxMGQ0YjRlNDcyOTVhNmM2MDdkMGQ4ZmJj
NzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2NsYWltLXNoYXJlZC13b3JrZXItZmV0
Y2guaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2NsYWltLXNoYXJl
ZC13b3JrZXItZmV0Y2guaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsNCBAQAogCi1QQVNT
IGZldGNoKCkgaW4gU2hhcmVkV29ya2VyIHNob3VsZCBiZSBpbnRlcmNlcHRlZCBhZnRlciB0aGUg
Y2xpZW50IGlzIGNsYWltZWQuCisKK0ZBSUwgZmV0Y2goKSBpbiBTaGFyZWRXb3JrZXIgc2hvdWxk
IGJlIGludGVyY2VwdGVkIGFmdGVyIHRoZSBjbGllbnQgaXMgY2xhaW1lZC4gYXNzZXJ0X2VxdWFs
czogZmV0Y2goKSBpbiB0aGUgc2hhcmVkIHdvcmtlciBzaG91bGQgYmUgaW50ZXJjZXB0ZWQuIGV4
cGVjdGVkICJJbnRlcmNlcHRlZCEiIGJ1dCBnb3QgImEgc2ltcGxlIHRleHQgZmlsZVxuIgogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvU2hhcmVkV29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyLXNj
cmlwdC1lcnJvci1leHBlY3RlZC50eHQKaW5kZXggZTgxMzM4MDBkMmNhYTZhOTYyOGU5NTk0ZmI3
ODIxNDcxNzg0NDBlNS4uZmQyZGYwZmU2MDlhNjRmZjQzZWI1ODRkNDQzZWZiMDZlN2RlNGRiYiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL1NoYXJlZFdvcmtlci1zY3JpcHQtZXJyb3ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3Jr
ZXItc2NyaXB0LWVycm9yLWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDMgQEAKLUNPTlNPTEUgTUVT
U0FHRTogRXJyb3I6IGFzc2VydF91bnJlYWNoZWQ6IEZBSUw6IG9uZXJyb3IgaW52b2tlZCBmb3Ig
YSBzY3JpcHQgZXJyb3IuIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQotCi1IYXJuZXNzIEVycm9y
IChGQUlMKSwgbWVzc2FnZSA9IEVycm9yOiBhc3NlcnRfdW5yZWFjaGVkOiBGQUlMOiBvbmVycm9y
IGludm9rZWQgZm9yIGEgc2NyaXB0IGVycm9yLiBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKIAog
UEFTUyBUZXN0IHNjcmlwdCBlcnJvciB1bmhhbmRsZWQuCiBQQVNTIFRlc3Qgc2NyaXB0IGVycm9y
IGhhbmRsZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyX2RhdGFVcmwtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdv
cmtlcl9kYXRhVXJsLWV4cGVjdGVkLnR4dAppbmRleCA5OTVhMDYwMTliODQ4ZDQzNjdhYjViY2E5
OGY4NjIyODFkMWJiYzhiLi45YjU4MjBhYWU4Y2IzMzNkODgwNTlhNDYxYWQxYmVhN2Q0NTY2MGE3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvU2hhcmVkV29ya2VyX2RhdGFVcmwtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJf
ZGF0YVVybC1leHBlY3RlZC50eHQKQEAgLTEsMTMgKzEsNSBAQAotQ09OU09MRSBNRVNTQUdFOiBF
cnJvcjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290IDEKIAogCi1IYXJuZXNzIEVy
cm9yIChGQUlMKSwgbWVzc2FnZSA9IEVycm9yOiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1
dCBnb3QgMQotCi1QQVNTIERhdGEgVVJMIG5vdCBzaGFyZWQgYnkgY3Jvc3Mtb3JpZ2luIFNoYXJl
ZFdvcmtlcnMKLVRJTUVPVVQgRGF0YSBVUkxzIHNoYXJlZCBieSBzYW1lLW9yaWdpbiBTaGFyZWRX
b3JrZXJzIFRlc3QgdGltZWQgb3V0Ci0KLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0g
RXJyb3I6IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDIgYnV0IGdvdCAxCi0KIFBBU1MgRGF0YSBV
Ukwgbm90IHNoYXJlZCBieSBjcm9zcy1vcmlnaW4gU2hhcmVkV29ya2VycwotVElNRU9VVCBEYXRh
IFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtlcnMgVGVzdCB0aW1lZCBvdXQK
K1BBU1MgRGF0YSBVUkxzIHNoYXJlZCBieSBzYW1lLW9yaWdpbiBTaGFyZWRXb3JrZXJzCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQu
dHh0CmluZGV4IDU3NmU2ZDJiN2VkMmZhNzAyM2NmMjNiOTZhMDY5MWZkNWFiY2EwNTkuLjRhMjZi
ZTkyOWE4ZDc1MjUwOGI0ZjdmNzVjMDdiM2VhOGVkYzhjYWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJl
ZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hh
cmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsx
LDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxo
b3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQu
cHkKIAogUEFTUyBTdGF0aWMgaW1wb3J0LgogRkFJTCBTdGF0aWMgaW1wb3J0IChjcm9zcy1vcmln
aW4pLiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogIkltcG9y
dGluZyBhIG1vZHVsZSBzY3JpcHQgZmFpbGVkLiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3Jr
ZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQt
d29ya2VyLWltcG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CmluZGV4IDRm
ODY0MWU1MTQ4MGYwMTMwNjc1YjkxMzY0ZWNjNGYwZmEyNzIwYTkuLjI5OTdmN2UxZjMwOGU4MDgx
OTdkYzhkNDgyMDQ5ZDUzY2FiNGYzYmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdv
cmtlci1pbXBvcnQtZGF0YS11cmwtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsx
LDMgQEAKLUNPTlNPTEUgTUVTU0FHRTogT3JpZ2luIG51bGwgaXMgbm90IGFsbG93ZWQgYnkgQWNj
ZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luLiBTdGF0dXMgY29kZTogMjAwCiAKIEhhcm5lc3MgRXJy
b3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29y
a2VyLWltcG9ydC1kYXRhLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtl
ci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dAppbmRleCBlYWM3Zjk1ZGU2ZjJk
ODdjN2IyMTNkZmVjYWIxMzg4YzY4ODRkYzFkLi5jYmMwNDI5ZTBjNzE3MzUyODBlZmI0NDQ0Y2Ni
YWE4MjEzNjhkZjExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVy
bC53aW5kb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEt
dXJsLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0
byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQzL3dvcmtlcnMvbW9kdWxl
cy9yZXNvdXJjZXMvZXhwb3J0LW9uLWxvYWQtc2NyaXB0LnB5CiAKIEhhcm5lc3MgRXJyb3IgKFRJ
TUVPVVQpLCBtZXNzYWdlID0gbnVsbAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWlt
cG9ydC1mYWlsdXJlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWZhaWx1
cmUtZXhwZWN0ZWQudHh0CmluZGV4IDRlOWU1MTkzNzJiYjFmNTE5NTJmMzI1ODBiMDRiNzkzOGFk
ODc1NjkuLmQwNDkwMzU5Y2U3ZmJmYzQzODYzMDhkMGY0MzM3ZWI4ZGFiMmU5OTIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWZhaWx1cmUtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVz
L3NoYXJlZC13b3JrZXItaW1wb3J0LWZhaWx1cmUtZXhwZWN0ZWQudHh0CkBAIC0xLDkgKzEsOCBA
QAotQ09OU09MRSBNRVNTQUdFOiBDYW5ub3QgbG9hZCBzdGF0aWMtaW1wb3J0LXdvcmtlci5qcy4K
IAogUEFTUyBpbXBvcnRTY3JpcHRzKCkgb24gbW9kdWxlIHdvcmtlciBzaG91bGQgdGhyb3cgYW4g
ZXhjZXB0aW9uLgogUEFTUyBXb3JrZXIgY29uc3RydWN0aW9uIGZvciBub24tZXhpc3RlbnQgc2Ny
aXB0IHNob3VsZCBkaXNwYXRjaCBhbiBFcnJvckV2ZW50LgogUEFTUyBTdGF0aWMgaW1wb3J0IGZv
ciBub24tZXhpc3RlbnQgc2NyaXB0IHNob3VsZCBkaXNwYXRjaCBhbiBFcnJvckV2ZW50LgogUEFT
UyBEeW5hbWljIGltcG9ydCBmb3Igbm9uLWV4aXN0ZW50IHNjcmlwdCBzaG91bGQgdGhyb3cgYW4g
ZXhjZXB0aW9uLgogUEFTUyBTaGFyZWRXb3JrZXIgY29uc3RydWN0aW9uIGZvciBhbiBpbnZhbGlk
IFVSTCBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uLgotRkFJTCBTaGFyZWRXb3JrZXIgY29uc3Ry
dWN0aW9uIGZvciBhIGZpbGUgVVJMIHNob3VsZCB0aHJvdyBhbiBleGNlcHRpb24uIGFzc2VydF90
aHJvd3NfZG9tOiBmdW5jdGlvbiAiKCkgPT4gbmV3IFNoYXJlZFdvcmtlcihzY3JpcHRVUkwsIHsg
dHlwZTogJ21vZHVsZScgfSkiIGRpZCBub3QgdGhyb3cKK1BBU1MgU2hhcmVkV29ya2VyIGNvbnN0
cnVjdGlvbiBmb3IgYSBmaWxlIFVSTCBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uLgogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1yZWZlcnJlci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxl
cy9zaGFyZWQtd29ya2VyLWltcG9ydC1yZWZlcnJlci1leHBlY3RlZC50eHQKaW5kZXggZmUxYjlk
OTNjMDgwMTFiNTBlOTQxZjRlMTIzNjA2N2FiYmQzZjIzZS4uN2I0ZWU4YzE5ZWQzOWQwYzBhN2E1
MzI2MmUwZjBiZmQzOTYyM2E2YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQt
cmVmZXJyZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LXJlZmVy
cmVyLWV4cGVjdGVkLnR4dApAQCAtMSwyMSArMSwxNSBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0
ZXJuYWwgVVJMIGh0dHBzOi8vd3d3MS5sb2NhbGhvc3Q6OTQ0My93b3JrZXJzL21vZHVsZXMvcmVz
b3VyY2VzL2V4cG9ydC1yZWZlcnJlci1jaGVja2VyLnB5Ci1CbG9ja2VkIGFjY2VzcyB0byBleHRl
cm5hbCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQzL3dvcmtlcnMvbW9kdWxlcy9yZXNv
dXJjZXMvZXhwb3J0LXJlZmVycmVyLWNoZWNrZXIucHkKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVy
bmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291
cmNlcy9leHBvcnQtcmVmZXJyZXItY2hlY2tlci5weQotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJu
YWwgVVJMIGh0dHBzOi8vd3d3MS5sb2NhbGhvc3Q6OTQ0My93b3JrZXJzL21vZHVsZXMvcmVzb3Vy
Y2VzL2V4cG9ydC1yZWZlcnJlci1jaGVja2VyLnB5Ci1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5h
bCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQzL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJj
ZXMvZXhwb3J0LXJlZmVycmVyLWNoZWNrZXIucHkKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFs
IFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNl
cy9leHBvcnQtcmVmZXJyZXItY2hlY2tlci5weQogCiBQQVNTIFNhbWUtb3JpZ2luIHRvcC1sZXZl
bCBtb2R1bGUgc2NyaXB0IGxvYWRpbmcgd2l0aCAibm8tcmVmZXJyZXIiIHJlZmVycmVyIHBvbGlj
eQogUEFTUyBTYW1lLW9yaWdpbiB0b3AtbGV2ZWwgbW9kdWxlIHNjcmlwdCBsb2FkaW5nIHdpdGgg
Im9yaWdpbiIgcmVmZXJyZXIgcG9saWN5CiBQQVNTIFNhbWUtb3JpZ2luIHRvcC1sZXZlbCBtb2R1
bGUgc2NyaXB0IGxvYWRpbmcgd2l0aCAic2FtZS1vcmlnaW4iIHJlZmVycmVyIHBvbGljeQotUEFT
UyBTYW1lLW9yaWdpbiBzdGF0aWMgaW1wb3J0IHdpdGggIm5vLXJlZmVycmVyIiByZWZlcnJlciBw
b2xpY3kuCi1QQVNTIFNhbWUtb3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0aCAib3JpZ2luIiByZWZl
cnJlciBwb2xpY3kuCitGQUlMIFNhbWUtb3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0aCAibm8tcmVm
ZXJyZXIiIHJlZmVycmVyIHBvbGljeS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIiIgYnV0IGdv
dCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvc3RhdGlj
LWltcG9ydC1zYW1lLW9yaWdpbi1yZWZlcnJlci1jaGVja2VyLXdvcmtlci5qcyIKK0ZBSUwgU2Ft
ZS1vcmlnaW4gc3RhdGljIGltcG9ydCB3aXRoICJvcmlnaW4iIHJlZmVycmVyIHBvbGljeS4gYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC8iIGJ1dCBnb3QgImh0
dHA6Ly9sb2NhbGhvc3Q6ODgwMC93b3JrZXJzL21vZHVsZXMvcmVzb3VyY2VzL3N0YXRpYy1pbXBv
cnQtc2FtZS1vcmlnaW4tcmVmZXJyZXItY2hlY2tlci13b3JrZXIuanMiCiBQQVNTIFNhbWUtb3Jp
Z2luIHN0YXRpYyBpbXBvcnQgd2l0aCAic2FtZS1vcmlnaW4iIHJlZmVycmVyIHBvbGljeS4KIEZB
SUwgQ3Jvc3Mtb3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0aCAibm8tcmVmZXJyZXIiIHJlZmVycmVy
IHBvbGljeS4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9i
amVjdCAiVHlwZUVycm9yOiBUeXBlIGVycm9yIgogRkFJTCBDcm9zcy1vcmlnaW4gc3RhdGljIGlt
cG9ydCB3aXRoICJvcmlnaW4iIHJlZmVycmVyIHBvbGljeS4gcHJvbWlzZV90ZXN0OiBVbmhhbmRs
ZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBUeXBlIGVycm9yIgog
RkFJTCBDcm9zcy1vcmlnaW4gc3RhdGljIGltcG9ydCB3aXRoICJzYW1lLW9yaWdpbiIgcmVmZXJy
ZXIgcG9saWN5LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTog
b2JqZWN0ICJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiCi1GQUlMIFNhbWUtb3JpZ2luIGR5bmFtaWMg
aW1wb3J0IHdpdGggIm5vLXJlZmVycmVyIiByZWZlcnJlciBwb2xpY3kuIGFzc2VydF9lcXVhbHM6
IGV4cGVjdGVkICIiIGJ1dCBnb3QgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC93b3JrZXJzL21vZHVs
ZXMvcmVzb3VyY2VzL2R5bmFtaWMtaW1wb3J0LXNhbWUtb3JpZ2luLXJlZmVycmVyLWNoZWNrZXIt
d29ya2VyLmpzIgotRkFJTCBTYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydCB3aXRoICJvcmlnaW4i
IHJlZmVycmVyIHBvbGljeS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhv
c3Q6ODgwMC8iIGJ1dCBnb3QgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC93b3JrZXJzL21vZHVsZXMv
cmVzb3VyY2VzL2R5bmFtaWMtaW1wb3J0LXNhbWUtb3JpZ2luLXJlZmVycmVyLWNoZWNrZXItd29y
a2VyLmpzIgorUEFTUyBTYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydCB3aXRoICJuby1yZWZlcnJl
ciIgcmVmZXJyZXIgcG9saWN5LgorUEFTUyBTYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydCB3aXRo
ICJvcmlnaW4iIHJlZmVycmVyIHBvbGljeS4KIFBBU1MgU2FtZS1vcmlnaW4gZHluYW1pYyBpbXBv
cnQgd2l0aCAic2FtZS1vcmlnaW4iIHJlZmVycmVyIHBvbGljeS4KIEZBSUwgQ3Jvc3Mtb3JpZ2lu
IGR5bmFtaWMgaW1wb3J0IHdpdGggIm5vLXJlZmVycmVyIiByZWZlcnJlciBwb2xpY3kuIHByb21p
c2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJv
cjogVHlwZSBlcnJvciIKIEZBSUwgQ3Jvc3Mtb3JpZ2luIGR5bmFtaWMgaW1wb3J0IHdpdGggIm9y
aWdpbiIgcmVmZXJyZXIgcG9saWN5LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24g
d2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxl
cy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdv
cmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4dAppbmRleCA1NzZlNmQyYjdlZDJmYTcwMjNj
ZjIzYjk2YTA2OTFmZDVhYmNhMDU5Li40YTI2YmU5MjlhOGQ3NTI1MDhiNGY3Zjc1YzA3YjNlYThl
ZGM4Y2FmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQK
QEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93
d3cxLmxvY2FsaG9zdDo5NDQzL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LW9uLWxv
YWQtc2NyaXB0LnB5CiAKIFBBU1MgU3RhdGljIGltcG9ydC4KIEZBSUwgU3RhdGljIGltcG9ydCAo
Y3Jvc3Mtb3JpZ2luKS4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFs
dWU6ICJJbXBvcnRpbmcgYSBtb2R1bGUgc2NyaXB0IGZhaWxlZC4iCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9z
aGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVk
LXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAppbmRleCBlMWJlZGY1NDMw
ZWZlNzVhNTlhM2M0OTg5YzU1ZDZmZjZjMTk2NTFhLi5hNzBmMDVhZjU0ZjRiYmY2MjUyZDdlNmJl
OWUwMmE3ODdlMTFmYmFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3Jl
ZGVudGlhbHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1jcmVk
ZW50aWFscy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0byBl
eHRlcm5hbCBVUkwgaHR0cDovL3d3dzEubG9jYWxob3N0Ojg4MDAvd29ya2Vycy9tb2R1bGVzL3Jl
c291cmNlcy9leHBvcnQtY3JlZGVudGlhbHMucHkKIAogSGFybmVzcyBFcnJvciAoVElNRU9VVCks
IG1lc3NhZ2UgPSBudWxsCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwNC1leHBlY3RlZC50eHQKaW5k
ZXggMDE4ZGI2MDQ1NjlkMDZmMjcyMWM4Y2IzOTQ2ZjYwOGE0ZGM2ZTk4Yi4uY2ZlNDY1NTY3NWNk
MDQ5YWI3YTVlYjkxYjY3ZGRhOGViNTBkZGI0NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13
b3JrZXJzLzAwNC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwNC1l
eHBlY3RlZC50eHQKQEAgLTEsNSArMSwzIEBACiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBt
ZXNzYWdlID0gbnVsbAotCi1OT1RSVU4gc2hhcmVkIHdvcmtlciB3aXRoIG11bHRpcGxlIGRvY3Vt
ZW50cworUEFTUyBzaGFyZWQgd29ya2VyIHdpdGggbXVsdGlwbGUgZG9jdW1lbnRzCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKaW5kZXggOTdhNGU3YTczYTYzZmRjNmUzMjAy
MTI3M2FmYzgzM2MwMWIyYjQ3MC4uMDlmNjcyZDFjNjIxN2EwYzViYTMxZmVjNjRkMmI5MzVjNTM4
ZmUyZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSwz
IEBACiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1USU1FT1VU
IG1lc3NhZ2VjaGFubmVsIGluIHNoYXJlZCB3b3JrZXIgVGVzdCB0aW1lZCBvdXQKK1BBU1MgbWVz
c2FnZWNoYW5uZWwgaW4gc2hhcmVkIHdvcmtlcgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3JlcG9ydGlu
Zy1lcnJvcnMvMDAzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvcmVwb3J0aW5nLWVycm9ycy8wMDMtZXhw
ZWN0ZWQudHh0CmluZGV4IGY4ZjZlZWMzNDQzN2QzZWRlNTdiODZiZmFkMzdiYmJkNzU3MGVlOGQu
LmE1NjFmYzNjZGJhYzkyZjAzM2FiOTVmMGU3N2RjZGYzYWZkYjM3ZmUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRp
Y3MvcmVwb3J0aW5nLWVycm9ycy8wMDMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvcmVwb3J0aW5n
LWVycm9ycy8wMDMtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIHNoYXJlZCB3
b3JrZXIsIG5vIGVycm9yIGV2ZW50IG9uIHdvcmtlciBvciBwb3J0IGFzc2VydF91bnJlYWNoZWQ6
IGVycm9yIG9uIHdvcmtlciBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK1BBU1Mgc2hhcmVkIHdv
cmtlciwgbm8gZXJyb3IgZXZlbnQgb24gd29ya2VyIG9yIHBvcnQKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGlj
cy9yZXBvcnRpbmctZXJyb3JzLzAwNC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3JlcG9ydGluZy1lcnJv
cnMvMDA0LWV4cGVjdGVkLnR4dAppbmRleCA0NzEzZjdmMDY5YjVjMmU3MGYyNDAxNThhODNhMTgw
ZTZkNDFhMDM2Li4yMzA0NzcyMmY3MTMwMjgxOTNkODkxMWM5ODdlM2YwOTI2MDFlZjRjIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvc2VtYW50aWNzL3JlcG9ydGluZy1lcnJvcnMvMDA0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNz
L3JlcG9ydGluZy1lcnJvcnMvMDA0LWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKIAotRkFJ
TCBzaGFyZWQgd29ya2VyIGluIHR3byBkb2N1bWVudHMgYW5kIHdpbmRvdy5vbmVycm9yIGFzc2Vy
dF91bnJlYWNoZWQ6IChvdXRlcikgZXJyb3Igb24gd29ya2VyIFJlYWNoZWQgdW5yZWFjaGFibGUg
Y29kZQorUEFTUyBzaGFyZWQgd29ya2VyIGluIHR3byBkb2N1bWVudHMgYW5kIHdpbmRvdy5vbmVy
cm9yCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dAppbmRleCBh
MDg5YzIyNDg5ZTJkNjY3OGU1YjI0ZTJmZmVmZTAyNDNjMWVhOGNkLi4xOWU0NmIwOWE1NmFjODMz
NTMzZDU3YjIwMWE5ZTYwMDA0ODdiMGM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2It
dXJsLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItZnJvbS1ibG9iLXVybC53aW5k
b3ctZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNSBAQAogCi1IYXJuZXNzIEVycm9yIChUSU1FT1VU
KSwgbWVzc2FnZSA9IG51bGwKLQotRkFJTCBDcmVhdGluZyBhIHNoYXJlZCB3b3JrZXIgZnJvbSBh
IGJsb2IgVVJMIHdvcmtzLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAid29ya2VyX09LXzIiIGJ1
dCBnb3QgIndvcmtlcl9PS18xIgorUEFTUyBDcmVhdGluZyBhIHNoYXJlZCB3b3JrZXIgZnJvbSBh
IGJsb2IgVVJMIHdvcmtzLgogUEFTUyBDcmVhdGluZyBhIHNoYXJlZCB3b3JrZXIgZnJvbSBhIGJs
b2IgVVJMIHdvcmtzIGltbWVkaWF0ZWx5IGJlZm9yZSByZXZva2luZy4KLVRJTUVPVVQgQ29ubmVj
dGluZyB0byBhIHNoYXJlZCB3b3JrZXIgb24gYSByZXZva2VkIGJsb2IgVVJMIHdvcmtzLiBUZXN0
IHRpbWVkIG91dAorUEFTUyBDb25uZWN0aW5nIHRvIGEgc2hhcmVkIHdvcmtlciBvbiBhIHJldm9r
ZWQgYmxvYiBVUkwgd29ya3MuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWluLWRhdGEtdXJsLWNv
bnRleHQud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWluLWRhdGEtdXJsLWNvbnRleHQu
d2luZG93LWV4cGVjdGVkLnR4dAppbmRleCAyMDZmNTZlMGQxMDdhNjVhYzA2ZjVjYTVkNGNlZjdj
Yjg2YmY0YWNkLi4wNWU2NmEzYzc2MDFhYjdkNDBlYjZhZWRiMWNiZWFhZTA2OTNjNGE1IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvc2hhcmVkLXdvcmtlci1pbi1kYXRhLXVybC1jb250ZXh0LndpbmRvdy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L3NoYXJlZC13b3JrZXItaW4tZGF0YS11cmwtY29udGV4dC53aW5kb3ctZXhwZWN0ZWQudHh0CkBA
IC0xLDQgKzEsNSBAQAorQ09OU09MRSBNRVNTQUdFOiBDYW5ub3QgbG9hZCBodHRwOi8vbG9jYWxo
b3N0Ojg4MDAvd29ya2Vycy9zdXBwb3J0L3Bvc3QtbWVzc2FnZS1vbi1sb2FkLXdvcmtlci5qcy4K
IAotRkFJTCBDcmVhdGUgYSBzaGFyZWQgd29ya2VyIGluIGEgZGF0YSB1cmwgZnJhbWUgYXNzZXJ0
X2VxdWFsczogZXhwZWN0ZWQgIlBBU1MiIGJ1dCBnb3QgIlNoYXJlZFdvcmtlciBjb25zdHJ1Y3Rp
b24gdW5leHBlY3RlZGx5IHN5bmNocm9ub3VzbHkgZmFpbGVkIgotRkFJTCBDcmVhdGUgYSBkYXRh
IHVybCBzaGFyZWQgd29ya2VyIGluIGEgZGF0YSB1cmwgZnJhbWUgYXNzZXJ0X2VxdWFsczogZXhw
ZWN0ZWQgIlBBU1MiIGJ1dCBnb3QgIlNoYXJlZFdvcmtlciBjb25zdHJ1Y3Rpb24gdW5leHBlY3Rl
ZGx5IHN5bmNocm9ub3VzbHkgZmFpbGVkIgorUEFTUyBDcmVhdGUgYSBzaGFyZWQgd29ya2VyIGlu
IGEgZGF0YSB1cmwgZnJhbWUKK1BBU1MgQ3JlYXRlIGEgZGF0YSB1cmwgc2hhcmVkIHdvcmtlciBp
biBhIGRhdGEgdXJsIGZyYW1lCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlv
bnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQK
aW5kZXggNmZmZWUyNzM5MGQ5NzhlNGU2YjU2OTFmOGRiYTdlM2VlZDBhODMyZC4uYWU0NWI0ZDI3
Mzk2NDQ2OTNjMmMxNjQ5NzVjNTNkNTY2YmJhMjhmNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFt
ZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9u
cy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgVGVzdCB0aGUgbmFtZSBwcm9w
ZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBtaXhpbmcgY29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29u
c3RydWN0b3Igc3RyaW5ncyBFcnJvcjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290
IDEKK1BBU1MgVGVzdCB0aGUgbmFtZSBwcm9wZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBtaXhpbmcg
Y29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29uc3RydWN0b3Igc3RyaW5ncwogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW9wdGlv
bnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CmluZGV4IGY2NTY5NDYxNTBkYjE3YzA5YmJjNGFlM2Vk
YTg1OGY5MTczZWQ2ZTEuLjRmOTlhMTM0MDllN2U4Njg0NGI1NTE4YzUxMGMzMDhmZGZlNjA3MjMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFy
ZWQtd29ya2VyLW9wdGlvbnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CkBAIC0xLDI4ICsxLDI2IEBA
CiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1USU1FT1VUIENv
bm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBi
ZSBibG9ja2VkOiBkZWZhdWx0IHRvIG1vZHVsZSBUZXN0IHRpbWVkIG91dAotTk9UUlVOIENvbm5l
Y3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBi
bG9ja2VkOiBtb2R1bGUgdG8gZGVmYXVsdAotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBjbGFzc2ljIHRv
IG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVu
dCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBtb2R1bGUgdG8gY2xhc3NpYwotTk9UUlVOIENv
bm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBi
ZSBibG9ja2VkOiBkZWZhdWx0IHRvIG9taXQgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBkZWZhdWx0IHRvIGluY2x1ZGUgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hh
cmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0
IHRvIGRlZmF1bHQgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIHNhbWUt
b3JpZ2luIGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0
aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBpbmNsdWRlIGlu
IGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJl
bnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBjbGFz
c2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9w
dGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIGluY2x1ZGUgaW4gY2xhc3Np
YwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIGRlZmF1bHQgaW4gY2xhc3NpYwotTk9U
UlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNo
b3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5l
Y3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBi
bG9ja2VkOiBpbmNsdWRlIHRvIHNhbWUtb3JpZ2luIGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0
aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxv
Y2tlZDogZGVmYXVsdCB0byBvbWl0IGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hh
cmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZh
dWx0IHRvIGluY2x1ZGUgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29y
a2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gZGVm
YXVsdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBzYW1lLW9yaWdpbiBp
biBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJl
bnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBpbmNsdWRlIGluIG1vZHVsZQot
Tk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25z
IHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBvbWl0IGluIG1vZHVsZQotTk9UUlVO
IENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3Vs
ZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIG1vZHVsZQotTk9UUlVOIENv
bm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBi
ZSBibG9ja2VkOiBpbmNsdWRlIHRvIGRlZmF1bHQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGlu
ZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2Nr
ZWQ6IGluY2x1ZGUgdG8gb21pdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJl
ZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVk
ZSB0byBzYW1lLW9yaWdpbiBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29y
a2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8g
bW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBtb2R1bGUgdG8gZGVmYXVsdAorUEFTUyBDb25uZWN0
aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxv
Y2tlZDogY2xhc3NpYyB0byBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2Vy
IHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG1vZHVsZSB0byBjbGFz
c2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIG9taXQgaW4gY2xhc3NpYworUEFTUyBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogZGVmYXVsdCB0byBpbmNsdWRlIGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGlu
ZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2Nr
ZWQ6IG9taXQgdG8gZGVmYXVsdCBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVk
IHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRv
IHNhbWUtb3JpZ2luIGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2Vy
IHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVk
ZSBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZl
cmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBvbWl0IGluIGNs
YXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9w
dGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIGluY2x1ZGUgaW4gY2xhc3Np
YworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9u
cyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGluIGNsYXNzaWMKK1BBU1Mg
Q29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxk
IGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gb21pdCBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBpbmNsdWRlIHRvIHNhbWUtb3JpZ2luIGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBz
aGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRl
ZmF1bHQgdG8gb21pdCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2Vy
IHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gaW5j
bHVkZSBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlm
ZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gZGVmYXVsdCBpbiBtb2R1
bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlv
bnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gc2FtZS1vcmlnaW4gaW4gbW9kdWxlCitQQVNT
IENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3Vs
ZCBiZSBibG9ja2VkOiBvbWl0IHRvIGluY2x1ZGUgaW4gbW9kdWxlCitQQVNTIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBzYW1lLW9yaWdpbiB0byBvbWl0IGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJl
ZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1v
cmlnaW4gdG8gaW5jbHVkZSBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29y
a2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8g
ZGVmYXVsdCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGgg
ZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gb21pdCBpbiBt
b2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9w
dGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gc2FtZS1vcmlnaW4gaW4gbW9kdWxl
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMveGhyL29wZW4tdXJsLXJlZGlyZWN0ZWQtc2hhcmVkd29ya2VyLW9yaWdpbi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVu
LXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0CmluZGV4IDFl
MmQzOTkyZjZkNWRmMzIyMDdhNmIwZjYxOWE2ZDcxMTgxMjQwMGQuLjU5Y2FjYTQ4NmY4ZGVhYzA3
ODljOTdiNGZlZThhNTI1OTdhNWU1NDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL29wZW4tdXJsLXJlZGlyZWN0ZWQtc2hhcmVkd29y
a2VyLW9yaWdpbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3Jp
Z2luLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVy
bmFsIFVSTCBodHRwOi8vd3d3Mi5sb2NhbGhvc3Q6ODgwMC94aHIvcmVzb3VyY2VzL2luc3BlY3Qt
aGVhZGVycy5weT9maWx0ZXJfbmFtZT1vcmlnaW4mY29ycwogCiBGQUlMIFJlZmVyZXIgaGVhZGVy
IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJSZWZlcmVyOiBodHRwOi8vbG9jYWxob3N0Ojg4MDAv
eGhyL3Jlc291cmNlcy93b3JrZXJ4aHItb3JpZ2luLXJlZmVycmVyLmpzXG4iIGJ1dCBnb3QgIlJl
ZmVyZXI6IGh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC94aHIvcmVzb3VyY2VzL3JlZGlyZWN0LnB5P2xv
Y2F0aW9uPXdvcmtlcnhoci1vcmlnaW4tcmVmZXJyZXIuanNcbiIKIEZBSUwgT3JpZ2luIGhlYWRl
ciBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiT3JpZ2luOiBodHRwOi8vbG9jYWxob3N0Ojg4MDBc
biIgYnV0IGdvdCAiIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2Nv
bm5lY3Qtc3JjL3NoYXJlZC13b3JrZXItY29ubmVjdC1zcmMtYWxsb3dlZC5zdWItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3Jr
ZXItY29ubmVjdC1zcmMtYWxsb3dlZC5zdWItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwN2Jl
YmRjZmNlZmUxZDNiOGFiMWUwNWRmMmFlNTZiODNhODA2NjcKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvY29ubmVjdC1zcmMvc2hhcmVkLXdvcmtlci1jb25u
ZWN0LXNyYy1hbGxvd2VkLnN1Yi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1Mg
RXhwZWN0aW5nIGxvZ3M6IFsieGhyIGFsbG93ZWQiLCJURVNUIENPTVBMRVRFIl0KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDU1MzhiNWIz
ODZhMDZiMzU3MDFiZTA3MDBmNTlkODgxOGQzZDYxNzYuLmFkZWU5Yjg1ZWQzMTc4MTllNGYyNjk4
OWY2YjUwMDczNWY1MjZiZTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTIyMyw2ICsyMjMsNyBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3hoci8wMDMuaHRtbCBbIFNraXAgXQogaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy94aHIvMDA0Lmh0bWwg
WyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRp
Y3MveGhyLzAwNi5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRvdy5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1p
bi1kYXRhLXVybC1jb250ZXh0LndpbmRvdy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25zLmh0
bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFy
ZWQtd29ya2VyLW9wdGlvbnMtbWlzbWF0Y2guaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItcGFyc2UtZXJyb3ItZmFpbHVy
ZS5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IGFlMjU2NDUwYjkwOWYyYzUxMDZhMDc1ZTVkMzE2NjkxYWZhZGY1MGEuLjE5ZmJjOTQ5
ZDRhZDFmYzc4YjU0NDJiOGM2MDZlODQ0ZDg5Y2ExMTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9UZXN0RXhwZWN0YXRpb25zCkBAIC0zMzUsNiArMzM1LDcgQEAgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy94aHIvMDAzLmh0bWwgWyBTa2lwIF0K
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MveGhyLzAw
NC5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
c2VtYW50aWNzL3hoci8wMDYuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItZnJvbS1ibG9iLXVybC53aW5kb3cuaHRtbCBb
IFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13
b3JrZXItaW4tZGF0YS11cmwtY29udGV4dC53aW5kb3cuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0
aW9ucy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvc2hhcmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLXBhcnNlLWVycm9y
LWZhaWx1cmUuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450954</attachid>
            <date>2022-02-04 17:02:16 -0800</date>
            <delta_ts>2022-02-07 08:21:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235958-20220204170216.patch</filename>
            <type>text/plain</type>
            <size>318976</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNmMmQxMTcxN2RhZTg0
YTVjYmI3NWRmM2Y4NmIxODMzYmE3ZjIxOS4uYjA1NmEyYzBhZDRiMmUzODk1OWQyMDZlMjVlZTNh
ODVhYWNmNTRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMSBAQAorMjAyMi0wMi0wNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBz
aGFyaW5nIFNoYXJlZCBXb3JrZXJzIChpbmNsdWRpbmcgYWNyb3NzIFdlYlByb2Nlc3NlcykKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTk1OAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vODgzMzA2NjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNoYXJpbmcgU2hhcmVkIFdv
cmtlcnMsIGluY2x1ZGluZyBhY3Jvc3MgV2ViUHJvY2Vzc2VzLiBUaGUgYXJjaGl0ZWN0dXJlCisg
ICAgICAgIGlzIG1vZGVsZWQgYWZ0ZXIgdGhlIG9uZSB3ZSB1c2UgZm9yIFNlcnZpY2UgV29ya2Vy
cyBzaW5jZSB0aGV5IGFyZSB2ZXJ5IHNpbWlsYXIuIEkgdHJpZWQKKyAgICAgICAgc2hhcmluZyBh
cyBtdWNoIGNvZGUgYXMgcG9zc2libGUgd2l0aCBTZXJ2aWNlIFdvcmtlcnMgYnV0IHNvbWUgbW9y
ZSB3b3JrIGNhbiBwcm9iYWJseSBiZQorICAgICAgICBkb25lIGluIHRoaXMgYXJlYS4KKworICAg
ICAgICBXaXRoIHRoaXMgY2hhbmdlLCBzaGFyZWQgd29ya2VycyBzaG91bGQgYmUgbW9zdGx5IGZ1
bmN0aW9uYWwgYW5kIHNwZWMgY29tcGxpYW50LiBIb3dldmVyLAorICAgICAgICB0aGUgZmVhdHVy
ZSByZW1haW5zIGRpc2FibGVkIGJ5IGRlZmF1bHQgZm9yIG5vdyBhcyB0aGVyZSBhcmUgc3RpbGwg
V1BUIHRlc3RzIGZhaWx1cmVzIEkKKyAgICAgICAgbmVlZCB0byBpbnZlc3RpZ2F0ZS4gQWxzbywg
SSBuZWVkIHRvIGltcGxlbWVudCBhIGJldHRlciBwcm9jZXNzIHN1c3BlbnNpb24gbG9naWMgb24g
aU9TCisgICAgICAgIHRvIHJlcGxhY2UgdGhlIGhhY2sgSSBhZGRlZCBpbiB0aGlzIHBhdGNoICh0
byBtYWtlIHRoZSB0ZXN0cyBydW4gcmVsaWFibHkgb24gaU9TKS4KKworICAgICAgICBBcyB3aXRo
IFNlcnZpY2UgV29ya2VycywgU2hhcmVkIFdvcmtlcnMgYXJlIHBhcnRpdGlvbmVkIGJ5IChUb3Ag
T3JpZ2luICsgRnJhbWUgT3JpZ2luKQorICAgICAgICBmb3IgcHJpdmFjeSByZWFzb25zLiBUaGlz
IGlzIGFjaGlldmVkIHZpYSB0aGUgU2hhcmVkV29ya2VyS2V5IG9iamVjdCB0aGF0IHdlIHVzZSBh
cworICAgICAgICBIYXNoTWFwIGtleS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQg
YnkgZXhpc3RpbmcgV1BUIHRlc3RzLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAg
ICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogcGxhdGZvcm0vTG9nZ2luZy5oOgorICAgICAgICAqIHdvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXI6
OmZyb21JZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6U2hhcmVkV29ya2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6flNoYXJlZFdvcmtlcik6CisgICAgICAgIChXZWJD
b3JlOjpTaGFyZWRXb3JrZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkV29ya2VyOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRX
b3JrZXI6OnRlcm1pbmF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyLmg6CisgICAgICAgICogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmlkbDoK
KyAgICAgICAgKiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk6Omhhc2ggY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyS2V5OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkV29ya2VyS2V5OjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6
CisgICAgICAgIChXVEY6OkRlZmF1bHRIYXNoPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleT46Omhh
c2gpOgorICAgICAgICAoV1RGOjpEZWZhdWx0SGFzaDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk+
OjplcXVhbCk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6U2hhcmVkV29ya2Vy
S2V5Pjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk+Ojppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgICogd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5jcHA6IFJlbW92ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyTWFuYWdlcjo6Y29ubmVjdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzY3JpcHRMb2FkRmFpbGVkKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlck1hbmFnZXI6OnNjcmlwdExvYWRl
ZFN1Y2Nlc3NmdWxseSk6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyTWFuYWdlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHdvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbjo6ZmV0Y2hTY3JpcHRJbkNsaWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpub3RpZnlXb3JrZXJPYmplY3RPZkxv
YWRDb21wbGV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdCk6CisgICAgICAgICogd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAu
CisgICAgICAgICogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRl
cjo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6Om5v
dGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6
b3B0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXI6OmlkZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyOjpvcHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrZXJz
L3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaGFyZWRXb3Jr
ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6
OnN0b3BTaGFyZWRXb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXI6OnN0b3BBbGxTaGFyZWRXb3JrZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzZXRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpjb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpyZWdpc3RlclNoYXJlZFdvcmtl
clRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6
Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6dGVybWluYXRlU2hhcmVkV29ya2VyKToK
KyAgICAgICAgKiB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXI6OkNvbm5lY3Rpb246On5Db25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uOjppc0Nsb3NlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6c2V0QXND
bG9zZWQpOgorICAgICAgICAqIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2VuZXJhdGVXb3JrZXJQYXJhbWV0ZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpTaGFyZWRXb3Jr
ZXJUaHJlYWRQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eTo6flNoYXJlZFdvcmtlclRocmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdv
cmtlclRocmVhZFByb3h5Ojpub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eTo6Y3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tUb0xvYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tG
b3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6bmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6c3RhcnRXb3JrZXJHbG9iYWxTY29wZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6dGVy
bWluYXRlV29ya2VyR2xvYmFsU2NvcGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRh
c2tUb1dvcmtlckdsb2JhbFNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZFdvcmtlclRocmVhZFByb3h5OjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Ondvcmtlck9iamVjdERl
c3Ryb3llZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eTo6c3VzcGVuZEZvckJhY2tGb3J3YXJkQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnJlc3VtZUZvckJhY2tGb3J3YXJkQ2FjaGUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Ondv
cmtlckdsb2JhbFNjb3BlRGVzdHJveWVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpjb25maXJtTWVz
c2FnZUZyb21Xb3JrZXJPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
V29ya2VyVGhyZWFkUHJveHk6OnJlcG9ydFBlbmRpbmdBY3Rpdml0eSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6d29ya2VyR2xvYmFsU2NvcGVE
ZXN0cm95ZWRJbnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zaGFyZWQvY29u
dGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oOgorCiAyMDIyLTAyLTA0ICBBbmRyZXMgR29u
emFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBDYWNoZSBzb21lIGV4cGVu
c2l2ZSBBWElzb2xhdGVkT2JqZWN0IHByb3BlcnRpZXMgbGF6aWx5LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlMDRk
NTk3OWU1ZjNkODRlNWRlNDg3ZGI3NmFjYzdmZTNlMTVmMDQ0Li5iNWYwMDYwNjI2NTg4NWVjYThm
Mzk5ZjViOTA5NjQ1YjQzNDYzZjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5NiBAQAorMjAyMi0w
Mi0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBw
b3J0IGZvciBzaGFyaW5nIFNoYXJlZCBXb3JrZXJzIChpbmNsdWRpbmcgYWNyb3NzIFdlYlByb2Nl
c3NlcykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NTk1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODgzMzA2NjY+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNoYXJpbmcg
U2hhcmVkIFdvcmtlcnMsIGluY2x1ZGluZyBhY3Jvc3MgV2ViUHJvY2Vzc2VzLiBUaGUgYXJjaGl0
ZWN0dXJlCisgICAgICAgIGlzIG1vZGVsZWQgYWZ0ZXIgdGhlIG9uZSB3ZSB1c2UgZm9yIFNlcnZp
Y2UgV29ya2VycyBzaW5jZSB0aGV5IGFyZSB2ZXJ5IHNpbWlsYXIuIEkgdHJpZWQKKyAgICAgICAg
c2hhcmluZyBhcyBtdWNoIGNvZGUgYXMgcG9zc2libGUgd2l0aCBTZXJ2aWNlIFdvcmtlcnMgYnV0
IHNvbWUgbW9yZSB3b3JrIGNhbiBwcm9iYWJseSBiZQorICAgICAgICBkb25lIGluIHRoaXMgYXJl
YS4KKworICAgICAgICBXaXRoIHRoaXMgY2hhbmdlLCBzaGFyZWQgd29ya2VycyBzaG91bGQgYmUg
bW9zdGx5IGZ1bmN0aW9uYWwgYW5kIHNwZWMgY29tcGxpYW50LiBIb3dldmVyLAorICAgICAgICB0
aGUgZmVhdHVyZSByZW1haW5zIGRpc2FibGVkIGJ5IGRlZmF1bHQgZm9yIG5vdyBhcyB0aGVyZSBh
cmUgc3RpbGwgV1BUIHRlc3RzIGZhaWx1cmVzIEkKKyAgICAgICAgbmVlZCB0byBpbnZlc3RpZ2F0
ZS4gQWxzbywgSSBuZWVkIHRvIGltcGxlbWVudCBhIGJldHRlciBwcm9jZXNzIHN1c3BlbnNpb24g
bG9naWMgb24gaU9TCisgICAgICAgIHRvIHJlcGxhY2UgdGhlIGhhY2sgSSBhZGRlZCBpbiB0aGlz
IHBhdGNoICh0byBtYWtlIHRoZSB0ZXN0cyBydW4gcmVsaWFibHkgb24gaU9TKS4KKworICAgICAg
ICBBcyB3aXRoIFNlcnZpY2UgV29ya2VycywgU2hhcmVkIFdvcmtlcnMgYXJlIHBhcnRpdGlvbmVk
IGJ5IChUb3AgT3JpZ2luICsgRnJhbWUgT3JpZ2luKQorICAgICAgICBmb3IgcHJpdmFjeSByZWFz
b25zLiBUaGlzIGlzIGFjaGlldmVkIHZpYSB0aGUgU2hhcmVkV29ya2VyS2V5IG9iamVjdCB0aGF0
IHdlIHVzZSBhcworICAgICAgICBIYXNoTWFwIGtleS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fc2NoZW1lUmVnaXN0cnkpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fk5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xvc2VTaGFyZWRXb3JrZXJDb250
ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjp1bnJlZ2lzdGVyU2hhcmVkV29ya2VyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzaGFyZWRXb3JrZXJDb25uZWN0aW9uKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmVuc3VyZVNoYXJlZFdvcmtlclNlcnZlcik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb246OnNoYXJlZFdvcmtlclNlcnZlcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24uY3BwLgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OldlYlNoYXJl
ZFdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6fldlYlNoYXJlZFdv
cmtlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OnJlZ2lzdHJhYmxlRG9tYWluIGNv
bnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29y
a2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OmlkZW50aWZp
ZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OmtleSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6d29ya2VyT3B0aW9ucyBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6b3JpZ2luIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyOjp1cmwgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTaGFyZWRXb3JrZXI6OnNoYXJlZFdvcmtlck9iamVjdHMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTaGFyZWRXb3JrZXI6OmlzUnVubmluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNoYXJlZFdvcmtlcjo6bWFya0FzUnVubmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJl
ZFdvcmtlcjo6ZmV0Y2hSZXN1bHQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRX
b3JrZXI6OnNldEZldGNoUmVzdWx0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2Vy
OjpkaWRGaW5pc2hGZXRjaGluZyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2hh
cmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OldlYlNoYXJlZFdvcmtlclNlcnZlcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2Vzc2lvbklEKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpkaWRGaW5pc2hGZXRjaGluZ1No
YXJlZFdvcmtlclNjcmlwdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZl
cjo6bmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29udGV4
dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJl
bW92ZUNvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2Vy
U2VydmVyOjpjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI6OnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaHV0RG93blNoYXJlZFdvcmtlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29ubmVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y29udGV4dENvbm5l
Y3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNo
YXJlZFdvcmtlclNlcnZlcjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmg6IEFk
ZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjp+V2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2Vzc2lv
bklEKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6
c2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b246OnJlcXVlc3RTaGFyZWRXb3JrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uOjpzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OmZldGNoU2NyaXB0
SW5DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uOjpub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2Vy
T2JqZWN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2VydmVyIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6d2ViUHJvY2Vzc0lkZW50aWZp
ZXIgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjp3ZWJQcm9jZXNzSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmlwY0Nvbm5lY3Rpb24gY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJEZXN0
aW5hdGlvbklEIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpwb3N0
RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpsYXVuY2hTaGFyZWRXb3JrZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpwb3N0
Q29ubmVjdEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlU2hhcmVkV29ya2VyKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjogQWRk
ZWQuCisgICAgICAgICogUGxhdGZvcm0vTG9nZ2luZy5oOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAodHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9k
ZWNsYXJlZCk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OnRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTaGFyZWRX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6c2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzaGFyZWRXb3JrZXJDb250ZXh0Q29u
bmVjdGlvbk5vTG9uZ2VyTmVlZGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRVc2VyQWdlbnQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZUZy
b21Xb3JrZXJQcm9jZXNzZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZXN0
YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXJGb3JXb3JrZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdl
YlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBkYXRlV29ya2VyVXNl
ckFnZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnRlcm1pbmF0ZVNlcnZp
Y2VXb3JrZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OndvcmtlclByb2Nl
c3Nlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNz
ZXJ0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjppc1NlcnZpY2VXb3Jr
ZXJQYWdlSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2Vydmlj
ZVdvcmtlclByb3hpZXNDb3VudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZyBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpoYXNTZXJ2aWNlV29ya2VyQmFja2dy
b3VuZEFjdGl2aXR5Rm9yVGVzdGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpyZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3Nlcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyRm9yU2VydmljZVdvcmtlcnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6dXBkYXRlU2VydmljZVdvcmtlclVzZXJBZ2VudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5OjpjcmVhdGVGb3JXb3JrZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXRXb3JrZXJVc2VyQWdlbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNoYXJlZFdvcmtl
ckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6c3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3Np
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJC
YWNrZ3JvdW5kUHJvY2Vzc2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6
ZGlzYWJsZVdvcmtlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVuYWJs
ZVdvcmtlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclNl
cnZpY2VXb3JrZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpzZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXNTdG9yZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dXBkYXRlU2VydmljZVdv
cmtlclByb2Nlc3NBc3NlcnRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OmRpc2FibGVTZXJ2aWNlV29ya2Vycyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5hYmxlU2VydmljZVdvcmtlcnMpOiBEZWxldGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Byb3h5Ojppc1J1bm5pbmdTaGFyZWRXb3JrZXJzIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojppc1N0YW5kYWxvbmVTaGFyZWRXb3JrZXJQcm9jZXNzIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojppc1J1bm5pbmdXb3JrZXJz
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpoYXNTZXJ2aWNlV29y
a2VyUGFnZVByb3h5KToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNl
aXZlTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjptX3VzZXJDb250ZW50
Q29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6ZXN0YWJsaXNoQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29y
a2VyT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjp1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpsYXVuY2hTaGFyZWRXb3Jr
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OmNsb3NlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbjo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246On5XZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbjo6cmVxdWVzdFNoYXJlZFdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6
OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnNoYXJlZFdvcmtlck9iamVjdElzR29p
bmdBd2F5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkaWRS
ZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVzdGFibGlzaFNo
YXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorCiAyMDIyLTAyLTA0ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4OTA2OS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCmluZGV4IDZjYjE3NDU5YTdkYTg0ZjVhMjYyOTlkNjcwOGIyYzdiNzNjMGQ2
YzYuLmM5ZjY2ODVmNjJkMTM1YWVmOTgxYjZhMjEyOGExNzA1N2VmM2EyYTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQpAQCAtMTk1OSw5ICsxOTU5LDEyIEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVX
T1JLX0hFQURFUlMKICAgICB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCiAgICAgd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCiAgICAgd29ya2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5o
CisgICAgd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oCisgICAgd29ya2Vycy9Xb3JrZXJPcHRp
b25zLmgKICAgICB3b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKICAgICB3b3Jr
ZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaAogICAgIHdvcmtlcnMvV29ya2Vy
T3JXb3JrbGV0VGhyZWFkLmgKKyAgICB3b3JrZXJzL1dvcmtlclJlcG9ydGluZ1Byb3h5LmgKICAg
ICB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuaAogICAgIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVy
LmgKICAgICB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlckNsaWVudC5oCkBAIC0yMDA1LDkgKzIw
MDgsMTIgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHdvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAogCiAgICAgd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VySWRlbnRpZmllci5oCi0gICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
TWFuYWdlci5oCisgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyS2V5LmgKICAgICB3b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKKyAgICB3b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgKICAgICB3b3JrZXJzL3NoYXJlZC9T
aGFyZWRXb3JrZXJQcm92aWRlci5oCisKKyAgICB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgKICAgICB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJl
ZFdvcmtlclRocmVhZC5oCiAgICAgd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJU
aHJlYWRQcm94eS5oCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggYjNmNWUwYjc4NDE3MGJmMDI0ZDc4ODM5
ZmZjOTA4MTcyNGE3NGNhNi4uNWVlNTAwY2I2ZDEwZjUwYjdhMzUzNWU0OWFhYmI3YzE5MDUyZjc1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTI3ODUsMTAgKzI3ODUsMTAgQEAgd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCiB3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNw
cAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCi13b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbi5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVy
LmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcAord29ya2Vy
cy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKIHdvcmtlcnMv
c2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkLmNwcAogd29ya2Vycy9zaGFyZWQvY29u
dGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAKIHdvcmtsZXRzL1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGM1ZjQ0ZWYwNGE3MDU4YjE5YjI0Yzg1ZDExZDYzZDk0NTRlM2Ri
MGMuLjU2YTcxNTlkYmFlZTJmNjA2OGE4YTI2ZGQ1ZWZjZWIyZDEyZTdhNTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkwMyw3
ICs5MDMsNyBAQAogCQkyRTQzNDY0QjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2Nv
cGVQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkU0MzQ2MzkwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuaCAqLzsg
fTsKIAkJMkU0MzQ2NEQwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckxvY2F0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzQjBGNTQ2QTgy
MDBCMEYxQkEgLyogV29ya2VyTG9jYXRpb24uaCAqLzsgfTsKIAkJMkU0MzQ2NTAwRjU0NkE4MjAw
QjBGMUJBIC8qIFdvcmtlck1lc3NhZ2luZ1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzRTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
TWVzc2FnaW5nUHJveHkuaCAqLzsgfTsKLQkJMkU0MzQ2NTEwRjU0NkE4MjAwQjBGMUJBIC8qIFdv
cmtlck9iamVjdFByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRTQzNDYzRjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyT2JqZWN0UHJveHkuaCAq
LzsgfTsKKwkJMkU0MzQ2NTEwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzRjBG
NTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyT2JqZWN0UHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTQzNDY1MzBGNTQ2QTgyMDBCMEYxQkEg
LyogV29ya2VyUnVuTG9vcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkU0MzQ2NDEwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclJ1bkxvb3AuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTQzNDY1NTBG
NTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDY0MzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
VGhyZWFkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMkU3NTg0MUUxMjc3OUFEQTAwNjI2MjhCIC8qIEZpbGVSZWFkZXJMb2FkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNzU4NDFCMTI3NzlBREEw
MDYyNjI4QiAvKiBGaWxlUmVhZGVyTG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExMjUsNyArMTEyNSw3IEBACiAJCTQxNkEwNkExMjND
Q0FEMDMwMDM0NzEwOSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2QTA2OTYyM0NDQUE5RjAw
MzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RDc1QTIyMEM2NTFBNTAwRDAy
RDJDIC8qIE5ldHdvcmtMb2FkSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkQ3NTlGMjBDNjQ0MTMwMEQwMkQyQyAvKiBOZXR3b3Jr
TG9hZEluZm9ybWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNDE2RTBCM0EyMDlCQzNDQjAwNEE5NUQ5IC8qIEZldGNoSWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTBCMzcy
MDlCQzNDMjAwNEE5NUQ5IC8qIEZldGNoSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAv
KiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE2RTI5QTUxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGlu
Z1Byb3h5LmggKi87IH07CisJCTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBv
cnRpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDE2RTI5QTUxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgx
QkJEMTJERjAwMEEzRjY0IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzEx
MEQwMEI3NjREOSAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgxQkJEMTJE
RjAwMEEzRjY1IC8qIEpTRE9NQmluZGluZ0ludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0
REEgLyogSlNET01CaW5kaW5nSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFODFCQkQxMkRGMDAwQTNGNzQg
LyogVHJhbnNmb3JtU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjRFQSAvKiBU
cmFuc2Zvcm1TdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzQ3LDE0ICsxMzQ3LDE2IEBACiAJCTQ2N0E2
OEQ3Mjc1RUE5OTEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0E2OEQ0Mjc1RUE5OEIwMDlCMzFD
NSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0NjdBNjhEODI3NUVBOTk1MDA5QjMxQzUgLyogU2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjdBNjhENTI3NUVBOThDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVyLmggKi87IH07CiAJCTQ2N0E2OEQ5Mjc1RUE5OTgwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJU
aHJlYWRQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY3QTY4RDYyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDY3QTY4
REEyNzVFQTk5QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0E2OEQyMjc1RUE5OEEwMDlCMzFD
NSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4MkQyMDAxRjc5NzgzMDAwQzg2M0RCIC8qIFN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjgyRDFGRjFGNzk3ODIzMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
NjgzNDRFMDFFRERGQUFBMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAv
KiBET01SZWN0TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQ2ODNERjQwMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFs
U2NvcGVCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NjgzREYzRTI3NjdERjk4MDA3RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFz
ZS5oICovOyB9OwogCQk0NjgzREY0MTI3NjdFOTFBMDA3RDAwQzggLyogU2hhZG93UmVhbG1HbG9i
YWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDY4M0RGM0IyNzY3REYyNjAwN0QwMEM4IC8qIFNoYWRvd1JlYWxtR2xvYmFsU2NvcGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0Njg4RUUzQzI2
REQyNjEwMDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5Nb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njg4RUUzQTI2REQyNjBDMDAyQUY1QzQgLyogQ3Jv
c3NPcmlnaW5Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNDY5NDNEQzkyNzYzRjgxNzAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2OTQzREM3Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDY5
ODVGMjMyN0E0QTZBRDAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktleS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5ODVGMjIyN0E0QTY4NjAwOTdBMzJC
IC8qIFNoYXJlZFdvcmtlcktleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ2OUNDQ0ZFMjY5RDAyMUMwMDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFu
bmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjlD
Q0NGQzI2OUQwMjAyMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2OUQ3N0I4MjcwMTYyNTEwMDE0
MkZBNiAvKiBOYXZpZ2F0aW9uUmVxdWVzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjlENzdCNjI3MDE2MjUwMDAxNDJGQTYgLyogTmF2aWdhdGlv
blJlcXVlc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTQ2QTc4QjM0Mjc5OUJENzEwMDExNTRGRSAvKiBXb3JrZXJPcHRpb25zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzFCMUQyNjI2RjE4QTRC
MDA4ODJEQTIgLyogV29ya2VyT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQ2QUFBQTNEMjVEMzYzMjAwMEJBRjQyRiAvKiBBdWRpb0Zp
bGVSZWFkZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZBQUFBM0EyNUQzNjMxNDAwQkFGNDJGIC8qIEF1ZGlvRmlsZVJlYWRlckNvY29hLmgg
Ki87IH07CiAJCTQ2QjYzRjZDMUM2RThEMTkwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9t
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI2M0Y2
QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QjY1MEREMjI5NjI2MjcwMEZE
OEFBNCAvKiBQYWdlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDZCNjUwREIyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEz
NzUsNiArMTM3Nyw3IEBACiAJCTQ2QzY5NkNDMUU3MjA1RkMwMDU5NzkzNyAvKiBDUFVNb25pdG9y
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5
NkNBMUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmNwcCAqLzsgfTsKIAkJNDZDODNFRkUx
QTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM4M0VGQzFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90
aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0NkNBOUM0NDFGOTdCQkU5MDA0Q0ZDM0EgLyogVmlzaWJpbGl0eVN0YXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkNBOUM0MTFGOTdCQkU3MDA0
Q0ZDM0EgLyogVmlzaWJpbGl0eVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDZDRjUwNEEyN0FCMUVBNDAwNzBEQkM4IC8qIFNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkNGNTA0ODI3QUIxRUExMDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NkQwMDA0MDI2QTBGRUIzMDBEMUJGMUUgLyogU3VibWl0RXZlbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RDAwMDNFMjZBMEZFNkYwMEQx
QkYxRSAvKiBTdWJtaXRFdmVudC5oICovOyB9OwogCQk0NkRBNEEwMjI3QUIwMzkzMDBFMzc1QTgg
LyogVHJhbnNmZXJyZWRNZXNzYWdlUG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZEQTRBMDAyN0FCMDM4RDAwRTM3NUE4IC8qIFRyYW5zZmVycmVk
TWVzc2FnZVBvcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0NkRCQjY1MDFBQjhDOTZGMDBEOUE4MTMgLyogUG93ZXJPYnNlcnZlck1hYy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZEQkI2NEUxQUI4
Qzk2RjAwRDlBODEzIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTI0NSw4ICs5MjQ4LDYgQEAKIAkJNDY3QTY4
Q0YyNzVFQTk4OTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDY3QTY4RDAyNzVFQTk4OTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRo
cmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJUaHJlYWQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdBNjhEMTI3NUVBOThBMDA5QjMxQzUgLyogU2hh
cmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtl
clNjcmlwdExvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2N0E2OEQy
Mjc1RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNoYXJlZFdvcmtlck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDY3
QTY4RDMyNzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2hhcmVkV29ya2VyTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2N0E2OEQ0Mjc1RUE5OEIwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2N0E2OEQ1Mjc1RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2N0E2OEQ2Mjc1RUE5OEMwMDlCMzFDNSAvKiBT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJUaHJl
YWRQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTI2Miw2ICs5MjYzLDgg
QEAKIAkJNDY4M0RGM0UyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29w
ZUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTaGFkb3dSZWFsbUds
b2JhbFNjb3BlQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njg4RUUzQTI2
REQyNjBDMDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5Nb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyb3Nz
T3JpZ2luTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjhCOEJERTI1Q0M4
NDkzMDBGNjc4MjIgLyogSlNCYXNlQXVkaW9Db250ZXh0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQmFzZUF1ZGlvQ29udGV4dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ2OTQzREM3Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5ODVGMjIyN0E0QTY4NjAwOTdBMzJC
IC8qIFNoYXJlZFdvcmtlcktleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
aGFyZWRXb3JrZXJLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5Q0NDRkEy
NjlEMDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQnJvYWRjYXN0Q2hhbm5lbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
OUNDQ0ZDMjY5RDAyMDIwMDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEJyb2FkY2FzdENoYW5uZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5
Q0NDRkQyNjlEMDIwMzAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEJyb2Fk
Y2FzdENoYW5uZWwuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTMwMiw2ICs5
MzA1LDggQEAKIAkJNDZDODNFRkMxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlb05vdGlmaWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2Q0E5QzQxMUY5N0JCRTcwMDRDRkMzQSAvKiBWaXNpYmlsaXR5
U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlzaWJpbGl0eVN0YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2Q0E5QzQyMUY5N0JCRTcwMDRDRkMz
QSAvKiBWaXNpYmlsaXR5U3RhdGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFZpc2liaWxp
dHlTdGF0ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2Q0Y1MDQ4MjdBQjFF
QTEwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0NkNGNTA0OTI3QUIxRUExMDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkQwMDAzQzI2QTBGRTZGMDBEMUJGMUUg
LyogU3VibWl0RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U3VibWl0RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkQwMDAzRTI2
QTBGRTZGMDBEMUJGMUUgLyogU3VibWl0RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3VibWl0RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZE
MDAwM0YyNkEwRkU3MDAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBTdWJtaXRFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
MTU2OCw2ICsyMTU3Myw4IEBACiAJCTQ2NDdDRTYxMjdBQUUxREEwMDlDQkQ0OCAvKiBjb250ZXh0
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0NkNGNTA0
OTI3QUIxRUExMDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwICovLAor
CQkJCTQ2Q0Y1MDQ4MjdBQjFFQTEwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ci5oICovLAogCQkJCTQ2N0E2OEQwMjc1RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJl
YWQuY3BwICovLAogCQkJCTQ2N0E2OEQ0Mjc1RUE5OEIwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJU
aHJlYWQuaCAqLywKIAkJCQk0NjdBNjhDRjI3NUVBOTg5MDA5QjMxQzUgLyogU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHkuY3BwICovLApAQCAtMjE1ODcsMTAgKzIxNTk0LDEwIEBACiAJCQkJNDY2OTRD
RTEyNzU5NDQ4QzAwRTMxNTBFIC8qIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmggKi8sCiAJCQkJ
NDY2OTRDRTAyNzU5NDQ4QzAwRTMxNTBFIC8qIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmlkbCAq
LywKIAkJCQk0NkVDNDQ0ODI3QUIzMzdGMDBGRkNEOTYgLyogU2hhcmVkV29ya2VySWRlbnRpZmll
ci5oICovLAotCQkJCTQ2N0E2OEQzMjc1RUE5OEIwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5h
Z2VyLmNwcCAqLywKLQkJCQk0NjdBNjhEMjI3NUVBOThBMDA5QjMxQzUgLyogU2hhcmVkV29ya2Vy
TWFuYWdlci5oICovLAorCQkJCTQ2OTg1RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3Jr
ZXJLZXkuaCAqLywKIAkJCQk0NjY4QTBCMzI3QUI2MDBCMDBDNzIwQkMgLyogU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJNDY2OEEwQjEyN0FCNjAwQjAwQzcyMEJDIC8q
IFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAqLywKKwkJCQk0Njk0M0RDNzI3NjNGODBF
MDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oICovLAogCQkJCTQ2NjhB
MEI0MjdBQjYwMEMwMEM3MjBCQyAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAgKi8sCiAJCQkJ
NDY2OEEwQjUyN0FCNjAwQzAwQzcyMEJDIC8qIFNoYXJlZFdvcmtlclByb3ZpZGVyLmggKi8sCiAJ
CQkJNDY3QTY4RDEyNzVFQTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5j
cHAgKi8sCkBAIC0zNzIwNCw5ICszNzIxMSwxMSBAQAogCQkJCTgzNERGQUQwMUY3REFFNUQwMEMy
NzI1QiAvKiBTaGFyZWRTdHJpbmdIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUVBMzA5
OUVCNzhDMDA1NkU1ODEgLyogU2hhcmVkVGltZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxREMw
NEZFMjdBODNDOTMwMDhDRjk2OCAvKiBTaGFyZWRWaWRlb0ZyYW1lSW5mby5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDZDRjUwNEEyN0FCMUVBNDAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkVDNDQ0QTI3QUIzMzg5MDBGRkNEOTYgLyog
U2hhcmVkV29ya2VySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDY3QTY4REEyNzVF
QTk5QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTQ2OTg1RjIzMjdBNEE2QUQwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQ2NjhBMEI2MjdBQjYwMUIwMEM3MjBCQyAvKiBTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk0Njk0M0RDOTI3NjNGODE3MDA0QjYxMEUg
LyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY2
OEEwQjcyN0FCNjAyMTAwQzcyMEJDIC8qIFNoYXJlZFdvcmtlclByb3ZpZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0NjdBNjhEODI3NUVBOTk1MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0
TG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjdBNjhENzI3NUVBOTkxMDA5QjMxQzUgLyog
U2hhcmVkV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKQEAgLTM4MDY3LDYgKzM4MDc2LDcg
QEAKIAkJCQlFMTI3MUEwQjBFRUVDNzdBMDBGNjEyMTMgLyogV29ya2VyTmF2aWdhdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNUNCMDUyNTFGQjUxRjNBMDAwODlCOTcgLyogV29ya2VyTmV0d29y
a0FnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTQzNDY1MTBGNTQ2QTgyMDBCMEYxQkEgLyog
V29ya2VyT2JqZWN0UHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2QTc4QjM0Mjc5OUJENzEw
MDExNTRGRSAvKiBXb3JrZXJPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0Q2QUFFNjI1
MjRFRTFDMDA0MjhCNEIgLyogV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTgzOUEwOTVEMjUyNEYzN0YwMEVFRjMyOCAvKiBXb3JrZXJPcldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0Y2QUVCRjI1MjdCQjBDMDAzNEJD
RDMgLyogV29ya2VyT3JXb3JrbGV0VGhyZWFkLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW4uaAppbmRleCBlMTU1ZWM2ZjI0YWVkMTg4MzBjMTgxZWQ3OWM0Y2I0
MDEwZDMxNmJhLi4yMDNiZjZiMDgyZGZmYjRjZDg0ZjlmY2ZkOGJmMGNiMzNhZTBmNTEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCkBAIC0xNTAsNyArMTUwLDYgQEAgcHVibGlj
OgogICAgIGJvb2wgY2FuQWNjZXNzTG9jYWxTdG9yYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0
b3BPcmlnaW4pIGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UodG9wT3JpZ2luKTsgfTsK
ICAgICBib29sIGNhbkFjY2Vzc1BsdWdpblN0b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRv
cE9yaWdpbikgY29uc3QgeyByZXR1cm4gY2FuQWNjZXNzU3RvcmFnZSgmdG9wT3JpZ2luKTsgfQog
ICAgIGJvb2wgY2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShjb25zdCBTZWN1cml0eU9yaWdpbiYg
dG9wT3JpZ2luKSBjb25zdCB7IHJldHVybiBjYW5BY2Nlc3NTdG9yYWdlKCZ0b3BPcmlnaW4pOyB9
Ci0gICAgYm9vbCBjYW5BY2Nlc3NTaGFyZWRXb3JrZXJzKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0
b3BPcmlnaW4pIGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UoJnRvcE9yaWdpbik7IH0K
ICAgICBib29sIGNhbkFjY2Vzc0Nvb2tpZXMoKSBjb25zdCB7IHJldHVybiAhaXNVbmlxdWUoKTsg
fQogICAgIGJvb2wgY2FuUmVxdWVzdEdlb2xvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gIWlzVW5p
cXVlKCk7IH0KICAgICBQb2xpY3kgY2FuU2hvd05vdGlmaWNhdGlvbnMoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCA1ZmVmNDJlZTA2ZWM1MTE1ZmQ4NmU5ODg5NGY2OWQ3
YzIxOWUzZTBjLi5mYTdkMjMwMmVjMzllOTk3NTYxOGRiYzkyNzY5YzVhMGYxOTkxMDRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCkBAIC0xMjcsNiArMTI3LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIE0oV2ViR0wpIFwKICAgICBNKFdlYlJUQykgXAogICAgIE0oV2ViUlRDU3Rh
dHMpIFwKKyAgICBNKFdvcmtlcikgXAogICAgIE0oWFIpIFwKICAgICBNKFdoZWVsRXZlbnRUZXN0
TW9uaXRvcikgXAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRo
cmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXgg
NDA2NzE3M2E4OWE1MjY0ZDUzNzM0OTk1ZDhlNDQ3NTFhODM5OGEwYi4uZjlkZDA1ZjE4ZjMyNTdh
YTVkNzdmMjdmYTY1NjI2YTAxNTk2ZmY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
VGhyZWFkLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3Bl
LmgiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0RmV0Y2hlci5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1NjcmlwdENhbGxTdGFjay5oPgorI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTMz
LDYgKzEzNCw4IEBAIGJvb2wgV29ya2VyVGhyZWFkOjpzaG91bGRXYWl0Rm9yV2ViSW5zcGVjdG9y
T25TdGFydHVwKCkgY29uc3QKIAogdm9pZCBXb3JrZXJUaHJlYWQ6OmV2YWx1YXRlU2NyaXB0SWZO
ZWNlc3NhcnkoU3RyaW5nJiBleGNlcHRpb25NZXNzYWdlKQogeworICAgIFNldEZvclNjb3BlPGJv
b2w+IGlzSW5TdGF0aWNTY3JpcHRFdmFsdWF0aW9uKG1faXNJblN0YXRpY1NjcmlwdEV2YWx1YXRp
b24sIHRydWUpOworCiAgICAgLy8gV2UgYXJlIGN1cnJlbnRseSBob2xkaW5nIG9ubHkgdGhlIGlu
aXRpYWwgc2NyaXB0IGNvZGUuIElmIHRoZSBXb3JrZXJUeXBlIGlzIE1vZHVsZSwgd2Ugc2hvdWxk
IGZldGNoIHRoZSBlbnRpcmUgZ3JhcGggYmVmb3JlIGV4ZWN1dGluZyB0aGUgcmVzdCBvZiB0aGlz
LgogICAgIC8vIFdlIGludm9rZSBtb2R1bGUgbG9hZGVyIGFzIGlmIHdlIGFyZSBleGVjdXRpbmcg
aW5saW5lIG1vZHVsZSBzY3JpcHQgdGFnIGluIERvY3VtZW50LgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuaAppbmRleCA0N2Q1YzRmYjFmOTFjOGYwN2VhY2NkZGY2NjA2ZWZmNTg4
NDg2MzU0Li5hMWVhMzdkZGI0ODA4NWYxYzUyY2YzYzAzZTFjNDYwNDEyMjVlZTVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKQEAgLTk0LDYgKzk0LDcgQEAgcHVibGljOgog
I2VuZGlmCiAgICAgCiAgICAgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKCkgY29uc3Qg
eyByZXR1cm4gbV9ydW50aW1lRmxhZ3M7IH0KKyAgICBib29sIGlzSW5TdGF0aWNTY3JpcHRFdmFs
dWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RhdGljU2NyaXB0RXZhbHVhdGlvbjsgfQog
CiBwcm90ZWN0ZWQ6CiAgICAgV29ya2VyVGhyZWFkKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBj
b25zdCBTY3JpcHRCdWZmZXImIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiwgV29ya2Vy
RGVidWdnZXJQcm94eSYsIFdvcmtlclJlcG9ydGluZ1Byb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRN
b2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5l
Y3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKiwgSlNDOjpSdW50aW1lRmxhZ3MpOwpAQCAtMTMw
LDYgKzEzMSw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8SURCQ2xpZW50OjpJREJDb25uZWN0
aW9uUHJveHk+IG1faWRiQ29ubmVjdGlvblByb3h5OwogICAgIFJlZlB0cjxTb2NrZXRQcm92aWRl
cj4gbV9zb2NrZXRQcm92aWRlcjsKKyAgICBib29sIG1faXNJblN0YXRpY1NjcmlwdEV2YWx1YXRp
b24geyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAKaW5kZXggYjQ4NzQ3YTJjMDk5
NzNjMThiZjhkZGE5YWM4NzRiMzFhYjg1Zjc1MS4uMGE3ODE5YjhiM2ExODY1OTZkYTZiYmEwODI4
ZTBmNWVlMTgzNjAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI2LDE1ICsyNiwxNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlNoYXJlZFdvcmtlci5oIgogCisjaW5jbHVkZSAiQ2xpZW50T3JpZ2luLmgiCiAjaW5jbHVk
ZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VDaGFubmVsLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJSZXNvdXJj
ZUVycm9yLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJTaGFyZWRX
b3JrZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5o
IgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb3ZpZGVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29y
a2VyVGhyZWFkUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJPcHRpb25zLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllcnNGYWN0b3J5Lmg+CiAjaW5jbHVkZSA8d3RmL0lzb01h
bGxvY0lubGluZXMuaD4KQEAgLTQzLDIzICs0NSwzOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChTaGFyZWRXb3JrZXIpOwogCisjZGVmaW5lIFNI
QVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtl
ciwgIiVwIC0gW2lkZW50aWZpZXI9JXtwdWJsaWN9c10gU2hhcmVkV29ya2VyOjoiIGZtdCwgdGhp
cywgbV9pZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgIyNfX1ZBX0FSR1NfXykK
KyNkZWZpbmUgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFT
RV9MT0dfRVJST1IoU2hhcmVkV29ya2VyLCAiJXAgLSBbaWRlbnRpZmllcj0le3B1YmxpY31zXSBT
aGFyZWRXb3JrZXI6OiIgZm10LCB0aGlzLCBtX2lkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCAjI19fVkFfQVJHU19fKQorCitzdGF0aWMgSGFzaE1hcDxTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLCBTaGFyZWRXb3JrZXIqPiYgYWxsU2hhcmVkV29ya2VycygpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1h
cDxTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBTaGFyZWRXb3JrZXIqPj4gYWxsU2hhcmVk
V29ya2VyczsKKyAgICByZXR1cm4gYWxsU2hhcmVkV29ya2VyczsKK30KKworU2hhcmVkV29ya2Vy
KiBTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVyKFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIgaWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gYWxsU2hhcmVkV29ya2VycygpLmdldChpZGVu
dGlmaWVyKTsKK30KKwogc3RhdGljIGlubGluZSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
KiBtYWluVGhyZWFkQ29ubmVjdGlvbigpCiB7CiAgICAgcmV0dXJuIFNoYXJlZFdvcmtlclByb3Zp
ZGVyOjpzaW5nbGV0b24oKS5zaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiB9CiAKLUV4Y2VwdGlv
bk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBTaGFyZWRXb3JrZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9j
dW1lbnQsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncywgU3RyaW5nJiYgc2NyaXB0VVJM
U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxTdHJpbmcsIFdvcmtlck9wdGlvbnM+
PiYmIG1heWJlT3B0aW9ucykKK0V4Y2VwdGlvbk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBTaGFyZWRX
b3JrZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZyYmIHNjcmlwdFVSTFN0cmlu
Zywgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4mJiBt
YXliZU9wdGlvbnMpCiB7CiAgICAgaWYgKCFtYWluVGhyZWFkQ29ubmVjdGlvbigpKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJTaGFyZWQgd29ya2VycyBh
cmUgbm90IHN1cHBvcnRlZCIgfTsKIAotICAgIGlmICghZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4o
KS5jYW5BY2Nlc3NTaGFyZWRXb3JrZXJzKGRvY3VtZW50LnRvcE9yaWdpbigpKSkKLSAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJUaGlzIGlmcmFtZSBkb2Vzbid0IGhh
dmUgc3RvcmFnZSBhY2Nlc3MiX3MgfTsKLQogICAgIGF1dG8gdXJsID0gZG9jdW1lbnQuY29tcGxl
dGVVUkwoc2NyaXB0VVJMU3RyaW5nKTsKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciwgIkludmFsaWQgc2NyaXB0IFVSTCJfcyB9
OwogCisgICAgaWYgKHVybC5pc0xvY2FsRmlsZSgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgU2VjdXJpdHlFcnJvciwgIkNhbm5vdCBjb25zdHJ1Y3QgYSBzaGFyZWQgd29ya2VyIHdpdGgg
YSBmaWxlOi8vIFVSTCJfcyB9OworCiAgICAgaWYgKGF1dG8qIGNvbnRlbnRTZWN1cml0eVBvbGlj
eSA9IGRvY3VtZW50LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKSB7CiAgICAgICAgIGlmICghY29u
dGVudFNlY3VyaXR5UG9saWN5LT5hbGxvd1dvcmtlckZyb21Tb3VyY2UodXJsKSkKICAgICAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yIH07CkBAIC03NywyNiArOTQsMzcg
QEAgRXhjZXB0aW9uT3I8UmVmPFNoYXJlZFdvcmtlcj4+IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCwgSlNDOjpSdW4KICAgICBhdXRvIGNoYW5uZWwgPSBNZXNzYWdlQ2hh
bm5lbDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBhdXRvIHRyYW5zZmVycmVkUG9ydCA9IGNoYW5u
ZWwtPnBvcnQyKCkuZGlzZW50YW5nbGUoKTsKIAotICAgIGF1dG8gc2hhcmVkV29ya2VyID0gYWRv
cHRSZWYoKm5ldyBTaGFyZWRXb3JrZXIoZG9jdW1lbnQsIGNoYW5uZWwtPnBvcnQxKCksIHJ1bnRp
bWVGbGFncykpOworICAgIENsaWVudE9yaWdpbiBjbGllbnRPcmlnaW4geyBkb2N1bWVudC50b3BE
b2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpLCBkb2N1bWVudC5zZWN1cml0eU9yaWdp
bigpLmRhdGEoKSB9OworICAgIFNoYXJlZFdvcmtlcktleSBrZXkgeyBjbGllbnRPcmlnaW4sIHVy
bCwgb3B0aW9ucy5uYW1lIH07CisKKyAgICBhdXRvIHNoYXJlZFdvcmtlciA9IGFkb3B0UmVmKCpu
ZXcgU2hhcmVkV29ya2VyKGRvY3VtZW50LCBrZXksIGNoYW5uZWwtPnBvcnQxKCkpKTsKICAgICBz
aGFyZWRXb3JrZXItPnN1c3BlbmRJZk5lZWRlZCgpOwogCi0gICAgbWFpblRocmVhZENvbm5lY3Rp
b24oKS0+cmVxdWVzdFNoYXJlZFdvcmtlcih1cmwsIHNoYXJlZFdvcmtlci5nZXQoKSwgV1RGTW92
ZSh0cmFuc2ZlcnJlZFBvcnQpLCBXVEZNb3ZlKG9wdGlvbnMpKTsKKyAgICBtYWluVGhyZWFkQ29u
bmVjdGlvbigpLT5yZXF1ZXN0U2hhcmVkV29ya2VyKGtleSwgc2hhcmVkV29ya2VyLT5pZGVudGlm
aWVyKCksIFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwgb3B0aW9ucyk7CiAgICAgcmV0dXJuIHNo
YXJlZFdvcmtlcjsKIH0KIAotU2hhcmVkV29ya2VyOjpTaGFyZWRXb3JrZXIoRG9jdW1lbnQmIGRv
Y3VtZW50LCBSZWY8TWVzc2FnZVBvcnQ+JiYgcG9ydCwgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGlt
ZUZsYWdzKQorU2hhcmVkV29ya2VyOjpTaGFyZWRXb3JrZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBTaGFyZWRXb3JrZXJLZXkmIGtleSwgUmVmPE1lc3NhZ2VQb3J0PiYmIHBvcnQpCiAgICAg
OiBBY3RpdmVET01PYmplY3QoJmRvY3VtZW50KQorICAgICwgbV9rZXkoa2V5KQorICAgICwgbV9p
ZGVudGlmaWVyKFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI6OmdlbmVyYXRlKCkpCiAgICAg
LCBtX3BvcnQoV1RGTW92ZShwb3J0KSkKICAgICAsIG1faWRlbnRpZmllckZvckluc3BlY3Rvcigi
U2hhcmVkV29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRl
bnRpZmllcigpKQotICAgICwgbV9ydW50aW1lRmxhZ3MocnVudGltZUZsYWdzKQotICAgICwgbV9j
cmVhdGlvblRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkpCi0gICAgLCBtX3Byb3h5KFNoYXJlZFdv
cmtlclRocmVhZFByb3h5OjpjcmVhdGUoKnRoaXMpKQogeworICAgIFNIQVJFRF9XT1JLRVJfUkVM
RUFTRV9MT0coIlNoYXJlZFdvcmtlcjoiKTsKKyAgICBhbGxTaGFyZWRXb3JrZXJzKCkuYWRkKG1f
aWRlbnRpZmllciwgdGhpcyk7CisKKyAgICAvLyBJZiB0aGUgc2hhcmVkIHdvcmtlciBVUkwgaXMg
YSBibG9iIFVSTCwgbWFrZSBzdXJlIHRvIGtlZXAgaXQgYWxpdmUgdW50aWwgdGhlIHdvcmtlciBo
YXMgZmluaXNoZWQgbG9hZGluZy4KKyAgICBpZiAobV9rZXkudXJsLnByb3RvY29sSXNCbG9iKCkp
CisgICAgICAgIG1fYmxvYlVSTEV4dGVuc2lvbiA9IG1fa2V5LnVybDsKIH0KIAogU2hhcmVkV29y
a2VyOjp+U2hhcmVkV29ya2VyKCkKIHsKLSAgICBtX3Byb3h5Lndvcmtlck9iamVjdERlc3Ryb3ll
ZCgpOworICAgIEFTU0VSVChhbGxTaGFyZWRXb3JrZXJzKCkuZ2V0KG1faWRlbnRpZmllcikgPT0g
dGhpcyk7CisgICAgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRygiflNoYXJlZFdvcmtlcjoiKTsK
KyAgICBhbGxTaGFyZWRXb3JrZXJzKCkucmVtb3ZlKG1faWRlbnRpZmllcik7CisgICAgQVNTRVJU
KCFtX2lzQWN0aXZlKTsKIH0KIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogU2hhcmVkV29ya2Vy
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKQEAgLTExNCwxOSArMTQyLDI5IEBAIEV2
ZW50VGFyZ2V0SW50ZXJmYWNlIFNoYXJlZFdvcmtlcjo6ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdAogICAgIHJldHVybiBTaGFyZWRXb3JrZXJFdmVudFRhcmdldEludGVyZmFjZVR5cGU7CiB9
CiAKLXZvaWQgU2hhcmVkV29ya2VyOjpzdG9wKCkKK3ZvaWQgU2hhcmVkV29ya2VyOjpkaWRGaW5p
c2hMb2FkaW5nKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIHRlcm1pbmF0ZSgp
OworICAgIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coImZpbmlzaExvYWRpbmc6IHN1Y2Nlc3M9
JWQiLCBlcnJvci5pc051bGwoKSk7CisgICAgaWYgKCFlcnJvci5pc051bGwoKSkgeworICAgICAg
ICBxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxh
dGlvbiwgRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1
YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOworICAgICAgICBtX2lzQWN0aXZl
ID0gZmFsc2U7CisgICAgfQorICAgIG1fYmxvYlVSTEV4dGVuc2lvbi5jbGVhcigpOwogfQogCiBi
b29sIFNoYXJlZFdvcmtlcjo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fcHJveHkuaGFzUGVuZGluZ0FjdGl2aXR5KCkgfHwgbV9pc0xvYWRpbmc7Cisg
ICAgcmV0dXJuIG1faXNBY3RpdmU7CiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyOjp0ZXJtaW5hdGUo
KQordm9pZCBTaGFyZWRXb3JrZXI6OnN0b3AoKQogewotICAgIG1fcHJveHkudGVybWluYXRlV29y
a2VyR2xvYmFsU2NvcGUoKTsKKyAgICBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HKCJzdG9wOiIp
OworICAgIG1faXNBY3RpdmUgPSBmYWxzZTsKKyAgICBtYWluVGhyZWFkQ29ubmVjdGlvbigpLT5z
aGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShtX2tleSwgbV9pZGVudGlmaWVyKTsKIH0KIAor
I3VuZGVmIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0cKKyN1bmRlZiBTSEFSRURfV09SS0VSX1JF
TEVBU0VfTE9HX0VSUk9SCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmgKaW5kZXggZTU1YjFjZjU1MTNkMTA1Zjcz
ZjFjZDYyOTMxNWUwNjU3ZTAxOWJjZS4uY2RkMjY5ZjM2MTkxNjlkNGFiMDVmNjBkMWE3NGI4OGMw
MjNmZDIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjcsMzkgKzI3LDM3IEBACiAKICNpbmNsdWRlICJBYnN0cmFjdFdvcmtlci5oIgogI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1bnRpbWVG
bGFncy5oPgorI2luY2x1ZGUgIkJsb2JVUkwuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJLZXku
aCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8
d3RmL01vbm90b25pY1RpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZXNz
YWdlUG9ydDsKLWNsYXNzIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OworY2xhc3MgUmVzb3VyY2VF
cnJvcjsKIAogc3RydWN0IFdvcmtlck9wdGlvbnM7CiAKIGNsYXNzIFNoYXJlZFdvcmtlciBmaW5h
bCA6IHB1YmxpYyBBYnN0cmFjdFdvcmtlciwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChTaGFyZWRXb3JrZXIpOwogcHVibGljOgotICAgIHN0YXRp
YyBFeGNlcHRpb25PcjxSZWY8U2hhcmVkV29ya2VyPj4gY3JlYXRlKERvY3VtZW50JiwgSlNDOjpS
dW50aW1lRmxhZ3MsIFN0cmluZyYmIHNjcmlwdFVSTCwgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlh
bnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJl
ZjxTaGFyZWRXb3JrZXI+PiBjcmVhdGUoRG9jdW1lbnQmLCBTdHJpbmcmJiBzY3JpcHRVUkwsIHN0
ZDo6b3B0aW9uYWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYpOwogICAg
IH5TaGFyZWRXb3JrZXIoKTsKIAorICAgIHN0YXRpYyBTaGFyZWRXb3JrZXIqIGZyb21JZGVudGlm
aWVyKFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIFNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQog
ICAgIE1lc3NhZ2VQb3J0JiBwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9wb3J0LmdldCgpOyB9Ci0g
ICAgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKCkgeyByZXR1cm4gbV9ydW50aW1lRmxh
Z3M7IH0KIAogICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllckZvckluc3BlY3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckluc3BlY3RvcjsgfQotICAgIE1vbm90b25pY1RpbWUg
Y3JlYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdGlvblRpbWU7IH0KIAotICAgIFNo
YXJlZFdvcmtlclRocmVhZFByb3h5JiBwcm94eSgpIHsgcmV0dXJuIG1fcHJveHk7IH0KLQotICAg
IHZvaWQgc2V0SXNMb2FkaW5nKGJvb2wgaXNMb2FkaW5nKSB7IG1faXNMb2FkaW5nID0gaXNMb2Fk
aW5nOyB9CisgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFJlc291cmNlRXJyb3ImKTsK
IAogICAgIC8vIEV2ZW50VGFyZ2V0LgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBTaGFyZWRX
b3JrZXIoRG9jdW1lbnQmLCBSZWY8TWVzc2FnZVBvcnQ+JiYsIEpTQzo6UnVudGltZUZsYWdzKTsK
LQotICAgIHZvaWQgdGVybWluYXRlKCk7CisgICAgU2hhcmVkV29ya2VyKERvY3VtZW50JiwgY29u
c3QgU2hhcmVkV29ya2VyS2V5JiwgUmVmPE1lc3NhZ2VQb3J0PiYmKTsKIAogICAgIC8vIEV2ZW50
VGFyZ2V0LgogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkg
Y29uc3QgZmluYWw7CkBAIC03MCwxMiArNjgsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIHZpcnR1
YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogCisgICAgU2hhcmVkV29ya2Vy
S2V5IG1fa2V5OworICAgIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgbV9pZGVudGlmaWVy
OwogICAgIFJlZjxNZXNzYWdlUG9ydD4gbV9wb3J0OwogICAgIFN0cmluZyBtX2lkZW50aWZpZXJG
b3JJbnNwZWN0b3I7Ci0gICAgSlNDOjpSdW50aW1lRmxhZ3MgbV9ydW50aW1lRmxhZ3M7Ci0gICAg
TW9ub3RvbmljVGltZSBtX2NyZWF0aW9uVGltZTsKLSAgICBTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eSYgbV9wcm94eTsgLy8gVGhlIHByb3h5IG91dGxpdmVzIHRoZSB3b3JrZXIgdG8gcGVyZm9ybSB0
aHJlYWQgc2h1dGRvd24uCi0gICAgYm9vbCBtX2lzTG9hZGluZyB7IGZhbHNlIH07CisgICAgQmxv
YlVSTEhhbmRsZSBtX2Jsb2JVUkxFeHRlbnNpb247CisgICAgYm9vbCBtX2lzQWN0aXZlIHsgdHJ1
ZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5pZGwKaW5kZXggYjYyODc0ZDBkZTQ2NzBkNDhhMmQz
MTRjMTMxZTYyNGMyMDU2MmUzZC4uMmMzYTA4MzFlYjI3NDFiMjYzNjQ3ZjE3NGU4YzU4N2I3YTQx
ZWI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIu
aWRsCkBAIC0yOCw3ICsyOCw3IEBACiAgICAgRXhwb3NlZD1XaW5kb3cKIF0KIGludGVyZmFjZSBT
aGFyZWRXb3JrZXIgOiBFdmVudFRhcmdldCB7Ci0gIFtDYWxsV2l0aD1DdXJyZW50RG9jdW1lbnQm
UnVudGltZUZsYWdzXSBjb25zdHJ1Y3RvcihVU1ZTdHJpbmcgc2NyaXB0VVJMLCBvcHRpb25hbCAo
RE9NU3RyaW5nIG9yIFdvcmtlck9wdGlvbnMpIG9wdGlvbnMpOworICBbQ2FsbFdpdGg9Q3VycmVu
dERvY3VtZW50XSBjb25zdHJ1Y3RvcihVU1ZTdHJpbmcgc2NyaXB0VVJMLCBvcHRpb25hbCAoRE9N
U3RyaW5nIG9yIFdvcmtlck9wdGlvbnMpIG9wdGlvbnMpOwogCiAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBNZXNzYWdlUG9ydCBwb3J0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlcktleS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyS2V5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWYyYmFhMGY3YjljYzI0OTYzNTBhZDFi
ZDE0OTRkNmI5ZGIwYTQ2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlcktleS5oCkBAIC0wLDAgKzEsMTExIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIKKyNpbmNsdWRlIDx3
dGYvSGFzaGVyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBTaGFyZWRXb3JrZXJL
ZXkgeworICAgIENsaWVudE9yaWdpbiBvcmlnaW47CisgICAgVVJMIHVybDsKKyAgICBTdHJpbmcg
bmFtZTsKKworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKKworICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTaGFyZWRXb3JrZXJLZXk+IGRlY29kZShE
ZWNvZGVyJik7Cit9OworCitpbmxpbmUgdW5zaWduZWQgU2hhcmVkV29ya2VyS2V5OjpoYXNoKCkg
Y29uc3QKK3sKKyAgICBIYXNoZXIgaGFzaGVyOworICAgIGFkZChoYXNoZXIsIG9yaWdpbi5oYXNo
KCkpOworICAgIGFkZChoYXNoZXIsIHVybCk7CisgICAgYWRkKGhhc2hlciwgbmFtZSk7CisgICAg
cmV0dXJuIGhhc2hlci5oYXNoKCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lk
IFNoYXJlZFdvcmtlcktleTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAg
ZW5jb2RlciA8PCBvcmlnaW4gPDwgdXJsIDw8IG5hbWU7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERl
Y29kZXI+CitzdGQ6Om9wdGlvbmFsPFNoYXJlZFdvcmtlcktleT4gU2hhcmVkV29ya2VyS2V5Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPENsaWVudE9yaWdp
bj4gb3JpZ2luOworICAgIGRlY29kZXIgPj4gb3JpZ2luOworICAgIGlmICghb3JpZ2luKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxVUkw+IHVybDsK
KyAgICBkZWNvZGVyID4+IHVybDsKKyAgICBpZiAoIXVybCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBuYW1lOworICAgIGRlY29kZXIg
Pj4gbmFtZTsKKyAgICBpZiAoIW5hbWUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICByZXR1cm4geyB7IFdURk1vdmUoKm9yaWdpbiksIFdURk1vdmUoKnVybCksIFdURk1vdmUo
Km5hbWUpIH0gfTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRXb3Jr
ZXJLZXkmIGEsIGNvbnN0IFNoYXJlZFdvcmtlcktleSYgYikKK3sKKyAgICByZXR1cm4gYS5vcmln
aW4gPT0gYi5vcmlnaW4gJiYgYS51cmwgPT0gYi51cmwgJiYgYS5uYW1lID09IGIubmFtZTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8
PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5PiB7CisgICAgc3Rh
dGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBrZXkpCisg
ICAgeworICAgICAgICByZXR1cm4ga2V5Lmhhc2goKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9v
bCBlcXVhbChjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIGEsIGNvbnN0IFdlYkNvcmU6
OlNoYXJlZFdvcmtlcktleSYgYikKKyAgICB7CisgICAgICAgIHJldHVybiBhID09IGI7CisgICAg
fQorCisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQg
PSBmYWxzZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6U2hh
cmVkV29ya2VyS2V5PiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktl
eT4geworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7
CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OlNoYXJlZFdv
cmtlcktleSYgc2xvdCkgeyBuZXcgKE5vdE51bGwsICZzbG90LnVybCkgVVJMKFdURjo6SGFzaFRh
YmxlRGVsZXRlZFZhbHVlKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0
IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgc2xvdCkgeyByZXR1cm4gc2xvdC51cmwuaXNIYXNo
VGFibGVEZWxldGVkVmFsdWUoKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzQxMDg3N2RiMzIxZjc5NTJmMzEyYzg2
ZGMzZmU0YTBiNTVkMDc5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyTWFuYWdlci5oIgotCi0jaW5jbHVk
ZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCi0jaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2lu
Y2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCi0jaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCi0jaW5j
bHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCi0j
aW5jbHVkZSAiU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKLSNpbmNs
dWRlICJTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIgotI2luY2x1ZGUgIldvcmtlclJ1bkxvb3Au
aCIKLSNpbmNsdWRlICJXb3JrZXJTY3JpcHRMb2FkZXIuaCIKLSNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLVNoYXJlZFdvcmtlck1hbmFnZXImIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNpbmdsZXRv
bigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYXJlZFdvcmtlck1hbmFnZXI+IGlu
c3RhbmNlOwotICAgIHJldHVybiBpbnN0YW5jZS5nZXQoKTsKLX0KLQotdm9pZCBTaGFyZWRXb3Jr
ZXJNYW5hZ2VyOjpjb25uZWN0KGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRXb3JrZXImIHdvcmtlciwg
VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIG1lc3NhZ2VQb3J0LCBXb3JrZXJPcHRpb25zJiYgb3B0
aW9ucykKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIC8vIEZJWE1FOiBI
YW5kbGUgd29ya2VycyBmcm9tIG90aGVyIHByb2Nlc3Nlcywgd2hpY2ggd2lsbCBwcm9iYWJseSBy
ZXF1aXJlIG1vdmluZyBjb25uZWN0IHRvIHRoZSBGcmFtZUxvYWRlckNsaWVudCBvciBzb21ldGhp
bmcuCi0gICAgLy8gTWF5YmUgc29tZXRoaW5nIG1vcmUgbGlrZSB3aGF0IFNlcnZpY2VXb3JrZXJz
IGRvZXMuCi0KLSAgICAvLyBGSVhNRTogQ2hlY2sgaWYgd2UgYWxyZWFkeSBtYWRlIGEgdGhyZWFk
LgotICAgIC8vIEZJWE1FOiBDaGVjayBpZiB0aGVyZSdzIGFscmVhZHkgYSBzaGFyZWQgd29ya2Vy
IGFuZCB1c2UgdGhhdCBpZiB0aGVyZSBpcy4KLQotICAgIGF1dG8gbG9hZGVyID0gbWFrZVVuaXF1
ZVJlZjxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+KHVybCwgd29ya2VyLCBXVEZNb3ZlKG1lc3Nh
Z2VQb3J0KSwgV1RGTW92ZShvcHRpb25zKSk7Ci0gICAgYXV0byBpZGVudGlmaWVyID0gbG9hZGVy
LT5pZGVudGlmaWVyKCk7Ci0gICAgbV9sb2FkZXJzLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKGxv
YWRlcikpOwotfQotCi12b2lkIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNjcmlwdExvYWRGYWlsZWQo
U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJiBsb2FkZXIpCi17Ci0gICAgQWN0aXZlRE9NT2JqZWN0
OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQobG9hZGVyLndvcmtlcigpLCBUYXNrU291cmNlOjpE
T01NYW5pcHVsYXRpb24sIEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKLSAgICBtX2xv
YWRlcnMucmVtb3ZlKGxvYWRlci5pZGVudGlmaWVyKCkpOwotfQotCi12b2lkIFNoYXJlZFdvcmtl
ck1hbmFnZXI6OnNjcmlwdExvYWRlZFN1Y2Nlc3NmdWxseShTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXImIGxvYWRlciwgY29uc3QgU2NyaXB0QnVmZmVyJiBzY3JpcHRCdWZmZXIsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFNoYXJlZFdvcmtlciYgc2hhcmVk
V29ya2VyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgdHJhbnNmZXJyZWRQb3J0KQotewotICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgYXV0byYgd29ya2VyID0gbG9hZGVyLndv
cmtlcigpOwotICAgIGF1dG8mIG9wdGlvbnMgPSBsb2FkZXIub3B0aW9ucygpOwotCi0gICAgYXV0
byYgcHJveHkgPSBzaGFyZWRXb3JrZXIucHJveHkoKTsKLQotICAgIHByb3h5LnN0YXJ0V29ya2Vy
R2xvYmFsU2NvcGUoCi0gICAgICAgIGxvYWRlci51cmwoKSwKLSAgICAgICAgb3B0aW9ucy5uYW1l
LAotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LnVzZXJBZ2VudChsb2FkZXIudXJsKCkp
LAotICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+aXNPbkxp
bmUoKSwKLSAgICAgICAgc2NyaXB0QnVmZmVyLAotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5yZXNwb25zZUhlYWRlcnMoKSwKLSAgICAgICAg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC5zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJp
dHlQb2xpY3koKSwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcm9zc09yaWdpbkVt
YmVkZGVyUG9saWN5KCksCi0gICAgICAgIHdvcmtlci5jcmVhdGlvblRpbWUoKSwKLSAgICAgICAg
UmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nLAotICAgICAgICBvcHRpb25zLnR5cGUsCi0gICAg
ICAgIG9wdGlvbnMuY3JlZGVudGlhbHMsCi0gICAgICAgIHdvcmtlci5ydW50aW1lRmxhZ3MoKQot
ICAgICk7Ci0gICAgaWYgKCFwcm94eS50aHJlYWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
UkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxEb2N1bWVudD4oc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkpOwotICAgIGF1dG8gc291cmNlT3JpZ2luID0gZG93bmNhc3Q8
RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnNlY3VyaXR5T3JpZ2luKCkudG9TdHJp
bmcoKTsKLQotICAgIHByb3h5LnRocmVhZCgpLT5ydW5Mb29wKCkucG9zdFRhc2soW3RyYW5zZmVy
cmVkUG9ydCA9IFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwgc291cmNlT3JpZ2luID0gV1RGTW92
ZShzb3VyY2VPcmlnaW4pLmlzb2xhdGVkQ29weSgpXSAoYXV0byYgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIGRvd25jYXN0PFNoYXJlZFdvcmtlckdsb2JhbFNjb3Bl
PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5wb3N0Q29ubmVjdEV2ZW50KFdURk1vdmUodHJhbnNm
ZXJyZWRQb3J0KSwgc291cmNlT3JpZ2luKTsKLSAgICB9KTsKLQotICAgIG1fbG9hZGVycy5yZW1v
dmUobG9hZGVyLmlkZW50aWZpZXIoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjUyMTgxNmU2NWM3NzY3MWQ5MzM3YTgx
NzE1NWVmOTk3ODU0ZDg0OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2Vy
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpbmNsdWRlICJNZXNzYWdlUG9ydElkZW50aWZpZXIuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkV29y
a2VyOwotY2xhc3MgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOwotY2xhc3MgU2NyaXB0QnVmZmVy
Owotc3RydWN0IFdvcmtlck9wdGlvbnM7Ci11c2luZyBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0ID0g
c3RkOjpwYWlyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVzc2Fn
ZVBvcnRJZGVudGlmaWVyPjsKLQotdXNpbmcgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRp
ZmllciA9IE9iamVjdElkZW50aWZpZXI8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPjsKLQotY2xh
c3MgU2hhcmVkV29ya2VyTWFuYWdlciB7Ci1wdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFNoYXJlZFdvcmtlck1hbmFnZXImIHNpbmdsZXRvbigpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY29ubmVjdChjb25zdCBVUkwmLCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJlZE1lc3Nh
Z2VQb3J0JiYsIFdvcmtlck9wdGlvbnMmJik7Ci0KLSAgICB2b2lkIHNjcmlwdExvYWRGYWlsZWQo
U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJik7Ci0gICAgdm9pZCBzY3JpcHRMb2FkZWRTdWNjZXNz
ZnVsbHkoU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIFNoYXJlZFdvcmtlciYsIFRyYW5zZmVycmVkTWVzc2FnZVBv
cnQmJik7Ci0KLXByaXZhdGU6Ci0gICAgSGFzaE1hcDxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXJJ
ZGVudGlmaWVyLCBVbmlxdWVSZWY8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPj4gbV9sb2FkZXJz
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNw
cAppbmRleCBkZGEzODRkMjI5MTIwMjgzYzEyZDQ3YTU3NTY4OTJmOGE4MDJiNThiLi4xY2RlMGJh
MzU5NTY5MWZhMGNkZmQzNzQzMWQzZjRiOTc0OGQ2YTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uLmNwcApAQCAtMjYsMTAgKzI2LDY2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIgogCisjaW5jbHVkZSAiQWN0aXZlRE9N
T2JqZWN0LmgiCisjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KyNpbmNsdWRlICJTY3JpcHRCdWZmZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKKyNp
bmNsdWRlICJTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJGZXRj
aFJlc3VsdC5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNkZWZpbmUgQ09OTkVDVElPTl9S
RUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKyNk
ZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9MT0df
RVJST1IoU2hhcmVkV29ya2VyLCAiJXAgLSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjoi
IGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKworc3RhdGljIHVpbnQ2NF90IGxvYWRlcklkZW50
aWZpZXJTZWVkID0gMDsKKwogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6U2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbigpID0gZGVmYXVsdDsKIAogU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbjo6flNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CiAKK3Zv
aWQgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6ZmV0Y2hTY3JpcHRJbkNsaWVudChVUkwm
JiB1cmwsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciwgV29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byogd29ya2Vy
T2JqZWN0ID0gU2hhcmVkV29ya2VyOjpmcm9tSWRlbnRpZmllcihzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyKTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJmZXRjaFNjcmlwdEluQ2xp
ZW50OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMsIHdvcmtlcj0lcCIs
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB3
b3JrZXJPYmplY3QpOworICAgIGlmICghd29ya2VyT2JqZWN0KQorICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIod29ya2VyRmV0Y2hFcnJvcihSZXNvdXJjZUVycm9yIHsgUmVzb3VyY2VF
cnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uIH0pKTsKKworICAgIGF1dG8gbG9hZGVySWRlbnRpZmll
ciA9ICsrbG9hZGVySWRlbnRpZmllclNlZWQ7CisgICAgYXV0byBsb2FkZXIgPSBtYWtlVW5pcXVl
UmVmPFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj4oV1RGTW92ZSh1cmwpLCAqd29ya2VyT2JqZWN0
LCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMpKTsKKyAgICBhdXRvIGxvYWRlclB0ciA9IGxvYWRlci5w
dHIoKTsKKyAgICBtX2xvYWRlcnMuYWRkKGxvYWRlcklkZW50aWZpZXIsIFdURk1vdmUobG9hZGVy
KSk7CisKKyAgICBsb2FkZXJQdHItPmxvYWQoW3RoaXMsIGxvYWRlcklkZW50aWZpZXIsIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IFdvcmtlckZl
dGNoUmVzdWx0JiBmZXRjaFJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIENPTk5FQ1RJT05fUkVM
RUFTRV9MT0coImZldGNoU2NyaXB0SW5DbGllbnQ6IGZpbmlzaGVkIHNjcmlwdCBsb2FkLCBzdWNj
ZXNzPSVkIiwgZmV0Y2hSZXN1bHQuZXJyb3IuaXNOdWxsKCkpOworICAgICAgICBhdXRvIGxvYWRl
ciA9IG1fbG9hZGVycy50YWtlKGxvYWRlcklkZW50aWZpZXIpOworICAgICAgICBBU1NFUlQobG9h
ZGVyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmV0Y2hSZXN1bHQpOworICAgIH0pOwor
fQorCit2b2lkIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Om5vdGlmeVdvcmtlck9iamVj
dE9mTG9hZENvbXBsZXRpb24oV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8qIHdvcmtlck9iamVjdCA9
IFNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
cik7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUigibm90aWZ5V29ya2VyT2JqZWN0
T2ZMb2FkQ29tcGxldGlvbjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31z
LCB3b3JrZXI9JXAsIHN1Y2Nlc3M9JWQiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRv
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgd29ya2VyT2JqZWN0LCBlcnJvci5pc051bGwoKSk7Cisg
ICAgaWYgKHdvcmtlck9iamVjdCkKKyAgICAgICAgd29ya2VyT2JqZWN0LT5kaWRGaW5pc2hMb2Fk
aW5nKGVycm9yKTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpwb3N0
RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQor
eworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgYXV0byogd29ya2VyT2JqZWN0ID0g
U2hhcmVkV29ya2VyOjpmcm9tSWRlbnRpZmllcihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
KTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKCJwb3N0RXhjZXB0aW9uVG9Xb3Jr
ZXJPYmplY3Q6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cywgd29ya2Vy
PSVwIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRh
KCksIHdvcmtlck9iamVjdCk7CisgICAgaWYgKHdvcmtlck9iamVjdCkKKyAgICAgICAgQWN0aXZl
RE9NT2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKndvcmtlck9iamVjdCwgVGFza1Nv
dXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFcnJvckV2ZW50OjpjcmVhdGUoZXJyb3JNZXNzYWdlLCBz
b3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgeyB9KSk7Cit9CisKKyN1bmRlZiBD
T05ORUNUSU9OX1JFTEVBU0VfTE9HCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJP
UgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKaW5kZXgg
NGVkNWExYzY1YjU4ZDA5OGRjMGY2ODA4YjYwZWUwYTAzODdkN2JkNi4uNjdhMjAyMDhmZDI3ZjA5
MTJlZmY2MWIzZWZmZjI0YmQzZjgwZWE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApAQCAt
MjUsMjIgKzI1LDM4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiU2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlRyYW5zZmVycmVkTWVzc2FnZVBvcnQuaCIK
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBT
aGFyZWRXb3JrZXI7CitjbGFzcyBNZXNzYWdlUG9ydDsKK2NsYXNzIFNoYXJlZFdvcmtlclNjcmlw
dExvYWRlcjsKKworc3RydWN0IFNoYXJlZFdvcmtlcktleTsKK3N0cnVjdCBXb3JrZXJGZXRjaFJl
c3VsdDsKIHN0cnVjdCBXb3JrZXJPcHRpb25zOwogCiBjbGFzcyBTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bj4gewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24oKTsKIAotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2Vy
KGNvbnN0IFVSTCYsIFNoYXJlZFdvcmtlciYsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgV29y
a2VyT3B0aW9ucyYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIo
Y29uc3QgU2hhcmVkV29ya2VyS2V5JiwgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgVHJh
bnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBjb25zdCBXb3JrZXJPcHRpb25zJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShjb25zdCBTaGFyZWRXb3Jr
ZXJLZXkmLCBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKSA9IDA7CiAKIHByb3RlY3RlZDoK
KyAgICAvLyBJUEMgbWVzc2FnZXMuCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmZXRjaFNjcmlw
dEluQ2xpZW50KFVSTCYmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBX
b3JrZXJPcHRpb25zJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hS
ZXN1bHQmKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBub3RpZnlXb3JrZXJPYmplY3RP
ZkxvYWRDb21wbGV0aW9uKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RFeGNlcHRp
b25Ub1dvcmtlck9iamVjdChTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMKTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24oKTsKKworcHJpdmF0ZToKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBVbmlx
dWVSZWY8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPj4gbV9sb2FkZXJzOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViY2Q0
YTdhZTg3YWRmNWZiMWM3NGQ1NjgyNDYxMTI3NGE1ZjkyZWQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiUHJvY2Vzc1F1YWxpZmllZC5oIgorI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyVHlwZSB7IH07Cit1c2luZyBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyID0gUHJvY2Vz
c1F1YWxpZmllZDxPYmplY3RJZGVudGlmaWVyPFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXJU
eXBlPj47CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4
IDMxMWViZDYwNzhiYzYxZTAxNjlmMWE4NGVhNzE2NGIwODQzNmM2MzkuLmVhMmUwNDhjNzYyMmE2
Mjc2MWUzYzI1ZTI1MmQyN2Y4OTUxMWM2ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwyMyAr
MjksMjYgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCi0jaW5jbHVkZSAiU2hh
cmVkV29ya2VyTWFuYWdlci5oIgorI2luY2x1ZGUgIldvcmtlckZldGNoUmVzdWx0LmgiCiAjaW5j
bHVkZSAiV29ya2VyUnVuTG9vcC5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRXb3JrZXImIHdvcmtlciwg
VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBvcnQsIFdvcmtlck9wdGlvbnMmJiBvcHRpb25zKQot
ICAgIDogbV9pZGVudGlmaWVyKFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcklkZW50aWZpZXI6Omdl
bmVyYXRlKCkpCi0gICAgLCBtX29wdGlvbnMoV1RGTW92ZShvcHRpb25zKSkKK1NoYXJlZFdvcmtl
clNjcmlwdExvYWRlcjo6U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyKFVSTCYmIHVybCwgU2hhcmVk
V29ya2VyJiB3b3JrZXIsIFdvcmtlck9wdGlvbnMmJiBvcHRpb25zKQorICAgIDogbV9vcHRpb25z
KFdURk1vdmUob3B0aW9ucykpCiAgICAgLCBtX3dvcmtlcih3b3JrZXIpCi0gICAgLCBtX3BvcnQo
V1RGTW92ZShwb3J0KSkKICAgICAsIG1fbG9hZGVyKFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRl
KCkpCi0gICAgLCBtX3BlbmRpbmdBY3Rpdml0eSh3b3JrZXIubWFrZVBlbmRpbmdBY3Rpdml0eSh3
b3JrZXIpKQotICAgICwgbV91cmwodXJsKQorICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQogewot
ICAgIG1fd29ya2VyLT5zZXRJc0xvYWRpbmcodHJ1ZSk7Ci0gICAgbV9sb2FkZXItPmxvYWRBc3lu
Y2hyb25vdXNseSgqd29ya2VyLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgUmVzb3VyY2VSZXF1
ZXN0KHVybCksIHdvcmtlci53b3JrZXJGZXRjaE9wdGlvbnMob3B0aW9ucywgRmV0Y2hPcHRpb25z
OjpEZXN0aW5hdGlvbjo6U2hhcmVkd29ya2VyKSwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3Jj
ZW1lbnQ6OkVuZm9yY2VXb3JrZXJTcmNEaXJlY3RpdmUsIFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxs
LCAqdGhpcywgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7Cit9CisKK3ZvaWQgU2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29y
a2VyRmV0Y2hSZXN1bHQmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoIW1f
Y29tcGxldGlvbkhhbmRsZXIpOworICAgIG1fY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKTsKKworICAgIG1fbG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoKm1f
d29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFJlc291cmNlUmVxdWVzdChtX3VybCks
IG1fd29ya2VyLT53b3JrZXJGZXRjaE9wdGlvbnMobV9vcHRpb25zLCBGZXRjaE9wdGlvbnM6OkRl
c3RpbmF0aW9uOjpTaGFyZWR3b3JrZXIpLCBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVu
dDo6RW5mb3JjZVdvcmtlclNyY0RpcmVjdGl2ZSwgU2VydmljZVdvcmtlcnNNb2RlOjpBbGwsICp0
aGlzLCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKIH0KIAogdm9pZCBTaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCkBAIC01NSwxNiArNTgsMTIg
QEAgdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnQKIAogdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXI6Om5vdGlmeUZpbmlzaGVkKCkKIHsKLSAgICBtX3dvcmtlci0+c2V0SXNMb2FkaW5nKGZhbHNl
KTsKKyAgICBpZiAobV9sb2FkZXItPmZhaWxlZCgpKQorICAgICAgICByZXR1cm4gbV9jb21wbGV0
aW9uSGFuZGxlcih3b3JrZXJGZXRjaEVycm9yKG1fbG9hZGVyLT5lcnJvcigpKSk7CiAKLSAgICBh
dXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKLSAgICBpZiAobV9sb2FkZXItPmZhaWxlZCgpIHx8ICFzY3JpcHRFeGVjdXRpb25D
b250ZXh0KSB7Ci0gICAgICAgIG1fd29ya2VyLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXND
YW5jZWxhYmxlOjpZZXMpKTsKLSAgICAgICAgU2hhcmVkV29ya2VyTWFuYWdlcjo6c2luZ2xldG9u
KCkuc2NyaXB0TG9hZEZhaWxlZCgqdGhpcyk7IC8vIGRlbGV0ZXMgdGhpcy4KLSAgICB9IGVsc2Ug
eworICAgIGlmIChhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbV93b3JrZXItPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpz
Y3JpcHRJbXBvcnRlZCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgbV9sb2FkZXItPmlkZW50aWZp
ZXIoKSwgbV9sb2FkZXItPnNjcmlwdCgpLnRvU3RyaW5nKCkpOwotICAgICAgICBTaGFyZWRXb3Jr
ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5zY3JpcHRMb2FkZWRTdWNjZXNzZnVsbHkoKnRoaXMsIG1f
bG9hZGVyLT5zY3JpcHQoKSwgKm1fd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1f
d29ya2VyLmdldCgpLCBzdGQ6OmV4Y2hhbmdlKG1fcG9ydCwgeyB9KSk7IC8vIGRlbGV0ZXMgdGhp
cy4KLSAgICB9CisgICAgbV9jb21wbGV0aW9uSGFuZGxlcih7IG1fbG9hZGVyLT5zY3JpcHQoKSwg
bV9sb2FkZXItPmNlcnRpZmljYXRlSW5mbygpLCBtX2xvYWRlci0+Y29udGVudFNlY3VyaXR5UG9s
aWN5KCksIG1fbG9hZGVyLT5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KCksIG1fbG9hZGVyLT5y
ZWZlcnJlclBvbGljeSgpLCB7IH0gfSk7IC8vIGRlbGV0ZXMgdGhpcy4KIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaAppbmRleCBhZTViM2JiOWVjNTIwNzQ1MzNlZmQ4
NDA5MmNlZWE5OTlmMjAxNzk5Li5lYjBiNzE0NWJmYTFhYmY0NWRkOTYyYTAyMTVjYjg5MDljY2Nk
Mzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXJTY3JpcHRMb2FkZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSwxMSArMjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0SWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IlJlc291cmNlUmVzcG9uc2UuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiV29ya2VyT3B0aW9ucy5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlckNs
aWVudC5oIgogI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CkBAIC0zOSwzMiArMzcs
MjggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTaGFyZWRXb3JrZXI7CiBjbGFzcyBX
b3JrZXJTY3JpcHRMb2FkZXI7Ci0KLWNsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjsKLQot
dXNpbmcgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpNZXNzYWdl
UG9ydElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllcj47CitzdHJ1Y3Qg
V29ya2VyRmV0Y2hSZXN1bHQ7CiAKIGNsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciA6IHBy
aXZhdGUgV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIoY29uc3QgVVJMJiwg
U2hhcmVkV29ya2VyJiwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBXb3JrZXJPcHRpb25zJiYp
OworICAgIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcihVUkwmJiwgU2hhcmVkV29ya2VyJiwgV29y
a2VyT3B0aW9ucyYmKTsKKworICAgIHZvaWQgbG9hZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFdvcmtlckZldGNoUmVzdWx0Jik+JiYpOwogCi0gICAgU2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9
CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIFNoYXJl
ZFdvcmtlciYgd29ya2VyKCkgeyByZXR1cm4gbV93b3JrZXIuZ2V0KCk7IH0KLSAgICBjb25zdCBX
b3JrZXJPcHRpb25zJiBvcHRpb25zKCkgeyByZXR1cm4gbV9vcHRpb25zOyB9CisgICAgY29uc3Qg
V29ya2VyT3B0aW9ucyYgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9uczsgfQogCiBw
cml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5Rmlu
aXNoZWQoKSBmaW5hbDsKIAotICAgIGNvbnN0IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcklkZW50
aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIGNvbnN0IFdvcmtlck9wdGlvbnMgbV9vcHRpb25zOwog
ICAgIGNvbnN0IFJlZjxTaGFyZWRXb3JrZXI+IG1fd29ya2VyOwotICAgIFRyYW5zZmVycmVkTWVz
c2FnZVBvcnQgbV9wb3J0OwogICAgIGNvbnN0IFJlZjxXb3JrZXJTY3JpcHRMb2FkZXI+IG1fbG9h
ZGVyOwotICAgIGNvbnN0IFJlZjxBY3RpdmVET01PYmplY3Q6OlBlbmRpbmdBY3Rpdml0eTxTaGFy
ZWRXb3JrZXI+PiBtX3BlbmRpbmdBY3Rpdml0eTsKICAgICBjb25zdCBVUkwgbV91cmw7CisgICAg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYpPiBtX2NvbXBs
ZXRpb25IYW5kbGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wN2E5MGQ5ODA1MTI0YmVhYmMy
ZTY0ZGQyMzA4NDlmMzYyOTg0N2M3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKQEAg
LTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KyNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyJiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkKK3sKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI+IHNoYXJl
ZE1hbmFnZXI7CisgICAgcmV0dXJuIHNoYXJlZE1hbmFnZXI7Cit9CisKK1NoYXJlZFdvcmtlclRo
cmVhZFByb3h5KiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2hhcmVkV29ya2VyKFNoYXJl
ZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV93b3JrZXJNYXAuZ2V0KHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworfQorCit2b2lk
IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzdG9wU2hhcmVkV29ya2VyKFNoYXJlZFdvcmtl
cklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHdvcmtlciA9
IG1fd29ya2VyTWFwLnRha2Uoc2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9M
T0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0b3BTaGFyZWRX
b3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHdvcmtlcj0lcCIsIHNo
YXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSwgd29ya2VyLmdldCgpKTsKKyAgICBpZiAo
IXdvcmtlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgd29ya2VyLT5zZXRBc1Rlcm1pbmF0aW5n
T3JUZXJtaW5hdGVkKCk7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gZGVh
bCB3aXRoIHRoZSB0aHJlYWQgYmVpbmcgdW5yZXNwb25zaXZlIGhlcmUuCisKKyAgICBhdXRvJiB0
aHJlYWQgPSB3b3JrZXItPnRocmVhZCgpOworICAgIHRocmVhZC5zdG9wKFt3b3JrZXIgPSBXVEZN
b3ZlKHdvcmtlcildKCkgbXV0YWJsZSB7CisgICAgICAgIC8vIFNwaW4gdGhlIHJ1bmxvb3AgYmVm
b3JlIHJlbGVhc2luZyB0aGUgc2hhcmVkIHdvcmtlciB0aHJlYWQgcHJveHksIGFzIHRoZXJlIHdv
dWxkIG90aGVyd2lzZSBiZQorICAgICAgICAvLyBhIHJhY2UgdG93YXJkcyBpdHMgZGVzdHJ1Y3Rp
b24uCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dvcmtlciA9IFdURk1vdmUod29ya2VyKV0g
eyB9KTsKKyAgICB9KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c3Rv
cEFsbFNoYXJlZFdvcmtlcnMoKQoreworICAgIHdoaWxlICghbV93b3JrZXJNYXAuaXNFbXB0eSgp
KQorICAgICAgICBzdG9wU2hhcmVkV29ya2VyKG1fd29ya2VyTWFwLmJlZ2luKCktPmtleSk7Cit9
CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNldENvbm5lY3Rpb24oc3RkOjp1
bmlxdWVfcHRyPENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlQoIW1fY29u
bmVjdGlvbiB8fCBtX2Nvbm5lY3Rpb24tPmlzQ2xvc2VkKCkpOworICAgIG1fY29ubmVjdGlvbiA9
IFdURk1vdmUoY29ubmVjdGlvbik7Cit9CisKK2F1dG8gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXI6OmNvbm5lY3Rpb24oKSBjb25zdCAtPiBDb25uZWN0aW9uKgoreworICAgIHJldHVybiBtX2Nv
bm5lY3Rpb24uZ2V0KCk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnJl
Z2lzdGVyU2hhcmVkV29ya2VyVGhyZWFkKFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4mJiBw
cm94eSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIFJFTEVBU0VfTE9HKFNo
YXJlZFdvcmtlciwgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpyZWdpc3RlclNoYXJlZFdv
cmtlclRocmVhZDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHByb3h5LT5pZGVu
dGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IG1fd29ya2VyTWFwLmFk
ZChwcm94eS0+aWRlbnRpZmllcigpLCBwcm94eS5jb3B5UmVmKCkpOworICAgIEFTU0VSVF9VTlVT
RUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICBwcm94eS0+dGhyZWFkKCkuc3Rh
cnQoW10oY29uc3QgU3RyaW5nJiAvKmV4Y2VwdGlvbk1lc3NhZ2UqLykgeyB9KTsKK30KKwordm9p
ZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVu
dChTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFRyYW5zZmVy
cmVkTWVzc2FnZVBvcnQmJiB0cmFuc2ZlcnJlZFBvcnQsIFN0cmluZyYmIHNvdXJjZU9yaWdpbikK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8qIHByb3h5ID0gU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNoYXJlZFdvcmtlcihzaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVudDogc2hhcmVkV29y
a2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgcHJveHk9JXAiLCBzaGFyZWRXb3JrZXJJZGVudGlm
aWVyLnRvVUludDY0KCksIHByb3h5KTsKKyAgICBpZiAoIXByb3h5KQorICAgICAgICByZXR1cm47
CisKKyAgICBwcm94eS0+dGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFt0cmFuc2ZlcnJlZFBv
cnQgPSBXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCksIHNvdXJjZU9yaWdpbiA9IFdURk1vdmUoc291
cmNlT3JpZ2luKS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
IG11dGFibGUgeworICAgICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgZG93
bmNhc3Q8U2hhcmVkV29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnBv
c3RDb25uZWN0RXZlbnQoV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBXVEZNb3ZlKHNvdXJjZU9y
aWdpbikpOworICAgIH0pOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpD
b25uZWN0aW9uOjp0ZXJtaW5hdGVTaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllciBz
aGFyZWRXb3JrZXJJZGVudGlmaWVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Cisg
ICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6
OkNvbm5lY3Rpb246OnRlcm1pbmF0ZVNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmll
cj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnN0b3BTaGFyZWRXb3JrZXIoc2hh
cmVkV29ya2VySWRlbnRpZmllcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQv
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMzgyNTI4OTM3M2UwZTY4
NjFiOWVjZTdkN2JlOWMxMzE2YzkwZTIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oCkBA
IC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNo
YXJlZFdvcmtlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0
LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTsKKworY2xhc3MgU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXIgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlciYgc2luZ2xldG9uKCk7CisKKyAgICBTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eSogc2hhcmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIpIGNvbnN0OworICAgIHZv
aWQgc3RvcFNoYXJlZFdvcmtlcihTaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHN0b3BBbGxTaGFyZWRXb3JrZXJzKCk7CisKKyAgICBjbGFzcyBDb25uZWN0
aW9uIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAg
ICAgICB2aXJ0dWFsIH5Db25uZWN0aW9uKCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBlc3Rh
Ymxpc2hDb25uZWN0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgPSAwOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFNoYXJlZFdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpID0gMDsKKyAgICAgICAgYm9v
bCBpc0Nsb3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDbG9zZWQ7IH0KKworICAgIHByb3RlY3Rl
ZDoKKyAgICAgICAgdm9pZCBzZXRBc0Nsb3NlZCgpIHsgbV9pc0Nsb3NlZCA9IHRydWU7IH0KKwor
ICAgICAgICAvLyBJUEMgbWVzc2FnZSBoYW5kbGVycy4KKyAgICAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBwb3N0Q29ubmVjdEV2ZW50KFNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFRyYW5zZmVycmVk
TWVzc2FnZVBvcnQmJiwgU3RyaW5nJiYgc291cmNlT3JpZ2luKTsKKyAgICAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB0ZXJtaW5hdGVTaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllcik7
CisKKyAgICBwcml2YXRlOgorICAgICAgICBib29sIG1faXNDbG9zZWQgeyBmYWxzZSB9OworICAg
IH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbm5lY3Rpb24oc3RkOjp1bmlxdWVf
cHRyPENvbm5lY3Rpb24+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIENvbm5lY3Rpb24qIGNvbm5l
Y3Rpb24oKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVnaXN0ZXJTaGFyZWRX
b3JrZXJUaHJlYWQoUmVmPFNoYXJlZFdvcmtlclRocmVhZFByb3h5PiYmKTsKKworcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8U2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXI+OworCisgICAgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIoKSA9IGRlZmF1bHQ7CisKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIEhhc2hNYXA8
U2hhcmVkV29ya2VySWRlbnRpZmllciwgUmVmPFNoYXJlZFdvcmtlclRocmVhZFByb3h5Pj4gbV93
b3JrZXJNYXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHkuY3BwCmluZGV4IDliZDk3ODNkN2E3ZTU4ZTY3YjZiODBiNWQ1NDRmZWMyZWNm
MmNhZjUuLjI2YmE3YjY4YmNlZDJlOTJlMTY3ZTc3OWM5Y2Q1NWQzZDNiMTc4NzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQv
U2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDk0ICsyOCw3MiBAQAogCiAjaW5jbHVkZSAi
Q2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJFcnJvckV2ZW50LmgiCisjaW5jbHVk
ZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkZyYW1l
LmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRl
ci5oIgorI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgorI2luY2x1ZGUg
IlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyR2xv
YmFsU2NvcGUuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlICJX
b3JrZXJGZXRjaFJlc3VsdC5oIgorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXJzRmFjdG9yeS5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShT
aGFyZWRXb3JrZXImIHNoYXJlZFdvcmtlcikKLSAgICA6IG1fc2hhcmVkV29ya2VyKHNoYXJlZFdv
cmtlcikKLSAgICAsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChzaGFyZWRXb3JrZXIuc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICwgbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yKHNoYXJl
ZFdvcmtlci5pZGVudGlmaWVyRm9ySW5zcGVjdG9yKCkpCitzdGF0aWMgSGFzaFNldDxTaGFyZWRX
b3JrZXJUaHJlYWRQcm94eSo+JiBhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkKIHsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSo+
PiBzZXQ7CisgICAgcmV0dXJuIHNldDsKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eTo6c3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgY29uc3Qg
U2NyaXB0QnVmZmVyJiBzY3JpcHRCdWZmZXIsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLCBib29s
IHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgQ3Jvc3NP
cmlnaW5FbWJlZGRlclBvbGljeSYgY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwgTW9ub3Rvbmlj
VGltZSB0aW1lT3JpZ2luLCBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSwgV29ya2VyVHlw
ZSB3b3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RDcmVkZW50aWFscyBjcmVkZW50aWFscywgSlNDOjpS
dW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKQorc3RhdGljIFdvcmtlclBhcmFtZXRlcnMgZ2VuZXJh
dGVXb3JrZXJQYXJhbWV0ZXJzKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBXb3JrZXJGZXRj
aFJlc3VsdCYgd29ya2VyRmV0Y2hSZXN1bHQsIFdvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25z
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIGlm
IChtX2Fza2VkVG9UZXJtaW5hdGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gcGFyYW1l
dGVycyA9IFdvcmtlclBhcmFtZXRlcnMgeworICAgIHJldHVybiBXb3JrZXJQYXJhbWV0ZXJzIHsK
ICAgICAgICAgc2NyaXB0VVJMLAotICAgICAgICBuYW1lLAotICAgICAgICBtX2lkZW50aWZpZXJG
b3JJbnNwZWN0b3IsCisgICAgICAgIHdvcmtlck9wdGlvbnMubmFtZSwKKyAgICAgICAgInNoYXJl
ZHdvcmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZp
ZXIoKSwKICAgICAgICAgdXNlckFnZW50LAotICAgICAgICBpc09ubGluZSwKLSAgICAgICAgY29u
dGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLAotICAgICAgICBzaG91bGRCeXBhc3NN
YWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksCi0gICAgICAgIGNyb3NzT3JpZ2luRW1iZWRk
ZXJQb2xpY3ksCi0gICAgICAgIHRpbWVPcmlnaW4sCi0gICAgICAgIHJlZmVycmVyUG9saWN5LAot
ICAgICAgICB3b3JrZXJUeXBlLAotICAgICAgICBjcmVkZW50aWFscywKLSAgICAgICAgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5zZXR0aW5nc1ZhbHVlcygpCisgICAgICAgIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5pc09uTGluZSgpLAorICAgICAgICB3b3JrZXJG
ZXRjaFJlc3VsdC5jb250ZW50U2VjdXJpdHlQb2xpY3ksCisgICAgICAgIGZhbHNlLAorICAgICAg
ICB3b3JrZXJGZXRjaFJlc3VsdC5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LAorICAgICAgICBN
b25vdG9uaWNUaW1lOjpub3coKSwKKyAgICAgICAgcGFyc2VSZWZlcnJlclBvbGljeSh3b3JrZXJG
ZXRjaFJlc3VsdC5yZWZlcnJlclBvbGljeSwgUmVmZXJyZXJQb2xpY3lTb3VyY2U6OkhUVFBIZWFk
ZXIpLnZhbHVlX29yKFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZyksCisgICAgICAgIHdvcmtl
ck9wdGlvbnMudHlwZSwKKyAgICAgICAgd29ya2VyT3B0aW9ucy5jcmVkZW50aWFscywKKyAgICAg
ICAgZG9jdW1lbnQuc2V0dGluZ3NWYWx1ZXMoKQogICAgIH07Ci0KLSAgICBpZiAoIW1fd29ya2Vy
VGhyZWFkKSB7Ci0gICAgICAgIG1fd29ya2VyVGhyZWFkID0gU2hhcmVkV29ya2VyVGhyZWFkOjpj
cmVhdGUoU2hhcmVkV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgcGFyYW1ldGVycywgc2Ny
aXB0QnVmZmVyLCAqdGhpcywgKnRoaXMsICp0aGlzLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5v
cm1hbCwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT50b3BPcmlnaW4oKSwgbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5pZGJDb25uZWN0aW9uUHJveHkoKSwgbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5zb2NrZXRQcm92aWRlcigpLCBydW50aW1lRmxhZ3MpOwotICAgICAgICBtX3dvcmtlclRo
cmVhZC0+c3RhcnQoKTsKLSAgICB9Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6
OnRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCkKLXsKLSAgICBpZiAobV9hc2tlZFRvVGVybWlu
YXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2Fza2VkVG9UZXJtaW5hdGUgPSB0cnVlOwot
ICAgIGlmIChtX3dvcmtlclRocmVhZCkKLSAgICAgICAgbV93b3JrZXJUaHJlYWQtPnN0b3AobnVs
bHB0cik7CiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RNZXNzYWdlVG9X
b3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UpCitTaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHkoVW5pcXVlUmVmPFBh
Z2U+JiYgcGFnZSwgU2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVy
LCBjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgY29uc3QgVVJMJiBzY3JpcHRVUkws
IFdvcmtlckZldGNoUmVzdWx0JiYgd29ya2VyRmV0Y2hSZXN1bHQsIFdvcmtlck9wdGlvbnMmJiB3
b3JrZXJPcHRpb25zLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgQ2FjaGVTdG9yYWdlUHJvdmlk
ZXImIGNhY2hlU3RvcmFnZVByb3ZpZGVyKQorICAgIDogbV9wYWdlKFdURk1vdmUocGFnZSkpCisg
ICAgLCBtX2RvY3VtZW50KCptX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCisgICAgLCBt
X3dvcmtlclRocmVhZChTaGFyZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZShzaGFyZWRXb3JrZXJJZGVu
dGlmaWVyLCBnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMoc2NyaXB0VVJMLCB3b3JrZXJGZXRjaFJl
c3VsdCwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSwgdXNlckFnZW50LCBtX2RvY3VtZW50KSwgV1RG
TW92ZSh3b3JrZXJGZXRjaFJlc3VsdC5zY3JpcHQpLCAqdGhpcywgKnRoaXMsICp0aGlzLCBXb3Jr
ZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgY2xpZW50T3JpZ2luLnRvcE9yaWdpbi5zZWN1cml0
eU9yaWdpbigpLCBtX2RvY3VtZW50LT5pZGJDb25uZWN0aW9uUHJveHkoKSwgbV9kb2N1bWVudC0+
c29ja2V0UHJvdmlkZXIoKSwgSlNDOjpSdW50aW1lRmxhZ3M6OmNyZWF0ZUFsbEVuYWJsZWQoKSkp
CisgICAgLCBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyKGNhY2hlU3RvcmFnZVByb3ZpZGVyKQogewot
ICAgIC8vIEZJWE1FOiBTaGFyZWRXb3JrZXIgZG9lc24ndCBoYXZlIHBvc3RNZXNzYWdlLCBzbyB0
aGlzIG1pZ2h0IG5vdCBiZSBuZWNlc3NhcnkuCi0gICAgcG9zdFRhc2tUb1dvcmtlckdsb2JhbFNj
b3BlKFttZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKV0oYXV0byYgc2NyaXB0Q29udGV4dCkgbXV0
YWJsZSB7Ci0gICAgICAgIGF1dG8mIGNvbnRleHQgPSBkb3duY2FzdDxTaGFyZWRXb3JrZXJHbG9i
YWxTY29wZT4oc2NyaXB0Q29udGV4dCk7Ci0gICAgICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9y
dDo6ZW50YW5nbGVQb3J0cyhzY3JpcHRDb250ZXh0LCBXVEZNb3ZlKG1lc3NhZ2UudHJhbnNmZXJy
ZWRQb3J0cykpOwotICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50Ojpj
cmVhdGUoV1RGTW92ZShwb3J0cyksIG1lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpKSk7
Ci0gICAgfSk7Ci19CisgICAgQVNTRVJUKCFhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCku
Y29udGFpbnModGhpcykpOworICAgIGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKS5hZGQo
dGhpcyk7CiAKLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RUYXNrVG9Xb3JrZXJH
bG9iYWxTY29wZShGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJiB0YXNr
KQotewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBt
X3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFdURk1vdmUodGFzaykpOwotfQotCi1i
b29sIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAot
ewotICAgIHJldHVybiBtX2hhc1BlbmRpbmdBY3Rpdml0eSAmJiAhbV9hc2tlZFRvVGVybWluYXRl
OworICAgIHN0YXRpYyBib29sIGFkZGVkTGlzdGVuZXI7CisgICAgaWYgKCFhZGRlZExpc3RlbmVy
KSB7CisgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5hZGRP
bmxpbmVTdGF0ZUNoYW5nZUxpc3RlbmVyKCZuZXR3b3JrU3RhdGVDaGFuZ2VkKTsKKyAgICAgICAg
YWRkZWRMaXN0ZW5lciA9IHRydWU7CisgICAgfQogfQogCi12b2lkIFNoYXJlZFdvcmtlclRocmVh
ZFByb3h5Ojp3b3JrZXJPYmplY3REZXN0cm95ZWQoKQorU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6
On5TaGFyZWRXb3JrZXJUaHJlYWRQcm94eSgpCiB7Ci0gICAgbV9zaGFyZWRXb3JrZXIgPSBudWxs
cHRyOwotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXNdIChhdXRv
JikgewotICAgICAgICBtX21heUJlRGVzdHJveWVkID0gdHJ1ZTsKLSAgICAgICAgaWYgKG1fd29y
a2VyVGhyZWFkKQotICAgICAgICAgICAgdGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5h
bCgpOwotICAgIH0pOworICAgIEFTU0VSVChhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCku
Y29udGFpbnModGhpcykpOworICAgIGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKS5yZW1v
dmUodGhpcyk7CiB9CiAKIFNoYXJlZFdvcmtlcklkZW50aWZpZXIgU2hhcmVkV29ya2VyVGhyZWFk
UHJveHk6OmlkZW50aWZpZXIoKSBjb25zdApAQCAtMTI1LDg4ICsxMDMsNTQgQEAgU2hhcmVkV29y
a2VySWRlbnRpZmllciBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6aWRlbnRpZmllcigpIGNvbnN0
CiAKIHZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Om5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5n
ZShib29sIGlzT25saW5lKQogewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCisgICAgaWYg
KG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KCFtX3dvcmtlclRocmVhZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV93b3JrZXJUaHJlYWQt
PnJ1bkxvb3AoKS5wb3N0VGFzayhbaXNPbmxpbmVdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSB7CisgICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZShbaXNPbmxpbmVdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAg
IGF1dG8mIGdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQp
OwogICAgICAgICBnbG9iYWxTY29wZS5zZXRJc09ubGluZShpc09ubGluZSk7Ci0gICAgICAgIGds
b2JhbFNjb3BlLmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShpc09ubGluZSA/IGV2ZW50TmFt
ZXMoKS5vbmxpbmVFdmVudCA6IGV2ZW50TmFtZXMoKS5vZmZsaW5lRXZlbnQsIEV2ZW50OjpDYW5C
dWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwotICAgIH0pOwotfQotCi12b2lk
IFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpzdXNwZW5kRm9yQmFja0ZvcndhcmRDYWNoZSgpCi17
Ci0KLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cmVzdW1lRm9yQmFja0Zvcndh
cmRDYWNoZSgpCi17Ci0KKyAgICAgICAgZ2xvYmFsU2NvcGUuZXZlbnRMb29wKCkucXVldWVUYXNr
KFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW2dsb2JhbFNjb3BlID0gUmVmIHsgZ2xvYmFs
U2NvcGUgfSwgaXNPbmxpbmVdIHsKKyAgICAgICAgICAgIGdsb2JhbFNjb3BlLT5kaXNwYXRjaEV2
ZW50KEV2ZW50OjpjcmVhdGUoaXNPbmxpbmUgPyBldmVudE5hbWVzKCkub25saW5lRXZlbnQgOiBl
dmVudE5hbWVzKCkub2ZmbGluZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6Tm8pKTsKKyAgICAgICAgfSk7CisgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVm
YXVsdE1vZGUoKSk7CiB9CiAKIHZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RFeGNl
cHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewotICAg
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXMsIGVycm9yTWVzc2FnZSA9
IGVycm9yTWVzc2FnZS5pc29sYXRlZENvcHkoKSwgc291cmNlVVJMID0gc291cmNlVVJMLmlzb2xh
dGVkQ29weSgpLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXJdIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JikgewotICAgICAgICBpZiAoIW1fc2hhcmVkV29ya2VyKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIC8vIFdlIGRvbid0IGJvdGhlciBjaGVja2luZyB0aGUgYXNrZWRUb1Rlcm1p
bmF0ZSgpIGZsYWcgaGVyZSwgYmVjYXVzZSBleGNlcHRpb25zIHNob3VsZCAqYWx3YXlzKiBiZSBy
ZXBvcnRlZCBldmVuIGlmIHRoZSB0aHJlYWQgaXMgdGVybWluYXRlZC4KLSAgICAgICAgLy8gVGhp
cyBpcyBpbnRlbnRpb25hbGx5IGRpZmZlcmVudCB0aGFuIHRoZSBiZWhhdmlvciBpbiBNZXNzYWdl
V29ya2VyVGFzaywgYmVjYXVzZSB0ZXJtaW5hdGVkIHdvcmtlcnMgbm8gbG9uZ2VyIGRlbGl2ZXIg
bWVzc2FnZXMgKHNlY3Rpb24gNC42IG9mIHRoZSBXZWJXb3JrZXIgc3BlYyksIGJ1dCB0aGV5IGRv
IHJlcG9ydCBleGNlcHRpb25zLgotICAgICAgICBBY3RpdmVET01PYmplY3Q6OnF1ZXVlVGFza1Rv
RGlzcGF0Y2hFdmVudCgqbV9zaGFyZWRXb3JrZXIsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlv
biwgRXJyb3JFdmVudDo6Y3JlYXRlKGVycm9yTWVzc2FnZSwgc291cmNlVVJMLCBsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIHsgfSkpOwotICAgIH0pOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclRo
cmVhZFByb3h5Ojp3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgpCi17Ci0gICAgbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpc10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
KSB7Ci0gICAgICAgIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwoKTsKLSAgICB9
KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtl
ck9iamVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKQotewotCi19Ci0KLXZvaWQgU2hhcmVk
V29ya2VyVGhyZWFkUHJveHk6OmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sKQot
ewotfQorICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIGlmICghbV93b3JrZXJUaHJl
YWQtPmlzSW5TdGF0aWNTY3JpcHRFdmFsdWF0aW9uKCkpCisgICAgICAgIHJldHVybjsKIAotdm9p
ZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wgaGFz
UGVuZGluZ0FjdGl2aXR5KQotewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRh
c2soW3RoaXMsIGhhc1BlbmRpbmdBY3Rpdml0eV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7
Ci0gICAgICAgIG1faGFzUGVuZGluZ0FjdGl2aXR5ID0gaGFzUGVuZGluZ0FjdGl2aXR5OworICAg
IGNhbGxPbk1haW5UaHJlYWQoW3NoYXJlZFdvcmtlcklkZW50aWZpZXIgPSBtX3dvcmtlclRocmVh
ZC0+aWRlbnRpZmllcigpLCBlcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2UuaXNvbGF0ZWRDb3B5
KCksIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMID0gc291cmNlVVJMLmlzb2xh
dGVkQ29weSgpXSB7CisgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAgICAgIGNv
bm5lY3Rpb24tPnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJJZGVudGlm
aWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMKTsK
ICAgICB9KTsKIH0KIAogUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IFNoYXJlZFdvcmtl
clRocmVhZFByb3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1l
bnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIHJldHVybiBkb2N1bWVudC5wYWdl
KCktPmNhY2hlU3RvcmFnZVByb3ZpZGVyKCkuY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigp
OworICAgIGlmICghbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uKQorICAgICAgICBtX2NhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24gPSBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyLmNyZWF0ZUNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24oKTsKKyAgICByZXR1cm4gbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uOwogfQog
CiBSZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbj4gU2hhcmVkV29y
a2VyVGhyZWFkUHJveHk6OmNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rp
b24oKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byYgZG9jdW1lbnQg
PSBkb3duY2FzdDxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgaWYg
KCFkb2N1bWVudC5wYWdlKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBk
b2N1bWVudC5wYWdlKCktPmxpYldlYlJUQ1Byb3ZpZGVyKCkuY3JlYXRlUlRDRGF0YUNoYW5uZWxS
ZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpOworICAgIHJldHVybiBtX3BhZ2UtPmxpYldlYlJUQ1By
b3ZpZGVyKCkuY3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpOwog
fQogCiB2b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0VGFza1RvTG9hZGVyKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQogewotICAgIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+cG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7CisgICAgY2FsbE9uTWFpblRocmVhZChb
dGFzayA9IFdURk1vdmUodGFzayksIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSBt
dXRhYmxlIHsKKyAgICAgICAgdGFzay5wZXJmb3JtVGFzayhwcm90ZWN0ZWRUaGlzLT5tX2RvY3Vt
ZW50LmdldCgpKTsKKyAgICB9KTsKIH0KIAogYm9vbCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6
cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrJiYgdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQogewotICAgIGlmICht
X2Fza2VkVG9UZXJtaW5hdGUpCisgICAgaWYgKG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5w
b3N0VGFza0Zvck1vZGUoV1RGTW92ZSh0YXNrKSwgbW9kZSk7CkBAIC0yMjMsMTYgKzE2NywxMCBA
QCB2b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxl
ZEJ5V2ViSW5zcGVjdG9yKGJvb2wpCiAKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eTo6d29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpCit2b2lkIFNoYXJlZFdvcmtl
clRocmVhZFByb3h5OjpuZXR3b3JrU3RhdGVDaGFuZ2VkKGJvb2wgaXNPbkxpbmUpCiB7Ci0gICAg
Ly8gVGhpcyBpcyBhbHdheXMgdGhlIGxhc3QgdGFzayB0byBiZSBwZXJmb3JtZWQsIHNvIHRoZSBw
cm94eSBpcyBub3QgbmVlZGVkIGZvciBjb21tdW5pY2F0aW9uCi0gICAgLy8gaW4gZWl0aGVyIHNp
ZGUgYW55IG1vcmUuIEhvd2V2ZXIsIHRoZSBXb3JrZXIgb2JqZWN0IG1heSBzdGlsbCBleGlzdCwg
YW5kIGl0IGFzc3VtZXMgdGhhdCB0aGUgcHJveHkgZXhpc3RzLCB0b28uCi0gICAgbV9hc2tlZFRv
VGVybWluYXRlID0gdHJ1ZTsKLSAgICBtX3dvcmtlclRocmVhZCA9IG51bGxwdHI7Ci0KLSAgICAv
LyBUaGlzIGJhbGFuY2VzIHRoZSBvcmlnaW5hbCByZWYgaW4gY29uc3RydWN0aW9uLgotICAgIGlm
IChtX21heUJlRGVzdHJveWVkKQotICAgICAgICBkZXJlZigpOworICAgIGZvciAoYXV0byogcHJv
eHkgOiBhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkpCisgICAgICAgIHByb3h5LT5ub3Rp
ZnlOZXR3b3JrU3RhdGVDaGFuZ2UoaXNPbkxpbmUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1No
YXJlZFdvcmtlclRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9j
b250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmgKaW5kZXggNGU5MmU0NTYxNzFjZTkxYWVi
ODc1YTM1ZTc1OWI5ZWM1YjU0MWVmNy4uMzM2NDI0MGFiYmI1OWI4ZDFkMDM5ZmVlYmQwNWIxNGEw
MjczN2FkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4
dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw3ICsyNyw2IEBACiAK
ICNpbmNsdWRlICJTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV29ya2VyRGVi
dWdnZXJQcm94eS5oIgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlUHJveHkuaCIKICNpbmNs
dWRlICJXb3JrZXJMb2FkZXJQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlck9iamVjdFByb3h5Lmgi
CiAjaW5jbHVkZSAiV29ya2VyT3B0aW9ucy5oIgpAQCAtMzUsNTAgKzM0LDU0IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ2FjaGVTdG9yYWdlUHJvdmlkZXI7CitjbGFzcyBQYWdl
OwogY2xhc3MgU2hhcmVkV29ya2VyOwogY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkOwogCi1jbGFz
cyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4sIHB1YmxpYyBXb3JrZXJHbG9iYWxTY29wZVBy
b3h5LCBwdWJsaWMgV29ya2VyT2JqZWN0UHJveHksIHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94eSwg
cHVibGljIFdvcmtlckRlYnVnZ2VyUHJveHkgeworc3RydWN0IENsaWVudE9yaWdpbjsKK3N0cnVj
dCBXb3JrZXJGZXRjaFJlc3VsdDsKKworY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkgZmlu
YWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkV29ya2VyVGhyZWFkUHJveHk+
LCBwdWJsaWMgV29ya2VyT2JqZWN0UHJveHksIHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94eSwgcHVi
bGljIFdvcmtlckRlYnVnZ2VyUHJveHkgewogcHVibGljOgotICAgIHRlbXBsYXRlPHR5cGVuYW1l
Li4uIEFyZ3M+IHN0YXRpYyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSYgY3JlYXRlKEFyZ3MmJi4u
LiBhcmdzKSB7IHJldHVybiAqbmV3IFNoYXJlZFdvcmtlclRocmVhZFByb3h5KHN0ZDo6Zm9yd2Fy
ZDxBcmdzPihhcmdzKS4uLik7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0
aWMgUmVmPFNoYXJlZFdvcmtlclRocmVhZFByb3h5PiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkoc3RkOjpmb3J3YXJk
PEFyZ3M+KGFyZ3MpLi4uKSk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB+U2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkoKTsKIAogICAgIFNoYXJlZFdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNv
bnN0OwotICAgIFNoYXJlZFdvcmtlclRocmVhZCogdGhyZWFkKCkgeyByZXR1cm4gbV93b3JrZXJU
aHJlYWQuZ2V0KCk7IH0KKyAgICBTaGFyZWRXb3JrZXJUaHJlYWQmIHRocmVhZCgpIHsgcmV0dXJu
IG1fd29ya2VyVGhyZWFkOyB9CiAKLSAgICB2b2lkIHN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoY29u
c3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB1c2Vy
QWdlbnQsIGJvb2wgaXNPbmxpbmUsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc291cmNlQ29kZSwgY29u
c3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBh
c3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnN0IENyb3NzT3JpZ2luRW1iZWRk
ZXJQb2xpY3kmLCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIFJlZmVycmVyUG9saWN5LCBXb3Jr
ZXJUeXBlLCBGZXRjaFJlcXVlc3RDcmVkZW50aWFscywgSlNDOjpSdW50aW1lRmxhZ3MpIGZpbmFs
OwotICAgIHZvaWQgd29ya2VyT2JqZWN0RGVzdHJveWVkKCkgZmluYWw7Ci0gICAgYm9vbCBoYXNQ
ZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlckds
b2JhbFNjb3BlKCkgZmluYWw7CisgICAgYm9vbCBpc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkOyB9CisgICAgdm9pZCBz
ZXRBc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKCkgeyBtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0
ZWQgPSB0cnVlOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2hhcmVkV29ya2VyVGhyZWFk
UHJveHkoU2hhcmVkV29ya2VyJik7Ci0KLSAgICB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJv
eWVkSW50ZXJuYWwoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eShVbmlxdWVSZWY8UGFnZT4mJiwgU2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgQ2xpZW50
T3JpZ2luJiwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIFdvcmtlckZldGNoUmVzdWx0JiYsIFdvcmtl
ck9wdGlvbnMmJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIENhY2hlU3RvcmFnZVByb3ZpZGVy
Jik7CiAKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyYmKSBmaW5hbDsKLSAgICB2b2lkIHBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxT
Y29wZShGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJikgZmluYWw7Ci0g
ICAgdm9pZCBub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9vbCBpc09ubGluZSkgZmluYWw7Ci0g
ICAgdm9pZCBzdXNwZW5kRm9yQmFja0ZvcndhcmRDYWNoZSgpIGZpbmFsOwotICAgIHZvaWQgcmVz
dW1lRm9yQmFja0ZvcndhcmRDYWNoZSgpIGZpbmFsOworICAgIC8vIFdvcmtlck9iamVjdFByb3h5
LgogICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwpIGZpbmFsOwotICAgIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWQo
KSBmaW5hbDsKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHMmJikgZmluYWw7Ci0gICAgdm9pZCBjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJP
YmplY3QoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpIGZpbmFsOwotICAgIHZvaWQgcmVwb3J0UGVu
ZGluZ0FjdGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KSBmaW5hbDsKKyAgICB2b2lkIHBv
c3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJikgZmluYWwg
eyB9CisgICAgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgpIGZpbmFsIHsgfQorICAg
IHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wpIGZpbmFsIHsgfQorICAg
IHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wpIGZpbmFsIHsgfQorCisgICAgLy8gV29y
a2VyTG9hZGVyUHJveHkuCiAgICAgUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IGNyZWF0
ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKSBmaW5hbDsKICAgICBSZWZQdHI8UlRDRGF0YUNoYW5u
ZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbj4gY3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5k
bGVyQ29ubmVjdGlvbigpIGZpbmFsOwogICAgIHZvaWQgcG9zdFRhc2tUb0xvYWRlcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrJiYpIGZpbmFsOwogICAgIGJvb2wgcG9zdFRhc2tGb3JNb2Rl
VG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
JiYsIGNvbnN0IFN0cmluZyYgbW9kZSkgZmluYWw7CisKKyAgICAvLyBXb3JrZXJEZWJ1Z2dlclBy
b3h5LgogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb0RlYnVnZ2VyKGNvbnN0IFN0cmluZyYpIGZpbmFs
OwogICAgIHZvaWQgc2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3BlY3Rvcihib29s
KSBmaW5hbDsKIAotICAgIFdlYWtQdHI8U2hhcmVkV29ya2VyPiBtX3NoYXJlZFdvcmtlcjsKLSAg
ICBSZWZQdHI8U2hhcmVkV29ya2VyVGhyZWFkPiBtX3dvcmtlclRocmVhZDsKLSAgICBjb25zdCBS
ZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0Owot
ICAgIGNvbnN0IFN0cmluZyBtX2lkZW50aWZpZXJGb3JJbnNwZWN0b3I7Ci0gICAgYm9vbCBtX2Fz
a2VkVG9UZXJtaW5hdGUgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9oYXNQZW5kaW5nQWN0aXZpdHkg
eyBmYWxzZSB9OwotICAgIGJvb2wgbV9tYXlCZURlc3Ryb3llZCB7IGZhbHNlIH07CisgICAgc3Rh
dGljIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZChib29sIGlzT25MaW5lKTsKKyAgICB2b2lkIG5v
dGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25saW5lKTsKKworICAgIFVuaXF1ZVJlZjxQ
YWdlPiBtX3BhZ2U7CisgICAgUmVmPERvY3VtZW50PiBtX2RvY3VtZW50OworICAgIFJlZjxTaGFy
ZWRXb3JrZXJUaHJlYWQ+IG1fd29ya2VyVGhyZWFkOworICAgIENhY2hlU3RvcmFnZVByb3ZpZGVy
JiBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyOworICAgIFJlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uPiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247CisgICAgYm9vbCBtX2lzVGVybWluYXRpbmdP
clRlcm1pbmF0ZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01h
a2VMaXN0cy50eHQKaW5kZXggNzU2ZGE4OGI0NWY3MDQyZjQyM2I3MzRjNzY0ZTY1NjZkNDQ2ZWZh
Zi4uMjlmNGM3ODE4MTgwZGUyY2IyNDk1MDcyZTg0NjBhNTBhZDM2NGE0MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlz
dHMudHh0CkBAIC0yOCw2ICsyOCw3IEBAIHNldChXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMiCiAgICAgIiR7
V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiCiAgICAg
IiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlciIKKyAgICAiJHtXRUJL
SVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIiCiAgICAgIiR7V0VCS0lUX0RJUn0v
TmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZSIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZSIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlIgpA
QCAtMjAyLDYgKzIwMyw5IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKICAgICBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbgogICAgIE5ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCiAK
KyAgICBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbgorICAgIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCisKICAgICBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VNYW5hZ2VyU2V0CiAKICAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDb25uZWN0aW9uCkBAIC0zMDUsNiArMzA5LDggQEAgc2V0KFdlYktpdF9NRVNTQUdF
U19JTl9GSUxFUwogCiAgICAgV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFs
dGltZU1lZGlhU291cmNlTWFuYWdlcgogCisgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbgorICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uCiAgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ2xpZW50Q29ubmVjdGlvbgogICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKaW5kZXggNGM2NjIyMGNmMTIyYTUzYjc0NjlkNDQwMGM3Y2RkYjIzNWM4Yjc0
OS4uNzIyOWMxYjk4NzA4ODgxYjdiYWVjM2NmN2EwMjQ3MzU3MmUzNWRlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtOTEsNiArOTEsOCBA
QCAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJEb3dubG9hZFRhc2subWVzc2FnZXMuaQogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9E
SVIpL05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRX
b3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdl
clNldC5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0
d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4KQEAg
LTIxNyw2ICsyMTksOCBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgor
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9X
ZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBlM2I1NTg0MGFlMWVhZjU3ZjVl
YmY3NTQyZTVlMWZkNDBlNWRkNGQxLi5hODYzMjgxNDdiNTZjNWM1NjBhYTVhYmEzOWJmYWQzMjQ1
YzI2MTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3QKQEAgLTYwNyw2ICs2MDcsMTggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdC9XZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdl
cy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9X
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9X
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2Vz
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b25NZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTb2NrZXRD
aGFubmVsTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdC9XZWJTb2NrZXRDaGFubmVsTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTb2NrZXRDaGFubmVsTWVzc2FnZXNSZXBs
aWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA3YWQ0OWUzNzM1ZjRiNDc4YzQx
NmQ5Mjk1YzEzOWJlOThmZDZjZTRhLi4zNTFmZmFlMGE1ODY2MGMxZDEyZmY5YWNkODc3ZDI3YzUx
YzA3ZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysr
IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xMzMsNiArMTMzLDggQEAg
TUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRG93bmxvYWRUYXNrIFwKIAlOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJGZXRjaFRhc2sgXAogCU5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIFwKKwlOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbiBcCisJTmV0d29ya1Byb2Nlc3MvU2hh
cmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gXAogCU5l
dHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0gXAogCU5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzIFwKIAlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIgXApAQCAt
MjI1LDYgKzIyNyw4IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vz
cy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlciBcCisJ
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
biBcCisJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24g
XAogCVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBcCiAJ
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYTM0Zjc5YmRlM2Uw
ODE2OTZkNzNhNTVmYmY1OTA1OGJmNmQ4ZjM3OS4uYzdiMTdmZDcwNzg1NGIxMjg0OThkMTExOGY0
ZTZlN2Q1YjNkODVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTY2LDYgKzY2
LDExIEBACiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdv
cmtlclNlcnZlci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24u
aCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRUUENv
b2tpZUFjY2VwdFBvbGljeS5oPgpAQCAtMTMyLDYgKzEzNyw3IEBAIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2Vz
cyYgbmV0CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGVzdGFibGlzaFNXU2VydmVy
Q29ubmVjdGlvbigpOwogI2VuZGlmCisgICAgZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbigpOwogfQogCiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fk5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKQEAgLTE2Niw2ICsxNzIsNyBAQCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6fk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdW5yZWdpc3RlclNXQ29ubmVjdGlvbigpOwogI2Vu
ZGlmCisgICAgdW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKIH0KIAogdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzVXBsb2FkU3RhdGVDaGFuZ2VkKGJvb2wg
aGFzVXBsb2FkKQpAQCAtMjc1LDYgKzI4MiwxNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpbwog
ICAgIH0KICNlbmRpZgogCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09
IE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpIHsKKyAgICAgICAgaWYgKG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbikKKyAgICAg
ICAgICAgIG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgaWYg
KG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24pCisgICAgICAgICAgICBtX3NoYXJlZFdv
cmtlckNvbnRleHRDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVN
T1RFX1VJKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdl
czo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkKICAg
ICAgICAgcmV0dXJuIHBheW1lbnRDb29yZGluYXRvcigpLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOwpAQCAtMzk4LDkgKzQxNiw4IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uID0g
bnVsbHB0cjsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogI2VuZGlmCisg
ICAgbV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7CiAKICAgICAvLyBQ
cm90ZWN0IG91cnNlbGYgYXMgd2UgbWlnaHQgYmUgb3RoZXJ3aXNlIGJlIGRlbGV0ZWQgZHVyaW5n
IHRoaXMgZnVuY3Rpb24uCiAgICAgUmVmPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBw
cm90ZWN0b3IoKnRoaXMpOwpAQCAtNDQxLDYgKzQ1OCw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdW5yZWdpc3RlclNXQ29ubmVjdGlvbigpOwog
I2VuZGlmCisgICAgdW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKIAogI2lmIEVO
QUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQogICAgIG1fcGF5bWVudENvb3JkaW5hdG9yID0gbnVs
bHB0cjsKQEAgLTExODYsNiArMTIwNCw2MSBAQCBzaXplX3QgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmZpbmROZXR3b3JrQWN0aXZpdHlUcmFja2VyKFdlYkNvcmU6OlJlc291cgogICAg
ICAgICByZXR1cm4gaXRlbS5yZXNvdXJjZUlEID09IHJlc291cmNlSUQ7CiAgICAgfSk7CiB9CisK
K3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNo
YXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uOiIpOwor
ICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOworICAgIGlmIChhdXRvKiBzd1Nl
cnZlciA9IHNlc3Npb24gPyBzZXNzaW9uLT5zaGFyZWRXb3JrZXJTZXJ2ZXIoKSA6IG51bGxwdHIp
CisgICAgICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+KCp0aGlzLCBXVEZNb3ZlKHJl
Z2lzdHJhYmxlRG9tYWluKSwgKnN3U2VydmVyKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwor
fQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCkKK3sKKyAgICBpZiAobV9zaGFyZWRXb3JrZXJDb25uZWN0
aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIENPTk5FQ1RJ
T05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbjoiKTsKKworICAgIGF1dG8mIHNlcnZlciA9IHNlc3Npb24tPmVuc3VyZVNoYXJl
ZFdvcmtlclNlcnZlcigpOworICAgIGF1dG8gY29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4obV9uZXR3b3JrUHJvY2Vzcywgc2VydmVyLCBtX2Nv
bm5lY3Rpb24uZ2V0KCksIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOworCisgICAgbV9zaGFyZWRX
b3JrZXJDb25uZWN0aW9uID0gKmNvbm5lY3Rpb247CisgICAgc2VydmVyLmFkZENvbm5lY3Rpb24o
V1RGTW92ZShjb25uZWN0aW9uKSk7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNsb3NlU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24oKQoreworICAgIENPTk5F
Q1RJT05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiY2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0
Q29ubmVjdGlvbjoiKTsKKyAgICBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uID0gbnVs
bHB0cjsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3Rl
clNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0co
U2hhcmVkV29ya2VyLCAidW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb246Iik7CisgICAg
aWYgKG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbikKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJDb25u
ZWN0aW9uLT5zZXJ2ZXIoKS5yZW1vdmVDb25uZWN0aW9uKG1fc2hhcmVkV29ya2VyQ29ubmVjdGlv
bi0+d2ViUHJvY2Vzc0lkZW50aWZpZXIoKSk7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Jc05vTG9u
Z2VyTmVlZGVkKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwg
InNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkOiIp
OworICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0
aW9uTm9Mb25nZXJOZWVkZWQgeyB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOworCisgICAg
bV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7Cit9CisKK1dlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb24qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpz
aGFyZWRXb3JrZXJDb25uZWN0aW9uKCkKK3sKKyAgICBpZiAoIW1fc2hhcmVkV29ya2VyQ29ubmVj
dGlvbikKKyAgICAgICAgZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpOwor
ICAgIHJldHVybiBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24uZ2V0KCk7Cit9CiAgICAgCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6dW5yZWdpc3RlclNXQ29ubmVjdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXgg
YWI5NjY1N2QwZGY0YTIzMzEwNDBhYzUxZmM0M2MwNjg0Nzg0ODA0Ny4uZDBhYTRlZjc0NTIwYTJj
YTBiNTUxYjQ2OWU4NmVhNzY2OGI2NzhlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAt
OTIsNiArOTIsOCBAQCBjbGFzcyBOZXR3b3JrU29ja2V0U3RyZWFtOwogY2xhc3MgU2VydmljZVdv
cmtlckZldGNoVGFzazsKIGNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKIGNsYXNzIFdlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb247CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OwogCiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIHN0cnVjdCBEYXRhS2V5OwpAQCAtMTg1LDYg
KzE4Nyw5IEBAIHB1YmxpYzoKICAgICBXZWJTV1NlcnZlckNvbm5lY3Rpb24qIHN3Q29ubmVjdGlv
bigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBjcmVhdGVG
ZXRjaFRhc2soTmV0d29ya1Jlc291cmNlTG9hZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Jik7CiAjZW5kaWYKKyAgICB2b2lkIHNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7CisKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uKiBzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiAKICAgICBOZXR3b3JrU2NoZW1l
UmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9zY2hlbWVSZWdpc3RyeS5nZXQo
KTsgfQogCkBAIC0yNTMsNiArMjU4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZVNvY2tl
dENoYW5uZWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBw
cm90b2NvbCwgV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAgICAgdm9pZCB1cGRhdGVRdW90
YUJhc2VkT25TcGFjZVVzYWdlRm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
KTsKIAorICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpOwor
ICAgIHZvaWQgdW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKKwogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigp
OwogICAgIHZvaWQgZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0yNjAsNiArMjY4LDkg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgog
CisgICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdl
UHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgY2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0Q29u
bmVjdGlvbigpOworCiAgICAgdm9pZCBjcmVhdGVSVENQcm92aWRlcihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIHZvaWQgY29ubmVjdFRvUlRD
RGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVy
IHNvdXJjZSwgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGhhbmRsZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxib29sPik+JiYpOwpAQCAtNDA0LDYgKzQx
NSw4IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxXZWJTV1NlcnZlckNvbm5lY3Rpb24+IG1fc3dD
b25uZWN0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24+IG1fc3dDb250ZXh0Q29ubmVjdGlvbjsKICNlbmRpZgorICAgIFdlYWtQdHI8V2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4gbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
PiBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uOwogCiAjaWYgRU5BQkxFKFdFQl9SVEMp
CiAgICAgYm9vbCBtX2lzUmVnaXN0ZXJlZFRvUlRDRGF0YUNoYW5uZWxQcm94eSB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAyNDI4MzUw
NTBiMjQ5NzBjNWVhYzFlMjZiZjg2YjViMDI1YTgwZTUzLi5iOTdjYTM0NzliNGQ5ZDU1NzlhN2U3
ZTU1YTY5MWE2MGRkODg2NmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KQEAgLTg4LDYgKzg4LDkgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIENsb3NlU1dDb250ZXh0Q29ubmVjdGlv
bigpCiAjZW5kaWYKIAorICAgIEVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9u
KFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gZG9tYWluKSAtPiAoKSBBc3luYworICAgIENsb3NlU2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb24oKQorCiAgICAgQ3JlYXRlUlRDUHJvdmlkZXIoKSAtPiAoKSBB
c3luYwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIENvbm5lY3RUb1JUQ0RhdGFDaGFubmVsUmVt
b3RlU291cmNlKHN0cnVjdCBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgc291cmNl
LCBzdHJ1Y3QgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGhhbmRsZXIpIC0+IChz
dGQ6Om9wdGlvbmFsPGJvb2w+IHJlc3VsdCkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggZTJiMjRkODMyMmI2ZWMxYzM3NzAx
ZGNhZDQ5NzUzNGNlZjIzMWEyNi4uZDc2MTYyODUwY2FkODQzOGYwMDg4OTA1M2Y3ZWRjODJmM2Uz
M2EzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldlYlNXT3JpZ2luU3Rv
cmUuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJT
b2NrZXRUYXNrLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVKYXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgpAQCAtNjUzLDYgKzY1NCwxMyBAQCBib29sIE5ldHdv
cmtTZXNzaW9uOjpoYXNTZXJ2aWNlV29ya2VyRGF0YWJhc2VQYXRoKCkgY29uc3QKIAogI2VuZGlm
IC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorV2ViU2hhcmVkV29ya2VyU2VydmVyJiBOZXR3
b3JrU2Vzc2lvbjo6ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCkKK3sKKyAgICBpZiAoIW1fc2hh
cmVkV29ya2VyU2VydmVyKQorICAgICAgICBtX3NoYXJlZFdvcmtlclNlcnZlciA9IG1ha2VVbmlx
dWU8V2ViU2hhcmVkV29ya2VyU2VydmVyPigqdGhpcyk7CisgICAgcmV0dXJuICptX3NoYXJlZFdv
cmtlclNlcnZlcjsKK30KKwogV2ViSURCU2VydmVyJiBOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlV2Vi
SURCU2VydmVyKCkKIHsKICAgICBpZiAoIW1fd2ViSURCU2VydmVyKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggMTkzMDdjZjQwYmUzYjJm
MjYwNTdkMDE2Yzc2NmVkY2U0OThjOTU0Mi4uM2Y5ZDZjOTU1MGE4YjhjZWM5ZTRjNTU5ZDMxZDEy
MWE5OGIwZTg0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb24uaApAQCAtNzksNiArNzksNyBAQCBjbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOwog
Y2xhc3MgV2ViSURCU2VydmVyOwogY2xhc3MgV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzOwogY2xh
c3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOworY2xhc3MgV2ViU2hhcmVkV29ya2Vy
U2VydmVyOwogY2xhc3MgV2ViU29ja2V0VGFzazsKIGNsYXNzIFdlYlNXT3JpZ2luU3RvcmU7CiBj
bGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CkBAIC0yMTAsNiArMjExLDkgQEAgcHVibGljOgog
ICAgIHZvaWQgYWRkU2VydmljZVdvcmtlclNlc3Npb24oYm9vbCBwcm9jZXNzVGVybWluYXRpb25E
ZWxheUVuYWJsZWQsIFN0cmluZyYmIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnks
IGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogI2VuZGlmCiAKKyAgICBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXIqIHNoYXJlZFdvcmtlclNlcnZlcigpIHsgcmV0dXJuIG1fc2hhcmVkV29y
a2VyU2VydmVyLmdldCgpOyB9CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBlbnN1cmVTaGFy
ZWRXb3JrZXJTZXJ2ZXIoKTsKKwogICAgIFdlYklEQlNlcnZlciogd2ViSURCU2VydmVyKCkgeyBy
ZXR1cm4gbV93ZWJJREJTZXJ2ZXIuZ2V0KCk7IH0KICAgICBXZWJJREJTZXJ2ZXImIGVuc3VyZVdl
YklEQlNlcnZlcigpOwogICAgIHZvaWQgY2xvc2VJREJTZXJ2ZXIoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKQEAgLTMxOCw2ICszMjIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RkOjpvcHRp
b25hbDxTZXJ2aWNlV29ya2VySW5mbz4gbV9zZXJ2aWNlV29ya2VySW5mbzsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6U1dTZXJ2ZXI+IG1fc3dTZXJ2ZXI7CiAjZW5kaWYKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyPiBtX3NoYXJlZFdvcmtlclNlcnZlcjsK
IAogICAgIFN0cmluZyBtX2lkYkRhdGFiYXNlUGF0aDsKICAgICBSZWZQdHI8V2ViSURCU2VydmVy
PiBtX3dlYklEQlNlcnZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgw
MDkxMzk1MjgwYzhkNzYwZWYxYTFkMTIxYzIxNDc1ZjQ5NWViYjgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3Jr
ZXIuY3BwCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyLmgiCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29w
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgSGFzaE1hcDxXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyLCBXZWJTaGFyZWRXb3JrZXIqPiYgYWxsV29ya2VycygpCit7Cisg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SGFzaE1hcDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBXZWJTaGFyZWRXb3JrZXIq
Pj4gYWxsV29ya2VyczsKKyAgICByZXR1cm4gYWxsV29ya2VyczsKK30KKworV2ViU2hhcmVkV29y
a2VyOjpXZWJTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBrZXks
IGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMpCisgICAgOiBtX2lk
ZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKKyAg
ICAsIG1fa2V5KGtleSkKKyAgICAsIG1fd29ya2VyT3B0aW9ucyh3b3JrZXJPcHRpb25zKQorewor
ICAgIEFTU0VSVCghYWxsV29ya2VycygpLmNvbnRhaW5zKG1faWRlbnRpZmllcikpOworICAgIGFs
bFdvcmtlcnMoKS5hZGQobV9pZGVudGlmaWVyLCB0aGlzKTsKK30KKworV2ViU2hhcmVkV29ya2Vy
Ojp+V2ViU2hhcmVkV29ya2VyKCkKK3sKKyAgICBBU1NFUlQoYWxsV29ya2VycygpLmdldChtX2lk
ZW50aWZpZXIpID09IHRoaXMpOworICAgIGFsbFdvcmtlcnMoKS5yZW1vdmUobV9pZGVudGlmaWVy
KTsKK30KKworV2ViU2hhcmVkV29ya2VyKiBXZWJTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVy
KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICByZXR1
cm4gYWxsV29ya2VycygpLmdldChpZGVudGlmaWVyKTsKK30KKworV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gV2ViU2hhcmVkV29ya2VyOjpyZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsKCkgfTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0Yjdh
NGE4NDNjZWY5YTE3ZWJjMGIzYTVmYTRjY2Q0ZDA2MTZiMzQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIu
aApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZFdvcmtlcktleS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmZXJyZWRNZXNzYWdlUG9ydC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyRmV0Y2hSZXN1bHQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1dvcmtlck9wdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKK30KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJT
aGFyZWRXb3JrZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBXZWJTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiwgY29uc3Qg
V2ViQ29yZTo6V29ya2VyT3B0aW9ucyYpOworICAgIH5XZWJTaGFyZWRXb3JrZXIoKTsKKworICAg
IHN0YXRpYyBXZWJTaGFyZWRXb3JrZXIqIGZyb21JZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdv
cmtlcklkZW50aWZpZXIpOworCisgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBp
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgY29uc3QgV2Vi
Q29yZTo6U2hhcmVkV29ya2VyS2V5JiBrZXkoKSBjb25zdCB7IHJldHVybiBtX2tleTsgfQorICAg
IGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMoKSBjb25zdCB7IHJl
dHVybiBtX3dvcmtlck9wdGlvbnM7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
IG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fa2V5Lm9yaWdpbjsgfQorICAgIGNvbnN0IFVSTCYg
dXJsKCkgY29uc3QgeyByZXR1cm4gbV9rZXkudXJsOyB9CisgICAgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gcmVnaXN0cmFibGVEb21haW4oKSBjb25zdDsKKyAgICBIYXNoTWFwPFdlYkNvcmU6
OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2Fn
ZVBvcnQ+JiBzaGFyZWRXb3JrZXJPYmplY3RzKCkgeyByZXR1cm4gbV9zaGFyZWRXb3JrZXJPYmpl
Y3RzOyB9CisKKyAgICBib29sIGlzUnVubmluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNSdW5uaW5n
OyB9CisgICAgdm9pZCBtYXJrQXNSdW5uaW5nKCkgeyBtX2lzUnVubmluZyA9IHRydWU7IH0KKwor
ICAgIGNvbnN0IFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiBmZXRjaFJlc3VsdCgpIGNvbnN0
IHsgcmV0dXJuIG1fZmV0Y2hSZXN1bHQ7IH0KKyAgICB2b2lkIHNldEZldGNoUmVzdWx0KFdlYkNv
cmU6OldvcmtlckZldGNoUmVzdWx0JiYgZmV0Y2hSZXN1bHQpIHsgbV9mZXRjaFJlc3VsdCA9IFdU
Rk1vdmUoZmV0Y2hSZXN1bHQpOyB9CisgICAgYm9vbCBkaWRGaW5pc2hGZXRjaGluZygpIGNvbnN0
IHsgcmV0dXJuICEhbV9mZXRjaFJlc3VsdC5zY3JpcHQ7IH0KKworcHJpdmF0ZToKKyAgICBXZWJT
aGFyZWRXb3JrZXIoV2ViU2hhcmVkV29ya2VyJiYpID0gZGVsZXRlOworICAgIFdlYlNoYXJlZFdv
cmtlciYgb3BlcmF0b3I9KFdlYlNoYXJlZFdvcmtlciYmKSA9IGRlbGV0ZTsKKyAgICBXZWJTaGFy
ZWRXb3JrZXIoY29uc3QgV2ViU2hhcmVkV29ya2VyJikgPSBkZWxldGU7CisgICAgV2ViU2hhcmVk
V29ya2VyJiBvcGVyYXRvcj0oY29uc3QgV2ViU2hhcmVkV29ya2VyJikgPSBkZWxldGU7CisKKyAg
ICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBXZWJD
b3JlOjpTaGFyZWRXb3JrZXJLZXkgbV9rZXk7CisgICAgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyBt
X3dvcmtlck9wdGlvbnM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0PiBtX3NoYXJlZFdvcmtl
ck9iamVjdHM7CisgICAgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQgbV9mZXRjaFJlc3VsdDsK
KyAgICBib29sIG1faXNSdW5uaW5nIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmM2
ODMwMjE0ZDQwYzQ3ZjIyZTk1NTljYzg2YWQ3MjVhYjUxMDViMwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtl
clNlcnZlci5jcHAKQEAgLTAsMCArMSwyNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgiCisKKyNpbmNsdWRlICJM
b2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgorI2lu
Y2x1ZGUgIldlYlNoYXJlZFdvcmtlci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyS2V5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Xb3Jr
ZXJGZXRjaFJlc3VsdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyT3B0aW9ucy5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU2hhcmVkV29ya2VyU2VydmVyOjpXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXIoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24pCisgICAgOiBtX3Nlc3Npb24oc2Vzc2lv
bikKK3sKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVyOjp+V2ViU2hhcmVkV29ya2VyU2VydmVy
KCkgPSBkZWZhdWx0OworCitQQUw6OlNlc3Npb25JRCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNl
c3Npb25JRCgpCit7CisgICAgcmV0dXJuIG1fc2Vzc2lvbi5zZXNzaW9uSUQoKTsKK30KKwordm9p
ZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hh
cmVkV29ya2VyS2V5JiYgc2hhcmVkV29ya2VyS2V5LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5z
ZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYgd29ya2Vy
T3B0aW9ucykKK3sKKyAgICBhdXRvJiBzaGFyZWRXb3JrZXIgPSBtX3NoYXJlZFdvcmtlcnMuZW5z
dXJlKHNoYXJlZFdvcmtlcktleSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2Vi
U2hhcmVkV29ya2VyPihzaGFyZWRXb3JrZXJLZXksIHdvcmtlck9wdGlvbnMpOworICAgIH0pLml0
ZXJhdG9yLT52YWx1ZTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXI9JXtwcml2YXRlfXMsIHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgc2hhcmVk
V29ya2VyLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBpZiAoc2hhcmVkV29ya2Vy
LT53b3JrZXJPcHRpb25zKCkudHlwZSAhPSB3b3JrZXJPcHRpb25zLnR5cGUgfHwgc2hhcmVkV29y
a2VyLT53b3JrZXJPcHRpb25zKCkuY3JlZGVudGlhbHMgIT0gd29ya2VyT3B0aW9ucy5jcmVkZW50
aWFscykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICJXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6IEEgd29ya2VyIGFscmVhZHkgZXhp
c3RzIHdpdGggdGhpcyBuYW1lIGJ1dCBoYXMgZGlmZmVyZW50IHR5cGUgLyBjcmVkZW50aWFscyIp
OworICAgICAgICBpZiAoYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0
KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSkpCisgICAg
ICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uLT5ub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0
aW9uKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHsgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
cjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cygpLmFkZChzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLCBwb3J0KTsKKworICAgIGlmIChzaGFyZWRXb3JrZXItPnNoYXJlZFdvcmtl
ck9iamVjdHMoKS5zaXplKCkgPiAxKSB7CisgICAgICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtl
ciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtlcjogQSBzaGFyZWQg
d29ya2VyIHdpdGggdGhpcyBVUkwgYWxyZWFkeSBleGlzdHMgKG5vdyBzaGFyZWQgYnkgJXUgc2hh
cmVkIHdvcmtlciBvYmplY3RzKSIsIHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cygp
LnNpemUoKSk7CisgICAgICAgIGlmIChzaGFyZWRXb3JrZXItPmRpZEZpbmlzaEZldGNoaW5nKCkp
IHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9u
cy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkK
KyAgICAgICAgICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uLT5ub3RpZnlXb3JrZXJPYmplY3RPZkxv
YWRDb21wbGV0aW9uKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHsgfSk7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKHNoYXJlZFdvcmtlci0+aXNSdW5uaW5nKCkpIHsKKyAgICAgICAgICAg
IGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gbV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0KHNoYXJl
ZFdvcmtlci0+cmVnaXN0cmFibGVEb21haW4oKSk7CisgICAgICAgICAgICBBU1NFUlQoY29udGV4
dENvbm5lY3Rpb24pOworICAgICAgICAgICAgaWYgKGNvbnRleHRDb25uZWN0aW9uKQorICAgICAg
ICAgICAgICAgIGNvbnRleHRDb25uZWN0aW9uLT5wb3N0Q29ubmVjdEV2ZW50KCpzaGFyZWRXb3Jr
ZXIsIHBvcnQpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJU
KCFzaGFyZWRXb3JrZXItPmlzUnVubmluZygpKTsKKworICAgIGF1dG8qIHNlcnZlckNvbm5lY3Rp
b24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nl
c3NJZGVudGlmaWVyKCkpOworICAgIEFTU0VSVChzZXJ2ZXJDb25uZWN0aW9uKTsKKworICAgIFJF
TEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNo
YXJlZFdvcmtlcjogRmV0Y2hpbmcgc2hhcmVkIHdvcmtlciBzY3JpcHQgaW4gY2xpZW50Iik7Cisg
ICAgc2VydmVyQ29ubmVjdGlvbi0+ZmV0Y2hTY3JpcHRJbkNsaWVudCgqc2hhcmVkV29ya2VyLCBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMg
fSwgc2hhcmVkV29ya2VyID0gV2Vha1B0ciB7ICpzaGFyZWRXb3JrZXIgfV0oV2ViQ29yZTo6V29y
a2VyRmV0Y2hSZXN1bHQmJiBmZXRjaFJlc3VsdCkgeworICAgICAgICBpZiAod2Vha1RoaXMgJiYg
c2hhcmVkV29ya2VyKQorICAgICAgICAgICAgd2Vha1RoaXMtPmRpZEZpbmlzaEZldGNoaW5nU2hh
cmVkV29ya2VyU2NyaXB0KCpzaGFyZWRXb3JrZXIsIFdURk1vdmUoZmV0Y2hSZXN1bHQpKTsKKyAg
ICB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5n
U2hhcmVkV29ya2VyU2NyaXB0KFdlYlNoYXJlZFdvcmtlciYgc2hhcmVkV29ya2VyLCBXZWJDb3Jl
OjpXb3JrZXJGZXRjaFJlc3VsdCYmIGZldGNoUmVzdWx0KQoreworICAgIFJFTEVBU0VfTE9HKFNo
YXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6ZGlkRmluaXNoRmV0Y2hpbmdTaGFy
ZWRXb3JrZXJTY3JpcHQgc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgc2hhcmVk
V29ya2VyPSVwLCBzdWNjZXNzPSVkIiwgc2hhcmVkV29ya2VyLmlkZW50aWZpZXIoKS50b1VJbnQ2
NCgpLCAmc2hhcmVkV29ya2VyLCBmZXRjaFJlc3VsdC5lcnJvci5pc051bGwoKSk7CisKKyAgICBm
b3IgKGF1dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA6IHNoYXJlZFdvcmtlci5zaGFy
ZWRXb3JrZXJPYmplY3RzKCkua2V5cygpKSB7CisgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25u
ZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5w
cm9jZXNzSWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIHNlcnZlckNvbm5lY3Rpb24tPm5vdGlm
eVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24oc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciwgZmV0Y2hSZXN1bHQuZXJyb3IpOworICAgIH0KKworICAgIGlmICghZmV0Y2hSZXN1bHQuZXJy
b3IuaXNOdWxsKCkpIHsKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJzLnJlbW92ZShzaGFyZWRXb3Jr
ZXIua2V5KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2hhcmVkV29ya2VyLnNl
dEZldGNoUmVzdWx0KFdURk1vdmUoZmV0Y2hSZXN1bHQpKTsKKworICAgIGF1dG8gcmVnaXN0cmFi
bGVEb21haW4gPSBzaGFyZWRXb3JrZXIucmVnaXN0cmFibGVEb21haW4oKTsKKyAgICBhdXRvKiBj
b250ZXh0Q29ubmVjdGlvbiA9IGNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4o
cmVnaXN0cmFibGVEb21haW4pOworICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAg
ICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgY29udGV4dENvbm5lY3Rpb24tPmxhdW5jaFNoYXJlZFdvcmtl
cihzaGFyZWRXb3JrZXIpOworfQorCitib29sIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6bmVlZHND
b250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8m
IHNoYXJlZFdvcmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAo
cmVnaXN0cmFibGVEb21haW4ubWF0Y2hlcyhzaGFyZWRXb3JrZXItPnVybCgpKSkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2Vi
U2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCit7CisgICAgQVNTRVJUKCFt
X2NvbnRleHRDb25uZWN0aW9ucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpOworICAgIGlm
IChtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnMuY29udGFpbnMocmVnaXN0cmFibGVE
b21haW4pKQorICAgICAgICByZXR1cm47CisKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIs
ICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uIHdpbGwgY3Jl
YXRlIGEgY29ubmVjdGlvbiIpOworCisgICAgbV9wZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21h
aW5zLmFkZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgbV9zZXNzaW9uLm5ldHdvcmtQcm9jZXNz
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MgeyByZWdpc3RyYWJsZURvbWFpbiwgbV9zZXNzaW9uLnNlc3Np
b25JRCgpIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZWdpc3RyYWJs
ZURvbWFpbl0geworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZl
cjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24gc2hvdWxkIG5vdyBoYXZlIGNyZWF0ZWQgYSBjb25u
ZWN0aW9uIik7CisKKyAgICAgICAgQVNTRVJUKG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9t
YWlucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpOworICAgICAgICBtX3BlbmRpbmdDb250
ZXh0Q29ubmVjdGlvbkRvbWFpbnMucmVtb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKKworICAgICAg
ICBpZiAobV9jb250ZXh0Q29ubmVjdGlvbnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChuZWVkc0NvbnRleHRDb25uZWN0aW9u
Rm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICAgICAgY3Jl
YXRlQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4pOworICAgIH0sIDApOworfQor
Cit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29udGV4dENvbm5lY3Rpb24oV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24pCit7
CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjph
ZGRDb250ZXh0Q29ubmVjdGlvbiglcCkgd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCAm
Y29udGV4dENvbm5lY3Rpb24sIGNvbnRleHRDb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVy
KCkudG9VSW50NjQoKSk7CisKKyAgICBBU1NFUlQoIW1fY29udGV4dENvbm5lY3Rpb25zLmNvbnRh
aW5zKGNvbnRleHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCkpKTsKKworICAgIG1fY29u
dGV4dENvbm5lY3Rpb25zLmFkZChjb250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigp
LCAmY29udGV4dENvbm5lY3Rpb24pOworCisgICAgY29udGV4dENvbm5lY3Rpb25DcmVhdGVkKGNv
bnRleHRDb25uZWN0aW9uKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlbW92
ZUNvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24mIGNvbnRleHRDb25uZWN0aW9uKQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwg
IldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oJXApIHdlYlBy
b2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgJmNvbnRleHRDb25uZWN0aW9uLCBjb250ZXh0Q29u
bmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUludDY0KCkpOworCisgICAgYXV0byBy
ZWdpc3RyYWJsZURvbWFpbiA9IGNvbnRleHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCk7
CisKKyAgICBBU1NFUlQobV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0KHJlZ2lzdHJhYmxlRG9tYWlu
KSA9PSAmY29udGV4dENvbm5lY3Rpb24pOworCisgICAgbV9jb250ZXh0Q29ubmVjdGlvbnMucmVt
b3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKKworICAgIGlmIChuZWVkc0NvbnRleHRDb25uZWN0aW9u
Rm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICBjcmVhdGVD
b250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbik7Cit9CisKK3ZvaWQgV2ViU2hhcmVk
V29ya2VyU2VydmVyOjpjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24pCit7CisgICAgUkVMRUFT
RV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjb250ZXh0Q29ubmVj
dGlvbkNyZWF0ZWQoJXApIHdlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgJmNvbnRleHRD
b25uZWN0aW9uLCBjb250ZXh0Q29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUlu
dDY0KCkpOworICAgIGF1dG8mIHJlZ2lzdHJhYmxlRG9tYWluID0gY29udGV4dENvbm5lY3Rpb24u
cmVnaXN0cmFibGVEb21haW4oKTsKKyAgICBmb3IgKGF1dG8mIHNoYXJlZFdvcmtlciA6IG1fc2hh
cmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAoc2hhcmVkV29ya2VyLT5kaWRGaW5p
c2hGZXRjaGluZygpICYmIHJlZ2lzdHJhYmxlRG9tYWluLm1hdGNoZXMoc2hhcmVkV29ya2VyLT51
cmwoKSkpCisgICAgICAgICAgICBjb250ZXh0Q29ubmVjdGlvbi5sYXVuY2hTaGFyZWRXb3JrZXIo
KnNoYXJlZFdvcmtlcik7CisgICAgfQorfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6
c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2Vy
S2V5JiBzaGFyZWRXb3JrZXJLZXksIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK3sKKyAgICBhdXRvKiBzaGFyZWRXb3Jr
ZXIgPSBtX3NoYXJlZFdvcmtlcnMuZ2V0KHNoYXJlZFdvcmtlcktleSk7CisgICAgUkVMRUFTRV9M
T0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaGFyZWRXb3JrZXJPYmpl
Y3RJc0dvaW5nQXdheTogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zLCBz
aGFyZWRXb3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgc2hhcmVkV29ya2VyKTsKKyAgICBpZiAoIXNoYXJlZFdvcmtlcikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzKCku
cmVtb3ZlKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIGlmICghc2hhcmVkV29y
a2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBzaHV0RG93blNoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXJLZXkpOworfQorCit2b2lkIFdl
YlNoYXJlZFdvcmtlclNlcnZlcjo6c2h1dERvd25TaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6
U2hhcmVkV29ya2VyS2V5JiBrZXkpCit7CisgICAgYXV0byBzaGFyZWRXb3JrZXIgPSBtX3NoYXJl
ZFdvcmtlcnMudGFrZShrZXkpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNo
YXJlZFdvcmtlclNlcnZlcjo6c2h1dERvd25TaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50
aWZpZXI9JSIgUFJJdTY0ICIsIHNoYXJlZFdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlciA/IHNoYXJl
ZFdvcmtlci0+aWRlbnRpZmllcigpLnRvVUludDY0KCkgOiAwLCBzaGFyZWRXb3JrZXIuZ2V0KCkp
OworICAgIGlmICghc2hhcmVkV29ya2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBj
b250ZXh0Q29ubmVjdGlvbiA9IGNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4o
c2hhcmVkV29ya2VyLT5yZWdpc3RyYWJsZURvbWFpbigpKTsKKyAgICBpZiAoIWNvbnRleHRDb25u
ZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBjb250ZXh0Q29ubmVjdGlvbi0+dGVybWlu
YXRlU2hhcmVkV29ya2VyKCpzaGFyZWRXb3JrZXIpOworCisgICAgaWYgKCFuZWVkc0NvbnRleHRD
b25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oc2hhcmVkV29ya2VyLT5yZWdpc3RyYWJsZURv
bWFpbigpKSkKKyAgICAgICAgY29udGV4dENvbm5lY3Rpb24tPmNvbm5lY3Rpb25Jc05vTG9uZ2Vy
TmVlZGVkKCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjphZGRDb25uZWN0aW9u
KHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uPiYmIGNvbm5l
Y3Rpb24pCit7CisgICAgYXV0byBwcm9jZXNzSWRlbnRpZmllciA9IGNvbm5lY3Rpb24tPndlYlBy
b2Nlc3NJZGVudGlmaWVyKCk7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hh
cmVkV29ya2VyU2VydmVyOjphZGRDb25uZWN0aW9uKCVwKTogcHJvY2Vzc0lkZW50aWZpZXI9JSIg
UFJJdTY0LCBjb25uZWN0aW9uLmdldCgpLCBwcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKTsK
KyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbnMuY29udGFpbnMocHJvY2Vzc0lkZW50aWZpZXIpKTsK
KyAgICBtX2Nvbm5lY3Rpb25zLmFkZChwcm9jZXNzSWRlbnRpZmllciwgV1RGTW92ZShjb25uZWN0
aW9uKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1vdmVDb25uZWN0aW9u
KFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQoreworICAgIGF1
dG8gY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMudGFrZShwcm9jZXNzSWRlbnRpZmllcik7Cisg
ICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1v
dmVDb25uZWN0aW9uKCVwKTogcHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCBjb25uZWN0aW9u
LmdldCgpLCBwcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBBU1NFUlQoY29ubmVj
dGlvbik7CisKKyAgICBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSwg
V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj4+IHNoYXJlZFdvcmtlck9iamVj
dHNHb2luZ0F3YXk7CisgICAgZm9yIChhdXRvJiBzaGFyZWRXb3JrZXIgOiBtX3NoYXJlZFdvcmtl
cnMudmFsdWVzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyIDogc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzKCkua2V5cygpKSB7Cisg
ICAgICAgICAgICBpZiAoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRp
ZmllcigpID09IHByb2Nlc3NJZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIHNoYXJlZFdvcmtl
ck9iamVjdHNHb2luZ0F3YXkuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHNoYXJlZFdvcmtlci0+a2V5
KCksIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBmb3IgKGF1dG8mIFtzaGFyZWRXb3JrZXJLZXksIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXJdIDogc2hhcmVkV29ya2VyT2JqZWN0c0dvaW5nQXdheSkKKyAgICAgICAgc2hhcmVkV29ya2Vy
T2JqZWN0SXNHb2luZ0F3YXkoc2hhcmVkV29ya2VyS2V5LCBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyKTsKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiog
V2ViU2hhcmVkV29ya2VyU2VydmVyOjpjb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9t
YWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fY29udGV4dENvbm5lY3Rpb25zLmdldChkb21haW4pOworfQorCit2b2lkIFdl
YlNoYXJlZFdvcmtlclNlcnZlcjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6
OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBhdXRvKiBzaGFyZWRXb3JrZXIgPSBXZWJTaGFy
ZWRXb3JrZXI6OmZyb21JZGVudGlmaWVyKHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworICAgIFJF
TEVBU0VfTE9HX0VSUk9SKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cG9z
dEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2
NCAiLCBzaGFyZWRXb3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCks
IHNoYXJlZFdvcmtlcik7CisgICAgaWYgKCFzaGFyZWRXb3JrZXIpCisgICAgICAgIHJldHVybjsK
KworICAgIGZvciAoYXV0byBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIDogc2hhcmVkV29y
a2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzKCkua2V5cygpKSB7CisgICAgICAgIGlmIChhdXRvKiBz
ZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIHNlcnZlckNvbm5lY3Rp
b24tPnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMKTsK
KyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMmQ4MDM4MDkzNmRlYWZhNGIwZjMxMjM0OTIwOTdkM2Q4
NzM5OTY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
aGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmgKQEAgLTAsMCArMSw4MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRp
Zmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1RyYW5zZmVycmVkTWVzc2FnZVBvcnQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKKworc3Ry
dWN0IENsaWVudE9yaWdpbjsKK3N0cnVjdCBTaGFyZWRXb3JrZXJLZXk7CitzdHJ1Y3QgV29ya2Vy
RmV0Y2hSZXN1bHQ7CitzdHJ1Y3QgV29ya2VyT3B0aW9uczsKK30KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIE5ldHdvcmtTZXNzaW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2VyOworY2xh
c3MgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZl
ciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI+IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXIoTmV0d29ya1Nlc3Npb24mKTsKKyAgICB+V2ViU2hhcmVkV29ya2VyU2VydmVy
KCk7CisKKyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKTsKKyAgICBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBjb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJh
YmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CisKKyAg
ICB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiYsIFdl
YkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVk
TWVzc2FnZVBvcnQmJiwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmKTsKKyAgICB2b2lkIHNoYXJl
ZFdvcmtlck9iamVjdElzR29pbmdBd2F5KGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYs
IFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIHZvaWQgcG9zdEV4
Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCisgICAgdm9pZCBhZGRDb250ZXh0Q29ubmVj
dGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CisgICAgdm9p
ZCByZW1vdmVDb250ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uJik7CisgICAgdm9pZCBhZGRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uPiYmKTsKKyAgICB2b2lkIHJlbW92ZUNvbm5lY3Rp
b24oV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOworCitwcml2YXRlOgorICAgIHZvaWQgY3Jl
YXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsK
KyAgICBib29sIG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OworICAgIHZvaWQgY29udGV4dENv
bm5lY3Rpb25DcmVhdGVkKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24m
KTsKKyAgICB2b2lkIGRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29ya2VyU2NyaXB0KFdlYlNoYXJl
ZFdvcmtlciYsIFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYpOworICAgIHZvaWQgc2h1dERv
d25TaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5Jik7CisKKyAgICBO
ZXR3b3JrU2Vzc2lvbiYgbV9zZXNzaW9uOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
Pj4gbV9jb25uZWN0aW9uczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
LCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4gbV9jb250ZXh0Q29u
bmVjdGlvbnM7CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9wZW5k
aW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5zOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2hhcmVk
V29ya2VyS2V5LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyPj4gbV9zaGFyZWRXb3Jr
ZXJzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2NDFjMTg5YzJm
Mjk5ZGI1OTk5NDVhMzczNWE4MWQ1NGY1OGRhOWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgiCisK
KyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlci5oIgorI2luY2x1ZGUg
IldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvV29ya2VyRmV0Y2hSZXN1bHQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNkZWZp
bmUgQ09OTkVDVElPTl9NRVNTQUdFX0NIRUNLKGFzc2VydGlvbikgQ09OTkVDVElPTl9NRVNTQUdF
X0NIRUNLX0NPTVBMRVRJT04oYXNzZXJ0aW9uLCAodm9pZCkwKQorI2RlZmluZSBDT05ORUNUSU9O
X01FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTihhc3NlcnRpb24sIGNvbXBsZXRpb24pIGRvIHsgXAor
ICAgIEFTU0VSVChhc3NlcnRpb24pOyBcCisgICAgaWYgKFVOTElLRUxZKCEoYXNzZXJ0aW9uKSkp
IHsgXAorICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJtaW5hdGVXZWJQcm9jZXNz
KG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpLCAwKTsgXAorICAgICAgICB7IGNvbXBsZXRpb247IH0g
XAorICAgICAgICByZXR1cm47IFwKKyAgICB9IFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgQ09O
TkVDVElPTl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAi
JXAgLSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdlYlNoYXJlZFdvcmtlclNl
cnZlckNvbm5lY3Rpb246OiIgZm10LCB0aGlzLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyLnRvVUlu
dDY0KCksICMjX19WQV9BUkdTX18pCisjZGVmaW5lIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJS
T1IoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKFNoYXJlZFdvcmtlciwgIiVwIC0gW3dlYlBy
b2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uOjoiIGZtdCwgdGhpcywgbV93ZWJQcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpLCAjI19f
VkFfQVJHU19fKQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgV2Vi
U2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIpCisgICAgOiBt
X2NvbnRlbnRDb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5l
dHdvcmtQcm9jZXNzKQorICAgICwgbV9zZXJ2ZXIoc2VydmVyKQorICAgICwgbV93ZWJQcm9jZXNz
SWRlbnRpZmllcih3ZWJQcm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVB
U0VfTE9HKCJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOiIpOworfQorCitXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjp+V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlv
bigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygifldlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb246Iik7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiogV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAoreworICAgIHJl
dHVybiBtX2NvbnRlbnRDb25uZWN0aW9uLnB0cigpOworfQorCitQQUw6OlNlc3Npb25JRCBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpzZXNzaW9uSUQoKQoreworICAgIHJldHVybiBz
ZXJ2ZXIoKS5zZXNzaW9uSUQoKTsKK30KKworTmV0d29ya1Nlc3Npb24qIFdlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb246OnNlc3Npb24oKQoreworICAgIHJldHVybiBtX25ldHdvcmtQcm9j
ZXNzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbjo6cmVxdWVzdFNoYXJlZFdvcmtlcihXZWJDb3JlOjpTaGFyZWRX
b3JrZXJLZXkmJiBzaGFyZWRXb3JrZXJLZXksIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJy
ZWRNZXNzYWdlUG9ydCYmIHBvcnQsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRp
b25zKQoreworICAgIENPTk5FQ1RJT05fTUVTU0FHRV9DSEVDSyhzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7
CisgICAgQ09OTkVDVElPTl9NRVNTQUdFX0NIRUNLKHNoYXJlZFdvcmtlcktleS5uYW1lID09IHdv
cmtlck9wdGlvbnMubmFtZSk7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygicmVxdWVzdFNo
YXJlZFdvcmtlcjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAg
IGlmIChhdXRvKiBzZXNzaW9uID0gdGhpcy0+c2Vzc2lvbigpKQorICAgICAgICBzZXNzaW9uLT5l
bnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKS5yZXF1ZXN0U2hhcmVkV29ya2VyKFdURk1vdmUoc2hh
cmVkV29ya2VyS2V5KSwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV1RGTW92ZShwb3J0
KSwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbjo6c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hh
cmVkV29ya2VyS2V5JiYgc2hhcmVkV29ya2VyS2V5LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7CisgICAgQ09OTkVD
VElPTl9NRVNTQUdFX0NIRUNLKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lk
ZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICBDT05ORUNUSU9OX1JF
TEVBU0VfTE9HKCJzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheTogc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50
b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gdGhpcy0+
c2Vzc2lvbigpKQorICAgICAgICBzZXNzaW9uLT5lbnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKS5z
aGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShzaGFyZWRXb3JrZXJLZXksIHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb246OmZldGNoU2NyaXB0SW5DbGllbnQoY29uc3QgV2ViU2hhcmVkV29ya2VyJiBzaGFyZWRX
b3JrZXIsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXb3JrZXJG
ZXRjaFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBDT05ORUNUSU9OX1JF
TEVBU0VfTE9HKCJmZXRjaFNjcmlwdEluQ2xpZW50OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyPSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpGZXRjaFNjcmlwdEluQ2xpZW50IHsgc2hhcmVkV29y
a2VyLnVybCgpLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBzaGFyZWRXb3JrZXIud29y
a2VyT3B0aW9ucygpIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRD
b21wbGV0aW9uKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3Ip
Cit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygibm90aWZ5V29ya2VyT2JqZWN0T2ZMb2Fk
Q29tcGxldGlvbjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zLCBzdWNj
ZXNzPSVkIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5k
YXRhKCksIGVycm9yLmlzTnVsbCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uOjpOb3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uIHsg
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgZXJyb3IgfSk7Cit9CisKK3ZvaWQgV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdl
YkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBDT05ORUNUSU9O
X1JFTEVBU0VfTE9HX0VSUk9SKCJwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Q6IHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpQb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qg
eyBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgc291cmNlVVJMIH0pOworfQorCisjdW5kZWYgQ09OTkVDVElPTl9SRUxF
QVNFX0xPRworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IKKyN1bmRlZiBDT05O
RUNUSU9OX01FU1NBR0VfQ0hFQ0sKKyN1bmRlZiBDT05ORUNUSU9OX01FU1NBR0VfQ0hFQ0tfQ09N
UExFVElPTgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYmY3NzVkMGE4ZjVjYjcx
YzdmMzQ2YTE1NTQ4ZGNkMmRiNDEzMWI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbi5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9T
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0
cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKK3N0cnVjdCBXb3JrZXJPcHRpb25zOworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya1Byb2Nlc3M7CitjbGFzcyBXZWJTaGFyZWRX
b3JrZXI7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI7CitjbGFzcyBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVz
c2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiwgV2ViU2hh
cmVkV29ya2VyU2VydmVyJiwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIpOworICAgIH5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCk7CisKKyAgICBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlcigpIHsgcmV0dXJuIG1fc2VydmVyOyB9CisgICAg
Y29uc3QgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIoKSBjb25zdCB7IHJldHVybiBtX3Nl
cnZlcjsgfQorCisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCk7CisgICAgTmV0d29ya1Nl
c3Npb24qIHNlc3Npb24oKTsKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9j
ZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7IH0K
KworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgZmluYWw7CisKKyAgICB2b2lkIGZldGNoU2NyaXB0SW5DbGllbnQoY29uc3QgV2ViU2hh
cmVkV29ya2VyJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmKT4mJik7CisgICAg
dm9pZCBub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKFdlYkNvcmU6OlNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKKyAg
ICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKworcHJpdmF0
ZToKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNz
YWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQorCisgICAgLy8g
SVBDIG1lc3NhZ2VzLgorICAgIHZvaWQgcmVxdWVzdFNoYXJlZFdvcmtlcihXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJLZXkmJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2Vi
Q29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYp
OworICAgIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVk
V29ya2VyS2V5JiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworCisg
ICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb250ZW50Q29ubmVjdGlvbjsKKyAgICBSZWY8TmV0
d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVy
JiBtX3NlcnZlcjsKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBtX3dlYlByb2Nlc3NJ
ZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
aGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kNzJhODdiN2VjZjQ0NmM5MTk0ZDNhYmRiZjIyNjMwYjRiMzI1ZGRjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI2
IEBACisjIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+
IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CisgICAgUmVx
dWVzdFNoYXJlZFdvcmtlcihzdHJ1Y3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5IHNoYXJlZFdv
cmtlcktleSwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0IHBvcnQs
IHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdvcmtlck9wdGlvbnMpCisgICAgU2hhcmVk
V29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoc3RydWN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSBz
aGFyZWRXb3JrZXJLZXksIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZmY4NmJjN2Q2YTJkNDMxZjM4MzRkZjg1ZTFkMjYyMzQ1NmY1YTk4NwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTExIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNp
bmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlNo
YXJlZFdvcmtlci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCisjZGVmaW5lIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNF
X0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBbd2ViUHJvY2Vz
c0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246OiIgZm10LCB0aGlzLCB3ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUludDY0KCks
ICMjX19WQV9BUkdTX18pCisKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIp
CisgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1fc2VydmVyKHNlcnZlcikK
KyAgICAsIG1fcmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pCit7CisgICAgQ09O
VEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOiIpOworICAgIHNlcnZlci5hZGRDb250ZXh0Q29ubmVjdGlvbigqdGhpcyk7
Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5XZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkKK3sKKyAgICBDT05URVhUX0NPTk5F
Q1RJT05fUkVMRUFTRV9MT0coIn5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOiIpOworICAgIGlmIChtX3NlcnZlciAmJiBtX3NlcnZlci0+Y29udGV4dENvbm5lY3Rpb25G
b3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbigpKSA9PSB0aGlzKQorICAgICAg
ICBtX3NlcnZlci0+cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oKnRoaXMpOworfQorCitXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllciBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjp3ZWJQcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29ubmVj
dGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpOworfQorCitJUEM6OkNvbm5lY3Rpb24mIFdlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmlwY0Nvbm5lY3Rpb24oKSBjb25z
dAoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpOworfQorCitJUEM6OkNv
bm5lY3Rpb24qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3Nh
Z2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gJmlwY0Nvbm5lY3Rpb24o
KTsKK30KKwordWludDY0X3QgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAoreworICAgIHJldHVybiAwOwor
fQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5l
Y3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFT
RV9MT0coImNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkOiIpOworICAgIG1fY29ubmVjdGlvbi5z
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOwor
fQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnBvc3RF
eGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNo
YXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7Cisg
ICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJwb3N0RXhjZXB0aW9uVG9Xb3JrZXJP
YmplY3Q6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVu
dGlmaWVyLnRvVUludDY0KCkpOworICAgIGlmIChtX3NlcnZlcikKKyAgICAgICAgbV9zZXJ2ZXIt
PnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBlcnJv
ck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMKTsKK30KKwordm9p
ZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpsYXVuY2hTaGFyZWRX
b3JrZXIoV2ViU2hhcmVkV29ya2VyJiBzaGFyZWRXb3JrZXIpCit7CisgICAgQ09OVEVYVF9DT05O
RUNUSU9OX1JFTEVBU0VfTE9HKCJsYXVuY2hTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50
aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXIuaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwor
ICAgIHNoYXJlZFdvcmtlci5tYXJrQXNSdW5uaW5nKCk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpMYXVuY2hTaGFyZWRXb3JrZXIg
eyBzaGFyZWRXb3JrZXIub3JpZ2luKCksIHNoYXJlZFdvcmtlci5pZGVudGlmaWVyKCksIHNoYXJl
ZFdvcmtlci51cmwoKSwgc2hhcmVkV29ya2VyLndvcmtlck9wdGlvbnMoKSwgc2hhcmVkV29ya2Vy
LmZldGNoUmVzdWx0KCkgfSk7CisgICAgZm9yIChhdXRvJiBwb3J0IDogc2hhcmVkV29ya2VyLnNo
YXJlZFdvcmtlck9iamVjdHMoKS52YWx1ZXMoKSkKKyAgICAgICAgcG9zdENvbm5lY3RFdmVudChz
aGFyZWRXb3JrZXIsIHBvcnQpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OnBvc3RDb25uZWN0RXZlbnQoY29uc3QgV2ViU2hhcmVkV29ya2VyJiBz
aGFyZWRXb3JrZXIsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmIHBvcnQp
Cit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJwb3N0Q29ubmVjdEV2ZW50
OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VyLmlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OlBvc3RDb25uZWN0RXZlbnQgeyBzaGFyZWRXb3JrZXIuaWRl
bnRpZmllcigpLCBwb3J0LCBzaGFyZWRXb3JrZXIub3JpZ2luKCkuY2xpZW50T3JpZ2luLnRvU3Ry
aW5nKCkgfSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6dGVybWluYXRlU2hhcmVkV29ya2VyKGNvbnN0IFdlYlNoYXJlZFdvcmtlciYgc2hhcmVk
V29ya2VyKQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygidGVybWluYXRl
U2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29y
a2VyLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlRlcm1pbmF0ZVNoYXJlZFdvcmtlciB7
IHNoYXJlZFdvcmtlci5pZGVudGlmaWVyKCkgfSk7Cit9CisKKyN1bmRlZiBDT05URVhUX0NPTk5F
Q1RJT05fUkVMRUFTRV9MT0cKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDZhZWEzMTlhYTNlODBlNjcwZGVkYmMwYzhhYmQwZjJmNmI1Y2EyNAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2Vy
L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDgw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5
SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1RyYW5zZmVycmVkTWVzc2FnZVBvcnQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgUmVnaXN0cmFibGVEb21haW47CitjbGFzcyBTY3JpcHRCdWZmZXI7CitzdHJ1Y3QgQ2xpZW50
T3JpZ2luOworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0Oworc3RydWN0IFdvcmtlck9wdGlvbnM7
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzczsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlcjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNl
cnZlcjsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBm
aW5hbCA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2ViU2hhcmVkV29y
a2VyU2VydmVyJik7CisgICAgfldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24oKTsKKworICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlm
aWVyKCkgY29uc3Q7CisgICAgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lz
dHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQorICAg
IElQQzo6Q29ubmVjdGlvbiYgaXBjQ29ubmVjdGlvbigpIGNvbnN0OworCisgICAgdm9pZCBsYXVu
Y2hTaGFyZWRXb3JrZXIoV2ViU2hhcmVkV29ya2VyJik7CisgICAgdm9pZCBwb3N0Q29ubmVjdEV2
ZW50KGNvbnN0IFdlYlNoYXJlZFdvcmtlciYsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVz
c2FnZVBvcnQmKTsKKyAgICB2b2lkIHRlcm1pbmF0ZVNoYXJlZFdvcmtlcihjb25zdCBXZWJTaGFy
ZWRXb3JrZXImKTsKKworICAgIHZvaWQgY29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKTsKKwor
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
JikgZmluYWw7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAgIHZvaWQgcG9z
dEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCisgICAgLy8gSVBDOjpNZXNzYWdlU2Vu
ZGVyLgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25z
dCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0
IGZpbmFsOworCisgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fY29ubmVjdGlv
bjsKKyAgICBXZWFrUHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlcj4gbV9zZXJ2ZXI7CisgICAgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWU0N2MxMjJjYmFjODczYzIyYjZkYTNiYzFlYTRkYTA2OGUzNTkyYQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCAr
MSwyNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAor
IyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdl
cyAtPiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIE5vdFJlZkNvdW50
ZWQgeworICAgIFBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFN0cmluZyBlcnJvck1lc3NhZ2Us
IGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTdHJpbmcgc291cmNlVVJMKQorfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCAxYzQyZDA0MGMxYTkwYjBhYWRkMTRlOGIzMzVl
ZjhkZGJiY2FmOWQ2Li5kZTMyZjgxNzE3MTU2NDdkNTM2MTA2MjZhNDc5MTkwNDAwN2RlYjQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaApAQCAtOTcsNiArOTcsNyBAQCBleHRlcm4gIkMiIHsK
ICAgICBNKFNlcnZpY2VXb3JrZXIpIFwKICAgICBNKFNlc3Npb25TdGF0ZSkgXAogICAgIE0oU2hh
cmVkRGlzcGxheUxpc3RzKSBcCisgICAgTShTaGFyZWRXb3JrZXIpIFwKICAgICBNKFN0b3JhZ2Up
IFwKICAgICBNKFN0b3JhZ2VBUEkpIFwKICAgICBNKFRleHRJbnB1dCkgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggN2ViZmE1MTZiNTAzMzZkMzY4N2Y3ZWNk
ZDE3ZThlN2ViZDFjZDlkNy4uNGM4Y2FkMDQ2NDcxNmY3MzMyYWFiNWM3OThiNmMxYWE1NWJiNzhj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0zMDMsMTAg
KzMwMywxMyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgog
ICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllcicsCiAgICAg
ICAgICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcicsCiAgICAg
ICAgICdXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoJywKKyAgICAgICAgJ1dlYkNvcmU6OlNoYXJl
ZFdvcmtlcklkZW50aWZpZXInLAorICAgICAgICAnV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTbGVlcERpc2FibGVySWRlbnRpZmllcics
CiAgICAgICAgICdXZWJDb3JlOjpTb3VyY2VCdWZmZXJBcHBlbmRNb2RlJywKICAgICAgICAgJ1dl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXInLAogICAg
ICAgICAnV2ViQ29yZTo6U3RvcmFnZVR5cGUnLAorICAgICAgICAnV2ViQ29yZTo6VHJhbnNmZXJy
ZWRNZXNzYWdlUG9ydCcsCiAgICAgICAgICdXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0SWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpXZWJMb2NrSWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJDb3JlOjpXZWJTb2NrZXRJZGVudGlmaWVyJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDU3ZWYzYjE0ZWFm
MmMxMDkyMDk4ZWU5NDMyZjUwOGM2MTFlNThlMzUuLmUzMTM5MTA1OWNiM2NiMjAwYTQ4MzcxOTlh
NDlkMzIxOWM4NDQ3M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysr
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMTQxLDYgKzE0MSwxMSBAQCBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuY3BwIEBuby11bmlmeQogTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIEBuby11
bmlmeQogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uY3BwIEBuby11bmlmeQogCitOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyLmNwcAorTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdv
cmtlclNlcnZlci5jcHAKK05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcAorTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisKIE5ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS5jcHAKQEAgLTc4Myw4ICs3ODgsOSBAQCBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCiBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dPcmlnaW5UYWJsZS5jcHAKIFdlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAKLVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRX
b3JrZXJQcm92aWRlci5jcHAKK1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKK1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3Jr
ZXJQcm92aWRlci5jcHAKIAogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIuY3BwCiAKQEAgLTg4NywzICs4OTMsNyBAQCBSZW1vdGVXZWJMb2NrUmVnaXN0cnlN
ZXNzYWdlUmVjZWl2ZXIuY3BwCiBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrTWVzc2FnZVJlY2Vp
dmVyLmNwcAogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5TWVzc2FnZVJlY2VpdmVyLmNwcAog
V2ViTG9ja1JlZ2lzdHJ5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBh
Njc4MzY3YTc3NWE0OWJhODFiMjQ4OGNmMzFlYWI5ZGNjY2NjOTIxLi4zMzAyMGJkNWMzY2Q5NDE3
NzU2MTU3OWFjMjBmYzM4ZjljNjkyNzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTUyOSw3ICs1Mjks
NyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVdlYlByb2Nlc3MoV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvYwogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0
ZXJtaW5hdGVVbnJlc3BvbnNpdmVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQogewogICAgIGlmIChSZWZQdHIgcHJvY2Vz
cyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIocHJvY2Vzc0lkZW50aWZp
ZXIpKSB7Ci0gICAgICAgIHByb2Nlc3MtPmRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgICAg
ICBwcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNl
cnZpY2VXb3JrZXIpOwogICAgICAgICBwcm9jZXNzLT5yZXF1ZXN0VGVybWluYXRpb24oUHJvY2Vz
c1Rlcm1pbmF0aW9uUmVhc29uOjpFeGNlZWRlZENQVUxpbWl0KTsKICAgICB9CiB9CkBAIC0xNDE1
LDE2ICsxNDE1LDIxIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRGVzdHJveVdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50CiB9CiAjZW5kaWYKIAordm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3Ry
YWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFi
bGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXVEZNb3Zl
KHJlZ2lzdHJhYmxlRG9tYWluKSwgc2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7Cit9CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiB2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25h
bDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVu
dGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNo
U2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcygqdGhpcywgV1RG
TW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgc2Vz
c2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgV2ViUHJvY2Vzc1Bvb2w6
OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
V1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwg
c2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6c2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVk
ZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBpZiAoYXV0
byogcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIoaWRlbnRp
ZmllcikpCi0gICAgICAgIHByb2Nlc3MtPmRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgICAg
ICBwcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNl
cnZpY2VXb3JrZXIpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJv
Y2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzSWRlbnRpZmllcikKQEAgLTE0NjAsNiArMTQ2NSwxMiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQ
cm9jZXNzSQogfQogI2VuZGlmCiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciBpZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvKiBwcm9jZXNzID0gV2ViUHJvY2Vzc1By
b3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihpZGVudGlmaWVyKSkKKyAgICAgICAgcHJvY2Vzcy0+
ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIp
OworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdp
biwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qg
c3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBxdW90YSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUkVMRUFTRV9MT0coU3Rv
cmFnZSwgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VTcGFjZSIsIHRo
aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaAppbmRleCBhNGUzNjQ1ZWJhYWUzMzZkMTgwYjU0MTRiYWZhYTM1ZDgzZjkx
OGM0Li42ODQxYTM0ZmUwOWQxMmJhOTNkNGVmOGM4MGU0NTMzYTU1ZmQ2NWM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aApAQCAtMzM0LDYgKzMzNCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFNlcnZpY2VXb3Jr
ZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNl
V29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIHZvaWQgZW5kU2VydmljZVdvcmtlckJhY2tn
cm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzSWRlbnRpZmllcik7CiAjZW5kaWYKKyAgICB2b2lkIHNoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOworICAg
IHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCB0ZXJtaW5hdGVXZWJQcm9jZXNzKFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmlu
CmluZGV4IDEyZDA2Y2ViZDYyYWYxNzUwZTc4ODU1OWMxM2ExYjM5ODNmZGQyYmEuLjE1NzU3ZWQ5
YTI1MmIwOWRjZDExYmI1ZTZiOWM4YTEwZDA1MzRjOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVz
c2FnZXMuaW4KQEAgLTYwLDYgKzYwLDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94
eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nl
c3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVu
dGlmaWVyKQogICAgIEVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpCiAjZW5k
aWYKKyAgICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4sIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKKyAgICBTaGFyZWRXb3JrZXJDb250ZXh0
Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiAKICAgICBTZXRXZWJQcm9jZXNzSGFzVXBsb2FkcyhXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciBwcm9jZXNzSUQsIGJvb2wgaGFzVXBsb2FkKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBiYjQxYzExMWEzMzU5ZTBhMjMzZjM0NGQyZjlkZTZk
MDFjMjhhNTcwLi5lNDFmZDg3ODAwOTA4NjEyOWY3MDQzMTBjMzIyYmRlZWI2YzZkMDcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM2OTQsMTEgKzM2OTQs
OSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlckFnZW50KFN0cmluZyYmIHVzZXJBZ2VudCkK
ICAgICAgICAgcmV0dXJuOwogICAgIG1fdXNlckFnZW50ID0gV1RGTW92ZSh1c2VyQWdlbnQpOwog
Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIC8vIFdlIHVwZGF0ZSB0aGUgc2Vydmlj
ZSB3b3JrZXIgdGhlcmUgYXQgdGhlIG1vbWVudCB0byBiZSBzdXJlIHdlIHVzZSB2YWx1ZXMgdXNl
ZCBieSBhY3R1YWwgd2ViIHBhZ2VzLgogICAgIC8vIEZJWE1FOiBSZWZhY3RvciB0aGlzIHdoZW4g
d2UgaGF2ZSBhIGJldHRlciBVc2VyLUFnZW50IHN0b3J5LgotICAgIHByb2Nlc3MoKS5wcm9jZXNz
UG9vbCgpLnVwZGF0ZVNlcnZpY2VXb3JrZXJVc2VyQWdlbnQobV91c2VyQWdlbnQpOwotI2VuZGlm
CisgICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCkudXBkYXRlV29ya2VyVXNlckFnZW50KG1fdXNl
ckFnZW50KTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGFmYzIz
ZWU1M2YxMjg0MjE5M2QyZWFlZjIwZjI1OTYyZWVkNzNmYTIuLjRiMTliMGQxZDNjMTU0Y2IyZTZm
MzAyMzZiMTM0ZTA1OThjYTI0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKQEAgLTUyOSw3ICs1MjksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRX
ZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Bybwog
Ym9vbCBXZWJQcm9jZXNzUG9vbDo6c191c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzID0g
ZmFsc2U7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3NQb29s
Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KE5ldHdvcmtQcm9jZXNzUHJveHkmIHByb3h5LCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJh
YmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
PiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQ
cm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9w
dGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8qIHdlYnNpdGVEYXRhU3Rv
cmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChzZXNz
aW9uSUQpOwogICAgIGlmICghd2Vic2l0ZURhdGFTdG9yZSkKQEAgLTU0Niw3ICs1NDYsNyBAQCB2
b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzKE5ldAogICAgIGlmIChzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZp
ZXIpIHsKICAgICAgICAgLy8gVGhpcyBpcyBhIHNlcnZpY2Ugd29ya2VyIGZvciBhIHNlcnZpY2Ug
d29ya2VyIHBhZ2Ugc28gd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgdXNlIHVzZSB0aGUgcGFnZSdz
IFdlYlByb2Nlc3MgZm9yIHRoZSBzZXJ2aWNlIHdvcmtlci4KICAgICAgICAgaWYgKChzZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmll
cihzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXItPnByb2Nlc3NJZGVudGlmaWVyKCkpKSkgewot
ICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlU2VydmljZVdvcmtl
cnMocHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2aWNl
V29ya2VycygpKTsKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJs
ZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBwcm9j
ZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CiAg
ICAgICAgICAgICBpZiAoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNo
ZSgpKSB7CiAgICAgICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLnJl
bW92ZVByb2Nlc3MoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NDYWNoZTo6
U2hvdWxkU2h1dERvd25Qcm9jZXNzOjpObyk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFzZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpOwpAQCAtNTY0LDcgKzU2
NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0CiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBwcm9jZXNzLnB0cigp
OwotICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlU2VydmljZVdv
cmtlcnMocHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2
aWNlV29ya2VycygpKTsKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVu
YWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBw
cm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7
CiAKICAgICAgICAgICAgIGlmIChzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vz
c0NhY2hlKCkpIHsKICAgICAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hl
KCkucmVtb3ZlUHJvY2Vzcygqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0Nh
Y2hlOjpTaG91bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKE5ldAogICAgIH0KIAogICAgIGlmICghc2VydmljZVdvcmtlclByb2Nl
c3NQcm94eSkgewotICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94
eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMoKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFp
biAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIGF1
dG8gbmV3UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdl
YlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgKnByb2Nlc3NQb29sLCBS
ZWdpc3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9y
ZSk7CiAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBuZXdQcm9jZXNzUHJveHku
cHRyKCk7CiAKICAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElDKFNlcnZp
Y2VXb3JrZXIsICJlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzIGNyZWF0aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nlcz0l
cCwgUElEPSVkKSIsIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOwpAQCAtNTg2LDIwICs1ODYsNzAgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhOZXQKICAgICAgICAgcHJvY2Vzc1Bvb2wtPm1fcHJvY2Vzc2VzLmFw
cGVuZChXVEZNb3ZlKG5ld1Byb2Nlc3NQcm94eSkpOwogICAgIH0KIAotICAgIEFTU0VSVCghc2Vy
dmljZVdvcmtlclByb2Nlc3NlcygpLmNvbnRhaW5zKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
KSk7Ci0gICAgc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2VydmljZVdvcmtlclByb2Nl
c3NQcm94eSk7CisgICAgd29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5KTsKIAotICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZp
Y2VXb3JrZXJDb250ZXh0KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA/
IHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vz
c1Bvb2wtPm1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3Ry
YWJsZURvbWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7Ci0gICAgaWYgKCFwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyVXNlckFn
ZW50LmlzTnVsbCgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRTZXJ2
aWNlV29ya2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQp
OworICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZpY2VXb3JrZXJD
b250ZXh0KHByb2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bvb2wtPm1f
d29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3Jv
dXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3Jr
ZXJQYWdlSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmICgh
cHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQorICAgICAgICBzZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRXb3JrZXJVc2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fd29y
a2VyVXNlckFnZW50KTsKIH0KKyNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVG
cm9tU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCit2b2lk
IFdlYlByb2Nlc3NQb29sOjpyZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94
eSYgcHJvY2VzcykKIHsKLSAgICBBU1NFUlQoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmNvbnRh
aW5zKHByb2Nlc3MpKTsKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkucmVtb3ZlKHByb2Nl
c3MpOworICAgIEFTU0VSVCh3b3JrZXJQcm9jZXNzZXMoKS5jb250YWlucyhwcm9jZXNzKSk7Cisg
ICAgd29ya2VyUHJvY2Vzc2VzKCkucmVtb3ZlKHByb2Nlc3MpOworfQorCit2b2lkIFdlYlByb2Nl
c3NQb29sOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRh
U3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Npb25JRCk7CisgICAgaWYg
KCF3ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOworICAgIGlmICghcHJvY2Vzc1Bvb2xz
KCkuc2l6ZSgpKQorICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPFdlYlByb2Nlc3NQ
b29sPj4gc2hhcmVkV29ya2VyUHJvY2Vzc1Bvb2woV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCkuZ2V0KCkpKTsKKworICAgIC8vIEFy
Yml0cmFyaWx5IGNob29zZSB0aGUgZmlyc3QgcHJvY2VzcyBwb29sIHRvIGhvc3QgdGhlIHNoYXJl
ZCB3b3JrZXIgcHJvY2Vzcy4KKyAgICBhdXRvKiBwcm9jZXNzUG9vbCA9IHByb2Nlc3NQb29scygp
WzBdOworICAgIEFTU0VSVChwcm9jZXNzUG9vbCk7CisKKyAgICBXZWJQcm9jZXNzUHJveHkqIHNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eSB7IG51bGxwdHIgfTsKKworICAgIGZvciAoYXV0byYgcHJv
Y2VzcyA6IHByb2Nlc3NQb29sLT5tX3Byb2Nlc3NlcykgeworICAgICAgICBpZiAocHJvY2Vzcy5w
dHIoKSA9PSBwcm9jZXNzUG9vbC0+bV9wcmV3YXJtZWRQcm9jZXNzLmdldCgpIHx8IHByb2Nlc3Mt
PmlzRHVtbXlQcm9jZXNzUHJveHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBp
ZiAoJnByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlKQorICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghcHJvY2Vzcy0+aXNNYXRjaGluZ1JlZ2lz
dHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSA9IHByb2Nlc3MucHRyKCk7CisgICAg
ICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlV29ya2VycyhXZWJQcm9jZXNzUHJv
eHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOworCisgICAgICAgIGlmIChzaGFyZWRXb3Jr
ZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSkgeworICAgICAgICAgICAgcHJvY2Vz
c1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nlc3MoKnNoYXJlZFdvcmtlclByb2Nl
c3NQcm94eSwgV2ViUHJvY2Vzc0NhY2hlOjpTaG91bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKKyAg
ICAgICAgICAgIEFTU0VSVCghc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0Nh
Y2hlKCkpOworICAgICAgICB9CisKKyAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0df
U1RBVElDKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2VzcyByZXVzaW5nIGFuIGV4aXN0aW5nIHdlYiBwcm9jZXNzIChwcm9j
ZXNzPSVwLCBQSUQ9JWQpIiwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LCBzaGFyZWRXb3JrZXJQ
cm9jZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICBicmVhazsKKyAgICB9
CisKKyAgICBpZiAoIXNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSkgeworICAgICAgICBhdXRvIG5l
d1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yV29ya2VycyhXZWJQcm9j
ZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgKnByb2Nlc3NQb29sLCBSZWdpc3Ry
YWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7Cisg
ICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSA9IG5ld1Byb2Nlc3NQcm94eS5wdHIoKTsK
KworICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoU2hhcmVkV29ya2Vy
LCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
IGNyZWF0aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nlc3M9JXAsIFBJRD0l
ZCkiLCBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHksIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+
cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmluaXRpYWxpemVO
ZXdXZWJQcm9jZXNzKG5ld1Byb2Nlc3NQcm94eSwgd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAg
IHByb2Nlc3NQb29sLT5tX3Byb2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdQcm9jZXNzUHJveHkp
KTsKKyAgICB9CisKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNoYXJlZFdvcmtlclByb2Nl
c3NQcm94eSk7CisKKyAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNoYXJl
ZFdvcmtlckNvbnRleHQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNz
UG9vbC0+bV93b3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVs
dFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJsZURvbWFpbiwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fd29ya2Vy
VXNlckFnZW50LmlzTnVsbCgpKQorICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPnNl
dFdvcmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV93b3JrZXJVc2VyQWdlbnQpOwogfQotI2Vu
ZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNo
YW5nZWQoKQogewpAQCAtMTAwMywxMCArMTA1Myw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRp
c2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIAogICAgIG1fYmFja0Zv
cndhcmRDYWNoZS0+cmVtb3ZlRW50cmllc0ZvclByb2Nlc3MocHJvY2Vzcyk7CiAKLSNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtl
cnMoKSkKLSAgICAgICAgcmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7
Ci0jZW5kaWYKKyAgICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdXb3JrZXJzKCkpCisgICAgICAgIHJl
bW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7CiAKICAgICBzdGF0aWNfY2FzdDxXZWJD
b250ZXh0U3VwcGxlbWVudCo+KHN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+
KCkpLT5wcm9jZXNzRGlkQ2xvc2UoJnByb2Nlc3MpOwogCkBAIC0xMDY3LDEyICsxMTE1LDEyIEBA
IFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFi
bGVEb21haW4oV2Vic2l0ZURhdGFTdG9yCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
Ci1Vc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIFdlYlByb2Nlc3NQb29sOjp1c2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKQorVXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllciBXZWJQcm9jZXNzUG9vbDo6dXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllckZvcldvcmtlcnMoKQogewotICAgIGlmICghbV91c2VyQ29udGVudENvbnRyb2xs
ZXJGb3JTZXJ2aWNlV29ya2VyKQotICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclNl
cnZpY2VXb3JrZXIgPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKCk7Cisg
ICAgaWYgKCFtX3VzZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtlcnMpCisgICAgICAgIG1fdXNl
ckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2VycyA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjpjcmVhdGUoKTsKIAotICAgIHJldHVybiBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclNl
cnZpY2VXb3JrZXItPmlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gbV91c2VyQ29udGVudENvbnRy
b2xsZXJGb3JXb3JrZXJzLT5pZGVudGlmaWVyKCk7CiB9CiAjZW5kaWYKIApAQCAtMTExOSwxNSAr
MTE2NywxMyBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFn
ZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogCiAgICAgYXV0byBwYWdlID0gcHJv
Y2Vzcy0+Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9u
KSk7CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKCFtX3NlcnZpY2VXb3Jr
ZXJQcmVmZXJlbmNlcykgewotICAgICAgICBtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA9IHBh
Z2UtPnByZWZlcmVuY2VzU3RvcmUoKTsKLSAgICAgICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2Vy
UHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSkKLSAgICAgICAgICAgIHNlcnZpY2VX
b3JrZXJQcm9jZXNzLnVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKCptX3NlcnZp
Y2VXb3JrZXJQcmVmZXJlbmNlcyk7CisgICAgaWYgKCFtX3dvcmtlclByZWZlcmVuY2VzKSB7Cisg
ICAgICAgIG1fd29ya2VyUHJlZmVyZW5jZXMgPSBwYWdlLT5wcmVmZXJlbmNlc1N0b3JlKCk7Cisg
ICAgICAgIGZvciAoYXV0byYgd29ya2VyUHJvY2VzcyA6IHdvcmtlclByb2Nlc3NlcygpKQorICAg
ICAgICAgICAgd29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKCptX3dv
cmtlclByZWZlcmVuY2VzKTsKICAgICB9CiAgICAgaWYgKHVzZXJDb250ZW50Q29udHJvbGxlcikK
LSAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyID0gdXNlckNv
bnRlbnRDb250cm9sbGVyOwotI2VuZGlmCisgICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVy
Rm9yV29ya2VycyA9IHVzZXJDb250ZW50Q29udHJvbGxlcjsKIAogICAgIGJvb2wgZW5hYmxlUHJv
Y2Vzc1N3YXBPbkNyb3NzU2l0ZU5hdmlnYXRpb24gPSBwYWdlLT5wcmVmZXJlbmNlcygpLnByb2Nl
c3NTd2FwT25Dcm9zc1NpdGVOYXZpZ2F0aW9uRW5hYmxlZCgpOwogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCkBAIC0xMTUwLDE2ICsxMTk2LDE0IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nl
c3NQb29sOjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAg
ICAgcmV0dXJuIHBhZ2U7CiB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdl
YlByb2Nlc3NQb29sOjp1cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYg
dXNlckFnZW50KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlV29ya2VyVXNlckFnZW50KGNv
bnN0IFN0cmluZyYgdXNlckFnZW50KQogewotICAgIGlmIChtX3NlcnZpY2VXb3JrZXJVc2VyQWdl
bnQgPT0gdXNlckFnZW50KQorICAgIGlmIChtX3dvcmtlclVzZXJBZ2VudCA9PSB1c2VyQWdlbnQp
CiAgICAgICAgIHJldHVybjsKLSAgICBtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQgPSB1c2VyQWdl
bnQ7Ci0gICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMoKSkKLSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3Muc2V0U2VydmljZVdvcmtl
clVzZXJBZ2VudChtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQpOworICAgIG1fd29ya2VyVXNlckFn
ZW50ID0gdXNlckFnZW50OworICAgIGZvciAoYXV0byYgd29ya2VyUHJvY2VzcyA6IHdvcmtlclBy
b2Nlc3NlcygpKQorICAgICAgICB3b3JrZXJQcm9jZXNzLnNldFdvcmtlclVzZXJBZ2VudChtX3dv
cmtlclVzZXJBZ2VudCk7CiB9Ci0jZW5kaWYKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUJl
Z2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBX
ZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCiB7CkBAIC0xNTM4LDggKzE1ODIsMTMgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlU2VydmljZVdvcmtlcnMoKQogewogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07Ci0gICAg
d2hpbGUgKHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb21wdXRlU2l6ZSgpKQotICAgICAgICBz
ZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkuYmVnaW4oKS0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7
CisgICAgVmVjdG9yPFJlZjxXZWJQcm9jZXNzUHJveHk+PiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
OworICAgIHdvcmtlclByb2Nlc3NlcygpLmZvckVhY2goWyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAg
ICAgICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKKyAgICAgICAgICAg
IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYXBwZW5kKHByb2Nlc3MpOworICAgIH0pOworICAgIGZv
ciAoYXV0byYgc2VydmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKQor
ICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1By
b3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgogfQogCkBAIC0xNzY3LDEz
ICsxODE2LDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcG9ydFdlYkNvbnRlbnRDUFVUaW1l
KFNlY29uZHMgY3B1VGltZSwgdWludDY0X3QgYWN0aXZpdHlTCiAjZW5kaWYKIH0KIAotI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKLVdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIFdlYlBy
b2Nlc3NQb29sOjpzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkKK1dlYWtIYXNoU2V0PFdlYlByb2Nl
c3NQcm94eT4mIFdlYlByb2Nlc3NQb29sOjp3b3JrZXJQcm9jZXNzZXMoKQogewogICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+PiBwcm9jZXNzZXM7
CiAgICAgcmV0dXJuIHByb2Nlc3NlczsKIH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29s
Ojp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpCiB7CkBAIC0xNzg1LDIwICsxODMyLDI1IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkKICAgICBpZiAoYXV0
byogZ3B1UHJvY2VzcyA9IEdQVVByb2Nlc3NQcm94eTo6c2luZ2xldG9uSWZDcmVhdGVkKCkpCiAg
ICAgICAgIGdwdVByb2Nlc3MtPnVwZGF0ZVByb2Nlc3NBc3NlcnRpb24oKTsKICNlbmRpZgotI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKKwogICAgIC8vIENoZWNrIG9uIG5leHQgcnVuIGxvb3Ag
c2luY2UgdGhlIHdlYiBwcm9jZXNzIHByb3h5IHRva2VucyBhcmUgcHJvYmFibHkgYmVpbmcgdXBk
YXRlZC4KICAgICBjYWxsT25NYWluUnVuTG9vcChbXSB7Ci0gICAgICAgIGZvciAoYXV0byYgc2Vy
dmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkpCi0gICAgICAgICAg
ICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy51cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlv
bigpOwotICAgIH0pOworICAgICAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFtdKGF1dG8m
IHdvcmtlclByb2Nlc3MpIHsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgICAgICAg
ICBpZiAod29ya2VyUHJvY2Vzcy5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQorICAgICAgICAg
ICAgICAgIHdvcmtlclByb2Nlc3MudXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXZWJQcm9j
ZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogI2VuZGlmCisgICAgICAgICAg
ICBpZiAod29ya2VyUHJvY2Vzcy5pc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkpCisgICAgICAgICAg
ICAgICAgd29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdlYlByb2Nl
c3NQcm94eTo6V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKTsKKyAgICAgICAgfSk7CisgICAgfSk7
CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6OmlzU2VydmljZVdvcmtlclBhZ2VJRChXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgaW5lZmZpY2llbnQuCi0gICAgcmV0dXJuIFdURjo6
YW55T2Yoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLCBbcGFnZUlEXShhdXRvJiBwcm9jZXNzKSB7
CisgICAgcmV0dXJuIFdURjo6YW55T2Yod29ya2VyUHJvY2Vzc2VzKCksIFtwYWdlSURdKGF1dG8m
IHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuIHByb2Nlc3MuaGFzU2VydmljZVdvcmtlclBhZ2VQ
cm94eShwYWdlSUQpOwogICAgIH0pOwogI2VuZGlmCkBAIC0yMTI0LDE2ICsyMTc2LDI2IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFVzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoYm9v
bCB1c2VTZXBhcmF0ZVNlcnZpY2VXCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCitz
aXplX3QgV2ViUHJvY2Vzc1Bvb2w6OnNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25zdAor
eworICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNo
KFsmXShhdXRvJiBwcm9jZXNzKSB7CisgICAgICAgIGlmIChwcm9jZXNzLmlzUnVubmluZ1NlcnZp
Y2VXb3JrZXJzKCkpCisgICAgICAgICAgICArK2NvdW50OworICAgIH0pOworICAgIHJldHVybiBj
b3VudDsKK30KKwogYm9vbCBXZWJQcm9jZXNzUG9vbDo6aGFzU2VydmljZVdvcmtlckZvcmVncm91
bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6OmFueU9mKHNl
cnZpY2VXb3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2VzcykgeworICAgIHJldHVybiBX
VEY6OmFueU9mKHdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAg
IHJldHVybiBwcm9jZXNzLmhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0
aW5nKCk7CiAgICAgfSk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6Omhhc1NlcnZpY2VXb3Jr
ZXJCYWNrZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RG
OjphbnlPZihzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKKyAg
ICByZXR1cm4gV1RGOjphbnlPZih3b3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2Vzcykg
ewogICAgICAgICByZXR1cm4gcHJvY2Vzcy5oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2
aXR5Rm9yVGVzdGluZygpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgKaW5kZXggZWI2NmQ4OTQ5MGRmZTAyOGIxMDEyNWU5M2ZmYmQxOThkMDI3Zjdj
ZS4uZTcwYjZmNDI5ZjdjYjcwNjk1NDk1MGY5MDBkMzc4MTNiZGFkZGJiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0zNzQsMTcgKzM3NCwyMCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0RpZFRlcm1pbmF0ZShOZXR3b3JrUHJvY2Vzc1By
b3h5JiwgTmV0d29ya1Byb2Nlc3NQcm94eTo6VGVybWluYXRpb25SZWFzb24pOwogCiAgICAgYm9v
bCBpc1NlcnZpY2VXb3JrZXJQYWdlSUQoV2ViUGFnZVByb3h5SWRlbnRpZmllcikgY29uc3Q7Cisg
ICAgdm9pZCByZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYpOworCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFNlcnZp
Y2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQ
cm94eSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRl
bnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0g
ICAgdm9pZCByZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkm
KTsKLSAgICBzaXplX3Qgc2VydmljZVdvcmtlclByb3hpZXNDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb21wdXRlU2l6ZSgpOyB9Ci0gICAgdm9pZCB1cGRh
dGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKLSAgICBV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXJGb3JTZXJ2aWNlV29ya2VycygpOworICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFNlcnZp
Y2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25J
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICBzaXplX3Qgc2VydmljZVdvcmtl
clByb3hpZXNDb3VudCgpIGNvbnN0OworICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKTsKICAgICBib29s
IGhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3Q7CiAg
ICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNv
bnN0OwogI2VuZGlmCiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyUHJvY2Vzc0NyYXNoZWQoV2ViUHJv
Y2Vzc1Byb3h5Jik7CiAKKyAgICB2b2lkIHVwZGF0ZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCk7CisgICAgc3RhdGljIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkgY29u
c3Q7CiAjZW5kaWYKQEAgLTYxOCwxMyArNjIxLDExIEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFw
PFBBTDo6U2Vzc2lvbklELCBXZWFrUHRyPFdlYlByb2Nlc3NQcm94eT4+IG1fZHVtbXlQcm9jZXNz
UHJveGllczsgLy8gTGlnaHR3ZWlnaHQgV2ViUHJvY2Vzc1Byb3h5IG9iamVjdHMgd2l0aG91dCBi
YWNraW5nIHByb2Nlc3MuCiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgc3RhdGlj
IFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKTsK
LSAgICBib29sIG1fd2FpdGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiB7IGZh
bHNlIH07Ci0gICAgU3RyaW5nIG1fc2VydmljZVdvcmtlclVzZXJBZ2VudDsKLSAgICBzdGQ6Om9w
dGlvbmFsPFdlYlByZWZlcmVuY2VzU3RvcmU+IG1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzOwot
ICAgIFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gbV91c2VyQ29udGVudENv
bnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyOwotI2VuZGlmCisgICAgc3RhdGljIFdlYWtIYXNoU2V0
PFdlYlByb2Nlc3NQcm94eT4mIHdvcmtlclByb2Nlc3NlcygpOworCisgICAgc3RkOjpvcHRpb25h
bDxXZWJQcmVmZXJlbmNlc1N0b3JlPiBtX3dvcmtlclByZWZlcmVuY2VzOworICAgIFJlZlB0cjxX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JX
b3JrZXJzOworICAgIFN0cmluZyBtX3dvcmtlclVzZXJBZ2VudDsKIAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKICAgICBSZWZQdHI8R1BVUHJvY2Vzc1Byb3h5PiBtX2dwdVByb2Nlc3M7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAwNTdkNDk5MjQx
OGEwMDQzZDg0YzU5ZDdiNmU1MmY5ZTAyNjU4YTcxLi5iNzQ2YTdkN2QyMTcwYzM5MjA1ZjMxZTUx
YWVkOGJiYzVlNmRlYjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1
ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKQEAgLTE4MiwxMSArMTgzLDExIEBAIFJlZjxX
ZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sJiBw
cm9jZXNzUG9vbCwgV2Vic2l0CiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1SZWY8
V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJz
KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3Ry
YWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSkKK1JlZjxXZWJQ
cm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yV29ya2VycyhXb3JrZXJUeXBl
IHdvcmtlclR5cGUsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21h
aW4mJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9y
ZSkKIHsKICAgICBhdXRvIHByb3h5ID0gYWRvcHRSZWYoKm5ldyBXZWJQcm9jZXNzUHJveHkocHJv
Y2Vzc1Bvb2wsICZ3ZWJzaXRlRGF0YVN0b3JlLCBJc1ByZXdhcm1lZDo6Tm8sIENyb3NzT3JpZ2lu
TW9kZTo6U2hhcmVkLCBDYXB0aXZlUG9ydGFsTW9kZTo6RGlzYWJsZWQpKTsKICAgICBwcm94eS0+
bV9yZWdpc3RyYWJsZURvbWFpbiA9IFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pOwotICAgIHBy
b3h5LT5lbmFibGVTZXJ2aWNlV29ya2Vycyhwcm9jZXNzUG9vbC51c2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKSk7CisgICAgcHJveHktPmVuYWJsZVdvcmtl
cnMod29ya2VyVHlwZSwgcHJvY2Vzc1Bvb2wudXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
ckZvcldvcmtlcnMoKSk7CiAgICAgcHJveHktPmNvbm5lY3QoKTsKICAgICByZXR1cm4gcHJveHk7
CiB9CkBAIC05OTUsMTAgKzk5NiwxMCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQmVjb21l
VW5yZXNwb25zaXZlKCkKICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogaXNSZXNwb25zaXZlQ2Fs
bGJhY2tzKQogICAgICAgICBjYWxsYmFjayhpc1dlYlByb2Nlc3NSZXNwb25zaXZlKTsKIAotICAg
IC8vIElmIHRoZSB3ZWIgcHJvY2VzcyBiZWNvbWVzIHVucmVzcG9uc2l2ZSBhbmQgb25seSBydW5z
IHNlcnZpY2Ugd29ya2Vycywga2lsbCBpdCBvdXJzZWx2ZXMgc2luY2UgdGhlcmUgYXJlIG5vIG5h
dGl2ZSBjbGllbnRzIHRvIGRvIGl0LgotICAgIGlmIChpc1J1bm5pbmdTZXJ2aWNlV29ya2Vycygp
ICYmIG1fcGFnZU1hcC5pc0VtcHR5KCkpIHsKLSAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVB
U0VfTE9HX0VSUk9SKFBlcmZvcm1hbmNlTG9nZ2luZywgImRpZEJlY29tZVVucmVzcG9uc2l2ZTog
VGVybWluYXRpbmcgc2VydmljZSB3b3JrZXItb25seSB3ZWIgcHJvY2VzcyBiZWNhdXNlIGl0IGlz
IHVucmVzcG9uc2l2ZSIpOwotICAgICAgICBkaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICAv
LyBJZiB0aGUgd2ViIHByb2Nlc3MgYmVjb21lcyB1bnJlc3BvbnNpdmUgYW5kIG9ubHkgcnVucyBz
ZXJ2aWNlL3NoYXJlZCB3b3JrZXJzLCBraWxsIGl0IG91cnNlbHZlcyBzaW5jZSB0aGVyZSBhcmUg
bm8gbmF0aXZlIGNsaWVudHMgdG8gZG8gaXQuCisgICAgaWYgKGlzUnVubmluZ1dvcmtlcnMoKSAm
JiBtX3BhZ2VNYXAuaXNFbXB0eSgpKSB7CisgICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNF
X0xPR19FUlJPUihQZXJmb3JtYW5jZUxvZ2dpbmcsICJkaWRCZWNvbWVVbnJlc3BvbnNpdmU6IFRl
cm1pbmF0aW5nIHdvcmtlci1vbmx5IHdlYiBwcm9jZXNzIGJlY2F1c2UgaXQgaXMgdW5yZXNwb25z
aXZlIik7CisgICAgICAgIGRpc2FibGVXb3JrZXJzKHsgV29ya2VyVHlwZTo6U2VydmljZVdvcmtl
ciwgV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyIH0pOwogICAgICAgICB0ZXJtaW5hdGUoKTsKICAg
ICB9CiB9CkBAIC0xNjk0LDggKzE2OTUsOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUoY29uc3QgVVJMJiB1cmwpCiAgICAgYXV0byBy
ZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsIH07CiAg
ICAgaWYgKG1fcmVnaXN0cmFibGVEb21haW4gJiYgKm1fcmVnaXN0cmFibGVEb21haW4gIT0gcmVn
aXN0cmFibGVEb21haW4pIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgICAgIGRp
c2FibGVTZXJ2aWNlV29ya2VycygpOworICAgICAgICBkaXNhYmxlV29ya2VycyhXb3JrZXJUeXBl
OjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgorCiAgICAgICAgIC8vIE51bGwgb3V0IHJlZ2lzdHJh
YmxlIGRvbWFpbiBzaW5jZSB0aGlzIHByb2Nlc3MgaGFzIG5vdyBiZWVuIHVzZWQgZm9yIHNldmVy
YWwgZG9tYWlucy4KICAgICAgICAgbV9yZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIHsgfTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTg3Miw1NCArMTg3NCw4NSBA
QCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQoY29u
c3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgcwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwog
ICAgIH0sIDApOwogfQorI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRTZXJ2aWNl
V29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQordm9pZCBXZWJQcm9jZXNz
UHJveHk6OnNldFdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKIHsKLSAg
ICBBU1NFUlQobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pOwotICAgIHNlbmQoTWVzc2FnZXM6
OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2VyQWdlbnQg
fSwgMCk7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIGlmIChtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbikKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OlNldFVzZXJBZ2VudCB7IHVzZXJBZ2VudCB9LCAwKTsKKyNlbmRpZgorICAg
IGlmIChtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlNldFVzZXJBZ2VudCB7IHVz
ZXJBZ2VudCB9LCAwKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVNlcnZpY2VX
b3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQor
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiB7Ci0gICAgQVNTRVJUKG1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDApOworI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpVcGRh
dGVQcmVmZXJlbmNlc1N0b3JlIHsgc3RvcmUgfSwgMCk7CisjZW5kaWYKKyAgICBpZiAobV9zaGFy
ZWRXb3JrZXJJbmZvcm1hdGlvbikKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpVcGRhdGVQcmVmZXJlbmNlc1N0b3JlIHsgc3Rv
cmUgfSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29ya2Vy
UHJvY2Vzc0Fzc2VydGlvbigpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlV29ya2VyUHJv
Y2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlIHdvcmtlclR5cGUpCiB7Ci0gICAgV0VCUFJPQ0VTU1BS
T1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlU2VydmljZVdvcmtlclBy
b2Nlc3NBc3NlcnRpb246Iik7Ci0gICAgQVNTRVJUKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9u
KTsKLSAgICBpZiAoIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQorICAgIGF1dG8mIHdvcmtl
ckluZm9ybWF0aW9uID0gd29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyBt
X3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIDogbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247Cisg
ICAgQVNTRVJUKHdvcmtlckluZm9ybWF0aW9uKTsKKyAgICBpZiAoIXdvcmtlckluZm9ybWF0aW9u
KQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIHNob3VsZFRha2VGb3JlZ3JvdW5kQWN0aXZp
dHkgPSBXVEY6OmFueU9mKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNz
ZXMsIFsmXShhdXRvJiBwcm9jZXNzKSB7CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9H
KFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbjogd29ya2Vy
VHlwZT0le3B1YmxpY31zIiwgd29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIg
PyAic2hhcmVkIiA6ICJzZXJ2aWNlIik7CisKKyAgICAvLyBGSVhNRTogQ2xpZW50cyBkbyBub3Qg
cHJvcGVybHkgZ2V0IHBvcHVsYXRlZCBpbiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIHNvIHdl
IGN1cnJlbnRseSB0YWtlIGFuIGFzc2VydGlvbiBubyBtYXR0ZXIgd2hhdC4KKyAgICBpZiAod29y
a2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpIHsKKyAgICAgICAgaWYgKCFQcm9j
ZXNzVGhyb3R0bGVyOjppc1ZhbGlkRm9yZWdyb3VuZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0aW9u
LT5hY3Rpdml0eSkpCisgICAgICAgICAgICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBt
X3Rocm90dGxlci5mb3JlZ3JvdW5kQWN0aXZpdHkoIldvcmtlciBmb3IgZm9yZWdyb3VuZCB2aWV3
KHMpIl9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGJvb2wgc2hvdWxkVGFrZUZv
cmVncm91bmRBY3Rpdml0eSA9IFdURjo6YW55T2Yod29ya2VySW5mb3JtYXRpb24tPmNsaWVudFBy
b2Nlc3NlcywgWyZdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuICZwcm9jZXNzICE9
IHRoaXMgJiYgISFwcm9jZXNzLm1fZm9yZWdyb3VuZFRva2VuOwogICAgIH0pOwogICAgIGlmIChz
aG91bGRUYWtlRm9yZWdyb3VuZEFjdGl2aXR5KSB7Ci0gICAgICAgIGlmICghUHJvY2Vzc1Rocm90
dGxlcjo6aXNWYWxpZEZvcmVncm91bmRBY3Rpdml0eShtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlv
bi0+YWN0aXZpdHkpKQotICAgICAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFj
dGl2aXR5ID0gbV90aHJvdHRsZXIuZm9yZWdyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBm
b3IgZm9yZWdyb3VuZCB2aWV3KHMpIl9zKTsKKyAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVy
Ojppc1ZhbGlkRm9yZWdyb3VuZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkp
CisgICAgICAgICAgICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5m
b3JlZ3JvdW5kQWN0aXZpdHkoIldvcmtlciBmb3IgZm9yZWdyb3VuZCB2aWV3KHMpIl9zKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGJvb2wgc2hvdWxkVGFrZUJhY2tncm91bmRBY3Rp
dml0eSA9IFdURjo6YW55T2YobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nl
c3NlcywgWyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICBib29sIHNob3VsZFRha2VCYWNrZ3JvdW5k
QWN0aXZpdHkgPSBXVEY6OmFueU9mKHdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMs
IFsmXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiAmcHJvY2VzcyAhPSB0aGlzICYm
ICEhcHJvY2Vzcy5tX2JhY2tncm91bmRUb2tlbjsKICAgICB9KTsKICAgICBpZiAoc2hvdWxkVGFr
ZUJhY2tncm91bmRBY3Rpdml0eSkgewotICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6Omlz
VmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2
aXR5KSkKLSAgICAgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9
IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tn
cm91bmQgdmlldyhzKSJfcyk7CisgICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxp
ZEJhY2tncm91bmRBY3Rpdml0eSh3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQorICAgICAg
ICAgICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuYmFja2dyb3Vu
ZEFjdGl2aXR5KCJXb3JrZXIgZm9yIGJhY2tncm91bmQgdmlldyhzKSJfcyk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBpZiAobV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nl
c3NpbmcpIHsKKyAgICBpZiAod29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2Vy
ICYmIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKSB7CiAgICAgICAgIFdF
QlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlNlcnZpY2UgV29y
a2VyIGZvciBiYWNrZ3JvdW5kIHByb2Nlc3NpbmciKTsKLSAgICAgICAgaWYgKCFQcm9jZXNzVGhy
b3R0bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5KG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uLT5hY3Rpdml0eSkpCi0gICAgICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+
YWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2Vy
IGZvciBiYWNrZ3JvdW5kIHByb2Nlc3NpbmciX3MpOworICAgICAgICBpZiAoIVByb2Nlc3NUaHJv
dHRsZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkod29ya2VySW5mb3JtYXRpb24tPmFjdGl2
aXR5KSkKKyAgICAgICAgICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0
bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tncm91bmQgcHJv
Y2Vzc2luZyJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBudWxscHRyOworICAgIHdvcmtlckluZm9ybWF0aW9u
LT5hY3Rpdml0eSA9IG51bGxwdHI7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxp
c2hTaGFyZWRXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBXRUJQUk9DRVNTUFJPWFlf
UkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dDog
U3RhcnRlZCIpOworICAgIG1hcmtQcm9jZXNzQXNSZWNlbnRseVVzZWQoKTsKKyAgICBzZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFNoYXJlZFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVsdFBh
Z2VHcm91cCgpLnBhZ2VHcm91cElEKCksIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24tPnJlbW90
ZVdvcmtlclBhZ2VQcm94eUlELCBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uLT5yZW1vdGVXb3Jr
ZXJQYWdlSUQsIHN0b3JlLCByZWdpc3RyYWJsZURvbWFpbiwgbV9zaGFyZWRXb3JrZXJJbmZvcm1h
dGlvbi0+aW5pdGlhbGl6YXRpb25EYXRhIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgeworICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICBXRUJQUk9DRVNT
UFJPWFlfUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29u
dGV4dDogRmluaXNoZWQiKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9LCAw
KTsKIH0KIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKwogdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBw
cm94eSkKIHsKICAgICBpZiAoIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQpAQCAtMTkyNyw3
ICsxOTYwLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNs
aWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKIAogICAgIFdFQlBST0NFU1NQUk9Y
WV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAicmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50
UHJvY2VzczogY2xpZW50UHJvY2Vzcz0lcCwgY2xpZW50UElEPSVkIiwgJnByb3h5LCBwcm94eS5w
cm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+Y2xp
ZW50UHJvY2Vzc2VzLmFkZChwcm94eSk7Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NB
c3NlcnRpb24oKTsKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6
OlNlcnZpY2VXb3JrZXIpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dW5yZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCkBAIC0xOTM3
LDcgKzE5NzAsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dW5yZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveAogCiAgICAgV0VCUFJPQ0VTU1BS
T1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJ1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNs
aWVudFByb2Nlc3M6IGNsaWVudFByb2Nlc3M9JXAsIGNsaWVudFBJRD0lZCIsICZwcm94eSwgcHJv
eHkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24t
PmNsaWVudFByb2Nlc3Nlcy5yZW1vdmUocHJveHkpOwotICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3Jr
ZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KIAogYm9vbCBXZWJQcm9jZXNzUHJveHk6Omhhc1Nl
cnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKQEAgLTE5NTcs
NyArMTk5MCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzdGFydFNlcnZpY2VXb3JrZXJCYWNr
Z3JvdW5kUHJvY2Vzc2luZygpCiAKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJv
Y2Vzc1N1c3BlbnNpb24sICJzdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyIp
OwogICAgIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nID0gdHJ1ZTsKLSAg
ICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOworICAgIHVwZGF0ZVdvcmtl
clByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAKIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjplbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoKQpA
QCAtMTk2NywyMyArMjAwMCwzOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5kU2VydmljZVdv
cmtlckJhY2tncm91bmRQcm9jZXNzaW5nKCkKIAogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNF
X0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgImVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vz
c2luZyIpOwogICAgIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nID0gZmFs
c2U7Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKKyAgICB1cGRh
dGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogfQog
I2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmRpc2FibGVTZXJ2aWNlV29ya2VycygpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlzYWJsZVdv
cmtlcnMoT3B0aW9uU2V0PFdvcmtlclR5cGU+IHdvcmtlclR5cGUpCiB7Ci0gICAgaWYgKCFtX3Nl
cnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKKyAgICBBU1NFUlQoIXdvcmtlclR5cGUuaXNFbXB0eSgp
KTsKKworICAgIGJvb2wgZGlkQ2hhbmdlID0gZmFsc2U7CisgICAgaWYgKHdvcmtlclR5cGUuY29u
dGFpbnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikgJiYgbV9zZXJ2aWNlV29ya2VySW5mb3Jt
YXRpb24pIHsKKyAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gPSB7IH07CisgICAg
ICAgIGRpZENoYW5nZSA9IHRydWU7CisgICAgfQorICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5z
KFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlcikgJiYgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbikg
eworICAgICAgICBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uID0geyB9OworICAgICAgICBkaWRD
aGFuZ2UgPSB0cnVlOworICAgIH0KKyAgICBpZiAoIWRpZENoYW5nZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJkaXNh
YmxlU2VydmljZVdvcmtlcnM6Iik7Ci0gICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gPSB7
IH07CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJkaXNhYmxlV29y
a2VyczogRGlzYWJsaW5nIHdvcmtlcnMgKFNoYXJlZFdvcmtlcnM9JWQsIFNlcnZpY2VXb3JrZXJz
PSVkKSIsIHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSwgd29y
a2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSk7CisKICAgICB1cGRh
dGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwogCisgICAgaWYgKCFpc1J1bm5pbmdX
b3JrZXJzKCkpCisgICAgICAgIHByb2Nlc3NQb29sKCkucmVtb3ZlRnJvbVdvcmtlclByb2Nlc3Nl
cygqdGhpcyk7CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgcHJvY2Vzc1Bvb2wo
KS5yZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcygqdGhpcyk7Ci0gICAgc2VuZChNZXNz
YWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNsb3NlIHsgfSwgMCk7CisgICAg
aWYgKHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikpCisgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9zZSB7
IH0sIDApOwogI2VuZGlmCisgICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6
U2hhcmVkV29ya2VyKSkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9zZSB7IH0sIDApOwogCiAgICAgbWF5YmVTaHV0RG93
bigpOwogfQpAQCAtMjAwNCwxMSArMjA1MywxMyBAQCBzdGF0aWMgVmVjdG9yPHN0ZDo6cGFpcjxX
ZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEsIFVSTD4+IGNvbnRlbnRSdWxlTGlzdHNGcgog
fQogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVTZXJ2aWNlV29ya2Vycyhj
b25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJiB1c2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVdvcmtlcnMoV29ya2Vy
VHlwZSB3b3JrZXJUeXBlLCBjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJiB1
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKQogewotICAgIEFTU0VSVCghbV9zZXJ2aWNl
V29ya2VySW5mb3JtYXRpb24pOwotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2
aWNlV29ya2VyLCAiZW5hYmxlU2VydmljZVdvcmtlcnM6Iik7Ci0gICAgbV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb24gPSBSZW1vdGVXb3JrZXJJbmZvcm1hdGlvbiB7CisgICAgV0VCUFJPQ0VTU1BS
T1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJlbmFibGVXb3JrZXJzOiB3b3JrZXJUeXBl
PSV1Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHdvcmtlclR5cGUpKTsKKyAgICBhdXRvJiB3b3Jr
ZXJJbmZvcm1hdGlvbiA9IHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8g
bV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA6IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOwor
ICAgIEFTU0VSVCghd29ya2VySW5mb3JtYXRpb24pOworCisgICAgd29ya2VySW5mb3JtYXRpb24g
PSBSZW1vdGVXb3JrZXJJbmZvcm1hdGlvbiB7CiAgICAgICAgIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXI6OmdlbmVyYXRlKCksCiAgICAgICAgIFBhZ2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLAogICAg
ICAgICBSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgewpAQCAtMjAyMSw5ICsyMDcyLDgg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVNlcnZpY2VXb3JrZXJzKGNvbnN0IFVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXIKICAgICAgICAgeyB9CiAgICAgfTsKICAgICB1cGRh
dGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwotI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOwotI2VuZGlm
CisKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKHdvcmtlclR5cGUpOwogfQogCiB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlU2xlZXBEaXNhYmxlcihTbGVlcERpc2FibGVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgYm9vbCBkaXNwbGF5
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCBmOGI3OTVi
MWQzNDM1MzVlODA5MmUwMWRiYWIzNzlhZjMzNDYxZGJlLi43MGU4OTA1MWNjYmJjN2U5MDQ2YmMx
Yzk5OGI5MGEwYjY4ZWY2NTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaApAQCAtMTM2LDkgKzEzNiwxMyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIGNsYXNzIFNo
b3VsZExhdW5jaFByb2Nlc3MgOiBib29sIHsgTm8sIFllcyB9OwogICAgIGVudW0gY2xhc3MgQ2Fw
dGl2ZVBvcnRhbE1vZGUgOiBib29sIHsgRGlzYWJsZWQsIEVuYWJsZWQgfTsKKyAgICBlbnVtIGNs
YXNzIFdvcmtlclR5cGUgOiB1aW50MzJfdCB7CisgICAgICAgIFNlcnZpY2VXb3JrZXIgPSAxIDw8
IDAsCisgICAgICAgIFNoYXJlZFdvcmtlciA9IDEgPDwgMQorICAgIH07CiAKICAgICBzdGF0aWMg
UmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sJiwgV2Vic2l0ZURhdGFT
dG9yZSosIENhcHRpdmVQb3J0YWxNb2RlLCBJc1ByZXdhcm1lZCwgV2ViQ29yZTo6Q3Jvc3NPcmln
aW5Nb2RlID0gV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQsIFNob3VsZExhdW5jaFBy
b2Nlc3MgPSBTaG91bGRMYXVuY2hQcm9jZXNzOjpZZXMpOwotICAgIHN0YXRpYyBSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiBjcmVhdGVGb3JTZXJ2aWNlV29ya2VycyhXZWJQcm9jZXNzUG9vbCYsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKKyAgICBzdGF0aWMg
UmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlRm9yV29ya2VycyhXb3JrZXJUeXBlLCBXZWJQcm9j
ZXNzUG9vbCYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdlYnNpdGVEYXRhU3RvcmUm
KTsKIAogICAgIH5XZWJQcm9jZXNzUHJveHkoKTsKIApAQCAtMTYxLDggKzE2NSw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldElzSW5Qcm9jZXNzQ2FjaGUoYm9vbCwgV2lsbFNodXREb3duID0gV2ls
bFNodXREb3duOjpObyk7CiAgICAgYm9vbCBpc0luUHJvY2Vzc0NhY2hlKCkgY29uc3QgeyByZXR1
cm4gbV9pc0luUHJvY2Vzc0NhY2hlOyB9CiAKLSAgICB2b2lkIGVuYWJsZVNlcnZpY2VXb3JrZXJz
KGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImKTsKLSAgICB2b2lkIGRpc2Fi
bGVTZXJ2aWNlV29ya2VycygpOworICAgIHZvaWQgZW5hYmxlV29ya2VycyhXb3JrZXJUeXBlLCBj
b25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJik7CisgICAgdm9pZCBkaXNhYmxl
V29ya2VycyhPcHRpb25TZXQ8V29ya2VyVHlwZT4pOwogCiAgICAgV2Vic2l0ZURhdGFTdG9yZSYg
d2Vic2l0ZURhdGFTdG9yZSgpIGNvbnN0IHsgQVNTRVJUKG1fd2Vic2l0ZURhdGFTdG9yZSk7IHJl
dHVybiAqbV93ZWJzaXRlRGF0YVN0b3JlOyB9CiAgICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3Jl
KFdlYnNpdGVEYXRhU3RvcmUmKTsKQEAgLTE5NCw2ICsxOTgsOSBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkgY29uc3QgeyByZXR1cm4gISFtX3NlcnZpY2VX
b3JrZXJJbmZvcm1hdGlvbjsgfQogICAgIGJvb2wgaXNTdGFuZGFsb25lU2VydmljZVdvcmtlclBy
b2Nlc3MoKSBjb25zdCB7IHJldHVybiBpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpICYmICFwYWdl
Q291bnQoKTsgfQorICAgIGJvb2wgaXNSdW5uaW5nU2hhcmVkV29ya2VycygpIGNvbnN0IHsgcmV0
dXJuICEhbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbjsgfQorICAgIGJvb2wgaXNTdGFuZGFsb25l
U2hhcmVkV29ya2VyUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIGlzUnVubmluZ1NoYXJlZFdvcmtl
cnMoKSAmJiAhcGFnZUNvdW50KCk7IH0KKyAgICBib29sIGlzUnVubmluZ1dvcmtlcnMoKSBjb25z
dCB7IHJldHVybiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIHx8IG1fc2VydmljZVdvcmtlcklu
Zm9ybWF0aW9uOyB9CiAKICAgICBib29sIGlzRHVtbXlQcm9jZXNzUHJveHkoKSBjb25zdDsKIApA
QCAtMzU5LDEyICszNjYsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVBdWRpYmxlTWVk
aWFBc3NlcnRpb25zKCk7CiAKKyAgICB2b2lkIHNldFdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJp
bmcmKTsKKyAgICB2b2lkIHVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYpOworICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dChj
b25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgdXBkYXRlV29ya2Vy
UHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlKTsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAgICAgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJl
bmNlc1N0b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9p
ZCBzZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgdXBk
YXRlU2VydmljZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZSYpOwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHBhZ2VQcm94eUlEKSB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiAm
JiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+cmVtb3RlV29ya2VyUGFnZVByb3h5SUQgPT0g
cGFnZVByb3h5SUQ7IH0KLSAgICB2b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0
aW9uKCk7CiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlBy
b2Nlc3NQcm94eSYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9j
ZXNzKFdlYlByb2Nlc3NQcm94eSYpOwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlckZvcmVncm91
bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdDsKQEAgLTY1Niw2ICs2NjQsNyBAQCBwcml2YXRl
OgogICAgICAgICBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+IGNsaWVudFByb2Nlc3NlczsK
ICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8UmVtb3RlV29ya2VySW5mb3JtYXRpb24+IG1fc2Vy
dmljZVdvcmtlckluZm9ybWF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8UmVtb3RlV29ya2VySW5m
b3JtYXRpb24+IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb247CiAgICAgYm9vbCBtX2hhc1NlcnZp
Y2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyB7IGZhbHNlIH07CiAKICAgICBIYXNoTWFwPFdl
YkNvcmU6OlNsZWVwRGlzYWJsZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
U2xlZXBEaXNhYmxlcj4+IG1fc2xlZXBEaXNhYmxlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwYzdjMzFiYzU1N2I1NWQ1MTcwNWZj
MzlkN2U2NzljOTRjNmEwYWYzLi4xNWU4MTBhNGM5ZjEyZWI5MmJiMmZkMTRkMzk1MGMzMTUxNDQ0
MjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTg4MCw4ICs4ODAsMTAgQEAKIAkJNDYxNEYxMzIyNURFRDg3NTAwNzAwNkU3IC8qIEdQ
VVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZBQzUzMjQyNURFRDgxRTAwM0I1N0VDIC8qIEdQVVByb2Nl
c3NDb25uZWN0aW9uUGFyYW1ldGVycy5oICovOyB9OwogCQk0NjFDQ0NBNTIzMTQ4NUE3MDBCNjU5
QjkgLyogVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzMjM2ODUyMzE0ODMzRjAwQTQ4RkE3IC8qIFVJUmVtb3Rl
T2JqZWN0UmVnaXN0cnkuaCAqLzsgfTsKIAkJNDYxQ0NDQTYyMzE0ODVBQTAwQjY1OUI5IC8qIFdl
YlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjMyMzY4MzIzMTQ4MUVGMDBBNDhGQTcgLyogV2ViUmVtb3RlT2JqZWN0
UmVnaXN0cnkuaCAqLzsgfTsKKwkJNDYxRTFCRjIyNzlBMDExNjAwNkFGNTNCIC8qIFdlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYxRTFCRUYyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICovOyB9OwogCQk0NjNGRDQ4MDFF
Qjk0NTk2MDBBMjk4MkMgLyogV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0ZENDdGMUVCOTQ1ODQwMEEy
OTgyQyAvKiBXS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2M0ZENDgyMUVCOTRFQzAwMEEyOTgyQyAv
KiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0ZENDgxMUVCOTRFQUQwMEEyOTgyQyAvKiBQcm9jZXNzVGVy
bWluYXRpb25SZWFzb24uaCAqLzsgfTsKKwkJNDY1NkY3QkQyN0FDQUE4RDAwQ0IzRDdDIC8qIFdl
YlNoYXJlZFdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY1NkY3QkMyN0FDQUE4MTAwQ0IzRDdDIC8qIFdlYlNoYXJlZFdvcmtlci5oICovOyB9
OwogCQk0NjU5RjI1RjI3NUZGNkIyMDBCQkIzNjkgLyogQ2FwdGl2ZVBvcnRhbE1vZGVPYnNlcnZl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1OUYy
NUUyNzVGRjZCMjAwQkJCMzY5IC8qIENhcHRpdmVQb3J0YWxNb2RlT2JzZXJ2ZXIuaCAqLzsgfTsK
IAkJNDY1RjRFMDYyMzBCMkU5NTAwM0NFREI3IC8qIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjVGNEUw
NTIzMEIyRTdDMDAzQ0VEQjcgLyogU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIuaCAqLzsgfTsK
IAkJNDY1RkE3MjYyNzU3RDkzRDAwNzIzNjJCIC8qIFdlYkxvY2tSZWdpc3RyeVByb3h5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjVGQTcyMzI3NTdE
OTE4MDA3MjM2MkIgLyogV2ViTG9ja1JlZ2lzdHJ5UHJveHkuaCAqLzsgfTsKQEAgLTkwMCwxMCAr
OTAyLDEzIEBACiAJCTQ2QzM5MjI5MjMxNkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVu
dGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NkMzOTIyODIzMTZFQzREMDA4RUVEOUIgLyogV2ViUGFnZVByb3h5SWRlbnRpZmllci5oICovOyB9
OwogCQk0NkM1QjdDRTI3QUFEREQzMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJD
bGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
QzVCN0NEMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJGcmFtZUxvYWRlckNsaWVudC5o
ICovOyB9OwogCQk0NkM1QjdDRjI3QUFEREQ2MDAwQzVCNDcgLyogUmVtb3RlV29ya2VyTGliV2Vi
UlRDUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2QzVCN0NCMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92
aWRlci5oICovOyB9OworCQk0NkM5MTZBQTI3OTlEMEEyMDAxQTRFN0MgLyogV2ViU2hhcmVkV29y
a2VyU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkM5MTZBOTI3OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggKi87
IH07CiAJCTQ2Q0UzQjExMjNEOEM4NDkwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3Vu
dHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Q0Uz
QjEwMjNEOEM4M0QwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCAqLzsgfTsK
KwkJNDZENDhGQ0UyNzk5RDdFMTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2RDQ4RkNEMjc5OUQ3REUwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2REYwNjNDMUYzOTA1RjgwMDE5ODBCQiAv
KiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REYwNjNBMUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXIuaCAqLzsgfTsKIAkJNDZFRTI4NDkyNjlFMDRBQzAwREQ0OEFC
IC8qIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFRTI4NDgyNjlFMDQ5QjAwREQ0OEFCIC8qIFdlYkJy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oICovOyB9OwogCQk0NkVFMjg0RDI2OUUwNTI1MDBERDQ4
QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFRTI4NEMyNjlFMDUxNzAwREQ0OEFCIC8q
IE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCAqLzsgfTsKKwkJNDZFRTNFOEIyNzYz
RkQyRjAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODM4NjY3Mjc2M0ZBQjEw
MENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2
RjM4RThDMjQxNkU2NzMwMDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZGMzhFOEIyNDE2RTY2
RDAwNTkzNzVBIC8qIFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmggKi87IH07CiAJCTQ2RjlCMjYz
MjM1MjZFRjMwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjlCMjYyMjM1MjZFRDAwMDZG
RTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCAqLzsgfTsKIAkJNDkzMTAyQkQyNjgz
RjNEMDAwMkJCODg1IC8qIEFwcFByaXZhY3lSZXBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5MzEwMkJDMjY4M0YzQTUwMDJCQjg4NSAvKiBBcHBQ
cml2YWN5UmVwb3J0LmggKi87IH07CkBAIC00MjIzLDYgKzQyMjgsOSBAQAogCQk0NjA4ODlGRjI2
MUZBOEE5MDBFMjUwMEQgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVy
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0
ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MEY0ODhEMUY5OTZGNkMwMENG
NEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJL
aXQvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk0NjBGNDg4RTFGOTk2RjZDMDBDRjRC
ODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3Nh
Z2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owor
CQk0NjFFMUJFQzI3OUEwMTBFMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ2MUUxQkVGMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MUUxQkYwMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjIxMDdENzFGMzhEQkQzMDBE
RDc4MTAgLyogUGluZ0xvYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUGluZ0xvYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjMyMzY4MzIz
MTQ4MUVGMDBBNDhGQTcgLyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDYzMjM2ODQyMzE0ODI1QzAwQTQ4RkE3IC8qIFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyMzMsNiArNDI0MSw5IEBACiAJCTQ2M0ZENDgxMUVC
OTRFQUQwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NTFFQ0U2MjIxNzhBODUwMDY3RUI5NSAvKiBXZWJQcm9j
ZXNzQ2FjaGVDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYlByb2Nlc3NDYWNoZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjUyNTBFNTFFQ0Y1MkNEMDAyMDI1Q0IgLyogV2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYktpdDJJbml0aWFsaXplQ29j
b2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2NTZGN0JBMjdBQ0FBODAwMENC
M0Q3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2NTZGN0JCMjdBQ0FBODEwMENC
M0Q3QyAvKiBXZWJTaGFyZWRXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVk
V29ya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY1NkY3QkMyN0FDQUE4
MTAwQ0IzRDdDIC8qIFdlYlNoYXJlZFdvcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRX
b3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY1OUYyNUUyNzVGRjZCMjAw
QkJCMzY5IC8qIENhcHRpdmVQb3J0YWxNb2RlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FwdGl2ZVBvcnRhbE1vZGVPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NjVGNEUwMjIzMDc1OUQ1MDAzQ0VEQjcgLyogU3RvcmFnZUFyZWFJ
ZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VBcmVhSWRlbnRpZmllci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjVGNEUwMzIzMDc2MDRFMDAzQ0VEQjcgLyogU3Rv
cmFnZUFyZWFJbXBsSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlQXJlYUltcGxJ
ZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MjU0LDggKzQyNjUs
MTEgQEAKIAkJNDY4MDlBN0IyM0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvb2tpZUNhY2hlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzU2OUEyMUU4MUNDNzAwNkUyN0EzIC8q
IFByb3Zpc2lvbmFsUGFnZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFByb3Zpc2lvbmFsUGFnZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
ODM1NjlCMjFFODFDQzcwMDZFMjdBMyAvKiBQcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm92aXNpb25hbFBhZ2VQcm94eS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2ODM4NjY3Mjc2M0ZBQjEwMENGOTE4MiAv
KiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDY4Mzg2NjgyNzYzRkFCMTAwQ0Y5MTgyIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODlCOTBGMjc1NkQxNDMw
MDA3QzY1MSAvKiBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3Rl
V2ViTG9ja1JlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODlCOTEw
Mjc1NkQxNDMwMDA3QzY1MSAvKiBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDY5NDNEQ0IyNzYzRjgzNDAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5REU4MDIy
NzNFQ0M1RDAwOTMwMjc2IC8qIFByb2Nlc3NMYXVuY2hlckNvY29hLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJvY2Vzc0xhdW5jaGVyQ29jb2EubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QTJCNjA2MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNr
Z3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZBMkI2MDcxRTU2NzVBMjAwQzNERURB
IC8qIEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyNzQsNyArNDI4OCwxMSBAQAogCQk0
NkM1QjdDQjI3QUFEREJFMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDNUI3Q0MyN0FBRERCRTAwMEM1QjQ3IC8qIFJlbW90
ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVdv
cmtlckZyYW1lTG9hZGVyQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDZDNUI3Q0QyN0FBRERCRTAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2QzkxNkE4Mjc5OUQwOUQwMDFBNEU3QyAvKiBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2Vy
U2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZDOTE2QTkyNzk5RDA5
RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDRTNC
MTAyM0Q4QzgzRDAwMTZBOTZBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZENDhGQ0MyNzk5RDdERDAwN0QyMDE0IC8qIFdl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2RDQ4RkNEMjc5OUQ3REUwMDdEMjAxNCAvKiBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDZERjA2MzkxRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJl
ZmxpZ2h0Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBO
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkU5NzYwQTI3NTdG
NkM5MDBBQ0REMzcgLyogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdl
cy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyODQsNiArNDMwMiw3IEBACiAJ
CTQ2RUUyODRBMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lz
dHJ5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5ldHdvcmtCcm9hZGNhc3RD
aGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2RUUyODRCMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lz
dHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtCcm9h
ZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NkVFMjg0QzI2OUUwNTE3MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3Ry
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2RUUzRThBMjc2
M0ZEMkEwMDYwQzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RjM4RThCMjQxNkU2NkQwMDU5Mzc1QSAvKiBS
dW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NkY5QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRy
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTMxMDJCQzI2ODNGM0E1MDAyQkI4
ODUgLyogQXBwUHJpdmFjeVJlcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBQcml2YWN5UmVwb3J0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05Mjk1LDYgKzkzMTQsMjMgQEAKIAkJ
CXBhdGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTQ2ODM4
NjY1Mjc2M0ZBMUIwMENGOTE4MiAvKiBTaGFyZWRXb3JrZXIgKi8gPSB7CisJCQlpc2EgPSBQQlhH
cm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTQ2NTZGN0JCMjdBQ0FBODEwMENCM0Q3QyAvKiBX
ZWJTaGFyZWRXb3JrZXIuY3BwICovLAorCQkJCTQ2NTZGN0JDMjdBQ0FBODEwMENCM0Q3QyAvKiBX
ZWJTaGFyZWRXb3JrZXIuaCAqLywKKwkJCQk0NkM5MTZBODI3OTlEMDlEMDAxQTRFN0MgLyogV2Vi
U2hhcmVkV29ya2VyU2VydmVyLmNwcCAqLywKKwkJCQk0NkM5MTZBOTI3OTlEMDlEMDAxQTRFN0Mg
LyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggKi8sCisJCQkJNDY4Mzg2NjgyNzYzRkFCMTAwQ0Y5
MTgyIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwICovLAorCQkJCTQ2ODM4
NjY3Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgg
Ki8sCisJCQkJNDZFRTNFOEEyNzYzRkQyQTAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCisJCQkJNDZENDhGQ0MyNzk5RDdERDAwN0QyMDE0
IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwICovLAorCQkJ
CTQ2RDQ4RkNEMjc5OUQ3REUwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmggKi8sCisJCQkJNDY1NkY3QkEyN0FDQUE4MDAwQ0IzRDdDIC8qIFdlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCisJCQkp
OworCQkJcGF0aCA9IFNoYXJlZFdvcmtlcjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CiAJCTQ2OURFODAxMjczRUNDNUQwMDkzMDI3NiAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC05MzU5LDYgKzkzOTUsNyBAQAogCQkJCTUx
NDUyNkVBMjcxRTE2MTAwMDA0NjdCNiAvKiBOb3RpZmljYXRpb25zICovLAogCQkJCTVDMDFCQzM1
MjZENDZBRDQwMEZFQjQyRiAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAqLywKIAkJCQk5M0JB
MDREOTIxNTFBRENEMDA3RjQ1NUYgLyogU2VydmljZVdvcmtlciAqLywKKwkJCQk0NjgzODY2NTI3
NjNGQTFCMDBDRjkxODIgLyogU2hhcmVkV29ya2VyICovLAogCQkJCTkzMDg1REMyMjZFMUJCNjUw
MDBFQzZBNyAvKiBzdG9yYWdlICovLAogCQkJCTQxMzA3NTk3MURFODRFRDcwMDM5RUM2OSAvKiB3
ZWJydGMgKi8sCiAJCQkJOTNCMjYxNDMyMjdEMTQzMTAwQjk3QTc2IC8qIFdlYlN0b3JhZ2UgKi8s
CkBAIC05NDYxLDggKzk0OTgsMTIgQEAKIAkJCQk0MTlBQ0Y5QjFGOTgxRDI2MDA5RjFBODMgLyog
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oICovLAogCQkJCTUxQkVCNjI5MUYzQTVB
Q0QwMDUwMjlCOSAvKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwICovLAogCQkJCTUxQkVC
NjJBMUYzQTVBQ0QwMDUwMjlCOSAvKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCAqLywKKwkJ
CQk0NjFFMUJFQzI3OUEwMTBFMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk0NjFFMUJFRjI3OUEwMTBGMDA2QUY1M0IgLyogV2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggKi8sCisJCQkJNDYxRTFCRjAy
NzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbiAqLywKIAkJCQk0NjY4QTBCQjI3QUI2MDQwMDBDNzIwQkMgLyogV2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJNDY2OEEwQjgyN0FCNjAzRjAw
QzcyMEJDIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAqLywKKwkJCQk0Njk0
M0RDQjI3NjNGODM0MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5t
ZXNzYWdlcy5pbiAqLywKIAkJCQk0NjY4QTBCOTI3QUI2MDNGMDBDNzIwQkMgLyogV2ViU2hhcmVk
V29ya2VyUHJvdmlkZXIuY3BwICovLAogCQkJCTQ2NjhBMEJBMjdBQjYwNDAwMEM3MjBCQyAvKiBX
ZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oICovLAogCQkJCTUxN0E1MzAzMUY0NzkzQjIwMERDREMw
QSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwICovLApAQCAtMTM2NTgsOCArMTM2OTksMTMg
QEAKIAkJCQk3QzM2MUQ3MzE5MjdGQTM2MDAzNkE1OUQgLyogV2ViU2NyaXB0TWVzc2FnZUhhbmRs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUQzQjk0ODQ5MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJT
ZWFyY2hQb3B1cE1lbnUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQkVCNjJDMUYzQTVBRDcwMDUw
MjlCOSAvKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2
NTZGN0JEMjdBQ0FBOEQwMENCM0Q3QyAvKiBXZWJTaGFyZWRXb3JrZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTQ2MUUxQkYyMjc5QTAxMTYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2NjhBMEJEMjdBQjYwNTYw
MEM3MjBCQyAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0NjY4QTBCQzI3QUI2MDUwMDBDNzIwQkMgLyogV2ViU2hhcmVkV29ya2VyUHJvdmlk
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2QzkxNkFBMjc5OUQwQTIwMDFBNEU3QyAvKiBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2RUUzRThCMjc2M0ZEMkYw
MDYwQzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAq
LywKKwkJCQk0NkQ0OEZDRTI3OTlEN0UxMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM4REQzODAxRkU0NTIx
NjAwRjJBNTU2IC8qIFdlYnNpdGVBdXRvcGxheVBvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUE0ODMyRDcxQTlDREY5NjAwOEI0REZFIC8qIFdlYnNpdGVEYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTQ4MzJEMTFBOUJEQzJGMDA4QjRERkUgLyogV2Vic2l0ZURhdGFSZWNvcmQuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggODFkZDA0MTFhMjM5NmJj
NWUyMzQ1NWI5ZjViNTllNzM0NjFlZTk2Zi4uYmIzNTQ3ZjQ2YWQ0YjhhNWMyMDUyZDA4MmNhNjc1
NGIxMjkxZmY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC01Nyw3ICs1NywxMCBA
QAogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAi
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNl
cnZpY2VXb3JrZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25N
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIKICNpbmNsdWRlICJXZWJT
b2NrZXRDaGFubmVsTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRTdHJlYW0uaCIKQEAg
LTE3NCw2ICsxNzcsMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVAKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICNlbmRpZgorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpKSB7CisgICAgICAgIHNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKS5kaWRSZWNlaXZl
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7
CisgICAgICAgIEFTU0VSVChTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCku
Y29ubmVjdGlvbigpKTsKKyAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
biA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkp
CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24mPigqY29udGV4dE1hbmFnZXJDb25uZWN0aW9uKS5kaWRSZWNlaXZlTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogI2lmIEVOQUJM
RShBUFBMRV9QQVlfUkVNT1RFX1VJKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggZWRjMDQ5M2JkM2VkZGZhMTY5MDBi
ZGI4NTkxNGM2NGM1OTc4OTE4MC4uMGI2NDgwYTYxZDM2Y2ZlMDQ3OWI0Y2Y0MDFkNDVkZjQzODMw
YjM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgZW51bSBjbGFz
cyBIVFRQQ29va2llQWNjZXB0UG9saWN5IDogdWludDhfdDsKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uOwogY2xhc3MgV2ViU1dDbGllbnRDb25uZWN0aW9uOwogY2xhc3MgV2Vi
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQzMDY0NzY2NWZhNjUw
OGE1ZWM3MDA2NzNiYmI3NDQyZDNiNjhmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHAKQEAgLTAsMCArMSwxMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgi
CisKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiUmVtb3RlV29ya2Vy
RnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92
aWRlci5oIgorI2luY2x1ZGUgIldlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIgorI2luY2x1
ZGUgIldlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250
ZW50UnVsZUxpc3REYXRhLmgiCisjaW5jbHVkZSAiV2ViRGF0YWJhc2VQcm92aWRlci5oIgorI2lu
Y2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc0tleXMuaCIKKyNpbmNs
dWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0UHJvdmlkZXIuaCIK
KyNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0VtcHR5Q2xpZW50cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZUNvbmZpZ3VyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVXNlckFnZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9Xb3JrZXJGZXRjaFJlc3VsdC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcywgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwg
UGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3
ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJiBwcmVmZXJlbmNlc1N0b3JlLCBSZW1vdGVXb3JrZXJJbml0aWFsaXph
dGlvbkRhdGEmJiBpbml0aWFsaXphdGlvbkRhdGEpCisgICAgOiBtX2Nvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKFdURk1vdmUoY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpKQorICAgICwgbV9y
ZWdpc3RyYWJsZURvbWFpbihXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAsIG1fcGFn
ZUdyb3VwSUQocGFnZUdyb3VwSUQpCisgICAgLCBtX3dlYlBhZ2VQcm94eUlEKHdlYlBhZ2VQcm94
eUlEKQorICAgICwgbV9wYWdlSUQocGFnZUlEKQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICwg
bV91c2VyQWdlbnQoV2ViQ29yZTo6c3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1l
KHsgfSkpCisjZWxzZQorICAgICwgbV91c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkKKyNl
bmRpZgorICAgICwgbV91c2VyQ29udGVudENvbnRyb2xsZXIoV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpnZXRPckNyZWF0ZShpbml0aWFsaXphdGlvbkRhdGEudXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllcikpCit7CisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBtX3Vz
ZXJDb250ZW50Q29udHJvbGxlci0+YWRkQ29udGVudFJ1bGVMaXN0cyhXVEZNb3ZlKGluaXRpYWxp
emF0aW9uRGF0YS5jb250ZW50UnVsZUxpc3RzKSk7CisjZW5kaWYKKworICAgIHVwZGF0ZVByZWZl
cmVuY2VzU3RvcmUocHJlZmVyZW5jZXNTdG9yZSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZGlzYWJsZVRlcm1pbmF0aW9uKCk7Cit9CisKK1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbigp
ID0gZGVmYXVsdDsKKwordm9pZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OmVzdGFibGlzaENvbm5lY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVz
dGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uIHsgbV93ZWJQYWdlUHJveHlJRCwg
bV9yZWdpc3RyYWJsZURvbWFpbiB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgMCk7Cit9
CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0RXhj
ZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFy
ZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAg
IG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVj
dCB7IHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCBzb3VyY2VVUkwgfSwgMCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjp1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQoreworICAgIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2Vz
R2VuZXJhdGVkKHN0b3JlKTsKKyAgICBtX3ByZWZlcmVuY2VzU3RvcmUgPSBzdG9yZTsKK30KKwor
dm9pZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmxhdW5jaFNoYXJl
ZFdvcmtlcihXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdv
cmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgVVJMJiYgdXJsLCBXZWJDb3Jl
OjpXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucywgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1
bHQmJiB3b3JrZXJGZXRjaFJlc3VsdCkKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIs
ICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmxhdW5jaFNoYXJlZFdv
cmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50
aWZpZXIudG9VSW50NjQoKSk7CisgICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9IFdlYkNvcmU6
OnBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cyhXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5zZXNzaW9uSUQoKSk7CisKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5kYXRhYmFzZVByb3ZpZGVy
ID0gV2ViRGF0YWJhc2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUobV9wYWdlR3JvdXBJRCk7CisgICAg
cGFnZUNvbmZpZ3VyYXRpb24uc29ja2V0UHJvdmlkZXIgPSBXZWJTb2NrZXRQcm92aWRlcjo6Y3Jl
YXRlKG1fd2ViUGFnZVByb3h5SUQpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLmJyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmJyb2FkY2FzdENoYW5uZWxS
ZWdpc3RyeSgpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLndlYkxvY2tSZWdpc3RyeSA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvY2tSZWdpc3RyeSgpOworICAgIHBhZ2VDb25maWd1cmF0
aW9uLnVzZXJDb250ZW50UHJvdmlkZXIgPSBtX3VzZXJDb250ZW50Q29udHJvbGxlcjsKKyNpZiBF
TkFCTEUoV0VCX1JUQykKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5saWJXZWJSVENQcm92aWRlciA9
IG1ha2VVbmlxdWVSZWY8UmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXI+KCk7CisjZW5kaWYK
KworICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSA9IG1ha2VV
bmlxdWVSZWY8UmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ+KG1fd2ViUGFnZVByb3h5SUQs
IG1fcGFnZUlELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI6OmdlbmVyYXRlKCksIG1fdXNlckFn
ZW50KTsKKworICAgIGF1dG8gcGFnZSA9IG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6UGFnZT4oV1RG
TW92ZShwYWdlQ29uZmlndXJhdGlvbikpOworICAgIGlmIChtX3ByZWZlcmVuY2VzU3RvcmUpIHsK
KyAgICAgICAgV2ViUGFnZTo6dXBkYXRlU2V0dGluZ3NHZW5lcmF0ZWQoKm1fcHJlZmVyZW5jZXNT
dG9yZSwgcGFnZS0+c2V0dGluZ3MoKSk7CisgICAgICAgIHBhZ2UtPnNldHRpbmdzKCkuc2V0U3Rv
cmFnZUJsb2NraW5nUG9saWN5KHN0YXRpY19jYXN0PFdlYkNvcmU6OlN0b3JhZ2VCbG9ja2luZ1Bv
bGljeT4obV9wcmVmZXJlbmNlc1N0b3JlLT5nZXRVSW50MzJWYWx1ZUZvcktleShXZWJQcmVmZXJl
bmNlc0tleTo6c3RvcmFnZUJsb2NraW5nUG9saWN5S2V5KCkpKSk7CisgICAgfQorICAgIHBhZ2Ut
PnNldHVwRm9yUmVtb3RlV29ya2VyKHVybCwgb3JpZ2luLnRvcE9yaWdpbiwgd29ya2VyRmV0Y2hS
ZXN1bHQucmVmZXJyZXJQb2xpY3kpOworICAgIGF1dG8gc2hhcmVkV29ya2VyVGhyZWFkUHJveHkg
PSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlKFdURk1vdmUocGFnZSks
IHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIG9yaWdpbiwgdXJsLCBXVEZNb3ZlKHdvcmtlckZldGNo
UmVzdWx0KSwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSwgbV91c2VyQWdlbnQsIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFnZVByb3ZpZGVyKCkpOworCisgICAgV2ViQ29yZTo6U2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnJlZ2lzdGVyU2hhcmVkV29ya2Vy
VGhyZWFkKFdURk1vdmUoc2hhcmVkV29ya2VyVGhyZWFkUHJveHkpKTsKK30KKwordm9pZCBXZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmNsb3NlKCkKK3sKKyAgICBSRUxF
QVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OmNsb3NlOiBTaGFyZWQgd29ya2VyIHByb2Nlc3MgaXMgcmVxdWVzdGVkIHRvIHN0b3Ag
YWxsIHNoYXJlZCB3b3JrZXJzIik7CisgICAgc2V0QXNDbG9zZWQoKTsKKworICAgIG1fY29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpDbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uIHsgfSwgMCk7Cisg
ICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnN0b3BB
bGxTaGFyZWRXb3JrZXJzKCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5hYmxlVGVy
bWluYXRpb24oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhY2ZkMGM0MTI5
MWQ1N2U3NGIwNmZlZGM2OTViZmFmMTA5NWRiYmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uaApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiSWRlbnRpZmllclR5cGVzLmgiCisj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRp
Zmllci5oIgorI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFp
bi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworc3RydWN0IENsaWVudE9yaWdpbjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsK
K3N0cnVjdCBXb3JrZXJPcHRpb25zOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOworc3RydWN0IFJlbW90ZVdvcmtlckluaXRpYWxpemF0
aW9uRGF0YTsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpDb25u
ZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIFdlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYm
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQYWdlR3JvdXBJZGVudGlmaWVyLCBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYsIFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmKTsKKyAgICB+
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKCk7CisKKyAgICB2b2lkIGVz
dGFibGlzaENvbm5lY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKKyAg
ICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSBmaW5hbDsKKworICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmlu
YWw7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDIE1lc3NhZ2VzLgorICAgIHZvaWQgbGF1bmNoU2hh
cmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmLCBXZWJDb3JlOjpXb3Jr
ZXJGZXRjaFJlc3VsdCYmKTsKKyAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZSYpOworICAgIHZvaWQgc2V0VXNlckFnZW50KFN0cmluZyYmIHVz
ZXJBZ2VudCkgeyBtX3VzZXJBZ2VudCA9IFdURk1vdmUodXNlckFnZW50KTsgfQorICAgIHZvaWQg
Y2xvc2UoKTsKKworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3M7CisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURv
bWFpbjsKKyAgICBQYWdlR3JvdXBJZGVudGlmaWVyIG1fcGFnZUdyb3VwSUQ7CisgICAgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciBtX3dlYlBhZ2VQcm94eUlEOworICAgIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIG1fcGFnZUlEOworICAgIFN0cmluZyBtX3VzZXJBZ2VudDsKKyAgICBSZWY8V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyPiBtX3VzZXJDb250ZW50Q29udHJvbGxlcjsKKyAgICBzdGQ6Om9w
dGlvbmFsPFdlYlByZWZlcmVuY2VzU3RvcmU+IG1fcHJlZmVyZW5jZXNTdG9yZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4MmE0YWRhNTNm
ZDRiZWIxYzVlZWUxZjdhYmE2MjJmM2ZkNWIxZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMCBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CisgICAgTGF1bmNoU2hhcmVkV29ya2Vy
KHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFVSTCB1cmwsIHN0cnVjdCBXZWJD
b3JlOjpXb3JrZXJPcHRpb25zIHdvcmtlck9wdGlvbnMsIHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJG
ZXRjaFJlc3VsdCB3b3JrZXJGZXRjaFJlc3VsdCkKKyAgICBQb3N0Q29ubmVjdEV2ZW50KFdlYkNv
cmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgV2ViQ29y
ZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBwb3J0LCBTdHJpbmcgc291cmNlT3JpZ2luKQorICAg
IFRlcm1pbmF0ZVNoYXJlZFdvcmtlcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNo
YXJlZFdvcmtlcklkZW50aWZpZXIpCisgICAgVXBkYXRlUHJlZmVyZW5jZXNTdG9yZShzdHJ1Y3Qg
V2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlKQorICAgIFNldFVzZXJBZ2VudChTdHJp
bmcgdXNlckFnZW50KQorICAgIENsb3NlKCkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbi5jcHAKaW5kZXggNWM1ZmRhYTYwMDU3OTY3YzY1YzAzMmYwNDI1ZmQ5MTU5MzMxOGYz
Yi4uNWRkYmRlNDRhOTZiMTVjYzM2NzE5MGQ4YWNkMTc3MzEzMjk0NWJkZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKQEAgLTI2LDIzICsyNiw0NSBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24u
aCIKIAorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9TaGFy
ZWRXb3JrZXJNYW5hZ2VyLmg+CisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyS2V5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9X
b3JrZXJPcHRpb25zLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCkgPSBkZWZh
dWx0OworI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xP
RyhTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQgIl0g
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsIFdlYkNvcmU6OlBy
b2Nlc3M6OmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQorCitXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
KCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJXZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uOiIpOworfQorCitXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjp+V2Vi
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNF
X0xPRygifldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Iik7Cit9CiAKIElQQzo6Q29u
bmVjdGlvbiogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24oKSBjb25zdAogewogICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwogfQogCi12b2lk
IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnJlcXVlc3RTaGFyZWRXb3JrZXIoY29u
c3QgVVJMJiB1cmwsIFdlYkNvcmU6OlNoYXJlZFdvcmtlciYgc2hhcmVkV29ya2VyLCBXZWJDb3Jl
OjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgcG9ydCwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYm
IHdvcmtlck9wdGlvbnMpCit2b2lkIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnJl
cXVlc3RTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBzaGFyZWRX
b3JrZXJLZXksIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBv
cnQsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMpCiB7Ci0gICAg
Ly8gRklYTUU6IFNob3VsZCBzZW5kIElQQyB0byB0aGUgbmV0d29yayBwcm9jZXNzLgotICAgIFdl
YkNvcmU6OlNoYXJlZFdvcmtlck1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3QodXJsLCBzaGFy
ZWRXb3JrZXIsIFdURk1vdmUocG9ydCksIFdURk1vdmUod29ya2VyT3B0aW9ucykpOworICAgIENP
Tk5FQ1RJT05fUkVMRUFTRV9MT0coInJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIu
dG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpSZXF1ZXN0U2hhcmVkV29ya2VyIHsgc2hhcmVkV29ya2Vy
S2V5LCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXVEZNb3ZlKHBvcnQpLCB3b3JrZXJP
cHRpb25zIH0pOwogfQogCit2b2lkIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnNo
YXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktl
eSYgc2hhcmVkV29ya2VyS2V5LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNF
X0xPRygic2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXk6IHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uOjpTaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheSB7IHNoYXJlZFdv
cmtlcktleSwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciB9KTsKK30KKworI3VuZGVmIENP
Tk5FQ1RJT05fUkVMRUFTRV9MT0cKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uLmgKaW5kZXggNjFlZTVhZjQyNGRjMDMzN2Y2MmNmNzE5MzJh
MTViYjk1NWU2ZGNkMi4uNDc4MTkzZWY3ZGRhZjA2MWQ2ZWI1MjhlZGY5M2RiYzQxMTdhMzIzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApAQCAtMjUsMjAgKzI1LDI1IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CitjbGFzcyBXZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24sIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJs
aWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKTsgfQorICAgIH5XZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uKCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIFdlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKTsKIAogICAgIC8vIFdlYkNvcmU6OlNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uCi0gICAgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0
IFVSTCYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlciYsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2Fn
ZVBvcnQmJiwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVl
c3RTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiwgV2ViQ29yZTo6
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdl
UG9ydCYmLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJikgZmluYWw7CisgICAgdm9pZCBz
aGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJL
ZXkmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKSBmaW5hbDsKIAogICAg
IC8vIElQQzo6TWVzc2FnZVNlbmRlci4KICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5k
ZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjJhZTFhMzJjOTM5NTNkOTVl
OGVhZjhjNTgxMDIyNzBiNTI1N2YxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdl
cy5pbgpAQCAtMCwwICsxLDI3IEBACisjIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisj
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKK21lc3NhZ2VzIC0+IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24geworICAg
IEZldGNoU2NyaXB0SW5DbGllbnQoVVJMIHVybCwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6
V29ya2VyT3B0aW9ucyB3b3JrZXJPcHRpb25zKSAtPiAoc3RydWN0IFdlYkNvcmU6OldvcmtlckZl
dGNoUmVzdWx0IGZldGNoUmVzdWx0KSBBc3luYworICAgIE5vdGlmeVdvcmtlck9iamVjdE9mTG9h
ZENvbXBsZXRpb24oV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQorICAg
IFBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFN0cmluZyBlcnJvck1lc3Nh
Z2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTdHJpbmcgc291cmNlVVJMKQor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGRkOGQ1ODFhYzVi
MjRkNWQ5NDA2MmI5YzY1YzI0MmYwYzUxZWM5ODQuLmRkNDViNDU4OGJmOWRkMTI0ZTE4ZmFhOTVh
MzI2ZWQzMTkzMWE0NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
QEAgLTg0LDYgKzg0LDggQEAKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNo
YXJlZFdvcmtlclByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFtLmgiCiAjaW5j
bHVkZSAiV2Vic2l0ZURhdGEuaCIKQEAgLTEzNCw2ICsxMzYsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2Vy
R2VzdHVyZUluZGljYXRvci5oPgogI2luY2x1ZGUgPHBhbC9Mb2dnaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL0FsZ29yaXRobXMuaD4KQEAgLTkwNCw3ICs5MDcsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OmRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVy
JiBkZQogICAgIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICAvLyBGSVhNRTog
UmVtb3ZlPwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdl
czo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkg
ewogICAgICAgICBBU1NFUlQoU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlv
bigpKTsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiA9IFNXQ29u
dGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKQEAgLTkxMyw2ICs5MTUsMTMg
QEAgdm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGUKICAgICB9CiAjZW5kaWYKIAorICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAg
QVNTRVJUKFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9u
KCkpOworICAgICAgICBpZiAoYXV0byogY29udGV4dE1hbmFnZXJDb25uZWN0aW9uID0gU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAg
ICAgIHN0YXRpY19jYXN0PFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiY+
KCpjb250ZXh0TWFuYWdlckNvbm5lY3Rpb24pLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgTE9HX0VSUk9SKCJVbmhh
bmRsZWQgd2ViIHByb2Nlc3MgbWVzc2FnZSAnJXMnIChkZXN0aW5hdGlvbjogJSIgUFJJdTY0ICIg
cGlkOiAlZCkiLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpLCBkZWNvZGVyLmRl
c3RpbmF0aW9uSUQoKSwgc3RhdGljX2Nhc3Q8aW50PihnZXRDdXJyZW50UHJvY2Vzc0lEKCkpKTsK
IH0KIApAQCAtMTkxOSw2ICsxOTI4LDE2IEBAIExpYldlYlJUQ05ldHdvcmsmIFdlYlByb2Nlc3M6
OmxpYldlYlJUQ05ldHdvcmsoKQogICAgIHJldHVybiAqbV9saWJXZWJSVENOZXR3b3JrOwogfQog
Cit2b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNv
bnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lz
dHJhYmxlRG9tYWluLCBSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXph
dGlvbkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICAvLyBXZSBhcmUgaW4gdGhlIFNoYXJlZCBXb3JrZXIgY29udGV4dCBwcm9jZXNzIGFu
ZCB0aGUgY2FsbCBiZWxvdyBlc3RhYmxpc2hlcyBvdXIgY29ubmVjdGlvbiB0byB0aGUgTmV0d29y
ayBQcm9jZXNzCisgICAgLy8gYnkgY2FsbGluZyBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0aGUgc2FtZSB1bmRl
cmx5aW5nIElQQzo6Q29ubmVjdGlvbiBhcyB0aGUKKyAgICAvLyBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24gZm9yIHN5bmNocm9uaXphdGlvbiBwdXJwb3Nlcy4KKyAgICBhdXRvJiBpcGNDb25uZWN0
aW9uID0gZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworICAg
IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDb25uZWN0aW9uKG1h
a2VVbmlxdWU8V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uPihpcGNDb25u
ZWN0aW9uLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgcGFnZUdyb3VwSUQsIHdlYlBhZ2VQ
cm94eUlELCBwYWdlSUQsIHN0b3JlLCBXVEZNb3ZlKGluaXRpYWxpemF0aW9uRGF0YSkpKTsKKyAg
ICBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpLT5l
c3RhYmxpc2hDb25uZWN0aW9uKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2Vydmlj
ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlm
aWVyIHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBS
ZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIs
IFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmIGluaXRpYWxpemF0aW9uRGF0YSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggMDNmYzBjNzFkN2MzYTdkOTdkNWJkZGM2YmFi
ZmRmMDhiNDY2OWYyNS4uNDIzZGVmZjJhZjViYzQyZTc1NDgyM2VjNmI4YzBmMDAxMGNhMDI2MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC00NzEsNiArNDcxLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGdhbWVwYWREaXNjb25uZWN0ZWQodW5zaWduZWQgaW5kZXgpOwog
I2VuZGlmCiAKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlm
aWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9u
RGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRp
ZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZp
ZXIsIFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCmluZGV4IDNiYzQ3MzE5ZTM2ZDAwNjMxOThiYmJmOTY2OGQwNjlhYWRj
ZGUzNzcuLmY1ZTczNmVkMzQ3ZjI3MWFkZWM3YzQ1ZDAzZmQ4M2RiYjBiYTliZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMDAs
NiArMTAwLDggQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciBOb3RSZWZD
b3VudGVkIHsKICAgICBHYW1lcGFkRGlzY29ubmVjdGVkKHVuc2lnbmVkIGluZGV4KQogI2VuZGlm
CiAKKyAgICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJLaXQ6Oldl
YlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVXb3Jr
ZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRhKSAtPiAoKSBBc3luYworCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIEVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJZGVudGlmaWVy
IHBhZ2VHcm91cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5
SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJl
ZmVyZW5jZXNTdG9yZSBzdG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBz
ZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlJlbW90ZVdvcmtlcklu
aXRpYWxpemF0aW9uRGF0YSBpbml0aWFsaXphdGlvbkRhdGEpIC0+ICgpIEFzeW5jCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiNTQ2YTczNjQ0NTI1ZDEzY2VkOGIyZTZjNDYwYzE5MmFjMjFkZTU5Li43ZGIzNDkx
MzBlMTUzMDk0ZDVkOGI3NmIxYmEyNWU3ZWU3ODViZTdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAK
KzIwMjItMDItMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgc3VwcG9ydCBmb3Igc2hhcmluZyBTaGFyZWQgV29ya2VycyAoaW5jbHVkaW5nIGFjcm9zcyBX
ZWJQcm9jZXNzZXMpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzU5NTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg4MzMwNjY2PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlYmFzZWxpbmUgZXhpc3Rp
bmcgV1BUIHRlc3RzIGludm9sdmluZyBzaGFyZWQgd29ya2Vycy4KKworICAgICAgICAqIFRlc3RF
eHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hh
cmVkd29ya2VyLWNvbm5lY3Qtc3JjLnN1Yi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50
LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1yZXBvcnQtb25seS5z
dWItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGstd2syL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRl
LXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWItZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1l
eHBlY3RlZC50eHQ6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJs
LndpbmRvdy1leHBlY3RlZC50eHQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWlt
cG9ydC1kYXRhLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQt
d29ya2VyLWltcG9ydC1kYXRhLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0LgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21v
ZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4dDogQ29waWVkIGZy
b20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21v
ZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4dC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1jcmVkZW50aWFscy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4
cGVjdGVkLnR4dDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4
cGVjdGVkLnR4dC4KKwogMjAyMi0wMi0wNCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+
CiAKICAgICAgICAgR3JhZGllbnRzIGRvbid0IGNvcnJlY3RseSBpbnRlcnBvbGF0ZSBtaXNzaW5n
L25vbmUgY29sb3IgY29tcG9uZW50cyBjb3JyZWN0bHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nCmluZGV4IGYzNTY2ZWI4NDBhYzBkMWZhNThmMWVmMjMyMjIzNzZjZDZmY2FiYmEuLjMwZDJl
NzViNDI2MjliYjljZDVkYmRjMmU3MmYzMmRiMjJlOThiMzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIyLTAyLTA0ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNoYXJpbmcgU2hhcmVk
IFdvcmtlcnMgKGluY2x1ZGluZyBhY3Jvc3MgV2ViUHJvY2Vzc2VzKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1OTU4CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS84ODMzMDY2Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZWJhc2VsaW5lIGV4aXN0aW5nIFdQVCB0ZXN0cyBpbnZvbHZpbmcgc2hhcmVk
IHdvcmtlcnMuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0
eS1wb2xpY3kvY29ubmVjdC1zcmMvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1hbGxvd2VkLnN1
Yi1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3JrZXItY29ubmVjdC1zcmMtYmxvY2tl
ZC5zdWItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50
LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1yZXBvcnQtb25seS5z
dWItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1zY3JpcHQtc3JjLnN1Yi1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJp
dHktcG9saWN5L3NjcmlwdC1zcmMvd29ya2VyLXNldC10aW1lb3V0LnN1Yi1leHBlY3RlZC50eHQ6
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBj
YWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9j
cm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5odHRwcy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGlj
eS9zaGFyZWQtd29ya2Vycy5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS93b3JrZXItaW5oZXJp
dGFuY2Uuc3ViLmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2NsYWltLXNoYXJlZC13b3JrZXItZmV0
Y2guaHR0cHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJs
LndpbmRvdy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMv
c2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LXJlZmVycmVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29y
a2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwNC1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211
bHRpcGxlLXdvcmtlcnMvMDA4LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2Vy
LW5hbWUtdmlhLW9wdGlvbnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1taXNtYXRjaC1leHBlY3RlZC50eHQ6
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNo
YXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0OgorCiAyMDIyLTAyLTA0ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgbGFuZCBtaXNzaW5n
IGJhc2VsaW5lIGZvciBTaGFyZWQgV29ya2VyIHRlc3QuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBh
ZDk3MDI5MGM0MzhhZGZjZDQ0NDZkYWY3MjdmM2ZkNTk0M2M0YzI0Li40YTJiNmJjYTkyZGQ5MGRl
ZmNmNmFiNGQyOWEzZTA5MjE3OTcxZmJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQ1OSw3ICs0
NTksNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1sb2Nrcy9zdGVhbC50
ZW50YXRpdmUuaHR0cHMuYW55Lmh0bWwgWyBEdW1wSgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hbmFseXNlcm5vZGUtaW50ZXJmYWNl
L3Rlc3QtYW5hbHlzZXItbWluaW11bS5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0K
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90
aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUtZGlzY29ubmVjdC1hdWRpb3BhcmFtLmh0
bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL3NhbWUtb3JpZ2luLWNoZWNrLnN1Yi5odG1sIFsgRHVtcEpTQ29uc29s
ZUxvZ0luU3RkRXJyIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9z
aGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMuaHRtbCBbIER1bXBKU0NvbnNvbGVMb2dJblN0
ZEVyciBdCiBmYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWJhY2stZm9yd2FyZC1jYWNoZS5odG1sIFsg
RHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGZhc3QvaGlzdG9yeS9wYWdlLWNhY2hlLWNyZWF0
ZUltYWdlQml0bWFwLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQogaHR0cC90ZXN0
cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLWluLWxvYWRpbmctaWZyYW1lLmh0bWwgWyBEdW1w
SlNDb25zb2xlTG9nSW5TdGRFcnIgXQpAQCAtODQ5LDYgKzg0OCw3IEBAIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdXNlci10aW1pbmcvbWFyay5odG1sIFsgRmFpbHVyZSBQYXNzIF0K
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdXNlci10aW1pbmcvbWVhc3VyZV9hc3Nv
Y2lhdGVkX3dpdGhfbmF2aWdhdGlvbl90aW1pbmcuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zeXN0ZW0tc3RhdGUt
YW5kLWNhcGFiaWxpdGllcy90aGUtbmF2aWdhdG9yLW9iamVjdC9wbHVnaW5zLWFuZC1taW1ldHlw
ZXMuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2JlYWNvbi9iZWFjb24tcmVkaXJlY3Quc3ViLndpbmRvdy5odG1sIFsgRmFpbHVyZSBQYXNzIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRk
ZXItcG9saWN5L2Fub255bW91cy1pZnJhbWUvc2hhcmVkd29ya2VyLXBhcnRpdGlvbmluZy50ZW50
YXRpdmUuaHR0cHMud2luZG93Lmh0bWwgWyBGYWlsdXJlIFBhc3MgXQogCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2RvY3VtZW50LW1ldGFkYXRhL3RoZS1s
aW5rLWVsZW1lbnQvbGluay1sb2FkLWVycm9yLWV2ZW50cy5odG1sIFsgRHVtcEpTQ29uc29sZUxv
Z0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZG9jdW1lbnQtbWV0YWRhdGEvdGhlLWxpbmstZWxlbWVudC9saW5rLWxvYWQtZXJyb3ItZXZl
bnRzLmh0dHBzLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQpAQCAtNTEzMSw2ICs1
MTMxLDEwIEBAIHdlYmtpdC5vcmcvYi8yMzQ5NzcgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9mb2N1cy1lCiAjIFRlc3QgaXMgY3Jhc2hpbmcgc2lu
Y2UgaW1wb3J0LgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVs
ZXMvZGVkaWNhdGVkLXdvcmtlci1pbXBvcnQtY3NwLmh0bWwgWyBTa2lwIF0KIAorIyBUZXN0IGlz
IGZsYWt5IGJlY2F1c2UgTWVzc2FnZVBvcnQgbWVzc2FnZXMgbWF5IGdldCByZWNlaXZlZCBpbiBh
IGRpZmZlcmVudCBvcmRlciB3aGVuIHNldmVyYWwgTWVzc2FnZVBvcnRzIGFyZSBpbnZvbHZlZCwK
KyMgZHVlIHRvIGhvdyBNZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpIGlzIGltcGxlbWVu
dGVkLgoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3Jr
ZXItbmFtZS12aWEtb3B0aW9ucy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIEZhaWx1
cmUgUGFzcyBdCisKICMgUGx1Z2lucwogIyBGSVhNRTogUmVtb3ZlIHRoZXNlIHRlc3RzLgogcGx1
Z2lucy8gWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvY29ubmVjdC1zcmMvc2hhcmVk
LXdvcmtlci1jb25uZWN0LXNyYy1hbGxvd2VkLnN1Yi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3JrZXItY29ubmVjdC1zcmMtYWxsb3dlZC5zdWItZXhwZWN0
ZWQudHh0CmluZGV4IGUyODM5NWVkODNjNjY0YjJjYTYwZDVkYTg3YmNmZjBlMDM5OWQ1MDEuLjM4
MmI5NTY5NWJjYjA1ZDUyY2UwZWNhMjA4YTg4MDY3YTgzZTE3NDcgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvY29ubmVjdC1zcmMvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1hbGxvd2VkLnN1Yi1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9zaGFyZWQtd29ya2VyLWNv
bm5lY3Qtc3JjLWFsbG93ZWQuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJsb2Nr
ZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwOi8vd3d3MS5sb2NhbGhvc3Q6ODgwMC9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9zdXBwb3J0L2ZhaWwuYXNpcwogCiBGQUlMIEV4cGVjdGluZyBs
b2dzOiBbInhociBhbGxvd2VkIiwiVEVTVCBDT01QTEVURSJdIGFzc2VydF91bnJlYWNoZWQ6IHVu
ZXhwZWN0ZWQgbG9nOiB4aHIgYmxvY2tlZCBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9zaGFyZWQtd29ya2VyLWNvbm5lY3Qtc3Jj
LWJsb2NrZWQuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvY29ubmVjdC1zcmMvc2hhcmVk
LXdvcmtlci1jb25uZWN0LXNyYy1ibG9ja2VkLnN1Yi1leHBlY3RlZC50eHQKaW5kZXggZjQ5MGVh
NzcxMmZlODFjNzc0MWRkZTA0MTU0NTc1Mjk1MTc2ZmY1My4uNWU5NzFlMjBmNGJiOTI2M2EzMTg0
ZTMwOGNkYzdjNDk0MDZjNDhjOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9z
aGFyZWQtd29ya2VyLWNvbm5lY3Qtc3JjLWJsb2NrZWQuc3ViLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJp
dHktcG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3JrZXItY29ubmVjdC1zcmMtYmxvY2tlZC5z
dWItZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJu
YWwgVVJMIGh0dHA6Ly93d3cxLmxvY2FsaG9zdDo4ODAwL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L3N1cHBvcnQvZmFpbC5hc2lzCiBUaGlzIHRlc3QgbG9hZHMgYSBzaGFyZWQgd29ya2VyLCBkZWxp
dmVyZWQgd2l0aCBpdHMgb3duIHBvbGljeS4gVGhlIHdvcmtlciBzaG91bGQgYmUgYmxvY2tlZCBm
cm9tIG1ha2luZyBhbiBYSFIgYXMgdGhhdCBwb2xpY3kgc3BlY2lmaWVzIGEgY29ubmVjdC1zcmMg
J25vbmUnLCB0aG91Z2ggdGhpcyByZXNvdXJjZSdzIHBvbGljeSBpcyBjb25uZWN0LXNyYyAqLiBO
byByZXBvcnQgc2hvdWxkIGJlIHNlbnQgc2luY2UgdGhlIHdvcmtlcidzIHBvbGljeSBkb2Vzbid0
IHNwZWNpZnkgYSByZXBvcnQtdXJpLgogCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRl
LXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVk
LnR4dAppbmRleCAwZTk5NzI0Yjg2NGJiZjQ5MTlhNTc0OWIyOGNiMTU0YWUyNzE4M2M2Li42ODk4
YjU0YWFiNmZjMzRkMTdiMmU4YmUyZTg0M2U5YTg3MDViMzcwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXJlcG9ydC1vbmx5LnN1Yi1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1yZXBvcnQtb25s
eS5zdWItZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0
ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L3N1cHBvcnQvcmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLWZldGNoCi1CbG9ja2VkIGFjY2Vz
cyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvc3VwcG9ydC9yZXNvdXJjZS5weT9jcm9zcy1vcmlnaW4teGhyCi1CbG9ja2Vk
IGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvc3VwcG9ydC9yZXNvdXJjZS5weT9jcm9zcy1vcmlnaW4tZmV0Y2gK
IAogUEFTUyBTYW1lLW9yaWdpbiAnZmV0Y2goKScuCiBQQVNTIFNhbWUtb3JpZ2luIFhIUi4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0LXNy
Yy5zdWItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtl
ci1zY3JpcHQtc3JjLnN1Yi1leHBlY3RlZC50eHQKaW5kZXggOTc5MTA2MzAzNzg1ZWMyNTU1MzM2
ZGY0OWRiZThlMWJmYTNmNmVmYS4uYmI2NDUyZjQ0YTBhYTIxNWE4ZGRlOGEyZjMwMGQ4Y2M0NDhk
YjkzZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1z
Y3JpcHQtc3JjLnN1Yi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2Vy
L3NoYXJlZHdvcmtlci1zY3JpcHQtc3JjLnN1Yi1leHBlY3RlZC50eHQKQEAgLTIsMTAgKzIsOSBA
QAogSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCiAKIFRJTUVPVVQgc2hh
cmVkd29ya2VyLXNjcmlwdC1zcmMgVGVzdCB0aW1lZCBvdXQKLUZBSUwgQ3Jvc3Mtb3JpZ2luIGBp
bXBvcnRTY3JpcHRzKClgIG5vdCBibG9ja2VkIGluIGh0dHA6IHdpdGhvdXIgQ1NQICBBIG5ldHdv
cmsgZXJyb3Igb2NjdXJyZWQuCi1GQUlMIGBldmFsKClgIG5vdCBibG9ja2VkIGluIGh0dHA6IHdp
dGhvdXQgQ1NQIFJlZnVzZWQgdG8gZXZhbHVhdGUgYSBzdHJpbmcgYXMgSmF2YVNjcmlwdCBiZWNh
dXNlICd1bnNhZmUtZXZhbCcgaXMgbm90IGFuIGFsbG93ZWQgc291cmNlIG9mIHNjcmlwdCBpbiB0
aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogInNjcmlwdC1z
cmMgJ3NlbGYnICdub25jZS1hJyBibG9iOiBmaWxlc3lzdGVtOiIuCi0KLUZBSUwgYHNldFRpbWVv
dXQoW3N0cmluZ10pYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3V0IENTUCBhc3NlcnRfdW5y
ZWFjaGVkOiBjYWxsYmFjayBub3QgY2FsbGVkLiBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK0ZB
SUwgQ3Jvc3Mtb3JpZ2luIGBpbXBvcnRTY3JpcHRzKClgIG5vdCBibG9ja2VkIGluIGh0dHA6IHdp
dGhvdXIgQ1NQIExvYWQgZmFpbGVkCitQQVNTIGBldmFsKClgIG5vdCBibG9ja2VkIGluIGh0dHA6
IHdpdGhvdXQgQ1NQCitQQVNTIGBzZXRUaW1lb3V0KFtzdHJpbmddKWAgbm90IGJsb2NrZWQgaW4g
aHR0cDogd2l0aG91dCBDU1AKIFRJTUVPVVQgQ3Jvc3Mtb3JpZ2luIGBpbXBvcnRTY3JpcHRzKClg
IGJsb2NrZWQgaW4gaHR0cDogd2l0aCBzY3JpcHQtc3JjICdzZWxmJyBUZXN0IHRpbWVkIG91dAog
Tk9UUlVOIGBldmFsKClgIGJsb2NrZWQgaW4gaHR0cDogd2l0aCBzY3JpcHQtc3JjICdzZWxmJwog
Tk9UUlVOIGBzZXRUaW1lb3V0KFtzdHJpbmddKWAgYmxvY2tlZCBpbiBodHRwOiB3aXRoIHNjcmlw
dC1zcmMgJ3NlbGYnCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3NjcmlwdC1zcmMvd29ya2VyLXNl
dC10aW1lb3V0LnN1Yi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3NjcmlwdC1zcmMvd29ya2Vy
LXNldC10aW1lb3V0LnN1Yi1leHBlY3RlZC50eHQKaW5kZXggNGVhYzFjY2MwNTI2OWYwNzY4NzUw
MjVjZDYyNGVlN2QyMTc5NmNlZi4uYjhlZTEzYjBmZmNlYTZmMTI1Y2M2OTZmMmJiYjY3MTIwM2Y4
NjhjYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91
dC5zdWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0
LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKIAogRkFJTCBEZWRpY2F0
ZWQgd29ya2VyIGluaGVyaXRzIENTUCBmcm9tIG1haW4gZG9jdW1lbnQgYXNzZXJ0X2VxdWFsczog
ZXhwZWN0ZWQgInNldFRpbWVvdXQgYWxsb3dlZCIgYnV0IGdvdCAic2V0VGltZW91dCBibG9ja2Vk
IgotRkFJTCBTaGFyZWQgd29ya2VyIGRlbGl2ZXJzIGl0cyBvd24gQ1NQIGFzc2VydF9lcXVhbHM6
IGV4cGVjdGVkICJzZXRUaW1lb3V0IGJsb2NrZWQiIGJ1dCBnb3QgInNldFRpbWVvdXQgYWxsb3dl
ZCIKK1BBU1MgU2hhcmVkIHdvcmtlciBkZWxpdmVycyBpdHMgb3duIENTUAogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3Nl
cnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
YnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1l
eHBlY3RlZC50eHQKaW5kZXggYzEwNzEzNjU1MjgwMTkyYjdjYjJlZThlNGQyZWM2NTQ3YWVmNzI2
My4uNmY4NDRkZDVkOTQ5MWEyMmU1OTVhOTBiOTYzYzA4ODgyMTkwMmQyZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJz
L29mZmxpbmUvYXBwY2FjaGUvd29ya2Vycy9hcHBjYWNoZS13b3JrZXIuaHR0cHMtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBz
LWV4cGVjdGVkLnR4dApAQCAtNSw3ICs1LDcgQEAgSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1l
c3NhZ2UgPSBudWxsCiBQQVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIGNhY2hlZCBzY3JpcHQK
IFBBU1MgRGVkaWNhdGVkIHdvcmtlciBvZiB0aGUgZmFsbGJhY2tlZCBzY3JpcHQKIFBBU1MgRGVk
aWNhdGVkIHdvcmtlciBvZiB0aGUgbm90LWluLWNhY2hlIHNjcmlwdAotUEFTUyBTaGFyZWQgd29y
a2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0Ci1QQVNTIFNoYXJlZCB3b3JrZXIgb2YgdGhlIGZhbGxi
YWNrZWQgc2NyaXB0CitGQUlMIFNoYXJlZCB3b3JrZXIgb2YgdGhlIGNhY2hlZCBzY3JpcHQgYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgIkRvbmU6IGNhY2hlZCIgYnV0IGdvdCAiRXJyb3I6IEltcG9y
dGluZyBhIG5vbi1jYWNoZWQgc2NyaXB0IG11c3QgZmFpbC4iCitGQUlMIFNoYXJlZCB3b3JrZXIg
b2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJEb25lOiBm
YWxsYmFja2VkIiBidXQgZ290ICJFcnJvcjogSW1wb3J0aW5nIGEgbm9uLWNhY2hlZCBzY3JpcHQg
bXVzdCBmYWlsLiIKIFRJTUVPVVQgU2hhcmVkIHdvcmtlciBvZiB0aGUgbm90LWluLWNhY2hlIHNj
cmlwdCBUZXN0IHRpbWVkIG91dAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9j
cm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2lu
LWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5odHRwcy1l
eHBlY3RlZC50eHQKaW5kZXggNjM1NWI2OGRlNzBiZTY2YzAxZTJiM2FlMTI3NDdkNWNkMmMzNDBh
Yi4uYzhiZjc1ZTdlYTg1MzBmYmM4YjQyMDAzMmFmNGYwMzlkZGRlNTM2NyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9y
aWdpbi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0
cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L2Nyb3NzLW9yaWdpbi1p
c29sYXRlZC1wZXJtaXNzaW9uLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMjAsNyArMjAsNyBAQCBQ
QVNTIGRlZGljYXRlZCB3b3JrZXI6IHNjaGVtZSA9IGJsb2IsIHZhbHVlID0gKgogUEFTUyBkZWRp
Y2F0ZWQgd29ya2VyOiBzY2hlbWUgPSBibG9iLCB2YWx1ZSA9IHNlbGYKIEZBSUwgZGVkaWNhdGVk
IHdvcmtlcjogc2NoZW1lID0gYmxvYiwgdmFsdWUgPSAoXCkgYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgZmFsc2UgYnV0IGdvdCB0cnVlCiBQQVNTIHNoYXJlZCB3b3JrZXI6IHdpdGhDb29wQ29lcCA9
IGZhbHNlCi1QQVNTIHNoYXJlZCB3b3JrZXI6IHdpdGhDb29wQ29lcCA9IHRydWUKK0ZBSUwgc2hh
cmVkIHdvcmtlcjogd2l0aENvb3BDb2VwID0gdHJ1ZSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCB0
cnVlIGJ1dCBnb3QgZmFsc2UKIFBBU1Mgc2VydmljZSB3b3JrZXI6IHdpdGhDb29wQ29lcCA9IGZh
bHNlCiBGQUlMIHNlcnZpY2Ugd29ya2VyOiB3aXRoQ29vcENvZXAgPSB0cnVlIGFzc2VydF9lcXVh
bHM6IGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVk
ZGVyLXBvbGljeS9zaGFyZWQtd29ya2Vycy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVk
ZGVyLXBvbGljeS9zaGFyZWQtd29ya2Vycy5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggMzM5OGJk
ODg5MzFiMjIwOGEyODA4OTliZWQ3NGUyNGRhM2Y0ZjYzNi4uNGM4NjZlYjI5MjYzYmFmODdlZGMx
OWVlOWNlMTUwMTQ2MTA5MGJjZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvc2hh
cmVkLXdvcmtlcnMuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5
L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMiw3ICsyLDcgQEAgVmVyaWZ5
IHRoZSBDcm9zcy1PcmlnaW4gRW1iZWRkZXIgUG9saWN5IGZvciBTaGFyZWQgV29ya2VycyBieSBw
ZXJmb3JtaW5nIGEgY3Jvc3MKIAogCiBQQVNTIGRlZmF1bHQgcG9saWN5IChkZXJpdmVkIGZyb20g
cmVzcG9uc2UpCi1GQUlMICJyZXF1aXJlLWNvcnAiIChkZXJpdmVkIGZyb20gcmVzcG9uc2UpIGFz
c2VydF9lcXVhbHM6IGV4cGVjdGVkICJmYWlsdXJlIiBidXQgZ290ICJzdWNjZXNzIgorUEFTUyAi
cmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIHJlc3BvbnNlKQogUEFTUyBkZWZhdWx0IHBvbGlj
eSAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBkdWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAtIGJs
b2IgVVJMKQogRkFJTCAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBkdWUg
dG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAtIGJsb2IgVVJMKSBhc3NlcnRfZXF1YWxzOiBleHBlY3Rl
ZCAiZmFpbHVyZSIgYnV0IGdvdCAic3VjY2VzcyIKIFBBU1MgZGVmYXVsdCBwb2xpY3kgKGRlcml2
ZWQgZnJvbSBvd25lciBzZXQgZHVlIHRvIHVzZSBvZiBsb2NhbCBzY2hlbWUgLSBkYXRhIFVSTCkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5jZS5zdWIu
aHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVyaXRh
bmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggNzViMWQzM2U1MjYwMWFkMGQzYWRkZjhi
ZGU1NTVlMTVkYjIyZmYyMi4uYjJiZjJlM2JmZjNmZTJlMzA3YThiYzk0OWUyMjFkZjAwNmE5NjNm
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVyaXRhbmNlLnN1
Yi5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWlu
aGVyaXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw2IEBACiBCbG9ja2Vk
IGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29tbW9u
L2JsYW5rLmh0bWwKIEJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5s
b2NhbGhvc3Q6OTQ0NC9jb21tb24vYmxhbmsuaHRtbAogQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJu
YWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbW1vbi9ibGFuay5odG1sCi1CbG9j
a2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29t
bW9uL2JsYW5rLmh0bWwKIAogUEFTUyBUZXN0IHRoYXQgbG9jYWwgc2NoZW1lIHdvcmtlcnMgaW5o
ZXJpdCBDT0VQOiByZXF1aXJlLWNvcnAgZnJvbSB0aGUgY3JlYXRpbmcgZG9jdW1lbnQKIFBBU1Mg
YmxvYiBVUkwgZGVkaWNhdGVkIHdvcmtlcjogU2FtZSBvcmlnaW4gc2hvdWxkIGJlIGFsbG93ZWQu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9jbGFpbS1zaGFyZWQtd29ya2VyLWZldGNo
Lmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2NsYWltLXNoYXJlZC13b3Jr
ZXItZmV0Y2guaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IGRkMzVhYWUyNWY3N2ZlNDQ1MTYzYjE5
NDZiYmI2MzIzNGNmMjBmZDcuLjkwZDkxYWQ1MTAxZjUxMGQ0YjRlNDcyOTVhNmM2MDdkMGQ4ZmJj
NzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2NsYWltLXNoYXJlZC13b3JrZXItZmV0
Y2guaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2NsYWltLXNoYXJl
ZC13b3JrZXItZmV0Y2guaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsNCBAQAogCi1QQVNT
IGZldGNoKCkgaW4gU2hhcmVkV29ya2VyIHNob3VsZCBiZSBpbnRlcmNlcHRlZCBhZnRlciB0aGUg
Y2xpZW50IGlzIGNsYWltZWQuCisKK0ZBSUwgZmV0Y2goKSBpbiBTaGFyZWRXb3JrZXIgc2hvdWxk
IGJlIGludGVyY2VwdGVkIGFmdGVyIHRoZSBjbGllbnQgaXMgY2xhaW1lZC4gYXNzZXJ0X2VxdWFs
czogZmV0Y2goKSBpbiB0aGUgc2hhcmVkIHdvcmtlciBzaG91bGQgYmUgaW50ZXJjZXB0ZWQuIGV4
cGVjdGVkICJJbnRlcmNlcHRlZCEiIGJ1dCBnb3QgImEgc2ltcGxlIHRleHQgZmlsZVxuIgogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvU2hhcmVkV29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyLXNj
cmlwdC1lcnJvci1leHBlY3RlZC50eHQKaW5kZXggZTgxMzM4MDBkMmNhYTZhOTYyOGU5NTk0ZmI3
ODIxNDcxNzg0NDBlNS4uZmQyZGYwZmU2MDlhNjRmZjQzZWI1ODRkNDQzZWZiMDZlN2RlNGRiYiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL1NoYXJlZFdvcmtlci1zY3JpcHQtZXJyb3ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3Jr
ZXItc2NyaXB0LWVycm9yLWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDMgQEAKLUNPTlNPTEUgTUVT
U0FHRTogRXJyb3I6IGFzc2VydF91bnJlYWNoZWQ6IEZBSUw6IG9uZXJyb3IgaW52b2tlZCBmb3Ig
YSBzY3JpcHQgZXJyb3IuIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQotCi1IYXJuZXNzIEVycm9y
IChGQUlMKSwgbWVzc2FnZSA9IEVycm9yOiBhc3NlcnRfdW5yZWFjaGVkOiBGQUlMOiBvbmVycm9y
IGludm9rZWQgZm9yIGEgc2NyaXB0IGVycm9yLiBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKIAog
UEFTUyBUZXN0IHNjcmlwdCBlcnJvciB1bmhhbmRsZWQuCiBQQVNTIFRlc3Qgc2NyaXB0IGVycm9y
IGhhbmRsZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyX2RhdGFVcmwtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdv
cmtlcl9kYXRhVXJsLWV4cGVjdGVkLnR4dAppbmRleCA5OTVhMDYwMTliODQ4ZDQzNjdhYjViY2E5
OGY4NjIyODFkMWJiYzhiLi45YjU4MjBhYWU4Y2IzMzNkODgwNTlhNDYxYWQxYmVhN2Q0NTY2MGE3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvU2hhcmVkV29ya2VyX2RhdGFVcmwtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJf
ZGF0YVVybC1leHBlY3RlZC50eHQKQEAgLTEsMTMgKzEsNSBAQAotQ09OU09MRSBNRVNTQUdFOiBF
cnJvcjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290IDEKIAogCi1IYXJuZXNzIEVy
cm9yIChGQUlMKSwgbWVzc2FnZSA9IEVycm9yOiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1
dCBnb3QgMQotCi1QQVNTIERhdGEgVVJMIG5vdCBzaGFyZWQgYnkgY3Jvc3Mtb3JpZ2luIFNoYXJl
ZFdvcmtlcnMKLVRJTUVPVVQgRGF0YSBVUkxzIHNoYXJlZCBieSBzYW1lLW9yaWdpbiBTaGFyZWRX
b3JrZXJzIFRlc3QgdGltZWQgb3V0Ci0KLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0g
RXJyb3I6IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDIgYnV0IGdvdCAxCi0KIFBBU1MgRGF0YSBV
Ukwgbm90IHNoYXJlZCBieSBjcm9zcy1vcmlnaW4gU2hhcmVkV29ya2VycwotVElNRU9VVCBEYXRh
IFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtlcnMgVGVzdCB0aW1lZCBvdXQK
K1BBU1MgRGF0YSBVUkxzIHNoYXJlZCBieSBzYW1lLW9yaWdpbiBTaGFyZWRXb3JrZXJzCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQu
dHh0CmluZGV4IDU3NmU2ZDJiN2VkMmZhNzAyM2NmMjNiOTZhMDY5MWZkNWFiY2EwNTkuLjRhMjZi
ZTkyOWE4ZDc1MjUwOGI0ZjdmNzVjMDdiM2VhOGVkYzhjYWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJl
ZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hh
cmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsx
LDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxo
b3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQu
cHkKIAogUEFTUyBTdGF0aWMgaW1wb3J0LgogRkFJTCBTdGF0aWMgaW1wb3J0IChjcm9zcy1vcmln
aW4pLiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogIkltcG9y
dGluZyBhIG1vZHVsZSBzY3JpcHQgZmFpbGVkLiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3Jr
ZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQt
d29ya2VyLWltcG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CmluZGV4IDRm
ODY0MWU1MTQ4MGYwMTMwNjc1YjkxMzY0ZWNjNGYwZmEyNzIwYTkuLjI5OTdmN2UxZjMwOGU4MDgx
OTdkYzhkNDgyMDQ5ZDUzY2FiNGYzYmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdv
cmtlci1pbXBvcnQtZGF0YS11cmwtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsx
LDMgQEAKLUNPTlNPTEUgTUVTU0FHRTogT3JpZ2luIG51bGwgaXMgbm90IGFsbG93ZWQgYnkgQWNj
ZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luLiBTdGF0dXMgY29kZTogMjAwCiAKIEhhcm5lc3MgRXJy
b3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29y
a2VyLWltcG9ydC1kYXRhLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtl
ci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dAppbmRleCBlYWM3Zjk1ZGU2ZjJk
ODdjN2IyMTNkZmVjYWIxMzg4YzY4ODRkYzFkLi5jYmMwNDI5ZTBjNzE3MzUyODBlZmI0NDQ0Y2Ni
YWE4MjEzNjhkZjExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVy
bC53aW5kb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEt
dXJsLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0
byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQzL3dvcmtlcnMvbW9kdWxl
cy9yZXNvdXJjZXMvZXhwb3J0LW9uLWxvYWQtc2NyaXB0LnB5CiAKIEhhcm5lc3MgRXJyb3IgKFRJ
TUVPVVQpLCBtZXNzYWdlID0gbnVsbAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWlt
cG9ydC1mYWlsdXJlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWZhaWx1
cmUtZXhwZWN0ZWQudHh0CmluZGV4IDRlOWU1MTkzNzJiYjFmNTE5NTJmMzI1ODBiMDRiNzkzOGFk
ODc1NjkuLmQwNDkwMzU5Y2U3ZmJmYzQzODYzMDhkMGY0MzM3ZWI4ZGFiMmU5OTIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWZhaWx1cmUtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVz
L3NoYXJlZC13b3JrZXItaW1wb3J0LWZhaWx1cmUtZXhwZWN0ZWQudHh0CkBAIC0xLDkgKzEsOCBA
QAotQ09OU09MRSBNRVNTQUdFOiBDYW5ub3QgbG9hZCBzdGF0aWMtaW1wb3J0LXdvcmtlci5qcy4K
IAogUEFTUyBpbXBvcnRTY3JpcHRzKCkgb24gbW9kdWxlIHdvcmtlciBzaG91bGQgdGhyb3cgYW4g
ZXhjZXB0aW9uLgogUEFTUyBXb3JrZXIgY29uc3RydWN0aW9uIGZvciBub24tZXhpc3RlbnQgc2Ny
aXB0IHNob3VsZCBkaXNwYXRjaCBhbiBFcnJvckV2ZW50LgogUEFTUyBTdGF0aWMgaW1wb3J0IGZv
ciBub24tZXhpc3RlbnQgc2NyaXB0IHNob3VsZCBkaXNwYXRjaCBhbiBFcnJvckV2ZW50LgogUEFT
UyBEeW5hbWljIGltcG9ydCBmb3Igbm9uLWV4aXN0ZW50IHNjcmlwdCBzaG91bGQgdGhyb3cgYW4g
ZXhjZXB0aW9uLgogUEFTUyBTaGFyZWRXb3JrZXIgY29uc3RydWN0aW9uIGZvciBhbiBpbnZhbGlk
IFVSTCBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uLgotRkFJTCBTaGFyZWRXb3JrZXIgY29uc3Ry
dWN0aW9uIGZvciBhIGZpbGUgVVJMIHNob3VsZCB0aHJvdyBhbiBleGNlcHRpb24uIGFzc2VydF90
aHJvd3NfZG9tOiBmdW5jdGlvbiAiKCkgPT4gbmV3IFNoYXJlZFdvcmtlcihzY3JpcHRVUkwsIHsg
dHlwZTogJ21vZHVsZScgfSkiIGRpZCBub3QgdGhyb3cKK1BBU1MgU2hhcmVkV29ya2VyIGNvbnN0
cnVjdGlvbiBmb3IgYSBmaWxlIFVSTCBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uLgogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1yZWZlcnJlci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxl
cy9zaGFyZWQtd29ya2VyLWltcG9ydC1yZWZlcnJlci1leHBlY3RlZC50eHQKaW5kZXggZmUxYjlk
OTNjMDgwMTFiNTBlOTQxZjRlMTIzNjA2N2FiYmQzZjIzZS4uN2I0ZWU4YzE5ZWQzOWQwYzBhN2E1
MzI2MmUwZjBiZmQzOTYyM2E2YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQt
cmVmZXJyZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LXJlZmVy
cmVyLWV4cGVjdGVkLnR4dApAQCAtMSwyMSArMSwxNSBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0
ZXJuYWwgVVJMIGh0dHBzOi8vd3d3MS5sb2NhbGhvc3Q6OTQ0My93b3JrZXJzL21vZHVsZXMvcmVz
b3VyY2VzL2V4cG9ydC1yZWZlcnJlci1jaGVja2VyLnB5Ci1CbG9ja2VkIGFjY2VzcyB0byBleHRl
cm5hbCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQzL3dvcmtlcnMvbW9kdWxlcy9yZXNv
dXJjZXMvZXhwb3J0LXJlZmVycmVyLWNoZWNrZXIucHkKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVy
bmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291
cmNlcy9leHBvcnQtcmVmZXJyZXItY2hlY2tlci5weQotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJu
YWwgVVJMIGh0dHBzOi8vd3d3MS5sb2NhbGhvc3Q6OTQ0My93b3JrZXJzL21vZHVsZXMvcmVzb3Vy
Y2VzL2V4cG9ydC1yZWZlcnJlci1jaGVja2VyLnB5Ci1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5h
bCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQzL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJj
ZXMvZXhwb3J0LXJlZmVycmVyLWNoZWNrZXIucHkKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFs
IFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNl
cy9leHBvcnQtcmVmZXJyZXItY2hlY2tlci5weQogCiBQQVNTIFNhbWUtb3JpZ2luIHRvcC1sZXZl
bCBtb2R1bGUgc2NyaXB0IGxvYWRpbmcgd2l0aCAibm8tcmVmZXJyZXIiIHJlZmVycmVyIHBvbGlj
eQogUEFTUyBTYW1lLW9yaWdpbiB0b3AtbGV2ZWwgbW9kdWxlIHNjcmlwdCBsb2FkaW5nIHdpdGgg
Im9yaWdpbiIgcmVmZXJyZXIgcG9saWN5CiBQQVNTIFNhbWUtb3JpZ2luIHRvcC1sZXZlbCBtb2R1
bGUgc2NyaXB0IGxvYWRpbmcgd2l0aCAic2FtZS1vcmlnaW4iIHJlZmVycmVyIHBvbGljeQotUEFT
UyBTYW1lLW9yaWdpbiBzdGF0aWMgaW1wb3J0IHdpdGggIm5vLXJlZmVycmVyIiByZWZlcnJlciBw
b2xpY3kuCi1QQVNTIFNhbWUtb3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0aCAib3JpZ2luIiByZWZl
cnJlciBwb2xpY3kuCitGQUlMIFNhbWUtb3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0aCAibm8tcmVm
ZXJyZXIiIHJlZmVycmVyIHBvbGljeS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIiIgYnV0IGdv
dCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvc3RhdGlj
LWltcG9ydC1zYW1lLW9yaWdpbi1yZWZlcnJlci1jaGVja2VyLXdvcmtlci5qcyIKK0ZBSUwgU2Ft
ZS1vcmlnaW4gc3RhdGljIGltcG9ydCB3aXRoICJvcmlnaW4iIHJlZmVycmVyIHBvbGljeS4gYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC8iIGJ1dCBnb3QgImh0
dHA6Ly9sb2NhbGhvc3Q6ODgwMC93b3JrZXJzL21vZHVsZXMvcmVzb3VyY2VzL3N0YXRpYy1pbXBv
cnQtc2FtZS1vcmlnaW4tcmVmZXJyZXItY2hlY2tlci13b3JrZXIuanMiCiBQQVNTIFNhbWUtb3Jp
Z2luIHN0YXRpYyBpbXBvcnQgd2l0aCAic2FtZS1vcmlnaW4iIHJlZmVycmVyIHBvbGljeS4KIEZB
SUwgQ3Jvc3Mtb3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0aCAibm8tcmVmZXJyZXIiIHJlZmVycmVy
IHBvbGljeS4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9i
amVjdCAiVHlwZUVycm9yOiBUeXBlIGVycm9yIgogRkFJTCBDcm9zcy1vcmlnaW4gc3RhdGljIGlt
cG9ydCB3aXRoICJvcmlnaW4iIHJlZmVycmVyIHBvbGljeS4gcHJvbWlzZV90ZXN0OiBVbmhhbmRs
ZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBUeXBlIGVycm9yIgog
RkFJTCBDcm9zcy1vcmlnaW4gc3RhdGljIGltcG9ydCB3aXRoICJzYW1lLW9yaWdpbiIgcmVmZXJy
ZXIgcG9saWN5LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTog
b2JqZWN0ICJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiCi1GQUlMIFNhbWUtb3JpZ2luIGR5bmFtaWMg
aW1wb3J0IHdpdGggIm5vLXJlZmVycmVyIiByZWZlcnJlciBwb2xpY3kuIGFzc2VydF9lcXVhbHM6
IGV4cGVjdGVkICIiIGJ1dCBnb3QgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC93b3JrZXJzL21vZHVs
ZXMvcmVzb3VyY2VzL2R5bmFtaWMtaW1wb3J0LXNhbWUtb3JpZ2luLXJlZmVycmVyLWNoZWNrZXIt
d29ya2VyLmpzIgotRkFJTCBTYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydCB3aXRoICJvcmlnaW4i
IHJlZmVycmVyIHBvbGljeS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhv
c3Q6ODgwMC8iIGJ1dCBnb3QgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC93b3JrZXJzL21vZHVsZXMv
cmVzb3VyY2VzL2R5bmFtaWMtaW1wb3J0LXNhbWUtb3JpZ2luLXJlZmVycmVyLWNoZWNrZXItd29y
a2VyLmpzIgorUEFTUyBTYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydCB3aXRoICJuby1yZWZlcnJl
ciIgcmVmZXJyZXIgcG9saWN5LgorUEFTUyBTYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydCB3aXRo
ICJvcmlnaW4iIHJlZmVycmVyIHBvbGljeS4KIFBBU1MgU2FtZS1vcmlnaW4gZHluYW1pYyBpbXBv
cnQgd2l0aCAic2FtZS1vcmlnaW4iIHJlZmVycmVyIHBvbGljeS4KIEZBSUwgQ3Jvc3Mtb3JpZ2lu
IGR5bmFtaWMgaW1wb3J0IHdpdGggIm5vLXJlZmVycmVyIiByZWZlcnJlciBwb2xpY3kuIHByb21p
c2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJv
cjogVHlwZSBlcnJvciIKIEZBSUwgQ3Jvc3Mtb3JpZ2luIGR5bmFtaWMgaW1wb3J0IHdpdGggIm9y
aWdpbiIgcmVmZXJyZXIgcG9saWN5LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24g
d2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxl
cy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdv
cmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4dAppbmRleCA1NzZlNmQyYjdlZDJmYTcwMjNj
ZjIzYjk2YTA2OTFmZDVhYmNhMDU5Li40YTI2YmU5MjlhOGQ3NTI1MDhiNGY3Zjc1YzA3YjNlYThl
ZGM4Y2FmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQK
QEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93
d3cxLmxvY2FsaG9zdDo5NDQzL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LW9uLWxv
YWQtc2NyaXB0LnB5CiAKIFBBU1MgU3RhdGljIGltcG9ydC4KIEZBSUwgU3RhdGljIGltcG9ydCAo
Y3Jvc3Mtb3JpZ2luKS4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFs
dWU6ICJJbXBvcnRpbmcgYSBtb2R1bGUgc2NyaXB0IGZhaWxlZC4iCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9z
aGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVk
LXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAppbmRleCBlMWJlZGY1NDMw
ZWZlNzVhNTlhM2M0OTg5YzU1ZDZmZjZjMTk2NTFhLi5hNzBmMDVhZjU0ZjRiYmY2MjUyZDdlNmJl
OWUwMmE3ODdlMTFmYmFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3Jl
ZGVudGlhbHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1jcmVk
ZW50aWFscy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0byBl
eHRlcm5hbCBVUkwgaHR0cDovL3d3dzEubG9jYWxob3N0Ojg4MDAvd29ya2Vycy9tb2R1bGVzL3Jl
c291cmNlcy9leHBvcnQtY3JlZGVudGlhbHMucHkKIAogSGFybmVzcyBFcnJvciAoVElNRU9VVCks
IG1lc3NhZ2UgPSBudWxsCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwNC1leHBlY3RlZC50eHQKaW5k
ZXggMDE4ZGI2MDQ1NjlkMDZmMjcyMWM4Y2IzOTQ2ZjYwOGE0ZGM2ZTk4Yi4uY2ZlNDY1NTY3NWNk
MDQ5YWI3YTVlYjkxYjY3ZGRhOGViNTBkZGI0NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13
b3JrZXJzLzAwNC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwNC1l
eHBlY3RlZC50eHQKQEAgLTEsNSArMSwzIEBACiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBt
ZXNzYWdlID0gbnVsbAotCi1OT1RSVU4gc2hhcmVkIHdvcmtlciB3aXRoIG11bHRpcGxlIGRvY3Vt
ZW50cworUEFTUyBzaGFyZWQgd29ya2VyIHdpdGggbXVsdGlwbGUgZG9jdW1lbnRzCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKaW5kZXggOTdhNGU3YTczYTYzZmRjNmUzMjAy
MTI3M2FmYzgzM2MwMWIyYjQ3MC4uMDlmNjcyZDFjNjIxN2EwYzViYTMxZmVjNjRkMmI5MzVjNTM4
ZmUyZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSwz
IEBACiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1USU1FT1VU
IG1lc3NhZ2VjaGFubmVsIGluIHNoYXJlZCB3b3JrZXIgVGVzdCB0aW1lZCBvdXQKK1BBU1MgbWVz
c2FnZWNoYW5uZWwgaW4gc2hhcmVkIHdvcmtlcgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3JlcG9ydGlu
Zy1lcnJvcnMvMDAzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvcmVwb3J0aW5nLWVycm9ycy8wMDMtZXhw
ZWN0ZWQudHh0CmluZGV4IGY4ZjZlZWMzNDQzN2QzZWRlNTdiODZiZmFkMzdiYmJkNzU3MGVlOGQu
LmE1NjFmYzNjZGJhYzkyZjAzM2FiOTVmMGU3N2RjZGYzYWZkYjM3ZmUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRp
Y3MvcmVwb3J0aW5nLWVycm9ycy8wMDMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvcmVwb3J0aW5n
LWVycm9ycy8wMDMtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIHNoYXJlZCB3
b3JrZXIsIG5vIGVycm9yIGV2ZW50IG9uIHdvcmtlciBvciBwb3J0IGFzc2VydF91bnJlYWNoZWQ6
IGVycm9yIG9uIHdvcmtlciBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK1BBU1Mgc2hhcmVkIHdv
cmtlciwgbm8gZXJyb3IgZXZlbnQgb24gd29ya2VyIG9yIHBvcnQKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGlj
cy9yZXBvcnRpbmctZXJyb3JzLzAwNC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3JlcG9ydGluZy1lcnJv
cnMvMDA0LWV4cGVjdGVkLnR4dAppbmRleCA0NzEzZjdmMDY5YjVjMmU3MGYyNDAxNThhODNhMTgw
ZTZkNDFhMDM2Li4yMzA0NzcyMmY3MTMwMjgxOTNkODkxMWM5ODdlM2YwOTI2MDFlZjRjIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvc2VtYW50aWNzL3JlcG9ydGluZy1lcnJvcnMvMDA0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNz
L3JlcG9ydGluZy1lcnJvcnMvMDA0LWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKIAotRkFJ
TCBzaGFyZWQgd29ya2VyIGluIHR3byBkb2N1bWVudHMgYW5kIHdpbmRvdy5vbmVycm9yIGFzc2Vy
dF91bnJlYWNoZWQ6IChvdXRlcikgZXJyb3Igb24gd29ya2VyIFJlYWNoZWQgdW5yZWFjaGFibGUg
Y29kZQorUEFTUyBzaGFyZWQgd29ya2VyIGluIHR3byBkb2N1bWVudHMgYW5kIHdpbmRvdy5vbmVy
cm9yCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dAppbmRleCBh
MDg5YzIyNDg5ZTJkNjY3OGU1YjI0ZTJmZmVmZTAyNDNjMWVhOGNkLi4xOWU0NmIwOWE1NmFjODMz
NTMzZDU3YjIwMWE5ZTYwMDA0ODdiMGM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2It
dXJsLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItZnJvbS1ibG9iLXVybC53aW5k
b3ctZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNSBAQAogCi1IYXJuZXNzIEVycm9yIChUSU1FT1VU
KSwgbWVzc2FnZSA9IG51bGwKLQotRkFJTCBDcmVhdGluZyBhIHNoYXJlZCB3b3JrZXIgZnJvbSBh
IGJsb2IgVVJMIHdvcmtzLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAid29ya2VyX09LXzIiIGJ1
dCBnb3QgIndvcmtlcl9PS18xIgorUEFTUyBDcmVhdGluZyBhIHNoYXJlZCB3b3JrZXIgZnJvbSBh
IGJsb2IgVVJMIHdvcmtzLgogUEFTUyBDcmVhdGluZyBhIHNoYXJlZCB3b3JrZXIgZnJvbSBhIGJs
b2IgVVJMIHdvcmtzIGltbWVkaWF0ZWx5IGJlZm9yZSByZXZva2luZy4KLVRJTUVPVVQgQ29ubmVj
dGluZyB0byBhIHNoYXJlZCB3b3JrZXIgb24gYSByZXZva2VkIGJsb2IgVVJMIHdvcmtzLiBUZXN0
IHRpbWVkIG91dAorUEFTUyBDb25uZWN0aW5nIHRvIGEgc2hhcmVkIHdvcmtlciBvbiBhIHJldm9r
ZWQgYmxvYiBVUkwgd29ya3MuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWluLWRhdGEtdXJsLWNv
bnRleHQud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWluLWRhdGEtdXJsLWNvbnRleHQu
d2luZG93LWV4cGVjdGVkLnR4dAppbmRleCAyMDZmNTZlMGQxMDdhNjVhYzA2ZjVjYTVkNGNlZjdj
Yjg2YmY0YWNkLi4wNWU2NmEzYzc2MDFhYjdkNDBlYjZhZWRiMWNiZWFhZTA2OTNjNGE1IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvc2hhcmVkLXdvcmtlci1pbi1kYXRhLXVybC1jb250ZXh0LndpbmRvdy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L3NoYXJlZC13b3JrZXItaW4tZGF0YS11cmwtY29udGV4dC53aW5kb3ctZXhwZWN0ZWQudHh0CkBA
IC0xLDQgKzEsNSBAQAorQ09OU09MRSBNRVNTQUdFOiBDYW5ub3QgbG9hZCBodHRwOi8vbG9jYWxo
b3N0Ojg4MDAvd29ya2Vycy9zdXBwb3J0L3Bvc3QtbWVzc2FnZS1vbi1sb2FkLXdvcmtlci5qcy4K
IAotRkFJTCBDcmVhdGUgYSBzaGFyZWQgd29ya2VyIGluIGEgZGF0YSB1cmwgZnJhbWUgYXNzZXJ0
X2VxdWFsczogZXhwZWN0ZWQgIlBBU1MiIGJ1dCBnb3QgIlNoYXJlZFdvcmtlciBjb25zdHJ1Y3Rp
b24gdW5leHBlY3RlZGx5IHN5bmNocm9ub3VzbHkgZmFpbGVkIgotRkFJTCBDcmVhdGUgYSBkYXRh
IHVybCBzaGFyZWQgd29ya2VyIGluIGEgZGF0YSB1cmwgZnJhbWUgYXNzZXJ0X2VxdWFsczogZXhw
ZWN0ZWQgIlBBU1MiIGJ1dCBnb3QgIlNoYXJlZFdvcmtlciBjb25zdHJ1Y3Rpb24gdW5leHBlY3Rl
ZGx5IHN5bmNocm9ub3VzbHkgZmFpbGVkIgorUEFTUyBDcmVhdGUgYSBzaGFyZWQgd29ya2VyIGlu
IGEgZGF0YSB1cmwgZnJhbWUKK1BBU1MgQ3JlYXRlIGEgZGF0YSB1cmwgc2hhcmVkIHdvcmtlciBp
biBhIGRhdGEgdXJsIGZyYW1lCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlv
bnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQK
aW5kZXggNmZmZWUyNzM5MGQ5NzhlNGU2YjU2OTFmOGRiYTdlM2VlZDBhODMyZC4uYWU0NWI0ZDI3
Mzk2NDQ2OTNjMmMxNjQ5NzVjNTNkNTY2YmJhMjhmNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFt
ZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9u
cy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgVGVzdCB0aGUgbmFtZSBwcm9w
ZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBtaXhpbmcgY29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29u
c3RydWN0b3Igc3RyaW5ncyBFcnJvcjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290
IDEKK1BBU1MgVGVzdCB0aGUgbmFtZSBwcm9wZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBtaXhpbmcg
Y29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29uc3RydWN0b3Igc3RyaW5ncwogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW9wdGlv
bnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CmluZGV4IGY2NTY5NDYxNTBkYjE3YzA5YmJjNGFlM2Vk
YTg1OGY5MTczZWQ2ZTEuLjRmOTlhMTM0MDllN2U4Njg0NGI1NTE4YzUxMGMzMDhmZGZlNjA3MjMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFy
ZWQtd29ya2VyLW9wdGlvbnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CkBAIC0xLDI4ICsxLDI2IEBA
CiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1USU1FT1VUIENv
bm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBi
ZSBibG9ja2VkOiBkZWZhdWx0IHRvIG1vZHVsZSBUZXN0IHRpbWVkIG91dAotTk9UUlVOIENvbm5l
Y3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBi
bG9ja2VkOiBtb2R1bGUgdG8gZGVmYXVsdAotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBjbGFzc2ljIHRv
IG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVu
dCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBtb2R1bGUgdG8gY2xhc3NpYwotTk9UUlVOIENv
bm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBi
ZSBibG9ja2VkOiBkZWZhdWx0IHRvIG9taXQgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBkZWZhdWx0IHRvIGluY2x1ZGUgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hh
cmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0
IHRvIGRlZmF1bHQgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIHNhbWUt
b3JpZ2luIGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0
aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBpbmNsdWRlIGlu
IGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJl
bnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBjbGFz
c2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9w
dGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIGluY2x1ZGUgaW4gY2xhc3Np
YwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIGRlZmF1bHQgaW4gY2xhc3NpYwotTk9U
UlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNo
b3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5l
Y3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBi
bG9ja2VkOiBpbmNsdWRlIHRvIHNhbWUtb3JpZ2luIGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0
aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxv
Y2tlZDogZGVmYXVsdCB0byBvbWl0IGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hh
cmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZh
dWx0IHRvIGluY2x1ZGUgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29y
a2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gZGVm
YXVsdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBzYW1lLW9yaWdpbiBp
biBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJl
bnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBpbmNsdWRlIGluIG1vZHVsZQot
Tk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25z
IHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBvbWl0IGluIG1vZHVsZQotTk9UUlVO
IENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3Vs
ZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIG1vZHVsZQotTk9UUlVOIENv
bm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBi
ZSBibG9ja2VkOiBpbmNsdWRlIHRvIGRlZmF1bHQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGlu
ZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2Nr
ZWQ6IGluY2x1ZGUgdG8gb21pdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJl
ZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVk
ZSB0byBzYW1lLW9yaWdpbiBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29y
a2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8g
bW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBtb2R1bGUgdG8gZGVmYXVsdAorUEFTUyBDb25uZWN0
aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxv
Y2tlZDogY2xhc3NpYyB0byBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2Vy
IHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG1vZHVsZSB0byBjbGFz
c2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIG9taXQgaW4gY2xhc3NpYworUEFTUyBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogZGVmYXVsdCB0byBpbmNsdWRlIGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGlu
ZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2Nr
ZWQ6IG9taXQgdG8gZGVmYXVsdCBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVk
IHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRv
IHNhbWUtb3JpZ2luIGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2Vy
IHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVk
ZSBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZl
cmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBvbWl0IGluIGNs
YXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9w
dGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIGluY2x1ZGUgaW4gY2xhc3Np
YworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9u
cyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGluIGNsYXNzaWMKK1BBU1Mg
Q29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxk
IGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gb21pdCBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBpbmNsdWRlIHRvIHNhbWUtb3JpZ2luIGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBz
aGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRl
ZmF1bHQgdG8gb21pdCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2Vy
IHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gaW5j
bHVkZSBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlm
ZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gZGVmYXVsdCBpbiBtb2R1
bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlv
bnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gc2FtZS1vcmlnaW4gaW4gbW9kdWxlCitQQVNT
IENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3Vs
ZCBiZSBibG9ja2VkOiBvbWl0IHRvIGluY2x1ZGUgaW4gbW9kdWxlCitQQVNTIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBzYW1lLW9yaWdpbiB0byBvbWl0IGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJl
ZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1v
cmlnaW4gdG8gaW5jbHVkZSBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29y
a2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8g
ZGVmYXVsdCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGgg
ZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gb21pdCBpbiBt
b2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9w
dGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gc2FtZS1vcmlnaW4gaW4gbW9kdWxl
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMveGhyL29wZW4tdXJsLXJlZGlyZWN0ZWQtc2hhcmVkd29ya2VyLW9yaWdpbi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVu
LXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0CmluZGV4IDFl
MmQzOTkyZjZkNWRmMzIyMDdhNmIwZjYxOWE2ZDcxMTgxMjQwMGQuLjU5Y2FjYTQ4NmY4ZGVhYzA3
ODljOTdiNGZlZThhNTI1OTdhNWU1NDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL29wZW4tdXJsLXJlZGlyZWN0ZWQtc2hhcmVkd29y
a2VyLW9yaWdpbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3Jp
Z2luLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVy
bmFsIFVSTCBodHRwOi8vd3d3Mi5sb2NhbGhvc3Q6ODgwMC94aHIvcmVzb3VyY2VzL2luc3BlY3Qt
aGVhZGVycy5weT9maWx0ZXJfbmFtZT1vcmlnaW4mY29ycwogCiBGQUlMIFJlZmVyZXIgaGVhZGVy
IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJSZWZlcmVyOiBodHRwOi8vbG9jYWxob3N0Ojg4MDAv
eGhyL3Jlc291cmNlcy93b3JrZXJ4aHItb3JpZ2luLXJlZmVycmVyLmpzXG4iIGJ1dCBnb3QgIlJl
ZmVyZXI6IGh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC94aHIvcmVzb3VyY2VzL3JlZGlyZWN0LnB5P2xv
Y2F0aW9uPXdvcmtlcnhoci1vcmlnaW4tcmVmZXJyZXIuanNcbiIKIEZBSUwgT3JpZ2luIGhlYWRl
ciBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiT3JpZ2luOiBodHRwOi8vbG9jYWxob3N0Ojg4MDBc
biIgYnV0IGdvdCAiIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvY29ubmVj
dC1zcmMvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1hbGxvd2VkLnN1Yi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9zaGFyZWQtd29ya2VyLWNvbm5l
Y3Qtc3JjLWFsbG93ZWQuc3ViLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDdiZWJkY2ZjZWZl
MWQzYjhhYjFlMDVkZjJhZTU2YjgzYTgwNjY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvY29ubmVjdC1zcmMvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1hbGxv
d2VkLnN1Yi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgRXhwZWN0aW5nIGxv
Z3M6IFsieGhyIGFsbG93ZWQiLCJURVNUIENPTVBMRVRFIl0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItY29ubmVjdC1zcmMu
c3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIv
c2hhcmVkd29ya2VyLWNvbm5lY3Qtc3JjLnN1Yi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjM3
NzhiYmE0NjlkYmQ5MGVkNjU5ODJhNjI0ZGZhYjY1NzkzNTRiOAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLWNvbm5l
Y3Qtc3JjLnN1Yi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorCitIYXJuZXNzIEVycm9y
IChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKKworVElNRU9VVCBzaGFyZWR3b3JrZXItY29ubmVj
dC1zcmMgVGVzdCB0aW1lZCBvdXQKK1BBU1MgU2FtZS1vcmlnaW4gJ2ZldGNoKCknIGluIGh0dHA6
IHdpdGhvdXQgQ1NQCitQQVNTIFNhbWUtb3JpZ2luIFhIUiBpbiBodHRwOiB3aXRob3V0IENTUAor
UEFTUyBDcm9zcy1vcmlnaW4gJ2ZldGNoKCknIGluIGh0dHA6IHdpdGhvdXQgQ1NQCitQQVNTIENy
b3NzLW9yaWdpbiBYSFIgaW4gaHR0cDogd2l0aG91dCBDU1AKK1BBU1MgU2FtZS1vcmlnaW4gPT4g
Y3Jvc3Mtb3JpZ2luICdmZXRjaCgpJyBpbiBodHRwOiB3aXRob3V0IENTUAorUEFTUyBTYW1lLW9y
aWdpbiAnZmV0Y2goKScgaW4gaHR0cDogd2l0aCBjb25uZWN0LXNyYyAnc2VsZicKK1BBU1MgU2Ft
ZS1vcmlnaW4gWEhSIGluIGh0dHA6IHdpdGggY29ubmVjdC1zcmMgJ3NlbGYnCitUSU1FT1VUIENy
b3NzLW9yaWdpbiAnZmV0Y2goKScgaW4gaHR0cDogd2l0aCBjb25uZWN0LXNyYyAnc2VsZicgVGVz
dCB0aW1lZCBvdXQKK05PVFJVTiBDcm9zcy1vcmlnaW4gWEhSIGluIGh0dHA6IHdpdGggY29ubmVj
dC1zcmMgJ3NlbGYnCitOT1RSVU4gU2FtZS1vcmlnaW4gPT4gY3Jvc3Mtb3JpZ2luICdmZXRjaCgp
JyBpbiBodHRwOiB3aXRoIGNvbm5lY3Qtc3JjICdzZWxmJworTk9UUlVOIFJlcG9ydHMgbWF0Y2gg
aW4gaHR0cDogd2l0aCBjb25uZWN0LXNyYyAnc2VsZicKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3Vi
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hh
cmVkd29ya2VyLXJlcG9ydC1vbmx5LnN1Yi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzc3Y2Vk
NDUxZTJjZDMyNDMwNDhiOTc1MDYyMGZlYjIxNDU3MDE0NgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nv
bnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXJlcG9ydC1v
bmx5LnN1Yi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorCitIYXJuZXNzIEVycm9yIChU
SU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKKworUEFTUyBTYW1lLW9yaWdpbiAnZmV0Y2goKScuCitQ
QVNTIFNhbWUtb3JpZ2luIFhIUi4KK1RJTUVPVVQgQ3Jvc3Mtb3JpZ2luICdmZXRjaCgpJy4gVGVz
dCB0aW1lZCBvdXQKK05PVFJVTiBDcm9zcy1vcmlnaW4gWEhSLgorTk9UUlVOIFNhbWUtb3JpZ2lu
ID0+IGNyb3NzLW9yaWdpbiAnZmV0Y2goKScuCitOT1RSVU4gY29ubmVjdC1zcmMtc2VsZi1yZXBv
cnQtb25seQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29y
a2VyL3NoYXJlZHdvcmtlci1zY3JpcHQtc3JjLnN1Yi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1zY3JpcHQtc3JjLnN1Yi1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzdkY2U1NTAwYTdiMTkwOWQ2ZDg5MWY3OGMyNjM3OTMy
ZjI3MmNiZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lk
ZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDEyIEBACisKK0hhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAorCitU
SU1FT1VUIHNoYXJlZHdvcmtlci1zY3JpcHQtc3JjIFRlc3QgdGltZWQgb3V0CitQQVNTIENyb3Nz
LW9yaWdpbiBgaW1wb3J0U2NyaXB0cygpYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3VyIENT
UAorUEFTUyBgZXZhbCgpYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3V0IENTUAorUEFTUyBg
c2V0VGltZW91dChbc3RyaW5nXSlgIG5vdCBibG9ja2VkIGluIGh0dHA6IHdpdGhvdXQgQ1NQCitU
SU1FT1VUIENyb3NzLW9yaWdpbiBgaW1wb3J0U2NyaXB0cygpYCBibG9ja2VkIGluIGh0dHA6IHdp
dGggc2NyaXB0LXNyYyAnc2VsZicgVGVzdCB0aW1lZCBvdXQKK05PVFJVTiBgZXZhbCgpYCBibG9j
a2VkIGluIGh0dHA6IHdpdGggc2NyaXB0LXNyYyAnc2VsZicKK05PVFJVTiBgc2V0VGltZW91dChb
c3RyaW5nXSlgIGJsb2NrZWQgaW4gaHR0cDogd2l0aCBzY3JpcHQtc3JjICdzZWxmJworTk9UUlVO
IFJlcG9ydHMgYXJlIHNlbnQgZm9yIGh0dHA6IHdpdGggc2NyaXB0LXNyYyAnc2VsZicKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndp
bmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQt
YmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTE5Y2QxZjY5NDczMjc1
YThkNmFhMjVjN2U3OTZlM2I1MmQxMTY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1
bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxMSBAQAorCitQQVNTIFN0YXRpYyBpbXBvcnQuCitQQVNTIFN0YXRpYyBpbXBvcnQg
KGNyb3NzLW9yaWdpbikuCitQQVNTIFN0YXRpYyBpbXBvcnQgKHJlZGlyZWN0KS4KK1BBU1MgTmVz
dGVkIHN0YXRpYyBpbXBvcnQuCitQQVNTIFN0YXRpYyBpbXBvcnQgYW5kIHRoZW4gZHluYW1pYyBp
bXBvcnQuCitQQVNTIER5bmFtaWMgaW1wb3J0LgorUEFTUyBOZXN0ZWQgZHluYW1pYyBpbXBvcnQu
CitQQVNTIER5bmFtaWMgaW1wb3J0IGFuZCB0aGVuIHN0YXRpYyBpbXBvcnQuCitQQVNTIGV2YWwo
aW1wb3J0KCkpLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1p
bXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFy
ZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmUzNmMwNDlmODI1NmNkM2U2YjA5YWMzYTRjZjhhNmZhMTA3NTVjYTUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11cmwud2luZG93
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACisKK0hhcm5lc3MgRXJyb3IgKFRJTUVPVVQp
LCBtZXNzYWdlID0gbnVsbAorCitQQVNTIFN0YXRpYyBpbXBvcnQuCitQQVNTIFN0YXRpYyBpbXBv
cnQgKGNyb3NzLW9yaWdpbikuCitUSU1FT1VUIFN0YXRpYyBpbXBvcnQgKHJlZGlyZWN0KS4gVGVz
dCB0aW1lZCBvdXQKK05PVFJVTiBOZXN0ZWQgc3RhdGljIGltcG9ydC4KK05PVFJVTiBTdGF0aWMg
aW1wb3J0IGFuZCB0aGVuIGR5bmFtaWMgaW1wb3J0LgorTk9UUlVOIER5bmFtaWMgaW1wb3J0Lgor
Tk9UUlVOIE5lc3RlZCBkeW5hbWljIGltcG9ydC4KK05PVFJVTiBEeW5hbWljIGltcG9ydCBhbmQg
dGhlbiBzdGF0aWMgaW1wb3J0LgorTk9UUlVOIGV2YWwoaW1wb3J0KCkpLgorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtcmVmZXJyZXItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LXJlZmVycmVyLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40OWY0N2U2NmNiYTQ0YjE0OWE1YTcwNjQ3NzhiOTFmMTAxYzA2
NWRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LXJlZmVycmVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACisKK1BBU1MgU2FtZS1v
cmlnaW4gdG9wLWxldmVsIG1vZHVsZSBzY3JpcHQgbG9hZGluZyB3aXRoICJuby1yZWZlcnJlciIg
cmVmZXJyZXIgcG9saWN5CitQQVNTIFNhbWUtb3JpZ2luIHRvcC1sZXZlbCBtb2R1bGUgc2NyaXB0
IGxvYWRpbmcgd2l0aCAib3JpZ2luIiByZWZlcnJlciBwb2xpY3kKK1BBU1MgU2FtZS1vcmlnaW4g
dG9wLWxldmVsIG1vZHVsZSBzY3JpcHQgbG9hZGluZyB3aXRoICJzYW1lLW9yaWdpbiIgcmVmZXJy
ZXIgcG9saWN5CitGQUlMIFNhbWUtb3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0aCAibm8tcmVmZXJy
ZXIiIHJlZmVycmVyIHBvbGljeS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIiIgYnV0IGdvdCAi
aHR0cDovL2xvY2FsaG9zdDo4ODAwL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvc3RhdGljLWlt
cG9ydC1zYW1lLW9yaWdpbi1yZWZlcnJlci1jaGVja2VyLXdvcmtlci5qcyIKK0ZBSUwgU2FtZS1v
cmlnaW4gc3RhdGljIGltcG9ydCB3aXRoICJvcmlnaW4iIHJlZmVycmVyIHBvbGljeS4gYXNzZXJ0
X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC8iIGJ1dCBnb3QgImh0dHA6
Ly9sb2NhbGhvc3Q6ODgwMC93b3JrZXJzL21vZHVsZXMvcmVzb3VyY2VzL3N0YXRpYy1pbXBvcnQt
c2FtZS1vcmlnaW4tcmVmZXJyZXItY2hlY2tlci13b3JrZXIuanMiCitQQVNTIFNhbWUtb3JpZ2lu
IHN0YXRpYyBpbXBvcnQgd2l0aCAic2FtZS1vcmlnaW4iIHJlZmVycmVyIHBvbGljeS4KK0ZBSUwg
Q3Jvc3Mtb3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0aCAibm8tcmVmZXJyZXIiIHJlZmVycmVyIHBv
bGljeS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIiIgYnV0IGdvdCAiaHR0cDovL2xvY2FsaG9z
dDo4ODAwLyIKK1BBU1MgQ3Jvc3Mtb3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0aCAib3JpZ2luIiBy
ZWZlcnJlciBwb2xpY3kuCitGQUlMIENyb3NzLW9yaWdpbiBzdGF0aWMgaW1wb3J0IHdpdGggInNh
bWUtb3JpZ2luIiByZWZlcnJlciBwb2xpY3kuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIiIGJ1
dCBnb3QgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC8iCitQQVNTIFNhbWUtb3JpZ2luIGR5bmFtaWMg
aW1wb3J0IHdpdGggIm5vLXJlZmVycmVyIiByZWZlcnJlciBwb2xpY3kuCitQQVNTIFNhbWUtb3Jp
Z2luIGR5bmFtaWMgaW1wb3J0IHdpdGggIm9yaWdpbiIgcmVmZXJyZXIgcG9saWN5LgorUEFTUyBT
YW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydCB3aXRoICJzYW1lLW9yaWdpbiIgcmVmZXJyZXIgcG9s
aWN5LgorUEFTUyBDcm9zcy1vcmlnaW4gZHluYW1pYyBpbXBvcnQgd2l0aCAibm8tcmVmZXJyZXIi
IHJlZmVycmVyIHBvbGljeS4KK1BBU1MgQ3Jvc3Mtb3JpZ2luIGR5bmFtaWMgaW1wb3J0IHdpdGgg
Im9yaWdpbiIgcmVmZXJyZXIgcG9saWN5LgorUEFTUyBDcm9zcy1vcmlnaW4gZHluYW1pYyBpbXBv
cnQgd2l0aCAic2FtZS1vcmlnaW4iIHJlZmVycmVyIHBvbGljeS4KKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42NTE5Y2QxZjY5NDczMjc1YThkNmFhMjVjN2U3OTZlM2I1MmQxMTY5Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRv
dy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorCitQQVNTIFN0YXRpYyBpbXBvcnQuCitQ
QVNTIFN0YXRpYyBpbXBvcnQgKGNyb3NzLW9yaWdpbikuCitQQVNTIFN0YXRpYyBpbXBvcnQgKHJl
ZGlyZWN0KS4KK1BBU1MgTmVzdGVkIHN0YXRpYyBpbXBvcnQuCitQQVNTIFN0YXRpYyBpbXBvcnQg
YW5kIHRoZW4gZHluYW1pYyBpbXBvcnQuCitQQVNTIER5bmFtaWMgaW1wb3J0LgorUEFTUyBOZXN0
ZWQgZHluYW1pYyBpbXBvcnQuCitQQVNTIER5bmFtaWMgaW1wb3J0IGFuZCB0aGVuIHN0YXRpYyBp
bXBvcnQuCitQQVNTIGV2YWwoaW1wb3J0KCkpLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVs
ZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmEyYjE4YjUyNDkyODA3ZDZkOWUwNzllZjk5YjQ1MGE1OTkyZGFkMjQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNy
ZWRlbnRpYWxzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM1IEBACisKK1BBU1MgVGVzdCBpbml0
aWFsaXphdGlvbjogc2V0dGluZyB1cCBjcm9zcy1vcmlnaW4gY29va2llCitQQVNTIG5ldyBTaGFy
ZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBkZWZhdWx0IGNyZWRlbnRpYWxzIG9wdGlv
biBzaG91bGQgYmVoYXZlIGFzIGNyZWRlbnRpYWxzPXNhbWUtb3JpZ2luIGFuZCBzZW5kIHRoZSBj
cmVkZW50aWFscworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQg
Y3JlZGVudGlhbHM9b21pdCBzaG91bGQgbm90IHNlbmQgdGhlIGNyZWRlbnRpYWxzCitQQVNTIG5l
dyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBjcmVkZW50aWFscz1zYW1lLW9y
aWdpbiBzaG91bGQgc2VuZCB0aGUgY3JlZGVudGlhbHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigp
IHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPWluY2x1ZGUgc2hvdWxkIHNlbmQgdGhl
IGNyZWRlbnRpYWxzCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFu
ZCBkZWZhdWx0IGNyZWRlbnRpYWxzIG9wdGlvbiBzaG91bGQgYmVoYXZlIGFzIGNyZWRlbnRpYWxz
PXNhbWUtb3JpZ2luIGFuZCBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3Igc2FtZS1vcmlnaW4gc3Rh
dGljIGltcG9ydHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5k
IGNyZWRlbnRpYWxzPW9taXQgc2hvdWxkIG5vdCBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3Igc2Ft
ZS1vcmlnaW4gc3RhdGljIGltcG9ydHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlw
ZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPXNhbWUtb3JpZ2luIHNob3VsZCBzZW5kIHRoZSBjcmVk
ZW50aWFscyBmb3Igc2FtZS1vcmlnaW4gc3RhdGljIGltcG9ydHMKK1BBU1MgbmV3IFNoYXJlZFdv
cmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPWluY2x1ZGUgc2hvdWxkIHNl
bmQgdGhlIGNyZWRlbnRpYWxzIGZvciBzYW1lLW9yaWdpbiBzdGF0aWMgaW1wb3J0cworUEFTUyBu
ZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQgZGVmYXVsdCBjcmVkZW50aWFs
cyBvcHRpb24gc2hvdWxkIGJlaGF2ZSBhcyBjcmVkZW50aWFscz1zYW1lLW9yaWdpbiBhbmQgbm90
IHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gc3RhdGljIGltcG9ydHMKK1BB
U1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPW9t
aXQgc2hvdWxkIG5vdCBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3IgY3Jvc3Mtb3JpZ2luIHN0YXRp
YyBpbXBvcnRzCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBj
cmVkZW50aWFscz1zYW1lLW9yaWdpbiBzaG91bGQgbm90IHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZv
ciBjcm9zcy1vcmlnaW4gc3RhdGljIGltcG9ydHMKK0ZBSUwgbmV3IFNoYXJlZFdvcmtlcigpIHdp
dGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPWluY2x1ZGUgc2hvdWxkIHNlbmQgdGhlIGNy
ZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gc3RhdGljIGltcG9ydHMgYXNzZXJ0X2VxdWFsczog
ZXhwZWN0ZWQgIjEiIGJ1dCBnb3QgIiIKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlw
ZT1tb2R1bGUgYW5kIGRlZmF1bHQgY3JlZGVudGlhbHMgb3B0aW9uIHNob3VsZCBiZWhhdmUgYXMg
Y3JlZGVudGlhbHM9c2FtZS1vcmlnaW4gYW5kIHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBzYW1l
LW9yaWdpbiBkeW5hbWljIGltcG9ydHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlw
ZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPW9taXQgc2hvdWxkIG5vdCBzZW5kIHRoZSBjcmVkZW50
aWFscyBmb3Igc2FtZS1vcmlnaW4gZHluYW1pYyBpbXBvcnRzCitQQVNTIG5ldyBTaGFyZWRXb3Jr
ZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBjcmVkZW50aWFscz1zYW1lLW9yaWdpbiBzaG91bGQg
c2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2luIGR5bmFtaWMgaW1wb3J0cworUEFT
UyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQgY3JlZGVudGlhbHM9aW5j
bHVkZSBzaG91bGQgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2luIGR5bmFtaWMg
aW1wb3J0cworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQgZGVm
YXVsdCBjcmVkZW50aWFscyBvcHRpb24gc2hvdWxkIGJlaGF2ZSBhcyBjcmVkZW50aWFscz1zYW1l
LW9yaWdpbiBhbmQgbm90IHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gZHlu
YW1pYyBpbXBvcnRzCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFu
ZCBjcmVkZW50aWFscz1vbWl0IHNob3VsZCBub3Qgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIGNy
b3NzLW9yaWdpbiBkeW5hbWljIGltcG9ydHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGgg
dHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPXNhbWUtb3JpZ2luIHNob3VsZCBub3Qgc2VuZCB0
aGUgY3JlZGVudGlhbHMgZm9yIGNyb3NzLW9yaWdpbiBkeW5hbWljIGltcG9ydHMKK0ZBSUwgbmV3
IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPWluY2x1ZGUg
c2hvdWxkIHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gZHluYW1pYyBpbXBv
cnRzIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIxIiBidXQgZ290ICIiCitQQVNTIG5ldyBTaGFy
ZWRXb3JrZXIoKSB3aXRoIHR5cGU9Y2xhc3NpYyBzaG91bGQgYWx3YXlzIHNlbmQgdGhlIGNyZWRl
bnRpYWxzIHJlZ2FyZGxlc3Mgb2YgdGhlIGNyZWRlbnRpYWxzIG9wdGlvbiAoZGVmYXVsdCkuCitQ
QVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9Y2xhc3NpYyBzaG91bGQgYWx3YXlzIHNl
bmQgdGhlIGNyZWRlbnRpYWxzIHJlZ2FyZGxlc3Mgb2YgdGhlIGNyZWRlbnRpYWxzIG9wdGlvbiAo
b21pdCkuCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9Y2xhc3NpYyBzaG91bGQg
YWx3YXlzIHNlbmQgdGhlIGNyZWRlbnRpYWxzIHJlZ2FyZGxlc3Mgb2YgdGhlIGNyZWRlbnRpYWxz
IG9wdGlvbiAoc2FtZS1vcmlnaW4pLgorUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBl
PWNsYXNzaWMgc2hvdWxkIGFsd2F5cyBzZW5kIHRoZSBjcmVkZW50aWFscyByZWdhcmRsZXNzIG9m
IHRoZSBjcmVkZW50aWFscyBvcHRpb24gKGluY2x1ZGUpLgorUEFTUyBuZXcgU2hhcmVkV29ya2Vy
KCkgd2l0aCB0eXBlPWNsYXNzaWMgc2hvdWxkIGFsd2F5cyBzZW5kIHRoZSBjcmVkZW50aWFscyBm
b3Igc2FtZS1vcmlnaW4gZHluYW1pYyBpbXBvcnRzIHJlZ2FyZGxlc3Mgb2YgdGhlIGNyZWRlbnRp
YWxzIG9wdGlvbiAoZGVmYXVsdCkuCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9
Y2xhc3NpYyBzaG91bGQgYWx3YXlzIHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBzYW1lLW9yaWdp
biBkeW5hbWljIGltcG9ydHMgcmVnYXJkbGVzcyBvZiB0aGUgY3JlZGVudGlhbHMgb3B0aW9uIChv
bWl0KS4KK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1jbGFzc2ljIHNob3VsZCBh
bHdheXMgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2luIGR5bmFtaWMgaW1wb3J0
cyByZWdhcmRsZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKHNhbWUtb3JpZ2luKS4KK1BB
U1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1jbGFzc2ljIHNob3VsZCBhbHdheXMgc2Vu
ZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2luIGR5bmFtaWMgaW1wb3J0cyByZWdhcmRs
ZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKGluY2x1ZGUpLgorUEFTUyBuZXcgU2hhcmVk
V29ya2VyKCkgd2l0aCB0eXBlPWNsYXNzaWMgc2hvdWxkIG5ldmVyIHNlbmQgdGhlIGNyZWRlbnRp
YWxzIGZvciBjcm9zcy1vcmlnaW4gZHluYW1pYyBpbXBvcnRzIHJlZ2FyZGxlc3Mgb2YgdGhlIGNy
ZWRlbnRpYWxzIG9wdGlvbiAoZGVmYXVsdCkuCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRo
IHR5cGU9Y2xhc3NpYyBzaG91bGQgbmV2ZXIgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIGNyb3Nz
LW9yaWdpbiBkeW5hbWljIGltcG9ydHMgcmVnYXJkbGVzcyBvZiB0aGUgY3JlZGVudGlhbHMgb3B0
aW9uIChvbWl0KS4KK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1jbGFzc2ljIHNo
b3VsZCBuZXZlciBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3IgY3Jvc3Mtb3JpZ2luIGR5bmFtaWMg
aW1wb3J0cyByZWdhcmRsZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKHNhbWUtb3JpZ2lu
KS4KK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1jbGFzc2ljIHNob3VsZCBuZXZl
ciBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3IgY3Jvc3Mtb3JpZ2luIGR5bmFtaWMgaW1wb3J0cyBy
ZWdhcmRsZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKGluY2x1ZGUpLgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmVlNTNmMmZmMmQ1ZTA4YWQyOThjNjI3YzcwMzc0NDE5ZjdkYjE5
MzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3Jr
ZXItb3JpZ2luLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKworRkFJTCBSZWZlcmVyIGhl
YWRlciBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiUmVmZXJlcjogaHR0cDovL2xvY2FsaG9zdDo4
ODAwL3hoci9yZXNvdXJjZXMvd29ya2VyeGhyLW9yaWdpbi1yZWZlcnJlci5qc1xuIiBidXQgZ290
ICJSZWZlcmVyOiBodHRwOi8vbG9jYWxob3N0Ojg4MDAveGhyL3Jlc291cmNlcy9yZWRpcmVjdC5w
eT9sb2NhdGlvbj13b3JrZXJ4aHItb3JpZ2luLXJlZmVycmVyLmpzXG4iCitQQVNTIE9yaWdpbiBo
ZWFkZXIKK1BBU1MgUmVxdWVzdCBVUkwgdGVzdAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNTUzOGI1YjM4NmEwNmIzNTcwMWJlMDcwMGY1
OWQ4ODE4ZDNkNjE3Ni4uYWRlZTliODVlZDMxNzgxOWU0ZjI2OTg5ZjZiNTAwNzM1ZjUyNmJlOCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25z
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAt
MjIzLDYgKzIyMyw3IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9z
ZW1hbnRpY3MveGhyLzAwMy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3hoci8wMDQuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy94aHIvMDA2Lmh0bWwgWyBT
a2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29y
a2VyLWZyb20tYmxvYi11cmwud2luZG93Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWluLWRhdGEtdXJsLWNvbnRleHQu
d2luZG93Lmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMuaHRtbCBbIFNraXAgXQogaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1t
aXNtYXRjaC5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvc2hhcmVkLXdvcmtlci1wYXJzZS1lcnJvci1mYWlsdXJlLmh0bWwgWyBTa2lwIF0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYWUyNTY0NTBiOTA5
ZjJjNTEwNmEwNzVlNWQzMTY2OTFhZmFkZjUwYS4uMTlmYmM5NDlkNGFkMWZjNzhiNTQ0MmI4YzYw
NmU4NDRkODljYTExMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RF
eHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTMzNSw2ICszMzUsNyBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvc2VtYW50aWNzL3hoci8wMDMuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy94aHIvMDA0Lmh0bWwgWyBTa2lwIF0KIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MveGhyLzAwNi5o
dG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRvdy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1pbi1kYXRhLXVybC1j
b250ZXh0LndpbmRvdy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25zLmh0bWwgWyBTa2lwIF0K
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW9w
dGlvbnMtbWlzbWF0Y2guaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItcGFyc2UtZXJyb3ItZmFpbHVyZS5odG1sIFsgU2tp
cCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451107</attachid>
            <date>2022-02-07 08:21:54 -0800</date>
            <delta_ts>2022-02-07 12:11:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235958-20220207082153.patch</filename>
            <type>text/plain</type>
            <size>323941</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTQxYmY0NzMyNWMzZDJm
YzRkZThmMzgwZjMyYzZkYmU1NzAwYTkxYS4uODU5ZWUxZmYzZjM4ZTk5NDFhYTAxMmQ5NmY1MDQ3
YTU3ZDZhNmE0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMSBAQAorMjAyMi0wMi0wNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBz
aGFyaW5nIFNoYXJlZCBXb3JrZXJzIChpbmNsdWRpbmcgYWNyb3NzIFdlYlByb2Nlc3NlcykKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTk1OAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vODgzMzA2NjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNoYXJpbmcgU2hhcmVkIFdvcmtl
cnMsIGluY2x1ZGluZyBhY3Jvc3MgV2ViUHJvY2Vzc2VzLiBUaGUgYXJjaGl0ZWN0dXJlCisgICAg
ICAgIGlzIG1vZGVsZWQgYWZ0ZXIgdGhlIG9uZSB3ZSB1c2UgZm9yIFNlcnZpY2UgV29ya2VycyBz
aW5jZSB0aGV5IGFyZSB2ZXJ5IHNpbWlsYXIuIEkgdHJpZWQKKyAgICAgICAgc2hhcmluZyBhcyBt
dWNoIGNvZGUgYXMgcG9zc2libGUgd2l0aCBTZXJ2aWNlIFdvcmtlcnMgYnV0IHNvbWUgbW9yZSB3
b3JrIGNhbiBwcm9iYWJseSBiZQorICAgICAgICBkb25lIGluIHRoaXMgYXJlYS4KKworICAgICAg
ICBXaXRoIHRoaXMgY2hhbmdlLCBzaGFyZWQgd29ya2VycyBzaG91bGQgYmUgbW9zdGx5IGZ1bmN0
aW9uYWwgYW5kIHNwZWMgY29tcGxpYW50LiBIb3dldmVyLAorICAgICAgICB0aGUgZmVhdHVyZSBy
ZW1haW5zIGRpc2FibGVkIGJ5IGRlZmF1bHQgZm9yIG5vdyBhcyB0aGVyZSBhcmUgc3RpbGwgV1BU
IHRlc3RzIGZhaWx1cmVzIEkKKyAgICAgICAgbmVlZCB0byBpbnZlc3RpZ2F0ZS4gQWxzbywgSSBu
ZWVkIHRvIGltcGxlbWVudCBhIGJldHRlciBwcm9jZXNzIHN1c3BlbnNpb24gbG9naWMgb24gaU9T
CisgICAgICAgIHRvIHJlcGxhY2UgdGhlIGhhY2sgSSBhZGRlZCBpbiB0aGlzIHBhdGNoICh0byBt
YWtlIHRoZSB0ZXN0cyBydW4gcmVsaWFibHkgb24gaU9TKS4KKworICAgICAgICBBcyB3aXRoIFNl
cnZpY2UgV29ya2VycywgU2hhcmVkIFdvcmtlcnMgYXJlIHBhcnRpdGlvbmVkIGJ5IChUb3AgT3Jp
Z2luICsgRnJhbWUgT3JpZ2luKQorICAgICAgICBmb3IgcHJpdmFjeSByZWFzb25zLiBUaGlzIGlz
IGFjaGlldmVkIHZpYSB0aGUgU2hhcmVkV29ya2VyS2V5IG9iamVjdCB0aGF0IHdlIHVzZSBhcwor
ICAgICAgICBIYXNoTWFwIGtleS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkg
ZXhpc3RpbmcgV1BUIHRlc3RzLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAg
KiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGxhdGZvcm0vTG9nZ2luZy5oOgorICAgICAgICAqIHdvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXI6OmZy
b21JZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6U2hhcmVkV29ya2VyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6flNoYXJlZFdvcmtlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRXb3JrZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkV29ya2VyOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZFdvcmtlcjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXI6OnRlcm1pbmF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyLmg6CisgICAgICAgICogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmlkbDoKKyAg
ICAgICAgKiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk6Omhhc2ggY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkV29ya2VyS2V5OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkV29ya2VyS2V5OjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6Cisg
ICAgICAgIChXVEY6OkRlZmF1bHRIYXNoPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleT46Omhhc2gp
OgorICAgICAgICAoV1RGOjpEZWZhdWx0SGFzaDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk+Ojpl
cXVhbCk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5
Pjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJD
b3JlOjpTaGFyZWRXb3JrZXJLZXk+Ojppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgICogd29ya2Vy
cy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5jcHA6IFJlbW92ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkV29ya2VyTWFuYWdlcjo6Y29ubmVjdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzY3JpcHRMb2FkRmFpbGVkKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlck1hbmFnZXI6OnNjcmlwdExvYWRlZFN1
Y2Nlc3NmdWxseSk6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyTWFuYWdlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbjo6ZmV0Y2hTY3JpcHRJbkNsaWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRD
b21wbGV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdCk6CisgICAgICAgICogd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAuCisg
ICAgICAgICogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hhcmVkV29ya2VyU2Ny
aXB0TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6
bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6Om5vdGlm
eUZpbmlzaGVkKToKKyAgICAgICAgKiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRM
b2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6b3B0
aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6
OmlkZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyOjpvcHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrZXJzL3No
YXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaGFyZWRXb3JrZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0
b3BTaGFyZWRXb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXI6OnN0b3BBbGxTaGFyZWRXb3JrZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyOjpzZXRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpjb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpyZWdpc3RlclNoYXJlZFdvcmtlclRo
cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29u
bmVjdGlvbjo6cG9zdENvbm5lY3RFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6dGVybWluYXRlU2hhcmVkV29ya2VyKToKKyAg
ICAgICAgKiB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6
OkNvbm5lY3Rpb246On5Db25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uOjppc0Nsb3NlZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6c2V0QXNDbG9z
ZWQpOgorICAgICAgICAqIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFk
UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2VuZXJhdGVXb3JrZXJQYXJhbWV0ZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpTaGFyZWRXb3JrZXJU
aHJlYWRQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6
flNoYXJlZFdvcmtlclRocmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtl
clRocmVhZFByb3h5Ojpub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eTo6Y3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tUb0xvYWRlcik6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eTo6bmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6c3RhcnRXb3JrZXJHbG9iYWxTY29wZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6dGVybWlu
YXRlV29ya2VyR2xvYmFsU2NvcGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
V29ya2VyVGhyZWFkUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tU
b1dvcmtlckdsb2JhbFNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdv
cmtlclRocmVhZFByb3h5OjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Ondvcmtlck9iamVjdERlc3Ry
b3llZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eTo6c3VzcGVuZEZvckJhY2tGb3J3YXJkQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnJlc3VtZUZvckJhY2tGb3J3YXJkQ2FjaGUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Ondvcmtl
ckdsb2JhbFNjb3BlRGVzdHJveWVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpjb25maXJtTWVzc2Fn
ZUZyb21Xb3JrZXJPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29y
a2VyVGhyZWFkUHJveHk6OnJlcG9ydFBlbmRpbmdBY3Rpdml0eSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6d29ya2VyR2xvYmFsU2NvcGVEZXN0
cm95ZWRJbnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zaGFyZWQvY29udGV4
dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oOgorCiAyMDIyLTAyLTA3ICBBbnRvaW5lIFF1aW50
ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtjc3MtbG9naWNhbF0gW3dlYi1hbmlt
YXRpb25zXSBBZGQgc3VwcG9ydCBmb3IgbG9naWNhbCBwcm9wZXJ0aWVzIGluIEpTLW9yaWdpbmF0
ZWQgYW5pbWF0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4NGYzY2NjZGE4YmI4MzExNjE0ZmRiMWM5ODJmZmJi
NTI0MWI2MjViLi4zZjNiNzFiODUwMmYzZmE5OWZkMzFjMjU0YTVjYjQwZDZmNWY3N2Q1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE5NiBAQAorMjAyMi0wMi0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBzaGFyaW5nIFNoYXJlZCBXb3Jr
ZXJzIChpbmNsdWRpbmcgYWNyb3NzIFdlYlByb2Nlc3NlcykKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTk1OAorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vODgzMzA2NjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIHNoYXJpbmcgU2hhcmVkIFdvcmtlcnMsIGluY2x1ZGluZyBhY3Jv
c3MgV2ViUHJvY2Vzc2VzLiBUaGUgYXJjaGl0ZWN0dXJlCisgICAgICAgIGlzIG1vZGVsZWQgYWZ0
ZXIgdGhlIG9uZSB3ZSB1c2UgZm9yIFNlcnZpY2UgV29ya2VycyBzaW5jZSB0aGV5IGFyZSB2ZXJ5
IHNpbWlsYXIuIEkgdHJpZWQKKyAgICAgICAgc2hhcmluZyBhcyBtdWNoIGNvZGUgYXMgcG9zc2li
bGUgd2l0aCBTZXJ2aWNlIFdvcmtlcnMgYnV0IHNvbWUgbW9yZSB3b3JrIGNhbiBwcm9iYWJseSBi
ZQorICAgICAgICBkb25lIGluIHRoaXMgYXJlYS4KKworICAgICAgICBXaXRoIHRoaXMgY2hhbmdl
LCBzaGFyZWQgd29ya2VycyBzaG91bGQgYmUgbW9zdGx5IGZ1bmN0aW9uYWwgYW5kIHNwZWMgY29t
cGxpYW50LiBIb3dldmVyLAorICAgICAgICB0aGUgZmVhdHVyZSByZW1haW5zIGRpc2FibGVkIGJ5
IGRlZmF1bHQgZm9yIG5vdyBhcyB0aGVyZSBhcmUgc3RpbGwgV1BUIHRlc3RzIGZhaWx1cmVzIEkK
KyAgICAgICAgbmVlZCB0byBpbnZlc3RpZ2F0ZS4gQWxzbywgSSBuZWVkIHRvIGltcGxlbWVudCBh
IGJldHRlciBwcm9jZXNzIHN1c3BlbnNpb24gbG9naWMgb24gaU9TCisgICAgICAgIHRvIHJlcGxh
Y2UgdGhlIGhhY2sgSSBhZGRlZCBpbiB0aGlzIHBhdGNoICh0byBtYWtlIHRoZSB0ZXN0cyBydW4g
cmVsaWFibHkgb24gaU9TKS4KKworICAgICAgICBBcyB3aXRoIFNlcnZpY2UgV29ya2VycywgU2hh
cmVkIFdvcmtlcnMgYXJlIHBhcnRpdGlvbmVkIGJ5IChUb3AgT3JpZ2luICsgRnJhbWUgT3JpZ2lu
KQorICAgICAgICBmb3IgcHJpdmFjeSByZWFzb25zLiBUaGlzIGlzIGFjaGlldmVkIHZpYSB0aGUg
U2hhcmVkV29ya2VyS2V5IG9iamVjdCB0aGF0IHdlIHVzZSBhcworICAgICAgICBIYXNoTWFwIGtl
eS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Om1fc2NoZW1lUmVnaXN0cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6fk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENs
b3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVz
dGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Y2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU2hhcmVkV29ya2Vy
Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpzaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRl
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzaGFy
ZWRXb3JrZXJDb25uZWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246
OmVuc3VyZVNoYXJlZFdvcmtlclNlcnZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OnNoYXJlZFdv
cmtlclNlcnZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNo
YXJlZFdvcmtlci5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwLgorICAgICAgICAoV2ViS2l0
OjpXZWJTaGFyZWRXb3JrZXI6OldlYlNoYXJlZFdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNoYXJlZFdvcmtlcjo6fldlYlNoYXJlZFdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNo
YXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRX
b3JrZXI6OnJlZ2lzdHJhYmxlRG9tYWluIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJTaGFyZWRXb3JrZXI6OmlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTaGFyZWRXb3JrZXI6OmtleSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdv
cmtlcjo6d29ya2VyT3B0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdv
cmtlcjo6b3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyOjp1
cmwgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OnNoYXJlZFdvcmtl
ck9iamVjdHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OmlzUnVubmluZyBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6bWFya0FzUnVubmluZyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6ZmV0Y2hSZXN1bHQgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OnNldEZldGNoUmVzdWx0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyOjpkaWRGaW5pc2hGZXRjaGluZyBjb25zdCk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZl
ci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6Oldl
YlNoYXJlZFdvcmtlclNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNl
cnZlcjo6c2Vzc2lvbklEKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVy
OjpyZXF1ZXN0U2hhcmVkV29ya2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2Vy
U2VydmVyOjpkaWRGaW5pc2hGZXRjaGluZ1NoYXJlZFdvcmtlclNjcmlwdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6bmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJl
Z2lzdHJhYmxlRG9tYWluIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2Vy
U2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNo
YXJlZFdvcmtlclNlcnZlcjo6YWRkQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpjb250ZXh0Q29ubmVjdGlvbkNyZWF0
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNoYXJlZFdvcmtl
ck9iamVjdElzR29pbmdBd2F5KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2Vy
dmVyOjpzaHV0RG93blNoYXJlZFdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdv
cmtlclNlcnZlcjo6YWRkQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdv
cmtlclNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJl
ZFdvcmtlclNlcnZlcjo6Y29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbiBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cG9zdEV4Y2VwdGlv
blRvV29ya2VyT2JqZWN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyU2VydmVyLmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OldlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjp+V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Om1lc3Nh
Z2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbjo6c2Vzc2lvbklEKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OnJlcXVlc3RTaGFyZWRXb3JrZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpzaGFyZWRXb3Jr
ZXJPYmplY3RJc0dvaW5nQXdheSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNl
cnZlckNvbm5lY3Rpb246OmZldGNoU2NyaXB0SW5DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRD
b21wbGV0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2Vy
dmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6
c2VydmVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbjo6d2ViUHJvY2Vzc0lkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp3ZWJQcm9jZXNzSWRlbnRpZmllciBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OmlwY0Nvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbiBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlv
bklzTm9Mb25nZXJOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjps
YXVuY2hTaGFyZWRXb3JrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpwb3N0Q29ubmVjdEV2ZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlU2hh
cmVkV29ya2VyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogUGxhdGZvcm0vTG9nZ2lu
Zy5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAodHlw
ZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCk6CisgICAgICAgICogU291cmNlcy50
eHQ6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVVucmVzcG9u
c2l2ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxp
c2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2VydmljZVdvcmtlckNvbnRleHRDb25u
ZWN0aW9uTm9Mb25nZXJOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1By
b3h5OjpzaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzZXRVc2VyQWdlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNl
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OmRpc2Nvbm5lY3RQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6dXBkYXRlV29ya2VyVXNlckFnZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OndvcmtlclByb2Nlc3Nlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjppc1NlcnZpY2VXb3JrZXJQYWdlSUQgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6c2VydmljZVdvcmtlclByb3hpZXNDb3VudCBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3Vu
ZEFjdGl2aXR5Rm9yVGVzdGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpoYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZyBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZW1vdmVGcm9tU2VydmljZVdvcmtl
clByb2Nlc3Nlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBkYXRlU2VydmljZVdvcmtlclVz
ZXJBZ2VudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
TWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXRXb3JrZXJV
c2VyQWdlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtl
clByZWZlcmVuY2VzU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVw
ZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UHJveHk6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xp
ZW50UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c3RhcnRTZXJ2
aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlzYWJsZVdvcmtlcnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVdvcmtlcnMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNl
V29ya2VyUHJlZmVyZW5jZXNTdG9yZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQcm94eTo6dXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24pOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpc2FibGVTZXJ2aWNlV29ya2Vy
cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5hYmxlU2Vy
dmljZVdvcmtlcnMpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojppc1J1bm5pbmdTaGFyZWRX
b3JrZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojppc1N0YW5k
YWxvbmVTaGFyZWRXb3JrZXJQcm9jZXNzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Byb3h5Ojppc1J1bm5pbmdXb3JrZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Byb3h5OjpoYXNTZXJ2aWNlV29ya2VyUGFnZVByb3h5KToKKyAgICAgICAgKiBXZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjptX3VzZXJDb250ZW50Q29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6
OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZXN0YWJsaXNoQ29ubmVj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp1cGRhdGVQcmVmZXJlbmNl
c1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpsYXVuY2hTaGFyZWRXb3JrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmNsb3NlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6
IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6V2ViU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb246On5XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6cmVxdWVzdFNoYXJl
ZFdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b246OnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCiAyMDIyLTAyLTA3ICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV2Vi
RHJpdmVyXSBBZGQgc3VwcG9ydCBmb3Igc2hhZG93IHJvb3RzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRl
eCAzZmNlOTVmNTc1NjlkYTczZDUwOTI5YmU1NDJjZmI3NDQ5ZDc5ZDUyLi4zMzJiMDAzMzAyYzNl
Zjk2MmZhNzJmYjNmODg0Y2Y1ZjgyNzFkNDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTE5NjQs
OSArMTk2NCwxMiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
d29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAogICAgIHdvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuaAogICAgIHdvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaAorICAgIHdvcmtlcnMvV29y
a2VyT2JqZWN0UHJveHkuaAorICAgIHdvcmtlcnMvV29ya2VyT3B0aW9ucy5oCiAgICAgd29ya2Vy
cy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCiAgICAgd29ya2Vycy9Xb3JrZXJPcldvcmts
ZXRTY3JpcHRDb250cm9sbGVyLmgKICAgICB3b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5o
CisgICAgd29ya2Vycy9Xb3JrZXJSZXBvcnRpbmdQcm94eS5oCiAgICAgd29ya2Vycy9Xb3JrZXJS
dW5Mb29wLmgKICAgICB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCiAgICAgd29ya2Vycy9X
b3JrZXJTY3JpcHRMb2FkZXJDbGllbnQuaApAQCAtMjAxMCw5ICsyMDEzLDEyIEBAIHNldChXZWJD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyV29ya2VyLmgKIAogICAgIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlcklkZW50
aWZpZXIuaAotICAgIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuaAorICAgIHdv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlcktleS5oCiAgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oCisgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllci5oCiAgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJvdmlk
ZXIuaAorCisgICAgd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlci5oCiAgICAgd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWQuaAog
ICAgIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlk
ZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
SWRlbnRpZmllci5oCmluZGV4IDZjMGIxYjRmMmFiMGMwMzMwNzY2NTRlYTRiMjc2NTU5NDQ1ODk1
MzYuLmM2OWFkZjk3MDcwZmU4YjEyYjlhNTU0MDgzNDU5ZTU2OWI2NzMwYzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRp
Zmllci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCkBAIC01MSwxNiArNTIsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2Rh
dGFiYXNlTmFtZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOwogICAgIH0KIAotICAgIHVuc2ln
bmVkIGhhc2goKSBjb25zdAotICAgIHsKLSAgICAgICAgdW5zaWduZWQgbmFtZUhhc2ggPSBTdHJp
bmdIYXNoOjpoYXNoKG1fZGF0YWJhc2VOYW1lKTsKLSAgICAgICAgdW5zaWduZWQgb3JpZ2luSGFz
aCA9IG1fb3JpZ2luLmhhc2goKTsKLSAgICAgICAgdW5zaWduZWQgdHJhbnNpZW50SGFzaCA9IG1f
aXNUcmFuc2llbnQ7Ci0KLSAgICAgICAgdW5zaWduZWQgaGFzaENvZGVzWzNdID0geyBuYW1lSGFz
aCwgb3JpZ2luSGFzaCwgdHJhbnNpZW50SGFzaCB9OwotICAgICAgICByZXR1cm4gU3RyaW5nSGFz
aGVyOjpoYXNoTWVtb3J5PHNpemVvZihoYXNoQ29kZXMpPihoYXNoQ29kZXMpOwotICAgIH0KLQog
ICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gIW1fZGF0YWJh
c2VOYW1lLmlzTnVsbCgpCkBAIC05OSw4ICs5MCwxMyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9p
c1RyYW5zaWVudCB7IGZhbHNlIH07CiB9OwogCitpbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNo
ZXIsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKK3sKKyAgICBhZGQo
aGFzaGVyLCBpZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLCBpZGVudGlmaWVyLm9yaWdpbigpLCBp
ZGVudGlmaWVyLmlzVHJhbnNpZW50KCkpOworfQorCiBzdHJ1Y3QgSURCRGF0YWJhc2VJZGVudGlm
aWVySGFzaCB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgSURCRGF0YWJhc2VJZGVu
dGlmaWVyJiBhKSB7IHJldHVybiBhLmhhc2goKTsgfQorICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNo
KGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgYSkgeyByZXR1cm4gY29tcHV0ZUhhc2goYSk7
IH0KICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGEs
IGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgYikgeyByZXR1cm4gYSA9PSBiOyB9CiAgICAg
c3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CmluZGV4IDgxNGFhNGZkYjhiZDRlZjFlYzZhZmMwNWIwZTg0MGNmOGZk
ZWUzMDMuLjA3MmM0ZjJhOGZiZGQyODVjOWZhYjlhNTIwMzc4YzdkZjBhOWNiZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CkBAIC0yNzg2LDEwICsyNzg2LDEwIEBAIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlcldvcmtlci5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAKIHdvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAotd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyTWFuYWdlci5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24uY3BwCiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5jcHAKIHdvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAKK3dvcmtlcnMvc2hhcmVkL2Nv
bnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwCiB3b3JrZXJzL3NoYXJlZC9jb250
ZXh0L1NoYXJlZFdvcmtlclRocmVhZC5jcHAKIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVk
V29ya2VyVGhyZWFkUHJveHkuY3BwCiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAzNzBkMTBhOTE3ZTI1NGQ3N2E0YjcxOWIxYmUxMTBiZGYyZTk3NmY2Li41ZGE1NTA2
M2VlYjE3Y2Y2NDA5MWMxZGI3ZWEwYjQ4ZTFhYWUzYjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MDMsNyArOTAzLDcgQEAK
IAkJMkU0MzQ2NEIwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjM5MEY1
NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZVByb3h5LmggKi87IH07CiAJCTJFNDM0
NjREMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2M0IwRjU0NkE4MjAwQjBGMUJBIC8q
IFdvcmtlckxvY2F0aW9uLmggKi87IH07CiAJCTJFNDM0NjUwMEY1NDZBODIwMEIwRjFCQSAvKiBX
b3JrZXJNZXNzYWdpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkU0MzQ2M0UwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck1lc3NhZ2luZ1By
b3h5LmggKi87IH07Ci0JCTJFNDM0NjUxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQ
cm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0
MzQ2M0YwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5LmggKi87IH07CisJCTJF
NDM0NjUxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94eS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2M0YwRjU0NkE4MjAwQjBG
MUJBIC8qIFdvcmtlck9iamVjdFByb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2NTMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclJ1
bkxvb3AuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJF
NDM0NjQxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJSdW5Mb29wLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2NTUwRjU0NkE4MjAwQjBG
MUJBIC8qIFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkU0MzQ2NDMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFNzU4NDFF
MTI3NzlBREEwMDYyNjI4QiAvKiBGaWxlUmVhZGVyTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTc1ODQxQjEyNzc5QURBMDA2MjYyOEIgLyog
RmlsZVJlYWRlckxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0xMTI1LDcgKzExMjUsNyBAQAogCQk0MTZBMDZBMTIzQ0NBRDAzMDAzNDcx
MDkgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkEwNjk2MjNDQ0FBOUYwMDM0NzEwOSAvKiBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkQ3NUEyMjBDNjUxQTUwMEQwMkQyQyAvKiBOZXR3
b3JrTG9hZEluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTZENzU5RjIwQzY0NDEzMDBEMDJEMkMgLyogTmV0d29ya0xvYWRJbmZvcm1h
dGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQxNkUwQjNBMjA5QkMzQ0IwMDRBOTVEOSAvKiBGZXRjaElkZW50aWZpZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkUwQjM3MjA5QkMzQzIwMDRB
OTVEOSAvKiBGZXRjaElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQk0MTZFMjlBNjEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVw
b3J0aW5nUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxNkUyOUE1MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICov
OyB9OworCQk0MTZFMjlBNjEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkUyOUE1
MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU4MUJCRDEyREYwMDBB
M0Y2NCAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RDkg
LyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU4MUJCRDEyREYwMDBBM0Y2NSAv
KiBKU0RPTUJpbmRpbmdJbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NERBIC8qIEpTRE9N
QmluZGluZ0ludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgxQkJEMTJERjAwMEEzRjc0IC8qIFRyYW5zZm9y
bVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RUEgLyogVHJhbnNmb3JtU3Ry
ZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMTM0NywxNCArMTM0NywxNiBAQAogCQk0NjdBNjhENzI3NUVBOTkx
MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdBNjhENDI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVk
V29ya2VyVGhyZWFkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDY3QTY4RDgyNzVFQTk5NTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExv
YWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3
QTY4RDUyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oICovOyB9
OwogCQk0NjdBNjhEOTI3NUVBOTk4MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0E2OEQ2
Mjc1RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQ2N0E2OERBMjc1RUE5OUMw
MDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdBNjhEMjI3NUVBOThBMDA5QjMxQzUgLyogU2hhcmVk
V29ya2VyTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQ2ODJEMjAwMUY3OTc4MzAwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFsc1Bv
bGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4
MkQxRkYxRjc5NzgyMzAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4MzQ0RTAxRURE
RkFBQTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExp
c3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
NjgzREY0MDI3NjdERjk4MDA3RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4M0RGM0Uy
NzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaCAqLzsgfTsK
IAkJNDY4M0RGNDEyNzY3RTkxQTAwN0QwMEM4IC8qIFNoYWRvd1JlYWxtR2xvYmFsU2NvcGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODNERjNCMjc2
N0RGMjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4OEVFM0MyNkREMjYxMDAwMkFG
NUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDY4OEVFM0EyNkREMjYwQzAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9k
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2
OTQzREM5Mjc2M0Y4MTcwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0M0RDNzI3
NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2OTg1RjIzMjdBNEE2
QUQwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTg1RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRX
b3JrZXJLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NjlDQ0NGRTI2OUQwMjFDMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5Q0NDRkMyNjlEMDIw
MjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjlENzdCODI3MDE2MjUxMDAxNDJGQTYgLyogTmF2
aWdhdGlvblJlcXVlc3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDY5RDc3QjYyNzAxNjI1MDAwMTQyRkE2IC8qIE5hdmlnYXRpb25SZXF1ZXN0ZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NkE3
OEIzNDI3OTlCRDcxMDAxMTU0RkUgLyogV29ya2VyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxQjFEMjYyNkYxOEE0QjAwODgyREEyIC8q
IFdvcmtlck9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0NkFBQUEzRDI1RDM2MzIwMDBCQUY0MkYgLyogQXVkaW9GaWxlUmVhZGVyQ29j
b2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QUFB
QTNBMjVEMzYzMTQwMEJBRjQyRiAvKiBBdWRpb0ZpbGVSZWFkZXJDb2NvYS5oICovOyB9OwogCQk0
NkI2M0Y2QzFDNkU4RDE5MDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjNGNkIxQzZFOENERjAw
MkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI2NTBERDIyOTYyNjI3MDBGRDhBQTQgLyogUGFn
ZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2QjY1MERCMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzc1LDYgKzEzNzcs
NyBAQAogCQk0NkM2OTZDQzFFNzIwNUZDMDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM2OTZDQTFFNzIwNUU0
MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgKi87IH07CiAJCTQ2QzgzRUZFMUE5QkJFMjkwMEE3
OUE0MSAvKiBHZW9Ob3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDZDODNFRkMxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZDQTlDNDQx
Rjk3QkJFOTAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDQTlDNDExRjk3QkJFNzAwNENGQzNBIC8qIFZp
c2liaWxpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTQ2Q0Y1MDRBMjdBQjFFQTQwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDZDRjUwNDgyN0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZEMDAw
NDAyNkEwRkVCMzAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkQwMDAzRTI2QTBGRTZGMDBEMUJGMUUgLyogU3Vi
bWl0RXZlbnQuaCAqLzsgfTsKIAkJNDZEQTRBMDIyN0FCMDM5MzAwRTM3NUE4IC8qIFRyYW5zZmVy
cmVkTWVzc2FnZVBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2REE0QTAwMjdBQjAzOEQwMEUzNzVBOCAvKiBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZE
QkI2NTAxQUI4Qzk2RjAwRDlBODEzIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REJCNjRFMUFCOEM5NkYwMEQ5QTgx
MyAvKiBQb3dlck9ic2VydmVyTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTkyNDcsOCArOTI1MCw2IEBACiAJCTQ2N0E2OENGMjc1RUE5ODkw
MDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2N0E2OEQwMjc1RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDY3QTY4RDEyNzVFQTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNj
cmlwdExvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NjdBNjhEMjI3NUVBOThBMDA5
QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3Jr
ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2N0E2OEQzMjc1RUE5
OEIwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNoYXJlZFdvcmtlck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjdBNjhENDI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNoYXJlZFdvcmtlclRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjdBNjhENTI3NUVBOThDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NjdBNjhENjI3NUVBOThDMDA5QjMxQzUgLyogU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkyNjQsNiArOTI2NSw4IEBACiAJCTQ2ODNE
RjNFMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJh
c2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OEVFM0EyNkREMjYwQzAwMkFG
NUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcm9zc09yaWdpbk1vZGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4QjhCREUyNUNDODQ5MzAwRjY3ODIy
IC8qIEpTQmFzZUF1ZGlvQ29udGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Jh
c2VBdWRpb0NvbnRleHRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
Njk0M0RDNzI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTg1RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRX
b3JrZXJLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2Vy
S2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OUNDQ0ZBMjY5RDAyMDIwMDZF
MDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJyb2FkY2Fz
dENoYW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlDQ0NGQzI2OUQw
MjAyMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCcm9hZGNh
c3RDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OUNDQ0ZEMjY5RDAy
MDMwMDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBCcm9hZGNhc3RDaGFubmVs
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkzMDQsNiArOTMwNyw4IEBACiAJ
CTQ2QzgzRUZDMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHZW9Ob3RpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NkNBOUM0MTFGOTdCQkU3MDA0Q0ZDM0EgLyogVmlzaWJpbGl0eVN0YXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpc2liaWxpdHlTdGF0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkNBOUM0MjFGOTdCQkU3MDA0Q0ZDM0EgLyogVmlzaWJp
bGl0eVN0YXRlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBWaXNpYmlsaXR5U3RhdGUuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkNGNTA0ODI3QUIxRUExMDA3MERCQzgg
LyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZDRjUw
NDkyN0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZEMDAwM0MyNkEwRkU2RjAwRDFCRjFFIC8qIFN1Ym1pdEV2
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN1Ym1pdEV2ZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZEMDAwM0UyNkEwRkU2RjAwRDFC
RjFFIC8qIFN1Ym1pdEV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1
Ym1pdEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RDAwMDNGMjZBMEZF
NzAwMEQxQkYxRSAvKiBTdWJtaXRFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU3Vi
bWl0RXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE1NzYsNiArMjE1
ODEsOCBAQAogCQk0NjQ3Q0U2MTI3QUFFMURBMDA5Q0JENDggLyogY29udGV4dCAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDZDRjUwNDkyN0FCMUVBMTAw
NzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcCAqLywKKwkJCQk0NkNGNTA0
ODI3QUIxRUExMDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCAqLywKIAkJ
CQk0NjdBNjhEMDI3NUVBOTg5MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmNwcCAqLywK
IAkJCQk0NjdBNjhENDI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggKi8s
CiAJCQkJNDY3QTY4Q0YyNzVFQTk4OTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5
LmNwcCAqLywKQEAgLTIxNTk1LDEwICsyMTYwMiwxMCBAQAogCQkJCTQ2Njk0Q0UxMjc1OTQ0OEMw
MEUzMTUwRSAvKiBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oICovLAogCQkJCTQ2Njk0Q0UwMjc1
OTQ0OEMwMEUzMTUwRSAvKiBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5pZGwgKi8sCiAJCQkJNDZF
QzQ0NDgyN0FCMzM3RjAwRkZDRDk2IC8qIFNoYXJlZFdvcmtlcklkZW50aWZpZXIuaCAqLywKLQkJ
CQk0NjdBNjhEMzI3NUVBOThCMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5jcHAgKi8s
Ci0JCQkJNDY3QTY4RDIyNzVFQTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCAq
LywKKwkJCQk0Njk4NUYyMjI3QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggKi8s
CiAJCQkJNDY2OEEwQjMyN0FCNjAwQjAwQzcyMEJDIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24uY3BwICovLAogCQkJCTQ2NjhBMEIxMjdBQjYwMEIwMEM3MjBCQyAvKiBTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uLmggKi8sCisJCQkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8q
IFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAqLywKIAkJCQk0NjY4QTBCNDI3QUI2MDBD
MDBDNzIwQkMgLyogU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwICovLAogCQkJCTQ2NjhBMEI1MjdB
QjYwMEMwMEM3MjBCQyAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5oICovLAogCQkJCTQ2N0E2OEQx
Mjc1RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwICovLApAQCAt
MzcyMTUsOSArMzcyMjIsMTEgQEAKIAkJCQk4MzRERkFEMDFGN0RBRTVEMDBDMjcyNUIgLyogU2hh
cmVkU3RyaW5nSGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFQTMwOTlFQjc4QzAwNTZF
NTgxIC8qIFNoYXJlZFRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURDMDRGRTI3QTgzQzkz
MDA4Q0Y5NjggLyogU2hhcmVkVmlkZW9GcmFtZUluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2
Q0Y1MDRBMjdBQjFFQTQwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDZFQzQ0NEEyN0FCMzM4OTAwRkZDRDk2IC8qIFNoYXJlZFdvcmtl
cklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ2N0E2OERBMjc1RUE5OUMwMDlCMzFD
NSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0Njk4NUYyMzI3
QTRBNkFEMDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0
NjY4QTBCNjI3QUI2MDFCMDBDNzIwQkMgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDY5NDNEQzkyNzYzRjgxNzAwNEI2MTBFIC8qIFNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2NjhBMEI3MjdBQjYw
MjEwMEM3MjBCQyAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDY3QTY4RDgyNzVFQTk5NTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDY3QTY4RDcyNzVFQTk5MTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtl
clRocmVhZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zODA3OCw2ICszODA4Nyw3IEBACiAJCQkJRTEy
NzFBMEIwRUVFQzc3QTAwRjYxMjEzIC8qIFdvcmtlck5hdmlnYXRvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTVDQjA1MjUxRkI1MUYzQTAwMDg5Qjk3IC8qIFdvcmtlck5ldHdvcmtBZ2VudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMkU0MzQ2NTEwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVj
dFByb3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkE3OEIzNDI3OTlCRDcxMDAxMTU0RkUgLyog
V29ya2VyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNENkFBRTYyNTI0RUUxQzAwNDI4
QjRCIC8qIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
MzlBMDk1RDI1MjRGMzdGMDBFRUYzMjggLyogV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNGNkFFQkYyNTI3QkIwQzAwMzRCQ0QzIC8qIFdvcmtl
ck9yV29ya2xldFRocmVhZC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NsaWVudE9yaWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmln
aW4uaAppbmRleCBmNDM0NWFlNGExYzJlMmZkMzBlN2VjNGUwOWVlMWIyYzBhZDM2MjBlLi5lZTQ3
Y2FhYThkMGRkZTNmODkxNzlhNzU2MzFlYTM0Y2JlMzYzMTJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xp
ZW50T3JpZ2luLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJSZWdpc3RyYWJsZURvbWFp
bi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
VHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsNyArMzYsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBzdHJ1Y3QgQ2xpZW50T3JpZ2luIHsKICAgICBzdGF0aWMgQ2xpZW50T3JpZ2luIGVtcHR5
S2V5KCkgeyByZXR1cm4geyB9OyB9CiAKLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CiAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IENsaWVudE9yaWdpbiYpIGNvbnN0OwogICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBDbGllbnRPcmlnaW4mIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsgfQogCkBAIC01MSwxMyArNTEsOSBAQCBzdHJ1Y3QgQ2xpZW50T3JpZ2luIHsK
ICAgICBTZWN1cml0eU9yaWdpbkRhdGEgY2xpZW50T3JpZ2luOwogfTsKIAotaW5saW5lIHVuc2ln
bmVkIENsaWVudE9yaWdpbjo6aGFzaCgpIGNvbnN0CitpbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBo
YXNoZXIsIGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKQogewotICAgIHVuc2lnbmVkIGhhc2hl
c1syXTsKLSAgICBoYXNoZXNbMF0gPSBTZWN1cml0eU9yaWdpbkRhdGFIYXNoOjpoYXNoKHRvcE9y
aWdpbik7Ci0gICAgaGFzaGVzWzFdID0gU2VjdXJpdHlPcmlnaW5EYXRhSGFzaDo6aGFzaChjbGll
bnRPcmlnaW4pOwotCi0gICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeShoYXNoZXMs
IHNpemVvZihoYXNoZXMpKTsKKyAgICBhZGQoaGFzaGVyLCBvcmlnaW4udG9wT3JpZ2luLCBvcmln
aW4uY2xpZW50T3JpZ2luKTsKIH0KIAogaW5saW5lIGJvb2wgQ2xpZW50T3JpZ2luOjpvcGVyYXRv
cj09KGNvbnN0IENsaWVudE9yaWdpbiYgb3RoZXIpIGNvbnN0CkBAIC05NSw3ICs5MSw3IEBAIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBzdGQ6Om9wdGlvbmFsPENsaWVudE9yaWdpbj4g
Q2xpZW50T3JpZ2luOjpkZWNvZGUoCiBuYW1lc3BhY2UgV1RGIHsKIAogc3RydWN0IENsaWVudE9y
aWdpbktleUhhc2ggewotICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgc3RhdGljIHVuc2ln
bmVkIGhhc2goY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBrZXkpIHsgcmV0dXJuIGNvbXB1
dGVIYXNoKGtleSk7IH0KICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mIGEsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgYikgeyByZXR1cm4gYSA9
PSBiOyB9CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0
ZWQgPSBmYWxzZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
T3JpZ2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKaW5kZXggZTE1
NWVjNmYyNGFlZDE4ODMwYzE4MWVkNzljNGNiNDAxMGQzMTZiYS4uMjAzYmY2YjA4MmRmZmI0Y2Q4
NGY5ZmNmZDhiZjBjYjMzYWUwZjUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4u
aApAQCAtMTUwLDcgKzE1MCw2IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkFjY2Vzc0xvY2FsU3Rv
cmFnZShjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKSBjb25zdCB7IHJldHVybiBjYW5B
Y2Nlc3NTdG9yYWdlKHRvcE9yaWdpbik7IH07CiAgICAgYm9vbCBjYW5BY2Nlc3NQbHVnaW5TdG9y
YWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4pIGNvbnN0IHsgcmV0dXJuIGNhbkFj
Y2Vzc1N0b3JhZ2UoJnRvcE9yaWdpbik7IH0KICAgICBib29sIGNhbkFjY2Vzc0FwcGxpY2F0aW9u
Q2FjaGUoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbikgY29uc3QgeyByZXR1cm4gY2Fu
QWNjZXNzU3RvcmFnZSgmdG9wT3JpZ2luKTsgfQotICAgIGJvb2wgY2FuQWNjZXNzU2hhcmVkV29y
a2Vycyhjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luKSBjb25zdCB7IHJldHVybiBjYW5B
Y2Nlc3NTdG9yYWdlKCZ0b3BPcmlnaW4pOyB9CiAgICAgYm9vbCBjYW5BY2Nlc3NDb29raWVzKCkg
Y29uc3QgeyByZXR1cm4gIWlzVW5pcXVlKCk7IH0KICAgICBib29sIGNhblJlcXVlc3RHZW9sb2Nh
dGlvbigpIGNvbnN0IHsgcmV0dXJuICFpc1VuaXF1ZSgpOyB9CiAgICAgUG9saWN5IGNhblNob3dO
b3RpZmljYXRpb25zKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRh
dGEuaAppbmRleCAzNGI5M2Q2OGIyNzczZmZlMjVmODFjZTc2MDYwOTZmZmIwY2EyODg4Li4zNzM1
MGFhNDBhNmJlMGJkMjZkYzY1NTFiYzcwNDYzNGRhOWMyMzlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC05Nyw2ICs5OCwxMSBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5E
YXRhIHsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKTsKIGlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmaXJzdCwgY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiBzZWNvbmQpIHsgcmV0dXJuICEoZmlyc3QgPT0gc2Vjb25kKTsgfQogCitpbmxpbmUgdm9p
ZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZGF0YSkKK3sK
KyAgICBhZGQoaGFzaGVyLCBkYXRhLnByb3RvY29sLCBkYXRhLmhvc3QsIGRhdGEucG9ydCk7Cit9
CisKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CkBAIC0xMzcsMTUgKzE0Myw3IEBAIHN0cnVj
dCBTZWN1cml0eU9yaWdpbkRhdGFIYXNoVHJhaXRzIDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFNl
Y3VyaXR5T3JpZ2luRGF0YT4KIH07CiAKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGFIYXNoIHsK
LSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGRhdGEp
Ci0gICAgewotICAgICAgICB1bnNpZ25lZCBoYXNoQ29kZXNbM10gPSB7Ci0gICAgICAgICAgICBk
YXRhLnByb3RvY29sLmltcGwoKSA/IGRhdGEucHJvdG9jb2wuaW1wbCgpLT5oYXNoKCkgOiAwLAot
ICAgICAgICAgICAgZGF0YS5ob3N0LmltcGwoKSA/IGRhdGEuaG9zdC5pbXBsKCktPmhhc2goKSA6
IDAsCi0gICAgICAgICAgICBkYXRhLnBvcnQudmFsdWVfb3IoMCkKLSAgICAgICAgfTsKLSAgICAg
ICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxzaXplb2YoaGFzaENvZGVzKT4oaGFz
aENvZGVzKTsKLSAgICB9CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiBkYXRhKSB7IHJldHVybiBjb21wdXRlSGFzaChkYXRhKTsgfQogICAgIHN0YXRp
YyBib29sIGVxdWFsKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgYSwgY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiBiKSB7IHJldHVybiBhID09IGI7IH0KICAgICBzdGF0aWMgY29uc3QgYm9vbCBz
YWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xvZ2dpbmcuaAppbmRleCBhM2NhMmIyYjQ1OThjMGY3YTA2ZTJhMjE2MDE2Yjc4ZjU2Y2RlMWRi
Li42MTdhOTM2MDVhZWNmYTU2YjllNzZjNWViMTllYmNjZWExNjkwODgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTG9nZ2luZy5oCkBAIC0xMjgsNiArMTI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIE0oV2ViR0wpIFwKICAgICBNKFdlYlJUQykgXAogICAgIE0oV2ViUlRDU3RhdHMpIFwKKyAg
ICBNKFdvcmtlcikgXAogICAgIE0oWFIpIFwKICAgICBNKFdoZWVsRXZlbnRUZXN0TW9uaXRvcikg
XAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXggOGY3NDI3NDY3
MGY1ZTY4NGZhMjlmMGQ5NzdhOWNhZjc3NjA0NzU0MS4uZmQ4NTk2Mzc1MjBiYjk4YmRlZmJmMDM1
ZjRhODZjN2UwYTBlYTJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNw
cApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5j
bHVkZSAiV29ya2VyU2NyaXB0RmV0Y2hlci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nj
cmlwdENhbGxTdGFjay5oPgorI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogI2luY2x1ZGUg
PHd0Zi9UaHJlYWRpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTM0LDYgKzEzNSw4
IEBAIGJvb2wgV29ya2VyVGhyZWFkOjpzaG91bGRXYWl0Rm9yV2ViSW5zcGVjdG9yT25TdGFydHVw
KCkgY29uc3QKIAogdm9pZCBXb3JrZXJUaHJlYWQ6OmV2YWx1YXRlU2NyaXB0SWZOZWNlc3Nhcnko
U3RyaW5nJiBleGNlcHRpb25NZXNzYWdlKQogeworICAgIFNldEZvclNjb3BlPGJvb2w+IGlzSW5T
dGF0aWNTY3JpcHRFdmFsdWF0aW9uKG1faXNJblN0YXRpY1NjcmlwdEV2YWx1YXRpb24sIHRydWUp
OworCiAgICAgLy8gV2UgYXJlIGN1cnJlbnRseSBob2xkaW5nIG9ubHkgdGhlIGluaXRpYWwgc2Ny
aXB0IGNvZGUuIElmIHRoZSBXb3JrZXJUeXBlIGlzIE1vZHVsZSwgd2Ugc2hvdWxkIGZldGNoIHRo
ZSBlbnRpcmUgZ3JhcGggYmVmb3JlIGV4ZWN1dGluZyB0aGUgcmVzdCBvZiB0aGlzLgogICAgIC8v
IFdlIGludm9rZSBtb2R1bGUgbG9hZGVyIGFzIGlmIHdlIGFyZSBleGVjdXRpbmcgaW5saW5lIG1v
ZHVsZSBzY3JpcHQgdGFnIGluIERvY3VtZW50LgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJU
aHJlYWQuaAppbmRleCBjZjUwYzM2OGFlNzIxZTc5YTlkOTgxNmVjOWFhODlkM2E2YTI0OWRhLi5i
NGY3Njk0YzZiMWU2YWE0OGNkY2VkMmViOTdhOWM5YTZhMmU4ZDQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyVGhyZWFkLmgKQEAgLTk2LDYgKzk2LDcgQEAgcHVibGljOgogI2VuZGlmCiAg
ICAgCiAgICAgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKCkgY29uc3QgeyByZXR1cm4g
bV9ydW50aW1lRmxhZ3M7IH0KKyAgICBib29sIGlzSW5TdGF0aWNTY3JpcHRFdmFsdWF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0luU3RhdGljU2NyaXB0RXZhbHVhdGlvbjsgfQogCiBwcm90ZWN0
ZWQ6CiAgICAgV29ya2VyVGhyZWFkKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBjb25zdCBTY3Jp
cHRCdWZmZXImIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiwgV29ya2VyRGVidWdnZXJQ
cm94eSYsIFdvcmtlclJlcG9ydGluZ1Byb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25z
dCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94
eSosIFNvY2tldFByb3ZpZGVyKiwgSlNDOjpSdW50aW1lRmxhZ3MpOwpAQCAtMTMyLDYgKzEzMyw3
IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk+
IG1faWRiQ29ubmVjdGlvblByb3h5OwogICAgIFJlZlB0cjxTb2NrZXRQcm92aWRlcj4gbV9zb2Nr
ZXRQcm92aWRlcjsKKyAgICBib29sIG1faXNJblN0YXRpY1NjcmlwdEV2YWx1YXRpb24geyBmYWxz
ZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAKaW5kZXggYjQ4NzQ3YTJjMDk5NzNjMThiZjhk
ZGE5YWM4NzRiMzFhYjg1Zjc1MS4uMGE3ODE5YjhiM2ExODY1OTZkYTZiYmEwODI4ZTBmNWVlMTgz
NjAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI2LDE1ICsyNiwxNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJl
ZFdvcmtlci5oIgogCisjaW5jbHVkZSAiQ2xpZW50T3JpZ2luLmgiCiAjaW5jbHVkZSAiQ29udGVu
dFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VDaGFubmVs
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgi
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJNYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIlNoYXJlZFdvcmtlclByb3ZpZGVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFk
UHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJPcHRpb25zLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSWRlbnRpZmllcnNGYWN0b3J5Lmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGlu
ZXMuaD4KQEAgLTQzLDIzICs0NSwzOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChTaGFyZWRXb3JrZXIpOwogCisjZGVmaW5lIFNIQVJFRF9XT1JL
RVJfUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0g
W2lkZW50aWZpZXI9JXtwdWJsaWN9c10gU2hhcmVkV29ya2VyOjoiIGZtdCwgdGhpcywgbV9pZGVu
dGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUg
U0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJS
T1IoU2hhcmVkV29ya2VyLCAiJXAgLSBbaWRlbnRpZmllcj0le3B1YmxpY31zXSBTaGFyZWRXb3Jr
ZXI6OiIgZm10LCB0aGlzLCBtX2lkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAj
I19fVkFfQVJHU19fKQorCitzdGF0aWMgSGFzaE1hcDxTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyLCBTaGFyZWRXb3JrZXIqPiYgYWxsU2hhcmVkV29ya2VycygpCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLCBTaGFyZWRXb3JrZXIqPj4gYWxsU2hhcmVkV29ya2VyczsK
KyAgICByZXR1cm4gYWxsU2hhcmVkV29ya2VyczsKK30KKworU2hhcmVkV29ya2VyKiBTaGFyZWRX
b3JrZXI6OmZyb21JZGVudGlmaWVyKFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgaWRlbnRp
ZmllcikKK3sKKyAgICByZXR1cm4gYWxsU2hhcmVkV29ya2VycygpLmdldChpZGVudGlmaWVyKTsK
K30KKwogc3RhdGljIGlubGluZSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKiBtYWluVGhy
ZWFkQ29ubmVjdGlvbigpCiB7CiAgICAgcmV0dXJuIFNoYXJlZFdvcmtlclByb3ZpZGVyOjpzaW5n
bGV0b24oKS5zaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxT
aGFyZWRXb3JrZXI+PiBTaGFyZWRXb3JrZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIEpT
Qzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncywgU3RyaW5nJiYgc2NyaXB0VVJMU3RyaW5nLCBz
dGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxTdHJpbmcsIFdvcmtlck9wdGlvbnM+PiYmIG1heWJl
T3B0aW9ucykKK0V4Y2VwdGlvbk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBTaGFyZWRXb3JrZXI6OmNy
ZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZyYmIHNjcmlwdFVSTFN0cmluZywgc3RkOjpv
cHRpb25hbDxzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4mJiBtYXliZU9wdGlv
bnMpCiB7CiAgICAgaWYgKCFtYWluVGhyZWFkQ29ubmVjdGlvbigpKQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJTaGFyZWQgd29ya2VycyBhcmUgbm90IHN1
cHBvcnRlZCIgfTsKIAotICAgIGlmICghZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nl
c3NTaGFyZWRXb3JrZXJzKGRvY3VtZW50LnRvcE9yaWdpbigpKSkKLSAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJUaGlzIGlmcmFtZSBkb2Vzbid0IGhhdmUgc3RvcmFn
ZSBhY2Nlc3MiX3MgfTsKLQogICAgIGF1dG8gdXJsID0gZG9jdW1lbnQuY29tcGxldGVVUkwoc2Ny
aXB0VVJMU3RyaW5nKTsKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBTeW50YXhFcnJvciwgIkludmFsaWQgc2NyaXB0IFVSTCJfcyB9OwogCisgICAg
aWYgKHVybC5pc0xvY2FsRmlsZSgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJp
dHlFcnJvciwgIkNhbm5vdCBjb25zdHJ1Y3QgYSBzaGFyZWQgd29ya2VyIHdpdGggYSBmaWxlOi8v
IFVSTCJfcyB9OworCiAgICAgaWYgKGF1dG8qIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGRvY3Vt
ZW50LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKSB7CiAgICAgICAgIGlmICghY29udGVudFNlY3Vy
aXR5UG9saWN5LT5hbGxvd1dvcmtlckZyb21Tb3VyY2UodXJsKSkKICAgICAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yIH07CkBAIC03NywyNiArOTQsMzcgQEAgRXhjZXB0
aW9uT3I8UmVmPFNoYXJlZFdvcmtlcj4+IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCwgSlNDOjpSdW4KICAgICBhdXRvIGNoYW5uZWwgPSBNZXNzYWdlQ2hhbm5lbDo6Y3Jl
YXRlKGRvY3VtZW50KTsKICAgICBhdXRvIHRyYW5zZmVycmVkUG9ydCA9IGNoYW5uZWwtPnBvcnQy
KCkuZGlzZW50YW5nbGUoKTsKIAotICAgIGF1dG8gc2hhcmVkV29ya2VyID0gYWRvcHRSZWYoKm5l
dyBTaGFyZWRXb3JrZXIoZG9jdW1lbnQsIGNoYW5uZWwtPnBvcnQxKCksIHJ1bnRpbWVGbGFncykp
OworICAgIENsaWVudE9yaWdpbiBjbGllbnRPcmlnaW4geyBkb2N1bWVudC50b3BEb2N1bWVudCgp
LnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpLCBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRhdGEo
KSB9OworICAgIFNoYXJlZFdvcmtlcktleSBrZXkgeyBjbGllbnRPcmlnaW4sIHVybCwgb3B0aW9u
cy5uYW1lIH07CisKKyAgICBhdXRvIHNoYXJlZFdvcmtlciA9IGFkb3B0UmVmKCpuZXcgU2hhcmVk
V29ya2VyKGRvY3VtZW50LCBrZXksIGNoYW5uZWwtPnBvcnQxKCkpKTsKICAgICBzaGFyZWRXb3Jr
ZXItPnN1c3BlbmRJZk5lZWRlZCgpOwogCi0gICAgbWFpblRocmVhZENvbm5lY3Rpb24oKS0+cmVx
dWVzdFNoYXJlZFdvcmtlcih1cmwsIHNoYXJlZFdvcmtlci5nZXQoKSwgV1RGTW92ZSh0cmFuc2Zl
cnJlZFBvcnQpLCBXVEZNb3ZlKG9wdGlvbnMpKTsKKyAgICBtYWluVGhyZWFkQ29ubmVjdGlvbigp
LT5yZXF1ZXN0U2hhcmVkV29ya2VyKGtleSwgc2hhcmVkV29ya2VyLT5pZGVudGlmaWVyKCksIFdU
Rk1vdmUodHJhbnNmZXJyZWRQb3J0KSwgb3B0aW9ucyk7CiAgICAgcmV0dXJuIHNoYXJlZFdvcmtl
cjsKIH0KIAotU2hhcmVkV29ya2VyOjpTaGFyZWRXb3JrZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBS
ZWY8TWVzc2FnZVBvcnQ+JiYgcG9ydCwgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKQor
U2hhcmVkV29ya2VyOjpTaGFyZWRXb3JrZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTaGFy
ZWRXb3JrZXJLZXkmIGtleSwgUmVmPE1lc3NhZ2VQb3J0PiYmIHBvcnQpCiAgICAgOiBBY3RpdmVE
T01PYmplY3QoJmRvY3VtZW50KQorICAgICwgbV9rZXkoa2V5KQorICAgICwgbV9pZGVudGlmaWVy
KFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI6OmdlbmVyYXRlKCkpCiAgICAgLCBtX3BvcnQo
V1RGTW92ZShwb3J0KSkKICAgICAsIG1faWRlbnRpZmllckZvckluc3BlY3RvcigiU2hhcmVkV29y
a2VyOiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigp
KQotICAgICwgbV9ydW50aW1lRmxhZ3MocnVudGltZUZsYWdzKQotICAgICwgbV9jcmVhdGlvblRp
bWUoTW9ub3RvbmljVGltZTo6bm93KCkpCi0gICAgLCBtX3Byb3h5KFNoYXJlZFdvcmtlclRocmVh
ZFByb3h5OjpjcmVhdGUoKnRoaXMpKQogeworICAgIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0co
IlNoYXJlZFdvcmtlcjoiKTsKKyAgICBhbGxTaGFyZWRXb3JrZXJzKCkuYWRkKG1faWRlbnRpZmll
ciwgdGhpcyk7CisKKyAgICAvLyBJZiB0aGUgc2hhcmVkIHdvcmtlciBVUkwgaXMgYSBibG9iIFVS
TCwgbWFrZSBzdXJlIHRvIGtlZXAgaXQgYWxpdmUgdW50aWwgdGhlIHdvcmtlciBoYXMgZmluaXNo
ZWQgbG9hZGluZy4KKyAgICBpZiAobV9rZXkudXJsLnByb3RvY29sSXNCbG9iKCkpCisgICAgICAg
IG1fYmxvYlVSTEV4dGVuc2lvbiA9IG1fa2V5LnVybDsKIH0KIAogU2hhcmVkV29ya2VyOjp+U2hh
cmVkV29ya2VyKCkKIHsKLSAgICBtX3Byb3h5Lndvcmtlck9iamVjdERlc3Ryb3llZCgpOworICAg
IEFTU0VSVChhbGxTaGFyZWRXb3JrZXJzKCkuZ2V0KG1faWRlbnRpZmllcikgPT0gdGhpcyk7Cisg
ICAgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRygiflNoYXJlZFdvcmtlcjoiKTsKKyAgICBhbGxT
aGFyZWRXb3JrZXJzKCkucmVtb3ZlKG1faWRlbnRpZmllcik7CisgICAgQVNTRVJUKCFtX2lzQWN0
aXZlKTsKIH0KIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogU2hhcmVkV29ya2VyOjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3QKQEAgLTExNCwxOSArMTQyLDI5IEBAIEV2ZW50VGFyZ2V0
SW50ZXJmYWNlIFNoYXJlZFdvcmtlcjo6ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdAogICAg
IHJldHVybiBTaGFyZWRXb3JrZXJFdmVudFRhcmdldEludGVyZmFjZVR5cGU7CiB9CiAKLXZvaWQg
U2hhcmVkV29ya2VyOjpzdG9wKCkKK3ZvaWQgU2hhcmVkV29ya2VyOjpkaWRGaW5pc2hMb2FkaW5n
KGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIHRlcm1pbmF0ZSgpOworICAgIFNI
QVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coImZpbmlzaExvYWRpbmc6IHN1Y2Nlc3M9JWQiLCBlcnJv
ci5pc051bGwoKSk7CisgICAgaWYgKCFlcnJvci5pc051bGwoKSkgeworICAgICAgICBxdWV1ZVRh
c2tUb0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOworICAgICAgICBtX2lzQWN0aXZlID0gZmFsc2U7
CisgICAgfQorICAgIG1fYmxvYlVSTEV4dGVuc2lvbi5jbGVhcigpOwogfQogCiBib29sIFNoYXJl
ZFdvcmtlcjo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fcHJveHkuaGFzUGVuZGluZ0FjdGl2aXR5KCkgfHwgbV9pc0xvYWRpbmc7CisgICAgcmV0dXJu
IG1faXNBY3RpdmU7CiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyOjp0ZXJtaW5hdGUoKQordm9pZCBT
aGFyZWRXb3JrZXI6OnN0b3AoKQogewotICAgIG1fcHJveHkudGVybWluYXRlV29ya2VyR2xvYmFs
U2NvcGUoKTsKKyAgICBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HKCJzdG9wOiIpOworICAgIG1f
aXNBY3RpdmUgPSBmYWxzZTsKKyAgICBtYWluVGhyZWFkQ29ubmVjdGlvbigpLT5zaGFyZWRXb3Jr
ZXJPYmplY3RJc0dvaW5nQXdheShtX2tleSwgbV9pZGVudGlmaWVyKTsKIH0KIAorI3VuZGVmIFNI
QVJFRF9XT1JLRVJfUkVMRUFTRV9MT0cKKyN1bmRlZiBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9H
X0VSUk9SCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zaGFyZWQvU2hhcmVkV29ya2VyLmgKaW5kZXggZTU1YjFjZjU1MTNkMTA1ZjczZjFjZDYyOTMx
NWUwNjU3ZTAxOWJjZS4uY2RkMjY5ZjM2MTkxNjlkNGFiMDVmNjBkMWE3NGI4OGMwMjNmZDIzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsMzkg
KzI3LDM3IEBACiAKICNpbmNsdWRlICJBYnN0cmFjdFdvcmtlci5oIgogI2luY2x1ZGUgIkFjdGl2
ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1bnRpbWVGbGFncy5oPgor
I2luY2x1ZGUgIkJsb2JVUkwuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJLZXkuaCIKKyNpbmNs
dWRlICJTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL01vbm90
b25pY1RpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZXNzYWdlUG9ydDsK
LWNsYXNzIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OworY2xhc3MgUmVzb3VyY2VFcnJvcjsKIAog
c3RydWN0IFdvcmtlck9wdGlvbnM7CiAKIGNsYXNzIFNoYXJlZFdvcmtlciBmaW5hbCA6IHB1Ymxp
YyBBYnN0cmFjdFdvcmtlciwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRChTaGFyZWRXb3JrZXIpOwogcHVibGljOgotICAgIHN0YXRpYyBFeGNlcHRp
b25PcjxSZWY8U2hhcmVkV29ya2VyPj4gY3JlYXRlKERvY3VtZW50JiwgSlNDOjpSdW50aW1lRmxh
Z3MsIFN0cmluZyYmIHNjcmlwdFVSTCwgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8U3RyaW5n
LCBXb3JrZXJPcHRpb25zPj4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxTaGFyZWRX
b3JrZXI+PiBjcmVhdGUoRG9jdW1lbnQmLCBTdHJpbmcmJiBzY3JpcHRVUkwsIHN0ZDo6b3B0aW9u
YWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYpOwogICAgIH5TaGFyZWRX
b3JrZXIoKTsKIAorICAgIHN0YXRpYyBTaGFyZWRXb3JrZXIqIGZyb21JZGVudGlmaWVyKFNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIE1lc3Nh
Z2VQb3J0JiBwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9wb3J0LmdldCgpOyB9Ci0gICAgSlNDOjpS
dW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKCkgeyByZXR1cm4gbV9ydW50aW1lRmxhZ3M7IH0KIAog
ICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllckZvckluc3BlY3RvcigpIGNvbnN0IHsgcmV0dXJu
IG1faWRlbnRpZmllckZvckluc3BlY3RvcjsgfQotICAgIE1vbm90b25pY1RpbWUgY3JlYXRpb25U
aW1lKCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdGlvblRpbWU7IH0KIAotICAgIFNoYXJlZFdvcmtl
clRocmVhZFByb3h5JiBwcm94eSgpIHsgcmV0dXJuIG1fcHJveHk7IH0KLQotICAgIHZvaWQgc2V0
SXNMb2FkaW5nKGJvb2wgaXNMb2FkaW5nKSB7IG1faXNMb2FkaW5nID0gaXNMb2FkaW5nOyB9Cisg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAgIC8v
IEV2ZW50VGFyZ2V0LgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBTaGFyZWRXb3JrZXIoRG9j
dW1lbnQmLCBSZWY8TWVzc2FnZVBvcnQ+JiYsIEpTQzo6UnVudGltZUZsYWdzKTsKLQotICAgIHZv
aWQgdGVybWluYXRlKCk7CisgICAgU2hhcmVkV29ya2VyKERvY3VtZW50JiwgY29uc3QgU2hhcmVk
V29ya2VyS2V5JiwgUmVmPE1lc3NhZ2VQb3J0PiYmKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0Lgog
ICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmlu
YWw7CkBAIC03MCwxMiArNjgsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIHZpcnR1YWxIYXNQZW5k
aW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogCisgICAgU2hhcmVkV29ya2VyS2V5IG1fa2V5
OworICAgIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFJl
ZjxNZXNzYWdlUG9ydD4gbV9wb3J0OwogICAgIFN0cmluZyBtX2lkZW50aWZpZXJGb3JJbnNwZWN0
b3I7Ci0gICAgSlNDOjpSdW50aW1lRmxhZ3MgbV9ydW50aW1lRmxhZ3M7Ci0gICAgTW9ub3Rvbmlj
VGltZSBtX2NyZWF0aW9uVGltZTsKLSAgICBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSYgbV9wcm94
eTsgLy8gVGhlIHByb3h5IG91dGxpdmVzIHRoZSB3b3JrZXIgdG8gcGVyZm9ybSB0aHJlYWQgc2h1
dGRvd24uCi0gICAgYm9vbCBtX2lzTG9hZGluZyB7IGZhbHNlIH07CisgICAgQmxvYlVSTEhhbmRs
ZSBtX2Jsb2JVUkxFeHRlbnNpb247CisgICAgYm9vbCBtX2lzQWN0aXZlIHsgdHJ1ZSB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlci5pZGwKaW5kZXggYjYyODc0ZDBkZTQ2NzBkNDhhMmQzMTRjMTMxZTYy
NGMyMDU2MmUzZC4uMmMzYTA4MzFlYjI3NDFiMjYzNjQ3ZjE3NGU4YzU4N2I3YTQxZWI3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaWRsCkBAIC0y
OCw3ICsyOCw3IEBACiAgICAgRXhwb3NlZD1XaW5kb3cKIF0KIGludGVyZmFjZSBTaGFyZWRXb3Jr
ZXIgOiBFdmVudFRhcmdldCB7Ci0gIFtDYWxsV2l0aD1DdXJyZW50RG9jdW1lbnQmUnVudGltZUZs
YWdzXSBjb25zdHJ1Y3RvcihVU1ZTdHJpbmcgc2NyaXB0VVJMLCBvcHRpb25hbCAoRE9NU3RyaW5n
IG9yIFdvcmtlck9wdGlvbnMpIG9wdGlvbnMpOworICBbQ2FsbFdpdGg9Q3VycmVudERvY3VtZW50
XSBjb25zdHJ1Y3RvcihVU1ZTdHJpbmcgc2NyaXB0VVJMLCBvcHRpb25hbCAoRE9NU3RyaW5nIG9y
IFdvcmtlck9wdGlvbnMpIG9wdGlvbnMpOwogCiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZXNzYWdl
UG9ydCBwb3J0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlcktleS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyS2V5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjdiZDU0MTY1MzVhM2Y3NDhmOWEyOGI0YWZjYTdiODMx
Nzg2ZmRhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlcktleS5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkNsaWVudE9yaWdpbi5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFNoYXJlZFdvcmtlcktleSB7CisgICAg
Q2xpZW50T3JpZ2luIG9yaWdpbjsKKyAgICBVUkwgdXJsOworICAgIFN0cmluZyBuYW1lOworCisg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owor
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNoYXJlZFdv
cmtlcktleT4gZGVjb2RlKERlY29kZXImKTsKK307CisKK2lubGluZSB2b2lkIGFkZChIYXNoZXIm
IGhhc2hlciwgY29uc3QgU2hhcmVkV29ya2VyS2V5JiBrZXkpCit7CisgICAgYWRkKGhhc2hlciwg
a2V5Lm9yaWdpbiwga2V5LnVybCwga2V5Lm5hbWUpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgordm9pZCBTaGFyZWRXb3JrZXJLZXk6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAoreworICAgIGVuY29kZXIgPDwgb3JpZ2luIDw8IHVybCA8PCBuYW1lOworfQorCit0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxTaGFyZWRXb3JrZXJLZXk+IFNoYXJlZFdv
cmtlcktleTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxD
bGllbnRPcmlnaW4+IG9yaWdpbjsKKyAgICBkZWNvZGVyID4+IG9yaWdpbjsKKyAgICBpZiAoIW9y
aWdpbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8
VVJMPiB1cmw7CisgICAgZGVjb2RlciA+PiB1cmw7CisgICAgaWYgKCF1cmwpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmFtZTsKKyAg
ICBkZWNvZGVyID4+IG5hbWU7CisgICAgaWYgKCFuYW1lKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpvcmlnaW4pLCBXVEZNb3ZlKCp1cmwp
LCBXVEZNb3ZlKCpuYW1lKSB9IH07Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3Qg
U2hhcmVkV29ya2VyS2V5JiBhLCBjb25zdCBTaGFyZWRXb3JrZXJLZXkmIGIpCit7CisgICAgcmV0
dXJuIGEub3JpZ2luID09IGIub3JpZ2luICYmIGEudXJsID09IGIudXJsICYmIGEubmFtZSA9PSBi
Lm5hbWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisK
K3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleT4g
eworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktl
eSYga2V5KSB7IHJldHVybiBjb21wdXRlSGFzaChrZXkpOyB9CisgICAgc3RhdGljIGJvb2wgZXF1
YWwoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBhLCBjb25zdCBXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJLZXkmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBjb25zdCBib29s
IHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Cit9OworCit0ZW1wbGF0ZTw+
IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleT4gOiBHZW5lcmljSGFz
aFRyYWl0czxXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk+IHsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNlOworICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVj
dERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIHNsb3QpIHsgbmV3IChOb3RO
dWxsLCAmc2xvdC51cmwpIFVSTChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7IH0KKyAgICBz
dGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkm
IHNsb3QpIHsgcmV0dXJuIHNsb3QudXJsLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KK307
CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYTc0MTA4NzdkYjMyMWY3OTUyZjMxMmM4NmRjM2ZlNGEwYjU1ZDA3OS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEw
OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNo
YXJlZFdvcmtlck1hbmFnZXIuaCIKLQotI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5o
IgotI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgot
I2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5o
IgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgiCi0jaW5jbHVk
ZSAiU2hhcmVkV29ya2VyVGhyZWFkLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkUHJv
eHkuaCIKLSNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCi0jaW5jbHVkZSAiV29ya2VyU2NyaXB0
TG9hZGVyLmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8d3Rm
L1J1bkxvb3AuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1TaGFyZWRXb3JrZXJNYW5hZ2Vy
JiBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24oKQotewotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxTaGFyZWRXb3JrZXJNYW5hZ2VyPiBpbnN0YW5jZTsKLSAgICByZXR1cm4gaW5zdGFu
Y2UuZ2V0KCk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyTWFuYWdlcjo6Y29ubmVjdChjb25zdCBV
UkwmIHVybCwgU2hhcmVkV29ya2VyJiB3b3JrZXIsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBt
ZXNzYWdlUG9ydCwgV29ya2VyT3B0aW9ucyYmIG9wdGlvbnMpCi17Ci0gICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKLSAgICAvLyBGSVhNRTogSGFuZGxlIHdvcmtlcnMgZnJvbSBvdGhlciBw
cm9jZXNzZXMsIHdoaWNoIHdpbGwgcHJvYmFibHkgcmVxdWlyZSBtb3ZpbmcgY29ubmVjdCB0byB0
aGUgRnJhbWVMb2FkZXJDbGllbnQgb3Igc29tZXRoaW5nLgotICAgIC8vIE1heWJlIHNvbWV0aGlu
ZyBtb3JlIGxpa2Ugd2hhdCBTZXJ2aWNlV29ya2VycyBkb2VzLgotCi0gICAgLy8gRklYTUU6IENo
ZWNrIGlmIHdlIGFscmVhZHkgbWFkZSBhIHRocmVhZC4KLSAgICAvLyBGSVhNRTogQ2hlY2sgaWYg
dGhlcmUncyBhbHJlYWR5IGEgc2hhcmVkIHdvcmtlciBhbmQgdXNlIHRoYXQgaWYgdGhlcmUgaXMu
Ci0KLSAgICBhdXRvIGxvYWRlciA9IG1ha2VVbmlxdWVSZWY8U2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVyPih1cmwsIHdvcmtlciwgV1RGTW92ZShtZXNzYWdlUG9ydCksIFdURk1vdmUob3B0aW9ucykp
OwotICAgIGF1dG8gaWRlbnRpZmllciA9IGxvYWRlci0+aWRlbnRpZmllcigpOwotICAgIG1fbG9h
ZGVycy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShsb2FkZXIpKTsKLX0KLQotdm9pZCBTaGFyZWRX
b3JrZXJNYW5hZ2VyOjpzY3JpcHRMb2FkRmFpbGVkKFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYg
bG9hZGVyKQotewotICAgIEFjdGl2ZURPTU9iamVjdDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50
KGxvYWRlci53b3JrZXIoKSwgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6
OklzQ2FuY2VsYWJsZTo6WWVzKSk7Ci0gICAgbV9sb2FkZXJzLnJlbW92ZShsb2FkZXIuaWRlbnRp
ZmllcigpKTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzY3JpcHRMb2FkZWRTdWNj
ZXNzZnVsbHkoU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJiBsb2FkZXIsIGNvbnN0IFNjcmlwdEJ1
ZmZlciYgc2NyaXB0QnVmZmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBTaGFyZWRXb3JrZXImIHNoYXJlZFdvcmtlciwgVHJhbnNmZXJyZWRNZXNzYWdl
UG9ydCYmIHRyYW5zZmVycmVkUG9ydCkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwotICAgIGF1dG8mIHdvcmtlciA9IGxvYWRlci53b3JrZXIoKTsKLSAgICBhdXRvJiBvcHRpb25z
ID0gbG9hZGVyLm9wdGlvbnMoKTsKLQotICAgIGF1dG8mIHByb3h5ID0gc2hhcmVkV29ya2VyLnBy
b3h5KCk7Ci0KLSAgICBwcm94eS5zdGFydFdvcmtlckdsb2JhbFNjb3BlKAotICAgICAgICBsb2Fk
ZXIudXJsKCksCi0gICAgICAgIG9wdGlvbnMubmFtZSwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC51c2VyQWdlbnQobG9hZGVyLnVybCgpKSwKLSAgICAgICAgcGxhdGZvcm1TdHJhdGVn
aWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmlzT25MaW5lKCksCi0gICAgICAgIHNjcmlwdEJ1ZmZl
ciwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jb250ZW50U2VjdXJpdHlQb2xpY3ko
KS0+cmVzcG9uc2VIZWFkZXJzKCksCi0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuc2hv
dWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KCksCi0gICAgICAgIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSgpLAotICAgICAgICB3
b3JrZXIuY3JlYXRpb25UaW1lKCksCi0gICAgICAgIFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmlu
ZywKLSAgICAgICAgb3B0aW9ucy50eXBlLAotICAgICAgICBvcHRpb25zLmNyZWRlbnRpYWxzLAot
ICAgICAgICB3b3JrZXIucnVudGltZUZsYWdzKCkKLSAgICApOwotICAgIGlmICghcHJveHkudGhy
ZWFkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oaXM8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsKLSAg
ICBhdXRvIHNvdXJjZU9yaWdpbiA9IGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25D
b250ZXh0KS5zZWN1cml0eU9yaWdpbigpLnRvU3RyaW5nKCk7Ci0KLSAgICBwcm94eS50aHJlYWQo
KS0+cnVuTG9vcCgpLnBvc3RUYXNrKFt0cmFuc2ZlcnJlZFBvcnQgPSBXVEZNb3ZlKHRyYW5zZmVy
cmVkUG9ydCksIHNvdXJjZU9yaWdpbiA9IFdURk1vdmUoc291cmNlT3JpZ2luKS5pc29sYXRlZENv
cHkoKV0gKGF1dG8mIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIG11dGFibGUgewotICAgICAgICBk
b3duY2FzdDxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCku
cG9zdENvbm5lY3RFdmVudChXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCksIHNvdXJjZU9yaWdpbik7
Ci0gICAgfSk7Ci0KLSAgICBtX2xvYWRlcnMucmVtb3ZlKGxvYWRlci5pZGVudGlmaWVyKCkpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDI1MjE4MTZlNjVjNzc2NzFkOTMzN2E4MTcxNTVlZjk5Nzg1NGQ4NDguLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiTWVzc2FnZVBv
cnRJZGVudGlmaWVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZFdvcmtlcjsKLWNsYXNzIFNoYXJlZFdvcmtlclNj
cmlwdExvYWRlcjsKLWNsYXNzIFNjcmlwdEJ1ZmZlcjsKLXN0cnVjdCBXb3JrZXJPcHRpb25zOwot
dXNpbmcgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpNZXNzYWdl
UG9ydElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllcj47Ci0KLXVzaW5n
IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcklkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFNo
YXJlZFdvcmtlclNjcmlwdExvYWRlcj47Ci0KLWNsYXNzIFNoYXJlZFdvcmtlck1hbmFnZXIgewot
cHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTaGFyZWRXb3JrZXJNYW5hZ2VyJiBz
aW5nbGV0b24oKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbm5lY3QoY29uc3QgVVJMJiwg
U2hhcmVkV29ya2VyJiwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBXb3JrZXJPcHRpb25zJiYp
OwotCi0gICAgdm9pZCBzY3JpcHRMb2FkRmFpbGVkKFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYp
OwotICAgIHZvaWQgc2NyaXB0TG9hZGVkU3VjY2Vzc2Z1bGx5KFNoYXJlZFdvcmtlclNjcmlwdExv
YWRlciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBTaGFy
ZWRXb3JrZXImLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYpOwotCi1wcml2YXRlOgotICAgIEhh
c2hNYXA8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmllciwgVW5pcXVlUmVmPFNoYXJl
ZFdvcmtlclNjcmlwdExvYWRlcj4+IG1fbG9hZGVyczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKaW5kZXggZGRhMzg0ZDIyOTEyMDI4M2Mx
MmQ0N2E1NzU2ODkyZjhhODAyYjU4Yi4uMDFhOWQ4ZjVmYTUyYjAwNjcyODM4MTdmYTliNDNkYTM5
YmM3MzJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKQEAgLTI2LDEwICsyNiw2NiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24uaCIKIAorI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkVycm9y
RXZlbnQuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiU2NyaXB0QnVmZmVyLmgi
CisjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyU2NyaXB0
TG9hZGVyLmgiCisjaW5jbHVkZSAiV29ya2VyRmV0Y2hSZXN1bHQuaCIKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCisjZGVmaW5lIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVB
U0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6
IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCisjZGVmaW5lIENPTk5FQ1RJT05fUkVMRUFTRV9M
T0dfRVJST1IoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKFNoYXJlZFdvcmtlciwgIiVwIC0g
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18p
CisKK3N0YXRpYyB1aW50NjRfdCBsb2FkZXJJZGVudGlmaWVyU2VlZCA9IDA7CisKIFNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb246OlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKSA9IGRl
ZmF1bHQ7CiAKIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246On5TaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uKCkgPSBkZWZhdWx0OwogCit2b2lkIFNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb246OmZldGNoU2NyaXB0SW5DbGllbnQoVVJMJiYgdXJsLCBXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdvcmtlck9w
dGlvbnMmJiB3b3JrZXJPcHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdvcmtlckZldGNo
UmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisKKyAgICBhdXRvKiB3b3JrZXJPYmplY3QgPSBTaGFyZWRXb3JrZXI6OmZyb21JZGVu
dGlmaWVyKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIENPTk5FQ1RJT05fUkVM
RUFTRV9MT0coImZldGNoU2NyaXB0SW5DbGllbnQ6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXI9JXtwdWJsaWN9cywgd29ya2VyPSVwIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50
b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHdvcmtlck9iamVjdCk7CisgICAgaWYgKCF3b3JrZXJP
YmplY3QpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih3b3JrZXJGZXRjaEVycm9y
KFJlc291cmNlRXJyb3IgeyBSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24gfSkpOwor
CisgICAgYXV0byBsb2FkZXJJZGVudGlmaWVyID0gKytsb2FkZXJJZGVudGlmaWVyU2VlZDsKKyAg
ICBhdXRvIGxvYWRlciA9IG1ha2VVbmlxdWVSZWY8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPihX
VEZNb3ZlKHVybCksICp3b3JrZXJPYmplY3QsIFdURk1vdmUod29ya2VyT3B0aW9ucykpOworICAg
IGF1dG8gbG9hZGVyUHRyID0gbG9hZGVyLnB0cigpOworICAgIG1fbG9hZGVycy5hZGQobG9hZGVy
SWRlbnRpZmllciwgV1RGTW92ZShsb2FkZXIpKTsKKworICAgIGxvYWRlclB0ci0+bG9hZChbdGhp
cywgbG9hZGVySWRlbnRpZmllciwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oV29ya2VyRmV0Y2hSZXN1bHQmJiBmZXRjaFJlc3VsdCkgbXV0YWJsZSB7Cisg
ICAgICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coImZldGNoU2NyaXB0SW5DbGllbnQ6IGZpbmlz
aGVkIHNjcmlwdCBsb2FkLCBzdWNjZXNzPSVkIiwgZmV0Y2hSZXN1bHQuZXJyb3IuaXNOdWxsKCkp
OworICAgICAgICBhdXRvIGxvYWRlciA9IG1fbG9hZGVycy50YWtlKGxvYWRlcklkZW50aWZpZXIp
OworICAgICAgICBBU1NFUlQobG9hZGVyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShmZXRjaFJlc3VsdCkpOworICAgIH0pOworfQorCit2b2lkIFNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb246Om5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24oV2ViQ29yZTo6
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgIGF1dG8qIHdvcmtlck9iamVjdCA9IFNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZp
ZXIoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgQ09OTkVDVElPTl9SRUxFQVNF
X0xPR19FUlJPUigibm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbjogc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zLCB3b3JrZXI9JXAsIHN1Y2Nlc3M9JWQiLCBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgd29y
a2VyT2JqZWN0LCBlcnJvci5pc051bGwoKSk7CisgICAgaWYgKHdvcmtlck9iamVjdCkKKyAgICAg
ICAgd29ya2VyT2JqZWN0LT5kaWRGaW5pc2hMb2FkaW5nKGVycm9yKTsKK30KKwordm9pZCBTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoU2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgYXV0byogd29ya2VyT2JqZWN0ID0gU2hhcmVkV29ya2VyOjpmcm9tSWRlbnRpZmll
cihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0Vf
TE9HX0VSUk9SKCJwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Q6IHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXI9JXtwdWJsaWN9cywgd29ya2VyPSVwIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHdvcmtlck9iamVjdCk7CisgICAgaWYg
KHdvcmtlck9iamVjdCkKKyAgICAgICAgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3Bh
dGNoRXZlbnQoKndvcmtlck9iamVjdCwgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFcnJv
ckV2ZW50OjpjcmVhdGUoZXJyb3JNZXNzYWdlLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlciwgeyB9KSk7Cit9CisKKyN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HCisjdW5k
ZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uLmgKaW5kZXggNGVkNWExYzY1YjU4ZDA5OGRjMGY2ODA4YjYw
ZWUwYTAzODdkN2JkNi4uNTNlZmRjODZlNDhiODY3MmQ3YzAzYmZhMjBmYTA3ODUzY2YyODIzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApAQCAtMjUsMjIgKzI1LDM4IEBACiAKICNwcmFnbWEg
b25jZQogCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIlRyYW5zZmVycmVkTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRXb3JrZXI7CitjbGFzcyBNZXNzYWdl
UG9ydDsKK2NsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjsKKworc3RydWN0IFNoYXJlZFdv
cmtlcktleTsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKIHN0cnVjdCBXb3JrZXJPcHRpb25z
OwogCiBjbGFzcyBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50
ZWQ8U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbj4gewogcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgflNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKTsKIAotICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0IFVSTCYsIFNoYXJlZFdvcmtlciYs
IFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgV29ya2VyT3B0aW9ucyYmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoY29uc3QgU2hhcmVkV29ya2VyS2V5JiwgU2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBjb25z
dCBXb3JrZXJPcHRpb25zJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzaGFyZWRXb3JrZXJPYmpl
Y3RJc0dvaW5nQXdheShjb25zdCBTaGFyZWRXb3JrZXJLZXkmLCBTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyKSA9IDA7CiAKIHByb3RlY3RlZDoKKyAgICAvLyBJUEMgbWVzc2FnZXMuCisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBmZXRjaFNjcmlwdEluQ2xpZW50KFVSTCYmLCBXZWJDb3JlOjpT
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXb3JrZXJPcHRpb25zJiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV29ya2VyRmV0Y2hSZXN1bHQmJik+JiYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgbm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihXZWJDb3JlOjpTaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoU2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisKICAgICBXRUJD
T1JFX0VYUE9SVCBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCk7CisKK3ByaXZhdGU6Cisg
ICAgSGFzaE1hcDx1aW50NjRfdCwgVW5pcXVlUmVmPFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj4+
IG1fbG9hZGVyczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lYmNkNGE3YWU4N2FkZjVmYjFjNzRkNTY4MjQ2MTEyNzRhNWY5
MmVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlByb2Nlc3NRdWFsaWZpZWQuaCIKKyNpbmNsdWRl
IDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0g
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgU2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciA9IFByb2Nlc3NRdWFsaWZpZWQ8T2JqZWN0SWRlbnRpZmllcjxTaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyVHlwZT4+OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJT
Y3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyLmNwcAppbmRleCAzMTFlYmQ2MDc4YmM2MWUwMTY5ZjFhODRlYTcxNjRi
MDg0MzZjNjM5Li4zODBmYzNhNWVkNGY2YTQ5ZjlkY2I2N2YzNDFiNjE3NWYzYmJmOGYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
clNjcmlwdExvYWRlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAy
MS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjksMjMgKzI5LDI2IEBACiAjaW5jbHVkZSAiRXZlbnROYW1lcy5o
IgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlNoYXJl
ZFdvcmtlci5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlck1hbmFnZXIuaCIKKyNpbmNsdWRlICJX
b3JrZXJGZXRjaFJlc3VsdC5oIgogI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKICNpbmNsdWRl
ICJXb3JrZXJTY3JpcHRMb2FkZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRX
b3JrZXJTY3JpcHRMb2FkZXI6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRlcihjb25zdCBVUkwmIHVy
bCwgU2hhcmVkV29ya2VyJiB3b3JrZXIsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBX
b3JrZXJPcHRpb25zJiYgb3B0aW9ucykKLSAgICA6IG1faWRlbnRpZmllcihTaGFyZWRXb3JrZXJT
Y3JpcHRMb2FkZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQotICAgICwgbV9vcHRpb25zKFdURk1v
dmUob3B0aW9ucykpCitTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OlNoYXJlZFdvcmtlclNjcmlw
dExvYWRlcihVUkwmJiB1cmwsIFNoYXJlZFdvcmtlciYgd29ya2VyLCBXb3JrZXJPcHRpb25zJiYg
b3B0aW9ucykKKyAgICA6IG1fb3B0aW9ucyhXVEZNb3ZlKG9wdGlvbnMpKQogICAgICwgbV93b3Jr
ZXIod29ya2VyKQotICAgICwgbV9wb3J0KFdURk1vdmUocG9ydCkpCiAgICAgLCBtX2xvYWRlcihX
b3JrZXJTY3JpcHRMb2FkZXI6OmNyZWF0ZSgpKQotICAgICwgbV9wZW5kaW5nQWN0aXZpdHkod29y
a2VyLm1ha2VQZW5kaW5nQWN0aXZpdHkod29ya2VyKSkKLSAgICAsIG1fdXJsKHVybCkKKyAgICAs
IG1fdXJsKFdURk1vdmUodXJsKSkKIHsKLSAgICBtX3dvcmtlci0+c2V0SXNMb2FkaW5nKHRydWUp
OwotICAgIG1fbG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoKndvcmtlci5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCksIFJlc291cmNlUmVxdWVzdCh1cmwpLCB3b3JrZXIud29ya2VyRmV0Y2hPcHRp
b25zKG9wdGlvbnMsIEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OlNoYXJlZHdvcmtlciksIENv
bnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50OjpFbmZvcmNlV29ya2VyU3JjRGlyZWN0aXZl
LCBTZXJ2aWNlV29ya2Vyc01vZGU6OkFsbCwgKnRoaXMsIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRN
b2RlKCkpOworfQorCit2b2lkIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZChDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdvcmtlckZldGNoUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIEFTU0VSVCghbV9jb21wbGV0aW9uSGFuZGxlcik7CisgICAgbV9jb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgbV9sb2FkZXItPmxv
YWRBc3luY2hyb25vdXNseSgqbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgUmVz
b3VyY2VSZXF1ZXN0KG1fdXJsKSwgbV93b3JrZXItPndvcmtlckZldGNoT3B0aW9ucyhtX29wdGlv
bnMsIEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OlNoYXJlZHdvcmtlciksIENvbnRlbnRTZWN1
cml0eVBvbGljeUVuZm9yY2VtZW50OjpFbmZvcmNlV29ya2VyU3JjRGlyZWN0aXZlLCBTZXJ2aWNl
V29ya2Vyc01vZGU6OkFsbCwgKnRoaXMsIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwog
fQogCiB2b2lkIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JikKQEAgLTU1LDE2ICs1OCwxMiBAQCB2b2lkIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudAogCiB2b2lkIFNo
YXJlZFdvcmtlclNjcmlwdExvYWRlcjo6bm90aWZ5RmluaXNoZWQoKQogewotICAgIG1fd29ya2Vy
LT5zZXRJc0xvYWRpbmcoZmFsc2UpOworICAgIGlmIChtX2xvYWRlci0+ZmFpbGVkKCkpCisgICAg
ICAgIHJldHVybiBtX2NvbXBsZXRpb25IYW5kbGVyKHdvcmtlckZldGNoRXJyb3IobV9sb2FkZXIt
PmVycm9yKCkpKTsKIAotICAgIGF1dG8qIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBtX3dvcmtl
ci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmIChtX2xvYWRlci0+ZmFpbGVkKCkg
fHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIHsKLSAgICAgICAgbV93b3JrZXItPmRpc3BhdGNo
RXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1
YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOwotICAgICAgICBTaGFyZWRXb3Jr
ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5zY3JpcHRMb2FkRmFpbGVkKCp0aGlzKTsgLy8gZGVsZXRl
cyB0aGlzLgotICAgIH0gZWxzZSB7CisgICAgaWYgKGF1dG8qIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQgPSBtX3dvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBtX2xvYWRlci0+aWRlbnRpZmllcigpLCBtX2xvYWRlci0+c2NyaXB0KCkudG9TdHJpbmcoKSk7
Ci0gICAgICAgIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNpbmdsZXRvbigpLnNjcmlwdExvYWRlZFN1
Y2Nlc3NmdWxseSgqdGhpcywgbV9sb2FkZXItPnNjcmlwdCgpLCAqbV93b3JrZXItPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgbV93b3JrZXIuZ2V0KCksIHN0ZDo6ZXhjaGFuZ2UobV9wb3J0LCB7
IH0pKTsgLy8gZGVsZXRlcyB0aGlzLgotICAgIH0KKyAgICBtX2NvbXBsZXRpb25IYW5kbGVyKHsg
bV9sb2FkZXItPnNjcmlwdCgpLCBtX2xvYWRlci0+Y2VydGlmaWNhdGVJbmZvKCksIG1fbG9hZGVy
LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSwgbV9sb2FkZXItPmNyb3NzT3JpZ2luRW1iZWRkZXJQ
b2xpY3koKSwgbV9sb2FkZXItPnJlZmVycmVyUG9saWN5KCksIHsgfSB9KTsgLy8gZGVsZXRlcyB0
aGlzLgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oCmluZGV4IGFl
NWIzYmI5ZWM1MjA3NDUzM2VmZDg0MDkyY2VlYTk5OWYyMDE3OTkuLmQ4ZTI4N2EwMTk2NzM4Zjlh
ZTE4MzIyNjI2YmQ2MzZjODRkMjE3OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDExICsyNSw5IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVBvcnRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgotI2luY2x1ZGUgIlNoYXJl
ZFdvcmtlck1hbmFnZXIuaCIKICNpbmNsdWRlICJXb3JrZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAi
V29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZp
ZXIuaD4KQEAgLTM5LDMyICszNywyOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNo
YXJlZFdvcmtlcjsKIGNsYXNzIFdvcmtlclNjcmlwdExvYWRlcjsKLQotY2xhc3MgU2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyOwotCi11c2luZyBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0ID0gc3RkOjpw
YWlyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVzc2FnZVBvcnRJ
ZGVudGlmaWVyPjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKIAogY2xhc3MgU2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyIDogcHJpdmF0ZSBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNoYXJlZFdvcmtlclNjcmlw
dExvYWRlcihjb25zdCBVUkwmLCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0
JiYsIFdvcmtlck9wdGlvbnMmJik7CisgICAgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyKFVSTCYm
LCBTaGFyZWRXb3JrZXImLCBXb3JrZXJPcHRpb25zJiYpOworCisgICAgdm9pZCBsb2FkKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV29ya2VyRmV0Y2hSZXN1bHQmJik+JiYpOwogCi0gICAgU2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4g
bV9pZGVudGlmaWVyOyB9CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3Vy
bDsgfQogICAgIFNoYXJlZFdvcmtlciYgd29ya2VyKCkgeyByZXR1cm4gbV93b3JrZXIuZ2V0KCk7
IH0KLSAgICBjb25zdCBXb3JrZXJPcHRpb25zJiBvcHRpb25zKCkgeyByZXR1cm4gbV9vcHRpb25z
OyB9CisgICAgY29uc3QgV29ya2VyT3B0aW9ucyYgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1f
b3B0aW9uczsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwogICAg
IHZvaWQgbm90aWZ5RmluaXNoZWQoKSBmaW5hbDsKIAotICAgIGNvbnN0IFNoYXJlZFdvcmtlclNj
cmlwdExvYWRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIGNvbnN0IFdvcmtlck9wdGlv
bnMgbV9vcHRpb25zOwogICAgIGNvbnN0IFJlZjxTaGFyZWRXb3JrZXI+IG1fd29ya2VyOwotICAg
IFRyYW5zZmVycmVkTWVzc2FnZVBvcnQgbV9wb3J0OwogICAgIGNvbnN0IFJlZjxXb3JrZXJTY3Jp
cHRMb2FkZXI+IG1fbG9hZGVyOwotICAgIGNvbnN0IFJlZjxBY3RpdmVET01PYmplY3Q6OlBlbmRp
bmdBY3Rpdml0eTxTaGFyZWRXb3JrZXI+PiBtX3BlbmRpbmdBY3Rpdml0eTsKICAgICBjb25zdCBV
UkwgbV91cmw7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXb3JrZXJGZXRjaFJlc3VsdCYm
KT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29u
dGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDdhOTBkOTgw
NTEyNGJlYWJjMmU2NGRkMjMwODQ5ZjM2Mjk4NDdjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXIuY3BwCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJM
b2dnaW5nLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCIKKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlciYgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRv
bigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyPiBzaGFyZWRNYW5hZ2VyOworICAgIHJldHVybiBzaGFyZWRNYW5hZ2VyOworfQorCitTaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eSogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNoYXJlZFdv
cmtlcihTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fd29ya2VyTWFwLmdldChzaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsK
K30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c3RvcFNoYXJlZFdvcmtlcihT
aGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIpCit7CisgICAgYXV0
byB3b3JrZXIgPSBtX3dvcmtlck1hcC50YWtlKHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworICAg
IFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpz
dG9wU2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCAiLCB3b3Jr
ZXI9JXAiLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCksIHdvcmtlci5nZXQoKSk7
CisgICAgaWYgKCF3b3JrZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHdvcmtlci0+c2V0QXNU
ZXJtaW5hdGluZ09yVGVybWluYXRlZCgpOworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBh
YmxlIHRvIGRlYWwgd2l0aCB0aGUgdGhyZWFkIGJlaW5nIHVucmVzcG9uc2l2ZSBoZXJlLgorCisg
ICAgYXV0byYgdGhyZWFkID0gd29ya2VyLT50aHJlYWQoKTsKKyAgICB0aHJlYWQuc3RvcChbd29y
a2VyID0gV1RGTW92ZSh3b3JrZXIpXSgpIG11dGFibGUgeworICAgICAgICAvLyBTcGluIHRoZSBy
dW5sb29wIGJlZm9yZSByZWxlYXNpbmcgdGhlIHNoYXJlZCB3b3JrZXIgdGhyZWFkIHByb3h5LCBh
cyB0aGVyZSB3b3VsZCBvdGhlcndpc2UgYmUKKyAgICAgICAgLy8gYSByYWNlIHRvd2FyZHMgaXRz
IGRlc3RydWN0aW9uLgorICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3b3JrZXIgPSBXVEZNb3Zl
KHdvcmtlcildIHsgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXI6OnN0b3BBbGxTaGFyZWRXb3JrZXJzKCkKK3sKKyAgICB3aGlsZSAoIW1fd29ya2VyTWFw
LmlzRW1wdHkoKSkKKyAgICAgICAgc3RvcFNoYXJlZFdvcmtlcihtX3dvcmtlck1hcC5iZWdpbigp
LT5rZXkpOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzZXRDb25uZWN0
aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCit7CisgICAgQVNT
RVJUKCFtX2Nvbm5lY3Rpb24gfHwgbV9jb25uZWN0aW9uLT5pc0Nsb3NlZCgpKTsKKyAgICBtX2Nv
bm5lY3Rpb24gPSBXVEZNb3ZlKGNvbm5lY3Rpb24pOworfQorCithdXRvIFNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyOjpjb25uZWN0aW9uKCkgY29uc3QgLT4gQ29ubmVjdGlvbioKK3sKKyAgICBy
ZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyOjpyZWdpc3RlclNoYXJlZFdvcmtlclRocmVhZChSZWY8U2hhcmVkV29ya2VyVGhyZWFk
UHJveHk+JiYgcHJveHkpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBSRUxF
QVNFX0xPRyhTaGFyZWRXb3JrZXIsICJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6cmVnaXN0
ZXJTaGFyZWRXb3JrZXJUaHJlYWQ6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBw
cm94eS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworCisgICAgYXV0byByZXN1bHQgPSBtX3dv
cmtlck1hcC5hZGQocHJveHktPmlkZW50aWZpZXIoKSwgcHJveHkuY29weVJlZigpKTsKKyAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgcHJveHktPnRo
cmVhZCgpLnN0YXJ0KFtdKGNvbnN0IFN0cmluZyYgLypleGNlcHRpb25NZXNzYWdlKi8pIHsgfSk7
Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb246OnBvc3RD
b25uZWN0RXZlbnQoU2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVy
LCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgdHJhbnNmZXJyZWRQb3J0LCBTdHJpbmcmJiBzb3Vy
Y2VPcmlnaW4pCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBhdXRvKiBwcm94
eSA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zaGFyZWRXb3JrZXIo
c2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb246OnBvc3RDb25uZWN0RXZlbnQ6
IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHByb3h5PSVwIiwgc2hhcmVkV29y
a2VySWRlbnRpZmllci50b1VJbnQ2NCgpLCBwcm94eSk7CisgICAgaWYgKCFwcm94eSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgcHJveHktPnRocmVhZCgpLnJ1bkxvb3AoKS5wb3N0VGFzayhbdHJh
bnNmZXJyZWRQb3J0ID0gV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBzb3VyY2VPcmlnaW4gPSBX
VEZNb3ZlKHNvdXJjZU9yaWdpbikuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Cisg
ICAgICAgIGRvd25jYXN0PFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25D
b250ZXh0KS5wb3N0Q29ubmVjdEV2ZW50KFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwgV1RGTW92
ZShzb3VyY2VPcmlnaW4pKTsKKyAgICB9KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlcjo6Q29ubmVjdGlvbjo6dGVybWluYXRlU2hhcmVkV29ya2VyKFNoYXJlZFdvcmtlcklk
ZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIlNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyOjpDb25uZWN0aW9uOjp0ZXJtaW5hdGVTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtl
cklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkp
OworICAgIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zdG9wU2hhcmVk
V29ya2VyKHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1No
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzM4MjUy
ODkzNzNlMGU2ODYxYjllY2U3ZDdiZTljMTMxNmM5MGUyMQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXIuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiVHJhbnNmZXJyZWRN
ZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk7CisKK2NsYXNzIFNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXImIHNpbmdsZXRvbigpOworCisgICAgU2hhcmVkV29y
a2VyVGhyZWFkUHJveHkqIHNoYXJlZFdvcmtlcihTaGFyZWRXb3JrZXJJZGVudGlmaWVyKSBjb25z
dDsKKyAgICB2b2lkIHN0b3BTaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllcik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wQWxsU2hhcmVkV29ya2VycygpOworCisgICAgY2xh
c3MgQ29ubmVjdGlvbiB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIHB1
YmxpYzoKKyAgICAgICAgdmlydHVhbCB+Q29ubmVjdGlvbigpIHsgfQorICAgICAgICB2aXJ0dWFs
IHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0g
MDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSA9IDA7Cisg
ICAgICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xvc2VkOyB9CisKKyAg
ICBwcm90ZWN0ZWQ6CisgICAgICAgIHZvaWQgc2V0QXNDbG9zZWQoKSB7IG1faXNDbG9zZWQgPSB0
cnVlOyB9CisKKyAgICAgICAgLy8gSVBDIG1lc3NhZ2UgaGFuZGxlcnMuCisgICAgICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcG9zdENvbm5lY3RFdmVudChTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBU
cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFN0cmluZyYmIHNvdXJjZU9yaWdpbik7CisgICAgICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgdGVybWluYXRlU2hhcmVkV29ya2VyKFNoYXJlZFdvcmtlcklk
ZW50aWZpZXIpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCBtX2lzQ2xvc2VkIHsgZmFs
c2UgfTsKKyAgICB9OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb25uZWN0aW9uKHN0
ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb25uZWN0
aW9uKiBjb25uZWN0aW9uKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZ2lz
dGVyU2hhcmVkV29ya2VyVGhyZWFkKFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4mJik7CisK
K3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPFNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyPjsKKworICAgIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyKCkgPSBkZWZh
dWx0OworCisgICAgc3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAg
ICBIYXNoTWFwPFNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eT4+IG1fd29ya2VyTWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJU
aHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1No
YXJlZFdvcmtlclRocmVhZFByb3h5LmNwcAppbmRleCA5YmQ5NzgzZDdhN2U1OGU2N2I2YjgwYjVk
NTQ0ZmVjMmVjZjJjYWY1Li4yNmJhN2I2OGJjZWQyZTkyZTE2N2U3NzljOWNkNTVkM2QzYjE3ODc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJl
ZFdvcmtlclRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw5NCArMjgsNzIgQEAKIAog
I2luY2x1ZGUgIkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiRXJyb3JFdmVudC5o
IgorI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNs
dWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiTGliV2Vi
UlRDUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VFdmVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiUGFnZS5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIK
KyNpbmNsdWRlICJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIgogI2luY2x1ZGUgIlNoYXJl
ZFdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkLmgiCisj
aW5jbHVkZSAiV29ya2VyRmV0Y2hSZXN1bHQuaCIKKyNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1TaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6U2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkoU2hhcmVkV29ya2VyJiBzaGFyZWRXb3JrZXIpCi0gICAgOiBtX3NoYXJlZFdvcmtl
cihzaGFyZWRXb3JrZXIpCi0gICAgLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoc2hhcmVkV29y
a2VyLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAsIG1faWRlbnRpZmllckZvckluc3Bl
Y3RvcihzaGFyZWRXb3JrZXIuaWRlbnRpZmllckZvckluc3BlY3RvcigpKQorc3RhdGljIEhhc2hT
ZXQ8U2hhcmVkV29ya2VyVGhyZWFkUHJveHkqPiYgYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGll
cygpCiB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkqPj4gc2V0OworICAgIHJldHVybiBzZXQ7CiB9CiAKLXZvaWQgU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHk6OnN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkws
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxp
bmUsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc2NyaXB0QnVmZmVyLCBjb25zdCBDb250ZW50U2VjdXJp
dHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVh
ZGVycywgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIGNv
bnN0IENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kmIGNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ks
IE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3ks
IFdvcmtlclR5cGUgd29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVudGlh
bHMsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncykKK3N0YXRpYyBXb3JrZXJQYXJhbWV0
ZXJzIGdlbmVyYXRlV29ya2VyUGFyYW1ldGVycyhjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3Qg
V29ya2VyRmV0Y2hSZXN1bHQmIHdvcmtlckZldGNoUmVzdWx0LCBXb3JrZXJPcHRpb25zJiYgd29y
a2VyT3B0aW9ucywgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIERvY3VtZW50JiBkb2N1bWVudCkK
IHsKLSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBh
dXRvIHBhcmFtZXRlcnMgPSBXb3JrZXJQYXJhbWV0ZXJzIHsKKyAgICByZXR1cm4gV29ya2VyUGFy
YW1ldGVycyB7CiAgICAgICAgIHNjcmlwdFVSTCwKLSAgICAgICAgbmFtZSwKLSAgICAgICAgbV9p
ZGVudGlmaWVyRm9ySW5zcGVjdG9yLAorICAgICAgICB3b3JrZXJPcHRpb25zLm5hbWUsCisgICAg
ICAgICJzaGFyZWR3b3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVh
dGVJZGVudGlmaWVyKCksCiAgICAgICAgIHVzZXJBZ2VudCwKLSAgICAgICAgaXNPbmxpbmUsCi0g
ICAgICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywKLSAgICAgICAgc2hv
dWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LAotICAgICAgICBjcm9zc09y
aWdpbkVtYmVkZGVyUG9saWN5LAotICAgICAgICB0aW1lT3JpZ2luLAotICAgICAgICByZWZlcnJl
clBvbGljeSwKLSAgICAgICAgd29ya2VyVHlwZSwKLSAgICAgICAgY3JlZGVudGlhbHMsCi0gICAg
ICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2V0dGluZ3NWYWx1ZXMoKQorICAgICAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+aXNPbkxpbmUoKSwKKyAgICAg
ICAgd29ya2VyRmV0Y2hSZXN1bHQuY29udGVudFNlY3VyaXR5UG9saWN5LAorICAgICAgICBmYWxz
ZSwKKyAgICAgICAgd29ya2VyRmV0Y2hSZXN1bHQuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwK
KyAgICAgICAgTW9ub3RvbmljVGltZTo6bm93KCksCisgICAgICAgIHBhcnNlUmVmZXJyZXJQb2xp
Y3kod29ya2VyRmV0Y2hSZXN1bHQucmVmZXJyZXJQb2xpY3ksIFJlZmVycmVyUG9saWN5U291cmNl
OjpIVFRQSGVhZGVyKS52YWx1ZV9vcihSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcpLAorICAg
ICAgICB3b3JrZXJPcHRpb25zLnR5cGUsCisgICAgICAgIHdvcmtlck9wdGlvbnMuY3JlZGVudGlh
bHMsCisgICAgICAgIGRvY3VtZW50LnNldHRpbmdzVmFsdWVzKCkKICAgICB9OwotCi0gICAgaWYg
KCFtX3dvcmtlclRocmVhZCkgewotICAgICAgICBtX3dvcmtlclRocmVhZCA9IFNoYXJlZFdvcmtl
clRocmVhZDo6Y3JlYXRlKFNoYXJlZFdvcmtlcklkZW50aWZpZXI6OmdlbmVyYXRlKCksIHBhcmFt
ZXRlcnMsIHNjcmlwdEJ1ZmZlciwgKnRoaXMsICp0aGlzLCAqdGhpcywgV29ya2VyVGhyZWFkU3Rh
cnRNb2RlOjpOb3JtYWwsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+dG9wT3JpZ2luKCksIG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aWRiQ29ubmVjdGlvblByb3h5KCksIG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+c29ja2V0UHJvdmlkZXIoKSwgcnVudGltZUZsYWdzKTsKLSAgICAgICAg
bV93b3JrZXJUaHJlYWQtPnN0YXJ0KCk7Ci0gICAgfQotfQotCi12b2lkIFNoYXJlZFdvcmtlclRo
cmVhZFByb3h5Ojp0ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpCi17Ci0gICAgaWYgKG1fYXNr
ZWRUb1Rlcm1pbmF0ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9hc2tlZFRvVGVybWluYXRl
ID0gdHJ1ZTsKLSAgICBpZiAobV93b3JrZXJUaHJlYWQpCi0gICAgICAgIG1fd29ya2VyVGhyZWFk
LT5zdG9wKG51bGxwdHIpOwogfQogCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0
TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNz
YWdlKQorU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5KFVu
aXF1ZVJlZjxQYWdlPiYmIHBhZ2UsIFNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2Vy
SWRlbnRpZmllciwgY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIGNvbnN0IFVSTCYg
c2NyaXB0VVJMLCBXb3JrZXJGZXRjaFJlc3VsdCYmIHdvcmtlckZldGNoUmVzdWx0LCBXb3JrZXJP
cHRpb25zJiYgd29ya2VyT3B0aW9ucywgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIENhY2hlU3Rv
cmFnZVByb3ZpZGVyJiBjYWNoZVN0b3JhZ2VQcm92aWRlcikKKyAgICA6IG1fcGFnZShXVEZNb3Zl
KHBhZ2UpKQorICAgICwgbV9kb2N1bWVudCgqbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgp
KQorICAgICwgbV93b3JrZXJUaHJlYWQoU2hhcmVkV29ya2VyVGhyZWFkOjpjcmVhdGUoc2hhcmVk
V29ya2VySWRlbnRpZmllciwgZ2VuZXJhdGVXb3JrZXJQYXJhbWV0ZXJzKHNjcmlwdFVSTCwgd29y
a2VyRmV0Y2hSZXN1bHQsIFdURk1vdmUod29ya2VyT3B0aW9ucyksIHVzZXJBZ2VudCwgbV9kb2N1
bWVudCksIFdURk1vdmUod29ya2VyRmV0Y2hSZXN1bHQuc2NyaXB0KSwgKnRoaXMsICp0aGlzLCAq
dGhpcywgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIGNsaWVudE9yaWdpbi50b3BPcmln
aW4uc2VjdXJpdHlPcmlnaW4oKSwgbV9kb2N1bWVudC0+aWRiQ29ubmVjdGlvblByb3h5KCksIG1f
ZG9jdW1lbnQtPnNvY2tldFByb3ZpZGVyKCksIEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxF
bmFibGVkKCkpKQorICAgICwgbV9jYWNoZVN0b3JhZ2VQcm92aWRlcihjYWNoZVN0b3JhZ2VQcm92
aWRlcikKIHsKLSAgICAvLyBGSVhNRTogU2hhcmVkV29ya2VyIGRvZXNuJ3QgaGF2ZSBwb3N0TWVz
c2FnZSwgc28gdGhpcyBtaWdodCBub3QgYmUgbmVjZXNzYXJ5LgotICAgIHBvc3RUYXNrVG9Xb3Jr
ZXJHbG9iYWxTY29wZShbbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSldKGF1dG8mIHNjcmlwdENv
bnRleHQpIG11dGFibGUgewotICAgICAgICBhdXRvJiBjb250ZXh0ID0gZG93bmNhc3Q8U2hhcmVk
V29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdENvbnRleHQpOwotICAgICAgICBhdXRvIHBvcnRzID0g
TWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoc2NyaXB0Q29udGV4dCwgV1RGTW92ZShtZXNzYWdl
LnRyYW5zZmVycmVkUG9ydHMpKTsKLSAgICAgICAgY29udGV4dC5kaXNwYXRjaEV2ZW50KE1lc3Nh
Z2VFdmVudDo6Y3JlYXRlKFdURk1vdmUocG9ydHMpLCBtZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5v
bk51bGwoKSkpOwotICAgIH0pOwotfQorICAgIEFTU0VSVCghYWxsU2hhcmVkV29ya2VyVGhyZWFk
UHJveGllcygpLmNvbnRhaW5zKHRoaXMpKTsKKyAgICBhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94
aWVzKCkuYWRkKHRoaXMpOwogCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0VGFz
a1RvV29ya2VyR2xvYmFsU2NvcGUoRnVuY3Rpb248dm9pZChTY3JpcHRFeGVjdXRpb25Db250ZXh0
Jik+JiYgdGFzaykKLXsKLSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQotICAgICAgICByZXR1
cm47Ci0gICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhXVEZNb3ZlKHRhc2sp
KTsKLX0KLQotYm9vbCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6aGFzUGVuZGluZ0FjdGl2aXR5
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9oYXNQZW5kaW5nQWN0aXZpdHkgJiYgIW1fYXNrZWRU
b1Rlcm1pbmF0ZTsKKyAgICBzdGF0aWMgYm9vbCBhZGRlZExpc3RlbmVyOworICAgIGlmICghYWRk
ZWRMaXN0ZW5lcikgeworICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRl
Z3koKS0+YWRkT25saW5lU3RhdGVDaGFuZ2VMaXN0ZW5lcigmbmV0d29ya1N0YXRlQ2hhbmdlZCk7
CisgICAgICAgIGFkZGVkTGlzdGVuZXIgPSB0cnVlOworICAgIH0KIH0KIAotdm9pZCBTaGFyZWRX
b3JrZXJUaHJlYWRQcm94eTo6d29ya2VyT2JqZWN0RGVzdHJveWVkKCkKK1NoYXJlZFdvcmtlclRo
cmVhZFByb3h5Ojp+U2hhcmVkV29ya2VyVGhyZWFkUHJveHkoKQogewotICAgIG1fc2hhcmVkV29y
a2VyID0gbnVsbHB0cjsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFt0
aGlzXSAoYXV0byYpIHsKLSAgICAgICAgbV9tYXlCZURlc3Ryb3llZCA9IHRydWU7Ci0gICAgICAg
IGlmIChtX3dvcmtlclRocmVhZCkKLSAgICAgICAgICAgIHRlcm1pbmF0ZVdvcmtlckdsb2JhbFNj
b3BlKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJv
eWVkSW50ZXJuYWwoKTsKLSAgICB9KTsKKyAgICBBU1NFUlQoYWxsU2hhcmVkV29ya2VyVGhyZWFk
UHJveGllcygpLmNvbnRhaW5zKHRoaXMpKTsKKyAgICBhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94
aWVzKCkucmVtb3ZlKHRoaXMpOwogfQogCiBTaGFyZWRXb3JrZXJJZGVudGlmaWVyIFNoYXJlZFdv
cmtlclRocmVhZFByb3h5OjppZGVudGlmaWVyKCkgY29uc3QKQEAgLTEyNSw4OCArMTAzLDU0IEBA
IFNoYXJlZFdvcmtlcklkZW50aWZpZXIgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OmlkZW50aWZp
ZXIoKSBjb25zdAogCiB2b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpub3RpZnlOZXR3b3Jr
U3RhdGVDaGFuZ2UoYm9vbCBpc09ubGluZSkKIHsKLSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRl
KQorICAgIGlmIChtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmICghbV93b3JrZXJUaHJlYWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fd29y
a2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soW2lzT25saW5lXSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgeworICAgIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUoW2lzT25saW5lXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
ewogICAgICAgICBhdXRvJiBnbG9iYWxTY29wZSA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3Bl
Pihjb250ZXh0KTsKICAgICAgICAgZ2xvYmFsU2NvcGUuc2V0SXNPbmxpbmUoaXNPbmxpbmUpOwot
ICAgICAgICBnbG9iYWxTY29wZS5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoaXNPbmxpbmUg
PyBldmVudE5hbWVzKCkub25saW5lRXZlbnQgOiBldmVudE5hbWVzKCkub2ZmbGluZUV2ZW50LCBF
dmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKLSAgICB9KTsK
LX0KLQotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6c3VzcGVuZEZvckJhY2tGb3J3YXJk
Q2FjaGUoKQotewotCi19Ci0KLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnJlc3VtZUZv
ckJhY2tGb3J3YXJkQ2FjaGUoKQotewotCisgICAgICAgIGdsb2JhbFNjb3BlLmV2ZW50TG9vcCgp
LnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtnbG9iYWxTY29wZSA9IFJl
ZiB7IGdsb2JhbFNjb3BlIH0sIGlzT25saW5lXSB7CisgICAgICAgICAgICBnbG9iYWxTY29wZS0+
ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGlzT25saW5lID8gZXZlbnROYW1lcygpLm9ubGlu
ZUV2ZW50IDogZXZlbnROYW1lcygpLm9mZmxpbmVFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CisgICAgICAgIH0pOworICAgIH0sIFdvcmtlclJ1
bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwogfQogCiB2b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5
Ojpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2Us
IGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCkKIHsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzLCBlcnJv
ck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCksIHNvdXJjZVVSTCA9IHNvdXJj
ZVVSTC5pc29sYXRlZENvcHkoKSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyXSAoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpIHsKLSAgICAgICAgaWYgKCFtX3NoYXJlZFdvcmtlcikKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICAvLyBXZSBkb24ndCBib3RoZXIgY2hlY2tpbmcgdGhlIGFz
a2VkVG9UZXJtaW5hdGUoKSBmbGFnIGhlcmUsIGJlY2F1c2UgZXhjZXB0aW9ucyBzaG91bGQgKmFs
d2F5cyogYmUgcmVwb3J0ZWQgZXZlbiBpZiB0aGUgdGhyZWFkIGlzIHRlcm1pbmF0ZWQuCi0gICAg
ICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBkaWZmZXJlbnQgdGhhbiB0aGUgYmVoYXZpb3Ig
aW4gTWVzc2FnZVdvcmtlclRhc2ssIGJlY2F1c2UgdGVybWluYXRlZCB3b3JrZXJzIG5vIGxvbmdl
ciBkZWxpdmVyIG1lc3NhZ2VzIChzZWN0aW9uIDQuNiBvZiB0aGUgV2ViV29ya2VyIHNwZWMpLCBi
dXQgdGhleSBkbyByZXBvcnQgZXhjZXB0aW9ucy4KLSAgICAgICAgQWN0aXZlRE9NT2JqZWN0Ojpx
dWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKm1fc2hhcmVkV29ya2VyLCBUYXNrU291cmNlOjpET01N
YW5pcHVsYXRpb24sIEVycm9yRXZlbnQ6OmNyZWF0ZShlcnJvck1lc3NhZ2UsIHNvdXJjZVVSTCwg
bGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB7IH0pKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eTo6d29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWQoKQotewotICAg
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXNdIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JikgewotICAgICAgICB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZEludGVybmFs
KCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RNZXNz
YWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJikKLXsKLQotfQotCi12
b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmpl
Y3QoYm9vbCkKLXsKLX0KKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAoIW1f
d29ya2VyVGhyZWFkLT5pc0luU3RhdGljU2NyaXB0RXZhbHVhdGlvbigpKQorICAgICAgICByZXR1
cm47CiAKLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnJlcG9ydFBlbmRpbmdBY3Rpdml0
eShib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKLXsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPnBvc3RUYXNrKFt0aGlzLCBoYXNQZW5kaW5nQWN0aXZpdHldIChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JikgewotICAgICAgICBtX2hhc1BlbmRpbmdBY3Rpdml0eSA9IGhhc1BlbmRpbmdBY3Rp
dml0eTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzaGFyZWRXb3JrZXJJZGVudGlmaWVyID0gbV93
b3JrZXJUaHJlYWQtPmlkZW50aWZpZXIoKSwgZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlLmlz
b2xhdGVkQ29weSgpLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCA9IHNvdXJj
ZVVSTC5pc29sYXRlZENvcHkoKV0geworICAgICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IFNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCisgICAg
ICAgICAgICBjb25uZWN0aW9uLT5wb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qoc2hhcmVkV29y
a2VySWRlbnRpZmllciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNv
dXJjZVVSTCk7CiAgICAgfSk7CiB9CiAKIFJlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25j
YXN0PERvY3VtZW50PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICByZXR1cm4gZG9j
dW1lbnQucGFnZSgpLT5jYWNoZVN0b3JhZ2VQcm92aWRlcigpLmNyZWF0ZUNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24oKTsKKyAgICBpZiAoIW1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbikKKyAgICAgICAg
bV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uID0gbV9jYWNoZVN0b3JhZ2VQcm92aWRlci5jcmVhdGVD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uKCk7CisgICAgcmV0dXJuIG1fY2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjsKIH0KIAogUmVmUHRyPFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24+
IFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpjcmVhdGVSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRs
ZXJDb25uZWN0aW9uKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8m
IGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
OwotICAgIGlmICghZG9jdW1lbnQucGFnZSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICByZXR1cm4gZG9jdW1lbnQucGFnZSgpLT5saWJXZWJSVENQcm92aWRlcigpLmNyZWF0ZVJUQ0Rh
dGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24oKTsKKyAgICByZXR1cm4gbV9wYWdlLT5s
aWJXZWJSVENQcm92aWRlcigpLmNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5l
Y3Rpb24oKTsKIH0KIAogdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tUb0xv
YWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykKIHsKLSAgICBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFdURk1vdmUodGFzaykpOworICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3Rhc2sgPSBXVEZNb3ZlKHRhc2spLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHRhc2sucGVyZm9ybVRhc2socHJvdGVjdGVkVGhp
cy0+bV9kb2N1bWVudC5nZXQoKSk7CisgICAgfSk7CiB9CiAKIGJvb2wgU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsK
LSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQorICAgIGlmIChtX2lzVGVybWluYXRpbmdPclRl
cm1pbmF0ZWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1fd29ya2VyVGhyZWFkLT5y
dW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFdURk1vdmUodGFzayksIG1vZGUpOwpAQCAtMjIzLDE2
ICsxNjcsMTAgQEAgdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6c2V0UmVzb3VyY2VDYWNo
aW5nRGlzYWJsZWRCeVdlYkluc3BlY3Rvcihib29sKQogCiB9CiAKLXZvaWQgU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHk6Ondvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwoKQordm9pZCBT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6bmV0d29ya1N0YXRlQ2hhbmdlZChib29sIGlzT25MaW5l
KQogewotICAgIC8vIFRoaXMgaXMgYWx3YXlzIHRoZSBsYXN0IHRhc2sgdG8gYmUgcGVyZm9ybWVk
LCBzbyB0aGUgcHJveHkgaXMgbm90IG5lZWRlZCBmb3IgY29tbXVuaWNhdGlvbgotICAgIC8vIGlu
IGVpdGhlciBzaWRlIGFueSBtb3JlLiBIb3dldmVyLCB0aGUgV29ya2VyIG9iamVjdCBtYXkgc3Rp
bGwgZXhpc3QsIGFuZCBpdCBhc3N1bWVzIHRoYXQgdGhlIHByb3h5IGV4aXN0cywgdG9vLgotICAg
IG1fYXNrZWRUb1Rlcm1pbmF0ZSA9IHRydWU7Ci0gICAgbV93b3JrZXJUaHJlYWQgPSBudWxscHRy
OwotCi0gICAgLy8gVGhpcyBiYWxhbmNlcyB0aGUgb3JpZ2luYWwgcmVmIGluIGNvbnN0cnVjdGlv
bi4KLSAgICBpZiAobV9tYXlCZURlc3Ryb3llZCkKLSAgICAgICAgZGVyZWYoKTsKKyAgICBmb3Ig
KGF1dG8qIHByb3h5IDogYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGllcygpKQorICAgICAgICBw
cm94eS0+bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGlzT25MaW5lKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
Y29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oCmluZGV4IDRlOTJlNDU2
MTcxY2U5MWFlYjg3NWEzNWU3NTliOWVjNWI1NDFlZjcuLjMzNjQyNDBhYmJiNTliOGQxZDAzOWZl
ZWJkMDViMTRhMDI3MzdhZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNyAr
MjcsNiBAQAogCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VySWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IldvcmtlckRlYnVnZ2VyUHJveHkuaCIKLSNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZVByb3h5
LmgiCiAjaW5jbHVkZSAiV29ya2VyTG9hZGVyUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJPYmpl
Y3RQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlck9wdGlvbnMuaCIKQEAgLTM1LDUwICszNCw1NCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENhY2hlU3RvcmFnZVByb3ZpZGVyOwor
Y2xhc3MgUGFnZTsKIGNsYXNzIFNoYXJlZFdvcmtlcjsKIGNsYXNzIFNoYXJlZFdvcmtlclRocmVh
ZDsKIAotY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkgZmluYWwgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8U2hhcmVkV29ya2VyVGhyZWFkUHJveHk+LCBwdWJsaWMgV29ya2VyR2xv
YmFsU2NvcGVQcm94eSwgcHVibGljIFdvcmtlck9iamVjdFByb3h5LCBwdWJsaWMgV29ya2VyTG9h
ZGVyUHJveHksIHB1YmxpYyBXb3JrZXJEZWJ1Z2dlclByb3h5IHsKK3N0cnVjdCBDbGllbnRPcmln
aW47CitzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7CisKK2NsYXNzIFNoYXJlZFdvcmtlclRocmVh
ZFByb3h5IGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZFdvcmtlclRo
cmVhZFByb3h5PiwgcHVibGljIFdvcmtlck9iamVjdFByb3h5LCBwdWJsaWMgV29ya2VyTG9hZGVy
UHJveHksIHB1YmxpYyBXb3JrZXJEZWJ1Z2dlclByb3h5IHsKIHB1YmxpYzoKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkmIGNyZWF0
ZShBcmdzJiYuLi4gYXJncykgeyByZXR1cm4gKm5ldyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4g
QXJncz4gc3RhdGljIFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4gY3JlYXRlKEFyZ3MmJi4u
LiBhcmdzKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZFdvcmtlclRocmVhZFByb3h5KHN0
ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgflNoYXJl
ZFdvcmtlclRocmVhZFByb3h5KCk7CiAKICAgICBTaGFyZWRXb3JrZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIoKSBjb25zdDsKLSAgICBTaGFyZWRXb3JrZXJUaHJlYWQqIHRocmVhZCgpIHsgcmV0dXJu
IG1fd29ya2VyVGhyZWFkLmdldCgpOyB9CisgICAgU2hhcmVkV29ya2VyVGhyZWFkJiB0aHJlYWQo
KSB7IHJldHVybiBtX3dvcmtlclRocmVhZDsgfQogCi0gICAgdm9pZCBzdGFydFdvcmtlckdsb2Jh
bFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50LCBib29sIGlzT25saW5lLCBjb25zdCBTY3JpcHRCdWZmZXImIHNvdXJj
ZUNvZGUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGJvb2wg
c2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBDcm9zc09y
aWdpbkVtYmVkZGVyUG9saWN5JiwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBSZWZlcnJlclBv
bGljeSwgV29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMsIEpTQzo6UnVudGltZUZs
YWdzKSBmaW5hbDsKLSAgICB2b2lkIHdvcmtlck9iamVjdERlc3Ryb3llZCgpIGZpbmFsOwotICAg
IGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCB0ZXJtaW5h
dGVXb3JrZXJHbG9iYWxTY29wZSgpIGZpbmFsOworICAgIGJvb2wgaXNUZXJtaW5hdGluZ09yVGVy
bWluYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZDsgfQor
ICAgIHZvaWQgc2V0QXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCgpIHsgbV9pc1Rlcm1pbmF0aW5n
T3JUZXJtaW5hdGVkID0gdHJ1ZTsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFNoYXJlZFdv
cmtlclRocmVhZFByb3h5KFNoYXJlZFdvcmtlciYpOwotCi0gICAgdm9pZCB3b3JrZXJHbG9iYWxT
Y29wZURlc3Ryb3llZEludGVybmFsKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHkoVW5pcXVlUmVmPFBhZ2U+JiYsIFNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNv
bnN0IENsaWVudE9yaWdpbiYsIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBXb3JrZXJGZXRjaFJlc3Vs
dCYmLCBXb3JrZXJPcHRpb25zJiYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBDYWNoZVN0b3Jh
Z2VQcm92aWRlciYpOwogCi0gICAgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUo
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJikgZmluYWw7Ci0gICAgdm9pZCBwb3N0VGFza1RvV29y
a2VyR2xvYmFsU2NvcGUoRnVuY3Rpb248dm9pZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+JiYp
IGZpbmFsOwotICAgIHZvaWQgbm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUp
IGZpbmFsOwotICAgIHZvaWQgc3VzcGVuZEZvckJhY2tGb3J3YXJkQ2FjaGUoKSBmaW5hbDsKLSAg
ICB2b2lkIHJlc3VtZUZvckJhY2tGb3J3YXJkQ2FjaGUoKSBmaW5hbDsKKyAgICAvLyBXb3JrZXJP
YmplY3RQcm94eS4KICAgICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBT
dHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMKSBmaW5hbDsKLSAgICB2b2lkIHdvcmtlckdsb2JhbFNjb3Bl
RGVzdHJveWVkKCkgZmluYWw7Ci0gICAgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KE1l
c3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpIGZpbmFsOwotICAgIHZvaWQgY29uZmlybU1lc3NhZ2VG
cm9tV29ya2VyT2JqZWN0KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KSBmaW5hbDsKLSAgICB2b2lk
IHJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkgZmluYWw7Cisg
ICAgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
JiYpIGZpbmFsIHsgfQorICAgIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWQoKSBmaW5h
bCB7IH0KKyAgICB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sKSBmaW5h
bCB7IH0KKyAgICB2b2lkIHJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sKSBmaW5hbCB7IH0KKwor
ICAgIC8vIFdvcmtlckxvYWRlclByb3h5LgogICAgIFJlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uPiBjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkgZmluYWw7CiAgICAgUmVmUHRyPFJU
Q0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24+IGNyZWF0ZVJUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlckNvbm5lY3Rpb24oKSBmaW5hbDsKICAgICB2b2lkIHBvc3RUYXNrVG9Mb2Fk
ZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmKSBmaW5hbDsKICAgICBib29sIHBvc3RU
YXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzayYmLCBjb25zdCBTdHJpbmcmIG1vZGUpIGZpbmFsOworCisgICAgLy8gV29ya2Vy
RGVidWdnZXJQcm94eS4KICAgICB2b2lkIHBvc3RNZXNzYWdlVG9EZWJ1Z2dlcihjb25zdCBTdHJp
bmcmKSBmaW5hbDsKICAgICB2b2lkIHNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNw
ZWN0b3IoYm9vbCkgZmluYWw7CiAKLSAgICBXZWFrUHRyPFNoYXJlZFdvcmtlcj4gbV9zaGFyZWRX
b3JrZXI7Ci0gICAgUmVmUHRyPFNoYXJlZFdvcmtlclRocmVhZD4gbV93b3JrZXJUaHJlYWQ7Ci0g
ICAgY29uc3QgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKLSAgICBjb25zdCBTdHJpbmcgbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yOwotICAg
IGJvb2wgbV9hc2tlZFRvVGVybWluYXRlIHsgZmFsc2UgfTsKLSAgICBib29sIG1faGFzUGVuZGlu
Z0FjdGl2aXR5IHsgZmFsc2UgfTsKLSAgICBib29sIG1fbWF5QmVEZXN0cm95ZWQgeyBmYWxzZSB9
OworICAgIHN0YXRpYyB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoYm9vbCBpc09uTGluZSk7Cisg
ICAgdm9pZCBub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9vbCBpc09ubGluZSk7CisKKyAgICBV
bmlxdWVSZWY8UGFnZT4gbV9wYWdlOworICAgIFJlZjxEb2N1bWVudD4gbV9kb2N1bWVudDsKKyAg
ICBSZWY8U2hhcmVkV29ya2VyVGhyZWFkPiBtX3dvcmtlclRocmVhZDsKKyAgICBDYWNoZVN0b3Jh
Z2VQcm92aWRlciYgbV9jYWNoZVN0b3JhZ2VQcm92aWRlcjsKKyAgICBSZWZQdHI8Q2FjaGVTdG9y
YWdlQ29ubmVjdGlvbj4gbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uOworICAgIGJvb2wgbV9pc1Rl
cm1pbmF0aW5nT3JUZXJtaW5hdGVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
V2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4IDc1NmRhODhiNDVmNzA0MmY0MjNiNzM0Yzc2NGU2
NTY2ZDQ0NmVmYWYuLjI5ZjRjNzgxODE4MGRlMmNiMjQ5NTA3MmU4NDYwYTUwYWQzNjRhNDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktp
dC9DTWFrZUxpc3RzLnR4dApAQCAtMjgsNiArMjgsNyBAQCBzZXQoV2ViS2l0X0lOQ0xVREVfRElS
RUNUT1JJRVMKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25z
IgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50IgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIiCisg
ICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyIgogICAgICIke1dF
QktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UiCiAgICAgIiR7V0VCS0lUX0RJUn0v
TmV0d29ya1Byb2Nlc3MvY2FjaGUiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZSIKQEAgLTIwMiw2ICsyMDMsOSBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVT
CiAgICAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24K
ICAgICBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbgogCisgICAgTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb24KKyAgICBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbgorCiAgICAgTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldAogCiAgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbgpAQCAtMzA1LDYgKzMwOSw4IEBAIHNldChXZWJL
aXRfTUVTU0FHRVNfSU5fRklMRVMKIAogICAgIFdlYlByb2Nlc3MvU3BlZWNoL1NwZWVjaFJlY29n
bml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIKIAorICAgIFdlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24KKyAgICBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbgogICAgIFdlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24KICAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IDRjNjYyMjBjZjEyMmE1M2I3NDY5ZDQ0MDBjN2Nk
ZGIyMzVjOGI3NDkuLjcyMjljMWI5ODcwODg4MWI3YmFlYzNjZjdhMDI0NzM1NzJlMzVkZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAor
KysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTkx
LDYgKzkxLDggQEAgJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLm1lc3NhZ2VzLmkKICQoUFJPSkVDVF9ESVIpL05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisk
KFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZU1hbmFnZXJTZXQubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL05ldHdvcmtQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNz
LnNiLmluCkBAIC0yMTcsNiArMjE5LDggQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1Nw
ZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3IubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vV2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggZTNiNTU4NDBh
ZTFlYWY1N2Y1ZWJmNzU0MmU1ZTFmZDQwZTVkZDRkMS4uYTg2MzI4MTQ3YjU2YzVjNTYwYWE1YWJh
MzliZmFkMzI0NWMyNjE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0CkBAIC02MDcsNiArNjA3LDE4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXNSZXBs
aWVzCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dC9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbk1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXNS
ZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2Vi
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbk1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5o
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b25NZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
L1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2Fn
ZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQv
V2ViU29ja2V0Q2hhbm5lbE1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU29ja2V0Q2hhbm5lbE1lc3NhZ2VzLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU29ja2V0Q2hhbm5lbE1l
c3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggN2FkNDllMzcz
NWY0YjQ3OGM0MTZkOTI5NWMxMzliZTk4ZmQ2Y2U0YS4uMzUxZmZhZTBhNTg2NjBjMWQxMmZmOWFj
ZDg3N2QyN2M1MWMwN2QzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTMzLDYg
KzEzMyw4IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCU5ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzayBcCiAJTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrIFwKIAlOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBcCisJTmV0d29ya1Byb2Nlc3Mv
U2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24gXAorCU5ldHdvcmtQ
cm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uIFwKIAlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtIFwKIAlOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2VzcyBcCiAJTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyIFwKQEAgLTIyNSw2ICsyMjcsOCBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbiBcCiAJV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24gXAog
CVdlYlByb2Nlc3MvU3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1h
bmFnZXIgXAorCVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24gXAorCVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24gXAogCVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24gXAogCVdl
YlByb2Nlc3MvV2ViUHJvY2VzcyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGEz
NGY3OWJkZTNlMDgxNjk2ZDczYTU1ZmJmNTkwNThiZjZkOGYzNzkuLmM3YjE3ZmQ3MDc4NTRiMTI4
NDk4ZDExMThmNGU2ZTdkNWIzZDg1ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBA
IC02Niw2ICs2NiwxMSBAQAogI2luY2x1ZGUgIldlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0hUVFBDb29raWVBY2NlcHRQb2xpY3kuaD4KQEAgLTEzMiw2ICsxMzcsNyBAQCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0
d29ya1Byb2Nlc3MmIG5ldAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBlc3RhYmxp
c2hTV1NlcnZlckNvbm5lY3Rpb24oKTsKICNlbmRpZgorICAgIGVzdGFibGlzaFNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb24oKTsKIH0KIAogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
On5OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCkBAIC0xNjYsNiArMTcyLDcgQEAgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cygpCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHVucmVnaXN0ZXJTV0Nvbm5lY3Rp
b24oKTsKICNlbmRpZgorICAgIHVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiB9
CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhhc1VwbG9hZFN0YXRlQ2hh
bmdlZChib29sIGhhc1VwbG9hZCkKQEAgLTI3NSw2ICsyODIsMTcgQEAgdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW8KICAgICB9CiAjZW5kaWYKIAorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGlmIChtX3NoYXJlZFdvcmtlckNvbm5lY3Rp
b24pCisgICAgICAgICAgICBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNz
YWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Cisg
ICAgICAgIGlmIChtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKQorICAgICAgICAgICAg
bV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICNpZiBFTkFCTEUoQVBQ
TEVfUEFZX1JFTU9URV9VSSkKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkg
PT0gTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpCiAgICAgICAgIHJldHVybiBwYXltZW50Q29vcmRpbmF0b3IoKS5kaWRSZWNlaXZlTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKQEAgLTM5OCw5ICs0MTYsOCBAQCB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24pCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIG1fc3dDb250ZXh0Q29u
bmVjdGlvbiA9IG51bGxwdHI7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsK
ICNlbmRpZgorICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwog
CiAgICAgLy8gUHJvdGVjdCBvdXJzZWxmIGFzIHdlIG1pZ2h0IGJlIG90aGVyd2lzZSBiZSBkZWxl
dGVkIGR1cmluZyB0aGlzIGZ1bmN0aW9uLgogICAgIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcz4gcHJvdGVjdG9yKCp0aGlzKTsKQEAgLTQ0MSw2ICs0NTgsNyBAQCB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24pCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHVucmVnaXN0ZXJTV0Nvbm5l
Y3Rpb24oKTsKICNlbmRpZgorICAgIHVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7
CiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKICAgICBtX3BheW1lbnRDb29yZGlu
YXRvciA9IG51bGxwdHI7CkBAIC0xMTg2LDYgKzEyMDQsNjEgQEAgc2l6ZV90IE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpmaW5kTmV0d29ya0FjdGl2aXR5VHJhY2tlcihXZWJDb3JlOjpS
ZXNvdXIKICAgICAgICAgcmV0dXJuIGl0ZW0ucmVzb3VyY2VJRCA9PSByZXNvdXJjZUlEOwogICAg
IH0pOwogfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hT
aGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxF
QVNFX0xPRyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvbjoiKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsKKyAgICBpZiAo
YXV0byogc3dTZXJ2ZXIgPSBzZXNzaW9uID8gc2Vzc2lvbi0+c2hhcmVkV29ya2VyU2VydmVyKCkg
OiBudWxscHRyKQorICAgICAgICBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uID0gbWFr
ZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPigqdGhpcywg
V1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksICpzd1NlcnZlcik7CisgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJs
aXNoU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpCit7CisgICAgaWYgKG1fc2hhcmVkV29y
a2VyQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogc2Vzc2lvbiA9IG5l
dHdvcmtTZXNzaW9uKCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAg
ICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb246Iik7CisKKyAgICBhdXRvJiBzZXJ2ZXIgPSBzZXNzaW9uLT5l
bnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKTsKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBtYWtlVW5p
cXVlPFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29ya1Byb2Nlc3MsIHNl
cnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsKKworICAg
IG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbiA9ICpjb25uZWN0aW9uOworICAgIHNlcnZlci5hZGRD
b25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpjbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKCkKK3sK
KyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImNsb3NlU2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb246Iik7CisgICAgbV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvbiA9IG51bGxwdHI7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uKCkKK3sKKyAgICBDT05ORUNUSU9OX1JF
TEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgInVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9u
OiIpOworICAgIGlmIChtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24pCisgICAgICAgIG1fc2hhcmVk
V29ya2VyQ29ubmVjdGlvbi0+c2VydmVyKCkucmVtb3ZlQ29ubmVjdGlvbihtX3NoYXJlZFdvcmtl
ckNvbm5lY3Rpb24tPndlYlByb2Nlc3NJZGVudGlmaWVyKCkpOworfQorCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uSXNOb0xvbmdlck5lZWRlZCgpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTaGFy
ZWRXb3JrZXIsICJzaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdl
ck5lZWRlZDoiKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpTaGFyZWRXb3JrZXJDb250
ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkIHsgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAw
KTsKKworICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOworfQor
CitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKiBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6c2hhcmVkV29ya2VyQ29ubmVjdGlvbigpCit7CisgICAgaWYgKCFtX3NoYXJlZFdv
cmtlckNvbm5lY3Rpb24pCisgICAgICAgIGVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb24oKTsKKyAgICByZXR1cm4gbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uLmdldCgpOworfQog
ICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCmluZGV4IGFiOTY2NTdkMGRmNGEyMzMxMDQwYWM1MWZjNDNjMDY4NDc4NDgwNDcuLmQwYWE0
ZWY3NDUyMGEyY2EwYjU1MWI0NjllODZlYTc2NjhiNjc4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgKQEAgLTkyLDYgKzkyLDggQEAgY2xhc3MgTmV0d29ya1NvY2tldFN0cmVhbTsKIGNsYXNz
IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CiBj
bGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CitjbGFzcyBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjsKIAogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiBzdHJ1Y3QgRGF0YUtleTsK
QEAgLTE4NSw2ICsxODcsOSBAQCBwdWJsaWM6CiAgICAgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uKiBz
d0Nvbm5lY3Rpb24oKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFz
az4gY3JlYXRlRmV0Y2hUYXNrKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlmCisgICAgdm9pZCBzaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOworCisgICAgV2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbiogc2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOwogCiAgICAgTmV0
d29ya1NjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSgpIHsgcmV0dXJuIG1fc2NoZW1lUmVn
aXN0cnkuZ2V0KCk7IH0KIApAQCAtMjUzLDYgKzI1OCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
cmVhdGVTb2NrZXRDaGFubmVsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFN0cmluZyYgcHJvdG9jb2wsIFdlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXIsIFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwogICAgIHZvaWQg
dXBkYXRlUXVvdGFCYXNlZE9uU3BhY2VVc2FnZUZvclRlc3RpbmcoY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJik7CiAKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb24oKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CisK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxpc2hTV1NlcnZlckNv
bm5lY3Rpb24oKTsKICAgICB2b2lkIGVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViUGFn
ZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdv
cmtlclBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMjYw
LDYgKzI2OCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7
CiAjZW5kaWYKIAorICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rp
b24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGNsb3NlU2hhcmVkV29ya2Vy
Q29udGV4dENvbm5lY3Rpb24oKTsKKwogICAgIHZvaWQgY3JlYXRlUlRDUHJvdmlkZXIoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICB2b2lkIGNv
bm5lY3RUb1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVs
SWRlbnRpZmllciBzb3VyY2UsIFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBoYW5k
bGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8Ym9vbD4pPiYmKTsKQEAg
LTQwNCw2ICs0MTUsOCBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8V2ViU1dTZXJ2ZXJDb25uZWN0
aW9uPiBtX3N3Q29ubmVjdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uPiBtX3N3Q29udGV4dENvbm5lY3Rpb247CiAjZW5kaWYKKyAgICBXZWFr
UHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24+IG1fc2hhcmVkV29ya2VyQ29ubmVj
dGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbj4gbV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbjsKIAogI2lmIEVOQUJM
RShXRUJfUlRDKQogICAgIGJvb2wgbV9pc1JlZ2lzdGVyZWRUb1JUQ0RhdGFDaGFubmVsUHJveHkg
eyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5k
ZXggMjQyODM1MDUwYjI0OTcwYzVlYWMxZTI2YmY4NmI1YjAyNWE4MGU1My4uYjk3Y2EzNDc5YjRk
OWQ1NTc5YTdlN2U1NWE2OTFhNjBkZDg4NjZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCkBAIC04OCw2ICs4OCw5IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBDbG9zZVNXQ29udGV4
dENvbm5lY3Rpb24oKQogI2VuZGlmCiAKKyAgICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0
Q29ubmVjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikgLT4gKCkgQXN5bmMKKyAgICBDbG9z
ZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKCkKKwogICAgIENyZWF0ZVJUQ1Byb3ZpZGVy
KCkgLT4gKCkgQXN5bmMKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICBDb25uZWN0VG9SVENEYXRh
Q2hhbm5lbFJlbW90ZVNvdXJjZShzdHJ1Y3QgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlm
aWVyIHNvdXJjZSwgc3RydWN0IFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBoYW5k
bGVyKSAtPiAoc3RkOjpvcHRpb25hbDxib29sPiByZXN1bHQpIEFzeW5jCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IGUyYjI0ZDgzMjJi
NmVjMWMzNzcwMWRjYWQ0OTc1MzRjZWYyMzFhMjYuLmQ3NjE2Mjg1MGNhZDg0MzhmMDA4ODkwNTNm
N2VkYzgyZjNlMzNhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJT
V09yaWdpblN0b3JlLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgiCiAjaW5j
bHVkZSAiV2ViU29ja2V0VGFzay5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llSmFyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KQEAgLTY1Myw2ICs2NTQsMTMgQEAg
Ym9vbCBOZXR3b3JrU2Vzc2lvbjo6aGFzU2VydmljZVdvcmtlckRhdGFiYXNlUGF0aCgpIGNvbnN0
CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKK1dlYlNoYXJlZFdvcmtlclNl
cnZlciYgTmV0d29ya1Nlc3Npb246OmVuc3VyZVNoYXJlZFdvcmtlclNlcnZlcigpCit7CisgICAg
aWYgKCFtX3NoYXJlZFdvcmtlclNlcnZlcikKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJTZXJ2ZXIg
PSBtYWtlVW5pcXVlPFdlYlNoYXJlZFdvcmtlclNlcnZlcj4oKnRoaXMpOworICAgIHJldHVybiAq
bV9zaGFyZWRXb3JrZXJTZXJ2ZXI7Cit9CisKIFdlYklEQlNlcnZlciYgTmV0d29ya1Nlc3Npb246
OmVuc3VyZVdlYklEQlNlcnZlcigpCiB7CiAgICAgaWYgKCFtX3dlYklEQlNlcnZlcikgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDE5MzA3
Y2Y0MGJlM2IyZjI2MDU3ZDAxNmM3NjZlZGNlNDk4Yzk1NDIuLjNmOWQ2Yzk1NTBhOGI4Y2VjOWU0
YzU1OWQzMWQxMjFhOThiMGU4NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmgKQEAgLTc5LDYgKzc5LDcgQEAgY2xhc3MgU2VydmljZVdvcmtlckZl
dGNoVGFzazsKIGNsYXNzIFdlYklEQlNlcnZlcjsKIGNsYXNzIFdlYlBhZ2VOZXR3b3JrUGFyYW1l
dGVyczsKIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTsKK2NsYXNzIFdlYlNo
YXJlZFdvcmtlclNlcnZlcjsKIGNsYXNzIFdlYlNvY2tldFRhc2s7CiBjbGFzcyBXZWJTV09yaWdp
blN0b3JlOwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwpAQCAtMjEwLDYgKzIxMSw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKGJvb2wgcHJvY2Vzc1Rl
cm1pbmF0aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcmJiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGlyZWN0b3J5LCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKICNlbmRpZgogCisg
ICAgV2ViU2hhcmVkV29ya2VyU2VydmVyKiBzaGFyZWRXb3JrZXJTZXJ2ZXIoKSB7IHJldHVybiBt
X3NoYXJlZFdvcmtlclNlcnZlci5nZXQoKTsgfQorICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlciYg
ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCk7CisKICAgICBXZWJJREJTZXJ2ZXIqIHdlYklEQlNl
cnZlcigpIHsgcmV0dXJuIG1fd2ViSURCU2VydmVyLmdldCgpOyB9CiAgICAgV2ViSURCU2VydmVy
JiBlbnN1cmVXZWJJREJTZXJ2ZXIoKTsKICAgICB2b2lkIGNsb3NlSURCU2VydmVyKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0zMTgsNiArMzIyLDcgQEAgcHJvdGVjdGVkOgogICAg
IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckluZm8+IG1fc2VydmljZVdvcmtlckluZm87CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNXU2VydmVyPiBtX3N3U2VydmVyOwogI2VuZGlm
CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlcj4gbV9zaGFyZWRXb3Jr
ZXJTZXJ2ZXI7CiAKICAgICBTdHJpbmcgbV9pZGJEYXRhYmFzZVBhdGg7CiAgICAgUmVmUHRyPFdl
YklEQlNlcnZlcj4gbV93ZWJJREJTZXJ2ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44MDA5MTM5NTI4MGM4ZDc2MGVmMWExZDEyMWMyMTQ3NWY0OTVlYmI4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyLmNwcApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlci5oIgorCisjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIEhhc2hNYXA8V2Vi
Q29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwgV2ViU2hhcmVkV29ya2VyKj4mIGFsbFdvcmtl
cnMoKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEhhc2hNYXA8V2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwgV2ViU2hh
cmVkV29ya2VyKj4+IGFsbFdvcmtlcnM7CisgICAgcmV0dXJuIGFsbFdvcmtlcnM7Cit9CisKK1dl
YlNoYXJlZFdvcmtlcjo6V2ViU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtl
cktleSYga2V5LCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25zKQor
ICAgIDogbV9pZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXI6OmdlbmVy
YXRlKCkpCisgICAgLCBtX2tleShrZXkpCisgICAgLCBtX3dvcmtlck9wdGlvbnMod29ya2VyT3B0
aW9ucykKK3sKKyAgICBBU1NFUlQoIWFsbFdvcmtlcnMoKS5jb250YWlucyhtX2lkZW50aWZpZXIp
KTsKKyAgICBhbGxXb3JrZXJzKCkuYWRkKG1faWRlbnRpZmllciwgdGhpcyk7Cit9CisKK1dlYlNo
YXJlZFdvcmtlcjo6fldlYlNoYXJlZFdvcmtlcigpCit7CisgICAgQVNTRVJUKGFsbFdvcmtlcnMo
KS5nZXQobV9pZGVudGlmaWVyKSA9PSB0aGlzKTsKKyAgICBhbGxXb3JrZXJzKCkucmVtb3ZlKG1f
aWRlbnRpZmllcik7Cit9CisKK1dlYlNoYXJlZFdvcmtlciogV2ViU2hhcmVkV29ya2VyOjpmcm9t
SWRlbnRpZmllcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7
CisgICAgcmV0dXJuIGFsbFdvcmtlcnMoKS5nZXQoaWRlbnRpZmllcik7Cit9CisKK1dlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIFdlYlNoYXJlZFdvcmtlcjo6cmVnaXN0cmFibGVEb21haW4oKSBj
b25zdAoreworICAgIHJldHVybiBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCgpIH07
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zNGI3YTRhODQzY2VmOWExN2ViYzBiM2E1ZmE0Y2NkNGQwNjE2YjM0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hh
cmVkV29ya2VyLmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9TaGFyZWRXb3JrZXJLZXkuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RyYW5zZmVycmVkTWVzc2Fn
ZVBvcnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlckZldGNoUmVzdWx0Lmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9Xb3JrZXJPcHRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVnaXN0cmFibGVEb21haW47Cit9CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXIgOiBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8V2ViU2hhcmVkV29ya2VyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Citw
dWJsaWM6CisgICAgV2ViU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktl
eSYsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmKTsKKyAgICB+V2ViU2hhcmVkV29ya2Vy
KCk7CisKKyAgICBzdGF0aWMgV2ViU2hhcmVkV29ya2VyKiBmcm9tSWRlbnRpZmllcihXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKKworICAgIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklk
ZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAg
IGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYga2V5KCkgY29uc3QgeyByZXR1cm4gbV9r
ZXk7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25zKCkg
Y29uc3QgeyByZXR1cm4gbV93b3JrZXJPcHRpb25zOyB9CisgICAgY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX2tleS5vcmlnaW47IH0KKyAgICBj
b25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5LnVybDsgfQorICAgIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3Q7CisgICAgSGFzaE1h
cDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXZWJDb3JlOjpUcmFuc2Zl
cnJlZE1lc3NhZ2VQb3J0PiYgc2hhcmVkV29ya2VyT2JqZWN0cygpIHsgcmV0dXJuIG1fc2hhcmVk
V29ya2VyT2JqZWN0czsgfQorCisgICAgYm9vbCBpc1J1bm5pbmcoKSBjb25zdCB7IHJldHVybiBt
X2lzUnVubmluZzsgfQorICAgIHZvaWQgbWFya0FzUnVubmluZygpIHsgbV9pc1J1bm5pbmcgPSB0
cnVlOyB9CisKKyAgICBjb25zdCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYgZmV0Y2hSZXN1
bHQoKSBjb25zdCB7IHJldHVybiBtX2ZldGNoUmVzdWx0OyB9CisgICAgdm9pZCBzZXRGZXRjaFJl
c3VsdChXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmIGZldGNoUmVzdWx0KSB7IG1fZmV0Y2hS
ZXN1bHQgPSBXVEZNb3ZlKGZldGNoUmVzdWx0KTsgfQorICAgIGJvb2wgZGlkRmluaXNoRmV0Y2hp
bmcoKSBjb25zdCB7IHJldHVybiAhIW1fZmV0Y2hSZXN1bHQuc2NyaXB0OyB9CisKK3ByaXZhdGU6
CisgICAgV2ViU2hhcmVkV29ya2VyKFdlYlNoYXJlZFdvcmtlciYmKSA9IGRlbGV0ZTsKKyAgICBX
ZWJTaGFyZWRXb3JrZXImIG9wZXJhdG9yPShXZWJTaGFyZWRXb3JrZXImJikgPSBkZWxldGU7Cisg
ICAgV2ViU2hhcmVkV29ya2VyKGNvbnN0IFdlYlNoYXJlZFdvcmtlciYpID0gZGVsZXRlOworICAg
IFdlYlNoYXJlZFdvcmtlciYgb3BlcmF0b3I9KGNvbnN0IFdlYlNoYXJlZFdvcmtlciYpID0gZGVs
ZXRlOworCisgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBtX2lkZW50aWZpZXI7
CisgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5IG1fa2V5OworICAgIFdlYkNvcmU6Oldvcmtl
ck9wdGlvbnMgbV93b3JrZXJPcHRpb25zOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydD4gbV9z
aGFyZWRXb3JrZXJPYmplY3RzOworICAgIFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0IG1fZmV0
Y2hSZXN1bHQ7CisgICAgYm9vbCBtX2lzUnVubmluZyB7IGZhbHNlIH07Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmZjNjgzMDIxNGQ0MGM0N2YyMmU5NTU5Y2M4NmFkNzI1YWI1MTA1YjMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJT
aGFyZWRXb3JrZXJTZXJ2ZXIuY3BwCkBAIC0wLDAgKzEsMjY3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlci5oIgorCisj
aW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Nlc3Np
b24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXIuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21h
aW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcktleS5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvV29ya2VyRmV0Y2hSZXN1bHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlck9wdGlv
bnMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlcjo6V2Vi
U2hhcmVkV29ya2VyU2VydmVyKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uKQorICAgIDogbV9zZXNz
aW9uKHNlc3Npb24pCit7Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlcjo6fldlYlNoYXJlZFdv
cmtlclNlcnZlcigpID0gZGVmYXVsdDsKKworUEFMOjpTZXNzaW9uSUQgV2ViU2hhcmVkV29ya2Vy
U2VydmVyOjpzZXNzaW9uSUQoKQoreworICAgIHJldHVybiBtX3Nlc3Npb24uc2Vzc2lvbklEKCk7
Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyKFdl
YkNvcmU6OlNoYXJlZFdvcmtlcktleSYmIHNoYXJlZFdvcmtlcktleSwgV2ViQ29yZTo6U2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXZWJD
b3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgcG9ydCwgV2ViQ29yZTo6V29ya2VyT3B0aW9u
cyYmIHdvcmtlck9wdGlvbnMpCit7CisgICAgYXV0byYgc2hhcmVkV29ya2VyID0gbV9zaGFyZWRX
b3JrZXJzLmVuc3VyZShzaGFyZWRXb3JrZXJLZXksIFsmXSB7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFdlYlNoYXJlZFdvcmtlcj4oc2hhcmVkV29ya2VyS2V5LCB3b3JrZXJPcHRpb25zKTsK
KyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAi
V2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyPSV7cHJpdmF0ZX1zLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBS
SXU2NCwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRh
KCksIHNoYXJlZFdvcmtlci0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworCisgICAgaWYgKHNo
YXJlZFdvcmtlci0+d29ya2VyT3B0aW9ucygpLnR5cGUgIT0gd29ya2VyT3B0aW9ucy50eXBlIHx8
IHNoYXJlZFdvcmtlci0+d29ya2VyT3B0aW9ucygpLmNyZWRlbnRpYWxzICE9IHdvcmtlck9wdGlv
bnMuY3JlZGVudGlhbHMpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2hhcmVkV29ya2Vy
LCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyOiBBIHdvcmtlciBh
bHJlYWR5IGV4aXN0cyB3aXRoIHRoaXMgbmFtZSBidXQgaGFzIGRpZmZlcmVudCB0eXBlIC8gY3Jl
ZGVudGlhbHMiKTsKKyAgICAgICAgaWYgKGF1dG8qIHNlcnZlckNvbm5lY3Rpb24gPSBtX2Nvbm5l
Y3Rpb25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVy
KCkpKQorICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlvbi0+bm90aWZ5V29ya2VyT2JqZWN0T2ZM
b2FkQ29tcGxldGlvbihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCB7IFdlYkNvcmU6OlJl
c291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBzaGFyZWRXb3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMoKS5hZGQoc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllciwgcG9ydCk7CisKKyAgICBpZiAoc2hhcmVkV29ya2VyLT5z
aGFyZWRXb3JrZXJPYmplY3RzKCkuc2l6ZSgpID4gMSkgeworICAgICAgICBSRUxFQVNFX0xPRyhT
aGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6
IEEgc2hhcmVkIHdvcmtlciB3aXRoIHRoaXMgVVJMIGFscmVhZHkgZXhpc3RzIChub3cgc2hhcmVk
IGJ5ICV1IHNoYXJlZCB3b3JrZXIgb2JqZWN0cykiLCBzaGFyZWRXb3JrZXItPnNoYXJlZFdvcmtl
ck9iamVjdHMoKS5zaXplKCkpOworICAgICAgICBpZiAoc2hhcmVkV29ya2VyLT5kaWRGaW5pc2hG
ZXRjaGluZygpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1f
Y29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50
aWZpZXIoKSkpCisgICAgICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlvbi0+bm90aWZ5V29ya2Vy
T2JqZWN0T2ZMb2FkQ29tcGxldGlvbihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCB7IH0p
OworICAgICAgICB9CisgICAgICAgIGlmIChzaGFyZWRXb3JrZXItPmlzUnVubmluZygpKSB7Cisg
ICAgICAgICAgICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IG1fY29udGV4dENvbm5lY3Rpb25z
LmdldChzaGFyZWRXb3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgICAgICAgICAgQVNT
RVJUKGNvbnRleHRDb25uZWN0aW9uKTsKKyAgICAgICAgICAgIGlmIChjb250ZXh0Q29ubmVjdGlv
bikKKyAgICAgICAgICAgICAgICBjb250ZXh0Q29ubmVjdGlvbi0+cG9zdENvbm5lY3RFdmVudCgq
c2hhcmVkV29ya2VyLCBwb3J0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIEFTU0VSVCghc2hhcmVkV29ya2VyLT5pc1J1bm5pbmcoKSk7CisKKyAgICBhdXRvKiBzZXJ2
ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllci5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlQoc2VydmVyQ29ubmVjdGlvbik7
CisKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6
OnJlcXVlc3RTaGFyZWRXb3JrZXI6IEZldGNoaW5nIHNoYXJlZCB3b3JrZXIgc2NyaXB0IGluIGNs
aWVudCIpOworICAgIHNlcnZlckNvbm5lY3Rpb24tPmZldGNoU2NyaXB0SW5DbGllbnQoKnNoYXJl
ZFdvcmtlciwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgW3dlYWtUaGlzID0gV2Vha1B0
ciB7ICp0aGlzIH0sIHNoYXJlZFdvcmtlciA9IFdlYWtQdHIgeyAqc2hhcmVkV29ya2VyIH1dKFdl
YkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYgZmV0Y2hSZXN1bHQpIHsKKyAgICAgICAgaWYgKHdl
YWtUaGlzICYmIHNoYXJlZFdvcmtlcikKKyAgICAgICAgICAgIHdlYWtUaGlzLT5kaWRGaW5pc2hG
ZXRjaGluZ1NoYXJlZFdvcmtlclNjcmlwdCgqc2hhcmVkV29ya2VyLCBXVEZNb3ZlKGZldGNoUmVz
dWx0KSk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpkaWRGaW5p
c2hGZXRjaGluZ1NoYXJlZFdvcmtlclNjcmlwdChXZWJTaGFyZWRXb3JrZXImIHNoYXJlZFdvcmtl
ciwgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJiBmZXRjaFJlc3VsdCkKK3sKKyAgICBSRUxF
QVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZl
dGNoaW5nU2hhcmVkV29ya2VyU2NyaXB0IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0
ICIsIHNoYXJlZFdvcmtlcj0lcCwgc3VjY2Vzcz0lZCIsIHNoYXJlZFdvcmtlci5pZGVudGlmaWVy
KCkudG9VSW50NjQoKSwgJnNoYXJlZFdvcmtlciwgZmV0Y2hSZXN1bHQuZXJyb3IuaXNOdWxsKCkp
OworCisgICAgZm9yIChhdXRvIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgOiBzaGFyZWRX
b3JrZXIuc2hhcmVkV29ya2VyT2JqZWN0cygpLmtleXMoKSkgeworICAgICAgICBpZiAoYXV0byog
c2VydmVyQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSkpCisgICAgICAgICAgICBzZXJ2ZXJDb25uZWN0
aW9uLT5ub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIsIGZldGNoUmVzdWx0LmVycm9yKTsKKyAgICB9CisKKyAgICBpZiAoIWZldGNo
UmVzdWx0LmVycm9yLmlzTnVsbCgpKSB7CisgICAgICAgIG1fc2hhcmVkV29ya2Vycy5yZW1vdmUo
c2hhcmVkV29ya2VyLmtleSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNoYXJl
ZFdvcmtlci5zZXRGZXRjaFJlc3VsdChXVEZNb3ZlKGZldGNoUmVzdWx0KSk7CisKKyAgICBhdXRv
IHJlZ2lzdHJhYmxlRG9tYWluID0gc2hhcmVkV29ya2VyLnJlZ2lzdHJhYmxlRG9tYWluKCk7Cisg
ICAgYXV0byogY29udGV4dENvbm5lY3Rpb24gPSBjb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJh
YmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoIWNvbnRleHRDb25uZWN0aW9u
KSB7CisgICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnRleHRDb25uZWN0aW9uLT5sYXVuY2hT
aGFyZWRXb3JrZXIoc2hhcmVkV29ya2VyKTsKK30KKworYm9vbCBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXI6Om5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pIGNvbnN0Cit7CisgICAg
Zm9yIChhdXRvJiBzaGFyZWRXb3JrZXIgOiBtX3NoYXJlZFdvcmtlcnMudmFsdWVzKCkpIHsKKyAg
ICAgICAgaWYgKHJlZ2lzdHJhYmxlRG9tYWluLm1hdGNoZXMoc2hhcmVkV29ya2VyLT51cmwoKSkp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQor
Cit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQoreworICAg
IEFTU0VSVCghbV9jb250ZXh0Q29ubmVjdGlvbnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4p
KTsKKyAgICBpZiAobV9wZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5zLmNvbnRhaW5zKHJl
Z2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUkVMRUFTRV9MT0coU2hh
cmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlv
biB3aWxsIGNyZWF0ZSBhIGNvbm5lY3Rpb24iKTsKKworICAgIG1fcGVuZGluZ0NvbnRleHRDb25u
ZWN0aW9uRG9tYWlucy5hZGQocmVnaXN0cmFibGVEb21haW4pOworICAgIG1fc2Vzc2lvbi5uZXR3
b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RXN0YWJsaXNoU2hhcmVkV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcmVnaXN0cmFibGVEb21haW4sIG1fc2Vz
c2lvbi5zZXNzaW9uSUQoKSB9LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwg
cmVnaXN0cmFibGVEb21haW5dIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXI6OmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uIHNob3VsZCBub3cgaGF2ZSBjcmVh
dGVkIGEgY29ubmVjdGlvbiIpOworCisgICAgICAgIEFTU0VSVChtX3BlbmRpbmdDb250ZXh0Q29u
bmVjdGlvbkRvbWFpbnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKTsKKyAgICAgICAgbV9w
ZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5zLnJlbW92ZShyZWdpc3RyYWJsZURvbWFpbik7
CisKKyAgICAgICAgaWYgKG1fY29udGV4dENvbm5lY3Rpb25zLmNvbnRhaW5zKHJlZ2lzdHJhYmxl
RG9tYWluKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAobmVlZHNDb250ZXh0
Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAg
ICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICB9
LCAwKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmFkZENvbnRleHRDb25uZWN0
aW9uKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25u
ZWN0aW9uKQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtl
clNlcnZlcjo6YWRkQ29udGV4dENvbm5lY3Rpb24oJXApIHdlYlByb2Nlc3NJZGVudGlmaWVyPSUi
IFBSSXU2NCwgJmNvbnRleHRDb25uZWN0aW9uLCBjb250ZXh0Q29ubmVjdGlvbi53ZWJQcm9jZXNz
SWRlbnRpZmllcigpLnRvVUludDY0KCkpOworCisgICAgQVNTRVJUKCFtX2NvbnRleHRDb25uZWN0
aW9ucy5jb250YWlucyhjb250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpKSk7CisK
KyAgICBtX2NvbnRleHRDb25uZWN0aW9ucy5hZGQoY29udGV4dENvbm5lY3Rpb24ucmVnaXN0cmFi
bGVEb21haW4oKSwgJmNvbnRleHRDb25uZWN0aW9uKTsKKworICAgIGNvbnRleHRDb25uZWN0aW9u
Q3JlYXRlZChjb250ZXh0Q29ubmVjdGlvbik7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyOjpyZW1vdmVDb250ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbikKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFy
ZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlbW92ZUNvbnRleHRDb25uZWN0aW9u
KCVwKSB3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQsICZjb250ZXh0Q29ubmVjdGlvbiwg
Y29udGV4dENvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKwor
ICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBjb250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJs
ZURvbWFpbigpOworCisgICAgQVNTRVJUKG1fY29udGV4dENvbm5lY3Rpb25zLmdldChyZWdpc3Ry
YWJsZURvbWFpbikgPT0gJmNvbnRleHRDb25uZWN0aW9uKTsKKworICAgIG1fY29udGV4dENvbm5l
Y3Rpb25zLnJlbW92ZShyZWdpc3RyYWJsZURvbWFpbik7CisKKyAgICBpZiAobmVlZHNDb250ZXh0
Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAg
ICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4pOworfQorCit2b2lk
IFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFdlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uKQorewor
ICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y29u
dGV4dENvbm5lY3Rpb25DcmVhdGVkKCVwKSB3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQs
ICZjb250ZXh0Q29ubmVjdGlvbiwgY29udGV4dENvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpKTsKKyAgICBhdXRvJiByZWdpc3RyYWJsZURvbWFpbiA9IGNvbnRleHRD
b25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCk7CisgICAgZm9yIChhdXRvJiBzaGFyZWRXb3Jr
ZXIgOiBtX3NoYXJlZFdvcmtlcnMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHNoYXJlZFdvcmtl
ci0+ZGlkRmluaXNoRmV0Y2hpbmcoKSAmJiByZWdpc3RyYWJsZURvbWFpbi5tYXRjaGVzKHNoYXJl
ZFdvcmtlci0+dXJsKCkpKQorICAgICAgICAgICAgY29udGV4dENvbm5lY3Rpb24ubGF1bmNoU2hh
cmVkV29ya2VyKCpzaGFyZWRXb3JrZXIpOworICAgIH0KK30KKwordm9pZCBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXI6OnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KGNvbnN0IFdlYkNvcmU6OlNo
YXJlZFdvcmtlcktleSYgc2hhcmVkV29ya2VyS2V5LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7CisgICAgYXV0byog
c2hhcmVkV29ya2VyID0gbV9zaGFyZWRXb3JrZXJzLmdldChzaGFyZWRXb3JrZXJLZXkpOworICAg
IFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hhcmVk
V29ya2VyT2JqZWN0SXNHb2luZ0F3YXk6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtw
dWJsaWN9cywgc2hhcmVkV29ya2VyPSVwIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50
b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHNoYXJlZFdvcmtlcik7CisgICAgaWYgKCFzaGFyZWRX
b3JrZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2Vy
T2JqZWN0cygpLnJlbW92ZShzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBpZiAo
IXNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cygpLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgc2h1dERvd25TaGFyZWRXb3JrZXIoc2hhcmVkV29ya2VyS2V5KTsKK30K
Kwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNodXREb3duU2hhcmVkV29ya2VyKGNvbnN0
IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYga2V5KQoreworICAgIGF1dG8gc2hhcmVkV29ya2Vy
ID0gbV9zaGFyZWRXb3JrZXJzLnRha2Uoa2V5KTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3Jr
ZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNodXREb3duU2hhcmVkV29ya2VyOiBzaGFyZWRX
b3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCAiLCBzaGFyZWRXb3JrZXI9JXAiLCBzaGFyZWRXb3Jr
ZXIgPyBzaGFyZWRXb3JrZXItPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpIDogMCwgc2hhcmVkV29y
a2VyLmdldCgpKTsKKyAgICBpZiAoIXNoYXJlZFdvcmtlcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byogY29udGV4dENvbm5lY3Rpb24gPSBjb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJh
YmxlRG9tYWluKHNoYXJlZFdvcmtlci0+cmVnaXN0cmFibGVEb21haW4oKSk7CisgICAgaWYgKCFj
b250ZXh0Q29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgY29udGV4dENvbm5lY3Rp
b24tPnRlcm1pbmF0ZVNoYXJlZFdvcmtlcigqc2hhcmVkV29ya2VyKTsKKworICAgIGlmICghbmVl
ZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHNoYXJlZFdvcmtlci0+cmVn
aXN0cmFibGVEb21haW4oKSkpCisgICAgICAgIGNvbnRleHRDb25uZWN0aW9uLT5jb25uZWN0aW9u
SXNOb0xvbmdlck5lZWRlZCgpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRk
Q29ubmVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlv
bj4mJiBjb25uZWN0aW9uKQoreworICAgIGF1dG8gcHJvY2Vzc0lkZW50aWZpZXIgPSBjb25uZWN0
aW9uLT53ZWJQcm9jZXNzSWRlbnRpZmllcigpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtl
ciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29ubmVjdGlvbiglcCk6IHByb2Nlc3NJZGVu
dGlmaWVyPSUiIFBSSXU2NCwgY29ubmVjdGlvbi5nZXQoKSwgcHJvY2Vzc0lkZW50aWZpZXIudG9V
SW50NjQoKSk7CisgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKHByb2Nlc3NJZGVu
dGlmaWVyKSk7CisgICAgbV9jb25uZWN0aW9ucy5hZGQocHJvY2Vzc0lkZW50aWZpZXIsIFdURk1v
dmUoY29ubmVjdGlvbikpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3Zl
Q29ubmVjdGlvbihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcikK
K3sKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLnRha2UocHJvY2Vzc0lkZW50
aWZpZXIpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNl
cnZlcjo6cmVtb3ZlQ29ubmVjdGlvbiglcCk6IHByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwg
Y29ubmVjdGlvbi5nZXQoKSwgcHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgQVNT
RVJUKGNvbm5lY3Rpb24pOworCisgICAgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb3JlOjpTaGFyZWRX
b3JrZXJLZXksIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI+PiBzaGFyZWRX
b3JrZXJPYmplY3RzR29pbmdBd2F5OworICAgIGZvciAoYXV0byYgc2hhcmVkV29ya2VyIDogbV9z
aGFyZWRXb3JrZXJzLnZhbHVlcygpKSB7CisgICAgICAgIGZvciAoYXV0byYgc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciA6IHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cygpLmtl
eXMoKSkgeworICAgICAgICAgICAgaWYgKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJv
Y2Vzc0lkZW50aWZpZXIoKSA9PSBwcm9jZXNzSWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICBz
aGFyZWRXb3JrZXJPYmplY3RzR29pbmdBd2F5LmFwcGVuZChzdGQ6Om1ha2VfcGFpcihzaGFyZWRX
b3JrZXItPmtleSgpLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKSk7CisgICAgICAgIH0K
KyAgICB9CisgICAgZm9yIChhdXRvJiBbc2hhcmVkV29ya2VyS2V5LCBzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyXSA6IHNoYXJlZFdvcmtlck9iamVjdHNHb2luZ0F3YXkpCisgICAgICAgIHNo
YXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KHNoYXJlZFdvcmtlcktleSwgc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllcik7Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24qIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y29udGV4dENvbm5lY3Rpb25Gb3JSZWdp
c3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSBj
b25zdAoreworICAgIHJldHVybiBtX2NvbnRleHRDb25uZWN0aW9ucy5nZXQoZG9tYWluKTsKK30K
Kwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVj
dChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgYXV0byogc2hhcmVkV29ya2Vy
ID0gV2ViU2hhcmVkV29ya2VyOjpmcm9tSWRlbnRpZmllcihzaGFyZWRXb3JrZXJJZGVudGlmaWVy
KTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXI6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdDogc2hhcmVkV29ya2VySWRlbnRpZmll
cj0lIiBQUkl1NjQgIiwgc2hhcmVkV29ya2VyPSVwIiwgc2hhcmVkV29ya2VySWRlbnRpZmllci50
b1VJbnQ2NCgpLCBzaGFyZWRXb3JrZXIpOworICAgIGlmICghc2hhcmVkV29ya2VyKQorICAgICAg
ICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA6
IHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cygpLmtleXMoKSkgeworICAgICAgICBp
ZiAoYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSkpCisgICAgICAgICAgICBzZXJ2
ZXJDb25uZWN0aW9uLT5wb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qoc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNv
dXJjZVVSTCk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtl
clNlcnZlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDJkODAzODA5MzZkZWFmYTRiMGYzMTIz
NDkyMDk3ZDNkODczOTk2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5oCkBAIC0wLDAgKzEs
ODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvUHJv
Y2Vzc0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJJZGVudGlmaWVy
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9UcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0Lmg+CisjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVnaXN0cmFibGVEb21h
aW47CisKK3N0cnVjdCBDbGllbnRPcmlnaW47CitzdHJ1Y3QgU2hhcmVkV29ya2VyS2V5Oworc3Ry
dWN0IFdvcmtlckZldGNoUmVzdWx0Oworc3RydWN0IFdvcmtlck9wdGlvbnM7Cit9CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKK2NsYXNzIFdlYlNoYXJlZFdv
cmtlcjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb247CitjbGFzcyBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOworCitjbGFzcyBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViU2hhcmVkV29ya2VyU2VydmVy
PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQg
V2ViU2hhcmVkV29ya2VyU2VydmVyKE5ldHdvcmtTZXNzaW9uJik7CisgICAgfldlYlNoYXJlZFdv
cmtlclNlcnZlcigpOworCisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCk7CisgICAgV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogY29udGV4dENvbm5lY3Rpb25G
b3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpIGNv
bnN0OworCisgICAgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKFdlYkNvcmU6OlNoYXJlZFdvcmtl
cktleSYmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXZWJDb3JlOjpU
cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJik7CisgICAg
dm9pZCBzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShjb25zdCBXZWJDb3JlOjpTaGFyZWRX
b3JrZXJLZXkmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICB2
b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBj
b2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKworICAgIHZvaWQgYWRkQ29u
dGV4dENvbm5lY3Rpb24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYp
OworICAgIHZvaWQgcmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiYpOworICAgIHZvaWQgYWRkQ29ubmVjdGlvbihzdGQ6OnVuaXF1
ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbj4mJik7CisgICAgdm9pZCByZW1v
dmVDb25uZWN0aW9uKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKKworcHJpdmF0ZToKKyAg
ICB2b2lkIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJik7CisgICAgYm9vbCBuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVE
b21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKKyAgICB2b2lk
IGNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uJik7CisgICAgdm9pZCBkaWRGaW5pc2hGZXRjaGluZ1NoYXJlZFdvcmtlclNjcmlw
dChXZWJTaGFyZWRXb3JrZXImLCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmKTsKKyAgICB2
b2lkIHNodXREb3duU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYp
OworCisgICAgTmV0d29ya1Nlc3Npb24mIG1fc2Vzc2lvbjsKKyAgICBIYXNoTWFwPFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbj4+IG1fY29ubmVjdGlvbnM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiwgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbio+IG1f
Y29udGV4dENvbm5lY3Rpb25zOworICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4+IG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWluczsKKyAgICBIYXNoTWFwPFdlYkNv
cmU6OlNoYXJlZFdvcmtlcktleSwgc3RkOjp1bmlxdWVfcHRyPFdlYlNoYXJlZFdvcmtlcj4+IG1f
c2hhcmVkV29ya2VyczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJl
ZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NjQxYzE4OWMyZjI5OWRiNTk5OTQ1YTM3MzVhODFkNTRmNThkYTllCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbi5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRl
ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXIuaCIK
KyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL1dvcmtlckZldGNoUmVzdWx0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCisjZGVmaW5lIENPTk5FQ1RJT05fTUVTU0FHRV9DSEVDSyhhc3NlcnRpb24pIENPTk5FQ1RJ
T05fTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OKGFzc2VydGlvbiwgKHZvaWQpMCkKKyNkZWZpbmUg
Q09OTkVDVElPTl9NRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oYXNzZXJ0aW9uLCBjb21wbGV0aW9u
KSBkbyB7IFwKKyAgICBBU1NFUlQoYXNzZXJ0aW9uKTsgXAorICAgIGlmIChVTkxJS0VMWSghKGFz
c2VydGlvbikpKSB7IFwKKyAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6VGVybWluYXRl
V2ViUHJvY2VzcyhtX3dlYlByb2Nlc3NJZGVudGlmaWVyKSwgMCk7IFwKKyAgICAgICAgeyBjb21w
bGV0aW9uOyB9IFwKKyAgICAgICAgcmV0dXJuOyBcCisgICAgfSBcCit9IHdoaWxlICgwKQorCisj
ZGVmaW5lIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJl
ZFdvcmtlciwgIiVwIC0gW3dlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgbV93ZWJQcm9jZXNzSWRlbnRp
Zmllci50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBDT05ORUNUSU9OX1JFTEVB
U0VfTE9HX0VSUk9SKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICIl
cCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIudG9VSW50
NjQoKSwgIyNfX1ZBX0FSR1NfXykKKworV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1By
b2Nlc3MsIFdlYlNoYXJlZFdvcmtlclNlcnZlciYgc2VydmVyLCBJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVy
KQorICAgIDogbV9jb250ZW50Q29ubmVjdGlvbihjb25uZWN0aW9uKQorICAgICwgbV9uZXR3b3Jr
UHJvY2VzcyhuZXR3b3JrUHJvY2VzcykKKyAgICAsIG1fc2VydmVyKHNlcnZlcikKKyAgICAsIG1f
d2ViUHJvY2Vzc0lkZW50aWZpZXIod2ViUHJvY2Vzc0lkZW50aWZpZXIpCit7CisgICAgQ09OTkVD
VElPTl9SRUxFQVNFX0xPRygiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjoiKTsKK30K
KworV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb24oKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coIn5XZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uOiIpOworfQorCitJUEM6OkNvbm5lY3Rpb24qIFdlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9jb250ZW50Q29ubmVjdGlvbi5wdHIoKTsKK30KKworUEFMOjpTZXNz
aW9uSUQgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2Vzc2lvbklEKCkKK3sKKyAg
ICByZXR1cm4gc2VydmVyKCkuc2Vzc2lvbklEKCk7Cit9CisKK05ldHdvcmtTZXNzaW9uKiBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpzZXNzaW9uKCkKK3sKKyAgICByZXR1cm4gbV9u
ZXR3b3JrUHJvY2Vzcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpOworfQorCit2b2lkIFdl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OnJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29y
ZTo6U2hhcmVkV29ya2VyS2V5JiYgc2hhcmVkV29ya2VyS2V5LCBXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6
OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYg
d29ya2VyT3B0aW9ucykKK3sKKyAgICBDT05ORUNUSU9OX01FU1NBR0VfQ0hFQ0soc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fd2ViUHJvY2Vzc0lk
ZW50aWZpZXIpOworICAgIENPTk5FQ1RJT05fTUVTU0FHRV9DSEVDSyhzaGFyZWRXb3JrZXJLZXku
bmFtZSA9PSB3b3JrZXJPcHRpb25zLm5hbWUpOworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0co
InJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJs
aWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHRoaXMtPnNlc3Npb24oKSkKKyAgICAgICAg
c2Vzc2lvbi0+ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCkucmVxdWVzdFNoYXJlZFdvcmtlcihX
VEZNb3ZlKHNoYXJlZFdvcmtlcktleSksIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdU
Rk1vdmUocG9ydCksIFdURk1vdmUod29ya2VyT3B0aW9ucykpOworfQorCit2b2lkIFdlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KFdl
YkNvcmU6OlNoYXJlZFdvcmtlcktleSYmIHNoYXJlZFdvcmtlcktleSwgV2ViQ29yZTo6U2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQorewor
ICAgIENPTk5FQ1RJT05fTUVTU0FHRV9DSEVDSyhzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7CisgICAgQ09O
TkVDVElPTl9SRUxFQVNFX0xPRygic2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXk6IHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAoYXV0byogc2Vzc2lv
biA9IHRoaXMtPnNlc3Npb24oKSkKKyAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU2hhcmVkV29ya2Vy
U2VydmVyKCkuc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoc2hhcmVkV29ya2VyS2V5LCBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uOjpmZXRjaFNjcmlwdEluQ2xpZW50KGNvbnN0IFdlYlNoYXJlZFdvcmtl
ciYgc2hhcmVkV29ya2VyLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29y
ZTo6V29ya2VyRmV0Y2hSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQ09O
TkVDVElPTl9SRUxFQVNFX0xPRygiZmV0Y2hTY3JpcHRJbkNsaWVudDogc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50
b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6RmV0Y2hTY3JpcHRJbkNsaWVudCB7
IHNoYXJlZFdvcmtlci51cmwoKSwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgc2hhcmVk
V29ya2VyLndvcmtlck9wdGlvbnMoKSB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9
CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6bm90aWZ5V29ya2VyT2Jq
ZWN0T2ZMb2FkQ29tcGxldGlvbihXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImIGVycm9yKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coIm5vdGlmeVdvcmtlck9i
amVjdE9mTG9hZENvbXBsZXRpb246IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJs
aWN9cywgc3VjY2Vzcz0lZCIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmco
KS51dGY4KCkuZGF0YSgpLCBlcnJvci5pc051bGwoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6Tm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29t
cGxldGlvbiB7IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGVycm9yIH0pOworfQorCit2
b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OnBvc3RFeGNlcHRpb25Ub1dvcmtl
ck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAg
Q09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUigicG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0
OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6UG9zdEV4Y2VwdGlvblRvV29y
a2VyT2JqZWN0IHsgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgZXJyb3JNZXNzYWdlLCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCB9KTsKK30KKworI3VuZGVmIENPTk5F
Q1RJT05fUkVMRUFTRV9MT0cKKyN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SCisj
dW5kZWYgQ09OTkVDVElPTl9NRVNTQUdFX0NIRUNLCisjdW5kZWYgQ09OTkVDVElPTl9NRVNTQUdF
X0NIRUNLX0NPTVBMRVRJT04KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdv
cmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWJmNzc1
ZDBhOGY1Y2I3MWM3ZjM0NmExNTU0OGRjZDJkYjQxMzFiNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNl
cnZlckNvbm5lY3Rpb24uaApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2Vu
ZGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CitzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7CitzdHJ1Y3QgV29ya2VyT3B0aW9uczsK
K30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtQcm9jZXNzOworY2xhc3Mg
V2ViU2hhcmVkV29ya2VyOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyOworY2xhc3MgV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKKworY2xhc3MgV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbiA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1Ymxp
YyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Citw
dWJsaWM6CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbihOZXR3b3JrUHJvY2Vz
cyYsIFdlYlNoYXJlZFdvcmtlclNlcnZlciYsIElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyKTsKKyAgICB+V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigp
OworCisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIoKSB7IHJldHVybiBtX3NlcnZl
cjsgfQorICAgIGNvbnN0IFdlYlNoYXJlZFdvcmtlclNlcnZlciYgc2VydmVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXJ2ZXI7IH0KKworICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpOworICAg
IE5ldHdvcmtTZXNzaW9uKiBzZXNzaW9uKCk7CisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3dlYlByb2Nlc3NJZGVu
dGlmaWVyOyB9CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgdm9pZCBmZXRjaFNjcmlwdEluQ2xpZW50KGNv
bnN0IFdlYlNoYXJlZFdvcmtlciYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJik+
JiYpOworICAgIHZvaWQgbm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJik7CisgICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7
CisKK3ByaXZhdGU6CisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyLgorICAgIElQQzo6Q29ubmVj
dGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRf
dCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0K
KworICAgIC8vIElQQyBtZXNzYWdlcy4KKyAgICB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyS2V5JiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgV2ViQ29yZTo6V29ya2Vy
T3B0aW9ucyYmKTsKKyAgICB2b2lkIHNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KFdlYkNv
cmU6OlNoYXJlZFdvcmtlcktleSYmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyKTsKKworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29udGVudENvbm5lY3Rpb247Cisg
ICAgUmVmPE5ldHdvcmtQcm9jZXNzPiBtX25ldHdvcmtQcm9jZXNzOworICAgIFdlYlNoYXJlZFdv
cmtlclNlcnZlciYgbV9zZXJ2ZXI7CisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV93
ZWJQcm9jZXNzSWRlbnRpZmllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDcyYTg3YjdlY2Y0NDZjOTE5NGQzYWJkYmYyMjYzMGI0YjMy
NWRkYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hh
cmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAg
LTAsMCArMSwyNiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitt
ZXNzYWdlcyAtPiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQg
eworICAgIFJlcXVlc3RTaGFyZWRXb3JrZXIoc3RydWN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktl
eSBzaGFyZWRXb3JrZXJLZXksIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIg
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdl
UG9ydCBwb3J0LCBzdHJ1Y3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyB3b3JrZXJPcHRpb25zKQor
ICAgIFNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KHN0cnVjdCBXZWJDb3JlOjpTaGFyZWRX
b3JrZXJLZXkgc2hhcmVkV29ya2VyS2V5LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZmODZiYzdkNmEyZDQzMWYzODM0ZGY4NWUxZDI2MjM0NTZmNWE5ODcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtl
ci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMCwwICsx
LDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNs
dWRlICJXZWJTaGFyZWRXb3JrZXIuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNl
cnZlci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworI2RlZmluZSBDT05URVhUX0NPTk5FQ1RJ
T05fUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0g
W3dlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50
b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIFdlYlNoYXJlZFdvcmtlclNlcnZl
ciYgc2VydmVyKQorICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX3NlcnZl
cihzZXJ2ZXIpCisgICAgLCBtX3JlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKQor
eworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjoiKTsKKyAgICBzZXJ2ZXIuYWRkQ29udGV4dENvbm5lY3Rp
b24oKnRoaXMpOworfQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Ojp+V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpCit7CisgICAgQ09O
VEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJ+V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjoiKTsKKyAgICBpZiAobV9zZXJ2ZXIgJiYgbV9zZXJ2ZXItPmNvbnRleHRD
b25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4oKSkgPT0gdGhp
cykKKyAgICAgICAgbV9zZXJ2ZXItPnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKCp0aGlzKTsKK30K
KworV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6d2ViUHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVy
biBtX2Nvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKTsKK30KKworSVBDOjpDb25uZWN0
aW9uJiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjppcGNDb25uZWN0
aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKTsKK30K
KworSVBDOjpDb25uZWN0aW9uKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuICZpcGND
b25uZWN0aW9uKCk7Cit9CisKK3VpbnQ2NF90IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gMDsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjpjb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpCit7CisgICAgQ09OVEVYVF9DT05ORUNU
SU9OX1JFTEVBU0VfTE9HKCJjb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZDoiKTsKKyAgICBtX2Nv
bm5lY3Rpb24uc2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJO
ZWVkZWQoKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRl
bnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMKQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygicG9zdEV4Y2VwdGlv
blRvV29ya2VyT2JqZWN0OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVk
V29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBpZiAobV9zZXJ2ZXIpCisgICAgICAg
IG1fc2VydmVyLT5wb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qoc2hhcmVkV29ya2VySWRlbnRp
ZmllciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCk7
Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bGF1
bmNoU2hhcmVkV29ya2VyKFdlYlNoYXJlZFdvcmtlciYgc2hhcmVkV29ya2VyKQoreworICAgIENP
TlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygibGF1bmNoU2hhcmVkV29ya2VyOiBzaGFyZWRX
b3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VyLmlkZW50aWZpZXIoKS50b1VJ
bnQ2NCgpKTsKKyAgICBzaGFyZWRXb3JrZXIubWFya0FzUnVubmluZygpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6TGF1bmNoU2hh
cmVkV29ya2VyIHsgc2hhcmVkV29ya2VyLm9yaWdpbigpLCBzaGFyZWRXb3JrZXIuaWRlbnRpZmll
cigpLCBzaGFyZWRXb3JrZXIudXJsKCksIHNoYXJlZFdvcmtlci53b3JrZXJPcHRpb25zKCksIHNo
YXJlZFdvcmtlci5mZXRjaFJlc3VsdCgpIH0pOworICAgIGZvciAoYXV0byYgcG9ydCA6IHNoYXJl
ZFdvcmtlci5zaGFyZWRXb3JrZXJPYmplY3RzKCkudmFsdWVzKCkpCisgICAgICAgIHBvc3RDb25u
ZWN0RXZlbnQoc2hhcmVkV29ya2VyLCBwb3J0KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpwb3N0Q29ubmVjdEV2ZW50KGNvbnN0IFdlYlNoYXJl
ZFdvcmtlciYgc2hhcmVkV29ya2VyLCBjb25zdCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQ
b3J0JiBwb3J0KQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygicG9zdENv
bm5lY3RFdmVudDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtl
ci5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpQb3N0Q29ubmVjdEV2ZW50IHsgc2hhcmVk
V29ya2VyLmlkZW50aWZpZXIoKSwgcG9ydCwgc2hhcmVkV29ya2VyLm9yaWdpbigpLmNsaWVudE9y
aWdpbi50b1N0cmluZygpIH0pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZVNoYXJlZFdvcmtlcihjb25zdCBXZWJTaGFyZWRXb3Jr
ZXImIHNoYXJlZFdvcmtlcikKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0co
InRlcm1pbmF0ZVNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQs
IHNoYXJlZFdvcmtlci5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpUZXJtaW5hdGVTaGFy
ZWRXb3JrZXIgeyBzaGFyZWRXb3JrZXIuaWRlbnRpZmllcigpIH0pOworfQorCisjdW5kZWYgQ09O
VEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2YWVhMzE5YWEzZTgwZTY3MGRlZGJjMGM4YWJkMGYyZjZi
NWNhMjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1No
YXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAg
LTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIldl
YlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9t
YWluLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJJZGVudGlmaWVyLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9UcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0Lmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOworY2xhc3MgU2NyaXB0QnVmZmVyOworc3Ry
dWN0IENsaWVudE9yaWdpbjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKK3N0cnVjdCBXb3Jr
ZXJPcHRpb25zOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXI7CitjbGFzcyBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI7CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFdl
YlNoYXJlZFdvcmtlclNlcnZlciYpOworICAgIH5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uKCk7CisKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9j
ZXNzSWRlbnRpZmllcigpIGNvbnN0OworICAgIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiByZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21h
aW47IH0KKyAgICBJUEM6OkNvbm5lY3Rpb24mIGlwY0Nvbm5lY3Rpb24oKSBjb25zdDsKKworICAg
IHZvaWQgbGF1bmNoU2hhcmVkV29ya2VyKFdlYlNoYXJlZFdvcmtlciYpOworICAgIHZvaWQgcG9z
dENvbm5lY3RFdmVudChjb25zdCBXZWJTaGFyZWRXb3JrZXImLCBjb25zdCBXZWJDb3JlOjpUcmFu
c2ZlcnJlZE1lc3NhZ2VQb3J0Jik7CisgICAgdm9pZCB0ZXJtaW5hdGVTaGFyZWRXb3JrZXIoY29u
c3QgV2ViU2hhcmVkV29ya2VyJik7CisKKyAgICB2b2lkIGNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVl
ZGVkKCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYpIGZpbmFsOworCitwcml2YXRlOgorICAgIC8vIElQQyBtZXNzYWdlcy4KKyAg
ICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKworICAgIC8vIElQQzo6
TWVzc2FnZVNlbmRlci4KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0
aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9u
SUQoKSBjb25zdCBmaW5hbDsKKworICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBt
X2Nvbm5lY3Rpb247CisgICAgV2Vha1B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI+IG1fc2VydmVy
OworICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG1fcmVnaXN0cmFibGVEb21haW47Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJl
ZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmFlNDdjMTIyY2JhYzg3M2MyMmI2ZGEzYmMxZWE0ZGEwNjhlMzU5MmEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdv
cmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CkBAIC0wLDAgKzEsMjUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworbWVzc2FnZXMgLT4gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBO
b3RSZWZDb3VudGVkIHsKKyAgICBQb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6
U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBTdHJpbmcgZXJy
b3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgU3RyaW5nIHNvdXJj
ZVVSTCkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKaW5kZXggMWM0MmQwNDBjMWE5MGIwYWFk
ZDE0ZThiMzM1ZWY4ZGRiYmNhZjlkNi4uZGUzMmY4MTcxNzE1NjQ3ZDUzNjEwNjI2YTQ3OTE5MDQw
MDdkZWI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTk3LDYgKzk3LDcgQEAgZXh0
ZXJuICJDIiB7CiAgICAgTShTZXJ2aWNlV29ya2VyKSBcCiAgICAgTShTZXNzaW9uU3RhdGUpIFwK
ICAgICBNKFNoYXJlZERpc3BsYXlMaXN0cykgXAorICAgIE0oU2hhcmVkV29ya2VyKSBcCiAgICAg
TShTdG9yYWdlKSBcCiAgICAgTShTdG9yYWdlQVBJKSBcCiAgICAgTShUZXh0SW5wdXQpIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDdlYmZhNTE2YjUwMzM2
ZDM2ODdmN2VjZGQxN2U4ZTdlYmQxY2Q5ZDcuLjRjOGNhZDA0NjQ3MTZmNzMzMmFhYjVjNzk4YjZj
MWFhNTViYjc4Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpA
QCAtMzAzLDEwICszMDMsMTMgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVj
bGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZp
ZXInLAogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXInLAogICAgICAgICAnV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCcsCisgICAgICAgICdXZWJD
b3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYkNvcmU6OlNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U2xlZXBEaXNhYmxlcklk
ZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U291cmNlQnVmZmVyQXBwZW5kTW9kZScsCiAg
ICAgICAgICdXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlN0b3JhZ2VUeXBlJywKKyAgICAgICAgJ1dlYkNvcmU6
OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQnLAogICAgICAgICAnV2ViQ29yZTo6VXNlck1lZGlhUmVx
dWVzdElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6V2ViTG9ja0lkZW50aWZpZXInLAog
ICAgICAgICAnV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllcicsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA1
N2VmM2IxNGVhZjJjMTA5MjA5OGVlOTQzMmY1MDhjNjExZTU4ZTM1Li5lMzEzOTEwNTljYjNjYjIw
MGE0ODM3MTk5YTQ5ZDMyMTljODQ0NzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTE0MSw2ICsxNDEsMTEg
QEAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV09yaWdpblN0b3JlLmNwcCBAbm8t
dW5pZnkKIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmNwcCBAbm8tdW5pZnkKIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcCBAbm8tdW5pZnkKIAorTmV0d29ya1Byb2Nlc3MvU2hhcmVk
V29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHAKK05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAKK05ldHdvcmtQcm9jZXNzL1NoYXJlZFdv
cmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorCiBOZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5jcHAKIE5ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuY3BwCiBOZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkuY3BwCkBAIC03ODMsOCAr
Nzg4LDkgQEAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFibGUuY3BwCiBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKIFdlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwCi1XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwCitXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCitXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwCiAKIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyLmNwcAogCkBAIC04ODcsMyArODkzLDcgQEAgUmVtb3RlV2ViTG9j
a1JlZ2lzdHJ5TWVzc2FnZVJlY2VpdmVyLmNwcAogU2VydmljZVdvcmtlckRvd25sb2FkVGFza01l
c3NhZ2VSZWNlaXZlci5jcHAKIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeU1lc3NhZ2VSZWNl
aXZlci5jcHAKIFdlYkxvY2tSZWdpc3RyeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorV2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorV2Vi
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKK1dlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKaW5kZXggYTY3ODM2N2E3NzVhNDliYTgxYjI0ODhjZjMxZWFiOWRjY2NjYzkyMS4uMzMwMjBi
ZDVjM2NkOTQxNzc1NjE1NzlhYzIwZmMzOGY5YzY5Mjc4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC01
MjksNyArNTI5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0ZXJtaW5hdGVXZWJQcm9j
ZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2MKIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6dGVybWluYXRlVW5yZXNwb25zaXZlU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcikKIHsKICAgICBpZiAoUmVm
UHRyIHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHByb2Nl
c3NJZGVudGlmaWVyKSkgewotICAgICAgICBwcm9jZXNzLT5kaXNhYmxlU2VydmljZVdvcmtlcnMo
KTsKKyAgICAgICAgcHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3Jr
ZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICAgICAgICAgcHJvY2Vzcy0+cmVxdWVzdFRlcm1pbmF0
aW9uKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6RXhjZWVkZWRDUFVMaW1pdCk7CiAgICAgfQog
fQpAQCAtMTQxNSwxNiArMTQxNSwyMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZERl
c3Ryb3lXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eShXZWJVc2VyQ29udGVudAogfQogI2Vu
ZGlmCiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFdlYlByb2Nlc3NQ
b29sOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MoV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlc3Npb25JRCwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworfQorCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0
ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3Jr
ZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgV2ViUHJvY2Vzc1Bvb2w6
OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
KnRoaXMsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50
aWZpZXIsIHNlc3Npb25JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIFdlYlBy
b2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXJ2aWNlV29ya2VyUGFnZUlk
ZW50aWZpZXIsIHNlc3Npb25JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5v
TG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAg
ICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlm
aWVyKGlkZW50aWZpZXIpKQotICAgICAgICBwcm9jZXNzLT5kaXNhYmxlU2VydmljZVdvcmtlcnMo
KTsKKyAgICAgICAgcHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3Jr
ZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpy
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2
aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpCkBAIC0xNDYwLDYgKzE0NjUsMTIgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjplbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3Npbmco
V2ViQ29yZTo6UHJvY2Vzc0kKIH0KICNlbmRpZgogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OnNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byogcHJvY2VzcyA9IFdl
YlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAgICAg
IHByb2Nlc3MtPmRpc2FibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2hh
cmVkV29ya2VyKTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFn
ZVNwYWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiBvcmlnaW4sIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudFNpemUs
IHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gcXVvdGEpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVB
U0VfTE9HKFN0b3JhZ2UsICIlcCAtIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdl
U3BhY2UiLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggYTRlMzY0NWViYWFlMzM2ZDE4MGI1NDE0YmFm
YWEzNWQ4M2Y5MThjNC4uNjg0MWEzNGZlMDlkMTJiYTkzZDRlZjhjODBlNDUzM2E1NWZkNjVjNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgKQEAgLTMzNCw2ICszMzQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRT
ZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKICAgICB2b2lkIGVuZFNlcnZpY2VX
b3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2
aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogI2VuZGlmCisgICAgdm9pZCBzaGFyZWRXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyKTsKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25J
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgdGVybWluYXRlV2Vi
UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbgppbmRleCAxMmQwNmNlYmQ2MmFmMTc1MGU3ODg1NTljMTNhMWIzOTgzZmRkMmJh
Li4xNTc1N2VkOWEyNTJiMDlkY2QxMWJiNWU2YjljOGExMGQwNTM0YzlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC02MCw2ICs2MCw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQ
cm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIFN0YXJ0U2VydmljZVdvcmtlckJhY2tn
cm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzSWRlbnRpZmllcikKICAgICBFbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3Np
bmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlm
aWVyKQogI2VuZGlmCisgICAgRXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9t
YWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCisgICAgU2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciBpZGVudGlmaWVyKQogCiAgICAgU2V0V2ViUHJvY2Vzc0hhc1VwbG9hZHMoV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lELCBib29sIGhhc1VwbG9hZCkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNjFhODkyMDBiYjA5ZDAwNmVhYTQ2
OWQyZTRkOWRmNjAwM2E3NzEzNy4uZjgyNDhmNWMzNTRkNzg3YjAxM2NmYzdmMGI2NjUyOTk0YTJl
NDg3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zNjk0
LDExICszNjk0LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVzZXJBZ2VudChTdHJpbmcmJiB1
c2VyQWdlbnQpCiAgICAgICAgIHJldHVybjsKICAgICBtX3VzZXJBZ2VudCA9IFdURk1vdmUodXNl
ckFnZW50KTsKIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICAvLyBXZSB1cGRhdGUg
dGhlIHNlcnZpY2Ugd29ya2VyIHRoZXJlIGF0IHRoZSBtb21lbnQgdG8gYmUgc3VyZSB3ZSB1c2Ug
dmFsdWVzIHVzZWQgYnkgYWN0dWFsIHdlYiBwYWdlcy4KICAgICAvLyBGSVhNRTogUmVmYWN0b3Ig
dGhpcyB3aGVuIHdlIGhhdmUgYSBiZXR0ZXIgVXNlci1BZ2VudCBzdG9yeS4KLSAgICBwcm9jZXNz
KCkucHJvY2Vzc1Bvb2woKS51cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KG1fdXNlckFnZW50
KTsKLSNlbmRpZgorICAgIHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnVwZGF0ZVdvcmtlclVzZXJB
Z2VudChtX3VzZXJBZ2VudCk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApp
bmRleCBhZmMyM2VlNTNmMTI4NDIxOTNkMmVhZWYyMGYyNTk2MmVlZDczZmEyLi40YjE5YjBkMWQz
YzE1NGNiMmU2ZjMwMjM2YjEzNGUwNTk4Y2EyNGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC01MjksNyArNTI5LDcgQEAgdm9pZCBXZWJQcm9jZXNz
UG9vbDo6Z2V0V2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlBy
b2Nlc3NQcm8KIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6OnNfdXNlU2VwYXJhdGVTZXJ2aWNlV29ya2Vy
UHJvY2VzcyA9IGZhbHNlOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiBwcm94eSwgUmVnaXN0cmFibGVEb21haW4m
JiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0
SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFp
biwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiB3ZWJz
aXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNz
aW9uSUQoc2Vzc2lvbklEKTsKICAgICBpZiAoIXdlYnNpdGVEYXRhU3RvcmUpCkBAIC01NDYsNyAr
NTQ2LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXQKICAgICBpZiAoc2VydmljZVdvcmtlclBh
Z2VJZGVudGlmaWVyKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgYSBzZXJ2aWNlIHdvcmtlciBmb3Ig
YSBzZXJ2aWNlIHdvcmtlciBwYWdlIHNvIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIHVzZSB1c2Ug
dGhlIHBhZ2UncyBXZWJQcm9jZXNzIGZvciB0aGUgc2VydmljZSB3b3JrZXIuCiAgICAgICAgIGlm
ICgoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0Zv
cklkZW50aWZpZXIoc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLT5wcm9jZXNzSWRlbnRpZmll
cigpKSkpIHsKLSAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVNl
cnZpY2VXb3JrZXJzKHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
Rm9yU2VydmljZVdvcmtlcnMoKSk7CisgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5LT5lbmFibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdv
cmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3Jr
ZXJzKCkpOwogICAgICAgICAgICAgaWYgKHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Q
cm9jZXNzQ2FjaGUoKSkgewogICAgICAgICAgICAgICAgIHByb2Nlc3NQb29sLT53ZWJQcm9jZXNz
Q2FjaGUoKS5yZW1vdmVQcm9jZXNzKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBXZWJQcm9j
ZXNzQ2FjaGU6OlNob3VsZFNodXREb3duUHJvY2Vzczo6Tm8pOwogICAgICAgICAgICAgICAgIEFT
U0VSVCghc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKTsKQEAg
LTU2NCw3ICs1NjQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldAogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gcHJv
Y2Vzcy5wdHIoKTsKLSAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJs
ZVNlcnZpY2VXb3JrZXJzKHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyRm9yU2VydmljZVdvcmtlcnMoKSk7CisgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5LT5lbmFibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2Vydmlj
ZVdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JX
b3JrZXJzKCkpOwogCiAgICAgICAgICAgICBpZiAoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+
aXNJblByb2Nlc3NDYWNoZSgpKSB7CiAgICAgICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPndlYlBy
b2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nlc3MoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIFdl
YlByb2Nlc3NDYWNoZTo6U2hvdWxkU2h1dERvd25Qcm9jZXNzOjpObyk7CkBAIC01NzcsNyArNTc3
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXQKICAgICB9CiAKICAgICBpZiAoIXNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkpIHsKLSAgICAgICAgYXV0byBuZXdQcm9jZXNzUHJveHkgPSBXZWJQ
cm9jZXNzUHJveHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKCpwcm9jZXNzUG9vbCwgUmVnaXN0
cmFibGVEb21haW4gIHsgcmVnaXN0cmFibGVEb21haW4gfSwgKndlYnNpdGVEYXRhU3RvcmUpOwor
ICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9y
V29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsICpwcm9j
ZXNzUG9vbCwgUmVnaXN0cmFibGVEb21haW4gIHsgcmVnaXN0cmFibGVEb21haW4gfSwgKndlYnNp
dGVEYXRhU3RvcmUpOwogICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gbmV3UHJv
Y2Vzc1Byb3h5LnB0cigpOwogCiAgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NU
QVRJQyhTZXJ2aWNlV29ya2VyLCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2VzcyBjcmVhdGluZyBhIG5ldyBzZXJ2aWNlIHdvcmtlciBwcm9jZXNz
IChwcm9jZXM9JXAsIFBJRD0lZCkiLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBzZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKQEAgLTU4NiwyMCArNTg2
LDcwIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0CiAgICAgICAgIHByb2Nlc3NQb29sLT5tX3By
b2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdQcm9jZXNzUHJveHkpKTsKICAgICB9CiAKLSAgICBB
U1NFUlQoIXNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb250YWlucygqc2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eSkpOwotICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkpOworICAgIHdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eSk7CiAKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3Rh
Ymxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyUHJl
ZmVyZW5jZXMgPyBwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMudmFsdWUo
KSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUo
KSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fc2VydmljZVdv
cmtlclVzZXJBZ2VudC5pc051bGwoKSkKLSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94
eS0+c2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2Vy
VXNlckFnZW50KTsKKyAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hTZXJ2
aWNlV29ya2VyQ29udGV4dChwcm9jZXNzUG9vbC0+bV93b3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nl
c3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZh
dWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3JlKCksIHJlZ2lzdHJhYmxlRG9tYWluLCBz
ZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICBpZiAoIXByb2Nlc3NQb29sLT5tX3dvcmtlclVzZXJBZ2VudC5pc051bGwoKSkKKyAgICAg
ICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+c2V0V29ya2VyVXNlckFnZW50KHByb2Nlc3NQ
b29sLT5tX3dvcmtlclVzZXJBZ2VudCk7CiB9CisjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzUG9v
bDo6cmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9j
ZXNzKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlRnJvbVdvcmtlclByb2Nlc3NlcyhXZWJQ
cm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7Ci0gICAgQVNTRVJUKHNlcnZpY2VXb3JrZXJQcm9jZXNz
ZXMoKS5jb250YWlucyhwcm9jZXNzKSk7Ci0gICAgc2VydmljZVdvcmtlclByb2Nlc3NlcygpLnJl
bW92ZShwcm9jZXNzKTsKKyAgICBBU1NFUlQod29ya2VyUHJvY2Vzc2VzKCkuY29udGFpbnMocHJv
Y2VzcykpOworICAgIHdvcmtlclByb2Nlc3NlcygpLnJlbW92ZShwcm9jZXNzKTsKK30KKwordm9p
ZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVE
b21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8qIHdlYnNpdGVEYXRhU3RvcmUgPSBX
ZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChzZXNzaW9uSUQp
OworICAgIGlmICghd2Vic2l0ZURhdGFTdG9yZSkKKyAgICAgICAgd2Vic2l0ZURhdGFTdG9yZSA9
IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS5wdHIoKTsKKyAgICBpZiAoIXBy
b2Nlc3NQb29scygpLnNpemUoKSkKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZjxX
ZWJQcm9jZXNzUG9vbD4+IHNoYXJlZFdvcmtlclByb2Nlc3NQb29sKFdlYlByb2Nlc3NQb29sOjpj
cmVhdGUoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpLmdldCgpKSk7CisK
KyAgICAvLyBBcmJpdHJhcmlseSBjaG9vc2UgdGhlIGZpcnN0IHByb2Nlc3MgcG9vbCB0byBob3N0
IHRoZSBzaGFyZWQgd29ya2VyIHByb2Nlc3MuCisgICAgYXV0byogcHJvY2Vzc1Bvb2wgPSBwcm9j
ZXNzUG9vbHMoKVswXTsKKyAgICBBU1NFUlQocHJvY2Vzc1Bvb2wpOworCisgICAgV2ViUHJvY2Vz
c1Byb3h5KiBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkgeyBudWxscHRyIH07CisKKyAgICBmb3Ig
KGF1dG8mIHByb2Nlc3MgOiBwcm9jZXNzUG9vbC0+bV9wcm9jZXNzZXMpIHsKKyAgICAgICAgaWYg
KHByb2Nlc3MucHRyKCkgPT0gcHJvY2Vzc1Bvb2wtPm1fcHJld2FybWVkUHJvY2Vzcy5nZXQoKSB8
fCBwcm9jZXNzLT5pc0R1bW15UHJvY2Vzc1Byb3h5KCkpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgaWYgKCZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gd2Vic2l0ZURhdGFT
dG9yZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoIXByb2Nlc3MtPmlzTWF0
Y2hpbmdSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkgPSBwcm9jZXNzLnB0
cigpOworICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVdvcmtlcnMoV2Vi
UHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIsIHByb2Nlc3NQb29sLT51c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpKTsKKworICAgICAgICBpZiAo
c2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpIHsKKyAgICAgICAg
ICAgIHByb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5yZW1vdmVQcm9jZXNzKCpzaGFyZWRX
b3JrZXJQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NDYWNoZTo6U2hvdWxkU2h1dERvd25Qcm9jZXNz
OjpObyk7CisgICAgICAgICAgICBBU1NFUlQoIXNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+aXNJ
blByb2Nlc3NDYWNoZSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIFdFQlBST0NFU1NQT09MX1JF
TEVBU0VfTE9HX1NUQVRJQyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgcmV1c2luZyBhbiBleGlzdGluZyB3ZWIgcHJv
Y2VzcyAocHJvY2Vzcz0lcCwgUElEPSVkKSIsIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSwgc2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCisgICAgaWYgKCFzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkpIHsKKyAgICAg
ICAgYXV0byBuZXdQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvcldvcmtl
cnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIsICpwcm9jZXNzUG9v
bCwgUmVnaXN0cmFibGVEb21haW4gIHsgcmVnaXN0cmFibGVEb21haW4gfSwgKndlYnNpdGVEYXRh
U3RvcmUpOworICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkgPSBuZXdQcm9jZXNzUHJv
eHkucHRyKCk7CisKKyAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElDKFNo
YXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyBjcmVhdGluZyBhIG5ldyBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzIChwcm9jZXNz
PSVwLCBQSUQ9JWQpIiwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LCBzaGFyZWRXb3JrZXJQcm9j
ZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOworCisgICAgICAgIHByb2Nlc3NQb29sLT5p
bml0aWFsaXplTmV3V2ViUHJvY2VzcyhuZXdQcm9jZXNzUHJveHksIHdlYnNpdGVEYXRhU3RvcmUp
OworICAgICAgICBwcm9jZXNzUG9vbC0+bV9wcm9jZXNzZXMuYXBwZW5kKFdURk1vdmUobmV3UHJv
Y2Vzc1Byb3h5KSk7CisgICAgfQorCisgICAgd29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpzaGFyZWRX
b3JrZXJQcm9jZXNzUHJveHkpOworCisgICAgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3Rh
Ymxpc2hTaGFyZWRXb3JrZXJDb250ZXh0KHByb2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2Vz
ID8gcHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29s
LT5tX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVE
b21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBpZiAoIXByb2Nlc3NQb29s
LT5tX3dvcmtlclVzZXJBZ2VudC5pc051bGwoKSkKKyAgICAgICAgc2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5LT5zZXRXb3JrZXJVc2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFnZW50
KTsKIH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp3aW5kb3dTZXJ2ZXJDb25uZWN0
aW9uU3RhdGVDaGFuZ2VkKCkKIHsKQEAgLTEwMDMsMTAgKzEwNTMsOCBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjpkaXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiAKICAg
ICBtX2JhY2tGb3J3YXJkQ2FjaGUtPnJlbW92ZUVudHJpZXNGb3JQcm9jZXNzKHByb2Nlc3MpOwog
Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmIChwcm9jZXNzLmlzUnVubmluZ1Nl
cnZpY2VXb3JrZXJzKCkpCi0gICAgICAgIHJlbW92ZUZyb21TZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
KHByb2Nlc3MpOwotI2VuZGlmCisgICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nV29ya2VycygpKQor
ICAgICAgICByZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKHByb2Nlc3MpOwogCiAgICAgc3RhdGlj
X2Nhc3Q8V2ViQ29udGV4dFN1cHBsZW1lbnQqPihzdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5PigpKS0+cHJvY2Vzc0RpZENsb3NlKCZwcm9jZXNzKTsKIApAQCAtMTA2NywxMiAr
MTExNSwxMiBAQCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zv
clJlZ2lzdHJhYmxlRG9tYWluKFdlYnNpdGVEYXRhU3RvcgogfQogCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQotVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBXZWJQcm9jZXNzUG9v
bDo6dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvclNlcnZpY2VXb3JrZXJzKCkKK1Vz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgV2ViUHJvY2Vzc1Bvb2w6OnVzZXJDb250ZW50
Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkKIHsKLSAgICBpZiAoIW1fdXNlckNvbnRl
bnRDb250cm9sbGVyRm9yU2VydmljZVdvcmtlcikKLSAgICAgICAgbV91c2VyQ29udGVudENvbnRy
b2xsZXJGb3JTZXJ2aWNlV29ya2VyID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmNy
ZWF0ZSgpOworICAgIGlmICghbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JXb3JrZXJzKQorICAg
ICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtlcnMgPSBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6Y3JlYXRlKCk7CiAKLSAgICByZXR1cm4gbV91c2VyQ29udGVudENvbnRy
b2xsZXJGb3JTZXJ2aWNlV29ya2VyLT5pZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIG1fdXNlckNv
bnRlbnRDb250cm9sbGVyRm9yV29ya2Vycy0+aWRlbnRpZmllcigpOwogfQogI2VuZGlmCiAKQEAg
LTExMTksMTUgKzExNjcsMTMgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNy
ZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSToKIAogICAgIGF1dG8g
cGFnZSA9IHByb2Nlc3MtPmNyZWF0ZVdlYlBhZ2UocGFnZUNsaWVudCwgV1RGTW92ZShwYWdlQ29u
ZmlndXJhdGlvbikpOwogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmICghbV9z
ZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMpIHsKLSAgICAgICAgbV9zZXJ2aWNlV29ya2VyUHJlZmVy
ZW5jZXMgPSBwYWdlLT5wcmVmZXJlbmNlc1N0b3JlKCk7Ci0gICAgICAgIGZvciAoYXV0byYgc2Vy
dmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkpCi0gICAgICAgICAg
ICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy51cGRhdGVTZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXNTdG9y
ZSgqbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMpOworICAgIGlmICghbV93b3JrZXJQcmVmZXJl
bmNlcykgeworICAgICAgICBtX3dvcmtlclByZWZlcmVuY2VzID0gcGFnZS0+cHJlZmVyZW5jZXNT
dG9yZSgpOworICAgICAgICBmb3IgKGF1dG8mIHdvcmtlclByb2Nlc3MgOiB3b3JrZXJQcm9jZXNz
ZXMoKSkKKyAgICAgICAgICAgIHdvcmtlclByb2Nlc3MudXBkYXRlV29ya2VyUHJlZmVyZW5jZXNT
dG9yZSgqbV93b3JrZXJQcmVmZXJlbmNlcyk7CiAgICAgfQogICAgIGlmICh1c2VyQ29udGVudENv
bnRyb2xsZXIpCi0gICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yU2VydmljZVdvcmtl
ciA9IHVzZXJDb250ZW50Q29udHJvbGxlcjsKLSNlbmRpZgorICAgICAgICBtX3VzZXJDb250ZW50
Q29udHJvbGxlckZvcldvcmtlcnMgPSB1c2VyQ29udGVudENvbnRyb2xsZXI7CiAKICAgICBib29s
IGVuYWJsZVByb2Nlc3NTd2FwT25Dcm9zc1NpdGVOYXZpZ2F0aW9uID0gcGFnZS0+cHJlZmVyZW5j
ZXMoKS5wcm9jZXNzU3dhcE9uQ3Jvc3NTaXRlTmF2aWdhdGlvbkVuYWJsZWQoKTsKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQpAQCAtMTE1MCwxNiArMTE5NiwxNCBAQCBSZWY8V2ViUGFnZVByb3h5
PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBS
ZWY8QVBJOgogICAgIHJldHVybiBwYWdlOwogfQogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQotdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlU2VydmljZVdvcmtlclVzZXJBZ2VudChjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudCkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVdvcmtlclVz
ZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKIHsKLSAgICBpZiAobV9zZXJ2aWNlV29y
a2VyVXNlckFnZW50ID09IHVzZXJBZ2VudCkKKyAgICBpZiAobV93b3JrZXJVc2VyQWdlbnQgPT0g
dXNlckFnZW50KQogICAgICAgICByZXR1cm47Ci0gICAgbV9zZXJ2aWNlV29ya2VyVXNlckFnZW50
ID0gdXNlckFnZW50OwotICAgIGZvciAoYXV0byYgc2VydmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzKCkpCi0gICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzLnNldFNl
cnZpY2VXb3JrZXJVc2VyQWdlbnQobV9zZXJ2aWNlV29ya2VyVXNlckFnZW50KTsKKyAgICBtX3dv
cmtlclVzZXJBZ2VudCA9IHVzZXJBZ2VudDsKKyAgICBmb3IgKGF1dG8mIHdvcmtlclByb2Nlc3Mg
OiB3b3JrZXJQcm9jZXNzZXMoKSkKKyAgICAgICAgd29ya2VyUHJvY2Vzcy5zZXRXb3JrZXJVc2Vy
QWdlbnQobV93b3JrZXJVc2VyQWdlbnQpOwogfQotI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHBhZ2VJRCwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQogewpAQCAtMTUzOCw4ICsxNTgy
LDEzIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzKCkKIHsK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhp
cyB9OwotICAgIHdoaWxlIChzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkuY29tcHV0ZVNpemUoKSkK
LSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmJlZ2luKCktPmRpc2FibGVTZXJ2aWNl
V29ya2VycygpOworICAgIFZlY3RvcjxSZWY8V2ViUHJvY2Vzc1Byb3h5Pj4gc2VydmljZVdvcmtl
clByb2Nlc3NlczsKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFsmXShhdXRvJiBwcm9j
ZXNzKSB7CisgICAgICAgIGlmIChwcm9jZXNzLmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCisg
ICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFwcGVuZChwcm9jZXNzKTsKKyAgICB9
KTsKKyAgICBmb3IgKGF1dG8mIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogc2VydmljZVdvcmtlclBy
b2Nlc3NlcykKKyAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3MtPmRpc2FibGVXb3JrZXJzKFdl
YlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiAjZW5kaWYKIH0KIApA
QCAtMTc2NywxMyArMTgxNiwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXBvcnRXZWJDb250
ZW50Q1BVVGltZShTZWNvbmRzIGNwdVRpbWUsIHVpbnQ2NF90IGFjdGl2aXR5UwogI2VuZGlmCiB9
CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1XZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJv
eHk+JiBXZWJQcm9jZXNzUG9vbDo6c2VydmljZVdvcmtlclByb2Nlc3NlcygpCitXZWFrSGFzaFNl
dDxXZWJQcm9jZXNzUHJveHk+JiBXZWJQcm9jZXNzUG9vbDo6d29ya2VyUHJvY2Vzc2VzKCkKIHsK
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5Pj4g
cHJvY2Vzc2VzOwogICAgIHJldHVybiBwcm9jZXNzZXM7CiB9Ci0jZW5kaWYKIAogdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKQogewpAQCAtMTc4NSwyMCArMTgz
MiwyNSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpCiAg
ICAgaWYgKGF1dG8qIGdwdVByb2Nlc3MgPSBHUFVQcm9jZXNzUHJveHk6OnNpbmdsZXRvbklmQ3Jl
YXRlZCgpKQogICAgICAgICBncHVQcm9jZXNzLT51cGRhdGVQcm9jZXNzQXNzZXJ0aW9uKCk7CiAj
ZW5kaWYKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKICAgICAvLyBDaGVjayBvbiBuZXh0
IHJ1biBsb29wIHNpbmNlIHRoZSB3ZWIgcHJvY2VzcyBwcm94eSB0b2tlbnMgYXJlIHByb2JhYmx5
IGJlaW5nIHVwZGF0ZWQuCiAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW10gewotICAgICAgICBmb3Ig
KGF1dG8mIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogc2VydmljZVdvcmtlclByb2Nlc3NlcygpKQot
ICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3MudXBkYXRlU2VydmljZVdvcmtlclByb2Nl
c3NBc3NlcnRpb24oKTsKLSAgICB9KTsKKyAgICAgICAgd29ya2VyUHJvY2Vzc2VzKCkuZm9yRWFj
aChbXShhdXRvJiB3b3JrZXJQcm9jZXNzKSB7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQor
ICAgICAgICAgICAgaWYgKHdvcmtlclByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkK
KyAgICAgICAgICAgICAgICB3b3JrZXJQcm9jZXNzLnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRp
b24oV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgor
ICAgICAgICAgICAgaWYgKHdvcmtlclByb2Nlc3MuaXNSdW5uaW5nU2hhcmVkV29ya2VycygpKQor
ICAgICAgICAgICAgICAgIHdvcmtlclByb2Nlc3MudXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlv
bihXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlcik7CisgICAgICAgIH0p
OworICAgIH0pOwogfQogCiBib29sIFdlYlByb2Nlc3NQb29sOjppc1NlcnZpY2VXb3JrZXJQYWdl
SUQoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGluZWZmaWNpZW50LgotICAgIHJl
dHVybiBXVEY6OmFueU9mKHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSwgW3BhZ2VJRF0oYXV0byYg
cHJvY2VzcykgeworICAgIHJldHVybiBXVEY6OmFueU9mKHdvcmtlclByb2Nlc3NlcygpLCBbcGFn
ZUlEXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiBwcm9jZXNzLmhhc1NlcnZpY2VX
b3JrZXJQYWdlUHJveHkocGFnZUlEKTsKICAgICB9KTsKICNlbmRpZgpAQCAtMjEyNCwxNiArMjE3
NiwyNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRVc2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzKGJvb2wgdXNlU2VwYXJhdGVTZXJ2aWNlVwogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQorc2l6ZV90IFdlYlByb2Nlc3NQb29sOjpzZXJ2aWNlV29ya2VyUHJveGllc0NvdW50
KCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBjb3VudCA9IDA7CisgICAgd29ya2VyUHJvY2Vzc2Vz
KCkuZm9yRWFjaChbJl0oYXV0byYgcHJvY2VzcykgeworICAgICAgICBpZiAocHJvY2Vzcy5pc1J1
bm5pbmdTZXJ2aWNlV29ya2VycygpKQorICAgICAgICAgICAgKytjb3VudDsKKyAgICB9KTsKKyAg
ICByZXR1cm4gY291bnQ7Cit9CisKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6Omhhc1NlcnZpY2VXb3Jr
ZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RG
OjphbnlPZihzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKKyAg
ICByZXR1cm4gV1RGOjphbnlPZih3b3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2Vzcykg
ewogICAgICAgICByZXR1cm4gcHJvY2Vzcy5oYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2
aXR5Rm9yVGVzdGluZygpOwogICAgIH0pOwogfQogCiBib29sIFdlYlByb2Nlc3NQb29sOjpoYXNT
ZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIFdURjo6YW55T2Yoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9j
ZXNzKSB7CisgICAgcmV0dXJuIFdURjo6YW55T2Yod29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8m
IHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuIHByb2Nlc3MuaGFzU2VydmljZVdvcmtlckJhY2tn
cm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGViNjZkODk0OTBkZmUwMjhiMTAxMjVlOTNmZmJk
MTk4ZDAyN2Y3Y2UuLmU3MGI2ZjQyOWY3Y2I3MDY5NTQ5NTBmOTAwZDM3ODEzYmRhZGRiYjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMzc0LDE3ICszNzQs
MjAgQEAgcHVibGljOgogICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NEaWRUZXJtaW5hdGUoTmV0d29y
a1Byb2Nlc3NQcm94eSYsIE5ldHdvcmtQcm9jZXNzUHJveHk6OlRlcm1pbmF0aW9uUmVhc29uKTsK
IAogICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyUGFnZUlEKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIp
IGNvbnN0OworICAgIHZvaWQgcmVtb3ZlRnJvbVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJv
eHkmKTsKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBzdGF0aWMgdm9pZCBlc3Rh
Ymxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdv
cmtQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwotICAgIHZvaWQgcmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViUHJv
Y2Vzc1Byb3h5Jik7Ci0gICAgc2l6ZV90IHNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25z
dCB7IHJldHVybiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkuY29tcHV0ZVNpemUoKTsgfQotICAg
IHZvaWQgdXBkYXRlU2VydmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCk7Ci0gICAgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciB1c2VyQ29udGVudENvbnRy
b2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKTsKKyAgICBzdGF0aWMgdm9pZCBlc3Rh
Ymxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFM
OjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgc2l6ZV90IHNl
cnZpY2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25zdDsKKyAgICBVc2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyIHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCk7
CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygp
IGNvbnN0OwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlckJhY2tncm91bmRBY3Rpdml0eUZvclRl
c3RpbmcoKSBjb25zdDsKICNlbmRpZgogICAgIHZvaWQgc2VydmljZVdvcmtlclByb2Nlc3NDcmFz
aGVkKFdlYlByb2Nlc3NQcm94eSYpOwogCisgICAgdm9pZCB1cGRhdGVXb3JrZXJVc2VyQWdlbnQo
Y29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpOworICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFNoYXJl
ZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uRW5h
YmxlZCgpIGNvbnN0OwogI2VuZGlmCkBAIC02MTgsMTMgKzYyMSwxMSBAQCBwcml2YXRlOgogCiAg
ICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgV2Vha1B0cjxXZWJQcm9jZXNzUHJveHk+PiBtX2R1
bW15UHJvY2Vzc1Byb3hpZXM7IC8vIExpZ2h0d2VpZ2h0IFdlYlByb2Nlc3NQcm94eSBvYmplY3Rz
IHdpdGhvdXQgYmFja2luZyBwcm9jZXNzLgogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQot
ICAgIHN0YXRpYyBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+JiBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc2VzKCk7Ci0gICAgYm9vbCBtX3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5l
Y3Rpb24geyBmYWxzZSB9OwotICAgIFN0cmluZyBtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQ7Ci0g
ICAgc3RkOjpvcHRpb25hbDxXZWJQcmVmZXJlbmNlc1N0b3JlPiBtX3NlcnZpY2VXb3JrZXJQcmVm
ZXJlbmNlczsKLSAgICBSZWZQdHI8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+IG1fdXNl
ckNvbnRlbnRDb250cm9sbGVyRm9yU2VydmljZVdvcmtlcjsKLSNlbmRpZgorICAgIHN0YXRpYyBX
ZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+JiB3b3JrZXJQcm9jZXNzZXMoKTsKKworICAgIHN0
ZDo6b3B0aW9uYWw8V2ViUHJlZmVyZW5jZXNTdG9yZT4gbV93b3JrZXJQcmVmZXJlbmNlczsKKyAg
ICBSZWZQdHI8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+IG1fdXNlckNvbnRlbnRDb250
cm9sbGVyRm9yV29ya2VyczsKKyAgICBTdHJpbmcgbV93b3JrZXJVc2VyQWdlbnQ7CiAKICNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCiAgICAgUmVmUHRyPEdQVVByb2Nlc3NQcm94eT4gbV9ncHVQcm9j
ZXNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXgg
MDU3ZDQ5OTI0MThhMDA0M2Q4NGM1OWQ3YjZlNTJmOWUwMjY1OGE3MS4uYjc0NmE3ZDdkMjE3MGMz
OTIwNWYzMWU1MWFlZDhiYmM1ZTZkZWI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Bvb2wuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEu
aCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCkBAIC0xODIsMTEgKzE4Mywx
MSBAQCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZShXZWJQcm9j
ZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYnNpdAogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JTZXJ2
aWNlV29ya2VycyhXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWlu
JiYgcmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUp
CitSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvcldvcmtlcnMo
V29ya2VyVHlwZSB3b3JrZXJUeXBlLCBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFJlZ2lz
dHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNp
dGVEYXRhU3RvcmUpCiB7CiAgICAgYXV0byBwcm94eSA9IGFkb3B0UmVmKCpuZXcgV2ViUHJvY2Vz
c1Byb3h5KHByb2Nlc3NQb29sLCAmd2Vic2l0ZURhdGFTdG9yZSwgSXNQcmV3YXJtZWQ6Ok5vLCBD
cm9zc09yaWdpbk1vZGU6OlNoYXJlZCwgQ2FwdGl2ZVBvcnRhbE1vZGU6OkRpc2FibGVkKSk7CiAg
ICAgcHJveHktPm1fcmVnaXN0cmFibGVEb21haW4gPSBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWlu
KTsKLSAgICBwcm94eS0+ZW5hYmxlU2VydmljZVdvcmtlcnMocHJvY2Vzc1Bvb2wudXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllckZvclNlcnZpY2VXb3JrZXJzKCkpOworICAgIHByb3h5LT5l
bmFibGVXb3JrZXJzKHdvcmtlclR5cGUsIHByb2Nlc3NQb29sLnVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOwogICAgIHByb3h5LT5jb25uZWN0KCk7CiAgICAgcmV0
dXJuIHByb3h5OwogfQpAQCAtOTk1LDEwICs5OTYsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmRpZEJlY29tZVVucmVzcG9uc2l2ZSgpCiAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGlzUmVz
cG9uc2l2ZUNhbGxiYWNrcykKICAgICAgICAgY2FsbGJhY2soaXNXZWJQcm9jZXNzUmVzcG9uc2l2
ZSk7CiAKLSAgICAvLyBJZiB0aGUgd2ViIHByb2Nlc3MgYmVjb21lcyB1bnJlc3BvbnNpdmUgYW5k
IG9ubHkgcnVucyBzZXJ2aWNlIHdvcmtlcnMsIGtpbGwgaXQgb3Vyc2VsdmVzIHNpbmNlIHRoZXJl
IGFyZSBubyBuYXRpdmUgY2xpZW50cyB0byBkbyBpdC4KLSAgICBpZiAoaXNSdW5uaW5nU2Vydmlj
ZVdvcmtlcnMoKSAmJiBtX3BhZ2VNYXAuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFdFQlBST0NFU1NQ
Uk9YWV9SRUxFQVNFX0xPR19FUlJPUihQZXJmb3JtYW5jZUxvZ2dpbmcsICJkaWRCZWNvbWVVbnJl
c3BvbnNpdmU6IFRlcm1pbmF0aW5nIHNlcnZpY2Ugd29ya2VyLW9ubHkgd2ViIHByb2Nlc3MgYmVj
YXVzZSBpdCBpcyB1bnJlc3BvbnNpdmUiKTsKLSAgICAgICAgZGlzYWJsZVNlcnZpY2VXb3JrZXJz
KCk7CisgICAgLy8gSWYgdGhlIHdlYiBwcm9jZXNzIGJlY29tZXMgdW5yZXNwb25zaXZlIGFuZCBv
bmx5IHJ1bnMgc2VydmljZS9zaGFyZWQgd29ya2Vycywga2lsbCBpdCBvdXJzZWx2ZXMgc2luY2Ug
dGhlcmUgYXJlIG5vIG5hdGl2ZSBjbGllbnRzIHRvIGRvIGl0LgorICAgIGlmIChpc1J1bm5pbmdX
b3JrZXJzKCkgJiYgbV9wYWdlTWFwLmlzRW1wdHkoKSkgeworICAgICAgICBXRUJQUk9DRVNTUFJP
WFlfUkVMRUFTRV9MT0dfRVJST1IoUGVyZm9ybWFuY2VMb2dnaW5nLCAiZGlkQmVjb21lVW5yZXNw
b25zaXZlOiBUZXJtaW5hdGluZyB3b3JrZXItb25seSB3ZWIgcHJvY2VzcyBiZWNhdXNlIGl0IGlz
IHVucmVzcG9uc2l2ZSIpOworICAgICAgICBkaXNhYmxlV29ya2Vycyh7IFdvcmtlclR5cGU6OlNl
cnZpY2VXb3JrZXIsIFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciB9KTsKICAgICAgICAgdGVybWlu
YXRlKCk7CiAgICAgfQogfQpAQCAtMTY5NCw4ICsxNjk1LDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKGNvbnN0IFVSTCYgdXJsKQog
ICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7
IHVybCB9OwogICAgIGlmIChtX3JlZ2lzdHJhYmxlRG9tYWluICYmICptX3JlZ2lzdHJhYmxlRG9t
YWluICE9IHJlZ2lzdHJhYmxlRG9tYWluKSB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQot
ICAgICAgICBkaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICAgICAgZGlzYWJsZVdvcmtlcnMo
V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiAjZW5kaWYKKwogICAgICAgICAvLyBOdWxsIG91
dCByZWdpc3RyYWJsZSBkb21haW4gc2luY2UgdGhpcyBwcm9jZXNzIGhhcyBub3cgYmVlbiB1c2Vk
IGZvciBzZXZlcmFsIGRvbWFpbnMuCiAgICAgICAgIG1fcmVnaXN0cmFibGVEb21haW4gPSBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IH07CiAgICAgICAgIHJldHVybjsKQEAgLTE4NzIsNTQg
KzE4NzQsODUgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJD
b250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHMKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKICAgICB9LCAwKTsKIH0KKyNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6
c2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKK3ZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpzZXRXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQpCiB7Ci0gICAgQVNTRVJUKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U2V0VXNlckFnZW50IHsg
dXNlckFnZW50IH0sIDApOworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBpZiAobV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2VyQWdlbnQgfSwgMCk7Cisj
ZW5kaWYKKyAgICBpZiAobV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbikKKyAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTZXRVc2Vy
QWdlbnQgeyB1c2VyQWdlbnQgfSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRh
dGVTZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3Jl
JiBzdG9yZSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0
b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogewotICAgIEFTU0VSVChtX3Nl
cnZpY2VXb3JrZXJJbmZvcm1hdGlvbik7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZVByZWZlcmVuY2VzU3RvcmUgeyBzdG9yZSB9LCAwKTsK
KyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYgKG1fc2VydmljZVdvcmtlckluZm9y
bWF0aW9uKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDApOworI2VuZGlmCisgICAg
aWYgKG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24pCisgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNT
dG9yZSB7IHN0b3JlIH0sIDApOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlU2Vy
dmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0
ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZSB3b3JrZXJUeXBlKQogewotICAgIFdF
QlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uOiIpOwotICAgIEFTU0VSVChtX3NlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbik7Ci0gICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKKyAgICBh
dXRvJiB3b3JrZXJJbmZvcm1hdGlvbiA9IHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVk
V29ya2VyID8gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA6IG1fc2VydmljZVdvcmtlckluZm9y
bWF0aW9uOworICAgIEFTU0VSVCh3b3JrZXJJbmZvcm1hdGlvbik7CisgICAgaWYgKCF3b3JrZXJJ
bmZvcm1hdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBzaG91bGRUYWtlRm9yZWdy
b3VuZEFjdGl2aXR5ID0gV1RGOjphbnlPZihtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+Y2xp
ZW50UHJvY2Vzc2VzLCBbJl0oYXV0byYgcHJvY2VzcykgeworICAgIFdFQlBST0NFU1NQUk9YWV9S
RUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRp
b246IHdvcmtlclR5cGU9JXtwdWJsaWN9cyIsIHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2hh
cmVkV29ya2VyID8gInNoYXJlZCIgOiAic2VydmljZSIpOworCisgICAgLy8gRklYTUU6IENsaWVu
dHMgZG8gbm90IHByb3Blcmx5IGdldCBwb3B1bGF0ZWQgaW4gbV9zaGFyZWRXb3JrZXJJbmZvcm1h
dGlvbiBzbyB3ZSBjdXJyZW50bHkgdGFrZSBhbiBhc3NlcnRpb24gbm8gbWF0dGVyIHdoYXQuCisg
ICAgaWYgKHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSB7CisgICAgICAg
IGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEZvcmVncm91bmRBY3Rpdml0eSh3b3JrZXJJ
bmZvcm1hdGlvbi0+YWN0aXZpdHkpKQorICAgICAgICAgICAgd29ya2VySW5mb3JtYXRpb24tPmFj
dGl2aXR5ID0gbV90aHJvdHRsZXIuZm9yZWdyb3VuZEFjdGl2aXR5KCJXb3JrZXIgZm9yIGZvcmVn
cm91bmQgdmlldyhzKSJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBib29sIHNo
b3VsZFRha2VGb3JlZ3JvdW5kQWN0aXZpdHkgPSBXVEY6OmFueU9mKHdvcmtlckluZm9ybWF0aW9u
LT5jbGllbnRQcm9jZXNzZXMsIFsmXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiAm
cHJvY2VzcyAhPSB0aGlzICYmICEhcHJvY2Vzcy5tX2ZvcmVncm91bmRUb2tlbjsKICAgICB9KTsK
ICAgICBpZiAoc2hvdWxkVGFrZUZvcmVncm91bmRBY3Rpdml0eSkgewotICAgICAgICBpZiAoIVBy
b2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRGb3JlZ3JvdW5kQWN0aXZpdHkobV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKLSAgICAgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9y
bWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmZvcmVncm91bmRBY3Rpdml0eSgiU2Vydmlj
ZSBXb3JrZXIgZm9yIGZvcmVncm91bmQgdmlldyhzKSJfcyk7CisgICAgICAgIGlmICghUHJvY2Vz
c1Rocm90dGxlcjo6aXNWYWxpZEZvcmVncm91bmRBY3Rpdml0eSh3b3JrZXJJbmZvcm1hdGlvbi0+
YWN0aXZpdHkpKQorICAgICAgICAgICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90
aHJvdHRsZXIuZm9yZWdyb3VuZEFjdGl2aXR5KCJXb3JrZXIgZm9yIGZvcmVncm91bmQgdmlldyhz
KSJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBib29sIHNob3VsZFRha2VCYWNr
Z3JvdW5kQWN0aXZpdHkgPSBXVEY6OmFueU9mKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5j
bGllbnRQcm9jZXNzZXMsIFsmXShhdXRvJiBwcm9jZXNzKSB7CisgICAgYm9vbCBzaG91bGRUYWtl
QmFja2dyb3VuZEFjdGl2aXR5ID0gV1RGOjphbnlPZih3b3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50
UHJvY2Vzc2VzLCBbJl0oYXV0byYgcHJvY2VzcykgewogICAgICAgICByZXR1cm4gJnByb2Nlc3Mg
IT0gdGhpcyAmJiAhIXByb2Nlc3MubV9iYWNrZ3JvdW5kVG9rZW47CiAgICAgfSk7CiAgICAgaWYg
KHNob3VsZFRha2VCYWNrZ3JvdW5kQWN0aXZpdHkpIHsKLSAgICAgICAgaWYgKCFQcm9jZXNzVGhy
b3R0bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5KG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uLT5hY3Rpdml0eSkpCi0gICAgICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+
YWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2Vy
IGZvciBiYWNrZ3JvdW5kIHZpZXcocykiX3MpOworICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRs
ZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkod29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5
KSkKKyAgICAgICAgICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVy
LmJhY2tncm91bmRBY3Rpdml0eSgiV29ya2VyIGZvciBiYWNrZ3JvdW5kIHZpZXcocykiX3MpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1faGFzU2VydmljZVdvcmtlckJhY2tn
cm91bmRQcm9jZXNzaW5nKSB7CisgICAgaWYgKHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2Vy
dmljZVdvcmtlciAmJiBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZykgewog
ICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJT
ZXJ2aWNlIFdvcmtlciBmb3IgYmFja2dyb3VuZCBwcm9jZXNzaW5nIik7Ci0gICAgICAgIGlmICgh
UHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEJhY2tncm91bmRBY3Rpdml0eShtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQotICAgICAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5KCJTZXJ2
aWNlIFdvcmtlciBmb3IgYmFja2dyb3VuZCBwcm9jZXNzaW5nIl9zKTsKKyAgICAgICAgaWYgKCFQ
cm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0
aW9uLT5hY3Rpdml0eSkpCisgICAgICAgICAgICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkg
PSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2VyIGZvciBiYWNr
Z3JvdW5kIHByb2Nlc3NpbmciX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbnVsbHB0cjsKKyAgICB3b3JrZXJJ
bmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBudWxscHRyOworfQorCit2b2lkIFdlYlByb2Nlc3NQcm94
eTo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3Jl
JiBzdG9yZSwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgV0VCUFJP
Q0VTU1BST1hZX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtl
ckNvbnRleHQ6IFN0YXJ0ZWQiKTsKKyAgICBtYXJrUHJvY2Vzc0FzUmVjZW50bHlVc2VkKCk7Cisg
ICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hTaGFy
ZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgp
LmRlZmF1bHRQYWdlR3JvdXAoKS5wYWdlR3JvdXBJRCgpLCBtX3NoYXJlZFdvcmtlckluZm9ybWF0
aW9uLT5yZW1vdGVXb3JrZXJQYWdlUHJveHlJRCwgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbi0+
cmVtb3RlV29ya2VyUGFnZUlELCBzdG9yZSwgcmVnaXN0cmFibGVEb21haW4sIG1fc2hhcmVkV29y
a2VySW5mb3JtYXRpb24tPmluaXRpYWxpemF0aW9uRGF0YSB9LCBbdGhpcywgd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAg
V0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJl
ZFdvcmtlckNvbnRleHQ6IEZpbmlzaGVkIik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CisgICAgfSwgMCk7CiB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nl
c3NQcm94eSYgcHJveHkpCiB7CiAgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikK
QEAgLTE5MjcsNyArMTk2MCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCiAKICAgICBXRUJQ
Uk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgInJlZ2lzdGVyU2VydmljZVdv
cmtlckNsaWVudFByb2Nlc3M6IGNsaWVudFByb2Nlc3M9JXAsIGNsaWVudFBJRD0lZCIsICZwcm94
eSwgcHJveHkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3Jt
YXRpb24tPmNsaWVudFByb2Nlc3Nlcy5hZGQocHJveHkpOwotICAgIHVwZGF0ZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihX
b3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVu
cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb3h5
KQpAQCAtMTkzNyw3ICsxOTcwLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVucmVnaXN0ZXJT
ZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb3gKIAogICAgIFdF
QlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAidW5yZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnRQcm9jZXNzOiBjbGllbnRQcm9jZXNzPSVwLCBjbGllbnRQSUQ9JWQiLCAm
cHJveHksIHByb3h5LnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgIG1fc2VydmljZVdvcmtlcklu
Zm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMucmVtb3ZlKHByb3h5KTsKLSAgICB1cGRhdGVTZXJ2
aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOworICAgIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3Nl
cnRpb24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1By
b3h5OjpoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0
CkBAIC0xOTU3LDcgKzE5OTAsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c3RhcnRTZXJ2aWNl
V29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoKQogCiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVB
U0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAic3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFBy
b2Nlc3NpbmciKTsKICAgICBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyA9
IHRydWU7Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKKyAgICB1
cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwog
fQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9j
ZXNzaW5nKCkKQEAgLTE5NjcsMjMgKzIwMDAsMzkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVu
ZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZygpCiAKICAgICBXRUJQUk9DRVNTUFJP
WFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJlbmRTZXJ2aWNlV29ya2VyQmFja2dy
b3VuZFByb2Nlc3NpbmciKTsKICAgICBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vz
c2luZyA9IGZhbHNlOwotICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7
CisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlOjpTZXJ2aWNlV29y
a2VyKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKLXZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjpkaXNhYmxlU2VydmljZVdvcmtlcnMoKQordm9pZCBXZWJQcm9jZXNzUHJveHk6
OmRpc2FibGVXb3JrZXJzKE9wdGlvblNldDxXb3JrZXJUeXBlPiB3b3JrZXJUeXBlKQogewotICAg
IGlmICghbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAgQVNTRVJUKCF3b3JrZXJUeXBl
LmlzRW1wdHkoKSk7CisKKyAgICBib29sIGRpZENoYW5nZSA9IGZhbHNlOworICAgIGlmICh3b3Jr
ZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpICYmIG1fc2VydmljZVdv
cmtlckluZm9ybWF0aW9uKSB7CisgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uID0g
eyB9OworICAgICAgICBkaWRDaGFuZ2UgPSB0cnVlOworICAgIH0KKyAgICBpZiAod29ya2VyVHlw
ZS5jb250YWlucyhXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpICYmIG1fc2hhcmVkV29ya2VySW5m
b3JtYXRpb24pIHsKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA9IHsgfTsKKyAg
ICAgICAgZGlkQ2hhbmdlID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKCFkaWRDaGFuZ2UpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29y
a2VyLCAiZGlzYWJsZVNlcnZpY2VXb3JrZXJzOiIpOwotICAgIG1fc2VydmljZVdvcmtlckluZm9y
bWF0aW9uID0geyB9OworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzLCAi
ZGlzYWJsZVdvcmtlcnM6IERpc2FibGluZyB3b3JrZXJzIChTaGFyZWRXb3JrZXJzPSVkLCBTZXJ2
aWNlV29ya2Vycz0lZCkiLCB3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNoYXJlZFdv
cmtlciksIHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikpOwor
CiAgICAgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKIAorICAgIGlmICgh
aXNSdW5uaW5nV29ya2VycygpKQorICAgICAgICBwcm9jZXNzUG9vbCgpLnJlbW92ZUZyb21Xb3Jr
ZXJQcm9jZXNzZXMoKnRoaXMpOworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHBy
b2Nlc3NQb29sKCkucmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKnRoaXMpOwotICAg
IHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9zZSB7IH0s
IDApOworICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNlcnZpY2VXb3Jr
ZXIpKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6Q2xvc2UgeyB9LCAwKTsKICNlbmRpZgorICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdv
cmtlclR5cGU6OlNoYXJlZFdvcmtlcikpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q2xvc2UgeyB9LCAwKTsKIAogICAgIG1h
eWJlU2h1dERvd24oKTsKIH0KQEAgLTIwMDQsMTEgKzIwNTMsMTMgQEAgc3RhdGljIFZlY3Rvcjxz
dGQ6OnBhaXI8V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLCBVUkw+PiBjb250ZW50UnVs
ZUxpc3RzRnIKIH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlU2Vydmlj
ZVdvcmtlcnMoY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYgdXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllcikKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVXb3Jr
ZXJzKFdvcmtlclR5cGUgd29ya2VyVHlwZSwgY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllciYgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKIHsKLSAgICBBU1NFUlQo
IW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsKLSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFT
RV9MT0coU2VydmljZVdvcmtlciwgImVuYWJsZVNlcnZpY2VXb3JrZXJzOiIpOwotICAgIG1fc2Vy
dmljZVdvcmtlckluZm9ybWF0aW9uID0gUmVtb3RlV29ya2VySW5mb3JtYXRpb24geworICAgIFdF
QlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiZW5hYmxlV29ya2Vyczog
d29ya2VyVHlwZT0ldSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih3b3JrZXJUeXBlKSk7CisgICAg
YXV0byYgd29ya2VySW5mb3JtYXRpb24gPSB3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNoYXJl
ZFdvcmtlciA/IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gOiBtX3NlcnZpY2VXb3JrZXJJbmZv
cm1hdGlvbjsKKyAgICBBU1NFUlQoIXdvcmtlckluZm9ybWF0aW9uKTsKKworICAgIHdvcmtlcklu
Zm9ybWF0aW9uID0gUmVtb3RlV29ya2VySW5mb3JtYXRpb24gewogICAgICAgICBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLAogICAgICAgICBQYWdlSWRlbnRpZmllcjo6Z2VuZXJh
dGUoKSwKICAgICAgICAgUmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhIHsKQEAgLTIwMjEs
OSArMjA3Miw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVTZXJ2aWNlV29ya2Vycyhj
b25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyCiAgICAgICAgIHsgfQogICAgIH07
CiAgICAgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKLSNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCi0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24o
KTsKLSNlbmRpZgorCisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbih3b3JrZXJUeXBl
KTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZENyZWF0ZVNsZWVwRGlzYWJsZXIoU2xl
ZXBEaXNhYmxlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiByZWFzb24sIGJv
b2wgZGlzcGxheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5k
ZXggZjhiNzk1YjFkMzQzNTM1ZTgwOTJlMDFkYmFiMzc5YWYzMzQ2MWRiZS4uNzBlODkwNTFjY2Ji
YzdlOTA0NmJjMWM5OThiOTBhMGI2OGVmNjU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTEzNiw5ICsxMzYsMTMgQEAgcHVibGljOgogCiAgICAgZW51
bSBjbGFzcyBTaG91bGRMYXVuY2hQcm9jZXNzIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBlbnVt
IGNsYXNzIENhcHRpdmVQb3J0YWxNb2RlIDogYm9vbCB7IERpc2FibGVkLCBFbmFibGVkIH07Cisg
ICAgZW51bSBjbGFzcyBXb3JrZXJUeXBlIDogdWludDMyX3QgeworICAgICAgICBTZXJ2aWNlV29y
a2VyID0gMSA8PCAwLAorICAgICAgICBTaGFyZWRXb3JrZXIgPSAxIDw8IDEKKyAgICB9OwogCiAg
ICAgc3RhdGljIFJlZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCYsIFdl
YnNpdGVEYXRhU3RvcmUqLCBDYXB0aXZlUG9ydGFsTW9kZSwgSXNQcmV3YXJtZWQsIFdlYkNvcmU6
OkNyb3NzT3JpZ2luTW9kZSA9IFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZTo6U2hhcmVkLCBTaG91
bGRMYXVuY2hQcm9jZXNzID0gU2hvdWxkTGF1bmNoUHJvY2Vzczo6WWVzKTsKLSAgICBzdGF0aWMg
UmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlRm9yU2VydmljZVdvcmtlcnMoV2ViUHJvY2Vzc1Bv
b2wmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBXZWJzaXRlRGF0YVN0b3JlJik7Cisg
ICAgc3RhdGljIFJlZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZUZvcldvcmtlcnMoV29ya2VyVHlw
ZSwgV2ViUHJvY2Vzc1Bvb2wmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBXZWJzaXRl
RGF0YVN0b3JlJik7CiAKICAgICB+V2ViUHJvY2Vzc1Byb3h5KCk7CiAKQEAgLTE2MSw4ICsxNjUs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc0luUHJvY2Vzc0NhY2hlKGJvb2wsIFdpbGxTaHV0
RG93biA9IFdpbGxTaHV0RG93bjo6Tm8pOwogICAgIGJvb2wgaXNJblByb2Nlc3NDYWNoZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNJblByb2Nlc3NDYWNoZTsgfQogCi0gICAgdm9pZCBlbmFibGVTZXJ2
aWNlV29ya2Vycyhjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJik7Ci0gICAg
dm9pZCBkaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICB2b2lkIGVuYWJsZVdvcmtlcnMoV29y
a2VyVHlwZSwgY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYpOworICAgIHZv
aWQgZGlzYWJsZVdvcmtlcnMoT3B0aW9uU2V0PFdvcmtlclR5cGU+KTsKIAogICAgIFdlYnNpdGVE
YXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IEFTU0VSVChtX3dlYnNpdGVEYXRh
U3RvcmUpOyByZXR1cm4gKm1fd2Vic2l0ZURhdGFTdG9yZTsgfQogICAgIHZvaWQgc2V0V2Vic2l0
ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlJik7CkBAIC0xOTQsNiArMTk4LDkgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpIGNvbnN0IHsgcmV0dXJuICEh
bV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247IH0KICAgICBib29sIGlzU3RhbmRhbG9uZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gaXNSdW5uaW5nU2VydmljZVdvcmtlcnMo
KSAmJiAhcGFnZUNvdW50KCk7IH0KKyAgICBib29sIGlzUnVubmluZ1NoYXJlZFdvcmtlcnMoKSBj
b25zdCB7IHJldHVybiAhIW1fc2hhcmVkV29ya2VySW5mb3JtYXRpb247IH0KKyAgICBib29sIGlz
U3RhbmRhbG9uZVNoYXJlZFdvcmtlclByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBpc1J1bm5pbmdT
aGFyZWRXb3JrZXJzKCkgJiYgIXBhZ2VDb3VudCgpOyB9CisgICAgYm9vbCBpc1J1bm5pbmdXb3Jr
ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiB8fCBtX3NlcnZp
Y2VXb3JrZXJJbmZvcm1hdGlvbjsgfQogCiAgICAgYm9vbCBpc0R1bW15UHJvY2Vzc1Byb3h5KCkg
Y29uc3Q7CiAKQEAgLTM1OSwxMiArMzY2LDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRl
QXVkaWJsZU1lZGlhQXNzZXJ0aW9ucygpOwogCisgICAgdm9pZCBzZXRXb3JrZXJVc2VyQWdlbnQo
Y29uc3QgU3RyaW5nJik7CisgICAgdm9pZCB1cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNv
bnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtl
ckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHVw
ZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZSk7CiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogICAgIHZvaWQgZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQoY29uc3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4g
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwotICAgIHZvaWQgc2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKLSAg
ICB2b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUmKTsKICAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJQYWdlUHJveHkoV2ViUGFn
ZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCkgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb24gJiYgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnJlbW90ZVdvcmtlclBhZ2VQ
cm94eUlEID09IHBhZ2VQcm94eUlEOyB9Ci0gICAgdm9pZCB1cGRhdGVTZXJ2aWNlV29ya2VyUHJv
Y2Vzc0Fzc2VydGlvbigpOwogICAgIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJv
Y2VzcyhXZWJQcm9jZXNzUHJveHkmKTsKICAgICB2b2lkIHVucmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
Q2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmKTsKICAgICBib29sIGhhc1NlcnZpY2VXb3Jr
ZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3Q7CkBAIC02NTYsNiArNjY0LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgV2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5PiBjbGllbnRQ
cm9jZXNzZXM7CiAgICAgfTsKICAgICBzdGQ6Om9wdGlvbmFsPFJlbW90ZVdvcmtlckluZm9ybWF0
aW9uPiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbW90
ZVdvcmtlckluZm9ybWF0aW9uPiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uOwogICAgIGJvb2wg
bV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcgeyBmYWxzZSB9OwogCiAgICAg
SGFzaE1hcDxXZWJDb3JlOjpTbGVlcERpc2FibGVySWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OlNsZWVwRGlzYWJsZXI+PiBtX3NsZWVwRGlzYWJsZXJzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGM3YzMxYmM1NTdi
NTVkNTE3MDVmYzM5ZDdlNjc5Yzk0YzZhMGFmMy4uMTVlODEwYTRjOWYxMmViOTJiYjJmZDE0ZDM5
NTBjMzE1MTQ0NDI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC04ODAsOCArODgwLDEwIEBACiAJCTQ2MTRGMTMyMjVERUQ4NzUwMDcw
MDZFNyAvKiBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QUM1MzI0MjVERUQ4MUUwMDNCNTdFQyAv
KiBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaCAqLzsgfTsKIAkJNDYxQ0NDQTUyMzE0
ODVBNzAwQjY1OUI5IC8qIFVJUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MzIzNjg1MjMxNDgzM0YwMEE0OEZBNyAv
KiBVSVJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggKi87IH07CiAJCTQ2MUNDQ0E2MjMxNDg1QUEwMEI2
NTlCOSAvKiBXZWJSZW1vdGVPYmplY3RSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzMjM2ODMyMzE0ODFFRjAwQTQ4RkE3IC8qIFdlYlJl
bW90ZU9iamVjdFJlZ2lzdHJ5LmggKi87IH07CisJCTQ2MUUxQkYyMjc5QTAxMTYwMDZBRjUzQiAv
KiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MUUxQkVGMjc5QTAxMEYwMDZBRjUz
QiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCAqLzsgfTsKIAkJ
NDYzRkQ0ODAxRUI5NDU5NjAwQTI5ODJDIC8qIFdLUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjNGRDQ3RjFF
Qjk0NTg0MDBBMjk4MkMgLyogV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjNGRDQ4MjFFQjk0RUMw
MDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjNGRDQ4MTFFQjk0RUFEMDBBMjk4MkMgLyog
UHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggKi87IH07CisJCTQ2NTZGN0JEMjdBQ0FBOEQwMENC
M0Q3QyAvKiBXZWJTaGFyZWRXb3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2NTZGN0JDMjdBQ0FBODEwMENCM0Q3QyAvKiBXZWJTaGFyZWRXb3Jr
ZXIuaCAqLzsgfTsKIAkJNDY1OUYyNUYyNzVGRjZCMjAwQkJCMzY5IC8qIENhcHRpdmVQb3J0YWxN
b2RlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2NTlGMjVFMjc1RkY2QjIwMEJCQjM2OSAvKiBDYXB0aXZlUG9ydGFsTW9kZU9ic2VydmVy
LmggKi87IH07CiAJCTQ2NUY0RTA2MjMwQjJFOTUwMDNDRURCNyAvKiBTdG9yYWdlTmFtZXNwYWNl
SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY1RjRFMDUyMzBCMkU3QzAwM0NFREI3IC8qIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVy
LmggKi87IH07CiAJCTQ2NUZBNzI2Mjc1N0Q5M0QwMDcyMzYyQiAvKiBXZWJMb2NrUmVnaXN0cnlQ
cm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1
RkE3MjMyNzU3RDkxODAwNzIzNjJCIC8qIFdlYkxvY2tSZWdpc3RyeVByb3h5LmggKi87IH07CkBA
IC05MDAsMTAgKzkwMiwxMyBAQAogCQk0NkMzOTIyOTIzMTZFQzREMDA4RUVEOUIgLyogV2ViUGFn
ZVByb3h5SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZDMzkyMjgyMzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIuaCAqLzsgfTsKIAkJNDZDNUI3Q0UyN0FBREREMzAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckZy
YW1lTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkM1QjdDRDI3QUFEREJFMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyRnJhbWVMb2Fk
ZXJDbGllbnQuaCAqLzsgfTsKIAkJNDZDNUI3Q0YyN0FBRERENjAwMEM1QjQ3IC8qIFJlbW90ZVdv
cmtlckxpYldlYlJUQ1Byb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NkM1QjdDQjI3QUFEREJFMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyTGli
V2ViUlRDUHJvdmlkZXIuaCAqLzsgfTsKKwkJNDZDOTE2QUEyNzk5RDBBMjAwMUE0RTdDIC8qIFdl
YlNoYXJlZFdvcmtlclNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDZDOTE2QTkyNzk5RDA5RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNl
cnZlci5oICovOyB9OwogCQk0NkNFM0IxMTIzRDhDODQ5MDAxNkE5NkEgLyogV2ViQmFja0Zvcndh
cmRMaXN0Q291bnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NkNFM0IxMDIzRDhDODNEMDAxNkE5NkEgLyogV2ViQmFja0ZvcndhcmRMaXN0Q291bnRz
LmggKi87IH07CisJCTQ2RDQ4RkNFMjc5OUQ3RTEwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NkQ0OEZDRDI3OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oICovOyB9OwogCQk0NkRGMDYzQzFGMzkwNUY4
MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIg
LyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggKi87IH07CiAJCTQ2RUUyODQ5MjY5RTA0
QUMwMERENDhBQiAvKiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUUyODQ4MjY5RTA0OUIwMERENDhB
QiAvKiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCAqLzsgfTsKIAkJNDZFRTI4NEQyNjlF
MDUyNTAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUUyODRDMjY5RTA1MTcw
MERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggKi87IH07CisJCTQ2
RUUzRThCMjc2M0ZEMkYwMDYwQzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzODY2
NzI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oICov
OyB9OwogCQk0NkYzOEU4QzI0MTZFNjczMDA1OTM3NUEgLyogUnVubmluZ0JvYXJkU2VydmljZXNT
UEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjM4
RThCMjQxNkU2NkQwMDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oICovOyB9Owog
CQk0NkY5QjI2MzIzNTI2RUYzMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkY5QjI2MjIz
NTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggKi87IH07CiAJCTQ5
MzEwMkJEMjY4M0YzRDAwMDJCQjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTMxMDJCQzI2ODNGM0E1MDAyQkI4
ODUgLyogQXBwUHJpdmFjeVJlcG9ydC5oICovOyB9OwpAQCAtNDIyMyw2ICs0MjI4LDkgQEAKIAkJ
NDYwODg5RkYyNjFGQThBOTAwRTI1MDBEIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlv
blBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0
aW9uUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBGNDg4RDFG
OTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVj
ZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNv
dXJjZXMvV2ViS2l0L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVy
LmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNDYwRjQ4OEUxRjk5
NkY2QzAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb25NZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKKwkJNDYxRTFCRUMyNzlBMDEwRTAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjFFMUJFRjI3OUEwMTBGMDA2QUY1M0IgLyogV2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjFFMUJGMDI3OUEwMTBGMDA2QUY1M0Ig
LyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYyMTA3RDcx
RjM4REJEMzAwREQ3ODEwIC8qIFBpbmdMb2FkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFBpbmdMb2FkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDYzMjM2ODMyMzE0ODFFRjAwQTQ4RkE3IC8qIFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2MzIzNjg0MjMxNDgyNUMwMEE0OEZBNyAvKiBXZWJSZW1vdGVPYmplY3RS
ZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJSZW1vdGVPYmplY3RSZWdpc3RyeS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MjMzLDYgKzQyNDEsOSBAQAogCQk0
NjNGRDQ4MTFFQjk0RUFEMDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjUxRUNFNjIyMTc4QTg1MDA2N0VCOTUg
LyogV2ViUHJvY2Vzc0NhY2hlQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJQcm9jZXNzQ2FjaGVDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDY1MjUwRTUxRUNGNTJDRDAwMjAyNUNCIC8qIFdlYktpdDJJbml0aWFsaXplQ29j
b2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJLaXQySW5p
dGlhbGl6ZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjU2RjdCQTI3
QUNBQTgwMDBDQjNEN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjU2RjdCQjI3
QUNBQTgxMDBDQjNEN0MgLyogV2ViU2hhcmVkV29ya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYlNoYXJlZFdvcmtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2NTZG
N0JDMjdBQ0FBODEwMENCM0Q3QyAvKiBXZWJTaGFyZWRXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViU2hhcmVkV29ya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NTlGMjVF
Mjc1RkY2QjIwMEJCQjM2OSAvKiBDYXB0aXZlUG9ydGFsTW9kZU9ic2VydmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhcHRpdmVQb3J0YWxNb2RlT2JzZXJ2ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY1RjRFMDIyMzA3NTlENTAwM0NFREI3IC8qIFN0
b3JhZ2VBcmVhSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlQXJlYUlkZW50aWZp
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY1RjRFMDMyMzA3NjA0RTAwM0NF
REI3IC8qIFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFn
ZUFyZWFJbXBsSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI1
NCw4ICs0MjY1LDExIEBACiAJCTQ2ODA5QTdCMjNEOTIyNTMwMEMyOTdEMCAvKiBXZWJDb29raWVD
YWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb29raWVD
YWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM1NjlBMjFFODFDQzcw
MDZFMjdBMyAvKiBQcm92aXNpb25hbFBhZ2VQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQcm92aXNpb25hbFBhZ2VQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjgzNTY5QjIxRTgxQ0M3MDA2RTI3QTMgLyogUHJvdmlzaW9uYWxQYWdlUHJveHku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvdmlzaW9uYWxQYWdl
UHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjgzODY2NzI3NjNGQUIx
MDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQ2ODM4NjY4Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNl
cnZlckNvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njg5Qjkw
RjI3NTZEMTQzMDAwN0M2NTEgLyogUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0Njg5QjkxMDI3NTZEMTQzMDAwN0M2NTEgLyogUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzRENCMjc2M0Y4MzQwMDRCNjEwRSAvKiBXZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2OURFODAyMjczRUNDNUQwMDkzMDI3NiAvKiBQcm9jZXNzTGF1bmNoZXJDb2NvYS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByb2Nlc3NMYXVuY2hlckNvY29h
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkEyQjYwNjFFNTY3NUEyMDBDM0RF
REEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5l
c3NUaW1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QTJCNjA3MUU1Njc1
QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZl
bmVzc1RpbWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00Mjc0LDcgKzQyODgs
MTEgQEAKIAkJNDZDNUI3Q0IyN0FBRERCRTAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckxpYldlYlJU
Q1Byb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVdvcmtlckxpYldlYlJUQ1Byb3ZpZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzVCN0NDMjdBQUREQkUwMDBDNUI0
NyAvKiBSZW1vdGVXb3JrZXJGcmFtZUxvYWRlckNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW1vdGVXb3JrZXJGcmFtZUxvYWRlckNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2QzVCN0NEMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJGcmFtZUxv
YWRlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVXb3JrZXJGcmFtZUxvYWRlckNsaWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkM5MTZBODI3OTlEMDlEMDAxQTRF
N0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNo
YXJlZFdvcmtlclNlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2Qzkx
NkE5Mjc5OUQwOUQwMDFBNEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2Q0UzQjEwMjNEOEM4M0QwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0ZvcndhcmRMaXN0Q291
bnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2RDQ4RkNDMjc5OUQ3REQwMDdE
MjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkQ0OEZDRDI3OTlEN0RFMDA3RDIw
MTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2REYwNjM5MUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJl
ZmxpZ2h0Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZF
OTc2MEEyNzU3RjZDOTAwQUNERDM3IC8qIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNz
YWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0
cnkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00Mjg0LDYgKzQz
MDIsNyBAQAogCQk0NkVFMjg0QTI2OUUwNTE3MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOZXR3b3Jr
QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NkVFMjg0QjI2OUUwNTE3MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBO
ZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDZFRTI4NEMyNjlFMDUxNzAwREQ0OEFCIC8qIE5ldHdvcmtCcm9hZGNhc3RDaGFu
bmVsUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0Jy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
NkVFM0U4QTI3NjNGRDJBMDA2MEM3MEYgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkYzOEU4QjI0MTZFNjZEMDA1
OTM3NUEgLyogUnVubmluZ0JvYXJkU2VydmljZXNTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUnVubmluZ0JvYXJkU2VydmljZXNTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDZGOUIyNjIyMzUyNkVEMDAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2Fj
aGVFbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrRm9yd2Fy
ZENhY2hlRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDkzMTAyQkMyNjgz
RjNBNTAwMkJCODg1IC8qIEFwcFByaXZhY3lSZXBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBwUHJp
dmFjeVJlcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTI5NSw2ICs5MzE0
LDIzIEBACiAJCQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9
OworCQk0NjgzODY2NTI3NjNGQTFCMDBDRjkxODIgLyogU2hhcmVkV29ya2VyICovID0geworCQkJ
aXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk0NjU2RjdCQjI3QUNBQTgxMDBD
QjNEN0MgLyogV2ViU2hhcmVkV29ya2VyLmNwcCAqLywKKwkJCQk0NjU2RjdCQzI3QUNBQTgxMDBD
QjNEN0MgLyogV2ViU2hhcmVkV29ya2VyLmggKi8sCisJCQkJNDZDOTE2QTgyNzk5RDA5RDAwMUE0
RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAgKi8sCisJCQkJNDZDOTE2QTkyNzk5RDA5
RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5oICovLAorCQkJCTQ2ODM4NjY4Mjc2
M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLywK
KwkJCQk0NjgzODY2NzI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbi5oICovLAorCQkJCTQ2RUUzRThBMjc2M0ZEMkEwMDYwQzcwRiAvKiBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovLAorCQkJCTQ2RDQ4RkNDMjc5OUQ3
REQwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cCAqLywKKwkJCQk0NkQ0OEZDRDI3OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oICovLAorCQkJCTQ2NTZGN0JBMjdBQ0FBODAwMENCM0Q3
QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
ICovLAorCQkJKTsKKwkJCXBhdGggPSBTaGFyZWRXb3JrZXI7CisJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOworCQl9OwogCQk0NjlERTgwMTI3M0VDQzVEMDA5MzAyNzYgLyogY29jb2EgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtOTM1OSw2ICs5Mzk1LDcg
QEAKIAkJCQk1MTQ1MjZFQTI3MUUxNjEwMDAwNDY3QjYgLyogTm90aWZpY2F0aW9ucyAqLywKIAkJ
CQk1QzAxQkMzNTI2RDQ2QUQ0MDBGRUI0MkYgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgKi8s
CiAJCQkJOTNCQTA0RDkyMTUxQURDRDAwN0Y0NTVGIC8qIFNlcnZpY2VXb3JrZXIgKi8sCisJCQkJ
NDY4Mzg2NjUyNzYzRkExQjAwQ0Y5MTgyIC8qIFNoYXJlZFdvcmtlciAqLywKIAkJCQk5MzA4NURD
MjI2RTFCQjY1MDAwRUM2QTcgLyogc3RvcmFnZSAqLywKIAkJCQk0MTMwNzU5NzFERTg0RUQ3MDAz
OUVDNjkgLyogd2VicnRjICovLAogCQkJCTkzQjI2MTQzMjI3RDE0MzEwMEI5N0E3NiAvKiBXZWJT
dG9yYWdlICovLApAQCAtOTQ2MSw4ICs5NDk4LDEyIEBACiAJCQkJNDE5QUNGOUIxRjk4MUQyNjAw
OUYxQTgzIC8qIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCAqLywKIAkJCQk1MUJF
QjYyOTFGM0E1QUNEMDA1MDI5QjkgLyogV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcCAqLywK
IAkJCQk1MUJFQjYyQTFGM0E1QUNEMDA1MDI5QjkgLyogV2ViU2VydmljZVdvcmtlclByb3ZpZGVy
LmggKi8sCisJCQkJNDYxRTFCRUMyNzlBMDEwRTAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgKi8sCisJCQkJNDYxRTFCRUYyNzlBMDEwRjAwNkFG
NTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICovLAorCQkJ
CTQ2MUUxQkYwMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDY2OEEwQkIyN0FCNjA0MDAwQzcyMEJD
IC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwICovLAogCQkJCTQ2NjhBMEI4
MjdBQjYwM0YwMEM3MjBCQyAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggKi8s
CisJCQkJNDY5NDNEQ0IyNzYzRjgzNDAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDY2OEEwQjkyN0FCNjAzRjAwQzcyMEJDIC8q
IFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmNwcCAqLywKIAkJCQk0NjY4QTBCQTI3QUI2MDQwMDBD
NzIwQkMgLyogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaCAqLywKIAkJCQk1MTdBNTMwMzFGNDc5
M0IyMDBEQ0RDMEEgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcCAqLywKQEAgLTEzNjU4LDgg
KzEzNjk5LDEzIEBACiAJCQkJN0MzNjFENzMxOTI3RkEzNjAwMzZBNTlEIC8qIFdlYlNjcmlwdE1l
c3NhZ2VIYW5kbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlEM0I5NDg0OTExRkY0QjY1MDAwMzJC
MzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUJFQjYyQzFG
M0E1QUQ3MDA1MDI5QjkgLyogV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQk0NjU2RjdCRDI3QUNBQThEMDBDQjNEN0MgLyogV2ViU2hhcmVkV29ya2VyLmggaW4g
SGVhZGVycyAqLywKKwkJCQk0NjFFMUJGMjI3OUEwMTE2MDA2QUY1M0IgLyogV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjY4QTBC
RDI3QUI2MDU2MDBDNzIwQkMgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDY2OEEwQkMyN0FCNjA1MDAwQzcyMEJDIC8qIFdlYlNoYXJlZFdv
cmtlclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkM5MTZBQTI3OTlEMEEyMDAxQTRF
N0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkVFM0U4
QjI3NjNGRDJGMDA2MEM3MEYgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDZENDhGQ0UyNzk5RDdFMTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTVDOERE
MzgwMUZFNDUyMTYwMEYyQTU1NiAvKiBXZWJzaXRlQXV0b3BsYXlQb2xpY3kuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBNDgzMkQ3MUE5Q0RGOTYwMDhCNERGRSAvKiBXZWJzaXRlRGF0YS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUE0ODMyRDExQTlCREMyRjAwOEI0REZFIC8qIFdlYnNpdGVEYXRhUmVj
b3JkLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDgxZGQw
NDExYTIzOTZiYzVlMjM0NTViOWY1YjU5ZTczNDYxZWU5NmYuLmJiMzU0N2Y0NmFkNGI4YTVjMjA1
MmQwODJjYTY3NTRiMTI5MWZmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtNTcs
NyArNTcsMTAgQEAKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5j
bHVkZSAiV2ViU29ja2V0Q2hhbm5lbE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0U3Ry
ZWFtLmgiCkBAIC0xNzQsNiArMTc3LDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
OjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCku
ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSkgeworICAgICAgICBBU1NFUlQoU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpLmNvbm5lY3Rpb24oKSk7CisgICAgICAgIGlmIChhdXRvKiBjb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24gPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29u
bmVjdGlvbigpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uJj4oKmNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbikuZGlkUmVjZWl2
ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAK
ICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
UmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IGVkYzA0OTNiZDNl
ZGRmYTE2OTAwYmRiODU5MTRjNjRjNTk3ODkxODAuLjBiNjQ4MGE2MWQzNmNmZTA0NzliNGNmNDAx
ZDQ1ZGY0MzgzMGIzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC00OCw2ICs0OCw3IEBA
IGVudW0gY2xhc3MgSFRUUENvb2tpZUFjY2VwdFBvbGljeSA6IHVpbnQ4X3Q7CiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOworY2xhc3MgV2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjsKIGNsYXNzIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjsK
IGNsYXNzIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb247CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0MzA2
NDc2NjVmYTY1MDhhNWVjNzAwNjczYmJiNzQ0MmQzYjY4ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTI5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5oIgorCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNz
YWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZVdlYkxvY2tSZWdpc3RyeS5oIgorI2luY2x1ZGUgIlJl
bW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiUmVtb3RlV29ya2VyTGli
V2ViUlRDUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnku
aCIKKyNpbmNsdWRlICJXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYkNv
bXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5oIgorI2luY2x1ZGUgIldlYkRhdGFiYXNlUHJvdmlk
ZXIuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNLZXlz
LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNvY2tldFBy
b3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9FbXB0eUNsaWVudHMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2VDb25maWd1cmF0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9T
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29y
a2VyVGhyZWFkUHJveHkuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VzZXJBZ2VudC5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvV29ya2VyRmV0Y2hSZXN1bHQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFi
bGVEb21haW4sIFBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
Y29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgcHJlZmVyZW5jZXNTdG9yZSwgUmVtb3RlV29ya2Vy
SW5pdGlhbGl6YXRpb25EYXRhJiYgaW5pdGlhbGl6YXRpb25EYXRhKQorICAgIDogbV9jb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2VzcyhXVEZNb3ZlKGNvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKSkK
KyAgICAsIG1fcmVnaXN0cmFibGVEb21haW4oV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbikpCisg
ICAgLCBtX3BhZ2VHcm91cElEKHBhZ2VHcm91cElEKQorICAgICwgbV93ZWJQYWdlUHJveHlJRCh3
ZWJQYWdlUHJveHlJRCkKKyAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICAsIG1fdXNlckFnZW50KFdlYkNvcmU6OnN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxp
Y2F0aW9uTmFtZSh7IH0pKQorI2Vsc2UKKyAgICAsIG1fdXNlckFnZW50KHN0YW5kYXJkVXNlckFn
ZW50KCkpCisjZW5kaWYKKyAgICAsIG1fdXNlckNvbnRlbnRDb250cm9sbGVyKFdlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6Z2V0T3JDcmVhdGUoaW5pdGlhbGl6YXRpb25EYXRhLnVzZXJDb250ZW50
Q29udHJvbGxlcklkZW50aWZpZXIpKQoreworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMp
CisgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZENvbnRlbnRSdWxlTGlzdHMoV1RGTW92
ZShpbml0aWFsaXphdGlvbkRhdGEuY29udGVudFJ1bGVMaXN0cykpOworI2VuZGlmCisKKyAgICB1
cGRhdGVQcmVmZXJlbmNlc1N0b3JlKHByZWZlcmVuY2VzU3RvcmUpOworICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmRpc2FibGVUZXJtaW5hdGlvbigpOworfQorCitXZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246On5XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24oKSA9IGRlZmF1bHQ7CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjplc3RhYmxpc2hDb25uZWN0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiB7IG1fd2ViUGFn
ZVByb3h5SUQsIG1fcmVnaXN0cmFibGVEb21haW4gfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIDApOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50
aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2Us
IGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCkKK3sKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpQb3N0RXhjZXB0aW9uVG9X
b3JrZXJPYmplY3QgeyBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMIH0sIDApOworfQorCit2b2lkIFdlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6dXBkYXRlUHJlZmVyZW5jZXNTdG9yZShj
b25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKK3sKKyAgICBXZWJQYWdlOjp1cGRhdGVQ
cmVmZXJlbmNlc0dlbmVyYXRlZChzdG9yZSk7CisgICAgbV9wcmVmZXJlbmNlc1N0b3JlID0gc3Rv
cmU7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjps
YXVuY2hTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCBXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFVSTCYmIHVy
bCwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMsIFdlYkNvcmU6Oldvcmtl
ckZldGNoUmVzdWx0JiYgd29ya2VyRmV0Y2hSZXN1bHQpCit7CisgICAgUkVMRUFTRV9MT0coU2hh
cmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpsYXVu
Y2hTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRX
b3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24g
PSBXZWJDb3JlOjpwYWdlQ29uZmlndXJhdGlvbldpdGhFbXB0eUNsaWVudHMoV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuc2Vzc2lvbklEKCkpOworCisgICAgcGFnZUNvbmZpZ3VyYXRpb24uZGF0YWJh
c2VQcm92aWRlciA9IFdlYkRhdGFiYXNlUHJvdmlkZXI6OmdldE9yQ3JlYXRlKG1fcGFnZUdyb3Vw
SUQpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnNvY2tldFByb3ZpZGVyID0gV2ViU29ja2V0UHJv
dmlkZXI6OmNyZWF0ZShtX3dlYlBhZ2VQcm94eUlEKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5i
cm9hZGNhc3RDaGFubmVsUmVnaXN0cnkgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5icm9hZGNh
c3RDaGFubmVsUmVnaXN0cnkoKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi53ZWJMb2NrUmVnaXN0
cnkgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJMb2NrUmVnaXN0cnkoKTsKKyAgICBwYWdl
Q29uZmlndXJhdGlvbi51c2VyQ29udGVudFByb3ZpZGVyID0gbV91c2VyQ29udGVudENvbnRyb2xs
ZXI7CisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAgcGFnZUNvbmZpZ3VyYXRpb24ubGliV2ViUlRD
UHJvdmlkZXIgPSBtYWtlVW5pcXVlUmVmPFJlbW90ZVdvcmtlckxpYldlYlJUQ1Byb3ZpZGVyPigp
OworI2VuZGlmCisKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5sb2FkZXJDbGllbnRGb3JNYWluRnJh
bWUgPSBtYWtlVW5pcXVlUmVmPFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50PihtX3dlYlBh
Z2VQcm94eUlELCBtX3BhZ2VJRCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
LCBtX3VzZXJBZ2VudCk7CisKKyAgICBhdXRvIHBhZ2UgPSBtYWtlVW5pcXVlUmVmPFdlYkNvcmU6
OlBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKKyAgICBpZiAobV9wcmVmZXJlbmNl
c1N0b3JlKSB7CisgICAgICAgIFdlYlBhZ2U6OnVwZGF0ZVNldHRpbmdzR2VuZXJhdGVkKCptX3By
ZWZlcmVuY2VzU3RvcmUsIHBhZ2UtPnNldHRpbmdzKCkpOworICAgICAgICBwYWdlLT5zZXR0aW5n
cygpLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShzdGF0aWNfY2FzdDxXZWJDb3JlOjpTdG9yYWdl
QmxvY2tpbmdQb2xpY3k+KG1fcHJlZmVyZW5jZXNTdG9yZS0+Z2V0VUludDMyVmFsdWVGb3JLZXko
V2ViUHJlZmVyZW5jZXNLZXk6OnN0b3JhZ2VCbG9ja2luZ1BvbGljeUtleSgpKSkpOworICAgIH0K
KyAgICBwYWdlLT5zZXR1cEZvclJlbW90ZVdvcmtlcih1cmwsIG9yaWdpbi50b3BPcmlnaW4sIHdv
cmtlckZldGNoUmVzdWx0LnJlZmVycmVyUG9saWN5KTsKKyAgICBhdXRvIHNoYXJlZFdvcmtlclRo
cmVhZFByb3h5ID0gV2ViQ29yZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZShXVEZN
b3ZlKHBhZ2UpLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBvcmlnaW4sIHVybCwgV1RGTW92ZSh3
b3JrZXJGZXRjaFJlc3VsdCksIFdURk1vdmUod29ya2VyT3B0aW9ucyksIG1fdXNlckFnZW50LCBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZVN0b3JhZ2VQcm92aWRlcigpKTsKKworICAgIFdl
YkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5yZWdpc3RlclNo
YXJlZFdvcmtlclRocmVhZChXVEZNb3ZlKHNoYXJlZFdvcmtlclRocmVhZFByb3h5KSk7Cit9CisK
K3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpjbG9zZSgpCit7
CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uOjpjbG9zZTogU2hhcmVkIHdvcmtlciBwcm9jZXNzIGlzIHJlcXVlc3Rl
ZCB0byBzdG9wIGFsbCBzaGFyZWQgd29ya2VycyIpOworICAgIHNldEFzQ2xvc2VkKCk7CisKKyAg
ICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Q2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiB7
IH0sIDApOworICAgIFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0
b24oKS5zdG9wQWxsU2hhcmVkV29ya2VycygpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuYWJsZVRlcm1pbmF0aW9uKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
YWNmZDBjNDEyOTFkNTdlNzRiMDZmZWRjNjk1YmZhZjEwOTVkYmJlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIklkZW50aWZpZXJU
eXBlcy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIldlYlBhZ2VQ
cm94eUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0
cmFibGVEb21haW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJJZGVudGlmaWVyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBDbGllbnRPcmlnaW47CitzdHJ1Y3QgV29ya2VyRmV0
Y2hSZXN1bHQ7CitzdHJ1Y3QgV29ya2VyT3B0aW9uczsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjsKK3N0cnVjdCBSZW1vdGVXb3JrZXJJ
bml0aWFsaXphdGlvbkRhdGE7CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlcjo6Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoK
KyAgICBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29u
bmVjdGlvbj4mJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUGFnZUdyb3VwSWRlbnRp
ZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNv
bnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEm
Jik7CisgICAgfldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbigpOworCisg
ICAgdm9pZCBlc3RhYmxpc2hDb25uZWN0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikg
ZmluYWw7CisgICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hh
cmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkgZmluYWw7
CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIGZpbmFsOworCitwcml2YXRlOgorICAgIC8vIElQQyBNZXNzYWdlcy4KKyAgICB2b2lk
IGxhdW5jaFNoYXJlZFdvcmtlcihXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgV2ViQ29yZTo6U2hh
cmVkV29ya2VySWRlbnRpZmllciwgVVJMJiYsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJiwgV2Vi
Q29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJik7CisgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlc1N0
b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKKyAgICB2b2lkIHNldFVzZXJBZ2VudChT
dHJpbmcmJiB1c2VyQWdlbnQpIHsgbV91c2VyQWdlbnQgPSBXVEZNb3ZlKHVzZXJBZ2VudCk7IH0K
KyAgICB2b2lkIGNsb3NlKCk7CisKKyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzOworICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG1fcmVn
aXN0cmFibGVEb21haW47CisgICAgUGFnZUdyb3VwSWRlbnRpZmllciBtX3BhZ2VHcm91cElEOwor
ICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgbV93ZWJQYWdlUHJveHlJRDsKKyAgICBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKKyAgICBTdHJpbmcgbV91c2VyQWdlbnQ7CisgICAg
UmVmPFdlYlVzZXJDb250ZW50Q29udHJvbGxlcj4gbV91c2VyQ29udGVudENvbnRyb2xsZXI7Cisg
ICAgc3RkOjpvcHRpb25hbDxXZWJQcmVmZXJlbmNlc1N0b3JlPiBtX3ByZWZlcmVuY2VzU3RvcmU7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
ODJhNGFkYTUzZmQ0YmViMWM1ZWVlMWY3YWJhNjIyZjNmZDViMWRiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzAgQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgeworICAgIExhdW5jaFNo
YXJlZFdvcmtlcihzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgV2ViQ29yZTo6
U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBVUkwgdXJsLCBz
dHJ1Y3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyB3b3JrZXJPcHRpb25zLCBzdHJ1Y3QgV2ViQ29y
ZTo6V29ya2VyRmV0Y2hSZXN1bHQgd29ya2VyRmV0Y2hSZXN1bHQpCisgICAgUG9zdENvbm5lY3RF
dmVudChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZp
ZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQgcG9ydCwgU3RyaW5nIHNvdXJjZU9y
aWdpbikKKyAgICBUZXJtaW5hdGVTaGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRl
bnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyKQorICAgIFVwZGF0ZVByZWZlcmVuY2VzU3Rv
cmUoc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSkKKyAgICBTZXRVc2Vy
QWdlbnQoU3RyaW5nIHVzZXJBZ2VudCkKKyAgICBDbG9zZSgpCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb24uY3BwCmluZGV4IDVjNWZkYWE2MDA1Nzk2N2M2NWMwMzJmMDQyNWZk
OTE1OTMzMThmM2IuLjVkZGJkZTQ0YTk2YjE1Y2MzNjcxOTBkOGFjZDE3NzMxMzI5NDViZGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCkBAIC0yNiwyMyArMjYsNDUg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLmgiCiAKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUgPFdl
YkNvcmUvU2hhcmVkV29ya2VyTWFuYWdlci5oPgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNl
cnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50
aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcktleS5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvV29ya2VyT3B0aW9ucy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotV2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bigpID0gZGVmYXVsdDsKKyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhmbXQsIC4uLikg
UkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIg
UFJJdTY0ICJdIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OiIgZm10LCB0aGlzLCBX
ZWJDb3JlOjpQcm9jZXNzOjppZGVudGlmaWVyKCkudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykK
KworV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6V2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiV2ViU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbjoiKTsKK30KKworV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbjo6fldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKQoreworICAgIENPTk5FQ1RJ
T05fUkVMRUFTRV9MT0coIn5XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOiIpOworfQog
CiBJUEM6OkNvbm5lY3Rpb24qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Om1lc3Nh
Z2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gJldlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsK
IH0KIAotdm9pZCBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpyZXF1ZXN0U2hhcmVk
V29ya2VyKGNvbnN0IFVSTCYgdXJsLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXImIHNoYXJlZFdvcmtl
ciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBvcnQsIFdlYkNvcmU6Oldvcmtl
ck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zKQordm9pZCBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uOjpyZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktl
eSYgc2hhcmVkV29ya2VyS2V5LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2Fn
ZVBvcnQmJiBwb3J0LCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25z
KQogewotICAgIC8vIEZJWE1FOiBTaG91bGQgc2VuZCBJUEMgdG8gdGhlIG5ldHdvcmsgcHJvY2Vz
cy4KLSAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0
KHVybCwgc2hhcmVkV29ya2VyLCBXVEZNb3ZlKHBvcnQpLCBXVEZNb3ZlKHdvcmtlck9wdGlvbnMp
KTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJyZXF1ZXN0U2hhcmVkV29ya2VyOiBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6UmVxdWVzdFNoYXJlZFdvcmtlciB7IHNo
YXJlZFdvcmtlcktleSwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV1RGTW92ZShwb3J0
KSwgd29ya2VyT3B0aW9ucyB9KTsKIH0KIAordm9pZCBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uOjpzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShjb25zdCBXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJLZXkmIHNoYXJlZFdvcmtlcktleSwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQoreworICAgIENPTk5FQ1RJ
T05fUkVMRUFTRV9MT0coInNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5OiBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6U2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkg
eyBzaGFyZWRXb3JrZXJLZXksIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgfSk7Cit9CisK
KyN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oCmluZGV4IDYxZWU1YWY0MjRkYzAzMzdm
NjJjZjcxOTMyYTE1YmI5NTVlNmRjZDIuLjQ3ODE5M2VmN2RkYWYwNjFkNmViNTI4ZWRmOTNkYmM0
MTE3YTMyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKQEAgLTI1LDIw
ICsyNSwyNSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdl
YlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIgewor
Y2xhc3MgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJD
b3JlOjpTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLCBwcml2YXRlIElQQzo6TWVzc2FnZVNl
bmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24+IGNyZWF0ZSgpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbik7IH0KKyAgICB+V2Vi
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIAogcHJpdmF0ZToK
ICAgICBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCk7CiAKICAgICAvLyBXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLgotICAgIHZvaWQgcmVxdWVzdFNoYXJlZFdv
cmtlcihjb25zdCBVUkwmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXImLCBXZWJDb3JlOjpUcmFuc2Zl
cnJlZE1lc3NhZ2VQb3J0JiYsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJikgZmluYWw7CisgICAg
dm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYs
IFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVy
cmVkTWVzc2FnZVBvcnQmJiwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYpIGZpbmFsOwor
ICAgIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoY29uc3QgV2ViQ29yZTo6U2hh
cmVkV29ya2VyS2V5JiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikgZmlu
YWw7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCiAgICAgSVBDOjpDb25uZWN0aW9uKiBt
ZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzIyYWUxYTMy
YzkzOTUzZDk1ZThlYWY4YzU4MTAyMjcwYjUyNTdmMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
CisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uIHsKKyAgICBGZXRjaFNjcmlwdEluQ2xpZW50KFVSTCB1cmwsIFdlYkNvcmU6OlNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgc3RydWN0
IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMgd29ya2VyT3B0aW9ucykgLT4gKHN0cnVjdCBXZWJDb3Jl
OjpXb3JrZXJGZXRjaFJlc3VsdCBmZXRjaFJlc3VsdCkgQXN5bmMKKyAgICBOb3RpZnlXb3JrZXJP
YmplY3RPZkxvYWRDb21wbGV0aW9uKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBl
cnJvcikKKyAgICBQb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBTdHJpbmcg
ZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgU3RyaW5nIHNv
dXJjZVVSTCkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBk
ZDhkNTgxYWM1YjI0ZDVkOTQwNjJiOWM2NWMyNDJmMGM1MWVjOTg0Li5kZDQ1YjQ1ODhiZjlkZDEy
NGUxOGZhYTk1YTMyNmVkMzE5MzFhNDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCkBAIC04NCw2ICs4NCw4IEBACiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmgiCisjaW5jbHVk
ZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oIgogI2luY2x1ZGUgIldlYlNvY2tldFN0cmVh
bS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCkBAIC0xMzQsNiArMTM2LDcgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVXNlckdlc3R1cmVJbmRpY2F0b3IuaD4KICNpbmNsdWRlIDxwYWwvTG9nZ2luZy5oPgog
I2luY2x1ZGUgPHd0Zi9BbGdvcml0aG1zLmg+CkBAIC05MDQsNyArOTA3LDYgQEAgdm9pZCBXZWJQ
cm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQ
Qzo6RGVjb2RlciYgZGUKICAgICB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAg
Ly8gRklYTUU6IFJlbW92ZT8KICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkg
PT0gTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpIHsKICAgICAgICAgQVNTRVJUKFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigp
LmNvbm5lY3Rpb24oKSk7CiAgICAgICAgIGlmIChhdXRvKiBjb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24gPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCkBAIC05MTMs
NiArOTE1LDEzIEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlCiAgICAgfQogI2VuZGlmCiAKKyAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7
CisgICAgICAgIEFTU0VSVChTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCku
Y29ubmVjdGlvbigpKTsKKyAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
biA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkp
CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24mPigqY29udGV4dE1hbmFnZXJDb25uZWN0aW9uKS5kaWRSZWNlaXZlTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIExPR19F
UlJPUigiVW5oYW5kbGVkIHdlYiBwcm9jZXNzIG1lc3NhZ2UgJyVzJyAoZGVzdGluYXRpb246ICUi
IFBSSXU2NCAiIHBpZDogJWQpIiwgZGVzY3JpcHRpb24oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSwg
ZGVjb2Rlci5kZXN0aW5hdGlvbklEKCksIHN0YXRpY19jYXN0PGludD4oZ2V0Q3VycmVudFByb2Nl
c3NJRCgpKSk7CiB9CiAKQEAgLTE5MTksNiArMTkyOCwxNiBAQCBMaWJXZWJSVENOZXR3b3JrJiBX
ZWJQcm9jZXNzOjpsaWJXZWJSVENOZXR3b3JrKCkKICAgICByZXR1cm4gKm1fbGliV2ViUlRDTmV0
d29yazsKIH0KIAordm9pZCBXZWJQcm9jZXNzOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJ
RCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgUGFnZUlkZW50aWZpZXIg
cGFnZUlELCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgUmVnaXN0cmFibGVEb21h
aW4mJiByZWdpc3RyYWJsZURvbWFpbiwgUmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYg
aW5pdGlhbGl6YXRpb25EYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgLy8gV2UgYXJlIGluIHRoZSBTaGFyZWQgV29ya2VyIGNvbnRleHQg
cHJvY2VzcyBhbmQgdGhlIGNhbGwgYmVsb3cgZXN0YWJsaXNoZXMgb3VyIGNvbm5lY3Rpb24gdG8g
dGhlIE5ldHdvcmsgUHJvY2VzcworICAgIC8vIGJ5IGNhbGxpbmcgZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlciBuZWVkcyB0byB1c2UgdGhl
IHNhbWUgdW5kZXJseWluZyBJUEM6OkNvbm5lY3Rpb24gYXMgdGhlCisgICAgLy8gTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uIGZvciBzeW5jaHJvbml6YXRpb24gcHVycG9zZXMuCisgICAgYXV0byYg
aXBjQ29ubmVjdGlvbiA9IGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKTsKKyAgICBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0Q29u
bmVjdGlvbihtYWtlVW5pcXVlPFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bj4oaXBjQ29ubmVjdGlvbiwgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHBhZ2VHcm91cElE
LCB3ZWJQYWdlUHJveHlJRCwgcGFnZUlELCBzdG9yZSwgV1RGTW92ZShpbml0aWFsaXphdGlvbkRh
dGEpKSk7CisgICAgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5l
Y3Rpb24oKS0+ZXN0YWJsaXNoQ29ubmVjdGlvbihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Cit9CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiB2b2lkIFdlYlByb2Nlc3M6OmVzdGFi
bGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUGFnZUdy
b3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdl
UHJveHlJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3Jl
JiBzdG9yZSwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRp
b25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJ
ZGVudGlmaWVyLCBSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXphdGlv
bkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDAwM2JmZmVjZDhmNjJjYmE2
OTQ4MzVkZjY0N2NhYWJlYTNlMmE1NzYuLmM1ZGQyMjVkYzFiNzFkYTljZGQ0ZWVkYmEwYTA3ZTc2
MTc4MTU3NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNDc0LDYg
KzQ3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnYW1lcGFkRGlzY29ubmVjdGVkKHVuc2lnbmVk
IGluZGV4KTsKICNlbmRpZgogCisgICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmllciwgV2ViUGFnZVBy
b3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVu
Y2VzU3RvcmUmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBSZW1vdGVXb3JrZXJJbml0
aWFsaXphdGlvbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZpZXIsIFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJl
bmNlc1N0b3JlJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBh
Z2VJZGVudGlmaWVyLCBSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAzYmM0NzMxOWUzNmQwMDYzMTk4YmJiZjk2
NjhkMDY5YWFkY2RlMzc3Li5mNWU3MzZlZDM0N2YyNzFhZGVjN2M0NWQwM2ZkODNkYmIwYmE5YmVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgpAQCAtMTAwLDYgKzEwMCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2
ZXIgTm90UmVmQ291bnRlZCB7CiAgICAgR2FtZXBhZERpc2Nvbm5lY3RlZCh1bnNpZ25lZCBpbmRl
eCkKICNlbmRpZgogCisgICAgRXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKFdlYktpdDo6UGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwg
V2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUg
c3RvcmUsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgc3RydWN0IFdlYktpdDo6
UmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhIGluaXRpYWxpemF0aW9uRGF0YSkgLT4gKCkg
QXN5bmMKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBFc3RhYmxpc2hTZXJ2aWNl
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYktpdDo6UGFnZUdyb3Vw
SWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdl
YlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHN0cnVjdCBXZWJL
aXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IGRvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpSZW1v
dGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRhKSAtPiAoKSBBc3lu
YwogI2VuZGlmCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggODFmMzBiN2RjYjRkNTQ5YzEwYjlhMjhmNWIyMDUwYzE2ODE0YTQ3
Ny4uZjdlZDRlMGRkODE5ZTJjNTFhMGUzNTc0ZjUxZDg1OTBiNDYyZTVjYSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIzIEBACisyMDIyLTAyLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNoYXJpbmcgU2hhcmVkIFdvcmtlcnMgKGluY2x1ZGlu
ZyBhY3Jvc3MgV2ViUHJvY2Vzc2VzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM1OTU4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84ODMzMDY2Nj4K
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBSZWJhc2VsaW5l
IGV4aXN0aW5nIFdQVCB0ZXN0cyBpbnZvbHZpbmcgc2hhcmVkIHdvcmtlcnMuCisKKyAgICAgICAg
KiBUZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29y
a2VyL3NoYXJlZHdvcmtlci1jb25uZWN0LXNyYy5zdWItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0
LW9ubHkuc3ViLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrLXdr
Mi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1ibG9iLXVybC53
aW5kb3ctZXhwZWN0ZWQudHh0OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1i
bG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0LgorICAgICAgICAqIHBsYXRmb3JtL2d0ay13azIv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdv
cmtlci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dDogQ29waWVkIGZyb20gTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMv
c2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQ6IENv
cGllZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMveGhyL29wZW4tdXJsLXJlZGlyZWN0ZWQtc2hhcmVkd29ya2VyLW9y
aWdpbi1leHBlY3RlZC50eHQ6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMveGhyL29wZW4tdXJsLXJlZGlyZWN0ZWQtc2hhcmVkd29ya2VyLW9y
aWdpbi1leHBlY3RlZC50eHQuCisKIDIwMjItMDItMDcgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRz
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1dlYiBBbmltYXRpb25zXSBTdGFydGluZyBhIHRyYW5z
Zm9ybSBhbmltYXRpb24gd2l0aCBhIDFtcyBkZWxheSBkb2Vzbid0IHJ1biBpdCBhY2NlbGVyYXRl
ZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggYTlkMTI1N2RlMjc4YzAxYTNkYjRi
MDhmZjMwMjIwYzRmYWU4ODJlYy4uZmUxMzdjOTQwYjI1ZWVmNjRiNmIzNTM5MTg5OWE5ZjBjN2E2
OGQ3YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIw
MjItMDItMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
c3VwcG9ydCBmb3Igc2hhcmluZyBTaGFyZWQgV29ya2VycyAoaW5jbHVkaW5nIGFjcm9zcyBXZWJQ
cm9jZXNzZXMpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzU5NTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg4MzMwNjY2PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlYmFzZWxpbmUgZXhpc3RpbmcgV1BU
IHRlc3RzIGludm9sdmluZyBzaGFyZWQgd29ya2Vycy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9zaGFyZWQtd29ya2Vy
LWNvbm5lY3Qtc3JjLWFsbG93ZWQuc3ViLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvY29ubmVjdC1zcmMvc2hhcmVkLXdv
cmtlci1jb25uZWN0LXNyYy1ibG9ja2VkLnN1Yi1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hh
cmVkd29ya2VyLXJlcG9ydC1vbmx5LnN1Yi1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVk
d29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRp
bWVvdXQuc3ViLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBz
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1v
cmlnaW4tZW1iZWRkZXItcG9saWN5L2Nyb3NzLW9yaWdpbi1pc29sYXRlZC1wZXJtaXNzaW9uLmh0
dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9z
cy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRk
ZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5jZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIv
Y2xhaW0tc2hhcmVkLXdvcmtlci1mZXRjaC5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyX2RhdGFVcmwtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVk
LXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRh
dGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC53aW5k
b3ctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21v
ZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtcmVmZXJyZXItZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBv
cnQud2luZG93LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1jcmVkZW50aWFscy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRp
cGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDgtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItZnJvbS1i
bG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25z
LW1pc21hdGNoLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMveGhy
L29wZW4tdXJsLXJlZGlyZWN0ZWQtc2hhcmVkd29ya2VyLW9yaWdpbi1leHBlY3RlZC50eHQ6CisK
IDIwMjItMDItMDcgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgW2Nzcy1sb2dpY2FsXSBbd2ViLWFuaW1hdGlvbnNdIEFkZCBzdXBwb3J0IGZvciBsb2dpY2Fs
IHByb3BlcnRpZXMgaW4gSlMtb3JpZ2luYXRlZCBhbmltYXRpb25zCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCA1YWZiYWE1NzI1NTYwNTIzYWE0ZDUzYmVjNzQ1ZTQ2Y2FlMmNhZmQ3Li42ZDgxY2FlMjlh
OWUyMDZmY2E1Y2ExNjJlY2NjMGFiZGFlMzI2Mjg5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQ1
OSw3ICs0NTksNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1sb2Nrcy9z
dGVhbC50ZW50YXRpdmUuaHR0cHMuYW55Lmh0bWwgWyBEdW1wSgogaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hbmFseXNlcm5vZGUtaW50
ZXJmYWNlL3Rlc3QtYW5hbHlzZXItbWluaW11bS5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3Rk
RXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlv
LWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUtZGlzY29ubmVjdC1hdWRpb3Bh
cmFtLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQogaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NhbWUtb3JpZ2luLWNoZWNrLnN1Yi5odG1sIFsgRHVtcEpT
Q29uc29sZUxvZ0luU3RkRXJyIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMuaHRtbCBbIER1bXBKU0NvbnNvbGVM
b2dJblN0ZEVyciBdCiBmYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWJhY2stZm9yd2FyZC1jYWNoZS5o
dG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGZhc3QvaGlzdG9yeS9wYWdlLWNhY2hl
LWNyZWF0ZUltYWdlQml0bWFwLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQogaHR0
cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLWluLWxvYWRpbmctaWZyYW1lLmh0bWwg
WyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQpAQCAtODQ5LDYgKzg0OCw3IEBAIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdXNlci10aW1pbmcvbWFyay5odG1sIFsgRmFpbHVyZSBQ
YXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdXNlci10aW1pbmcvbWVhc3Vy
ZV9hc3NvY2lhdGVkX3dpdGhfbmF2aWdhdGlvbl90aW1pbmcuaHRtbCBbIEZhaWx1cmUgUGFzcyBd
CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zeXN0ZW0t
c3RhdGUtYW5kLWNhcGFiaWxpdGllcy90aGUtbmF2aWdhdG9yLW9iamVjdC9wbHVnaW5zLWFuZC1t
aW1ldHlwZXMuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2JlYWNvbi9iZWFjb24tcmVkaXJlY3Quc3ViLndpbmRvdy5odG1sIFsgRmFpbHVyZSBQ
YXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4t
ZW1iZWRkZXItcG9saWN5L2Fub255bW91cy1pZnJhbWUvc2hhcmVkd29ya2VyLXBhcnRpdGlvbmlu
Zy50ZW50YXRpdmUuaHR0cHMud2luZG93Lmh0bWwgWyBGYWlsdXJlIFBhc3MgXQogCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2RvY3VtZW50LW1ldGFkYXRh
L3RoZS1saW5rLWVsZW1lbnQvbGluay1sb2FkLWVycm9yLWV2ZW50cy5odG1sIFsgRHVtcEpTQ29u
c29sZUxvZ0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3MvZG9jdW1lbnQtbWV0YWRhdGEvdGhlLWxpbmstZWxlbWVudC9saW5rLWxvYWQtZXJy
b3ItZXZlbnRzLmh0dHBzLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQpAQCAtNTEx
NCw2ICs1MTE0LDEwIEBAIHdlYmtpdC5vcmcvYi8yMzQ5NzcgWyBEZWJ1ZyBdIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9mb2N1cy1lCiAjIFRlc3QgaXMgY3Jhc2hp
bmcgc2luY2UgaW1wb3J0LgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L21vZHVsZXMvZGVkaWNhdGVkLXdvcmtlci1pbXBvcnQtY3NwLmh0bWwgWyBTa2lwIF0KIAorIyBU
ZXN0IGlzIGZsYWt5IGJlY2F1c2UgTWVzc2FnZVBvcnQgbWVzc2FnZXMgbWF5IGdldCByZWNlaXZl
ZCBpbiBhIGRpZmZlcmVudCBvcmRlciB3aGVuIHNldmVyYWwgTWVzc2FnZVBvcnRzIGFyZSBpbnZv
bHZlZCwKKyMgZHVlIHRvIGhvdyBNZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpIGlzIGlt
cGxlbWVudGVkLgoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJl
ZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJy
IEZhaWx1cmUgUGFzcyBdCisKICMgUGx1Z2lucwogIyBGSVhNRTogUmVtb3ZlIHRoZXNlIHRlc3Rz
LgogcGx1Z2lucy8gWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvY29ubmVjdC1zcmMv
c2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1hbGxvd2VkLnN1Yi1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHkt
cG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3JrZXItY29ubmVjdC1zcmMtYWxsb3dlZC5zdWIt
ZXhwZWN0ZWQudHh0CmluZGV4IGUyODM5NWVkODNjNjY0YjJjYTYwZDVkYTg3YmNmZjBlMDM5OWQ1
MDEuLjM4MmI5NTY5NWJjYjA1ZDUyY2UwZWNhMjA4YTg4MDY3YTgzZTE3NDcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvY29ubmVjdC1zcmMvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1hbGxvd2Vk
LnN1Yi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9zaGFyZWQtd29y
a2VyLWNvbm5lY3Qtc3JjLWFsbG93ZWQuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAK
LUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwOi8vd3d3MS5sb2NhbGhvc3Q6ODgw
MC9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zdXBwb3J0L2ZhaWwuYXNpcwogCiBGQUlMIEV4cGVj
dGluZyBsb2dzOiBbInhociBhbGxvd2VkIiwiVEVTVCBDT01QTEVURSJdIGFzc2VydF91bnJlYWNo
ZWQ6IHVuZXhwZWN0ZWQgbG9nOiB4aHIgYmxvY2tlZCBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9zaGFyZWQtd29ya2VyLWNvbm5l
Y3Qtc3JjLWJsb2NrZWQuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvY29ubmVjdC1zcmMv
c2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1ibG9ja2VkLnN1Yi1leHBlY3RlZC50eHQKaW5kZXgg
ZjQ5MGVhNzcxMmZlODFjNzc0MWRkZTA0MTU0NTc1Mjk1MTc2ZmY1My4uNWU5NzFlMjBmNGJiOTI2
M2EzMTg0ZTMwOGNkYzdjNDk0MDZjNDhjOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0
LXNyYy9zaGFyZWQtd29ya2VyLWNvbm5lY3Qtc3JjLWJsb2NrZWQuc3ViLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3JrZXItY29ubmVjdC1zcmMtYmxv
Y2tlZC5zdWItZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8g
ZXh0ZXJuYWwgVVJMIGh0dHA6Ly93d3cxLmxvY2FsaG9zdDo4ODAwL2NvbnRlbnQtc2VjdXJpdHkt
cG9saWN5L3N1cHBvcnQvZmFpbC5hc2lzCiBUaGlzIHRlc3QgbG9hZHMgYSBzaGFyZWQgd29ya2Vy
LCBkZWxpdmVyZWQgd2l0aCBpdHMgb3duIHBvbGljeS4gVGhlIHdvcmtlciBzaG91bGQgYmUgYmxv
Y2tlZCBmcm9tIG1ha2luZyBhbiBYSFIgYXMgdGhhdCBwb2xpY3kgc3BlY2lmaWVzIGEgY29ubmVj
dC1zcmMgJ25vbmUnLCB0aG91Z2ggdGhpcyByZXNvdXJjZSdzIHBvbGljeSBpcyBjb25uZWN0LXNy
YyAqLiBObyByZXBvcnQgc2hvdWxkIGJlIHNlbnQgc2luY2UgdGhlIHdvcmtlcidzIHBvbGljeSBk
b2Vzbid0IHNwZWNpZnkgYSByZXBvcnQtdXJpLgogCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
aW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4
cGVjdGVkLnR4dAppbmRleCAwZTk5NzI0Yjg2NGJiZjQ5MTlhNTc0OWIyOGNiMTU0YWUyNzE4M2M2
Li42ODk4YjU0YWFiNmZjMzRkMTdiMmU4YmUyZTg0M2U5YTg3MDViMzcwIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJp
dHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXJlcG9ydC1vbmx5LnN1Yi1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1yZXBv
cnQtb25seS5zdWItZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3Mg
dG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJp
dHktcG9saWN5L3N1cHBvcnQvcmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLWZldGNoCi1CbG9ja2Vk
IGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvc3VwcG9ydC9yZXNvdXJjZS5weT9jcm9zcy1vcmlnaW4teGhyCi1C
bG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvc3VwcG9ydC9yZXNvdXJjZS5weT9jcm9zcy1vcmlnaW4t
ZmV0Y2gKIAogUEFTUyBTYW1lLW9yaWdpbiAnZmV0Y2goKScuCiBQQVNTIFNhbWUtb3JpZ2luIFhI
Ui4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2Ny
aXB0LXNyYy5zdWItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJl
ZHdvcmtlci1zY3JpcHQtc3JjLnN1Yi1leHBlY3RlZC50eHQKaW5kZXggOTc5MTA2MzAzNzg1ZWMy
NTU1MzM2ZGY0OWRiZThlMWJmYTNmNmVmYS4uYmI2NDUyZjQ0YTBhYTIxNWE4ZGRlOGEyZjMwMGQ4
Y2M0NDhkYjkzZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdv
cmtlci1zY3JpcHQtc3JjLnN1Yi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUt
d29ya2VyL3NoYXJlZHdvcmtlci1zY3JpcHQtc3JjLnN1Yi1leHBlY3RlZC50eHQKQEAgLTIsMTAg
KzIsOSBAQAogSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCiAKIFRJTUVP
VVQgc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMgVGVzdCB0aW1lZCBvdXQKLUZBSUwgQ3Jvc3Mtb3Jp
Z2luIGBpbXBvcnRTY3JpcHRzKClgIG5vdCBibG9ja2VkIGluIGh0dHA6IHdpdGhvdXIgQ1NQICBB
IG5ldHdvcmsgZXJyb3Igb2NjdXJyZWQuCi1GQUlMIGBldmFsKClgIG5vdCBibG9ja2VkIGluIGh0
dHA6IHdpdGhvdXQgQ1NQIFJlZnVzZWQgdG8gZXZhbHVhdGUgYSBzdHJpbmcgYXMgSmF2YVNjcmlw
dCBiZWNhdXNlICd1bnNhZmUtZXZhbCcgaXMgbm90IGFuIGFsbG93ZWQgc291cmNlIG9mIHNjcmlw
dCBpbiB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogInNj
cmlwdC1zcmMgJ3NlbGYnICdub25jZS1hJyBibG9iOiBmaWxlc3lzdGVtOiIuCi0KLUZBSUwgYHNl
dFRpbWVvdXQoW3N0cmluZ10pYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3V0IENTUCBhc3Nl
cnRfdW5yZWFjaGVkOiBjYWxsYmFjayBub3QgY2FsbGVkLiBSZWFjaGVkIHVucmVhY2hhYmxlIGNv
ZGUKK0ZBSUwgQ3Jvc3Mtb3JpZ2luIGBpbXBvcnRTY3JpcHRzKClgIG5vdCBibG9ja2VkIGluIGh0
dHA6IHdpdGhvdXIgQ1NQIExvYWQgZmFpbGVkCitQQVNTIGBldmFsKClgIG5vdCBibG9ja2VkIGlu
IGh0dHA6IHdpdGhvdXQgQ1NQCitQQVNTIGBzZXRUaW1lb3V0KFtzdHJpbmddKWAgbm90IGJsb2Nr
ZWQgaW4gaHR0cDogd2l0aG91dCBDU1AKIFRJTUVPVVQgQ3Jvc3Mtb3JpZ2luIGBpbXBvcnRTY3Jp
cHRzKClgIGJsb2NrZWQgaW4gaHR0cDogd2l0aCBzY3JpcHQtc3JjICdzZWxmJyBUZXN0IHRpbWVk
IG91dAogTk9UUlVOIGBldmFsKClgIGJsb2NrZWQgaW4gaHR0cDogd2l0aCBzY3JpcHQtc3JjICdz
ZWxmJwogTk9UUlVOIGBzZXRUaW1lb3V0KFtzdHJpbmddKWAgYmxvY2tlZCBpbiBodHRwOiB3aXRo
IHNjcmlwdC1zcmMgJ3NlbGYnCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3NjcmlwdC1zcmMvd29y
a2VyLXNldC10aW1lb3V0LnN1Yi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3NjcmlwdC1zcmMv
d29ya2VyLXNldC10aW1lb3V0LnN1Yi1leHBlY3RlZC50eHQKaW5kZXggNGVhYzFjY2MwNTI2OWYw
NzY4NzUwMjVjZDYyNGVlN2QyMTc5NmNlZi4uYjhlZTEzYjBmZmNlYTZmMTI1Y2M2OTZmMmJiYjY3
MTIwM2Y4NjhjYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQt
dGltZW91dC5zdWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3Jr
ZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKIAogRkFJTCBE
ZWRpY2F0ZWQgd29ya2VyIGluaGVyaXRzIENTUCBmcm9tIG1haW4gZG9jdW1lbnQgYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgInNldFRpbWVvdXQgYWxsb3dlZCIgYnV0IGdvdCAic2V0VGltZW91dCBi
bG9ja2VkIgotRkFJTCBTaGFyZWQgd29ya2VyIGRlbGl2ZXJzIGl0cyBvd24gQ1NQIGFzc2VydF9l
cXVhbHM6IGV4cGVjdGVkICJzZXRUaW1lb3V0IGJsb2NrZWQiIGJ1dCBnb3QgInNldFRpbWVvdXQg
YWxsb3dlZCIKK1BBU1MgU2hhcmVkIHdvcmtlciBkZWxpdmVycyBpdHMgb3duIENTUAogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
YnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5o
dHRwcy1leHBlY3RlZC50eHQKaW5kZXggYzEwNzEzNjU1MjgwMTkyYjdjYjJlZThlNGQyZWM2NTQ3
YWVmNzI2My4uNmY4NDRkZDVkOTQ5MWEyMmU1OTVhOTBiOTYzYzA4ODgyMTkwMmQyZCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jy
b3dzZXJzL29mZmxpbmUvYXBwY2FjaGUvd29ya2Vycy9hcHBjYWNoZS13b3JrZXIuaHR0cHMtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2Vy
Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtNSw3ICs1LDcgQEAgSGFybmVzcyBFcnJvciAoVElNRU9V
VCksIG1lc3NhZ2UgPSBudWxsCiBQQVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIGNhY2hlZCBz
Y3JpcHQKIFBBU1MgRGVkaWNhdGVkIHdvcmtlciBvZiB0aGUgZmFsbGJhY2tlZCBzY3JpcHQKIFBB
U1MgRGVkaWNhdGVkIHdvcmtlciBvZiB0aGUgbm90LWluLWNhY2hlIHNjcmlwdAotUEFTUyBTaGFy
ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0Ci1QQVNTIFNoYXJlZCB3b3JrZXIgb2YgdGhl
IGZhbGxiYWNrZWQgc2NyaXB0CitGQUlMIFNoYXJlZCB3b3JrZXIgb2YgdGhlIGNhY2hlZCBzY3Jp
cHQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIkRvbmU6IGNhY2hlZCIgYnV0IGdvdCAiRXJyb3I6
IEltcG9ydGluZyBhIG5vbi1jYWNoZWQgc2NyaXB0IG11c3QgZmFpbC4iCitGQUlMIFNoYXJlZCB3
b3JrZXIgb2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJE
b25lOiBmYWxsYmFja2VkIiBidXQgZ290ICJFcnJvcjogSW1wb3J0aW5nIGEgbm9uLWNhY2hlZCBz
Y3JpcHQgbXVzdCBmYWlsLiIKIFRJTUVPVVQgU2hhcmVkIHdvcmtlciBvZiB0aGUgbm90LWluLWNh
Y2hlIHNjcmlwdCBUZXN0IHRpbWVkIG91dAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBv
bGljeS9jcm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5odHRwcy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mt
b3JpZ2luLWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5o
dHRwcy1leHBlY3RlZC50eHQKaW5kZXggNjM1NWI2OGRlNzBiZTY2YzAxZTJiM2FlMTI3NDdkNWNk
MmMzNDBhYi4uYzhiZjc1ZTdlYTg1MzBmYmM4YjQyMDAzMmFmNGYwMzlkZGRlNTM2NyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Ny
b3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Np
b24uaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L2Nyb3NzLW9y
aWdpbi1pc29sYXRlZC1wZXJtaXNzaW9uLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMjAsNyArMjAs
NyBAQCBQQVNTIGRlZGljYXRlZCB3b3JrZXI6IHNjaGVtZSA9IGJsb2IsIHZhbHVlID0gKgogUEFT
UyBkZWRpY2F0ZWQgd29ya2VyOiBzY2hlbWUgPSBibG9iLCB2YWx1ZSA9IHNlbGYKIEZBSUwgZGVk
aWNhdGVkIHdvcmtlcjogc2NoZW1lID0gYmxvYiwgdmFsdWUgPSAoXCkgYXNzZXJ0X2VxdWFsczog
ZXhwZWN0ZWQgZmFsc2UgYnV0IGdvdCB0cnVlCiBQQVNTIHNoYXJlZCB3b3JrZXI6IHdpdGhDb29w
Q29lcCA9IGZhbHNlCi1QQVNTIHNoYXJlZCB3b3JrZXI6IHdpdGhDb29wQ29lcCA9IHRydWUKK0ZB
SUwgc2hhcmVkIHdvcmtlcjogd2l0aENvb3BDb2VwID0gdHJ1ZSBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCB0cnVlIGJ1dCBnb3QgZmFsc2UKIFBBU1Mgc2VydmljZSB3b3JrZXI6IHdpdGhDb29wQ29l
cCA9IGZhbHNlCiBGQUlMIHNlcnZpY2Ugd29ya2VyOiB3aXRoQ29vcENvZXAgPSB0cnVlIGFzc2Vy
dF9lcXVhbHM6IGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZQogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2lu
LWVtYmVkZGVyLXBvbGljeS9zaGFyZWQtd29ya2Vycy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2lu
LWVtYmVkZGVyLXBvbGljeS9zaGFyZWQtd29ya2Vycy5odHRwcy1leHBlY3RlZC50eHQKaW5kZXgg
MzM5OGJkODg5MzFiMjIwOGEyODA4OTliZWQ3NGUyNGRhM2Y0ZjYzNi4uNGM4NjZlYjI5MjYzYmFm
ODdlZGMxOWVlOWNlMTUwMTQ2MTA5MGJjZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xp
Y3kvc2hhcmVkLXdvcmtlcnMuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXIt
cG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMiw3ICsyLDcgQEAg
VmVyaWZ5IHRoZSBDcm9zcy1PcmlnaW4gRW1iZWRkZXIgUG9saWN5IGZvciBTaGFyZWQgV29ya2Vy
cyBieSBwZXJmb3JtaW5nIGEgY3Jvc3MKIAogCiBQQVNTIGRlZmF1bHQgcG9saWN5IChkZXJpdmVk
IGZyb20gcmVzcG9uc2UpCi1GQUlMICJyZXF1aXJlLWNvcnAiIChkZXJpdmVkIGZyb20gcmVzcG9u
c2UpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJmYWlsdXJlIiBidXQgZ290ICJzdWNjZXNzIgor
UEFTUyAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIHJlc3BvbnNlKQogUEFTUyBkZWZhdWx0
IHBvbGljeSAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBkdWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVt
ZSAtIGJsb2IgVVJMKQogRkFJTCAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIG93bmVyIHNl
dCBkdWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAtIGJsb2IgVVJMKSBhc3NlcnRfZXF1YWxzOiBl
eHBlY3RlZCAiZmFpbHVyZSIgYnV0IGdvdCAic3VjY2VzcyIKIFBBU1MgZGVmYXVsdCBwb2xpY3kg
KGRlcml2ZWQgZnJvbSBvd25lciBzZXQgZHVlIHRvIHVzZSBvZiBsb2NhbCBzY2hlbWUgLSBkYXRh
IFVSTCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5j
ZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWlu
aGVyaXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggNzViMWQzM2U1MjYwMWFkMGQz
YWRkZjhiZGU1NTVlMTVkYjIyZmYyMi4uYjJiZjJlM2JmZjNmZTJlMzA3YThiYzk0OWUyMjFkZjAw
NmE5NjNmNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVyaXRh
bmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29y
a2VyLWluaGVyaXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw2IEBACiBC
bG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQv
Y29tbW9uL2JsYW5rLmh0bWwKIEJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczov
L3d3dy5sb2NhbGhvc3Q6OTQ0NC9jb21tb24vYmxhbmsuaHRtbAogQmxvY2tlZCBhY2Nlc3MgdG8g
ZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbW1vbi9ibGFuay5odG1s
Ci1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0
NDQvY29tbW9uL2JsYW5rLmh0bWwKIAogUEFTUyBUZXN0IHRoYXQgbG9jYWwgc2NoZW1lIHdvcmtl
cnMgaW5oZXJpdCBDT0VQOiByZXF1aXJlLWNvcnAgZnJvbSB0aGUgY3JlYXRpbmcgZG9jdW1lbnQK
IFBBU1MgYmxvYiBVUkwgZGVkaWNhdGVkIHdvcmtlcjogU2FtZSBvcmlnaW4gc2hvdWxkIGJlIGFs
bG93ZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9jbGFpbS1zaGFyZWQtd29ya2Vy
LWZldGNoLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2NsYWltLXNoYXJl
ZC13b3JrZXItZmV0Y2guaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IGRkMzVhYWUyNWY3N2ZlNDQ1
MTYzYjE5NDZiYmI2MzIzNGNmMjBmZDcuLjkwZDkxYWQ1MTAxZjUxMGQ0YjRlNDcyOTVhNmM2MDdk
MGQ4ZmJjNzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2NsYWltLXNoYXJlZC13b3Jr
ZXItZmV0Y2guaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2NsYWlt
LXNoYXJlZC13b3JrZXItZmV0Y2guaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsNCBAQAog
Ci1QQVNTIGZldGNoKCkgaW4gU2hhcmVkV29ya2VyIHNob3VsZCBiZSBpbnRlcmNlcHRlZCBhZnRl
ciB0aGUgY2xpZW50IGlzIGNsYWltZWQuCisKK0ZBSUwgZmV0Y2goKSBpbiBTaGFyZWRXb3JrZXIg
c2hvdWxkIGJlIGludGVyY2VwdGVkIGFmdGVyIHRoZSBjbGllbnQgaXMgY2xhaW1lZC4gYXNzZXJ0
X2VxdWFsczogZmV0Y2goKSBpbiB0aGUgc2hhcmVkIHdvcmtlciBzaG91bGQgYmUgaW50ZXJjZXB0
ZWQuIGV4cGVjdGVkICJJbnRlcmNlcHRlZCEiIGJ1dCBnb3QgImEgc2ltcGxlIHRleHQgZmlsZVxu
IgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29y
a2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50eHQKaW5kZXggZTgxMzM4MDBkMmNhYTZhOTYyOGU5
NTk0ZmI3ODIxNDcxNzg0NDBlNS4uZmQyZGYwZmU2MDlhNjRmZjQzZWI1ODRkNDQzZWZiMDZlN2Rl
NGRiYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlci1zY3JpcHQtZXJyb3ItZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFy
ZWRXb3JrZXItc2NyaXB0LWVycm9yLWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDMgQEAKLUNPTlNP
TEUgTUVTU0FHRTogRXJyb3I6IGFzc2VydF91bnJlYWNoZWQ6IEZBSUw6IG9uZXJyb3IgaW52b2tl
ZCBmb3IgYSBzY3JpcHQgZXJyb3IuIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQotCi1IYXJuZXNz
IEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IEVycm9yOiBhc3NlcnRfdW5yZWFjaGVkOiBGQUlMOiBv
bmVycm9yIGludm9rZWQgZm9yIGEgc2NyaXB0IGVycm9yLiBSZWFjaGVkIHVucmVhY2hhYmxlIGNv
ZGUKIAogUEFTUyBUZXN0IHNjcmlwdCBlcnJvciB1bmhhbmRsZWQuCiBQQVNTIFRlc3Qgc2NyaXB0
IGVycm9yIGhhbmRsZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyX2RhdGFVcmwtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1No
YXJlZFdvcmtlcl9kYXRhVXJsLWV4cGVjdGVkLnR4dAppbmRleCA5OTVhMDYwMTliODQ4ZDQzNjdh
YjViY2E5OGY4NjIyODFkMWJiYzhiLi45YjU4MjBhYWU4Y2IzMzNkODgwNTlhNDYxYWQxYmVhN2Q0
NTY2MGE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyX2RhdGFVcmwtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRX
b3JrZXJfZGF0YVVybC1leHBlY3RlZC50eHQKQEAgLTEsMTMgKzEsNSBAQAotQ09OU09MRSBNRVNT
QUdFOiBFcnJvcjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290IDEKIAogCi1IYXJu
ZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IEVycm9yOiBhc3NlcnRfZXF1YWxzOiBleHBlY3Rl
ZCAyIGJ1dCBnb3QgMQotCi1QQVNTIERhdGEgVVJMIG5vdCBzaGFyZWQgYnkgY3Jvc3Mtb3JpZ2lu
IFNoYXJlZFdvcmtlcnMKLVRJTUVPVVQgRGF0YSBVUkxzIHNoYXJlZCBieSBzYW1lLW9yaWdpbiBT
aGFyZWRXb3JrZXJzIFRlc3QgdGltZWQgb3V0Ci0KLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNz
YWdlID0gRXJyb3I6IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDIgYnV0IGdvdCAxCi0KIFBBU1Mg
RGF0YSBVUkwgbm90IHNoYXJlZCBieSBjcm9zcy1vcmlnaW4gU2hhcmVkV29ya2VycwotVElNRU9V
VCBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtlcnMgVGVzdCB0aW1l
ZCBvdXQKK1BBU1MgRGF0YSBVUkxzIHNoYXJlZCBieSBzYW1lLW9yaWdpbiBTaGFyZWRXb3JrZXJz
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1ibG9iLXVybC53aW5kb3ctZXhw
ZWN0ZWQudHh0CmluZGV4IDU3NmU2ZDJiN2VkMmZhNzAyM2NmMjNiOTZhMDY5MWZkNWFiY2EwNTku
LjRhMjZiZTkyOWE4ZDc1MjUwOGI0ZjdmNzVjMDdiM2VhOGVkYzhjYWYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVz
L3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVs
ZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAt
MSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEu
bG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1z
Y3JpcHQucHkKIAogUEFTUyBTdGF0aWMgaW1wb3J0LgogRkFJTCBTdGF0aWMgaW1wb3J0IChjcm9z
cy1vcmlnaW4pLiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTog
IkltcG9ydGluZyBhIG1vZHVsZSBzY3JpcHQgZmFpbGVkLiIKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJl
ZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9z
aGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0Cmlu
ZGV4IDRmODY0MWU1MTQ4MGYwMTMwNjc1YjkxMzY0ZWNjNGYwZmEyNzIwYTkuLjI5OTdmN2UxZjMw
OGU4MDgxOTdkYzhkNDgyMDQ5ZDUzY2FiNGYzYmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3Jr
ZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hh
cmVkLXdvcmtlci1pbXBvcnQtZGF0YS11cmwtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dApAQCAt
MSw0ICsxLDMgQEAKLUNPTlNPTEUgTUVTU0FHRTogT3JpZ2luIG51bGwgaXMgbm90IGFsbG93ZWQg
YnkgQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luLiBTdGF0dXMgY29kZTogMjAwCiAKIEhhcm5l
c3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFy
ZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVk
LXdvcmtlci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dAppbmRleCBlYWM3Zjk1
ZGU2ZjJkODdjN2IyMTNkZmVjYWIxMzg4YzY4ODRkYzFkLi5jYmMwNDI5ZTBjNzE3MzUyODBlZmI0
NDQ0Y2NiYWE4MjEzNjhkZjExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1k
YXRhLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0
LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFj
Y2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQzL3dvcmtlcnMv
bW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LW9uLWxvYWQtc2NyaXB0LnB5CiAKIEhhcm5lc3MgRXJy
b3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29y
a2VyLWltcG9ydC1mYWlsdXJlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0
LWZhaWx1cmUtZXhwZWN0ZWQudHh0CmluZGV4IDRlOWU1MTkzNzJiYjFmNTE5NTJmMzI1ODBiMDRi
NzkzOGFkODc1NjkuLmQwNDkwMzU5Y2U3ZmJmYzQzODYzMDhkMGY0MzM3ZWI4ZGFiMmU5OTIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWZhaWx1cmUtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWZhaWx1cmUtZXhwZWN0ZWQudHh0CkBAIC0xLDkg
KzEsOCBAQAotQ09OU09MRSBNRVNTQUdFOiBDYW5ub3QgbG9hZCBzdGF0aWMtaW1wb3J0LXdvcmtl
ci5qcy4KIAogUEFTUyBpbXBvcnRTY3JpcHRzKCkgb24gbW9kdWxlIHdvcmtlciBzaG91bGQgdGhy
b3cgYW4gZXhjZXB0aW9uLgogUEFTUyBXb3JrZXIgY29uc3RydWN0aW9uIGZvciBub24tZXhpc3Rl
bnQgc2NyaXB0IHNob3VsZCBkaXNwYXRjaCBhbiBFcnJvckV2ZW50LgogUEFTUyBTdGF0aWMgaW1w
b3J0IGZvciBub24tZXhpc3RlbnQgc2NyaXB0IHNob3VsZCBkaXNwYXRjaCBhbiBFcnJvckV2ZW50
LgogUEFTUyBEeW5hbWljIGltcG9ydCBmb3Igbm9uLWV4aXN0ZW50IHNjcmlwdCBzaG91bGQgdGhy
b3cgYW4gZXhjZXB0aW9uLgogUEFTUyBTaGFyZWRXb3JrZXIgY29uc3RydWN0aW9uIGZvciBhbiBp
bnZhbGlkIFVSTCBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uLgotRkFJTCBTaGFyZWRXb3JrZXIg
Y29uc3RydWN0aW9uIGZvciBhIGZpbGUgVVJMIHNob3VsZCB0aHJvdyBhbiBleGNlcHRpb24uIGFz
c2VydF90aHJvd3NfZG9tOiBmdW5jdGlvbiAiKCkgPT4gbmV3IFNoYXJlZFdvcmtlcihzY3JpcHRV
UkwsIHsgdHlwZTogJ21vZHVsZScgfSkiIGRpZCBub3QgdGhyb3cKK1BBU1MgU2hhcmVkV29ya2Vy
IGNvbnN0cnVjdGlvbiBmb3IgYSBmaWxlIFVSTCBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uLgog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1yZWZlcnJlci1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
bW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1yZWZlcnJlci1leHBlY3RlZC50eHQKaW5kZXgg
ZmUxYjlkOTNjMDgwMTFiNTBlOTQxZjRlMTIzNjA2N2FiYmQzZjIzZS4uN2I0ZWU4YzE5ZWQzOWQw
YzBhN2E1MzI2MmUwZjBiZmQzOTYyM2E2YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1p
bXBvcnQtcmVmZXJyZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0
LXJlZmVycmVyLWV4cGVjdGVkLnR4dApAQCAtMSwyMSArMSwxNSBAQAotQmxvY2tlZCBhY2Nlc3Mg
dG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3MS5sb2NhbGhvc3Q6OTQ0My93b3JrZXJzL21vZHVs
ZXMvcmVzb3VyY2VzL2V4cG9ydC1yZWZlcnJlci1jaGVja2VyLnB5Ci1CbG9ja2VkIGFjY2VzcyB0
byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQzL3dvcmtlcnMvbW9kdWxl
cy9yZXNvdXJjZXMvZXhwb3J0LXJlZmVycmVyLWNoZWNrZXIucHkKLUJsb2NrZWQgYWNjZXNzIHRv
IGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVz
L3Jlc291cmNlcy9leHBvcnQtcmVmZXJyZXItY2hlY2tlci5weQotQmxvY2tlZCBhY2Nlc3MgdG8g
ZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3MS5sb2NhbGhvc3Q6OTQ0My93b3JrZXJzL21vZHVsZXMv
cmVzb3VyY2VzL2V4cG9ydC1yZWZlcnJlci1jaGVja2VyLnB5Ci1CbG9ja2VkIGFjY2VzcyB0byBl
eHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQzL3dvcmtlcnMvbW9kdWxlcy9y
ZXNvdXJjZXMvZXhwb3J0LXJlZmVycmVyLWNoZWNrZXIucHkKLUJsb2NrZWQgYWNjZXNzIHRvIGV4
dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jl
c291cmNlcy9leHBvcnQtcmVmZXJyZXItY2hlY2tlci5weQogCiBQQVNTIFNhbWUtb3JpZ2luIHRv
cC1sZXZlbCBtb2R1bGUgc2NyaXB0IGxvYWRpbmcgd2l0aCAibm8tcmVmZXJyZXIiIHJlZmVycmVy
IHBvbGljeQogUEFTUyBTYW1lLW9yaWdpbiB0b3AtbGV2ZWwgbW9kdWxlIHNjcmlwdCBsb2FkaW5n
IHdpdGggIm9yaWdpbiIgcmVmZXJyZXIgcG9saWN5CiBQQVNTIFNhbWUtb3JpZ2luIHRvcC1sZXZl
bCBtb2R1bGUgc2NyaXB0IGxvYWRpbmcgd2l0aCAic2FtZS1vcmlnaW4iIHJlZmVycmVyIHBvbGlj
eQotUEFTUyBTYW1lLW9yaWdpbiBzdGF0aWMgaW1wb3J0IHdpdGggIm5vLXJlZmVycmVyIiByZWZl
cnJlciBwb2xpY3kuCi1QQVNTIFNhbWUtb3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0aCAib3JpZ2lu
IiByZWZlcnJlciBwb2xpY3kuCitGQUlMIFNhbWUtb3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0aCAi
bm8tcmVmZXJyZXIiIHJlZmVycmVyIHBvbGljeS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIiIg
YnV0IGdvdCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMv
c3RhdGljLWltcG9ydC1zYW1lLW9yaWdpbi1yZWZlcnJlci1jaGVja2VyLXdvcmtlci5qcyIKK0ZB
SUwgU2FtZS1vcmlnaW4gc3RhdGljIGltcG9ydCB3aXRoICJvcmlnaW4iIHJlZmVycmVyIHBvbGlj
eS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC8iIGJ1dCBn
b3QgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC93b3JrZXJzL21vZHVsZXMvcmVzb3VyY2VzL3N0YXRp
Yy1pbXBvcnQtc2FtZS1vcmlnaW4tcmVmZXJyZXItY2hlY2tlci13b3JrZXIuanMiCiBQQVNTIFNh
bWUtb3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0aCAic2FtZS1vcmlnaW4iIHJlZmVycmVyIHBvbGlj
eS4KIEZBSUwgQ3Jvc3Mtb3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0aCAibm8tcmVmZXJyZXIiIHJl
ZmVycmVyIHBvbGljeS4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFs
dWU6IG9iamVjdCAiVHlwZUVycm9yOiBUeXBlIGVycm9yIgogRkFJTCBDcm9zcy1vcmlnaW4gc3Rh
dGljIGltcG9ydCB3aXRoICJvcmlnaW4iIHJlZmVycmVyIHBvbGljeS4gcHJvbWlzZV90ZXN0OiBV
bmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBUeXBlIGVy
cm9yIgogRkFJTCBDcm9zcy1vcmlnaW4gc3RhdGljIGltcG9ydCB3aXRoICJzYW1lLW9yaWdpbiIg
cmVmZXJyZXIgcG9saWN5LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2
YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiCi1GQUlMIFNhbWUtb3JpZ2luIGR5
bmFtaWMgaW1wb3J0IHdpdGggIm5vLXJlZmVycmVyIiByZWZlcnJlciBwb2xpY3kuIGFzc2VydF9l
cXVhbHM6IGV4cGVjdGVkICIiIGJ1dCBnb3QgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC93b3JrZXJz
L21vZHVsZXMvcmVzb3VyY2VzL2R5bmFtaWMtaW1wb3J0LXNhbWUtb3JpZ2luLXJlZmVycmVyLWNo
ZWNrZXItd29ya2VyLmpzIgotRkFJTCBTYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydCB3aXRoICJv
cmlnaW4iIHJlZmVycmVyIHBvbGljeS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9s
b2NhbGhvc3Q6ODgwMC8iIGJ1dCBnb3QgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC93b3JrZXJzL21v
ZHVsZXMvcmVzb3VyY2VzL2R5bmFtaWMtaW1wb3J0LXNhbWUtb3JpZ2luLXJlZmVycmVyLWNoZWNr
ZXItd29ya2VyLmpzIgorUEFTUyBTYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydCB3aXRoICJuby1y
ZWZlcnJlciIgcmVmZXJyZXIgcG9saWN5LgorUEFTUyBTYW1lLW9yaWdpbiBkeW5hbWljIGltcG9y
dCB3aXRoICJvcmlnaW4iIHJlZmVycmVyIHBvbGljeS4KIFBBU1MgU2FtZS1vcmlnaW4gZHluYW1p
YyBpbXBvcnQgd2l0aCAic2FtZS1vcmlnaW4iIHJlZmVycmVyIHBvbGljeS4KIEZBSUwgQ3Jvc3Mt
b3JpZ2luIGR5bmFtaWMgaW1wb3J0IHdpdGggIm5vLXJlZmVycmVyIiByZWZlcnJlciBwb2xpY3ku
IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5
cGVFcnJvcjogVHlwZSBlcnJvciIKIEZBSUwgQ3Jvc3Mtb3JpZ2luIGR5bmFtaWMgaW1wb3J0IHdp
dGggIm9yaWdpbiIgcmVmZXJyZXIgcG9saWN5LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWpl
Y3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
bW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hh
cmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4dAppbmRleCA1NzZlNmQyYjdlZDJm
YTcwMjNjZjIzYjk2YTA2OTFmZDVhYmNhMDU5Li40YTI2YmU5MjlhOGQ3NTI1MDhiNGY3Zjc1YzA3
YjNlYThlZGM4Y2FmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ct
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3Rl
ZC50eHQKQEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0
cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQzL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0
LW9uLWxvYWQtc2NyaXB0LnB5CiAKIFBBU1MgU3RhdGljIGltcG9ydC4KIEZBSUwgU3RhdGljIGlt
cG9ydCAoY3Jvc3Mtb3JpZ2luKS4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdp
dGggdmFsdWU6ICJJbXBvcnRpbmcgYSBtb2R1bGUgc2NyaXB0IGZhaWxlZC4iCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9k
dWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMv
c2hhcmVkLXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAppbmRleCBlMWJl
ZGY1NDMwZWZlNzVhNTlhM2M0OTg5YzU1ZDZmZjZjMTk2NTFhLi5hNzBmMDVhZjU0ZjRiYmY2MjUy
ZDdlNmJlOWUwMmE3ODdlMTFmYmFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlv
bnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9u
cy1jcmVkZW50aWFscy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFjY2Vz
cyB0byBleHRlcm5hbCBVUkwgaHR0cDovL3d3dzEubG9jYWxob3N0Ojg4MDAvd29ya2Vycy9tb2R1
bGVzL3Jlc291cmNlcy9leHBvcnQtY3JlZGVudGlhbHMucHkKIAogSGFybmVzcyBFcnJvciAoVElN
RU9VVCksIG1lc3NhZ2UgPSBudWxsCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vy
cy8wMDQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwNC1leHBlY3RlZC50
eHQKaW5kZXggMDE4ZGI2MDQ1NjlkMDZmMjcyMWM4Y2IzOTQ2ZjYwOGE0ZGM2ZTk4Yi4uY2ZlNDY1
NTY3NWNkMDQ5YWI3YTVlYjkxYjY3ZGRhOGViNTBkZGI0NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwNC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJz
LzAwNC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSwzIEBACiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVP
VVQpLCBtZXNzYWdlID0gbnVsbAotCi1OT1RSVU4gc2hhcmVkIHdvcmtlciB3aXRoIG11bHRpcGxl
IGRvY3VtZW50cworUEFTUyBzaGFyZWQgd29ya2VyIHdpdGggbXVsdGlwbGUgZG9jdW1lbnRzCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8wMDgtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGlj
cy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKaW5kZXggOTdhNGU3YTczYTYzZmRj
NmUzMjAyMTI3M2FmYzgzM2MwMWIyYjQ3MC4uMDlmNjcyZDFjNjIxN2EwYzViYTMxZmVjNjRkMmI5
MzVjNTM4ZmUyZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKQEAgLTEs
NSArMSwzIEBACiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1U
SU1FT1VUIG1lc3NhZ2VjaGFubmVsIGluIHNoYXJlZCB3b3JrZXIgVGVzdCB0aW1lZCBvdXQKK1BB
U1MgbWVzc2FnZWNoYW5uZWwgaW4gc2hhcmVkIHdvcmtlcgogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3Jl
cG9ydGluZy1lcnJvcnMvMDAzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvcmVwb3J0aW5nLWVycm9ycy8w
MDMtZXhwZWN0ZWQudHh0CmluZGV4IGY4ZjZlZWMzNDQzN2QzZWRlNTdiODZiZmFkMzdiYmJkNzU3
MGVlOGQuLmE1NjFmYzNjZGJhYzkyZjAzM2FiOTVmMGU3N2RjZGYzYWZkYjM3ZmUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9z
ZW1hbnRpY3MvcmVwb3J0aW5nLWVycm9ycy8wMDMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvcmVw
b3J0aW5nLWVycm9ycy8wMDMtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIHNo
YXJlZCB3b3JrZXIsIG5vIGVycm9yIGV2ZW50IG9uIHdvcmtlciBvciBwb3J0IGFzc2VydF91bnJl
YWNoZWQ6IGVycm9yIG9uIHdvcmtlciBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK1BBU1Mgc2hh
cmVkIHdvcmtlciwgbm8gZXJyb3IgZXZlbnQgb24gd29ya2VyIG9yIHBvcnQKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3Nl
bWFudGljcy9yZXBvcnRpbmctZXJyb3JzLzAwNC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3JlcG9ydGlu
Zy1lcnJvcnMvMDA0LWV4cGVjdGVkLnR4dAppbmRleCA0NzEzZjdmMDY5YjVjMmU3MGYyNDAxNThh
ODNhMTgwZTZkNDFhMDM2Li4yMzA0NzcyMmY3MTMwMjgxOTNkODkxMWM5ODdlM2YwOTI2MDFlZjRj
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2VtYW50aWNzL3JlcG9ydGluZy1lcnJvcnMvMDA0LWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2Vt
YW50aWNzL3JlcG9ydGluZy1lcnJvcnMvMDA0LWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAK
IAotRkFJTCBzaGFyZWQgd29ya2VyIGluIHR3byBkb2N1bWVudHMgYW5kIHdpbmRvdy5vbmVycm9y
IGFzc2VydF91bnJlYWNoZWQ6IChvdXRlcikgZXJyb3Igb24gd29ya2VyIFJlYWNoZWQgdW5yZWFj
aGFibGUgY29kZQorUEFTUyBzaGFyZWQgd29ya2VyIGluIHR3byBkb2N1bWVudHMgYW5kIHdpbmRv
dy5vbmVycm9yCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dApp
bmRleCBhMDg5YzIyNDg5ZTJkNjY3OGU1YjI0ZTJmZmVmZTAyNDNjMWVhOGNkLi4xOWU0NmIwOWE1
NmFjODMzNTMzZDU3YjIwMWE5ZTYwMDA0ODdiMGM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9t
LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItZnJvbS1ibG9iLXVy
bC53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNSBAQAogCi1IYXJuZXNzIEVycm9yIChU
SU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKLQotRkFJTCBDcmVhdGluZyBhIHNoYXJlZCB3b3JrZXIg
ZnJvbSBhIGJsb2IgVVJMIHdvcmtzLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAid29ya2VyX09L
XzIiIGJ1dCBnb3QgIndvcmtlcl9PS18xIgorUEFTUyBDcmVhdGluZyBhIHNoYXJlZCB3b3JrZXIg
ZnJvbSBhIGJsb2IgVVJMIHdvcmtzLgogUEFTUyBDcmVhdGluZyBhIHNoYXJlZCB3b3JrZXIgZnJv
bSBhIGJsb2IgVVJMIHdvcmtzIGltbWVkaWF0ZWx5IGJlZm9yZSByZXZva2luZy4KLVRJTUVPVVQg
Q29ubmVjdGluZyB0byBhIHNoYXJlZCB3b3JrZXIgb24gYSByZXZva2VkIGJsb2IgVVJMIHdvcmtz
LiBUZXN0IHRpbWVkIG91dAorUEFTUyBDb25uZWN0aW5nIHRvIGEgc2hhcmVkIHdvcmtlciBvbiBh
IHJldm9rZWQgYmxvYiBVUkwgd29ya3MuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWluLWRhdGEt
dXJsLWNvbnRleHQud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWluLWRhdGEtdXJsLWNv
bnRleHQud2luZG93LWV4cGVjdGVkLnR4dAppbmRleCAyMDZmNTZlMGQxMDdhNjVhYzA2ZjVjYTVk
NGNlZjdjYjg2YmY0YWNkLi4wNWU2NmEzYzc2MDFhYjdkNDBlYjZhZWRiMWNiZWFhZTA2OTNjNGE1
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1pbi1kYXRhLXVybC1jb250ZXh0LndpbmRvdy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL3NoYXJlZC13b3JrZXItaW4tZGF0YS11cmwtY29udGV4dC53aW5kb3ctZXhwZWN0ZWQu
dHh0CkBAIC0xLDQgKzEsNSBAQAorQ09OU09MRSBNRVNTQUdFOiBDYW5ub3QgbG9hZCBodHRwOi8v
bG9jYWxob3N0Ojg4MDAvd29ya2Vycy9zdXBwb3J0L3Bvc3QtbWVzc2FnZS1vbi1sb2FkLXdvcmtl
ci5qcy4KIAotRkFJTCBDcmVhdGUgYSBzaGFyZWQgd29ya2VyIGluIGEgZGF0YSB1cmwgZnJhbWUg
YXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIlBBU1MiIGJ1dCBnb3QgIlNoYXJlZFdvcmtlciBjb25z
dHJ1Y3Rpb24gdW5leHBlY3RlZGx5IHN5bmNocm9ub3VzbHkgZmFpbGVkIgotRkFJTCBDcmVhdGUg
YSBkYXRhIHVybCBzaGFyZWQgd29ya2VyIGluIGEgZGF0YSB1cmwgZnJhbWUgYXNzZXJ0X2VxdWFs
czogZXhwZWN0ZWQgIlBBU1MiIGJ1dCBnb3QgIlNoYXJlZFdvcmtlciBjb25zdHJ1Y3Rpb24gdW5l
eHBlY3RlZGx5IHN5bmNocm9ub3VzbHkgZmFpbGVkIgorUEFTUyBDcmVhdGUgYSBzaGFyZWQgd29y
a2VyIGluIGEgZGF0YSB1cmwgZnJhbWUKK1BBU1MgQ3JlYXRlIGEgZGF0YSB1cmwgc2hhcmVkIHdv
cmtlciBpbiBhIGRhdGEgdXJsIGZyYW1lCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlh
LW9wdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy1leHBlY3Rl
ZC50eHQKaW5kZXggNmZmZWUyNzM5MGQ5NzhlNGU2YjU2OTFmOGRiYTdlM2VlZDBhODMyZC4uYWU0
NWI0ZDI3Mzk2NDQ2OTNjMmMxNjQ5NzVjNTNkNTY2YmJhMjhmNSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3Jr
ZXItbmFtZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEt
b3B0aW9ucy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgVGVzdCB0aGUgbmFt
ZSBwcm9wZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBtaXhpbmcgY29uc3RydWN0b3Igb3B0aW9ucyBh
bmQgY29uc3RydWN0b3Igc3RyaW5ncyBFcnJvcjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBi
dXQgZ290IDEKK1BBU1MgVGVzdCB0aGUgbmFtZSBwcm9wZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBt
aXhpbmcgY29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29uc3RydWN0b3Igc3RyaW5ncwogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvc2hhcmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2Vy
LW9wdGlvbnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CmluZGV4IGY2NTY5NDYxNTBkYjE3YzA5YmJj
NGFlM2VkYTg1OGY5MTczZWQ2ZTEuLjRmOTlhMTM0MDllN2U4Njg0NGI1NTE4YzUxMGMzMDhmZGZl
NjA3MjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CkBAIC0xLDI4ICsx
LDI2IEBACiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1USU1F
T1VUIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNo
b3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIG1vZHVsZSBUZXN0IHRpbWVkIG91dAotTk9UUlVO
IENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3Vs
ZCBiZSBibG9ja2VkOiBtb2R1bGUgdG8gZGVmYXVsdAotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hh
cmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBjbGFz
c2ljIHRvIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRp
ZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBtb2R1bGUgdG8gY2xhc3NpYwotTk9U
UlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNo
b3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIG9taXQgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5l
Y3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBi
bG9ja2VkOiBkZWZhdWx0IHRvIGluY2x1ZGUgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBvbWl0IHRvIGRlZmF1bHQgaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVk
IHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRv
IHNhbWUtb3JpZ2luIGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3Jr
ZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBpbmNs
dWRlIGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBp
biBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVy
ZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIGluY2x1ZGUgaW4g
Y2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVu
dCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIGRlZmF1bHQgaW4gY2xhc3Np
YwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gY2xhc3NpYwotTk9UUlVO
IENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3Vs
ZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIHNhbWUtb3JpZ2luIGluIGNsYXNzaWMKLU5PVFJVTiBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogZGVmYXVsdCB0byBvbWl0IGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3Rpbmcg
dG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2Vk
OiBkZWZhdWx0IHRvIGluY2x1ZGUgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQg
dG8gZGVmYXVsdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIg
d2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBzYW1lLW9y
aWdpbiBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBpbmNsdWRlIGluIG1v
ZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBvbWl0IGluIG1vZHVsZQot
Tk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25z
IHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIG1vZHVsZQotTk9U
UlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNo
b3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIGRlZmF1bHQgaW4gbW9kdWxlCi1OT1RSVU4gQ29u
bmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJl
IGJsb2NrZWQ6IGluY2x1ZGUgdG8gb21pdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRv
IHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDog
aW5jbHVkZSB0byBzYW1lLW9yaWdpbiBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1
bHQgdG8gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZl
cmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBtb2R1bGUgdG8gZGVmYXVsdAorUEFTUyBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogY2xhc3NpYyB0byBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQg
d29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG1vZHVsZSB0
byBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVu
dCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIG9taXQgaW4gY2xhc3NpYwor
UEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBz
aG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBpbmNsdWRlIGluIGNsYXNzaWMKK1BBU1MgQ29u
bmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJl
IGJsb2NrZWQ6IG9taXQgdG8gZGVmYXVsdCBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8g
c2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBv
bWl0IHRvIHNhbWUtb3JpZ2luIGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQg
d29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8g
aW5jbHVkZSBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBvbWl0
IGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVy
ZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIGluY2x1ZGUgaW4g
Y2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQg
b3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGluIGNsYXNzaWMK
K1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMg
c2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gb21pdCBpbiBjbGFzc2ljCitQQVNTIENvbm5l
Y3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBi
bG9ja2VkOiBpbmNsdWRlIHRvIHNhbWUtb3JpZ2luIGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGlu
ZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2Nr
ZWQ6IGRlZmF1bHQgdG8gb21pdCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQg
d29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQg
dG8gaW5jbHVkZSBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdp
dGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gZGVmYXVsdCBp
biBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50
IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gc2FtZS1vcmlnaW4gaW4gbW9kdWxl
CitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25z
IHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGluY2x1ZGUgaW4gbW9kdWxlCitQQVNTIENvbm5l
Y3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBi
bG9ja2VkOiBzYW1lLW9yaWdpbiB0byBvbWl0IGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRv
IHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDog
c2FtZS1vcmlnaW4gdG8gaW5jbHVkZSBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1
ZGUgdG8gZGVmYXVsdCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2Vy
IHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gb21p
dCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVy
ZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gc2FtZS1vcmlnaW4gaW4g
bW9kdWxlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMveGhyL29wZW4tdXJsLXJlZGlyZWN0ZWQtc2hhcmVkd29ya2VyLW9yaWdpbi1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3ho
ci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0Cmlu
ZGV4IDFlMmQzOTkyZjZkNWRmMzIyMDdhNmIwZjYxOWE2ZDcxMTgxMjQwMGQuLjU5Y2FjYTQ4NmY4
ZGVhYzA3ODljOTdiNGZlZThhNTI1OTdhNWU1NDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL29wZW4tdXJsLXJlZGlyZWN0ZWQtc2hh
cmVkd29ya2VyLW9yaWdpbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3Jr
ZXItb3JpZ2luLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRv
IGV4dGVybmFsIFVSTCBodHRwOi8vd3d3Mi5sb2NhbGhvc3Q6ODgwMC94aHIvcmVzb3VyY2VzL2lu
c3BlY3QtaGVhZGVycy5weT9maWx0ZXJfbmFtZT1vcmlnaW4mY29ycwogCiBGQUlMIFJlZmVyZXIg
aGVhZGVyIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJSZWZlcmVyOiBodHRwOi8vbG9jYWxob3N0
Ojg4MDAveGhyL3Jlc291cmNlcy93b3JrZXJ4aHItb3JpZ2luLXJlZmVycmVyLmpzXG4iIGJ1dCBn
b3QgIlJlZmVyZXI6IGh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC94aHIvcmVzb3VyY2VzL3JlZGlyZWN0
LnB5P2xvY2F0aW9uPXdvcmtlcnhoci1vcmlnaW4tcmVmZXJyZXIuanNcbiIKIEZBSUwgT3JpZ2lu
IGhlYWRlciBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiT3JpZ2luOiBodHRwOi8vbG9jYWxob3N0
Ojg4MDBcbiIgYnV0IGdvdCAiIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
Y29ubmVjdC1zcmMvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1hbGxvd2VkLnN1Yi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9zaGFyZWQtd29ya2Vy
LWNvbm5lY3Qtc3JjLWFsbG93ZWQuc3ViLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDdiZWJk
Y2ZjZWZlMWQzYjhhYjFlMDVkZjJhZTU2YjgzYTgwNjY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvY29ubmVjdC1zcmMvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNy
Yy1hbGxvd2VkLnN1Yi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgRXhwZWN0
aW5nIGxvZ3M6IFsieGhyIGFsbG93ZWQiLCJURVNUIENPTVBMRVRFIl0KKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItY29ubmVj
dC1zcmMuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13
b3JrZXIvc2hhcmVkd29ya2VyLWNvbm5lY3Qtc3JjLnN1Yi1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjM3NzhiYmE0NjlkYmQ5MGVkNjU5ODJhNjI0ZGZhYjY1NzkzNTRiOAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2Vy
LWNvbm5lY3Qtc3JjLnN1Yi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorCitIYXJuZXNz
IEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKKworVElNRU9VVCBzaGFyZWR3b3JrZXIt
Y29ubmVjdC1zcmMgVGVzdCB0aW1lZCBvdXQKK1BBU1MgU2FtZS1vcmlnaW4gJ2ZldGNoKCknIGlu
IGh0dHA6IHdpdGhvdXQgQ1NQCitQQVNTIFNhbWUtb3JpZ2luIFhIUiBpbiBodHRwOiB3aXRob3V0
IENTUAorUEFTUyBDcm9zcy1vcmlnaW4gJ2ZldGNoKCknIGluIGh0dHA6IHdpdGhvdXQgQ1NQCitQ
QVNTIENyb3NzLW9yaWdpbiBYSFIgaW4gaHR0cDogd2l0aG91dCBDU1AKK1BBU1MgU2FtZS1vcmln
aW4gPT4gY3Jvc3Mtb3JpZ2luICdmZXRjaCgpJyBpbiBodHRwOiB3aXRob3V0IENTUAorUEFTUyBT
YW1lLW9yaWdpbiAnZmV0Y2goKScgaW4gaHR0cDogd2l0aCBjb25uZWN0LXNyYyAnc2VsZicKK1BB
U1MgU2FtZS1vcmlnaW4gWEhSIGluIGh0dHA6IHdpdGggY29ubmVjdC1zcmMgJ3NlbGYnCitUSU1F
T1VUIENyb3NzLW9yaWdpbiAnZmV0Y2goKScgaW4gaHR0cDogd2l0aCBjb25uZWN0LXNyYyAnc2Vs
ZicgVGVzdCB0aW1lZCBvdXQKK05PVFJVTiBDcm9zcy1vcmlnaW4gWEhSIGluIGh0dHA6IHdpdGgg
Y29ubmVjdC1zcmMgJ3NlbGYnCitOT1RSVU4gU2FtZS1vcmlnaW4gPT4gY3Jvc3Mtb3JpZ2luICdm
ZXRjaCgpJyBpbiBodHRwOiB3aXRoIGNvbm5lY3Qtc3JjICdzZWxmJworTk9UUlVOIFJlcG9ydHMg
bWF0Y2ggaW4gaHR0cDogd2l0aCBjb25uZWN0LXNyYyAnc2VsZicKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9u
bHkuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3Jr
ZXIvc2hhcmVkd29ya2VyLXJlcG9ydC1vbmx5LnN1Yi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Nzc3Y2VkNDUxZTJjZDMyNDMwNDhiOTc1MDYyMGZlYjIxNDU3MDE0NgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXJl
cG9ydC1vbmx5LnN1Yi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorCitIYXJuZXNzIEVy
cm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKKworUEFTUyBTYW1lLW9yaWdpbiAnZmV0Y2go
KScuCitQQVNTIFNhbWUtb3JpZ2luIFhIUi4KK1RJTUVPVVQgQ3Jvc3Mtb3JpZ2luICdmZXRjaCgp
Jy4gVGVzdCB0aW1lZCBvdXQKK05PVFJVTiBDcm9zcy1vcmlnaW4gWEhSLgorTk9UUlVOIFNhbWUt
b3JpZ2luID0+IGNyb3NzLW9yaWdpbiAnZmV0Y2goKScuCitOT1RSVU4gY29ubmVjdC1zcmMtc2Vs
Zi1yZXBvcnQtb25seQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNp
ZGUtd29ya2VyL3NoYXJlZHdvcmtlci1zY3JpcHQtc3JjLnN1Yi1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1zY3JpcHQtc3Jj
LnN1Yi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzdkY2U1NTAwYTdiMTkwOWQ2ZDg5MWY3OGMy
NjM3OTMyZjI3MmNiZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDEyIEBACisKK0hhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVs
bAorCitUSU1FT1VUIHNoYXJlZHdvcmtlci1zY3JpcHQtc3JjIFRlc3QgdGltZWQgb3V0CitQQVNT
IENyb3NzLW9yaWdpbiBgaW1wb3J0U2NyaXB0cygpYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRo
b3VyIENTUAorUEFTUyBgZXZhbCgpYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3V0IENTUAor
UEFTUyBgc2V0VGltZW91dChbc3RyaW5nXSlgIG5vdCBibG9ja2VkIGluIGh0dHA6IHdpdGhvdXQg
Q1NQCitUSU1FT1VUIENyb3NzLW9yaWdpbiBgaW1wb3J0U2NyaXB0cygpYCBibG9ja2VkIGluIGh0
dHA6IHdpdGggc2NyaXB0LXNyYyAnc2VsZicgVGVzdCB0aW1lZCBvdXQKK05PVFJVTiBgZXZhbCgp
YCBibG9ja2VkIGluIGh0dHA6IHdpdGggc2NyaXB0LXNyYyAnc2VsZicKK05PVFJVTiBgc2V0VGlt
ZW91dChbc3RyaW5nXSlgIGJsb2NrZWQgaW4gaHR0cDogd2l0aCBzY3JpcHQtc3JjICdzZWxmJwor
Tk9UUlVOIFJlcG9ydHMgYXJlIHNlbnQgZm9yIGh0dHA6IHdpdGggc2NyaXB0LXNyYyAnc2VsZicK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2It
dXJsLndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1p
bXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTE5Y2QxZjY5
NDczMjc1YThkNmFhMjVjN2U3OTZlM2I1MmQxMTY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMSBAQAorCitQQVNTIFN0YXRpYyBpbXBvcnQuCitQQVNTIFN0YXRpYyBp
bXBvcnQgKGNyb3NzLW9yaWdpbikuCitQQVNTIFN0YXRpYyBpbXBvcnQgKHJlZGlyZWN0KS4KK1BB
U1MgTmVzdGVkIHN0YXRpYyBpbXBvcnQuCitQQVNTIFN0YXRpYyBpbXBvcnQgYW5kIHRoZW4gZHlu
YW1pYyBpbXBvcnQuCitQQVNTIER5bmFtaWMgaW1wb3J0LgorUEFTUyBOZXN0ZWQgZHluYW1pYyBp
bXBvcnQuCitQQVNTIER5bmFtaWMgaW1wb3J0IGFuZCB0aGVuIHN0YXRpYyBpbXBvcnQuCitQQVNT
IGV2YWwoaW1wb3J0KCkpLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdv
cmtlci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxl
cy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmUzNmMwNDlmODI1NmNkM2U2YjA5YWMzYTRjZjhhNmZhMTA3NTVjYTUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11cmwu
d2luZG93LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACisKK0hhcm5lc3MgRXJyb3IgKFRJ
TUVPVVQpLCBtZXNzYWdlID0gbnVsbAorCitQQVNTIFN0YXRpYyBpbXBvcnQuCitQQVNTIFN0YXRp
YyBpbXBvcnQgKGNyb3NzLW9yaWdpbikuCitUSU1FT1VUIFN0YXRpYyBpbXBvcnQgKHJlZGlyZWN0
KS4gVGVzdCB0aW1lZCBvdXQKK05PVFJVTiBOZXN0ZWQgc3RhdGljIGltcG9ydC4KK05PVFJVTiBT
dGF0aWMgaW1wb3J0IGFuZCB0aGVuIGR5bmFtaWMgaW1wb3J0LgorTk9UUlVOIER5bmFtaWMgaW1w
b3J0LgorTk9UUlVOIE5lc3RlZCBkeW5hbWljIGltcG9ydC4KK05PVFJVTiBEeW5hbWljIGltcG9y
dCBhbmQgdGhlbiBzdGF0aWMgaW1wb3J0LgorTk9UUlVOIGV2YWwoaW1wb3J0KCkpLgorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtcmVmZXJyZXItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LXJlZmVycmVy
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OWY0N2U2NmNiYTQ0YjE0OWE1YTcwNjQ3NzhiOTFm
MTAxYzA2NWRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3Jr
ZXItaW1wb3J0LXJlZmVycmVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACisKK1BBU1Mg
U2FtZS1vcmlnaW4gdG9wLWxldmVsIG1vZHVsZSBzY3JpcHQgbG9hZGluZyB3aXRoICJuby1yZWZl
cnJlciIgcmVmZXJyZXIgcG9saWN5CitQQVNTIFNhbWUtb3JpZ2luIHRvcC1sZXZlbCBtb2R1bGUg
c2NyaXB0IGxvYWRpbmcgd2l0aCAib3JpZ2luIiByZWZlcnJlciBwb2xpY3kKK1BBU1MgU2FtZS1v
cmlnaW4gdG9wLWxldmVsIG1vZHVsZSBzY3JpcHQgbG9hZGluZyB3aXRoICJzYW1lLW9yaWdpbiIg
cmVmZXJyZXIgcG9saWN5CitGQUlMIFNhbWUtb3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0aCAibm8t
cmVmZXJyZXIiIHJlZmVycmVyIHBvbGljeS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIiIgYnV0
IGdvdCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvc3Rh
dGljLWltcG9ydC1zYW1lLW9yaWdpbi1yZWZlcnJlci1jaGVja2VyLXdvcmtlci5qcyIKK0ZBSUwg
U2FtZS1vcmlnaW4gc3RhdGljIGltcG9ydCB3aXRoICJvcmlnaW4iIHJlZmVycmVyIHBvbGljeS4g
YXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC8iIGJ1dCBnb3Qg
Imh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC93b3JrZXJzL21vZHVsZXMvcmVzb3VyY2VzL3N0YXRpYy1p
bXBvcnQtc2FtZS1vcmlnaW4tcmVmZXJyZXItY2hlY2tlci13b3JrZXIuanMiCitQQVNTIFNhbWUt
b3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0aCAic2FtZS1vcmlnaW4iIHJlZmVycmVyIHBvbGljeS4K
K0ZBSUwgQ3Jvc3Mtb3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0aCAibm8tcmVmZXJyZXIiIHJlZmVy
cmVyIHBvbGljeS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIiIgYnV0IGdvdCAiaHR0cDovL2xv
Y2FsaG9zdDo4ODAwLyIKK1BBU1MgQ3Jvc3Mtb3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0aCAib3Jp
Z2luIiByZWZlcnJlciBwb2xpY3kuCitGQUlMIENyb3NzLW9yaWdpbiBzdGF0aWMgaW1wb3J0IHdp
dGggInNhbWUtb3JpZ2luIiByZWZlcnJlciBwb2xpY3kuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
ICIiIGJ1dCBnb3QgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC8iCitQQVNTIFNhbWUtb3JpZ2luIGR5
bmFtaWMgaW1wb3J0IHdpdGggIm5vLXJlZmVycmVyIiByZWZlcnJlciBwb2xpY3kuCitQQVNTIFNh
bWUtb3JpZ2luIGR5bmFtaWMgaW1wb3J0IHdpdGggIm9yaWdpbiIgcmVmZXJyZXIgcG9saWN5Lgor
UEFTUyBTYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydCB3aXRoICJzYW1lLW9yaWdpbiIgcmVmZXJy
ZXIgcG9saWN5LgorUEFTUyBDcm9zcy1vcmlnaW4gZHluYW1pYyBpbXBvcnQgd2l0aCAibm8tcmVm
ZXJyZXIiIHJlZmVycmVyIHBvbGljeS4KK1BBU1MgQ3Jvc3Mtb3JpZ2luIGR5bmFtaWMgaW1wb3J0
IHdpdGggIm9yaWdpbiIgcmVmZXJyZXIgcG9saWN5LgorUEFTUyBDcm9zcy1vcmlnaW4gZHluYW1p
YyBpbXBvcnQgd2l0aCAic2FtZS1vcmlnaW4iIHJlZmVycmVyIHBvbGljeS4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42NTE5Y2QxZjY5NDczMjc1YThkNmFhMjVjN2U3OTZlM2I1MmQxMTY5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0
LndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorCitQQVNTIFN0YXRpYyBpbXBv
cnQuCitQQVNTIFN0YXRpYyBpbXBvcnQgKGNyb3NzLW9yaWdpbikuCitQQVNTIFN0YXRpYyBpbXBv
cnQgKHJlZGlyZWN0KS4KK1BBU1MgTmVzdGVkIHN0YXRpYyBpbXBvcnQuCitQQVNTIFN0YXRpYyBp
bXBvcnQgYW5kIHRoZW4gZHluYW1pYyBpbXBvcnQuCitQQVNTIER5bmFtaWMgaW1wb3J0LgorUEFT
UyBOZXN0ZWQgZHluYW1pYyBpbXBvcnQuCitQQVNTIER5bmFtaWMgaW1wb3J0IGFuZCB0aGVuIHN0
YXRpYyBpbXBvcnQuCitQQVNTIGV2YWwoaW1wb3J0KCkpLgorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmEyYjE4YjUyNDkyODA3ZDZkOWUwNzllZjk5YjQ1MGE1OTkyZGFk
MjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRp
b25zLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM1IEBACisKK1BBU1MgVGVz
dCBpbml0aWFsaXphdGlvbjogc2V0dGluZyB1cCBjcm9zcy1vcmlnaW4gY29va2llCitQQVNTIG5l
dyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBkZWZhdWx0IGNyZWRlbnRpYWxz
IG9wdGlvbiBzaG91bGQgYmVoYXZlIGFzIGNyZWRlbnRpYWxzPXNhbWUtb3JpZ2luIGFuZCBzZW5k
IHRoZSBjcmVkZW50aWFscworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVs
ZSBhbmQgY3JlZGVudGlhbHM9b21pdCBzaG91bGQgbm90IHNlbmQgdGhlIGNyZWRlbnRpYWxzCitQ
QVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBjcmVkZW50aWFscz1z
YW1lLW9yaWdpbiBzaG91bGQgc2VuZCB0aGUgY3JlZGVudGlhbHMKK1BBU1MgbmV3IFNoYXJlZFdv
cmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPWluY2x1ZGUgc2hvdWxkIHNl
bmQgdGhlIGNyZWRlbnRpYWxzCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9k
dWxlIGFuZCBkZWZhdWx0IGNyZWRlbnRpYWxzIG9wdGlvbiBzaG91bGQgYmVoYXZlIGFzIGNyZWRl
bnRpYWxzPXNhbWUtb3JpZ2luIGFuZCBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3Igc2FtZS1vcmln
aW4gc3RhdGljIGltcG9ydHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1
bGUgYW5kIGNyZWRlbnRpYWxzPW9taXQgc2hvdWxkIG5vdCBzZW5kIHRoZSBjcmVkZW50aWFscyBm
b3Igc2FtZS1vcmlnaW4gc3RhdGljIGltcG9ydHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdp
dGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPXNhbWUtb3JpZ2luIHNob3VsZCBzZW5kIHRo
ZSBjcmVkZW50aWFscyBmb3Igc2FtZS1vcmlnaW4gc3RhdGljIGltcG9ydHMKK1BBU1MgbmV3IFNo
YXJlZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPWluY2x1ZGUgc2hv
dWxkIHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBzYW1lLW9yaWdpbiBzdGF0aWMgaW1wb3J0cwor
UEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQgZGVmYXVsdCBjcmVk
ZW50aWFscyBvcHRpb24gc2hvdWxkIGJlaGF2ZSBhcyBjcmVkZW50aWFscz1zYW1lLW9yaWdpbiBh
bmQgbm90IHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gc3RhdGljIGltcG9y
dHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRp
YWxzPW9taXQgc2hvdWxkIG5vdCBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3IgY3Jvc3Mtb3JpZ2lu
IHN0YXRpYyBpbXBvcnRzCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxl
IGFuZCBjcmVkZW50aWFscz1zYW1lLW9yaWdpbiBzaG91bGQgbm90IHNlbmQgdGhlIGNyZWRlbnRp
YWxzIGZvciBjcm9zcy1vcmlnaW4gc3RhdGljIGltcG9ydHMKK0ZBSUwgbmV3IFNoYXJlZFdvcmtl
cigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPWluY2x1ZGUgc2hvdWxkIHNlbmQg
dGhlIGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gc3RhdGljIGltcG9ydHMgYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgIjEiIGJ1dCBnb3QgIiIKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdp
dGggdHlwZT1tb2R1bGUgYW5kIGRlZmF1bHQgY3JlZGVudGlhbHMgb3B0aW9uIHNob3VsZCBiZWhh
dmUgYXMgY3JlZGVudGlhbHM9c2FtZS1vcmlnaW4gYW5kIHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZv
ciBzYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdp
dGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPW9taXQgc2hvdWxkIG5vdCBzZW5kIHRoZSBj
cmVkZW50aWFscyBmb3Igc2FtZS1vcmlnaW4gZHluYW1pYyBpbXBvcnRzCitQQVNTIG5ldyBTaGFy
ZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBjcmVkZW50aWFscz1zYW1lLW9yaWdpbiBz
aG91bGQgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2luIGR5bmFtaWMgaW1wb3J0
cworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQgY3JlZGVudGlh
bHM9aW5jbHVkZSBzaG91bGQgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2luIGR5
bmFtaWMgaW1wb3J0cworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVsZSBh
bmQgZGVmYXVsdCBjcmVkZW50aWFscyBvcHRpb24gc2hvdWxkIGJlaGF2ZSBhcyBjcmVkZW50aWFs
cz1zYW1lLW9yaWdpbiBhbmQgbm90IHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmln
aW4gZHluYW1pYyBpbXBvcnRzCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9k
dWxlIGFuZCBjcmVkZW50aWFscz1vbWl0IHNob3VsZCBub3Qgc2VuZCB0aGUgY3JlZGVudGlhbHMg
Zm9yIGNyb3NzLW9yaWdpbiBkeW5hbWljIGltcG9ydHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigp
IHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPXNhbWUtb3JpZ2luIHNob3VsZCBub3Qg
c2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIGNyb3NzLW9yaWdpbiBkeW5hbWljIGltcG9ydHMKK0ZB
SUwgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPWlu
Y2x1ZGUgc2hvdWxkIHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gZHluYW1p
YyBpbXBvcnRzIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIxIiBidXQgZ290ICIiCitQQVNTIG5l
dyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9Y2xhc3NpYyBzaG91bGQgYWx3YXlzIHNlbmQgdGhl
IGNyZWRlbnRpYWxzIHJlZ2FyZGxlc3Mgb2YgdGhlIGNyZWRlbnRpYWxzIG9wdGlvbiAoZGVmYXVs
dCkuCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9Y2xhc3NpYyBzaG91bGQgYWx3
YXlzIHNlbmQgdGhlIGNyZWRlbnRpYWxzIHJlZ2FyZGxlc3Mgb2YgdGhlIGNyZWRlbnRpYWxzIG9w
dGlvbiAob21pdCkuCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9Y2xhc3NpYyBz
aG91bGQgYWx3YXlzIHNlbmQgdGhlIGNyZWRlbnRpYWxzIHJlZ2FyZGxlc3Mgb2YgdGhlIGNyZWRl
bnRpYWxzIG9wdGlvbiAoc2FtZS1vcmlnaW4pLgorUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0
aCB0eXBlPWNsYXNzaWMgc2hvdWxkIGFsd2F5cyBzZW5kIHRoZSBjcmVkZW50aWFscyByZWdhcmRs
ZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKGluY2x1ZGUpLgorUEFTUyBuZXcgU2hhcmVk
V29ya2VyKCkgd2l0aCB0eXBlPWNsYXNzaWMgc2hvdWxkIGFsd2F5cyBzZW5kIHRoZSBjcmVkZW50
aWFscyBmb3Igc2FtZS1vcmlnaW4gZHluYW1pYyBpbXBvcnRzIHJlZ2FyZGxlc3Mgb2YgdGhlIGNy
ZWRlbnRpYWxzIG9wdGlvbiAoZGVmYXVsdCkuCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRo
IHR5cGU9Y2xhc3NpYyBzaG91bGQgYWx3YXlzIHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBzYW1l
LW9yaWdpbiBkeW5hbWljIGltcG9ydHMgcmVnYXJkbGVzcyBvZiB0aGUgY3JlZGVudGlhbHMgb3B0
aW9uIChvbWl0KS4KK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1jbGFzc2ljIHNo
b3VsZCBhbHdheXMgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2luIGR5bmFtaWMg
aW1wb3J0cyByZWdhcmRsZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKHNhbWUtb3JpZ2lu
KS4KK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1jbGFzc2ljIHNob3VsZCBhbHdh
eXMgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2luIGR5bmFtaWMgaW1wb3J0cyBy
ZWdhcmRsZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKGluY2x1ZGUpLgorUEFTUyBuZXcg
U2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPWNsYXNzaWMgc2hvdWxkIG5ldmVyIHNlbmQgdGhlIGNy
ZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gZHluYW1pYyBpbXBvcnRzIHJlZ2FyZGxlc3Mgb2Yg
dGhlIGNyZWRlbnRpYWxzIG9wdGlvbiAoZGVmYXVsdCkuCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIo
KSB3aXRoIHR5cGU9Y2xhc3NpYyBzaG91bGQgbmV2ZXIgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9y
IGNyb3NzLW9yaWdpbiBkeW5hbWljIGltcG9ydHMgcmVnYXJkbGVzcyBvZiB0aGUgY3JlZGVudGlh
bHMgb3B0aW9uIChvbWl0KS4KK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1jbGFz
c2ljIHNob3VsZCBuZXZlciBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3IgY3Jvc3Mtb3JpZ2luIGR5
bmFtaWMgaW1wb3J0cyByZWdhcmRsZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKHNhbWUt
b3JpZ2luKS4KK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1jbGFzc2ljIHNob3Vs
ZCBuZXZlciBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3IgY3Jvc3Mtb3JpZ2luIGR5bmFtaWMgaW1w
b3J0cyByZWdhcmRsZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKGluY2x1ZGUpLgorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4t
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlNTNmMmZmMmQ1ZTA4YWQyOThjNjI3YzcwMzc0NDE5
ZjdkYjE5MzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFy
ZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKworRkFJTCBSZWZl
cmVyIGhlYWRlciBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiUmVmZXJlcjogaHR0cDovL2xvY2Fs
aG9zdDo4ODAwL3hoci9yZXNvdXJjZXMvd29ya2VyeGhyLW9yaWdpbi1yZWZlcnJlci5qc1xuIiBi
dXQgZ290ICJSZWZlcmVyOiBodHRwOi8vbG9jYWxob3N0Ojg4MDAveGhyL3Jlc291cmNlcy9yZWRp
cmVjdC5weT9sb2NhdGlvbj13b3JrZXJ4aHItb3JpZ2luLXJlZmVycmVyLmpzXG4iCitQQVNTIE9y
aWdpbiBoZWFkZXIKK1BBU1MgUmVxdWVzdCBVUkwgdGVzdAorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYTcyN2RlYmExNDNiMjU3Njc4ZjVl
YzhkYjY0NTcwZWFhYzQ2YTJhZS4uOWM3MmU0NGYwMjlmZDgyZWRkODkxYzAwNGIyM2EzZDk3YWJk
ZjFkMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0
YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9u
cwpAQCAtMjI0LDYgKzIyNCw3IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9zZW1hbnRpY3MveGhyLzAwMy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3hoci8wMDQuaHRtbCBbIFNraXAgXQogaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy94aHIvMDA2Lmh0
bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFy
ZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2luZG93Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWluLWRhdGEtdXJsLWNv
bnRleHQud2luZG93Lmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMuaHRtbCBbIFNraXAgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItb3B0
aW9ucy1taXNtYXRjaC5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1wYXJzZS1lcnJvci1mYWlsdXJlLmh0bWwgWyBTa2lw
IF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNDczNjA3
ZjkwOTFlMWI5NTBjNjE5NmQxMzdiOTQ1NDdiMTk4ZDJhNi4uNDE0MzY4NzgxYWZhOTA0ZTcwNGE3
YTMwYzJmZTVmNjZkNDc2ZWIzMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTMzNiw2ICszMzYsNyBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvc2VtYW50aWNzL3hoci8wMDMuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy94aHIvMDA0Lmh0bWwgWyBTa2lw
IF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MveGhy
LzAwNi5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRvdy5odG1sIFsgU2tpcCBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1pbi1kYXRh
LXVybC1jb250ZXh0LndpbmRvdy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25zLmh0bWwgWyBT
a2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29y
a2VyLW9wdGlvbnMtbWlzbWF0Y2guaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItcGFyc2UtZXJyb3ItZmFpbHVyZS5odG1s
IFsgU2tpcCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451136</attachid>
            <date>2022-02-07 12:11:12 -0800</date>
            <delta_ts>2022-02-07 16:19:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235958-20220207121111.patch</filename>
            <type>text/plain</type>
            <size>323871</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTQxYmY0NzMyNWMzZDJm
YzRkZThmMzgwZjMyYzZkYmU1NzAwYTkxYS4uODU5ZWUxZmYzZjM4ZTk5NDFhYTAxMmQ5NmY1MDQ3
YTU3ZDZhNmE0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMSBAQAorMjAyMi0wMi0wNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBz
aGFyaW5nIFNoYXJlZCBXb3JrZXJzIChpbmNsdWRpbmcgYWNyb3NzIFdlYlByb2Nlc3NlcykKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTk1OAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vODgzMzA2NjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNoYXJpbmcgU2hhcmVkIFdvcmtl
cnMsIGluY2x1ZGluZyBhY3Jvc3MgV2ViUHJvY2Vzc2VzLiBUaGUgYXJjaGl0ZWN0dXJlCisgICAg
ICAgIGlzIG1vZGVsZWQgYWZ0ZXIgdGhlIG9uZSB3ZSB1c2UgZm9yIFNlcnZpY2UgV29ya2VycyBz
aW5jZSB0aGV5IGFyZSB2ZXJ5IHNpbWlsYXIuIEkgdHJpZWQKKyAgICAgICAgc2hhcmluZyBhcyBt
dWNoIGNvZGUgYXMgcG9zc2libGUgd2l0aCBTZXJ2aWNlIFdvcmtlcnMgYnV0IHNvbWUgbW9yZSB3
b3JrIGNhbiBwcm9iYWJseSBiZQorICAgICAgICBkb25lIGluIHRoaXMgYXJlYS4KKworICAgICAg
ICBXaXRoIHRoaXMgY2hhbmdlLCBzaGFyZWQgd29ya2VycyBzaG91bGQgYmUgbW9zdGx5IGZ1bmN0
aW9uYWwgYW5kIHNwZWMgY29tcGxpYW50LiBIb3dldmVyLAorICAgICAgICB0aGUgZmVhdHVyZSBy
ZW1haW5zIGRpc2FibGVkIGJ5IGRlZmF1bHQgZm9yIG5vdyBhcyB0aGVyZSBhcmUgc3RpbGwgV1BU
IHRlc3RzIGZhaWx1cmVzIEkKKyAgICAgICAgbmVlZCB0byBpbnZlc3RpZ2F0ZS4gQWxzbywgSSBu
ZWVkIHRvIGltcGxlbWVudCBhIGJldHRlciBwcm9jZXNzIHN1c3BlbnNpb24gbG9naWMgb24gaU9T
CisgICAgICAgIHRvIHJlcGxhY2UgdGhlIGhhY2sgSSBhZGRlZCBpbiB0aGlzIHBhdGNoICh0byBt
YWtlIHRoZSB0ZXN0cyBydW4gcmVsaWFibHkgb24gaU9TKS4KKworICAgICAgICBBcyB3aXRoIFNl
cnZpY2UgV29ya2VycywgU2hhcmVkIFdvcmtlcnMgYXJlIHBhcnRpdGlvbmVkIGJ5IChUb3AgT3Jp
Z2luICsgRnJhbWUgT3JpZ2luKQorICAgICAgICBmb3IgcHJpdmFjeSByZWFzb25zLiBUaGlzIGlz
IGFjaGlldmVkIHZpYSB0aGUgU2hhcmVkV29ya2VyS2V5IG9iamVjdCB0aGF0IHdlIHVzZSBhcwor
ICAgICAgICBIYXNoTWFwIGtleS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkg
ZXhpc3RpbmcgV1BUIHRlc3RzLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAg
KiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGxhdGZvcm0vTG9nZ2luZy5oOgorICAgICAgICAqIHdvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXI6OmZy
b21JZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6U2hhcmVkV29ya2VyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6flNoYXJlZFdvcmtlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRXb3JrZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkV29ya2VyOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZFdvcmtlcjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXI6OnRlcm1pbmF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyLmg6CisgICAgICAgICogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmlkbDoKKyAg
ICAgICAgKiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk6Omhhc2ggY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkV29ya2VyS2V5OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkV29ya2VyS2V5OjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6Cisg
ICAgICAgIChXVEY6OkRlZmF1bHRIYXNoPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleT46Omhhc2gp
OgorICAgICAgICAoV1RGOjpEZWZhdWx0SGFzaDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk+Ojpl
cXVhbCk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5
Pjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJD
b3JlOjpTaGFyZWRXb3JrZXJLZXk+Ojppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgICogd29ya2Vy
cy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5jcHA6IFJlbW92ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkV29ya2VyTWFuYWdlcjo6Y29ubmVjdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzY3JpcHRMb2FkRmFpbGVkKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlck1hbmFnZXI6OnNjcmlwdExvYWRlZFN1
Y2Nlc3NmdWxseSk6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyTWFuYWdlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbjo6ZmV0Y2hTY3JpcHRJbkNsaWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRD
b21wbGV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdCk6CisgICAgICAgICogd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAuCisg
ICAgICAgICogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hhcmVkV29ya2VyU2Ny
aXB0TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6
bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6Om5vdGlm
eUZpbmlzaGVkKToKKyAgICAgICAgKiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRM
b2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6b3B0
aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6
OmlkZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyOjpvcHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrZXJzL3No
YXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaGFyZWRXb3JrZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0
b3BTaGFyZWRXb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXI6OnN0b3BBbGxTaGFyZWRXb3JrZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyOjpzZXRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpjb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpyZWdpc3RlclNoYXJlZFdvcmtlclRo
cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29u
bmVjdGlvbjo6cG9zdENvbm5lY3RFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6dGVybWluYXRlU2hhcmVkV29ya2VyKToKKyAg
ICAgICAgKiB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6
OkNvbm5lY3Rpb246On5Db25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uOjppc0Nsb3NlZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6c2V0QXNDbG9z
ZWQpOgorICAgICAgICAqIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFk
UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2VuZXJhdGVXb3JrZXJQYXJhbWV0ZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpTaGFyZWRXb3JrZXJU
aHJlYWRQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6
flNoYXJlZFdvcmtlclRocmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtl
clRocmVhZFByb3h5Ojpub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eTo6Y3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tUb0xvYWRlcik6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJUaHJlYWRQcm94eTo6bmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6c3RhcnRXb3JrZXJHbG9iYWxTY29wZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6dGVybWlu
YXRlV29ya2VyR2xvYmFsU2NvcGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
V29ya2VyVGhyZWFkUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tU
b1dvcmtlckdsb2JhbFNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdv
cmtlclRocmVhZFByb3h5OjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Ondvcmtlck9iamVjdERlc3Ry
b3llZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eTo6c3VzcGVuZEZvckJhY2tGb3J3YXJkQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnJlc3VtZUZvckJhY2tGb3J3YXJkQ2FjaGUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Ondvcmtl
ckdsb2JhbFNjb3BlRGVzdHJveWVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpjb25maXJtTWVzc2Fn
ZUZyb21Xb3JrZXJPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29y
a2VyVGhyZWFkUHJveHk6OnJlcG9ydFBlbmRpbmdBY3Rpdml0eSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6d29ya2VyR2xvYmFsU2NvcGVEZXN0
cm95ZWRJbnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zaGFyZWQvY29udGV4
dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oOgorCiAyMDIyLTAyLTA3ICBBbnRvaW5lIFF1aW50
ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtjc3MtbG9naWNhbF0gW3dlYi1hbmlt
YXRpb25zXSBBZGQgc3VwcG9ydCBmb3IgbG9naWNhbCBwcm9wZXJ0aWVzIGluIEpTLW9yaWdpbmF0
ZWQgYW5pbWF0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4NGYzY2NjZGE4YmI4MzExNjE0ZmRiMWM5ODJmZmJi
NTI0MWI2MjViLi4zZjNiNzFiODUwMmYzZmE5OWZkMzFjMjU0YTVjYjQwZDZmNWY3N2Q1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE5NiBAQAorMjAyMi0wMi0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBzaGFyaW5nIFNoYXJlZCBXb3Jr
ZXJzIChpbmNsdWRpbmcgYWNyb3NzIFdlYlByb2Nlc3NlcykKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTk1OAorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vODgzMzA2NjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIHNoYXJpbmcgU2hhcmVkIFdvcmtlcnMsIGluY2x1ZGluZyBhY3Jv
c3MgV2ViUHJvY2Vzc2VzLiBUaGUgYXJjaGl0ZWN0dXJlCisgICAgICAgIGlzIG1vZGVsZWQgYWZ0
ZXIgdGhlIG9uZSB3ZSB1c2UgZm9yIFNlcnZpY2UgV29ya2VycyBzaW5jZSB0aGV5IGFyZSB2ZXJ5
IHNpbWlsYXIuIEkgdHJpZWQKKyAgICAgICAgc2hhcmluZyBhcyBtdWNoIGNvZGUgYXMgcG9zc2li
bGUgd2l0aCBTZXJ2aWNlIFdvcmtlcnMgYnV0IHNvbWUgbW9yZSB3b3JrIGNhbiBwcm9iYWJseSBi
ZQorICAgICAgICBkb25lIGluIHRoaXMgYXJlYS4KKworICAgICAgICBXaXRoIHRoaXMgY2hhbmdl
LCBzaGFyZWQgd29ya2VycyBzaG91bGQgYmUgbW9zdGx5IGZ1bmN0aW9uYWwgYW5kIHNwZWMgY29t
cGxpYW50LiBIb3dldmVyLAorICAgICAgICB0aGUgZmVhdHVyZSByZW1haW5zIGRpc2FibGVkIGJ5
IGRlZmF1bHQgZm9yIG5vdyBhcyB0aGVyZSBhcmUgc3RpbGwgV1BUIHRlc3RzIGZhaWx1cmVzIEkK
KyAgICAgICAgbmVlZCB0byBpbnZlc3RpZ2F0ZS4gQWxzbywgSSBuZWVkIHRvIGltcGxlbWVudCBh
IGJldHRlciBwcm9jZXNzIHN1c3BlbnNpb24gbG9naWMgb24gaU9TCisgICAgICAgIHRvIHJlcGxh
Y2UgdGhlIGhhY2sgSSBhZGRlZCBpbiB0aGlzIHBhdGNoICh0byBtYWtlIHRoZSB0ZXN0cyBydW4g
cmVsaWFibHkgb24gaU9TKS4KKworICAgICAgICBBcyB3aXRoIFNlcnZpY2UgV29ya2VycywgU2hh
cmVkIFdvcmtlcnMgYXJlIHBhcnRpdGlvbmVkIGJ5IChUb3AgT3JpZ2luICsgRnJhbWUgT3JpZ2lu
KQorICAgICAgICBmb3IgcHJpdmFjeSByZWFzb25zLiBUaGlzIGlzIGFjaGlldmVkIHZpYSB0aGUg
U2hhcmVkV29ya2VyS2V5IG9iamVjdCB0aGF0IHdlIHVzZSBhcworICAgICAgICBIYXNoTWFwIGtl
eS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Om1fc2NoZW1lUmVnaXN0cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6fk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENs
b3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVz
dGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Y2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU2hhcmVkV29ya2Vy
Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpzaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRl
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzaGFy
ZWRXb3JrZXJDb25uZWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246
OmVuc3VyZVNoYXJlZFdvcmtlclNlcnZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OnNoYXJlZFdv
cmtlclNlcnZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNo
YXJlZFdvcmtlci5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwLgorICAgICAgICAoV2ViS2l0
OjpXZWJTaGFyZWRXb3JrZXI6OldlYlNoYXJlZFdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNoYXJlZFdvcmtlcjo6fldlYlNoYXJlZFdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNo
YXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRX
b3JrZXI6OnJlZ2lzdHJhYmxlRG9tYWluIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJTaGFyZWRXb3JrZXI6OmlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTaGFyZWRXb3JrZXI6OmtleSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdv
cmtlcjo6d29ya2VyT3B0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdv
cmtlcjo6b3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyOjp1
cmwgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OnNoYXJlZFdvcmtl
ck9iamVjdHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OmlzUnVubmluZyBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6bWFya0FzUnVubmluZyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6ZmV0Y2hSZXN1bHQgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OnNldEZldGNoUmVzdWx0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyOjpkaWRGaW5pc2hGZXRjaGluZyBjb25zdCk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZl
ci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6Oldl
YlNoYXJlZFdvcmtlclNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNl
cnZlcjo6c2Vzc2lvbklEKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVy
OjpyZXF1ZXN0U2hhcmVkV29ya2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2Vy
U2VydmVyOjpkaWRGaW5pc2hGZXRjaGluZ1NoYXJlZFdvcmtlclNjcmlwdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6bmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJl
Z2lzdHJhYmxlRG9tYWluIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2Vy
U2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNo
YXJlZFdvcmtlclNlcnZlcjo6YWRkQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpjb250ZXh0Q29ubmVjdGlvbkNyZWF0
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNoYXJlZFdvcmtl
ck9iamVjdElzR29pbmdBd2F5KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2Vy
dmVyOjpzaHV0RG93blNoYXJlZFdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdv
cmtlclNlcnZlcjo6YWRkQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdv
cmtlclNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJl
ZFdvcmtlclNlcnZlcjo6Y29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbiBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cG9zdEV4Y2VwdGlv
blRvV29ya2VyT2JqZWN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyU2VydmVyLmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OldlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjp+V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246Om1lc3Nh
Z2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbjo6c2Vzc2lvbklEKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OnJlcXVlc3RTaGFyZWRXb3JrZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpzaGFyZWRXb3Jr
ZXJPYmplY3RJc0dvaW5nQXdheSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNl
cnZlckNvbm5lY3Rpb246OmZldGNoU2NyaXB0SW5DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRD
b21wbGV0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6c2Vy
dmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6
c2VydmVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbjo6d2ViUHJvY2Vzc0lkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp3ZWJQcm9jZXNzSWRlbnRpZmllciBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OmlwY0Nvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbiBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlv
bklzTm9Mb25nZXJOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjps
YXVuY2hTaGFyZWRXb3JrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpwb3N0Q29ubmVjdEV2ZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlU2hh
cmVkV29ya2VyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogUGxhdGZvcm0vTG9nZ2lu
Zy5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAodHlw
ZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCk6CisgICAgICAgICogU291cmNlcy50
eHQ6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVVucmVzcG9u
c2l2ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxp
c2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2VydmljZVdvcmtlckNvbnRleHRDb25u
ZWN0aW9uTm9Mb25nZXJOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1By
b3h5OjpzaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzZXRVc2VyQWdlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNl
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OmRpc2Nvbm5lY3RQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6dXBkYXRlV29ya2VyVXNlckFnZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OndvcmtlclByb2Nlc3Nlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjppc1NlcnZpY2VXb3JrZXJQYWdlSUQgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6c2VydmljZVdvcmtlclByb3hpZXNDb3VudCBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3Vu
ZEFjdGl2aXR5Rm9yVGVzdGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpoYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZyBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZW1vdmVGcm9tU2VydmljZVdvcmtl
clByb2Nlc3Nlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBkYXRlU2VydmljZVdvcmtlclVz
ZXJBZ2VudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
TWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXRXb3JrZXJV
c2VyQWdlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtl
clByZWZlcmVuY2VzU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVw
ZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UHJveHk6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xp
ZW50UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c3RhcnRTZXJ2
aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlzYWJsZVdvcmtlcnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVdvcmtlcnMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNl
V29ya2VyUHJlZmVyZW5jZXNTdG9yZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQcm94eTo6dXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24pOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpc2FibGVTZXJ2aWNlV29ya2Vy
cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5hYmxlU2Vy
dmljZVdvcmtlcnMpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojppc1J1bm5pbmdTaGFyZWRX
b3JrZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojppc1N0YW5k
YWxvbmVTaGFyZWRXb3JrZXJQcm9jZXNzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Byb3h5Ojppc1J1bm5pbmdXb3JrZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Byb3h5OjpoYXNTZXJ2aWNlV29ya2VyUGFnZVByb3h5KToKKyAgICAgICAgKiBXZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjptX3VzZXJDb250ZW50Q29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6
OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZXN0YWJsaXNoQ29ubmVj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp1cGRhdGVQcmVmZXJlbmNl
c1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpsYXVuY2hTaGFyZWRXb3JrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmNsb3NlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6
IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6V2ViU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb246On5XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6cmVxdWVzdFNoYXJl
ZFdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b246OnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCiAyMDIyLTAyLTA3ICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV2Vi
RHJpdmVyXSBBZGQgc3VwcG9ydCBmb3Igc2hhZG93IHJvb3RzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRl
eCAzZmNlOTVmNTc1NjlkYTczZDUwOTI5YmU1NDJjZmI3NDQ5ZDc5ZDUyLi4zMzJiMDAzMzAyYzNl
Zjk2MmZhNzJmYjNmODg0Y2Y1ZjgyNzFkNDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTE5NjQs
OSArMTk2NCwxMiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
d29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAogICAgIHdvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuaAogICAgIHdvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaAorICAgIHdvcmtlcnMvV29y
a2VyT2JqZWN0UHJveHkuaAorICAgIHdvcmtlcnMvV29ya2VyT3B0aW9ucy5oCiAgICAgd29ya2Vy
cy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCiAgICAgd29ya2Vycy9Xb3JrZXJPcldvcmts
ZXRTY3JpcHRDb250cm9sbGVyLmgKICAgICB3b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5o
CisgICAgd29ya2Vycy9Xb3JrZXJSZXBvcnRpbmdQcm94eS5oCiAgICAgd29ya2Vycy9Xb3JrZXJS
dW5Mb29wLmgKICAgICB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCiAgICAgd29ya2Vycy9X
b3JrZXJTY3JpcHRMb2FkZXJDbGllbnQuaApAQCAtMjAxMCw5ICsyMDEzLDEyIEBAIHNldChXZWJD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyV29ya2VyLmgKIAogICAgIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlcklkZW50
aWZpZXIuaAotICAgIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuaAorICAgIHdv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlcktleS5oCiAgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oCisgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllci5oCiAgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJvdmlk
ZXIuaAorCisgICAgd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlci5oCiAgICAgd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWQuaAog
ICAgIHdvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlk
ZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
SWRlbnRpZmllci5oCmluZGV4IDZjMGIxYjRmMmFiMGMwMzMwNzY2NTRlYTRiMjc2NTU5NDQ1ODk1
MzYuLjE1ZjhiZDI1NTE0NTdkMzI5OTJkNjZiYWNlYWYzNmViNjRkYmEzODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRp
Zmllci5oCkBAIC0yNyw4ICsyNyw2IEBACiAKICNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNTEsMTYgKzQ5LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9kYXRh
YmFzZU5hbWUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKICAgICB9CiAKLSAgICB1bnNpZ25l
ZCBoYXNoKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIG5hbWVIYXNoID0gU3RyaW5n
SGFzaDo6aGFzaChtX2RhdGFiYXNlTmFtZSk7Ci0gICAgICAgIHVuc2lnbmVkIG9yaWdpbkhhc2gg
PSBtX29yaWdpbi5oYXNoKCk7Ci0gICAgICAgIHVuc2lnbmVkIHRyYW5zaWVudEhhc2ggPSBtX2lz
VHJhbnNpZW50OwotCi0gICAgICAgIHVuc2lnbmVkIGhhc2hDb2Rlc1szXSA9IHsgbmFtZUhhc2gs
IG9yaWdpbkhhc2gsIHRyYW5zaWVudEhhc2ggfTsKLSAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2hl
cjo6aGFzaE1lbW9yeTxzaXplb2YoaGFzaENvZGVzKT4oaGFzaENvZGVzKTsKLSAgICB9Ci0KICAg
ICBib29sIGlzVmFsaWQoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICFtX2RhdGFiYXNl
TmFtZS5pc051bGwoKQpAQCAtOTksOCArODcsMTMgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNU
cmFuc2llbnQgeyBmYWxzZSB9OwogfTsKIAoraW5saW5lIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVy
LCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCit7CisgICAgYWRkKGhh
c2hlciwgaWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSwgaWRlbnRpZmllci5vcmlnaW4oKSwgaWRl
bnRpZmllci5pc1RyYW5zaWVudCgpKTsKK30KKwogc3RydWN0IElEQkRhdGFiYXNlSWRlbnRpZmll
ckhhc2ggewotICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRp
ZmllciYgYSkgeyByZXR1cm4gYS5oYXNoKCk7IH0KKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChj
b25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGEpIHsgcmV0dXJuIGNvbXB1dGVIYXNoKGEpOyB9
CiAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBhLCBj
b25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQogICAgIHN0
YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAppbmRleCA4MTRhYTRmZGI4YmQ0ZWYxZWM2YWZjMDViMGU4NDBjZjhmZGVl
MzAzLi4wNzJjNGYyYThmYmRkMjg1YzlmYWI5YTUyMDM3OGM3ZGYwYTljYmQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dApAQCAtMjc4NiwxMCArMjc4NiwxMCBAQCB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuY3BwCiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCiB3b3JrZXJzL3No
YXJlZC9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKLXdvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlck1hbmFnZXIuY3BwCiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwCiB3b3JrZXJz
L3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwCit3b3JrZXJzL3NoYXJlZC9jb250
ZXh0L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcAogd29ya2Vycy9zaGFyZWQvY29udGV4
dC9TaGFyZWRXb3JrZXJUaHJlYWQuY3BwCiB3b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdv
cmtlclRocmVhZFByb3h5LmNwcAogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMzcwZDEwYTkxN2UyNTRkNzdhNGI3MTliMWJlMTEwYmRmMmU5NzZmNi4uNWRhNTUwNjNl
ZWIxN2NmNjQwOTFjMWRiN2VhMGI0OGUxYWFlM2IzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTAzLDcgKzkwMyw3IEBACiAJ
CTJFNDM0NjRCMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZVByb3h5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzOTBGNTQ2
QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oICovOyB9OwogCQkyRTQzNDY0
RDBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyTG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjNCMEY1NDZBODIwMEIwRjFCQSAvKiBX
b3JrZXJMb2NhdGlvbi5oICovOyB9OwogCQkyRTQzNDY1MDBGNTQ2QTgyMDBCMEYxQkEgLyogV29y
a2VyTWVzc2FnaW5nUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJFNDM0NjNFMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJNZXNzYWdpbmdQcm94
eS5oICovOyB9OwotCQkyRTQzNDY1MTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyT2JqZWN0UHJv
eHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0
NjNGMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94eS5oICovOyB9OworCQkyRTQz
NDY1MTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyT2JqZWN0UHJveHkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjNGMEY1NDZBODIwMEIwRjFC
QSAvKiBXb3JrZXJPYmplY3RQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTJFNDM0NjUzMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJSdW5M
b29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQz
NDY0MTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyUnVuTG9vcC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFNDM0NjU1MEY1NDZBODIwMEIwRjFC
QSAvKiBXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJFNDM0NjQzMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJUaHJlYWQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTc1ODQxRTEy
Nzc5QURBMDA2MjYyOEIgLyogRmlsZVJlYWRlckxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU3NTg0MUIxMjc3OUFEQTAwNjI2MjhCIC8qIEZp
bGVSZWFkZXJMb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMTEyNSw3ICsxMTI1LDcgQEAKIAkJNDE2QTA2QTEyM0NDQUQwMzAwMzQ3MTA5
IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZBMDY5NjIzQ0NBQTlGMDAzNDcxMDkgLyogQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZENzVBMjIwQzY1MUE1MDBEMDJEMkMgLyogTmV0d29y
a0xvYWRJbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDE2RDc1OUYyMEM2NDQxMzAwRDAyRDJDIC8qIE5ldHdvcmtMb2FkSW5mb3JtYXRp
b24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
MTZFMEIzQTIwOUJDM0NCMDA0QTk1RDkgLyogRmV0Y2hJZGVudGlmaWVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFMEIzNzIwOUJDM0MyMDA0QTk1
RDkgLyogRmV0Y2hJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJNDE2RTI5QTYxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9y
dGluZ1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTZFMjlBNTEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCAqLzsg
fTsKKwkJNDE2RTI5QTYxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFMjlBNTEw
MkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFODFCQkQxMkRGMDAwQTNG
NjQgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEQ5IC8q
IFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFODFCQkQxMkRGMDAwQTNGNjUgLyog
SlNET01CaW5kaW5nSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjREQSAvKiBKU0RPTUJp
bmRpbmdJbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU4MUJCRDEyREYwMDBBM0Y3NCAvKiBUcmFuc2Zvcm1T
dHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEVBIC8qIFRyYW5zZm9ybVN0cmVh
bUludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTEzNDcsMTQgKzEzNDcsMTYgQEAKIAkJNDY3QTY4RDcyNzVFQTk5MTAw
OUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3QTY4RDQyNzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdv
cmtlclRocmVhZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQ2N0E2OEQ4Mjc1RUE5OTUwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0E2
OEQ1Mjc1RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCAqLzsgfTsK
IAkJNDY3QTY4RDkyNzVFQTk5ODAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdBNjhENjI3
NUVBOThDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk0NjdBNjhEQTI3NUVBOTlDMDA5
QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3QTY4RDIyNzVFQTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdv
cmtlck1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0NjgyRDIwMDFGNzk3ODMwMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODJE
MUZGMUY3OTc4MjMwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODM0NEUwMUVEREZB
QUEwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDY4MzQ0REUxRURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4
M0RGNDAyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODNERjNFMjc2
N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmggKi87IH07CiAJ
CTQ2ODNERjQxMjc2N0U5MUEwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzREYzQjI3NjdE
RjI2MDA3RDAwQzggLyogU2hhZG93UmVhbG1HbG9iYWxTY29wZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODhFRTNDMjZERDI2MTAwMDJBRjVD
NCAvKiBDcm9zc09yaWdpbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2ODhFRTNBMjZERDI2MEMwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0Njk0
M0RDOTI3NjNGODE3MDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5NDNEQzcyNzYz
RjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0Njk4NUYyMzI3QTRBNkFE
MDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk4NUYyMjI3QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVkV29y
a2VyS2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDY5Q0NDRkUyNjlEMDIxQzAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OUNDQ0ZDMjY5RDAyMDIw
MDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY5RDc3QjgyNzAxNjI1MTAwMTQyRkE2IC8qIE5hdmln
YXRpb25SZXF1ZXN0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2OUQ3N0I2MjcwMTYyNTAwMDE0MkZBNiAvKiBOYXZpZ2F0aW9uUmVxdWVzdGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDZBNzhC
MzQyNzk5QkQ3MTAwMTE1NEZFIC8qIFdvcmtlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMUIxRDI2MjZGMThBNEIwMDg4MkRBMiAvKiBX
b3JrZXJPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDZBQUFBM0QyNUQzNjMyMDAwQkFGNDJGIC8qIEF1ZGlvRmlsZVJlYWRlckNvY29h
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkFBQUEz
QTI1RDM2MzE0MDBCQUY0MkYgLyogQXVkaW9GaWxlUmVhZGVyQ29jb2EuaCAqLzsgfTsKIAkJNDZC
NjNGNkMxQzZFOEQxOTAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjYzRjZCMUM2RThDREYwMDJF
OTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCNjUwREQyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJ
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkI2NTBEQjIyOTYyNjI3MDBGRDhBQTQgLyogUGFnZUlkZW50aWZpZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM3NSw2ICsxMzc3LDcg
QEAKIAkJNDZDNjk2Q0MxRTcyMDVGQzAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNjk2Q0ExRTcyMDVFNDAw
NTk3OTM3IC8qIENQVU1vbml0b3IuY3BwICovOyB9OwogCQk0NkM4M0VGRTFBOUJCRTI5MDBBNzlB
NDEgLyogR2VvTm90aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2QzgzRUZDMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2Q0E5QzQ0MUY5
N0JCRTkwMDRDRkMzQSAvKiBWaXNpYmlsaXR5U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Q0E5QzQxMUY5N0JCRTcwMDRDRkMzQSAvKiBWaXNp
YmlsaXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk0NkNGNTA0QTI3QUIxRUE0MDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
Q0Y1MDQ4MjdBQjFFQTEwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2RDAwMDQw
MjZBMEZFQjMwMEQxQkYxRSAvKiBTdWJtaXRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZEMDAwM0UyNkEwRkU2RjAwRDFCRjFFIC8qIFN1Ym1p
dEV2ZW50LmggKi87IH07CiAJCTQ2REE0QTAyMjdBQjAzOTMwMEUzNzVBOCAvKiBUcmFuc2ZlcnJl
ZE1lc3NhZ2VQb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NkRBNEEwMDI3QUIwMzhEMDBFMzc1QTggLyogVHJhbnNmZXJyZWRNZXNzYWdlUG9ydC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2REJC
NjUwMUFCOEM5NkYwMEQ5QTgxMyAvKiBQb3dlck9ic2VydmVyTWFjLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRCQjY0RTFBQjhDOTZGMDBEOUE4MTMg
LyogUG93ZXJPYnNlcnZlck1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC05MjQ3LDggKzkyNTAsNiBAQAogCQk0NjdBNjhDRjI3NUVBOTg5MDA5
QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U2hhcmVkV29ya2VyVGhyZWFkUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjdBNjhEMDI3NUVBOTg5MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlclRocmVhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2N0E2OEQxMjc1RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDY3QTY4RDIyNzVFQTk4QTAwOUIz
MUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2Vy
TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NjdBNjhEMzI3NUVBOThC
MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
aGFyZWRXb3JrZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3
QTY4RDQyNzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTaGFyZWRXb3JrZXJUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDY3QTY4RDUyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDY3QTY4RDYyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRo
cmVhZFByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclRocmVhZFByb3h5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MjY0LDYgKzkyNjUsOCBAQAogCQk0NjgzREYz
RTI3NjdERjk4MDA3RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODhFRTNBMjZERDI2MEMwMDJBRjVD
NCAvKiBDcm9zc09yaWdpbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NPcmlnaW5Nb2RlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OEI4QkRFMjVDQzg0OTMwMEY2NzgyMiAv
KiBKU0Jhc2VBdWRpb0NvbnRleHRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCYXNl
QXVkaW9Db250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5
NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0Njk4NUYyMjI3QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVkV29y
a2VyS2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlcktl
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlDQ0NGQTI2OUQwMjAyMDA2RTAz
MTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCcm9hZGNhc3RD
aGFubmVsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5Q0NDRkMyNjlEMDIw
MjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnJvYWRjYXN0
Q2hhbm5lbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlDQ0NGRDI2OUQwMjAz
MDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQnJvYWRjYXN0Q2hhbm5lbC5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MzA0LDYgKzkzMDcsOCBAQAogCQk0
NkM4M0VGQzFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR2VvTm90aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDZDQTlDNDExRjk3QkJFNzAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaXNpYmlsaXR5U3RhdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDQTlDNDIxRjk3QkJFNzAwNENGQzNBIC8qIFZpc2liaWxp
dHlTdGF0ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVmlzaWJpbGl0eVN0YXRlLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZDRjUwNDgyN0FCMUVBMTAwNzBEQkM4IC8q
IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2Q0Y1MDQ5
MjdBQjFFQTEwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2RDAwMDNDMjZBMEZFNkYwMEQxQkYxRSAvKiBTdWJtaXRFdmVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdWJtaXRFdmVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RDAwMDNFMjZBMEZFNkYwMEQxQkYx
RSAvKiBTdWJtaXRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdWJt
aXRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkQwMDAzRjI2QTBGRTcw
MDBEMUJGMUUgLyogU3VibWl0RXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFN1Ym1p
dEV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNTc2LDYgKzIxNTgx
LDggQEAKIAkJNDY0N0NFNjEyN0FBRTFEQTAwOUNCRDQ4IC8qIGNvbnRleHQgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQ2Q0Y1MDQ5MjdBQjFFQTEwMDcw
REJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAgKi8sCisJCQkJNDZDRjUwNDgy
N0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggKi8sCiAJCQkJ
NDY3QTY4RDAyNzVFQTk4OTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5jcHAgKi8sCiAJ
CQkJNDY3QTY4RDQyNzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5oICovLAog
CQkJCTQ2N0E2OENGMjc1RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5j
cHAgKi8sCkBAIC0yMTU5NSwxMCArMjE2MDIsMTAgQEAKIAkJCQk0NjY5NENFMTI3NTk0NDhDMDBF
MzE1MEUgLyogU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaCAqLywKIAkJCQk0NjY5NENFMDI3NTk0
NDhDMDBFMzE1MEUgLyogU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaWRsICovLAogCQkJCTQ2RUM0
NDQ4MjdBQjMzN0YwMEZGQ0Q5NiAvKiBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmggKi8sCi0JCQkJ
NDY3QTY4RDMyNzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuY3BwICovLAot
CQkJCTQ2N0E2OEQyMjc1RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggKi8s
CisJCQkJNDY5ODVGMjIyN0E0QTY4NjAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktleS5oICovLAog
CQkJCTQ2NjhBMEIzMjdBQjYwMEIwMEM3MjBCQyAvKiBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uLmNwcCAqLywKIAkJCQk0NjY4QTBCMTI3QUI2MDBCMDBDNzIwQkMgLyogU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbi5oICovLAorCQkJCTQ2OTQzREM3Mjc2M0Y4MEUwMDRCNjEwRSAvKiBT
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggKi8sCiAJCQkJNDY2OEEwQjQyN0FCNjAwQzAw
QzcyMEJDIC8qIFNoYXJlZFdvcmtlclByb3ZpZGVyLmNwcCAqLywKIAkJCQk0NjY4QTBCNTI3QUI2
MDBDMDBDNzIwQkMgLyogU2hhcmVkV29ya2VyUHJvdmlkZXIuaCAqLywKIAkJCQk0NjdBNjhEMTI3
NUVBOThBMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcCAqLywKQEAgLTM3
MjE1LDkgKzM3MjIyLDExIEBACiAJCQkJODM0REZBRDAxRjdEQUU1RDAwQzI3MjVCIC8qIFNoYXJl
ZFN0cmluZ0hhc2guaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RUEzMDk5RUI3OEMwMDU2RTU4
MSAvKiBTaGFyZWRUaW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFEQzA0RkUyN0E4M0M5MzAw
OENGOTY4IC8qIFNoYXJlZFZpZGVvRnJhbWVJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkNG
NTA0QTI3QUIxRUE0MDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQ2RUM0NDRBMjdBQjMzODkwMEZGQ0Q5NiAvKiBTaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0NjdBNjhEQTI3NUVBOTlDMDA5QjMxQzUg
LyogU2hhcmVkV29ya2VyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY5ODVGMjMyN0E0
QTZBRDAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktleS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY2
OEEwQjYyN0FCNjAxQjAwQzcyMEJDIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCBp
biBIZWFkZXJzICovLAorCQkJCTQ2OTQzREM5Mjc2M0Y4MTcwMDRCNjEwRSAvKiBTaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjY4QTBCNzI3QUI2MDIx
MDBDNzIwQkMgLyogU2hhcmVkV29ya2VyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2
N0E2OEQ4Mjc1RUE5OTUwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQ2N0E2OEQ3Mjc1RUE5OTEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJU
aHJlYWQuaCBpbiBIZWFkZXJzICovLApAQCAtMzgwNzgsNiArMzgwODcsNyBAQAogCQkJCUUxMjcx
QTBCMEVFRUM3N0EwMEY2MTIxMyAvKiBXb3JrZXJOYXZpZ2F0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1Q0IwNTI1MUZCNTFGM0EwMDA4OUI5NyAvKiBXb3JrZXJOZXR3b3JrQWdlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJFNDM0NjUxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQ
cm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZBNzhCMzQyNzk5QkQ3MTAwMTE1NEZFIC8qIFdv
cmtlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzRDZBQUU2MjUyNEVFMUMwMDQyOEI0
QiAvKiBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM5
QTA5NUQyNTI0RjM3RjAwRUVGMzI4IC8qIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTgzRjZBRUJGMjUyN0JCMEMwMDM0QkNEMyAvKiBXb3JrZXJP
cldvcmtsZXRUaHJlYWQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DbGllbnRPcmlnaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2lu
LmgKaW5kZXggZjQzNDVhZTRhMWMyZTJmZDMwZTdlYzRlMDllZTFiMmMwYWQzNjIwZS4uZWU0N2Nh
YWE4ZDBkZGUzZjg5MTc5YTc1NjMxZWEzNGNiZTM2MzEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVu
dE9yaWdpbi5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiUmVnaXN0cmFibGVEb21haW4u
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFRy
YWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM1LDcgKzM2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogc3RydWN0IENsaWVudE9yaWdpbiB7CiAgICAgc3RhdGljIENsaWVudE9yaWdpbiBlbXB0eUtl
eSgpIHsgcmV0dXJuIHsgfTsgfQogCi0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OwogICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBDbGllbnRPcmlnaW4mKSBjb25zdDsKICAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgQ2xpZW50T3JpZ2luJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9
PSBvdGhlcik7IH0KIApAQCAtNTEsMTMgKzUxLDkgQEAgc3RydWN0IENsaWVudE9yaWdpbiB7CiAg
ICAgU2VjdXJpdHlPcmlnaW5EYXRhIGNsaWVudE9yaWdpbjsKIH07CiAKLWlubGluZSB1bnNpZ25l
ZCBDbGllbnRPcmlnaW46Omhhc2goKSBjb25zdAoraW5saW5lIHZvaWQgYWRkKEhhc2hlciYgaGFz
aGVyLCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKLSAgICB1bnNpZ25lZCBoYXNoZXNb
Ml07Ci0gICAgaGFzaGVzWzBdID0gU2VjdXJpdHlPcmlnaW5EYXRhSGFzaDo6aGFzaCh0b3BPcmln
aW4pOwotICAgIGhhc2hlc1sxXSA9IFNlY3VyaXR5T3JpZ2luRGF0YUhhc2g6Omhhc2goY2xpZW50
T3JpZ2luKTsKLQotICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnkoaGFzaGVzLCBz
aXplb2YoaGFzaGVzKSk7CisgICAgYWRkKGhhc2hlciwgb3JpZ2luLnRvcE9yaWdpbiwgb3JpZ2lu
LmNsaWVudE9yaWdpbik7CiB9CiAKIGlubGluZSBib29sIENsaWVudE9yaWdpbjo6b3BlcmF0b3I9
PShjb25zdCBDbGllbnRPcmlnaW4mIG90aGVyKSBjb25zdApAQCAtOTUsNyArOTEsNyBAQCB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgc3RkOjpvcHRpb25hbDxDbGllbnRPcmlnaW4+IENs
aWVudE9yaWdpbjo6ZGVjb2RlKAogbmFtZXNwYWNlIFdURiB7CiAKIHN0cnVjdCBDbGllbnRPcmln
aW5LZXlIYXNoIHsKLSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQorICAgIHN0YXRpYyB1bnNpZ25l
ZCBoYXNoKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYga2V5KSB7IHJldHVybiBjb21wdXRl
SGFzaChrZXkpOyB9CiAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiBhLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIGIpIHsgcmV0dXJuIGEgPT0g
YjsgfQogICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVk
ID0gZmFsc2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCmluZGV4IGUxNTVl
YzZmMjRhZWQxODgzMGMxODFlZDc5YzRjYjQwMTBkMzE2YmEuLjIwM2JmNmIwODJkZmZiNGNkODRm
OWZjZmQ4YmYwY2IzM2FlMGY1MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgK
QEAgLTE1MCw3ICsxNTAsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5BY2Nlc3NMb2NhbFN0b3Jh
Z2UoY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbikgY29uc3QgeyByZXR1cm4gY2FuQWNj
ZXNzU3RvcmFnZSh0b3BPcmlnaW4pOyB9OwogICAgIGJvb2wgY2FuQWNjZXNzUGx1Z2luU3RvcmFn
ZShjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luKSBjb25zdCB7IHJldHVybiBjYW5BY2Nl
c3NTdG9yYWdlKCZ0b3BPcmlnaW4pOyB9CiAgICAgYm9vbCBjYW5BY2Nlc3NBcHBsaWNhdGlvbkNh
Y2hlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4pIGNvbnN0IHsgcmV0dXJuIGNhbkFj
Y2Vzc1N0b3JhZ2UoJnRvcE9yaWdpbik7IH0KLSAgICBib29sIGNhbkFjY2Vzc1NoYXJlZFdvcmtl
cnMoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbikgY29uc3QgeyByZXR1cm4gY2FuQWNj
ZXNzU3RvcmFnZSgmdG9wT3JpZ2luKTsgfQogICAgIGJvb2wgY2FuQWNjZXNzQ29va2llcygpIGNv
bnN0IHsgcmV0dXJuICFpc1VuaXF1ZSgpOyB9CiAgICAgYm9vbCBjYW5SZXF1ZXN0R2VvbG9jYXRp
b24oKSBjb25zdCB7IHJldHVybiAhaXNVbmlxdWUoKTsgfQogICAgIFBvbGljeSBjYW5TaG93Tm90
aWZpY2F0aW9ucygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRh
LmgKaW5kZXggMzRiOTNkNjhiMjc3M2ZmZTI1ZjgxY2U3NjA2MDk2ZmZiMGNhMjg4OC4uZWZiZmIw
YzkyODIyMThiZTgzMDNkYzc0Y2M3MjAxNjZmMDM5NWIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luRGF0YS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtOTcsNiArOTgsMTEgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0
YSB7CiBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJik7CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZmlyc3QsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYgc2Vjb25kKSB7IHJldHVybiAhKGZpcnN0ID09IHNlY29uZCk7IH0KIAoraW5saW5lIHZvaWQg
YWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGRhdGEpCit7Cisg
ICAgYWRkKGhhc2hlciwgZGF0YS5wcm90b2NvbCwgZGF0YS5ob3N0LCBkYXRhLnBvcnQudmFsdWVf
b3IoMCkpOworfQorCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTZWN1cml0eU9yaWdp
bkRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewpAQCAtMTM3LDE1ICsxNDMs
NyBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhSGFzaFRyYWl0cyA6IFNpbXBsZUNsYXNzSGFz
aFRyYWl0czxTZWN1cml0eU9yaWdpbkRhdGE+CiB9OwogCiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5E
YXRhSGFzaCB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiBkYXRhKQotICAgIHsKLSAgICAgICAgdW5zaWduZWQgaGFzaENvZGVzWzNdID0gewotICAg
ICAgICAgICAgZGF0YS5wcm90b2NvbC5pbXBsKCkgPyBkYXRhLnByb3RvY29sLmltcGwoKS0+aGFz
aCgpIDogMCwKLSAgICAgICAgICAgIGRhdGEuaG9zdC5pbXBsKCkgPyBkYXRhLmhvc3QuaW1wbCgp
LT5oYXNoKCkgOiAwLAotICAgICAgICAgICAgZGF0YS5wb3J0LnZhbHVlX29yKDApCi0gICAgICAg
IH07Ci0gICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKGhhc2hD
b2Rlcyk+KGhhc2hDb2Rlcyk7Ci0gICAgfQorICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgZGF0YSkgeyByZXR1cm4gY29tcHV0ZUhhc2goZGF0YSk7IH0K
ICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGEsIGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgYikgeyByZXR1cm4gYSA9PSBiOyB9CiAgICAgc3RhdGljIGNv
bnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKaW5kZXggYTNjYTJiMmI0NTk4YzBmN2EwNmUyYTIxNjAxNmI3
OGY1NmNkZTFkYi4uNjE3YTkzNjA1YWVjZmE1NmI5ZTc2YzVlYjE5ZWJjY2VhMTY5MDg4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaApAQCAtMTI4LDYgKzEyOCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBNKFdlYkdMKSBcCiAgICAgTShXZWJSVEMpIFwKICAgICBNKFdlYlJUQ1N0
YXRzKSBcCisgICAgTShXb3JrZXIpIFwKICAgICBNKFhSKSBcCiAgICAgTShXaGVlbEV2ZW50VGVz
dE1vbml0b3IpIFwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJU
aHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4
IDhmNzQyNzQ2NzBmNWU2ODRmYTI5ZjBkOTc3YTljYWY3NzYwNDc1NDEuLmZkODU5NjM3NTIwYmI5
OGJkZWZiZjAzNWY0YTg2YzdlMGEwZWEyZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clRocmVhZC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29w
ZS5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdEZldGNoZXIuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9TY3JpcHRDYWxsU3RhY2suaD4KKyNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4K
ICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEz
NCw2ICsxMzUsOCBAQCBib29sIFdvcmtlclRocmVhZDo6c2hvdWxkV2FpdEZvcldlYkluc3BlY3Rv
ck9uU3RhcnR1cCgpIGNvbnN0CiAKIHZvaWQgV29ya2VyVGhyZWFkOjpldmFsdWF0ZVNjcmlwdElm
TmVjZXNzYXJ5KFN0cmluZyYgZXhjZXB0aW9uTWVzc2FnZSkKIHsKKyAgICBTZXRGb3JTY29wZTxi
b29sPiBpc0luU3RhdGljU2NyaXB0RXZhbHVhdGlvbihtX2lzSW5TdGF0aWNTY3JpcHRFdmFsdWF0
aW9uLCB0cnVlKTsKKwogICAgIC8vIFdlIGFyZSBjdXJyZW50bHkgaG9sZGluZyBvbmx5IHRoZSBp
bml0aWFsIHNjcmlwdCBjb2RlLiBJZiB0aGUgV29ya2VyVHlwZSBpcyBNb2R1bGUsIHdlIHNob3Vs
ZCBmZXRjaCB0aGUgZW50aXJlIGdyYXBoIGJlZm9yZSBleGVjdXRpbmcgdGhlIHJlc3Qgb2YgdGhp
cy4KICAgICAvLyBXZSBpbnZva2UgbW9kdWxlIGxvYWRlciBhcyBpZiB3ZSBhcmUgZXhlY3V0aW5n
IGlubGluZSBtb2R1bGUgc2NyaXB0IHRhZyBpbiBEb2N1bWVudC4KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyVGhyZWFkLmgKaW5kZXggY2Y1MGMzNjhhZTcyMWU3OWE5ZDk4MTZlYzlhYTg5ZDNh
NmEyNDlkYS4uYjRmNzY5NGM2YjFlNmFhNDhjZGNlZDJlYjk3YTljOWE2YTJlOGQ0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCkBAIC05Niw2ICs5Niw3IEBAIHB1YmxpYzoK
ICNlbmRpZgogICAgIAogICAgIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncygpIGNvbnN0
IHsgcmV0dXJuIG1fcnVudGltZUZsYWdzOyB9CisgICAgYm9vbCBpc0luU3RhdGljU2NyaXB0RXZh
bHVhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0YXRpY1NjcmlwdEV2YWx1YXRpb247IH0K
IAogcHJvdGVjdGVkOgogICAgIFdvcmtlclRocmVhZChjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwg
Y29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYsIFdvcmtl
ckRlYnVnZ2VyUHJveHkmLCBXb3JrZXJSZXBvcnRpbmdQcm94eSYsIFdvcmtlclRocmVhZFN0YXJ0
TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25u
ZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciosIEpTQzo6UnVudGltZUZsYWdzKTsKQEAgLTEz
Miw2ICsxMzMsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPElEQkNsaWVudDo6SURCQ29ubmVj
dGlvblByb3h5PiBtX2lkYkNvbm5lY3Rpb25Qcm94eTsKICAgICBSZWZQdHI8U29ja2V0UHJvdmlk
ZXI+IG1fc29ja2V0UHJvdmlkZXI7CisgICAgYm9vbCBtX2lzSW5TdGF0aWNTY3JpcHRFdmFsdWF0
aW9uIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCmluZGV4IGI0ODc0N2EyYzA5
OTczYzE4YmY4ZGRhOWFjODc0YjMxYWI4NWY3NTEuLjBhNzgxOWI4YjNhMTg2NTk2ZGE2YmJhMDgy
OGUwZjVlZTE4MzYwMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yNiwxNSArMjYsMTcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJTaGFyZWRXb3JrZXIuaCIKIAorI2luY2x1ZGUgIkNsaWVudE9yaWdpbi5oIgogI2luY2x1
ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5j
bHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZXNz
YWdlQ2hhbm5lbC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiUmVzb3Vy
Y2VFcnJvci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAiU2hhcmVk
V29ya2VyTWFuYWdlci5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJQcm92aWRlci5oIgotI2luY2x1ZGUgIlNoYXJlZFdv
cmtlclRocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyT3B0aW9ucy5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXJzRmFjdG9yeS5oPgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CkBAIC00MywyMyArNDUsMzggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoU2hhcmVkV29ya2VyKTsKIAorI2RlZmluZSBT
SEFSRURfV09SS0VSX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhTaGFyZWRXb3Jr
ZXIsICIlcCAtIFtpZGVudGlmaWVyPSV7cHVibGljfXNdIFNoYXJlZFdvcmtlcjo6IiBmbXQsIHRo
aXMsIG1faWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksICMjX19WQV9BUkdTX18p
CisjZGVmaW5lIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0dfRVJST1IoZm10LCAuLi4pIFJFTEVB
U0VfTE9HX0VSUk9SKFNoYXJlZFdvcmtlciwgIiVwIC0gW2lkZW50aWZpZXI9JXtwdWJsaWN9c10g
U2hhcmVkV29ya2VyOjoiIGZtdCwgdGhpcywgbV9pZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgIyNfX1ZBX0FSR1NfXykKKworc3RhdGljIEhhc2hNYXA8U2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllciwgU2hhcmVkV29ya2VyKj4mIGFsbFNoYXJlZFdvcmtlcnMoKQoreworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hN
YXA8U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgU2hhcmVkV29ya2VyKj4+IGFsbFNoYXJl
ZFdvcmtlcnM7CisgICAgcmV0dXJuIGFsbFNoYXJlZFdvcmtlcnM7Cit9CisKK1NoYXJlZFdvcmtl
ciogU2hhcmVkV29ya2VyOjpmcm9tSWRlbnRpZmllcihTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyIGlkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIGFsbFNoYXJlZFdvcmtlcnMoKS5nZXQoaWRl
bnRpZmllcik7Cit9CisKIHN0YXRpYyBpbmxpbmUgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
biogbWFpblRocmVhZENvbm5lY3Rpb24oKQogewogICAgIHJldHVybiBTaGFyZWRXb3JrZXJQcm92
aWRlcjo6c2luZ2xldG9uKCkuc2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOwogfQogCi1FeGNlcHRp
b25PcjxSZWY8U2hhcmVkV29ya2VyPj4gU2hhcmVkV29ya2VyOjpjcmVhdGUoRG9jdW1lbnQmIGRv
Y3VtZW50LCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MsIFN0cmluZyYmIHNjcmlwdFVS
TFN0cmluZywgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25z
Pj4mJiBtYXliZU9wdGlvbnMpCitFeGNlcHRpb25PcjxSZWY8U2hhcmVkV29ya2VyPj4gU2hhcmVk
V29ya2VyOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmcmJiBzY3JpcHRVUkxTdHJp
bmcsIHN0ZDo6b3B0aW9uYWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYg
bWF5YmVPcHRpb25zKQogewogICAgIGlmICghbWFpblRocmVhZENvbm5lY3Rpb24oKSkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiU2hhcmVkIHdvcmtlcnMg
YXJlIG5vdCBzdXBwb3J0ZWQiIH07CiAKLSAgICBpZiAoIWRvY3VtZW50LnNlY3VyaXR5T3JpZ2lu
KCkuY2FuQWNjZXNzU2hhcmVkV29ya2Vycyhkb2N1bWVudC50b3BPcmlnaW4oKSkpCi0gICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yLCAiVGhpcyBpZnJhbWUgZG9lc24ndCBo
YXZlIHN0b3JhZ2UgYWNjZXNzIl9zIH07Ci0KICAgICBhdXRvIHVybCA9IGRvY3VtZW50LmNvbXBs
ZXRlVVJMKHNjcmlwdFVSTFN0cmluZyk7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IsICJJbnZhbGlkIHNjcmlwdCBVUkwiX3Mg
fTsKIAorICAgIGlmICh1cmwuaXNMb2NhbEZpbGUoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFNlY3VyaXR5RXJyb3IsICJDYW5ub3QgY29uc3RydWN0IGEgc2hhcmVkIHdvcmtlciB3aXRo
IGEgZmlsZTovLyBVUkwiX3MgfTsKKwogICAgIGlmIChhdXRvKiBjb250ZW50U2VjdXJpdHlQb2xp
Y3kgPSBkb2N1bWVudC5jb250ZW50U2VjdXJpdHlQb2xpY3koKSkgewogICAgICAgICBpZiAoIWNv
bnRlbnRTZWN1cml0eVBvbGljeS0+YWxsb3dXb3JrZXJGcm9tU291cmNlKHVybCkpCiAgICAgICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciB9OwpAQCAtNzcsMjYgKzk0LDM3
IEBAIEV4Y2VwdGlvbk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBTaGFyZWRXb3JrZXI6OmNyZWF0ZShE
b2N1bWVudCYgZG9jdW1lbnQsIEpTQzo6UnVuCiAgICAgYXV0byBjaGFubmVsID0gTWVzc2FnZUNo
YW5uZWw6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgYXV0byB0cmFuc2ZlcnJlZFBvcnQgPSBjaGFu
bmVsLT5wb3J0MigpLmRpc2VudGFuZ2xlKCk7CiAKLSAgICBhdXRvIHNoYXJlZFdvcmtlciA9IGFk
b3B0UmVmKCpuZXcgU2hhcmVkV29ya2VyKGRvY3VtZW50LCBjaGFubmVsLT5wb3J0MSgpLCBydW50
aW1lRmxhZ3MpKTsKKyAgICBDbGllbnRPcmlnaW4gY2xpZW50T3JpZ2luIHsgZG9jdW1lbnQudG9w
RG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSwgZG9jdW1lbnQuc2VjdXJpdHlPcmln
aW4oKS5kYXRhKCkgfTsKKyAgICBTaGFyZWRXb3JrZXJLZXkga2V5IHsgY2xpZW50T3JpZ2luLCB1
cmwsIG9wdGlvbnMubmFtZSB9OworCisgICAgYXV0byBzaGFyZWRXb3JrZXIgPSBhZG9wdFJlZigq
bmV3IFNoYXJlZFdvcmtlcihkb2N1bWVudCwga2V5LCBjaGFubmVsLT5wb3J0MSgpKSk7CiAgICAg
c2hhcmVkV29ya2VyLT5zdXNwZW5kSWZOZWVkZWQoKTsKIAotICAgIG1haW5UaHJlYWRDb25uZWN0
aW9uKCktPnJlcXVlc3RTaGFyZWRXb3JrZXIodXJsLCBzaGFyZWRXb3JrZXIuZ2V0KCksIFdURk1v
dmUodHJhbnNmZXJyZWRQb3J0KSwgV1RGTW92ZShvcHRpb25zKSk7CisgICAgbWFpblRocmVhZENv
bm5lY3Rpb24oKS0+cmVxdWVzdFNoYXJlZFdvcmtlcihrZXksIHNoYXJlZFdvcmtlci0+aWRlbnRp
ZmllcigpLCBXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCksIG9wdGlvbnMpOwogICAgIHJldHVybiBz
aGFyZWRXb3JrZXI7CiB9CiAKLVNoYXJlZFdvcmtlcjo6U2hhcmVkV29ya2VyKERvY3VtZW50JiBk
b2N1bWVudCwgUmVmPE1lc3NhZ2VQb3J0PiYmIHBvcnQsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRp
bWVGbGFncykKK1NoYXJlZFdvcmtlcjo6U2hhcmVkV29ya2VyKERvY3VtZW50JiBkb2N1bWVudCwg
Y29uc3QgU2hhcmVkV29ya2VyS2V5JiBrZXksIFJlZjxNZXNzYWdlUG9ydD4mJiBwb3J0KQogICAg
IDogQWN0aXZlRE9NT2JqZWN0KCZkb2N1bWVudCkKKyAgICAsIG1fa2V5KGtleSkKKyAgICAsIG1f
aWRlbnRpZmllcihTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQogICAg
ICwgbV9wb3J0KFdURk1vdmUocG9ydCkpCiAgICAgLCBtX2lkZW50aWZpZXJGb3JJbnNwZWN0b3Io
IlNoYXJlZFdvcmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlk
ZW50aWZpZXIoKSkKLSAgICAsIG1fcnVudGltZUZsYWdzKHJ1bnRpbWVGbGFncykKLSAgICAsIG1f
Y3JlYXRpb25UaW1lKE1vbm90b25pY1RpbWU6Om5vdygpKQotICAgICwgbV9wcm94eShTaGFyZWRX
b3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlKCp0aGlzKSkKIHsKKyAgICBTSEFSRURfV09SS0VSX1JF
TEVBU0VfTE9HKCJTaGFyZWRXb3JrZXI6Iik7CisgICAgYWxsU2hhcmVkV29ya2VycygpLmFkZCht
X2lkZW50aWZpZXIsIHRoaXMpOworCisgICAgLy8gSWYgdGhlIHNoYXJlZCB3b3JrZXIgVVJMIGlz
IGEgYmxvYiBVUkwsIG1ha2Ugc3VyZSB0byBrZWVwIGl0IGFsaXZlIHVudGlsIHRoZSB3b3JrZXIg
aGFzIGZpbmlzaGVkIGxvYWRpbmcuCisgICAgaWYgKG1fa2V5LnVybC5wcm90b2NvbElzQmxvYigp
KQorICAgICAgICBtX2Jsb2JVUkxFeHRlbnNpb24gPSBtX2tleS51cmw7CiB9CiAKIFNoYXJlZFdv
cmtlcjo6flNoYXJlZFdvcmtlcigpCiB7Ci0gICAgbV9wcm94eS53b3JrZXJPYmplY3REZXN0cm95
ZWQoKTsKKyAgICBBU1NFUlQoYWxsU2hhcmVkV29ya2VycygpLmdldChtX2lkZW50aWZpZXIpID09
IHRoaXMpOworICAgIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coIn5TaGFyZWRXb3JrZXI6Iik7
CisgICAgYWxsU2hhcmVkV29ya2VycygpLnJlbW92ZShtX2lkZW50aWZpZXIpOworICAgIEFTU0VS
VCghbV9pc0FjdGl2ZSk7CiB9CiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFNoYXJlZFdvcmtl
cjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CkBAIC0xMTQsMTkgKzE0MiwyOSBAQCBF
dmVudFRhcmdldEludGVyZmFjZSBTaGFyZWRXb3JrZXI6OmV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkg
Y29uc3QKICAgICByZXR1cm4gU2hhcmVkV29ya2VyRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOwog
fQogCi12b2lkIFNoYXJlZFdvcmtlcjo6c3RvcCgpCit2b2lkIFNoYXJlZFdvcmtlcjo6ZGlkRmlu
aXNoTG9hZGluZyhjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICB0ZXJtaW5hdGUo
KTsKKyAgICBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HKCJmaW5pc2hMb2FkaW5nOiBzdWNjZXNz
PSVkIiwgZXJyb3IuaXNOdWxsKCkpOworICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKKyAgICAg
ICAgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVs
YXRpb24sIEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2ZW50OjpDYW5C
dWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKKyAgICAgICAgbV9pc0FjdGl2
ZSA9IGZhbHNlOworICAgIH0KKyAgICBtX2Jsb2JVUkxFeHRlbnNpb24uY2xlYXIoKTsKIH0KIAog
Ym9vbCBTaGFyZWRXb3JrZXI6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewot
ICAgIHJldHVybiBtX3Byb3h5Lmhhc1BlbmRpbmdBY3Rpdml0eSgpIHx8IG1faXNMb2FkaW5nOwor
ICAgIHJldHVybiBtX2lzQWN0aXZlOwogfQogCi12b2lkIFNoYXJlZFdvcmtlcjo6dGVybWluYXRl
KCkKK3ZvaWQgU2hhcmVkV29ya2VyOjpzdG9wKCkKIHsKLSAgICBtX3Byb3h5LnRlcm1pbmF0ZVdv
cmtlckdsb2JhbFNjb3BlKCk7CisgICAgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRygic3RvcDoi
KTsKKyAgICBtX2lzQWN0aXZlID0gZmFsc2U7CisgICAgbWFpblRocmVhZENvbm5lY3Rpb24oKS0+
c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkobV9rZXksIG1faWRlbnRpZmllcik7CiB9CiAK
KyN1bmRlZiBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HCisjdW5kZWYgU0hBUkVEX1dPUktFUl9S
RUxFQVNFX0xPR19FUlJPUgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5oCmluZGV4IGU1NWIxY2Y1NTEzZDEwNWY3
M2YxY2Q2MjkzMTVlMDY1N2UwMTliY2UuLmNkZDI2OWYzNjE5MTY5ZDRhYjA1ZjYwZDFhNzRiODhj
MDIzZmQyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
ci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI3LDM5ICsyNywzNyBAQAogCiAjaW5jbHVkZSAiQWJzdHJhY3RXb3JrZXIuaCIKICNpbmNs
dWRlICJBY3RpdmVET01PYmplY3QuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SdW50aW1l
RmxhZ3MuaD4KKyNpbmNsdWRlICJCbG9iVVJMLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyS2V5
LmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIgogI2luY2x1ZGUg
PHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVz
c2FnZVBvcnQ7Ci1jbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTsKK2NsYXNzIFJlc291cmNl
RXJyb3I7CiAKIHN0cnVjdCBXb3JrZXJPcHRpb25zOwogCiBjbGFzcyBTaGFyZWRXb3JrZXIgZmlu
YWwgOiBwdWJsaWMgQWJzdHJhY3RXb3JrZXIsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogICAg
IFdURl9NQUtFX0lTT19BTExPQ0FURUQoU2hhcmVkV29ya2VyKTsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgRXhjZXB0aW9uT3I8UmVmPFNoYXJlZFdvcmtlcj4+IGNyZWF0ZShEb2N1bWVudCYsIEpTQzo6
UnVudGltZUZsYWdzLCBTdHJpbmcmJiBzY3JpcHRVUkwsIHN0ZDo6b3B0aW9uYWw8c3RkOjp2YXJp
YW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxS
ZWY8U2hhcmVkV29ya2VyPj4gY3JlYXRlKERvY3VtZW50JiwgU3RyaW5nJiYgc2NyaXB0VVJMLCBz
dGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxTdHJpbmcsIFdvcmtlck9wdGlvbnM+PiYmKTsKICAg
ICB+U2hhcmVkV29ya2VyKCk7CiAKKyAgICBzdGF0aWMgU2hhcmVkV29ya2VyKiBmcm9tSWRlbnRp
ZmllcihTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0K
ICAgICBNZXNzYWdlUG9ydCYgcG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9ydC5nZXQoKTsgfQot
ICAgIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncygpIHsgcmV0dXJuIG1fcnVudGltZUZs
YWdzOyB9CiAKICAgICBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJGb3JJbnNwZWN0b3IoKSBjb25z
dCB7IHJldHVybiBtX2lkZW50aWZpZXJGb3JJbnNwZWN0b3I7IH0KLSAgICBNb25vdG9uaWNUaW1l
IGNyZWF0aW9uVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3JlYXRpb25UaW1lOyB9CiAKLSAgICBT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eSYgcHJveHkoKSB7IHJldHVybiBtX3Byb3h5OyB9Ci0KLSAg
ICB2b2lkIHNldElzTG9hZGluZyhib29sIGlzTG9hZGluZykgeyBtX2lzTG9hZGluZyA9IGlzTG9h
ZGluZzsgfQorICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBSZXNvdXJjZUVycm9yJik7
CiAKICAgICAvLyBFdmVudFRhcmdldC4KICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6Ci0gICAgU2hhcmVk
V29ya2VyKERvY3VtZW50JiwgUmVmPE1lc3NhZ2VQb3J0PiYmLCBKU0M6OlJ1bnRpbWVGbGFncyk7
Ci0KLSAgICB2b2lkIHRlcm1pbmF0ZSgpOworICAgIFNoYXJlZFdvcmtlcihEb2N1bWVudCYsIGNv
bnN0IFNoYXJlZFdvcmtlcktleSYsIFJlZjxNZXNzYWdlUG9ydD4mJik7CiAKICAgICAvLyBFdmVu
dFRhcmdldC4KICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgp
IGNvbnN0IGZpbmFsOwpAQCAtNzAsMTIgKzY4LDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCB2aXJ0
dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAKIAorICAgIFNoYXJlZFdvcmtl
cktleSBtX2tleTsKKyAgICBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIG1faWRlbnRpZmll
cjsKICAgICBSZWY8TWVzc2FnZVBvcnQ+IG1fcG9ydDsKICAgICBTdHJpbmcgbV9pZGVudGlmaWVy
Rm9ySW5zcGVjdG9yOwotICAgIEpTQzo6UnVudGltZUZsYWdzIG1fcnVudGltZUZsYWdzOwotICAg
IE1vbm90b25pY1RpbWUgbV9jcmVhdGlvblRpbWU7Ci0gICAgU2hhcmVkV29ya2VyVGhyZWFkUHJv
eHkmIG1fcHJveHk7IC8vIFRoZSBwcm94eSBvdXRsaXZlcyB0aGUgd29ya2VyIHRvIHBlcmZvcm0g
dGhyZWFkIHNodXRkb3duLgotICAgIGJvb2wgbV9pc0xvYWRpbmcgeyBmYWxzZSB9OworICAgIEJs
b2JVUkxIYW5kbGUgbV9ibG9iVVJMRXh0ZW5zaW9uOworICAgIGJvb2wgbV9pc0FjdGl2ZSB7IHRy
dWUgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaWRsCmluZGV4IGI2Mjg3NGQwZGU0NjcwZDQ4YTJk
MzE0YzEzMWU2MjRjMjA1NjJlM2QuLjJjM2EwODMxZWIyNzQxYjI2MzY0N2YxNzRlOGM1ODdiN2E0
MWViN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
LmlkbApAQCAtMjgsNyArMjgsNyBAQAogICAgIEV4cG9zZWQ9V2luZG93CiBdCiBpbnRlcmZhY2Ug
U2hhcmVkV29ya2VyIDogRXZlbnRUYXJnZXQgewotICBbQ2FsbFdpdGg9Q3VycmVudERvY3VtZW50
JlJ1bnRpbWVGbGFnc10gY29uc3RydWN0b3IoVVNWU3RyaW5nIHNjcmlwdFVSTCwgb3B0aW9uYWwg
KERPTVN0cmluZyBvciBXb3JrZXJPcHRpb25zKSBvcHRpb25zKTsKKyAgW0NhbGxXaXRoPUN1cnJl
bnREb2N1bWVudF0gY29uc3RydWN0b3IoVVNWU3RyaW5nIHNjcmlwdFVSTCwgb3B0aW9uYWwgKERP
TVN0cmluZyBvciBXb3JrZXJPcHRpb25zKSBvcHRpb25zKTsKIAogICByZWFkb25seSBhdHRyaWJ1
dGUgTWVzc2FnZVBvcnQgcG9ydDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlcktleS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0YWI5YTE0OGU5YTVmODdlMzNlYWNh
ZTIyYWU1Zjg4MzRkMjc3NjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJLZXkuaApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitzdHJ1Y3QgU2hhcmVkV29ya2VyS2V5IHsKKyAgICBDbGllbnRPcmlnaW4g
b3JpZ2luOworICAgIFVSTCB1cmw7CisgICAgU3RyaW5nIG5hbWU7CisKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2hhcmVkV29ya2VyS2V5PiBkZWNv
ZGUoRGVjb2RlciYpOworfTsKKworaW5saW5lIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25z
dCBTaGFyZWRXb3JrZXJLZXkmIGtleSkKK3sKKyAgICBhZGQoaGFzaGVyLCBrZXkub3JpZ2luLCBr
ZXkudXJsLCBrZXkubmFtZSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFNo
YXJlZFdvcmtlcktleTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5j
b2RlciA8PCBvcmlnaW4gPDwgdXJsIDw8IG5hbWU7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29k
ZXI+CitzdGQ6Om9wdGlvbmFsPFNoYXJlZFdvcmtlcktleT4gU2hhcmVkV29ya2VyS2V5OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPENsaWVudE9yaWdpbj4g
b3JpZ2luOworICAgIGRlY29kZXIgPj4gb3JpZ2luOworICAgIGlmICghb3JpZ2luKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxVUkw+IHVybDsKKyAg
ICBkZWNvZGVyID4+IHVybDsKKyAgICBpZiAoIXVybCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBuYW1lOworICAgIGRlY29kZXIgPj4g
bmFtZTsKKyAgICBpZiAoIW5hbWUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICByZXR1cm4geyB7IFdURk1vdmUoKm9yaWdpbiksIFdURk1vdmUoKnVybCksIFdURk1vdmUoKm5h
bWUpIH0gfTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRXb3JrZXJL
ZXkmIGEsIGNvbnN0IFNoYXJlZFdvcmtlcktleSYgYikKK3sKKyAgICByZXR1cm4gYS5vcmlnaW4g
PT0gYi5vcmlnaW4gJiYgYS51cmwgPT0gYi51cmwgJiYgYS5uYW1lID09IGIubmFtZTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBz
dHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5PiB7CisgICAgc3RhdGlj
IHVuc2lnbmVkIGhhc2goY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBrZXkpIHsgcmV0
dXJuIGNvbXB1dGVIYXNoKGtleSk7IH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJD
b3JlOjpTaGFyZWRXb3JrZXJLZXkmIGEsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYg
YikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFy
ZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hU
cmFpdHM8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5PiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYkNv
cmU6OlNoYXJlZFdvcmtlcktleT4geworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBlbXB0eVZh
bHVlSXNaZXJvID0gZmFsc2U7CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVl
KFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgc2xvdCkgeyBuZXcgKE5vdE51bGwsICZzbG90LnVy
bCkgVVJMKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQorICAgIHN0YXRpYyBib29sIGlz
RGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYgc2xvdCkgeyByZXR1
cm4gc2xvdC51cmwuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorfTsKKworfSAvLyBuYW1l
c3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlck1hbmFnZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzQxMDg3
N2RiMzIxZjc5NTJmMzEyYzg2ZGMzZmU0YTBiNTVkMDc5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1No
YXJlZFdvcmtlck1hbmFnZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyTWFu
YWdlci5oIgotCi0jaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCi0jaW5jbHVkZSAi
RXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCi0jaW5jbHVkZSAiTWVz
c2FnZUV2ZW50LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCi0jaW5jbHVkZSAi
U2hhcmVkV29ya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaCIKLSNp
bmNsdWRlICJTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3Jr
ZXJUaHJlYWQuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIgotI2luY2x1
ZGUgIldvcmtlclJ1bkxvb3AuaCIKLSNpbmNsdWRlICJXb3JrZXJTY3JpcHRMb2FkZXIuaCIKLSNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVNoYXJlZFdvcmtlck1hbmFnZXImIFNoYXJlZFdvcmtl
ck1hbmFnZXI6OnNpbmdsZXRvbigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYXJl
ZFdvcmtlck1hbmFnZXI+IGluc3RhbmNlOwotICAgIHJldHVybiBpbnN0YW5jZS5nZXQoKTsKLX0K
LQotdm9pZCBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpjb25uZWN0KGNvbnN0IFVSTCYgdXJsLCBTaGFy
ZWRXb3JrZXImIHdvcmtlciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIG1lc3NhZ2VQb3J0LCBX
b3JrZXJPcHRpb25zJiYgb3B0aW9ucykKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwotICAgIC8vIEZJWE1FOiBIYW5kbGUgd29ya2VycyBmcm9tIG90aGVyIHByb2Nlc3Nlcywgd2hp
Y2ggd2lsbCBwcm9iYWJseSByZXF1aXJlIG1vdmluZyBjb25uZWN0IHRvIHRoZSBGcmFtZUxvYWRl
ckNsaWVudCBvciBzb21ldGhpbmcuCi0gICAgLy8gTWF5YmUgc29tZXRoaW5nIG1vcmUgbGlrZSB3
aGF0IFNlcnZpY2VXb3JrZXJzIGRvZXMuCi0KLSAgICAvLyBGSVhNRTogQ2hlY2sgaWYgd2UgYWxy
ZWFkeSBtYWRlIGEgdGhyZWFkLgotICAgIC8vIEZJWE1FOiBDaGVjayBpZiB0aGVyZSdzIGFscmVh
ZHkgYSBzaGFyZWQgd29ya2VyIGFuZCB1c2UgdGhhdCBpZiB0aGVyZSBpcy4KLQotICAgIGF1dG8g
bG9hZGVyID0gbWFrZVVuaXF1ZVJlZjxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+KHVybCwgd29y
a2VyLCBXVEZNb3ZlKG1lc3NhZ2VQb3J0KSwgV1RGTW92ZShvcHRpb25zKSk7Ci0gICAgYXV0byBp
ZGVudGlmaWVyID0gbG9hZGVyLT5pZGVudGlmaWVyKCk7Ci0gICAgbV9sb2FkZXJzLmFkZChpZGVu
dGlmaWVyLCBXVEZNb3ZlKGxvYWRlcikpOwotfQotCi12b2lkIFNoYXJlZFdvcmtlck1hbmFnZXI6
OnNjcmlwdExvYWRGYWlsZWQoU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJiBsb2FkZXIpCi17Ci0g
ICAgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQobG9hZGVyLndvcmtl
cigpLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmVycm9yRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxl
OjpZZXMpKTsKLSAgICBtX2xvYWRlcnMucmVtb3ZlKGxvYWRlci5pZGVudGlmaWVyKCkpOwotfQot
Ci12b2lkIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNjcmlwdExvYWRlZFN1Y2Nlc3NmdWxseShTaGFy
ZWRXb3JrZXJTY3JpcHRMb2FkZXImIGxvYWRlciwgY29uc3QgU2NyaXB0QnVmZmVyJiBzY3JpcHRC
dWZmZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFNo
YXJlZFdvcmtlciYgc2hhcmVkV29ya2VyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgdHJhbnNm
ZXJyZWRQb3J0KQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgYXV0byYg
d29ya2VyID0gbG9hZGVyLndvcmtlcigpOwotICAgIGF1dG8mIG9wdGlvbnMgPSBsb2FkZXIub3B0
aW9ucygpOwotCi0gICAgYXV0byYgcHJveHkgPSBzaGFyZWRXb3JrZXIucHJveHkoKTsKLQotICAg
IHByb3h5LnN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoCi0gICAgICAgIGxvYWRlci51cmwoKSwKLSAg
ICAgICAgb3B0aW9ucy5uYW1lLAotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LnVzZXJB
Z2VudChsb2FkZXIudXJsKCkpLAotICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVy
U3RyYXRlZ3koKS0+aXNPbkxpbmUoKSwKLSAgICAgICAgc2NyaXB0QnVmZmVyLAotICAgICAgICBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5yZXNwb25zZUhl
YWRlcnMoKSwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5zaG91bGRCeXBhc3NNYWlu
V29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKSwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KCksCi0gICAgICAgIHdvcmtlci5jcmVhdGlv
blRpbWUoKSwKLSAgICAgICAgUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nLAotICAgICAgICBv
cHRpb25zLnR5cGUsCi0gICAgICAgIG9wdGlvbnMuY3JlZGVudGlhbHMsCi0gICAgICAgIHdvcmtl
ci5ydW50aW1lRmxhZ3MoKQotICAgICk7Ci0gICAgaWYgKCFwcm94eS50aHJlYWQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TihpczxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwotICAgIGF1dG8gc291cmNl
T3JpZ2luID0gZG93bmNhc3Q8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnNlY3Vy
aXR5T3JpZ2luKCkudG9TdHJpbmcoKTsKLQotICAgIHByb3h5LnRocmVhZCgpLT5ydW5Mb29wKCku
cG9zdFRhc2soW3RyYW5zZmVycmVkUG9ydCA9IFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwgc291
cmNlT3JpZ2luID0gV1RGTW92ZShzb3VyY2VPcmlnaW4pLmlzb2xhdGVkQ29weSgpXSAoYXV0byYg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIGRvd25jYXN0PFNoYXJl
ZFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5wb3N0Q29ubmVjdEV2
ZW50KFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwgc291cmNlT3JpZ2luKTsKLSAgICB9KTsKLQot
ICAgIG1fbG9hZGVycy5yZW1vdmUobG9hZGVyLmlkZW50aWZpZXIoKSk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1No
YXJlZFdvcmtlck1hbmFnZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjUyMTgx
NmU2NWM3NzY3MWQ5MzM3YTgxNzE1NWVmOTk3ODU0ZDg0OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9T
aGFyZWRXb3JrZXJNYW5hZ2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJNZXNzYWdlUG9ydElkZW50aWZpZXIu
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwotY2xhc3MgU2hhcmVkV29ya2VyOwotY2xhc3MgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOwot
Y2xhc3MgU2NyaXB0QnVmZmVyOwotc3RydWN0IFdvcmtlck9wdGlvbnM7Ci11c2luZyBUcmFuc2Zl
cnJlZE1lc3NhZ2VQb3J0ID0gc3RkOjpwYWlyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmll
ciwgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyPjsKLQotdXNpbmcgU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVySWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8U2hhcmVkV29ya2VyU2Ny
aXB0TG9hZGVyPjsKLQotY2xhc3MgU2hhcmVkV29ya2VyTWFuYWdlciB7Ci1wdWJsaWM6Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFNoYXJlZFdvcmtlck1hbmFnZXImIHNpbmdsZXRvbigpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29ubmVjdChjb25zdCBVUkwmLCBTaGFyZWRXb3JrZXIm
LCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFdvcmtlck9wdGlvbnMmJik7Ci0KLSAgICB2b2lk
IHNjcmlwdExvYWRGYWlsZWQoU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJik7Ci0gICAgdm9pZCBz
Y3JpcHRMb2FkZWRTdWNjZXNzZnVsbHkoU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyJiwgY29uc3Qg
U2NyaXB0QnVmZmVyJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFNoYXJlZFdvcmtlciYsIFRy
YW5zZmVycmVkTWVzc2FnZVBvcnQmJik7Ci0KLXByaXZhdGU6Ci0gICAgSGFzaE1hcDxTaGFyZWRX
b3JrZXJTY3JpcHRMb2FkZXJJZGVudGlmaWVyLCBVbmlxdWVSZWY8U2hhcmVkV29ya2VyU2NyaXB0
TG9hZGVyPj4gbV9sb2FkZXJzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uLmNwcAppbmRleCBkZGEzODRkMjI5MTIwMjgzYzEyZDQ3YTU3NTY4OTJm
OGE4MDJiNThiLi4wMWE5ZDhmNWZhNTJiMDA2NzI4MzgxN2ZhOWI0M2RhMzliYzczMmMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcApAQCAtMjYsMTAgKzI2LDY2IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oIgogCisj
aW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgorI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRCdWZmZXIuaCIKKyNpbmNsdWRlICJT
aGFyZWRXb3JrZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCIKKyNp
bmNsdWRlICJXb3JrZXJGZXRjaFJlc3VsdC5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNk
ZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVk
V29ya2VyLCAiJXAgLSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywg
IyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUihmbXQs
IC4uLikgUkVMRUFTRV9MT0dfRVJST1IoU2hhcmVkV29ya2VyLCAiJXAgLSBTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKworc3RhdGljIHVp
bnQ2NF90IGxvYWRlcklkZW50aWZpZXJTZWVkID0gMDsKKwogU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbjo6U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpID0gZGVmYXVsdDsKIAogU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6flNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24o
KSA9IGRlZmF1bHQ7CiAKK3ZvaWQgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6ZmV0Y2hT
Y3JpcHRJbkNsaWVudChVUkwmJiB1cmwsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV29ya2VyT3B0aW9ucyYmIHdvcmtl
ck9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV29ya2VyRmV0Y2hSZXN1bHQmJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAg
IGF1dG8qIHdvcmtlck9iamVjdCA9IFNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIoc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiZmV0
Y2hTY3JpcHRJbkNsaWVudDogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31z
LCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSwgd29ya2VyT2JqZWN0KTsKKyAgICBpZiAoIXdvcmtlck9iamVjdCkKKyAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHdvcmtlckZldGNoRXJyb3IoUmVzb3VyY2VFcnJv
ciB7IFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbiB9KSk7CisKKyAgICBhdXRvIGxv
YWRlcklkZW50aWZpZXIgPSArK2xvYWRlcklkZW50aWZpZXJTZWVkOworICAgIGF1dG8gbG9hZGVy
ID0gbWFrZVVuaXF1ZVJlZjxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+KFdURk1vdmUodXJsKSwg
Kndvcmtlck9iamVjdCwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSk7CisgICAgYXV0byBsb2FkZXJQ
dHIgPSBsb2FkZXIucHRyKCk7CisgICAgbV9sb2FkZXJzLmFkZChsb2FkZXJJZGVudGlmaWVyLCBX
VEZNb3ZlKGxvYWRlcikpOworCisgICAgbG9hZGVyUHRyLT5sb2FkKFt0aGlzLCBsb2FkZXJJZGVu
dGlmaWVyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShX
b3JrZXJGZXRjaFJlc3VsdCYmIGZldGNoUmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgQ09OTkVD
VElPTl9SRUxFQVNFX0xPRygiZmV0Y2hTY3JpcHRJbkNsaWVudDogZmluaXNoZWQgc2NyaXB0IGxv
YWQsIHN1Y2Nlc3M9JWQiLCBmZXRjaFJlc3VsdC5lcnJvci5pc051bGwoKSk7CisgICAgICAgIGF1
dG8gbG9hZGVyID0gbV9sb2FkZXJzLnRha2UobG9hZGVySWRlbnRpZmllcik7CisgICAgICAgIEFT
U0VSVChsb2FkZXIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGZldGNoUmVz
dWx0KSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6
bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihXZWJDb3JlOjpTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgYXV0
byogd29ya2VyT2JqZWN0ID0gU2hhcmVkV29ya2VyOjpmcm9tSWRlbnRpZmllcihzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKCJu
b3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uOiBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyPSV7cHVibGljfXMsIHdvcmtlcj0lcCwgc3VjY2Vzcz0lZCIsIHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB3b3JrZXJPYmplY3QsIGVy
cm9yLmlzTnVsbCgpKTsKKyAgICBpZiAod29ya2VyT2JqZWN0KQorICAgICAgICB3b3JrZXJPYmpl
Y3QtPmRpZEZpbmlzaExvYWRpbmcoZXJyb3IpOworfQorCit2b2lkIFNoYXJlZFdvcmtlck9iamVj
dENvbm5lY3Rpb246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VVUkwpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBhdXRv
KiB3b3JrZXJPYmplY3QgPSBTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVyKHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIpOworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IoInBv
c3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdDogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0l
e3B1YmxpY31zLCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSwgd29ya2VyT2JqZWN0KTsKKyAgICBpZiAod29ya2VyT2JqZWN0
KQorICAgICAgICBBY3RpdmVET01PYmplY3Q6OnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqd29y
a2VyT2JqZWN0LCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIEVycm9yRXZlbnQ6OmNyZWF0
ZShlcnJvck1lc3NhZ2UsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB7IH0p
KTsKK30KKworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0cKKyN1bmRlZiBDT05ORUNUSU9O
X1JFTEVBU0VfTE9HX0VSUk9SCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24uaAppbmRleCA0ZWQ1YTFjNjViNThkMDk4ZGMwZjY4MDhiNjBlZTBhMDM4N2Q3YmQ2
Li41M2VmZGM4NmU0OGI4NjcyZDdjMDNiZmEyMGZhMDc4NTNjZjI4MjMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbi5oCkBAIC0yNSwyMiArMjUsMzggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiVHJhbnNmZXJy
ZWRNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFNoYXJlZFdvcmtlcjsKK2NsYXNzIE1lc3NhZ2VQb3J0OworY2xhc3Mg
U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOworCitzdHJ1Y3QgU2hhcmVkV29ya2VyS2V5Oworc3Ry
dWN0IFdvcmtlckZldGNoUmVzdWx0Owogc3RydWN0IFdvcmtlck9wdGlvbnM7CiAKIGNsYXNzIFNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uPiB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB+U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpOwogCi0gICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RTaGFyZWRXb3JrZXIoY29uc3QgVVJMJiwgU2hhcmVkV29ya2VyJiwgVHJhbnNmZXJyZWRN
ZXNzYWdlUG9ydCYmLCBXb3JrZXJPcHRpb25zJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdFNoYXJlZFdvcmtlcihjb25zdCBTaGFyZWRXb3JrZXJLZXkmLCBTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIGNvbnN0IFdvcmtlck9wdGlv
bnMmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5
KGNvbnN0IFNoYXJlZFdvcmtlcktleSYsIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpID0g
MDsKIAogcHJvdGVjdGVkOgorICAgIC8vIElQQyBtZXNzYWdlcy4KKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGZldGNoU2NyaXB0SW5DbGllbnQoVVJMJiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIsIFdvcmtlck9wdGlvbnMmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
b3JrZXJGZXRjaFJlc3VsdCYmKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBub3RpZnlX
b3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIFNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKTsKKworcHJpdmF0ZToKKyAgICBIYXNoTWFwPHVp
bnQ2NF90LCBVbmlxdWVSZWY8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPj4gbV9sb2FkZXJzOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmViY2Q0YTdhZTg3YWRmNWZiMWM3NGQ1NjgyNDYxMTI3NGE1ZjkyZWQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiUHJvY2Vzc1F1YWxpZmllZC5oIgorI2luY2x1ZGUgPHd0Zi9PYmplY3RJ
ZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyID0gUHJvY2Vzc1F1YWxpZmllZDxPYmplY3RJZGVudGlmaWVyPFNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXJUeXBlPj47CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXIuY3BwCmluZGV4IDMxMWViZDYwNzhiYzYxZTAxNjlmMWE4NGVhNzE2NGIwODQzNmM2MzkuLjM4
MGZjM2E1ZWQ0ZjZhNDlmOWRjYjY3ZjM0MWI2MTc1ZjNiYmY4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVy
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yOSwyMyArMjksMjYgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCi0j
aW5jbHVkZSAiU2hhcmVkV29ya2VyTWFuYWdlci5oIgorI2luY2x1ZGUgIldvcmtlckZldGNoUmVz
dWx0LmgiCiAjaW5jbHVkZSAiV29ya2VyUnVuTG9vcC5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlw
dExvYWRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZFdvcmtlclNjcmlwdExv
YWRlcjo6U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRXb3Jr
ZXImIHdvcmtlciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBvcnQsIFdvcmtlck9wdGlvbnMm
JiBvcHRpb25zKQotICAgIDogbV9pZGVudGlmaWVyKFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcklk
ZW50aWZpZXI6OmdlbmVyYXRlKCkpCi0gICAgLCBtX29wdGlvbnMoV1RGTW92ZShvcHRpb25zKSkK
K1NoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyKFVSTCYm
IHVybCwgU2hhcmVkV29ya2VyJiB3b3JrZXIsIFdvcmtlck9wdGlvbnMmJiBvcHRpb25zKQorICAg
IDogbV9vcHRpb25zKFdURk1vdmUob3B0aW9ucykpCiAgICAgLCBtX3dvcmtlcih3b3JrZXIpCi0g
ICAgLCBtX3BvcnQoV1RGTW92ZShwb3J0KSkKICAgICAsIG1fbG9hZGVyKFdvcmtlclNjcmlwdExv
YWRlcjo6Y3JlYXRlKCkpCi0gICAgLCBtX3BlbmRpbmdBY3Rpdml0eSh3b3JrZXIubWFrZVBlbmRp
bmdBY3Rpdml0eSh3b3JrZXIpKQotICAgICwgbV91cmwodXJsKQorICAgICwgbV91cmwoV1RGTW92
ZSh1cmwpKQogewotICAgIG1fd29ya2VyLT5zZXRJc0xvYWRpbmcodHJ1ZSk7Ci0gICAgbV9sb2Fk
ZXItPmxvYWRBc3luY2hyb25vdXNseSgqd29ya2VyLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
UmVzb3VyY2VSZXF1ZXN0KHVybCksIHdvcmtlci53b3JrZXJGZXRjaE9wdGlvbnMob3B0aW9ucywg
RmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2hhcmVkd29ya2VyKSwgQ29udGVudFNlY3VyaXR5
UG9saWN5RW5mb3JjZW1lbnQ6OkVuZm9yY2VXb3JrZXJTcmNEaXJlY3RpdmUsIFNlcnZpY2VXb3Jr
ZXJzTW9kZTo6QWxsLCAqdGhpcywgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7Cit9CisK
K3ZvaWQgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV29ya2VyRmV0Y2hSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNT
RVJUKCFtX2NvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBtX2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBtX2xvYWRlci0+bG9hZEFzeW5jaHJvbm91
c2x5KCptX3dvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBSZXNvdXJjZVJlcXVlc3Qo
bV91cmwpLCBtX3dvcmtlci0+d29ya2VyRmV0Y2hPcHRpb25zKG1fb3B0aW9ucywgRmV0Y2hPcHRp
b25zOjpEZXN0aW5hdGlvbjo6U2hhcmVkd29ya2VyKSwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5m
b3JjZW1lbnQ6OkVuZm9yY2VXb3JrZXJTcmNEaXJlY3RpdmUsIFNlcnZpY2VXb3JrZXJzTW9kZTo6
QWxsLCAqdGhpcywgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiB9CiAKIHZvaWQgU2hh
cmVkV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQpAQCAtNTUsMTYg
KzU4LDEyIEBAIHZvaWQgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9u
c2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50CiAKIHZvaWQgU2hhcmVkV29ya2VyU2Ny
aXB0TG9hZGVyOjpub3RpZnlGaW5pc2hlZCgpCiB7Ci0gICAgbV93b3JrZXItPnNldElzTG9hZGlu
ZyhmYWxzZSk7CisgICAgaWYgKG1fbG9hZGVyLT5mYWlsZWQoKSkKKyAgICAgICAgcmV0dXJuIG1f
Y29tcGxldGlvbkhhbmRsZXIod29ya2VyRmV0Y2hFcnJvcihtX2xvYWRlci0+ZXJyb3IoKSkpOwog
Ci0gICAgYXV0byogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IG1fd29ya2VyLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKG1fbG9hZGVyLT5mYWlsZWQoKSB8fCAhc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkgewotICAgICAgICBtX3dvcmtlci0+ZGlzcGF0Y2hFdmVudChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZl
bnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7Ci0gICAgICAgIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNp
bmdsZXRvbigpLnNjcmlwdExvYWRGYWlsZWQoKnRoaXMpOyAvLyBkZWxldGVzIHRoaXMuCi0gICAg
fSBlbHNlIHsKKyAgICBpZiAoYXV0byogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IG1fd29ya2Vy
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6c2NyaXB0SW1wb3J0ZWQoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG1fbG9hZGVyLT5p
ZGVudGlmaWVyKCksIG1fbG9hZGVyLT5zY3JpcHQoKS50b1N0cmluZygpKTsKLSAgICAgICAgU2hh
cmVkV29ya2VyTWFuYWdlcjo6c2luZ2xldG9uKCkuc2NyaXB0TG9hZGVkU3VjY2Vzc2Z1bGx5KCp0
aGlzLCBtX2xvYWRlci0+c2NyaXB0KCksICptX3dvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCBtX3dvcmtlci5nZXQoKSwgc3RkOjpleGNoYW5nZShtX3BvcnQsIHsgfSkpOyAvLyBkZWxl
dGVzIHRoaXMuCi0gICAgfQorICAgIG1fY29tcGxldGlvbkhhbmRsZXIoeyBtX2xvYWRlci0+c2Ny
aXB0KCksIG1fbG9hZGVyLT5jZXJ0aWZpY2F0ZUluZm8oKSwgbV9sb2FkZXItPmNvbnRlbnRTZWN1
cml0eVBvbGljeSgpLCBtX2xvYWRlci0+Y3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSgpLCBtX2xv
YWRlci0+cmVmZXJyZXJQb2xpY3koKSwgeyB9IH0pOyAvLyBkZWxldGVzIHRoaXMuCiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgKaW5kZXggYWU1YjNiYjllYzUyMDc0
NTMzZWZkODQwOTJjZWVhOTk5ZjIwMTc5OS4uZDhlMjg3YTAxOTY3MzhmOWFlMTgzMjI2MjZiZDYz
NmM4NGQyMTc4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyU2NyaXB0TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMTEgKzI1LDkgQEAKIAogI3ByYWdtYSBv
bmNlCiAKLSNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9y
dElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIuaCIKICNp
bmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyTWFuYWdl
ci5oIgogI2luY2x1ZGUgIldvcmtlck9wdGlvbnMuaCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRM
b2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgpAQCAtMzks
MzIgKzM3LDI4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2hhcmVkV29ya2VyOwog
Y2xhc3MgV29ya2VyU2NyaXB0TG9hZGVyOwotCi1jbGFzcyBTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXI7Ci0KLXVzaW5nIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQgPSBzdGQ6OnBhaXI8V2ViQ29yZTo6
TWVzc2FnZVBvcnRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXI+Owor
c3RydWN0IFdvcmtlckZldGNoUmVzdWx0OwogCiBjbGFzcyBTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXIgOiBwcml2YXRlIFdvcmtlclNjcmlwdExvYWRlckNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyKGNvbnN0
IFVSTCYsIFNoYXJlZFdvcmtlciYsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiwgV29ya2VyT3B0
aW9ucyYmKTsKKyAgICBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIoVVJMJiYsIFNoYXJlZFdvcmtl
ciYsIFdvcmtlck9wdGlvbnMmJik7CisKKyAgICB2b2lkIGxvYWQoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXb3JrZXJGZXRjaFJlc3VsdCYmKT4mJik7CiAKLSAgICBTaGFyZWRXb3JrZXJTY3JpcHRM
b2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7
IH0KICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgU2hh
cmVkV29ya2VyJiB3b3JrZXIoKSB7IHJldHVybiBtX3dvcmtlci5nZXQoKTsgfQotICAgIGNvbnN0
IFdvcmtlck9wdGlvbnMmIG9wdGlvbnMoKSB7IHJldHVybiBtX29wdGlvbnM7IH0KKyAgICBjb25z
dCBXb3JrZXJPcHRpb25zJiBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAK
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAgICAgdm9pZCBub3RpZnlG
aW5pc2hlZCgpIGZpbmFsOwogCi0gICAgY29uc3QgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRl
bnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgY29uc3QgV29ya2VyT3B0aW9ucyBtX29wdGlvbnM7
CiAgICAgY29uc3QgUmVmPFNoYXJlZFdvcmtlcj4gbV93b3JrZXI7Ci0gICAgVHJhbnNmZXJyZWRN
ZXNzYWdlUG9ydCBtX3BvcnQ7CiAgICAgY29uc3QgUmVmPFdvcmtlclNjcmlwdExvYWRlcj4gbV9s
b2FkZXI7Ci0gICAgY29uc3QgUmVmPEFjdGl2ZURPTU9iamVjdDo6UGVuZGluZ0FjdGl2aXR5PFNo
YXJlZFdvcmtlcj4+IG1fcGVuZGluZ0FjdGl2aXR5OwogICAgIGNvbnN0IFVSTCBtX3VybDsKKyAg
ICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdvcmtlckZldGNoUmVzdWx0JiYpPiBtX2NvbXBsZXRp
b25IYW5kbGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wN2E5MGQ5ODA1MTI0YmVhYmMyZTY0
ZGQyMzA4NDlmMzYyOTg0N2M3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKQEAgLTAs
MCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNp
bmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyJiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI+IHNoYXJlZE1h
bmFnZXI7CisgICAgcmV0dXJuIHNoYXJlZE1hbmFnZXI7Cit9CisKK1NoYXJlZFdvcmtlclRocmVh
ZFByb3h5KiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2hhcmVkV29ya2VyKFNoYXJlZFdv
cmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikgY29uc3QKK3sKKyAgICByZXR1
cm4gbV93b3JrZXJNYXAuZ2V0KHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworfQorCit2b2lkIFNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzdG9wU2hhcmVkV29ya2VyKFNoYXJlZFdvcmtlcklk
ZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHdvcmtlciA9IG1f
d29ya2VyTWFwLnRha2Uoc2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0co
U2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0b3BTaGFyZWRXb3Jr
ZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHdvcmtlcj0lcCIsIHNoYXJl
ZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSwgd29ya2VyLmdldCgpKTsKKyAgICBpZiAoIXdv
cmtlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgd29ya2VyLT5zZXRBc1Rlcm1pbmF0aW5nT3JU
ZXJtaW5hdGVkKCk7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gZGVhbCB3
aXRoIHRoZSB0aHJlYWQgYmVpbmcgdW5yZXNwb25zaXZlIGhlcmUuCisKKyAgICBhdXRvJiB0aHJl
YWQgPSB3b3JrZXItPnRocmVhZCgpOworICAgIHRocmVhZC5zdG9wKFt3b3JrZXIgPSBXVEZNb3Zl
KHdvcmtlcildKCkgbXV0YWJsZSB7CisgICAgICAgIC8vIFNwaW4gdGhlIHJ1bmxvb3AgYmVmb3Jl
IHJlbGVhc2luZyB0aGUgc2hhcmVkIHdvcmtlciB0aHJlYWQgcHJveHksIGFzIHRoZXJlIHdvdWxk
IG90aGVyd2lzZSBiZQorICAgICAgICAvLyBhIHJhY2UgdG93YXJkcyBpdHMgZGVzdHJ1Y3Rpb24u
CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dvcmtlciA9IFdURk1vdmUod29ya2VyKV0geyB9
KTsKKyAgICB9KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c3RvcEFs
bFNoYXJlZFdvcmtlcnMoKQoreworICAgIHdoaWxlICghbV93b3JrZXJNYXAuaXNFbXB0eSgpKQor
ICAgICAgICBzdG9wU2hhcmVkV29ya2VyKG1fd29ya2VyTWFwLmJlZ2luKCktPmtleSk7Cit9CisK
K3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNldENvbm5lY3Rpb24oc3RkOjp1bmlx
dWVfcHRyPENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlQoIW1fY29ubmVj
dGlvbiB8fCBtX2Nvbm5lY3Rpb24tPmlzQ2xvc2VkKCkpOworICAgIG1fY29ubmVjdGlvbiA9IFdU
Rk1vdmUoY29ubmVjdGlvbik7Cit9CisKK2F1dG8gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6
OmNvbm5lY3Rpb24oKSBjb25zdCAtPiBDb25uZWN0aW9uKgoreworICAgIHJldHVybiBtX2Nvbm5l
Y3Rpb24uZ2V0KCk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnJlZ2lz
dGVyU2hhcmVkV29ya2VyVGhyZWFkKFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4mJiBwcm94
eSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIFJFTEVBU0VfTE9HKFNoYXJl
ZFdvcmtlciwgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpyZWdpc3RlclNoYXJlZFdvcmtl
clRocmVhZDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHByb3h5LT5pZGVudGlm
aWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IG1fd29ya2VyTWFwLmFkZChw
cm94eS0+aWRlbnRpZmllcigpLCBwcm94eS5jb3B5UmVmKCkpOworICAgIEFTU0VSVF9VTlVTRUQo
cmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICBwcm94eS0+dGhyZWFkKCkuc3RhcnQo
W10oY29uc3QgU3RyaW5nJiAvKmV4Y2VwdGlvbk1lc3NhZ2UqLykgeyB9KTsKK30KKwordm9pZCBT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVudChT
aGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFRyYW5zZmVycmVk
TWVzc2FnZVBvcnQmJiB0cmFuc2ZlcnJlZFBvcnQsIFN0cmluZyYmIHNvdXJjZU9yaWdpbikKK3sK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8qIHByb3h5ID0gU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVudDogc2hhcmVkV29ya2Vy
SWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgcHJveHk9JXAiLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVy
LnRvVUludDY0KCksIHByb3h5KTsKKyAgICBpZiAoIXByb3h5KQorICAgICAgICByZXR1cm47CisK
KyAgICBwcm94eS0+dGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFt0cmFuc2ZlcnJlZFBvcnQg
PSBXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCksIHNvdXJjZU9yaWdpbiA9IFdURk1vdmUoc291cmNl
T3JpZ2luKS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIG11
dGFibGUgeworICAgICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgZG93bmNh
c3Q8U2hhcmVkV29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnBvc3RD
b25uZWN0RXZlbnQoV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpLCBXVEZNb3ZlKHNvdXJjZU9yaWdp
bikpOworICAgIH0pOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpDb25u
ZWN0aW9uOjp0ZXJtaW5hdGVTaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFy
ZWRXb3JrZXJJZGVudGlmaWVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
UkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNv
bm5lY3Rpb246OnRlcm1pbmF0ZVNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0l
IiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnN0b3BTaGFyZWRXb3JrZXIoc2hhcmVk
V29ya2VySWRlbnRpZmllcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMzgyNTI4OTM3M2UwZTY4NjFi
OWVjZTdkN2JlOWMxMzE2YzkwZTIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oCkBAIC0w
LDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNoYXJl
ZFdvcmtlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0Lmgi
CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTsKKworY2xhc3MgU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXIgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlciYgc2luZ2xldG9uKCk7CisKKyAgICBTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eSogc2hhcmVkV29ya2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIpIGNvbnN0OworICAgIHZvaWQg
c3RvcFNoYXJlZFdvcmtlcihTaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHN0b3BBbGxTaGFyZWRXb3JrZXJzKCk7CisKKyAgICBjbGFzcyBDb25uZWN0aW9u
IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAg
ICB2aXJ0dWFsIH5Db25uZWN0aW9uKCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBlc3RhYmxp
c2hDb25uZWN0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgPSAwOworICAgICAgICB2
aXJ0dWFsIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFNoYXJlZFdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpID0gMDsKKyAgICAgICAgYm9vbCBp
c0Nsb3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDbG9zZWQ7IH0KKworICAgIHByb3RlY3RlZDoK
KyAgICAgICAgdm9pZCBzZXRBc0Nsb3NlZCgpIHsgbV9pc0Nsb3NlZCA9IHRydWU7IH0KKworICAg
ICAgICAvLyBJUEMgbWVzc2FnZSBoYW5kbGVycy4KKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBwb3N0Q29ubmVjdEV2ZW50KFNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFRyYW5zZmVycmVkTWVz
c2FnZVBvcnQmJiwgU3RyaW5nJiYgc291cmNlT3JpZ2luKTsKKyAgICAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB0ZXJtaW5hdGVTaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllcik7CisK
KyAgICBwcml2YXRlOgorICAgICAgICBib29sIG1faXNDbG9zZWQgeyBmYWxzZSB9OworICAgIH07
CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbm5lY3Rpb24oc3RkOjp1bmlxdWVfcHRy
PENvbm5lY3Rpb24+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIENvbm5lY3Rpb24qIGNvbm5lY3Rp
b24oKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVnaXN0ZXJTaGFyZWRXb3Jr
ZXJUaHJlYWQoUmVmPFNoYXJlZFdvcmtlclRocmVhZFByb3h5PiYmKTsKKworcHJpdmF0ZToKKyAg
ICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI+
OworCisgICAgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIEhhc2hNYXA8U2hh
cmVkV29ya2VySWRlbnRpZmllciwgUmVmPFNoYXJlZFdvcmtlclRocmVhZFByb3h5Pj4gbV93b3Jr
ZXJNYXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkuY3BwCmluZGV4IDliZDk3ODNkN2E3ZTU4ZTY3YjZiODBiNWQ1NDRmZWMyZWNmMmNh
ZjUuLjI2YmE3YjY4YmNlZDJlOTJlMTY3ZTc3OWM5Y2Q1NWQzZDNiMTc4NzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFk
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hh
cmVkV29ya2VyVGhyZWFkUHJveHkuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDk0ICsyOCw3MiBAQAogCiAjaW5jbHVkZSAiQ2Fj
aGVTdG9yYWdlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJFcnJvckV2ZW50LmgiCisjaW5jbHVkZSAi
RXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkZyYW1lLmgi
CisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5o
IgorI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50Lmgi
CiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5k
bGVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgorI2luY2x1ZGUgIlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyR2xvYmFs
U2NvcGUuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlICJXb3Jr
ZXJGZXRjaFJlc3VsdC5oIgorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0lkZW50aWZpZXJzRmFjdG9yeS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShTaGFy
ZWRXb3JrZXImIHNoYXJlZFdvcmtlcikKLSAgICA6IG1fc2hhcmVkV29ya2VyKHNoYXJlZFdvcmtl
cikKLSAgICAsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChzaGFyZWRXb3JrZXIuc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKQotICAgICwgbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yKHNoYXJlZFdv
cmtlci5pZGVudGlmaWVyRm9ySW5zcGVjdG9yKCkpCitzdGF0aWMgSGFzaFNldDxTaGFyZWRXb3Jr
ZXJUaHJlYWRQcm94eSo+JiBhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkKIHsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSo+PiBz
ZXQ7CisgICAgcmV0dXJuIHNldDsKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6
c3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgY29uc3QgU2Ny
aXB0QnVmZmVyJiBzY3JpcHRCdWZmZXIsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLCBib29sIHNo
b3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgQ3Jvc3NPcmln
aW5FbWJlZGRlclBvbGljeSYgY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwgTW9ub3RvbmljVGlt
ZSB0aW1lT3JpZ2luLCBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB3
b3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RDcmVkZW50aWFscyBjcmVkZW50aWFscywgSlNDOjpSdW50
aW1lRmxhZ3MgcnVudGltZUZsYWdzKQorc3RhdGljIFdvcmtlclBhcmFtZXRlcnMgZ2VuZXJhdGVX
b3JrZXJQYXJhbWV0ZXJzKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBXb3JrZXJGZXRjaFJl
c3VsdCYgd29ya2VyRmV0Y2hSZXN1bHQsIFdvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zLCBj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIGlmICht
X2Fza2VkVG9UZXJtaW5hdGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gcGFyYW1ldGVy
cyA9IFdvcmtlclBhcmFtZXRlcnMgeworICAgIHJldHVybiBXb3JrZXJQYXJhbWV0ZXJzIHsKICAg
ICAgICAgc2NyaXB0VVJMLAotICAgICAgICBuYW1lLAotICAgICAgICBtX2lkZW50aWZpZXJGb3JJ
bnNwZWN0b3IsCisgICAgICAgIHdvcmtlck9wdGlvbnMubmFtZSwKKyAgICAgICAgInNoYXJlZHdv
cmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIo
KSwKICAgICAgICAgdXNlckFnZW50LAotICAgICAgICBpc09ubGluZSwKLSAgICAgICAgY29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLAotICAgICAgICBzaG91bGRCeXBhc3NNYWlu
V29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksCi0gICAgICAgIGNyb3NzT3JpZ2luRW1iZWRkZXJQ
b2xpY3ksCi0gICAgICAgIHRpbWVPcmlnaW4sCi0gICAgICAgIHJlZmVycmVyUG9saWN5LAotICAg
ICAgICB3b3JrZXJUeXBlLAotICAgICAgICBjcmVkZW50aWFscywKLSAgICAgICAgbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5zZXR0aW5nc1ZhbHVlcygpCisgICAgICAgIHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5pc09uTGluZSgpLAorICAgICAgICB3b3JrZXJGZXRj
aFJlc3VsdC5jb250ZW50U2VjdXJpdHlQb2xpY3ksCisgICAgICAgIGZhbHNlLAorICAgICAgICB3
b3JrZXJGZXRjaFJlc3VsdC5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LAorICAgICAgICBNb25v
dG9uaWNUaW1lOjpub3coKSwKKyAgICAgICAgcGFyc2VSZWZlcnJlclBvbGljeSh3b3JrZXJGZXRj
aFJlc3VsdC5yZWZlcnJlclBvbGljeSwgUmVmZXJyZXJQb2xpY3lTb3VyY2U6OkhUVFBIZWFkZXIp
LnZhbHVlX29yKFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZyksCisgICAgICAgIHdvcmtlck9w
dGlvbnMudHlwZSwKKyAgICAgICAgd29ya2VyT3B0aW9ucy5jcmVkZW50aWFscywKKyAgICAgICAg
ZG9jdW1lbnQuc2V0dGluZ3NWYWx1ZXMoKQogICAgIH07Ci0KLSAgICBpZiAoIW1fd29ya2VyVGhy
ZWFkKSB7Ci0gICAgICAgIG1fd29ya2VyVGhyZWFkID0gU2hhcmVkV29ya2VyVGhyZWFkOjpjcmVh
dGUoU2hhcmVkV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgcGFyYW1ldGVycywgc2NyaXB0
QnVmZmVyLCAqdGhpcywgKnRoaXMsICp0aGlzLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1h
bCwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT50b3BPcmlnaW4oKSwgbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5pZGJDb25uZWN0aW9uUHJveHkoKSwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5zb2NrZXRQcm92aWRlcigpLCBydW50aW1lRmxhZ3MpOwotICAgICAgICBtX3dvcmtlclRocmVh
ZC0+c3RhcnQoKTsKLSAgICB9Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnRl
cm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCkKLXsKLSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRl
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2Fza2VkVG9UZXJtaW5hdGUgPSB0cnVlOwotICAg
IGlmIChtX3dvcmtlclRocmVhZCkKLSAgICAgICAgbV93b3JrZXJUaHJlYWQtPnN0b3AobnVsbHB0
cik7CiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3Jr
ZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UpCitTaGFyZWRX
b3JrZXJUaHJlYWRQcm94eTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHkoVW5pcXVlUmVmPFBhZ2U+
JiYgcGFnZSwgU2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBj
b25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIFdv
cmtlckZldGNoUmVzdWx0JiYgd29ya2VyRmV0Y2hSZXN1bHQsIFdvcmtlck9wdGlvbnMmJiB3b3Jr
ZXJPcHRpb25zLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXIm
IGNhY2hlU3RvcmFnZVByb3ZpZGVyKQorICAgIDogbV9wYWdlKFdURk1vdmUocGFnZSkpCisgICAg
LCBtX2RvY3VtZW50KCptX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCisgICAgLCBtX3dv
cmtlclRocmVhZChTaGFyZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZShzaGFyZWRXb3JrZXJJZGVudGlm
aWVyLCBnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMoc2NyaXB0VVJMLCB3b3JrZXJGZXRjaFJlc3Vs
dCwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSwgdXNlckFnZW50LCBtX2RvY3VtZW50KSwgV1RGTW92
ZSh3b3JrZXJGZXRjaFJlc3VsdC5zY3JpcHQpLCAqdGhpcywgKnRoaXMsICp0aGlzLCBXb3JrZXJU
aHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgY2xpZW50T3JpZ2luLnRvcE9yaWdpbi5zZWN1cml0eU9y
aWdpbigpLCBtX2RvY3VtZW50LT5pZGJDb25uZWN0aW9uUHJveHkoKSwgbV9kb2N1bWVudC0+c29j
a2V0UHJvdmlkZXIoKSwgSlNDOjpSdW50aW1lRmxhZ3M6OmNyZWF0ZUFsbEVuYWJsZWQoKSkpCisg
ICAgLCBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyKGNhY2hlU3RvcmFnZVByb3ZpZGVyKQogewotICAg
IC8vIEZJWE1FOiBTaGFyZWRXb3JrZXIgZG9lc24ndCBoYXZlIHBvc3RNZXNzYWdlLCBzbyB0aGlz
IG1pZ2h0IG5vdCBiZSBuZWNlc3NhcnkuCi0gICAgcG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3Bl
KFttZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKV0oYXV0byYgc2NyaXB0Q29udGV4dCkgbXV0YWJs
ZSB7Ci0gICAgICAgIGF1dG8mIGNvbnRleHQgPSBkb3duY2FzdDxTaGFyZWRXb3JrZXJHbG9iYWxT
Y29wZT4oc2NyaXB0Q29udGV4dCk7Ci0gICAgICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9ydDo6
ZW50YW5nbGVQb3J0cyhzY3JpcHRDb250ZXh0LCBXVEZNb3ZlKG1lc3NhZ2UudHJhbnNmZXJyZWRQ
b3J0cykpOwotICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVh
dGUoV1RGTW92ZShwb3J0cyksIG1lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpKSk7Ci0g
ICAgfSk7Ci19CisgICAgQVNTRVJUKCFhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkuY29u
dGFpbnModGhpcykpOworICAgIGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKS5hZGQodGhp
cyk7CiAKLXZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RUYXNrVG9Xb3JrZXJHbG9i
YWxTY29wZShGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJiB0YXNrKQot
ewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBtX3dv
cmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFdURk1vdmUodGFzaykpOwotfQotCi1ib29s
IFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAotewot
ICAgIHJldHVybiBtX2hhc1BlbmRpbmdBY3Rpdml0eSAmJiAhbV9hc2tlZFRvVGVybWluYXRlOwor
ICAgIHN0YXRpYyBib29sIGFkZGVkTGlzdGVuZXI7CisgICAgaWYgKCFhZGRlZExpc3RlbmVyKSB7
CisgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5hZGRPbmxp
bmVTdGF0ZUNoYW5nZUxpc3RlbmVyKCZuZXR3b3JrU3RhdGVDaGFuZ2VkKTsKKyAgICAgICAgYWRk
ZWRMaXN0ZW5lciA9IHRydWU7CisgICAgfQogfQogCi12b2lkIFNoYXJlZFdvcmtlclRocmVhZFBy
b3h5Ojp3b3JrZXJPYmplY3REZXN0cm95ZWQoKQorU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6On5T
aGFyZWRXb3JrZXJUaHJlYWRQcm94eSgpCiB7Ci0gICAgbV9zaGFyZWRXb3JrZXIgPSBudWxscHRy
OwotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXNdIChhdXRvJikg
ewotICAgICAgICBtX21heUJlRGVzdHJveWVkID0gdHJ1ZTsKLSAgICAgICAgaWYgKG1fd29ya2Vy
VGhyZWFkKQotICAgICAgICAgICAgdGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgp
OwotICAgIH0pOworICAgIEFTU0VSVChhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkuY29u
dGFpbnModGhpcykpOworICAgIGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKS5yZW1vdmUo
dGhpcyk7CiB9CiAKIFNoYXJlZFdvcmtlcklkZW50aWZpZXIgU2hhcmVkV29ya2VyVGhyZWFkUHJv
eHk6OmlkZW50aWZpZXIoKSBjb25zdApAQCAtMTI1LDg4ICsxMDMsNTQgQEAgU2hhcmVkV29ya2Vy
SWRlbnRpZmllciBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6aWRlbnRpZmllcigpIGNvbnN0CiAK
IHZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6Om5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShi
b29sIGlzT25saW5lKQogewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCisgICAgaWYgKG1f
aXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFt
X3dvcmtlclRocmVhZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV93b3JrZXJUaHJlYWQtPnJ1
bkxvb3AoKS5wb3N0VGFzayhbaXNPbmxpbmVdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSB7CisgICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShb
aXNPbmxpbmVdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgIGF1
dG8mIGdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpOwog
ICAgICAgICBnbG9iYWxTY29wZS5zZXRJc09ubGluZShpc09ubGluZSk7Ci0gICAgICAgIGdsb2Jh
bFNjb3BlLmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShpc09ubGluZSA/IGV2ZW50TmFtZXMo
KS5vbmxpbmVFdmVudCA6IGV2ZW50TmFtZXMoKS5vZmZsaW5lRXZlbnQsIEV2ZW50OjpDYW5CdWJi
bGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwotICAgIH0pOwotfQotCi12b2lkIFNo
YXJlZFdvcmtlclRocmVhZFByb3h5OjpzdXNwZW5kRm9yQmFja0ZvcndhcmRDYWNoZSgpCi17Ci0K
LX0KLQotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cmVzdW1lRm9yQmFja0ZvcndhcmRD
YWNoZSgpCi17Ci0KKyAgICAgICAgZ2xvYmFsU2NvcGUuZXZlbnRMb29wKCkucXVldWVUYXNrKFRh
c2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW2dsb2JhbFNjb3BlID0gUmVmIHsgZ2xvYmFsU2Nv
cGUgfSwgaXNPbmxpbmVdIHsKKyAgICAgICAgICAgIGdsb2JhbFNjb3BlLT5kaXNwYXRjaEV2ZW50
KEV2ZW50OjpjcmVhdGUoaXNPbmxpbmUgPyBldmVudE5hbWVzKCkub25saW5lRXZlbnQgOiBldmVu
dE5hbWVzKCkub2ZmbGluZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2Fu
Y2VsYWJsZTo6Tm8pKTsKKyAgICAgICAgfSk7CisgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVs
dE1vZGUoKSk7CiB9CiAKIHZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RFeGNlcHRp
b25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewotICAgIG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXMsIGVycm9yTWVzc2FnZSA9IGVy
cm9yTWVzc2FnZS5pc29sYXRlZENvcHkoKSwgc291cmNlVVJMID0gc291cmNlVVJMLmlzb2xhdGVk
Q29weSgpLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXJdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JikgewotICAgICAgICBpZiAoIW1fc2hhcmVkV29ya2VyKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIC8vIFdlIGRvbid0IGJvdGhlciBjaGVja2luZyB0aGUgYXNrZWRUb1Rlcm1pbmF0
ZSgpIGZsYWcgaGVyZSwgYmVjYXVzZSBleGNlcHRpb25zIHNob3VsZCAqYWx3YXlzKiBiZSByZXBv
cnRlZCBldmVuIGlmIHRoZSB0aHJlYWQgaXMgdGVybWluYXRlZC4KLSAgICAgICAgLy8gVGhpcyBp
cyBpbnRlbnRpb25hbGx5IGRpZmZlcmVudCB0aGFuIHRoZSBiZWhhdmlvciBpbiBNZXNzYWdlV29y
a2VyVGFzaywgYmVjYXVzZSB0ZXJtaW5hdGVkIHdvcmtlcnMgbm8gbG9uZ2VyIGRlbGl2ZXIgbWVz
c2FnZXMgKHNlY3Rpb24gNC42IG9mIHRoZSBXZWJXb3JrZXIgc3BlYyksIGJ1dCB0aGV5IGRvIHJl
cG9ydCBleGNlcHRpb25zLgotICAgICAgICBBY3RpdmVET01PYmplY3Q6OnF1ZXVlVGFza1RvRGlz
cGF0Y2hFdmVudCgqbV9zaGFyZWRXb3JrZXIsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwg
RXJyb3JFdmVudDo6Y3JlYXRlKGVycm9yTWVzc2FnZSwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIHsgfSkpOwotICAgIH0pOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclRocmVh
ZFByb3h5Ojp3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgpCi17Ci0gICAgbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpc10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7
Ci0gICAgICAgIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwoKTsKLSAgICB9KTsK
LX0KLQotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlck9i
amVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKQotewotCi19Ci0KLXZvaWQgU2hhcmVkV29y
a2VyVGhyZWFkUHJveHk6OmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sKQotewot
fQorICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIGlmICghbV93b3JrZXJUaHJlYWQt
PmlzSW5TdGF0aWNTY3JpcHRFdmFsdWF0aW9uKCkpCisgICAgICAgIHJldHVybjsKIAotdm9pZCBT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wgaGFzUGVu
ZGluZ0FjdGl2aXR5KQotewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2so
W3RoaXMsIGhhc1BlbmRpbmdBY3Rpdml0eV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0g
ICAgICAgIG1faGFzUGVuZGluZ0FjdGl2aXR5ID0gaGFzUGVuZGluZ0FjdGl2aXR5OworICAgIGNh
bGxPbk1haW5UaHJlYWQoW3NoYXJlZFdvcmtlcklkZW50aWZpZXIgPSBtX3dvcmtlclRocmVhZC0+
aWRlbnRpZmllcigpLCBlcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCks
IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMID0gc291cmNlVVJMLmlzb2xhdGVk
Q29weSgpXSB7CisgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAgICAgIGNvbm5l
Y3Rpb24tPnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJJZGVudGlmaWVy
LCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMKTsKICAg
ICB9KTsKIH0KIAogUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IFNoYXJlZFdvcmtlclRo
cmVhZFByb3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+
KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIHJldHVybiBkb2N1bWVudC5wYWdlKCkt
PmNhY2hlU3RvcmFnZVByb3ZpZGVyKCkuY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpOwor
ICAgIGlmICghbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uKQorICAgICAgICBtX2NhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24gPSBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyLmNyZWF0ZUNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24oKTsKKyAgICByZXR1cm4gbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uOwogfQogCiBS
ZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbj4gU2hhcmVkV29ya2Vy
VGhyZWFkUHJveHk6OmNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24o
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byYgZG9jdW1lbnQgPSBk
b3duY2FzdDxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgaWYgKCFk
b2N1bWVudC5wYWdlKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBkb2N1
bWVudC5wYWdlKCktPmxpYldlYlJUQ1Byb3ZpZGVyKCkuY3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyQ29ubmVjdGlvbigpOworICAgIHJldHVybiBtX3BhZ2UtPmxpYldlYlJUQ1Byb3Zp
ZGVyKCkuY3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpOwogfQog
CiB2b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5Ojpwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQogewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+cG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGFz
ayA9IFdURk1vdmUodGFzayksIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSBtdXRh
YmxlIHsKKyAgICAgICAgdGFzay5wZXJmb3JtVGFzayhwcm90ZWN0ZWRUaGlzLT5tX2RvY3VtZW50
LmdldCgpKTsKKyAgICB9KTsKIH0KIAogYm9vbCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9z
dFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrJiYgdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQogewotICAgIGlmIChtX2Fz
a2VkVG9UZXJtaW5hdGUpCisgICAgaWYgKG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0
VGFza0Zvck1vZGUoV1RGTW92ZSh0YXNrKSwgbW9kZSk7CkBAIC0yMjMsMTYgKzE2NywxMCBAQCB2
b2lkIFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEJ5
V2ViSW5zcGVjdG9yKGJvb2wpCiAKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6
d29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpCit2b2lkIFNoYXJlZFdvcmtlclRo
cmVhZFByb3h5OjpuZXR3b3JrU3RhdGVDaGFuZ2VkKGJvb2wgaXNPbkxpbmUpCiB7Ci0gICAgLy8g
VGhpcyBpcyBhbHdheXMgdGhlIGxhc3QgdGFzayB0byBiZSBwZXJmb3JtZWQsIHNvIHRoZSBwcm94
eSBpcyBub3QgbmVlZGVkIGZvciBjb21tdW5pY2F0aW9uCi0gICAgLy8gaW4gZWl0aGVyIHNpZGUg
YW55IG1vcmUuIEhvd2V2ZXIsIHRoZSBXb3JrZXIgb2JqZWN0IG1heSBzdGlsbCBleGlzdCwgYW5k
IGl0IGFzc3VtZXMgdGhhdCB0aGUgcHJveHkgZXhpc3RzLCB0b28uCi0gICAgbV9hc2tlZFRvVGVy
bWluYXRlID0gdHJ1ZTsKLSAgICBtX3dvcmtlclRocmVhZCA9IG51bGxwdHI7Ci0KLSAgICAvLyBU
aGlzIGJhbGFuY2VzIHRoZSBvcmlnaW5hbCByZWYgaW4gY29uc3RydWN0aW9uLgotICAgIGlmICht
X21heUJlRGVzdHJveWVkKQotICAgICAgICBkZXJlZigpOworICAgIGZvciAoYXV0byogcHJveHkg
OiBhbGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkpCisgICAgICAgIHByb3h5LT5ub3RpZnlO
ZXR3b3JrU3RhdGVDaGFuZ2UoaXNPbkxpbmUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJl
ZFdvcmtlclRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250
ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmgKaW5kZXggNGU5MmU0NTYxNzFjZTkxYWViODc1
YTM1ZTc1OWI5ZWM1YjU0MWVmNy4uMzM2NDI0MGFiYmI1OWI4ZDFkMDM5ZmVlYmQwNWIxNGEwMjcz
N2FkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9T
aGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw3ICsyNyw2IEBACiAKICNp
bmNsdWRlICJTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV29ya2VyRGVidWdn
ZXJQcm94eS5oIgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlUHJveHkuaCIKICNpbmNsdWRl
ICJXb3JrZXJMb2FkZXJQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlck9iamVjdFByb3h5LmgiCiAj
aW5jbHVkZSAiV29ya2VyT3B0aW9ucy5oIgpAQCAtMzUsNTAgKzM0LDU0IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgQ2FjaGVTdG9yYWdlUHJvdmlkZXI7CitjbGFzcyBQYWdlOwog
Y2xhc3MgU2hhcmVkV29ya2VyOwogY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkOwogCi1jbGFzcyBT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eT4sIHB1YmxpYyBXb3JrZXJHbG9iYWxTY29wZVByb3h5
LCBwdWJsaWMgV29ya2VyT2JqZWN0UHJveHksIHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94eSwgcHVi
bGljIFdvcmtlckRlYnVnZ2VyUHJveHkgeworc3RydWN0IENsaWVudE9yaWdpbjsKK3N0cnVjdCBX
b3JrZXJGZXRjaFJlc3VsdDsKKworY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkgZmluYWwg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkV29ya2VyVGhyZWFkUHJveHk+LCBw
dWJsaWMgV29ya2VyT2JqZWN0UHJveHksIHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94eSwgcHVibGlj
IFdvcmtlckRlYnVnZ2VyUHJveHkgewogcHVibGljOgotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4u
IEFyZ3M+IHN0YXRpYyBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSYgY3JlYXRlKEFyZ3MmJi4uLiBh
cmdzKSB7IHJldHVybiAqbmV3IFNoYXJlZFdvcmtlclRocmVhZFByb3h5KHN0ZDo6Zm9yd2FyZDxB
cmdzPihhcmdzKS4uLik7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMg
UmVmPFNoYXJlZFdvcmtlclRocmVhZFByb3h5PiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkoc3RkOjpmb3J3YXJkPEFy
Z3M+KGFyZ3MpLi4uKSk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB+U2hhcmVkV29ya2VyVGhyZWFk
UHJveHkoKTsKIAogICAgIFNoYXJlZFdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0
OwotICAgIFNoYXJlZFdvcmtlclRocmVhZCogdGhyZWFkKCkgeyByZXR1cm4gbV93b3JrZXJUaHJl
YWQuZ2V0KCk7IH0KKyAgICBTaGFyZWRXb3JrZXJUaHJlYWQmIHRocmVhZCgpIHsgcmV0dXJuIG1f
d29ya2VyVGhyZWFkOyB9CiAKLSAgICB2b2lkIHN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoY29uc3Qg
VVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQsIGJvb2wgaXNPbmxpbmUsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc291cmNlQ29kZSwgY29uc3Qg
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBhc3NN
YWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnN0IENyb3NzT3JpZ2luRW1iZWRkZXJQ
b2xpY3kmLCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIFJlZmVycmVyUG9saWN5LCBXb3JrZXJU
eXBlLCBGZXRjaFJlcXVlc3RDcmVkZW50aWFscywgSlNDOjpSdW50aW1lRmxhZ3MpIGZpbmFsOwot
ICAgIHZvaWQgd29ya2VyT2JqZWN0RGVzdHJveWVkKCkgZmluYWw7Ci0gICAgYm9vbCBoYXNQZW5k
aW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlckdsb2Jh
bFNjb3BlKCkgZmluYWw7CisgICAgYm9vbCBpc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKCkgY29u
c3QgeyByZXR1cm4gbV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkOyB9CisgICAgdm9pZCBzZXRB
c1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKCkgeyBtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQg
PSB0cnVlOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2hhcmVkV29ya2VyVGhyZWFkUHJv
eHkoU2hhcmVkV29ya2VyJik7Ci0KLSAgICB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVk
SW50ZXJuYWwoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShV
bmlxdWVSZWY8UGFnZT4mJiwgU2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgQ2xpZW50T3Jp
Z2luJiwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIFdvcmtlckZldGNoUmVzdWx0JiYsIFdvcmtlck9w
dGlvbnMmJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIENhY2hlU3RvcmFnZVByb3ZpZGVyJik7
CiAKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cyYmKSBmaW5hbDsKLSAgICB2b2lkIHBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29w
ZShGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJikgZmluYWw7Ci0gICAg
dm9pZCBub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9vbCBpc09ubGluZSkgZmluYWw7Ci0gICAg
dm9pZCBzdXNwZW5kRm9yQmFja0ZvcndhcmRDYWNoZSgpIGZpbmFsOwotICAgIHZvaWQgcmVzdW1l
Rm9yQmFja0ZvcndhcmRDYWNoZSgpIGZpbmFsOworICAgIC8vIFdvcmtlck9iamVjdFByb3h5Lgog
ICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkwpIGZpbmFsOwotICAgIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWQoKSBm
aW5hbDsKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVdpdGhNZXNz
YWdlUG9ydHMmJikgZmluYWw7Ci0gICAgdm9pZCBjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmpl
Y3QoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpIGZpbmFsOwotICAgIHZvaWQgcmVwb3J0UGVuZGlu
Z0FjdGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KSBmaW5hbDsKKyAgICB2b2lkIHBvc3RN
ZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJikgZmluYWwgeyB9
CisgICAgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgpIGZpbmFsIHsgfQorICAgIHZv
aWQgY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wpIGZpbmFsIHsgfQorICAgIHZv
aWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wpIGZpbmFsIHsgfQorCisgICAgLy8gV29ya2Vy
TG9hZGVyUHJveHkuCiAgICAgUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IGNyZWF0ZUNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24oKSBmaW5hbDsKICAgICBSZWZQdHI8UlRDRGF0YUNoYW5uZWxS
ZW1vdGVIYW5kbGVyQ29ubmVjdGlvbj4gY3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVy
Q29ubmVjdGlvbigpIGZpbmFsOwogICAgIHZvaWQgcG9zdFRhc2tUb0xvYWRlcihTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrJiYpIGZpbmFsOwogICAgIGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9X
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYs
IGNvbnN0IFN0cmluZyYgbW9kZSkgZmluYWw7CisKKyAgICAvLyBXb3JrZXJEZWJ1Z2dlclByb3h5
LgogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb0RlYnVnZ2VyKGNvbnN0IFN0cmluZyYpIGZpbmFsOwog
ICAgIHZvaWQgc2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3BlY3Rvcihib29sKSBm
aW5hbDsKIAotICAgIFdlYWtQdHI8U2hhcmVkV29ya2VyPiBtX3NoYXJlZFdvcmtlcjsKLSAgICBS
ZWZQdHI8U2hhcmVkV29ya2VyVGhyZWFkPiBtX3dvcmtlclRocmVhZDsKLSAgICBjb25zdCBSZWZQ
dHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwotICAg
IGNvbnN0IFN0cmluZyBtX2lkZW50aWZpZXJGb3JJbnNwZWN0b3I7Ci0gICAgYm9vbCBtX2Fza2Vk
VG9UZXJtaW5hdGUgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9oYXNQZW5kaW5nQWN0aXZpdHkgeyBm
YWxzZSB9OwotICAgIGJvb2wgbV9tYXlCZURlc3Ryb3llZCB7IGZhbHNlIH07CisgICAgc3RhdGlj
IHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZChib29sIGlzT25MaW5lKTsKKyAgICB2b2lkIG5vdGlm
eU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25saW5lKTsKKworICAgIFVuaXF1ZVJlZjxQYWdl
PiBtX3BhZ2U7CisgICAgUmVmPERvY3VtZW50PiBtX2RvY3VtZW50OworICAgIFJlZjxTaGFyZWRX
b3JrZXJUaHJlYWQ+IG1fd29ya2VyVGhyZWFkOworICAgIENhY2hlU3RvcmFnZVByb3ZpZGVyJiBt
X2NhY2hlU3RvcmFnZVByb3ZpZGVyOworICAgIFJlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
PiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247CisgICAgYm9vbCBtX2lzVGVybWluYXRpbmdPclRl
cm1pbmF0ZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VM
aXN0cy50eHQKaW5kZXggNzU2ZGE4OGI0NWY3MDQyZjQyM2I3MzRjNzY0ZTY1NjZkNDQ2ZWZhZi4u
MjlmNGM3ODE4MTgwZGUyY2IyNDk1MDcyZTg0NjBhNTBhZDM2NGE0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMu
dHh0CkBAIC0yOCw2ICsyOCw3IEBAIHNldChXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAg
ICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMiCiAgICAgIiR7V0VC
S0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiCiAgICAgIiR7
V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlciIKKyAgICAiJHtXRUJLSVRf
RElSfS9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZSIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vz
cy9jYWNoZSIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlIgpAQCAt
MjAyLDYgKzIwMyw5IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKICAgICBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbgogICAgIE5ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCiAKKyAg
ICBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbgorICAgIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uCisKICAgICBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VNYW5hZ2VyU2V0CiAKICAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uCkBAIC0zMDUsNiArMzA5LDggQEAgc2V0KFdlYktpdF9NRVNTQUdFU19J
Tl9GSUxFUwogCiAgICAgV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGlt
ZU1lZGlhU291cmNlTWFuYWdlcgogCisgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbgorICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uCiAgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q2xpZW50Q29ubmVjdGlvbgogICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3QKaW5kZXggNGM2NjIyMGNmMTIyYTUzYjc0NjlkNDQwMGM3Y2RkYjIzNWM4Yjc0OS4u
NzIyOWMxYjk4NzA4ODgxYjdiYWVjM2NmN2EwMjQ3MzU3MmUzNWRlMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtOTEsNiArOTEsOCBAQCAk
KFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJE
b3dubG9hZFRhc2subWVzc2FnZXMuaQogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIp
L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNl
dC5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29y
a1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4KQEAgLTIx
Nyw2ICsyMTksOCBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
eHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3BlZWNoL1NwZWVjaFJl
Y29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24ubWVzc2FnZXMu
aW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQ
Uk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJB
dXRoblByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBlM2I1NTg0MGFlMWVhZjU3ZjVlYmY3
NTQyZTVlMWZkNDBlNWRkNGQxLi5hODYzMjgxNDdiNTZjNWM1NjBhYTVhYmEzOWJmYWQzMjQ1YzI2
MTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKQEAgLTYwNyw2ICs2MDcsMTggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9XZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdC9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVz
c2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVz
c2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29y
a2VyU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25N
ZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTb2NrZXRDaGFu
bmVsTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9XZWJTb2NrZXRDaGFubmVsTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTb2NrZXRDaGFubmVsTWVzc2FnZXNSZXBsaWVz
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA3YWQ0OWUzNzM1ZjRiNDc4YzQxNmQ5
Mjk1YzEzOWJlOThmZDZjZTRhLi4zNTFmZmFlMGE1ODY2MGMxZDEyZmY5YWNkODc3ZDI3YzUxYzA3
ZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xMzMsNiArMTMzLDggQEAgTUVT
U0FHRV9SRUNFSVZFUlMgPSBcCiAJTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRG93bmxvYWRUYXNrIFwKIAlOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2sgXAogCU5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIFwKKwlOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbiBcCisJTmV0d29ya1Byb2Nlc3MvU2hhcmVk
V29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gXAogCU5ldHdv
cmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0gXAogCU5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzIFwKIAlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIgXApAQCAtMjI1
LDYgKzIyNyw4IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9T
cGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlciBcCisJV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBc
CisJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24gXAog
CVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBcCiAJV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYTM0Zjc5YmRlM2UwODE2
OTZkNzNhNTVmYmY1OTA1OGJmNmQ4ZjM3OS4uYzdiMTdmZDcwNzg1NGIxMjg0OThkMTExOGY0ZTZl
N2Q1YjNkODVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTY2LDYgKzY2LDEx
IEBACiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtl
clNlcnZlci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCIK
KyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCisjaW5j
bHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRUUENvb2tp
ZUFjY2VwdFBvbGljeS5oPgpAQCAtMTMyLDYgKzEzNyw3IEBAIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYg
bmV0CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGVzdGFibGlzaFNXU2VydmVyQ29u
bmVjdGlvbigpOwogI2VuZGlmCisgICAgZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbigpOwogfQogCiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fk5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKCkKQEAgLTE2Niw2ICsxNzIsNyBAQCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6fk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdW5yZWdpc3RlclNXQ29ubmVjdGlvbigpOwogI2VuZGlm
CisgICAgdW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKIH0KIAogdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzVXBsb2FkU3RhdGVDaGFuZ2VkKGJvb2wgaGFz
VXBsb2FkKQpAQCAtMjc1LDYgKzI4MiwxNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3RpbwogICAg
IH0KICNlbmRpZgogCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1l
c3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpIHsKKyAgICAgICAgaWYgKG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbikKKyAgICAgICAg
ICAgIG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVz
c2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgaWYgKG1f
c2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24pCisgICAgICAgICAgICBtX3NoYXJlZFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RF
X1VJKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkKICAgICAg
ICAgcmV0dXJuIHBheW1lbnRDb29yZGluYXRvcigpLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rp
b24sIGRlY29kZXIpOwpAQCAtMzk4LDkgKzQxNiw4IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uID0gbnVs
bHB0cjsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogI2VuZGlmCisgICAg
bV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7CiAKICAgICAvLyBQcm90
ZWN0IG91cnNlbGYgYXMgd2UgbWlnaHQgYmUgb3RoZXJ3aXNlIGJlIGRlbGV0ZWQgZHVyaW5nIHRo
aXMgZnVuY3Rpb24uCiAgICAgUmVmPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBwcm90
ZWN0b3IoKnRoaXMpOwpAQCAtNDQxLDYgKzQ1OCw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdW5yZWdpc3RlclNXQ29ubmVjdGlvbigpOwogI2Vu
ZGlmCisgICAgdW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKIAogI2lmIEVOQUJM
RShBUFBMRV9QQVlfUkVNT1RFX1VJKQogICAgIG1fcGF5bWVudENvb3JkaW5hdG9yID0gbnVsbHB0
cjsKQEAgLTExODYsNiArMTIwNCw2MSBAQCBzaXplX3QgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmZpbmROZXR3b3JrQWN0aXZpdHlUcmFja2VyKFdlYkNvcmU6OlJlc291cgogICAgICAg
ICByZXR1cm4gaXRlbS5yZXNvdXJjZUlEID09IHJlc291cmNlSUQ7CiAgICAgfSk7CiB9CisKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNv
bnRleHRDb25uZWN0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJl
ZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uOiIpOworICAg
IGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOworICAgIGlmIChhdXRvKiBzd1NlcnZl
ciA9IHNlc3Npb24gPyBzZXNzaW9uLT5zaGFyZWRXb3JrZXJTZXJ2ZXIoKSA6IG51bGxwdHIpCisg
ICAgICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+KCp0aGlzLCBXVEZNb3ZlKHJlZ2lz
dHJhYmxlRG9tYWluKSwgKnN3U2VydmVyKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQor
Cit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uKCkKK3sKKyAgICBpZiAobV9zaGFyZWRXb3JrZXJDb25uZWN0aW9u
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24o
KTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIENPTk5FQ1RJT05f
UkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbjoiKTsKKworICAgIGF1dG8mIHNlcnZlciA9IHNlc3Npb24tPmVuc3VyZVNoYXJlZFdv
cmtlclNlcnZlcigpOworICAgIGF1dG8gY29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbj4obV9uZXR3b3JrUHJvY2Vzcywgc2VydmVyLCBtX2Nvbm5l
Y3Rpb24uZ2V0KCksIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOworCisgICAgbV9zaGFyZWRXb3Jr
ZXJDb25uZWN0aW9uID0gKmNvbm5lY3Rpb247CisgICAgc2VydmVyLmFkZENvbm5lY3Rpb24oV1RG
TW92ZShjb25uZWN0aW9uKSk7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmNsb3NlU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24oKQoreworICAgIENPTk5FQ1RJ
T05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiY2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0Q29u
bmVjdGlvbjoiKTsKKyAgICBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0
cjsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlclNo
YXJlZFdvcmtlckNvbm5lY3Rpb24oKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2hh
cmVkV29ya2VyLCAidW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb246Iik7CisgICAgaWYg
KG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbikKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJDb25uZWN0
aW9uLT5zZXJ2ZXIoKS5yZW1vdmVDb25uZWN0aW9uKG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbi0+
d2ViUHJvY2Vzc0lkZW50aWZpZXIoKSk7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Jc05vTG9uZ2Vy
TmVlZGVkKCkKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgInNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkOiIpOwor
ICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9u
Tm9Mb25nZXJOZWVkZWQgeyB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOworCisgICAgbV9z
aGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7Cit9CisKK1dlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb24qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzaGFy
ZWRXb3JrZXJDb25uZWN0aW9uKCkKK3sKKyAgICBpZiAoIW1fc2hhcmVkV29ya2VyQ29ubmVjdGlv
bikKKyAgICAgICAgZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpOworICAg
IHJldHVybiBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb24uZ2V0KCk7Cit9CiAgICAgCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
dW5yZWdpc3RlclNXQ29ubmVjdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggYWI5
NjY1N2QwZGY0YTIzMzEwNDBhYzUxZmM0M2MwNjg0Nzg0ODA0Ny4uZDBhYTRlZjc0NTIwYTJjYTBi
NTUxYjQ2OWU4NmVhNzY2OGI2NzhlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtOTIs
NiArOTIsOCBAQCBjbGFzcyBOZXR3b3JrU29ja2V0U3RyZWFtOwogY2xhc3MgU2VydmljZVdvcmtl
ckZldGNoVGFzazsKIGNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKIGNsYXNzIFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb247CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOwog
CiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIHN0cnVjdCBEYXRhS2V5OwpAQCAtMTg1LDYgKzE4
Nyw5IEBAIHB1YmxpYzoKICAgICBXZWJTV1NlcnZlckNvbm5lY3Rpb24qIHN3Q29ubmVjdGlvbigp
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBjcmVhdGVGZXRj
aFRhc2soTmV0d29ya1Jlc291cmNlTG9hZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Jik7CiAjZW5kaWYKKyAgICB2b2lkIHNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7CisKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uKiBzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7CiAKICAgICBOZXR3b3JrU2NoZW1lUmVn
aXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9zY2hlbWVSZWdpc3RyeS5nZXQoKTsg
fQogCkBAIC0yNTMsNiArMjU4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZVNvY2tldENo
YW5uZWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90
b2NvbCwgV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAgICAgdm9pZCB1cGRhdGVRdW90YUJh
c2VkT25TcGFjZVVzYWdlRm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsK
IAorICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpOworICAg
IHZvaWQgdW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKKwogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigpOwog
ICAgIHZvaWQgZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlm
aWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0yNjAsNiArMjY4LDkgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgogCisg
ICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihXZWJQYWdlUHJv
eHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgY2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvbigpOworCiAgICAgdm9pZCBjcmVhdGVSVENQcm92aWRlcihDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIHZvaWQgY29ubmVjdFRvUlRDRGF0
YUNoYW5uZWxSZW1vdGVTb3VyY2UoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHNv
dXJjZSwgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGhhbmRsZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxib29sPik+JiYpOwpAQCAtNDA0LDYgKzQxNSw4
IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxXZWJTV1NlcnZlckNvbm5lY3Rpb24+IG1fc3dDb25u
ZWN0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24+IG1fc3dDb250ZXh0Q29ubmVjdGlvbjsKICNlbmRpZgorICAgIFdlYWtQdHI8V2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbj4gbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiBt
X3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uOwogCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAg
ICAgYm9vbCBtX2lzUmVnaXN0ZXJlZFRvUlRDRGF0YUNoYW5uZWxQcm94eSB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAyNDI4MzUwNTBi
MjQ5NzBjNWVhYzFlMjZiZjg2YjViMDI1YTgwZTUzLi5iOTdjYTM0NzliNGQ5ZDU1NzlhN2U3ZTU1
YTY5MWE2MGRkODg2NmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KQEAgLTg4LDYgKzg4LDkgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIENsb3NlU1dDb250ZXh0Q29ubmVjdGlvbigp
CiAjZW5kaWYKIAorICAgIEVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uKFdl
YktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gZG9tYWluKSAtPiAoKSBBc3luYworICAgIENsb3NlU2hhcmVkV29ya2Vy
Q29udGV4dENvbm5lY3Rpb24oKQorCiAgICAgQ3JlYXRlUlRDUHJvdmlkZXIoKSAtPiAoKSBBc3lu
YwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIENvbm5lY3RUb1JUQ0RhdGFDaGFubmVsUmVtb3Rl
U291cmNlKHN0cnVjdCBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgc291cmNlLCBz
dHJ1Y3QgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGhhbmRsZXIpIC0+IChzdGQ6
Om9wdGlvbmFsPGJvb2w+IHJlc3VsdCkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggZTJiMjRkODMyMmI2ZWMxYzM3NzAxZGNh
ZDQ5NzUzNGNlZjIzMWEyNi4uZDc2MTYyODUwY2FkODQzOGYwMDg4OTA1M2Y3ZWRjODJmM2UzM2Ez
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5j
cHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldlYlNXT3JpZ2luU3RvcmUu
aCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJTb2Nr
ZXRUYXNrLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVKYXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlUmVxdWVzdC5oPgpAQCAtNjUzLDYgKzY1NCwxMyBAQCBib29sIE5ldHdvcmtT
ZXNzaW9uOjpoYXNTZXJ2aWNlV29ya2VyRGF0YWJhc2VQYXRoKCkgY29uc3QKIAogI2VuZGlmIC8v
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorV2ViU2hhcmVkV29ya2VyU2VydmVyJiBOZXR3b3Jr
U2Vzc2lvbjo6ZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCkKK3sKKyAgICBpZiAoIW1fc2hhcmVk
V29ya2VyU2VydmVyKQorICAgICAgICBtX3NoYXJlZFdvcmtlclNlcnZlciA9IG1ha2VVbmlxdWU8
V2ViU2hhcmVkV29ya2VyU2VydmVyPigqdGhpcyk7CisgICAgcmV0dXJuICptX3NoYXJlZFdvcmtl
clNlcnZlcjsKK30KKwogV2ViSURCU2VydmVyJiBOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlV2ViSURC
U2VydmVyKCkKIHsKICAgICBpZiAoIW1fd2ViSURCU2VydmVyKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggMTkzMDdjZjQwYmUzYjJmMjYw
NTdkMDE2Yzc2NmVkY2U0OThjOTU0Mi4uM2Y5ZDZjOTU1MGE4YjhjZWM5ZTRjNTU5ZDMxZDEyMWE5
OGIwZTg0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uaApAQCAtNzksNiArNzksNyBAQCBjbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOwogY2xh
c3MgV2ViSURCU2VydmVyOwogY2xhc3MgV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzOwogY2xhc3Mg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyOwogY2xhc3MgV2ViU29ja2V0VGFzazsKIGNsYXNzIFdlYlNXT3JpZ2luU3RvcmU7CiBjbGFz
cyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CkBAIC0yMTAsNiArMjExLDkgQEAgcHVibGljOgogICAg
IHZvaWQgYWRkU2VydmljZVdvcmtlclNlc3Npb24oYm9vbCBwcm9jZXNzVGVybWluYXRpb25EZWxh
eUVuYWJsZWQsIFN0cmluZyYmIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIGNv
bnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogI2VuZGlmCiAKKyAgICBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXIqIHNoYXJlZFdvcmtlclNlcnZlcigpIHsgcmV0dXJuIG1fc2hhcmVkV29ya2Vy
U2VydmVyLmdldCgpOyB9CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBlbnN1cmVTaGFyZWRX
b3JrZXJTZXJ2ZXIoKTsKKwogICAgIFdlYklEQlNlcnZlciogd2ViSURCU2VydmVyKCkgeyByZXR1
cm4gbV93ZWJJREJTZXJ2ZXIuZ2V0KCk7IH0KICAgICBXZWJJREJTZXJ2ZXImIGVuc3VyZVdlYklE
QlNlcnZlcigpOwogICAgIHZvaWQgY2xvc2VJREJTZXJ2ZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKQEAgLTMxOCw2ICszMjIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RkOjpvcHRpb25h
bDxTZXJ2aWNlV29ya2VySW5mbz4gbV9zZXJ2aWNlV29ya2VySW5mbzsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6U1dTZXJ2ZXI+IG1fc3dTZXJ2ZXI7CiAjZW5kaWYKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyPiBtX3NoYXJlZFdvcmtlclNlcnZlcjsKIAog
ICAgIFN0cmluZyBtX2lkYkRhdGFiYXNlUGF0aDsKICAgICBSZWZQdHI8V2ViSURCU2VydmVyPiBt
X3dlYklEQlNlcnZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwMDkx
Mzk1MjgwYzhkNzYwZWYxYTFkMTIxYzIxNDc1ZjQ5NWViYjgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIu
Y3BwCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyLmgiCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgSGFzaE1hcDxXZWJDb3JlOjpTaGFyZWRX
b3JrZXJJZGVudGlmaWVyLCBXZWJTaGFyZWRXb3JrZXIqPiYgYWxsV29ya2VycygpCit7CisgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFz
aE1hcDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBXZWJTaGFyZWRXb3JrZXIqPj4g
YWxsV29ya2VyczsKKyAgICByZXR1cm4gYWxsV29ya2VyczsKK30KKworV2ViU2hhcmVkV29ya2Vy
OjpXZWJTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBrZXksIGNv
bnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMpCisgICAgOiBtX2lkZW50
aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKKyAgICAs
IG1fa2V5KGtleSkKKyAgICAsIG1fd29ya2VyT3B0aW9ucyh3b3JrZXJPcHRpb25zKQoreworICAg
IEFTU0VSVCghYWxsV29ya2VycygpLmNvbnRhaW5zKG1faWRlbnRpZmllcikpOworICAgIGFsbFdv
cmtlcnMoKS5hZGQobV9pZGVudGlmaWVyLCB0aGlzKTsKK30KKworV2ViU2hhcmVkV29ya2VyOjp+
V2ViU2hhcmVkV29ya2VyKCkKK3sKKyAgICBBU1NFUlQoYWxsV29ya2VycygpLmdldChtX2lkZW50
aWZpZXIpID09IHRoaXMpOworICAgIGFsbFdvcmtlcnMoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsK
K30KKworV2ViU2hhcmVkV29ya2VyKiBXZWJTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVyKFdl
YkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4g
YWxsV29ya2VycygpLmdldChpZGVudGlmaWVyKTsKK30KKworV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gV2ViU2hhcmVkV29ya2VyOjpyZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsKCkgfTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0YjdhNGE4
NDNjZWY5YTE3ZWJjMGIzYTVmYTRjY2Q0ZDA2MTZiMzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuaApA
QCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxX
ZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJl
ZFdvcmtlcktleS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmZXJyZWRNZXNzYWdlUG9ydC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvV29ya2VyRmV0Y2hSZXN1bHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dv
cmtlck9wdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJTaGFy
ZWRXb3JrZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBX
ZWJTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiwgY29uc3QgV2Vi
Q29yZTo6V29ya2VyT3B0aW9ucyYpOworICAgIH5XZWJTaGFyZWRXb3JrZXIoKTsKKworICAgIHN0
YXRpYyBXZWJTaGFyZWRXb3JrZXIqIGZyb21JZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdvcmtl
cklkZW50aWZpZXIpOworCisgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBpZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgY29uc3QgV2ViQ29y
ZTo6U2hhcmVkV29ya2VyS2V5JiBrZXkoKSBjb25zdCB7IHJldHVybiBtX2tleTsgfQorICAgIGNv
bnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMoKSBjb25zdCB7IHJldHVy
biBtX3dvcmtlck9wdGlvbnM7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9y
aWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fa2V5Lm9yaWdpbjsgfQorICAgIGNvbnN0IFVSTCYgdXJs
KCkgY29uc3QgeyByZXR1cm4gbV9rZXkudXJsOyB9CisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gcmVnaXN0cmFibGVEb21haW4oKSBjb25zdDsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBv
cnQ+JiBzaGFyZWRXb3JrZXJPYmplY3RzKCkgeyByZXR1cm4gbV9zaGFyZWRXb3JrZXJPYmplY3Rz
OyB9CisKKyAgICBib29sIGlzUnVubmluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNSdW5uaW5nOyB9
CisgICAgdm9pZCBtYXJrQXNSdW5uaW5nKCkgeyBtX2lzUnVubmluZyA9IHRydWU7IH0KKworICAg
IGNvbnN0IFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiBmZXRjaFJlc3VsdCgpIGNvbnN0IHsg
cmV0dXJuIG1fZmV0Y2hSZXN1bHQ7IH0KKyAgICB2b2lkIHNldEZldGNoUmVzdWx0KFdlYkNvcmU6
OldvcmtlckZldGNoUmVzdWx0JiYgZmV0Y2hSZXN1bHQpIHsgbV9mZXRjaFJlc3VsdCA9IFdURk1v
dmUoZmV0Y2hSZXN1bHQpOyB9CisgICAgYm9vbCBkaWRGaW5pc2hGZXRjaGluZygpIGNvbnN0IHsg
cmV0dXJuICEhbV9mZXRjaFJlc3VsdC5zY3JpcHQ7IH0KKworcHJpdmF0ZToKKyAgICBXZWJTaGFy
ZWRXb3JrZXIoV2ViU2hhcmVkV29ya2VyJiYpID0gZGVsZXRlOworICAgIFdlYlNoYXJlZFdvcmtl
ciYgb3BlcmF0b3I9KFdlYlNoYXJlZFdvcmtlciYmKSA9IGRlbGV0ZTsKKyAgICBXZWJTaGFyZWRX
b3JrZXIoY29uc3QgV2ViU2hhcmVkV29ya2VyJikgPSBkZWxldGU7CisgICAgV2ViU2hhcmVkV29y
a2VyJiBvcGVyYXRvcj0oY29uc3QgV2ViU2hhcmVkV29ya2VyJikgPSBkZWxldGU7CisKKyAgICBX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJLZXkgbV9rZXk7CisgICAgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyBtX3dv
cmtlck9wdGlvbnM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0PiBtX3NoYXJlZFdvcmtlck9i
amVjdHM7CisgICAgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQgbV9mZXRjaFJlc3VsdDsKKyAg
ICBib29sIG1faXNSdW5uaW5nIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmM2ODMw
MjE0ZDQwYzQ3ZjIyZTk1NTljYzg2YWQ3MjVhYjUxMDViMwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNl
cnZlci5jcHAKQEAgLTAsMCArMSwyNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgiCisKKyNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJv
Y2Vzc1Byb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgorI2luY2x1
ZGUgIldlYlNoYXJlZFdvcmtlci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyS2V5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Xb3JrZXJG
ZXRjaFJlc3VsdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyT3B0aW9ucy5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworV2ViU2hhcmVkV29ya2VyU2VydmVyOjpXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXIoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24pCisgICAgOiBtX3Nlc3Npb24oc2Vzc2lvbikK
K3sKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVyOjp+V2ViU2hhcmVkV29ya2VyU2VydmVyKCkg
PSBkZWZhdWx0OworCitQQUw6OlNlc3Npb25JRCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNlc3Np
b25JRCgpCit7CisgICAgcmV0dXJuIG1fc2Vzc2lvbi5zZXNzaW9uSUQoKTsKK30KKwordm9pZCBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hhcmVk
V29ya2VyS2V5JiYgc2hhcmVkV29ya2VyS2V5LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVy
cmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0
aW9ucykKK3sKKyAgICBhdXRvJiBzaGFyZWRXb3JrZXIgPSBtX3NoYXJlZFdvcmtlcnMuZW5zdXJl
KHNoYXJlZFdvcmtlcktleSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViU2hh
cmVkV29ya2VyPihzaGFyZWRXb3JrZXJLZXksIHdvcmtlck9wdGlvbnMpOworICAgIH0pLml0ZXJh
dG9yLT52YWx1ZTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXI9JXtwcml2YXRlfXMsIHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgc2hhcmVkV29y
a2VyLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICBpZiAoc2hhcmVkV29ya2VyLT53
b3JrZXJPcHRpb25zKCkudHlwZSAhPSB3b3JrZXJPcHRpb25zLnR5cGUgfHwgc2hhcmVkV29ya2Vy
LT53b3JrZXJPcHRpb25zKCkuY3JlZGVudGlhbHMgIT0gd29ya2VyT3B0aW9ucy5jcmVkZW50aWFs
cykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6IEEgd29ya2VyIGFscmVhZHkgZXhpc3Rz
IHdpdGggdGhpcyBuYW1lIGJ1dCBoYXMgZGlmZmVyZW50IHR5cGUgLyBjcmVkZW50aWFscyIpOwor
ICAgICAgICBpZiAoYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSkpCisgICAgICAg
ICAgICBzZXJ2ZXJDb25uZWN0aW9uLT5ub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9u
KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHsgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6
VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNo
YXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cygpLmFkZChzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLCBwb3J0KTsKKworICAgIGlmIChzaGFyZWRXb3JrZXItPnNoYXJlZFdvcmtlck9i
amVjdHMoKS5zaXplKCkgPiAxKSB7CisgICAgICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwg
IldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtlcjogQSBzaGFyZWQgd29y
a2VyIHdpdGggdGhpcyBVUkwgYWxyZWFkeSBleGlzdHMgKG5vdyBzaGFyZWQgYnkgJXUgc2hhcmVk
IHdvcmtlciBvYmplY3RzKSIsIHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cygpLnNp
emUoKSk7CisgICAgICAgIGlmIChzaGFyZWRXb3JrZXItPmRpZEZpbmlzaEZldGNoaW5nKCkpIHsK
KyAgICAgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5n
ZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkKKyAg
ICAgICAgICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uLT5ub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRD
b21wbGV0aW9uKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHsgfSk7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKHNoYXJlZFdvcmtlci0+aXNSdW5uaW5nKCkpIHsKKyAgICAgICAgICAgIGF1
dG8qIGNvbnRleHRDb25uZWN0aW9uID0gbV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdv
cmtlci0+cmVnaXN0cmFibGVEb21haW4oKSk7CisgICAgICAgICAgICBBU1NFUlQoY29udGV4dENv
bm5lY3Rpb24pOworICAgICAgICAgICAgaWYgKGNvbnRleHRDb25uZWN0aW9uKQorICAgICAgICAg
ICAgICAgIGNvbnRleHRDb25uZWN0aW9uLT5wb3N0Q29ubmVjdEV2ZW50KCpzaGFyZWRXb3JrZXIs
IHBvcnQpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUKCFz
aGFyZWRXb3JrZXItPmlzUnVubmluZygpKTsKKworICAgIGF1dG8qIHNlcnZlckNvbm5lY3Rpb24g
PSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJ
ZGVudGlmaWVyKCkpOworICAgIEFTU0VSVChzZXJ2ZXJDb25uZWN0aW9uKTsKKworICAgIFJFTEVB
U0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJl
ZFdvcmtlcjogRmV0Y2hpbmcgc2hhcmVkIHdvcmtlciBzY3JpcHQgaW4gY2xpZW50Iik7CisgICAg
c2VydmVyQ29ubmVjdGlvbi0+ZmV0Y2hTY3JpcHRJbkNsaWVudCgqc2hhcmVkV29ya2VyLCBzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwg
c2hhcmVkV29ya2VyID0gV2Vha1B0ciB7ICpzaGFyZWRXb3JrZXIgfV0oV2ViQ29yZTo6V29ya2Vy
RmV0Y2hSZXN1bHQmJiBmZXRjaFJlc3VsdCkgeworICAgICAgICBpZiAod2Vha1RoaXMgJiYgc2hh
cmVkV29ya2VyKQorICAgICAgICAgICAgd2Vha1RoaXMtPmRpZEZpbmlzaEZldGNoaW5nU2hhcmVk
V29ya2VyU2NyaXB0KCpzaGFyZWRXb3JrZXIsIFdURk1vdmUoZmV0Y2hSZXN1bHQpKTsKKyAgICB9
KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5nU2hh
cmVkV29ya2VyU2NyaXB0KFdlYlNoYXJlZFdvcmtlciYgc2hhcmVkV29ya2VyLCBXZWJDb3JlOjpX
b3JrZXJGZXRjaFJlc3VsdCYmIGZldGNoUmVzdWx0KQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJl
ZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6ZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRX
b3JrZXJTY3JpcHQgc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgc2hhcmVkV29y
a2VyPSVwLCBzdWNjZXNzPSVkIiwgc2hhcmVkV29ya2VyLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgp
LCAmc2hhcmVkV29ya2VyLCBmZXRjaFJlc3VsdC5lcnJvci5pc051bGwoKSk7CisKKyAgICBmb3Ig
KGF1dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA6IHNoYXJlZFdvcmtlci5zaGFyZWRX
b3JrZXJPYmplY3RzKCkua2V5cygpKSB7CisgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0
aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9j
ZXNzSWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIHNlcnZlckNvbm5lY3Rpb24tPm5vdGlmeVdv
cmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24oc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwg
ZmV0Y2hSZXN1bHQuZXJyb3IpOworICAgIH0KKworICAgIGlmICghZmV0Y2hSZXN1bHQuZXJyb3Iu
aXNOdWxsKCkpIHsKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJzLnJlbW92ZShzaGFyZWRXb3JrZXIu
a2V5KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2hhcmVkV29ya2VyLnNldEZl
dGNoUmVzdWx0KFdURk1vdmUoZmV0Y2hSZXN1bHQpKTsKKworICAgIGF1dG8gcmVnaXN0cmFibGVE
b21haW4gPSBzaGFyZWRXb3JrZXIucmVnaXN0cmFibGVEb21haW4oKTsKKyAgICBhdXRvKiBjb250
ZXh0Q29ubmVjdGlvbiA9IGNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVn
aXN0cmFibGVEb21haW4pOworICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAgICAg
Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4pOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgY29udGV4dENvbm5lY3Rpb24tPmxhdW5jaFNoYXJlZFdvcmtlcihz
aGFyZWRXb3JrZXIpOworfQorCitib29sIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6bmVlZHNDb250
ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8mIHNo
YXJlZFdvcmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAocmVn
aXN0cmFibGVEb21haW4ubWF0Y2hlcyhzaGFyZWRXb3JrZXItPnVybCgpKSkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViU2hh
cmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCit7CisgICAgQVNTRVJUKCFtX2Nv
bnRleHRDb25uZWN0aW9ucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpOworICAgIGlmICht
X3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnMuY29udGFpbnMocmVnaXN0cmFibGVEb21h
aW4pKQorICAgICAgICByZXR1cm47CisKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uIHdpbGwgY3JlYXRl
IGEgY29ubmVjdGlvbiIpOworCisgICAgbV9wZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5z
LmFkZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgbV9zZXNzaW9uLm5ldHdvcmtQcm9jZXNzKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MgeyByZWdpc3RyYWJsZURvbWFpbiwgbV9zZXNzaW9uLnNlc3Npb25J
RCgpIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZWdpc3RyYWJsZURv
bWFpbl0geworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6
Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24gc2hvdWxkIG5vdyBoYXZlIGNyZWF0ZWQgYSBjb25uZWN0
aW9uIik7CisKKyAgICAgICAgQVNTRVJUKG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWlu
cy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpOworICAgICAgICBtX3BlbmRpbmdDb250ZXh0
Q29ubmVjdGlvbkRvbWFpbnMucmVtb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKKworICAgICAgICBp
ZiAobV9jb250ZXh0Q29ubmVjdGlvbnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9y
UmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICAgICAgY3JlYXRl
Q29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4pOworICAgIH0sIDApOworfQorCit2
b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29udGV4dENvbm5lY3Rpb24oV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24pCit7Cisg
ICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjphZGRD
b250ZXh0Q29ubmVjdGlvbiglcCkgd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCAmY29u
dGV4dENvbm5lY3Rpb24sIGNvbnRleHRDb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCku
dG9VSW50NjQoKSk7CisKKyAgICBBU1NFUlQoIW1fY29udGV4dENvbm5lY3Rpb25zLmNvbnRhaW5z
KGNvbnRleHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCkpKTsKKworICAgIG1fY29udGV4
dENvbm5lY3Rpb25zLmFkZChjb250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpLCAm
Y29udGV4dENvbm5lY3Rpb24pOworCisgICAgY29udGV4dENvbm5lY3Rpb25DcmVhdGVkKGNvbnRl
eHRDb25uZWN0aW9uKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlbW92ZUNv
bnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24m
IGNvbnRleHRDb25uZWN0aW9uKQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldl
YlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oJXApIHdlYlByb2Nl
c3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgJmNvbnRleHRDb25uZWN0aW9uLCBjb250ZXh0Q29ubmVj
dGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUludDY0KCkpOworCisgICAgYXV0byByZWdp
c3RyYWJsZURvbWFpbiA9IGNvbnRleHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCk7CisK
KyAgICBBU1NFUlQobV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0KHJlZ2lzdHJhYmxlRG9tYWluKSA9
PSAmY29udGV4dENvbm5lY3Rpb24pOworCisgICAgbV9jb250ZXh0Q29ubmVjdGlvbnMucmVtb3Zl
KHJlZ2lzdHJhYmxlRG9tYWluKTsKKworICAgIGlmIChuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9y
UmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICBjcmVhdGVDb250
ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbik7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29y
a2VyU2VydmVyOjpjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24pCit7CisgICAgUkVMRUFTRV9M
T0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjb250ZXh0Q29ubmVjdGlv
bkNyZWF0ZWQoJXApIHdlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgJmNvbnRleHRDb25u
ZWN0aW9uLCBjb250ZXh0Q29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUludDY0
KCkpOworICAgIGF1dG8mIHJlZ2lzdHJhYmxlRG9tYWluID0gY29udGV4dENvbm5lY3Rpb24ucmVn
aXN0cmFibGVEb21haW4oKTsKKyAgICBmb3IgKGF1dG8mIHNoYXJlZFdvcmtlciA6IG1fc2hhcmVk
V29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAoc2hhcmVkV29ya2VyLT5kaWRGaW5pc2hG
ZXRjaGluZygpICYmIHJlZ2lzdHJhYmxlRG9tYWluLm1hdGNoZXMoc2hhcmVkV29ya2VyLT51cmwo
KSkpCisgICAgICAgICAgICBjb250ZXh0Q29ubmVjdGlvbi5sYXVuY2hTaGFyZWRXb3JrZXIoKnNo
YXJlZFdvcmtlcik7CisgICAgfQorfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hh
cmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5
JiBzaGFyZWRXb3JrZXJLZXksIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIg
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK3sKKyAgICBhdXRvKiBzaGFyZWRXb3JrZXIg
PSBtX3NoYXJlZFdvcmtlcnMuZ2V0KHNoYXJlZFdvcmtlcktleSk7CisgICAgUkVMRUFTRV9MT0co
U2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaGFyZWRXb3JrZXJPYmplY3RJ
c0dvaW5nQXdheTogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zLCBzaGFy
ZWRXb3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSwgc2hhcmVkV29ya2VyKTsKKyAgICBpZiAoIXNoYXJlZFdvcmtlcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzKCkucmVt
b3ZlKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIGlmICghc2hhcmVkV29ya2Vy
LT5zaGFyZWRXb3JrZXJPYmplY3RzKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBzaHV0RG93blNoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXJLZXkpOworfQorCit2b2lkIFdlYlNo
YXJlZFdvcmtlclNlcnZlcjo6c2h1dERvd25TaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hh
cmVkV29ya2VyS2V5JiBrZXkpCit7CisgICAgYXV0byBzaGFyZWRXb3JrZXIgPSBtX3NoYXJlZFdv
cmtlcnMudGFrZShrZXkpOworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJl
ZFdvcmtlclNlcnZlcjo6c2h1dERvd25TaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZp
ZXI9JSIgUFJJdTY0ICIsIHNoYXJlZFdvcmtlcj0lcCIsIHNoYXJlZFdvcmtlciA/IHNoYXJlZFdv
cmtlci0+aWRlbnRpZmllcigpLnRvVUludDY0KCkgOiAwLCBzaGFyZWRXb3JrZXIuZ2V0KCkpOwor
ICAgIGlmICghc2hhcmVkV29ya2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBjb250
ZXh0Q29ubmVjdGlvbiA9IGNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oc2hh
cmVkV29ya2VyLT5yZWdpc3RyYWJsZURvbWFpbigpKTsKKyAgICBpZiAoIWNvbnRleHRDb25uZWN0
aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBjb250ZXh0Q29ubmVjdGlvbi0+dGVybWluYXRl
U2hhcmVkV29ya2VyKCpzaGFyZWRXb3JrZXIpOworCisgICAgaWYgKCFuZWVkc0NvbnRleHRDb25u
ZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oc2hhcmVkV29ya2VyLT5yZWdpc3RyYWJsZURvbWFp
bigpKSkKKyAgICAgICAgY29udGV4dENvbm5lY3Rpb24tPmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVl
ZGVkKCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjphZGRDb25uZWN0aW9uKHN0
ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uPiYmIGNvbm5lY3Rp
b24pCit7CisgICAgYXV0byBwcm9jZXNzSWRlbnRpZmllciA9IGNvbm5lY3Rpb24tPndlYlByb2Nl
c3NJZGVudGlmaWVyKCk7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVk
V29ya2VyU2VydmVyOjphZGRDb25uZWN0aW9uKCVwKTogcHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJ
dTY0LCBjb25uZWN0aW9uLmdldCgpLCBwcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAg
ICBBU1NFUlQoIW1fY29ubmVjdGlvbnMuY29udGFpbnMocHJvY2Vzc0lkZW50aWZpZXIpKTsKKyAg
ICBtX2Nvbm5lY3Rpb25zLmFkZChwcm9jZXNzSWRlbnRpZmllciwgV1RGTW92ZShjb25uZWN0aW9u
KSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1vdmVDb25uZWN0aW9uKFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQoreworICAgIGF1dG8g
Y29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMudGFrZShwcm9jZXNzSWRlbnRpZmllcik7CisgICAg
UkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1vdmVD
b25uZWN0aW9uKCVwKTogcHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCBjb25uZWN0aW9uLmdl
dCgpLCBwcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBBU1NFUlQoY29ubmVjdGlv
bik7CisKKyAgICBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSwgV2Vi
Q29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj4+IHNoYXJlZFdvcmtlck9iamVjdHNH
b2luZ0F3YXk7CisgICAgZm9yIChhdXRvJiBzaGFyZWRXb3JrZXIgOiBtX3NoYXJlZFdvcmtlcnMu
dmFsdWVzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyIDogc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzKCkua2V5cygpKSB7CisgICAg
ICAgICAgICBpZiAoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmll
cigpID09IHByb2Nlc3NJZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIHNoYXJlZFdvcmtlck9i
amVjdHNHb2luZ0F3YXkuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHNoYXJlZFdvcmtlci0+a2V5KCks
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBm
b3IgKGF1dG8mIFtzaGFyZWRXb3JrZXJLZXksIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXJd
IDogc2hhcmVkV29ya2VyT2JqZWN0c0dvaW5nQXdheSkKKyAgICAgICAgc2hhcmVkV29ya2VyT2Jq
ZWN0SXNHb2luZ0F3YXkoc2hhcmVkV29ya2VyS2V5LCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyKTsKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogV2Vi
U2hhcmVkV29ya2VyU2VydmVyOjpjb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWlu
KGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fY29udGV4dENvbm5lY3Rpb25zLmdldChkb21haW4pOworfQorCit2b2lkIFdlYlNo
YXJlZFdvcmtlclNlcnZlcjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNo
YXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBhdXRvKiBzaGFyZWRXb3JrZXIgPSBXZWJTaGFyZWRX
b3JrZXI6OmZyb21JZGVudGlmaWVyKHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworICAgIFJFTEVB
U0VfTE9HX0VSUk9SKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cG9zdEV4
Y2VwdGlvblRvV29ya2VyT2JqZWN0OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCAi
LCBzaGFyZWRXb3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCksIHNo
YXJlZFdvcmtlcik7CisgICAgaWYgKCFzaGFyZWRXb3JrZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGZvciAoYXV0byBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIDogc2hhcmVkV29ya2Vy
LT5zaGFyZWRXb3JrZXJPYmplY3RzKCkua2V5cygpKSB7CisgICAgICAgIGlmIChhdXRvKiBzZXJ2
ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIHNlcnZlckNvbm5lY3Rpb24t
PnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMKTsKKyAg
ICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kMmQ4MDM4MDkzNmRlYWZhNGIwZjMxMjM0OTIwOTdkM2Q4NzM5
OTY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFy
ZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmll
ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1RyYW5zZmVycmVkTWVzc2FnZVBvcnQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKKworc3RydWN0
IENsaWVudE9yaWdpbjsKK3N0cnVjdCBTaGFyZWRXb3JrZXJLZXk7CitzdHJ1Y3QgV29ya2VyRmV0
Y2hSZXN1bHQ7CitzdHJ1Y3QgV29ya2VyT3B0aW9uczsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIE5ldHdvcmtTZXNzaW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2VyOworY2xhc3Mg
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb247CisKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlciA6
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI+IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXIoTmV0d29ya1Nlc3Npb24mKTsKKyAgICB+V2ViU2hhcmVkV29ya2VyU2VydmVyKCk7
CisKKyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKTsKKyAgICBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBjb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxl
RG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CisKKyAgICB2
b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiYsIFdlYkNv
cmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVz
c2FnZVBvcnQmJiwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmKTsKKyAgICB2b2lkIHNoYXJlZFdv
cmtlck9iamVjdElzR29pbmdBd2F5KGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYsIFdl
YkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIHZvaWQgcG9zdEV4Y2Vw
dGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCisgICAgdm9pZCBhZGRDb250ZXh0Q29ubmVjdGlv
bihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CisgICAgdm9pZCBy
ZW1vdmVDb250ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uJik7CisgICAgdm9pZCBhZGRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uPiYmKTsKKyAgICB2b2lkIHJlbW92ZUNvbm5lY3Rpb24o
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOworCitwcml2YXRlOgorICAgIHZvaWQgY3JlYXRl
Q29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKKyAg
ICBib29sIG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OworICAgIHZvaWQgY29udGV4dENvbm5l
Y3Rpb25DcmVhdGVkKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsK
KyAgICB2b2lkIGRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29ya2VyU2NyaXB0KFdlYlNoYXJlZFdv
cmtlciYsIFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYpOworICAgIHZvaWQgc2h1dERvd25T
aGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5Jik7CisKKyAgICBOZXR3
b3JrU2Vzc2lvbiYgbV9zZXNzaW9uOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uPj4g
bV9jb25uZWN0aW9uczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4gbV9jb250ZXh0Q29ubmVj
dGlvbnM7CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9wZW5kaW5n
Q29udGV4dENvbm5lY3Rpb25Eb21haW5zOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2hhcmVkV29y
a2VyS2V5LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyPj4gbV9zaGFyZWRXb3JrZXJz
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNo
YXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2NDFjMTg5YzJmMjk5
ZGI1OTk5NDVhMzczNWE4MWQ1NGY1OGRhOWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uLmNwcApAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgiCisKKyNp
bmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlci5oIgorI2luY2x1ZGUgIldl
YlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvV29ya2VyRmV0Y2hSZXN1bHQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNkZWZpbmUg
Q09OTkVDVElPTl9NRVNTQUdFX0NIRUNLKGFzc2VydGlvbikgQ09OTkVDVElPTl9NRVNTQUdFX0NI
RUNLX0NPTVBMRVRJT04oYXNzZXJ0aW9uLCAodm9pZCkwKQorI2RlZmluZSBDT05ORUNUSU9OX01F
U1NBR0VfQ0hFQ0tfQ09NUExFVElPTihhc3NlcnRpb24sIGNvbXBsZXRpb24pIGRvIHsgXAorICAg
IEFTU0VSVChhc3NlcnRpb24pOyBcCisgICAgaWYgKFVOTElLRUxZKCEoYXNzZXJ0aW9uKSkpIHsg
XAorICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJtaW5hdGVXZWJQcm9jZXNzKG1f
d2ViUHJvY2Vzc0lkZW50aWZpZXIpLCAwKTsgXAorICAgICAgICB7IGNvbXBsZXRpb247IH0gXAor
ICAgICAgICByZXR1cm47IFwKKyAgICB9IFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgQ09OTkVD
VElPTl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAg
LSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb246OiIgZm10LCB0aGlzLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0
KCksICMjX19WQV9BUkdTX18pCisjZGVmaW5lIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1Io
Zm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKFNoYXJlZFdvcmtlciwgIiVwIC0gW3dlYlByb2Nl
c3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
OjoiIGZtdCwgdGhpcywgbV93ZWJQcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpLCAjI19fVkFf
QVJHU19fKQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgV2ViU2hh
cmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIpCisgICAgOiBtX2Nv
bnRlbnRDb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdv
cmtQcm9jZXNzKQorICAgICwgbV9zZXJ2ZXIoc2VydmVyKQorICAgICwgbV93ZWJQcm9jZXNzSWRl
bnRpZmllcih3ZWJQcm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0Vf
TE9HKCJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOiIpOworfQorCitXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjp+V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigp
Cit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygifldlYlNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb246Iik7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiogV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAoreworICAgIHJldHVy
biBtX2NvbnRlbnRDb25uZWN0aW9uLnB0cigpOworfQorCitQQUw6OlNlc3Npb25JRCBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpzZXNzaW9uSUQoKQoreworICAgIHJldHVybiBzZXJ2
ZXIoKS5zZXNzaW9uSUQoKTsKK30KKworTmV0d29ya1Nlc3Npb24qIFdlYlNoYXJlZFdvcmtlclNl
cnZlckNvbm5lY3Rpb246OnNlc3Npb24oKQoreworICAgIHJldHVybiBtX25ldHdvcmtQcm9jZXNz
LT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbjo6cmVxdWVzdFNoYXJlZFdvcmtlcihXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJLZXkmJiBzaGFyZWRXb3JrZXJLZXksIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRN
ZXNzYWdlUG9ydCYmIHBvcnQsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25z
KQoreworICAgIENPTk5FQ1RJT05fTUVTU0FHRV9DSEVDSyhzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7Cisg
ICAgQ09OTkVDVElPTl9NRVNTQUdFX0NIRUNLKHNoYXJlZFdvcmtlcktleS5uYW1lID09IHdvcmtl
ck9wdGlvbnMubmFtZSk7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygicmVxdWVzdFNoYXJl
ZFdvcmtlcjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGlm
IChhdXRvKiBzZXNzaW9uID0gdGhpcy0+c2Vzc2lvbigpKQorICAgICAgICBzZXNzaW9uLT5lbnN1
cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKS5yZXF1ZXN0U2hhcmVkV29ya2VyKFdURk1vdmUoc2hhcmVk
V29ya2VyS2V5KSwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV1RGTW92ZShwb3J0KSwg
V1RGTW92ZSh3b3JrZXJPcHRpb25zKSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbjo6c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVk
V29ya2VyS2V5JiYgc2hhcmVkV29ya2VyS2V5LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7CisgICAgQ09OTkVDVElP
Tl9NRVNTQUdFX0NIRUNLKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50
aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICBDT05ORUNUSU9OX1JFTEVB
U0VfTE9HKCJzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheTogc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gdGhpcy0+c2Vz
c2lvbigpKQorICAgICAgICBzZXNzaW9uLT5lbnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKS5zaGFy
ZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShzaGFyZWRXb3JrZXJLZXksIHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b246OmZldGNoU2NyaXB0SW5DbGllbnQoY29uc3QgV2ViU2hhcmVkV29ya2VyJiBzaGFyZWRXb3Jr
ZXIsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXb3JrZXJGZXRj
aFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVB
U0VfTE9HKCJmZXRjaFNjcmlwdEluQ2xpZW50OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
PSV7cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uOjpGZXRjaFNjcmlwdEluQ2xpZW50IHsgc2hhcmVkV29ya2Vy
LnVybCgpLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBzaGFyZWRXb3JrZXIud29ya2Vy
T3B0aW9ucygpIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21w
bGV0aW9uKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCit7
CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygibm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29t
cGxldGlvbjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zLCBzdWNjZXNz
PSVkIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRh
KCksIGVycm9yLmlzTnVsbCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uOjpOb3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uIHsgc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgZXJyb3IgfSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNv
cmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBDT05ORUNUSU9OX1JF
TEVBU0VfTE9HX0VSUk9SKCJwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Q6IHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpQb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QgeyBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgc291cmNlVVJMIH0pOworfQorCisjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNF
X0xPRworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IKKyN1bmRlZiBDT05ORUNU
SU9OX01FU1NBR0VfQ0hFQ0sKKyN1bmRlZiBDT05ORUNUSU9OX01FU1NBR0VfQ0hFQ0tfQ09NUExF
VElPTgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYmY3NzVkMGE4ZjVjYjcxYzdm
MzQ2YTE1NTQ4ZGNkMmRiNDEzMWI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlv
bi5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVj
dCBXb3JrZXJGZXRjaFJlc3VsdDsKK3N0cnVjdCBXb3JrZXJPcHRpb25zOworfQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya1Byb2Nlc3M7CitjbGFzcyBXZWJTaGFyZWRXb3Jr
ZXI7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiwgV2ViU2hhcmVk
V29ya2VyU2VydmVyJiwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXIpOworICAgIH5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCk7CisKKyAgICBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlcigpIHsgcmV0dXJuIG1fc2VydmVyOyB9CisgICAgY29u
c3QgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZl
cjsgfQorCisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCk7CisgICAgTmV0d29ya1Nlc3Np
b24qIHNlc3Npb24oKTsKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNz
SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7IH0KKwor
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
JikgZmluYWw7CisKKyAgICB2b2lkIGZldGNoU2NyaXB0SW5DbGllbnQoY29uc3QgV2ViU2hhcmVk
V29ya2VyJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmKT4mJik7CisgICAgdm9p
ZCBub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKFdlYkNvcmU6OlNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKKyAgICB2
b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKworcHJpdmF0ZToK
KyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdl
U2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5k
ZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQorCisgICAgLy8gSVBD
IG1lc3NhZ2VzLgorICAgIHZvaWQgcmVxdWVzdFNoYXJlZFdvcmtlcihXZWJDb3JlOjpTaGFyZWRX
b3JrZXJLZXkmJiwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29y
ZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYpOwor
ICAgIHZvaWQgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoV2ViQ29yZTo6U2hhcmVkV29y
a2VyS2V5JiYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworCisgICAg
UmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb250ZW50Q29ubmVjdGlvbjsKKyAgICBSZWY8TmV0d29y
a1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBt
X3NlcnZlcjsKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBtX3dlYlByb2Nlc3NJZGVu
dGlmaWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFy
ZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kNzJhODdiN2VjZjQ0NmM5MTk0ZDNhYmRiZjIyNjMwYjRiMzI1ZGRjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI2IEBA
CisjIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
CisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFdl
YlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CisgICAgUmVxdWVz
dFNoYXJlZFdvcmtlcihzdHJ1Y3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5IHNoYXJlZFdvcmtl
cktleSwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0IHBvcnQsIHN0
cnVjdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdvcmtlck9wdGlvbnMpCisgICAgU2hhcmVkV29y
a2VyT2JqZWN0SXNHb2luZ0F3YXkoc3RydWN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSBzaGFy
ZWRXb3JrZXJLZXksIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllcikKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZmY4NmJjN2Q2YTJkNDMxZjM4MzRkZjg1ZTFkMjYyMzQ1NmY1YTk4NwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTExIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNs
dWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlNoYXJl
ZFdvcmtlci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgiCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCisjZGVmaW5lIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xP
RyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBbd2ViUHJvY2Vzc0lk
ZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OiIgZm10LCB0aGlzLCB3ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUludDY0KCksICMj
X19WQV9BUkdTX18pCisKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiByZWdpc3RyYWJsZURvbWFpbiwgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIpCisg
ICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1fc2VydmVyKHNlcnZlcikKKyAg
ICAsIG1fcmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pCit7CisgICAgQ09OVEVY
VF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOiIpOworICAgIHNlcnZlci5hZGRDb250ZXh0Q29ubmVjdGlvbigqdGhpcyk7Cit9
CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5XZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJ
T05fUkVMRUFTRV9MT0coIn5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OiIpOworICAgIGlmIChtX3NlcnZlciAmJiBtX3NlcnZlci0+Y29udGV4dENvbm5lY3Rpb25Gb3JS
ZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbigpKSA9PSB0aGlzKQorICAgICAgICBt
X3NlcnZlci0+cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oKnRoaXMpOworfQorCitXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Ojp3ZWJQcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlv
bi53ZWJQcm9jZXNzSWRlbnRpZmllcigpOworfQorCitJUEM6OkNvbm5lY3Rpb24mIFdlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmlwY0Nvbm5lY3Rpb24oKSBjb25zdAor
eworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpOworfQorCitJUEM6OkNvbm5l
Y3Rpb24qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VT
ZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gJmlwY0Nvbm5lY3Rpb24oKTsK
K30KKwordWludDY0X3QgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAoreworICAgIHJldHVybiAwOworfQor
Cit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rp
b25Jc05vTG9uZ2VyTmVlZGVkKCkKK3sKKyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9M
T0coImNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkOiIpOworICAgIG1fY29ubmVjdGlvbi5zaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOworfQor
Cit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnBvc3RFeGNl
cHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJl
ZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAg
Q09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmpl
Y3Q6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVudGlm
aWVyLnRvVUludDY0KCkpOworICAgIGlmIChtX3NlcnZlcikKKyAgICAgICAgbV9zZXJ2ZXItPnBv
c3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBlcnJvck1l
c3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMKTsKK30KKwordm9pZCBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpsYXVuY2hTaGFyZWRXb3Jr
ZXIoV2ViU2hhcmVkV29ya2VyJiBzaGFyZWRXb3JrZXIpCit7CisgICAgQ09OVEVYVF9DT05ORUNU
SU9OX1JFTEVBU0VfTE9HKCJsYXVuY2hTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZp
ZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXIuaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAg
IHNoYXJlZFdvcmtlci5tYXJrQXNSdW5uaW5nKCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpMYXVuY2hTaGFyZWRXb3JrZXIgeyBz
aGFyZWRXb3JrZXIub3JpZ2luKCksIHNoYXJlZFdvcmtlci5pZGVudGlmaWVyKCksIHNoYXJlZFdv
cmtlci51cmwoKSwgc2hhcmVkV29ya2VyLndvcmtlck9wdGlvbnMoKSwgc2hhcmVkV29ya2VyLmZl
dGNoUmVzdWx0KCkgfSk7CisgICAgZm9yIChhdXRvJiBwb3J0IDogc2hhcmVkV29ya2VyLnNoYXJl
ZFdvcmtlck9iamVjdHMoKS52YWx1ZXMoKSkKKyAgICAgICAgcG9zdENvbm5lY3RFdmVudChzaGFy
ZWRXb3JrZXIsIHBvcnQpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OnBvc3RDb25uZWN0RXZlbnQoY29uc3QgV2ViU2hhcmVkV29ya2VyJiBzaGFy
ZWRXb3JrZXIsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmIHBvcnQpCit7
CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJwb3N0Q29ubmVjdEV2ZW50OiBz
aGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VyLmlkZW50aWZpZXIo
KS50b1VJbnQ2NCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OlBvc3RDb25uZWN0RXZlbnQgeyBzaGFyZWRXb3JrZXIuaWRlbnRp
ZmllcigpLCBwb3J0LCBzaGFyZWRXb3JrZXIub3JpZ2luKCkuY2xpZW50T3JpZ2luLnRvU3RyaW5n
KCkgfSk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6dGVybWluYXRlU2hhcmVkV29ya2VyKGNvbnN0IFdlYlNoYXJlZFdvcmtlciYgc2hhcmVkV29y
a2VyKQoreworICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygidGVybWluYXRlU2hh
cmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2Vy
LmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlRlcm1pbmF0ZVNoYXJlZFdvcmtlciB7IHNo
YXJlZFdvcmtlci5pZGVudGlmaWVyKCkgfSk7Cit9CisKKyN1bmRlZiBDT05URVhUX0NPTk5FQ1RJ
T05fUkVMRUFTRV9MT0cKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1No
YXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDZhZWEzMTlhYTNlODBlNjcwZGVkYmMwYzhhYmQwZjJmNmI1Y2EyNAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDgwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRl
bnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1RyYW5zZmVycmVkTWVzc2FnZVBvcnQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
UmVnaXN0cmFibGVEb21haW47CitjbGFzcyBTY3JpcHRCdWZmZXI7CitzdHJ1Y3QgQ2xpZW50T3Jp
Z2luOworc3RydWN0IFdvcmtlckZldGNoUmVzdWx0Oworc3RydWN0IFdvcmtlck9wdGlvbnM7Cit9
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzczsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlcjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZl
cjsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBmaW5h
bCA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2ViU2hhcmVkV29ya2Vy
U2VydmVyJik7CisgICAgfldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24o
KTsKKworICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVy
KCkgY29uc3Q7CisgICAgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJh
YmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQorICAgIElQ
Qzo6Q29ubmVjdGlvbiYgaXBjQ29ubmVjdGlvbigpIGNvbnN0OworCisgICAgdm9pZCBsYXVuY2hT
aGFyZWRXb3JrZXIoV2ViU2hhcmVkV29ya2VyJik7CisgICAgdm9pZCBwb3N0Q29ubmVjdEV2ZW50
KGNvbnN0IFdlYlNoYXJlZFdvcmtlciYsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2Fn
ZVBvcnQmKTsKKyAgICB2b2lkIHRlcm1pbmF0ZVNoYXJlZFdvcmtlcihjb25zdCBXZWJTaGFyZWRX
b3JrZXImKTsKKworICAgIHZvaWQgY29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKTsKKworICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
ZmluYWw7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAgIHZvaWQgcG9zdEV4
Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVy
LgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBm
aW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZp
bmFsOworCisgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fY29ubmVjdGlvbjsK
KyAgICBXZWFrUHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlcj4gbV9zZXJ2ZXI7CisgICAgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
aGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYWU0N2MxMjJjYmFjODczYzIyYjZkYTNiYzFlYTRkYTA2OGUzNTkyYQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwy
NSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisj
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAt
PiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQg
eworICAgIFBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFN0cmluZyBlcnJvck1lc3NhZ2UsIGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTdHJpbmcgc291cmNlVVJMKQorfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCAxYzQyZDA0MGMxYTkwYjBhYWRkMTRlOGIzMzVlZjhk
ZGJiY2FmOWQ2Li5kZTMyZjgxNzE3MTU2NDdkNTM2MTA2MjZhNDc5MTkwNDAwN2RlYjQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0xvZ2dpbmcuaApAQCAtOTcsNiArOTcsNyBAQCBleHRlcm4gIkMiIHsKICAg
ICBNKFNlcnZpY2VXb3JrZXIpIFwKICAgICBNKFNlc3Npb25TdGF0ZSkgXAogICAgIE0oU2hhcmVk
RGlzcGxheUxpc3RzKSBcCisgICAgTShTaGFyZWRXb3JrZXIpIFwKICAgICBNKFN0b3JhZ2UpIFwK
ICAgICBNKFN0b3JhZ2VBUEkpIFwKICAgICBNKFRleHRJbnB1dCkgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggN2ViZmE1MTZiNTAzMzZkMzY4N2Y3ZWNkZDE3
ZThlN2ViZDFjZDlkNy4uNGM4Y2FkMDQ2NDcxNmY3MzMyYWFiNWM3OThiNmMxYWE1NWJiNzhjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0zMDMsMTAgKzMw
MywxMyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAg
ICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllcicsCiAgICAgICAg
ICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcicsCiAgICAgICAg
ICdXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoJywKKyAgICAgICAgJ1dlYkNvcmU6OlNoYXJlZFdv
cmtlcklkZW50aWZpZXInLAorICAgICAgICAnV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTbGVlcERpc2FibGVySWRlbnRpZmllcicsCiAg
ICAgICAgICdXZWJDb3JlOjpTb3VyY2VCdWZmZXJBcHBlbmRNb2RlJywKICAgICAgICAgJ1dlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXInLAogICAgICAg
ICAnV2ViQ29yZTo6U3RvcmFnZVR5cGUnLAorICAgICAgICAnV2ViQ29yZTo6VHJhbnNmZXJyZWRN
ZXNzYWdlUG9ydCcsCiAgICAgICAgICdXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0SWRlbnRpZmll
cicsCiAgICAgICAgICdXZWJDb3JlOjpXZWJMb2NrSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJD
b3JlOjpXZWJTb2NrZXRJZGVudGlmaWVyJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDU3ZWYzYjE0ZWFmMmMx
MDkyMDk4ZWU5NDMyZjUwOGM2MTFlNThlMzUuLmUzMTM5MTA1OWNiM2NiMjAwYTQ4MzcxOTlhNDlk
MzIxOWM4NDQ3M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMTQxLDYgKzE0MSwxMSBAQCBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuY3BwIEBuby11bmlmeQogTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIEBuby11bmlm
eQogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uY3BwIEBuby11bmlmeQogCitOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hh
cmVkV29ya2VyLmNwcAorTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtl
clNlcnZlci5jcHAKK05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uLmNwcAorTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisKIE5ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5jcHAKIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmls
ZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS5jcHAKQEAgLTc4Myw4ICs3ODgsOSBAQCBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCiBXZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dPcmlnaW5UYWJsZS5jcHAKIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNl
cnZpY2VXb3JrZXJQcm92aWRlci5jcHAKLVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3Jr
ZXJQcm92aWRlci5jcHAKK1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uY3BwCiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbi5jcHAKK1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJQ
cm92aWRlci5jcHAKIAogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXIuY3BwCiAKQEAgLTg4NywzICs4OTMsNyBAQCBSZW1vdGVXZWJMb2NrUmVnaXN0cnlNZXNz
YWdlUmVjZWl2ZXIuY3BwCiBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrTWVzc2FnZVJlY2VpdmVy
LmNwcAogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5TWVzc2FnZVJlY2VpdmVyLmNwcAogV2Vi
TG9ja1JlZ2lzdHJ5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCitXZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBhNjc4
MzY3YTc3NWE0OWJhODFiMjQ4OGNmMzFlYWI5ZGNjY2NjOTIxLi4zMzAyMGJkNWMzY2Q5NDE3NzU2
MTU3OWFjMjBmYzM4ZjljNjkyNzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTUyOSw3ICs1MjksNyBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVdlYlByb2Nlc3MoV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvYwogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0ZXJt
aW5hdGVVbnJlc3BvbnNpdmVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQogewogICAgIGlmIChSZWZQdHIgcHJvY2VzcyA9
IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIocHJvY2Vzc0lkZW50aWZpZXIp
KSB7Ci0gICAgICAgIHByb2Nlc3MtPmRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgICAgICBw
cm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZp
Y2VXb3JrZXIpOwogICAgICAgICBwcm9jZXNzLT5yZXF1ZXN0VGVybWluYXRpb24oUHJvY2Vzc1Rl
cm1pbmF0aW9uUmVhc29uOjpFeGNlZWRlZENQVUxpbWl0KTsKICAgICB9CiB9CkBAIC0xNDE1LDE2
ICsxNDE1LDIxIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRGVzdHJveVdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50CiB9CiAjZW5kaWYKIAordm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJs
ZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlz
aFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXVEZNb3ZlKHJl
Z2lzdHJhYmxlRG9tYWluKSwgc2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Cit9CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MoUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlm
aWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2Vy
dmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcygqdGhpcywgV1RGTW92
ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgc2Vzc2lv
bklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgV2ViUHJvY2Vzc1Bvb2w6OmVz
dGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV1RG
TW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgc2Vz
c2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6c2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQo
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBpZiAoYXV0byog
cHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIoaWRlbnRpZmll
cikpCi0gICAgICAgIHByb2Nlc3MtPmRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgICAgICBw
cm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZp
Y2VXb3JrZXIpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2Vydmlj
ZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vz
c0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzSWRlbnRpZmllcikKQEAgLTE0NjAsNiArMTQ2NSwxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9j
ZXNzSQogfQogI2VuZGlmCiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2hhcmVkV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciBpZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvKiBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5
Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihpZGVudGlmaWVyKSkKKyAgICAgICAgcHJvY2Vzcy0+ZGlz
YWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpOwor
fQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwg
dWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3Bh
Y2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBxdW90YSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUkVMRUFTRV9MT0coU3RvcmFn
ZSwgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VTcGFjZSIsIHRoaXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaAppbmRleCBhNGUzNjQ1ZWJhYWUzMzZkMTgwYjU0MTRiYWZhYTM1ZDgzZjkxOGM0
Li42ODQxYTM0ZmUwOWQxMmJhOTNkNGVmOGM4MGU0NTMzYTU1ZmQ2NWM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApA
QCAtMzM0LDYgKzMzNCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFNlcnZpY2VXb3JrZXJC
YWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29y
a2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIHZvaWQgZW5kU2VydmljZVdvcmtlckJhY2tncm91
bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzSWRlbnRpZmllcik7CiAjZW5kaWYKKyAgICB2b2lkIHNoYXJlZFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOworICAgIHZv
aWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCB0ZXJtaW5hdGVXZWJQcm9jZXNzKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmlu
ZGV4IDEyZDA2Y2ViZDYyYWYxNzUwZTc4ODU1OWMxM2ExYjM5ODNmZGQyYmEuLjE1NzU3ZWQ5YTI1
MmIwOWRjZDExYmI1ZTZiOWM4YTEwZDA1MzRjOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW4KQEAgLTYwLDYgKzYwLDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBM
ZWdhY3lSZWNlaXZlciB7CiAgICAgU3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3Np
bmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlm
aWVyKQogICAgIEVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpCiAjZW5kaWYK
KyAgICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKKyAgICBTaGFyZWRXb3JrZXJDb250ZXh0Q29u
bmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCiAKICAgICBTZXRXZWJQcm9jZXNzSGFzVXBsb2FkcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciBwcm9jZXNzSUQsIGJvb2wgaGFzVXBsb2FkKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAppbmRleCA2MWE4OTIwMGJiMDlkMDA2ZWFhNDY5ZDJlNGQ5ZGY2MDAz
YTc3MTM3Li5mODI0OGY1YzM1NGQ3ODdiMDEzY2ZjN2YwYjY2NTI5OTRhMmU0ODczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM2OTQsMTEgKzM2OTQsOSBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlckFnZW50KFN0cmluZyYmIHVzZXJBZ2VudCkKICAg
ICAgICAgcmV0dXJuOwogICAgIG1fdXNlckFnZW50ID0gV1RGTW92ZSh1c2VyQWdlbnQpOwogCi0j
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIC8vIFdlIHVwZGF0ZSB0aGUgc2VydmljZSB3
b3JrZXIgdGhlcmUgYXQgdGhlIG1vbWVudCB0byBiZSBzdXJlIHdlIHVzZSB2YWx1ZXMgdXNlZCBi
eSBhY3R1YWwgd2ViIHBhZ2VzLgogICAgIC8vIEZJWE1FOiBSZWZhY3RvciB0aGlzIHdoZW4gd2Ug
aGF2ZSBhIGJldHRlciBVc2VyLUFnZW50IHN0b3J5LgotICAgIHByb2Nlc3MoKS5wcm9jZXNzUG9v
bCgpLnVwZGF0ZVNlcnZpY2VXb3JrZXJVc2VyQWdlbnQobV91c2VyQWdlbnQpOwotI2VuZGlmCisg
ICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCkudXBkYXRlV29ya2VyVXNlckFnZW50KG1fdXNlckFn
ZW50KTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGFmYzIzZWU1
M2YxMjg0MjE5M2QyZWFlZjIwZjI1OTYyZWVkNzNmYTIuLjRiMTliMGQxZDNjMTU0Y2IyZTZmMzAy
MzZiMTM0ZTA1OThjYTI0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKQEAgLTUyOSw3ICs1MjksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRXZWJB
dXRoblByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1BybwogYm9v
bCBXZWJQcm9jZXNzUG9vbDo6c191c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzID0gZmFs
c2U7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3NQb29sOjpl
c3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5l
dHdvcmtQcm9jZXNzUHJveHkmIHByb3h5LCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxl
RG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBz
ZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQcm9j
ZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlv
bmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlk
ZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8qIHdlYnNpdGVEYXRhU3RvcmUg
PSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChzZXNzaW9u
SUQpOwogICAgIGlmICghd2Vic2l0ZURhdGFTdG9yZSkKQEAgLTU0Niw3ICs1NDYsNyBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKE5ldAogICAgIGlmIChzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIp
IHsKICAgICAgICAgLy8gVGhpcyBpcyBhIHNlcnZpY2Ugd29ya2VyIGZvciBhIHNlcnZpY2Ugd29y
a2VyIHBhZ2Ugc28gd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgdXNlIHVzZSB0aGUgcGFnZSdzIFdl
YlByb2Nlc3MgZm9yIHRoZSBzZXJ2aWNlIHdvcmtlci4KICAgICAgICAgaWYgKChzZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihz
ZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXItPnByb2Nlc3NJZGVudGlmaWVyKCkpKSkgewotICAg
ICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlU2VydmljZVdvcmtlcnMo
cHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2aWNlV29y
a2VycygpKTsKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVdv
cmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBwcm9jZXNz
UG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CiAgICAg
ICAgICAgICBpZiAoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgp
KSB7CiAgICAgICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLnJlbW92
ZVByb2Nlc3MoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NDYWNoZTo6U2hv
dWxkU2h1dERvd25Qcm9jZXNzOjpObyk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFzZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpOwpAQCAtNTY0LDcgKzU2NCw3
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBwcm9jZXNzLnB0cigpOwot
ICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlU2VydmljZVdvcmtl
cnMocHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2aWNl
V29ya2VycygpKTsKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJs
ZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBwcm9j
ZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CiAK
ICAgICAgICAgICAgIGlmIChzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0Nh
Y2hlKCkpIHsKICAgICAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hlKCku
cmVtb3ZlUHJvY2Vzcygqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0NhY2hl
OjpTaG91bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzKE5ldAogICAgIH0KIAogICAgIGlmICghc2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eSkgewotICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6
Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMoKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiAg
eyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIGF1dG8g
bmV3UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdlYlBy
b2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgKnByb2Nlc3NQb29sLCBSZWdp
c3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7
CiAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBuZXdQcm9jZXNzUHJveHkucHRy
KCk7CiAKICAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElDKFNlcnZpY2VX
b3JrZXIsICJlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzIGNyZWF0aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nlcz0lcCwg
UElEPSVkKSIsIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIHNlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOwpAQCAtNTg2LDIwICs1ODYsNzAgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhOZXQKICAgICAgICAgcHJvY2Vzc1Bvb2wtPm1fcHJvY2Vzc2VzLmFwcGVu
ZChXVEZNb3ZlKG5ld1Byb2Nlc3NQcm94eSkpOwogICAgIH0KIAotICAgIEFTU0VSVCghc2Vydmlj
ZVdvcmtlclByb2Nlc3NlcygpLmNvbnRhaW5zKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KSk7
Ci0gICAgc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eSk7CisgICAgd29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5KTsKIAotICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZpY2VX
b3JrZXJDb250ZXh0KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA/IHBy
b2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bv
b2wtPm1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJs
ZURvbWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7Ci0gICAgaWYgKCFwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyVXNlckFnZW50
LmlzTnVsbCgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRTZXJ2aWNl
V29ya2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQpOwor
ICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250
ZXh0KHByb2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bvb2wtPm1fd29y
a2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3JvdXAt
PnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQ
YWdlSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmICghcHJv
Y2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQorICAgICAgICBzZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5LT5zZXRXb3JrZXJVc2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fd29ya2Vy
VXNlckFnZW50KTsKIH0KKyNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVGcm9t
U2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCit2b2lkIFdl
YlByb2Nlc3NQb29sOjpyZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYg
cHJvY2VzcykKIHsKLSAgICBBU1NFUlQoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmNvbnRhaW5z
KHByb2Nlc3MpKTsKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkucmVtb3ZlKHByb2Nlc3Mp
OworICAgIEFTU0VSVCh3b3JrZXJQcm9jZXNzZXMoKS5jb250YWlucyhwcm9jZXNzKSk7CisgICAg
d29ya2VyUHJvY2Vzc2VzKCkucmVtb3ZlKHByb2Nlc3MpOworfQorCit2b2lkIFdlYlByb2Nlc3NQ
b29sOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3Rv
cmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Npb25JRCk7CisgICAgaWYgKCF3
ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOworICAgIGlmICghcHJvY2Vzc1Bvb2xzKCku
c2l6ZSgpKQorICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPFdlYlByb2Nlc3NQb29s
Pj4gc2hhcmVkV29ya2VyUHJvY2Vzc1Bvb2woV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6OlBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCkuZ2V0KCkpKTsKKworICAgIC8vIEFyYml0
cmFyaWx5IGNob29zZSB0aGUgZmlyc3QgcHJvY2VzcyBwb29sIHRvIGhvc3QgdGhlIHNoYXJlZCB3
b3JrZXIgcHJvY2Vzcy4KKyAgICBhdXRvKiBwcm9jZXNzUG9vbCA9IHByb2Nlc3NQb29scygpWzBd
OworICAgIEFTU0VSVChwcm9jZXNzUG9vbCk7CisKKyAgICBXZWJQcm9jZXNzUHJveHkqIHNoYXJl
ZFdvcmtlclByb2Nlc3NQcm94eSB7IG51bGxwdHIgfTsKKworICAgIGZvciAoYXV0byYgcHJvY2Vz
cyA6IHByb2Nlc3NQb29sLT5tX3Byb2Nlc3NlcykgeworICAgICAgICBpZiAocHJvY2Vzcy5wdHIo
KSA9PSBwcm9jZXNzUG9vbC0+bV9wcmV3YXJtZWRQcm9jZXNzLmdldCgpIHx8IHByb2Nlc3MtPmlz
RHVtbXlQcm9jZXNzUHJveHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAo
JnByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlKQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIGlmICghcHJvY2Vzcy0+aXNNYXRjaGluZ1JlZ2lzdHJh
YmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSA9IHByb2Nlc3MucHRyKCk7CisgICAgICAg
IHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6
OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJv
bGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOworCisgICAgICAgIGlmIChzaGFyZWRXb3JrZXJQ
cm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSkgeworICAgICAgICAgICAgcHJvY2Vzc1Bv
b2wtPndlYlByb2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nlc3MoKnNoYXJlZFdvcmtlclByb2Nlc3NQ
cm94eSwgV2ViUHJvY2Vzc0NhY2hlOjpTaG91bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKKyAgICAg
ICAgICAgIEFTU0VSVCghc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hl
KCkpOworICAgICAgICB9CisKKyAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RB
VElDKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyByZXVzaW5nIGFuIGV4aXN0aW5nIHdlYiBwcm9jZXNzIChwcm9jZXNz
PSVwLCBQSUQ9JWQpIiwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LCBzaGFyZWRXb3JrZXJQcm9j
ZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisK
KyAgICBpZiAoIXNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSkgeworICAgICAgICBhdXRvIG5ld1By
b2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yV29ya2VycyhXZWJQcm9jZXNz
UHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJs
ZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CisgICAg
ICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSA9IG5ld1Byb2Nlc3NQcm94eS5wdHIoKTsKKwor
ICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoU2hhcmVkV29ya2VyLCAi
ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIGNy
ZWF0aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nlc3M9JXAsIFBJRD0lZCki
LCBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHksIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSk7CisKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmluaXRpYWxpemVOZXdX
ZWJQcm9jZXNzKG5ld1Byb2Nlc3NQcm94eSwgd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIHBy
b2Nlc3NQb29sLT5tX3Byb2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdQcm9jZXNzUHJveHkpKTsK
KyAgICB9CisKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNoYXJlZFdvcmtlclByb2Nlc3NQ
cm94eSk7CisKKyAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNoYXJlZFdv
cmtlckNvbnRleHQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNzUG9v
bC0+bV93b3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVsdFBh
Z2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJsZURvbWFpbiwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNl
ckFnZW50LmlzTnVsbCgpKQorICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPnNldFdv
cmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV93b3JrZXJVc2VyQWdlbnQpOwogfQotI2VuZGlm
CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5n
ZWQoKQogewpAQCAtMTAwMywxMCArMTA1Myw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Nv
bm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIAogICAgIG1fYmFja0Zvcndh
cmRDYWNoZS0+cmVtb3ZlRW50cmllc0ZvclByb2Nlc3MocHJvY2Vzcyk7CiAKLSNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMo
KSkKLSAgICAgICAgcmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7Ci0j
ZW5kaWYKKyAgICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdXb3JrZXJzKCkpCisgICAgICAgIHJlbW92
ZUZyb21Xb3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7CiAKICAgICBzdGF0aWNfY2FzdDxXZWJDb250
ZXh0U3VwcGxlbWVudCo+KHN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkp
LT5wcm9jZXNzRGlkQ2xvc2UoJnByb2Nlc3MpOwogCkBAIC0xMDY3LDEyICsxMTE1LDEyIEBAIFJl
ZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFibGVE
b21haW4oV2Vic2l0ZURhdGFTdG9yCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1V
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIFdlYlByb2Nlc3NQb29sOjp1c2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKQorVXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllciBXZWJQcm9jZXNzUG9vbDo6dXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllckZvcldvcmtlcnMoKQogewotICAgIGlmICghbV91c2VyQ29udGVudENvbnRyb2xsZXJG
b3JTZXJ2aWNlV29ya2VyKQotICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclNlcnZp
Y2VXb3JrZXIgPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKCk7CisgICAg
aWYgKCFtX3VzZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtlcnMpCisgICAgICAgIG1fdXNlckNv
bnRlbnRDb250cm9sbGVyRm9yV29ya2VycyA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjpjcmVhdGUoKTsKIAotICAgIHJldHVybiBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclNlcnZp
Y2VXb3JrZXItPmlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gbV91c2VyQ29udGVudENvbnRyb2xs
ZXJGb3JXb3JrZXJzLT5pZGVudGlmaWVyKCk7CiB9CiAjZW5kaWYKIApAQCAtMTExOSwxNSArMTE2
NywxMyBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQ
YWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogCiAgICAgYXV0byBwYWdlID0gcHJvY2Vz
cy0+Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7
CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJQ
cmVmZXJlbmNlcykgewotICAgICAgICBtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA9IHBhZ2Ut
PnByZWZlcmVuY2VzU3RvcmUoKTsKLSAgICAgICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2VyUHJv
Y2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSkKLSAgICAgICAgICAgIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzLnVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKCptX3NlcnZpY2VX
b3JrZXJQcmVmZXJlbmNlcyk7CisgICAgaWYgKCFtX3dvcmtlclByZWZlcmVuY2VzKSB7CisgICAg
ICAgIG1fd29ya2VyUHJlZmVyZW5jZXMgPSBwYWdlLT5wcmVmZXJlbmNlc1N0b3JlKCk7CisgICAg
ICAgIGZvciAoYXV0byYgd29ya2VyUHJvY2VzcyA6IHdvcmtlclByb2Nlc3NlcygpKQorICAgICAg
ICAgICAgd29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKCptX3dvcmtl
clByZWZlcmVuY2VzKTsKICAgICB9CiAgICAgaWYgKHVzZXJDb250ZW50Q29udHJvbGxlcikKLSAg
ICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyID0gdXNlckNvbnRl
bnRDb250cm9sbGVyOwotI2VuZGlmCisgICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9y
V29ya2VycyA9IHVzZXJDb250ZW50Q29udHJvbGxlcjsKIAogICAgIGJvb2wgZW5hYmxlUHJvY2Vz
c1N3YXBPbkNyb3NzU2l0ZU5hdmlnYXRpb24gPSBwYWdlLT5wcmVmZXJlbmNlcygpLnByb2Nlc3NT
d2FwT25Dcm9zc1NpdGVOYXZpZ2F0aW9uRW5hYmxlZCgpOwogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCkBAIC0xMTUwLDE2ICsxMTk2LDE0IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQ
b29sOjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAgICAg
cmV0dXJuIHBhZ2U7CiB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlBy
b2Nlc3NQb29sOjp1cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlV29ya2VyVXNlckFnZW50KGNvbnN0
IFN0cmluZyYgdXNlckFnZW50KQogewotICAgIGlmIChtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQg
PT0gdXNlckFnZW50KQorICAgIGlmIChtX3dvcmtlclVzZXJBZ2VudCA9PSB1c2VyQWdlbnQpCiAg
ICAgICAgIHJldHVybjsKLSAgICBtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQgPSB1c2VyQWdlbnQ7
Ci0gICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9j
ZXNzZXMoKSkKLSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3Muc2V0U2VydmljZVdvcmtlclVz
ZXJBZ2VudChtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQpOworICAgIG1fd29ya2VyVXNlckFnZW50
ID0gdXNlckFnZW50OworICAgIGZvciAoYXV0byYgd29ya2VyUHJvY2VzcyA6IHdvcmtlclByb2Nl
c3NlcygpKQorICAgICAgICB3b3JrZXJQcm9jZXNzLnNldFdvcmtlclVzZXJBZ2VudChtX3dvcmtl
clVzZXJBZ2VudCk7CiB9Ci0jZW5kaWYKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUJlZ2lu
VXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJz
aXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCiB7CkBAIC0xNTM4LDggKzE1ODIsMTMgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlU2VydmljZVdvcmtlcnMoKQogewogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07Ci0gICAgd2hp
bGUgKHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb21wdXRlU2l6ZSgpKQotICAgICAgICBzZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzKCkuYmVnaW4oKS0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7Cisg
ICAgVmVjdG9yPFJlZjxXZWJQcm9jZXNzUHJveHk+PiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOwor
ICAgIHdvcmtlclByb2Nlc3NlcygpLmZvckVhY2goWyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICAg
ICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKKyAgICAgICAgICAgIHNl
cnZpY2VXb3JrZXJQcm9jZXNzZXMuYXBwZW5kKHByb2Nlc3MpOworICAgIH0pOworICAgIGZvciAo
YXV0byYgc2VydmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKQorICAg
ICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5
OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgogfQogCkBAIC0xNzY3LDEzICsx
ODE2LDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcG9ydFdlYkNvbnRlbnRDUFVUaW1lKFNl
Y29uZHMgY3B1VGltZSwgdWludDY0X3QgYWN0aXZpdHlTCiAjZW5kaWYKIH0KIAotI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKLVdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIFdlYlByb2Nl
c3NQb29sOjpzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkKK1dlYWtIYXNoU2V0PFdlYlByb2Nlc3NQ
cm94eT4mIFdlYlByb2Nlc3NQb29sOjp3b3JrZXJQcm9jZXNzZXMoKQogewogICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+PiBwcm9jZXNzZXM7CiAg
ICAgcmV0dXJuIHByb2Nlc3NlczsKIH0KLSNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp1
cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpCiB7CkBAIC0xNzg1LDIwICsxODMyLDI1IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkKICAgICBpZiAoYXV0byog
Z3B1UHJvY2VzcyA9IEdQVVByb2Nlc3NQcm94eTo6c2luZ2xldG9uSWZDcmVhdGVkKCkpCiAgICAg
ICAgIGdwdVByb2Nlc3MtPnVwZGF0ZVByb2Nlc3NBc3NlcnRpb24oKTsKICNlbmRpZgotI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKKwogICAgIC8vIENoZWNrIG9uIG5leHQgcnVuIGxvb3Agc2lu
Y2UgdGhlIHdlYiBwcm9jZXNzIHByb3h5IHRva2VucyBhcmUgcHJvYmFibHkgYmVpbmcgdXBkYXRl
ZC4KICAgICBjYWxsT25NYWluUnVuTG9vcChbXSB7Ci0gICAgICAgIGZvciAoYXV0byYgc2Vydmlj
ZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkpCi0gICAgICAgICAgICBz
ZXJ2aWNlV29ya2VyUHJvY2Vzcy51cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigp
OwotICAgIH0pOworICAgICAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFtdKGF1dG8mIHdv
cmtlclByb2Nlc3MpIHsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgICAgICAgICBp
ZiAod29ya2VyUHJvY2Vzcy5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQorICAgICAgICAgICAg
ICAgIHdvcmtlclByb2Nlc3MudXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXZWJQcm9jZXNz
UHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogI2VuZGlmCisgICAgICAgICAgICBp
ZiAod29ya2VyUHJvY2Vzcy5pc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkpCisgICAgICAgICAgICAg
ICAgd29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdlYlByb2Nlc3NQ
cm94eTo6V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9
CiAKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6OmlzU2VydmljZVdvcmtlclBhZ2VJRChXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAgICAgLy8gRklYTUU6IFRoaXMgaXMgaW5lZmZpY2llbnQuCi0gICAgcmV0dXJuIFdURjo6YW55
T2Yoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLCBbcGFnZUlEXShhdXRvJiBwcm9jZXNzKSB7Cisg
ICAgcmV0dXJuIFdURjo6YW55T2Yod29ya2VyUHJvY2Vzc2VzKCksIFtwYWdlSURdKGF1dG8mIHBy
b2Nlc3MpIHsKICAgICAgICAgcmV0dXJuIHByb2Nlc3MuaGFzU2VydmljZVdvcmtlclBhZ2VQcm94
eShwYWdlSUQpOwogICAgIH0pOwogI2VuZGlmCkBAIC0yMTI0LDE2ICsyMTc2LDI2IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnNldFVzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoYm9vbCB1
c2VTZXBhcmF0ZVNlcnZpY2VXCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCitzaXpl
X3QgV2ViUHJvY2Vzc1Bvb2w6OnNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25zdAorewor
ICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKKyAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFsm
XShhdXRvJiBwcm9jZXNzKSB7CisgICAgICAgIGlmIChwcm9jZXNzLmlzUnVubmluZ1NlcnZpY2VX
b3JrZXJzKCkpCisgICAgICAgICAgICArK2NvdW50OworICAgIH0pOworICAgIHJldHVybiBjb3Vu
dDsKK30KKwogYm9vbCBXZWJQcm9jZXNzUG9vbDo6aGFzU2VydmljZVdvcmtlckZvcmVncm91bmRB
Y3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6OmFueU9mKHNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2VzcykgeworICAgIHJldHVybiBXVEY6
OmFueU9mKHdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJl
dHVybiBwcm9jZXNzLmhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5n
KCk7CiAgICAgfSk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6Omhhc1NlcnZpY2VXb3JrZXJC
YWNrZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjph
bnlPZihzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICBy
ZXR1cm4gV1RGOjphbnlPZih3b3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2Vzcykgewog
ICAgICAgICByZXR1cm4gcHJvY2Vzcy5oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5
Rm9yVGVzdGluZygpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmgKaW5kZXggZWI2NmQ4OTQ5MGRmZTAyOGIxMDEyNWU5M2ZmYmQxOThkMDI3ZjdjZS4u
ZTcwYjZmNDI5ZjdjYjcwNjk1NDk1MGY5MDBkMzc4MTNiZGFkZGJiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0zNzQsMTcgKzM3NCwyMCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0RpZFRlcm1pbmF0ZShOZXR3b3JrUHJvY2Vzc1Byb3h5
JiwgTmV0d29ya1Byb2Nlc3NQcm94eTo6VGVybWluYXRpb25SZWFzb24pOwogCiAgICAgYm9vbCBp
c1NlcnZpY2VXb3JrZXJQYWdlSUQoV2ViUGFnZVByb3h5SWRlbnRpZmllcikgY29uc3Q7CisgICAg
dm9pZCByZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYpOworCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFNlcnZpY2VX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94
eSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRp
ZmllciwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAg
dm9pZCByZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmKTsK
LSAgICBzaXplX3Qgc2VydmljZVdvcmtlclByb3hpZXNDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHNl
cnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb21wdXRlU2l6ZSgpOyB9Ci0gICAgdm9pZCB1cGRhdGVT
ZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKLSAgICBVc2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXJGb3JTZXJ2aWNlV29ya2VycygpOworICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFNlcnZpY2VX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICBzaXplX3Qgc2VydmljZVdvcmtlclBy
b3hpZXNDb3VudCgpIGNvbnN0OworICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIg
dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKTsKICAgICBib29sIGhh
c1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3Q7CiAgICAg
Ym9vbCBoYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0
OwogI2VuZGlmCiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyUHJvY2Vzc0NyYXNoZWQoV2ViUHJvY2Vz
c1Byb3h5Jik7CiAKKyAgICB2b2lkIHVwZGF0ZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcm
IHVzZXJBZ2VudCk7CisgICAgc3RhdGljIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYs
IFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkgY29uc3Q7
CiAjZW5kaWYKQEAgLTYxOCwxMyArNjIxLDExIEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFwPFBB
TDo6U2Vzc2lvbklELCBXZWFrUHRyPFdlYlByb2Nlc3NQcm94eT4+IG1fZHVtbXlQcm9jZXNzUHJv
eGllczsgLy8gTGlnaHR3ZWlnaHQgV2ViUHJvY2Vzc1Byb3h5IG9iamVjdHMgd2l0aG91dCBiYWNr
aW5nIHByb2Nlc3MuCiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgc3RhdGljIFdl
YWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKTsKLSAg
ICBib29sIG1fd2FpdGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNl
IH07Ci0gICAgU3RyaW5nIG1fc2VydmljZVdvcmtlclVzZXJBZ2VudDsKLSAgICBzdGQ6Om9wdGlv
bmFsPFdlYlByZWZlcmVuY2VzU3RvcmU+IG1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzOwotICAg
IFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gbV91c2VyQ29udGVudENvbnRy
b2xsZXJGb3JTZXJ2aWNlV29ya2VyOwotI2VuZGlmCisgICAgc3RhdGljIFdlYWtIYXNoU2V0PFdl
YlByb2Nlc3NQcm94eT4mIHdvcmtlclByb2Nlc3NlcygpOworCisgICAgc3RkOjpvcHRpb25hbDxX
ZWJQcmVmZXJlbmNlc1N0b3JlPiBtX3dvcmtlclByZWZlcmVuY2VzOworICAgIFJlZlB0cjxXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JXb3Jr
ZXJzOworICAgIFN0cmluZyBtX3dvcmtlclVzZXJBZ2VudDsKIAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKICAgICBSZWZQdHI8R1BVUHJvY2Vzc1Byb3h5PiBtX2dwdVByb2Nlc3M7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAwNTdkNDk5MjQxOGEw
MDQzZDg0YzU5ZDdiNmU1MmY5ZTAyNjU4YTcxLi5iNzQ2YTdkN2QyMTcwYzM5MjA1ZjMxZTUxYWVk
OGJiYzVlNmRlYjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUg
IldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKQEAgLTE4MiwxMSArMTgzLDExIEBAIFJlZjxXZWJQ
cm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sJiBwcm9j
ZXNzUG9vbCwgV2Vic2l0CiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1SZWY8V2Vi
UHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKFdl
YlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJs
ZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSkKK1JlZjxXZWJQcm9j
ZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yV29ya2VycyhXb3JrZXJUeXBlIHdv
cmtlclR5cGUsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21haW4m
JiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSkK
IHsKICAgICBhdXRvIHByb3h5ID0gYWRvcHRSZWYoKm5ldyBXZWJQcm9jZXNzUHJveHkocHJvY2Vz
c1Bvb2wsICZ3ZWJzaXRlRGF0YVN0b3JlLCBJc1ByZXdhcm1lZDo6Tm8sIENyb3NzT3JpZ2luTW9k
ZTo6U2hhcmVkLCBDYXB0aXZlUG9ydGFsTW9kZTo6RGlzYWJsZWQpKTsKICAgICBwcm94eS0+bV9y
ZWdpc3RyYWJsZURvbWFpbiA9IFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pOwotICAgIHByb3h5
LT5lbmFibGVTZXJ2aWNlV29ya2Vycyhwcm9jZXNzUG9vbC51c2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKSk7CisgICAgcHJveHktPmVuYWJsZVdvcmtlcnMo
d29ya2VyVHlwZSwgcHJvY2Vzc1Bvb2wudXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZv
cldvcmtlcnMoKSk7CiAgICAgcHJveHktPmNvbm5lY3QoKTsKICAgICByZXR1cm4gcHJveHk7CiB9
CkBAIC05OTUsMTAgKzk5NiwxMCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQmVjb21lVW5y
ZXNwb25zaXZlKCkKICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogaXNSZXNwb25zaXZlQ2FsbGJh
Y2tzKQogICAgICAgICBjYWxsYmFjayhpc1dlYlByb2Nlc3NSZXNwb25zaXZlKTsKIAotICAgIC8v
IElmIHRoZSB3ZWIgcHJvY2VzcyBiZWNvbWVzIHVucmVzcG9uc2l2ZSBhbmQgb25seSBydW5zIHNl
cnZpY2Ugd29ya2Vycywga2lsbCBpdCBvdXJzZWx2ZXMgc2luY2UgdGhlcmUgYXJlIG5vIG5hdGl2
ZSBjbGllbnRzIHRvIGRvIGl0LgotICAgIGlmIChpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpICYm
IG1fcGFnZU1hcC5pc0VtcHR5KCkpIHsKLSAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0Vf
TE9HX0VSUk9SKFBlcmZvcm1hbmNlTG9nZ2luZywgImRpZEJlY29tZVVucmVzcG9uc2l2ZTogVGVy
bWluYXRpbmcgc2VydmljZSB3b3JrZXItb25seSB3ZWIgcHJvY2VzcyBiZWNhdXNlIGl0IGlzIHVu
cmVzcG9uc2l2ZSIpOwotICAgICAgICBkaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICAvLyBJ
ZiB0aGUgd2ViIHByb2Nlc3MgYmVjb21lcyB1bnJlc3BvbnNpdmUgYW5kIG9ubHkgcnVucyBzZXJ2
aWNlL3NoYXJlZCB3b3JrZXJzLCBraWxsIGl0IG91cnNlbHZlcyBzaW5jZSB0aGVyZSBhcmUgbm8g
bmF0aXZlIGNsaWVudHMgdG8gZG8gaXQuCisgICAgaWYgKGlzUnVubmluZ1dvcmtlcnMoKSAmJiBt
X3BhZ2VNYXAuaXNFbXB0eSgpKSB7CisgICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xP
R19FUlJPUihQZXJmb3JtYW5jZUxvZ2dpbmcsICJkaWRCZWNvbWVVbnJlc3BvbnNpdmU6IFRlcm1p
bmF0aW5nIHdvcmtlci1vbmx5IHdlYiBwcm9jZXNzIGJlY2F1c2UgaXQgaXMgdW5yZXNwb25zaXZl
Iik7CisgICAgICAgIGRpc2FibGVXb3JrZXJzKHsgV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwg
V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyIH0pOwogICAgICAgICB0ZXJtaW5hdGUoKTsKICAgICB9
CiB9CkBAIC0xNjk0LDggKzE2OTUsOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUoY29uc3QgVVJMJiB1cmwpCiAgICAgYXV0byByZWdp
c3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsIH07CiAgICAg
aWYgKG1fcmVnaXN0cmFibGVEb21haW4gJiYgKm1fcmVnaXN0cmFibGVEb21haW4gIT0gcmVnaXN0
cmFibGVEb21haW4pIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgICAgIGRpc2Fi
bGVTZXJ2aWNlV29ya2VycygpOworICAgICAgICBkaXNhYmxlV29ya2VycyhXb3JrZXJUeXBlOjpT
ZXJ2aWNlV29ya2VyKTsKICNlbmRpZgorCiAgICAgICAgIC8vIE51bGwgb3V0IHJlZ2lzdHJhYmxl
IGRvbWFpbiBzaW5jZSB0aGlzIHByb2Nlc3MgaGFzIG5vdyBiZWVuIHVzZWQgZm9yIHNldmVyYWwg
ZG9tYWlucy4KICAgICAgICAgbV9yZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHsgfTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTg3Miw1NCArMTg3NCw4NSBAQCB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQoY29uc3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZSYgcwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAg
IH0sIDApOwogfQorI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRTZXJ2aWNlV29y
a2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQordm9pZCBXZWJQcm9jZXNzUHJv
eHk6OnNldFdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKIHsKLSAgICBB
U1NFUlQobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pOwotICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2VyQWdlbnQgfSwg
MCk7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIGlmIChtX3NlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbikKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OlNldFVzZXJBZ2VudCB7IHVzZXJBZ2VudCB9LCAwKTsKKyNlbmRpZgorICAgIGlm
IChtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlNldFVzZXJBZ2VudCB7IHVzZXJB
Z2VudCB9LCAwKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVNlcnZpY2VXb3Jr
ZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQordm9p
ZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2Vi
UHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiB7Ci0gICAgQVNTRVJUKG1fc2VydmljZVdvcmtlcklu
Zm9ybWF0aW9uKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDApOworI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpVcGRhdGVQ
cmVmZXJlbmNlc1N0b3JlIHsgc3RvcmUgfSwgMCk7CisjZW5kaWYKKyAgICBpZiAobV9zaGFyZWRX
b3JrZXJJbmZvcm1hdGlvbikKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpVcGRhdGVQcmVmZXJlbmNlc1N0b3JlIHsgc3RvcmUg
fSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29ya2VyUHJv
Y2Vzc0Fzc2VydGlvbigpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlV29ya2VyUHJvY2Vz
c0Fzc2VydGlvbihXb3JrZXJUeXBlIHdvcmtlclR5cGUpCiB7Ci0gICAgV0VCUFJPQ0VTU1BST1hZ
X1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlU2VydmljZVdvcmtlclByb2Nl
c3NBc3NlcnRpb246Iik7Ci0gICAgQVNTRVJUKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsK
LSAgICBpZiAoIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQorICAgIGF1dG8mIHdvcmtlcklu
Zm9ybWF0aW9uID0gd29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyBtX3No
YXJlZFdvcmtlckluZm9ybWF0aW9uIDogbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247CisgICAg
QVNTRVJUKHdvcmtlckluZm9ybWF0aW9uKTsKKyAgICBpZiAoIXdvcmtlckluZm9ybWF0aW9uKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBib29sIHNob3VsZFRha2VGb3JlZ3JvdW5kQWN0aXZpdHkg
PSBXVEY6OmFueU9mKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMs
IFsmXShhdXRvJiBwcm9jZXNzKSB7CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFBy
b2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbjogd29ya2VyVHlw
ZT0le3B1YmxpY31zIiwgd29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyAi
c2hhcmVkIiA6ICJzZXJ2aWNlIik7CisKKyAgICAvLyBGSVhNRTogQ2xpZW50cyBkbyBub3QgcHJv
cGVybHkgZ2V0IHBvcHVsYXRlZCBpbiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIHNvIHdlIGN1
cnJlbnRseSB0YWtlIGFuIGFzc2VydGlvbiBubyBtYXR0ZXIgd2hhdC4KKyAgICBpZiAod29ya2Vy
VHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpIHsKKyAgICAgICAgaWYgKCFQcm9jZXNz
VGhyb3R0bGVyOjppc1ZhbGlkRm9yZWdyb3VuZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0aW9uLT5h
Y3Rpdml0eSkpCisgICAgICAgICAgICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Ro
cm90dGxlci5mb3JlZ3JvdW5kQWN0aXZpdHkoIldvcmtlciBmb3IgZm9yZWdyb3VuZCB2aWV3KHMp
Il9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGJvb2wgc2hvdWxkVGFrZUZvcmVn
cm91bmRBY3Rpdml0eSA9IFdURjo6YW55T2Yod29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nl
c3NlcywgWyZdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuICZwcm9jZXNzICE9IHRo
aXMgJiYgISFwcm9jZXNzLm1fZm9yZWdyb3VuZFRva2VuOwogICAgIH0pOwogICAgIGlmIChzaG91
bGRUYWtlRm9yZWdyb3VuZEFjdGl2aXR5KSB7Ci0gICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxl
cjo6aXNWYWxpZEZvcmVncm91bmRBY3Rpdml0eShtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+
YWN0aXZpdHkpKQotICAgICAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2
aXR5ID0gbV90aHJvdHRsZXIuZm9yZWdyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3Ig
Zm9yZWdyb3VuZCB2aWV3KHMpIl9zKTsKKyAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjpp
c1ZhbGlkRm9yZWdyb3VuZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCisg
ICAgICAgICAgICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5mb3Jl
Z3JvdW5kQWN0aXZpdHkoIldvcmtlciBmb3IgZm9yZWdyb3VuZCB2aWV3KHMpIl9zKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGJvb2wgc2hvdWxkVGFrZUJhY2tncm91bmRBY3Rpdml0
eSA9IFdURjo6YW55T2YobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3Nl
cywgWyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICBib29sIHNob3VsZFRha2VCYWNrZ3JvdW5kQWN0
aXZpdHkgPSBXVEY6OmFueU9mKHdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMsIFsm
XShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiAmcHJvY2VzcyAhPSB0aGlzICYmICEh
cHJvY2Vzcy5tX2JhY2tncm91bmRUb2tlbjsKICAgICB9KTsKICAgICBpZiAoc2hvdWxkVGFrZUJh
Y2tncm91bmRBY3Rpdml0eSkgewotICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFs
aWRCYWNrZ3JvdW5kQWN0aXZpdHkobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5
KSkKLSAgICAgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1f
dGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tncm91
bmQgdmlldyhzKSJfcyk7CisgICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEJh
Y2tncm91bmRBY3Rpdml0eSh3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQorICAgICAgICAg
ICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFj
dGl2aXR5KCJXb3JrZXIgZm9yIGJhY2tncm91bmQgdmlldyhzKSJfcyk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBpZiAobV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3Np
bmcpIHsKKyAgICBpZiAod29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyICYm
IG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKSB7CiAgICAgICAgIFdFQlBS
T0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlNlcnZpY2UgV29ya2Vy
IGZvciBiYWNrZ3JvdW5kIHByb2Nlc3NpbmciKTsKLSAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0
bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5KG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9u
LT5hY3Rpdml0eSkpCi0gICAgICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0
aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2VyIGZv
ciBiYWNrZ3JvdW5kIHByb2Nlc3NpbmciX3MpOworICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRs
ZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkod29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5
KSkKKyAgICAgICAgICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVy
LmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tncm91bmQgcHJvY2Vz
c2luZyJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3NlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBudWxscHRyOworICAgIHdvcmtlckluZm9ybWF0aW9uLT5h
Y3Rpdml0eSA9IG51bGxwdHI7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hT
aGFyZWRXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVM
RUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dDogU3Rh
cnRlZCIpOworICAgIG1hcmtQcm9jZXNzQXNSZWNlbnRseVVzZWQoKTsKKyAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVsdFBhZ2VH
cm91cCgpLnBhZ2VHcm91cElEKCksIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24tPnJlbW90ZVdv
cmtlclBhZ2VQcm94eUlELCBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uLT5yZW1vdGVXb3JrZXJQ
YWdlSUQsIHN0b3JlLCByZWdpc3RyYWJsZURvbWFpbiwgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlv
bi0+aW5pdGlhbGl6YXRpb25EYXRhIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhp
cyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgeworICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICBXRUJQUk9DRVNTUFJP
WFlfUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4
dDogRmluaXNoZWQiKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9LCAwKTsK
IH0KIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKwogdm9pZCBXZWJQcm9jZXNzUHJveHk6
OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94
eSkKIHsKICAgICBpZiAoIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQpAQCAtMTkyNyw3ICsx
OTYwLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKIAogICAgIFdFQlBST0NFU1NQUk9YWV9S
RUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAicmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJv
Y2VzczogY2xpZW50UHJvY2Vzcz0lcCwgY2xpZW50UElEPSVkIiwgJnByb3h5LCBwcm94eS5wcm9j
ZXNzSWRlbnRpZmllcigpKTsKICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50
UHJvY2Vzc2VzLmFkZChwcm94eSk7Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3Nl
cnRpb24oKTsKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6OlNl
cnZpY2VXb3JrZXIpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dW5yZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCkBAIC0xOTM3LDcg
KzE5NzAsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveAogCiAgICAgV0VCUFJPQ0VTU1BST1hZ
X1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJ1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dFByb2Nlc3M6IGNsaWVudFByb2Nlc3M9JXAsIGNsaWVudFBJRD0lZCIsICZwcm94eSwgcHJveHku
cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNs
aWVudFByb2Nlc3Nlcy5yZW1vdmUocHJveHkpOwotICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9j
ZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJU
eXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KIAogYm9vbCBXZWJQcm9jZXNzUHJveHk6Omhhc1NlcnZp
Y2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKQEAgLTE5NTcsNyAr
MTk5MCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3Jv
dW5kUHJvY2Vzc2luZygpCiAKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vz
c1N1c3BlbnNpb24sICJzdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyIpOwog
ICAgIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nID0gdHJ1ZTsKLSAgICB1
cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOworICAgIHVwZGF0ZVdvcmtlclBy
b2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAKIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjplbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoKQpAQCAt
MTk2NywyMyArMjAwMCwzOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5kU2VydmljZVdvcmtl
ckJhY2tncm91bmRQcm9jZXNzaW5nKCkKIAogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xP
RyhQcm9jZXNzU3VzcGVuc2lvbiwgImVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2lu
ZyIpOwogICAgIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nID0gZmFsc2U7
Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKKyAgICB1cGRhdGVX
b3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogfQogI2Vu
ZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRp
c2FibGVTZXJ2aWNlV29ya2VycygpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlzYWJsZVdvcmtl
cnMoT3B0aW9uU2V0PFdvcmtlclR5cGU+IHdvcmtlclR5cGUpCiB7Ci0gICAgaWYgKCFtX3NlcnZp
Y2VXb3JrZXJJbmZvcm1hdGlvbikKKyAgICBBU1NFUlQoIXdvcmtlclR5cGUuaXNFbXB0eSgpKTsK
KworICAgIGJvb2wgZGlkQ2hhbmdlID0gZmFsc2U7CisgICAgaWYgKHdvcmtlclR5cGUuY29udGFp
bnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikgJiYgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24pIHsKKyAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gPSB7IH07CisgICAgICAg
IGRpZENoYW5nZSA9IHRydWU7CisgICAgfQorICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdv
cmtlclR5cGU6OlNoYXJlZFdvcmtlcikgJiYgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbikgewor
ICAgICAgICBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uID0geyB9OworICAgICAgICBkaWRDaGFu
Z2UgPSB0cnVlOworICAgIH0KKyAgICBpZiAoIWRpZENoYW5nZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJkaXNhYmxl
U2VydmljZVdvcmtlcnM6Iik7Ci0gICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gPSB7IH07
CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJkaXNhYmxlV29ya2Vy
czogRGlzYWJsaW5nIHdvcmtlcnMgKFNoYXJlZFdvcmtlcnM9JWQsIFNlcnZpY2VXb3JrZXJzPSVk
KSIsIHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSwgd29ya2Vy
VHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSk7CisKICAgICB1cGRhdGVC
YWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwogCisgICAgaWYgKCFpc1J1bm5pbmdXb3Jr
ZXJzKCkpCisgICAgICAgIHByb2Nlc3NQb29sKCkucmVtb3ZlRnJvbVdvcmtlclByb2Nlc3Nlcygq
dGhpcyk7CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgcHJvY2Vzc1Bvb2woKS5y
ZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcygqdGhpcyk7Ci0gICAgc2VuZChNZXNzYWdl
czo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNsb3NlIHsgfSwgMCk7CisgICAgaWYg
KHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikpCisgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9zZSB7IH0s
IDApOwogI2VuZGlmCisgICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2hh
cmVkV29ya2VyKSkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9zZSB7IH0sIDApOwogCiAgICAgbWF5YmVTaHV0RG93bigp
OwogfQpAQCAtMjAwNCwxMSArMjA1MywxMyBAQCBzdGF0aWMgVmVjdG9yPHN0ZDo6cGFpcjxXZWJD
b21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEsIFVSTD4+IGNvbnRlbnRSdWxlTGlzdHNGcgogfQog
I2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVTZXJ2aWNlV29ya2Vycyhjb25z
dCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJiB1c2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVdvcmtlcnMoV29ya2VyVHlw
ZSB3b3JrZXJUeXBlLCBjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJiB1c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKQogewotICAgIEFTU0VSVCghbV9zZXJ2aWNlV29y
a2VySW5mb3JtYXRpb24pOwotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNl
V29ya2VyLCAiZW5hYmxlU2VydmljZVdvcmtlcnM6Iik7Ci0gICAgbV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb24gPSBSZW1vdGVXb3JrZXJJbmZvcm1hdGlvbiB7CisgICAgV0VCUFJPQ0VTU1BST1hZ
X1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJlbmFibGVXb3JrZXJzOiB3b3JrZXJUeXBlPSV1
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHdvcmtlclR5cGUpKTsKKyAgICBhdXRvJiB3b3JrZXJJ
bmZvcm1hdGlvbiA9IHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8gbV9z
aGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA6IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOworICAg
IEFTU0VSVCghd29ya2VySW5mb3JtYXRpb24pOworCisgICAgd29ya2VySW5mb3JtYXRpb24gPSBS
ZW1vdGVXb3JrZXJJbmZvcm1hdGlvbiB7CiAgICAgICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXI6
OmdlbmVyYXRlKCksCiAgICAgICAgIFBhZ2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLAogICAgICAg
ICBSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgewpAQCAtMjAyMSw5ICsyMDcyLDggQEAg
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVNlcnZpY2VXb3JrZXJzKGNvbnN0IFVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXIKICAgICAgICAgeyB9CiAgICAgfTsKICAgICB1cGRhdGVC
YWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOwotI2VuZGlmCisK
KyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKHdvcmtlclR5cGUpOwogfQogCiB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlU2xlZXBEaXNhYmxlcihTbGVlcERpc2FibGVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgYm9vbCBkaXNwbGF5KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCBmOGI3OTViMWQz
NDM1MzVlODA5MmUwMWRiYWIzNzlhZjMzNDYxZGJlLi43MGU4OTA1MWNjYmJjN2U5MDQ2YmMxYzk5
OGI5MGEwYjY4ZWY2NTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaApAQCAtMTM2LDkgKzEzNiwxMyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIGNsYXNzIFNob3Vs
ZExhdW5jaFByb2Nlc3MgOiBib29sIHsgTm8sIFllcyB9OwogICAgIGVudW0gY2xhc3MgQ2FwdGl2
ZVBvcnRhbE1vZGUgOiBib29sIHsgRGlzYWJsZWQsIEVuYWJsZWQgfTsKKyAgICBlbnVtIGNsYXNz
IFdvcmtlclR5cGUgOiB1aW50MzJfdCB7CisgICAgICAgIFNlcnZpY2VXb3JrZXIgPSAxIDw8IDAs
CisgICAgICAgIFNoYXJlZFdvcmtlciA9IDEgPDwgMQorICAgIH07CiAKICAgICBzdGF0aWMgUmVm
PFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sJiwgV2Vic2l0ZURhdGFTdG9y
ZSosIENhcHRpdmVQb3J0YWxNb2RlLCBJc1ByZXdhcm1lZCwgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5N
b2RlID0gV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQsIFNob3VsZExhdW5jaFByb2Nl
c3MgPSBTaG91bGRMYXVuY2hQcm9jZXNzOjpZZXMpOwotICAgIHN0YXRpYyBSZWY8V2ViUHJvY2Vz
c1Byb3h5PiBjcmVhdGVGb3JTZXJ2aWNlV29ya2VycyhXZWJQcm9jZXNzUG9vbCYsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKKyAgICBzdGF0aWMgUmVm
PFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlRm9yV29ya2VycyhXb3JrZXJUeXBlLCBXZWJQcm9jZXNz
UG9vbCYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsK
IAogICAgIH5XZWJQcm9jZXNzUHJveHkoKTsKIApAQCAtMTYxLDggKzE2NSw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldElzSW5Qcm9jZXNzQ2FjaGUoYm9vbCwgV2lsbFNodXREb3duID0gV2lsbFNo
dXREb3duOjpObyk7CiAgICAgYm9vbCBpc0luUHJvY2Vzc0NhY2hlKCkgY29uc3QgeyByZXR1cm4g
bV9pc0luUHJvY2Vzc0NhY2hlOyB9CiAKLSAgICB2b2lkIGVuYWJsZVNlcnZpY2VXb3JrZXJzKGNv
bnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImKTsKLSAgICB2b2lkIGRpc2FibGVT
ZXJ2aWNlV29ya2VycygpOworICAgIHZvaWQgZW5hYmxlV29ya2VycyhXb3JrZXJUeXBlLCBjb25z
dCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJik7CisgICAgdm9pZCBkaXNhYmxlV29y
a2VycyhPcHRpb25TZXQ8V29ya2VyVHlwZT4pOwogCiAgICAgV2Vic2l0ZURhdGFTdG9yZSYgd2Vi
c2l0ZURhdGFTdG9yZSgpIGNvbnN0IHsgQVNTRVJUKG1fd2Vic2l0ZURhdGFTdG9yZSk7IHJldHVy
biAqbV93ZWJzaXRlRGF0YVN0b3JlOyB9CiAgICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFdl
YnNpdGVEYXRhU3RvcmUmKTsKQEAgLTE5NCw2ICsxOTgsOSBAQCBwdWJsaWM6CiAKICAgICBib29s
IGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkgY29uc3QgeyByZXR1cm4gISFtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbjsgfQogICAgIGJvb2wgaXNTdGFuZGFsb25lU2VydmljZVdvcmtlclByb2Nl
c3MoKSBjb25zdCB7IHJldHVybiBpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpICYmICFwYWdlQ291
bnQoKTsgfQorICAgIGJvb2wgaXNSdW5uaW5nU2hhcmVkV29ya2VycygpIGNvbnN0IHsgcmV0dXJu
ICEhbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbjsgfQorICAgIGJvb2wgaXNTdGFuZGFsb25lU2hh
cmVkV29ya2VyUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIGlzUnVubmluZ1NoYXJlZFdvcmtlcnMo
KSAmJiAhcGFnZUNvdW50KCk7IH0KKyAgICBib29sIGlzUnVubmluZ1dvcmtlcnMoKSBjb25zdCB7
IHJldHVybiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIHx8IG1fc2VydmljZVdvcmtlckluZm9y
bWF0aW9uOyB9CiAKICAgICBib29sIGlzRHVtbXlQcm9jZXNzUHJveHkoKSBjb25zdDsKIApAQCAt
MzU5LDEyICszNjYsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVBdWRpYmxlTWVkaWFB
c3NlcnRpb25zKCk7CiAKKyAgICB2b2lkIHNldFdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcm
KTsKKyAgICB2b2lkIHVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVy
ZW5jZXNTdG9yZSYpOworICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dChjb25z
dCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgdXBkYXRlV29ya2VyUHJv
Y2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlKTsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAg
ICAgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2Vy
UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBz
ZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgdXBkYXRl
U2VydmljZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYp
OwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHBhZ2VQcm94eUlEKSB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiAmJiBt
X3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+cmVtb3RlV29ya2VyUGFnZVByb3h5SUQgPT0gcGFn
ZVByb3h5SUQ7IH0KLSAgICB2b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9u
KCk7CiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nl
c3NQcm94eSYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNz
KFdlYlByb2Nlc3NQcm94eSYpOwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlckZvcmVncm91bmRB
Y3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdDsKQEAgLTY1Niw2ICs2NjQsNyBAQCBwcml2YXRlOgog
ICAgICAgICBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+IGNsaWVudFByb2Nlc3NlczsKICAg
ICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8UmVtb3RlV29ya2VySW5mb3JtYXRpb24+IG1fc2Vydmlj
ZVdvcmtlckluZm9ybWF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8UmVtb3RlV29ya2VySW5mb3Jt
YXRpb24+IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb247CiAgICAgYm9vbCBtX2hhc1NlcnZpY2VX
b3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyB7IGZhbHNlIH07CiAKICAgICBIYXNoTWFwPFdlYkNv
cmU6OlNsZWVwRGlzYWJsZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U2xl
ZXBEaXNhYmxlcj4+IG1fc2xlZXBEaXNhYmxlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwYzdjMzFiYzU1N2I1NWQ1MTcwNWZjMzlk
N2U2NzljOTRjNmEwYWYzLi4xNWU4MTBhNGM5ZjEyZWI5MmJiMmZkMTRkMzk1MGMzMTUxNDQ0MjZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTg4MCw4ICs4ODAsMTAgQEAKIAkJNDYxNEYxMzIyNURFRDg3NTAwNzAwNkU3IC8qIEdQVVBy
b2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZBQzUzMjQyNURFRDgxRTAwM0I1N0VDIC8qIEdQVVByb2Nlc3ND
b25uZWN0aW9uUGFyYW1ldGVycy5oICovOyB9OwogCQk0NjFDQ0NBNTIzMTQ4NUE3MDBCNjU5Qjkg
LyogVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDYzMjM2ODUyMzE0ODMzRjAwQTQ4RkE3IC8qIFVJUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkuaCAqLzsgfTsKIAkJNDYxQ0NDQTYyMzE0ODVBQTAwQjY1OUI5IC8qIFdlYlJl
bW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NjMyMzY4MzIzMTQ4MUVGMDBBNDhGQTcgLyogV2ViUmVtb3RlT2JqZWN0UmVn
aXN0cnkuaCAqLzsgfTsKKwkJNDYxRTFCRjIyNzlBMDExNjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDYxRTFCRUYyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICovOyB9OwogCQk0NjNGRDQ4MDFFQjk0
NTk2MDBBMjk4MkMgLyogV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0ZENDdGMUVCOTQ1ODQwMEEyOTgy
QyAvKiBXS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2M0ZENDgyMUVCOTRFQzAwMEEyOTgyQyAvKiBQ
cm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2M0ZENDgxMUVCOTRFQUQwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWlu
YXRpb25SZWFzb24uaCAqLzsgfTsKKwkJNDY1NkY3QkQyN0FDQUE4RDAwQ0IzRDdDIC8qIFdlYlNo
YXJlZFdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY1NkY3QkMyN0FDQUE4MTAwQ0IzRDdDIC8qIFdlYlNoYXJlZFdvcmtlci5oICovOyB9Owog
CQk0NjU5RjI1RjI3NUZGNkIyMDBCQkIzNjkgLyogQ2FwdGl2ZVBvcnRhbE1vZGVPYnNlcnZlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1OUYyNUUy
NzVGRjZCMjAwQkJCMzY5IC8qIENhcHRpdmVQb3J0YWxNb2RlT2JzZXJ2ZXIuaCAqLzsgfTsKIAkJ
NDY1RjRFMDYyMzBCMkU5NTAwM0NFREI3IC8qIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjVGNEUwNTIz
MEIyRTdDMDAzQ0VEQjcgLyogU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIuaCAqLzsgfTsKIAkJ
NDY1RkE3MjYyNzU3RDkzRDAwNzIzNjJCIC8qIFdlYkxvY2tSZWdpc3RyeVByb3h5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjVGQTcyMzI3NTdEOTE4
MDA3MjM2MkIgLyogV2ViTG9ja1JlZ2lzdHJ5UHJveHkuaCAqLzsgfTsKQEAgLTkwMCwxMCArOTAy
LDEzIEBACiAJCTQ2QzM5MjI5MjMxNkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkMz
OTIyODIzMTZFQzREMDA4RUVEOUIgLyogV2ViUGFnZVByb3h5SWRlbnRpZmllci5oICovOyB9Owog
CQk0NkM1QjdDRTI3QUFEREQzMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzVC
N0NEMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJGcmFtZUxvYWRlckNsaWVudC5oICov
OyB9OwogCQk0NkM1QjdDRjI3QUFEREQ2MDAwQzVCNDcgLyogUmVtb3RlV29ya2VyTGliV2ViUlRD
UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2QzVCN0NCMjdBQUREQkUwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92aWRl
ci5oICovOyB9OworCQk0NkM5MTZBQTI3OTlEMEEyMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2Vy
U2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NkM5MTZBOTI3OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggKi87IH07
CiAJCTQ2Q0UzQjExMjNEOEM4NDkwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Q0UzQjEw
MjNEOEM4M0QwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCAqLzsgfTsKKwkJ
NDZENDhGQ0UyNzk5RDdFMTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2RDQ4RkNEMjc5OUQ3REUwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2REYwNjNDMUYzOTA1RjgwMDE5ODBCQiAvKiBO
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REYwNjNBMUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXIuaCAqLzsgfTsKIAkJNDZFRTI4NDkyNjlFMDRBQzAwREQ0OEFCIC8q
IFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFRTI4NDgyNjlFMDQ5QjAwREQ0OEFCIC8qIFdlYkJyb2Fk
Y2FzdENoYW5uZWxSZWdpc3RyeS5oICovOyB9OwogCQk0NkVFMjg0RDI2OUUwNTI1MDBERDQ4QUIg
LyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFRTI4NEMyNjlFMDUxNzAwREQ0OEFCIC8qIE5l
dHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCAqLzsgfTsKKwkJNDZFRTNFOEIyNzYzRkQy
RjAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODM4NjY3Mjc2M0ZBQjEwMENG
OTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2RjM4
RThDMjQxNkU2NzMwMDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZGMzhFOEIyNDE2RTY2RDAw
NTkzNzVBIC8qIFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmggKi87IH07CiAJCTQ2RjlCMjYzMjM1
MjZFRjMwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjlCMjYyMjM1MjZFRDAwMDZGRTVG
QSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCAqLzsgfTsKIAkJNDkzMTAyQkQyNjgzRjNE
MDAwMkJCODg1IC8qIEFwcFByaXZhY3lSZXBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5MzEwMkJDMjY4M0YzQTUwMDJCQjg4NSAvKiBBcHBQcml2
YWN5UmVwb3J0LmggKi87IH07CkBAIC00MjIzLDYgKzQyMjgsOSBAQAogCQk0NjA4ODlGRjI2MUZB
OEE5MDBFMjUwMEQgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MEY0ODhEMUY5OTZGNkMwMENGNEI4
NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk0NjBGNDg4RTFGOTk2RjZDMDBDRjRCODcg
LyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2Vz
Lmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk0
NjFFMUJFQzI3OUEwMTBFMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQ2MUUxQkVGMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQ2MUUxQkYwMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjIxMDdENzFGMzhEQkQzMDBERDc4
MTAgLyogUGluZ0xvYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UGluZ0xvYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjMyMzY4MzIzMTQ4
MUVGMDBBNDhGQTcgLyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDYzMjM2ODQyMzE0ODI1QzAwQTQ4RkE3IC8qIFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyMzMsNiArNDI0MSw5IEBACiAJCTQ2M0ZENDgxMUVCOTRF
QUQwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2NTFFQ0U2MjIxNzhBODUwMDY3RUI5NSAvKiBXZWJQcm9jZXNz
Q2FjaGVDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdl
YlByb2Nlc3NDYWNoZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjUy
NTBFNTFFQ0Y1MkNEMDAyMDI1Q0IgLyogV2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYktpdDJJbml0aWFsaXplQ29jb2Eu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2NTZGN0JBMjdBQ0FBODAwMENCM0Q3
QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMu
aW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2NTZGN0JCMjdBQ0FBODEwMENCM0Q3
QyAvKiBXZWJTaGFyZWRXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29y
a2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY1NkY3QkMyN0FDQUE4MTAw
Q0IzRDdDIC8qIFdlYlNoYXJlZFdvcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRXb3Jr
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY1OUYyNUUyNzVGRjZCMjAwQkJC
MzY5IC8qIENhcHRpdmVQb3J0YWxNb2RlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ2FwdGl2ZVBvcnRhbE1vZGVPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NjVGNEUwMjIzMDc1OUQ1MDAzQ0VEQjcgLyogU3RvcmFnZUFyZWFJZGVu
dGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VBcmVhSWRlbnRpZmllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NjVGNEUwMzIzMDc2MDRFMDAzQ0VEQjcgLyogU3RvcmFn
ZUFyZWFJbXBsSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlQXJlYUltcGxJZGVu
dGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MjU0LDggKzQyNjUsMTEg
QEAKIAkJNDY4MDlBN0IyM0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvb2tpZUNhY2hlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzU2OUEyMUU4MUNDNzAwNkUyN0EzIC8qIFBy
b3Zpc2lvbmFsUGFnZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBy
b3Zpc2lvbmFsUGFnZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM1
NjlCMjFFODFDQzcwMDZFMjdBMyAvKiBQcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm92aXNpb25hbFBhZ2VQcm94eS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2ODM4NjY3Mjc2M0ZBQjEwMENGOTE4MiAvKiBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDY4Mzg2NjgyNzYzRkFCMTAwQ0Y5MTgyIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODlCOTBGMjc1NkQxNDMwMDA3
QzY1MSAvKiBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlV2Vi
TG9ja1JlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODlCOTEwMjc1
NkQxNDMwMDA3QzY1MSAvKiBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDY5NDNEQ0IyNzYzRjgzNDAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5REU4MDIyNzNF
Q0M1RDAwOTMwMjc2IC8qIFByb2Nlc3NMYXVuY2hlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJvY2Vzc0xhdW5jaGVyQ29jb2EubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QTJCNjA2MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3Jv
dW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZBMkI2MDcxRTU2NzVBMjAwQzNERURBIC8q
IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyNzQsNyArNDI4OCwxMSBAQAogCQk0NkM1
QjdDQjI3QUFEREJFMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDNUI3Q0MyN0FBRERCRTAwMEM1QjQ3IC8qIFJlbW90ZVdv
cmtlckZyYW1lTG9hZGVyQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVdvcmtl
ckZyYW1lTG9hZGVyQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZD
NUI3Q0QyN0FBRERCRTAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2QzkxNkE4Mjc5OUQwOUQwMDFBNEU3QyAvKiBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2Vy
dmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZDOTE2QTkyNzk5RDA5RDAw
MUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDRTNCMTAy
M0Q4QzgzRDAwMTZBOTZBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZENDhGQ0MyNzk5RDdERDAwN0QyMDE0IC8qIFdlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2RDQ4RkNEMjc5OUQ3REUwMDdEMjAxNCAvKiBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDZERjA2MzkxRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkU5NzYwQTI3NTdGNkM5
MDBBQ0REMzcgLyogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5p
bjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyODQsNiArNDMwMiw3IEBACiAJCTQ2
RUUyODRBMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5
Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5ldHdvcmtCcm9hZGNhc3RDaGFu
bmVsUmVnaXN0cnkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
RUUyODRCMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtCcm9hZGNh
c3RDaGFubmVsUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkVF
Mjg0QzI2OUUwNTE3MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5l
bFJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2RUUzRThBMjc2M0ZE
MkEwMDYwQzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RjM4RThCMjQxNkU2NkQwMDU5Mzc1QSAvKiBSdW5u
aW5nQm9hcmRTZXJ2aWNlc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
dW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NkY5QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTMxMDJCQzI2ODNGM0E1MDAyQkI4ODUg
LyogQXBwUHJpdmFjeVJlcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBQcml2YWN5UmVwb3J0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05Mjk1LDYgKzkzMTQsMjMgQEAKIAkJCXBh
dGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTQ2ODM4NjY1
Mjc2M0ZBMUIwMENGOTE4MiAvKiBTaGFyZWRXb3JrZXIgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91
cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTQ2NTZGN0JCMjdBQ0FBODEwMENCM0Q3QyAvKiBXZWJT
aGFyZWRXb3JrZXIuY3BwICovLAorCQkJCTQ2NTZGN0JDMjdBQ0FBODEwMENCM0Q3QyAvKiBXZWJT
aGFyZWRXb3JrZXIuaCAqLywKKwkJCQk0NkM5MTZBODI3OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hh
cmVkV29ya2VyU2VydmVyLmNwcCAqLywKKwkJCQk0NkM5MTZBOTI3OTlEMDlEMDAxQTRFN0MgLyog
V2ViU2hhcmVkV29ya2VyU2VydmVyLmggKi8sCisJCQkJNDY4Mzg2NjgyNzYzRkFCMTAwQ0Y5MTgy
IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwICovLAorCQkJCTQ2ODM4NjY3
Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggKi8s
CisJCQkJNDZFRTNFOEEyNzYzRkQyQTAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCisJCQkJNDZENDhGQ0MyNzk5RDdERDAwN0QyMDE0IC8q
IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwICovLAorCQkJCTQ2
RDQ4RkNEMjc5OUQ3REUwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmggKi8sCisJCQkJNDY1NkY3QkEyN0FDQUE4MDAwQ0IzRDdDIC8qIFdlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCisJCQkpOwor
CQkJcGF0aCA9IFNoYXJlZFdvcmtlcjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07
CiAJCTQ2OURFODAxMjczRUNDNUQwMDkzMDI3NiAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC05MzU5LDYgKzkzOTUsNyBAQAogCQkJCTUxNDUy
NkVBMjcxRTE2MTAwMDA0NjdCNiAvKiBOb3RpZmljYXRpb25zICovLAogCQkJCTVDMDFCQzM1MjZE
NDZBRDQwMEZFQjQyRiAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAqLywKIAkJCQk5M0JBMDRE
OTIxNTFBRENEMDA3RjQ1NUYgLyogU2VydmljZVdvcmtlciAqLywKKwkJCQk0NjgzODY2NTI3NjNG
QTFCMDBDRjkxODIgLyogU2hhcmVkV29ya2VyICovLAogCQkJCTkzMDg1REMyMjZFMUJCNjUwMDBF
QzZBNyAvKiBzdG9yYWdlICovLAogCQkJCTQxMzA3NTk3MURFODRFRDcwMDM5RUM2OSAvKiB3ZWJy
dGMgKi8sCiAJCQkJOTNCMjYxNDMyMjdEMTQzMTAwQjk3QTc2IC8qIFdlYlN0b3JhZ2UgKi8sCkBA
IC05NDYxLDggKzk0OTgsMTIgQEAKIAkJCQk0MTlBQ0Y5QjFGOTgxRDI2MDA5RjFBODMgLyogV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oICovLAogCQkJCTUxQkVCNjI5MUYzQTVBQ0Qw
MDUwMjlCOSAvKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwICovLAogCQkJCTUxQkVCNjJB
MUYzQTVBQ0QwMDUwMjlCOSAvKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCAqLywKKwkJCQk0
NjFFMUJFQzI3OUEwMTBFMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmNwcCAqLywKKwkJCQk0NjFFMUJFRjI3OUEwMTBGMDA2QUY1M0IgLyogV2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggKi8sCisJCQkJNDYxRTFCRjAyNzlB
MDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbiAqLywKIAkJCQk0NjY4QTBCQjI3QUI2MDQwMDBDNzIwQkMgLyogV2ViU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJNDY2OEEwQjgyN0FCNjAzRjAwQzcy
MEJDIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCAqLywKKwkJCQk0Njk0M0RD
QjI3NjNGODM0MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNz
YWdlcy5pbiAqLywKIAkJCQk0NjY4QTBCOTI3QUI2MDNGMDBDNzIwQkMgLyogV2ViU2hhcmVkV29y
a2VyUHJvdmlkZXIuY3BwICovLAogCQkJCTQ2NjhBMEJBMjdBQjYwNDAwMEM3MjBCQyAvKiBXZWJT
aGFyZWRXb3JrZXJQcm92aWRlci5oICovLAogCQkJCTUxN0E1MzAzMUY0NzkzQjIwMERDREMwQSAv
KiBXZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwICovLApAQCAtMTM2NTgsOCArMTM2OTksMTMgQEAK
IAkJCQk3QzM2MUQ3MzE5MjdGQTM2MDAzNkE1OUQgLyogV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUQzQjk0ODQ5MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFy
Y2hQb3B1cE1lbnUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQkVCNjJDMUYzQTVBRDcwMDUwMjlC
OSAvKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2NTZG
N0JEMjdBQ0FBOEQwMENCM0Q3QyAvKiBXZWJTaGFyZWRXb3JrZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTQ2MUUxQkYyMjc5QTAxMTYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2NjhBMEJEMjdBQjYwNTYwMEM3
MjBCQyAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0NjY4QTBCQzI3QUI2MDUwMDBDNzIwQkMgLyogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTQ2QzkxNkFBMjc5OUQwQTIwMDFBNEU3QyAvKiBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2RUUzRThCMjc2M0ZEMkYwMDYw
QzcwRiAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQk0NkQ0OEZDRTI3OTlEN0UxMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM4REQzODAxRkU0NTIxNjAw
RjJBNTU2IC8qIFdlYnNpdGVBdXRvcGxheVBvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0
ODMyRDcxQTlDREY5NjAwOEI0REZFIC8qIFdlYnNpdGVEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTQ4MzJEMTFBOUJEQzJGMDA4QjRERkUgLyogV2Vic2l0ZURhdGFSZWNvcmQuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggODFkZDA0MTFhMjM5NmJjNWUy
MzQ1NWI5ZjViNTllNzM0NjFlZTk2Zi4uYmIzNTQ3ZjQ2YWQ0YjhhNWMyMDUyZDA4MmNhNjc1NGIx
MjkxZmY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC01Nyw3ICs1NywxMCBAQAog
I2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNlcnZp
Y2VXb3JrZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb25NZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIKICNpbmNsdWRlICJXZWJTb2Nr
ZXRDaGFubmVsTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRTdHJlYW0uaCIKQEAgLTE3
NCw2ICsxNzcsMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVAKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICNlbmRpZgorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBN
ZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKSB7CisgICAgICAgIHNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKS5kaWRSZWNlaXZlTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Cisg
ICAgICAgIEFTU0VSVChTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29u
bmVjdGlvbigpKTsKKyAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiA9
IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCisg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24mPigqY29udGV4dE1hbmFnZXJDb25uZWN0aW9uKS5kaWRSZWNlaXZlTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogI2lmIEVOQUJMRShB
UFBMRV9QQVlfUkVNT1RFX1VJKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUo
KSA9PSBNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggZWRjMDQ5M2JkM2VkZGZhMTY5MDBiZGI4
NTkxNGM2NGM1OTc4OTE4MC4uMGI2NDgwYTYxZDM2Y2ZlMDQ3OWI0Y2Y0MDFkNDVkZjQzODMwYjM4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgZW51bSBjbGFzcyBI
VFRQQ29va2llQWNjZXB0UG9saWN5IDogdWludDhfdDsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uOwogY2xhc3MgV2ViU1dDbGllbnRDb25uZWN0aW9uOwogY2xhc3MgV2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQzMDY0NzY2NWZhNjUwOGE1
ZWM3MDA2NzNiYmI3NDQyZDNiNjhmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5jcHAKQEAgLTAsMCArMSwxMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgiCisK
KyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiUmVtb3RlV29ya2VyRnJh
bWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92aWRl
ci5oIgorI2luY2x1ZGUgIldlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIgorI2luY2x1ZGUg
IldlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50
UnVsZUxpc3REYXRhLmgiCisjaW5jbHVkZSAiV2ViRGF0YWJhc2VQcm92aWRlci5oIgorI2luY2x1
ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc0tleXMuaCIKKyNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0UHJvdmlkZXIuaCIKKyNp
bmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Vt
cHR5Q2xpZW50cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUNvbmZpZ3VyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJUaHJlYWRQcm94
eS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVXNlckFnZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9X
b3JrZXJGZXRjaFJlc3VsdC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcywgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgUGFn
ZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQ
YWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQcmVm
ZXJlbmNlc1N0b3JlJiBwcmVmZXJlbmNlc1N0b3JlLCBSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlv
bkRhdGEmJiBpbml0aWFsaXphdGlvbkRhdGEpCisgICAgOiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKFdURk1vdmUoY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpKQorICAgICwgbV9yZWdp
c3RyYWJsZURvbWFpbihXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAsIG1fcGFnZUdy
b3VwSUQocGFnZUdyb3VwSUQpCisgICAgLCBtX3dlYlBhZ2VQcm94eUlEKHdlYlBhZ2VQcm94eUlE
KQorICAgICwgbV9wYWdlSUQocGFnZUlEKQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICwgbV91
c2VyQWdlbnQoV2ViQ29yZTo6c3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKHsg
fSkpCisjZWxzZQorICAgICwgbV91c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkKKyNlbmRp
ZgorICAgICwgbV91c2VyQ29udGVudENvbnRyb2xsZXIoV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpnZXRPckNyZWF0ZShpbml0aWFsaXphdGlvbkRhdGEudXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllcikpCit7CisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBtX3VzZXJD
b250ZW50Q29udHJvbGxlci0+YWRkQ29udGVudFJ1bGVMaXN0cyhXVEZNb3ZlKGluaXRpYWxpemF0
aW9uRGF0YS5jb250ZW50UnVsZUxpc3RzKSk7CisjZW5kaWYKKworICAgIHVwZGF0ZVByZWZlcmVu
Y2VzU3RvcmUocHJlZmVyZW5jZXNTdG9yZSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZGlzYWJsZVRlcm1pbmF0aW9uKCk7Cit9CisKK1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbigpID0g
ZGVmYXVsdDsKKwordm9pZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OmVzdGFibGlzaENvbm5lY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFi
bGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uIHsgbV93ZWJQYWdlUHJveHlJRCwgbV9y
ZWdpc3RyYWJsZURvbWFpbiB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgMCk7Cit9CisK
K3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0RXhjZXB0
aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIG1f
Y29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdCB7
IHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBzb3VyY2VVUkwgfSwgMCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjp1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUmIHN0b3JlKQoreworICAgIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzR2Vu
ZXJhdGVkKHN0b3JlKTsKKyAgICBtX3ByZWZlcmVuY2VzU3RvcmUgPSBzdG9yZTsKK30KKwordm9p
ZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmxhdW5jaFNoYXJlZFdv
cmtlcihXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtl
cklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgVVJMJiYgdXJsLCBXZWJDb3JlOjpX
b3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucywgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQm
JiB3b3JrZXJGZXRjaFJlc3VsdCkKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJX
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmxhdW5jaFNoYXJlZFdvcmtl
cjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZp
ZXIudG9VSW50NjQoKSk7CisgICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9IFdlYkNvcmU6OnBh
Z2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cyhXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5z
ZXNzaW9uSUQoKSk7CisKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5kYXRhYmFzZVByb3ZpZGVyID0g
V2ViRGF0YWJhc2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUobV9wYWdlR3JvdXBJRCk7CisgICAgcGFn
ZUNvbmZpZ3VyYXRpb24uc29ja2V0UHJvdmlkZXIgPSBXZWJTb2NrZXRQcm92aWRlcjo6Y3JlYXRl
KG1fd2ViUGFnZVByb3h5SUQpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLmJyb2FkY2FzdENoYW5u
ZWxSZWdpc3RyeSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmJyb2FkY2FzdENoYW5uZWxSZWdp
c3RyeSgpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLndlYkxvY2tSZWdpc3RyeSA9IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLndlYkxvY2tSZWdpc3RyeSgpOworICAgIHBhZ2VDb25maWd1cmF0aW9u
LnVzZXJDb250ZW50UHJvdmlkZXIgPSBtX3VzZXJDb250ZW50Q29udHJvbGxlcjsKKyNpZiBFTkFC
TEUoV0VCX1JUQykKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5saWJXZWJSVENQcm92aWRlciA9IG1h
a2VVbmlxdWVSZWY8UmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXI+KCk7CisjZW5kaWYKKwor
ICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSA9IG1ha2VVbmlx
dWVSZWY8UmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ+KG1fd2ViUGFnZVByb3h5SUQsIG1f
cGFnZUlELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI6OmdlbmVyYXRlKCksIG1fdXNlckFnZW50
KTsKKworICAgIGF1dG8gcGFnZSA9IG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6UGFnZT4oV1RGTW92
ZShwYWdlQ29uZmlndXJhdGlvbikpOworICAgIGlmIChtX3ByZWZlcmVuY2VzU3RvcmUpIHsKKyAg
ICAgICAgV2ViUGFnZTo6dXBkYXRlU2V0dGluZ3NHZW5lcmF0ZWQoKm1fcHJlZmVyZW5jZXNTdG9y
ZSwgcGFnZS0+c2V0dGluZ3MoKSk7CisgICAgICAgIHBhZ2UtPnNldHRpbmdzKCkuc2V0U3RvcmFn
ZUJsb2NraW5nUG9saWN5KHN0YXRpY19jYXN0PFdlYkNvcmU6OlN0b3JhZ2VCbG9ja2luZ1BvbGlj
eT4obV9wcmVmZXJlbmNlc1N0b3JlLT5nZXRVSW50MzJWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNl
c0tleTo6c3RvcmFnZUJsb2NraW5nUG9saWN5S2V5KCkpKSk7CisgICAgfQorICAgIHBhZ2UtPnNl
dHVwRm9yUmVtb3RlV29ya2VyKHVybCwgb3JpZ2luLnRvcE9yaWdpbiwgd29ya2VyRmV0Y2hSZXN1
bHQucmVmZXJyZXJQb2xpY3kpOworICAgIGF1dG8gc2hhcmVkV29ya2VyVGhyZWFkUHJveHkgPSBX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlKFdURk1vdmUocGFnZSksIHNo
YXJlZFdvcmtlcklkZW50aWZpZXIsIG9yaWdpbiwgdXJsLCBXVEZNb3ZlKHdvcmtlckZldGNoUmVz
dWx0KSwgV1RGTW92ZSh3b3JrZXJPcHRpb25zKSwgbV91c2VyQWdlbnQsIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmNhY2hlU3RvcmFnZVByb3ZpZGVyKCkpOworCisgICAgV2ViQ29yZTo6U2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnJlZ2lzdGVyU2hhcmVkV29ya2VyVGhy
ZWFkKFdURk1vdmUoc2hhcmVkV29ya2VyVGhyZWFkUHJveHkpKTsKK30KKwordm9pZCBXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmNsb3NlKCkKK3sKKyAgICBSRUxFQVNF
X0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OmNsb3NlOiBTaGFyZWQgd29ya2VyIHByb2Nlc3MgaXMgcmVxdWVzdGVkIHRvIHN0b3AgYWxs
IHNoYXJlZCB3b3JrZXJzIik7CisgICAgc2V0QXNDbG9zZWQoKTsKKworICAgIG1fY29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpDbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uIHsgfSwgMCk7CisgICAg
V2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnN0b3BBbGxT
aGFyZWRXb3JrZXJzKCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5hYmxlVGVybWlu
YXRpb24oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhY2ZkMGM0MTI5MWQ1
N2U3NGIwNmZlZGM2OTViZmFmMTA5NWRiYmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uaApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiSWRlbnRpZmllclR5cGVzLmgiCisjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworc3RydWN0IENsaWVudE9yaWdpbjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKK3N0
cnVjdCBXb3JrZXJPcHRpb25zOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyOworc3RydWN0IFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9u
RGF0YTsKKworY2xhc3MgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIGZp
bmFsIDogcHVibGljIFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpDb25uZWN0
aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIFdlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQYWdlR3JvdXBJZGVudGlmaWVyLCBXZWJQYWdl
UHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVy
ZW5jZXNTdG9yZSYsIFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmKTsKKyAgICB+V2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKCk7CisKKyAgICB2b2lkIGVzdGFi
bGlzaENvbm5lY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKKyAgICB2
b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBj
b2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSBmaW5hbDsKKworICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7
CisKK3ByaXZhdGU6CisgICAgLy8gSVBDIE1lc3NhZ2VzLgorICAgIHZvaWQgbGF1bmNoU2hhcmVk
V29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVu
dGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmLCBXZWJDb3JlOjpXb3JrZXJG
ZXRjaFJlc3VsdCYmKTsKKyAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2Vi
UHJlZmVyZW5jZXNTdG9yZSYpOworICAgIHZvaWQgc2V0VXNlckFnZW50KFN0cmluZyYmIHVzZXJB
Z2VudCkgeyBtX3VzZXJBZ2VudCA9IFdURk1vdmUodXNlckFnZW50KTsgfQorICAgIHZvaWQgY2xv
c2UoKTsKKworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3M7CisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFp
bjsKKyAgICBQYWdlR3JvdXBJZGVudGlmaWVyIG1fcGFnZUdyb3VwSUQ7CisgICAgV2ViUGFnZVBy
b3h5SWRlbnRpZmllciBtX3dlYlBhZ2VQcm94eUlEOworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIG1fcGFnZUlEOworICAgIFN0cmluZyBtX3VzZXJBZ2VudDsKKyAgICBSZWY8V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyPiBtX3VzZXJDb250ZW50Q29udHJvbGxlcjsKKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYlByZWZlcmVuY2VzU3RvcmU+IG1fcHJlZmVyZW5jZXNTdG9yZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4MmE0YWRhNTNmZDRi
ZWIxYzVlZWUxZjdhYmE2MjJmM2ZkNWIxZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CisgICAgTGF1bmNoU2hhcmVkV29ya2VyKHN0
cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFVSTCB1cmwsIHN0cnVjdCBXZWJDb3Jl
OjpXb3JrZXJPcHRpb25zIHdvcmtlck9wdGlvbnMsIHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJGZXRj
aFJlc3VsdCB3b3JrZXJGZXRjaFJlc3VsdCkKKyAgICBQb3N0Q29ubmVjdEV2ZW50KFdlYkNvcmU6
OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6
VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBwb3J0LCBTdHJpbmcgc291cmNlT3JpZ2luKQorICAgIFRl
cm1pbmF0ZVNoYXJlZFdvcmtlcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJl
ZFdvcmtlcklkZW50aWZpZXIpCisgICAgVXBkYXRlUHJlZmVyZW5jZXNTdG9yZShzdHJ1Y3QgV2Vi
S2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlKQorICAgIFNldFVzZXJBZ2VudChTdHJpbmcg
dXNlckFnZW50KQorICAgIENsb3NlKCkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbi5jcHAKaW5kZXggNWM1ZmRhYTYwMDU3OTY3YzY1YzAzMmYwNDI1ZmQ5MTU5MzMxOGYzYi4u
NWRkYmRlNDRhOTZiMTVjYzM2NzE5MGQ4YWNkMTc3MzEzMjk0NWJkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKQEAgLTI2LDIzICsyNiw0NSBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCIK
IAorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRX
b3JrZXJNYW5hZ2VyLmg+CisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlv
bk1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyS2V5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Xb3Jr
ZXJPcHRpb25zLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCkgPSBkZWZhdWx0
OworI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhT
aGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gV2Vi
U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsIFdlYkNvcmU6OlByb2Nl
c3M6OmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQorCitXZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uOjpXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCkK
K3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uOiIpOworfQorCitXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjp+V2ViU2hh
cmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xP
RygifldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Iik7Cit9CiAKIElQQzo6Q29ubmVj
dGlvbiogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKSBjb25zdAogewogICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwogfQogCi12b2lkIFdl
YlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnJlcXVlc3RTaGFyZWRXb3JrZXIoY29uc3Qg
VVJMJiB1cmwsIFdlYkNvcmU6OlNoYXJlZFdvcmtlciYgc2hhcmVkV29ya2VyLCBXZWJDb3JlOjpU
cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgcG9ydCwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmIHdv
cmtlck9wdGlvbnMpCit2b2lkIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnJlcXVl
c3RTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBzaGFyZWRXb3Jr
ZXJLZXksIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBvcnQs
IGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMpCiB7Ci0gICAgLy8g
RklYTUU6IFNob3VsZCBzZW5kIElQQyB0byB0aGUgbmV0d29yayBwcm9jZXNzLgotICAgIFdlYkNv
cmU6OlNoYXJlZFdvcmtlck1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3QodXJsLCBzaGFyZWRX
b3JrZXIsIFdURk1vdmUocG9ydCksIFdURk1vdmUod29ya2VyT3B0aW9ucykpOworICAgIENPTk5F
Q1RJT05fUkVMRUFTRV9MT0coInJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9T
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJDb25uZWN0aW9uOjpSZXF1ZXN0U2hhcmVkV29ya2VyIHsgc2hhcmVkV29ya2VyS2V5
LCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXVEZNb3ZlKHBvcnQpLCB3b3JrZXJPcHRp
b25zIH0pOwogfQogCit2b2lkIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnNoYXJl
ZFdvcmtlck9iamVjdElzR29pbmdBd2F5KGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYg
c2hhcmVkV29ya2VyS2V5LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xP
Rygic2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXk6IHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXI9JXtwdWJsaWN9cyIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uOjpTaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheSB7IHNoYXJlZFdvcmtl
cktleSwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciB9KTsKK30KKworI3VuZGVmIENPTk5F
Q1RJT05fUkVMRUFTRV9MT0cKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uLmgKaW5kZXggNjFlZTVhZjQyNGRjMDMzN2Y2MmNmNzE5MzJhMTVi
Yjk1NWU2ZGNkMi4uNDc4MTkzZWY3ZGRhZjA2MWQ2ZWI1MjhlZGY5M2RiYzQxMTdhMzIzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApAQCAtMjUsMjAgKzI1LDI1IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAi
TWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyT2JqZWN0Q29u
bmVjdGlvbi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CitjbGFzcyBXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24sIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKTsgfQorICAgIH5XZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uKCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIFdlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKTsKIAogICAgIC8vIFdlYkNvcmU6OlNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb24uCi0gICAgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0IFVS
TCYsIFdlYkNvcmU6OlNoYXJlZFdvcmtlciYsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBv
cnQmJiwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RT
aGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiwgV2ViQ29yZTo6U2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9y
dCYmLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJikgZmluYWw7CisgICAgdm9pZCBzaGFy
ZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkm
LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKSBmaW5hbDsKIAogICAgIC8v
IElQQzo6TWVzc2FnZVNlbmRlci4KICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJD
b25uZWN0aW9uKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjJhZTFhMzJjOTM5NTNkOTVlOGVh
ZjhjNTgxMDIyNzBiNTI1N2YxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5p
bgpAQCAtMCwwICsxLDI3IEBACisjIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK21lc3NhZ2VzIC0+IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24geworICAgIEZl
dGNoU2NyaXB0SW5DbGllbnQoVVJMIHVybCwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6V29y
a2VyT3B0aW9ucyB3b3JrZXJPcHRpb25zKSAtPiAoc3RydWN0IFdlYkNvcmU6OldvcmtlckZldGNo
UmVzdWx0IGZldGNoUmVzdWx0KSBBc3luYworICAgIE5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENv
bXBsZXRpb24oV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQorICAgIFBv
c3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFN0cmluZyBlcnJvck1lc3NhZ2Us
IGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTdHJpbmcgc291cmNlVVJMKQorfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGRkOGQ1ODFhYzViMjRk
NWQ5NDA2MmI5YzY1YzI0MmYwYzUxZWM5ODQuLmRkNDViNDU4OGJmOWRkMTI0ZTE4ZmFhOTVhMzI2
ZWQzMTkzMWE0NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAg
LTg0LDYgKzg0LDggQEAKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5o
IgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNoYXJl
ZFdvcmtlclByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFtLmgiCiAjaW5jbHVk
ZSAiV2Vic2l0ZURhdGEuaCIKQEAgLTEzNCw2ICsxMzYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyR2Vz
dHVyZUluZGljYXRvci5oPgogI2luY2x1ZGUgPHBhbC9Mb2dnaW5nLmg+CiAjaW5jbHVkZSA8d3Rm
L0FsZ29yaXRobXMuaD4KQEAgLTkwNCw3ICs5MDcsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OmRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBk
ZQogICAgIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICAvLyBGSVhNRTogUmVt
b3ZlPwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewog
ICAgICAgICBBU1NFUlQoU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigp
KTsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiA9IFNXQ29udGV4
dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKQEAgLTkxMyw2ICs5MTUsMTMgQEAg
dm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIElQQzo6RGVjb2RlciYgZGUKICAgICB9CiAjZW5kaWYKIAorICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgQVNT
RVJUKFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkp
OworICAgICAgICBpZiAoYXV0byogY29udGV4dE1hbmFnZXJDb25uZWN0aW9uID0gU2hhcmVkV29y
a2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAgICAg
IHN0YXRpY19jYXN0PFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiY+KCpj
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24pLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgTE9HX0VSUk9SKCJVbmhhbmRs
ZWQgd2ViIHByb2Nlc3MgbWVzc2FnZSAnJXMnIChkZXN0aW5hdGlvbjogJSIgUFJJdTY0ICIgcGlk
OiAlZCkiLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpLCBkZWNvZGVyLmRlc3Rp
bmF0aW9uSUQoKSwgc3RhdGljX2Nhc3Q8aW50PihnZXRDdXJyZW50UHJvY2Vzc0lEKCkpKTsKIH0K
IApAQCAtMTkxOSw2ICsxOTI4LDE2IEBAIExpYldlYlJUQ05ldHdvcmsmIFdlYlByb2Nlc3M6Omxp
YldlYlJUQ05ldHdvcmsoKQogICAgIHJldHVybiAqbV9saWJXZWJSVENOZXR3b3JrOwogfQogCit2
b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJh
YmxlRG9tYWluLCBSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXphdGlv
bkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICAvLyBXZSBhcmUgaW4gdGhlIFNoYXJlZCBXb3JrZXIgY29udGV4dCBwcm9jZXNzIGFuZCB0
aGUgY2FsbCBiZWxvdyBlc3RhYmxpc2hlcyBvdXIgY29ubmVjdGlvbiB0byB0aGUgTmV0d29yayBQ
cm9jZXNzCisgICAgLy8gYnkgY2FsbGluZyBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0aGUgc2FtZSB1bmRlcmx5
aW5nIElQQzo6Q29ubmVjdGlvbiBhcyB0aGUKKyAgICAvLyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24gZm9yIHN5bmNocm9uaXphdGlvbiBwdXJwb3Nlcy4KKyAgICBhdXRvJiBpcGNDb25uZWN0aW9u
ID0gZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworICAgIFNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDb25uZWN0aW9uKG1ha2VV
bmlxdWU8V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uPihpcGNDb25uZWN0
aW9uLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgcGFnZUdyb3VwSUQsIHdlYlBhZ2VQcm94
eUlELCBwYWdlSUQsIHN0b3JlLCBXVEZNb3ZlKGluaXRpYWxpemF0aW9uRGF0YSkpKTsKKyAgICBT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpLT5lc3Rh
Ymxpc2hDb25uZWN0aW9uKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2VydmljZVdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVy
IHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdl
SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdp
c3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFJl
bW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmIGluaXRpYWxpemF0aW9uRGF0YSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggMDAzYmZmZWNkOGY2MmNiYTY5NDgzNWRmNjQ3Y2Fh
YmVhM2UyYTU3Ni4uYzVkZDIyNWRjMWI3MWRhOWNkZDRlZWRiYTBhMDdlNzYxNzgxNTc1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC00NzQsNiArNDc0LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGdhbWVwYWREaXNjb25uZWN0ZWQodW5zaWduZWQgaW5kZXgpOwogI2Vu
ZGlmCiAKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVy
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0
YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKICAgICB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmll
ciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIs
IFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCmluZGV4IDNiYzQ3MzE5ZTM2ZDAwNjMxOThiYmJmOTY2OGQwNjlhYWRjZGUz
NzcuLmY1ZTczNmVkMzQ3ZjI3MWFkZWM3YzQ1ZDAzZmQ4M2RiYjBiYTliZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMDAsNiAr
MTAwLDggQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciBOb3RSZWZDb3Vu
dGVkIHsKICAgICBHYW1lcGFkRGlzY29ubmVjdGVkKHVuc2lnbmVkIGluZGV4KQogI2VuZGlmCiAK
KyAgICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MoV2ViS2l0OjpQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJLaXQ6OldlYlBh
Z2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVXb3JrZXJJ
bml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRhKSAtPiAoKSBBc3luYworCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIEVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJZGVudGlmaWVyIHBh
Z2VHcm91cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJlZmVy
ZW5jZXNTdG9yZSBzdG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2
aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlJlbW90ZVdvcmtlckluaXRp
YWxpemF0aW9uRGF0YSBpbml0aWFsaXphdGlvbkRhdGEpIC0+ICgpIEFzeW5jCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCA4MWYzMGI3ZGNiNGQ1NDljMTBiOWEyOGY1YjIwNTBjMTY4MTRhNDc3Li5mN2VkNGUwZGQ4
MTllMmM1MWEwZTM1NzRmNTFkODU5MGI0NjJlNWNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIw
MjItMDItMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
c3VwcG9ydCBmb3Igc2hhcmluZyBTaGFyZWQgV29ya2VycyAoaW5jbHVkaW5nIGFjcm9zcyBXZWJQ
cm9jZXNzZXMpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzU5NTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg4MzMwNjY2PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlYmFzZWxpbmUgZXhpc3RpbmcgV1BU
IHRlc3RzIGludm9sdmluZyBzaGFyZWQgd29ya2Vycy4KKworICAgICAgICAqIFRlc3RFeHBlY3Rh
dGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29y
a2VyLWNvbm5lY3Qtc3JjLnN1Yi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3Vy
aXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1yZXBvcnQtb25seS5zdWItZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtl
ci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3Rl
ZC50eHQ6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRv
dy1leHBlY3RlZC50eHQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrLXdrMi9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1k
YXRhLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2Vy
LWltcG9ydC1kYXRhLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0LgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMv
c2hhcmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4dDogQ29waWVkIGZyb20gTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMv
c2hhcmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ndGstd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1
bGVzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1jcmVkZW50aWFscy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2d0ay13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVk
LnR4dDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVk
LnR4dC4KKwogMjAyMi0wMi0wNyAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4K
IAogICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIFN0YXJ0aW5nIGEgdHJhbnNmb3JtIGFuaW1hdGlv
biB3aXRoIGEgMW1zIGRlbGF5IGRvZXNuJ3QgcnVuIGl0IGFjY2VsZXJhdGVkCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBhOWQxMjU3ZGUyNzhjMDFhM2RiNGIwOGZmMzAyMjBjNGZh
ZTg4MmVjLi5mZTEzN2M5NDBiMjVlZWY2NGI2YjM1MzkxODk5YTlmMGM3YTY4ZDdhIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAyMi0wMi0wNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBz
aGFyaW5nIFNoYXJlZCBXb3JrZXJzIChpbmNsdWRpbmcgYWNyb3NzIFdlYlByb2Nlc3NlcykKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTk1OAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vODgzMzA2NjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCisKKyAgICAgICAgUmViYXNlbGluZSBleGlzdGluZyBXUFQgdGVzdHMgaW52b2x2
aW5nIHNoYXJlZCB3b3JrZXJzLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3JrZXItY29ubmVjdC1zcmMt
YWxsb3dlZC5zdWItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9j
b250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9zaGFyZWQtd29ya2VyLWNvbm5lY3Qt
c3JjLWJsb2NrZWQuc3ViLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVw
b3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0
LXNyYy5zdWItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91dC5zdWItZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29m
ZmxpbmUvYXBwY2FjaGUvd29ya2Vycy9hcHBjYWNoZS13b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRl
ci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJl
ZGRlci1wb2xpY3kvc2hhcmVkLXdvcmtlcnMuaHR0cHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29y
a2VyLWluaGVyaXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9jbGFpbS1zaGFyZWQt
d29ya2VyLWZldGNoLmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJfZGF0YVVybC1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9y
dC1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11cmwtY3Jvc3Mt
b3JpZ2luLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQt
d29ya2VyLWltcG9ydC1yZWZlcnJlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMv
c2hhcmVkLXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiB3ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvbXVsdGlwbGUtd29ya2Vycy8w
MDQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3Nl
bWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRv
dy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25zLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtbWlzbWF0Y2gtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVk
aXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dDoKKwogMjAyMi0wMi0wNyAg
QW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbY3NzLWxvZ2lj
YWxdIFt3ZWItYW5pbWF0aW9uc10gQWRkIHN1cHBvcnQgZm9yIGxvZ2ljYWwgcHJvcGVydGllcyBp
biBKUy1vcmlnaW5hdGVkIGFuaW1hdGlvbnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDVhZmJhYTU3
MjU1NjA1MjNhYTRkNTNiZWM3NDVlNDZjYWUyY2FmZDcuLjZkODFjYWUyOWE5ZTIwNmZjYTVjYTE2
MmVjY2MwYWJkYWUzMjYyODkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDU5LDcgKzQ1OSw2IEBA
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViLWxvY2tzL3N0ZWFsLnRlbnRhdGl2
ZS5odHRwcy5hbnkuaHRtbCBbIER1bXBKCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWFuYWx5c2Vybm9kZS1pbnRlcmZhY2UvdGVzdC1h
bmFseXNlci1taW5pbXVtLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQogaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRp
b25vZGUtaW50ZXJmYWNlL2F1ZGlvbm9kZS1kaXNjb25uZWN0LWF1ZGlvcGFyYW0uaHRtbCBbIER1
bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2FtZS1vcmlnaW4tY2hlY2suc3ViLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5T
dGRFcnIgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13
b3JrZXItbmFtZS12aWEtb3B0aW9ucy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0K
IGZhc3QvZmlsZXMvZmlsZS1yZWFkZXItYmFjay1mb3J3YXJkLWNhY2hlLmh0bWwgWyBEdW1wSlND
b25zb2xlTG9nSW5TdGRFcnIgXQogZmFzdC9oaXN0b3J5L3BhZ2UtY2FjaGUtY3JlYXRlSW1hZ2VC
aXRtYXAuaHRtbCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCiBodHRwL3Rlc3RzL25hdmln
YXRpb24vcGFnZS1jYWNoZS14aHItaW4tbG9hZGluZy1pZnJhbWUuaHRtbCBbIER1bXBKU0NvbnNv
bGVMb2dJblN0ZEVyciBdCkBAIC04NDksNiArODQ4LDcgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy91c2VyLXRpbWluZy9tYXJrLmh0bWwgWyBGYWlsdXJlIFBhc3MgXQogaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy91c2VyLXRpbWluZy9tZWFzdXJlX2Fzc29jaWF0ZWRf
d2l0aF9uYXZpZ2F0aW9uX3RpbWluZy5odG1sIFsgRmFpbHVyZSBQYXNzIF0KIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3N5c3RlbS1zdGF0ZS1hbmQtY2Fw
YWJpbGl0aWVzL3RoZS1uYXZpZ2F0b3Itb2JqZWN0L3BsdWdpbnMtYW5kLW1pbWV0eXBlcy5odG1s
IFsgRmFpbHVyZSBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvYmVhY29u
L2JlYWNvbi1yZWRpcmVjdC5zdWIud2luZG93Lmh0bWwgWyBGYWlsdXJlIFBhc3MgXQoraW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xp
Y3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5o
dHRwcy53aW5kb3cuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiAKIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZG9jdW1lbnQtbWV0YWRhdGEvdGhlLWxpbmstZWxl
bWVudC9saW5rLWxvYWQtZXJyb3ItZXZlbnRzLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRF
cnIgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9kb2N1
bWVudC1tZXRhZGF0YS90aGUtbGluay1lbGVtZW50L2xpbmstbG9hZC1lcnJvci1ldmVudHMuaHR0
cHMuaHRtbCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCkBAIC01MTE0LDYgKzUxMTQsMTAg
QEAgd2Via2l0Lm9yZy9iLzIzNDk3NyBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9kb20vZXZlbnRzL2ZvY3VzLWUKICMgVGVzdCBpcyBjcmFzaGluZyBzaW5jZSBpbXBv
cnQuCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9kZWRp
Y2F0ZWQtd29ya2VyLWltcG9ydC1jc3AuaHRtbCBbIFNraXAgXQogCisjIFRlc3QgaXMgZmxha3kg
YmVjYXVzZSBNZXNzYWdlUG9ydCBtZXNzYWdlcyBtYXkgZ2V0IHJlY2VpdmVkIGluIGEgZGlmZmVy
ZW50IG9yZGVyIHdoZW4gc2V2ZXJhbCBNZXNzYWdlUG9ydHMgYXJlIGludm9sdmVkLAorIyBkdWUg
dG8gaG93IE1lc3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2VzKCkgaXMgaW1wbGVtZW50ZWQuCitp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1l
LXZpYS1vcHRpb25zLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgRmFpbHVyZSBQYXNz
IF0KKwogIyBQbHVnaW5zCiAjIEZJWE1FOiBSZW1vdmUgdGhlc2UgdGVzdHMuCiBwbHVnaW5zLyBb
IFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9zaGFyZWQtd29ya2Vy
LWNvbm5lY3Qtc3JjLWFsbG93ZWQuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvY29ubmVj
dC1zcmMvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1hbGxvd2VkLnN1Yi1leHBlY3RlZC50eHQK
aW5kZXggZTI4Mzk1ZWQ4M2M2NjRiMmNhNjBkNWRhODdiY2ZmMGUwMzk5ZDUwMS4uMzgyYjk1Njk1
YmNiMDVkNTJjZTBlY2EyMDhhODgwNjdhODNlMTc0NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9j
b25uZWN0LXNyYy9zaGFyZWQtd29ya2VyLWNvbm5lY3Qtc3JjLWFsbG93ZWQuc3ViLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nv
bnRlbnQtc2VjdXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3JrZXItY29ubmVjdC1z
cmMtYWxsb3dlZC5zdWItZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nl
c3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHA6Ly93d3cxLmxvY2FsaG9zdDo4ODAwL2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L3N1cHBvcnQvZmFpbC5hc2lzCiAKIEZBSUwgRXhwZWN0aW5nIGxvZ3M6IFsi
eGhyIGFsbG93ZWQiLCJURVNUIENPTVBMRVRFIl0gYXNzZXJ0X3VucmVhY2hlZDogdW5leHBlY3Rl
ZCBsb2c6IHhociBibG9ja2VkIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3JrZXItY29ubmVjdC1zcmMtYmxvY2tl
ZC5zdWItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9zaGFyZWQtd29ya2Vy
LWNvbm5lY3Qtc3JjLWJsb2NrZWQuc3ViLWV4cGVjdGVkLnR4dAppbmRleCBmNDkwZWE3NzEyZmU4
MWM3NzQxZGRlMDQxNTQ1NzUyOTUxNzZmZjUzLi41ZTk3MWUyMGY0YmI5MjYzYTMxODRlMzA4Y2Rj
N2M0OTQwNmM0OGM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13
b3JrZXItY29ubmVjdC1zcmMtYmxvY2tlZC5zdWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvY29ubmVjdC1zcmMvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1ibG9ja2VkLnN1Yi1leHBl
Y3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwg
aHR0cDovL3d3dzEubG9jYWxob3N0Ojg4MDAvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc3VwcG9y
dC9mYWlsLmFzaXMKIFRoaXMgdGVzdCBsb2FkcyBhIHNoYXJlZCB3b3JrZXIsIGRlbGl2ZXJlZCB3
aXRoIGl0cyBvd24gcG9saWN5LiBUaGUgd29ya2VyIHNob3VsZCBiZSBibG9ja2VkIGZyb20gbWFr
aW5nIGFuIFhIUiBhcyB0aGF0IHBvbGljeSBzcGVjaWZpZXMgYSBjb25uZWN0LXNyYyAnbm9uZScs
IHRob3VnaCB0aGlzIHJlc291cmNlJ3MgcG9saWN5IGlzIGNvbm5lY3Qtc3JjICouIE5vIHJlcG9y
dCBzaG91bGQgYmUgc2VudCBzaW5jZSB0aGUgd29ya2VyJ3MgcG9saWN5IGRvZXNuJ3Qgc3BlY2lm
eSBhIHJlcG9ydC11cmkuCiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2Vy
L3NoYXJlZHdvcmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9p
bnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0Cmlu
ZGV4IDBlOTk3MjRiODY0YmJmNDkxOWE1NzQ5YjI4Y2IxNTRhZTI3MTgzYzYuLjY4OThiNTRhYWI2
ZmMzNGQxN2IyZThiZTJlODQzZTlhODcwNWIzNzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5z
aWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXJlcG9ydC1vbmx5LnN1Yi1l
eHBlY3RlZC50eHQKQEAgLTEsNiArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBV
UkwgaHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc3Vw
cG9ydC9yZXNvdXJjZS5weT9jcm9zcy1vcmlnaW4tZmV0Y2gKLUJsb2NrZWQgYWNjZXNzIHRvIGV4
dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2NhbGhvc3Q6OTQ0NC9jb250ZW50LXNlY3VyaXR5LXBv
bGljeS9zdXBwb3J0L3Jlc291cmNlLnB5P2Nyb3NzLW9yaWdpbi14aHIKLUJsb2NrZWQgYWNjZXNz
IHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2NhbGhvc3Q6OTQ0NC9jb250ZW50LXNlY3Vy
aXR5LXBvbGljeS9zdXBwb3J0L3Jlc291cmNlLnB5P2Nyb3NzLW9yaWdpbi1mZXRjaAogCiBQQVNT
IFNhbWUtb3JpZ2luICdmZXRjaCgpJy4KIFBBU1MgU2FtZS1vcmlnaW4gWEhSLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1zY3JpcHQtc3JjLnN1Yi1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlw
dC1zcmMuc3ViLWV4cGVjdGVkLnR4dAppbmRleCA5NzkxMDYzMDM3ODVlYzI1NTUzMzZkZjQ5ZGJl
OGUxYmZhM2Y2ZWZhLi5iYjY0NTJmNDRhMGFhMjE1YThkZGU4YTJmMzAwZDhjYzQ0OGRiOTNkIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nv
bnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1z
cmMuc3ViLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVk
d29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dApAQCAtMiwxMCArMiw5IEBACiBIYXJu
ZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIAogVElNRU9VVCBzaGFyZWR3b3Jr
ZXItc2NyaXB0LXNyYyBUZXN0IHRpbWVkIG91dAotRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNj
cmlwdHMoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgIEEgbmV0d29yayBlcnJv
ciBvY2N1cnJlZC4KLUZBSUwgYGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBD
U1AgUmVmdXNlZCB0byBldmFsdWF0ZSBhIHN0cmluZyBhcyBKYXZhU2NyaXB0IGJlY2F1c2UgJ3Vu
c2FmZS1ldmFsJyBpcyBub3QgYW4gYWxsb3dlZCBzb3VyY2Ugb2Ygc2NyaXB0IGluIHRoZSBmb2xs
b3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAic2NyaXB0LXNyYyAnc2Vs
ZicgJ25vbmNlLWEnIGJsb2I6IGZpbGVzeXN0ZW06Ii4KLQotRkFJTCBgc2V0VGltZW91dChbc3Ry
aW5nXSlgIG5vdCBibG9ja2VkIGluIGh0dHA6IHdpdGhvdXQgQ1NQIGFzc2VydF91bnJlYWNoZWQ6
IGNhbGxiYWNrIG5vdCBjYWxsZWQuIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBDcm9z
cy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91ciBD
U1AgTG9hZCBmYWlsZWQKK1BBU1MgYGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91
dCBDU1AKK1BBU1MgYHNldFRpbWVvdXQoW3N0cmluZ10pYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3
aXRob3V0IENTUAogVElNRU9VVCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgYmxvY2tl
ZCBpbiBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnIFRlc3QgdGltZWQgb3V0CiBOT1RSVU4g
YGV2YWwoKWAgYmxvY2tlZCBpbiBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCiBOT1RSVU4g
YHNldFRpbWVvdXQoW3N0cmluZ10pYCBibG9ja2VkIGluIGh0dHA6IHdpdGggc2NyaXB0LXNyYyAn
c2VsZicKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVv
dXQuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRp
bWVvdXQuc3ViLWV4cGVjdGVkLnR4dAppbmRleCA0ZWFjMWNjYzA1MjY5ZjA3Njg3NTAyNWNkNjI0
ZWU3ZDIxNzk2Y2VmLi5iOGVlMTNiMGZmY2VhNmYxMjVjYzY5NmYyYmJiNjcxMjAzZjg2OGNiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nv
bnRlbnQtc2VjdXJpdHktcG9saWN5L3NjcmlwdC1zcmMvd29ya2VyLXNldC10aW1lb3V0LnN1Yi1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91
dC5zdWItZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAogCiBGQUlMIERlZGljYXRlZCB3b3Jr
ZXIgaW5oZXJpdHMgQ1NQIGZyb20gbWFpbiBkb2N1bWVudCBhc3NlcnRfZXF1YWxzOiBleHBlY3Rl
ZCAic2V0VGltZW91dCBhbGxvd2VkIiBidXQgZ290ICJzZXRUaW1lb3V0IGJsb2NrZWQiCi1GQUlM
IFNoYXJlZCB3b3JrZXIgZGVsaXZlcnMgaXRzIG93biBDU1AgYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgInNldFRpbWVvdXQgYmxvY2tlZCIgYnV0IGdvdCAic2V0VGltZW91dCBhbGxvd2VkIgorUEFT
UyBTaGFyZWQgd29ya2VyIGRlbGl2ZXJzIGl0cyBvd24gQ1NQCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZs
aW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vy
cy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVk
LnR4dAppbmRleCBjMTA3MTM2NTUyODAxOTJiN2NiMmVlOGU0ZDJlYzY1NDdhZWY3MjYzLi42Zjg0
NGRkNWQ5NDkxYTIyZTU5NWE5MGI5NjNjMDg4ODIxOTAyZDJkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGlu
ZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dz
ZXJzL29mZmxpbmUvYXBwY2FjaGUvd29ya2Vycy9hcHBjYWNoZS13b3JrZXIuaHR0cHMtZXhwZWN0
ZWQudHh0CkBAIC01LDcgKzUsNyBAQCBIYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9
IG51bGwKIFBBU1MgRGVkaWNhdGVkIHdvcmtlciBvZiB0aGUgY2FjaGVkIHNjcmlwdAogUEFTUyBE
ZWRpY2F0ZWQgd29ya2VyIG9mIHRoZSBmYWxsYmFja2VkIHNjcmlwdAogUEFTUyBEZWRpY2F0ZWQg
d29ya2VyIG9mIHRoZSBub3QtaW4tY2FjaGUgc2NyaXB0Ci1QQVNTIFNoYXJlZCB3b3JrZXIgb2Yg
dGhlIGNhY2hlZCBzY3JpcHQKLVBBU1MgU2hhcmVkIHdvcmtlciBvZiB0aGUgZmFsbGJhY2tlZCBz
Y3JpcHQKK0ZBSUwgU2hhcmVkIHdvcmtlciBvZiB0aGUgY2FjaGVkIHNjcmlwdCBhc3NlcnRfZXF1
YWxzOiBleHBlY3RlZCAiRG9uZTogY2FjaGVkIiBidXQgZ290ICJFcnJvcjogSW1wb3J0aW5nIGEg
bm9uLWNhY2hlZCBzY3JpcHQgbXVzdCBmYWlsLiIKK0ZBSUwgU2hhcmVkIHdvcmtlciBvZiB0aGUg
ZmFsbGJhY2tlZCBzY3JpcHQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIkRvbmU6IGZhbGxiYWNr
ZWQiIGJ1dCBnb3QgIkVycm9yOiBJbXBvcnRpbmcgYSBub24tY2FjaGVkIHNjcmlwdCBtdXN0IGZh
aWwuIgogVElNRU9VVCBTaGFyZWQgd29ya2VyIG9mIHRoZSBub3QtaW4tY2FjaGUgc2NyaXB0IFRl
c3QgdGltZWQgb3V0CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L2Nyb3NzLW9y
aWdpbi1pc29sYXRlZC1wZXJtaXNzaW9uLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRk
ZXItcG9saWN5L2Nyb3NzLW9yaWdpbi1pc29sYXRlZC1wZXJtaXNzaW9uLmh0dHBzLWV4cGVjdGVk
LnR4dAppbmRleCA2MzU1YjY4ZGU3MGJlNjZjMDFlMmIzYWUxMjc0N2Q1Y2QyYzM0MGFiLi5jOGJm
NzVlN2VhODUzMGZiYzhiNDIwMDMyYWY0ZjAzOWRkZGU1MzY3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVt
YmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5odHRwcy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xhdGVk
LXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0yMCw3ICsyMCw3IEBAIFBBU1MgZGVk
aWNhdGVkIHdvcmtlcjogc2NoZW1lID0gYmxvYiwgdmFsdWUgPSAqCiBQQVNTIGRlZGljYXRlZCB3
b3JrZXI6IHNjaGVtZSA9IGJsb2IsIHZhbHVlID0gc2VsZgogRkFJTCBkZWRpY2F0ZWQgd29ya2Vy
OiBzY2hlbWUgPSBibG9iLCB2YWx1ZSA9IChcKSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCBmYWxz
ZSBidXQgZ290IHRydWUKIFBBU1Mgc2hhcmVkIHdvcmtlcjogd2l0aENvb3BDb2VwID0gZmFsc2UK
LVBBU1Mgc2hhcmVkIHdvcmtlcjogd2l0aENvb3BDb2VwID0gdHJ1ZQorRkFJTCBzaGFyZWQgd29y
a2VyOiB3aXRoQ29vcENvZXAgPSB0cnVlIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIHRydWUgYnV0
IGdvdCBmYWxzZQogUEFTUyBzZXJ2aWNlIHdvcmtlcjogd2l0aENvb3BDb2VwID0gZmFsc2UKIEZB
SUwgc2VydmljZSB3b3JrZXI6IHdpdGhDb29wQ29lcCA9IHRydWUgYXNzZXJ0X2VxdWFsczogZXhw
ZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9s
aWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9s
aWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAzMzk4YmQ4ODkzMWIy
MjA4YTI4MDg5OWJlZDc0ZTI0ZGEzZjRmNjM2Li40Yzg2NmViMjkyNjNiYWY4N2VkYzE5ZWU5Y2Ux
NTAxNDYxMDkwYmNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9zaGFyZWQtd29y
a2Vycy5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvc2hhcmVk
LXdvcmtlcnMuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0yLDcgKzIsNyBAQCBWZXJpZnkgdGhlIENy
b3NzLU9yaWdpbiBFbWJlZGRlciBQb2xpY3kgZm9yIFNoYXJlZCBXb3JrZXJzIGJ5IHBlcmZvcm1p
bmcgYSBjcm9zcwogCiAKIFBBU1MgZGVmYXVsdCBwb2xpY3kgKGRlcml2ZWQgZnJvbSByZXNwb25z
ZSkKLUZBSUwgInJlcXVpcmUtY29ycCIgKGRlcml2ZWQgZnJvbSByZXNwb25zZSkgYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgImZhaWx1cmUiIGJ1dCBnb3QgInN1Y2Nlc3MiCitQQVNTICJyZXF1aXJl
LWNvcnAiIChkZXJpdmVkIGZyb20gcmVzcG9uc2UpCiBQQVNTIGRlZmF1bHQgcG9saWN5IChkZXJp
dmVkIGZyb20gb3duZXIgc2V0IGR1ZSB0byB1c2Ugb2YgbG9jYWwgc2NoZW1lIC0gYmxvYiBVUkwp
CiBGQUlMICJyZXF1aXJlLWNvcnAiIChkZXJpdmVkIGZyb20gb3duZXIgc2V0IGR1ZSB0byB1c2Ug
b2YgbG9jYWwgc2NoZW1lIC0gYmxvYiBVUkwpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJmYWls
dXJlIiBidXQgZ290ICJzdWNjZXNzIgogUEFTUyBkZWZhdWx0IHBvbGljeSAoZGVyaXZlZCBmcm9t
IG93bmVyIHNldCBkdWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAtIGRhdGEgVVJMKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Ny
b3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVyaXRhbmNlLnN1Yi5odHRwcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS93b3JrZXItaW5oZXJpdGFuY2Uuc3Vi
Lmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCA3NWIxZDMzZTUyNjAxYWQwZDNhZGRmOGJkZTU1NWUx
NWRiMjJmZjIyLi5iMmJmMmUzYmZmM2ZlMmUzMDdhOGJjOTQ5ZTIyMWRmMDA2YTk2M2Y3IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
Y3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS93b3JrZXItaW5oZXJpdGFuY2Uuc3ViLmh0dHBz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS93b3JrZXItaW5oZXJpdGFu
Y2Uuc3ViLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDYgQEAKIEJsb2NrZWQgYWNjZXNz
IHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2NhbGhvc3Q6OTQ0NC9jb21tb24vYmxhbmsu
aHRtbAogQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9z
dDo5NDQ0L2NvbW1vbi9ibGFuay5odG1sCiBCbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwg
aHR0cHM6Ly93d3cubG9jYWxob3N0Ojk0NDQvY29tbW9uL2JsYW5rLmh0bWwKLUJsb2NrZWQgYWNj
ZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2NhbGhvc3Q6OTQ0NC9jb21tb24vYmxh
bmsuaHRtbAogCiBQQVNTIFRlc3QgdGhhdCBsb2NhbCBzY2hlbWUgd29ya2VycyBpbmhlcml0IENP
RVA6IHJlcXVpcmUtY29ycCBmcm9tIHRoZSBjcmVhdGluZyBkb2N1bWVudAogUEFTUyBibG9iIFVS
TCBkZWRpY2F0ZWQgd29ya2VyOiBTYW1lIG9yaWdpbiBzaG91bGQgYmUgYWxsb3dlZC4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2Vydmlj
ZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2NsYWltLXNoYXJlZC13b3JrZXItZmV0Y2guaHR0cHMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvY2xhaW0tc2hhcmVkLXdvcmtlci1mZXRj
aC5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggZGQzNWFhZTI1Zjc3ZmU0NDUxNjNiMTk0NmJiYjYz
MjM0Y2YyMGZkNy4uOTBkOTFhZDUxMDFmNTEwZDRiNGU0NzI5NWE2YzYwN2QwZDhmYmM3MCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2
aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvY2xhaW0tc2hhcmVkLXdvcmtlci1mZXRjaC5odHRw
cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvY2xhaW0tc2hhcmVkLXdvcmtl
ci1mZXRjaC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSw0IEBACiAKLVBBU1MgZmV0Y2go
KSBpbiBTaGFyZWRXb3JrZXIgc2hvdWxkIGJlIGludGVyY2VwdGVkIGFmdGVyIHRoZSBjbGllbnQg
aXMgY2xhaW1lZC4KKworRkFJTCBmZXRjaCgpIGluIFNoYXJlZFdvcmtlciBzaG91bGQgYmUgaW50
ZXJjZXB0ZWQgYWZ0ZXIgdGhlIGNsaWVudCBpcyBjbGFpbWVkLiBhc3NlcnRfZXF1YWxzOiBmZXRj
aCgpIGluIHRoZSBzaGFyZWQgd29ya2VyIHNob3VsZCBiZSBpbnRlcmNlcHRlZC4gZXhwZWN0ZWQg
IkludGVyY2VwdGVkISIgYnV0IGdvdCAiYSBzaW1wbGUgdGV4dCBmaWxlXG4iCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9T
aGFyZWRXb3JrZXItc2NyaXB0LWVycm9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXItc2NyaXB0LWVy
cm9yLWV4cGVjdGVkLnR4dAppbmRleCBlODEzMzgwMGQyY2FhNmE5NjI4ZTk1OTRmYjc4MjE0NzE3
ODQ0MGU1Li5mZDJkZjBmZTYwOWE2NGZmNDNlYjU4NGQ0NDNlZmIwNmU3ZGU0ZGJiIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
U2hhcmVkV29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlci1zY3Jp
cHQtZXJyb3ItZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEsMyBAQAotQ09OU09MRSBNRVNTQUdFOiBF
cnJvcjogYXNzZXJ0X3VucmVhY2hlZDogRkFJTDogb25lcnJvciBpbnZva2VkIGZvciBhIHNjcmlw
dCBlcnJvci4gUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCi0KLUhhcm5lc3MgRXJyb3IgKEZBSUwp
LCBtZXNzYWdlID0gRXJyb3I6IGFzc2VydF91bnJlYWNoZWQ6IEZBSUw6IG9uZXJyb3IgaW52b2tl
ZCBmb3IgYSBzY3JpcHQgZXJyb3IuIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQogCiBQQVNTIFRl
c3Qgc2NyaXB0IGVycm9yIHVuaGFuZGxlZC4KIFBBU1MgVGVzdCBzY3JpcHQgZXJyb3IgaGFuZGxl
ZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd29ya2Vycy9TaGFyZWRXb3JrZXJfZGF0YVVybC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvU2hhcmVkV29ya2VyX2Rh
dGFVcmwtZXhwZWN0ZWQudHh0CmluZGV4IDk5NWEwNjAxOWI4NDhkNDM2N2FiNWJjYTk4Zjg2MjI4
MWQxYmJjOGIuLjliNTgyMGFhZThjYjMzM2Q4ODA1OWE0NjFhZDFiZWE3ZDQ1NjYwYTcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cy9TaGFyZWRXb3JrZXJfZGF0YVVybC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJs
LWV4cGVjdGVkLnR4dApAQCAtMSwxMyArMSw1IEBACi1DT05TT0xFIE1FU1NBR0U6IEVycm9yOiBh
c3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3QgMQogCiAKLUhhcm5lc3MgRXJyb3IgKEZB
SUwpLCBtZXNzYWdlID0gRXJyb3I6IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDIgYnV0IGdvdCAx
Ci0KLVBBU1MgRGF0YSBVUkwgbm90IHNoYXJlZCBieSBjcm9zcy1vcmlnaW4gU2hhcmVkV29ya2Vy
cwotVElNRU9VVCBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtlcnMg
VGVzdCB0aW1lZCBvdXQKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBFcnJvcjog
YXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290IDEKLQogUEFTUyBEYXRhIFVSTCBub3Qg
c2hhcmVkIGJ5IGNyb3NzLW9yaWdpbiBTaGFyZWRXb3JrZXJzCi1USU1FT1VUIERhdGEgVVJMcyBz
aGFyZWQgYnkgc2FtZS1vcmlnaW4gU2hhcmVkV29ya2VycyBUZXN0IHRpbWVkIG91dAorUEFTUyBE
YXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtlcnMKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21v
ZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1
bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKaW5k
ZXggNTc2ZTZkMmI3ZWQyZmE3MDIzY2YyM2I5NmEwNjkxZmQ1YWJjYTA1OS4uNGEyNmJlOTI5YThk
NzUyNTA4YjRmN2Y3NWMwN2IzZWE4ZWRjOGNhZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtl
ci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29y
a2VyLWltcG9ydC1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAot
QmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3MS5sb2NhbGhvc3Q6OTQ0
My93b3JrZXJzL21vZHVsZXMvcmVzb3VyY2VzL2V4cG9ydC1vbi1sb2FkLXNjcmlwdC5weQogCiBQ
QVNTIFN0YXRpYyBpbXBvcnQuCiBGQUlMIFN0YXRpYyBpbXBvcnQgKGNyb3NzLW9yaWdpbikuIHBy
b21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiAiSW1wb3J0aW5nIGEg
bW9kdWxlIHNjcmlwdCBmYWlsZWQuIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBv
cnQtZGF0YS11cmwtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXIt
aW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKaW5kZXggNGY4NjQxZTUx
NDgwZjAxMzA2NzViOTEzNjRlY2M0ZjBmYTI3MjBhOS4uMjk5N2Y3ZTFmMzA4ZTgwODE5N2RjOGQ0
ODIwNDlkNTNjYWI0ZjNiZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0
YS11cmwtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWlt
cG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAot
Q09OU09MRSBNRVNTQUdFOiBPcmlnaW4gbnVsbCBpcyBub3QgYWxsb3dlZCBieSBBY2Nlc3MtQ29u
dHJvbC1BbGxvdy1PcmlnaW4uIFN0YXR1cyBjb2RlOiAyMDAKIAogSGFybmVzcyBFcnJvciAoVElN
RU9VVCksIG1lc3NhZ2UgPSBudWxsCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9y
dC1kYXRhLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0CmluZGV4IGVhYzdmOTVkZTZmMmQ4N2M3YjIx
M2RmZWNhYjEzODhjNjg4NGRjMWQuLmNiYzA0MjllMGM3MTczNTI4MGVmYjQ0NDRjY2JhYTgyMTM2
OGRmMTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJsLndpbmRv
dy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11cmwud2lu
ZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVy
bmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291
cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkKIAogSGFybmVzcyBFcnJvciAoVElNRU9VVCks
IG1lc3NhZ2UgPSBudWxsCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWZh
aWx1cmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZmFpbHVyZS1leHBl
Y3RlZC50eHQKaW5kZXggNGU5ZTUxOTM3MmJiMWY1MTk1MmYzMjU4MGIwNGI3OTM4YWQ4NzU2OS4u
ZDA0OTAzNTljZTdmYmZjNDM4NjMwOGQwZjQzMzdlYjhkYWIyZTk5MiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMv
c2hhcmVkLXdvcmtlci1pbXBvcnQtZmFpbHVyZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVk
LXdvcmtlci1pbXBvcnQtZmFpbHVyZS1leHBlY3RlZC50eHQKQEAgLTEsOSArMSw4IEBACi1DT05T
T0xFIE1FU1NBR0U6IENhbm5vdCBsb2FkIHN0YXRpYy1pbXBvcnQtd29ya2VyLmpzLgogCiBQQVNT
IGltcG9ydFNjcmlwdHMoKSBvbiBtb2R1bGUgd29ya2VyIHNob3VsZCB0aHJvdyBhbiBleGNlcHRp
b24uCiBQQVNTIFdvcmtlciBjb25zdHJ1Y3Rpb24gZm9yIG5vbi1leGlzdGVudCBzY3JpcHQgc2hv
dWxkIGRpc3BhdGNoIGFuIEVycm9yRXZlbnQuCiBQQVNTIFN0YXRpYyBpbXBvcnQgZm9yIG5vbi1l
eGlzdGVudCBzY3JpcHQgc2hvdWxkIGRpc3BhdGNoIGFuIEVycm9yRXZlbnQuCiBQQVNTIER5bmFt
aWMgaW1wb3J0IGZvciBub24tZXhpc3RlbnQgc2NyaXB0IHNob3VsZCB0aHJvdyBhbiBleGNlcHRp
b24uCiBQQVNTIFNoYXJlZFdvcmtlciBjb25zdHJ1Y3Rpb24gZm9yIGFuIGludmFsaWQgVVJMIHNo
b3VsZCB0aHJvdyBhbiBleGNlcHRpb24uCi1GQUlMIFNoYXJlZFdvcmtlciBjb25zdHJ1Y3Rpb24g
Zm9yIGEgZmlsZSBVUkwgc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbi4gYXNzZXJ0X3Rocm93c19k
b206IGZ1bmN0aW9uICIoKSA9PiBuZXcgU2hhcmVkV29ya2VyKHNjcmlwdFVSTCwgeyB0eXBlOiAn
bW9kdWxlJyB9KSIgZGlkIG5vdCB0aHJvdworUEFTUyBTaGFyZWRXb3JrZXIgY29uc3RydWN0aW9u
IGZvciBhIGZpbGUgVVJMIHNob3VsZCB0aHJvdyBhbiBleGNlcHRpb24uCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1
bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LXJlZmVycmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJl
ZC13b3JrZXItaW1wb3J0LXJlZmVycmVyLWV4cGVjdGVkLnR4dAppbmRleCBmZTFiOWQ5M2MwODAx
MWI1MGU5NDFmNGUxMjM2MDY3YWJiZDNmMjNlLi43YjRlZThjMTllZDM5ZDBjMGE3YTUzMjYyZTBm
MGJmZDM5NjIzYTZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1yZWZlcnJl
ci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtcmVmZXJyZXItZXhw
ZWN0ZWQudHh0CkBAIC0xLDIxICsxLDE1IEBACi1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBV
UkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQzL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMv
ZXhwb3J0LXJlZmVycmVyLWNoZWNrZXIucHkKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVS
TCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9l
eHBvcnQtcmVmZXJyZXItY2hlY2tlci5weQotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJM
IGh0dHBzOi8vd3d3MS5sb2NhbGhvc3Q6OTQ0My93b3JrZXJzL21vZHVsZXMvcmVzb3VyY2VzL2V4
cG9ydC1yZWZlcnJlci1jaGVja2VyLnB5Ci1CbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwg
aHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQzL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhw
b3J0LXJlZmVycmVyLWNoZWNrZXIucHkKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBo
dHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBv
cnQtcmVmZXJyZXItY2hlY2tlci5weQotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0
dHBzOi8vd3d3MS5sb2NhbGhvc3Q6OTQ0My93b3JrZXJzL21vZHVsZXMvcmVzb3VyY2VzL2V4cG9y
dC1yZWZlcnJlci1jaGVja2VyLnB5CiAKIFBBU1MgU2FtZS1vcmlnaW4gdG9wLWxldmVsIG1vZHVs
ZSBzY3JpcHQgbG9hZGluZyB3aXRoICJuby1yZWZlcnJlciIgcmVmZXJyZXIgcG9saWN5CiBQQVNT
IFNhbWUtb3JpZ2luIHRvcC1sZXZlbCBtb2R1bGUgc2NyaXB0IGxvYWRpbmcgd2l0aCAib3JpZ2lu
IiByZWZlcnJlciBwb2xpY3kKIFBBU1MgU2FtZS1vcmlnaW4gdG9wLWxldmVsIG1vZHVsZSBzY3Jp
cHQgbG9hZGluZyB3aXRoICJzYW1lLW9yaWdpbiIgcmVmZXJyZXIgcG9saWN5Ci1QQVNTIFNhbWUt
b3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0aCAibm8tcmVmZXJyZXIiIHJlZmVycmVyIHBvbGljeS4K
LVBBU1MgU2FtZS1vcmlnaW4gc3RhdGljIGltcG9ydCB3aXRoICJvcmlnaW4iIHJlZmVycmVyIHBv
bGljeS4KK0ZBSUwgU2FtZS1vcmlnaW4gc3RhdGljIGltcG9ydCB3aXRoICJuby1yZWZlcnJlciIg
cmVmZXJyZXIgcG9saWN5LiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiIiBidXQgZ290ICJodHRw
Oi8vbG9jYWxob3N0Ojg4MDAvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9zdGF0aWMtaW1wb3J0
LXNhbWUtb3JpZ2luLXJlZmVycmVyLWNoZWNrZXItd29ya2VyLmpzIgorRkFJTCBTYW1lLW9yaWdp
biBzdGF0aWMgaW1wb3J0IHdpdGggIm9yaWdpbiIgcmVmZXJyZXIgcG9saWN5LiBhc3NlcnRfZXF1
YWxzOiBleHBlY3RlZCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwLyIgYnV0IGdvdCAiaHR0cDovL2xv
Y2FsaG9zdDo4ODAwL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvc3RhdGljLWltcG9ydC1zYW1l
LW9yaWdpbi1yZWZlcnJlci1jaGVja2VyLXdvcmtlci5qcyIKIFBBU1MgU2FtZS1vcmlnaW4gc3Rh
dGljIGltcG9ydCB3aXRoICJzYW1lLW9yaWdpbiIgcmVmZXJyZXIgcG9saWN5LgogRkFJTCBDcm9z
cy1vcmlnaW4gc3RhdGljIGltcG9ydCB3aXRoICJuby1yZWZlcnJlciIgcmVmZXJyZXIgcG9saWN5
LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJU
eXBlRXJyb3I6IFR5cGUgZXJyb3IiCiBGQUlMIENyb3NzLW9yaWdpbiBzdGF0aWMgaW1wb3J0IHdp
dGggIm9yaWdpbiIgcmVmZXJyZXIgcG9saWN5LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWpl
Y3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiCiBGQUlMIENy
b3NzLW9yaWdpbiBzdGF0aWMgaW1wb3J0IHdpdGggInNhbWUtb3JpZ2luIiByZWZlcnJlciBwb2xp
Y3kuIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3Qg
IlR5cGVFcnJvcjogVHlwZSBlcnJvciIKLUZBSUwgU2FtZS1vcmlnaW4gZHluYW1pYyBpbXBvcnQg
d2l0aCAibm8tcmVmZXJyZXIiIHJlZmVycmVyIHBvbGljeS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgIiIgYnV0IGdvdCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL3dvcmtlcnMvbW9kdWxlcy9yZXNv
dXJjZXMvZHluYW1pYy1pbXBvcnQtc2FtZS1vcmlnaW4tcmVmZXJyZXItY2hlY2tlci13b3JrZXIu
anMiCi1GQUlMIFNhbWUtb3JpZ2luIGR5bmFtaWMgaW1wb3J0IHdpdGggIm9yaWdpbiIgcmVmZXJy
ZXIgcG9saWN5LiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiaHR0cDovL2xvY2FsaG9zdDo4ODAw
LyIgYnV0IGdvdCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJj
ZXMvZHluYW1pYy1pbXBvcnQtc2FtZS1vcmlnaW4tcmVmZXJyZXItY2hlY2tlci13b3JrZXIuanMi
CitQQVNTIFNhbWUtb3JpZ2luIGR5bmFtaWMgaW1wb3J0IHdpdGggIm5vLXJlZmVycmVyIiByZWZl
cnJlciBwb2xpY3kuCitQQVNTIFNhbWUtb3JpZ2luIGR5bmFtaWMgaW1wb3J0IHdpdGggIm9yaWdp
biIgcmVmZXJyZXIgcG9saWN5LgogUEFTUyBTYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydCB3aXRo
ICJzYW1lLW9yaWdpbiIgcmVmZXJyZXIgcG9saWN5LgogRkFJTCBDcm9zcy1vcmlnaW4gZHluYW1p
YyBpbXBvcnQgd2l0aCAibm8tcmVmZXJyZXIiIHJlZmVycmVyIHBvbGljeS4gcHJvbWlzZV90ZXN0
OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBUeXBl
IGVycm9yIgogRkFJTCBDcm9zcy1vcmlnaW4gZHluYW1pYyBpbXBvcnQgd2l0aCAib3JpZ2luIiBy
ZWZlcnJlciBwb2xpY3kuIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZh
bHVlOiBvYmplY3QgIlR5cGVFcnJvcjogVHlwZSBlcnJvciIKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJl
ZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWlt
cG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0CmluZGV4IDU3NmU2ZDJiN2VkMmZhNzAyM2NmMjNiOTZh
MDY5MWZkNWFiY2EwNTkuLjRhMjZiZTkyOWE4ZDc1MjUwOGI0ZjdmNzVjMDdiM2VhOGVkYzhjYWYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0
ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9j
YWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3Jp
cHQucHkKIAogUEFTUyBTdGF0aWMgaW1wb3J0LgogRkFJTCBTdGF0aWMgaW1wb3J0IChjcm9zcy1v
cmlnaW4pLiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogIklt
cG9ydGluZyBhIG1vZHVsZSBzY3JpcHQgZmFpbGVkLiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13
b3JrZXItb3B0aW9ucy1jcmVkZW50aWFscy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2Vy
LW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0CmluZGV4IGUxYmVkZjU0MzBlZmU3NWE1
OWEzYzQ5ODljNTVkNmZmNmMxOTY1MWEuLmE3MGYwNWFmNTRmNGJiZjYyNTJkN2U2YmU5ZTAyYTc4
N2UxMWZiYWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1jcmVkZW50aWFs
cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxz
LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFs
IFVSTCBodHRwOi8vd3d3MS5sb2NhbGhvc3Q6ODgwMC93b3JrZXJzL21vZHVsZXMvcmVzb3VyY2Vz
L2V4cG9ydC1jcmVkZW50aWFscy5weQogCiBIYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2Fn
ZSA9IG51bGwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwNC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVkLnR4dAppbmRleCAwMThk
YjYwNDU2OWQwNmYyNzIxYzhjYjM5NDZmNjA4YTRkYzZlOThiLi5jZmU0NjU1Njc1Y2QwNDlhYjdh
NWViOTFiNjdkZGE4ZWI1MGRkYjQ2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMv
MDA0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVk
LnR4dApAQCAtMSw1ICsxLDMgQEAKIAotSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2Ug
PSBudWxsCi0KLU5PVFJVTiBzaGFyZWQgd29ya2VyIHdpdGggbXVsdGlwbGUgZG9jdW1lbnRzCitQ
QVNTIHNoYXJlZCB3b3JrZXIgd2l0aCBtdWx0aXBsZSBkb2N1bWVudHMKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFu
dGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdv
cmtlcnMvMDA4LWV4cGVjdGVkLnR4dAppbmRleCA5N2E0ZTdhNzNhNjNmZGM2ZTMyMDIxMjczYWZj
ODMzYzAxYjJiNDcwLi4wOWY2NzJkMWM2MjE3YTBjNWJhMzFmZWM2NGQyYjkzNWM1MzhmZTJlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA4LWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50
aWNzL211bHRpcGxlLXdvcmtlcnMvMDA4LWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDMgQEAKIAot
SGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0KLVRJTUVPVVQgbWVzc2Fn
ZWNoYW5uZWwgaW4gc2hhcmVkIHdvcmtlciBUZXN0IHRpbWVkIG91dAorUEFTUyBtZXNzYWdlY2hh
bm5lbCBpbiBzaGFyZWQgd29ya2VyCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvcmVwb3J0aW5nLWVycm9y
cy8wMDMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9yZXBvcnRpbmctZXJyb3JzLzAwMy1leHBlY3RlZC50
eHQKaW5kZXggZjhmNmVlYzM0NDM3ZDNlZGU1N2I4NmJmYWQzN2JiYmQ3NTcwZWU4ZC4uYTU2MWZj
M2NkYmFjOTJmMDMzYWI5NWYwZTc3ZGNkZjNhZmRiMzdmZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9yZXBv
cnRpbmctZXJyb3JzLzAwMy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9yZXBvcnRpbmctZXJyb3Jz
LzAwMy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgc2hhcmVkIHdvcmtlciwg
bm8gZXJyb3IgZXZlbnQgb24gd29ya2VyIG9yIHBvcnQgYXNzZXJ0X3VucmVhY2hlZDogZXJyb3Ig
b24gd29ya2VyIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorUEFTUyBzaGFyZWQgd29ya2VyLCBu
byBlcnJvciBldmVudCBvbiB3b3JrZXIgb3IgcG9ydAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3JlcG9y
dGluZy1lcnJvcnMvMDA0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvcmVwb3J0aW5nLWVycm9ycy8wMDQt
ZXhwZWN0ZWQudHh0CmluZGV4IDQ3MTNmN2YwNjliNWMyZTcwZjI0MDE1OGE4M2ExODBlNmQ0MWEw
MzYuLjIzMDQ3NzIyZjcxMzAyODE5M2Q4OTExYzk4N2UzZjA5MjYwMWVmNGMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1h
bnRpY3MvcmVwb3J0aW5nLWVycm9ycy8wMDQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRpY3MvcmVwb3J0
aW5nLWVycm9ycy8wMDQtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIHNoYXJl
ZCB3b3JrZXIgaW4gdHdvIGRvY3VtZW50cyBhbmQgd2luZG93Lm9uZXJyb3IgYXNzZXJ0X3VucmVh
Y2hlZDogKG91dGVyKSBlcnJvciBvbiB3b3JrZXIgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCitQ
QVNTIHNoYXJlZCB3b3JrZXIgaW4gdHdvIGRvY3VtZW50cyBhbmQgd2luZG93Lm9uZXJyb3IKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL3NoYXJlZC13b3JrZXItZnJvbS1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJl
ZC13b3JrZXItZnJvbS1ibG9iLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0CmluZGV4IGEwODljMjI0
ODllMmQ2Njc4ZTViMjRlMmZmZWZlMDI0M2MxZWE4Y2QuLjE5ZTQ2YjA5YTU2YWM4MzM1MzNkNTdi
MjAxYTllNjAwMDQ4N2IwYzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZyb20tYmxvYi11cmwud2lu
ZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRvdy1leHBl
Y3RlZC50eHQKQEAgLTEsNyArMSw1IEBACiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNz
YWdlID0gbnVsbAotCi1GQUlMIENyZWF0aW5nIGEgc2hhcmVkIHdvcmtlciBmcm9tIGEgYmxvYiBV
Ukwgd29ya3MuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJ3b3JrZXJfT0tfMiIgYnV0IGdvdCAi
d29ya2VyX09LXzEiCitQQVNTIENyZWF0aW5nIGEgc2hhcmVkIHdvcmtlciBmcm9tIGEgYmxvYiBV
Ukwgd29ya3MuCiBQQVNTIENyZWF0aW5nIGEgc2hhcmVkIHdvcmtlciBmcm9tIGEgYmxvYiBVUkwg
d29ya3MgaW1tZWRpYXRlbHkgYmVmb3JlIHJldm9raW5nLgotVElNRU9VVCBDb25uZWN0aW5nIHRv
IGEgc2hhcmVkIHdvcmtlciBvbiBhIHJldm9rZWQgYmxvYiBVUkwgd29ya3MuIFRlc3QgdGltZWQg
b3V0CitQQVNTIENvbm5lY3RpbmcgdG8gYSBzaGFyZWQgd29ya2VyIG9uIGEgcmV2b2tlZCBibG9i
IFVSTCB3b3Jrcy4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItaW4tZGF0YS11cmwtY29udGV4dC53
aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItaW4tZGF0YS11cmwtY29udGV4dC53aW5kb3ct
ZXhwZWN0ZWQudHh0CmluZGV4IDIwNmY1NmUwZDEwN2E2NWFjMDZmNWNhNWQ0Y2VmN2NiODZiZjRh
Y2QuLjA1ZTY2YTNjNzYwMWFiN2Q0MGViNmFlZGIxY2JlYWFlMDY5M2M0YTUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFy
ZWQtd29ya2VyLWluLWRhdGEtdXJsLWNvbnRleHQud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVk
LXdvcmtlci1pbi1kYXRhLXVybC1jb250ZXh0LndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNCAr
MSw1IEBACitDT05TT0xFIE1FU1NBR0U6IENhbm5vdCBsb2FkIGh0dHA6Ly9sb2NhbGhvc3Q6ODgw
MC93b3JrZXJzL3N1cHBvcnQvcG9zdC1tZXNzYWdlLW9uLWxvYWQtd29ya2VyLmpzLgogCi1GQUlM
IENyZWF0ZSBhIHNoYXJlZCB3b3JrZXIgaW4gYSBkYXRhIHVybCBmcmFtZSBhc3NlcnRfZXF1YWxz
OiBleHBlY3RlZCAiUEFTUyIgYnV0IGdvdCAiU2hhcmVkV29ya2VyIGNvbnN0cnVjdGlvbiB1bmV4
cGVjdGVkbHkgc3luY2hyb25vdXNseSBmYWlsZWQiCi1GQUlMIENyZWF0ZSBhIGRhdGEgdXJsIHNo
YXJlZCB3b3JrZXIgaW4gYSBkYXRhIHVybCBmcmFtZSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAi
UEFTUyIgYnV0IGdvdCAiU2hhcmVkV29ya2VyIGNvbnN0cnVjdGlvbiB1bmV4cGVjdGVkbHkgc3lu
Y2hyb25vdXNseSBmYWlsZWQiCitQQVNTIENyZWF0ZSBhIHNoYXJlZCB3b3JrZXIgaW4gYSBkYXRh
IHVybCBmcmFtZQorUEFTUyBDcmVhdGUgYSBkYXRhIHVybCBzaGFyZWQgd29ya2VyIGluIGEgZGF0
YSB1cmwgZnJhbWUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvc2hhcmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25zLWV4cGVjdGVkLnR4dAppbmRleCA2
ZmZlZTI3MzkwZDk3OGU0ZTZiNTY5MWY4ZGJhN2UzZWVkMGE4MzJkLi5hZTQ1YjRkMjczOTY0NDY5
M2MyYzE2NDk3NWM1M2Q1NjZiYmEyOGY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1lLXZpYS1v
cHRpb25zLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25zLWV4cGVj
dGVkLnR4dApAQCAtMSwzICsxLDMgQEAKIAotRkFJTCBUZXN0IHRoZSBuYW1lIHByb3BlcnR5IG9m
IHNoYXJlZCB3b3JrZXJzIG1peGluZyBjb25zdHJ1Y3RvciBvcHRpb25zIGFuZCBjb25zdHJ1Y3Rv
ciBzdHJpbmdzIEVycm9yOiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3QgMQorUEFT
UyBUZXN0IHRoZSBuYW1lIHByb3BlcnR5IG9mIHNoYXJlZCB3b3JrZXJzIG1peGluZyBjb25zdHJ1
Y3RvciBvcHRpb25zIGFuZCBjb25zdHJ1Y3RvciBzdHJpbmdzCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29y
a2VyLW9wdGlvbnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1taXNt
YXRjaC1leHBlY3RlZC50eHQKaW5kZXggZjY1Njk0NjE1MGRiMTdjMDliYmM0YWUzZWRhODU4Zjkx
NzNlZDZlMS4uNGY5OWExMzQwOWU3ZTg2ODQ0YjU1MThjNTEwYzMwOGZkZmU2MDcyMyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L3NoYXJlZC13b3JrZXItb3B0aW9ucy1taXNtYXRjaC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3Jr
ZXItb3B0aW9ucy1taXNtYXRjaC1leHBlY3RlZC50eHQKQEAgLTEsMjggKzEsMjYgQEAKIAotSGFy
bmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0KLVRJTUVPVVQgQ29ubmVjdGlu
ZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2Nr
ZWQ6IGRlZmF1bHQgdG8gbW9kdWxlIFRlc3QgdGltZWQgb3V0Ci1OT1RSVU4gQ29ubmVjdGluZyB0
byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6
IG1vZHVsZSB0byBkZWZhdWx0Ci1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdp
dGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGNsYXNzaWMgdG8gbW9kdWxl
Ci1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlv
bnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG1vZHVsZSB0byBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGlu
ZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2Nr
ZWQ6IGRlZmF1bHQgdG8gb21pdCBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1
bHQgdG8gaW5jbHVkZSBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29y
a2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gZGVm
YXVsdCBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGgg
ZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gc2FtZS1vcmlnaW4g
aW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZl
cmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGluY2x1ZGUgaW4gY2xhc3Np
YwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBvbWl0IGluIGNsYXNzaWMKLU5P
VFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBz
aG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gaW5jbHVkZSBpbiBjbGFzc2ljCi1OT1RS
VU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hv
dWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gZGVmYXVsdCBpbiBjbGFzc2ljCi1OT1RSVU4gQ29u
bmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJl
IGJsb2NrZWQ6IGluY2x1ZGUgdG8gb21pdCBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0
byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6
IGluY2x1ZGUgdG8gc2FtZS1vcmlnaW4gaW4gY2xhc3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8g
c2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBk
ZWZhdWx0IHRvIG9taXQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29y
a2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8g
aW5jbHVkZSBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0
aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBkZWZhdWx0IGlu
IG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVu
dCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIHNhbWUtb3JpZ2luIGluIG1vZHVs
ZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGluY2x1ZGUgaW4gbW9kdWxlCi1OT1RSVU4g
Q29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxk
IGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIG9taXQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IHNhbWUtb3JpZ2luIHRvIGluY2x1ZGUgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGlu
ZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2Nr
ZWQ6IGluY2x1ZGUgdG8gZGVmYXVsdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNo
YXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5j
bHVkZSB0byBvbWl0IGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIHNh
bWUtb3JpZ2luIGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0
aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBtb2R1bGUK
K1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMg
c2hvdWxkIGJlIGJsb2NrZWQ6IG1vZHVsZSB0byBkZWZhdWx0CitQQVNTIENvbm5lY3RpbmcgdG8g
c2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBj
bGFzc2ljIHRvIG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGNsYXNzaWMKK1BB
U1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hv
dWxkIGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gb21pdCBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3Rp
bmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9j
a2VkOiBkZWZhdWx0IHRvIGluY2x1ZGUgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNo
YXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21p
dCB0byBkZWZhdWx0IGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2Vy
IHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gc2FtZS1v
cmlnaW4gaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBpbmNsdWRlIGluIGNs
YXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9w
dGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIG9taXQgaW4gY2xhc3NpYwor
UEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBz
aG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gaW5jbHVkZSBpbiBjbGFzc2ljCitQQVNT
IENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3Vs
ZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIGRlZmF1bHQgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0
aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxv
Y2tlZDogaW5jbHVkZSB0byBvbWl0IGluIGNsYXNzaWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1
ZGUgdG8gc2FtZS1vcmlnaW4gaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3
b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0
byBvbWl0IGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBk
aWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBpbmNsdWRlIGlu
IG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQg
b3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBkZWZhdWx0IGluIG1vZHVsZQorUEFT
UyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91
bGQgYmUgYmxvY2tlZDogb21pdCB0byBzYW1lLW9yaWdpbiBpbiBtb2R1bGUKK1BBU1MgQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IG9taXQgdG8gaW5jbHVkZSBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUt
b3JpZ2luIHRvIG9taXQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0
byBpbmNsdWRlIGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0
aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0
IGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJl
bnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBvbWl0IGluIG1vZHVsZQor
UEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBz
aG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBzYW1lLW9yaWdpbiBpbiBtb2R1bGUKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIv
b3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL29wZW4tdXJsLXJl
ZGlyZWN0ZWQtc2hhcmVkd29ya2VyLW9yaWdpbi1leHBlY3RlZC50eHQKaW5kZXggMWUyZDM5OTJm
NmQ1ZGYzMjIwN2E2YjBmNjE5YTZkNzExODEyNDAwZC4uNTljYWNhNDg2ZjhkZWFjMDc4OWM5N2I0
ZmVlOGE1MjU5N2E1ZTU0NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3Jp
Z2luLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhw
ZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJM
IGh0dHA6Ly93d3cyLmxvY2FsaG9zdDo4ODAwL3hoci9yZXNvdXJjZXMvaW5zcGVjdC1oZWFkZXJz
LnB5P2ZpbHRlcl9uYW1lPW9yaWdpbiZjb3JzCiAKIEZBSUwgUmVmZXJlciBoZWFkZXIgYXNzZXJ0
X2VxdWFsczogZXhwZWN0ZWQgIlJlZmVyZXI6IGh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC94aHIvcmVz
b3VyY2VzL3dvcmtlcnhoci1vcmlnaW4tcmVmZXJyZXIuanNcbiIgYnV0IGdvdCAiUmVmZXJlcjog
aHR0cDovL2xvY2FsaG9zdDo4ODAwL3hoci9yZXNvdXJjZXMvcmVkaXJlY3QucHk/bG9jYXRpb249
d29ya2VyeGhyLW9yaWdpbi1yZWZlcnJlci5qc1xuIgogRkFJTCBPcmlnaW4gaGVhZGVyIGFzc2Vy
dF9lcXVhbHM6IGV4cGVjdGVkICJPcmlnaW46IGh0dHA6Ly9sb2NhbGhvc3Q6ODgwMFxuIiBidXQg
Z290ICIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9z
aGFyZWQtd29ya2VyLWNvbm5lY3Qtc3JjLWFsbG93ZWQuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL3NoYXJlZC13b3JrZXItY29ubmVjdC1zcmMt
YWxsb3dlZC5zdWItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwN2JlYmRjZmNlZmUxZDNiOGFi
MWUwNWRmMmFlNTZiODNhODA2NjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5
LXBvbGljeS9jb25uZWN0LXNyYy9zaGFyZWQtd29ya2VyLWNvbm5lY3Qtc3JjLWFsbG93ZWQuc3Vi
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBFeHBlY3RpbmcgbG9nczogWyJ4
aHIgYWxsb3dlZCIsIlRFU1QgQ09NUExFVEUiXQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3Vy
aXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1jb25uZWN0LXNyYy5zdWItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3
b3JrZXItY29ubmVjdC1zcmMuc3ViLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzc3OGJiYTQ2
OWRiZDkwZWQ2NTk4MmE2MjRkZmFiNjU3OTM1NGI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItY29ubmVjdC1zcmMu
c3ViLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACisKK0hhcm5lc3MgRXJyb3IgKFRJTUVP
VVQpLCBtZXNzYWdlID0gbnVsbAorCitUSU1FT1VUIHNoYXJlZHdvcmtlci1jb25uZWN0LXNyYyBU
ZXN0IHRpbWVkIG91dAorUEFTUyBTYW1lLW9yaWdpbiAnZmV0Y2goKScgaW4gaHR0cDogd2l0aG91
dCBDU1AKK1BBU1MgU2FtZS1vcmlnaW4gWEhSIGluIGh0dHA6IHdpdGhvdXQgQ1NQCitQQVNTIENy
b3NzLW9yaWdpbiAnZmV0Y2goKScgaW4gaHR0cDogd2l0aG91dCBDU1AKK1BBU1MgQ3Jvc3Mtb3Jp
Z2luIFhIUiBpbiBodHRwOiB3aXRob3V0IENTUAorUEFTUyBTYW1lLW9yaWdpbiA9PiBjcm9zcy1v
cmlnaW4gJ2ZldGNoKCknIGluIGh0dHA6IHdpdGhvdXQgQ1NQCitQQVNTIFNhbWUtb3JpZ2luICdm
ZXRjaCgpJyBpbiBodHRwOiB3aXRoIGNvbm5lY3Qtc3JjICdzZWxmJworUEFTUyBTYW1lLW9yaWdp
biBYSFIgaW4gaHR0cDogd2l0aCBjb25uZWN0LXNyYyAnc2VsZicKK1RJTUVPVVQgQ3Jvc3Mtb3Jp
Z2luICdmZXRjaCgpJyBpbiBodHRwOiB3aXRoIGNvbm5lY3Qtc3JjICdzZWxmJyBUZXN0IHRpbWVk
IG91dAorTk9UUlVOIENyb3NzLW9yaWdpbiBYSFIgaW4gaHR0cDogd2l0aCBjb25uZWN0LXNyYyAn
c2VsZicKK05PVFJVTiBTYW1lLW9yaWdpbiA9PiBjcm9zcy1vcmlnaW4gJ2ZldGNoKCknIGluIGh0
dHA6IHdpdGggY29ubmVjdC1zcmMgJ3NlbGYnCitOT1RSVU4gUmVwb3J0cyBtYXRjaCBpbiBodHRw
OiB3aXRoIGNvbm5lY3Qtc3JjICdzZWxmJworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5
LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3Jr
ZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NzdjZWQ0NTFlMmNk
MzI0MzA0OGI5NzUwNjIwZmViMjE0NTcwMTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3Vi
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACisKK0hhcm5lc3MgRXJyb3IgKFRJTUVPVVQp
LCBtZXNzYWdlID0gbnVsbAorCitQQVNTIFNhbWUtb3JpZ2luICdmZXRjaCgpJy4KK1BBU1MgU2Ft
ZS1vcmlnaW4gWEhSLgorVElNRU9VVCBDcm9zcy1vcmlnaW4gJ2ZldGNoKCknLiBUZXN0IHRpbWVk
IG91dAorTk9UUlVOIENyb3NzLW9yaWdpbiBYSFIuCitOT1RSVU4gU2FtZS1vcmlnaW4gPT4gY3Jv
c3Mtb3JpZ2luICdmZXRjaCgpJy4KK05PVFJVTiBjb25uZWN0LXNyYy1zZWxmLXJlcG9ydC1vbmx5
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hh
cmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHkt
cG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43N2RjZTU1MDBhN2IxOTA5ZDZkODkxZjc4YzI2Mzc5MzJmMjcyY2Jk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtl
ci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIg
QEAKKworSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCisKK1RJTUVPVVQg
c2hhcmVkd29ya2VyLXNjcmlwdC1zcmMgVGVzdCB0aW1lZCBvdXQKK1BBU1MgQ3Jvc3Mtb3JpZ2lu
IGBpbXBvcnRTY3JpcHRzKClgIG5vdCBibG9ja2VkIGluIGh0dHA6IHdpdGhvdXIgQ1NQCitQQVNT
IGBldmFsKClgIG5vdCBibG9ja2VkIGluIGh0dHA6IHdpdGhvdXQgQ1NQCitQQVNTIGBzZXRUaW1l
b3V0KFtzdHJpbmddKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AKK1RJTUVPVVQg
Q3Jvc3Mtb3JpZ2luIGBpbXBvcnRTY3JpcHRzKClgIGJsb2NrZWQgaW4gaHR0cDogd2l0aCBzY3Jp
cHQtc3JjICdzZWxmJyBUZXN0IHRpbWVkIG91dAorTk9UUlVOIGBldmFsKClgIGJsb2NrZWQgaW4g
aHR0cDogd2l0aCBzY3JpcHQtc3JjICdzZWxmJworTk9UUlVOIGBzZXRUaW1lb3V0KFtzdHJpbmdd
KWAgYmxvY2tlZCBpbiBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCitOT1RSVU4gUmVwb3J0
cyBhcmUgc2VudCBmb3IgaHR0cDogd2l0aCBzY3JpcHQtc3JjICdzZWxmJworCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1ibG9iLXVy
bC53aW5kb3ctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1MTljZDFmNjk0NzMyNzVhOGQ2YWEy
NWM3ZTc5NmUzYjUyZDExNjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hh
cmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDExIEBACisKK1BBU1MgU3RhdGljIGltcG9ydC4KK1BBU1MgU3RhdGljIGltcG9ydCAoY3Jvc3Mt
b3JpZ2luKS4KK1BBU1MgU3RhdGljIGltcG9ydCAocmVkaXJlY3QpLgorUEFTUyBOZXN0ZWQgc3Rh
dGljIGltcG9ydC4KK1BBU1MgU3RhdGljIGltcG9ydCBhbmQgdGhlbiBkeW5hbWljIGltcG9ydC4K
K1BBU1MgRHluYW1pYyBpbXBvcnQuCitQQVNTIE5lc3RlZCBkeW5hbWljIGltcG9ydC4KK1BBU1Mg
RHluYW1pYyBpbXBvcnQgYW5kIHRoZW4gc3RhdGljIGltcG9ydC4KK1BBU1MgZXZhbChpbXBvcnQo
KSkuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1k
YXRhLXVybC53aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3Jr
ZXItaW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTM2YzA0
OWY4MjU2Y2QzZTZiMDlhYzNhNGNmOGE2ZmExMDc1NWNhNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1kYXRhLXVybC53aW5kb3ctZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKKworSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3Nh
Z2UgPSBudWxsCisKK1BBU1MgU3RhdGljIGltcG9ydC4KK1BBU1MgU3RhdGljIGltcG9ydCAoY3Jv
c3Mtb3JpZ2luKS4KK1RJTUVPVVQgU3RhdGljIGltcG9ydCAocmVkaXJlY3QpLiBUZXN0IHRpbWVk
IG91dAorTk9UUlVOIE5lc3RlZCBzdGF0aWMgaW1wb3J0LgorTk9UUlVOIFN0YXRpYyBpbXBvcnQg
YW5kIHRoZW4gZHluYW1pYyBpbXBvcnQuCitOT1RSVU4gRHluYW1pYyBpbXBvcnQuCitOT1RSVU4g
TmVzdGVkIGR5bmFtaWMgaW1wb3J0LgorTk9UUlVOIER5bmFtaWMgaW1wb3J0IGFuZCB0aGVuIHN0
YXRpYyBpbXBvcnQuCitOT1RSVU4gZXZhbChpbXBvcnQoKSkuCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtl
cnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC1yZWZlcnJlci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtcmVmZXJyZXItZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQ5ZjQ3ZTY2Y2JhNDRiMTQ5YTVhNzA2NDc3OGI5MWYxMDFjMDY1ZGMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtcmVm
ZXJyZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTcgQEAKKworUEFTUyBTYW1lLW9yaWdpbiB0
b3AtbGV2ZWwgbW9kdWxlIHNjcmlwdCBsb2FkaW5nIHdpdGggIm5vLXJlZmVycmVyIiByZWZlcnJl
ciBwb2xpY3kKK1BBU1MgU2FtZS1vcmlnaW4gdG9wLWxldmVsIG1vZHVsZSBzY3JpcHQgbG9hZGlu
ZyB3aXRoICJvcmlnaW4iIHJlZmVycmVyIHBvbGljeQorUEFTUyBTYW1lLW9yaWdpbiB0b3AtbGV2
ZWwgbW9kdWxlIHNjcmlwdCBsb2FkaW5nIHdpdGggInNhbWUtb3JpZ2luIiByZWZlcnJlciBwb2xp
Y3kKK0ZBSUwgU2FtZS1vcmlnaW4gc3RhdGljIGltcG9ydCB3aXRoICJuby1yZWZlcnJlciIgcmVm
ZXJyZXIgcG9saWN5LiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiIiBidXQgZ290ICJodHRwOi8v
bG9jYWxob3N0Ojg4MDAvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9zdGF0aWMtaW1wb3J0LXNh
bWUtb3JpZ2luLXJlZmVycmVyLWNoZWNrZXItd29ya2VyLmpzIgorRkFJTCBTYW1lLW9yaWdpbiBz
dGF0aWMgaW1wb3J0IHdpdGggIm9yaWdpbiIgcmVmZXJyZXIgcG9saWN5LiBhc3NlcnRfZXF1YWxz
OiBleHBlY3RlZCAiaHR0cDovL2xvY2FsaG9zdDo4ODAwLyIgYnV0IGdvdCAiaHR0cDovL2xvY2Fs
aG9zdDo4ODAwL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvc3RhdGljLWltcG9ydC1zYW1lLW9y
aWdpbi1yZWZlcnJlci1jaGVja2VyLXdvcmtlci5qcyIKK1BBU1MgU2FtZS1vcmlnaW4gc3RhdGlj
IGltcG9ydCB3aXRoICJzYW1lLW9yaWdpbiIgcmVmZXJyZXIgcG9saWN5LgorRkFJTCBDcm9zcy1v
cmlnaW4gc3RhdGljIGltcG9ydCB3aXRoICJuby1yZWZlcnJlciIgcmVmZXJyZXIgcG9saWN5LiBh
c3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiIiBidXQgZ290ICJodHRwOi8vbG9jYWxob3N0Ojg4MDAv
IgorUEFTUyBDcm9zcy1vcmlnaW4gc3RhdGljIGltcG9ydCB3aXRoICJvcmlnaW4iIHJlZmVycmVy
IHBvbGljeS4KK0ZBSUwgQ3Jvc3Mtb3JpZ2luIHN0YXRpYyBpbXBvcnQgd2l0aCAic2FtZS1vcmln
aW4iIHJlZmVycmVyIHBvbGljeS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIiIgYnV0IGdvdCAi
aHR0cDovL2xvY2FsaG9zdDo4ODAwLyIKK1BBU1MgU2FtZS1vcmlnaW4gZHluYW1pYyBpbXBvcnQg
d2l0aCAibm8tcmVmZXJyZXIiIHJlZmVycmVyIHBvbGljeS4KK1BBU1MgU2FtZS1vcmlnaW4gZHlu
YW1pYyBpbXBvcnQgd2l0aCAib3JpZ2luIiByZWZlcnJlciBwb2xpY3kuCitQQVNTIFNhbWUtb3Jp
Z2luIGR5bmFtaWMgaW1wb3J0IHdpdGggInNhbWUtb3JpZ2luIiByZWZlcnJlciBwb2xpY3kuCitQ
QVNTIENyb3NzLW9yaWdpbiBkeW5hbWljIGltcG9ydCB3aXRoICJuby1yZWZlcnJlciIgcmVmZXJy
ZXIgcG9saWN5LgorUEFTUyBDcm9zcy1vcmlnaW4gZHluYW1pYyBpbXBvcnQgd2l0aCAib3JpZ2lu
IiByZWZlcnJlciBwb2xpY3kuCitQQVNTIENyb3NzLW9yaWdpbiBkeW5hbWljIGltcG9ydCB3aXRo
ICJzYW1lLW9yaWdpbiIgcmVmZXJyZXIgcG9saWN5LgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21v
ZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMv
bW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjY1MTljZDFmNjk0NzMyNzVhOGQ2YWEyNWM3ZTc5NmUzYjUyZDExNjkKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQud2luZG93LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDExIEBACisKK1BBU1MgU3RhdGljIGltcG9ydC4KK1BBU1MgU3Rh
dGljIGltcG9ydCAoY3Jvc3Mtb3JpZ2luKS4KK1BBU1MgU3RhdGljIGltcG9ydCAocmVkaXJlY3Qp
LgorUEFTUyBOZXN0ZWQgc3RhdGljIGltcG9ydC4KK1BBU1MgU3RhdGljIGltcG9ydCBhbmQgdGhl
biBkeW5hbWljIGltcG9ydC4KK1BBU1MgRHluYW1pYyBpbXBvcnQuCitQQVNTIE5lc3RlZCBkeW5h
bWljIGltcG9ydC4KK1BBU1MgRHluYW1pYyBpbXBvcnQgYW5kIHRoZW4gc3RhdGljIGltcG9ydC4K
K1BBU1MgZXZhbChpbXBvcnQoKSkuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFy
ZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1
bGVzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1jcmVkZW50aWFscy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTJiMThiNTI0OTI4MDdkNmQ5ZTA3OWVmOTliNDUwYTU5OTJkYWQyNAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlh
bHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzUgQEAKKworUEFTUyBUZXN0IGluaXRpYWxpemF0
aW9uOiBzZXR0aW5nIHVwIGNyb3NzLW9yaWdpbiBjb29raWUKK1BBU1MgbmV3IFNoYXJlZFdvcmtl
cigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGRlZmF1bHQgY3JlZGVudGlhbHMgb3B0aW9uIHNob3Vs
ZCBiZWhhdmUgYXMgY3JlZGVudGlhbHM9c2FtZS1vcmlnaW4gYW5kIHNlbmQgdGhlIGNyZWRlbnRp
YWxzCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBjcmVkZW50
aWFscz1vbWl0IHNob3VsZCBub3Qgc2VuZCB0aGUgY3JlZGVudGlhbHMKK1BBU1MgbmV3IFNoYXJl
ZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPXNhbWUtb3JpZ2luIHNo
b3VsZCBzZW5kIHRoZSBjcmVkZW50aWFscworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0
eXBlPW1vZHVsZSBhbmQgY3JlZGVudGlhbHM9aW5jbHVkZSBzaG91bGQgc2VuZCB0aGUgY3JlZGVu
dGlhbHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGRlZmF1
bHQgY3JlZGVudGlhbHMgb3B0aW9uIHNob3VsZCBiZWhhdmUgYXMgY3JlZGVudGlhbHM9c2FtZS1v
cmlnaW4gYW5kIHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBzYW1lLW9yaWdpbiBzdGF0aWMgaW1w
b3J0cworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQgY3JlZGVu
dGlhbHM9b21pdCBzaG91bGQgbm90IHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBzYW1lLW9yaWdp
biBzdGF0aWMgaW1wb3J0cworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVs
ZSBhbmQgY3JlZGVudGlhbHM9c2FtZS1vcmlnaW4gc2hvdWxkIHNlbmQgdGhlIGNyZWRlbnRpYWxz
IGZvciBzYW1lLW9yaWdpbiBzdGF0aWMgaW1wb3J0cworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkg
d2l0aCB0eXBlPW1vZHVsZSBhbmQgY3JlZGVudGlhbHM9aW5jbHVkZSBzaG91bGQgc2VuZCB0aGUg
Y3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2luIHN0YXRpYyBpbXBvcnRzCitQQVNTIG5ldyBTaGFy
ZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBkZWZhdWx0IGNyZWRlbnRpYWxzIG9wdGlv
biBzaG91bGQgYmVoYXZlIGFzIGNyZWRlbnRpYWxzPXNhbWUtb3JpZ2luIGFuZCBub3Qgc2VuZCB0
aGUgY3JlZGVudGlhbHMgZm9yIGNyb3NzLW9yaWdpbiBzdGF0aWMgaW1wb3J0cworUEFTUyBuZXcg
U2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQgY3JlZGVudGlhbHM9b21pdCBzaG91
bGQgbm90IHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gc3RhdGljIGltcG9y
dHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRp
YWxzPXNhbWUtb3JpZ2luIHNob3VsZCBub3Qgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIGNyb3Nz
LW9yaWdpbiBzdGF0aWMgaW1wb3J0cworRkFJTCBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBl
PW1vZHVsZSBhbmQgY3JlZGVudGlhbHM9aW5jbHVkZSBzaG91bGQgc2VuZCB0aGUgY3JlZGVudGlh
bHMgZm9yIGNyb3NzLW9yaWdpbiBzdGF0aWMgaW1wb3J0cyBhc3NlcnRfZXF1YWxzOiBleHBlY3Rl
ZCAiMSIgYnV0IGdvdCAiIgorUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVs
ZSBhbmQgZGVmYXVsdCBjcmVkZW50aWFscyBvcHRpb24gc2hvdWxkIGJlaGF2ZSBhcyBjcmVkZW50
aWFscz1zYW1lLW9yaWdpbiBhbmQgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2lu
IGR5bmFtaWMgaW1wb3J0cworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1vZHVs
ZSBhbmQgY3JlZGVudGlhbHM9b21pdCBzaG91bGQgbm90IHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZv
ciBzYW1lLW9yaWdpbiBkeW5hbWljIGltcG9ydHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdp
dGggdHlwZT1tb2R1bGUgYW5kIGNyZWRlbnRpYWxzPXNhbWUtb3JpZ2luIHNob3VsZCBzZW5kIHRo
ZSBjcmVkZW50aWFscyBmb3Igc2FtZS1vcmlnaW4gZHluYW1pYyBpbXBvcnRzCitQQVNTIG5ldyBT
aGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBjcmVkZW50aWFscz1pbmNsdWRlIHNo
b3VsZCBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3Igc2FtZS1vcmlnaW4gZHluYW1pYyBpbXBvcnRz
CitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9bW9kdWxlIGFuZCBkZWZhdWx0IGNy
ZWRlbnRpYWxzIG9wdGlvbiBzaG91bGQgYmVoYXZlIGFzIGNyZWRlbnRpYWxzPXNhbWUtb3JpZ2lu
IGFuZCBub3Qgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIGNyb3NzLW9yaWdpbiBkeW5hbWljIGlt
cG9ydHMKK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1tb2R1bGUgYW5kIGNyZWRl
bnRpYWxzPW9taXQgc2hvdWxkIG5vdCBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3IgY3Jvc3Mtb3Jp
Z2luIGR5bmFtaWMgaW1wb3J0cworUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPW1v
ZHVsZSBhbmQgY3JlZGVudGlhbHM9c2FtZS1vcmlnaW4gc2hvdWxkIG5vdCBzZW5kIHRoZSBjcmVk
ZW50aWFscyBmb3IgY3Jvc3Mtb3JpZ2luIGR5bmFtaWMgaW1wb3J0cworRkFJTCBuZXcgU2hhcmVk
V29ya2VyKCkgd2l0aCB0eXBlPW1vZHVsZSBhbmQgY3JlZGVudGlhbHM9aW5jbHVkZSBzaG91bGQg
c2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIGNyb3NzLW9yaWdpbiBkeW5hbWljIGltcG9ydHMgYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjEiIGJ1dCBnb3QgIiIKK1BBU1MgbmV3IFNoYXJlZFdvcmtl
cigpIHdpdGggdHlwZT1jbGFzc2ljIHNob3VsZCBhbHdheXMgc2VuZCB0aGUgY3JlZGVudGlhbHMg
cmVnYXJkbGVzcyBvZiB0aGUgY3JlZGVudGlhbHMgb3B0aW9uIChkZWZhdWx0KS4KK1BBU1MgbmV3
IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1jbGFzc2ljIHNob3VsZCBhbHdheXMgc2VuZCB0aGUg
Y3JlZGVudGlhbHMgcmVnYXJkbGVzcyBvZiB0aGUgY3JlZGVudGlhbHMgb3B0aW9uIChvbWl0KS4K
K1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1jbGFzc2ljIHNob3VsZCBhbHdheXMg
c2VuZCB0aGUgY3JlZGVudGlhbHMgcmVnYXJkbGVzcyBvZiB0aGUgY3JlZGVudGlhbHMgb3B0aW9u
IChzYW1lLW9yaWdpbikuCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRoIHR5cGU9Y2xhc3Np
YyBzaG91bGQgYWx3YXlzIHNlbmQgdGhlIGNyZWRlbnRpYWxzIHJlZ2FyZGxlc3Mgb2YgdGhlIGNy
ZWRlbnRpYWxzIG9wdGlvbiAoaW5jbHVkZSkuCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIoKSB3aXRo
IHR5cGU9Y2xhc3NpYyBzaG91bGQgYWx3YXlzIHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBzYW1l
LW9yaWdpbiBkeW5hbWljIGltcG9ydHMgcmVnYXJkbGVzcyBvZiB0aGUgY3JlZGVudGlhbHMgb3B0
aW9uIChkZWZhdWx0KS4KK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1jbGFzc2lj
IHNob3VsZCBhbHdheXMgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2luIGR5bmFt
aWMgaW1wb3J0cyByZWdhcmRsZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKG9taXQpLgor
UEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPWNsYXNzaWMgc2hvdWxkIGFsd2F5cyBz
ZW5kIHRoZSBjcmVkZW50aWFscyBmb3Igc2FtZS1vcmlnaW4gZHluYW1pYyBpbXBvcnRzIHJlZ2Fy
ZGxlc3Mgb2YgdGhlIGNyZWRlbnRpYWxzIG9wdGlvbiAoc2FtZS1vcmlnaW4pLgorUEFTUyBuZXcg
U2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPWNsYXNzaWMgc2hvdWxkIGFsd2F5cyBzZW5kIHRoZSBj
cmVkZW50aWFscyBmb3Igc2FtZS1vcmlnaW4gZHluYW1pYyBpbXBvcnRzIHJlZ2FyZGxlc3Mgb2Yg
dGhlIGNyZWRlbnRpYWxzIG9wdGlvbiAoaW5jbHVkZSkuCitQQVNTIG5ldyBTaGFyZWRXb3JrZXIo
KSB3aXRoIHR5cGU9Y2xhc3NpYyBzaG91bGQgbmV2ZXIgc2VuZCB0aGUgY3JlZGVudGlhbHMgZm9y
IGNyb3NzLW9yaWdpbiBkeW5hbWljIGltcG9ydHMgcmVnYXJkbGVzcyBvZiB0aGUgY3JlZGVudGlh
bHMgb3B0aW9uIChkZWZhdWx0KS4KK1BBU1MgbmV3IFNoYXJlZFdvcmtlcigpIHdpdGggdHlwZT1j
bGFzc2ljIHNob3VsZCBuZXZlciBzZW5kIHRoZSBjcmVkZW50aWFscyBmb3IgY3Jvc3Mtb3JpZ2lu
IGR5bmFtaWMgaW1wb3J0cyByZWdhcmRsZXNzIG9mIHRoZSBjcmVkZW50aWFscyBvcHRpb24gKG9t
aXQpLgorUEFTUyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPWNsYXNzaWMgc2hvdWxkIG5l
dmVyIHNlbmQgdGhlIGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gZHluYW1pYyBpbXBvcnRz
IHJlZ2FyZGxlc3Mgb2YgdGhlIGNyZWRlbnRpYWxzIG9wdGlvbiAoc2FtZS1vcmlnaW4pLgorUEFT
UyBuZXcgU2hhcmVkV29ya2VyKCkgd2l0aCB0eXBlPWNsYXNzaWMgc2hvdWxkIG5ldmVyIHNlbmQg
dGhlIGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gZHluYW1pYyBpbXBvcnRzIHJlZ2FyZGxl
c3Mgb2YgdGhlIGNyZWRlbnRpYWxzIG9wdGlvbiAoaW5jbHVkZSkuCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3ho
ci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
eGhyL29wZW4tdXJsLXJlZGlyZWN0ZWQtc2hhcmVkd29ya2VyLW9yaWdpbi1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZWU1M2YyZmYyZDVlMDhhZDI5OGM2MjdjNzAzNzQ0MTlmN2RiMTkzNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmln
aW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorCitGQUlMIFJlZmVyZXIgaGVhZGVyIGFz
c2VydF9lcXVhbHM6IGV4cGVjdGVkICJSZWZlcmVyOiBodHRwOi8vbG9jYWxob3N0Ojg4MDAveGhy
L3Jlc291cmNlcy93b3JrZXJ4aHItb3JpZ2luLXJlZmVycmVyLmpzXG4iIGJ1dCBnb3QgIlJlZmVy
ZXI6IGh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC94aHIvcmVzb3VyY2VzL3JlZGlyZWN0LnB5P2xvY2F0
aW9uPXdvcmtlcnhoci1vcmlnaW4tcmVmZXJyZXIuanNcbiIKK1BBU1MgT3JpZ2luIGhlYWRlcgor
UEFTUyBSZXF1ZXN0IFVSTCB0ZXN0CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEv
VGVzdEV4cGVjdGF0aW9ucwppbmRleCBhNzI3ZGViYTE0M2IyNTc2NzhmNWVjOGRiNjQ1NzBlYWFj
NDZhMmFlLi45YzcyZTQ0ZjAyOWZkODJlZGQ4OTFjMDA0YjIzYTNkOTdhYmRmMWQzIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC0yMjQsNiAr
MjI0LDcgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGlj
cy94aHIvMDAzLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d29ya2Vycy9zZW1hbnRpY3MveGhyLzAwNC5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3hoci8wMDYuaHRtbCBbIFNraXAgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItZnJv
bS1ibG9iLXVybC53aW5kb3cuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItaW4tZGF0YS11cmwtY29udGV4dC53aW5kb3cu
aHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3No
YXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNo
Lmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9z
aGFyZWQtd29ya2VyLXBhcnNlLWVycm9yLWZhaWx1cmUuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwppbmRleCA0NzM2MDdmOTA5MWUxYjk1MGM2
MTk2ZDEzN2I5NDU0N2IxOThkMmE2Li40MTQzNjg3ODFhZmE5MDRlNzA0YTdhMzBjMmZlNWY2NmQ0
NzZlYjMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0
aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwpAQCAt
MzM2LDYgKzMzNiw3IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9z
ZW1hbnRpY3MveGhyLzAwMy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL3hoci8wMDQuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy94aHIvMDA2Lmh0bWwgWyBT
a2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29y
a2VyLWZyb20tYmxvYi11cmwud2luZG93Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWluLWRhdGEtdXJsLWNvbnRleHQu
d2luZG93Lmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMuaHRtbCBbIFNraXAgXQogaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItb3B0aW9ucy1t
aXNtYXRjaC5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvc2hhcmVkLXdvcmtlci1wYXJzZS1lcnJvci1mYWlsdXJlLmh0bWwgWyBTa2lwIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>